Delaying until condition is fulfilled

In javascript, we can use setTimeout to do call itself recursively until a condition is met.

Here, we want to check the html content with an interval of 300ms until it is populated, then we will do something.

function checkPostCode() {
	
	if ($('#my_postcode').html() == '') {
		setTimeout(function() {
			checkPostCode();
		}, 300);
	}
	else {
		$('#nearest_store').html('some content');
		return;
	}
}
checkPostCode();

Useful tools in chrome

chrome can be a really cool tool, not just a browser. Some cools extensions are:

qsnap – for capturing and annotating screenshots.
markdown viewer – for viewing markdown and auto refreshing if there are changes.

Install drush in cpanel

* you will need root access to the server

cd /usr/local/bin
wget https://github.com/drush-ops/drush/archive/master.zip
unzip master.zip
rm master.zip
ln -s drush-master/drush drush
cd drush-master
composer install

If composer fails, it is most likely you dont have some extensions. If using cpanel,

# we will need to recompile
echo "--enable-pcntl" >> /var/cpanel/easy/apache/rawopts/all_php5
echo "--with-readline" >> /var/cpanel/easy/apache/rawopts/all_php5

# Now go to whm, easyapache and recompile
# once done you should see the extension being listed with this command line
php -m | grep pcntl

If all is working “drush core-status” should be working

Why Symfony?

Choosing the best framework for rapid development has been a topic that has been debated to death. Today, there is no longer “the best framework” because all modern day framework is scalable and robust, they learn from each other. They are all adapting very fast to new techniques of doing things.

At the time of writing, nodejs and rails continue to innovate with php chasing fast behind. They have all very similar development methodology, so knowing one framework well means you can jump between other modern day frameworks easily.

For php, its Laravel and Symfony. if you want to invest your time, I recommend symfony because it is more stable when compared to the rest. Symfony components have been used by many projects including Drupal and Laravel.

as for Django and Rails, I am leaning more towards rails.

Symfony 2 is a mature framework. A mature framework means information and libraries don’t get outdated quickly. Some framework moves so fast that the 3rd party libraries couldn’t catch up. Rails early days suffered from this. Nothing worked out of the box because googled information was often outdated. Choose a stable framework so that you don’t spend lots of time setting up the right environment and troubleshooting the libraries for example. You should be spending more productive time learning the software.

Cpanel unblock IP

sometimes your IP gets blocked if you have done something funny on the server. Best way is to ssh into the server

csf -r (Restart CSF)
csf -d (quick deny an ip: csf -d xxx.xxx.xxx.xxx)
csf -a (quick allow / whitelist an ip: csf -a xxx.xxx.xxx.xxx)
csf -dr (unblock an ip and remove from the deny list: csf -dr xxx.xxx.xxx.xxx)

Opening and controlling a new popup window

we can assign a var to the window.open method and control the popup. but in order for it to work, remember to use to “opener” method or else it will fail in firefox.

for example,

var d = window.open('../popup/'+url,  'popup', 'width=1024, height=1024, scrollbars=1');
d.opener.location.reload(true);

simple ways to optimise wordpress

No you don’t have to use w3tc or wp super cache. wordpress becomes slow when db queries grow. a quick way is to find the expensive queries and speed them up by caching them.

for example,

$sql = "select post_id from {$wpdb->prefix}postmeta where meta_key='_blar' and meta_value='$value'";

$id = wp_cache_get( 'id_'.$value );
if ( false === $id ) {
  $id = $wpdb->get_var($sql);
  wp_cache_set( 'id_'.$value, $id );
}

transient is also a fantastic way of caching – http://speckyboy.com/2011/12/14/website-speed-part-3-caching-wordpress/

You have received a new debit

This is a multi-part message in MIME format.
——=_Part_28912_5539550947.1890791253740
Content-Type: text/plain; charset=windows-1251; format=flowed
Content-Transfer-Encoding: 7bit

You have received a voice mail message.
Message length is 00:03:21.

——=_Part_28912_5539550947.1890791253740
Content-Type: application/zip;
name=”VoiceMail.zip”
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
name=”VoiceMail.zip”

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
——=_Part_28912_5539550947.1890791253740–