Thursday, December 06, 2007

This is a not so well known method of embedding images in the HTML file itself. It allows you to include the images and HTML as a single file.

Advantages:

  • one file
  • easier migration
  • less error prone (encoding, binary type during transfer, etc)
  • Less HTTP requests (sometimes faster browser download)

Disadvantages

  • bigger HTML files
  • images not cached for subsequent loading

Here is what the image tag looks like:

<img src="data:image/png;base64,XXX64bit encoded binary dataXXX" />

You can use the following PHP code to generate that tag:
<?php
$fp = fopen('pic.png', 'rb');
$pic = fread($fp, filesize('pic.png'));
fclose($fp);
$base64 = chunk_split(base64_encode($pic));
echo '<img src="data:image/png;base64,'.$base64.'" />';

?>

A nifty trick, that comes very useful in some cases.

Thursday, November 22, 2007

Effordless synchronization via SSH

Setup SSH to authenticate via certificate

Generate key
ssh-keygen -t dsa

Copy public key to remote server
scp ~/.ssh/id_dsa.pub $REMOTE_HOST:.ssh/authorized_keys2

or if you already have keys in your key chain on the remote server
cat ~/.ssh/id_dsa.pub | ssh $REMOTE_HOST 'sh -c "cat - >>~/.ssh/authorized_keys2"'

Copy Files

Using rsync to copy files
rsync --archive --compress --itemize-changes --progress --exclude=.svn  $PATH $REMOTE_HOST:$PATH

Backing up databases

Using mysqldump to get schema and data
mysqldump --compact --compress --add-drop-table --delayed-insert --extended-insert --quick --quote-names --create-options --no-create-db --no-create-info --database $DB > /tmp/$DB.dump
scp /tmp/$DB.dump $RHOST:/tmp/$DB.dump
ssh $REMOTE_HOST "mysql -u root -p$PASSWORD < /tmp/$DB.dump"
rm /tmp/$DB.dump
ssh $REMOTE_HOST "rm /tmp/$DB.dump"

or (if allowed)
mysqldump --compact --compress --add-drop-table --delayed-insert --extended-insert --quick --quote-names --create-options --no-create-db --no-create-info --database $DB > mysql -u root -p$PASSWORD -h $REMOTE_HOST