<?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>blog.arithm &#187; Technology</title>
	<atom:link href="http://blog.arithm.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.arithm.com</link>
	<description>Software.  Politics.  Tinfoil hat conjecture.</description>
	<lastBuildDate>Fri, 13 Jan 2012 19:00:39 +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>&#8220;Protect IP&#8221; is unregulated corporate censorship ready for abuse&#8230;</title>
		<link>http://blog.arithm.com/2011/11/19/protect-ip-is-unregulated-corporate-censorship-ready-for-abuse/</link>
		<comments>http://blog.arithm.com/2011/11/19/protect-ip-is-unregulated-corporate-censorship-ready-for-abuse/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 18:54:49 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[censorship]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1841</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><iframe width="420" height="315" src="http://www.youtube.com/embed/uaoDIqoyX9Q" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/19/protect-ip-is-unregulated-corporate-censorship-ready-for-abuse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Author&#8221; and &#8220;Committer&#8221; fields in git metadata&#8230;</title>
		<link>http://blog.arithm.com/2011/11/18/author-and-committer-fields-in-git-metadata/</link>
		<comments>http://blog.arithm.com/2011/11/18/author-and-committer-fields-in-git-metadata/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:02:51 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1836</guid>
		<description><![CDATA[Discovered a nice little git trick today.  I haven&#8217;t seen this documented, so I&#8217;m not sure if it&#8217;s a feature per se, but if you set your user.name via git config like so: [user] &#160;&#160;&#160;&#160;name = accountname &#160;&#160;&#160;&#160;email = email@company.com and then commit with the --author="Full Name" flag set to another name, this will set [...]]]></description>
			<content:encoded><![CDATA[<p>Discovered a nice little git trick today.  I haven&#8217;t seen this documented, so I&#8217;m not sure if it&#8217;s a feature per se, but if you set your user.name via git config like so:</p>
<blockquote><p><code>[user]<br />
&nbsp;&nbsp;&nbsp;&nbsp;name = accountname<br />
&nbsp;&nbsp;&nbsp;&nbsp;email = email@company.com</code></p></blockquote>
<p>and then commit with the <code>--author="Full Name"</code> flag set to another name, this will set git&#8217;s commit metadata such that &#8220;Author:&#8221; is &#8220;Full Name&#8221; and &#8220;Committer:&#8221; is &#8220;accountname&#8221;.</p>
<p>Useful when you want to see the Author in your git logs and the Committer in tools like Hudson or Jenkins.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/18/author-and-committer-fields-in-git-metadata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Table Copying</title>
		<link>http://blog.arithm.com/2011/11/17/mysql-table-copying/</link>
		<comments>http://blog.arithm.com/2011/11/17/mysql-table-copying/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 22:30:21 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1829</guid>
		<description><![CDATA[It&#8217;s too bad the MySQL documentation reads like a drunken rant channeled in English through Leo Tolstoy reincarnated as a database geek, otherwise I might be more familiar with nice features such as CREATE TABLE IF NOT EXISTS database_b.my_table SELECT * FROM database_a.my_table which quickly copies my_table form database_a to database_b however given that it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s too bad the MySQL documentation reads like a drunken rant channeled in English through Leo Tolstoy reincarnated as a database geek, otherwise I might be more familiar with nice features such as</p>
<blockquote><p><code>CREATE TABLE IF NOT EXISTS database_b.my_table SELECT * FROM database_a.my_table</code></p></blockquote>
<p>which quickly copies <code>my_table</code> form <code>database_a</code> to<code> database_b</code> however given that it&#8217;s virtually impossible to read the MySQL documentation and because I cringe in horror whenever a MySQL doc page comes up in a Google search, especially since any search for anything MySQL related always results in a deluge of of links pointing into the inscrutable mess that passes for the MySQL reference site, I suppose I will forever be pining for a switch to PostgreSQL or, at the very least, not be be surprised when Oracle starts to charge exorbitant sums for consultants who are able to translate the MySQL documentation from neo-Leo Tolstoy techno-babble into succinct technical English.</p>
<p><strong>Less Snarky Update</strong></p>
<p>The above seems to behave differently on Windows than it does on Linux.  On Windows it will not copy data if the table already exists, the preferred behavior in my opininon.  On Linux it will copy (and potentially duplicate) data.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/17/mysql-table-copying/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zend_mm_heap corrupted</title>
		<link>http://blog.arithm.com/2011/11/11/zend_mm_heap-corrupted/</link>
		<comments>http://blog.arithm.com/2011/11/11/zend_mm_heap-corrupted/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 16:02:21 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1823</guid>
		<description><![CDATA[Has Apache suddenly started telling you that the &#8220;zend_mm_heap&#8221; is corrupted? Rather than mucking around with output_buffering or other php.ini values as recommend in a couple of places, first check that, if you have a custom session manager (typically memcached), it is started and you are able to connect. For example, if your session handling [...]]]></description>
			<content:encoded><![CDATA[<p>Has Apache suddenly started telling you that the &#8220;zend_mm_heap&#8221; is corrupted?  Rather than mucking around with output_buffering or other php.ini values as recommend in a <a href="http://stackoverflow.com/questions/2247977/what-does-zend-mm-heap-corrupted-mean">couple</a> of <a href="http://zend-framework-community.634137.n4.nabble.com/zend-mm-heap-corrupted-td3308652.html">places</a>, first check that, if you have a custom session manager (typically memcached), it is started and you are able to connect.</p>
<p>For example, if your session handling is setup as follows:</p>
<blockquote><p><code>[Session]<br />
; Handler used to store/retrieve data.<br />
; http://php.net/session.save-handler<br />
;session.save_handler = files<br />
session.save_handler = memcache<br />
;session.save_path = "/tmp"<br />
<span style="color: #ff0000;">session.save_path = "tcp://localhost:11211?persistent=1&amp;weight=1&amp;timeout=1&amp;retry_interval=15"</span></code></p></blockquote>
<p>check to make sure that you can actually connect to localhost on port 11211:</p>
<p><code>$ telnet localhost 11211<br />
Trying 127.0.0.1...<br />
Connected to localhost.localdomain.<br />
Escape character is '^]'.<br />
stats<br />
STAT pid 24041<br />
STAT uptime 257289<br />
STAT time 1321027200<br />
STAT version 1.4.2<br />
...<br />
END</code></p>
<p>If you can&#8217;t connect, or the memcached server is not responding as above, then you&#8217;ve found the source of the &#8220;heap corruption&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/11/zend_mm_heap-corrupted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doctrine Migrations and Jenkins</title>
		<link>http://blog.arithm.com/2011/11/09/doctrine-migrations-and-jenkins/</link>
		<comments>http://blog.arithm.com/2011/11/09/doctrine-migrations-and-jenkins/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 21:39:54 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[doctrine2]]></category>
		<category><![CDATA[symfony2]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1810</guid>
		<description><![CDATA[If you&#8217;re trying to automate Symfony2/Doctrine2 migrations with Jenkins, you may run afoul of the interactive confirmation that the doctrine-migrations package throws out: $ app/console doctrine:migrations:migrate Application Migrations WARNING! You are about to execute a database migration that could result in schema changes and data lost. Are you sure you wish to continue? (y/n) This [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re trying to automate Symfony2/Doctrine2 migrations with Jenkins, you may run afoul of the interactive confirmation that the doctrine-migrations package throws out:</p>
<blockquote><p><code>$ app/console doctrine:migrations:migrate</p>
<p>Application Migrations</p>
<p>WARNING! You are about to execute a database migration that could result in schema changes and data lost. Are you sure you wish to continue? (y/n)</code></p></blockquote>
<p>This will break the Jenkins build. While there is probably a way to get Jenkins to reply to this with a &#8220;y&#8221;, it&#8217;s easier just to use the under documented <code>--no-interaction</code> switch. In a build.xml for example:</p>
<blockquote><p><code>&lt;target name="schema" description="Update database"&gt;<br />
&lt;exec executable="app/console" failonerror="true"&gt;<br />
&lt;arg line="doctrine:migrations:migrate <span style="color: #ff0000;">--no-interaction</span>" /&gt;<br />
&lt;/exec&gt;<br />
&lt;/target&gt;<br />
</code></p></blockquote>
<p>Now if the migrations work, so does the build.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/09/doctrine-migrations-and-jenkins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delete email with a specific email address from the Postfix queue&#8230;</title>
		<link>http://blog.arithm.com/2011/11/01/delete-email-with-a-specific-email-address-from-the-postfix-queue/</link>
		<comments>http://blog.arithm.com/2011/11/01/delete-email-with-a-specific-email-address-from-the-postfix-queue/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 00:45:35 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1807</guid>
		<description><![CDATA[HowtoForge still comes in handy. This is one of those times: mailq &#124; awk 'BEGIN { RS = "" } / falko@example\.com$/ { print $1 }' &#124; tr -d '*!' &#124; postsuper -d - File under &#8220;what to do when postfix goes berserk&#8221;.]]></description>
			<content:encoded><![CDATA[<p>HowtoForge still comes in handy.  <a href="http://www.howtoforge.com/delete-mails-to-or-from-a-specific-email-address-from-postfix-mail-queue">This</a> is one of those times:</p>
<p><code>mailq | awk 'BEGIN { RS = "" } / falko@example\.com$/ { print $1 }' | tr -d '*!' | postsuper -d -</code></p>
<p>File under &#8220;what to do when postfix goes berserk&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/11/01/delete-email-with-a-specific-email-address-from-the-postfix-queue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Apache Umask</title>
		<link>http://blog.arithm.com/2011/10/19/ubuntu-apache-umask/</link>
		<comments>http://blog.arithm.com/2011/10/19/ubuntu-apache-umask/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 18:11:48 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[umask]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1794</guid>
		<description><![CDATA[Back to obscure technical topics for a moment. Figuring out how to set umask for Apache on Ununtu was faaar more difficult than it needs to be. Even though it&#8217;s not an environmental variable, the &#8220;Ubuntu Way&#8221; seems to be to add this to the end of /etc/apache2/envvars like so: ... ## Some packages providing [...]]]></description>
			<content:encoded><![CDATA[<p>Back to obscure technical topics for a moment.</p>
<p>Figuring out how to set umask for Apache on Ununtu was faaar more difficult than it needs to be. Even though it&#8217;s not an environmental variable, the &#8220;Ubuntu Way&#8221; seems to be to add this to the end of /etc/apache2/envvars like so:</p>
<blockquote><p><code>...<br />
## Some packages providing 'www-browser' need '--dump'<br />
#export APACHE_LYNX='www-browser -dump'<br />
<span style="color: #ff0000;">umask 000</span><br />
</code></p></blockquote>
<p>Restart Apache and <em>voila</em>, the above umask will give all files written by Apache a chmod of 777.</p>
<p>Use this particular example with caution.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/10/19/ubuntu-apache-umask/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tinyint(1) showing as bit?</title>
		<link>http://blog.arithm.com/2011/09/25/tinyint1-showing-as-bit/</link>
		<comments>http://blog.arithm.com/2011/09/25/tinyint1-showing-as-bit/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 04:33:43 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[tinyint]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1741</guid>
		<description><![CDATA[If Java is showing you tinyint(1) as a boolean bitfield, that&#8217;s probably because MySQL recently changed the behavior of tinyint: As of MySQL 5.0.3, a BIT data type is available for storing bit-field values. (Before 5.0.3, MySQL interprets BIT as TINYINT(1).) In MySQL 5.0.3, BIT is supported only for MyISAM. MySQL 5.0.5 extends BIT support [...]]]></description>
			<content:encoded><![CDATA[<p>If Java is showing you tinyint(1) as a boolean bitfield, that&#8217;s probably because <a href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html">MySQL recently changed the behavior of tinyint</a>:</p>
<blockquote><p>As of MySQL 5.0.3, a BIT data type is available for storing bit-field values. (Before 5.0.3, MySQL interprets BIT as TINYINT(1).) In MySQL 5.0.3, BIT is supported only for MyISAM. MySQL 5.0.5 extends BIT support to MEMORY, InnoDB, BDB, and NDBCLUSTER.</p></blockquote>
<p>To convince your JDBC driver to show you tinyint for the tiny little int that it actually is, rather than as a boolean, try setting the <code>tinyInt1isBit=false</code> parameter when connecting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/09/25/tinyint1-showing-as-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outlook macros and self-signed certs on Windows 7</title>
		<link>http://blog.arithm.com/2011/09/08/outlook-macros-and-self-signed-certs-on-windows-7/</link>
		<comments>http://blog.arithm.com/2011/09/08/outlook-macros-and-self-signed-certs-on-windows-7/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 19:18:22 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[macros]]></category>
		<category><![CDATA[vb]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1721</guid>
		<description><![CDATA[If you are trying to get some custom macros to work with Outlook as outlined, for example, here and here, you may be befuddled to discover that that your macros fail silently; usually after restarting Outlook. This is because Outlook is quietly disabling all macros because it hates youI mean, because it doesn&#8217;t trust you.  [...]]]></description>
			<content:encoded><![CDATA[<p>If you are trying to get some custom macros to work with Outlook as outlined, for example, <a href="http://www.howto-outlook.com/howto/selfcert.htm">here</a> and <a href="http://jmerrell.com/2011/05/25/outlook-macro-stops-working-doesnt-work/">here</a>, you may be befuddled to discover that that your macros fail silently; usually after restarting Outlook. This is because Outlook is quietly disabling all macros because it <del>hates you</del>I mean, because it doesn&#8217;t trust you.  That is to say, it doesn&#8217;t trust your self-signed cert.</p>
<p>In Windows 7 it appears as though self-signed certs have to first be copied into a &#8220;trusted&#8221; group before they can be used. Here&#8217;s how to do it:</p>
<ol>
<li>Run certmgr.msc as an Administrator.</li>
<li>Open the &#8220;Personal&#8221; tree node in the left pane.</li>
<li>Open the &#8220;Certificates&#8221; node under the Personal node.</li>
<li>Note that your self-signed certificate appears in the right pane.  It may have a red &#8220;X&#8221; through it.</li>
<li>Double-click the certificate in the right pane to see instructions about copying the certificate to the &#8220;Trusted Root Certification Authorities&#8221; store.  Good thing these important details are so easy to discover.</li>
<li>Hold down the control key and drag the cert into &#8220;Trusted Root Certification Authorities &gt; Certificates&#8221; which should appear immediately below the Personal node.</li>
<li>Follow any prompts to completion.  The red &#8220;X&#8221; should disappear and your cert should know have a key icon attached to it.</li>
<li>Inside Outlook, re-associate this cert with your macro.</li>
<li>Restart Outlook for the new cert to be applied.</li>
</ol>
<p>And <em>voila</em>, Outlook trusts you again.</p>
<p>Not, of course, that you should every fully trust it back.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/09/08/outlook-macros-and-self-signed-certs-on-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Command-line Apache Status</title>
		<link>http://blog.arithm.com/2011/08/30/command-line-apache-status/</link>
		<comments>http://blog.arithm.com/2011/08/30/command-line-apache-status/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 23:16:31 +0000</pubDate>
		<dc:creator>nurikabe</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[lynx wget]]></category>

		<guid isPermaLink="false">http://blog.arithm.com/?p=1699</guid>
		<description><![CDATA[Here&#8217;s another thing I have to do once per year and can never remember how to do. If you have Apache extended status activated thusly: &#60;IfModule mod_status.c&#62; ExtendedStatus On &#60;Location /server-status&#62; SetHandler server-status Order deny,allow Deny from all Allow from localhost ip6-localhost 127.0.0.1 &#60;/Location&#62; &#60;/IfModule&#62; &#8230;then you can check in on what Apache is up [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s another thing I have to do once per year and can never remember how to do.</p>
<p>If you have Apache extended status activated thusly:</p>
<p><code>&lt;IfModule mod_status.c&gt;<br />
  ExtendedStatus On<br />
  &lt;Location /server-status&gt;<br />
    SetHandler server-status<br />
    Order deny,allow<br />
    Deny from all<br />
    Allow from localhost ip6-localhost 127.0.0.1<br />
  &lt;/Location&gt;<br />
&lt;/IfModule&gt;</code></p>
<p>&#8230;then you can check in on what Apache is up to via Lynx from the command line:</p>
<p><code>$ wget -q -O - localhost/server-status | lynx -stdin</code></p>
<p>Quite handy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.arithm.com/2011/08/30/command-line-apache-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

