07.17.2010
04.11.2010
03.03.2010
How much is that WordPress App in the Window?
It’s free!
I saw this in the Pasadena, CA Apple Store back in January. That’s how fast I am at blogging.
02.07.2010
An Open Letter to Web Developers on Percent-Encoding
Dear web developers,
Please understand the difference between the encoding called for in application/x-www-form-urlencoded encoded data [1] and the encoding called for in URIs (and how that encoding applies to URIs in the http/https scheme).
In particular, note the difference in how spaces are treated. The former encodes them as +, the later as %20.
Understand also how your web server processes different pieces of URLs. Pay particular attention to your web server’s treatment of plus signs. PHP, for example, interprets “$_GET” data (the data drawn from the query component of the URI) as though it were application/x-www-form-urlencoded and converts those plus signs to spaces [2].
Now that you know that the different encoding methods encode spaces differently and that the different decoding methods decode pluses differently, make sure you’re being consistent.
Because when I type into your website my email address with its plus sign in it, I expect things to work.
Love,
mdawaffe
[1] More details in HTML5‘s definition of the application/x-www-form-urlencoded encoding algorithm. ↑
[2] See the difference between urlencode()/urldecode() and rawurlencode()/rawurldecode(). parse_str() uses urldecode().
Decoding the query component of the URI according to application/x-www-form-urlencoded is the logical thing to do, since the web server can’t tell the difference between a GET request generated by a form and one that isn’t (since user agents are not supposed to set a “Content-Type: application/x-www-form-urlencoded” header when submitting a form over http/https via the GET method), but I can’t tell if converting pluses in the query part of the URI into spaces is required; I can’t find anything in the definition of the http URI scheme that says that plus signs are “delimiters” in the query component of the URI. So I believe it to be an implementation-specific choice and therefore up for grabs depending on how you power your web server (PHP, ruby, .NET, etc.). ↑
01.22.2010
PHP 5 + Apache 2 + MySQL 5 on OS X via MacPorts
# Displays all files in Finder. Optional: personal preference.
$ defaults write com.apple.Finder AppleShowAllFiles YES
# Relaunch Finder
# Update MacPorts
$ sudo port selfupdate
$ sudo port upgrade outdated
# Install MySQL
$ sudo port install mysql5-server
$ sudo -u _mysql mysql_install_db5
$ sudo mysqld_safe5 &
$ sudo /opt/local/lib/mysql5/bin/mysql_secure_installation
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
# Install Apache, PHP (with PEAR), PHP MySQL bindings
$ sudo port install apache2
$ sudo port install php5 +apache2 +pear
$ sudo port install php5-mysql
# Configure Apache
# The following line may not be necessary
? sudo cp /opt/local/apache2/conf/httpd.conf.sample /opt/local/apache2/conf/httpd.conf
$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
$ sudo nano /opt/local/apache2/conf/httpd.conf
# Set DirectoryIndex to:
# DirectoryIndex index.html index.php
#
# Change DocumentRoot to whatever (e.g. /Users/michael/Sites
#
# Change <directory "{old DocumentRoot}"> to <directory "{new DocumentRoot}">
#
# In that <directory "{new DocumentRoot}"> section change to the following.
# Options Indexes FollowSymLinks MultiViews
# AllowOverride All
#
# In <ifmodule mime_module> section, add the following two lines
# AddType application/x-httpd-php .php
# AddType application/x-httpd-php-source .phps
#
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
# Configure PHP
$ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
$ sudo nano /opt/local/etc/php5/php.ini
# set mysql.default_socket, mysqli.default_socket and pdo_mysql.default_socket to
# /opt/local/var/run/mysql5/mysqld.sock
# Start Apache
$ sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start
# Hopefully you'll get a window asking if httpd can accept incoming requests. Approve it.
# Add DB and tables to MySQL for easy WordPress install
$ mysql5 -u root -p
> CREATE DATABASE putyourdbnamehere;
> GRANT ALL PRIVILEGES ON putyourdbnamehere.* TO "usernamehere"@"localhost" IDENTIFIED BY "yourpasswordhere";
> FLUSH PRIVILEGES;
> EXIT
# Install and Configure phpMyAdmin (will need to restart Apache when done)
$ sudo port install phpmyadmin
$ sudo nano /opt/local/apache2/conf/httpd.conf
# Add section
# <Directory "/opt/local/www/phpmyadmin/">
# Options Indexes MultiViews
# AllowOverride None
# Order allow,deny
# Allow from all
# </Directory>
#
# In <IfModule alias_module> section add the following
# Alias /phpMyAdmin "/opt/local/www/phpmyadmin"
$ sudo nano /opt/local/www/phpmyadmin/config.inc.php
# See http://www.phpmyadmin.netdocumentation/Documentation.html#config
# Fill in $cfg['blowfish_secret']
# Set $cfg['Servers'][$i]['auth_type'] = 'config';
# Add $cfg['Servers'][$i]['user'] = 'root';
# Add $cfg['Servers'][$i]['password'] = '{root password}';
$ sudo /opt/local/apache2/bin/apachectl {start|restart|graceful|graceful-stop|stop}
$ sudo /opt/local/share/mysql5/mysql/mysql.server {start|stop|restart|reload|force-reload|status}
12.20.2009
11.30.2009
11.29.2009
11.27.2009
Hairectomy via SVN
Day 0: The Hirsute
2009-11-26T13:16$ cd /head/hair 2009-11-26T13:16$ du -ch . | grep total11.34g total2009-11-26T13:16$ svnadmin create /Repositories/hairectomy 2009-11-26T13:17$ svn import . file:///Repositories/hairectomy -m "init: the hirsute"Adding mustache Adding beard Adding hair Committed revision 1.2009-11-26T13:17$ ls -h
Day 1: The Chu Manfu
2009-11-27T13:02$ svn del 'Fu Manchu'D Fu Manchu2009-11-27T13:02$ du -ch . | grep total10.49g total2009-11-27T13:03$ svn ci -m "Day 1: The Chu Manfu"Deleting Fu Manchu Transmitting file data . Committed revision 2.2009-11-27T13:03$ ls -h
11.25.2009
Holiday Acting Demographics
I want to see a chart of casting calls for little people as a function of day of the year.© mdawaffe (Michael D Adams) - Powered by WordPress - Full Credits






