Happy New Year
I just wanted to wish all of my visitors a happy new year. I haven't posted much lately, but rest assured, I'm still alive. :-) I hope all of you have a safe and happy new year.
I just wanted to wish all of my visitors a happy new year. I haven't posted much lately, but rest assured, I'm still alive. :-) I hope all of you have a safe and happy new year.
Beginning at about midnight on Friday night / Saturday morning (11/14), I'm taking down the LegRoom.net e-mail server for some maintenance and upgrades. In the process I'm going to be copying mail to a new location, so I don't want any new mail coming in during that process as it may get dropped.
Once the upgrade is complete and the new configuration is properly tested, I'll bring the mail server back up. This should be done by Saturday afternoon. I'll post an update here once it's complete.
Update 11/14 04:00: E-mail is back up.
I just (mostly) finished a major upgrade of the LegRoom.net website backend (Drupal, for those who are curious). Although the site should look and feel the same, I had to make some pretty substantial changes to complete the upgrade. As a result, some parts of the site may not look the same, some functionality may be different or missing, etc. Please notify me ASAP if you find any problems. Some examples:
The following issues are currently known:
Due to the ever-growing number of spam posts on my forum from GMail accounts, I've had to disable the ability to use GMail addresses when registering for a new account on this site. If you're a (legitimate) GMail user trying to register for this site, I'm afraid you'll need to use an alternate e-mail address from now on. Existing accounts are not affected.
I apologize for the inconvenience.
Update 11/03/2009:
Apparently this was affecting existing accounts. I was just notified of this problem and removed the block. I'll need to find another way to address this. If you were having trouble logging in recently and received the error message, "The name username is registered using a reserved e-mail address and therefore could not be logged in," you should now be able to login again. Again, I apologize for the inconvenience.
I just pushed out an updated Convert to FLAC release to fix a bug involving spaces in filenames. Again. In my defense, though, the root cause is completely different this time, and was limited to only APE or TTA input files (it was due to an odd way I had to deal with output redirection on some of the conversion commands). I've renamed my test files to include spaces, so hopefully this shouldn't happen again. Twice is definitely enough.
For more information:
Convert to FLAC home page and downloads
Convert to FLAC ChangeLog
I just uploaded a new version of Convert to FLAC. Aside from a handful of bug fixes and other miscellaneous improvements, the big new features in this release are:
-t
option)The concurrency support is really the main driver for this release. If you have a dual- or quad-core system, you should upgrade to 2.1 ASAP. This sucker really flies now. :-)
For more information:
Convert to FLAC home page and downloads
Convert to FLAC ChangeLog
I justed added a section for miscellaneous script section to my Software page. These are various scripts that I've written over the years for my own use, but I'd like to share them with others that may be able to benefit from them. Please note, however, that unlike the other applications I've released on my site (UniExtract, Convert to FLAC, etc.), these scripts are much less polished and robust. Please keep this in mind and review source code running any of them.
Right now there are only a handful of scripts there, but there are plenty of more that I'd like to add when I get the time (some require a little more cleanup than others).
To review and download the scripts:
Miscellaneous Scripts
In the 2.0 update for Convert to FLAC I added support for converting from Apple Lossless Audio Codec (ALAC) files. Part of the process of converting formats involves copying existing tags and metadata wherever possible, and in order to do this with ALAC files I use a separate utility called mp4info. This utility originally came from the MPEG4IP project, but unfortunately that project now seems to be defunct. As a result, I've switched over to the libmp4v2 project, which is still active and provides its own mp4info utility.
Unfortunately, the output from the two versions of mp4info is slightly different. As a result, I had to modify Convert to FLAC to support the new syntax. This change will only affect you if you're trying to convert ALAC files to FLAC. If that's the case, please note the following:
Sorry for the inconvenience. To download the new version:
Convert to FLAC home page and downloads
Convert to FLAC ChangeLog
I started using Linux 10 years ago this month (actually, my very first Linux install would've been around 10 years ago today, though I'm not sure of the exact date). Throughout all those years, I've compiled a number of useful Bash functions and aliases that I use on a daily basis to save me time and help get things done. I figure that some of these would be useful to others as well, so I'm posting a list of them here, along with commentary where appropriate.
For those of you that either don't know what I'm talking about, or just aren't very familiar familiar with this topic, Bash stands for the "Bourne-again shell", and is the standard command line interface for Linux. There are plenty of other shells available, but Bash is the most common and is the default on most Linux distributions. Bash aliases and functions allow you to defined shortcuts for longer or more complicated commands.
Bash aliases are used for substituting a long/complicated string for a much shorter one that you type on the command line. As a simple example, consider the following alias that is defined by default on most distributions:
alias ls='ls --color'
This simply means that anytime you use the command ls
, bash will automatically substitute ls --color
for you. So, if you entered the command ls /home
, bash will treat this as ls --color /home
.
Bash functions provide the same essential concept, but allow for allow for much more complicated functionality through the use of shell scripting. Here's an example of a function:
function l() { locate "$1" | grep --color "$1"; }
This defines a function named l
that will:
So, if you entered the command l filename
, bash would actually run locate "filename" | grep --color "filename"
, This will search for all files on your computer named "filename", then use grep to highlight the word "filename" in the results. These are two fairly simple examples of aliases and functions, but when used frequently they can lead to significant time savings.
I'm including a full list of my personal aliases and functions below. Note: Some of these commands are rather obscure, but I'm including them anyway just for reference. At the very least, it may inspire similar shortcuts that make sense for you.
To use any of these, simply add them to your ~/.bashrc file.
######### # Aliases ######### # Show filetype colors and predictable date/timestamps alias ls="ls --color=auto --time-style=long-iso" # Highlight matched pattern alias grep='grep --color' # Common shortcuts and typos alias c=clear alias x=startx alias m=mutt alias svi='sudo vim' alias ci='vim' alias reboot='sudo /sbin/reboot' alias halt='sudo /sbin/halt' # Clear and lock console (non-X) terminal alias lock="clear && vlock -c" # If in a directory containing a symlink in the path, change to the "real" path alias rd='cd "`pwd -P`"' # Useful utility for sending files to trash from command line instead of # permanently deleting with rm - see http://code.google.com/p/trash-cli/ alias tp='trash-put' # Generic shortcut for switching to root user depending on system #alias root='su -' #alias root='sudo -i' alias root='sudo bash -l' # Compile kernel, install modules, display kernel version and current date # useful for building custom kernels; version and date are for the filename alias kernbuild='make -j3 && make modules_install && ls -ld ../linux && date' # Shortcut for downloading a torrent file on the command line alias bt='aria2c --max-upload-limit=10K --seed-time=60 --listen-port=8900-8909' # Only show button events for xev alias xevs="xev | grep 'keycode\|button'" # Launch dosbox with a preset configuration for Daggerfall alias daggerfall='dosbox -conf ~/.dosbox.conf.daggerfall' ########### # Functions ########### # Search Gentoo package database (portage) using eix # $1 = search term (package name) function s() { eix -Fc "$1"; } # Search all available; show summary function sd() { eix -FsSc "$1"; } # Search all available w/ desc.; show summary function se() { eix -F "^$1\$"; } # Search exact available; show details function si() { eix -FIc "$1"; } # Search installed; show summary # Search Debian package database (apt) using dpkg # $1 = search term (package name) #function s() { apt-cache search "$1" | grep -i "$1"; } # search all available # Search Arch package database using pacman # $1 = search term (package name #function s() { # echo -e "$(pacman -Ss "$@" | sed \ # -e 's#^core/.*#\\033[1;31m&\\033[0;37m#g' \ # -e 's#^extra/.*#\\033[0;32m&\\033[0;37m#g' \ # -e 's#^community/.*#\\033[1;35m&\\033[0;37m#g' \ # -e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' ) \ # \033[0m" #} # Mount/unmount CIFS shares; pseudo-replacement for smbmount # $1 = remote share name in form of //server/share # $2 = local mount point function cifsmount() { sudo mount -t cifs -o username=${USER},uid=${UID},gid=${GROUPS} $1 $2; } function cifsumount() { sudo umount $1; } # Generate a random password # $1 = number of characters; defaults to 32 # $2 = include special characters; 1 = yes, 0 = no; defaults to 1 function randpass() { if [ "$2" == "0" ]; then cat /dev/urandom | tr -cd '[:alnum:]' | head -c ${1:-32} else cat /dev/urandom | tr -cd '[:graph:]' | head -c ${1:-32} fi echo } # Display text of ODF document in terminal # $1 = ODF file function o3() { unzip -p "$1" content.xml | o3totxt | utf8tolatin1; } # Search all files on system using locate database # $1 = search term (file name) function li() { locate -i "$1" | grep -i --color "$1"; } # case-insensitive function l() { locate "$1" | grep --color "$1"; } # case-sensitive # View latest installable portage ebuild for specified package # $1 = package name function eview() { FILE=$(equery which $1) if [ -f "$FILE" ]; then view $FILE fi } # View portage changelog for specified package # $1 = package name function echange() { PACKAGE="$(eix -e --only-names $1)" if [ "$PACKAGE" != "" ]; then view /usr/portage/$PACKAGE/ChangeLog fi } # Displays metadata for specified media file # $1 = media file name function i() { EXT=`echo "${1##*.}" | sed 's/\(.*\)/\L\1/'` if [ "$EXT" == "mp3" ]; then id3v2 -l "$1" echo mp3gain -s c "$1" elif [ "$EXT" == "flac" ]; then metaflac --list --block-type=STREAMINFO,VORBIS_COMMENT "$1" else echo "ERROR: Not a supported file type." fi } # Sets custom Catalog Number ID3 tag for all MP3 files in current directory # $1 = catalog number function cn() { for i in *.mp3; do id3v2 --TXXX "Catalog Number":"$1" "$i"; done; }
I just pushed out an important bugfix release for Convert to FLAC. When testing the new multiple input file support, I apparently never bothered testing it on files with spaces in their names. Oops. Version 2.0.1 fixes this oversight.
Relevant links below. If you've already upgraded to v2.0, please download this new version ASAP. Sorry for the inconvenience.
For more information:
Convert to FLAC home page and downloads
Convert to FLAC ChangeLog