<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>everything about machines</title>
	
	<link>http://cyrenity.wordpress.com</link>
	<description>my niche for computer system interoperability &amp; integration</description>
	<lastBuildDate>Tue, 07 May 2013 17:49:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain="cyrenity.wordpress.com" port="80" path="/?rsscloud=notify" registerProcedure="" protocol="http-post" />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>everything about machines</title>
		<link>http://cyrenity.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cyrenity.wordpress.com/osd.xml" title="everything about machines" />
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/EverythingAboutMachines" /><feedburner:info uri="everythingaboutmachines" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://cyrenity.wordpress.com/?pushpress=hub" /><item>
		<title>Howto setup mysql-cluster (beginners tutorial)</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/lyvkfepSeAo/</link>
		<comments>http://cyrenity.wordpress.com/2010/08/12/howto-setup-mysql-cluster-beginners-tutorial/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 08:03:31 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql cluster]]></category>
		<category><![CDATA[mysql replication]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=161</guid>
		<description><![CDATA[Introduction This HOWTO is designed for a classic setup of two servers behind a load-balancer. The aim is to have true redundancy &#8211; either server can be unplugged and yet the site will remain up. Notes: You MUST have a third server as a management node but this can be shut down after the cluster [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=161&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><span style="font-size:medium;"><strong>Introduction</strong></span></p>
<p>This HOWTO is designed for a classic setup of two servers behind a load-balancer. The aim is to have true redundancy &#8211; either server can be unplugged and yet the site will remain up.</p>
<p><span style="font-size:medium;"><strong>Notes:</strong></span></p>
<p>You MUST have a third server as a management node but this can be shut down after the cluster starts. Also note that I do not recommend shutting down the management server (see the extra notes at the bottom of this document for more information). You can not run a MySQL Cluster with just two servers And have true redundancy.</p>
<p>Although it is possible to set the cluster up on two physical servers you WILL NOT GET the ability to &#8220;kill&#8221; one server and for the cluster to continue as normal. For this you need a third server running the management node.</p>
<p>we are going to talk about three servers:</p>
<p>node01.example.com 192.168.0.10</p>
<p>node02.example.com	 192.168.0.20</p>
<p>node03.example.com	 192.168.0.30</p>
<p>Servers node01 and node02 will be the two that end up &#8220;clustered&#8221;. This would be perfect for two servers behind a loadbalancer or using round robin DNS and is a good replacement for replication. Server node03 needs to have only minor changes made to it and does NOT require a MySQL install. It can be a low-end machine and can be carrying out other tasks.</p>
<p><span style="font-size:medium;"><strong>Get the software:</strong></span></p>
<p>For Generally Available (GA), supported versions of the software, download from</p>
<p><a href="http://www.mysql.com/downloads/cluster/">http://www.mysql.com/downloads/cluster/</a></p>
<p>Make sure that you select the correct platform – in this case, “Linux – Generic” and then the correct architecture (for LINUX this means x86 32 or 64 bit).</p>
<p><em>Note:</em> Only use MySQL Server executables (mysqlds) that come with the MySQL Cluster installation.</p>
<p><strong>STAGE1: Installation of Data and SQL nodes on node01 and node02</strong></p>
<p>On each of the machines designated to host data or SQL nodes(in our case node01 and node02), perform the following steps as the system root user:</p>
<ol>
<li>create a new mysql user group, and then add a mysql user to this group:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; groupadd mysql</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; useradd -g mysql mysql</span></span></td>
</tr>
</tbody>
</table>
<p><code><span style="color:#ffffff;"><span style="font-family:courier, 'courier new', fixed, monospace;"><span style="font-size:x-small;"><br />
</span></span></span></code></li>
<li>Change location to the directory containing the downloaded file, unpack the archive, and create a symlink to the mysql directory named mysql. Note that the actual file and directory names vary according to the MySQL Cluster version number.<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:xx-small;">sh<span style="font-size:x-small;">ell&gt; cd /var/tmp</span></span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; tar -C /usr/local -xzvf mysql-cluster-gpl-7.1.5-linux-x86_64-glibc23.tar.gz</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; ln -s /usr/local/mysql-cluster-gpl-7.1.5-linux-i686-glibc23 /usr/local/mysql</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; export PATH=$PATH:/usr/local/mysql/bin</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; echo &#8220;export PATH=\$PATH:/usr/local/mysql/bin&#8221; &gt;&gt; /etc/bash.bashrc</span></span></td>
</tr>
</tbody>
</table>
</li>
<li>Change location to the mysql directory and run the supplied script for creating the system databases:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; cd mysql</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; ./scripts/mysql_install_db &#8211;user=mysql</span></span></td>
</tr>
</tbody>
</table>
</li>
<li>Set the necessary permissions for the MySQL server and data directories:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; chown -R root .</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; chown -R mysql data</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; chgrp -R mysql .</span></span></td>
</tr>
</tbody>
</table>
</li>
<li>Copy the MySQL startup script to the appropriate directory, make it executable, and set it to start when the operating system is booted up:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6">shell&gt; cp support-files/mysql.server /etc/init.d/mysql</p>
<p>shell&gt; chmod +x /etc/init.d/mysql</p>
<p>shell&gt; update-rc.d mysql defaults</td>
</tr>
</tbody>
</table>
</li>
</ol>
<p><strong>STAGE2: Installation of Management node on node03</strong></p>
<p>Installation of the management node does not require the mysqld binary. Only the MySQL Cluster management server (ndb_mgmd) is required; I assume that you have placed mysql-cluster-gpl-7.1.5-linux-i686-glibc23.tar.gz in /var/tmp.</p>
<p>As system root perform the following steps to install ndb_mgmd and ndb_mgm on the Cluster management node host (node02):</p>
<ol>
<li>Change location to the /var/tmp directory, and extract the ndb_mgm and ndb_mgmd from the archive into a suitable directory such as /usr/local/bin:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; cd /var/tmp</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; tar -zxvf mysql-cluster-gpl-7.1.5-linux-i686-glibc23.tar.gz</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; cd /usr/local/mysql-cluster-gpl-7.1.5-linux-i686-glibc23</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; cp bin/ndb_mgm* /usr/local/bin</span></span></td>
</tr>
</tbody>
</table>
</li>
<li>Change location to the directory into which you copied the files, and then make both of them executable:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6">shell&gt; cd /usr/local/bin</p>
<p>shell&gt; chmod +x ndb_mgm*</td>
</tr>
</tbody>
</table>
</li>
</ol>
<p><strong>STAGE3: Configuration of Management node</strong></p>
<p>The first step in configuring the management node is to create the directory in which the configuration file can be found and then to create the file itself. For example (running as root):</p>
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; mkdir /var/lib/mysql-cluster</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; cd /var/lib/mysql-cluster</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; vi config.ini</span></span></td>
</tr>
</tbody>
</table>
<p>For our setup, the config.ini file should read as follows:</p>
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[ndbd default]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">NoOfReplicas=2</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">DataMemory=80M</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">IndexMemory=18M</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[tcp default]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[ndb_mgmd]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">hostname=192.168.0.30 # Hostname or IP address of MGM node</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">datadir=/var/lib/mysql-cluster # Directory for MGM node log files</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[ndbd]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">hostname=192.168.0.10 # Hostname or IP address</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">datadir=/usr/local/mysql/data # Directory for this data node&#8217;s data files</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[ndbd]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">hostname=192.168.0.20 # Hostname or IP address</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">datadir=/usr/local/mysql/data # Directory for this data node&#8217;s data files</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[mysqld]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">hostname=192.168.0.10 # Hostname or IP address</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[mysqld]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">hostname=192.168.0.20 # Hostname or IP address</span></span></td>
</tr>
</tbody>
</table>
<p><strong>STAGE4: Configuration of Data and SQL nodes</strong></p>
<p>The first step in configuring the management node is to create the directory in which the configuration file can be found and then to create the file itself. For example (running as root):</p>
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; vi /etc/my.cnf</span></span></td>
</tr>
</tbody>
</table>
<p>Note :<br />
We show <strong>vi</strong> being used here to create the file, but any text editor should work just as well.</p>
<p>For each data node and SQL node in our setup, my.cnf should look like this:</p>
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[client]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">port	 = 3306</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">socket	 = /tmp/mysql.sock</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[mysqld]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">port	 = 3306</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">socket	 = /tmp/mysql.sock</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">skip-locking</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">ndbcluster # run NDB storage engine</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">ndb-connectstring=192.168.0.30 # location of management server</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[mysql_cluster]</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">ndb-connectstring=192.168.0.30 # location of management server</span></span></td>
</tr>
</tbody>
</table>
<p>Important :<br />
Once you have started a mysqld process with the NDBCLUSTER and ndb-connectstring parameters in the [mysqld] in the my.cnf file as shown previously, you cannot execute any CREATE TABLE or ALTER TABLE statements without having actually started the cluster. Otherwise, these statements will fail with an error.</p>
<p><strong>STAGE4: Starting the MySQL Cluster</strong></p>
<p>Starting the cluster is not very difficult after it has been configured. Each cluster node process must be started separately, and on the host where it resides. The management node should be started first, followed by the data nodes, and then finally by any SQL nodes:</p>
<ol>
<li>On the management host(node03), issue the following command from the system shell to start the management node process:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; ndb_mgmd -f /var/lib/mysql-cluster/config.ini &#8211;configdir=/var/lib/mysql-clusetr</span></span></td>
</tr>
</tbody>
</table>
</li>
<li>On each of the Data/SQL node hosts, run these commands to start the ndbd and mysql server process:<br />
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6">shell&gt; /usr/local/mysql/bin/ndbd</p>
<p>shell&gt; /etc/init.d/mysql start</td>
</tr>
</tbody>
</table>
</li>
</ol>
<p>If all has gone well, and the cluster has been set up correctly, the cluster should now be operational. You can test this by invoking the ndb_mgm management node client. The output should look like that shown here:</p>
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">node03:~# ndb_mgm</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">&#8211; NDB Cluster &#8212; Management Client &#8211;</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">ndb_mgm&gt; SHOW</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">Connected to Management Server at: localhost:1186</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">Cluster Configuration</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[ndbd(NDB)]	2 node(s)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">id=2	@192.168.0.10 (mysql-5.1.44 ndb-7.1.5, Nodegroup: 0, Master)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">id=3	@192.168.0.20 (mysql-5.1.44 ndb-7.1.5, Nodegroup: 0)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[ndb_mgmd(MGM)]	1 node(s)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">id=1	@192.168.0.30 (mysql-5.1.44 ndb-7.1.5)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">[mysqld(API)]	2 node(s)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">id=4	@192.168.0.10 (mysql-5.1.44 ndb-7.1.5)</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">id=5	@192.168.0.20 (mysql-5.1.44 ndb-7.1.5)</span></span></td>
</tr>
</tbody>
</table>
<p><strong>STAGE5: Testing the Setup</strong></p>
<p>If you are OK to here it is time to test mysql. On either server node01 or node02 enter the following commands: Note that we have no root password yet:</p>
<table border="0" cellspacing="0" cellpadding="4" width="576">
<col width="566"></col>
<tbody>
<tr>
<td width="566" valign="TOP" bgcolor="#e6e6e6"><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">shell&gt; mysql</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">create database testdb;</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">use test;</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">CREATE TABLE cluster_test (i INT) ENGINE=NDBCLUSTER;</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">INSERT INTO cluster_test (i) VALUES (1);</span></span></p>
<p><span style="font-family:'Nimbus Mono L', monospace;"><span style="font-size:x-small;">SELECT * FROM cluster_test;</span></span></td>
</tr>
</tbody>
</table>
<p>You should see 1 row returned (with the value 1).</p>
<p>If this works, now go to the other server and run the same SELECT and see what you get. Insert from that host and go back to previous host and see if it works. If it works then <strong>congratulations!</strong></p>
<br /> Tagged: <a href='http://cyrenity.wordpress.com/tag/database/'>database</a>, <a href='http://cyrenity.wordpress.com/tag/mysql/'>mysql</a>, <a href='http://cyrenity.wordpress.com/tag/mysql-cluster/'>mysql cluster</a>, <a href='http://cyrenity.wordpress.com/tag/mysql-replication/'>mysql replication</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/161/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=161&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2010/08/12/howto-setup-mysql-cluster-beginners-tutorial/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2010/08/12/howto-setup-mysql-cluster-beginners-tutorial/</feedburner:origLink></item>
		<item>
		<title>Save 90% on international calls and sms with Vopium</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/hjtbsR-DhRo/</link>
		<comments>http://cyrenity.wordpress.com/2010/03/15/save-90-on-international-calls-and-sms-with-vopium/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 12:56:43 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[instant messaging]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[cheap calls]]></category>
		<category><![CDATA[cheap international calls]]></category>
		<category><![CDATA[gtalk]]></category>
		<category><![CDATA[internation sms]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[vopium]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=152</guid>
		<description><![CDATA[Vopium is a free piece of software, which you download to your mobile phone. It helps you to save money by redirecting your international calls through the cheapest possible routing.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=152&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If you are living abroad or frequently call your family and friends abroad you can save upto 90% on international calls and sms with Vopium, a Copenhagen &#8211; Denmark based company. <a href="http://cyrenity.files.wordpress.com/2010/03/vopiumlogo.png"><img class="alignright size-full wp-image-154" title="Vopium" src="http://cyrenity.files.wordpress.com/2010/03/vopiumlogo.png?w=595" alt="Vopium"   /></a>Vopium provides it&#8217;s users variety of simple ways to make international calls and sms via it&#8217;s web portal and mobile application, Vopium is a mobile phone application supported on variety of platforms (symbian, iphone, android, java).</p>
<p>Apart from international calls and sms plans, Vopium enables it&#8217;s users to talk and chat using Skype, Google Talk, Msn and Yahoo.</p>
<p>Currently Vopium is available in 18 countries including Australia, Belgium, Denmark, France, Finland, Germany, Netherlands, Italy, Norway, Spain, Switzerland, Sweden, UK &amp; USA.</p>
<p>To find out more and get started with Vopium, visit <a href="http://www.vopium.com" target="_blank">vopium.com </a></p>
<br /> Tagged: <a href='http://cyrenity.wordpress.com/tag/cheap-calls/'>cheap calls</a>, <a href='http://cyrenity.wordpress.com/tag/cheap-international-calls/'>cheap international calls</a>, <a href='http://cyrenity.wordpress.com/tag/gtalk/'>gtalk</a>, <a href='http://cyrenity.wordpress.com/tag/instant-messaging/'>instant messaging</a>, <a href='http://cyrenity.wordpress.com/tag/internation-sms/'>internation sms</a>, <a href='http://cyrenity.wordpress.com/tag/skype/'>skype</a>, <a href='http://cyrenity.wordpress.com/tag/voip/'>voip</a>, <a href='http://cyrenity.wordpress.com/tag/vopium/'>vopium</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=152&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2010/03/15/save-90-on-international-calls-and-sms-with-vopium/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>

		<media:content url="http://cyrenity.files.wordpress.com/2010/03/vopiumlogo.png" medium="image">
			<media:title type="html">Vopium</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2010/03/15/save-90-on-international-calls-and-sms-with-vopium/</feedburner:origLink></item>
		<item>
		<title>retrieve skype contact photos using python</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/k12Heh16o4o/</link>
		<comments>http://cyrenity.wordpress.com/2009/09/05/retrieve-skype-contact-photos-using-python/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 14:18:16 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dbb]]></category>
		<category><![CDATA[decode]]></category>
		<category><![CDATA[display pictures]]></category>
		<category><![CDATA[karaka]]></category>
		<category><![CDATA[skype]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=145</guid>
		<description><![CDATA[tonight i was looking for a way to retrieve display pictures of my skype contacts from .dbb files and ended up with this small piece of code. i don&#8217;t find it much useful though but someone might be interesting so here it is. p.s. you are encouraged to send me update if you found a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=145&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>tonight i was looking for a way to retrieve display pictures of my skype contacts from .dbb files and ended up with this small piece of code. i don&#8217;t find it much useful though but someone might be interesting so here it is.</p>
<pre class="brush: python; title: ; notranslate">
#!/usr/bin/env python
#
# Author Ghulam Mustafa &lt;mustafa.pk@gmail.com&gt;
#
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License version
## 2 as published by the Free Software Foundation.

## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
## General Public License version 2 for more details.

## You should have received a copy of the GNU General Public License
## version 2 along with this program; if not, write to the Free
## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
## MA 02110-1301, USA.

profile = '/home/mustafa/.Skype/cyrenity/'

skypefiles = [&quot;user256&quot;, &quot;user1024&quot;, &quot;user4096&quot;, &quot;user16384&quot;, &quot;user32768&quot;, &quot;user65536&quot;,
              &quot;profile256&quot;, &quot;profile1024&quot;, &quot;profile4096&quot;, &quot;profile16384&quot;, &quot;profile32768&quot;]

##retrieve contents of skype binary files and store them in a single variable
skbin = []
n = 0
for f in skypefiles:
 fil = &quot;%s%s.dbb&quot; % (profile, f)
 try: skbin.append(file(fil, &quot;rb&quot;).read())
 except: pass
 n = n + 1

binary = &quot;&quot;.join(skbin)
##

## get_icon(username, binary)
## returns
##    True if successfull
##     None if failed
##    -1 if user not found
def get_icon(buddy, binary):
 startmark = &quot;\xff\xd8&quot;
 endmark = &quot;\xff\xd9&quot;

 startfix = 0
 endfix = 2

 nick_start = &quot;\x03\x10%s&quot; % buddy
 nick_end = &quot;0&quot;

 nickstart = binary.find(nick_start)
 if nickstart == -1: return -1
 nickend = binary.find(nick_end, nickstart)
 handle = binary[nickstart+2:nickend]
 blockstart = binary.rfind(&quot;l33l&quot;, 0, nickend)
 imgstart = binary.find(startmark, blockstart, nickend)
 imgend = binary.find(endmark, imgstart)

 imgstart += startfix
 imgend += endfix
 if (imgstart &lt; 1): return None
 ##print &quot;JPG %s from %d to %d&quot; % (handle, imgstart, imgend)
 jpg = binary[imgstart:imgend]
 jpgfile = file(&quot;%s.jpg&quot; % (handle), &quot;wb&quot;)
 jpgfile.write(jpg)
 jpgfile.close()
 return True

users = ['cyrenity', 'gmustafa9']
for user in users:
 status = get_icon(user, binary)
 if status and status != -1:
  print &quot;success [%s]&quot; % user
 else:
  print &quot;failed[%s] [%s]&quot; % (status, user)

</pre>
<p>p.s. you are encouraged to send me update if you found a bug or fix something. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /> Tagged: dbb, decode, display pictures, karaka, skype <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=145&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2009/09/05/retrieve-skype-contact-photos-using-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2009/09/05/retrieve-skype-contact-photos-using-python/</feedburner:origLink></item>
		<item>
		<title>howto install Karaka: xmpp gateway to skype!</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/ksQgmEMTtNk/</link>
		<comments>http://cyrenity.wordpress.com/2009/07/16/howto-install-karaka-xmpp-gateway-to-skype/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 09:56:26 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google talk]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[karaka]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vipadia]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=142</guid>
		<description><![CDATA[You came here searching for howto install karaka. Vipdia Limited doesn&#8217;t tell much on how to setup karaka step by step, yesterday someone asked this question on karaka-discuss mailing list, this post is helpful for you if you are thinking about giving karaka a try. more here: http://groups.google.com/group/karaka-discuss/browse_thread/thread/d6eb8fcd61bd3e05 Tagged: google talk, howto, jabber, karaka, skype, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=142&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>You came here searching for howto install karaka. Vipdia Limited doesn&#8217;t tell much on how to setup karaka step by step, yesterday someone asked this question on karaka-discuss mailing list, this post is helpful for you if you are thinking about giving karaka a try.</p>
<p>more here: <a href="http://groups.google.com/group/karaka-discuss/browse_thread/thread/d6eb8fcd61bd3e05">http://groups.google.com/group/karaka-discuss/browse_thread/thread/d6eb8fcd61bd3e05</a></p>
<br /> Tagged: google talk, howto, jabber, karaka, skype, tutorial, vipadia, xmpp <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/142/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/142/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=142&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2009/07/16/howto-install-karaka-xmpp-gateway-to-skype/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2009/07/16/howto-install-karaka-xmpp-gateway-to-skype/</feedburner:origLink></item>
		<item>
		<title>update and retrieve twitter timeline from linux shell</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/Nq9ECIp7b78/</link>
		<comments>http://cyrenity.wordpress.com/2009/01/24/update-and-retrieve-twitterfeed-from-linux-shell/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 18:01:07 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[instant messaging]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[bourne shell]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[micro bloggin]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/2009/01/24/update-and-retrieve-twitterfeed-from-linux-shell/</guid>
		<description><![CDATA[you can update your twitter status and follow feeds using linux shell, this is a quick tip for linux lover&#8217;s, this is the reason i prefer linux over other operating systems is it&#8217;s total usefullnes, to post your status on twitter type: curl -s -u username:password -d status="your_status_message goes here" http://twitter.com/statuses/update.xml &#62; /dev/null replace username, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=137&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>you can update your twitter status and follow feeds using linux shell, this is a quick tip for linux lover&#8217;s, this is the reason i prefer linux over other operating systems is it&#8217;s total usefullnes,</p>
<p>to post your status on twitter type:</p>
<p><code>curl -s -u username:password -d status="your_status_message goes here" <a href="http://twitter.com/statuses/update.xml" rel="nofollow">http://twitter.com/statuses/update.xml</a> &gt; /dev/null</code></p>
<p>replace username, password and message to post with the your own.</p>
<p>to follow feeds from twitter.</p>
<p><code>curl -s -u username:password <a href="http://twitter.com/statuses/friends_timeline.rss" rel="nofollow">http://twitter.com/statuses/friends_timeline.rss</a> | grep title  | sed -e 's/]*&gt;//g'</code></p>
<p>replace username and password with your own. above command will retrieve recent rss entries from your twitter timeline.</p>
<p>one more cool thing you can do with this long command is to enclose it put it in a text file, let&#8217;s say &#8220;/usr/local/bin/get-twits&#8221; and make it exectuable by issuing</p>
<p><code>chmod a+x /usr/local/bin/get-twits</code></p>
<p>now open a new terminal windows and type:  <code>watch --interval=60 get-twits</code></p>
<p>this command will keep your terminal windows updated with recent twitter updates.</p>
<p>enjoy <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<br /> Tagged: bourne shell, curl, linux, micro bloggin, twitter <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=137&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2009/01/24/update-and-retrieve-twitterfeed-from-linux-shell/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2009/01/24/update-and-retrieve-twitterfeed-from-linux-shell/</feedburner:origLink></item>
		<item>
		<title>cloning harddrives over network</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/w1iCAPA7bT8/</link>
		<comments>http://cyrenity.wordpress.com/2008/12/30/cloning-harddrives-over-network/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 11:23:22 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[nc]]></category>
		<category><![CDATA[netcat]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=127</guid>
		<description><![CDATA[To clone identical drives in a linux system you can use dd command, dd command makes it really easy. dd if=/dev/hda of=/dev/hdb above command will clone hda to hdb (partitions, boot record etc), but what if you have to clone a drive that is not attached to same system? I found a really interesting way [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=127&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>To clone identical drives in a linux system you can use dd command, dd command makes it really easy.</p>
<pre>dd if=/dev/hda of=/dev/hdb</pre>
<p>above command will clone hda to hdb (partitions, boot record etc), but what if you have to clone a drive that is not attached to same system?</p>
<p>I found a really interesting way to transfer files over the network simple by using netcat and dd.</p>
<ul>
<li>Boot the machine (where second drive is attached) with a live cd distro like Ubuntu or Knoppix. Setup networking or let the DHCP server assign an ip automatically. My DHCP assigned this machine ip 192.168.0.21</li>
<li>run following command on this machine<br />
<code>nc -l -p 7777 | dd of=/dev/hdb<br />
</code>(where /dev/hdb is the target drive)</li>
<li>Now come to the machine where you have attached the drive to be cloned and issue following command.<br />
<code>dd if=/dev/hda | nc 192.168.0.21 7777<br />
</code>(/dev/hda is the drive to be cloned)</li>
</ul>
<p>It will take time (usually several hours) depending on size of the drive. If you are worried about bandwidth you can pipe through gzip to compress and uncompress the streamed data on source and destination machine respectively, to do this you would run following commands.</p>
<p>On target machine:</p>
<p><code>nc -l -p 7777 | gzip –dfc </code><code>| dd of=/dev/hdb</code></p>
<p>And on source machine.</p>
<p><code>dd if=/dev/hda | </code><code>gzip –cf </code><code>| nc 192.168.0.21 7777</code></p>
<p>have fun with dd and nc <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /> Tagged: dd, linux, nc, netcat <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=127&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2008/12/30/cloning-harddrives-over-network/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2008/12/30/cloning-harddrives-over-network/</feedburner:origLink></item>
		<item>
		<title>asterisk 1.2 with realtime ldap driver</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/9uK2E5SzJiw/</link>
		<comments>http://cyrenity.wordpress.com/2008/12/28/asterisk-12-with-realtime-ldap-driver/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 13:46:57 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[asterisk]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[voip]]></category>
		<category><![CDATA[directory services]]></category>
		<category><![CDATA[identity management]]></category>
		<category><![CDATA[openldap]]></category>
		<category><![CDATA[realtime]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=105</guid>
		<description><![CDATA[I have created an auto install script based on http://www.cahilig.org/install-asterisk-12-auto-install-script-centos-4-and-centos-5 to install Asterisk 1.2 with ldap realtime driver support (modified original script to enable realtime ldap support). This script should work almost with any(Redhat, Centos, Mandrake, Debian, Slackware) Linux distro Before running this script you must install following packages. For Centos, Redhat: yum install openldap-devel [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=105&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have created an auto install script based on <a href="http://www.cahilig.org/install-asterisk-12-auto-install-script-centos-4-and-centos-5" target="_blank">http://www.cahilig.org/install-asterisk-12-auto-install-script-centos-4-and-centos-5</a> to install Asterisk 1.2 with ldap realtime driver support (modified original script to enable realtime ldap support).</p>
<p>This script should work almost with any(Redhat, Centos, Mandrake, Debian, Slackware) Linux distro</p>
<p>Before running this script you must install following packages.</p>
<p><strong>For Centos, Redhat:</strong></p>
<pre>yum install openldap-devel gcc kernel-devel bison openssl-devel libtermcap-devel ncurses-devel</pre>
<p><strong>For Debian, Ubuntu:</strong></p>
<pre>apt-get install libldap2-dev build-essential linux-headers-`uname -r` libncurses5-dev libssl-dev</pre>
<p>You can download the script from <a href="http://mustafa.pk.googlepages.com/install.sh" target="_blank">here</a>, simply run the script to start installation process.</p>
<p>download Asterisk schema for OpenLdap <a href="http://mustafa.pk.googlepages.com/asterisk.schema">here</a></p>
<p>Installer and installation process is not tested, if you find any problem please let me know.</p>
<pre class="brush: php; title: ; notranslate">
#!/bin/sh
#Asterisk Download page
ZAPTEL=&quot;http://downloads.digium.com/pub/zaptel/releases/zaptel-1.2.9.tar.gz&quot;
ASTERISK=&quot;http://downloads.digium.com/pub/asterisk/releases/asterisk-1.2.30.tar.gz&quot;
ASTERISKADDONS=&quot;http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.2.9.tar.gz&quot;
RTLDAP=&quot;http://free.oxymium.net/Asterisk/res_config_ldap.tgz&quot;
RTLDAPPATCH=&quot;http://mustafa.pk.googlepages.com/res_config_ldap.c.patch&quot;
CONFIGPATCH=&quot;http://mustafa.pk.googlepages.com/config.c.patch&quot;
MAKEFILEPATCH=&quot;http://mustafa.pk.googlepages.com/resmkfile.patch&quot;
#Asterisk Package
ZAPPACKAGE=&quot;zaptel-1.2.9.tar.gz&quot;
ASTPACKAGE=&quot;asterisk-1.2.30.tar.gz&quot;
ASTADDONSPACKAGE=&quot;asterisk-addons-1.2.9.tar.gz&quot;
#Asterisk Folder
ZAPFOLDER=&quot;zaptel-1.2.9&quot;
ASTFOLDER=&quot;asterisk-1.2.30&quot;
ASTADDONSFOLDER=&quot;asterisk-addons-1.2.9&quot;
REALTIMEDIRVER=&quot;res_config_ldap.tgz&quot;
if [ -f /etc/redhat-release ] ; then
DISTRO=&quot;redhat&quot;
elif [ -f /etc/debian_version ] ; then
DISTRO=&quot;debian&quot;
elif [ -f /etc/SUSE-release ] ; then
DISTRO=&quot;redhat&quot;
elif [ -f /etc/mandrake-release ] ; then
DISTRO=&quot;mandrake&quot;
elif [ -f /etc/slackware-release ] ; then
DISTRO=&quot;slackware&quot;
elif [ -f /etc/gentoo-release ] ; then
DISTRO=&quot;gentoo&quot;
fi

echo &quot;Downloading and extracting zaptel and asterisk source&quot;
cd /usr/local/src/
if [ ! -e $ZAPPACKAGE ]; then
  wget $ZAPTEL
fi
if [ ! -e $ASTPACKAGE ]; then
  wget $ASTERISK
fi
if [ ! -e $ASTADDONSPACKAGE ]; then
  wget $ASTERISKADDONS
fi
tar -zvxf $ZAPPACKAGE
tar -zvxf $ASTPACKAGE
tar -zvxf $ASTADDONSPACKAGE 

echo &quot;Installing zaptel&quot;
cd $ZAPFOLDER
make clean
make
make install
cd ..

echo &quot;Installing asterisk&quot;
cd $ASTFOLDER
echo &quot;Downloading patches&quot;
wget $CONFIGPATCH
wget $MAKEFILEPATCH
patch -p0&lt;resmkfile.patch
patch -p0&lt;config.c.patch
echo &quot;Downloading Realtime Ldap driver&quot;
cd res
wget $RTLDAP
tar -zxvf $REALTIMEDIRVER
wget $RTLDAPPATCH
patch -p0&lt;res_config_ldap.c.patch
cd ../configs
wget http://mustafa.pk.googlepages.com/extconfig.conf.sample
wget http://mustafa.pk.googlepages.com/res_ldap.conf.sample
cd ..
make clean
make
make install
make samples
cp contrib/init.d/rc.$DISTRO.asterisk /etc/init.d/asterisk
cd ..

echo &quot;Installing asterisk-addons&quot;
cd $ASTADDONSFOLDER
make clean
make
make install

echo &quot;Loading ztdummy driver&quot;
modprobe zaptel
modprobe ztdummy

echo &quot;adding rules to /etc/rc.local&quot;

echo &quot;modprobe zaptel
modprobe ztdummy
&quot; &gt;&gt; /etc/rc.local

echo &quot;Downloading open source g729 codec&quot;
cd /usr/lib/asterisk/modules/
wget http://asterisk.hosting.lv/bin12/codec_g729-ast12-gcc4-glibc-pentium4.so

echo &quot;Running Asterisk&quot;
/etc/init.d/asterisk start

echo &quot;***********************************************************************&quot;
echo &quot;*             INSTALLATION SUCCESSFUL                                 *&quot;
echo &quot;***********************************************************************&quot;
echo &quot;* You can test if Asterisk installed successfully using               *&quot;
echo &quot;* asterisk -ncrvvv and start configuring your dial plan               *&quot;
echo &quot;***********************************************************************&quot;
exit

</pre>
<br /> Tagged: asterisk, directory services, identity management, openldap, realtime <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=105&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2008/12/28/asterisk-12-with-realtime-ldap-driver/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2008/12/28/asterisk-12-with-realtime-ldap-driver/</feedburner:origLink></item>
		<item>
		<title>“kill -9″ song by monzy</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/N3Xg76-S1kw/</link>
		<comments>http://cyrenity.wordpress.com/2008/12/27/kill-9-song-by-monzy/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 12:04:47 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=98</guid>
		<description><![CDATA[really funny rap song about &#8220;kill -9&#8243; command by Monzy at stanford university. check it out: audio, video, lyrics Tagged: humor, linux, videos<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=98&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>really funny rap song about &#8220;kill -9&#8243; command by Monzy at stanford university.</p>
<p>check it out: <a href="http://graphics.stanford.edu/~monzy/KillDashNine.mp3" target="_blank">audio</a>, <a href="http://www.youtube.com/watch?v=Fow7iUaKrq4" target="_blank">video</a>, <a href="http://www.monzy.com/intro/killdashnine_lyrics.html" target="_blank">lyrics</a></p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='595' height='365' src='http://www.youtube.com/embed/Fow7iUaKrq4?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<br /> Tagged: humor, linux, videos <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=98&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2008/12/27/kill-9-song-by-monzy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://graphics.stanford.edu/~monzy/KillDashNine.mp3" length="3702912" type="audio/mpeg" />
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2008/12/27/kill-9-song-by-monzy/</feedburner:origLink></item>
		<item>
		<title>open source social networking with elgg</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/M4bRSeZJlg4/</link>
		<comments>http://cyrenity.wordpress.com/2008/12/27/open-source-social-networking-with-elgg/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 07:22:55 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[orkut]]></category>
		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=94</guid>
		<description><![CDATA[if you are planning to create your own social networking website, instead of working from scratch, check out Elgg. Elgg is an open source social networking platform. from their website: &#8220;Elgg is an open, flexible social networking engine, designed to run at the heart of any socially-aware application. Building on Elgg is easy, and because [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=94&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>if you are planning to create your own social networking website, instead of working from scratch, check out <a href="http://elgg.org/index.php" target="_blank">Elgg</a>. Elgg is an open source social networking platform.</p>
<p>from their website:</p>
<blockquote><p>&#8220;Elgg is an open, flexible social networking engine, designed to run at the heart of any socially-aware application. Building on Elgg is easy, and because the engine handles common web application and social functionality for you, you can concentrate on developing your idea.&#8221;</p></blockquote>
<p>Elgg can be extended through plugins, plugins provide ways of adding functionality to Elgg like facebook applications.</p>
<br /> Tagged: community, facebook, open source, orkut, social networking <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=94&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2008/12/27/open-source-social-networking-with-elgg/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2008/12/27/open-source-social-networking-with-elgg/</feedburner:origLink></item>
		<item>
		<title>evolution of a programmer</title>
		<link>http://feedproxy.google.com/~r/EverythingAboutMachines/~3/PittqvWY7qA/</link>
		<comments>http://cyrenity.wordpress.com/2008/12/15/evolution-of-a-programmer/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 12:23:06 +0000</pubDate>
		<dc:creator>cyrenity</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://cyrenity.wordpress.com/?p=84</guid>
		<description><![CDATA[High School/Junior High 10 PRINT "HELLO WORLD" 20 END First year in College program Hello(input, output) begin writeln('Hello World') end. Senior year in College (defun hello (print (cons 'Hello (list 'World)))) New professional #include void main(void) { char *message[] = {"Hello ", "World"}; int i; for(i = 0; i &#60; 2; ++i) printf("%s", message[i]); printf("\n"); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=84&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } 		H2 { margin-bottom: 0.08in } --></p>
<h2>High School/Junior High</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;"><span style="background:transparent none repeat scroll 0 0;">  10 PRINT "HELLO WORLD"</span>
<span style="background:transparent none repeat scroll 0 0;">  20 END</span></pre>
<h2>First year in College</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  program Hello(input, output)
    begin
      writeln('Hello World')
    end.</pre>
<h2>Senior year in College</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  (defun hello
    (print
      (cons 'Hello (list 'World))))</pre>
<h2>New professional</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  #include
  void main(void)
  {
    char *message[] = {"Hello ", "World"};
    int i;

    for(i = 0; i &lt; 2; ++i)
      printf("%s", message[i]);
    printf("\n");
  }</pre>
<h2>Seasoned professional</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  #include
  #include 

  class string
  {
  private:
    int size;
    char *ptr;

  public:
    string() : size(0), ptr(new char('')) {}

    string(const string &amp;s) : size(s.size)
    {
      ptr = new char[size + 1];
      strcpy(ptr, s.ptr);
    }

    ~string()
    {
      delete [] ptr;
    }

    friend ostream &amp;operator &lt;&lt;(ostream &amp;, const string &amp;);
    string &amp;operator=(const char *);
  };

  ostream &amp;operator&lt;&lt;(ostream &amp;stream, const string &amp;s)
  {
    return(stream &lt;&lt; s.ptr);
  }

  string &amp;string::operator=(const char *chrs)
  {
    if (this != &amp;chrs)
    {
      delete [] ptr;
     size = strlen(chrs);
      ptr = new char[size + 1];
      strcpy(ptr, chrs);
    }
    return(*this);
  }

  int main()
  {
    string str;

    str = "Hello World";
    cout &lt;&lt; str &lt;&lt; endl;

    return(0);
  }</pre>
<h2>Master Programmer</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  [
  uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
  ]
  library LHello
  {
      // bring in the master library
      importlib("actimp.tlb");
      importlib("actexp.tlb");

      // bring in my interfaces
      #include "pshlo.idl"

      [
      uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
      ]
      cotype THello
   {
   interface IHello;
   interface IPersistFile;
   };
  };

  [
  exe,
  uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
  ]
  module CHelloLib
  {

      // some code related header files
      importheader();
      importheader();
      importheader();
      importheader("pshlo.h");
      importheader("shlo.hxx");
      importheader("mycls.hxx");

      // needed typelibs
      importlib("actimp.tlb");
      importlib("actexp.tlb");
      importlib("thlo.tlb");

      [
      uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
      aggregatable
      ]
      coclass CHello
   {
   cotype THello;
   };
  };

  #include "ipfix.hxx"

  extern HANDLE hEvent;

  class CHello : public CHelloBase
  {
  public:
      IPFIX(CLSID_CHello);

      CHello(IUnknown *pUnk);
      ~CHello();

      HRESULT  __stdcall PrintSz(LPWSTR pwszString);

  private:
      static int cObjRef;
  };

  #include
  #include
  #include
  #include
  #include "thlo.h"
  #include "pshlo.h"
  #include "shlo.hxx"
  #include "mycls.hxx"

  int CHello::cObjRef = 0;

  CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
  {
      cObjRef++;
      return;
  }

  HRESULT  __stdcall  CHello::PrintSz(LPWSTR pwszString)
  {
      printf("%ws\n", pwszString);
      return(ResultFromScode(S_OK));
  }

  CHello::~CHello(void)
  {

  // when the object count goes to zero, stop the server
  cObjRef--;
  if( cObjRef == 0 )
      PulseEvent(hEvent);

  return;
  }

  #include
  #include
  #include "pshlo.h"
  #include "shlo.hxx"
  #include "mycls.hxx"

  HANDLE hEvent;

   int _cdecl main(
  int argc,
  char * argv[]
  ) {
  ULONG ulRef;
  DWORD dwRegistration;
  CHelloCF *pCF = new CHelloCF();

  hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

  // Initialize the OLE libraries
  CoInitializeEx(NULL, COINIT_MULTITHREADED);

  CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
      REGCLS_MULTIPLEUSE, &amp;dwRegistration);

  // wait on an event to stop
  WaitForSingleObject(hEvent, INFINITE);

  // revoke and release the class object
  CoRevokeClassObject(dwRegistration);
  ulRef = pCF-&gt;Release();

  // Tell OLE we are going away.
  CoUninitialize();

  return(0); }

  extern CLSID CLSID_CHello;
  extern UUID LIBID_CHelloLib;

  CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
      0x2573F891,
      0xCFEE,
      0x101A,
      { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
  };

  UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
      0x2573F890,
      0xCFEE,
      0x101A,
      { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
  };

  #include
  #include
  #include
  #include
  #include
  #include "pshlo.h"
  #include "shlo.hxx"
  #include "clsid.h"

  int _cdecl main(
  int argc,
  char * argv[]
  ) {
  HRESULT  hRslt;
  IHello        *pHello;
  ULONG  ulCnt;
  IMoniker * pmk;
  WCHAR  wcsT[_MAX_PATH];
  WCHAR  wcsPath[2 * _MAX_PATH];

  // get object path
  wcsPath[0] = '';
  wcsT[0] = '';
  if( argc &gt; 1) {
      mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
      wcsupr(wcsPath);
      }
  else {
      fprintf(stderr, "Object path must be specified\n");
      return(1);
      }

  // get print string
  if(argc &gt; 2)
      mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
  else
      wcscpy(wcsT, L"Hello World");

  printf("Linking to object %ws\n", wcsPath);
  printf("Text String %ws\n", wcsT);

  // Initialize the OLE libraries
  hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

  if(SUCCEEDED(hRslt)) {

      hRslt = CreateFileMoniker(wcsPath, &amp;pmk);
      if(SUCCEEDED(hRslt))
   hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&amp;pHello);

      if(SUCCEEDED(hRslt)) {

   // print a string out
   pHello-&gt;PrintSz(wcsT);

   Sleep(2000);
   ulCnt = pHello-&gt;Release();
   }
      else
   printf("Failure to connect, status: %lx", hRslt);

      // Tell OLE we are going away.
      CoUninitialize();
      }

  return(0);
  }</pre>
<h2>Apprentice Hacker</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  #!/usr/local/bin/perl
  $msg="Hello, world.\n";
  if ($#ARGV &gt;= 0) {
    while(defined($arg=shift(@ARGV))) {
      $outfilename = $arg;
      open(FILE, "&gt;" . $outfilename) || die "Can't write $arg: $!\n";
      print (FILE $msg);
      close(FILE) || die "Can't close $arg: $!\n";
    }
  } else {
    print ($msg);
  }
  1;</pre>
<h2>Experienced Hacker</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  #include
  #define S "Hello, World\n"
  main(){exit(printf(S) == strlen(S) ? 0 : 1);}</pre>
<h2>Seasoned Hacker</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  % cc -o a.out ~/src/misc/hw/hw.c
  % a.out</pre>
<h2>Guru Hacker</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  % cat
  Hello, world.
  ^D</pre>
<h2>New Manager</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  10 PRINT "HELLO WORLD"
  20 END</pre>
<h2>Middle Manager</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  mail -s "Hello, world." bob@b12
  Bob, could you please write me a program that prints "Hello,
 world."?
  I need it by tomorrow.
  ^D</pre>
<h2>Senior Manager</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  % zmail jim
  I need a "Hello, world." program by this afternoon.</pre>
<h2>Chief Executive</h2>
<pre style="background:#e6e6e6 none repeat scroll 0 0;">  % letter
  letter: Command not found.
  % mail
  To: ^X ^F ^C
  % help mail
  help: Command not found.
  % damn!
  !: Event unrecognized
  % logout</pre>
<br /> Tagged: funny, programming <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cyrenity.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cyrenity.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cyrenity.wordpress.com&#038;blog=5630207&#038;post=84&#038;subd=cyrenity&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cyrenity.wordpress.com/2008/12/15/evolution-of-a-programmer/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/04271c687a54c0c1d6e7ecbc40a50227?s=96&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">cyrenity</media:title>
		</media:content>
	<feedburner:origLink>http://cyrenity.wordpress.com/2008/12/15/evolution-of-a-programmer/</feedburner:origLink></item>
	</channel>
</rss>
