<?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>Jason L. Froebe - Tech tips and How Tos for Fellow Techies</title>
	<atom:link href="http://froebe.net/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://froebe.net/blog</link>
	<description>Tips &#38; Tricks for Databases (Sybase, Oracle, MySQL, PostgreSQL, SQLite), Windows, Linux, Solaris, Perl, Java, Bash and so much much more</description>
	<lastBuildDate>Sat, 07 Jan 2012 22:12:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Perl Script to Convert an Audiobook (m4b) to mp3 files splitting on the chapters</title>
		<link>http://froebe.net/blog/2012/01/07/perl-script-to-convert-an-audiobook-m4b-to-mp3-files-splitting-on-the-chapters/</link>
		<comments>http://froebe.net/blog/2012/01/07/perl-script-to-convert-an-audiobook-m4b-to-mp3-files-splitting-on-the-chapters/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 22:12:47 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[audiobooks]]></category>
		<category><![CDATA[chapters]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[ffprobe]]></category>
		<category><![CDATA[m4b]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[usb thumbdrive]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1371</guid>
		<description><![CDATA[I have an Nissan Altima with a BOSE radio that allows me to hook up an USB thumbdrive containing mp3 files. The problem is most of my audiobooks are in m4b format. Previously I&#8217;ve used tools like mp3splt and tried to split on &#8216;silence&#8217; or timed increments (say 15 min) but I was getting mp3 [...]]]></description>
			<content:encoded><![CDATA[<p>I have an Nissan Altima with a BOSE radio that allows me to hook up an USB thumbdrive containing mp3 files.  The problem is most of <a href="http://froebe.net/blog/2009/12/24/how-to-create-an-itunesipod-compatible-audiobook-mpeg4-m4b-on-linux-using-mp4box-and-mp4v2-v1-9-1-it-can-be-done/">my audiobooks</a> are in m4b format.  Previously I&#8217;ve used tools like mp3splt and tried to split on &#8216;silence&#8217; or timed increments (say 15 min) but I was getting mp3 files that would be split in midsentence and sometimes midword.  It became very annoying after awhile.</p>
<p>So, I came up with a really simple script to convert an audiobook (m4b) into mp3 files splitting on the chapters.  We are dependent on <a href="http://search.cpan.org/~mizzy/FFmpeg-Command/lib/FFmpeg/Command.pm">FFmpeg::Command</a> and a <a href="http://froebe.net/blog/2012/01/06/audiobook-chapter-support-for-ffprobe-perl-module/">modified FFprobe</a> Perl module. </p>
<p><strong>In the following example</strong>, we are converting a Ben Bova audiobook but we are going to specify to start the track numbering at &#8220;10&#8243; because the 2nd file ended with track &#8220;9&#8243;.</p>
<div class="bash dean_ch">jason<span class="sy0">@</span>jason-Inspiron-<span class="nu0">1545</span> ~<span class="sy0">/</span>bin $ .<span class="sy0">/</span>test_mp4_info.pl <span class="re5">-i</span> <span class="st0">&quot;/home/jason/Audiobooks/Ben Bova/Mars/Mars 3.m4b&quot;</span> <span class="re5">-o</span> mp3 <span class="re5">-a</span> <span class="st0">&quot;Mars&quot;</span> <span class="re5">-t</span> <span class="nu0">10</span><br />
Converting <span class="st0">&quot;Mars 3.m4b&quot;</span> to <span class="st0">&quot;mp3/010 Mars.mp3&quot;</span>&#8230;<br />
&nbsp; album: Mars<br />
&nbsp; artist: Ben Bova<br />
&nbsp; title: 010 &#8211; Mars<br />
&nbsp; genre: Audiobook<br />
&nbsp; track: <span class="nu0">10</span><br />
&nbsp; &#8230; COMPLETE<br />
Converting <span class="st0">&quot;Mars 3.m4b&quot;</span> to <span class="st0">&quot;mp3/011 Mars.mp3&quot;</span>&#8230;<br />
&nbsp; album: Mars<br />
&nbsp; artist: Ben Bova<br />
&nbsp; title: 011 &#8211; Mars<br />
&nbsp; genre: Audiobook<br />
&nbsp; track: <span class="nu0">11</span><br />
&nbsp; &#8230; COMPLETE<br />
Converting <span class="st0">&quot;Mars 3.m4b&quot;</span> to <span class="st0">&quot;mp3/012 Mars.mp3&quot;</span>&#8230;<br />
&nbsp; album: Mars<br />
&nbsp; artist: Ben Bova<br />
&nbsp; title: 012 &#8211; Mars<br />
&nbsp; genre: Audiobook<br />
&nbsp; track: <span class="nu0">12</span><br />
&nbsp; &#8230; COMPLETE<br />
Converting <span class="st0">&quot;Mars 3.m4b&quot;</span> to <span class="st0">&quot;mp3/013 Mars.mp3&quot;</span>&#8230;<br />
&nbsp; album: Mars<br />
&nbsp; artist: Ben Bova<br />
&nbsp; title: 013 &#8211; Mars<br />
&nbsp; genre: Audiobook<br />
&nbsp; track: <span class="nu0">13</span><br />
&nbsp; &#8230; COMPLETE<br />
Converting <span class="st0">&quot;Mars 3.m4b&quot;</span> to <span class="st0">&quot;mp3/014 Mars.mp3&quot;</span>&#8230;<br />
&nbsp; album: Mars<br />
&nbsp; artist: Ben Bova<br />
&nbsp; title: 014 &#8211; Mars<br />
&nbsp; genre: Audiobook<br />
&nbsp; track: <span class="nu0">14</span><br />
&nbsp; &#8230; COMPLETE</div>
</p>
<p><strong>Source code:</strong></p>
<blockquote><div class="perl dean_ch"><span class="co1">#!/usr/bin/perl</span></p>
<p><span class="kw2">use</span> strict<span class="sy0">;</span><br />
<span class="kw2">use</span> warnings<span class="sy0">;</span></p>
<p><span class="kw2">use</span> lib <a href="http://perldoc.perl.org/functions/qw.html"><span class="kw3">qw</span></a><span class="br0">&#40;</span><span class="sy0">/</span>home<span class="sy0">/</span>jason<span class="sy0">/</span>bin<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw2">use</span> Getopt<span class="sy0">::</span><span class="me2">Std</span><span class="sy0">;</span><br />
<span class="kw2">use</span> File<span class="sy0">::</span><span class="me2">Basename</span><span class="sy0">;</span><br />
<span class="kw2">use</span> FFmpeg<span class="sy0">::</span><span class="me2">Command</span><span class="sy0">;</span><br />
<span class="kw2">use</span> FFprobe<span class="sy0">;</span></p>
<p><span class="co5">$|</span><span class="sy0">++;</span></p>
<p><span class="co1">###############################</span><br />
<span class="kw2">sub</span> _encode_mp3 <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$input_file</span><span class="sy0">,</span> <span class="re0">$output_dir</span><span class="sy0">,</span> <span class="re0">$album</span><span class="sy0">,</span> <span class="re0">$starting_track</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="co5">@_</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw1">my</span> <span class="re0">%tags</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$track_number</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$mp4</span> <span class="sy0">=</span> FFprobe<span class="sy0">-&gt;</span><span class="me1">probe_file</span><span class="br0">&#40;</span><span class="re0">$input_file</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$base_output_file</span> <span class="sy0">=</span> basename<span class="br0">&#40;</span><span class="re0">$input_file</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$base_output_file</span> <span class="sy0">=~</span> <span class="co2">s/\.\w+$//</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/exists.html"><span class="kw3">exists</span></a> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:comment&#8217;</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>genre<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:comment&#8217;</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>genre<span class="br0">&#125;</span> <span class="sy0">=~</span> <span class="co2">s/(&quot;&#8217;)//g</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/exists.html"><span class="kw3">exists</span></a> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:genre&#8217;</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>genre<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:genre&#8217;</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>genre<span class="br0">&#125;</span> <span class="sy0">=~</span> <span class="co2">s/(&quot;&#8217;)//g</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/exists.html"><span class="kw3">exists</span></a> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:artist&#8217;</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>artist<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:artist&#8217;</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>artist<span class="br0">&#125;</span> <span class="sy0">=~</span> <span class="co2">s/(&quot;&#8217;)//g</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$album</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>album<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="re0">$album</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span> <span class="kw1">elsif</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/exists.html"><span class="kw3">exists</span></a> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:album&#8217;</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>album<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:album&#8217;</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>album<span class="br0">&#125;</span> <span class="sy0">=~</span> <span class="co2">s/(&quot;&#8217;)//g</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$track_number</span> <span class="sy0">=</span> <span class="re0">$starting_track</span> <span class="kw1">if</span> <span class="re0">$starting_track</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw1">foreach</span> <span class="kw1">my</span> <span class="re0">$chapter</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/sort.html"><span class="kw3">sort</span></a> <a href="http://perldoc.perl.org/functions/keys.html"><span class="kw3">keys</span></a> <span class="sy0">%</span><span class="br0">&#123;</span><span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>chapters<span class="br0">&#125;</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">unless</span> <span class="br0">&#40;</span><span class="re0">$starting_track</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$track_number</span> <span class="sy0">=</span> <span class="re0">$chapter</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$output_file</span> <span class="sy0">=</span> <a href="http://perldoc.perl.org/functions/sprintf.html"><span class="kw3">sprintf</span></a> <span class="st0">&quot;%s/%03d %s.mp3&quot;</span><span class="sy0">,</span> <span class="re0">$output_dir</span><span class="sy0">,</span> <span class="re0">$track_number</span><span class="sy0">,</span> <span class="re0">$tags</span><span class="br0">&#123;</span>album<span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$start</span> <span class="sy0">=</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>chapters<span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="re0">$chapter</span><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>start<span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$duration</span> <span class="sy0">=</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>chapters<span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="re0">$chapter</span><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>end<span class="br0">&#125;</span> <span class="sy0">-</span> <span class="re0">$start</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">@options</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$album</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>title<span class="br0">&#125;</span> <span class="sy0">=</span> <a href="http://perldoc.perl.org/functions/sprintf.html"><span class="kw3">sprintf</span></a> <span class="st0">&quot;%03d &#8211; %s&quot;</span><span class="sy0">,</span> <span class="re0">$track_number</span><span class="sy0">,</span> <span class="re0">$album</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/exists.html"><span class="kw3">exists</span></a> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:title&#8217;</span><span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>title<span class="br0">&#125;</span> <span class="sy0">=</span> <a href="http://perldoc.perl.org/functions/sprintf.html"><span class="kw3">sprintf</span></a> <span class="st0">&quot;%03d &#8211; %s&quot;</span><span class="sy0">,</span> <span class="re0">$track_number</span><span class="sy0">,</span> <span class="re0">$mp4</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><a href="http://perldoc.perl.org/functions/format.html"><span class="kw3">format</span></a><span class="br0">&#125;</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span><span class="st_h">&#8216;TAG:title&#8217;</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>title<span class="br0">&#125;</span> <span class="sy0">=</span> <a href="http://perldoc.perl.org/functions/sprintf.html"><span class="kw3">sprintf</span></a> <span class="st0">&quot;%03d &#8211; %s&quot;</span><span class="sy0">,</span> <span class="re0">$track_number</span><span class="sy0">,</span> <span class="re0">$base_output_file</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <span class="re0">$tags</span><span class="br0">&#123;</span>title<span class="br0">&#125;</span> <span class="sy0">=~</span> <span class="co2">s/(&quot;&#8217;)//g</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$ffmpeg</span> <span class="sy0">=</span> FFmpeg<span class="sy0">::</span><span class="me2">Command</span><span class="sy0">-&gt;</span><span class="me1">new</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="re0">$ffmpeg</span><span class="sy0">-&gt;</span><span class="me1">input_options</span><span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; file <span class="sy0">=&gt;</span> <span class="re0">$input_file</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="re0">$ffmpeg</span><span class="sy0">-&gt;</span><span class="me1">output_options</span><span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span class="st_h">&#8216;file&#8217;</span> <span class="sy0">=&gt;</span> <span class="re0">$output_file</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp;<span class="st_h">&#8216;audio_codec&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&#8216;libmp3lame&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp;<span class="st_h">&#8216;audio_bit_rate&#8217;</span> <span class="sy0">=&gt;</span> <span class="nu0">64</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/printf.html"><span class="kw3">printf</span></a> <span class="st0">&quot;Converting <span class="es0">\&quot;</span>%s<span class="es0">\&quot;</span> to <span class="es0">\&quot;</span>%s<span class="es0">\&quot;</span>&#8230;<span class="es0">\n</span>&quot;</span><span class="sy0">,</span> basename<span class="br0">&#40;</span><span class="re0">$input_file</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$output_file</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">foreach</span> <span class="kw1">my</span> <span class="re0">$tag</span> <span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/keys.html"><span class="kw3">keys</span></a> <span class="re0">%tags</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/push.html"><span class="kw3">push</span></a> <span class="re0">@options</span><span class="sy0">,</span> <span class="st_h">&#8216;-metadata&#8217;</span><span class="sy0">,</span> <span class="re0">$tag</span> <span class="sy0">.</span> <span class="st0">&quot;=&quot;</span> <span class="sy0">.</span> <span class="re0">$tags</span><span class="br0">&#123;</span><span class="re0">$tag</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/printf.html"><span class="kw3">printf</span></a> <span class="st0">&quot;<span class="es0">\t</span>%s: %s<span class="es0">\n</span>&quot;</span><span class="sy0">,</span> <span class="re0">$tag</span><span class="sy0">,</span> <span class="re0">$tags</span><span class="br0">&#123;</span><span class="re0">$tag</span><span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/push.html"><span class="kw3">push</span></a> <span class="re0">@options</span><span class="sy0">,</span> <br />
&nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;-metadata&#8217;</span> <span class="sy0">=&gt;</span> <span class="st_h">&#8216;track=&#8217;</span> <span class="sy0">.</span> <span class="re0">$track_number</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;-ss&#8217;</span> <span class="sy0">=&gt;</span> <span class="re0">$start</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;-t&#8217;</span> <span class="sy0">=&gt;</span> <span class="re0">$duration</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/printf.html"><span class="kw3">printf</span></a> <span class="st0">&quot;<span class="es0">\t</span>track: %d<span class="es0">\n</span>&quot;</span><span class="sy0">,</span> <span class="re0">$track_number</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="re0">$ffmpeg</span><span class="sy0">-&gt;</span><span class="me1">options</span><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; <span class="re0">@options</span><br />
&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; <span class="re0">$ffmpeg</span><span class="sy0">-&gt;</span><span class="me1">exec</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="st0">&quot;<span class="es0">\t</span>&#8230; COMPLETE<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="re0">$track_number</span><span class="sy0">++</span> <span class="kw1">if</span> <span class="re0">$starting_track</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="co1">###############################</span></p>
<p><span class="kw1">my</span> <span class="re0">%arg_options</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
getopts<span class="br0">&#40;</span><span class="st_h">&#8216;a:i:o:t:&#8217;</span><span class="sy0">,</span> <span class="re0">\%arg_options</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$arg_options</span><span class="br0">&#123;</span>i<span class="br0">&#125;</span> <span class="sy0">&amp;&amp;</span> <span class="re0">$arg_options</span><span class="br0">&#123;</span>o<span class="br0">&#125;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$input_file</span> <span class="sy0">=</span> <span class="re0">$arg_options</span><span class="br0">&#123;</span>i<span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$output_dir</span> <span class="sy0">=</span> <span class="re0">$arg_options</span><span class="br0">&#123;</span>o<span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$starting_track</span> <span class="sy0">=</span> <span class="re0">$arg_options</span><span class="br0">&#123;</span>t<span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; <span class="kw1">my</span> <span class="re0">$album</span> <span class="sy0">=</span> <span class="re0">$arg_options</span><span class="br0">&#123;</span>a<span class="br0">&#125;</span><span class="sy0">;</span></p>
<p>&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">-</span>f <span class="re0">$input_file</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">-</span>d <span class="re0">$output_dir</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; _encode_mp3<span class="br0">&#40;</span><span class="re0">$input_file</span><span class="sy0">,</span> <span class="re0">$output_dir</span><span class="sy0">,</span> <span class="re0">$album</span><span class="sy0">,</span> <span class="re0">$starting_track</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/warn.html"><span class="kw3">warn</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Unable to find file: <span class="es0">\&quot;</span>&quot;</span> <span class="sy0">.</span> <span class="re0">$input_file</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\&quot;</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span> <span class="kw1">unless</span> <span class="sy0">-</span>f <span class="re0">$input_file</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://perldoc.perl.org/functions/warn.html"><span class="kw3">warn</span></a> <span class="br0">&#40;</span><span class="st0">&quot;Unable to find dir: <span class="es0">\&quot;</span>&quot;</span> <span class="sy0">.</span> <span class="re0">$output_dir</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\&quot;</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span> <span class="kw1">unless</span> <span class="sy0">-</span>f <span class="re0">$output_dir</span><span class="sy0">;</span><br />
&nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2012/01/07/perl-script-to-convert-an-audiobook-m4b-to-mp3-files-splitting-on-the-chapters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audiobook chapter support for FFprobe (Perl) module</title>
		<link>http://froebe.net/blog/2012/01/06/audiobook-chapter-support-for-ffprobe-perl-module/</link>
		<comments>http://froebe.net/blog/2012/01/06/audiobook-chapter-support-for-ffprobe-perl-module/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 02:37:59 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Diogo Franco]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[ffprobe]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[perl module]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1364</guid>
		<description><![CDATA[I have multiple audiobook files (m4b) that ffprobe is able to retrieve the chapters from just fine&#8230; except the chapter information is printed to stderr and never in the formatted (STDOUT) output. The Perl module FFprobe doesn&#8217;t handle the chapters so I submitted feature request #73803 Feature request is to format the chapter output. jason@jason-Inspiron-1545 [...]]]></description>
			<content:encoded><![CDATA[<h4>I have multiple audiobook files (m4b) that <a href="http://ffmpeg.org/">ffprobe</a> is able to retrieve the chapters from just fine&#8230; except the chapter information is printed to stderr and never in the formatted (STDOUT) output.  The Perl module <a href="http://search.cpan.org/~kovensky/FFprobe/lib/FFprobe.pm">FFprobe</a> doesn&#8217;t handle the chapters so I submitted <a href="https://rt.cpan.org/Ticket/Display.html?id=73803">feature request #73803</a></h4>
<h4>Feature request is to format the chapter output.</h4>
<div class="bash dean_ch">jason<span class="sy0">@</span>jason-Inspiron-<span class="nu0">1545</span> ~<span class="sy0">/</span>bin $ ffprobe <span class="st0">&quot;/home/jason/Audiobooks/Ben Bova/Mars/Mars 1.m4b&quot;</span> <span class="nu0">1</span><span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null<br />
&#8230;.<br />
&nbsp; libavutil &nbsp; &nbsp;<span class="nu0">51</span>. &nbsp;<span class="nu0">7</span>. <span class="nu0">0</span> <span class="sy0">/</span> <span class="nu0">51</span>. &nbsp;<span class="nu0">7</span>. <span class="nu0">0</span><br />
&nbsp; libavcodec &nbsp; <span class="nu0">53</span>. &nbsp;<span class="nu0">5</span>. <span class="nu0">0</span> <span class="sy0">/</span> <span class="nu0">53</span>. &nbsp;<span class="nu0">5</span>. <span class="nu0">0</span><br />
&nbsp; libavformat &nbsp;<span class="nu0">53</span>. &nbsp;<span class="nu0">2</span>. <span class="nu0">0</span> <span class="sy0">/</span> <span class="nu0">53</span>. &nbsp;<span class="nu0">2</span>. <span class="nu0">0</span><br />
&nbsp; libavdevice &nbsp;<span class="nu0">53</span>. &nbsp;<span class="nu0">0</span>. <span class="nu0">0</span> <span class="sy0">/</span> <span class="nu0">53</span>. &nbsp;<span class="nu0">0</span>. <span class="nu0">0</span><br />
&nbsp; libavfilter &nbsp; <span class="nu0">2</span>. &nbsp;<span class="nu0">4</span>. <span class="nu0">0</span> <span class="sy0">/</span> &nbsp;<span class="nu0">2</span>. &nbsp;<span class="nu0">4</span>. <span class="nu0">0</span><br />
&nbsp; libswscale &nbsp; &nbsp;<span class="nu0">2</span>. &nbsp;<span class="nu0">0</span>. <span class="nu0">0</span> <span class="sy0">/</span> &nbsp;<span class="nu0">2</span>. &nbsp;<span class="nu0">0</span>. <span class="nu0">0</span><br />
&nbsp; libpostproc &nbsp;<span class="nu0">52</span>. &nbsp;<span class="nu0">0</span>. <span class="nu0">0</span> <span class="sy0">/</span> <span class="nu0">52</span>. &nbsp;<span class="nu0">0</span>. <span class="nu0">0</span><br />
<span class="br0">&#91;</span>mov,mp4,m4a,3gp,3g2,mj2 <span class="sy0">@</span> 0xddfac0<span class="br0">&#93;</span> max_analyze_duration reached<br />
Input <span class="co0">#0, mov,mp4,m4a,3gp,3g2,mj2, from &#8216;/home/jason/Audiobooks/Ben Bova/Mars/Mars 1.m4b&#8217;:</span><br />
&nbsp; Metadata:<br />
&nbsp; &nbsp; major_brand &nbsp; &nbsp; : M4B <br />
&nbsp; &nbsp; minor_version &nbsp; : <span class="nu0">0</span><br />
&nbsp; &nbsp; compatible_brands: M4B mp42isom<br />
&nbsp; &nbsp; creation_time &nbsp; : <span class="nu0">2009</span>-09-08 <span class="nu0">16</span>:<span class="nu0">19</span>:<span class="nu0">29</span><br />
&nbsp; &nbsp; album &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Mars<br />
&nbsp; &nbsp; artist &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: Ben Bova<br />
&nbsp; &nbsp; genre &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Audiobook<br />
&nbsp; Duration: 03:<span class="nu0">51</span>:<span class="nu0">23.41</span>, start: <span class="nu0">0.000000</span>, bitrate: <span class="nu0">81</span> kb<span class="sy0">/</span>s<br />
&nbsp; &nbsp; Chapter <span class="co0">#0.0: start 0.000000, end 2779.567914</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; title &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Mars &#8211; 01 of <span class="nu0">24</span><br />
&nbsp; &nbsp; Chapter <span class="co0">#0.1: start 2779.567914, end 5555.049161</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; title &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Mars &#8211; 02 of <span class="nu0">24</span><br />
&nbsp; &nbsp; Chapter <span class="co0">#0.2: start 5555.049161, end 8334.617075</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; title &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Mars &#8211; 03 of <span class="nu0">24</span><br />
&nbsp; &nbsp; Chapter <span class="co0">#0.3: start 8334.617075, end 11110.098322</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; title &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Mars &#8211; 04 of <span class="nu0">24</span><br />
&nbsp; &nbsp; Chapter <span class="co0">#0.4: start 11110.098322, end 13883.419864</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; title &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Mars &#8211; 05 of <span class="nu0">24</span><br />
&nbsp; &nbsp; Stream <span class="co0">#0.0(und): Audio: aac, 44100 Hz, stereo, s16, 80 kb/s</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; creation_time &nbsp; : <span class="nu0">2009</span>-09-08 <span class="nu0">16</span>:<span class="nu0">19</span>:<span class="nu0">29</span><br />
&nbsp; &nbsp; Stream <span class="co0">#0.1(eng): Subtitle: text / 0&#215;74786574</span><br />
&nbsp; &nbsp; Metadata:<br />
&nbsp; &nbsp; &nbsp; creation_time &nbsp; : <span class="nu0">2009</span>-09-08 <span class="nu0">17</span>:<span class="nu0">31</span>:00<br />
Unsupported codec with <span class="kw2">id</span> <span class="nu0">94213</span> <span class="kw1">for</span> input stream <span class="nu0">1</span><br />
jason<span class="sy0">@</span>jason-Inspiron-<span class="nu0">1545</span> ~<span class="sy0">/</span>bin $ </div>
<h4>patch to add m4b chapter support:</h4>
<div class="perl dean_ch">82c82<br />
<span class="sy0">&lt;</span> <span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$tree</span><span class="sy0">,</span> <span class="re0">$branch</span><span class="sy0">,</span> <span class="re0">$tag</span><span class="sy0">,</span> <span class="re0">$stream</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="sy0">&#8212;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; <span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$tree</span><span class="sy0">,</span> <span class="re0">$branch</span><span class="sy0">,</span> <span class="re0">$tag</span><span class="sy0">,</span> <span class="re0">$stream</span><span class="sy0">,</span> <span class="re0">$chapter</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
100c100<span class="sy0">,</span><span class="nu0">108</span><br />
<span class="sy0">&lt;</span> <span class="br0">&#125;</span><br />
<span class="sy0">&#8212;</span><br />
<span class="sy0">&gt;</span> &nbsp; <span class="br0">&#125;</span> <span class="kw1">elsif</span> <span class="br0">&#40;</span><span class="re0">$line</span> <span class="sy0">=~</span> <span class="co2">m/Chapter \#(\d+\.*\d+): start (\d+\.*\d+)\, end (\d+\.*\d+)/i</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; &nbsp; <span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$start</span><span class="sy0">,</span> <span class="re0">$end</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="co3">$2</span><span class="sy0">,</span> <span class="co3">$3</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; &nbsp; <span class="re0">$chapter</span> <span class="sy0">=</span> <span class="co3">$1</span><span class="sy0">;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; &nbsp; <span class="re0">$chapter</span> <span class="sy0">=~</span> <span class="co2">s/\.//g</span><span class="sy0">;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; &nbsp; <span class="re0">$chapter</span> <span class="sy0">=~</span> <span class="co2">s/^0+(\d)/$1/</span><span class="sy0">;</span><br />
<span class="sy0">&gt;</span> <br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; &nbsp; <span class="re0">$$tree</span><span class="br0">&#123;</span>chapters<span class="br0">&#125;</span><span class="br0">&#123;</span><span class="re0">$chapter</span><span class="br0">&#125;</span> <span class="sy0">=</span> <span class="br0">&#123;</span> start <span class="sy0">=&gt;</span> <span class="re0">$start</span><span class="sy0">,</span> end <span class="sy0">=&gt;</span> <span class="re0">$end</span> <span class="br0">&#125;</span><span class="sy0">;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">elsif</span> <span class="br0">&#40;</span><span class="re0">$line</span> <span class="sy0">=~</span> <span class="co2">/title\s+: (.+)$/</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="sy0">&gt;</span> &nbsp; &nbsp; &nbsp; <span class="re0">$$tree</span><span class="br0">&#123;</span>chapters<span class="br0">&#125;</span><span class="br0">&#123;</span><span class="re0">$chapter</span><span class="br0">&#125;</span><span class="br0">&#123;</span>title<span class="br0">&#125;</span> <span class="sy0">=</span> <span class="co3">$1</span><span class="sy0">;</span><br />
101a110<br />
<span class="sy0">&gt;</span> &nbsp; <span class="br0">&#125;</span></div>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2012/01/06/audiobook-chapter-support-for-ffprobe-perl-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cat a number of files and want to know which file it is working on?</title>
		<link>http://froebe.net/blog/2011/11/28/cat-a-number-of-files-and-want-to-know-which-file-it-is-working-on/</link>
		<comments>http://froebe.net/blog/2011/11/28/cat-a-number-of-files-and-want-to-know-which-file-it-is-working-on/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 21:26:17 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[libvirt / KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[lsof]]></category>
		<category><![CDATA[pbzip2]]></category>
		<category><![CDATA[split]]></category>
		<category><![CDATA[watch]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1359</guid>
		<description><![CDATA[In the following example, I have 21 files that came from a raw partition that I split at 10GB intervals. I am piping that to parallel bzip2 (pbzip2) and writing it to a raw partition (logical volume). &#160;cat /mnt/DBADEV1/DBADEV1.disk.bz2.00 /mnt/DBADEV1/DBADEV1.disk.bz2.01 /mnt/DBADEV1/DBADEV1.disk.bz2.02 /mnt/DBADEV1/DBADEV1.disk.bz2.03 /mnt/DBADEV1/DBADEV1.disk.bz2.04 /mnt/DBADEV1/DBADEV1.disk.bz2.05 /mnt/DBADEV1/DBADEV1.disk.bz2.06 /mnt/DBADEV1/DBADEV1.disk.bz2.07 /mnt/DBADEV1/DBADEV1.disk.bz2.08 /mnt/DBADEV1/DBADEV1.disk.bz2.09 /mnt/DBADEV1/DBADEV1.disk.bz2.10 /mnt/DBADEV1/DBADEV1.disk.bz2.11 /mnt/DBADEV1/DBADEV1.disk.bz2.12 /mnt/DBADEV1/DBADEV1.disk.bz2.13 /mnt/DBADEV1/DBADEV1.disk.bz2.14 /mnt/DBADEV1/DBADEV1.disk.bz2.15 /mnt/DBADEV1/DBADEV1.disk.bz2.16 [...]]]></description>
			<content:encoded><![CDATA[<h3>In the following example, I have 21 files that came from a raw partition that I split at 10GB intervals.  I am piping that to parallel bzip2 (pbzip2) and writing it to a raw partition (logical volume).</h3>
<blockquote>
<div class="bash dean_ch">&nbsp;<span class="kw2">cat</span> <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.00 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.01 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.02 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.03 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.04 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.05 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.06 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.07 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.08 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.09 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.10 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.11 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.12 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.13 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.14 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.15 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.16 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.17 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.18 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.19 <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.20 <span class="sy0">|</span> pbzip2 <span class="re5">-dcv</span> <span class="re5">-p4</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>mapper<span class="sy0">/</span>VG_VMH1-LV_DBADEV1</div>
</blockquote>
<h4>Output:</h4>
<blockquote>
<div class="bash dean_ch">Parallel BZIP2 v1.0.5 &#8211; by: Jeff Gilchrist <span class="br0">&#91;</span>http:<span class="sy0">//</span>compression.ca<span class="br0">&#93;</span><br />
<span class="br0">&#91;</span>Jan. 08, <span class="nu0">2009</span><span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>uses libbzip2 by Julian Seward<span class="br0">&#41;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co0"># CPUs: 4</span><br />
<span class="re5">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File <span class="co0">#: 1 of 1</span><br />
&nbsp; &nbsp; &nbsp;Input Name: <br />
&nbsp; &nbsp; Output Name: </p>
<p>&nbsp;BWT Block Size: 900k<br />
Decompressing data <span class="br0">&#40;</span>no threads<span class="br0">&#41;</span>&#8230;</div>
</blockquote>
<h3>This will take a while, so let&#8217;s determine which file it is currently working on:</h3>
<blockquote>
<div class="bash dean_ch">$ lsof<span class="sy0">|</span><span class="kw2">grep</span> DBADEV1<br />
<span class="kw2">cat</span> &nbsp; &nbsp; &nbsp; <span class="nu0">24137</span> &nbsp; &nbsp; &nbsp;root &nbsp; &nbsp;3r &nbsp; &nbsp; &nbsp;REG &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">8</span>,<span class="nu0">1</span> &nbsp; <span class="nu0">10737418240</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">80</span> <span class="sy0">/</span>mnt<span class="sy0">/</span>DBADEV1<span class="sy0">/</span>DBADEV1.disk.bz2.07</div>
</blockquote>
<h3>Oh boy, it&#8217;s only on file #8.  oh well, we can watch it a little easier with the &#8220;watch&#8221; command set to run the lsof command every 5 seconds:</h3>
<blockquote>
<div class="bash dean_ch"><span class="kw2">watch</span> <span class="re5">-n5</span> <span class="st_h">&#8216;lsof|grep DBADEV1&#8242;</span></div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/cat-a-number-of-files-and-want-to-know-which-file-it-is-working-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wanted:  Technical Support Analyst &#8211; WebSphere Linux SQL (2 positions available)</title>
		<link>http://froebe.net/blog/2011/11/28/wanted-technical-support-analyst-websphere-linux-sql/</link>
		<comments>http://froebe.net/blog/2011/11/28/wanted-technical-support-analyst-websphere-linux-sql/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 17:29:44 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[analyst]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[tse]]></category>
		<category><![CDATA[websphere]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1354</guid>
		<description><![CDATA[Position Responsibilities POSITION OVERVIEW The Technical Support Analyst for SunGard InvestOne&#8217;s global clients will be responsible for hands-on technical troubleshooting and support across a variety of platforms for a broad customer client base. This position is part of a global team with local responsibilities from 8am to 8pm. The Analyst will be responsible for Tier [...]]]></description>
			<content:encoded><![CDATA[<p>Position Responsibilities </p>
<p>POSITION OVERVIEW</p>
<p>The Technical Support Analyst for SunGard InvestOne&#8217;s global clients will be responsible for hands-on technical troubleshooting and support across a variety of platforms for a broad customer client base.  This position is part of a global team with local responsibilities from 8am to 8pm.</p>
<p>The Analyst will be responsible for Tier 1 level support, which includes break/fix management and communications to internal stake holders regarding status and problem tracking.  </p>
<p>He/She will also be responsible for performance, availability and customer satisfaction for all levels of a series of n-tier distributed web based applications.</p>
<p>PRIMARY RESPONSIBILITIES</p>
<p>•	Monitor error alerts from various systems<br />
•	Document incidents as warranted<br />
•	Answer client questions relating to technical aspects of the application<br />
•	Adhere to change control policies<br />
•	Responsible for first level technical system support for multiple customers along with implementation of network connectivity for new and existing customers<br />
•	Position is 80% technical and 20% project/customer management<br />
•	Participation on an on-call rotation is required<br />
•	Occasional weekend work is required</p>
<p>Position Requirements </p>
<p>•	Bachelor’s degree, preferably in an IT-related discipline, or the equivalent of education and experience<br />
•	Minimum of five years of related, technical experience, preferably in the financial systems industry<br />
•	Experience with troubleshooting, diagnosis and resolution of complex technical issues as well as escalation for complex web based applications<br />
•	Knowledge of Windows and Linux administration<br />
•	Knowledge of WebSphere<br />
•	Experience with Transact SQL, preferably Sybase<br />
•	Excellent communications skills and ability to translate technical concepts<br />
•	Excellent interpersonal, analytical, business and technical judgment, negotiation, problem solving, verbal and written communication skills<br />
•	Critical thinking skills and a mature approach to troubleshooting is critical<br />
•	Knowledge of investment accounting principles is a big plus<br />
•	Previous experience as Java developer is desired<br />
•	ITIL certification is desired but not required</p>
<p>Interested? (say I referred you on the <a href="http://careers.peopleclick.com/careerscp/client_sungard/external/jobDetails.do?functionName=getJobDetail&#038;jobPostId=25845&#038;localeCode=en-us">application form</a>) or <a href="http://careers.peopleclick.com/careerscp/client_sungard/external/jobDetails.do?functionName=getJobDetail&#038;jobPostId=25841&#038;localeCode=en-us">this one</a></p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/wanted-technical-support-analyst-websphere-linux-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wanted: Microsoft SQL Server DBA (Chicago, IL)</title>
		<link>http://froebe.net/blog/2011/11/28/wanted-microsoft-sql-server-dba-chicago-il/</link>
		<comments>http://froebe.net/blog/2011/11/28/wanted-microsoft-sql-server-dba-chicago-il/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 17:23:31 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Chicago]]></category>
		<category><![CDATA[dba]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[wanted]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1351</guid>
		<description><![CDATA[Position Responsibilities Provides DBA services for Production, test, and development databases Administers and maintains the production, test, and development databases. Performs SQL code releases Reviews application designs for compliance with production acceptance requirements. Complies with IT policies and procedures, especially those for quality and productivity standards Complies with Information Security policies and procedures. Verifies deliverables [...]]]></description>
			<content:encoded><![CDATA[<p>Position Responsibilities </p>
<p>Provides  DBA services for Production, test, and development databases<br />
Administers and maintains the production, test, and development databases.<br />
Performs SQL code releases<br />
Reviews application designs for compliance with production acceptance requirements.<br />
Complies with IT policies and procedures, especially those for quality and productivity standards<br />
Complies with Information Security policies and procedures.  Verifies deliverables meet Information Security requirements.<br />
Participates in special projects and performs other related duties as assigned.<br />
Operations are 24 x 7. May be required to be on call, work beyond normal business hours</p>
<p>Position Requirements </p>
<p>B.S. in computer science<br />
2 to 3  years experience<br />
Strong written and oral communication skills.<br />
Strong analysis and problem solving skills.<br />
Working knowledge of the following DBA practices and concepts: database backup &#038; recovery, database performance &#038; tuning, database monitoring, and maintenance.<br />
Working knowledge of Visual Source Safe<br />
Strong knowledge of database design and administration<br />
Stored procedure and view development and troubleshooting<br />
Database size management (includes volume/disk mgmt., file and filegroup allocations.)<br />
Basic understanding of Microsoft Clustering technology<br />
Proficient with Microsoft Office Suite<br />
Entry level knowledge of networking<br />
Entry level skill set of database performance tuning/indexing<br />
SSRS, SSIS, and scripting experience a plus.</p>
<p>Interested? (say I referred you on the <a href="http://careers.peopleclick.com/careerscp/client_sungard/external/jobDetails.do?functionName=getJobDetail&#038;jobPostId=28819&#038;localeCode=en-us">application form</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/wanted-microsoft-sql-server-dba-chicago-il/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wanted:  Entry level or Mid-level Oracle DBA (Chicago, IL)</title>
		<link>http://froebe.net/blog/2011/11/28/wanted-entry-level-or-mid-level-oracle-dba-chicago-il/</link>
		<comments>http://froebe.net/blog/2011/11/28/wanted-entry-level-or-mid-level-oracle-dba-chicago-il/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 17:20:28 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Jobs]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Chicago]]></category>
		<category><![CDATA[dba]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[wanted]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1348</guid>
		<description><![CDATA[Position Responsibilities • Manage database configurations, schemas, and space • Manage database and system alerts. • Support new application code releases / builds in various production and non-production environments • Provide performance tuning, problem research/resolution, code reviews and deployments, SQL support, and data movement • Manage database changes for releases and new projects • Provide [...]]]></description>
			<content:encoded><![CDATA[<p>Position Responsibilities </p>
<p>•  Manage database configurations, schemas, and space  •  Manage database and system alerts. •  Support new application code releases / builds in various production and non-production environments  •  Provide performance tuning, problem research/resolution, code reviews and deployments, SQL support, and data movement  •  Manage database changes for releases and new projects  •  Provide SQL and application tuning assistance  •  Build Backups / Recovery and High Availability  •  Manage disaster recovery support and testing •  Monitor database health and alerts  •  Provide production on-call support on rotational basis  •  Manage database and product deployments and repeated database maintenance and monitoring tasks  •  Troubleshooting database issues  •  Open &#038; follow-up on change request tickets for internal users •  Open and follow-up on service requests with Oracle vendor support</p>
<p>Position Requirements </p>
<p>•  Degree or equivalent experience in either Oracle or Sybase.   •  BS in Computer Science or equivalent specializing in Oracle or Sybase •  Good understanding of relational methodology  •  Good understanding of SQL Plus or equivalent •   Good communication skills and the ability to work as a team member  •  Good analytical and problem solving skills. •  Self starter with willingness to do independent research and trouble shooting.  •  Willingness to learn new database skills in a fast paced environment •  Education or Experience with Unix shell scripts helpful •  Good understanding of relational methodology  •  Must be comfortable in both self-managed and team driven environment  •  Experience with Microsoft Office Tools helpful</p>
<p>Interested?   (say I referred you on the <a href="http://careers.peopleclick.com/careerscp/client_sungard/external/jobDetails.do?functionName=getJobDetail&amp;jobPostId=28936&amp;localeCode=en-us">application form</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/wanted-entry-level-or-mid-level-oracle-dba-chicago-il/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libvirt/KVM best practices</title>
		<link>http://froebe.net/blog/2011/11/28/libvirtkvm-best-practices/</link>
		<comments>http://froebe.net/blog/2011/11/28/libvirtkvm-best-practices/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 17:11:15 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[libvirt / KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[libvirt]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1346</guid>
		<description><![CDATA[For those of you that are thinking about using using libvirt/kvm on Linux&#8230; here is a discussion on proposed best practices]]></description>
			<content:encoded><![CDATA[<p>For those of you that are thinking about using using libvirt/kvm on Linux&#8230; here is a discussion on <a href="http://dag.wieers.com/blog/kvm-and-libvirt-best-practices">proposed best practices</a>  </p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/libvirtkvm-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KVM: virsh and virt-top</title>
		<link>http://froebe.net/blog/2011/11/28/kvm-virsh-and-virt-top/</link>
		<comments>http://froebe.net/blog/2011/11/28/kvm-virsh-and-virt-top/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:37:20 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[libvirt / KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[.virt-toprc]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[libvirt]]></category>
		<category><![CDATA[virsh]]></category>
		<category><![CDATA[VIRSH_DEFAULT_CONNECT_URI]]></category>
		<category><![CDATA[virt-top]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1341</guid>
		<description><![CDATA[little annoyed that setting a &#8216;default&#8217; connect string with virt-top and virsh is different: virsh uses the environment variable VIRSH_DEFAULT_CONNECT_URI export VIRSH_DEFAULT_CONNECT_URI=&#8217;qemu:///system&#8217; virt-top uses the config file .virt-toprc connect qemu:///system]]></description>
			<content:encoded><![CDATA[<p>little annoyed that setting a &#8216;default&#8217; connect string with virt-top and virsh is different:</p>
<p>virsh uses the environment variable VIRSH_DEFAULT_CONNECT_URI<br />
export VIRSH_DEFAULT_CONNECT_URI=&#8217;qemu:///system&#8217;</p>
<p>virt-top uses the config file .virt-toprc<br />
connect qemu:///system</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/kvm-virsh-and-virt-top/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KVM:  Virtual Bridge (virbr0) is NOT needed!  I show you how to remove it :)</title>
		<link>http://froebe.net/blog/2011/11/28/kvm-virtual-bridge-virbr0-is-not-needed-i-show-you-how-to-remove-it/</link>
		<comments>http://froebe.net/blog/2011/11/28/kvm-virtual-bridge-virbr0-is-not-needed-i-show-you-how-to-remove-it/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:20:03 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[libvirt / KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[bridge]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[libvirt]]></category>
		<category><![CDATA[libvirt-bin]]></category>
		<category><![CDATA[libvirtd]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[qemu]]></category>
		<category><![CDATA[virbr0]]></category>
		<category><![CDATA[virsh]]></category>
		<category><![CDATA[virtual]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1328</guid>
		<description><![CDATA[for KVM, using an actual network bridge is desired for performance over NAT. There is a virtual bridge used by XEN (virbr0) that you won&#8217;t need. To disable it: $ virsh net-destroy default $ virsh net-undefine default # If Redhat based distro: $ service libvirt-bin stop # if Debian/Ubuntu based distro: $ service libvirtd restart [...]]]></description>
			<content:encoded><![CDATA[<p>for KVM, using an actual network bridge is desired for performance over NAT.  There is a virtual bridge used by XEN (virbr0) that you won&#8217;t need.<br />
To disable it:</p>
<div class="bash dean_ch">
$ virsh net-destroy default<br />
$ virsh net-undefine default</p>
<p><span class="co0"># If Redhat based distro:</span><br />
$ service libvirt-bin stop<br />
<span class="co0"># if Debian/Ubuntu based distro:</span><br />
$ service libvirtd restart &nbsp;</p>
<p>$ <span class="kw2">ifconfig</span><br />
&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/kvm-virtual-bridge-virbr0-is-not-needed-i-show-you-how-to-remove-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting a permission denied for your home directory while logging in but you can cd to it no problem?</title>
		<link>http://froebe.net/blog/2011/11/28/getting-a-permission-denied-for-your-home-directory-while-logging-in-but-you-can-cd-to-it-no-problem/</link>
		<comments>http://froebe.net/blog/2011/11/28/getting-a-permission-denied-for-your-home-directory-while-logging-in-but-you-can-cd-to-it-no-problem/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:15:00 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[permission]]></category>
		<category><![CDATA[restorecon]]></category>
		<category><![CDATA[selinux]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1326</guid>
		<description><![CDATA[It is likely SELinux trying to keep you safe.  Just run: $ restorecon /home It will correct the SELinux flags on the /home directory.]]></description>
			<content:encoded><![CDATA[<p>It is likely SELinux trying to keep you safe.  Just run:</p>
<pre lang='bash'>$ restorecon /home</pre>
<p>It will correct the SELinux flags on the /home directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/28/getting-a-permission-denied-for-your-home-directory-while-logging-in-but-you-can-cd-to-it-no-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s been a long time</title>
		<link>http://froebe.net/blog/2011/11/02/its-been-a-long-time/</link>
		<comments>http://froebe.net/blog/2011/11/02/its-been-a-long-time/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 19:15:43 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1323</guid>
		<description><![CDATA[It&#8217;s so easy to get wrapped up in work and life&#8230;]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s so easy to get wrapped up in work and life&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/11/02/its-been-a-long-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>if you&#8217;re unable to install the broadcom sta driver on ubuntu 11.04&#8230; we have the answer</title>
		<link>http://froebe.net/blog/2011/04/29/if-youre-unable-to-install-the-broadcom-sta-driver-on-ubuntu-11-04-we-have-the-answer/</link>
		<comments>http://froebe.net/blog/2011/04/29/if-youre-unable-to-install-the-broadcom-sta-driver-on-ubuntu-11-04-we-have-the-answer/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 23:38:45 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[11.04]]></category>
		<category><![CDATA[broadcom]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[natty]]></category>
		<category><![CDATA[sta]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1320</guid>
		<description><![CDATA[if you&#8217;re unable to install the broadcom sta driver on ubuntu 11.04, fire up synaptic and reinstall bcmwl-kernel-source 2011-04-29 18:29:50,089 WARNING: /sys/module/wl/drivers does not exist, cannot rebind wl driver it should work now]]></description>
			<content:encoded><![CDATA[<p>if you&#8217;re unable to install the broadcom sta driver on ubuntu 11.04, fire up synaptic and reinstall bcmwl-kernel-source</p>
<p>2011-04-29 18:29:50,089 WARNING: /sys/module/wl/drivers does not exist, cannot rebind wl driver</p>
<p>it should work now <img src='http://froebe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/04/29/if-youre-unable-to-install-the-broadcom-sta-driver-on-ubuntu-11-04-we-have-the-answer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing Linux huge memory pages &amp; Kernel Samepage Merging for KVM virtualization</title>
		<link>http://froebe.net/blog/2011/04/07/comparing-linux-huge-memory-pages-kernel-samepage-merging-for-kvm-virtualization/</link>
		<comments>http://froebe.net/blog/2011/04/07/comparing-linux-huge-memory-pages-kernel-samepage-merging-for-kvm-virtualization/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 20:59:28 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Proxmox VE]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[huge pages]]></category>
		<category><![CDATA[Kernel Samepage Merging]]></category>
		<category><![CDATA[ksm]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[proxmox ve]]></category>
		<category><![CDATA[qemu]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1318</guid>
		<description><![CDATA[A quick test (so take it with a grain of salt): Huge pages is slightly faster than not using huge pages (~10% with 4 winxp virtual machines copying 512MB from one memory location to another). KSM is slightly slower then not using KSM (~5% with 4 winxp virtual machines copying 512MB from one memory location [...]]]></description>
			<content:encoded><![CDATA[<p>A quick test (so take it with a grain of salt):</p>
<ol>
<li> <a href="http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaat/liaattunconfighp.htm">Huge pages</a> is slightly faster than not using huge pages (~10% with 4  winxp virtual machines copying 512MB from one memory location to  another).</li>
<li><a href="http://pve.proxmox.com/wiki/KSM">KSM</a> is slightly slower then not using KSM (~5% with 4 winxp virtual  machines copying 512MB from one memory location to another).</li>
</ol>
<p>So, at first glance it would appear that we can use a loose rule of thumb:</p>
<ol>
<li>to consolidate the maximum number of machines, use KSM as it will allow you to over commit the amount of memory on your box.
<ol>
<li>Risk:  if the memory pages are significantly different, you may  start swapping in a very bad way.  This is where monitoring comes in</li>
</ol>
</li>
<li>to give the best performance to a number of machines, use huge memory pages.. does not allow you to over commit
<ol>
<li>Risk:  if you don&#8217;t leave enough memory for the host os, you can crash your machine.  This is also where monitoring comes in</li>
</ol>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/04/07/comparing-linux-huge-memory-pages-kernel-samepage-merging-for-kvm-virtualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proxmox VE 1.8 and KVM:  Adding sound to your virtual machines!</title>
		<link>http://froebe.net/blog/2011/04/07/proxmox-ve-1-8-and-kvm-adding-sound-to-your-virtual-machines/</link>
		<comments>http://froebe.net/blog/2011/04/07/proxmox-ve-1-8-and-kvm-adding-sound-to-your-virtual-machines/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 19:14:06 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Proxmox VE]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[proxmox ve]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[win vista]]></category>
		<category><![CDATA[win7]]></category>
		<category><![CDATA[winxp]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1315</guid>
		<description><![CDATA[This assumes that your host machine has a sound card! Add the args line in your /etc/qemu-server/&#60;vm id&#62;.conf file should give you sound: args: -soundhw On my Proxmox VE 1.8, I have several virtual audio devices available.   I&#8217;ve had the best luck with ac97 with Windows XP/Vista and Win7. red:/etc/qemu-server# kvm -soundhw &#8216;?&#8217; Valid sound [...]]]></description>
			<content:encoded><![CDATA[<p>This assumes that your host machine has a sound card! <img src='http://froebe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Add the args line in your /etc/qemu-server/&lt;vm id&gt;.conf file should give you sound:</p>
<blockquote><p>args: -soundhw</p></blockquote>
<p>On my Proxmox VE 1.8, I have several virtual audio devices available.   I&#8217;ve had the best luck with ac97 with Windows XP/Vista and Win7.</p>
<blockquote><p>red:/etc/qemu-server# kvm -soundhw &#8216;?&#8217;<br />
Valid sound card names (comma separated):<br />
pcspk       PC speaker<br />
sb16        Creative Sound Blaster 16<br />
ac97        Intel 82801AA AC97 Audio<br />
es1370      ENSONIQ AudioPCI ES1370<br />
hda         Intel HD Audio</p>
<p>-soundhw all will enable all of the above</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/04/07/proxmox-ve-1-8-and-kvm-adding-sound-to-your-virtual-machines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>﻿Sybase ASE&#8217;s &#8220;lock hashtable size&#8221; is NOT just for Cluster Edition!!</title>
		<link>http://froebe.net/blog/2011/01/14/%ef%bb%bfsybase-ases-lock-hashtable-size-is-not-just-for-cluster-edition/</link>
		<comments>http://froebe.net/blog/2011/01/14/%ef%bb%bfsybase-ases-lock-hashtable-size-is-not-just-for-cluster-edition/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 23:04:25 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[ASE]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Sybase]]></category>
		<category><![CDATA[cluster edition]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[documentation bug]]></category>
		<category><![CDATA[lock hashtable size]]></category>
		<category><![CDATA[manuals]]></category>
		<category><![CDATA[sybooks]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1305</guid>
		<description><![CDATA[﻿The "cluster edition only" note in v15.0 documentation was a DOCUMENTATION BUG that was fixed in 15.5. Why the F is Sybase techsupport still saying it is only for cluster edition???? It was introduced in v11.9.2 more than a DECADE ago. Sybase TechSupport: read your manuals!]]></description>
			<content:encoded><![CDATA[<p>﻿The &#8220;cluster edition only&#8221; note in v15.0 documentation was a DOCUMENTATION BUG that was fixed in 15.5. Why the F is Sybase techsupport still saying it is only for cluster edition???? It was <a href="http://tinyurl.com/4p6hzfb">introduced in v11.9.2</a> more than a DECADE ago. Sybase TechSupport: read your manuals!</p>
<blockquote><p><em><a href="http://manuals.sybase.com/onlinebooks/group-asarc/asg1192e/asefun92/@ebt-link;nh=1;pt=25096?target=%25N%15_25299_START_RESTART_N%25;;__prev_hit__=25096;__next_hit__=25300;DwebQuery=lock+hashtable+size">New Functionality in Adaptive Server Enterprise 11.9.2</a><br />
</em></p>
<h2><em> lock hashtable size</em></h2>
<table border="2">
<tbody>
<tr>
<th colspan="2"><em>Summary Information</em></th>
</tr>
<tr>
<td><em>Default value</em></td>
<td><em>2048</em></td>
</tr>
<tr>
<td><em>Range of values</em></td>
<td><em>1-2147483647</em></td>
</tr>
<tr>
<td><em>Status</em></td>
<td><em>Static</em></td>
</tr>
<tr>
<td><em>Display level</em></td>
<td><em>Comprehensive</em></td>
</tr>
<tr>
<td><em>Required role</em></td>
<td><em>System Administrator</em></td>
</tr>
</tbody>
</table>
<p><em>The lock hashtable size parameter specifies the number of hash buckets in the lock hash table. This table manages all row, page, and table locks and all lock requests. Each time a task acquires a lock, the lock is assigned to a hash bucket, and each lock request for that lock checks the same hash bucket. Setting this value too low results in large numbers of locks in each hash bucket and slows the searches. On Adaptive Servers with multiple engines, setting this value too low can also lead to increased spinlock contention. You should not set the value to less than the default value, 2048.</em></p>
<p><em>lock hashtable size must be a power of 2. If the value you specify is not a power of 2, sp_configure rounds the value to the next highest power of 2 and prints an informational message.</em></p>
<p><em>The optimal hash table size is a function of the number of distinct objects (pages, tables, and rows) that will be locked concurrently. The optimal hash table size is at least 20 percent of the number of distinct objects that need to be locked concurrently. See &#8220;Lock Hash Table Information&#8221; for more information on configuring the lock hash table size.</em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2011/01/14/%ef%bb%bfsybase-ases-lock-hashtable-size-is-not-just-for-cluster-edition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PODCAST: &#8220;Too Jewish with Rabbi Sam Cohon and Friends&#8221; RSS feed working again</title>
		<link>http://froebe.net/blog/2010/12/27/podcast-too-jewish-with-rabbi-sam-cohen-and-friends-rss-feed-working-again/</link>
		<comments>http://froebe.net/blog/2010/12/27/podcast-too-jewish-with-rabbi-sam-cohen-and-friends-rss-feed-working-again/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 01:25:03 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[config::simple]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[miro]]></category>
		<category><![CDATA[Rabbi Sam Cohon]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[too jewish]]></category>
		<category><![CDATA[xml::rss]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1301</guid>
		<description><![CDATA[A while ago I wrote a Perl script that would create a RSS feed so I could listen to the podcast outside of iTunes (e.g. Miro).  It stopped a few months back when I moved servers.  It&#8217;s working again. Can’t find a working RSS feed for the “Too Jewish with Rabbi Cohon” podcast? Here is [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago I <a href="http://froebe.net/blog/2009/07/20/source-code-for-scraping-the-website-of-too-jewish-radio-program-to-create-two-rss-feeds-audio-podcast/">wrote a Perl script</a> that would create a RSS feed so I could listen to the podcast outside of iTunes (e.g. Miro).  It stopped a few months back when I moved servers.  It&#8217;s working again.</p>
<p><a href="http://www.toojewishradio.com/"><img src="http://www.froebe.net/images/TooJewishlogo_color.png" alt="" width="415" height="151" /></a></p>
<h2><a title="Permanent Link to Can’t find a working RSS feed for the “Too Jewish with Rabbi Cohon” podcast?  Here is a working RSS feed that is updated every Monday morning!" rel="bookmark" href="http://froebe.net/blog/2009/07/07/cant-find-a-working-rss-feed-for-the-too-jewish-with-rabbi-cohon-podcast-here-is-a-working-rss-feed-that-is-updated-every-monday-morning/">Can’t find a working RSS feed for the “Too Jewish with Rabbi Cohon” podcast? Here is a working RSS feed that is updated every Monday morning!</a></h2>
<p><a title="Miro: Internet TV" href="http://subscribe.getmiro.com/?type=audio&amp;url1=http%3A%2F%2Fwww.froebe.net%2Frss%2Ftoo_jewish_full.rss"><img src="http://subscribe.getmiro.com/img/buttons/wes1.png" border="0" alt="Miro Video Player" /></a></p>
<p><a href="http://www.froebe.net/rss/too_jewish_full.rss">All <img src="http://www.froebe.net/images/rssbutton.gif" alt="" /></a></p>
<p><a href="http://www.froebe.net/rss/too_jewish_recent.rss">Last 10 <img src="http://www.froebe.net/images/rssbutton.gif" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2010/12/27/podcast-too-jewish-with-rabbi-sam-cohen-and-friends-rss-feed-working-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install PostgreSQL 9 on Ubuntu Linux 10.04/10.10</title>
		<link>http://froebe.net/blog/2010/12/18/how-to-install-postgresql-9-on-ubuntu-linux-10-0410-10/</link>
		<comments>http://froebe.net/blog/2010/12/18/how-to-install-postgresql-9-on-ubuntu-linux-10-0410-10/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 15:59:32 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[DBMS]]></category>
		<category><![CDATA[Dctr Watson]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1298</guid>
		<description><![CDATA[Very easy, just add a repository and run apt-get install postresql-9.0 Dctr Watson explains how: Installing PostgreSQL 9.0 on Ubuntu 10.04]]></description>
			<content:encoded><![CDATA[<p>Very easy, just add a repository and run apt-get install postresql-9.0 <img src='http://froebe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <a href="http://www.postgresql.org"><img class="alignright" title="PostgreSQL" src="http://www.postgresql.org/layout/images/hdr_left.png" alt="" width="230" height="80" /></a></p>
<p><a href="http://www.dctrwatson.com/">Dctr Watson</a> explains how:</p>
<h2><a href="http://www.dctrwatson.com/2010/09/installing-postgresql-9-0-on-ubuntu-10-04/">Installing PostgreSQL 9.0 on Ubuntu 10.04</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2010/12/18/how-to-install-postgresql-9-on-ubuntu-linux-10-0410-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Western Digital&#8217;s Firmware 1.04.10 blocks PlayOn Media Server (workaround)</title>
		<link>http://froebe.net/blog/2010/11/28/western-digitals-firmware-1-04-10-blocks-playon-media-server-workaround/</link>
		<comments>http://froebe.net/blog/2010/11/28/western-digitals-firmware-1-04-10-blocks-playon-media-server-workaround/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 00:31:21 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[media player]]></category>
		<category><![CDATA[mediamall]]></category>
		<category><![CDATA[playon]]></category>
		<category><![CDATA[tv]]></category>
		<category><![CDATA[wdtv]]></category>
		<category><![CDATA[western digital]]></category>
		<category><![CDATA[workaround]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1296</guid>
		<description><![CDATA[Western Digital released firmware upgrade 1.04.10 yesterday (November 27th) for the Western Digital WD TV Live Network-ready HD Media Player and Western Digital WD TV Live Plus HD Media Player.  This caused the media players (little boxes that hook up to the tv) to no longer see some network media servers such as Playon from [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wdc.com/en/">Western Digital</a> released firmware upgrade 1.04.10 yesterday (November 27th) for the <a href="http://www.amazon.com/gp/product/B002KKFP9Y?ie=UTF8&amp;tag=froebe-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B002KKFP9Y">Western Digital WD TV Live Network-ready HD Media Player</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=froebe-20&amp;l=as2&amp;o=1&amp;a=B002KKFP9Y" border="0" alt="" width="1" height="1" /> and <a href="http://www.amazon.com/gp/product/B003MVZ60I?ie=UTF8&amp;tag=froebe-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B003MVZ60I">Western Digital WD TV Live Plus HD Media Player</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=froebe-20&amp;l=as2&amp;o=1&amp;a=B003MVZ60I" border="0" alt="" width="1" height="1" />.  This caused the media players (little boxes that hook up to the tv) to <a href="http://www.playon.tv/forum/media-devices/western-digital-wdtv/version-10410v">no longer see some network media servers</a> such as <a href="http://www.playon.tv">Playon</a> from MediaMall Technologies.</p>
<p>There is currently no fix but we do have a workaround:  downgrade the firmware to 1.03.49.  Don&#8217;t worry it is very easy.</p>
<ol>
<li><a href="http://wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/std_adp.php?p_faqid=5800">Download the firmware</a> from Western Digital</li>
<li>Unzip the file to a USB thumb drive (make sure you put it in the top directory)</li>
<li>Insert the thumb drive into the WD box</li>
<li>Press the Home button (blue button)</li>
<li>Upgrade the firmware (note that the version number displayed for the old firmware will show up as a larger number &#8211; this is necessary for it to downgrade the firmware)</li>
<li>That&#8217;s it</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2010/11/28/western-digitals-firmware-1-04-10-blocks-playon-media-server-workaround/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Upgrading Sybase ASE 12.5.4 -&gt; 15.0.3 esd 4 &amp; bug # 643188</title>
		<link>http://froebe.net/blog/2010/11/26/upgrading-sybase-ase-12-5-4-15-0-3-esd-4-bug-643188/</link>
		<comments>http://froebe.net/blog/2010/11/26/upgrading-sybase-ase-12-5-4-15-0-3-esd-4-bug-643188/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 16:17:13 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[ASE]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Sybase]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bug 643188]]></category>
		<category><![CDATA[cr #643188]]></category>
		<category><![CDATA[technical support]]></category>
		<category><![CDATA[workaround]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1290</guid>
		<description><![CDATA[We&#8217;ve been upgrading a number of Sybase ASE databases from the end-of-life&#8217;d 12.5.x to v15.0.3 esd 4 the last few weeks.   My coworker (Degang He) ran into an interesting error when the upgrade process was failing on sysprocedures. Database &#8216;my_db&#8217;: beginning upgrade step [ID 26]: alter table (table sysprocedures) Command has been aborted. Msg 3461, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_560" class="wp-caption alignright" style="width: 193px"><a href="http://www.sybase.com"><img class="size-full wp-image-560" title="Sybase, Inc." src="http://froebe.net/blog/wp-content/uploads/2008/07/sybase.png" alt="" width="183" height="74" /></a><p class="wp-caption-text">Sybase</p></div>
<p>We&#8217;ve been upgrading a number of <a href="http://www.sybase.com/ase">Sybase ASE</a> databases from the <a href="http://m.sybase.com/detail?id=1053693">end-of-life&#8217;d 12.5.x</a> to v15.0.3 esd 4 the last few weeks.   My coworker (Degang He) ran into an interesting error when the upgrade process was failing on sysprocedures.</p>
<blockquote><p><em>Database &#8216;my_db&#8217;: beginning upgrade step [ID 26]: alter table (table sysprocedures)<br />
Command has been aborted.</em></p>
<p><em>Msg 3461, Level 20, State 1:<br />
Server &#8216;my_server&#8217;, Line 1:<br />
Database &#8216;my_db&#8217;: upgrade could not install required upgrade item &#8217;26&#8242;. Please refer to previous error messages to determine the problem. Fix the problem, then try again.</em></p>
<p><em>Msg 3451, Level 20, State 1:<br />
Server &#8216;my_server&#8217;, Line 1:<br />
Database &#8216;my_db&#8217;: upgrade has failed for this database. Please refer to previous messages for the cause of the failure, correct the problem and try again.</em></p>
<p><em>Msg 3454, Level 20, State 1:<br />
Server &#8216;my_server&#8217;, Line 1:</em></p>
<p><em>Database &#8216;my_db&#8217;: ASE could not completely upgrade this database; upgrade item 1501 could not be installed.</em></p></blockquote>
<p>We looked on <a href="http://search.sybase.com/search/simple.do">Sybase&#8217;s Solved Cases</a> and <a href="http://www.google.com">Google</a> but didn&#8217;t find anything that would really fit the problem.  So we called up Sybase Technical Support.  <a href="mailto:somdev.sharma@sybase.com">Somdev Sharma</a> of Sybase was able to determine that this was a bug in the ASE 15x codeline and provided a workaround:</p>
<blockquote>
<h3>CR #643188:</h3>
<p>Title Online database failed with 3461 error during upgrade , &#8216;max parallel degree&#8217; &gt;1</p>
<h4>Workaround:</h4>
<p>Before online the database, disable parallel sort via sp_configure &#8216;max parallel degree&#8217;,1</p>
<h4>Sanitized:</h4>
<p>Online database failed with 3461, 3451 and 3454 errors during upgrade sysprocedures table (upgrade  item &#8217;26&#8242;). If &#8216;max parallel degree&#8217; &gt; 1, then please disable parallel sort with sp_configure &#8216;max parallel degree&#8217;, 1.</p></blockquote>
<p>After disabling parallel sort, the database was upgraded successfully.</p>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2010/11/26/upgrading-sybase-ase-12-5-4-15-0-3-esd-4-bug-643188/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Run multiple versions of Perl from your home directory</title>
		<link>http://froebe.net/blog/2010/11/22/run-multiple-versions-of-perl-from-your-home-directory/</link>
		<comments>http://froebe.net/blog/2010/11/22/run-multiple-versions-of-perl-from-your-home-directory/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 04:07:46 +0000</pubDate>
		<dc:creator>Jason L Froebe</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OSX]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[Kang-min Liu]]></category>
		<category><![CDATA[perlbrew]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://froebe.net/blog/?p=1288</guid>
		<description><![CDATA[Run multiple versions of Perl from your home directory using Perlbrew! One thing to know:  Perl won&#8217;t compile if you have an encrypted home directory. Bug has been fixed but not exactly how and it hasn&#8217;t been put into the Ubuntu updates yet. Thanks goes to Kang-min Liu for creating Perlbrew!!!! The recommended way to [...]]]></description>
			<content:encoded><![CDATA[<p>Run multiple versions of Perl from your home directory using <a href="http://search.cpan.org/dist/App-perlbrew/lib/App/perlbrew.pm">Perlbrew</a>!<a href="http://search.cpan.org/dist/App-perlbrew/lib/App/perlbrew.pm"><img class="alignright" title="Kang-min Liu" src="http://external.ak.fbcdn.net/safe_image.php?d=cbda410c3d38aac55ff886e3270f01c3&amp;w=90&amp;h=90&amp;url=http%3A%2F%2Fwww.gravatar.com%2Favatar.php%3Fgravatar_id%3Dae74261cb1cdcc52eb0d2b1cbaf06e25%26rating%3DG%26size%3D80%26default%3Dhttp%3A%2F%2Fst.pimg.net%2Ftucs%2Fimg%2Fwho.png" alt="" width="80" height="80" /></a></p>
<div id="id_4ceb3c83b6a110a34130872">One thing to know:  Perl  won&#8217;t compile if you have an encrypted home directory. <img src='http://froebe.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Bug has been  fixed but not exactly how and it hasn&#8217;t been put into the Ubuntu updates  yet.</div>
<div>Thanks goes to Kang-min Liu for creating Perlbrew!!!! <img src='http://froebe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<div>
<blockquote><p><em>The recommended way to install perlbrew is to run these statements in your shell:</em></p>
<div class="bash dean_ch">&nbsp; &nbsp; curl <span class="re5">-LO</span> http:<span class="sy0">//</span>xrl.us<span class="sy0">/</span>perlbrew<br />
&nbsp; &nbsp; <span class="kw2">chmod</span> +x perlbrew<br />
&nbsp; &nbsp; .<span class="sy0">/</span>perlbrew <span class="kw2">install</span></div>
<p><em>After that, <code>perlbrew</code> installs itself to <code>~/perl5/perlbrew/bin</code>, and you should follow the instruction on screen to setup your <code>.bashrc</code> or <code>.cshrc</code> to put it in your PATH.</em></p></blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://froebe.net/blog/2010/11/22/run-multiple-versions-of-perl-from-your-home-directory/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

