Tuesday, 21 December 2010

mysql dumping via an ssh tunnel

First , connect to the remote mysql instance via an ssh tunnel on port 10000

ssh -f -N -L 10000:localhost:3306 remoteuser@remoteserver

Try out the connection via the mysql client

mysql -u remote_sql_user --password=remote_sql_pass -h 127.0.0.1 -P 10000 remote_db_name

Type "show databases" , and you should see a list of databases available on the remote sql instance.

To dump out a database locally, quit the mysql client, and type :

mysqldump --host=127.0.0.1 --port=10000 --user=remote_sql_user ==password="remote_sql_pass" --verbose > /your_local_directory/name_of_db.sql


For very large db dumps, it is faster to use zcat & gzip, then pipe to mysql :

gzip name_of_db.sql

zcat name_of_db.sql.gz | mysql -u local_sql_user --password=local_sql_pass --database=name_of_db

Friday, 17 December 2010

Convert m4a to mp3

Via the Debian Linux Desktop survival guide


Using faad, convert the m4a to wav:
$ faad -o abc.wav abc.m4a

Yes you read that right - faad has output as the first option, and input as the second option.

Then using lame convert wav to mp3. Bitrate is specified with the "-b" option.
$ lame -h -b 192 abc.wav abc.mp3

You can combine this into a script that will convert all m4a's in a directory into mp3s
for i in *.m4a
do
faad -o - "$i" | lame -h -b 192 - "${i%m4a}mp3"
done

Thursday, 16 December 2010

Git cheatsheets

Git cheat sheets via Github

Check status of your repo: git status
Committing: git commit -m "First import
Update local : git pull

See what files have been committed: git ls-files
Remove file:git rm [filename]
Add file to next commit: git add [file name]
Commit all changes to repo: git commit -a
Commit plus message :git commit -m "Message"

View log of your commits: git log
View your commits + graph : git log --stat
Log with pagination: git log -v

Create new tag , push to remote branch:
git tag "v1.3"
git push --tags

Create new branch : git branch [name of your new branch]

Pull new branch from remote repo: git fetch origin [remote-branch]:[new-local-branch]

View branches: git branch

View list of all existing branches: git branch -a

Thursday, 9 December 2010

Changing page.tpl based on node type

Via here

If you use Drupal you may encounter the difficulty in setting up individual page.tpl.php for different node types. The is a simple solution to this problem but requires a few lines of code in your template.php file, found in your theme directory (/sites/all/themes/).

To begin:
Locate your template.php file in your theme directory.
At the bottom of your template.php file enter the following code:

function phptemplate_preprocess(&$vars, $hook) {
switch ($hook){
case 'page':
// Add a content-type page template in second to last.
if ('node' == arg(0)) {
$node_template = array_pop($vars['template_files']);
$vars['template_files'][] = 'page-' . $vars['node']->type;
$vars['template_files'][] = $node_template;
}
break;
}
return $vars;
}
The customizations can be seen in Devel along the lines of
page-node-1.tpl.php -> page-story.tpl.php -> page-node.tpl.php -> page.tpl.php.

If you have to use the forums feature of Drupal you may want to prevent a name clash by implementing:
$vars['template_files'][] = 'page-nodetype-' . $vars['node']->type;
instead of 
$vars['template_files'][] = 'page-' . $vars['node']->type;

Custom template for nodes of type "page"

A common query is :

if i want to override page.tpl for nodes of type "page" what is the name is the tpl file I should use - node-page.tpl.php or page-node.tpl.php?

Theme Developer module to the rescue (available here) : the answer is :

page-node.tpl.php

Friday, 3 December 2010

Gpanels and Adaptivetheme - creating a two column section for blocks

Video tutorial over here

Gpanels are easy to use PHP and HTML snippets for creating multi column layouts. The idea is you copy/paste them into page.tpl.php (where ever you want) and place blocks into the regions to create columns of blocks.

Gpanels come with both Adaptivetheme and the Genesis starter theme.

This video walks you through the process of adding a Gpanel, enabling the regions and CSS, and then placing the blocks in the newly available regions.


Gpanels & Adaptivetheme: Create a 2 column section for blocks from Adaptivethemes on Vimeo.