<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>fak3r &#187; geek</title> <atom:link href="http://fak3r.com/category/geek/feed/" rel="self" type="application/rss+xml" /><link>http://fak3r.com</link> <description>look out honey &#039;cause I&#039;m using technology</description> <lastBuildDate>Sat, 06 Feb 2010 00:42:17 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <image><link>http://fak3r.com</link> <url>http://fak3r.com/wp-content/mbp-favicon/favicon.ico</url><title>fak3r</title> </image> <item><title>HOWTO securely delete files in OS X on the commandline</title><link>http://fak3r.com/2010/01/12/howto-securely-delete-files-in-os-x-on-the-commandline/</link> <comments>http://fak3r.com/2010/01/12/howto-securely-delete-files-in-os-x-on-the-commandline/#comments</comments> <pubDate>Wed, 13 Jan 2010 02:51:44 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[geek]]></category> <category><![CDATA[howto]]></category> <category><![CDATA[travel]]></category> <category><![CDATA[China]]></category> <category><![CDATA[Facebook]]></category> <category><![CDATA[google]]></category> <category><![CDATA[Mac OS X]]></category> <category><![CDATA[POSIX]]></category> <category><![CDATA[posix systems]]></category> <category><![CDATA[Srm]]></category> <category><![CDATA[Sudo]]></category> <category><![CDATA[twitter]]></category> <category><![CDATA[United States]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1968</guid> <description><![CDATA[
So I&#8217;ve had my MacBook Pro for a few months now, and since I have a 500 Gig harddrive, I haven&#8217;t bothered to empty my trash yet.  Now I&#8217;m on a work trip in China, and it makes me think about the privacy (internet and otherwise) that I have in the US, that I [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1968"></abbr><p><a
href="http://fak3r.com/wp-content/uploads/2010/01/565549820.png" rel="shadowbox[post-1968];player=img;"><img
class="alignright size-full wp-image-1969" title="Trash" src="http://fak3r.com/wp-content/uploads/2010/01/565549820.png" alt="" width="154" height="154" /></a>So I&#8217;ve had my <a
href="www.apple.com/macbookpro">MacBook Pro</a> for a few months now, and since I have a 500 Gig harddrive, I haven&#8217;t bothered to empty my trash yet.  Now I&#8217;m on a work trip in China, and it makes me think about the <a
href="http://fak3r.com/tag/privacy/" class="st_tag internal_tag" rel="tag" title="Posts tagged with privacy">privacy</a> (internet and otherwise) that I have in the US, that I don&#8217;t expect here.  In fact, since we&#8217;re blocked from posting to either <a
href="http://facebook.com/">Facebook</a> or <a
href="http://twitter.com/">Twitter</a>, I know this post will only make it there because this site will post if for me after I post it to my site (again, not something you&#8217;d think about just living in most other parts of the world).  So what a good time to learn how to securely emptying my trash!  The first thing I did was use the &#8216;Secure delete&#8217; feature of the <a
href="http://www.apple.com/macosx">OS X</a> trash folder, but with over 190,000 files to remove, it sat there at 0% while the fan spun up for about 15 minutes.  That was it for me, it was clear it was going to take years for this to happen, so canceled that and hit <a
href="http://google.com">Google</a> to learn the right way to do it via the commandline.  One of the <a
href="http://exxamine.wordpress.com/2007/08/16/secure-file-delete-on-mac-os-x/">best pages</a> talks about <a
href="http://srm.sourceforge.net/">srm</a> a secure file deletion for posix systems that is installed by default on OS X.  I&#8217;ve crafted my <code>srm</code> command to use the <code>nice</code> command to reduce the amount of overhead the process causes (again, the GUI version was taking over the system and heating things up quickly) and the <code>sudo</code> command to ensure all files would be deleted regardless of permission/ownership.  In the end in looks like this:</p><p><code>nice -19 srm -rfv ~/.Trash/*</code></p><p>Yeah, while the <code>-v</code> flag will slow things down slightly, I prefer to have &#8216;verbose&#8217; output from the command to understand exactly what it&#8217;s doing.  Does anyone have better/more secure way to do this?  Leave a message in the comments if you do, I&#8217;d love to learn more about this.</p><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2010/01/12/howto-run-chromium-os-on-a-dell-mini-9-with-wifi/" title="HOWTO run Chromium OS on a Dell Mini 9 with wifi (January 12, 2010)">HOWTO run Chromium OS on a Dell Mini 9 with wifi</a> (7)</li><li><a
href="http://fak3r.com/2008/08/02/google-mp3blog-search-widget/" title="Google mp3blog search widget (August 2, 2008)">Google mp3blog search widget</a> (0)</li><li><a
href="http://fak3r.com/2008/10/27/army-twitter-could-be-a-terrorist-tool/" title="Army: Twitter could be a terrorist tool (October 27, 2008)">Army: Twitter could be a terrorist tool</a> (0)</li><li><a
href="http://fak3r.com/2008/02/21/paranoid-android-demo/" title="(Paranoid) Android demo (February 21, 2008)">(Paranoid) Android demo</a> (0)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2010/01/12/howto-securely-delete-files-in-os-x-on-the-commandline/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>HOWTO run Chromium OS on a Dell Mini 9 with wifi</title><link>http://fak3r.com/2010/01/12/howto-run-chromium-os-on-a-dell-mini-9-with-wifi/</link> <comments>http://fak3r.com/2010/01/12/howto-run-chromium-os-on-a-dell-mini-9-with-wifi/#comments</comments> <pubDate>Tue, 12 Jan 2010 09:48:23 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[featured]]></category> <category><![CDATA[geek]]></category> <category><![CDATA[headline]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[android]]></category> <category><![CDATA[Chrome OS]]></category> <category><![CDATA[Dell]]></category> <category><![CDATA[Dell Inc.]]></category> <category><![CDATA[Dell Inspiron Mini Series]]></category> <category><![CDATA[Embedded Linux]]></category> <category><![CDATA[google]]></category> <category><![CDATA[Google Chrome OS]]></category> <category><![CDATA[Google Inc.]]></category> <category><![CDATA[hexxeh.net site]]></category> <category><![CDATA[http://chromeos.hexxeh.net/mac.html]]></category> <category><![CDATA[http://www.jasongriffey.net/wp/2009/11/25/google-chrome-os-on-a-dell-mini9]]></category> <category><![CDATA[Intel]]></category> <category><![CDATA[Intel Corporation]]></category> <category><![CDATA[Moblin]]></category> <category><![CDATA[Netbooks]]></category> <category><![CDATA[ubuntu]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1915</guid> <description><![CDATA[
While I still really dig my Dell Mini 9, even with 2Gig of RAM it feels kinda sluggish when I have my normal 50 tabs open, and I&#8217;ve always known someone could do better (since I&#8217;m too lazy to recompile a kernel for it like I would have in the past).  With all the focus [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1915"></abbr><p><img
class="alignright size-full wp-image-1919" title="chrome-icon-200x200" src="http://fak3r.com/wp-content/uploads/2009/12/chrome-icon-200x200.jpg" alt="chrome-icon-200x200" width="200" height="200" />While I still really dig my <a
href="http://www.dell.com/us/en/dfh/notebooks/laptop-inspiron-9/pd.aspx?refid=laptop-inspiron-9&amp;cs=22&amp;s=dfh">Dell Mini 9</a>, even with 2Gig of RAM it feels kinda sluggish when I have my normal 50 tabs open, and I&#8217;ve always known someone could do better (since I&#8217;m too lazy to recompile a kernel for it like I would have in the past).  With all the focus on netbooks it was bound to be addressed, and while <a
title="Android" href="http://www.android.com/" target="_blank">Android</a> looks promising, it&#8217;s currently still more of a phone OS than something you&#8217;d be able to use on your netbook.  I&#8217;ve run it off a USB drive on the Mini 9 just to check it out, it was cool, but again, not really usable enough for a &#8216;top &#8211; maybe that&#8217;s not the target.  Another I want to check is <a
title="moblin.org" href="http://moblin.org/" target="_blank">Moblin</a>, Intel&#8217;s effort using <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a> as a base, but I haven&#8217;t seen a Mini 9 <a
href="http://fak3r.com/tag/howto/" class="st_tag internal_tag" rel="tag" title="Posts tagged with howto">HOWTO</a> (maybe I&#8217;ll have to write my own&#8230;) for that.  So, enter <a
href="http://en.wikipedia.org/wiki/Google_Chrome_OS">Google Chrome OS</a>, <a
href="http://fak3r.com/tag/google/" class="st_tag internal_tag" rel="tag" title="Posts tagged with google">Google</a>&#8217;s idea of how to not only address this problem, but perhaps lay out how we will use these computers in the future.  It&#8217;s always funny when I start talking about cloud and thin clients, it takes me back to dumb terminals talking to mainframes, but I digress.  The point is, thanks to great posts at <a
href="http://www.jasongriffey.net/wp/2009/11/25/google-chrome-os-on-a-dell-mini9/">jasongriffey.net</a> and <a
href="http://lifehacker.com/5416968/the-humans-guide-to-running-google-chrome-os">Lifehacker</a>, it&#8217;s really easy to install <a
href="http://fak3r.com/tag/google/" class="st_tag internal_tag" rel="tag" title="Posts tagged with google">Google</a>&#8217;s Chrome OS on a Dell Mini 9, the only thing I really have to add is that you have to use <a
href="http://chromeos.hexxeh.net/">ChromeOS Zero</a> from the hexxeh.net site.  After all, this is an <a
href="http://fak3r.com/tag/open-source/" class="st_tag internal_tag" rel="tag" title="Posts tagged with open source">open source</a> project, so folks are going to make changes/fix things and share with everyone.  Looking at the site they had a new release, yesterday (gotta love it!)  The last time I tried a build the wifi on my Mini just worked, so it looks like those problems are a thing of the past.</p><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2008/02/21/paranoid-android-demo/" title="(Paranoid) Android demo (February 21, 2008)">(Paranoid) Android demo</a> (0)</li><li><a
href="http://fak3r.com/2008/10/29/howto-install-ruby-on-rails-on-debian-or-ubuntu-linux-easily/" title="HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily (October 29, 2008)">HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily</a> (4)</li><li><a
href="http://fak3r.com/2008/07/17/howto-fix-fonts-in-debian-lennysid/" title="HOWTO: fix fonts in Debian Lenny/Sid (July 17, 2008)">HOWTO: fix fonts in Debian Lenny/Sid</a> (2)</li><li><a
href="http://fak3r.com/2008/05/27/howto-automatically-reconfigure-xorg-in-debian/" title="HOWTO: automatically reconfigure Xorg in Debian (May 27, 2008)">HOWTO: automatically reconfigure Xorg in Debian</a> (4)</li><li><a
href="http://fak3r.com/2010/01/12/howto-securely-delete-files-in-os-x-on-the-commandline/" title="HOWTO securely delete files in OS X on the commandline (January 12, 2010)">HOWTO securely delete files in OS X on the commandline</a> (1)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2010/01/12/howto-run-chromium-os-on-a-dell-mini-9-with-wifi/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>HOWTO defend databases from SQL attacks with GreenSQL</title><link>http://fak3r.com/2009/12/10/howto-defend-databases-from-sql-attacks-with-greensql/</link> <comments>http://fak3r.com/2009/12/10/howto-defend-databases-from-sql-attacks-with-greensql/#comments</comments> <pubDate>Thu, 10 Dec 2009 23:26:16 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[commerce]]></category> <category><![CDATA[geek]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[data retention]]></category> <category><![CDATA[Database]]></category> <category><![CDATA[firewall]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[network security]]></category> <category><![CDATA[open source]]></category> <category><![CDATA[opensource]]></category> <category><![CDATA[postgresql]]></category> <category><![CDATA[privacy]]></category> <category><![CDATA[sql attacks]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1924</guid> <description><![CDATA[
UPDATE: as if to underscore the importance of this tool and approach, yesterday a story hit about a SQL Injection attack infecting over 132,000 systems in short order.  Net-Security have the full details on this attack, including how it probes the host via JavaScript to check for known vulnerabilities, how it exploits them, and how [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1924"></abbr><p><strong><img
class="alignright size-full wp-image-1941" title="green_logo" src="http://fak3r.com/wp-content/uploads/2009/12/green_logo.png" alt="green_logo" width="128" height="149" />UPDATE</strong>: <em>as if to underscore the importance of this tool and approach, yesterday a story hit about a <a
title="SQL Injection Attack Claims 132000" href="http://it.slashdot.org/story/09/12/10/1334205/SQL-Injection-Attack-Claims-132000" target="_blank">SQL Injection attack infecting over 132,000</a> systems in short order.  Net-<a
href="http://fak3r.com/tag/security/" class="st_tag internal_tag" rel="tag" title="Posts tagged with security">Security</a> have the <a
title="full details on this attack" href="http://www.net-security.org/secworld.php?id=8604" target="_blank">full details on this attack</a>, including how it probes the host via JavaScript to check for known vulnerabilities, how it exploits them, and how it ultimately downloads a back-door trojan to get the game going.  It&#8217;s really amazing to see how complicated and professional these things have gotten, and just adds to the reasoning that we have to step up to the plate and learn how to better defend against them.</em></p><p>I&#8217;ve been privy to some log dumps showing real, and successful, SQL attacks on some <a
href="http://en.wikipedia.org/wiki/Microsoft_SQL_Server">MSSQL</a> servers before, and they weren&#8217;t pretty.  Of course a SQL injection attack has little to do with the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> (well, as long as it&#8217;s still SQL based at least (nod to <a
href="http://couchdb.apache.org/">CouchDB</a> and <a
href="http://www.mongodb.org/">MongoDB</a>)), and more with the code that calls it, and how that code deals with sanitizing inputs.   For this reason <a
href="http://www.mysql.com/">MySQL</a> is just as vulnerable, after all, bad code is bad code.  While a client of mine opted for a firewall &#8216;module&#8217; they had to buy an additional licence for, that set them back many thousands of dollars, I knew there had to be cheaper/better ways to address this kind of vulnerability.  One way of course is to fix the code, but with legacy sites that no one has touched for years, this may be impractcal (I didn&#8217;t say this, I only heard it), and the other idea is to proxy the SQL and &#8216;clean&#8217; it before it hits the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>.  The advantage of this approach is that it protects against known attacks, as well as unknown attacks, since it limits so much of what an attack is allowed to accomplish when trying to get its&#8217; foot in the door.  This approach is what the folks over at <a
title="GreenSQL" href="http://www.greensql.net" target="_blank">GreenSQL</a> have done, and it&#8217;s very impressive.  They sum things up nice and sweet with, &#8220;GreenSQL is an <a
href="http://fak3r.com/tag/open-source/" class="st_tag internal_tag" rel="tag" title="Posts tagged with open source">Open Source</a> <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> firewall used to protect databases from SQL injection attacks. GreenSQL works as a proxy for SQL commands and has built in support for <a
href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> &amp; PostgreSQL . The logic is based on evaluation of SQL commands using a risk scoring matrix as well as blocking known db administrative commands (DROP, CREATE, etc). GreenSQL is distributed under the GPL license.&#8221; <span
id="more-1924"></span> A high-level view shows GreenSQL acting as the proxy from the frontend to the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>:</p><p><img
class="aligncenter size-full wp-image-1926" title="listener" src="http://fak3r.com/wp-content/uploads/2009/12/listener.gif" alt="listener" width="451" height="121" /></p><p>This sounds and looks ideal, so with that in mind I installed GreenSQL with the default options on a <a
href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> server, and setup the included web-based Management Console to kick the tires and see what it does.  To show that it&#8217;s working I logged into a <a
href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>, first directly, on port 3306:</p><ul><pre># <a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">mysql</a> -h 127.0.0.1 -P 3306 -u dbadmin -p
Enter password:
Welcome to the <a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> monitor.  Commands end with ; or \g.
Your <a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> connection id is 24768
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">mysql</a>&gt; show databases;
+-------------------------+
| <a href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">Database</a>                |
+-------------------------+
|&lt;all of my <a href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>      |
| names were listed here&gt; |
+-------------------------+
32 rows in set (0.00 sec)
<a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">mysql</a>&gt; quit</pre></ul><p>And that&#8217;s what you&#8217;d expect, you login as a privledged user and you can see all of your databases, simple.  Now I tried it going through GreenSQL, so essentially a proxy to the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> server, on port 3305.</p><ul><pre># <a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">mysql</a> -h 127.0.0.1 -P 3305 -u dbadmin -p
Welcome to the <a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> monitor.  Commands end with ; or \g.
Your <a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> connection id is 24763
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
<a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">mysql</a>&gt; show databases;
Query OK, 0 rows affected (0.00 sec)
<a href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">mysql</a>&gt; quit</pre></ul><p>Ah, ok, I can see how this would make things more secure!  I then logged into the Management console to see what it had to say about the incident, and it told me what had happened:</p><ul><pre>Matching queries:
Query:    show databases
Time:    2009-12-09 22:02:26
DB User:    dbadmin
Risk:    31 blocked
Reason:    Detected attempt to discover db internal information.
ID:    1</pre></ul><p>After this I went into my website&#8217;s <a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a> file, (wp-<a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>.<a
href="http://fak3r.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with php">php</a> in Wordpress) and instructed it to connect to port 3305, instead of 3306.  A bit of a note, this wasn&#8217;t directly documented in my wp-<a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>.<a
href="http://fak3r.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with php">php</a> file, so to change the port, you just add a colon and the port number at then end of localhost, or your DB hostname, so it looks like this:</p><ul><pre>define('DB_HOST', 'localhost<strong>:3305</strong>');</pre></ul><p>I bring this up because most other configs will include a seperate line for the port, but hey, this works too, it was just a little &#8216;gotcha&#8217; that I had to <a
href="http://fak3r.com/tag/google/" class="st_tag internal_tag" rel="tag" title="Posts tagged with google">Google</a>.  Now GreenSQL is protecting my websites, including fak3r, and I expect to only expand upon this as I learn more ways to protect my servers from the wilds of the Internet.</p><p><strong>Conclusion</strong>: While some will whine that GreenSQL &#8220;only&#8221; supports <a
href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> and Postgresql, when I first looked into this they were only supporting <a
href="http://fak3r.com/tag/mysql/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mysql">MySQL</a> &#8211; and that was last month, so I suspect they&#8217;ll cover things like MSSQL and even Oracle in the future.  This would be huge for businesses and corportations of all sizes to protect their data, something sites like the <a
href="http://www.privacyrights.org/ar/ChronDataBreaches.htm">Chronology of Data Breaches</a> are showing us are STILL NOT HAPPENING.  Plus, coming from a firewall background, this seems like an obvious way to protect things.  While there&#8217;s a performance trade off, their tests show it to be very minimal, but I&#8217;ll try to run my own tests and report back.  So, make no doubt about it, the GreenSQL folks have put together an enterprise ready product that they are actively developing to address the latest <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> threats.  Highly recommended.</p><p>Please post questions or comments below, I&#8217;m always learning and and chances are you know something I don&#8217;t!</p><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2007/09/24/software-support-must-evolve-with-open-source/" title="Software support must evolve with Open Source (September 24, 2007)">Software support must evolve with Open Source</a> (1)</li><li><a
href="http://fak3r.com/2008/03/31/open-source-is-good-for-you/" title="Open Source is good for you (March 31, 2008)">Open Source is good for you</a> (1)</li><li><a
href="http://fak3r.com/2009/01/27/howto-serve-jpeg2000-images-with-a-scalable-infrastructure/" title="HOWTO: serve jpeg2000 images with a scalable infrastructure (January 27, 2009)">HOWTO: serve jpeg2000 images with a scalable infrastructure</a> (2)</li><li><a
href="http://fak3r.com/2009/02/18/howto-configure-mysqls-mycnf-fil/" title="HOWTO: configure MySQL&#8217;s my.cnf file (February 18, 2009)">HOWTO: configure MySQL&#8217;s my.cnf file</a> (6)</li><li><a
href="http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/" title="HOWTO build your own open source Dropbox clone (September 14, 2009)">HOWTO build your own open source Dropbox clone</a> (44)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/12/10/howto-defend-databases-from-sql-attacks-with-greensql/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>EFF&#8217;s SSD (Surveillance Self-Defense) Project</title><link>http://fak3r.com/2009/12/02/effs-ssd-surveillance-self-defense-project/</link> <comments>http://fak3r.com/2009/12/02/effs-ssd-surveillance-self-defense-project/#comments</comments> <pubDate>Wed, 02 Dec 2009 18:25:16 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[commentary]]></category> <category><![CDATA[geek]]></category> <category><![CDATA[digital rights]]></category> <category><![CDATA[drm]]></category> <category><![CDATA[eff]]></category> <category><![CDATA[encryption]]></category> <category><![CDATA[hacker]]></category> <category><![CDATA[IP]]></category> <category><![CDATA[law]]></category> <category><![CDATA[online privacy]]></category> <category><![CDATA[privacy]]></category> <category><![CDATA[security]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1872</guid> <description><![CDATA[
EFF has a page covering what they call The SSD Project (Surveillance Self-Defense) which they provide, &#8220;&#8230;to educate the American public about the law and technology of government surveillance in the United States, providing the information and tools necessary to evaluate the threat of surveillance and take appropriate steps to defend against it.&#8220;  This is [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1872"></abbr><p><img
class="alignright size-full wp-image-1873" title="EFF-logo-trans" src="http://fak3r.com/wp-content/uploads/2009/12/EFF-logo-trans.gif" alt="EFF-logo-trans" width="200" height="137" /><a
href="http://fak3r.com/tag/eff/" class="st_tag internal_tag" rel="tag" title="Posts tagged with eff">EFF</a> has a page covering what they call <a
title="The SSD Project" href="https://ssd.eff.org/book/export/html/14" target="_blank">The SSD Project</a> (Surveillance Self-Defense) which they provide, &#8220;<em>&#8230;to educate the American public about the law and technology of government surveillance in the United States, providing the information and tools necessary to evaluate the threat of surveillance and take appropriate steps to defend against it.</em>&#8220;  This is important stuff, and what I wish others would know, so I&#8217;m posting links to the source in the hope it will get more exposure and results in the search engines of the Internet.  I will contact <a
href="http://fak3r.com/tag/eff/" class="st_tag internal_tag" rel="tag" title="Posts tagged with eff">EFF</a> and see if we can formulate a better method to disseminate and distribute this text, allowing for updates and annotations going forward.  Also, I aggregate news that cover these kind of issues over on <a
title="Left to chance" href="http://lefttochance.com" target="_blank">Left to chance</a>, take a look, then follow @<a
title="Twitter - Lefttochance" href="http://twitter.com/lefttochance" target="_blank"><span
style="text-decoration: underline;">lefttochance</span></a> and @<a
title="Twitter - EFF" href="http://twitter.com/eff" target="_blank"><span
style="text-decoration: underline;">eff</span></a> on Twitter to stay informed, and consider joining the <a
title="LinkedIn EFF Group" href="http://www.linkedin.com/groups?gid=66993&amp;trk=hb_side_g" target="_blank">LinkedIn EFF Group</a> I run to join in the conversation.  In other words, get involved and &#8230;</p><h1 style="text-align: center;"><a
title="EFF's SSD Project" href="https://ssd.eff.org/book/export/html/14" target="_blank"><strong>Know  your  rights!</strong></a></h1><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2007/08/02/security-researcher-dan-kaminsky/" title="Security researcher Dan Kaminsky (August 2, 2007)">Security researcher Dan Kaminsky</a> (1)</li><li><a
href="http://fak3r.com/2005/10/21/new-phisher-site-to-fight/" title="New phisher site to fight! (October 21, 2005)">New phisher site to fight!</a> (0)</li><li><a
href="http://fak3r.com/2007/02/13/fbi-lost-160-laptops-in-last-44-months/" title="FBI lost 160 laptops in last 44 months (February 13, 2007)">FBI lost 160 laptops in last 44 months</a> (3)</li><li><a
href="http://fak3r.com/2007/01/19/tjx-companies-data-breach-reveals-credit-card-data/" title="TJX Companies data breach reveals credit card data (January 19, 2007)">TJX Companies data breach reveals credit card data</a> (2)</li><li><a
href="http://fak3r.com/2005/12/31/this-is-a-picture/" title="This is a picture (December 31, 2005)">This is a picture</a> (3)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/12/02/effs-ssd-surveillance-self-defense-project/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Ruby on Rails: gem install versus apt-get</title><link>http://fak3r.com/2009/11/18/ruby-on-rails-gem-install-versus-apt-get/</link> <comments>http://fak3r.com/2009/11/18/ruby-on-rails-gem-install-versus-apt-get/#comments</comments> <pubDate>Wed, 18 Nov 2009 17:09:35 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[geek]]></category> <category><![CDATA[howto]]></category> <category><![CDATA[apt-get]]></category> <category><![CDATA[bsd]]></category> <category><![CDATA[config]]></category> <category><![CDATA[configuration]]></category> <category><![CDATA[gem install]]></category> <category><![CDATA[hacker]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[redmine]]></category> <category><![CDATA[ruby]]></category> <category><![CDATA[ruby on rails]]></category> <category><![CDATA[update]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1850</guid> <description><![CDATA[
UPDATE: Thanks to Ryan, Ant and Fern for the tips.  With that in mind I found an online Slicehost tutorial that contained the steps and explained how to install ruby via apt-get, then get the latest rubygems, install that manually, ran gem to update itself, then run gem to install rails &#8211; as suggested.  The [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1850"></abbr><p><img
class="alignright size-full wp-image-1139" title="rails" src="http://fak3r.com/wp-content/uploads/2008/10/rails.png" alt="rails" width="87" height="112" /><strong>UPDATE:</strong> Thanks to Ryan, Ant and Fern for the tips.  With that in mind I found an online <a
title="Slicehost tutorial" href="http://articles.slicehost.com/2009/4/9/debian-lenny-ruby-on-rails" target="_self">Slicehost tutorial</a> that contained the steps and explained how to install ruby via apt-get, then get the latest rubygems, install that manually, ran gem to update itself, then run gem to install rails &#8211; as suggested.  The steps I took from that page:<br
/> <span
id="more-1850"></span><br
/> On a <em>Debian Lenny</em> system that does not have ruby, rubygems or rails installed on it yet:</p><p><code>apt-get update<br
/> apt-get upgrade<br
/> apt-get install ruby-dev ruby ri rdoc irb libreadline-ruby libruby libopenssl-ruby sqlite3 libsqlite3-ruby libsqlite-dev libsqlite3-dev</code></p><p>Once that completes without errors, make sure ruby is installed and ok:</p><p><code>ruby -v</code></p><p>Now download the latest rubygem (1.3.5 as of this post) from RubyForge http://rubyforge.org/frs/?group_id=126:</p><p><code>wget http://rubyforge.org/frs/download.<a
href="http://fak3r.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with php">php</a>/60718/rubygems-1.3.5.tgz</code></p><p>Unpack it, change into the directory, run setup:</p><p><code>tar xzvf rubygems-1.3.5.tgz<br
/> cd  rubygems-1.3.5<br
/> ruby setup.rb</code></p><p>After that you&#8217;ll see:</p><p><code>RubyGems 1.3.5 installed</code></p><p>Then it&#8217;s suggested that you make a symlink to gem1.8 so you can run it as <code>gem</code>:</p><p><code>ln -s /usr/bin/gem1.8 /usr/bin/gem</code></p><p>Now make sure everything is up to date (even though we just installed the latest):</p><p><code>gem update<br
/> gem update --system</code></p><p>And finally &#8211; install rails:</p><p><code>gem install rails</code></p><p>After this you can check what gem has installed, and their version numbers:</p><p><code>gem list</code></p><p>And there you have it, more steps than I wanted, but now I know how to have a Debian system up to date, with Ruby, and then having rubygems handling all of the other ruby things that are better dealt with as gems.  As for systems I already have running in production in mixed enviroments?  I&#8217;ll look to migrate those to properly configured installs in the future.  I guess for extra credit I should contact the maintainer of rubygems, and the associated gems, for Debian to get their side of the story, or maybe a solution they could put in place moving forward.</p><p><strong><span
style="text-decoration: underline;">Original post:</span></strong></p><p>I&#8217;ve been using <a
title="Ruby on Rails" href="http://rubyonrails.org/" target="_self">Ruby on Rails</a> on and off for <a
title="many years now" href="http://fak3r.com/?s=rails" target="_self">many years now</a>, and friends are always showing me new RoR apps to try out that look fly.  I can get things up and running fine, but it&#8217;s when the time comes to update an app that I have issues; I seem to come to the fork in the road where apt-get doesn&#8217;t have the latest version of Rails or some dendancy, and gem install is the proposed solution.  I worry that mixing the two updating procedures will mess things up, since I have seen this before in <a
title="Debian GNU/Linux" href="http://debian.org" target="_self">Debian GNU/Linux</a>, as well as <a
title="FreeBSD" href="http://www.freebsd.org/" target="_self">FreeBSD</a> (I suspect it&#8217;s me, and there&#8217;s a right way to do it).  So, for example, today I noticed there was a new version Redmine a few days ago, so I update to the latest via SVN (the <a
title="suggested way of updating Redmine" href="http://www.redmine.org/wiki/redmine/Download" target="_self">suggested way of updating Redmine</a>):</p><p><code># cd /opt/redmine-svn<br
/> # svn up<br
/> At revision 3076.</code></p><p>Now I copy in the email.yml and <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>.yml from my working instance so this will use the same <a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>:</p><p><code># cp /opt/redmine/<a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>/<a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>.yml /opt/redmine/<a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>/email.yml <a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>/<br
/> </code><br
/> So far so good, let&#8217;s rake it up:</p><p><code># RAILS_ENV=production rake db:migrate<br
/> (in /opt/redmine-svn)<br
/> Missing the Rails 2.3.4 gem. Please `gem install -v=2.3.4 rails`, update your RAILS_GEM_VERSION setting in <a
href="http://fak3r.com/tag/config/" class="st_tag internal_tag" rel="tag" title="Posts tagged with config">config</a>/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.</code></p><p>So here we are, crap, what version of Rails do I have installed via apt-get?</p><p><code># apt-cache showpkg rails | head -n3<br
/> Package: rails<br
/> Versions:<br
/> 2.2.3-1 (/var/lib/apt/lists/ftp.debian.org_debian_dists_squeeze_main_binary-i386_Packages) (/var/lib/dpkg/status)</code></p><p>Damn, so what version of Debian am I running?</p><p><code># cat /etc/issue.net<br
/> Debian GNU/<a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> squeeze/sid</code></p><p>Yep, the latest, testing branch.  So here I am, do I leave the apt-get world and start up gem install or what?  My hesitation is that this is my &#8216;production&#8217; version of Redmine, and I don&#8217;t really want to build out a sep install just to test my Rails updating, and if I do that, will the gem Rails install hose my current apt-get installed Rails anyway?  So this is the problem I&#8217;ve had since I started playing with Rails apps, and it&#8217;s been about 3 years now (<a
title="fak3r.com was on Typo" href="http://fak3r.com/2006/04/06/howto-fix-login-issue-on-typo/" target="_self">fak3r.com was on Typo</a> for almost a year).  I&#8217;m open to suggestions as to how others handle this, do you just install Debian and then not even use apt-get for Rails/Ruby stuff?  It seems that <code>gem install</code> always have the most up to date stuff, I&#8217;m just concerned that updating things that way will interfere with an <code>apt-get update; apt-get upgrade</code> of the main system later, particularly now that I&#8217;m already in the apt-get side.  Do I reinstall and go all gem install for just Ruby stuff, and apt-get just for the system?  How do people segment this?  There has to be a proper way that I&#8217;m missing.</p><p>Comments?</p><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2008/10/29/howto-install-ruby-on-rails-on-debian-or-ubuntu-linux-easily/" title="HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily (October 29, 2008)">HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily</a> (4)</li><li><a
href="http://fak3r.com/2006/05/11/speed-up-ruby-on-rails-with-memcached/" title="Speed up Ruby-on-Rails with memcached (May 11, 2006)">Speed up Ruby-on-Rails with memcached</a> (17)</li><li><a
href="http://fak3r.com/2007/04/16/howto-ssh-tunneling-for-fun-and-profit/" title="HOWTO: ssh tunneling for fun and profit (April 16, 2007)">HOWTO: ssh tunneling for fun and profit</a> (0)</li><li><a
href="http://fak3r.com/2007/06/13/howto-populate-your-terms-title-automatically/" title="HOWTO: populate your term&#8217;s title automatically (June 13, 2007)">HOWTO: populate your term&#8217;s title automatically</a> (4)</li><li><a
href="http://fak3r.com/2008/08/26/howto-conky-config-conkyrc-for-debian-part-2/" title="HOWTO: conky config (conkyrc) for Debian Part 2 (August 26, 2008)">HOWTO: conky config (conkyrc) for Debian Part 2</a> (2)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/11/18/ruby-on-rails-gem-install-versus-apt-get/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>HOWTO build your own open source Dropbox clone</title><link>http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/</link> <comments>http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/#comments</comments> <pubDate>Tue, 15 Sep 2009 04:21:03 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[geek]]></category> <category><![CDATA[howto]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[backup]]></category> <category><![CDATA[diy]]></category> <category><![CDATA[dropbox]]></category> <category><![CDATA[mirror]]></category> <category><![CDATA[open source]]></category> <category><![CDATA[server]]></category> <category><![CDATA[sync]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1727</guid> <description><![CDATA[
UPDATE: Thanks to everyone who has contributed to this, and the Reddit thread, as it has provided some great ideas building off of my concept.  I&#8217;m starting to rethink about how we could have version control on top of things, and I&#8217;ll update things when I have more to share.  Also, does anyone have iFolder [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1727"></abbr><p><img
class="size-full wp-image-1740 alignright" title="opensource-dropbox" src="http://fak3r.com/wp-content/uploads/2009/09/opensource-dropbox.png" alt="I KAN HAZ OPEN-SRC DROPBX?" width="300" height="128" /><strong>UPDATE: </strong><em>Thanks to everyone who has contributed to this, and the <a
href="http://www.reddit.com/r/linux/comments/9ol1j/howto_create_your_own_dropbox_clone/">Reddit thread</a>, as it has provided some great ideas building off of my concept.  I&#8217;m starting to rethink about how we could have version control on top of things, and I&#8217;ll update things when I have more to share.  Also, does anyone have <a
href="http://www.kablink.org/ifolder">iFolder</a> (thanks for the proper link<cite
id="dsq-cite-17648050"><span
id="dsq-author-user-17648050">salubrium)</span></cite> working?  It looks like you need SUSE <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a>, which I don&#8217;t have access to, plus I know most Novell projects need a *ton* of Mono dependencies installed to have any of their stuff working, at least on the server side; but it sounds like they have Mac, <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> and Windows clients, which is encouraging.  While for my needs something a bit more &#8216;close to the bone&#8217; (as below) might be better for the server side, having it be inter-operable with something like iFolder could provide a lot more functionality for others.</em></p><p>First off, if you haven&#8217;t tried <a
href="https://www.getdropbox.com/referrals/NTY0OTQ0MDk">Dropbox</a>, you should check it out; sync all of your computers via the Dropbox servers, <a
href="https://www.getdropbox.com/referrals/NTY0OTQ0MDk">their basic free service gives you 2Gigs of space</a> and works cross-platform (Windows, Mac, <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a>).  I use it daily at home and work, and just having a live backup of my main data for my work workstation, my home netbook, and any other computer I need to login to is a huge win.  Plus, I have various &#8217;shared&#8217; folders that distribute certain data to certain users that I&#8217;ve granted access to, this means work details can be updated and automatically distributed to the folks I want to review/use the data.  I recommend everyone try it out, and see how useful it is, it&#8217;s turned into a game changer for me.  So a few months ago they made headlines on supporting <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> as they released the client as <a
href="http://fak3r.com/tag/open-source/" class="st_tag internal_tag" rel="tag" title="Posts tagged with open source">open source</a>.  While this got hopes up for many, it was only the client that was <a
href="http://fak3r.com/tag/open-source/" class="st_tag internal_tag" rel="tag" title="Posts tagged with open source">open source</a>, the server is still proprietary.  While slightly disappointing, this is fine, they&#8217;re a company trying to make money.  I don&#8217;t fault them for this, it&#8217;s just that a free, portable service like that would be a killer app.<span
id="more-1727"></span></p><p><span
style="background-color: #ffffff;">Meanwhile at work<span
style="background-color: #ffffff;"> I&#8217;m working on a solution to sync large data clusters online and the project manager described it as the need for &#8216;Dropbox on steroids&#8217;.  Before I had thought it was more complicated, but after thinking about it, I realized he was right.  Look, Dropbox is a great idea, but it obviously is just a melding of rsync, with something watching for file changes to initiate the sync, along with an easy to use front end.  From there I just started looking at ways this could work, and there are more than a few; here&#8217;s how I made it work.</span></span></p><p><a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> now includes <a
title="Inotify" href="http://en.wikipedia.org/wiki/Inotify" target="_blank">inotify</a>, which <span
style="background-color: #ffffff;">is a kernel subsystem that provides file system event notification.  From there all it took was to find an application that listens to inotify and then kicks off a command when it hears of a change.  I tried a few different applications like inocron, inosync and iwatch, before going with <a
title="lsyncd" href="http://code.google.com/p/lsyncd/" target="_blank">lsyncd</a>.   While all of them could work, lsyncd seemed to be the most mature, simple to configure and fast.  Lsyncd uses inotify to watch a specified directory for any new, edited or removed files or directories, and then calls rsync to take care of business.  So let&#8217;s get started in making our own <a
href="http://fak3r.com/tag/open-source/" class="st_tag internal_tag" rel="tag" title="Posts tagged with open source">open source</a> Dropbox clone with <a
title="Debian GNU/Linux" href="http://debian.org" target="_blank">Debian GNU/Linux</a> (lenny)</span></p><p><span
style="background-color: #ffffff;"></span></p><h2>Ladies and gentlemen, start your <del
datetime="2009-09-15T15:14:51+00:00">engines</del> servers!</h2><p>First, you need 2 severs; one being the server and the other the client. (you could do this on one host if you wanted to see how it works for a proof of concept)</p><h2>Install OpenSSH server</h2><p>First you&#8217;ll need to install OpenSSH Server on the remote system:<br
/> apt-get install openssh-server</p><h2><strong>Configure SSH for Passwordless Logins</strong></h2><p>You&#8217;ll need to configure passwordless logins between the two hosts you want to use, this is how rsync will pass the files back and forth.  I&#8217;ve previously written a <a
title="Passwordless SSH logins" href="http://fak3r.com/2006/08/10/howto-passwordless-ssh-logins/" target="_blank">HOWTO on this topic</a>, so we&#8217;ll crib from there.</p><p>First, generate a key:</p><pre>ssh-keygen -t rsa</pre><p>(Enter)</p><p>You shouldn’t have a key stored there yet, but if you do it will prompt you now; make sure you overwrite it.</p><pre>Enter passphrase (empty for no passphrase):</pre><p>(Enter)</p><pre>Enter same passphrase again:</pre><p>(Enter)</p><p>We’re not using passphrases so logins can be automated, this should only be done for scripts or applications that need this functionality, it’s not for logging into servers lazily, and it should not be done as root!</p><p>Now, replace REMOTE_SERVER with the hostname or <a
href="http://fak3r.com/tag/ip/" class="st_tag internal_tag" rel="tag" title="Posts tagged with IP">IP</a> that you’re going to call when you SSH to it, and copy the key over to the server:</p><pre>cat ~/.ssh/id_rsa.pub | ssh REMOTE_SERVER 'cat - &gt;&gt; ~/.ssh/authorized_keys2'</pre><p>Set the permissions to a sane level:</p><pre>ssh REMOTE_SERVER 'chmod 700 .ssh'</pre><p>Lastly, give it a go to see if it worked:</p><pre>ssh REMOTE_SERVER</pre><p>You should be dropped to a prompt on the remote server.  If not you may need to redo your .ssh directory, so on both servers:</p><pre>`mv ~/.ssh ~/.ssh-old`</pre><p>and goto 10</p><h2>Install rsync and lsyncd</h2><p>Next up is to install rsync and lsyncd.  First, rsync is simple, and could already be installed (you don&#8217;t need to run it as a server, just the client), make sure you have it with:</p><pre>apt-get install rsync</pre><p>Next is lsyncd.  There is no official Debian package yet, but it&#8217;s simple to build from source and install.  First off, if you don&#8217;t have build essentials you&#8217;ll need them, as well as libxml2-dev to build the lsyncd source.  Installing those is as simple as:</p><pre>apt-get install libxml2-dev build-essentials</pre><p>Now we&#8217;ll get the lsyncd code (you can check for a newer version at <a
title="Lsyncd" href="http://lsyncd.googlecode.com" target="_blank">http://lsyncd.googlecode.com</a>) and build that:</p><pre>wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz
tar -zxf lsyncd-1.26.tar.gz
cd lsyncd-1.26
./configure
make; make install</pre><p>This install does not install the <a
href="http://fak3r.com/tag/configuration/" class="st_tag internal_tag" rel="tag" title="Posts tagged with configuration">configuration</a> file, so we&#8217;ll do that manually now:</p><pre>cp lsyncd.conf.xml /etc/</pre><h2>Configure lsyncd</h2><p><span
style="background-color: #ffffff;">Next up, we&#8217;ll edit the <a
href="http://fak3r.com/tag/configuration/" class="st_tag internal_tag" rel="tag" title="Posts tagged with configuration">configuration</a> file now l<span
style="background-color: #ffffff;">ocated in /etc  The file is a simple, well documented XML file, and mine ended up like so &#8211; just be sure to change the source and target hosts and paths to work with your systems:</span></span></p><p>[sourcecode language='xml']<br
/> <lsyncd
version="1"></lsyncd><br
/> <settings><br
/> <logfile
filename="/var/log/lsyncd"/><br
/> <binary
filename="/usr/bin/rsync"/><br
/> <callopts><br
/><option
text="-lt%r"/><br
/><option
text="--delete"/><br
/> <exclude
-file/><br
/> <source
/><br
/> <destination
/><br
/> </callopts><br
/> </settings></p><p><directory><br
/> <source
path="/var/www/sync_test"/><br
/> <target
path="remote.server.com:/var/www/sync_test/"/><br
/> </directory><br
/> [/sourcecode]</p><h2>Launch lsyncd in debug for testing</h2><p>We&#8217;re ready to give it a go, may as well run it in debug for fun and to learn how lsyncd does what it does:</p><pre>lsyncd --conf /etc/lsyncd.conf.xml --debug</pre><p>Watch for errors, if none are found, continue.</p><h2>Add files and watch them sync</h2><p>Now we just need to copy some files into this directory on the source box:</p><pre>/var/www/sync_test</pre><p>And again, watch for any errors on the screen, if these come back as a failed connection it&#8217;ll be an SSH/key issue, common, and not too difficult to solve.   From here add some directories and watch how they&#8217;re queued up, and then take a look at them on the remote box: from this point out it &#8220;just works&#8221;.  Now give it more to do by adding files and directories, and then the logging for errors while they sync.  As it stands the system uses the source system as the preferred environment, so any files that change, or are added or removed, will be processed on the remote system.  This is analogous to how Dropbox works, you can use multiple sources (your laptop, your desktop, etc) and their server serves as the remote system, keeping all the clients in line.</p><h2>Conclusion</h2><p>You should now have a basic, working Dropbox style setup for your own personal use.  I had this running and used it to sync my netbook back to my home server, and then have my work desktop sync to my home server, so both the netbook and the desktop would stay in sync without me doing anything besides putting files in the specfied folder.  For my week long test I ran a directory alongside my Dropbox directory just to see how they both acted, and I didn&#8217;t have any failures along the way.</p><p>Now we have is a simple Dropbox style app that is lightweight, with a functional back-end running rsync, which is a known stable app that will scale, and while it doesn&#8217;t provide the front-end and web view that Dropbox does, that could be an easy part for a UX developer to tackle.  The cool thing is, we have a solution that works, and other options like the apps I described in the beginning, can be dropped in and replace the functionality lsyncd provides in case they can do something better.  For now, I&#8217;m playing around with it to learn the ins and outs of the system to see how it will behave long term under a much larger store (50Gig to start) to keep in check.  I will also work on better integrating this solution it into a working system, and update this tread with init scripts, reports, or maybe even a web view beyond just an index view from Apache or nginx.  Ideally we could have a web front end that would intelligently report if a file is complete on the server, and if the file is completely mirrored on another server or client.  P2P or Bitorrent would also be really cool to consider with this, and I&#8217;m sure there will be more applications for a setup like this once we&#8217;ve it around as a resource for a time.  Can you think of more applications for this?  Did you get it to work?  Can you think of a better way to do this?</p><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2008/10/29/howto-install-ruby-on-rails-on-debian-or-ubuntu-linux-easily/" title="HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily (October 29, 2008)">HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily</a> (4)</li><li><a
href="http://fak3r.com/2007/09/24/software-support-must-evolve-with-open-source/" title="Software support must evolve with Open Source (September 24, 2007)">Software support must evolve with Open Source</a> (1)</li><li><a
href="http://fak3r.com/2009/11/18/ruby-on-rails-gem-install-versus-apt-get/" title="Ruby on Rails: gem install versus apt-get (November 18, 2009)">Ruby on Rails: gem install versus apt-get</a> (10)</li><li><a
href="http://fak3r.com/2008/03/31/open-source-is-good-for-you/" title="Open Source is good for you (March 31, 2008)">Open Source is good for you</a> (1)</li><li><a
href="http://fak3r.com/2009/01/27/howto-serve-jpeg2000-images-with-a-scalable-infrastructure/" title="HOWTO: serve jpeg2000 images with a scalable infrastructure (January 27, 2009)">HOWTO: serve jpeg2000 images with a scalable infrastructure</a> (2)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/09/14/howto-build-your-own-open-source-dropbox-clone/feed/</wfw:commentRss> <slash:comments>44</slash:comments> </item> <item><title>Architecture for future LSID resolvers</title><link>http://fak3r.com/2009/08/18/architecture-for-future-lsid-resolvers/</link> <comments>http://fak3r.com/2009/08/18/architecture-for-future-lsid-resolvers/#comments</comments> <pubDate>Tue, 18 Aug 2009 20:32:20 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[bioinformatics]]></category> <category><![CDATA[geek]]></category> <category><![CDATA[architecture]]></category> <category><![CDATA[distributed architecture]]></category> <category><![CDATA[dns]]></category> <category><![CDATA[lsid]]></category><guid
isPermaLink="false">http://fak3r.com/?p=1717</guid> <description><![CDATA[
NOTE: the following is my generalized overview of some thoughts I came up with months ago in regards to LSID resolvers, and how to architect a fault tolerant solution (LINK).  I missed the meeting in Denmark last week (I was on a family vacation for once) where they were discussing this, and wrote the following [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://fak3r.com/?p=1717"></abbr><p><strong><em><img
class="alignright size-thumbnail wp-image-1693" title="office-space" src="http://fak3r.com/wp-content/uploads/2009/06/office-space-150x150.jpg" alt="office-space" width="150" height="150" />NOTE: </em></strong><em>the following is my generalized overview of some thoughts I came up with months ago in regards to LSID resolvers, and how to architect a fault tolerant solution (<a
title="resolving-lsids-with-url-resolvers-and-couchdb" href="http://fak3r.com/2009/04/29/resolving-lsids-wit-url-resolvers-and-couchdb/">LINK</a>).  I missed the meeting in Denmark last week (I was on a family vacation for once) where they were discussing this, and wrote the following for another attendee to submit on my behalf.  I&#8217;m posting it here for further exposure and discussion of the merits and shortcomings of these ideas.<br
/> </em></p><p>&#8220;In thinking about the architecture for future <span
style="background-image: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffcc; background-position: initial initial;">LSID</span> resolvers we need to remember that a single point of failure will fail. This has been proven true too many times, and it&#8217;s clearly not the way to proceed if we want to build a system the community can rely on. To succeed we should follow successful implementations of <span
style="background-image: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffcc; background-position: initial initial;">distributed</span> software services such as the domain name server (DNS), and the network time protocol (NTP). These succeed because the protocols are standardized and the software to connect to, and utilize, these services are simple to deploy.  If we had a package-able server that would connect to these services and be easy to deploy, an institution could ultimately count on its own server (with other servers providing automatic fail over) to serve as a resolver that would be updated against lead node servers regularly.<span
id="more-1717"></span></p><p>Using the idea of DNS replication, we can understand how something like this could function. A primary server would serve servers below it passing out changes (deltas) such as adds and edits occur. An institution wouldn&#8217;t have to check with a primary server to get resolution, it could talk to any of the servers that are in line for updates. Meanwhile having a batch of main servers behind a URL would allow pooling of resources just as the pool of <a
href="http://fak3r.com/tag/unix/" class="st_tag internal_tag" rel="tag" title="Posts tagged with unix">Unix</a> networked time servers all resolve around a single URL (<a
style="color: #2a5db0;" href="http://www.pool.ntp.org" target="_blank">http://www.pool.ntp.org</a>). The network time protocol (NTP) allows many nodes to resolve to the same address, so that if one server is unavailable, another one can provide automatic failover, without the need to change the URL.</p><p>After setting up this type of architecture all that would be left to do would be to expose the data on a server to others. Once other nodes were brought online and replicated against lead nodes, this would form the basis for a permanent and sustainable resolver system. If a main node ever died, it could be resurrected from other lead nodes, or even from an institution&#8217;s copy of the current <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a>, so that no data (original or accumulated) would be lost.  Using a <span
style="background-image: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffcc; background-position: initial initial;">distributed</span>, fault-tolerant architecture with replication and protocols designed to handle these issues would allow LSIDs to become the true resource the community needs, and be sustainable for the long term with minimal administration overhead, and a low barrier for entry for would be contributors.&#8221;</p><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li>No related posts.</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/08/18/architecture-for-future-lsid-resolvers/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>File system full, but why?</title><link>http://fak3r.com/2009/05/26/file-system-full-but-why/</link> <comments>http://fak3r.com/2009/05/26/file-system-full-but-why/#comments</comments> <pubDate>Wed, 27 May 2009 04:23:35 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[geek]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[rant]]></category> <category><![CDATA[adore-djatoka]]></category> <category><![CDATA[disk space]]></category> <category><![CDATA[disk usage]]></category> <category><![CDATA[djatoka server]]></category> <category><![CDATA[image server]]></category> <category><![CDATA[j2k]]></category> <category><![CDATA[JPEG2000]]></category> <category><![CDATA[unix]]></category><guid
isPermaLink="false">http://www.fak3r.com/?p=1651</guid> <description><![CDATA[
UPDATE: posted my workaround code below, good feedback already from Ryan (djatoka dev) and I&#8217;ll be testing the proper fix on the server soon.
I&#8217;ve got a server that keeps filling up its disk space and failing to serve images after it gets to the file system full error message.  First of all let me say, [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://www.fak3r.com/?p=1651"></abbr><p><img
class="alignright size-full wp-image-1427" title="0101010101" src="http://www.fak3r.com/wp-content/uploads/2009/01/0101010101.jpg" alt="0101010101" width="226" height="170" /><strong>UPDATE</strong>: posted my workaround code below, good feedback already from Ryan (djatoka dev) and I&#8217;ll be testing the proper fix on the server soon.<br
/> I&#8217;ve got a server that keeps filling up its disk space and failing to serve images after it gets to the <em>file system full</em> error message.  First of all let me say, I don&#8217;t blame it in the least, if the admin (aka me) doesn&#8217;t do enough to secure the server enough disk space to do its job, I say, let me have it.  But after I&#8217;ve set the suspect daemon to use a *reasonable* amount of space I stopped thinking of it as the culprit, so when this issue arose again, I looked elsewhere for the cause.  Fast forward to today, the <strong>server&#8217;s file system filled up again</strong>, and refused to serve any more data, again, I totally understand where the server is coming from, if it doesn&#8217;t have enough disk space to do its job, it shouldn&#8217;t have to apologize to anyone; it&#8217;s all on the admin (again, aka, me), but what was going on?<span
id="more-1651"></span> So, after I finally figured things out, I was/am still a bit confused here, but to my defense, when I did an &#8216;ls -ltrs /tmp&#8217; to look at directories of old cached files left over by <a
href="http://apps.sourceforge.net/mediawiki/djatoka/index.php?title=Main_Page">adore-djatoka</a> (which is the JPEG2000 (J2K) image server that I suspected of taking up all the disk space) :</p><blockquote><p># ls -ltrs /tmp | grep temp-20090519-*<br
/> 5.7M drwxr-xr-x 2 tomcat55 root     5.7M 2009-05-19 13:08 temp-20090519.130841</p></blockquote><p>I concluded that the adore-djatoka server was innocent, and I felt bad for accusing it of the infraction since the largest directory I&#8217;d come across that it was responsible for was a paltry 5.7M.  Immediately I thought to myself, &#8220;&#8230;<em>these are not the droids you&#8217;re looking for</em>&#8220;, after all, this couldn&#8217;t be responsible for a directory that was taking up almost 100G and making me look like a sophomore taking the &#8220;Intro To Computers&#8221; class for the second time, right?  But finally I got an unbiased opinion when I found a <a
href="http://fak3r.com/tag/unix/" class="st_tag internal_tag" rel="tag" title="Posts tagged with unix">Unix</a> utility called <a
href="http://dev.yorhel.nl/ncdu">ncdu</a>, which is an <strong>NC</strong>urses <strong>D</strong>isk <strong>U</strong>tility (<a
href="http://en.wikipedia.org/wiki/Du_(Unix)">du</a> is an old school <a
href="http://fak3r.com/tag/unix/" class="st_tag internal_tag" rel="tag" title="Posts tagged with unix">Unix</a> utility which displays &#8216;disk usage&#8217; of a selected directory), that, when run against the same directory as I scanned before, told me:</p><blockquote><p># ncdu /tmp | grep temp-20090519-*<br
/> 70.5GB [##########] /temp-20090519.130841</p></blockquote><p>Now look, I&#8217;m no math wiz, but come on, WTF am I seeing wrong here?</p><p>[...]</p><p>So, long story short, the ncdu utility is able to delete the Gigs worth of files much quicker than my script, so the server now has plenty of disk space, and I now have a rotate script that I humorously call <em>tomcat_turnover</em> that will:</p><ol><li>rotate out the old Tomcat temp directory (which is where the adore-djatoka server stores its cached images)</li><li>create a new Tomcat  temp directory</li><li>set the proper permissions on the new Tomcat temp directory</li><li>restart Tomcat (and thus the adore-djatoka server)</li><li>and finally, delete the contents of the old Tomcat temp directory, thus returning that used disk space to free disk space once again</li></ol><p>So, now tell me why is this &#8220;my problem&#8221; and not instead handled by the sever, and why doesn&#8217;t the adore-djatoka server respect the settings I set in djatoka.properties?</p><blockquote><p># grep cache /var/lib/tomcat5.5/webapps/adore-djatoka/WEB-INF/classes/djatoka.properties<br
/> OpenURLJP2KService.cacheEnabled=true<br
/> #OpenURLJP2KService.cacheTmpDir=<br
/> OpenURLJP2KService.cacheSize=1000<br
/> OpenURLJP2KService.cacheImageMaxPixels=100000</p></blockquote><p>Now, assumming <em>cacheSize=1000</em> doesn&#8217;t stand for 1000Gig, I&#8217;ve either found a bug in the djatoka software, which I&#8217;ll post a bug report to the project to determine, or this is an error by the well meaning admin (aka me).  More info when I learn about it, and yes, I&#8217;ll post my tomcat_turnover script here for extra credit next<br
/> The tomcat_turnover.sh workaround code:</p><blockquote><p># wrapper to recycle tomcat, while taking care to clean the old<br
/> # temp directory independantly of restarting tomcat.</p><p>APP=&#8221;tomcat5.5&#8243;<br
/> GROUP=&#8221;root&#8221;<br
/> DIR=&#8221;/var/lib/${APP}/temp&#8221;<br
/> DATE=.`date +%Y%m%d.%N`</p><p># stop tomcat<br
/> /etc/init.d/${APPILCATION} stop</p><p># shuffle directories<br
/> mv ${DIR} /tmp/temp${DATE}<br
/> mkdir ${DIR}<br
/> chown -R ${APP}:${GROUP} ${DIR}</p><p># restart tomcat<br
/> /etc/init.d/${APPILCATION} start</p><p># clean old temp<br
/> cd /tmp<br
/> nice -n 19 find temp${DATE} -atime 1 | while read x<br
/> do<br
/> rm $x<br
/> done<br
/> rm -rf temp${DATE}</p><p># done<br
/> exit 0</p></blockquote><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2009/01/27/howto-serve-jpeg2000-images-with-a-scalable-infrastructure/" title="HOWTO: serve jpeg2000 images with a scalable infrastructure (January 27, 2009)">HOWTO: serve jpeg2000 images with a scalable infrastructure</a> (2)</li><li><a
href="http://fak3r.com/2008/05/05/howto-configure-nginx-for-debian-ubuntu/" title="HOWTO: Configure nginx for Debian / Ubuntu (May 5, 2008)">HOWTO: Configure nginx for Debian / Ubuntu</a> (6)</li><li><a
href="http://fak3r.com/2008/10/01/how-to-become-a-hacker/" title="How to become a hacker (October 1, 2008)">How to become a hacker</a> (0)</li><li><a
href="http://fak3r.com/2007/09/24/software-support-must-evolve-with-open-source/" title="Software support must evolve with Open Source (September 24, 2007)">Software support must evolve with Open Source</a> (1)</li><li><a
href="http://fak3r.com/2009/11/18/ruby-on-rails-gem-install-versus-apt-get/" title="Ruby on Rails: gem install versus apt-get (November 18, 2009)">Ruby on Rails: gem install versus apt-get</a> (10)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/05/26/file-system-full-but-why/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Four free Linux eBooks</title><link>http://fak3r.com/2009/04/29/four-free-linux-ebooks/</link> <comments>http://fak3r.com/2009/04/29/four-free-linux-ebooks/#comments</comments> <pubDate>Wed, 29 Apr 2009 23:47:13 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[geek]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[Apache web server]]></category> <category><![CDATA[ebooks]]></category> <category><![CDATA[file systems]]></category> <category><![CDATA[free ebooks]]></category> <category><![CDATA[how to linux]]></category> <category><![CDATA[Linux system]]></category> <category><![CDATA[operating system]]></category> <category><![CDATA[SUSE LINUX Administration Guide]]></category> <category><![CDATA[tux]]></category> <category><![CDATA[ubuntu]]></category> <category><![CDATA[web server]]></category><guid
isPermaLink="false">http://www.fak3r.com/?p=1639</guid> <description><![CDATA[
While looking for something else, (which is mainly when I find *other* interesting things) I found an article which included links for four free Linux eBooks.  This is a great resource for anyone with some Linux experience, back to others who may be looking to get started with tux, and I would have loved [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://www.fak3r.com/?p=1639"></abbr><p><img
class="alignright size-full wp-image-233" title="tux.jpg" src="http://fak3r.com/wp-content/uploads/2006/10/tux.jpg" alt="tux.jpg" width="118" height="140" />While looking for something else, (which is mainly when I find *other* interesting things) I found an article which included links for four free <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> eBooks.  This is a great resource for anyone with some <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> experience, back to others who may be looking to get started with tux, and I would have loved to have this when I started, but that was before the Internet was available to most people.  So, if you&#8217;re new to <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a>, or want to get started (I used <a
href="http://www.amazon.com/Red-Linux-Unleashed-Kamran-Husain/dp/0672309629">Red Hat Unleashed</a> in 1996, here it is <a
href="http://wireless.ictp.it/school_2003/docs/linux/linux_guides/RH_Linux_Unleashed/">online</a>!), here&#8217;s some great downloads to learn from:<span
id="more-1639"></span></p><h3><a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> Starter Pack</h3><p><em>By <a
href="http://tuxradar.com">TuxRadar</a></em></p><p>Here’s your complete guide to using <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a>, taking you from beginner level to an intermediate user with ease. This ebook will show you how to install <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a>,  navigate around the desktop, use common software, add more programs and fix any problems you may encounter. It’s based around a slightly older version of <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a> <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> so there may be some minor differences with newer releases, but you can always download the latest version from www.<a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">ubuntu</a>.com or get a CD sent by post at shipit.<a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">ubuntu</a>.com.</p><blockquote><p><a
href="http://dl.getdropbox.com/u/649440/linux_starter_pack.zip">The Linux Starter Pack</a> (PDF) 11.5MB</p></blockquote><h3>The Easiest <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> Guide You’ll Ever Read</h3><p><em>by Scott Morris</em><br
/> After several months of writing and revising, Scott has made available the “Easiest <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> Guide You’ll Ever Read”. It is a 160-page book geared towards people who are competent with using Windows, who have never attempted to use <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> but are interested in giving it a try. This ebook seems to be around for quite some time, so I wouldn’t be surprised if a lot of you have already went through this copy. For a more thorough review of this ebook, click here, or click on the link below to grab it.</p><blockquote><p><a
href="http://www.letslearnlinux.com/suseblog/easiest_linux_guide_ever.pdf">The Easiest Linux Guide You’ll Ever Read</a> (PDF) 5.66MB</p></blockquote><h3>SUSE <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> Administration Guide</h3><p><em>Too many authors to be listed here</em><br
/> The SUSE <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">LINUX</a> Administration Guide provides background information about the way your SUSE <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">LINUX</a> operates. This book introduces <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> system administration basics such as file systems, kernels, boot processes, an Apache web server, and secure authentication.</p><blockquote><p><a
href="http://www.novell.com/documentation/suse91/suselinux-adminguide/html">SUSE Linux Administration Guide</a> (HTML)</p></blockquote><h3><a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a>: Pocket Guide and Reference</h3><p><strong>A concise companion for day-to-day <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a> use</strong><br
/> <em>by Keir Thomas</em><br
/> A comprehensive, 170 page ebook which will get you started with <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a>. I believe a lot of computer users have intentions of getting a <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a> system up just to test and experience the power behind this free <a
href="http://fak3r.com/tag/operating-system/" class="st_tag internal_tag" rel="tag" title="Posts tagged with operating system">operating system</a>. There are various types of <a
href="http://fak3r.com/tag/linux/" class="st_tag internal_tag" rel="tag" title="Posts tagged with linux">Linux</a>, but so far, and at least for me, <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a> seems the most popular so far. I’m no means an experienced user of <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a>, so I can’t really speak on why it’s popular, but I think the simplicity, compatibility and user friendliness should do the trick. Some of the chapters in this ebook include:-</p><ul><li>Introduction</li><li>Chapter One: Installing <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a></li><li>Chapter Two: Configuring <a
href="http://fak3r.com/tag/ubuntu/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ubuntu">Ubuntu</a></li><li>Chapter Three: Getting to grips with the desktop</li><li>Chapter Four: Users and the filesystem</li><li>Chapter Five: Hands-on at the command-line</li><li>Chapter Six: Software management</li><li>Chapter Seven: Securing the system</li></ul><blockquote><p><a
href="http://www.ubuntupocketguide.com/download.html">Ubuntu: Pocket Guide and Reference</a> (PDF) 2MB</p></blockquote><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2008/10/29/howto-install-ruby-on-rails-on-debian-or-ubuntu-linux-easily/" title="HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily (October 29, 2008)">HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily</a> (4)</li><li><a
href="http://fak3r.com/2008/05/27/howto-automatically-reconfigure-xorg-in-debian/" title="HOWTO: automatically reconfigure Xorg in Debian (May 27, 2008)">HOWTO: automatically reconfigure Xorg in Debian</a> (4)</li><li><a
href="http://fak3r.com/2007/09/24/software-support-must-evolve-with-open-source/" title="Software support must evolve with Open Source (September 24, 2007)">Software support must evolve with Open Source</a> (1)</li><li><a
href="http://fak3r.com/2009/11/18/ruby-on-rails-gem-install-versus-apt-get/" title="Ruby on Rails: gem install versus apt-get (November 18, 2009)">Ruby on Rails: gem install versus apt-get</a> (10)</li><li><a
href="http://fak3r.com/2008/03/31/open-source-is-good-for-you/" title="Open Source is good for you (March 31, 2008)">Open Source is good for you</a> (1)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/04/29/four-free-linux-ebooks/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Resolving LSIDs with URL resolvers and CouchDB</title><link>http://fak3r.com/2009/04/29/resolving-lsids-wit-url-resolvers-and-couchdb/</link> <comments>http://fak3r.com/2009/04/29/resolving-lsids-wit-url-resolvers-and-couchdb/#comments</comments> <pubDate>Wed, 29 Apr 2009 14:29:04 +0000</pubDate> <dc:creator>fak3r</dc:creator> <category><![CDATA[commentary]]></category> <category><![CDATA[featured]]></category> <category><![CDATA[geek]]></category> <category><![CDATA[headline]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[CouchDB]]></category> <category><![CDATA[database replication]]></category> <category><![CDATA[link resolver]]></category> <category><![CDATA[LSID protocol]]></category> <category><![CDATA[network time protocol]]></category> <category><![CDATA[ntp]]></category> <category><![CDATA[Open Calais]]></category> <category><![CDATA[P2P]]></category> <category><![CDATA[php]]></category> <category><![CDATA[RDFa]]></category> <category><![CDATA[unix]]></category> <category><![CDATA[url resolver]]></category> <category><![CDATA[XML]]></category><guid
isPermaLink="false">http://www.fak3r.com/?p=1616</guid> <description><![CDATA[
Recently I&#8217;ve been looking at ways to solve some of biodiversities&#8217; long standing issues with LSIDs, which are, &#8220;Life Science Identifiers are a way to name and locate pieces of information on the web. Essentially, an LSID is a unique identifier for some data, and the LSID protocol specifies a standard way to locate the [...]]]></description> <content:encoded><![CDATA[<abbr
class="unapi-id" title="http://www.fak3r.com/?p=1616"></abbr><p><img
class="alignright size-full wp-image-1637" title="346483297_c4cb93ab4e_m" src="http://www.fak3r.com/wp-content/uploads/2009/04/346483297_c4cb93ab4e_m.jpg" alt="346483297_c4cb93ab4e_m" width="168" height="240" />Recently I&#8217;ve been looking at ways to solve some of biodiversities&#8217; long standing issues with <a
href="http://en.wikipedia.org/wiki/LSID">LSIDs</a>, which are, &#8220;<em>Life Science Identifiers are a way to name and locate pieces of information on the web. Essentially, an LSID is a unique identifier for some data, and the LSID protocol specifies a standard way to locate the data (as well as a standard way of describing that data). They are a little like DOIs used by many publishers.</em>&#8220;  I posted my thoughts to the <a
href="http://tdwg.org">TDWG</a> discussion mailing list on the topic, and am reprinting it here to allow for further community commentary; <a
href="http://code4lib.org">Code4lib</a>, I&#8217;m looking at you.  While much of it is theoretical, it is doable, and if it covers all that needs to be addressed, would be a cool, sustainable way forward for link resolvers for all kinds of usage.</p><blockquote><p>I&#8217;m with Tim on this one, and taking one of Rod&#8217;s other posts (&#8220;<a
href="http://iphylo.blogspot.com/2009/04/lsids-disaster-or-opportunity.html">LSIDs, disaster or opportunity</a>&#8220;) a bit further, I think coming up with a simple, extend-able URL resolver would give us many benefits and allow LSIDs with extra, added information around them for all to use.  Looking at his example, a URL would get permanent tracking that would also post referrers, location and traffic.  A summary of the link could even be a page in itself, a cached version, a screenshot, or just a scrape of the code &#8211; pulling out the HTML tags, for future reference in case the real link goes down.  We could use the ability to create a customizable prefix (ie- http://someresolvr.com/bhl/SDFoijF), to somewhat follow DOI conventions, but could even save old DOIs or handles for historical purposes in a field attached to the new URL, or for reuse, making the new URL resolve to a current DOI with a simple post at the end of the new URL (ie- http://someresolvr.com/bhl/SDFoijF/DOI).  In the same way we could use user input, data pulled about the URL semantically to generate RDFa  (by using <a
href="http://www.w3.org/2007/08/pyRdfa/">pyRdfa</a>), then exposing that for all newly created URLS, and coming up with a standard to make it predictable (ie- http://someresolvr.com/bhl/SDFoijF/RDF).  The example at bit.ly shows the use of <a
href="http://opencalais.com/">Open Calais</a> to get more background information on the original link to provide more information, but it could also be pointed to other services we provide/use in biodiversity to provide a snapshot across the board of more context/content.  Users of the service could login to examine/add/edit the data by hand if desired, so they would still retain ultimate control over how their record is presented.  Thus, from a simple URL, we could build a complete summary that would build on what we&#8217;re given while sharing it all back out.</p><p>Then the architecture (aka, the fun part) would be simple and distributed.  A webserver able to process <a
href="http://fak3r.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with php">PHP</a>, running the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> <a
href="http://couchdb.apache.org/">CouchDB</a> would be all that is needed to run the resolver.  CouchDB is schema-less, so the way it handles replication is very simple, and is built to be distributed, only handing out the bits that have changed during replication, as well as scale in this manner.  Having a batch of main servers behind a URL in a pooled setup (think of a simplified/smaller version of the Pool of <a
href="http://fak3r.com/tag/unix/" class="st_tag internal_tag" rel="tag" title="Posts tagged with unix">Unix</a> <a
href="http://www.pool.ntp.org/">networked time servers</a>) would allow a round-robin DNS, or a <a
href="http://www.ucarp.org/project/ucarp">ucarp</a> setup (&#8220;<em>urcarp allows a couple of hosts to share common virtual <a
href="http://fak3r.com/tag/ip/" class="st_tag internal_tag" rel="tag" title="Posts tagged with IP">IP</a> addresses in order to provide automatic failover</em>&#8220;), so if one main server went down, another would automatically take over, without the user needing to change the URL.  Plus, if we wanted to, to battle heavy usage of the main servers we could use the idea of Primary and Secondary servers as outlined in the pool.ntp.org model, so an institution with heavy usage could become a Secondary host and run their own resolver simply, with almost no maintenance.  They would just need the <a
href="http://fak3r.com/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with php">PHP</a> files, which would be a versioned project, and then have a cron task to replicate the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> from a pool of the main servers.  The institution&#8217;s resolver could be customized to appear as their own, (ie- http://someresolvr.bhl.org/bhl/SDFoijF) and for simplicity could be read-only.  This way a link like http://someresolvr.com/bhl/SDFoijF could be resolvable against any institution&#8217;s server, like http://someresolvr.bhl.org/bhl/SDFoijF or http://someresolvr.ebio.org/bhl/SDFoijF &#8211; as all of the databases would be the same, although maybe a day behind, depending on the replication schedule.  New entries would only be entered on a main server, or in &#8216;the pool&#8217; (ie- http://pool.someresolvr.com/), then those changes would be in the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> to be handed out to all on the next replication (I won&#8217;t add my P2P ideas in this email &#8211; it may not be needed for the deltas that would need to be transfered daily or weekly).   Add to all of this that CouchDB is designed as &#8220;<em>&#8230;a distributed, fault-tolerant and schema-free document-oriented <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a></em>&#8221; which would fit into what we want to do; build a store of documents (data) about a URL that we can serve, while being a permanent, sustainable resolver to the original document.  If the service ever died, it could be resurrected from anyone&#8217;s copy of the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> (think <a
href="http://www.lockss.org/lockss/Home">LOCKSS</a> (Lots of Copies Keep Stuff Safe)), so that no data (original or accumulated) would be lost.  The data could be exported from the <a
href="http://fak3r.com/tag/database/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Database">database</a> in XML, and then migrated from that to a desired platform.</p><p>I have not been dealing with LSIDs as long as most on this list so I expect I&#8217;m glossing over (or missing) some of the concepts, so please let me know what I am lacking.  This is a needed service, and is a project I&#8217;d like to be involved in building.</p></blockquote><br
/><h3><b>Related posts</b></h3><ul
class="st-related-posts"><li><a
href="http://fak3r.com/2008/10/29/howto-install-ruby-on-rails-on-debian-or-ubuntu-linux-easily/" title="HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily (October 29, 2008)">HOWTO: install Ruby on Rails on Debian or Ubuntu Linux easily</a> (4)</li><li><a
href="http://fak3r.com/2008/05/05/howto-configure-nginx-for-debian-ubuntu/" title="HOWTO: Configure nginx for Debian / Ubuntu (May 5, 2008)">HOWTO: Configure nginx for Debian / Ubuntu</a> (6)</li><li><a
href="http://fak3r.com/2008/10/01/how-to-become-a-hacker/" title="How to become a hacker (October 1, 2008)">How to become a hacker</a> (0)</li><li><a
href="http://fak3r.com/2009/05/26/file-system-full-but-why/" title="File system full, but why? (May 26, 2009)">File system full, but why?</a> (3)</li><li><a
href="http://fak3r.com/2008/02/28/howto-determine-optimal-fastcgi-settings-for-lighttpd/" title="HOWTO: determine optimal fastcgi settings for Lighttpd (February 28, 2008)">HOWTO: determine optimal fastcgi settings for Lighttpd</a> (0)</li></ul>]]></content:encoded> <wfw:commentRss>http://fak3r.com/2009/04/29/resolving-lsids-wit-url-resolvers-and-couchdb/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> </channel> </rss>
<!-- This site's performance optimized by W3 Total Cache. Dramatically improve the speed and reliability of your blog!

Learn more about our WordPress Plugins: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using apc (user agent is rejected)
Database Caching 74/137 queries in 0.131 seconds using memcached

Served from: localhost @ 2010-02-08 20:17:52 -->