The excellent original “DOM-Scripted Lists, Revisited” article seems to have disappeared, but I found the latest revision on the Wayback Machine. A great addition to your JavaScript toolbox.
DOM-Scripted Lists, Revisited & resurrected
Reply
The excellent original “DOM-Scripted Lists, Revisited” article seems to have disappeared, but I found the latest revision on the Wayback Machine. A great addition to your JavaScript toolbox.
This is a script to update a WordPress blog with the latest stable version from Subversion.
How to use:
chmod u+x path/to/update-wordpress.sh
path/to/update-wordpress.sh -fs ftp_server -wp /path/to/WordPress/on/FTP -ms mysql_server
Some features:
/bin/sh
, so it should work on any Linux / BSD distribution.#!/bin/sh # # $Id: update-wordpress.sh 393 2008-06-19 10:29:18Z vengmark $ # # NAME # update-wordpress.sh - Update WordPress to latest stable version. # # SYNOPSIS # update-wordpress.sh [options] # # DESCRIPTION # Backs up the database and the most relevant files (.htaccess, robots.txt # and wp-config.php) before updating. # # Uses instructions from # http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion to # get the latest stable version of WordPress and copy it to an FTP server. # # For security reasons, the script will ask for all necessary passwords if # you don't provide them on the command line. # # OPTIONS # -v Verbose output # -q Quiet (non-interactive) # -fs FTP server host name (mandatory) # -wp WordPress path on FTP server (mandatory) # -fp FTP server port # -fu FTP user # -FP FTP password # -ms MySQL server host name (mandatory) # -mp MySQL server port # -mu MySQL user # -MP MySQL password # -wd WordPress database name # -wv WordPress version # -b Where to put the WordPress backup files # # BUGS # Should detect the newest security release (i.e., highest X for versions # 2.5.X), perhaps from http://svn.automattic.com/wordpress/tags/. # # Email bugs to victor dot engmark at gmail dot com. Please include the # output of running this script in verbose mode (-v). # # COPYRIGHT AND LICENSE # Copyright (C) 2008 Victor Engmark # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # ################################################################################ # Init PATH="/usr/bin:/bin" # Hard-code values here if you don't want to provide parameters backup_dir="${HOME}/.backup/WordPress" # FTP ftp_host= ftp_port=21 ftp_user=`whoami` # MySQL mysql_host= mysql_port=3306 mysql_user=`whoami` # WordPress wordpress_repository=http://svn.automattic.com/wordpress/tags/ wordpress_version="2.5.1" wordpress_path= wordpress_database=wordpress cmdname=`basename $0` #Error messages errm_unknown="Unknown error in $cmdname" #Code 1 #Code 2 is reserved: http://www.faqs.org/docs/abs/HTML/exitcodes.html usage="Usage: ${cmdname} [-v] [-q] -fs ftp_server -wp wordpress_path [-fp ftp_port] [-fu ftp_user] [-FP ftp_password] -ms mysql_server [-mp mysql_port] [-mu mysql_user] [-MP mysql_password] [-wd wordpress_database] [-wv wordpress_version] [-b backup_dir]" #Code 3 # Process parameters until [ $# -eq 0 ] do case $1 in -v) verbose=1 shift ;; -q) quiet=1 shift ;; -fs) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi ftp_host=$2 shift 2 ;; -fp) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi ftp_port=$2 shift 2 ;; -fu) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi ftp_user=$2 shift 2 ;; -FP) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi ftp_password=$2 shift 2 ;; -ms) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi mysql_host=$2 shift 2 ;; -mp) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi mysql_port=$2 shift 2 ;; -mu) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi mysql_user=$2 shift 2 ;; -MP) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi mysql_password=$2 shift 2 ;; -wp) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi wordpress_path="${2%\/}" shift 2 ;; -wd) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi wordpress_database=$2 shift 2 ;; -wv) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi wordpress_version=$2 shift 2 ;; -b) if [ -z "$2" ] then echo "$usage" >&2 exit 3 fi backup_dir="${2%\/}" shift 2 ;; *) #Unknown parameter if [ $verbose ] then echo "Unknown parameter: $1" >&2 fi echo "$usage" >&2 exit 3 ;; esac done # Check input values if [ ! $ftp_host ] || [ ! $mysql_host ] || [ ! $wordpress_path ] then echo "$usage" >&2 exit 3 fi if [ -z "$mysql_password" ] && [ $quiet ] then echo "Please provide the database password with the \"-MP\" parameter" >&2 echo "$usage" >&2 exit 3 fi if [ -z "$ftp_password" ] && [ $quiet ] then echo "Please provide the FTP password with the \"-FP\" parameter" >&2 echo "$usage" >&2 exit 3 fi # Check for necessary programs for application in bzip2 mysqldump ncftp svn do if [ ! `which $application` ] then echo "Please install application '$application' first." >&2 error_found=1 fi done if [ $error_found ] then exit 1 fi # Build necessary variables from input wordpress_repository="${wordpress_repository}${wordpress_version}" # Summarize settings if [ $verbose ] then echo "Running $cmdname at `date`." echo echo "Backup directory: ${backup_dir}" echo echo "FTP connection: ${ftp_user}@${ftp_host}:${ftp_port}" echo "WordPress FTP path: ${wordpress_path}" echo echo "MySQL connection: ${mysql_user}@${mysql_host}:${mysql_port}" echo "WordPress database: ${wordpress_database}" echo echo "New WordPress version: ${wordpress_version}" echo "WordPress repository: ${wordpress_repository}" echo fi clean_up() { if [ $verbose ] then echo "Cleaning up." fi rm -Rf $temp_dir } debug() { if [ -z "$1" ] then echo "debug function syntax: debug \$command_name \$error_code" clean_up exit 1 fi if [ $2 -ne 0 ] then echo "$1 failed with error code $2." exit 1 elif [ $verbose ] then echo "$1 succeeded." fi } if [ $verbose ] then echo "Creating the temporary folder." fi temp_dir=`mktemp -t -d ${cmdname}.XXXXXXXXXX` || debug "mktemp" $? if [ ! -e $backup_dir ] then if [ $verbose ] then echo "Creating the backup folder." fi mkdir -p $backup_dir debug "mkdir" $? fi # Back up database if [ -z "$mysql_password" ] then echo -n "Enter MySQL password: " stty -echo read mysql_password stty echo echo fi # Enable showing the string to the user before executing dummy_password=PASSWORD mysqldump_command="mysqldump --host=$mysql_host --opt --password="$dummy_password" --port=$mysql_port --user=$mysql_user $(if [ $verbose ]; then echo '-v'; fi;) --result-file=${backup_dir}/WordPress.sql $wordpress_database" if [ $verbose ] then echo "MySQLdump command:\n$mysqldump_command" fi mysqldump_command=$(echo $mysqldump_command | sed "s/${dummy_password}/${mysql_password}/") # Insert password in command # Run backup $mysqldump_command debug "mysqldump" $? # Download latest stable WordPress release svn_dir=${temp_dir}/svn svn_command="svn export $(if [ ! $verbose ]; then echo '--quiet'; fi;) $wordpress_repository $svn_dir" if [ $verbose ] then echo "Subversion command:\n$svn_command" fi $svn_command debug "svn" $? # Back up user files if [ -z "$ftp_password" ] then echo -n "Enter FTP password: " stty -echo read ftp_password stty echo echo fi ncftp <<EOD open -u "$ftp_user" -p "$ftp_password" -P $ftp_port "$ftp_host" lcd $backup_dir cd $wordpress_path get .htaccess get robots.txt get wp-config.php lmkdir wp-content lcd wp-content lmkdir uploads lcd uploads cd wp-content/uploads get -R * quit EOD debug "ncftp" $? # Make sure the site is ready to update if [ ! $quiet ] then echo -n "Please deactivate all your WordPress plugins, then press Enter to continue." read dummy fi # Update WordPress installation ncftp <<EOD open -u "$ftp_user" -p "$ftp_password" -P $ftp_port "$ftp_host" lcd $svn_dir cd $wordpress_path put -R * quit EOD debug "ncftp" $? echo "Backup and update finished. To complete the installation, please go to the upgrade page (e.g., http://example.com/wordpress/wp-admin/upgrade.php)" clean_up # End if [ $verbose ] then echo "${cmdname} completed at `date`." fi exit 0
Background: Jeff Atwood uses anecdotal evidence to show that Linux audio capabilities suck.
Looks like Linux is moving up in Scott Berkun’s suckiness hierarchy: It’s now good enough for most people for most things, but it still has weak areas (audio, games) which those users find extremely painful.
Reverse anecdotal evidence: After buying my last computer in 2007, I could not get optical surround sound to work in XP (Google, Usenet, and vendor contacted). For the first time I found that Linux (Ubuntu 7.10) had better hardware support, even though the vendor only supported Windows. And there’s proof, too.