<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3973638950638356089</id><updated>2012-01-14T17:36:42.843-08:00</updated><category term='linux'/><category term='perl data'/><category term='server2008'/><category term='javascript'/><category term='javascript rhino'/><category term='reference tipsheet'/><category term='Solaris'/><category term='ruby gem linux centos'/><category term='osx snowleopard audio sound'/><category term='ruby rails'/><category term='Perl'/><category term='Oracle'/><category term='samba swat password'/><title type='text'>the evil roundabout</title><subtitle type='html'>things that I need to remember, would like to build, enterprise-level stuff (or so I&amp;#39;m told), simplistic coding things...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7774980317771326073</id><published>2011-08-30T22:31:00.000-07:00</published><updated>2012-01-14T17:36:42.855-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='samba swat password'/><title type='text'>samba: running swat from xinetd</title><content type='html'>(swat - the web-based tool for managing samba servers and accounts)...well, on some (possibly most these days)  linux distros it's run out of xinetd, which makes it pretty manageable: After you install your 'samba-swat' package, edit /etc/xinetd.d/swat to enable &amp;amp; configure it.&lt;br /&gt;&lt;br /&gt;the critical lines being:&lt;br /&gt;only_from = IP addresses/ranges you want access from&lt;br /&gt;disable       = no # the default being 'yes'&lt;br /&gt;&lt;br /&gt;Now, less commonly-know it seems is the xinetd directive (ie. would work for all the apps you can wrap with it):&lt;br /&gt;&lt;br /&gt;server_args = as-read-from-the-man-page&lt;br /&gt;&lt;br /&gt;The server_args in this case being '-P' which limits swat to really only showing the password-change page by hiding the server config and monitoring elements. I don't want normal users to be able to see any of those items.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7774980317771326073?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7774980317771326073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7774980317771326073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7774980317771326073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7774980317771326073'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/08/samba-running-swat-from-xinetd.html' title='samba: running swat from xinetd'/><author><name>Ashley</name><uri>http://www.blogger.com/profile/01163690373367780007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7746837139531594638</id><published>2011-08-04T19:44:00.000-07:00</published><updated>2011-08-04T20:28:10.878-07:00</updated><title type='text'>atypical web applications</title><content type='html'>on reflection, there's probably no such thing as a 'typical web app' - they all bring their challenges. I often seem to get the slightly off-centre ones. Not that I'm complaining really but people get told either that  something is 'impossible' or is going to cost them 8 grand (which is another way of telling the client to go away).&lt;br /&gt;&lt;br /&gt;It often seems that there's a lot of software waiting to be written in the small-business, web/print design space - apps that will encapsulate someones workflow in building or maintaining a complex website, converting images en mass or pulling data into some useful order or interface. Some of these would just be scripts &amp;amp; some real, hosted web applications.&lt;br /&gt;&lt;br /&gt;How do you bring these opportunities together? the prospective client and their requirements (and some cash too I hope) and someone who can do the work - to the point where it's complete and actually does what the client wants? It's pretty hard, as I've been finding out. I'm wearing out the opportunities I can see in my network of contacts right now...&lt;br /&gt;&lt;br /&gt;***&lt;br /&gt;Actually, I really just want to write about &lt;span style="font-style: italic;"&gt;data persistence&lt;/span&gt; in the context of work I've performed for clients recently - and crucially - the tech (ie. programming languages, web hosting) I've had little choice but to employ... because this aspect has been really central to even small projects.&lt;br /&gt;&lt;br /&gt;I keep coming back to the same thought: Java Servlets(&amp;amp; JSP, JSF kinds of teck built on top of the spec) was the only half-way elegant, well thought out web app framework - and they were more or less complete by 2000. Given the rise of scripting in the intervening decade &amp;amp; the decline of Java outside of enterprise systems we are are actually worse off now than then...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7746837139531594638?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7746837139531594638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7746837139531594638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7746837139531594638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7746837139531594638'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/08/atypical-web-applications.html' title='atypical web applications'/><author><name>Ashley</name><uri>http://www.blogger.com/profile/01163690373367780007</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-8199512247709061000</id><published>2011-02-01T17:48:00.000-08:00</published><updated>2011-02-01T17:48:55.199-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby rails'/><title type='text'>Simple Rails app</title><content type='html'>All you want to do is to get up &amp;amp; running&lt;br /&gt;&lt;br /&gt;on OSX Snowleopard (Ruby 1.8.7 - included with the OS &amp;amp; Gem 1.4.2 - after runnning gem update --system) , the sequence of steps to get a simple Rails application up &amp;amp; running:&lt;br /&gt;&lt;br /&gt;&amp;gt; rails new &lt;i&gt;app_path/app_name&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;cd into the&amp;nbsp; app directory &amp;amp; add anything special&amp;nbsp; to the Gemfile - which specifies Ruby gems to add to the apps library&lt;br /&gt;&lt;br /&gt;&amp;gt; bundle install&lt;br /&gt;&lt;br /&gt;&amp;gt;rails server&lt;br /&gt;&lt;br /&gt;you should see the WEBrick test server start up&lt;br /&gt;&lt;br /&gt;This post is necessary as using this built-in server seems to be really out of favour in Ruby-land (the Mongrel webserver is suggested) &amp;amp; what docs there are about it - well some paths &amp;amp; commands have changed...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-8199512247709061000?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/8199512247709061000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=8199512247709061000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/8199512247709061000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/8199512247709061000'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/02/simple-rails-app.html' title='Simple Rails app'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-4331636228676269428</id><published>2011-02-01T17:07:00.000-08:00</published><updated>2011-02-01T17:08:17.655-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reference tipsheet'/><title type='text'>gnu screen keyboard commands</title><content type='html'>&lt;a href="http://aperiodic.net/screen/quick_reference"&gt;tipsheet &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I don't know what I did before I discovered &lt;i&gt;Screen&lt;/i&gt; but I sure forget the keyboard commands all the time:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-4331636228676269428?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/4331636228676269428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=4331636228676269428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4331636228676269428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4331636228676269428'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/02/gnu-screen-tipsheet.html' title='gnu screen keyboard commands'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-3641799791163748869</id><published>2011-02-01T15:52:00.000-08:00</published><updated>2011-02-01T15:53:54.206-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osx snowleopard audio sound'/><title type='text'>OSX SnowLeopard: switch audio</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;someone just told me: if you have the volume icon in your menubar (ie.  this can be turned on/off in the audio preference panel) option-click  the speaker icon &amp;amp; it will show you a menu to change input/output on  all your audio devices.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_EKEgXfcnggk/TUianSMDWMI/AAAAAAAAALM/9bODVoc8mMc/s200/Screen+shot+2011-02-02+at+10.42.40+AM.png" width="131" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;this is something I've always wanted. Someone even created a little &lt;a href="http://www.macupdate.com/app/mac/18091/sound-menu"&gt;menubar app&lt;/a&gt; to do the same thing (well, it does a bit more really) - so I imagine it's a recent Mac addition. Apple have a long history of additions to the UI like this, stretching basic into System 7 days &amp;amp; it often makes 3rd-party accessories no longer relevant or necessary. I guess it's a risky market - adding functionality that is sort of 'obvious' (but is missing) - your app might suddenly become obselete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-3641799791163748869?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/3641799791163748869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=3641799791163748869' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3641799791163748869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3641799791163748869'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/02/osx-snowleopard.html' title='OSX SnowLeopard: switch audio'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_EKEgXfcnggk/TUianSMDWMI/AAAAAAAAALM/9bODVoc8mMc/s72-c/Screen+shot+2011-02-02+at+10.42.40+AM.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-2749459252561255305</id><published>2011-02-01T15:38:00.000-08:00</published><updated>2011-02-01T15:53:19.323-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby gem linux centos'/><title type='text'>Centos 4: install Ruby, gem &amp; mechanize</title><content type='html'>what's out there 'in the field' is rarely the latest &amp;amp; greatest version of anything. Given the necessarily arcane ways that software is packaged for varieties of linux (wtf is irb a separate package?) - having 'the latest' version of your OS distro usually only means that you can actually get packages for it:&lt;br /&gt;&lt;br /&gt;anyway -&amp;nbsp; you want to install Ruby &amp;amp; gem on an older centos box.&lt;br /&gt;&lt;br /&gt;1. Use the instructions &lt;a href="http://www.how-to-linux.com/2008/12/how-to-install-ruby-on-rails-on-centos-52/"&gt;here&lt;/a&gt; to get ruby &amp;amp; gem. These are GOOD instructions - as they seem to work across several Centos versions.&lt;br /&gt;&lt;br /&gt;2. update gem: 'gem update --system'&lt;br /&gt;&lt;br /&gt;you want to install the 'mechanize' gem for some web-scraping, first install libxslt using yum - this should pull in all the dependencies like libxml2 etc.&lt;br /&gt;&lt;br /&gt;There's a set of discussions about installing mechanize on ubuntu &lt;a href="http://ubuntuforums.org/showthread.php?t=842887"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-2749459252561255305?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/2749459252561255305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=2749459252561255305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/2749459252561255305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/2749459252561255305'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/02/getting-ruby-gem-mechanize-installed-on.html' title='Centos 4: install Ruby, gem &amp; mechanize'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-1356589500053034368</id><published>2011-01-12T04:38:00.000-08:00</published><updated>2011-01-23T22:24:26.814-08:00</updated><title type='text'>Apple annoyances : you downloaded this file from the internets</title><content type='html'>note: that this 'hint' doesn't appear to work - it may have but certainly not with Snowleopard 10.6.4. Sigh, OSX becomes less &amp;amp; less functional as a server platform (that's where this 'security' feature will really screw you around).&lt;br /&gt;&lt;br /&gt;- and snowleopard decides to show a dialogue asking permission to do anything when you try to open a file. It's an idiot feature in an otherwise OK operating system ESPECIALLY as it affects programs that try to open other programs &amp;amp; things start to silently fail.&amp;nbsp; I've suffered long enough &amp;amp; decided to stop it.&lt;br /&gt;&lt;br /&gt;open a terminal and type:&lt;br /&gt;sudo defaults write com.apple.LaunchServices LSQuarantine -bool NO&lt;br /&gt;&lt;br /&gt;reboot &amp;amp; it should stop happening&lt;br /&gt;&lt;br /&gt;This was from the article: http://discussions.apple.com/message.jspa?messageID=10425093&lt;br /&gt;&lt;br /&gt;with further ideas at: http://hints.macworld.com/article.php?story=20071029151619619 &lt;br /&gt;&lt;br /&gt;you downloaded it from the internets: does it contain cats?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-1356589500053034368?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/1356589500053034368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=1356589500053034368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1356589500053034368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1356589500053034368'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2011/01/apple-alert-you-downloaded-this-file.html' title='Apple annoyances : you downloaded this file from the internets'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-5854313764889806688</id><published>2010-11-11T20:30:00.000-08:00</published><updated>2010-11-13T22:02:58.405-08:00</updated><title type='text'>projects...</title><content type='html'>looks like 2010 will be bookended by postings. It's been a year to forget in many ways.&lt;br /&gt;&lt;br /&gt;current projects (or things I've been asked to look into):&lt;br /&gt;&lt;br /&gt;* For Love: a piece of software to convert text into morse code &amp;amp; play the resulting audio. For some reason or other, I started doing this with &lt;a href="http://www.processing.org/"&gt;Processing&lt;/a&gt; (pulling in various other Java language items). It seemed like a good idea at the time, as a framework that encompassed transferring data via http, reading &amp;amp; cleaning up text &amp;amp; generating audio. Ultimately, this app is just a client for a backend which aggregates &amp;amp; stores  messages sent from web forms, text message, tweets, whatever, in a predictable format.&lt;br /&gt;&lt;br /&gt;* For Money: a package of scripts to generate a quite large brochure-style website from catalogues (manufacturers, items, pricing etc) in an easy-to-edit form (such as Excel spreadsheet). The plan is to employ the site's existing structure &amp;amp; styling but to re-engineer how the &lt;span style="font-weight: bold;"&gt;content&lt;/span&gt; ('the information') is maintained &amp;amp; updated. This is like a classic case of 'separation of content &amp;amp; presentation' that used to be all the rage a few years ago when XML was touted as the next big thing.&lt;br /&gt;&lt;br /&gt;I'm using - as a model (&amp;amp; it's the reason I started the conversation to begin with) - something similar I created using Perl &amp;amp; XSL transformation several years ago, which was a solution to create several fiddly table-based webpages that matched data &amp;amp; download links for a file repository at my &lt;a href="http://www.sydney.edu.au/"&gt;previous employer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;* sort-of For Money: building new mail/file etc. servers to replace a few boxes for a long-standing associates. I'll probably end up re-cabling their network onsite as well...after the renovations... As this is based upon 64-bit &lt;a href="http://www.centos.org/"&gt;Centos&lt;/a&gt; linux, that could have it's intriguing/frustrating aspects as well as this is going out there the the bleeding-edge for some aspects .&lt;br /&gt;&lt;br /&gt;* For Love - or something like that: I recently completed building an &lt;a href="http://gregsurges.com/circuitry/usb-octomod/"&gt;Octomod&lt;/a&gt; &amp;amp; it seems to be working fine. This is a device to convert digital commands (from a computer, via USB) to analogue control voltages. In the event that someone wants to say, use this from an application like Ableton Live they need to map MIDI data from to the OSC data that the device understands &amp;amp; converts. Max patches &amp;amp; also Max 4 Live device to facilitate this conversion are a starting point. Ultimately, a standalone app (could be created using Max) which does this work would be the best for people who don't own either Max or Live.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-5854313764889806688?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/5854313764889806688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=5854313764889806688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/5854313764889806688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/5854313764889806688'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2010/11/projects.html' title='projects...'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-4126701133718562825</id><published>2010-01-12T14:25:00.000-08:00</published><updated>2010-03-02T13:48:51.330-08:00</updated><title type='text'>audio filters &amp; such</title><content type='html'>I am quite interested in a device like the &lt;a href="http://www.blogger.com/%20http://www.jomox.com/product_details.php?lang=2&amp;amp;category=&amp;amp;product_id=2"&gt;M Resonator&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This machine is essentially a couple of filters in a feedback network. Notwithstanding any particular sound qualities their filters might have,it's a reasonably effective (&amp;amp; old!) idea for shaping music...and it would be fairly easy to build a crappy knock-off myself, using DIY. After all, there's plenty of schematics for the building blocks available on the web.&lt;br /&gt;&lt;br /&gt;It's missing MIDI control though. That would be a cute &lt;a href="http://www.blogger.com/%28http://ruinwesen.com/blog?id=313%29"&gt;arduino/mididuino&lt;/a&gt; project. Edit:  in the sense of adding MIDI control to a filter - not simulating audio-rate DSP via an Arduino.&lt;br /&gt;&lt;br /&gt;I'm a bit of a Korg Kaoss pad enthusiast but some kind of multi-band resonant filter - with envelope control would be a real nice thing to have as a way of shaping the spectrum of music. Actually, sounds like I'm describing a modular synth now. Especially something a little like the Doepfer &lt;a href="http://www.doepfer.de/a127.htm"&gt; A 127 module&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-4126701133718562825?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/4126701133718562825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=4126701133718562825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4126701133718562825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4126701133718562825'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2010/01/ausio-filters-such.html' title='audio filters &amp; such'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7828586233434530629</id><published>2009-11-26T16:17:00.000-08:00</published><updated>2009-11-26T16:25:28.626-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server2008'/><title type='text'>heart of darkness</title><content type='html'>that's right, Windows Server 2008. One recurring annoyance (amongst many) is the status of files that are 'blocked' by default ie. cannot be executed or bug you whenever you want to open them.&lt;br /&gt;&lt;br /&gt;Normally you will 'unblock' them by getting the file properties in explorer &amp;amp; selecting the 'unblock' button. Bit of a problem in the case of several hundred files in say a webapp installer.&lt;br /&gt;&lt;br /&gt;A solution: install sysinternals &lt;a href="http://technet.microsoft.com/en-au/sysinternals/bb897440.aspx"&gt;streams&lt;/a&gt; app. This alters the file attributes so as to remove the 'blocking'. Running the following wil recursively fix an entire directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;streams.exe -s -d blah:\target\directory&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7828586233434530629?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7828586233434530629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7828586233434530629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7828586233434530629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7828586233434530629'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2009/11/heart-of-darkness.html' title='heart of darkness'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-5710166645700492358</id><published>2009-11-26T04:25:00.000-08:00</published><updated>2011-03-25T05:22:40.846-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript rhino'/><title type='text'>JavaScript print (to console): Rhino</title><content type='html'>Rhino implements the core JavaScript language. There's no DOM in there to simulate a web browser, so to print lines to the quick &amp;amp; dirty JS shell, you have to use it's own print statement:&lt;br /&gt;&lt;br /&gt;print("text here"); unlike the typical: document.write("text here");&lt;br /&gt;&lt;br /&gt;the syntax here is just the same as building a JavaScript string: "literal text" + variable...&lt;br /&gt;&lt;br /&gt;Likewise Max/MSP has it's specific: post("blah"); to print to the max message window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-5710166645700492358?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/5710166645700492358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=5710166645700492358' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/5710166645700492358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/5710166645700492358'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2009/11/javascript-printing-rhino.html' title='JavaScript print (to console): Rhino'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7394033132489872201</id><published>2009-11-26T04:07:00.000-08:00</published><updated>2009-11-26T21:25:41.724-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript rhino'/><title type='text'>JavaScript development environment</title><content type='html'>&lt;span style="font-style: italic;"&gt;disclaimer - these postings are quite unfriendly - perhaps I'll edit them into something more readable when they seem to be kind of complete&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;so I decided to get back onto the JavaScript thing. The purpose of this being to do work for upcoming projects in Max/MSP and some web application stuff (via ajax kind of ways of doing things I imagine).&lt;br /&gt;&lt;br /&gt;What it comes down to is re-learning the language (whoops) and the best way to code particular tasks. So I want something 'platform neutral' ie. not to load into a web browser etc just to see if it works...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.org/rhino/"&gt;Mozilla Rhino&lt;/a&gt; comes to the rescue: a JS interpreter written in Java - which opens up some nice ideas for embedding, calling Java classes from your script etc. Here, I'm just going to use the JS shell utility as a simple execution shell to call files containing js code. The method of calling it via the command line is a bit tedious, so the following is neaters:&lt;br /&gt;&lt;br /&gt;This is the basic setup once the Rhino download is safely unpacked in /opt (&amp;amp;  referred to via a link: /opt/rhino.&lt;br /&gt;&lt;br /&gt;a) add the rhino jars (js.jar &amp;amp; js-14.jar) to your CLASSPATH.&lt;br /&gt;b) create an alias in your shell:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 204, 204);"&gt;alias js="java org.mozilla.javascript.tools.shell.Main"&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Then you can simply execute a file of JS code with:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&gt; js ./test_file.js&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rhino flags etc should all work etc.&lt;br /&gt;&lt;br /&gt;easy. Quick &amp;amp; Dirty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7394033132489872201?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7394033132489872201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7394033132489872201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7394033132489872201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7394033132489872201'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2009/11/javascript-development-environment.html' title='JavaScript development environment'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7056503724813822456</id><published>2009-11-11T13:37:00.000-08:00</published><updated>2009-11-26T04:03:44.053-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>http proxy environment variable</title><content type='html'>I keep on forgetting this - because it's set and forget. Then you move to new machine, try and run apt or something and...&lt;br /&gt;&lt;br /&gt;To use the internets from your shell (lynx,wget, apt or yum from the command-line etc) when located behind a proxy server. Set an env var 'http_proxy' in your profile (.bashrc, .profile etc) - or just set it from a script or command line:&lt;br /&gt;&lt;br /&gt;export http_proxy=http://your.proxy.address:proxy-port&lt;br /&gt;&lt;br /&gt;if the proxy server wants authentication:&lt;br /&gt;&lt;br /&gt;export http_proxy=http://username:password@your.proxy.address:proxy-port&lt;br /&gt;(hmm, password in plain text - make sure your dot files can only be read by self)&lt;br /&gt;&lt;br /&gt;My problem is that I tend to forget to add the protocol ('http://') to the above line &amp; then waste some time swearing when it doesn't work. I need to setup more machines, then I'd remember.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7056503724813822456?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7056503724813822456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7056503724813822456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7056503724813822456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7056503724813822456'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2009/11/http-proxy-environment-variable.html' title='http proxy environment variable'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-4040104413189990234</id><published>2009-02-21T02:26:00.000-08:00</published><updated>2009-11-11T16:31:08.584-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>perl one-liner</title><content type='html'>perl -e 'while(&lt;*.png&gt;){$n=sprintf("%02d",++$i,$_);rename($_,$n."frumpus\.png")}'&lt;br /&gt;&lt;br /&gt;append an ascending number to all the files in a directory: ie "27frumpus.png"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-4040104413189990234?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/4040104413189990234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=4040104413189990234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4040104413189990234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4040104413189990234'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2009/02/perl-one-liner.html' title='perl one-liner'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-107307361940009300</id><published>2008-11-30T16:08:00.000-08:00</published><updated>2010-01-12T14:50:11.597-08:00</updated><title type='text'>whatever</title><content type='html'>Say that you want to run stuff written in Perl out of cron. &lt;span style="font-weight:bold;"&gt;Cron doesn't run as you&lt;/span&gt;. So it doesn't inherit your finely-crafted exported shell environment:&lt;br /&gt;&lt;br /&gt;#setup the ENV that Perl knows about:&lt;br /&gt;$ENV{ORACLE_HOME}='/opt/local/instantclient_10_2';&lt;br /&gt;$ENV{LD_LIBRARY_PATH}='/opt/local/instantclient_10_2';&lt;br /&gt;&lt;br /&gt;my $sqlplus;&lt;br /&gt;&lt;br /&gt;$sqlplus=`sqlplus user/password\@DBNAME &amp;lt;&amp;lt; END&lt;br /&gt;sql statements here...;&lt;br /&gt;exit&lt;br /&gt;END&lt;br /&gt;`;&lt;br /&gt;&lt;br /&gt;open(MAILX, "| mailx -s 'db report' user\@domain ") || die "mailx no work&lt;br /&gt;\n";&lt;br /&gt;print MAILX $sqlplus;&lt;br /&gt;close MAILX;&lt;br /&gt;&lt;end&gt;&lt;end my="" sql="" statements="" exit="" end="" s="" db="" report="" domain="" die="" check="" n="" print="" mailx="" close=""&gt;&lt;/end&gt;&lt;/end&gt;&lt;br /&gt;&lt;br /&gt;In addition, remember that to edit your crontab, you may need to: export EDITOR=vi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-107307361940009300?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/107307361940009300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=107307361940009300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/107307361940009300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/107307361940009300'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/11/whatever.html' title='whatever'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-1307212638166882508</id><published>2008-11-26T15:25:00.000-08:00</published><updated>2008-11-26T15:28:55.937-08:00</updated><title type='text'>yeah yeah</title><content type='html'>just a reminder: when you're working in sqlplus:&lt;br /&gt;&lt;br /&gt;&gt; spool file.txt&lt;br /&gt;&gt; @script.sql&lt;br /&gt;&gt; spool off&lt;br /&gt;&lt;br /&gt;now look inside 'file.txt' for the output of your query.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-1307212638166882508?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/1307212638166882508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=1307212638166882508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1307212638166882508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1307212638166882508'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/11/yeah-yeah.html' title='yeah yeah'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7352058017832194887</id><published>2008-11-10T14:18:00.000-08:00</published><updated>2008-11-10T14:22:05.180-08:00</updated><title type='text'>Perl modules different flavours</title><content type='html'>* the tried &amp;amp; trusted CPAN shell: perl -MCPAN -e shell ('install blah' etc)&lt;br /&gt;&lt;br /&gt;* with Active Perl (no repos are maintained for Solaris/OSX etc) - so their 'ppm' command is no use there. ActiveState appear to have wrapped the CPAN shell into something that's invoked by : 'cpan'.&lt;br /&gt;&lt;br /&gt;http://docs.activestate.com/activeperl/5.10/faq/ActivePerl-faq2.html#CPAN_shell&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7352058017832194887?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7352058017832194887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7352058017832194887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7352058017832194887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7352058017832194887'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/11/perl-modules-different-flavours.html' title='Perl modules different flavours'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-1510764065434091692</id><published>2008-11-10T14:15:00.001-08:00</published><updated>2008-12-09T02:41:58.341-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>list installed perl modules</title><content type='html'>perl -MCPAN -e 'print CPAN::Shell-&gt;r '&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;oh yeah &amp;amp;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"o conf init" inside of the MCPAN console to reconfigure (when the list of available mirror you picked proves to have been wildly over enthusiastic).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-1510764065434091692?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/1510764065434091692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=1510764065434091692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1510764065434091692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1510764065434091692'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/11/list-installed-perl-modules.html' title='list installed perl modules'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-918465307445392749</id><published>2008-05-29T19:05:00.000-07:00</published><updated>2008-05-29T19:19:00.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>DBD::Oracle gotcha</title><content type='html'>when only the 'best' will do, ie. Oracle &amp;amp; Solaris: you have install the Perl DBD::Oracle module but whenever you try to load it (or run 'make test' etc) libnnz10.so is not found.&lt;br /&gt;&lt;br /&gt;Go and check Oracle.so - this is the library created by the DBD::Oracle compile:&lt;br /&gt;&lt;br /&gt;ldd -s Oracle.so | grep libnnz&lt;br /&gt;&lt;br /&gt;This is one of the Oracle libs that was installed with instant client - in the location that should be your Oracle Home. You will see from the ldd output that it's expected to be found somewhere like /usr/lib. So even though you've defined $ORACLE_HOME &amp;amp; $LD_LIBRARY_PATH - that's not where the shared lib is looking for a dependency.&lt;br /&gt;&lt;br /&gt;just make a symlink:&lt;br /&gt;&lt;br /&gt;ln -s $ORACLE_HOME/libnnz10.so /usr/lib/libnnz10.so - or whatever the paths that will make it visible to the Oracle.so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-918465307445392749?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/918465307445392749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=918465307445392749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/918465307445392749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/918465307445392749'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/05/dbdoracle-gotcha.html' title='DBD::Oracle gotcha'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-3004491184632955292</id><published>2008-05-27T20:23:00.000-07:00</published><updated>2010-01-04T16:29:30.058-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Solaris'/><title type='text'>Oracle client-only on unix systems</title><content type='html'>I've seen DBAs grab &amp;amp; run the full Oracle installer on *nix systems just to get the client components. This is unecessary.&lt;br /&gt;&lt;br /&gt;Go to the Oracle download site for the client components coresponding to the database verison you want to access. Install basic libs, sdk (probably optional) &amp;amp; sqlplus off the web.&lt;br /&gt;&lt;br /&gt;* say you have installed all this in /opt/instantclient&lt;br /&gt;then:&lt;br /&gt;* set an ORACLE_HOME environment variable to /opt/instantclient&lt;br /&gt;* add ORACLE_HOME to your PATH&lt;br /&gt;* add ORACLE_HOME to your LD_LIBRARY_PATH&lt;br /&gt;* set ORACLE_SID to the name of the database you usually want to connect to...&lt;br /&gt;&lt;br /&gt;add a .tnsnames.ora file to your home dotfiles (I still do not know how to specify a default system-wide tnsnames file on unix).&lt;br /&gt;&lt;br /&gt;Now, when you (or a script running in your environment) execute SQLPLus, it can find it's libraries etc. Likewise things such as DBD::Oracle will also work.&lt;br /&gt;&lt;br /&gt;You CAN also dispense with a tnsnames file completely for SQLPLus - specifying host, port &amp;amp; datasource explicitly but this is a very long command line &amp;amp; requires escaping brackets etc.&lt;br /&gt;&lt;br /&gt;EDIT (Jan 2010) - there are some systems where you will NEVER be able to get sqlplus to work - even if you follow the installation instructions. I suspect that there are just broken library paths compiled into the oracle binary. The attitude on the forums is the same as you will meet when dealing with most oracle admins: it's your fault,  check everything that you've already checked etc. it's a problem with your OS, blah.&lt;br /&gt;&lt;br /&gt;Such is the lot of the middleware guy. I'm just glad I won't have to do this shit for much longer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-3004491184632955292?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/3004491184632955292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=3004491184632955292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3004491184632955292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3004491184632955292'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/05/oracle-client-only-on-unix-systems.html' title='Oracle client-only on unix systems'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-417747625178942805</id><published>2008-05-22T04:09:00.000-07:00</published><updated>2008-05-22T06:15:51.921-07:00</updated><title type='text'>Perl - read a bunch of files</title><content type='html'># read in a directory trying to ignore non-image files&lt;br /&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;use Image::Magick;&lt;br /&gt;&lt;br /&gt;my $image = Image::Magick-&gt;new;&lt;br /&gt;$image-&gt;Set(bordercolor=&gt;'#FFFFFF');&lt;br /&gt;&lt;br /&gt;# args to the script:&lt;br /&gt;my $argc = $#ARGV+1;&lt;br /&gt;&lt;br /&gt;my @imageFilenames, my $target;&lt;br /&gt;my @imageInfo;&lt;br /&gt;my $inPath = $ARGV[0] . '/';&lt;br /&gt;my $outPath = $ARGV[1] . '/';&lt;br /&gt;&lt;br /&gt;opendir DIR, $inPath or die "cannot access $path\n";&lt;br /&gt;@imageFilenames = grep{$_ ne '.' &amp;amp;&amp;amp; $_ ne '..'} readdir DIR;&lt;br /&gt;closedir DIR;&lt;br /&gt;&lt;br /&gt;# process all the filenames&lt;br /&gt;my $j = 0;&lt;br /&gt;foreach $imageFilename (@imageFilenames) {&lt;br /&gt;    $target = join("", ($inPath, $imageFilename));&lt;br /&gt;    # test if the file returns width in pixels at least 1 - meaning that&lt;br /&gt;    # imagemagick can truly read it&lt;br /&gt;    @imageInfo=$image-&gt;ping($target);    &lt;br /&gt;    if($imageInfo[1]&lt;1) {&lt;br /&gt;        next; # ie. skip this iteration&lt;br /&gt;    }&lt;br /&gt;    status =" $image-"&gt;Read($target);&lt;br /&gt;    warn "error reading: $status\n" if $status;&lt;br /&gt;    print "reading $target\n";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;undef $image;&lt;br /&gt;exit;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-417747625178942805?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/417747625178942805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=417747625178942805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/417747625178942805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/417747625178942805'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/05/perl-read-bunch-of-files.html' title='Perl - read a bunch of files'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7097568833347850905</id><published>2008-05-06T18:03:00.001-07:00</published><updated>2008-05-06T18:03:54.760-07:00</updated><title type='text'>maxim #1</title><content type='html'>don't tell me it's mission critical. Just tell me what you want me to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7097568833347850905?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7097568833347850905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7097568833347850905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7097568833347850905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7097568833347850905'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/05/maxim-1_06.html' title='maxim #1'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-3921158366122380915</id><published>2008-05-05T18:02:00.000-07:00</published><updated>2008-05-06T18:04:10.033-07:00</updated><title type='text'>comment #1</title><content type='html'>...you're not deep, you're just an ass&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-3921158366122380915?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/3921158366122380915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=3921158366122380915' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3921158366122380915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3921158366122380915'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/05/maxim-1.html' title='comment #1'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-3273604118234807465</id><published>2008-01-22T20:59:00.000-08:00</published><updated>2008-01-22T21:06:32.307-08:00</updated><title type='text'>cleaning up the filesystem</title><content type='html'>a mundane task - but why do I keep finding servers with disks almost full - because someone had a cron job - logging or saving out some data - but didn't put in anything to cleanup after themselves. The following will delete files from a destination after 14 days:&lt;br /&gt;&lt;br /&gt;find /some/location/ -mtime +14 -exec rm  {} \;&lt;br /&gt;&lt;br /&gt;wasn't that hard was it?&lt;br /&gt;&lt;br /&gt;The sensible thing is to test it non-destructively first by the way...so exec &lt;span style="font-style: italic;"&gt;ls&lt;/span&gt; or something harmless for testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-3273604118234807465?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/3273604118234807465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=3273604118234807465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3273604118234807465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/3273604118234807465'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2008/01/cleaning-up-logs.html' title='cleaning up the filesystem'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-8944190855600700359</id><published>2007-12-19T21:41:00.001-08:00</published><updated>2007-12-19T21:46:31.507-08:00</updated><title type='text'>and...</title><content type='html'>needing to send mail from within a batch file...(no 'mail' app like on nearly all unix) no, I don't want to mess with MS mail profiles etc...&lt;a href="http://sourceforge.net/projects/blat"&gt;blat&lt;/a&gt; works well. I even managed to get it going as a non-administrator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-8944190855600700359?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/8944190855600700359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=8944190855600700359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/8944190855600700359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/8944190855600700359'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2007/12/and.html' title='and...'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-5755272020382218879</id><published>2007-12-19T21:25:00.000-08:00</published><updated>2007-12-19T21:50:36.148-08:00</updated><title type='text'>datestamps</title><content type='html'>hooray. I have a new job doing server/middleware support. Even better: a co-worker asked me to do something - convert a unix shell script to run on a Windows 2003 server. Aside from the lines dealing with an Oracle client - they want a datestamp in the reports:&lt;br /&gt;&lt;br /&gt;from the familar unix one-liner:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;now =`date +'%Y%m%d%M%S'`&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to the following horror:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;REM generate timestamp!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;@for /F "tokens=2,3,4 delims=/ " %%A in ("%date%") do @(  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set day=%%A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set month=%%B&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set year=%%C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;@for /F "tokens=1,2,3 delims=: " %%A in ("%time%") do @(  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set hour=%%A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set minute=%%B&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set sec=%%C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;REM cleanup the seconds string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;@for /F "tokens=1* delims=. " %%A in ('echo.%sec%') do @(   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set sec=%%A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set timestamp=%year%%month%%day%%hour%%minute%%sec%&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;amp; of course, this will break if the locale is not Australian dates...yuk. Hope I'm not being naive in that. A solution might be to do more in VB (which I do know) or install Perl on everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-5755272020382218879?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/5755272020382218879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=5755272020382218879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/5755272020382218879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/5755272020382218879'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2007/12/datestamps.html' title='datestamps'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-1254132537859350921</id><published>2007-12-17T20:10:00.000-08:00</published><updated>2007-12-17T20:18:07.164-08:00</updated><title type='text'>age-old vi/vim question</title><content type='html'>how to make the arrow keys work in insert mode. Another one that I probably fix a few times per year &amp;amp; then forget how to do. Irrespective of whether this is a good idea or not: adding ":set nocompatible" to your .vimrc file fixes this. This appears to work on ubuntu &amp;amp; Red Hat Enterprise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-1254132537859350921?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/1254132537859350921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=1254132537859350921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1254132537859350921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/1254132537859350921'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2007/12/age-old-vivim-question.html' title='age-old vi/vim question'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-4764179527974089595</id><published>2007-10-28T19:48:00.000-07:00</published><updated>2008-05-06T18:05:06.484-07:00</updated><title type='text'>mount</title><content type='html'>more notes to self:&lt;br /&gt;&lt;br /&gt;to mount an ISO image:&lt;br /&gt;mount -o loop -t iso9660 &lt;span style="color: rgb(255, 102, 0);"&gt;image.iso /path/to/mount/point&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;to remount a disk mounted read-only&lt;br /&gt;mount -o remount rw &lt;span style="color: rgb(204, 102, 0);"&gt;file-system&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;good old:&lt;/span&gt; mount -a&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-4764179527974089595?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/4764179527974089595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=4764179527974089595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4764179527974089595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/4764179527974089595'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2007/10/mount.html' title='&lt;i&gt;mount&lt;/i&gt;'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-6265822572620609097</id><published>2007-10-24T04:37:00.000-07:00</published><updated>2007-10-24T05:18:25.296-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl data'/><title type='text'>sortable directories</title><content type='html'>&lt;span style="font-size:85%;"&gt;Let's say that you have generated directories full of images from some app like Pure Data. This is pretty basic stuff but easy to forget.&lt;br /&gt;&lt;br /&gt;Basically - files with names in a format like file001.jpg, file002.jpg...&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;In PD, simply provide an sprintf-style argument like: "/file/path/frame%03d.jpg" to the 'makefilename' object. Magic.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;opendir DIR, $inPath or die "cannot access $inPath\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;@imageFilenames = sort(grep{$_ ne '.' &amp;amp;&amp;amp; $_ ne '..'} readdir DIR);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;closedir DIR;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Without the sort function above, the order of filenames in @imageFilenames will be farily random. That's no good if you want to maybe run through a time series of image.&lt;br /&gt;&lt;br /&gt;You may want to append the full path to each filename entry:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;my ($i, $z) = (0,0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;foreach $z (@imageFilenames) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;        $imageFilenames[$i] = join("", ($inPath, $z));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;        print "$imageFilenames[$i] \n";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;        $i++;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To shuffle this sorted array:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;use List::Util 'shuffle'; # requires Perl 5.8 or later&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;my @shuffledFilenames = shuffle(@imageFilenames);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or just omit the orginal sorting function perhaps.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-6265822572620609097?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/6265822572620609097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=6265822572620609097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/6265822572620609097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/6265822572620609097'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2007/10/sortable-directories.html' title='sortable directories'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3973638950638356089.post-7214085761307137134</id><published>2007-10-01T05:02:00.000-07:00</published><updated>2007-10-24T05:16:09.380-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>bookmarklets</title><content type='html'>&lt;p&gt;this is a little bookmarklet test&lt;/p&gt;&lt;a href="javascript:void(window.open('http://www.altavista.com/web/results?itag=ody&amp;q=wikipedia+topic+troll&amp;kgs=1&amp;kls=0'))"&gt;alta vista&lt;/a&gt;&lt;br /&gt;&lt;p&gt;how is this revolutionary? well, it's not in that simplistic form. The idea is in being able to launch more sophisticated stuff embedded in an URI&lt;/p&gt;&lt;a href="javascript:Qr=document.getSelection();if(!Qr){void(Qr=prompt('Keywords...',''))};if(Qr)location.href='http://www.altavista.com/cgi-bin/query?pg=q&amp;what=web&amp;kl=XX&amp;q='+escape(Qr)"&gt;Search Alta Vista...&lt;/a&gt;&lt;br /&gt;&lt;p&gt;there's got to be more than just that of course. I was just curious&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3973638950638356089-7214085761307137134?l=evilroundabout.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://evilroundabout.blogspot.com/feeds/7214085761307137134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3973638950638356089&amp;postID=7214085761307137134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7214085761307137134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3973638950638356089/posts/default/7214085761307137134'/><link rel='alternate' type='text/html' href='http://evilroundabout.blogspot.com/2007/10/bookmarklets.html' title='bookmarklets'/><author><name>Ash</name><uri>http://www.blogger.com/profile/13751115339325286098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
