<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.practicalweb.co.uk" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>PracticalWeb Ltd - websites that work for you</title>
 <link>http://www.practicalweb.co.uk/frontpage</link>
 <description>The basic front page view.</description>
 <language>en</language>
<item>
 <title>verbose remote ssh (with echo)</title>
 <link>http://www.practicalweb.co.uk/blog/12/01/20/verbose-remote-ssh-echo</link>
 <description>&lt;p&gt;I usually manage website deployment with bash scripts that run remote commands on the servers&lt;/p&gt;
&lt;p&gt;In order that I can see what is going on and debug any errors verbose output is useful.&lt;/p&gt;
&lt;p&gt;Running &quot;bash -ex&quot; causes each line to be output as it progresses and halt on any error so that you don&#039;t miss it.&lt;/p&gt;
&lt;p&gt;within the remote command &quot;set -x&quot; cuase bash to echo all commands&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;#!/bin/bash -ex&lt;br /&gt;ssh -T user@server &amp;lt;&amp;lt; EOF&lt;br /&gt;set -x&lt;br /&gt;echo foo &amp;gt; /dev/null&lt;br /&gt;EOF&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/12/01/20/verbose-remote-ssh-echo#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/bash">bash</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/linux">Linux</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/ssh">ssh</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/sysadmin">sysadmin</category>
 <pubDate>Fri, 20 Jan 2012 16:47:31 +0000</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">217 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>Export from Git for Drupal site releases</title>
 <link>http://www.practicalweb.co.uk/blog/11/11/15/export-git-drupal-site-releases</link>
 <description>&lt;p&gt;I&#039;m used to how svn export works, and have used this in a number of release scripts.&lt;/p&gt;
&lt;p&gt;Git doesn&#039;t quite have an equivalent&lt;/p&gt;
&lt;p&gt;There is &lt;/p&gt;
&lt;p&gt;&lt;code&gt;git archive&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Which creates a tarball rather than a set of files, and while you can export a subset of the repository you still get the full path in the tarball.&lt;/p&gt;
&lt;p&gt;and &lt;/p&gt;
&lt;p&gt;&lt;code&gt;git checkout-index&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Which creates a set of files (these can be locate outside the working copy) but requires a local repository.&lt;/p&gt;
&lt;p&gt;Also I&#039;m using github which doesn&#039;t support the remote repository option of git archive and thereadymade tarball doesn&#039;t seem to work via wget on a private project.&lt;/p&gt;
&lt;p&gt;What I really wanted was a script I could hand to the sysadmin, that he could run on any server without needing a local git repository. &lt;/p&gt;
&lt;p&gt;In the end I have instead written a script that packages the tarball I want and uploads that to a server he can access it from.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;#!/bin/bash -ex&lt;br /&gt;&lt;br /&gt;# pass a valid release tag as a parameter to this script to create an release tarball and upload to skunkworks&lt;br /&gt;&lt;br /&gt;# this works on the local git repo - which must be up to date!&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;git archive&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1 www &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;gt; /&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tmp&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar&lt;br /&gt;cd &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tmp&lt;br /&gt;tar &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;xf &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar&lt;br /&gt;rm &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar&lt;br /&gt;rm &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Rf www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/default/&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;mv www &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;br /&gt;tar &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;czf &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gz &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1 &lt;br /&gt;rm &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Rf &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;br /&gt;&lt;br /&gt;scp &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gz dev&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;foo&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:/var/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;releases&lt;br /&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt; Then there is another script that downloads and unpacks this to upgrade our site.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;#!/bin/bash -ex&lt;br /&gt;&lt;br /&gt;# parameter is release tag&lt;br /&gt;&lt;br /&gt;# tag has been released and uploaded to skunkworks&lt;br /&gt;&lt;br /&gt;# live site is backed up&lt;br /&gt;&lt;br /&gt;# live site docroot is /var/www/public_html&lt;br /&gt;&lt;br /&gt;# each release is at /var/www/$release&lt;br /&gt;&lt;br /&gt;# symlink points /var/www/public_html to current release&lt;br /&gt;&lt;br /&gt;# sites/default is common to every release - stored as /var/www/sites-default&lt;br /&gt;# symlink added to each release to point to this&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;export COLUMNS&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;80&lt;br /&gt;&lt;br /&gt;release&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=$&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cd &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/var/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;wget http&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//dev.server.foo/releases/${release}.tar.gz&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;xzf &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;release&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;gz&lt;br /&gt;&lt;br /&gt;cd &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;release&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ln &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;s &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/var/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-default &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/default&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;drush &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;y vset site_offline_message &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&amp;lt;p&amp;gt;Site offline for upgrade&amp;lt;/p&amp;gt;&quot; &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;drush &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;y vset site_offline 1 &lt;br /&gt;&lt;br /&gt;drush &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;y updb&lt;br /&gt;&lt;br /&gt;drush cc all&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;# if the current user is a member of the www-data or apache group we can make the files owned by this group&lt;br /&gt;# as long as apache has umask 002 files should now be writable by us and apache&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;groups &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;grep www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;gt; /&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;dev&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;null &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;find sites&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/default/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/ ! -&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;group www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;exec chgrp www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;data &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;{} ;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;groups &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;grep apache &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;gt; /&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;dev&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;null &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;find sites&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/default/&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;files&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;/ ! -&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;group apache &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;exec chgrp apache &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;{} ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;cd &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;..&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;rm public_html&lt;br /&gt;&lt;br /&gt;ln &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;s &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;release&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;public_html&lt;br /&gt;&lt;br /&gt;cd &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;release&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;drush &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;y &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;--&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;uri&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;www&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;defaqto&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;com vset site_offline 0&lt;br /&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/11/15/export-git-drupal-site-releases#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/drupal">Drupal</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/git">git</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/svn">svn</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/version-control">version control</category>
 <pubDate>Tue, 15 Nov 2011 11:14:55 +0000</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">216 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>Instance parameter for drupal field_create_instance($instance)</title>
 <link>http://www.practicalweb.co.uk/blog/11/09/23/instance-parameter-drupal-fieldcreateinstanceinstance</link>
 <description>&lt;p&gt;The code in chapter 7 of pro Drupal development has a bug.&lt;/p&gt;
&lt;p&gt;The $instance array that you need to pass to &lt;a href=&quot;http://api.drupal.org/api/drupal/modules--field--field.crud.inc/function/field_create_instance/7&quot;&gt;field_create_instance()&lt;/a&gt; needs to be as below.&lt;/p&gt;
&lt;p&gt;Note that the display array has the keyword, &#039;default&#039; for the default display - ie a node on it&#039;s own page &#039;teaser&#039; looks like the right value for teaser. Other view modes are possible too.&lt;/p&gt;
&lt;p&gt;The label field in the display part of the array is just the positioning of the array - &#039;above&#039;, &#039;below&#039;, &#039;inline&#039; and &#039;hidden&#039; seem the likely set of allowed values.&lt;/p&gt;
&lt;p&gt;NB the display part of the array is optional as Drupal will provide default values.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;array( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;field_name&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;job_post_company&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;type&#039;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;text&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;label&#039;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$t&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;Company posting the job listing&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;widget&#039;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;type&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;text_textfield&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;display&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;default&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;label&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;above&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;type&#039;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;text&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;br /&gt;&amp;nbsp;&amp;nbsp; ),&lt;br /&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The errata for this book seems to be long and unhelpfully laid out 563 reported errors so far...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.drupalbook.com/errata3&quot; title=&quot;http://www.drupalbook.com/errata3&quot;&gt;http://www.drupalbook.com/errata3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There even seems to be errors in the errata &lt;a href=&quot;http://www.drupalbook.com/node/269&quot; title=&quot;http://www.drupalbook.com/node/269&quot;&gt;http://www.drupalbook.com/node/269&lt;/a&gt; seems to report this error (or part of it) but I think it&#039;s wrong - the array key should be a view mode. &lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/09/23/instance-parameter-drupal-fieldcreateinstanceinstance#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/drupal">Drupal</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/drupal-7">drupal 7</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/errata">errata</category>
 <pubDate>Fri, 23 Sep 2011 17:30:14 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">215 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>node_save tags by term name with auto addition of new tags</title>
 <link>http://www.practicalweb.co.uk/blog/11/09/22/nodesave-tags-term-name-auto-addition-new-tags</link>
 <description>&lt;p&gt;Drupal lets you add a taxonomy term to a node and if you use the GUI you can have a nice auto-complete widget that takes term name - and iof the term doesn&#039;t exist yet you get a new term created when you save the node.&lt;/p&gt;
&lt;p&gt;I wanted to access the same functionality on node I am generating from external data.&lt;/p&gt;
&lt;p&gt;The key is to create the term array with tid = &#039;autocreate&#039; - this and the vocabulary ID are enough to trigger the taxonomy module to lookup the tid for you - and adda new term is required.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;$node &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= new &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;stdClass&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;foo&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;body &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;bar&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;field_cat_tag&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;und&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] =&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$name&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;field_cat_tag&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;und&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;vocabulary_machine_name&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$vocab_machine_name&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// optional - helps performance if in a loop&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;field_g4_cat_tag&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;und&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;vid&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$vid&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;field_g4_cat_tag&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;und&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;tid&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;autocreate&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node_save&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/09/22/nodesave-tags-term-name-auto-addition-new-tags#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/drupal">Drupal</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/drupal-7">drupal 7</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/programatically">programatically</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/taxonomy">taxonomy</category>
 <pubDate>Thu, 22 Sep 2011 18:12:28 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">214 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>Using PHP and curl with http PUT on string data </title>
 <link>http://www.practicalweb.co.uk/blog/11/09/21/using-php-and-curl-http-put-string-data</link>
 <description>&lt;p&gt;This wasn&#039;t obvious&lt;/p&gt;
&lt;p&gt;There are various other posts on this - but mostly assuming you will put a file.&lt;/p&gt;
&lt;p&gt;In my case I want to put the contents of a string so I needed to craete a temporary filehandle.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;put_it&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$string&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ch &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;curl_init&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$url&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;curl_setopt&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;CURLOPT_RETURNTRANSFER&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;curl_setopt&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;CURLOPT_PUT&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;TRUE&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// create tempoary file handle&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$oneMB &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1024 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;* &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1024&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;php://temp/maxmemory:$oneMB&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;r+&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fputs&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$string&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;rewind&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;curl_setopt&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;CURLOPT_INFILE&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;curl_setopt&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;CURLOPT_INFILESIZE&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$string&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$response &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;curl_exec&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ch&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fclose&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fp&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/09/21/using-php-and-curl-http-put-string-data#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/http">HTTP</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/php">PHP</category>
 <pubDate>Wed, 21 Sep 2011 15:59:40 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">213 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>RAID ext4 disk problems</title>
 <link>http://www.practicalweb.co.uk/blog/11/09/20/raid-ext4-disk-problems</link>
 <description>&lt;p&gt;One of those posts for myself in case I need to come back to this later&lt;/p&gt;
&lt;p&gt;I have a new PC which is very fast apart from problems with disc access seeming slow (and the disks being physically noisy)&lt;/p&gt;
&lt;p&gt;The following related links led me to try a solution&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://forums.gentoo.org/viewtopic-t-843292.html&quot; title=&quot;http://forums.gentoo.org/viewtopic-t-843292.html&quot;&gt;http://forums.gentoo.org/viewtopic-t-843292.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://marc.info/?l=linux-raid&amp;amp;m=128506852210452&amp;amp;w=2&quot; title=&quot;http://marc.info/?l=linux-raid&amp;amp;m=128506852210452&amp;amp;w=2&quot;&gt;http://marc.info/?l=linux-raid&amp;amp;m=128506852210452&amp;amp;w=2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;/etc/fstab&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
UUID=317f7912-9956-41f1-9855-7bee69c950b3 /               ext4    errors=remount-ro,barrier=0 0       1&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;NB adding barrier=0 here seems to have solved the problem&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/09/20/raid-ext4-disk-problems#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/linux">Linux</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/note-self">note to self</category>
 <pubDate>Tue, 20 Sep 2011 14:20:45 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">212 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>How to turn off notifications in Banshee</title>
 <link>http://www.practicalweb.co.uk/blog/11/08/19/how-turn-notifications-banshee</link>
 <description>&lt;p&gt;The music player banshee which is part of the default Ubuntu setup pops up a message each time a new track starts playing.&lt;/p&gt;
&lt;p&gt;To turn this off&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Banshee&lt;/li&gt;
&lt;li&gt;Go to Edit, preferences, extensions&lt;/li&gt;
&lt;li&gt;Enable Notification Area Icon&lt;/li&gt;
&lt;li&gt;The Icon should now show up - right click on it&lt;/li&gt;
&lt;li&gt;Uncheck Show notifications&lt;/li&gt;
&lt;li&gt;Disable the Notification Area Icon again&lt;/li&gt;
&lt;ol&gt;
&lt;p&gt;Very annoying - the option to turn off notifications is hidden on a menu you can&#039;t get to by default.&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/08/19/how-turn-notifications-banshee#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/annoying">annoying</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/linux">Linux</category>
 <pubDate>Fri, 19 Aug 2011 11:21:51 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">211 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>Henri Bergius&#039; secret agenda for PHP Content Management Systems</title>
 <link>http://www.practicalweb.co.uk/blog/11/07/13/henri-bergius-secret-agenda-php-content-management-systems</link>
 <description>&lt;p&gt;I read this post the other day and found it really inspiring - so many things to do and learn...&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bergie.iki.fi/blog/my_secret_agenda_for_php_content_management_systems/&quot; title=&quot;http://bergie.iki.fi/blog/my_secret_agenda_for_php_content_management_systems/&quot;&gt;http://bergie.iki.fi/blog/my_secret_agenda_for_php_content_management_sy...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Links within that blog that I found especially interesting&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/indeyets/appserver-in-php&quot; title=&quot;https://github.com/indeyets/appserver-in-php&quot;&gt;https://github.com/indeyets/appserver-in-php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://documentcloud.github.com/backbone/&quot; title=&quot;http://documentcloud.github.com/backbone/&quot;&gt;http://documentcloud.github.com/backbone/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/bergie/VIE&quot; title=&quot;https://github.com/bergie/VIE&quot;&gt;https://github.com/bergie/VIE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://phpcr.github.com/&quot; title=&quot;http://phpcr.github.com/&quot;&gt;http://phpcr.github.com/&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/07/13/henri-bergius-secret-agenda-php-content-management-systems#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/cms">cms</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/framework">Framework</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/javascrip">javascrip</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/php">PHP</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/rdf">rdf</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/vision">vision</category>
 <pubDate>Wed, 13 Jul 2011 09:31:23 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">210 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>svn merges and excess merginfo properties</title>
 <link>http://www.practicalweb.co.uk/blog/11/07/13/svn-merges-and-excess-merginfo-properties</link>
 <description>&lt;p&gt;The main svn server I&#039;m working on has finally upgraded to svn 1.5 - so easier merging is now possible - hooray.&lt;/p&gt;
&lt;p&gt;But we&#039;ve been seeing merges that should only affect one file resulting in property changes on lots of files/directories. This isn&#039;t especially harmful - but it is annoying and makes reviewing the merge harder because of the extra noise.&lt;/p&gt;
&lt;p&gt;It turns out that this extra mergeinfo is likely because of earlier merges on subtrees &lt;a href=&quot;http://blogs.collab.net/subversion/2009/11/where-did-that-mergeinfo-come-from/&quot; title=&quot;http://blogs.collab.net/subversion/2009/11/where-did-that-mergeinfo-come-from/&quot;&gt;http://blogs.collab.net/subversion/2009/11/where-did-that-mergeinfo-come...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is possible to remove the subtree mergeinfo via this command run from the root of the branch&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;svn propdel -R svn:mergeinfo ./*&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://stackoverflow.com/questions/767418/remove-unnecessary-svnmergeinfo-properties&quot; title=&quot;http://stackoverflow.com/questions/767418/remove-unnecessary-svnmergeinfo-properties&quot;&gt;http://stackoverflow.com/questions/767418/remove-unnecessary-svnmergeinf...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Which should get rid of the problem - I&#039;m just not 100% sure if it throws away important data.&lt;/p&gt;
&lt;p&gt;For now I think I&#039;ll live with the nuisance - and come back to this if it becomes too annoying or if I gain greater insight into the issue.&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/07/13/svn-merges-and-excess-merginfo-properties#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/svn">svn</category>
 <pubDate>Wed, 13 Jul 2011 09:20:08 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">209 at http://www.practicalweb.co.uk</guid>
</item>
<item>
 <title>Selenium test for computedStyle</title>
 <link>http://www.practicalweb.co.uk/blog/11/06/28/selenium-test-computedstyle</link>
 <description>&lt;p&gt;I wanted to write some automated tests for CSS changes and bugs, these type of issues are quite prone to regression so re-running the tests has a large benefit.&lt;/p&gt;
&lt;p&gt;It is possible to add new assertions to selenium via the user-extensions.js file&lt;/p&gt;
&lt;p&gt;The following adds a test for computed style, this only works in firefox as far as I know - but some automation is better than none&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;//only works in firefox&lt;br /&gt;Selenium.prototype.assertStyle = function(locator, text) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var params = text.split(&amp;#039;=&amp;#039;, 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var propertyName = params[0];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var expectedValue = params[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var element = this.page().findElement(locator);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var actualValue = this.browserbot.getCurrentWindow().getComputedStyle(element, null).getPropertyValue(propertyName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assert.matches(expectedValue, actualValue);&lt;br /&gt;}; &lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Now I can add a selenium test like&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;table&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;	&amp;lt;td&amp;gt;assertStyle&amp;lt;/td&amp;gt;&lt;br /&gt;	&amp;lt;td&amp;gt;//td[@class=&amp;#039;lender&amp;#039;][1]&amp;lt;/td&amp;gt;&lt;br /&gt;	&amp;lt;td&amp;gt;text-align=center&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Selenium only lets me pass two parameters and really I want three (locator, css property, expected value). So I&#039;ve hacked this and put two parameters into one - which is a bit smelly but for now gets the job done - comments on better methods very welcome.&lt;/p&gt;
&lt;p&gt;I need to at least check that the &#039;text&#039; parameter is validated properly - but I figured I&#039;d blog now and update later as I&#039;ve a deadline to meet today.&lt;/p&gt;
</description>
 <comments>http://www.practicalweb.co.uk/blog/11/06/28/selenium-test-computedstyle#comments</comments>
 <category domain="http://www.practicalweb.co.uk/category/tags/css">CSS</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/selenium">selenium</category>
 <category domain="http://www.practicalweb.co.uk/category/tags/testing">testing</category>
 <pubDate>Tue, 28 Jun 2011 08:41:40 +0100</pubDate>
 <dc:creator>sean</dc:creator>
 <guid isPermaLink="false">208 at http://www.practicalweb.co.uk</guid>
</item>
</channel>
</rss>

