<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <id>tag:desiredoutput.com,2005:/articles</id>
  <link rel="alternate" type="text/html" href="http://desiredoutput.com"/>
  <link rel="self" type="application/atom+xml" href="http://desiredoutput.com/articles.atom"/>
  <title>Desired Output</title>
  <subtitle type="html">Tips &amp;middot; Tricks &amp;middot; Snippets</subtitle>
  <updated>2011-01-28T05:31:53-07:00</updated>
  <generator version="5.x" uri="http://www.typosphere.org">Typo</generator>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/34</id>
    <published>2011-01-28T05:28:07-07:00</published>
    <updated>2011-01-28T05:31:53-07:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2011/01/28/lowercase-filenames-with-ruby"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Lowercase Filenames With Ruby</title>
    <category label="Command line" term="general" scheme="http://desiredoutput.com/category/general"/>
    <category label="Ruby" term="ruby" scheme="http://desiredoutput.com/category/ruby"/>
    <category term="lowercase" scheme="http://desiredoutput.com/tag/lowercase"/>
    <category term="filenames" scheme="http://desiredoutput.com/tag/filenames"/>
    <content type="html">&lt;p&gt;&lt;code&gt;ruby -e 'Dir.glob("*").each { |fn| File.rename(fn, fn.downcase) }'
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Obviously this would work with method #upcase as well. &lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;Credit goes to poster "Florian Gilcher",  here:&lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.eggheadcafe.com/software/aspnet/35719452/oneliner-for-lowercasing-files.aspx"&gt;http://www.eggheadcafe.com/software/aspnet/35719452/oneliner-for-lowercasing-files.aspx&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/33</id>
    <published>2010-07-28T08:56:11-06:00</published>
    <updated>2010-07-28T09:03:28-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/07/28/which-process-is-using-port"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Which Process Is Using Port ?</title>
    <category label="Command line" term="general" scheme="http://desiredoutput.com/category/general"/>
    <category term="OS" scheme="http://desiredoutput.com/tag/os"/>
    <category term="X" scheme="http://desiredoutput.com/tag/x"/>
    <category term="process" scheme="http://desiredoutput.com/tag/process"/>
    <category term="using" scheme="http://desiredoutput.com/tag/using"/>
    <category term="port" scheme="http://desiredoutput.com/tag/port"/>
    <category term="netstat" scheme="http://desiredoutput.com/tag/netstat"/>
    <category term="o" scheme="http://desiredoutput.com/tag/o"/>
    <category term="lsof" scheme="http://desiredoutput.com/tag/lsof"/>
    <category term="grep" scheme="http://desiredoutput.com/tag/grep"/>
    <category term="command" scheme="http://desiredoutput.com/tag/command"/>
    <category term="line" scheme="http://desiredoutput.com/tag/line"/>
    <content type="html">&lt;p&gt;For some reason,  the "-o" option is missing from netstat on OS X Snow Leopard (10.6.4,  anyway),  so if you need to know which processes are using a given port,  try:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo lsof -i -P | grep 36364&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Of course substitute your own port number (36364 is used by Skype,  btw).&lt;br/&gt;
&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/29</id>
    <published>2010-07-11T09:01:33-06:00</published>
    <updated>2010-07-11T10:10:09-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/07/11/chuck-ngrep-listening-to-the-network"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Chuck + Ngrep:  Listening to the Network</title>
    <category label="Command line" term="general" scheme="http://desiredoutput.com/category/general"/>
    <category label="Obscure" term="obscure" scheme="http://desiredoutput.com/category/obscure"/>
    <category term="chuck" scheme="http://desiredoutput.com/tag/chuck"/>
    <category term="ngrep" scheme="http://desiredoutput.com/tag/ngrep"/>
    <category term="listen" scheme="http://desiredoutput.com/tag/listen"/>
    <category term="network" scheme="http://desiredoutput.com/tag/network"/>
    <category term="ascii" scheme="http://desiredoutput.com/tag/ascii"/>
    <category term="geiger" scheme="http://desiredoutput.com/tag/geiger"/>
    <category term="bleep" scheme="http://desiredoutput.com/tag/bleep"/>
    <category term="blorp" scheme="http://desiredoutput.com/tag/blorp"/>
    <category term="boop" scheme="http://desiredoutput.com/tag/boop"/>
    <category term="BEEP" scheme="http://desiredoutput.com/tag/beep"/>
    <category term="audio" scheme="http://desiredoutput.com/tag/audio"/>
    <category term="monitoring" scheme="http://desiredoutput.com/tag/monitoring"/>
    <category term="to" scheme="http://desiredoutput.com/tag/to"/>
    <category term="traffic" scheme="http://desiredoutput.com/tag/traffic"/>
    <category term="listening" scheme="http://desiredoutput.com/tag/listening"/>
    <category term="internet" scheme="http://desiredoutput.com/tag/internet"/>
    <content type="html">&lt;p&gt;chuck:  &lt;a href="http://chuck.cs.princeton.edu/"&gt;http://chuck.cs.princeton.edu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ngrep:  &lt;a href="http://ngrep.sourceforge.net/"&gt;http://ngrep.sourceforge.net/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using chuck and ngrep, you can translate the ascii output of ngrep into midi sounds in real time by reading from a file with chuck which is being appended by ngrep:&lt;/p&gt;

&lt;p&gt;&lt;code&gt; sudo ngrep -d en1 '' &gt; network &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt; chuck listen.ck &amp;lt; network &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;listen.ck source:&lt;/p&gt;

&lt;div class="CodeRay"&gt;&lt;pre&gt;&lt;span class="CodeRay"&gt;&lt;span class="c"&gt;// computer key input, with sound&lt;/span&gt;
KBHit kb;

&lt;span class="c"&gt;// patch&lt;/span&gt;
Impulse i =&amp;gt; BiQuad f =&amp;gt; dac;
&lt;span class="c"&gt;// set the filter&#8217;s pole radius&lt;/span&gt;
&lt;span class="fl"&gt;.99&lt;/span&gt; =&amp;gt; f.prad;
&lt;span class="c"&gt;// set equal gain zeros&lt;/span&gt;
&lt;span class="i"&gt;1&lt;/span&gt; =&amp;gt; f.eqzs;
&lt;span class="c"&gt;// initialize float variable&lt;/span&gt;
&lt;span class="fl"&gt;0&lt;/span&gt;&lt;span class="fl"&gt;.0&lt;/span&gt; =&amp;gt; &lt;span class="pt"&gt;float&lt;/span&gt; v;
&lt;span class="c"&gt;// set filter gain&lt;/span&gt;
&lt;span class="fl"&gt;.5&lt;/span&gt; =&amp;gt; f.gain;

&lt;span class="c"&gt;// time-loop&lt;/span&gt;
&lt;span class="r"&gt;while&lt;/span&gt;( &lt;span class="pc"&gt;true&lt;/span&gt; )
{

    &lt;span class="c"&gt;// wait on event&lt;/span&gt;
    kb =&amp;gt; now;
    &lt;span class="c"&gt;// generate impulse&lt;/span&gt;
    &lt;span class="fl"&gt;1&lt;/span&gt;&lt;span class="fl"&gt;.0&lt;/span&gt; =&amp;gt; i.next;
    &lt;span class="c"&gt;// loop through 1 or more keys&lt;/span&gt;
    &lt;span class="r"&gt;while&lt;/span&gt;( kb.more() )
    {

        &lt;span class="c"&gt;// set filter freq&lt;/span&gt;
        kb.getchar() =&amp;gt; &lt;span class="pt"&gt;int&lt;/span&gt; c;
        &lt;span class="r"&gt;if&lt;/span&gt;(c &amp;lt; &lt;span class="i"&gt;58&lt;/span&gt;) &lt;span class="i"&gt;58&lt;/span&gt; %=&amp;gt; c;
        &lt;span class="r"&gt;if&lt;/span&gt;(c &amp;gt; &lt;span class="i"&gt;120&lt;/span&gt;) &lt;span class="i"&gt;120&lt;/span&gt; %=&amp;gt; c;
        c =&amp;gt; Std.mtof =&amp;gt; f.pfreq;
        &lt;span class="c"&gt;// print int value&lt;/span&gt;
        &amp;lt;&amp;lt;&amp;lt; &lt;span class="er"&gt;&#8220;&lt;/span&gt;ascii:&lt;span class="er"&gt;&#8221;&lt;/span&gt;, c &amp;gt;&amp;gt;&amp;gt;;

    }

}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Sounds a bit like a colorful geiger counter.&lt;/p&gt;

&lt;p&gt;Maybe you can ngrep for something specific and learn to recognize the sound of it amongst other traffic.&lt;br/&gt;
&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/18</id>
    <published>2010-06-11T11:49:56-06:00</published>
    <updated>2010-06-19T20:16:51-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/06/12/ruby-import-from-csv-into-spree-half-the-rails-way-and-half-the-un-rails-way"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Ruby Import from CSV into Spree, Half The Rails Way and Half The Un-Rails Way</title>
    <category label="Ruby" term="ruby" scheme="http://desiredoutput.com/category/ruby"/>
    <category term="ruby" scheme="http://desiredoutput.com/tag/ruby"/>
    <category term="rails" scheme="http://desiredoutput.com/tag/rails"/>
    <category term="spree" scheme="http://desiredoutput.com/tag/spree"/>
    <category term="import" scheme="http://desiredoutput.com/tag/import"/>
    <category term="csv" scheme="http://desiredoutput.com/tag/csv"/>
    <category term="convert" scheme="http://desiredoutput.com/tag/convert"/>
    <category term="open3" scheme="http://desiredoutput.com/tag/open3"/>
    <category term="activerecord" scheme="http://desiredoutput.com/tag/activerecord"/>
    <category term="object" scheme="http://desiredoutput.com/tag/object"/>
    <category term="dimension" scheme="http://desiredoutput.com/tag/dimension"/>
    <category term="paperclip" scheme="http://desiredoutput.com/tag/paperclip"/>
    <category term="geometry" scheme="http://desiredoutput.com/tag/geometry"/>
    <category term="basename" scheme="http://desiredoutput.com/tag/basename"/>
    <category term="attachment" scheme="http://desiredoutput.com/tag/attachment"/>
    <category term="product" scheme="http://desiredoutput.com/tag/product"/>
    <category term="variant" scheme="http://desiredoutput.com/tag/variant"/>
    <category term="asset" scheme="http://desiredoutput.com/tag/asset"/>
    <category term="image" scheme="http://desiredoutput.com/tag/image"/>
    <category term="taxon" scheme="http://desiredoutput.com/tag/taxon"/>
    <category term="inject" scheme="http://desiredoutput.com/tag/inject"/>
    <category term="directly" scheme="http://desiredoutput.com/tag/directly"/>
    <category term="csvmapper" scheme="http://desiredoutput.com/tag/csvmapper"/>
    <category term="sku" scheme="http://desiredoutput.com/tag/sku"/>
    <category term="resize" scheme="http://desiredoutput.com/tag/resize"/>
    <category term="logger" scheme="http://desiredoutput.com/tag/logger"/>
    <category term="fileutils" scheme="http://desiredoutput.com/tag/fileutils"/>
    <content type="html">&lt;p&gt;There are several useful aspects to this script for anyone who is using ruby for CSV import, especially if  using ActiveRecord in Rails,  and definitely if importing into Spree. &lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;Big thanks to Chadwick Wood for the imagemagick part,  which I borrowed from his post:  &lt;a href="http://coffeeshopped.com/2009/03/batch-image-resizing-with-ruby-and-imagemagick"&gt;
Batch Image Resizing with Ruby and ImageMagick&lt;/a&gt;.     Ran this locally on OS X  and remotely on FreeBSD 4.x/5.x without any hiccups.&lt;/p&gt;

&lt;p&gt;Here is the &lt;strong&gt;first line of the CSV file&lt;/strong&gt; (product_data.csv):&lt;/p&gt;

&lt;div class="CodeRay"&gt;&lt;pre&gt;&lt;span class="CodeRay"&gt;&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;original_id&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;subtitle&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;price&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;sku&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;weight&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;category&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;category_group&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;category_name&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;image_attachments&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Here is the &lt;strong&gt;CSV import script&lt;/strong&gt; (import_from_csv.rb):&lt;/p&gt;

&lt;div class="CodeRay"&gt;&lt;pre&gt;&lt;span class="CodeRay"&gt;require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;rubygems&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;csv-mapper&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;active_record&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;active_support&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;paperclip&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;spree&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;action_controller&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;action_controller/test_process&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;ftools&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;fileutils&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;open3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;


&lt;span class="c"&gt;# This is how you access your ActiveRecord objects in rails (referencing your database.yml),  specifying which database,  and logging all the database activity to a file:&lt;/span&gt;

&lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;.logger = &lt;span class="co"&gt;Logger&lt;/span&gt;.new(&lt;span class="co"&gt;File&lt;/span&gt;.dirname(&lt;span class="pc"&gt;__FILE__&lt;/span&gt;) + &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/debug.log&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)
&lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;.configurations = &lt;span class="co"&gt;YAML&lt;/span&gt;::load(&lt;span class="co"&gt;IO&lt;/span&gt;.read(&lt;span class="co"&gt;File&lt;/span&gt;.dirname(&lt;span class="pc"&gt;__FILE__&lt;/span&gt;) + &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/config/database.yml&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;))
&lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;.establish_connection(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;development&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)


&lt;span class="c"&gt;# It turned out I didn't need this,  but you might if you are going to attach on-the-fly with Paperclip:&lt;/span&gt;
&lt;span class="c"&gt;#Paperclip.options[:command_path] = '/opt/local/bin/'&lt;/span&gt;



&lt;span class="c"&gt;# Initialize ActiveRecord objects: &lt;/span&gt;
&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Product&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;; &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Variant&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;; &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Taxon&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;; &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Asset&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;; &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Image&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;Asset&lt;/span&gt;; &lt;span class="r"&gt;end&lt;/span&gt;


&lt;span class="c"&gt;# Do not reinvent wheel,  instead install the gem (http://csv-mapper.rubyforge.org/) and include this if you know what's good for you: &lt;/span&gt;

include &lt;span class="co"&gt;CsvMapper&lt;/span&gt;



&lt;span class="c"&gt;#  Read in the CSV file (name your attributes in the first line of the CSV file,  which is a normal thing to do):&lt;/span&gt;

results = import(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;./product_data.csv&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;) &lt;span class="r"&gt;do&lt;/span&gt;
  read_attributes_from_file
&lt;span class="r"&gt;end&lt;/span&gt;



&lt;span class="c"&gt;# FYI this destroy part destroys everything (drops all values in the tables `products`, `variants`, and `assets`):&lt;/span&gt;

&lt;span class="co"&gt;Product&lt;/span&gt;.all.each &lt;span class="r"&gt;do&lt;/span&gt; |j| j.destroy &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="co"&gt;Variant&lt;/span&gt;.all.each &lt;span class="r"&gt;do&lt;/span&gt; |k| k.destroy &lt;span class="r"&gt;end&lt;/span&gt;
&lt;span class="co"&gt;Asset&lt;/span&gt;.all.each &lt;span class="r"&gt;do&lt;/span&gt; |a| a.destroy &lt;span class="r"&gt;end&lt;/span&gt;



&lt;span class="c"&gt;# Enter the loop where we iterate the records: &lt;/span&gt;

results.each &lt;span class="r"&gt;do&lt;/span&gt; |item|
  new_product = &lt;span class="co"&gt;Product&lt;/span&gt;.create(
    &lt;span class="sy"&gt;:name&lt;/span&gt; =&amp;gt; item.title, 
    &lt;span class="sy"&gt;:meta_description&lt;/span&gt; =&amp;gt; item.subtitle,
    &lt;span class="sy"&gt;:description&lt;/span&gt; =&amp;gt; item.description,
    &lt;span class="sy"&gt;:permalink&lt;/span&gt; =&amp;gt; item.title.downcase.gsub(&lt;span class="rx"&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="ch"&gt;\/&lt;/span&gt;&lt;span class="k"&gt;.]&lt;/span&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt; &lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;).split(&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt; &lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;).join(&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;),
    &lt;span class="sy"&gt;:available_on&lt;/span&gt; =&amp;gt; &lt;span class="co"&gt;Time&lt;/span&gt;.now
  )
  new_variant = &lt;span class="co"&gt;Variant&lt;/span&gt;.create(
    &lt;span class="sy"&gt;:product_id&lt;/span&gt; =&amp;gt; new_product.id,
    &lt;span class="sy"&gt;:is_master&lt;/span&gt; =&amp;gt; &lt;span class="i"&gt;1&lt;/span&gt;, 
    &lt;span class="sy"&gt;:sku&lt;/span&gt; =&amp;gt; item.sku,
    &lt;span class="sy"&gt;:price&lt;/span&gt; =&amp;gt; item.price,
    &lt;span class="sy"&gt;:weight&lt;/span&gt; =&amp;gt; item.weight
  )

        &lt;span class="c"&gt;# Doesn't work:&lt;/span&gt;
  &lt;span class="c"&gt;#new_product.taxons &amp;lt;&amp;lt; Taxon.find_by_id(item.category_group.to_i + 999)&lt;/span&gt;
  

        &lt;span class="c"&gt;# For taxon assignment,  insert directly to the database:&lt;/span&gt;

  taxon_id = item.category_group.to_i + &lt;span class="i"&gt;1000&lt;/span&gt;
  sql_query_for_taxon_assignment = &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;INSERT INTO `products_taxons` (product_id, taxon_id) VALUES (&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;new_product.id&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;, &lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;taxon_id&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;);&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;.connection.execute(sql_query_for_taxon_assignment)
  
  
        &lt;span class="c"&gt;# Now we get into imagemagick and Paperclip and creating Asset objects of type Image  &lt;/span&gt;

  &lt;span class="c"&gt;# For some reason,  the previous developer put all the image filenames in rows of the category database as strings delimited by pipes (&amp;quot;|&amp;quot;).    Don't do that.  But if you have to deal with it: &lt;/span&gt;

  pics = item.image_attachments.split(&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;|&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)


  
     &lt;span class="c"&gt;# Loop through the elements of the pics array and add image attachments&lt;/span&gt;
     pics.each &lt;span class="r"&gt;do&lt;/span&gt; |image_basename_part|

        &lt;span class="r"&gt;next&lt;/span&gt; &lt;span class="r"&gt;if&lt;/span&gt; image_basename_part =~ &lt;span class="rx"&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;span class="k"&gt;^&lt;/span&gt;&lt;span class="ch"&gt;\s&lt;/span&gt;&lt;span class="k"&gt;*$&lt;/span&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;/span&gt; &lt;span class="c"&gt;# skip blank lines&lt;/span&gt;
       
      &lt;span class="c"&gt;# get the image filenames  &lt;/span&gt;
        image_file = &lt;span class="sh"&gt;&lt;span class="dl"&gt;`&lt;/span&gt;&lt;span class="k"&gt;find public/php/images/products/* | grep -i &amp;quot;/&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;image_basename_part&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;[.]&amp;quot;&lt;/span&gt;&lt;span class="dl"&gt;`&lt;/span&gt;&lt;/span&gt;.chomp
        puts &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;Using file: &lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;image_file&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt; (found by grepping for &lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;image_basename_part&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
        &lt;span class="r"&gt;next&lt;/span&gt; &lt;span class="r"&gt;if&lt;/span&gt; image_file.blank?
        mime = &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;image/&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; + image_file.match(&lt;span class="rx"&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;span class="ch"&gt;\w&lt;/span&gt;&lt;span class="k"&gt;+$&lt;/span&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;/span&gt;).to_s
        image_file_basename = &lt;span class="co"&gt;File&lt;/span&gt;.basename(image_file, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;.jpg&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)
        

      &lt;span class="c"&gt;# get the image dimensions  &lt;/span&gt;
      geometry = &lt;span class="co"&gt;Paperclip&lt;/span&gt;::&lt;span class="co"&gt;Geometry&lt;/span&gt;.from_file(image_file)
  
    
      &lt;span class="c"&gt;# add a record to the `assets` table&lt;/span&gt;
      new_asset = &lt;span class="co"&gt;Asset&lt;/span&gt;.create(
        &lt;span class="sy"&gt;:viewable_id&lt;/span&gt; =&amp;gt; new_product.id,
        &lt;span class="sy"&gt;:viewable_type&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;Product&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,
        &lt;span class="sy"&gt;:attachment_content_type&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;image/jpeg&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,
        &lt;span class="sy"&gt;:attachment_file_name&lt;/span&gt; =&amp;gt; image_file_basename+&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;.jpg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,
        &lt;span class="sy"&gt;:type&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;Image&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,
        &lt;span class="sy"&gt;:attachment_updated_at&lt;/span&gt; =&amp;gt; &lt;span class="co"&gt;Time&lt;/span&gt;.now,
        &lt;span class="sy"&gt;:attachment_width&lt;/span&gt; =&amp;gt; geometry.width,
        &lt;span class="sy"&gt;:attachment_height&lt;/span&gt; =&amp;gt; geometry.height
      )
  
            
      &lt;span class="c"&gt;# Resize each image and place in a new directory under assets in the structure and dimensions that spree expects&lt;/span&gt;
      
      sizes = [&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;mini&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;small&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;product&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;medium&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;large&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;original&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]      
      
      &lt;span class="iv"&gt;@mini_dimension&lt;/span&gt; = &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;77x77&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
      &lt;span class="iv"&gt;@small_dimension&lt;/span&gt; = &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;175x175&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
      &lt;span class="iv"&gt;@product_dimension&lt;/span&gt; = &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;265x265&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
      &lt;span class="iv"&gt;@medium_dimension&lt;/span&gt; = &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;425x425&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
      &lt;span class="iv"&gt;@large_dimension&lt;/span&gt; = &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;870x870&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
      
      
      sizes.each &lt;span class="r"&gt;do&lt;/span&gt; |size|
      
        &lt;span class="r"&gt;case&lt;/span&gt; size
          &lt;span class="r"&gt;when&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;mini&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
            this_dimension = &lt;span class="iv"&gt;@mini_dimension&lt;/span&gt;
          &lt;span class="r"&gt;when&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;small&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
            this_dimension = &lt;span class="iv"&gt;@small_dimension&lt;/span&gt;
          &lt;span class="r"&gt;when&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;product&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
            this_dimension = &lt;span class="iv"&gt;@product_dimension&lt;/span&gt;
          &lt;span class="r"&gt;when&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;medium&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
            this_dimension = &lt;span class="iv"&gt;@medium_dimension&lt;/span&gt;
          &lt;span class="r"&gt;when&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;large&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
            this_dimension = &lt;span class="iv"&gt;@large_dimension&lt;/span&gt;
          &lt;span class="r"&gt;when&lt;/span&gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;original&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
          this_dimension = geometry.to_s 
        &lt;span class="r"&gt;end&lt;/span&gt;
          
      
      new_image_file = &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;public/assets/products/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;+new_asset.id.to_s+&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;+size+&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;+image_file_basename+&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;.jpg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
        
        
      &lt;span class="c"&gt;# make the new path&lt;/span&gt;
      &lt;span class="co"&gt;FileUtils&lt;/span&gt;.mkdir_p &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;public/assets/products/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;+new_asset.id.to_s+&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;+size+&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;
        
      &lt;span class="iv"&gt;@cmd&lt;/span&gt; = &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;convert &lt;/span&gt;&lt;span class="ch"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;image_file&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="ch"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="k"&gt; -resize &lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;this_dimension&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt; -quality 90 &lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;new_image_file&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
        stdin, stdout, stderr = &lt;span class="co"&gt;Open3&lt;/span&gt;.popen3(&lt;span class="iv"&gt;@cmd&lt;/span&gt;)
        puts l &lt;span class="r"&gt;while&lt;/span&gt; l = stdout.gets
        puts l &lt;span class="r"&gt;while&lt;/span&gt; l = stderr.gets



      
      &lt;span class="r"&gt;end&lt;/span&gt;
      
     &lt;span class="r"&gt;end&lt;/span&gt;


&lt;span class="r"&gt;end&lt;/span&gt;

&lt;span class="c"&gt;# End of the record-iterating loop&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;


</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/17</id>
    <published>2010-06-11T11:42:33-06:00</published>
    <updated>2010-06-12T04:05:12-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/06/11/list-filenames-without-extensions"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">List Filenames without Extensions</title>
    <category label="Command line" term="general" scheme="http://desiredoutput.com/category/general"/>
    <category term="list" scheme="http://desiredoutput.com/tag/list"/>
    <category term="filenames" scheme="http://desiredoutput.com/tag/filenames"/>
    <category term="without" scheme="http://desiredoutput.com/tag/without"/>
    <category term="extensions" scheme="http://desiredoutput.com/tag/extensions"/>
    <category term="suffixes" scheme="http://desiredoutput.com/tag/suffixes"/>
    <content type="html">&lt;p&gt;&lt;code&gt;ls -1 | sed 's/.[&lt;sup&gt;.]*$//'&lt;/code&gt;&lt;/sup&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/16</id>
    <published>2010-05-02T19:28:31-06:00</published>
    <updated>2010-06-12T04:05:38-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/05/02/quick-and-dirty-ruby-struct-core-class"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Quick and Dirty Ruby:  Struct core class</title>
    <category label="Ruby" term="ruby" scheme="http://desiredoutput.com/category/ruby"/>
    <content type="html">&lt;ul&gt;
    &lt;li&gt;I have some chat logs full of xml that I want to parse with Ruby,  nevermind why.   &lt;/li&gt;

    &lt;li&gt;Each xml element has three attributes that I want to keep associated.   &lt;/li&gt;

    &lt;li&gt;I'll need to sort them using each attribute as a key to reference the others.   &lt;/li&gt;

    &lt;li&gt;A hash doesn't work because it only associates one attribute to one other attribute in each record.  I could do hashes of hashes or hashes of arrays or arrays of arrays and iterate everything in an obscenely procedural way,  but if I could avoid that...&lt;/li&gt;

&lt;/ul&gt;


&lt;p&gt;Enter Class::Struct.    With Struct I can have a fast and loose object which provides access to a record keyed by any of the attributes. &lt;br/&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
Log = Struct.new(:time, :name, :xml)
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next I'll parse the files and chuck the values from the xml tags into new Log (Struct) objects, then do whatever I want with them based on the values for the attributes that are now records in Struct objects...&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/13</id>
    <published>2010-05-02T10:48:07-06:00</published>
    <updated>2010-06-12T04:05:47-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/05/02/dos2unix-didnt-work"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">dos2unix didn't work</title>
    <category label="Command line" term="general" scheme="http://desiredoutput.com/category/general"/>
    <category label="Perl" term="perl" scheme="http://desiredoutput.com/category/perl"/>
    <category term="perl" scheme="http://desiredoutput.com/tag/perl"/>
    <category term="one" scheme="http://desiredoutput.com/tag/one"/>
    <category term="liner" scheme="http://desiredoutput.com/tag/liner"/>
    <category term="windows" scheme="http://desiredoutput.com/tag/windows"/>
    <category term="carriage" scheme="http://desiredoutput.com/tag/carriage"/>
    <category term="returns" scheme="http://desiredoutput.com/tag/returns"/>
    <category term="linebreaks" scheme="http://desiredoutput.com/tag/linebreaks"/>
    <category term="M" scheme="http://desiredoutput.com/tag/m"/>
    <content type="html">&lt;p&gt;Fine,  then,  we'll use Perl.   OUTTA THA WAY!!!!!&lt;/p&gt;

&lt;p&gt;Remove pesky windows carriage returns:&lt;br/&gt;
&lt;code&gt;
perl -pi.bak -e 's/\r/\n/g;'  ./thefile&lt;/code&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/6</id>
    <published>2010-05-02T08:52:14-06:00</published>
    <updated>2010-05-02T09:46:50-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/05/02/practical-ruby-for-system-administration"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Practical Ruby for System Administration</title>
    <category term="practical" scheme="http://desiredoutput.com/tag/practical"/>
    <category term="ruby" scheme="http://desiredoutput.com/tag/ruby"/>
    <category term="system" scheme="http://desiredoutput.com/tag/system"/>
    <category term="administration" scheme="http://desiredoutput.com/tag/administration"/>
    <content type="html">&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/1590598210?ie=UTF8&amp;tag=desire0a-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1590598210"&gt;&lt;img border="0" src="files/ruby_admin_book_cover.jpg"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=desire0a-20&amp;l=as2&amp;o=1&amp;a=1590598210" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>tag:desiredoutput.com,2005:Article/1</id>
    <published>2010-05-02T08:12:41-06:00</published>
    <updated>2010-06-12T04:06:25-06:00</updated>
    <link rel="alternate" type="text/html" href="http://desiredoutput.com/2010/05/02/one-liner-1"/>
    <author>
      <name>admin</name>
    </author>
    <title type="html">Line 1: One-Liner</title>
    <category label="Command line" term="general" scheme="http://desiredoutput.com/category/general"/>
    <category label="Perl" term="perl" scheme="http://desiredoutput.com/category/perl"/>
    <category term="perl" scheme="http://desiredoutput.com/tag/perl"/>
    <category term="one" scheme="http://desiredoutput.com/tag/one"/>
    <category term="liner" scheme="http://desiredoutput.com/tag/liner"/>
    <content type="html">&lt;p&gt;
&lt;p&gt;Turn a list into quoted comma separated values for a perl array:&lt;br /&gt;
	&lt;br /&gt;
	&lt;code&gt;perl -i.bak -ne 's/^(.*?)\n$/\"$1\",/;print' ./list_of_bare_strings&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
	&amp;nbsp;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
	Oh,&amp;nbsp; but your list is just a bunch of filenames you copied from the output of &amp;#39;ls&amp;#39; and you need them one-per-line:&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
	&lt;code&gt;printf "%s\n" $(&amp;gt;pasted_ls_output) &amp;lt; list_of_bare_strings&lt;/code&gt;&lt;/p&gt;&lt;/p&gt;</content>
  </entry>
</feed>

