<?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>tech.superhappykittymeow.com</title>
	<atom:link href="http://tech.superhappykittymeow.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://tech.superhappykittymeow.com</link>
	<description>Linux tips and tricks to make my life easier</description>
	<lastBuildDate>Sat, 17 Jul 2010 16:58:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>SOLVED: Macbook Air kernel_task slowness</title>
		<link>http://tech.superhappykittymeow.com/?p=258</link>
		<comments>http://tech.superhappykittymeow.com/?p=258#comments</comments>
		<pubDate>Sat, 17 Jul 2010 14:03:47 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=258</guid>
		<description><![CDATA[I love my Macbook Air more than I've loved any laptop before (my first experience with a 12&#8243; iBook in 2005 was a thing of beauty, but pales in comparison to my relationship with my Air). However, its CPU throttling to prevent heat drives me batty due to its aggressiveness &#8212; play a Flash video, [...]]]></description>
			<content:encoded><![CDATA[<p>I love my Macbook Air more than I've loved any laptop before (my first experience with a 12&#8243; iBook in 2005 was a thing of beauty, but pales in comparison to my relationship with my Air).  However, its CPU throttling to prevent heat drives me batty due to its aggressiveness &#8212; play a Flash video, for example, for a few minutes and it will start stuttering as the CPU temperature rises.  Let it continue and the entire computer will slow to a crawl.  If you open Activity Monitor or look at top, you'll see a process owned by root called 'kernel_task' using 150% CPU usage or so.  Kill the Flash video and the kernel_task will slowly scale back and things will return to normal.</p>
<p>What's going on here is an interesting approach to temperature management.  As temperature rises due to load on the CPU, the kernel runs some low-cost operations over and over &#8212; think 'gettimeofday()'-style functions.  Since the kernel has top priority, system CPU usage spikes while userland CPU usage is forced down, lowering the actual activity that the CPU is doing and thus lowering the temperature.  A decent idea, I guess, but in practice it's way too aggressive.</p>
<p>Luckily, doing a bit of digging in /System/Library/Extensions, I came across an extension called 'AppleIntelPenrynProfile.kext' that, looking at the Info.plist, ties into power management and performance monitoring &#8212; the IOClass is 'AppleIntelPenrynPerformanceMonitor' and the IOProviderClass 'AppleACPICPU'.  </p>
<p>This kernel extension is loaded on boot into userland, but interestingly, if you boot into safe mode (hold shift during boot), it is <strong>not</strong> loaded &#8212; <em>and the kernel_task CPU spikes don't occur, even under heat-generating load</em>.  You can verify this by running `kextstat', which lists all loaded kernel extensions &#8212; run it in Terminal while booted normally and you should see an extension called 'com.apple.driver.AppleIntelPenrynProfile' loaded.  Boot into safe mode by holding down shift before the chime and run `kextstat' again &#8212; no com.apple.driver.AppleIntelPenrynProfile, and no kernel_task CPU spike when generating heat (play a Flash video).</p>
<p>So&#8230; why load that module at all?</p>
<p>Back in normal OSX, launch Terminal and run the following:</p>
<blockquote><p>cd /System/Library/Extensions/AppleProfileFamily.kext/Contents/PlugIns<br />
sudo kextunload AppleIntelPenrynProfile.kext</p></blockquote>
<p>Verify it's unloaded:</p>
<blockquote><p>kextstat | grep Penryn</p></blockquote>
<p>This should return no output if the module was successfully unloaded.  Now, go play a Flash video and enjoy a less-crippled Air!</p>
<p><strong>* Disclaimer</strong>: I take <strong>NO</strong> responsibility if you brick your Mac, it catches on fire, never boots again, or otherwise break.  I've had no problems and it's been working quite well, but your experience/hardware/whatever may be different.  </p>
<p><strong>** Disclaimer 2</strong>: I highly recommend running <a href="http://www.eidac.de/?p=134">SMCFanControl</a> and pushing your fans to max when running heat-intensive operations.  I do not recommend running your Air at 80ºC or hotter for extended periods &#8212; the kernel will no longer discourage this activity by slowing things down.  It's unlikely that you will fry your CPU due to extensive hot use, as the CPU's thermal shutdown is lower than its point of combustion, but this doesn't mean you should push that threshold.</p>
<p><strong>*** Disclaimer 3</strong>: The Penryn profile is for the Rev 2 Macbook Airs.  Rev 1 is Merom, with the extension called AppleIntelMeromProfile.kext.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=258</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ImageMagick, PDFs, and third-party fonts</title>
		<link>http://tech.superhappykittymeow.com/?p=254</link>
		<comments>http://tech.superhappykittymeow.com/?p=254#comments</comments>
		<pubDate>Fri, 02 Jul 2010 13:41:30 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[ghostscript]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=254</guid>
		<description><![CDATA[If you use ImageMagick to convert PDFs, you'll know it's as simple as convert file.pdf file.jpg However, if you're using a third-party non-GhostScript-sanctioned font, this won't work terribly well and fail with a rather cryptic GhostScript error such as: ERROR: /invalidfileaccess in --file-- Operand stack: --dict:5/5(L)-- F2 10.0 --dict:6/6(L)-- --dict:6/6(L)-- STSongStd-Light-Acro-UniGB-UCS2-H --dict:10/12(ro)(G)-- --nostringval-- --dict:7/7(L)-- --dict:7/7(L)-- [...]]]></description>
			<content:encoded><![CDATA[<p>If you use ImageMagick to convert PDFs, you'll know it's as simple as</p>
<div class="codesnip-container" >convert file.pdf file.jpg</div>
<p>However, if you're using a third-party non-GhostScript-sanctioned font, this won't work terribly well and fail with a rather cryptic GhostScript error such as:</p>
<blockquote><p>ERROR: /invalidfileaccess in --file--<br />
Operand stack:<br />
   --dict:5/5(L)--   F2   10.0   --dict:6/6(L)--   --dict:6/6(L)--   STSongStd-Light-Acro-UniGB-UCS2-H   --dict:10/12(ro)(G)--   --nostringval--   --dict:7/7(L)--   --dict:7/7(L)--   Adobe-GB1   CIDFont   Adobe-GB1   Adobe-GB1   --nostringval--   (/usr/share/fonts/chinese/TrueType/uming.ttf)   (r)<br />
Execution stack:<br />
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   6   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   1   %stopped_push   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push   --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %loop_continue   --nostringval--   12   9   %oparray_pop   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--<br />
Dictionary stack:<br />
   --dict:1127/1686(ro)(G)--   --dict:0/20(G)--   --dict:107/200(L)--   --dict:107/200(L)--   --dict:104/127(ro)(G)--   --dict:241/347(ro)(G)--   --dict:20/24(L)--   --dict:4/6(L)--   --dict:24/31(L)--   --dict:38/50(ro)(G)--<br />
Current allocation mode is local<br />
Last OS error: 2<br />
ESP Ghostscript 815.02: Unrecoverable error, exit code 1<br />
convert: Postscript delegate failed `/home/kale/poop.pdf'.<br />
convert: missing an image filename `/home/kale/poop.pnm'.
</p></blockquote>
<p>In this instance, the PDF poop.pdf contains a Chinese font which Ghostscript knows about but won't let me use since I installed it after-the-fact from RPM (chinese-fonts.noarch).  GhostScript by default is run from ImageMagick with the -dSAFER flag which is a mildly paranoid flag that prevents GS from using files outside of its root (/usr/share/ghostscript, usually).  To work around this error, rather than dealing with GS's confusing and arcane font directory configuration, I recommend simply amending ImageMagick's delegates definition for the PDF filetype:</p>
<p>/usr/lib64/ImageMagick-6.2.8/config/delegates.xml:</p>
<blockquote><p> &lt;delegate decode="pdf" encode="ps" mode="bi" command='"gs" -q -dBATCH -dSAFER -dMaxBitmap=500000000 -dNOPAUSE -dAlignToPixels=0 -dEPSCrop -sDEVICE="pswrite" -sOutputFile="%o" -f"%i"' /&gt;</p></blockquote>
<p>to</p>
<blockquote><p>&lt;delegate decode="pdf" encode="ps" mode="bi" command='"gs" -q -dBATCH -dMaxBitmap=500000000 -dNOPAUSE -dAlignToPixels=0 -dEPSCrop -sDEVICE="pswrite" -sOutputFile="%o" -f"%i"' /&gt;</p></blockquote>
<p>(remove the -dSAFER flag)</p>
<p>Henceforth, `convert poop.pdf poop.jpg' will work with third-party fonts without issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=254</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enumerate columns for awk</title>
		<link>http://tech.superhappykittymeow.com/?p=241</link>
		<comments>http://tech.superhappykittymeow.com/?p=241#comments</comments>
		<pubDate>Sat, 19 Jun 2010 13:31:21 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[one-liners]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[oneliners]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=241</guid>
		<description><![CDATA[I'm bad at counting, so when I'm using awk to print specific fields, I end up with greasy fingerprints on my screen as I manually count out each field. Thanks to my colleague James, here's a script that counts for you! awk 'NR == 1 { for (i=1;i]]></description>
			<content:encoded><![CDATA[<p>I'm bad at counting, so when I'm using awk to print specific fields, I end up with greasy fingerprints on my screen as I manually count out each field.  Thanks to my colleague James, here's a script that counts for you!</p>
<div class="codesnip-container" >awk 'NR == 1 { for (i=1;i<=NF;i++) {printf i " "} print ""} {print}' | column -t</div>
<p>Works with STDIN as is, assuming default field separator (space):</p>
<pre>[kale@superhappykittymeow log]# tail -n 1 xferlog |awk 'NR == 1 { for (i=1;i<=NF;i++) {printf i " "} print ""} {print}' | column -t
1    2    3   4         5     6  7          8    9                          10  11  12  13  14    15   16  17  18
Sat  Jun  19  13:19:25  2010  1  127.0.0.1  220  /var/www/poop/wp-rss2.php  b   _   i   r   root  ftp  0   *   c</pre>
<p>Or, if you're lazy like myself, encapsulate it in an alias:</p>
<div class="codesnip-container" >alias count='awk 'NR == 1 { for (i=1;i<=NF;i++) {printf i " "} print ""} {print}' | column -t'</div>
<pre>[kale@superhappykittymeow log]# tail -n 1 xferlog | count
1    2    3   4         5     6  7          8    9                          10  11  12  13  14    15   16  17  18
Sat  Jun  19  13:19:25  2010  1  127.0.0.1  220  /var/www/poop/wp-rss2.php  b   _   i   r   root  ftp  0   *   c
</pre>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=241</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enforcing Secure Passwords in Horde</title>
		<link>http://tech.superhappykittymeow.com/?p=238</link>
		<comments>http://tech.superhappykittymeow.com/?p=238#comments</comments>
		<pubDate>Sun, 13 Jun 2010 12:05:58 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[horde]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=238</guid>
		<description><![CDATA[A coworker, Alex, discovered that Horde, in conjunction with Plesk, allows users to change their passwords arbitrarily &#8212; but doesn't enforce any sort of password policy, allowing such passwords as "test" or even "" (null). This, obviously, is a huge security risk as mail compromises can lead to fairly terrible things. From his article: If [...]]]></description>
			<content:encoded><![CDATA[<p>A coworker, Alex, discovered that Horde, in conjunction with Plesk, allows users to change their passwords arbitrarily &#8212; but doesn't enforce any sort of password policy, allowing such passwords as "test" or even "" (null).  This, obviously, is a huge security risk as mail compromises can lead to fairly terrible things.</p>
<p>From <a href="http://alex.darke.net/2010/06/13/enforcing-secure-passwords-through-horde-imp/">his article</a>:</p>
<blockquote><p>If you (or a client you are representing) want to set horde to do the typical “strict password” enforcement, look for the file:</p>
<p>horde/passwd/backends.php</p>
<p>And read the bit about password policy.  An example policy that can be set in this file that would require 1 capital, 1 lowercase, 1 special character and 1 number, with a minimum password size of 8, would look like:</p>
<p>‘password policy’ => array(<br />
‘minLength’ => 8,<br />
‘maxLength’ => 64,<br />
‘maxSpace’ => 0,<br />
‘minUpper’ => 1,<br />
‘minLower’ => 1,<br />
‘minNumeric’ => 1,<br />
‘minSymbols’ => 1<br />
),
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=238</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can&#039;t fork?</title>
		<link>http://tech.superhappykittymeow.com/?p=235</link>
		<comments>http://tech.superhappykittymeow.com/?p=235#comments</comments>
		<pubDate>Sat, 29 May 2010 11:31:50 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[one-liners]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[fork]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=235</guid>
		<description><![CDATA[Can't fork but need to see what's going on? Hint: a box that can't fork can often `exec'. Here are a pair of slick bash functions that can be lifesavers in dire situations: `ls': $ myls&#40;&#41; &#123; while &#91; $# -ne 0 ] ; do echo &#34;$1&#34; ; shift ; done ; } $ myls [...]]]></description>
			<content:encoded><![CDATA[<p>Can't fork but need to see what's going on?  Hint: a box that can't fork can often `exec'.</p>
<p>Here are a pair of slick bash functions that can be lifesavers in dire situations:</p>
<p>`ls':</p>
<div class="codesnip-container" >
<div class="codesnip">$ myls<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">while</span> <span class="br0">&#91;</span> $<span class="co1"># -ne 0 ] ; do echo &quot;$1&quot; ; shift ; done ; }</span><br />
$ myls /etc/s*<br />
/etc/services<br />
/etc/shells<br />
/etc/syslog.conf</div>
</div>
<p>`cat':</p>
<div class="codesnip-container" >
<div class="codesnip">$ mycat<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">while</span> <span class="re2">IFS=</span><span class="st0">""</span> <span class="kw3">read</span> l ; <span class="kw1">do</span> <span class="kw3">echo</span> <span class="st0">"$l"</span> ; <span class="kw1">done</span> &lt; $<span class="nu0">1</span> ; <span class="br0">&#125;</span><br />
$ mycat /etc/shells</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=235</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python on OSX proxy bug with curl</title>
		<link>http://tech.superhappykittymeow.com/?p=231</link>
		<comments>http://tech.superhappykittymeow.com/?p=231#comments</comments>
		<pubDate>Sun, 23 May 2010 08:18:22 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[osx python bug]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=231</guid>
		<description><![CDATA[I received a lovely stack trace trying to run a python script that makes an external call using curl. The meat of it: File "/Library/Python/2.6/site-packages/pyechonest/util.py", line 52, in call f = urllib.urlopen(url) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 87, in urlopen File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 203, in open File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 310, in open_http File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1555, in [...]]]></description>
			<content:encoded><![CDATA[<p>I received a lovely stack trace trying to run a python script that makes an external call using curl.  The meat of it:</p>
<blockquote><p>  File "/Library/Python/2.6/site-packages/pyechonest/util.py", line 52, in call<br />
    f = urllib.urlopen(url)<br />
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 87, in urlopen<br />
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 203, in open<br />
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 310, in open_http<br />
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1555, in proxy_bypass<br />
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib.py", line 1425, in proxy_bypass_macosx_sysconf
</p></blockquote>
<p>This is a bug due to how python on OSX parses the values in the proxy bypass box in the system's Proxy configuration.  If you have an explicit IP, it will bomb out.  Remove the explicitly specified IP or change it to a name value to get around this bug.  Netblocks (such as "10/8&#8243;) won't cause it to bomb &#8212; just a definite IP like 1.2.3.4.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=231</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oh, perl&#8230;</title>
		<link>http://tech.superhappykittymeow.com/?p=229</link>
		<comments>http://tech.superhappykittymeow.com/?p=229#comments</comments>
		<pubDate>Sat, 08 May 2010 11:50:20 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[perl cpan lol]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=229</guid>
		<description><![CDATA[Installing EV from CPAN, I received this message: Checking if your kit is complete&#8230; Looks good Warning: prerequisite common::sense 0 not found. :/]]></description>
			<content:encoded><![CDATA[<p>Installing EV from CPAN, I received this message:</p>
<blockquote><p>Checking if your kit is complete&#8230;<br />
Looks good<br />
Warning: prerequisite common::sense 0 not found.</p></blockquote>
<p>:/</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=229</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop snmpd from spamming syslog</title>
		<link>http://tech.superhappykittymeow.com/?p=227</link>
		<comments>http://tech.superhappykittymeow.com/?p=227#comments</comments>
		<pubDate>Fri, 30 Apr 2010 06:49:26 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=227</guid>
		<description><![CDATA[Dell's OpenManage tools come with a MIB to allow for the system to query against and set up traps. However, by default, snmpd will not allow arbitrary smux peers, and your logs will be spammed with the following: Apr 29 19:19:37 server snmpd[4321]: [smux_accept] accepted fd 9 from 127.0.0.1:39622 Apr 29 19:19:37 server snmpd[4321]: refused [...]]]></description>
			<content:encoded><![CDATA[<p>Dell's OpenManage tools come with a MIB to allow for the system to query against and set up traps.  However, by default, snmpd will not allow arbitrary smux peers, and your logs will be spammed with the following:</p>
<blockquote><p>Apr 29 19:19:37 server snmpd[4321]: [smux_accept] accepted fd 9 from 127.0.0.1:39622<br />
Apr 29 19:19:37 server snmpd[4321]: refused smux peer: oid SNMPv2-SMI::enterprises.674.10892.1, descr Systems Management SNMP MIB Plug-in Manager<br />
Apr 29 19:19:40 server snmpd[4321]: [smux_accept] accepted fd 9 from 127.0.0.1:39693<br />
Apr 29 19:19:40 server snmpd[4321]: refused smux peer: oid SNMPv2-SMI::enterprises.674.10892.1, descr Systems Management SNMP MIB Plug-in Manager<br />
Apr 29 19:19:43 server snmpd[4321]: [smux_accept] accepted fd 9 from 127.0.0.1:39790<br />
Apr 29 19:19:43 server snmpd[4321]: refused smux peer: oid SNMPv2-SMI::enterprises.674.10892.1, descr Systems Management SNMP MIB Plug-in Manager</p></blockquote>
<p>Add the following to you /etc/snmpd/snmpd.conf:</p>
<blockquote><p>smuxpeer .1.3.6.1.4.1.674.10892.1</p></blockquote>
<p>and restart snmpd.</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=227</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes on iPad&#039;s movie player</title>
		<link>http://tech.superhappykittymeow.com/?p=224</link>
		<comments>http://tech.superhappykittymeow.com/?p=224#comments</comments>
		<pubDate>Sat, 24 Apr 2010 09:34:46 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=224</guid>
		<description><![CDATA[The iPad's built-in movie player identifies itself as the useragent "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)" and explicitly specifies a range to download, allowing for chunked streaming. Here are the headers from both sides of a recent transaction on my server: GET /music/lt-fundies.mp4 HTTP/1.1 Host: growl.superhappykittymeow.com Range: bytes=110691320-147521535 Connection: close User-Agent: [...]]]></description>
			<content:encoded><![CDATA[<p>The iPad's built-in movie player identifies itself as the useragent "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)" and explicitly specifies a range to download, allowing for chunked streaming.  Here are the headers from both sides of a recent transaction on my server:</p>
<blockquote><p>GET /music/lt-fundies.mp4 HTTP/1.1<br />
Host: growl.superhappykittymeow.com<br />
Range: bytes=110691320-147521535<br />
Connection: close<br />
User-Agent: AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)<br />
Accept: */*<br />
Accept-Encoding: identity</p>
<p>HTTP/1.1 206 Partial Content<br />
Date: Sat, 24 Apr 2010 09:28:22 GMT<br />
Server: Apache/2.2.3 (CentOS)<br />
Last-Modified: Wed, 17 Sep 2008 18:35:48 GMT<br />
ETag: \"4ad19f-998329f-4571bbcac8900\"<br />
Accept-Ranges: bytes<br />
Content-Length: 36830216<br />
Content-Range: bytes 110691320-147521535/160969375<br />
Connection: close<br />
Content-Type: text/plain; charset=UTF-8</p></blockquote>
<p>Fun fact -- a dropped packet results in awesome skipping on the client!  &#8230;it also spams your access_logs with each request:</p>
<blockquote><p>66.216.90.167 -- - [24/Apr/2010:09:33:59 +0000] "GET /music/lt-fundies.mp4 HTTP/1.1&#8243; 206 7012352 "-" "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)"<br />
66.216.90.167 -- - [24/Apr/2010:09:34:00 +0000] "GET /music/lt-fundies.mp4 HTTP/1.1&#8243; 206 26657760 "-" "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)"<br />
66.216.90.167 -- - [24/Apr/2010:09:34:02 +0000] "GET /music/lt-fundies.mp4 HTTP/1.1&#8243; 206 2558 "-" "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)"<br />
66.216.90.167 -- - [24/Apr/2010:09:34:02 +0000] "GET /music/lt-fundies.mp4 HTTP/1.1&#8243; 206 6912055 "-" "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)"<br />
66.216.90.167 -- - [24/Apr/2010:09:34:03 +0000] "GET /music/lt-fundies.mp4 HTTP/1.1&#8243; 206 26500344 "-" "AppleCoreMedia/1.0.0.7B367 (iPad; U; CPU OS 3_2 like Mac OS X)"</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=224</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SNMP RAID monitoring with LSI SATA RAID controllers</title>
		<link>http://tech.superhappykittymeow.com/?p=222</link>
		<comments>http://tech.superhappykittymeow.com/?p=222#comments</comments>
		<pubDate>Sun, 04 Apr 2010 04:54:26 +0000</pubDate>
		<dc:creator>kale</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tech.superhappykittymeow.com/?p=222</guid>
		<description><![CDATA[wget http://ftp.us.dell.com/ide/lin_apps_a04.tar.gz tar xzvf lin_apps_a04.tar.gz rpm -Uvh percsnmp-4.06-1.i386.rpm cp /etc/percsnmp/release/perc.mib /usr/share/snmp/mibs If your SNMP config works, try this: snmpwalk -m +RAID-Adapter-MIB -v1 -c public localhost .1.3.6.1.4.1.3582]]></description>
			<content:encoded><![CDATA[<div class="codesnip-container" >wget http://ftp.us.dell.com/ide/lin_apps_a04.tar.gz<br />
tar xzvf lin_apps_a04.tar.gz<br />
rpm -Uvh percsnmp-4.06-1.i386.rpm<br />
cp /etc/percsnmp/release/perc.mib /usr/share/snmp/mibs</div>
<p>If your SNMP config works, try this:</p>
<div class="codesnip-container" >snmpwalk -m +RAID-Adapter-MIB -v1 -c public localhost .1.3.6.1.4.1.3582</div>
]]></content:encoded>
			<wfw:commentRss>http://tech.superhappykittymeow.com/?feed=rss2&amp;p=222</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
