#!/bin/bash while [ $# -gt 0 ]; do ffmpeg -i "$1" 2> tmp.txt while read -r first _ _ start _ end; do if [[ $first = Chapter ]]; then read # discard line with Metadata: read _ _ chapter ffmpeg -vsync 2 -i "$1" -ss "${start%?}" -to "$end" -vn -ar 44100 -ac 2 -ab 128 -f mp3 "$chapter.mp3" </dev/null fi done <tmp.txt rm tmp.txt shift done

Every day I see new Linux Kernel hackers fail at their first patch submission. I'm not an expert, but I've learned how the process works and most importantly I've learned how to avoid irritating Linux Kernel maintainers. The "maintainers" are the gate keepers to the Linux Kernel. If you piss them off you will never land any patches into the Linux Kernel. All Linux Kernel development takes place in the open and hundreds (thousands?) of Linux Kernel developers will see and possibly read your patch submissions. You will want to make every effort to submit the best possible patch you can. That's where I come in. If you follow my guide there's a better than average chance you will actually land your patch into the Linux Kernel. For a beginner I recommend working on the drivers/staging tree maintained by Greg Kroah-Hartman. Clone Greg KH's staging tree: > git clone git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git This will take a while. After that you need to checkou

#!/usr/bin/env python3 import time import RPi.GPIO as GPIO GPIO.setmode( GPIO.BCM ) ENABLE = 1; DISABLE = 0 RED = 23; GREEN = 24; BLUE = 25 RGB = [ RED, GREEN, BLUE ] RGB2 = RGB[::-1]

#!/bin/sh PACKAGE=mypkg # set mode go test -coverprofile=coverage.out $PACKAGE go tool cover -func=coverage.out go tool cover -html=coverage.out # count mode go test -covermode=count -coverprofile=count.out $PACKAGE go tool cover -func=count.out go tool cover -html=count.out # more info: http://blog.golang.org/cover

func log(s ...interface{}) { f, err := os.OpenFile("info.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { fmt.Printf("error opening log file: %v", err) os.Exit(1) } defer f.Close() log.SetOutput(f) ss := "" for _, p := range s { switch p.(type) { case bool: ss += fmt.Sprintf("%t ", p.(bool)) case int: ss += fmt.Sprintf("%d ", p.(int)) case float64: ss += fmt.Sprintf("%.2f ", p.(float64)) case string: ss += fmt.Sprintf("%s ", p.(string)) } } log.Println(ss) }

I don't play the lottery but I find random number generators and the Linux Kernel interesting so I wrote a simple Linux Kernel module that does a PowerballTM "quick pick".   You can download it from GitHub: https://github.com/gdonald/linux-kernel-powerball-module

Ever want to know how to drop an argument (and value), --dir in this case, from a Bash script? Someone from my local LUG asked how to do it and this is what I came up with: Fun ;) #!/usr/bin/env bash args=("$@") myargs=() nextarg=-1 for ((i=0; i<$#; i++)) { if [ $nextarg == $i ]; then continue; fi case ${args[$i]} in --dir) nextarg=$((i+1)) ;; *) myargs+="${args[$i]} " esac } echo $myargs ./remove_dir.bash --dir foo --bar baz --bar baz
Recently some guys from my flying club were circulating an email filled with FUD about the latest incoming Microsoft virus. Here is the response I sent them: Why not just use an operating system that doesn't require participation in the Microsoft/Norton/McAfee virus racket to start with? I've made a career out of replacing virus ridden Microsoft software with free open source Linux software. I don't have a "high up" Microsoft status like "Dave's brother", nor would I ever want one. In fact I'd imagine Microsoft thinks of me and my kind as enemies of the state. And that's fine.. meanwhile I never have virus infestations because I simply don't use broken M$ software that is vulnerable to virus attacks. Don't get me wrong, I do use some Windoze-only software.. RealFlight for example. But I only do this using Wine, a free open source Windoze emulator that runs on Linux. As a result I've never purchased or ran any Norton or McAfee products or participated in the virus protection racket at all. Un
   Recent articles
Console Blackjack in Crystal
Nautical War
Reverse (Othello) in ReactJS using Typescript
Web Blackjack in ReactJS
Console Blackjack in Python 3
   Tags
android (1) apache (1) apple (1) bash (2) bashrc (1) battleship (1) blackjack (8) c (2) c++ (1) callproof (1) clang (2) clang++ (1) console (1) crystal (1) data (1) debian (4) diff (1) django (2) enterprise (1) freebsd (1) g++ (1) games (1) gcc (1) git (3) github (1) gmail (1) go-lang (3) google (1) gourse (1) kernel (3) latin1 (1) linux (4) lottery (1) microsoft (1) module (1) mongodb (1) mp3s (1) mutt (1) nautical (1) patch (1) perl6 (1) postgresql (2) powerball (1) psql (1) python (2) python3 (1) raspberrypi (1) reactjs (2) reversi (1) sdl (1) sed (1) stack (1) testing (2) trace (1) typescript (2) ubuntu (2) utf8 (1) virus (1) war (1)
   Twitter

Copyright © 2019 · GregDonald.com · All Rights Reserved