<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>HidayahTech &#187; Tutorials</title>
	<atom:link href="http://blog.basilgohar.com/category/development/tutorials/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.basilgohar.com</link>
	<description>Technology, Development, &#38; Interesting Stuph</description>
	<lastBuildDate>Tue, 08 Nov 2011 15:49:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Batch converting images using ImageMagick</title>
		<link>http://blog.basilgohar.com/2008/05/07/batch-converting-images-using-imagemagick</link>
		<comments>http://blog.basilgohar.com/2008/05/07/batch-converting-images-using-imagemagick#comments</comments>
		<pubDate>Wed, 07 May 2008 11:05:05 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.basilgohar.com/blog/?p=137</guid>
		<description><![CDATA[Bismillaahir Rahmaanir Raheem The command you want is mogrify. I am working with some images generated from within Windows XP, and they (sometimes thousands) are all in uncompressed bitmap files.  I wanted to find a free-and-open-source application to do the batch conversion easily, and I came across ImageMagick, which I had known about for a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>Bismillaahir Rahmaanir Raheem</em></p>
<p>The command you want is <tt>mogrify</tt>.</p>
<p><span id="more-137"></span>I am working with some images generated from within Windows XP, and they (sometimes thousands) are all in uncompressed bitmap files.  I wanted to find a free-and-open-source application to do the batch conversion easily, and I came across <a title="ImageMagick website" href="http://www.imagemagick.org/script/index.php">ImageMagick</a>, which I had known about for a while.  In short, ImageMagick is a library and set of utilites for manupulating and converting images formats.</p>
<p>The most common utility is <tt>convert</tt>.  However, it is designed to work on one file per invocation.  So, without having to learn a little DOS-style scripting, convert comes-up short.  However, mogrify <em>can</em> work on more than one file at a time, <em>alhamdulillaah</em>.</p>
<p>So, for example, if you would like to convert a directory full of <a title="Wikipedia article for " href="http://en.wikipedia.org/wiki/Truevision_TGA">TGA</a> images, the command would be:</p>
<blockquote>
<pre>mogrify -format png *.tga</pre>
</blockquote>
<p>And, if said TGA images happen to use the alpha channel inappropriately (as they did in my case), then simply disable it with this modified command:</p>
<pre>mogrify -format png -alpha off *.tga</pre>
<p>So there you have it!  Happy converting!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2008/05/07/batch-converting-images-using-imagemagick/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial series &#8211; X/HTML Design Tips</title>
		<link>http://blog.basilgohar.com/2007/03/31/tutorial-series-xhtml-design-tips</link>
		<comments>http://blog.basilgohar.com/2007/03/31/tutorial-series-xhtml-design-tips#comments</comments>
		<pubDate>Sat, 31 Mar 2007 13:42:15 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[X/HTML]]></category>

		<guid isPermaLink="false">http://www.basilgohar.com/blog/2007/03/31/tutorial-series-xhtml-design-tips/</guid>
		<description><![CDATA[Bismillaahir Rahmaanir Raheem I&#8217;m going to start a new, easy-lifting tutorial series that I&#8217;ve been meaning to do for a while. It&#8217;s focus will be useful exploitation of the X/HTML standard for marking-up your pages in an elegant yet standards-compliant way. I will make an attempt to reference other excellent sources that exist throughout the [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><em>Bismillaahir Rahmaanir Raheem</em></p>
<p>I&#8217;m going to start a new, easy-lifting tutorial series that I&#8217;ve been meaning to do for a while.  It&#8217;s focus will be useful exploitation of the X/HTML standard for marking-up your pages in an elegant yet standards-compliant way.  I will make an attempt to reference other excellent sources that exist throughout the webiverse wherever appropriate, but for the most part, a lot of these ideas have just come from my own exploration and experimentation with the specification.</p>
<p>Some of the things I will be covering in this tutorial series include (but are not limited to):</p>
<ul>
<li>The usage of lesser-known but fully-supported X/HTML tags for common &amp; useful purposes</li>
<li>Emphasis on a semantic presentation of content</li>
<li>Minimization of unnecessary markup</li>
<li>Strict adherence to both the spirit &amp; the letter of the pertinent standards</li>
<li>Examples of how to exploit the synergy between pertinent standards (e.g., X/HTML, CSS, etc.)</li>
<li>How to avoid using deprecated tags, attributes, and techniques in favor of more sanctioned alternatives</li>
</ul>
<p>Comments, questions, and suggestions <em>related to the topics presented </em>are always welcome, and I will do my best to answer them, but no promises are being made.<span id="more-101"></span></p>
<p>X/HTML is as ubiquitous as a standard can be, yet it is rarely used to its full potential (or correctly, for that matter). There are many aspects of this elegant language that, while fully-supported by nearly <em>all</em> standard browsers (Internet Explorer, Mozilla Firefox, Opera, &amp; Konquerer [and, therefore, more-or-less, Safari]), are extremely under-utilized. This, in fact, leads to a lot of effort to duplicate their functionality through less-appropriate means &#8211; whether via static graphics, Javascript, or even (*shudder*) attempting to mimick their layout through the use of tables. What follows is a brief tutorial introducing these often-neglected tags &amp; practices that can bring with them some tremendous advantages in terms of development time, efficiency, &amp; standards-compliance.</p>
<p>I keep referring to HTML or XHTML as X/HTML simply because, for the most part, the specifications of HTML 4.01 and XHTML 1.0 can more or less be losslessly decomposed into one-another back-and-forth, so there are very few actual differences between the two.  The focus of XHTML 1.0 was to take HTML 4.01 and convert it into a valid XML application.  So, while I will be sticking to XHTML syntax throughout my examples (lower-cased tag &amp; attribute names, all tags must be closed, etc.), all tags and their usages are completely valid between the two specs, should you choose one over the other for any particular reason.</p>
<p>I am looking forward to sharing this joint experience with you guys, and I do hope you&#8217;ll enjoy &amp; benefit from reading it, as I am sure I will  in writing it, <em>in shaa Allaah</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2007/03/31/tutorial-series-xhtml-design-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Server, Apache HTTPD, PHP, &amp; Subversion source configuration &amp; installation</title>
		<link>http://blog.basilgohar.com/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation</link>
		<comments>http://blog.basilgohar.com/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation#comments</comments>
		<pubDate>Sat, 27 May 2006 21:37:23 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://tech.hidayahonline.org/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation/</guid>
		<description><![CDATA[I have my webserver (at the time of this writing, the one on which this blog is posted) configured rather nicely, however, as with everything that accumulates over time, it&#8217;s current state is a combination of quite a lot of trial-&#038;-error sessions that would be really hard to duplicate the first time I tried to [...]]]></description>
			<content:encoded><![CDATA[<p>I have my webserver (at the time of this writing, the one on which this blog is posted) configured rather nicely, however, as with everything that accumulates over time, it&#8217;s current state is a combination of quite a lot of trial-&#038;-error sessions that would be really hard to duplicate the first time I tried to do so on another environment.  Therefore, I&#8217;m going to try to log the configuration I use to get a system working as I like.  This may or may not turn into a tutorial-type series, but for now, it&#8217;s just notes for myself.<span id="more-36"></span></p>
<p>The core of my server is, of course, the Apache HTTPD web server.  For dynamic pages, I almost entirely rely on the PHP programming language.  For database storage, I use MySQL.  Finally, rounding out the most important services I run on my server is Subversion versioning server, which I use for nearly all my code-based projects now.  I also run the IceCast2 server, but since its configuration is pretty-much independent of the other four packages I&#8217;ve described, I&#8217;ll leave that out for the time being.</p>
<p>I strongly prefer source-based installations for the flexibility you get when it comes time to install.  With the advent of a large support community around the Fedora project, it&#8217;s really become less of any issue, as nearly every package is kept up to date with the latest version.  This is good &#038; well for my development machine at home.  But my current host, Servermatrix, only supports Redhat Enterprise Server releases.  Therefore, to get the latest versions of these server packages, I will need to go to the sources.  Plus, you get to learn a <em>lot</em> more when you&#8217;re getting down-&#038;-dirty with the code &#8211; configuring, compiling, and sometimes every altering code!  Oh&#8230;the excitement!</p>
<p>Having said that, this configuration guide is going to be dealing with the source-based installations of these packages only.  So, let&#8217;s start downloading.  Here are the relevant links (I have tried to link to the most specific, version-neutral download page available for each package):</p>
<ul>
<li><a title="MySQL downloads page" href="http://dev.mysql.com/downloads/">MySQL Server</a></li>
<li><a title="Apache HTTPD downloads page" href="http://httpd.apache.org/download.cgi">Apache web server</a></li>
<li><a title="PHP downloads page" href="http://us3.php.net/downloads.php">PHP</a></li>
<li><a title="Subversion packages page" href="http://subversion.tigris.org/project_packages.html">Subversion</a></li>
</ul>
<p>I strongly suggest you make a directory named &#8220;packages&#8221; or something unambigious in which to download &#038; extract all your files.  This is the way <em>I</em> do it, and it&#8217;s the way I&#8217;ll be doing it throughout this guide.  How <em>you</em> do it is your business, but I can&#8217;t possibly know for sure how you&#8217;ll be doing it ahead of time.  If you have a preferred, possibly <em>superior</em> package directory structure, by all means, do post a comment or let me know some other way.  I&#8217;m always up for doing things the <em>better</em> way, if &#038; when I discover such ways.  However, I&#8217;ll be referring to the packages directory throughout this guide, so now you know to what I&#8217;ll be referring.<br />
While you&#8217;re downloading these packages, now would probably be a good time to start reading up on the documentation for each package. Some more nice links to check out (I have linked to either the most updated documentation available online or, where appropriate, to the documentation related to the specific version covered by this guide):</p>
<ul>
<li><a title="MySQL Server 5.0 online documentation" href="http://dev.mysql.com/doc/refman/5.0/en/index.html">MySQL documentation</a></li>
<li><a title="Apache HTTPD 2.2 online documentation" href="http://httpd.apache.org/docs/2.2/">Apache HTTPD documentation</a></li>
<li><a title="PHP online documentation" href="http://www.php.net/manual/en/">PHP documentation</a></li>
<li><a title="Subversion " href="http://svnbook.red-bean.com/nightly/en/index.html">Subversion documentation (SVN book)</a></li>
</ul>
<p>It&#8217;s probably a good idea to bookmark these pages.  If you&#8217;re using a browser that supports tabs (e.g., Firefox), you might consider making a folder with just these relevant links.  You&#8217;ll probably appreciate it multiple times throughout this guide.</p>
<p>Once you&#8217;re downloads have all finished, it&#8217;s time to start extracting!  I usually download the bzip2 versions of each package, if they are available, because I like the idea of things taking less space where possible.  With modern CPUs, the time difference between gzip compression &#038; bzip2 compression is almost a non-issue, whereas the space savings almost always is significant (10 &#8211; 20% minimum, usually).  At a later date I will probably go into more details about how the packages are structured, but for now, I&#8217;ll just explain how to get the files out &#038; ready to configure.  The command to extract the files will look like the following:</p>
<p>For bzip2-compressed packages:</p>
<pre>tar -xf package-name-version.tar.bz2 --bzip2</pre>
<p>For gzip-compressed packages:</p>
<pre>tar -xf package-name-version.tar.gz --gzip</pre>
<p>This will usually extract out the files into a subdirectory like this:</p>
<pre>~/packages/package-name-version</pre>
<p>This will become important as we do upgrades to newer versions.  As you extract the new versions to their respective directories, you generally won&#8217;t overwrite your older versions.  This is very useful, as you&#8217;ll be able to go to your older versions &#038; retrieve your old configuration settings nearly effortlessly, which will save a lot of time when it comes time configure, compile, &#038; install a newer version of an existing package.</p>
<p>So, once we&#8217;re done, we should have four files in ~/packages and four directories with names similar to the packages.  We&#8217;ll stop here &#038; proceed forward with another session when I&#8217;m feeling up to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2006/05/27/mysql-server-apache-httpd-php-subversion-source-configuration-installation/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Implementing PHP Iterators &#8211; The Beginning</title>
		<link>http://blog.basilgohar.com/2006/04/07/implementing-php-iterators-the-beginning</link>
		<comments>http://blog.basilgohar.com/2006/04/07/implementing-php-iterators-the-beginning#comments</comments>
		<pubDate>Fri, 07 Apr 2006 15:48:00 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://tech.hidayahonline.org/2006/04/07/implementing-php-iterators-the-beginning/</guid>
		<description><![CDATA[One of the new features that came with PHP 5 is the ability to implement Iterators. Implementing one of your objects as an iterator essentially allows you to treat it as a standard array. By default, without adding any additional code, you can enable iteration over a regular objects variable members. So, for example, if [...]]]></description>
			<content:encoded><![CDATA[<p>One of the new features that came with <a href="http://www.php.net/zend-engine-2.php" title="PHP 5/Zend Engine 2 features">PHP 5</a> is the ability to implement <a href="http://us3.php.net/manual/en/language.oop5.iterations.php" title="PHP Iterators page"><span style="font-style: italic">Iterators</span></a>.  Implementing one of your objects as an iterator essentially allows you to treat it as a standard array.  By default, without adding any additional code, you can enable iteration over a regular objects variable members.  So, for example, if I had the following code:</p>
<p>(I&#8217;ve removed the plugin that I used to format PHP code here, so until I find out that works, I apologize for not showing my code examples&#8230;)<br />
If I were to run a foreach() loop over this, I would get behavior that would correspond to an array with the elements of $bar1, $bar2, &amp; $bar3.  This is wonderful default functionality.  However, you can go a step further if you want to implement more complex &amp; complete behavior.  I&#8217;m going to be experimenting on this kind of behavior with my DBObject class &#8211; namely, converting it to a DBArray object, and see how well that goes over.  I will report on my successes &amp; travails in followup posts.</p>
<p>(<em>Boy</em> I&#8217;m having a hard time to get WordPress to format code on this thing&#8230;probably need to get an extension to do it.  Any suggestions?)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2006/04/07/implementing-php-iterators-the-beginning/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Now taking tutorial requests</title>
		<link>http://blog.basilgohar.com/2006/01/15/now-taking-tutorial-requests</link>
		<comments>http://blog.basilgohar.com/2006/01/15/now-taking-tutorial-requests#comments</comments>
		<pubDate>Sun, 15 Jan 2006 17:57:17 +0000</pubDate>
		<dc:creator>Basil</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://tech.hidayahonline.org/2006/01/15/now-taking-tutorial-requests/</guid>
		<description><![CDATA[One of the goals of HidayahTech is to share what little technical knowledge I have with my visitors in the form of easy-to-follow &#038; comprehensive tutorials. So, if you&#8217;d like to request a tutorial, please leave a comment to this post with the nature of your request. I&#8217;ll start you off with some options: PHP [...]]]></description>
			<content:encoded><![CDATA[<p>One of the goals of HidayahTech is to share what little technical knowledge I have with my visitors in the form of easy-to-follow &#038; comprehensive tutorials.  So, if you&#8217;d like to request a tutorial, please leave a comment to this post with the nature of your request.  I&#8217;ll start you off with some options:</p>
<ul>
<li>PHP</li>
<li>MySQL</li>
<li>HTML</li>
<li>CSS</li>
<li>Object-Oriented Programming</li>
<li>XML</li>
<li>Standards-Compliant Design</li>
<li>3-tier design (a.k.a., Model-View-Controller)</li>
<li>REST</li>
</ul>
<p>My posting these topics above does not imply that I am in any way an expert in them, but they are concepts with which I am at least slightly familiar, and wouldn&#8217;t mind looking into more deeply to help share some knowledge.  However, I do deal with most of those topics in one way another at work or in my own personal website design.</p>
<p>Your request need not be limited to the list above, and may even be a combination of any of the above, but you&#8217;ll have more of a guarantee of a decent tutorial written if it can be expressed by one or more of the above topics.</p>
<p>I&#8217;ll be lookin&#8217; forward to hearing from you all!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.basilgohar.com/2006/01/15/now-taking-tutorial-requests/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

