<?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-2779966409133897249</id><updated>2012-01-04T04:17:32.500-08:00</updated><category term='UBCD4Win'/><category term='OpenSolaris'/><category term='Nexenta'/><category term='Windows'/><category term='U3'/><category term='Win7'/><category term='Tricks'/><category term='Hak5'/><category term='USB'/><category term='Bootable'/><title type='text'>Secret Lair Labs</title><subtitle type='html'>There is a third way...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.sllabs.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-4582719910660942773</id><published>2012-01-04T04:13:00.001-08:00</published><updated>2012-01-04T04:17:32.510-08:00</updated><title type='text'>Really, Brother?</title><content type='html'>This is popping up on my screen every five minutes.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-eQ0RlnHDSSg/TwRCa4mNrsI/AAAAAAAABQw/d2U2yIChaaQ/s1600/printer-ink.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="293" src="http://2.bp.blogspot.com/-eQ0RlnHDSSg/TwRCa4mNrsI/AAAAAAAABQw/d2U2yIChaaQ/s320/printer-ink.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Really? Ink Low?&lt;br /&gt;Doesn't look low to me, and certainly not low enough to be BUGGING ME EVERY FIVE MINUTES.&lt;br /&gt;&lt;br /&gt;I'd expect it to be complaining at 15%-25%, not "hey, your black dropped below 50%!"&lt;br /&gt;&lt;br /&gt;I think I'm going to change the printer's assigned hostname from the router to 'navi'.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;&lt;i&gt;"HEY, LISTEN! HEY, LISTEN! HEY, LISTEN!"&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;span id="goog_1955030848"&gt;&lt;/span&gt;&lt;span id="goog_1955030849"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-4582719910660942773?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/4582719910660942773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=4582719910660942773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4582719910660942773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4582719910660942773'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2012/01/really-brother.html' title='Really, Brother?'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-eQ0RlnHDSSg/TwRCa4mNrsI/AAAAAAAABQw/d2U2yIChaaQ/s72-c/printer-ink.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-3160412641066709264</id><published>2011-12-09T06:01:00.001-08:00</published><updated>2011-12-09T07:25:40.491-08:00</updated><title type='text'>1976 Jaguar XJ-12 with Chevy 350 For Sale!</title><content type='html'>Hello, all my friends on the internet reading this.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/user/N8north"&gt;My&lt;/a&gt; &lt;a href="http://twitter.com/#!/streamingindie"&gt;friends&lt;/a&gt; and &lt;a href="http://www.sllabs.com/"&gt;I&lt;/a&gt; are in a bit of a rough spot. We're sort of short on the rent, this month. Y'see, we're about 45 days into bootstrapping a little film business here in california, trying to run things in a 'stack-all-the-added-value' sort of way. We've got some fancy camera gear (Epic X &amp;amp; 5D Mk2, KesslerCrane 12' Jib, Zoom H4N &amp;amp; Mics), but it ain't all ours yet. We rented a fancy location to shoot and live in, but it ain't all ours yet. We're still linking up with people and pitching for jobs.&lt;br /&gt;&lt;br /&gt;Here's some of the awesomeness we've thrown together in the last few weeks:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/PXEf5JfDth0/0.jpg" height="426" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PXEf5JfDth0&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="640" height="426"  src="http://www.youtube.com/v/PXEf5JfDth0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/FSZsSXSU4JY/0.jpg" height="426" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FSZsSXSU4JY&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="640" height="426"  src="http://www.youtube.com/v/FSZsSXSU4JY&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;As part of our awesome film gear, we had to have an awesome car to film. She shows up in the first clip.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ayJee04t7fs/TuIZjvZ-NcI/AAAAAAAABNs/D0MNHx8bF80/s1600/IMG_0338+cropped.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="425" src="http://4.bp.blogspot.com/-ayJee04t7fs/TuIZjvZ-NcI/AAAAAAAABNs/D0MNHx8bF80/s640/IMG_0338+cropped.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It's Nate North's Silver Jaguar XJ-12.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wGijF-BgP_s/TuIZrxonQaI/AAAAAAAABN0/-4_WXkp7TOs/s1600/IMG_0414+cropped.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://4.bp.blogspot.com/-wGijF-BgP_s/TuIZrxonQaI/AAAAAAAABN0/-4_WXkp7TOs/s640/IMG_0414+cropped.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.brokenkitty.com/xj/xjv8.htm"&gt;She's had her Jaguar V-12 engine replaced about 10000 miles ago with a reliable Chevy V-8 350, since the Jaguar has a relatively standard GM-compatible&amp;nbsp;&lt;span style="background-color: transparent;"&gt;driveline.&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;span style="background-color: transparent;"&gt;There are two gas tanks with a dashboard console button to switch between them.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pLkhl1lRoIY/TuIZ5jjJQoI/AAAAAAAABN8/f111MEOXh9o/s1600/IMAG0068.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://1.bp.blogspot.com/-pLkhl1lRoIY/TuIZ5jjJQoI/AAAAAAAABN8/f111MEOXh9o/s640/IMAG0068.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I&amp;nbsp;believe&amp;nbsp;it also has a T700-R4 transmission with a 30% overdrive, so for a V8, it does pretty well on the road.&lt;br /&gt;She's all mechanical, so if you're looking to increase milage, &lt;a href="http://www.hhokitsdirect.com/big_hydrogen_generator.php"&gt;HHO Kits Direct has some pretty awesome holiday deals right now&lt;/a&gt;.&lt;br /&gt;Plenty of room under her hood, Power windows, Heater, Working AC, Viper car alarm controlling power locks, spiffy clean red interior.&lt;br /&gt;&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: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7hjIgWh_2Jg/TuIaOmRbf5I/AAAAAAAABOU/PB_4UHJk1Ko/s1600/IMG_0420+-+Copy.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://1.bp.blogspot.com/-7hjIgWh_2Jg/TuIaOmRbf5I/AAAAAAAABOU/PB_4UHJk1Ko/s640/IMG_0420+-+Copy.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Anyway, I'll get to the point.&amp;nbsp;&amp;nbsp;Sadly, we're going to have to let her go. But I'd like her to find a good home.&lt;br /&gt;She'd make a wonderful holiday gift for a car tinkerer. That's where you come in, internet.&lt;br /&gt;&lt;span style="background-color: transparent;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vQRgqJ1MSJ4/TuIaQnIM6XI/AAAAAAAABOc/uA2mlTc5AGg/s1600/IMG_0425+cropped+-+Copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://1.bp.blogspot.com/-vQRgqJ1MSJ4/TuIaQnIM6XI/AAAAAAAABOc/uA2mlTc5AGg/s640/IMG_0425+cropped+-+Copy.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="background-color: transparent;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent;"&gt;To make sure my friends have a cheerful holiday, I'm willing to pack her on a U-Haul car-hauler off the back of a 10' U-Haul truck,&lt;/span&gt;&lt;br /&gt;and drive her to any destination out to as far as, maybe Texas, maybe further.&lt;br /&gt;I'm willing to show up at your place, christmas evening or morning to unload her, then take a Greyhound back home to Los Banos.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WJbEIw8wiVc/TuIaAWUKiqI/AAAAAAAABOM/iV6DcZrU3E8/s1600/IMG_0340+cropped.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://1.bp.blogspot.com/-WJbEIw8wiVc/TuIaAWUKiqI/AAAAAAAABOM/iV6DcZrU3E8/s640/IMG_0340+cropped.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Right now, we're asking $7000, or taking the best offer we get.&lt;br /&gt;&lt;br /&gt;I'm sorta hoping there's someone out there with some holiday&amp;nbsp;spirit willing to keep us burning into&amp;nbsp;January&amp;nbsp;with a little more to eat with; but we are humble folk, and will continue on our diet of homemade bisquick pan-pizzas and spaghetti with various sauces. Inexpensive, yet delicious!&lt;br /&gt;&lt;br /&gt;Alternatively... If you don't want the car, We're for hire doing all sorts of things... :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/bBJVmGS_gmw/0.jpg" height="426" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bBJVmGS_gmw&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="640" height="426"  src="http://www.youtube.com/v/bBJVmGS_gmw&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Pass this around your G+ Circles, give us a holler here in the comments, send me an email at Kamilion@gmail.com, a voicemail* at (408) 890-7463, or track down one of my housemates on the internet, we'd love to hear from you!&lt;br /&gt;&lt;br /&gt;*&lt;span style="font-size: xx-small;"&gt; My apologies, I have run out of money to pay T-Mobile this month, but Google Voice will still be happy to transcribe your message and email it to me!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-3160412641066709264?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/3160412641066709264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=3160412641066709264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/3160412641066709264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/3160412641066709264'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2011/12/1976-jaguar-xj-12-with-chevy-350-for.html' title='1976 Jaguar XJ-12 with Chevy 350 For Sale!'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ayJee04t7fs/TuIZjvZ-NcI/AAAAAAAABNs/D0MNHx8bF80/s72-c/IMG_0338+cropped.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-4696429264089529497</id><published>2011-12-08T16:01:00.001-08:00</published><updated>2011-12-08T17:17:32.326-08:00</updated><title type='text'>"Asking questions is important, because that's when intuition gets converted into inspiration."</title><content type='html'>&lt;br /&gt;So I changed my email signature recently and trimmed out some of the quotes in it.&lt;br /&gt;I got an email from a friend of mine who noticed, and happened to ask about who the author of the quotes were.&lt;br /&gt;&lt;br /&gt;The answer is: Me!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-size: x-small;"&gt;"Asking questions is important,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: arial; font-size: x-small;"&gt;because that's when intuition gets converted into inspiration."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let me give you an example, I call it:&lt;br /&gt;&lt;span style="background-color: transparent;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;"How to learn CSS in 40 minutes."&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many thanks to &lt;a href="http://lytedev.com/"&gt;wraith of Lytedev.com&lt;/a&gt; for his assistance!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: white; border-bottom-color: maroon; border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: maroon; border-left-style: solid; border-left-width: 1px; border-right-color: maroon; border-right-style: solid; border-right-width: 1px; border-top-color: maroon; border-top-style: solid; border-top-width: 1px; display: block; margin-bottom: 0.5em; margin-left: 2em; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: auto; padding-bottom: 0.75em; padding-left: 0.75em; padding-right: 0.75em; padding-top: 0.75em;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[15:20:46] [Kamilion] cause you scrolled my CSS question off the screen when wraith came back&lt;br /&gt;[15:20:56] [wraith] sorry&lt;br /&gt;[15:21:02] [wraith] little brother has a play - about to leave&lt;br /&gt;[15:21:09] [Kamilion] wraith: ah, no worries then&lt;br /&gt;[15:21:09] [wraith] what's the Q, Kami?&lt;br /&gt;[15:21:16] [wraith] I got ~20 mins&lt;br /&gt;[15:21:16] [Kamilion] oh okay&lt;br /&gt;[15:21:32] [Kamilion] I have a "CSS" field here in drupal&lt;br /&gt;[15:21:43] [Kamilion] and I'm trying to figure out what to stuff in it&lt;br /&gt;[15:22:11] [wraith] pic/&lt;br /&gt;[15:22:13] [wraith] ?&lt;br /&gt;[15:22:20] [wraith] I need a context...&lt;br /&gt;[15:22:38] [wraith] it's probably the class that it's identified as by the CSS&lt;br /&gt;[15:22:45] [wraith] but I dunno&lt;br /&gt;[15:23:29] [Kamilion] Styles for regions&lt;br /&gt;[15:23:29] [Kamilion]  &lt;br /&gt;[15:23:29] [Kamilion] Configure styles which you can add to regions on the "manage display" screens. Add multiple styles line per line.&lt;br /&gt;[15:23:29] [Kamilion] If you want to have a friendly name, separate class and friendly name by |, but this is not required. eg:&lt;br /&gt;[15:23:29] [Kamilion] class_name_1&lt;br /&gt;[15:23:29] [Kamilion] class_name_2|Friendly name&lt;br /&gt;[15:23:29] [Kamilion] class_name_3&lt;br /&gt;[15:23:54] [Kamilion] so it's asking for a CSS class&lt;br /&gt;[15:24:10] [wraith] yeah - classes basically say how an element can be referenced or get'd&lt;br /&gt;[15:24:14] [Kamilion] http://files.sllabs.com/files/theme/style.css&lt;br /&gt;[15:24:19] [Kamilion] there's the existing classes&lt;br /&gt;[15:24:31] [Kamilion] and I'm trying to figure out how to call one, ANY of them&lt;br /&gt;[15:24:32] [wraith] well you give it classes based on what styles you want it to inherit&lt;br /&gt;[15:25:08] [Kamilion] I got that part&lt;br /&gt;[15:25:12] [Kamilion] but like&lt;br /&gt;[15:25:16] [wraith] so if there are styles for the ".green-button" class that you want your element to inherit, you would give it the "green-button" class&lt;br /&gt;[15:25:36] [Kamilion] ah after the dot is the class?&lt;br /&gt;[15:25:41] [wraith] yep&lt;br /&gt;[15:25:43] [Kamilion] what's the #thisthingcalled&lt;br /&gt;[15:25:46] [wraith] . identifies classes&lt;br /&gt;[15:25:49] [wraith] # identifies ids&lt;br /&gt;[15:25:53] [Kamilion] ids&lt;br /&gt;[15:25:55] [Kamilion] okay&lt;br /&gt;[15:26:00] [Kamilion] so that's a CSS ID&lt;br /&gt;[15:26:03] [wraith] and no symbol prefix means an html element&lt;br /&gt;[15:26:06] [Kamilion] and the . below is the classes&lt;br /&gt;[15:26:10] [Kamilion] yeah&lt;br /&gt;[15:26:13] [Kamilion] I saw those at the top&lt;br /&gt;[15:26:21] [wraith] yep - they're generally declared first&lt;br /&gt;[15:26:26] [Kamilion] figured that was 'do this for any html element you see by default'&lt;br /&gt;[15:26:32] [wraith] yup&lt;br /&gt;[15:26:37] [Kamilion] then clearfix&lt;br /&gt;[15:26:40] [Kamilion] which i read up on&lt;br /&gt;[15:26:51] [Kamilion] fixes z order for things like colorboxes&lt;br /&gt;[15:27:12] [wraith] and helps re-heighten blocks which contain floated elements&lt;br /&gt;[15:27:13] [wraith] yep&lt;br /&gt;[15:27:14] [Kamilion] cause it's definied at the top after the html elements&lt;br /&gt;[15:27:25] [wraith] yeah - it's an important helper class to have &lt;br /&gt;[15:27:36] [Kamilion] but then I'm kinda lost&lt;br /&gt;[15:27:42] [Kamilion] it starts defining IDs&lt;br /&gt;[15:27:50] [wraith] yeah - stylesheets get pretty big pretty fast&lt;br /&gt;[15:27:57] [wraith] so what you wanna do is this:&lt;br /&gt;[15:28:02] [wraith] find other elements on the page&lt;br /&gt;[15:28:12] [wraith] that have the style you want for your new element&lt;br /&gt;[15:28:15] [wraith] see which classes it's got&lt;br /&gt;[15:28:21] [wraith] and give your element the same classes&lt;br /&gt;[15:28:28] [wraith] it will therefore inherit the same styles&lt;br /&gt;[15:28:39] [wraith] and if everything is done right, you will have successfully imitated the element&lt;br /&gt;[15:28:45] [wraith] if you're wanting to make something new&lt;br /&gt;[15:29:02] [wraith] you'll have to find different elements that seem to have bits and pieces of the styles you want to inherit&lt;br /&gt;[15:29:03] [Kamilion] .footer-gallery-block { width: 260px; } &lt;br /&gt;[15:29:03] [Kamilion] .footer-gallery-block img { background-color: #191F2F; border: 1px solid #252C3E; float: left; margin-bottom: 10px; margin-right: 9px; padding: 5px; }&lt;br /&gt;[15:29:03] [Kamilion] #footer ul.twitter { -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; background: url("images/tweetbg.png") repeat scroll 0 0 transparent;&lt;br /&gt;[15:29:03] [Kamilion] list-style-type: none; padding: 10px; width: 280px; margin-left:0; }&lt;br /&gt;[15:29:24] [Kamilion] that appears in the middle of a bunch of #footer stuff above it&lt;br /&gt;[15:29:32] [Kamilion] but the gallery block doesn't have the ID defined&lt;br /&gt;[15:29:42] [wraith] Kamilion: is this still lensipedia?&lt;br /&gt;[15:29:43] [Kamilion] and then they pick up with the same ID after the gallery block&lt;br /&gt;[15:29:44] [Kamilion] yeah&lt;br /&gt;[15:29:54] [Kamilion] bout halfway down that style.css&lt;br /&gt;[15:30:02] [Kamilion] http://files.sllabs.com/files/theme/style.css&lt;br /&gt;[15:30:26] [wraith] got it&lt;br /&gt;[15:30:35] [Kamilion] I think I want to be dealing in the node area, which is just below that&lt;br /&gt;[15:30:46] [Kamilion] since that's where most of my 'content' is displayed&lt;br /&gt;[15:30:52] [Kamilion] but there's no id there&lt;br /&gt;[15:30:57] [wraith] so what kind of elements are you trying to create here?&lt;br /&gt;[15:31:04] [wraith] what's it supposed to do and be?&lt;br /&gt;[15:31:19] [Kamilion] Well, I've got a couple things I want to do&lt;br /&gt;[15:31:34] [Kamilion] first, I want to define a non-repeating background image for some of these articles&lt;br /&gt;[15:31:43] [Kamilion] but only on some *types* of articles&lt;br /&gt;[15:31:52] [wraith] gotcha&lt;br /&gt;[15:31:52] [Kamilion] eg, canon_lenses but not nikon_lenses, for now&lt;br /&gt;[15:32:03] [wraith] so then you want to make a class&lt;br /&gt;[15:32:10] [Kamilion] so I need to figure out what both of those have in common&lt;br /&gt;[15:32:37] [wraith] yep&lt;br /&gt;[15:32:39] [Kamilion] and then choose a specific image based on, eg, the article's content type&lt;br /&gt;[15:32:40] [wraith] node-canon-lens&lt;br /&gt;[15:32:43] [wraith] that's the class&lt;br /&gt;[15:32:54] [Kamilion] it's making some?&lt;br /&gt;[15:32:57] [wraith] yeah&lt;br /&gt;[15:33:05] [Kamilion] and there's just nothing attached to that in the css&lt;br /&gt;[15:33:17] [wraith] so then you need to put in what you want&lt;br /&gt;[15:33:23] [wraith] that is, a non-repeating background-image&lt;br /&gt;[15:33:42] [Kamilion] okay, second task;&lt;br /&gt;[15:34:04] [Kamilion] http://lensapedia.com/tags/canon-lens?page=6&lt;br /&gt;[15:34:06] [Bottien] Title: Canon Lens | lensapedia.com (at lensapedia.com)&lt;br /&gt;[15:34:13] [Kamilion] this is a 3-column layout&lt;br /&gt;[15:34:20] [Kamilion] I can add a css class to each column&lt;br /&gt;[15:34:33] [Kamilion] i want to add this to the 'right' column&lt;br /&gt;[15:34:51] [Kamilion] where the retail price and stuff is&lt;br /&gt;[15:34:56] [Kamilion] then style those elements&lt;br /&gt;[15:35:14] [wraith] that's class "group-right"&lt;br /&gt;[15:35:14] [Kamilion] what is my workflow for finding these elements and styling them?&lt;br /&gt;[15:35:18] [wraith] so in the stylesheet&lt;br /&gt;[15:35:21] [wraith] you'll wanna reference&lt;br /&gt;[15:35:35] [wraith] .ds-3col-stacked .group right { /* CSS */ }&lt;br /&gt;[15:35:48] [wraith] you using chrome?&lt;br /&gt;[15:35:50] [Kamilion] yeah&lt;br /&gt;[15:35:52] [Kamilion] chromium 17&lt;br /&gt;[15:36:04] [wraith] right click the element, inspect element&lt;br /&gt;[15:36:09] [wraith] be sure it's really your element&lt;br /&gt;[15:36:18] [Kamilion] k, I think I see it&lt;br /&gt;[15:36:22] [Kamilion] yeah&lt;br /&gt;[15:36:24] [wraith] if not, hover around until you find the box that encompasses your element&lt;br /&gt;[15:36:24] [Kamilion] class grou-right&lt;br /&gt;[15:36:24] [wraith] then&lt;br /&gt;[15:36:29] [wraith] just look at the classes&lt;br /&gt;[15:36:29] [Kamilion] then a bunch of fields&lt;br /&gt;[15:36:31] [Kamilion] okay&lt;br /&gt;[15:36:32] [wraith] space-separated&lt;br /&gt;[15:36:48] [Kamilion] right, so field effects them all, field-name-field-msrp&lt;br /&gt;[15:36:56] [wraith] right&lt;br /&gt;[15:37:11] [Kamilion] that will tag only that field&lt;br /&gt;[15:37:11] [wraith] elements can have multiple classes&lt;br /&gt;[15:37:13] [wraith] any of which&lt;br /&gt;[15:37:18] [wraith] can select that element&lt;br /&gt;[15:37:20] [wraith] right&lt;br /&gt;[15:37:21] [wraith] you got it&lt;br /&gt;[15:37:44] [Kamilion] so this is #group-right .field-name-field { do-it-here:stuff }&lt;br /&gt;[15:37:44] [wraith] it's kinda like OOP&lt;br /&gt;[15:37:50] [wraith] nope&lt;br /&gt;[15:37:55] [wraith] .group-right&lt;br /&gt;[15:37:58] [wraith] not #group-right&lt;br /&gt;[15:38:03] [wraith] since it's a class&lt;br /&gt;[15:38:05] [wraith] not an id&lt;br /&gt;[15:38:19] [wraith] 'class="group-right"' not 'id="group-right"'&lt;br /&gt;[15:38:27] [Kamilion] okay so if I wanted to dick with field-name-field-msrp&lt;br /&gt;[15:38:37] [Kamilion] which is under group-right&lt;br /&gt;[15:38:39] [Kamilion] in the html&lt;br /&gt;[15:38:50] [wraith] .group-right .field-name-field-msrp { /* CSS */ }&lt;br /&gt;[15:38:56] [Kamilion] AH.&lt;br /&gt;[15:39:00] [wraith] . selects classes, # selects ids&lt;br /&gt;[15:39:06] [wraith] so you'll generally use .&lt;br /&gt;[15:39:15] [Kamilion] Oh I see, so I'm doing the selectors inside the CSS itself&lt;br /&gt;[15:39:20] [wraith] yep&lt;br /&gt;[15:39:29] [Kamilion] see, this is why I needed a people&lt;br /&gt;[15:39:37] [wraith] I understand =D&lt;br /&gt;[15:39:41] [Kamilion] all the books and all the kings blog posts couldn't put humpty dumpty together&lt;br /&gt;[15:39:50] [Kamilion] rightyo&lt;br /&gt;[15:40:04] [Kamilion] so lemme syntax this one&lt;br /&gt;[15:40:40] [Kamilion] .group-right .field-name-field-msrp { background: url("images/tweetbg.png") repeat scroll 0 0 transparent; }&lt;br /&gt;[15:41:03] [Kamilion] that would ONLY affect MSRP if it was in that right handed box&lt;br /&gt;[15:41:04] [wraith] sounds good&lt;br /&gt;[15:41:08] [wraith] yep&lt;br /&gt;[15:41:12] [Kamilion] if I moved the field to the left handed box&lt;br /&gt;[15:41:15] [wraith] or in AN right-handed box&lt;br /&gt;[15:41:18] [wraith] ANY*&lt;br /&gt;[15:41:18] [Kamilion] say inside the actual clicky article&lt;br /&gt;[15:41:27] [Kamilion] then I could style it totally differently&lt;br /&gt;[15:41:29] [wraith] then it won't style it that specific way, right&lt;br /&gt;[15:41:31] [wraith] yep&lt;br /&gt;[15:41:40] [wraith] it has to meet all the selectors in the html and in that order&lt;br /&gt;[15:41:50] [Kamilion] ... All of them?&lt;br /&gt;[15:41:55] [wraith] yep&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="field field-name-field-msrp field-type-number-float field-label-inline clearfix"&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[15:42:55] [Kamilion] so if field-type-number-float is never defined&lt;br /&gt;[15:43:03] [Kamilion] then it's just ignored in the html &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;until I go and define it&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[15:43:18] [wraith] right&lt;br /&gt;[15:43:26] [wraith] because the CSS will never go look for it&lt;br /&gt;[15:43:45] [Kamilion] okay, so where in this style.css would I put that?&lt;br /&gt;[15:43:49] [wraith] anywhere&lt;br /&gt;[15:43:50] [wraith] but, keep it organized, so&lt;br /&gt;[15:44:02] [wraith] preferrably with similar selections&lt;br /&gt;[15:44:08] [Kamilion] .group-right .field-name-field-msrp { background: url("images/tweetbg.png") repeat scroll 0 0 transparent; }&lt;br /&gt;[15:44:16] [Kamilion] should I put that under the node comment?&lt;br /&gt;[15:44:29] [Kamilion] since that's where in my mind, I'm wanting it applied?&lt;br /&gt;[15:44:51] [wraith] yep&lt;br /&gt;[15:44:54] [Kamilion] then go into defining links and search blocks under there&lt;br /&gt;[15:44:54] [wraith] however it works in your mind&lt;br /&gt;[15:45:02] [wraith] my personal way, is to go from top to bottom&lt;br /&gt;[15:45:10] Kamilion nods&lt;br /&gt;[15:45:12] [wraith] so I start with the body, (and any other html elements)&lt;br /&gt;[15:45:14] [wraith] then move down&lt;br /&gt;[15:45:15] [wraith] header,&lt;br /&gt;[15:45:16] [wraith] content&lt;br /&gt;[15:45:18] [wraith] sidebar&lt;br /&gt;[15:45:21] [wraith] footer&lt;br /&gt;[15:45:30] [wraith] and put everything kind of in order that way&lt;br /&gt;[15:45:32] [wraith] however&lt;br /&gt;[15:45:39] [wraith] that's not how most people do it, but do it how you see fit&lt;br /&gt;[15:45:48] [Kamilion] well, under the searchblock they define specific behavior for, the front page image slideshow, and some other minor html 'extras'&lt;br /&gt;[15:45:59] [Kamilion] tr.even and tr.odd&lt;br /&gt;[15:46:06] [wraith] yeah&lt;br /&gt;[15:46:17] [wraith] what you could also do&lt;br /&gt;[15:46:22] [Kamilion] when the credits were referenced, they were also at the bottom of the page&lt;br /&gt;[15:46:25] [wraith] is just keep user-defines stuff at the VERY bottom&lt;br /&gt;[15:46:25] [Kamilion] but&lt;br /&gt;[15:46:29] [Kamilion] Ahh&lt;br /&gt;[15:46:30] [Kamilion] okay&lt;br /&gt;[15:46:36] [Kamilion] there's already a few of those&lt;br /&gt;[15:46:45] [wraith] well there ya go - that'll work just fine too&lt;br /&gt;[15:46:47] [Kamilion] but like&lt;br /&gt;[15:46:56] [Kamilion] just above the credits section is the 'top social network icons'&lt;br /&gt;[15:46:56] [wraith] that way if you every change templates, you know which stuff is yours&lt;br /&gt;[15:47:03] [Kamilion] meaning the social network icons in the top bar of the site&lt;br /&gt;[15:47:06] [Kamilion] above even the header&lt;br /&gt;[15:47:10] [Kamilion] where the search box is&lt;br /&gt;[15:47:16] [wraith] yeah, like I said, most people don't do it the way I do&lt;br /&gt;[15:47:20] Kamilion nods&lt;br /&gt;[15:47:24] [Kamilion] anyway&lt;br /&gt;[15:47:31] [Kamilion] thanks for the help man, go support your little brother&lt;br /&gt;[15:47:37] [wraith] np - cya later =)&lt;br /&gt;[15:47:39] [Kamilion] Much appreciated.&lt;br /&gt;[15:47:43] Kamilion save-logs&lt;br /&gt;[15:47:46] [wraith] absolutely&lt;br /&gt;[15:48:09] Kamilion holds CSS over his head&lt;br /&gt;[15:48:11] [wraith] lol&lt;br /&gt;[15:48:12] [wraith] ok&lt;br /&gt;[15:48:14] [Kamilion] Da na na NAAA&lt;br /&gt;[15:48:15] [wraith] bbl&lt;br /&gt;[15:48:18] Kamilion waves&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-4696429264089529497?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/4696429264089529497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=4696429264089529497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4696429264089529497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4696429264089529497'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2011/12/asking-questions-is-important-because.html' title='&quot;Asking questions is important, because that&apos;s when intuition gets converted into inspiration.&quot;'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-4892400502602122340</id><published>2011-03-24T15:02:00.000-07:00</published><updated>2011-03-24T15:02:17.176-07:00</updated><title type='text'>OOPs, time to catch up to the rest of the internet...</title><content type='html'>"&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana; font-size: 12px; line-height: 16px;"&gt;Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. &amp;nbsp;A proposed new course on object-oriented design methodology will be offered at the sophomore level for those students who wish to study this topic."&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana; font-size: 12px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana; font-size: 12px; line-height: 16px;"&gt;&lt;a href="https://existentialtype.wordpress.com/2011/03/15/teaching-fp-to-freshmen/"&gt;https://existentialtype.wordpress.com/2011/03/15/teaching-fp-to-freshmen/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://lwn.net/Articles/434745/"&gt;http://lwn.net/Articles/434745/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally. Advocating Object-Oriented Programming is like advocating Pants-Oriented Clothing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-4892400502602122340?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/4892400502602122340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=4892400502602122340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4892400502602122340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4892400502602122340'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2011/03/oops-time-to-catch-up-to-rest-of.html' title='OOPs, time to catch up to the rest of the internet...'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-7722214273717890832</id><published>2010-09-14T14:01:00.000-07:00</published><updated>2010-09-14T14:33:36.868-07:00</updated><title type='text'>Parsing HTML with Cthulhu</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px;"&gt;You can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The &amp;lt;center&amp;gt;&amp;nbsp;&lt;/span&gt;cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. HTML-plus-regexp will liquify the n​erves of the sentient whilst you observe, your psyche withering in the onslaught of horror. Rege̿̔̉x-based HTML parsers are the cancer that is killing StackOverflow&amp;nbsp;&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;it is too late it is too late we cannot be saved&lt;/i&gt;&amp;nbsp;the trangession of a chi͡ld ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied)&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;dear lord help us how can anyone survive this scourge&lt;/i&gt;&amp;nbsp;using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes&amp;nbsp;&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;using rege&lt;/i&gt;x as a tool to process HTML establishes a brea&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ch between this world&lt;/i&gt;&amp;nbsp;and the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;more corrupt) a mere glimp&lt;/i&gt;se of the world of reg​&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ex parsers for HTML will ins&lt;/b&gt;​tantly transport a p&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;rogrammer's consciousness i&lt;/i&gt;nto a w&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;orl&lt;/i&gt;d of ceaseless screaming, he comes&lt;strike style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;, the pestilent sl&lt;/strike&gt;ithy regex-infection wil​&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;l devour your HT&lt;/b&gt;​ML parser, application and existence for all time like Visual Basic only worse&amp;nbsp;&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;he comes he com&lt;/i&gt;es&amp;nbsp;&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;do not fi&lt;/i&gt;​ght h&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;e com̡e̶s, ̕h̵i&lt;/b&gt;​s un̨ho͞ly radiańcé de&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;stro҉ying all enli̍̈́̂̈́ghtenment, HTML tags&amp;nbsp;&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;lea͠ki̧n͘g fr̶ǫm ̡yo​͟ur eye͢s̸ ̛l̕ik͏e liq&lt;/b&gt;​uid p&lt;/i&gt;ain, the song of re̸gular exp​re&lt;strike style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ssion parsing&amp;nbsp;&lt;/strike&gt;will exti&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;​nguish the voices of mor​&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;tal man from the sp&lt;/b&gt;​here I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is beautiful t​&lt;/i&gt;he f&lt;code style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 5px; padding-right: 5px; padding-top: 1px; vertical-align: baseline;"&gt;inal snuf&lt;/code&gt;fing o&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;f the lie​&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;s of Man ALL IS LOŚ͖̩͇̗̪̏̈́T A&lt;/b&gt;&lt;/i&gt;&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;LL I​S L&lt;/b&gt;OST th&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;e pon̷y he come&lt;/i&gt;s he c̶̮om&lt;strike style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;es he co&lt;/strike&gt;&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strike style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;me&lt;/strike&gt;s t&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;he&lt;/i&gt;ich​&lt;/b&gt;or permeat&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;es al&lt;/i&gt;l MY FAC&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;E MY FACE ᵒh god n&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;o NO NOO̼&lt;/b&gt;&lt;/i&gt;&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;O​O N&lt;/b&gt;Θ stop t&lt;i style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-style: italic; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;he an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨ&lt;/i&gt;e̠̅s&lt;code style="background-attachment: initial; background-clip: initial; background-color: #eeeeee; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 5px; padding-right: 5px; padding-top: 1px; vertical-align: baseline;"&gt;&amp;nbsp;͎a̧͈͖r̽̾̈́͒͑e&lt;/code&gt;&amp;nbsp;n&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ T&lt;/b&gt;O͇̹̺ͅƝ̴ȳ̳ TH̘&lt;b style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝&lt;/b&gt;S̨̥̫͎̭ͯ̿̔̀ͅ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;see:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;a href="http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html"&gt;http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;and:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;a href="http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags"&gt;http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;and:&amp;nbsp;&lt;/span&gt;&lt;a href="http://esr.ibiblio.org/?p=1411"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://esr.ibiblio.org/?p=1411&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Want your own psychopathic crazy text?&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.textozor.com/"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://www.textozor.com/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;serves all your smudged and blotted needs.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-7722214273717890832?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/7722214273717890832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=7722214273717890832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/7722214273717890832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/7722214273717890832'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/09/parsing-html-with-cthulu.html' title='Parsing HTML with Cthulhu'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-6164973814900460553</id><published>2010-08-26T11:53:00.000-07:00</published><updated>2010-11-29T16:12:41.691-08:00</updated><title type='text'>Malware and Virus Scans</title><content type='html'>So, a lot of my associates are Windows users out of necessity. &lt;br /&gt;&lt;br /&gt;Got an email this morning:&lt;br /&gt;"Our pc's fans started goin off again on full blast. We already did the  virus detection and surprisngly it found viruses and deleted them. But  today it started on full blast again. Any ideas?"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;... Stop letting people use Internet Explorer? ;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There's  some .PDF, Flash, and JAVA vulnerabilities going around now; &lt;i&gt;make sure&lt;/i&gt;  you patch up your &lt;a href="http://get.adobe.com/reader/"&gt;Adobe Reader&lt;/a&gt; and &lt;a href="http://get.adobe.com/flashplayer/"&gt;Flash Player&lt;/a&gt; to current, &lt;a href="http://www.java.com/en/download/manual.jsp" target="_blank"&gt;Update your JAVA to 6u22&lt;/a&gt;&amp;nbsp;or higher, run &lt;a href="http://www.geekstogo.com/forum/files/file/187-tfc-temp-file-cleaner-by-oldtimer/" target="_blank"&gt;TFC.exe&lt;/a&gt; and then run a &lt;a href="http://www.malwarebytes.org/"&gt;malware bytes&lt;/a&gt; scan.&lt;br /&gt;&lt;br /&gt;After &lt;a href="http://www.malwarebytes.org/"&gt;MBAM&lt;/a&gt; finishes cleaning up; go into the Windows Scheduled Tasks  in control panel and remove any suspicious jobs (Lot of the nasty ones  are untitled and look like a GUID like&lt;br /&gt;"{21EC2020-3AEA-1069-A2DD-08002B30309D}")&lt;br /&gt;&lt;br /&gt;Then fire up &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" target="_blank"&gt;process explorer&lt;/a&gt;, Options Menu -&amp;gt; Verify Image Signatures, View -&amp;gt; Select Columns and make sure "Verified Signer" is checkboxed, View -&amp;gt; Show Process Tree, click the - by wininit.exe to hide system services and&amp;nbsp;kill off anything that doesn't have an entry in the Company Name  field. (Kill *Any* Unsigned EXEs, even stuff from Logitech mouse drivers  and Realtek audio controls)&lt;br /&gt;&lt;br /&gt;In fact, you can usually prune every user process off except for the root Explorer.exe process.&lt;br /&gt;If you're careful, you can even kill off most services &lt;u&gt;&lt;i&gt;other than&lt;/i&gt;&lt;/u&gt; svchost.exe and&lt;br /&gt;anything with "(Verified) Microsoft Windows" in the Verified Signer column.&lt;br /&gt;&lt;br /&gt;Then fire up &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb963902.aspx" target="_blank"&gt;autoruns.exe&lt;/a&gt; and remove any suspicious startup entries. Heck, if you can, remove everything but the nvidia/ATI driver autoruns.&lt;br /&gt;&lt;br /&gt;Now run &lt;a href="http://www.geekstogo.com/forum/files/file/187-tfc-temp-file-cleaner-by-oldtimer/" target="_blank"&gt;TFC.exe&lt;/a&gt; once more to make sure all the tempdirs are emptied.&lt;br /&gt;&lt;br /&gt;Alternatively, you can run an offline scan with a bootcd like AVIRA's &lt;a href="http://forum.avira.com/wbb/index.php?page=Thread&amp;amp;threadID=82163" target="_blank"&gt;Rescue CD&lt;/a&gt; -- the ISOs are updated weeklyish.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dlpro.antivir.com/package/rescue_system/common/en/rescue_system-common-en.exe" target="_blank"&gt;http://dlpro.antivir.com/&lt;wbr&gt;&lt;/wbr&gt;package/rescue_system/common/&lt;wbr&gt;&lt;/wbr&gt;en/rescue_system-common-en.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;AVAST's also a good option.&lt;br /&gt;&lt;a href="http://www.avast.com/free-antivirus-download" target="_blank"&gt;http://www.avast.com/free-&lt;wbr&gt;&lt;/wbr&gt;antivirus-download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Your best choice is to get &lt;a href="http://www.google.com/chrome/"&gt;Chrome&lt;/a&gt;,&amp;nbsp;&lt;a href="http://build.chromium.org/f/chromium/snapshots/chromium-rel-xp/"&gt;Chromium&lt;/a&gt;, or &lt;a href="http://getfirefox.com/"&gt;Firefox&lt;/a&gt; and load them with the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1865/"&gt;Adblock&lt;/a&gt; and &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/636/"&gt;PDF Download&lt;/a&gt; extension that prompts you to download PDFs -- just click cancel if the prompt comes up unless you intentionally clicked a PDF link yourself.&lt;br /&gt;&lt;br /&gt;Myself, I use &lt;a href="http://build.chromium.org/f/chromium/snapshots/chromium-rel-xp/"&gt;Chromium&lt;/a&gt;&amp;nbsp;and &lt;a href="http://chromeadblock.com/"&gt;Chrome Adblock&lt;/a&gt;. Chromium has &lt;a href="http://blog.chromium.org/2010/06/bringing-improved-pdf-support-to-google.html"&gt;an internal PDF renderer&lt;/a&gt; that doesn't rely on Adobe, and it's sandboxed by default. You can enable it from&amp;nbsp;&lt;a href="chrome://plugins/"&gt;chrome://plugins/&lt;/a&gt;&amp;nbsp;which also will warn you if other plugins are not up to date.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/TPRBakjLKrI/AAAAAAAAAiA/Ru2I2LdSKL8/s1600/update-required.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/TPRBakjLKrI/AAAAAAAAAiA/Ru2I2LdSKL8/s1600/update-required.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Still, it pays to be careful.&lt;br /&gt;If you'd like to see how sophisticated some of these attacks are, check out this series of articles:&lt;br /&gt;&lt;a href="http://www.h-online.com/security/features/CSI-Internet-HQ-1050609.html"&gt;http://www.h-online.com/security/features/CSI-Internet-HQ-1050609.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-6164973814900460553?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/6164973814900460553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=6164973814900460553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/6164973814900460553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/6164973814900460553'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/08/malware-and-virus-scans.html' title='Malware and Virus Scans'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_d_kmXuVe1cY/TPRBakjLKrI/AAAAAAAAAiA/Ru2I2LdSKL8/s72-c/update-required.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-636868135365239687</id><published>2010-08-26T02:17:00.000-07:00</published><updated>2010-08-26T02:20:05.069-07:00</updated><title type='text'>Drupal on nginx</title><content type='html'>Just got an email from someone asking for my drupal config template, Ask and ye shall receive:&lt;br /&gt;&lt;br /&gt;# Search and replace subdomain.fqdn.com with your domain info.&lt;br /&gt;server {&lt;br /&gt;    listen            80;&lt;br /&gt;    server_name        subdomain.fqdn.com;&lt;br /&gt;    access_log        /var/www/sites/subdomain.fqdn.com/logs/access.log;&lt;br /&gt;    error_log        /var/www/sites/subdomain.fqdn.com/logs/error.log;&lt;br /&gt;&lt;br /&gt;    # EXPERIMENTAL&lt;br /&gt;    #location / {&lt;br /&gt;    #    root /var/www;&lt;br /&gt;    #    index index.php;&lt;br /&gt;    #    error_page 404 = @drupal;&lt;br /&gt;    #}&lt;br /&gt;    #&lt;br /&gt;    #location @drupal {&lt;br /&gt;    #    rewrite ^(.*)$ /index.php?q=$1 last;&lt;br /&gt;    #}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    # Set site_root&lt;br /&gt;    root        /var/www/sites/subdomain.fqdn.com/public/;&lt;br /&gt;    index        index.php index.html;&lt;br /&gt;&lt;br /&gt;    # Set doc_root (Drupal CleanURLs)&lt;br /&gt;    location / {&lt;br /&gt;        if (!-e $request_filename) {&lt;br /&gt;            rewrite ^/(.*)$ /index.php?q=$1 last;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # hide protected files&lt;br /&gt;    location ~* \.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$ {&lt;br /&gt;        deny all;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # serve static files directly&lt;br /&gt;    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico)$ {&lt;br /&gt;        rewrite ^/favicon.ico$ /sites/default/themes/mytheme/favicon.ico break;&lt;br /&gt;        access_log        off;&lt;br /&gt;        expires           30d;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # Install Imagecache module, update the location, enable this directive&lt;br /&gt;    location ^~ /sites/default/files/imagecache/ {&lt;br /&gt;        index  index.php index.html;&lt;br /&gt;        # assume a clean URL is requested, and rewrite to index.php&lt;br /&gt;        if (!-e $request_filename) {&lt;br /&gt;        rewrite  ^/(.*)$  /index.php?q=$1  last;&lt;br /&gt;        break;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    location ^~ /sites/default/files/downloads/ {&lt;br /&gt;        index  index.php index.html;&lt;br /&gt;        autoindex on;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # FastCGI Via Socket&lt;br /&gt;    location ~ \.php$ {&lt;br /&gt;        fastcgi_pass    unix:/tmp/php-fastcgi.socket; #127.0.0.1:9000;&lt;br /&gt;        fastcgi_index   index.php;&lt;br /&gt;        fastcgi_param   SCRIPT_FILENAME /var/www/sites/subdomain.fqdn.com/public$fastcgi_script_name;&lt;br /&gt;        include         fastcgi_params;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    # Proxy Via Socket or TCP&lt;br /&gt;    #location ~ \.php$ {&lt;br /&gt;    #    proxy_pass    unix:/tmp/php-fastcgi.socket; #127.0.0.1:9000;&lt;br /&gt;    #    proxy_connect_timeout   15;&lt;br /&gt;    #    proxy_redirect          default;&lt;br /&gt;    #    proxy_set_header        Host    $host;&lt;br /&gt;    #    proxy_set_header        X-Real-IP       $remote_addr;&lt;br /&gt;    #    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;    #    #proxy_set_header       X-Forwarded-Proto       https;&lt;br /&gt;    #    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;### Redirect www to root domain?&lt;br /&gt;#server {&lt;br /&gt;#    listen           80;&lt;br /&gt;#    server_name          www.subdomain.fqdn.com;&lt;br /&gt;#    rewrite         ^/(.*) http://subdomain.fqdn.com/$1 permanent;&lt;br /&gt;#    }&lt;br /&gt;&lt;br /&gt;### Redirect root domain to www?&lt;br /&gt;#server {&lt;br /&gt;#    listen           80;&lt;br /&gt;#    server_name          subdomain.fqdn.com;&lt;br /&gt;#    rewrite         ^/(.*) http://www.subdomain.fqdn.com/$1 permanent;&lt;br /&gt;#    }&lt;br /&gt;&lt;br /&gt;### HTTPS server&lt;br /&gt;#server {&lt;br /&gt;#    listen            443;&lt;br /&gt;#    server_name        subdomain.fqdn.com;&lt;br /&gt;#    ssl            on;&lt;br /&gt;#    ssl_certificate        /var/www/sites/subdomain.fqdn.com/private/cert.pem;&lt;br /&gt;#    ssl_certificate_key    /var/www/sites/subdomain.fqdn.com/private/cert.key;&lt;br /&gt;#    ssl_session_timeout    5m;&lt;br /&gt;#    ssl_protocols        SSLv2 SSLv3 TLSv1;&lt;br /&gt;#    ssl_ciphers        ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;&lt;br /&gt;#    ssl_prefer_server_ciphers    on;&lt;br /&gt;#    access_log        /var/www/sites/subdomain.fqdn.com/logs/secure.access.log;&lt;br /&gt;#    error_log        /var/www/sites/subdomain.fqdn.com/logs/secure.error.log;&lt;br /&gt;#    location / {&lt;br /&gt;#        root        /var/www/sites/subdomain.fqdn.com/public/;&lt;br /&gt;#        index        index.php index.html;&lt;br /&gt;#        }&lt;br /&gt;#    location ~ \.php$ {&lt;br /&gt;#        fastcgi_pass    unix:/tmp/php-fastcgi.socket; #127.0.0.1:9000;&lt;br /&gt;#        fastcgi_index    index.php;&lt;br /&gt;#        fastcgi_param    SCRIPT_FILENAME /var/www/sites/subdomain.fqdn.com/public$fastcgi_script_name;&lt;br /&gt;#        include        fastcgi_params;&lt;br /&gt;#        }&lt;br /&gt;#    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-636868135365239687?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/636868135365239687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=636868135365239687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/636868135365239687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/636868135365239687'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/08/drupal-on-nginx.html' title='Drupal on nginx'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-4809929392341173213</id><published>2010-08-25T23:19:00.000-07:00</published><updated>2011-12-08T16:24:32.336-08:00</updated><title type='text'>Sometimes you must make the best of what you have available...</title><content type='html'>Super Armatrons rock in so many ways.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYHcFNFRKI/AAAAAAAAARY/iwEMAAUKmag/s1600/SuperArmatron.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYHcFNFRKI/AAAAAAAAARY/iwEMAAUKmag/s400/SuperArmatron.jpg" width="298" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&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: left;"&gt;&lt;br /&gt;&lt;/div&gt;Every robot that you ever heard of normally employs some sort of individual servo mechanism for powering each joint of the robot. Not so with Armatron; There are no electronics inside at all, in fact the toy is entirely powered by a &lt;u&gt;&lt;i&gt;single&lt;/i&gt;&lt;/u&gt;&amp;nbsp;motor. All of the toy's functions are controlled by a complex array of mechanical transmissions and gear trains. It's powered by 2 D batteries, directly connected to a power switch and a dinky brushed DC motor that looks to run around 300 RPM; it's very slow. &lt;a href="http://www.crabfu.com/steamtoys/steam_armatron/"&gt;Some clever folks have replaced the motor with a steam engine.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object height="355" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lDgs5-BQsPA?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lDgs5-BQsPA?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYJUwQKe6I/AAAAAAAAARo/6Mcyt3WQTU8/s1600/boxbig-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYJUwQKe6I/AAAAAAAAARo/6Mcyt3WQTU8/s320/boxbig-01.jpg" /&gt;&lt;/a&gt;&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: left;"&gt;The Box, and the Manual (For posterity)&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: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYJxhuJ4YI/AAAAAAAAARw/vaA-3AJJ3Tc/s1600/armatronmanualbig-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYJxhuJ4YI/AAAAAAAAARw/vaA-3AJJ3Tc/s200/armatronmanualbig-01.jpg" width="148" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYJ3NLvioI/AAAAAAAAAR4/5j4Rhm77jG0/s1600/armatronmanualbig-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYJ3NLvioI/AAAAAAAAAR4/5j4Rhm77jG0/s200/armatronmanualbig-02.jpg" width="145" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYJ62P70TI/AAAAAAAAASA/Z38LnEoWUbE/s1600/armatronmanualbig-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYJ62P70TI/AAAAAAAAASA/Z38LnEoWUbE/s200/armatronmanualbig-03.jpg" width="146" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKBJ58XhI/AAAAAAAAASI/oiV0tJhvzFU/s1600/armatronmanualbig-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKBJ58XhI/AAAAAAAAASI/oiV0tJhvzFU/s200/armatronmanualbig-04.jpg" width="148" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYKFZkdbDI/AAAAAAAAASQ/A0miHdDGXYE/s1600/armatronmanualbig-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYKFZkdbDI/AAAAAAAAASQ/A0miHdDGXYE/s200/armatronmanualbig-05.jpg" width="147" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYKJAyVz9I/AAAAAAAAASY/T7509JmUcnk/s1600/armatronmanualbig-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYKJAyVz9I/AAAAAAAAASY/T7509JmUcnk/s200/armatronmanualbig-06.jpg" width="147" /&gt;&lt;/a&gt;&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: left;"&gt;Yes, you are supposed to keep score yourself. :)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYKP1Moh3I/AAAAAAAAASg/0-Y4zWsg2Go/s1600/innards-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYKP1Moh3I/AAAAAAAAASg/0-Y4zWsg2Go/s320/innards-01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;This toy has so many moving parts it almost defies verbal explanation. Shown above is an overview of the base mechanisms. Each of the two joysticks can be moved up/down, left/right and clockwise/counter-clockwise for a total of six movements of the arm. Each of the six movements is bi-directional. Four of the six movements are bi-directional with two speeds in each direction. The joystick linkages (orange parts) control six transmissions (black and white parts). All the transmissions are powered by a single motor on the right. The gearing above the motor is for a timing mechanism described below. The gearing and shafting behind the transmissions connect the transmissions to a series of ring gears described below.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKTxw5oOI/AAAAAAAAASo/81tFIfkVSQ0/s1600/innards-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKTxw5oOI/AAAAAAAAASo/81tFIfkVSQ0/s320/innards-06.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;There are three sections to the transmission system: (1) a row of six black forward gears, (2) a row of six black reverse gears and (3) a row of six white indexing drums. The picture above shows the lower row of forward gears without the other two sections of the transmission. The picture also shows how the forward gears drive the output shafting.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #70db93; font-family: 'trebuchet ms'; font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYKkRbkDXI/AAAAAAAAAS4/FwhirLuTN8s/s1600/innards-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYKkRbkDXI/AAAAAAAAAS4/FwhirLuTN8s/s320/innards-07.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;The picture above shows how the upper row of six reverse gears mesh with the lower row of six forward gears.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKoLhwLmI/AAAAAAAAATA/RQvj9x9_t-A/s1600/innards-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKoLhwLmI/AAAAAAAAATA/RQvj9x9_t-A/s320/innards-08.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;The picture above shows three of the six indexing drums. The red arrow indicates an inner gear fixed to the main drive shaft. One of the outer black gears is for high-speed operation. The other outer black gear is for low-speed operation. Friction between the gears causes the entire drum to rotate about the shaft unless the drum's position is held by one of five indexing tabs. Green arrows indicate four of the five tabs distributed around the drum. The tabs determine which of the two gears on the drum engages the forward or reverse gear. The combinations are slow-forward, fast-forward, slow-reverse and fast-reverse. The fifth index is neutral where no gears are engaged. Note how the left drum is thinner and has only one outer gear. This corresponds to the claw movements, which have only one speed in forward and reverse.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKtCNQC5I/AAAAAAAAATI/VF5za6iJcoQ/s1600/armatron-02.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYKtCNQC5I/AAAAAAAAATI/VF5za6iJcoQ/s320/armatron-02.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;The images above show how the up/down movement of the right joystick controls the indexing of the rightmost drum. This corresponds to the up/down motion of Armatron's shoulder joint.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYK8Oeja4I/AAAAAAAAATQ/kzvZi30W-8c/s1600/innards-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYK8Oeja4I/AAAAAAAAATQ/kzvZi30W-8c/s320/innards-03.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;This picture shows the gear covers back in place. The arm assembly fits into the round ring gear socket. Armatron can continuously rotate through a full 360 degrees. This is made possible by the stack of ring gears. Each movement is transmitted from the base to the arm via a ring gear. The orange and back barrel is a timer mechanism that cuts power to the arm after the allotted time has expired.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYK_6-vdhI/AAAAAAAAATY/fO6ZSe8mP5g/s1600/innards-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYK_6-vdhI/AAAAAAAAATY/fO6ZSe8mP5g/s320/innards-04.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;Here are all the ring gears layered back in the socket.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYLDPLKluI/AAAAAAAAATg/87iUjnG-20Y/s1600/innards-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYLDPLKluI/AAAAAAAAATg/87iUjnG-20Y/s320/innards-05.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;This shot shows the underside of the arm assembly that fits into the socket of ring gears.&lt;br /&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: left;"&gt;Here's some drawings of the mechanism ripped from the patents.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYNG4-qZGI/AAAAAAAAATo/oSGlS3JRrGA/s1600/armatrondrawingbig-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="140" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYNG4-qZGI/AAAAAAAAATo/oSGlS3JRrGA/s200/armatrondrawingbig-01.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYNLw06dUI/AAAAAAAAATw/dbj7gl65tmY/s1600/armatrondrawingbig-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/THYNLw06dUI/AAAAAAAAATw/dbj7gl65tmY/s200/armatrondrawingbig-02.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYNQFWXQSI/AAAAAAAAAT4/SMnbexKw7W8/s1600/armatrondrawingbig-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYNQFWXQSI/AAAAAAAAAT4/SMnbexKw7W8/s200/armatrondrawingbig-03.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYNVaPbcNI/AAAAAAAAAUA/O4L8QB_WWnk/s1600/armatrondrawingbig-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYNVaPbcNI/AAAAAAAAAUA/O4L8QB_WWnk/s200/armatrondrawingbig-04.jpg" width="169" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYNY-hFgjI/AAAAAAAAAUI/RqXyKAGIGNk/s1600/armatrondrawingbig-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYNY-hFgjI/AAAAAAAAAUI/RqXyKAGIGNk/s200/armatrondrawingbig-05.jpg" width="95" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYNdrrZrqI/AAAAAAAAAUQ/SRrPlQa5xCE/s1600/armatrondrawingbig-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYNdrrZrqI/AAAAAAAAAUQ/SRrPlQa5xCE/s200/armatrondrawingbig-06.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYNiFoMcLI/AAAAAAAAAUY/_2cSRwS-ayE/s1600/armatrondrawingbig-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="113" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/THYNiFoMcLI/AAAAAAAAAUY/_2cSRwS-ayE/s200/armatrondrawingbig-07.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYNlWm1JfI/AAAAAAAAAUg/pqLd8VhL288/s1600/armatrondrawingbig-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://3.bp.blogspot.com/_d_kmXuVe1cY/THYNlWm1JfI/AAAAAAAAAUg/pqLd8VhL288/s200/armatrondrawingbig-08.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYNo9qY4ZI/AAAAAAAAAUo/usW7kBh245o/s1600/armatrondrawingbig-09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="151" src="http://4.bp.blogspot.com/_d_kmXuVe1cY/THYNo9qY4ZI/AAAAAAAAAUo/usW7kBh245o/s200/armatrondrawingbig-09.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&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: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-4809929392341173213?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/4809929392341173213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=4809929392341173213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4809929392341173213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4809929392341173213'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/08/sometimes-you-must-make-best-of-what.html' title='Sometimes you must make the best of what you have available...'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d_kmXuVe1cY/THYHcFNFRKI/AAAAAAAAARY/iwEMAAUKmag/s72-c/SuperArmatron.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-2930430103503592304</id><published>2010-08-19T14:21:00.000-07:00</published><updated>2010-08-19T15:33:10.913-07:00</updated><title type='text'>Catching up with the configuration curve</title><content type='html'>Okay, so, I discovered some new stuff.&lt;br /&gt;&lt;br /&gt;First: nginx can be convinced to do close-to-automatic deployments.&lt;br /&gt;&lt;br /&gt;sudo tee /etc/nginx/conf.d/autoconfig.conf &amp;lt;&amp;lt;-\EOA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client_max_body_size 5M;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client_body_buffer_size 128k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_connect_timeout 90;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_send_timeout 180;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_read_timeout 180;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_buffer_size 16k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_buffers 8 16k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_busy_buffers_size 32k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_intercept_errors on;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_connect_timeout 60;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_send_timeout 180;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_read_timeout 180;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_buffer_size 128k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_buffers 4 256k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_busy_buffers_size 256k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_temp_file_write_size 256k;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_intercept_errors on;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; include /var/www/sites/*/config/*;&lt;br /&gt;EOA&lt;br /&gt;&lt;br /&gt;Now when you drop a new site into /var/www/sites your configuration will be picked up after an 'reload nginx'! Just rename the config folder to config-disabled and reload 'nginx' to disable a site.&lt;br /&gt;&lt;br /&gt;Second: PostgreSQL!&lt;br /&gt;&lt;br /&gt;I'm sick of mySQL, Sun, and Oracle. Screw 'em all, time to jump ship to Postgres.&lt;br /&gt;Yay for &lt;a href="http://drizzle.org/wiki/FAQ"&gt;Drizzle&lt;/a&gt; and &lt;a href="http://kb.askmonty.org/v/mariadb-versus-mysql"&gt;MariaDB&lt;/a&gt;; keep up the good work and don't let The Man (Oracle) keep you down. Maybe I'll come back from the pg-side, maybe not.&lt;br /&gt;&lt;br /&gt;apt-get install postgresql php5-pgsql phppgadmin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a little more involved to setup than mysql, due to the lack of dbconfig-common support requiring manual setup.&lt;br /&gt;&lt;br /&gt;nano /usr/share/phppgadmin/conf/config.inc.php&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now find and change the following line&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$conf['extra_login_security'] = true;&lt;/code&gt;&lt;/pre&gt;to&lt;br /&gt;&lt;pre&gt;&lt;code&gt;$conf['extra_login_security'] = false;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;and now all userids can login.&lt;br /&gt;&lt;br /&gt;Now, postgresql itself comes in a locked down config out of the box.&lt;br /&gt;&lt;br /&gt;sudo su postgres -c psql template1&lt;br /&gt;&lt;br /&gt;ALTER USER postgres WITH PASSWORD 'securePassword!';&lt;br /&gt;\q&lt;br /&gt;&lt;br /&gt;sudo passwd -d postgres&lt;br /&gt;sudo su postgres -c passwd &lt;br /&gt;&lt;br /&gt;nano /etc/postgresql/8.4/main/postgresql.conf&lt;br /&gt;&lt;br /&gt;Change the line:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#listen_addresses = 'localhost'&lt;/code&gt;&lt;/pre&gt;to&lt;br /&gt;&lt;pre&gt;&lt;code&gt;listen_addresses = '*'&lt;/code&gt;&lt;/pre&gt;and also change the line:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;#password_encryption = on&lt;/code&gt;&lt;/pre&gt;to&lt;br /&gt;&lt;pre&gt;&lt;code&gt;password_encryption = on&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;nano /etc/postgresql/8.4/main/pg_hba.conf&lt;br /&gt;&lt;br /&gt;Set up something like this: (IPv6 is used by default for some reason.)&lt;br /&gt;&lt;br /&gt;# IPv6 local connections:&lt;br /&gt;host&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redmine_user&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ::1/128&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trust&lt;br /&gt;host&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ::1/128&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; md5&lt;br /&gt;&lt;br /&gt;Easy way to do this is to highlight the ipv6 line, hit Ctrl-K, the up arrow, Ctrl-U, then change the 'all' username to 'redmine_user'.&lt;br /&gt;&lt;br /&gt;service postgresql-8.4 restart&lt;br /&gt;&lt;br /&gt;And you should be set.&lt;br /&gt;&lt;br /&gt;mkdir -p /var/www/sites/phppgadmin/config&lt;br /&gt;&lt;br /&gt;sudo tee /var/www/sites/phppgadmin/config/phppgadmin.conf &amp;lt;&amp;lt;-\EOA&lt;br /&gt;server {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen 80 default;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name localhost;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log /var/www/sites/phppgadmin/logs/phppgadmin.access.log;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_log /var/www/sites/phppgadmin/logs/phppgadmin.error.log;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root /usr/share/phppgadmin;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index index.php;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~ \.php$ {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include /etc/nginx/fastcgi_params;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass unix:/tmp/php-fastcgi.socket;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_index index.php;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param SCRIPT_FILENAME /usr/share/phppgadmin$fastcgi_script_name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;EOA&lt;br /&gt;&lt;br /&gt;rm /etc/nginx/sites-enabled/default&lt;br /&gt;reload nginx&lt;br /&gt;&lt;br /&gt;And viola, postgresql!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-2930430103503592304?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/2930430103503592304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=2930430103503592304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/2930430103503592304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/2930430103503592304'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/08/catching-up-with-configuration-curve.html' title='Catching up with the configuration curve'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-7602104414116040864</id><published>2010-08-04T18:38:00.000-07:00</published><updated>2010-08-19T14:59:22.181-07:00</updated><title type='text'>Weaving Redmine, RVM, Ruby, Rails, Rack, Thin, and nginx as a reverse proxy</title><content type='html'>Yesterday, it came down from On High.&lt;br /&gt;&lt;br /&gt;Bossman say 'We need a trouble ticket system.' and Kami say "yes massa!"&lt;br /&gt;&lt;br /&gt;A quick trawl of &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_issue-tracking_systems"&gt;wikipedia&lt;/a&gt;'s list later, and Redmine's the winner.&lt;br /&gt;Time Tracking, Revision control integration, and full RBAC + lockdown, and all written in my favorite language, Ruby.&lt;br /&gt;&lt;br /&gt;So, we'll be &lt;a href="http://blog.sllabs.com/2010/06/fun-with-nginx-upstart-and-lucid.html"&gt;starting from where my previous post&lt;/a&gt; in the series left off.&lt;br /&gt;&lt;br /&gt;You should have Lucid + nginx + php5-fastcgi + phpmyadmin set up already. (Honestly, you can skip the PHP stuff if you're not interested; I keep it around for Drupal and phpmyadmin.)&lt;br /&gt;&lt;br /&gt;First: Get some required packages.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Gill Sans',sans-serif,Georgia,Palatino,Times,'Times New Roman'; font-size: 14px; line-height: 22px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;apt-get install curl patch git-core subversion autoconf build-essential bison libreadline6 libreadline-dev zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev&amp;nbsp;libmysqlclient-dev libpq-dev&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Second, install rvm.&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;bash &amp;lt; &amp;lt;( curl -L http://bit.ly/rvm-install-system-wide )&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;tee -a ~/.bashrc &amp;lt;&amp;lt;-\EOA&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;/div&gt;&lt;div style="line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[[ -s '/usr/local/lib/rvm' ]] &amp;amp;&amp;amp; source '/usr/local/lib/rvm'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;EOA&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: normal; white-space: normal;"&gt;&lt;/div&gt;&lt;div style="line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;/div&gt;&lt;div style="line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; margin: 0px; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;source '/usr/local/lib/rvm'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;Disable ruby's documentation generation (Don't need it on rackspace; skip this if you're on a dev box.)&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;echo "gem: --no-rdoc --no-ri" &amp;gt;&amp;gt; /etc/gemrc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Install ruby 1.8.7.&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;rvm install 1.8.7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Now set it as the default.&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;rvm use --default 1.8.7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Get the sqlite3 gem compiled&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install sqlite3-ruby&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;IF this fails, you're probably missing&amp;nbsp;libsqlite3-dev&lt;/div&gt;&lt;br /&gt;Get the mysql gem compiled&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install mysql&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;IF this fails, you're probably missing&amp;nbsp;libmysqlclient-dev&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Get the pg gem compiled&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install pg&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;IF this fails, you're probably missing&amp;nbsp;libpq-dev&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Install rack 1.0.1&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install rack -v=1.0.1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;Install rails 2.3.5&lt;/div&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install rails -v=2.3.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;If you want the optional gantt chart generation, you'll need rmagick.&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;apt-get install libmagick9-dev imagemagick&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;That will pull down a bunch of -dev packages; now build the native extensions.&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install rmagick&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Now we need a better appserver than webrick. Let's go get thin.&lt;br /&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;gem install thin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;Decide on where you'd like the redmine app to live; I like the private directory under the hostname.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;mkdir -p /var/www/redmine.domain.com/private/ &amp;amp;&amp;amp; cd /var/www/redmine.domain.com/private/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Now, checkout version 1.0's latest revision.&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;svn co http://redmine.rubyforge.org/svn/branches/1.0-stable redmine&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Okay, we've got redmine; now to configure it. First, let's setup the database. Run this SQL in phpmyadmin:&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;create database redmine_core character set utf8;&lt;br /&gt;create user 'redmine_user'@'localhost' identified by 'my_password';&lt;br /&gt;grant all privileges on redmine_core.* to 'redmine_user'@'localhost';&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Or phppgadmin: (Paste each line separately.)&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;CREATE ROLE redmine_user LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';&amp;nbsp;&lt;/pre&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;CREATE DATABASE redmine_core WITH ENCODING='UTF8' OWNER=redmine_user;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Edit the config/database.yml and configure the database settings.&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;cd redmine/config/ &amp;amp;&amp;amp; cp database.yml.example database.yml&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;production:&lt;br /&gt;  adapter: mysql&lt;br /&gt;  database: redmine_core&lt;br /&gt;  host: localhost&lt;br /&gt;  username: redmine_user&lt;br /&gt;  password: my_password&lt;br /&gt;  encoding: utf8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Or for Postgresql:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;production:&lt;br /&gt;  adapter: postgresql&lt;br /&gt;  database: redmine_core&lt;br /&gt;  host: localhost&lt;br /&gt;  username: redmine_user&lt;br /&gt;  password: my_password&lt;br /&gt;  encoding: utf8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now return to the redmine root (cd ..) and generate the session store.&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;rake generate_session_store&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Now, we'll have redmine populate the database.&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;RAILS_ENV=production rake db:migrate&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;You'll be prompted to choose a language here; just hit enter for english.&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;RAILS_ENV=production rake redmine:load_default_data&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Wooo! Let's test it.&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;ruby script/server thin -e production&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Now visit port 3000. You should get a nice blank redmine instance.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Now, for configuring nginx for a reverse proxy test:&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;server {&lt;br /&gt;        listen                  80;&lt;br /&gt;        server_name             redmine.domain.com;&lt;br /&gt;        access_log              /var/www/redmine.domain.com/log/access.log;&lt;br /&gt;        error_log               /var/www/redmine.domain.com/log/error.log;&lt;br /&gt;        root                    /var/www/redmine.domain.com/public/;&lt;br /&gt;&lt;br /&gt;        location / {&lt;br /&gt;                try_files       $uri @fallback;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;        location @fallback {&lt;br /&gt;                proxy_pass              http://127.0.0.1:3000;&lt;br /&gt;                proxy_connect_timeout   15;&lt;br /&gt;                proxy_redirect          default;&lt;br /&gt;                proxy_set_header        Host    $host;&lt;br /&gt;                proxy_set_header        X-Real-IP       $remote_addr;&lt;br /&gt;                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;                #proxy_set_header       X-Forwarded-Proto       https;&lt;br /&gt;                }&lt;br /&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Okay, this works!&lt;br /&gt;&lt;br /&gt;Next step: Setting up thin clusters on boot.&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;thin install&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Set up the icky old init-scripts:&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;update-rc.d -f thin defaults&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Now we can add YAML config files in /etc/thin/ !&lt;/div&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-family: monospace; font-size: inherit; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;--- &lt;br /&gt;pid: tmp/pids/thin-redmine.pid&lt;br /&gt;group: rvm&lt;br /&gt;wait: 30&lt;br /&gt;timeout: 30&lt;br /&gt;log: log/thin.log&lt;br /&gt;max_conns: 1024&lt;br /&gt;require: []&lt;br /&gt;&lt;br /&gt;environment: production&lt;br /&gt;max_persistent_conns: 512&lt;br /&gt;servers: 2&lt;br /&gt;daemonize: true&lt;br /&gt;user: www-data&lt;br /&gt;socket: /tmp/thin-redmine.sock&lt;br /&gt;chdir: /var/www/redmine.domain.com/private/redmine &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px; white-space: pre;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;Okay, let's start thin.&lt;/div&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;service thin start&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;And fix up our nginx proxy config:&lt;/div&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;upstream thin_redmine {&lt;br /&gt;   server   unix:/tmp/thin-redmine.0.sock;&lt;br /&gt;   server   unix:/tmp/thin-redmine.1.sock;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;server {&lt;br /&gt;        listen                  80;&lt;br /&gt;        server_name             redmine.domain.com;&lt;br /&gt;        access_log              /var/www/redmine.domain.com/log/access.log;&lt;br /&gt;        error_log               /var/www/redmine.domain.com/log/error.log;&lt;br /&gt;        root                    /var/www/redmine.domain.com/public/;&lt;br /&gt;&lt;br /&gt;        location / {&lt;br /&gt;                try_files       $uri @fallback;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;        location @fallback {&lt;br /&gt;                proxy_pass              http://thin_redmine;&lt;br /&gt;                proxy_connect_timeout   15;&lt;br /&gt;                proxy_redirect          default;&lt;br /&gt;                proxy_set_header        Host    $host;&lt;br /&gt;                proxy_set_header        X-Real-IP       $remote_addr;&lt;br /&gt;                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;                #proxy_set_header       X-Forwarded-Proto       https;&lt;br /&gt;                }&lt;br /&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;Enable your configuration and restart nginx.&lt;/div&gt;&lt;/div&gt;&lt;pre class="code" style="background-color: white; border: 1px solid maroon; display: block; font-variant: normal; margin: 0px 0px 0.5em 2em; overflow: auto; padding: 0.75em; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;span class="Apple-style-span" style="line-height: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;service nginx reload&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;...&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;PROFIT!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_d_kmXuVe1cY/TFph7QNLjvI/AAAAAAAAAPU/F-D7qofNACA/s1600/redmine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_d_kmXuVe1cY/TFph7QNLjvI/AAAAAAAAAPU/F-D7qofNACA/s400/redmine.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here's some links:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://code.macournoyer.com/thin/usage/"&gt;http://code.macournoyer.com/thin/usage/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.macournoyer.com/thin/usage/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.redmine.org/wiki/redmine/HowTo_configure_Nginx_to_run_Redmine"&gt;http://www.redmine.org/wiki/redmine/HowTo_configure_Nginx_to_run_Redmine&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-7602104414116040864?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/7602104414116040864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=7602104414116040864' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/7602104414116040864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/7602104414116040864'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/08/weaving-redmine-rvm-ruby-rails-rack.html' title='Weaving Redmine, RVM, Ruby, Rails, Rack, Thin, and nginx as a reverse proxy'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_d_kmXuVe1cY/TFph7QNLjvI/AAAAAAAAAPU/F-D7qofNACA/s72-c/redmine.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-9180078683063639377</id><published>2010-07-19T11:46:00.000-07:00</published><updated>2010-07-19T11:53:20.225-07:00</updated><title type='text'>gPXE and the HTTP server that could</title><content type='html'>eBox 1.4 has support for serving a bootfile over TFTP.&lt;br /&gt;&lt;br /&gt;Only it's  broken. Oops.&lt;br /&gt;&lt;br /&gt;Here's my quick fix:&lt;br /&gt;sudo nano /etc/inetd.conf&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;tftp&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dgram&amp;nbsp; &amp;nbsp;udp&amp;nbsp; &amp;nbsp; &amp;nbsp;wait&amp;nbsp; &amp;nbsp; root&amp;nbsp; /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;That  /var/lib/tftpboot is where tftp will serve files from.&lt;br /&gt;eBox expects  it to be serving a file such as:&lt;br /&gt;/var/lib/ebox/conf/dhcp/eth0/firmware&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;tftp&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dgram&amp;nbsp; &amp;nbsp;udp&amp;nbsp; &amp;nbsp; &amp;nbsp;wait&amp;nbsp; &amp;nbsp; root&amp;nbsp; /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/ebox/conf/dhcp/eth0&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now  when you 'upload' a new boot file to eBox's dashboard, &lt;br /&gt;/var/lib/ebox/conf/dhcp/ethX/firmware&lt;br /&gt;gets  replaced with whatever you've uploaded.&lt;br /&gt;&lt;br /&gt;But eBox won't set the  dhcp-option 'filename' to serve it.&lt;br /&gt;&lt;br /&gt;sudo nano  /usr/share/ebox/stubs/dhcp/subnet.mas&lt;br /&gt;&lt;br /&gt;Look for&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;% if(defined($info{'nextServer'})) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; next-server &amp;lt;% $info{'nextServer'} %&amp;gt;;&lt;br /&gt;% }&lt;br /&gt;% if(defined($info{'filename'})) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename "&amp;lt;% $info{'filename'} %&amp;gt;";&lt;br /&gt;% }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;And  change it to&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;% if(defined($info{'nextServer'})) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; next-server &amp;lt;% $info{'nextServer'} %&amp;gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # Filename entry added by Kamilion (dec 01 2009)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename firmware;&lt;br /&gt;% }&lt;br /&gt;% if(defined($info{'filename'})) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename "&amp;lt;% $info{'filename'} %&amp;gt;";&lt;br /&gt;% }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Now  we need something to boot.&lt;br /&gt;&lt;br /&gt;Go pick up the latest gPXE from here:&lt;br /&gt;&lt;a href="http://www.rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/build.php" target="_blank"&gt;http://www.rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/build.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click  Customize.&lt;br /&gt;&lt;br /&gt;Change the following Settings:&lt;br /&gt;&lt;br /&gt;[X]  DOWNLOAD_PROTO_HTTPS&lt;br /&gt;[X] DOWNLOAD_PROTO_FTP&lt;br /&gt;&lt;br /&gt;[X] TIME_CMD&lt;br /&gt;[X]  DIGEST_CMD&lt;br /&gt;&lt;br /&gt;And paste in the following Embedded Script: (Good  base, but edit if you wish)&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;#!gpxe&lt;br /&gt;echo "Greetings! Hit Ctrl-C to bail out."&lt;br /&gt;sleep 5&lt;br /&gt;echo "Going to DHCP on primary network adapter"&lt;br /&gt;ifopen net0&lt;br /&gt;dhcp net0&lt;br /&gt;echo "Going to try http://netboot/default.gpxe"&lt;br /&gt;chain http://netboot/default.gpxe&lt;br /&gt;echo "Didn't work, we're still here. Falling back to http://boot/default.gpxe"&lt;br /&gt;chain http://boot/default.gpxe&lt;br /&gt;echo "Didn't work, we're still here. Falling back to BKO"&lt;br /&gt;set 209:string pxelinux.cfg/default&lt;br /&gt;set 210:string http://boot.kernel.org/bko/&lt;br /&gt;echo "Here we go, off to boot.kernel.org!"&lt;br /&gt;chain http://boot.kernel.org/bko/pxelinux.0&lt;br /&gt;echo "Didn't work, we're still here. No Internet connection? Falling back to next BIOS Boot device"&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;You  should get a single .pxe file back after clicking Get Image.&lt;br /&gt;&lt;br /&gt;Go  to DHCP -&amp;gt; Interface -&amp;gt; Advanced Options -&amp;gt; Thin Client.&lt;br /&gt;Settings:&lt;br /&gt;Next  server: eBox&lt;br /&gt;File Name [browse] &lt;choose gpxe-x.x.x+-gpxe.pxe=""&gt;&lt;br /&gt;File  path in next server: &lt;blank&gt;&lt;br /&gt;&lt;br /&gt;Click "Change" to complete  the settings, then Save Changes.&lt;br /&gt;&lt;br /&gt;Place this file in the root of  your HTTP server, named default.gpxe, and create a DNS alias to that  machine named 'netboot'.&lt;br /&gt;&lt;/blank&gt;&lt;/choose&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;#!gpxe&lt;br /&gt;imgfree&lt;br /&gt;chain http://netboot/boot/menu.gpxe&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Here's  an example you can use to load Parted Magic:&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;#!gpxe&lt;br /&gt;imgfree&lt;br /&gt;kernel -n img http://bigblock/boot/pmagic/4.5/bzImage load_ramdisk=1 prompt_ramdisk=0 keymap=us loglevel=0 rw sleep=4&lt;br /&gt;initrd http://bigblock/boot/pmagic/4.5/initramfs&lt;br /&gt;boot img&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Here's  an example you can use to boot from iSCSI.&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;Code:&lt;/div&gt;&lt;div class="code"&gt;&lt;pre style="display: inline; margin-top: 0pt;"&gt;#!gpxe&lt;br /&gt;imgfree&lt;br /&gt;#dhcp net0&lt;br /&gt;set keep-san 1&lt;br /&gt;sanboot iscsi:10.10.10.250::::iqn.bigblock:storage.iscsikarmic-one&lt;br /&gt;chain http://10.10.10.250/boot/iscsi.gpxe&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;More  examples here: &lt;a href="http://boot.sllabs.com/boot/" target="_blank"&gt;http://boot.sllabs.com/boot/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-9180078683063639377?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/9180078683063639377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=9180078683063639377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/9180078683063639377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/9180078683063639377'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/07/gpxe-and-http-server-that-could.html' title='gPXE and the HTTP server that could'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-5143990042366230074</id><published>2010-07-16T16:47:00.000-07:00</published><updated>2010-07-16T17:12:17.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Win7'/><category scheme='http://www.blogger.com/atom/ns#' term='Bootable'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='U3'/><category scheme='http://www.blogger.com/atom/ns#' term='Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><title type='text'>How to use u3-tool in Lucid</title><content type='html'>As my few blog visitors may be aware, I've been using the &lt;a href="http://www.hak5.org/w/index.php/Universal_U3_LaunchPad_Hacker"&gt;U3 customizer for windows&lt;/a&gt; for a long time on  my 4GB cruzers to make them bootable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.sllabs.com/2008/05/booting-heron-from-u3.html" target="_blank"&gt;http://blog.sllabs.com/2008/&lt;wbr&gt;&lt;/wbr&gt;05/booting-heron-from-u3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I came across the u3-tool sometime ago when I bought my Clarion MiND, but I've only  actually used it recently.&lt;br /&gt;&lt;br /&gt;The U3 Customizer tools were released somewhere in  2005 and won't work in anything but windows XP 32bit, and won't  recognize U3s over 8GB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.raymond.cc/blog/archives/2007/11/23/hack-u3-usb-smart-drive-to-become-ultimate-hack-tool/"&gt;Gonzor&lt;/a&gt; discovered &lt;a href="http://www.twinmos.com/flash/download/ap_updater_u3_mar07_v1055.zip"&gt;TwinMOS's application version&lt;/a&gt; supported Larger drives, Vista, and was released in 2007. However, the copy from TwinMOS didn't work for me -- and yet &lt;a href="http://www.mediafire.com/?yzdpkm5j1ny"&gt;Gonzor's copy from mediafire&lt;/a&gt; did, both are version 1.0.5.5&lt;br /&gt;&lt;br /&gt;I just bought an open-box 16GB Contour EXtreme with AES from newegg for $40,  and it came yesterday.&lt;br /&gt;&lt;br /&gt;So I started searching on &lt;a href="http://randommusingsofarealgeek.blogspot.com/2009/12/i-used-to-hate-u3.html"&gt;how to hack a 16GB U3 drive&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;"Oh, right, &lt;a href="http://u3-tool.sourceforge.net/"&gt;u3-tool&lt;/a&gt;... Almost forgot about that!"&lt;br /&gt;&lt;br /&gt;In searching for 'how to use u3-tool', I  ran across ubuntu launchpad bug report &lt;a href="https://bugs.launchpad.net/ubuntu/+source/u3-tool/+bug/534070" target="_blank"&gt;#534070&lt;/a&gt; and played around a little.&lt;br /&gt;&lt;br /&gt;I had some issues trying to get the windows version to work, I could resize the CD domain, but 'burning' the ISO failed consistently at 4-5% with a scsi error.&lt;br /&gt;&lt;br /&gt;In Ubuntu Lucid, you can just 'sudo apt-get install u3-tool' but:&lt;br /&gt;I was *NOT* able to get /dev/sg* or /dev/sr* to work -- I had to  address  the disk device itself as /dev/sdf to get it to work.&lt;br /&gt;&lt;br /&gt;Hope this  helps others out, as I think the major problem people are having is trying to use one of the  /dev/sg like the u3-tool help text mentions.&lt;br /&gt;&lt;br /&gt;Here's the log of the CD domain resize and burn I ran.&lt;br /&gt;&lt;br /&gt;kamilion@SonyRA840G:~$  sudo u3-tool -i /dev/sdf&lt;br /&gt;Total device size:&amp;nbsp;&amp;nbsp; 14.95 GB (16051601408  bytes)&lt;br /&gt;CD size:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.69 MB (8060928 bytes)&lt;br /&gt;Data partition size:  14.94 GB (16043474944 bytes)&lt;br /&gt;kamilion@SonyRA840G:~$ sudo u3-tool -l  UbuntuLucid3264.iso /dev/sdf&lt;br /&gt;CD image(1874288640 byte) is to big for current cd partition(8060928  byte), please repartition device.&lt;br /&gt;kamilion@SonyRA840G:~$ sudo u3-tool  -p 1874288640 /dev/sdf&lt;br /&gt;&lt;br /&gt;WARNING: Loading a new cd image causes  the whole device to be whiped. This INCLUDES&lt;br /&gt;&amp;nbsp;the data partition.&lt;br /&gt;I repeat: ANY EXCISTING DATA WILL BE LOST!&lt;br /&gt;&lt;br /&gt;Are  you sure you want to continue? [yn] y&lt;br /&gt;kamilion@SonyRA840G:~$ sudo  u3-tool -l UbuntuLucid3264.iso /dev/sdf&lt;br /&gt;|**************************************************|  100%&lt;br /&gt;&lt;div class="ii gt" id=":p2"&gt;OK&lt;br /&gt;&lt;br /&gt;kamilion@SonyRA840G:~$ sudo u3-tool -i /dev/sdf&lt;br /&gt;Total device size: &amp;nbsp; 14.95 GB (16051601408 bytes)&lt;br /&gt;CD size: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1.75 GB (1874329600 bytes)&lt;br /&gt;Data partition size: 13.20 GB (14177271808 bytes)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin: 0px;"&gt;After I changed the ISO, I also had to open Disk Utility (palimpsest), "Format the Disk"&amp;nbsp; to create a new MBR geometry, and then create a new NTFS partition.&lt;/div&gt;&lt;div style="margin: 0px;"&gt;(Which I've subsequently copied Windows 7's bootmgr to the root of the flash partition and ran "bootsect /nt60 U:", then copied the contents of the 7 install cd to the flash)&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Both sections of the device are now bootable, the CD boots ubuntu lucid 32/64 TORAM=Yes, and the flash boots the 7 preinstallation environment.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_d_kmXuVe1cY/TEDzkUg-iaI/AAAAAAAAAO0/mfpmgzn6Xtk/s1600/u3format.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_d_kmXuVe1cY/TEDzkUg-iaI/AAAAAAAAAO0/mfpmgzn6Xtk/s400/u3format.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;(Yeah, I know the picture's screwed up -- I'll &lt;a href="http://www.blogdoctor.me/2006/10/how-to-change-width-of-blog.html"&gt;edit the blogspot CSS&lt;/a&gt; later.)&lt;/div&gt;&lt;br /&gt;So that all worked just fine for me. Hope it does for you, too!&lt;br /&gt;&lt;br /&gt;(And for the person who emailed me to ask about the &lt;a href="http://files.sllabs.com/files/trustcomputers.jpg"&gt;background&lt;/a&gt;... It's from &lt;a href="http://poisonedminds.com/d/20100419.html"&gt;SSDD&lt;/a&gt;.) &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-5143990042366230074?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/5143990042366230074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=5143990042366230074' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/5143990042366230074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/5143990042366230074'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/07/how-to-use-u3-tool-in-lucid.html' title='How to use u3-tool in Lucid'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_d_kmXuVe1cY/TEDzkUg-iaI/AAAAAAAAAO0/mfpmgzn6Xtk/s72-c/u3format.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-3342974564790791088</id><published>2010-06-09T11:01:00.000-07:00</published><updated>2010-08-25T01:58:30.729-07:00</updated><title type='text'>Fun with nginx, upstart, and lucid</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;&lt;b&gt;Howdy boys and girls!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Today we'll be mangling us some web.&lt;br /&gt;&lt;br /&gt;I've started off by installing a fresh copy of Ubuntu Lucid Server in Virtualbox 3.2.4. Mind, if you're using a Linux host, turn *ON* host caching in the "SATA Controller" if your host's using EXT4 as the filesystem your VDIs are stored on, otherwise it will try to use AIO and corrupt your VDIs. The host kernel needs a patch to fix this, but neither karmic or lucid have it, apparently. Anyway.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;The Core System&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;For my first act, I've shuttled over my SSH public keys so I can use my agent to login.&lt;br /&gt;&lt;br /&gt;ssh kamilion@laptop # Say no or ^C to make empty ~/.ssh dir with proper perms!&lt;br /&gt;scp kamilion@laptop:/home/kamilion/.ssh/authorized_keys ~/.ssh/authorized_keys&lt;br /&gt;tee -a /etc/ssh/sshd_config &amp;lt;&amp;lt;-\EOA&lt;br /&gt;&lt;br /&gt;# No passwords! Get bent, crackers!&lt;br /&gt;PasswordAuthentication no&lt;br /&gt;EOA&lt;br /&gt;&lt;br /&gt;For my second act, I've tossed a couple of the more useful utilities on. (python-software-properties gives you "add-apt-repository ppa:freenx-team" shortcuts)&lt;br /&gt;&lt;br /&gt;sudo apt-get install python-software-properties dnsutils &lt;a href="http://www.openssh.com/"&gt;openssh-server&lt;/a&gt; &lt;a href="http://stats.denyhosts.net/stats.html"&gt;denyhosts&lt;/a&gt; &lt;a href="http://www.gnu.org/software/screen/manual/screen.html"&gt;screen&lt;/a&gt; &lt;a href="http://htop.sourceforge.net/"&gt;htop&lt;/a&gt; &lt;a href="http://samba.anu.edu.au/rsync/"&gt;rsync&lt;/a&gt; &lt;a href="http://nethogs.sourceforge.net/"&gt;nethogs&lt;/a&gt; &lt;a href="http://www.sqlite.org/"&gt;sqlite3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Make *sure* you add your REAL origin IPs to /etc/hosts.allow&lt;br /&gt;&lt;br /&gt;tee -a /etc/hosts.allow &amp;lt;&amp;lt;-\EOA&lt;br /&gt;&lt;br /&gt;sshd: 10.0.0.5&lt;br /&gt;sshd: 24.48.64.128&lt;br /&gt;EOA&lt;br /&gt;AND edit /etc/denyhosts.conf to enable blocklist sync.&lt;br /&gt;&lt;br /&gt;nano /etc/denyhosts &lt;br /&gt;&lt;br /&gt;At the bottom, you need to uncomment: SYNC_SERVER, SYNC_DOWNLOAD, SYNC_DOWNLOAD_THRESHOLD = 10, and SYNC_DOWNLOAD_RESILIENCY = 2d&lt;br /&gt;then:&lt;br /&gt;/etc/init.d/denyhosts restart&lt;br /&gt;&lt;br /&gt;This will sync the ssh blocklists from the denyhosts server.&lt;br /&gt;Uncomment SYNC_UPLOAD too, please contribute your stats! &lt;br /&gt;&lt;br /&gt;(Yes, I know this is pointless after shutting off password auth, but BETTER SAFE THAN SORRY.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Virtual Machines&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you're using a VM, this might be handy:&lt;br /&gt;&lt;br /&gt;sudo apt-get install build-essential dkms &lt;br /&gt;sudo rm /etc/init/tty[2-6].conf&amp;nbsp; #Disable other TTYs because this is a VM.&lt;br /&gt;&lt;br /&gt;The virtualbox guest additions will use dkms to build the guest kernel modules automatically.&lt;br /&gt;&lt;br /&gt;You can select the Install Guest Additions from the vbox menu to insert the ISO into the cdrom.&lt;br /&gt;&lt;br /&gt;/media/cdrom/autorun.sh&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;The Webserver&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now we'll install nginx.&lt;br /&gt;&lt;br /&gt;sudo apt-get install nginx&lt;br /&gt;&lt;br /&gt;And set it up to startup on boot with upstart.&lt;br /&gt;The prestart tests the config; handy! &lt;br /&gt;&lt;br /&gt;sudo tee /etc/init/nginx.conf &amp;lt;&amp;lt;-\EOA&lt;br /&gt;# /etc/init/nginx.conf&lt;br /&gt;# nginx - starts the nginx webserver&lt;br /&gt;&lt;br /&gt;description "nginx"&lt;br /&gt;&lt;br /&gt;start on (net-device-up and local-filesystems)&lt;br /&gt;stop on runlevel [016]&lt;br /&gt;&lt;br /&gt;pre-start exec /usr/sbin/nginx -t&lt;br /&gt;&lt;br /&gt;expect fork&lt;br /&gt;respawn&lt;br /&gt;exec /usr/sbin/nginx&lt;br /&gt;EOA&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now you should be able to&lt;br /&gt;&lt;br /&gt;start nginx&lt;br /&gt;&lt;br /&gt;and check port 80 for the default "Welcome to nginx!" response.&lt;br /&gt;&lt;br /&gt;Right -- so this is served out of /var/www/ by default and controlled from /etc/nginx/ in such a manner that you dump config stanzas into a file in /etc/nginx/sites-available/ and link them as such:&lt;br /&gt;&lt;br /&gt;sudo ln -s /etc/nginx/sites-available/fqdn.com /etc/nginx/sites-enabled/fqdn.com &amp;amp;&amp;amp; sudo service nginx reload&lt;br /&gt;&lt;br /&gt;you should get a working vhost with a proper config.&lt;br /&gt;&lt;br /&gt;So, we're now capable of serving static pages, what else can we do? &lt;br /&gt;&lt;br /&gt;Let's check which modules and defaults our nginx was compiled with:&lt;br /&gt;&lt;br /&gt;nginx -V&lt;br /&gt;&lt;br /&gt;nginx version: nginx/0.7.65&lt;br /&gt;TLS SNI support enabled&lt;br /&gt;configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module --with-http_gzip_static_module --with-http_realip_module --with-mail --with-mail_ssl_module --with-ipv6 --add-module=/build/buildd/nginx-0.7.65/modules/nginx-upstream-fair&lt;br /&gt;&lt;br /&gt;Looks like we've got fastcgi, DAV, FLV streaming, gzip and mail-proxy by default.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Installing PHP5&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now for PHP5.&lt;br /&gt;&lt;br /&gt;sudo apt-get install  php5-cgi php5-mysql php5-pgsql php5-sqlite php5-suhosin php5-imap php5-mcrypt php5-gd # php5-gd is usually needed&lt;br /&gt;&lt;br /&gt;# security disclosure risk: shut php up -- hide version!&lt;br /&gt;sudo sed -i '/expose_php/s/\;exp/exp/;/expose_php/s/=.*/= 0/' /etc/php5/cgi/php.ini&lt;br /&gt;grep 'expose_php' /etc/php5/cgi/php.ini&lt;br /&gt;&lt;br /&gt;sudo tee /etc/init/php-fastcgi.conf &amp;lt;&amp;lt;-\EOA&lt;br /&gt;# /etc/init/php-fastcgi.conf&lt;br /&gt;# php-fastcgi - starts php-cgi as an external FASTCGI process&lt;br /&gt;&lt;br /&gt;description "php-fastcgi - respawning UNIX Socket"&lt;br /&gt;&lt;br /&gt;start on (net-device-up and local-filesystems)&lt;br /&gt;stop on runlevel [!2345]&lt;br /&gt;&lt;br /&gt;expect fork&lt;br /&gt;respawn&lt;br /&gt;exec /usr/bin/sudo -u www-data PHP_FCGI_CHILDREN=5 PHP_FCGI_MAX_REQUESTS=125 /usr/bin/php-cgi -q -b /tmp/php-fastcgi.socket&lt;br /&gt;EOA&lt;br /&gt;&lt;br /&gt;Okay, now to start it.&lt;br /&gt;&lt;br /&gt;start php-fastcgi&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;PHP5 FastCGI for nginx&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now you'll need an nginx config.&lt;br /&gt;&lt;br /&gt;Here's one of my templates:&lt;br /&gt;&lt;br /&gt;# Enable with&lt;br /&gt;# sudo ln -s /etc/nginx/sites-available/fqdn.com /etc/nginx/sites-enabled/fqdn.com &amp;amp;&amp;amp; sudo service nginx reload&lt;br /&gt;&lt;br /&gt;server {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fqdn.com www.fqdn.com;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/log/access.log;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/log/error.log;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/public/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index.php index.html;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~ \.php$ {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass&amp;nbsp;&amp;nbsp;&amp;nbsp; unix:/tmp/php-fastcgi.socket;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_index&amp;nbsp;&amp;nbsp; index.php;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param&amp;nbsp;&amp;nbsp; SCRIPT_FILENAME /var/www/fqdn.com/public$fastcgi_script_name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_params;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;### Redirect www to root domain?&lt;br /&gt;#server {&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; www.fqdn.com;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rewrite&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^/(.*) http://fqdn.com/$1 permanent;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;### Redirect root domain to www?&lt;br /&gt;#server {&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fqdn.com;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rewrite&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^/(.*) http://www.fqdn.com/$1 permanent;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;### HTTPS server&lt;br /&gt;#server {&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 443;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fqdn.com;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl_certificate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/private/cert.pem;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl_certificate_key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/private/cert.key;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl_session_timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5m;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl_protocols&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSLv2 SSLv3 TLSv1;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl_ciphers&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssl_prefer_server_ciphers&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/log/secure.access.log;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/log/secure.error.log;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/www/fqdn.com/public/;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index.php index.html;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~ \.php$ {&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass&amp;nbsp;&amp;nbsp;&amp;nbsp; unix:/tmp/php-fastcgi.socket;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_index&amp;nbsp;&amp;nbsp; index.php;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param&amp;nbsp;&amp;nbsp; SCRIPT_FILENAME /var/www/fqdn.com/public$fastcgi_script_name;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_params;&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;The Database&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Okay, let's move on and install a real database. Doesn't  really matter which you choose. I'm gonna go with mysql for now so we  can use phpmyadmin later.&lt;br /&gt;&lt;br /&gt;sudo apt-get install mysql-server&lt;br /&gt;&lt;br /&gt;Enter your new mysql root password twice.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now for phpmyadmin.&lt;br /&gt;&lt;br /&gt;sudo apt-get install phpmyadmin&lt;br /&gt;&lt;br /&gt;It'll ask which server you want to configure it for -- leave both apache2 and lighttpd disabled and continue. Yes, we want to use dbconfig-common. Enter your mysql root password for the first one; then just hit enter to have phpmyadmin generate it's own account and random password.&lt;br /&gt;&lt;br /&gt;sudo tee /etc/nginx/sites-available/phpmyadmin &amp;lt;&amp;lt;-\EOA&lt;br /&gt;# Enable with&lt;br /&gt;# sudo ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin &amp;amp;&amp;amp; sudo service nginx reload&lt;br /&gt;server {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen 80 default;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name localhost;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log /var/www/apps/logs/phpmyadmin.access.log;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_log /var/www/apps/logs/phpmyadmin.error.log;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root /usr/share/phpmyadmin;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index index.php;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~ \.php$ {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include /etc/nginx/fastcgi_params;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass unix:/tmp/php-fastcgi.socket; #127.0.0.1:9000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_index index.php;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin$fastcgi_script_name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location /nginx_status {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # copied from http://blog.kovyrin.net/2006/04/29/monitoring-nginx-with-rrdtool/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stub_status on;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp;&amp;nbsp; off;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allow&amp;nbsp;24.48.64.128; # Home&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allow 10.0.0.5; # Work&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deny all;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;EOA&lt;br /&gt;&lt;br /&gt;Make some empty logdirs or nginx will go splat when it can't  access them. &lt;br /&gt;&lt;br /&gt;mkdir -p /var/www/apps/logs/&lt;br /&gt;chown  -R www-data.www-data /var/www/apps/logs/&lt;br /&gt;&lt;br /&gt;Kill the pesky default site now that we have phpmyadmin. (yes, "reload nginx" is a command. Nifty, huh? The magic of Upstart!)&lt;br /&gt;&lt;br /&gt;ln -s /etc/nginx/sites-available/phpmyadmin  /etc/nginx/sites-enabled/phpmyadmin&lt;br /&gt;rm&amp;nbsp; /etc/nginx/sites-enabled/default&lt;br /&gt;reload nginx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You should now be able to access phpmyadmin and login with root/mysqlpass.&lt;br /&gt;phpmyadmin also can synchronize two mysql instances now, as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Additional Information and Tricks&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SSH tunnels are your friend! Sync DBs over ssh with phpmyadmin!&lt;br /&gt;ssh -vg -L 8080:localhost:80 -R 33306:mysql-server.home:3306 user@fqdn.com&lt;br /&gt;&lt;br /&gt;firefox http://localhost:8080/server_synchronize.php&lt;br /&gt;&lt;br /&gt;replace mysql-server.home with whatever hostname/ip has the mysqld instance you wish to sync with. You can pick any port instead of 33306, just make sure you tell phpmyadmin to look at "localhost" on that port.&lt;br /&gt;&lt;br /&gt;You can clone whole servers too!&lt;br /&gt;push.sh:&lt;br /&gt;#/bin/bash &lt;br /&gt;rsync -azvv -e ssh /var/www/ root@fqdn.com:/var/www/&lt;br /&gt;rsync -azvv -e ssh /etc/nginx/ root@fqdn.com:/etc/nginx/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;pull.sh:&lt;br /&gt;#!/bin/bash&lt;br /&gt;rsync -azvv -e ssh root@fqdn.com:/etc/nginx/ /etc/nginx/&lt;br /&gt;rsync -azvv -e ssh root@fqdn.com:/var/www/ /var/www/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Want a remote mini-desktop? This'll take a couple minutes.&lt;br /&gt;add-apt-repository ppa:freenx-team&lt;br /&gt;apt-get install freenx-server firefox gnome-core synaptic&lt;br /&gt;&lt;br /&gt;Boom, grab the &lt;a href="http://www.nomachine.com/download-client-windows.php"&gt;nxclient&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Now, go forth and serve pages!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-3342974564790791088?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/3342974564790791088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=3342974564790791088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/3342974564790791088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/3342974564790791088'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/06/fun-with-nginx-upstart-and-lucid.html' title='Fun with nginx, upstart, and lucid'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-5816910380097554001</id><published>2010-06-08T19:55:00.001-07:00</published><updated>2010-06-08T19:56:06.088-07:00</updated><title type='text'>Goodbye [DB], Hello Crunchyroll!</title><content type='html'>To [DB]: &lt;br /&gt;&lt;br /&gt;Thanks for almost five years of quality entertainment.&lt;br /&gt;Because you guys and guys like you subbed all this time, we now have legal ways to get our fix. I just signed up with crunchyroll -- they've got a $20 off promo right now, but I politely declined it and paid the full $59 for a year.&lt;br /&gt;&lt;br /&gt;Thank you for all of your hard work. Thank you for making this possible. Thank you for making this POPULAR.&lt;br /&gt;Thank you for clogging teh intartubes with petabytes of anime. Thank you for the fakesubs, the trollsubs, your sense of humor, and not taking crap. Thank you for running a tracker that handles torrents with 5000 seeders and 12000 peers. Thank you for spending your time. Thank you for spending your money.&lt;br /&gt;And most of all -- Thank you for spending your lives.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;-- Kami, a happy anime fanatic&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-5816910380097554001?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/5816910380097554001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=5816910380097554001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/5816910380097554001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/5816910380097554001'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/06/goodbye-db-hello-crunchyroll.html' title='Goodbye [DB], Hello Crunchyroll!'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-6161242649820849548</id><published>2010-04-15T13:04:00.001-07:00</published><updated>2010-04-15T13:04:16.878-07:00</updated><title type='text'>Windows 7 and the Mysterious Unidentified Network</title><content type='html'>Fixing Win7's Unidentified Network problem&lt;br /&gt;&lt;br /&gt;http://www.sevenforums.com/tutorials/71408-unidentified-networks-set-private-public.html&lt;br /&gt;&lt;br /&gt;Use gpedit.msc to go to &lt;b&gt;Computer Configuration&lt;/b&gt; -&amp;gt; &lt;b&gt;Windows Settings&lt;/b&gt; -&amp;gt; &lt;b&gt;Security Settings&lt;/b&gt; -&amp;gt;&lt;b&gt; Network List Manager Policies&lt;/b&gt;.&lt;br /&gt;Right click All Networks and select Properties.&lt;br /&gt;Set the following: User can Change Name, User can Change Location, User can Change Icon. Click OK.&lt;br /&gt;Use services.msc to locate "##Id_String1.6844f930_1628_4223_b5cc_5bb94b879762##" from Apple Computer, INC. -- right click on it and say properties.&lt;br /&gt;Click the Stop button, then use the pulldown to switch to "Disabled" startup.&lt;br /&gt;This will disable the mdnsresponder.exe which sets a gateway address of 0.0.0.0 resulting in that second spurious "Unidentified Network" that fucks everything up.&lt;br /&gt;&lt;br /&gt;Open your network center.&lt;br /&gt;Click Manage Wireless Networks from the sidebar. DELETE THEM ALL except your own home/work networks (You should know the names by now!) and return to the Network Center.&lt;br /&gt;Click on the connection's icon under View your active networks.&lt;br /&gt;Click Merge or Delete network locations. DELETE THEM ALL except your primary networks. Click Close. Click OK.&lt;br /&gt;Click Change Adapter Settings from the sidebar.&lt;br /&gt;Right click each "real" network adapter and "Disable" it. They should have device names like "Intel Wireless" and "Broadcom Gigabit".&lt;br /&gt;Ignore devices like "Cisco VPN", "Bluetooth Device", "1394 adapter".&lt;br /&gt;Re-enable the devices you just disabled.&lt;br /&gt;&lt;br /&gt;Waboom, all fixed, no reboot required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-6161242649820849548?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/6161242649820849548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=6161242649820849548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/6161242649820849548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/6161242649820849548'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2010/04/windows-7-and-mysterious-unidentified.html' title='Windows 7 and the Mysterious Unidentified Network'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-3641499693557913455</id><published>2009-07-24T18:15:00.000-07:00</published><updated>2009-07-27T22:17:52.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Win7'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Tricks'/><title type='text'>Burnout Paradise and Windows 7</title><content type='html'>Long time, no post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Okay, so I was installing Burnout Paradise: The Ultimate Box on my shiny new Windows 7 bootable VHD, and MSIInstaller kept throwing error code 2203 at the start of the install.&lt;br /&gt;&lt;br /&gt;So, tracked down this gem of info:&lt;br /&gt;&lt;a href="http://groups.google.com/group/microsoft.public.platformsdk.msi/browse_thread/thread/5fe6882d572c6d25/6c822b6f62f44a7a%236c822b6f62f44a7a"&gt;Google Groups (microsoft.public.platformsdk.msi)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Windows NT has a nice command line tool called cacls.exe (change ACLs) that can display or set access control rules for files. Kinda like Take Ownership, but without actually having to alter the file's ownership.&lt;br /&gt;&lt;br /&gt;And, it turns out a MSIInstaller 2203 error can be caused by NT AUTHORITY\SYSTEM not having access permissions on the %TEMP% or %SYSTEMROOT%\Installer folder.&lt;br /&gt;&lt;br /&gt;Off to the commandline I went.&lt;br /&gt;&lt;br /&gt;C:\Users\Kamilion&gt;cacls %SystemRoot%\Installer&lt;br /&gt;C:\Windows\Installer NT AUTHORITY\SYSTEM:(OI)(CI)F&lt;br /&gt;                   Everyone:(OI)(CI)R&lt;br /&gt;                   BUILTIN\Administrators:(OI)(CI)F&lt;br /&gt;&lt;br /&gt;Well, that looks normal.&lt;br /&gt;&lt;br /&gt;C:\Users\Kamilion&gt;cacls %TEMP%&lt;br /&gt;C:\Users\Kamilion\AppData\Local\Temp Raziel\Kamilion:(OI)(IO)F&lt;br /&gt;                                   Raziel\Kamilion:(CI)F&lt;br /&gt;&lt;br /&gt;Ahha! I'm the only one with access to my own tempdir...&lt;br /&gt;Well, we'll fix that.&lt;br /&gt;&lt;br /&gt;C:\Users\Kamilion&gt;cacls %TEMP% /E /G SYSTEM:F&lt;br /&gt;processed dir: C:\Users\Kamilion\AppData\Local\Temp&lt;br /&gt;&lt;br /&gt;So, I've just added an ACL allow for SYSTEM with Full access.&lt;br /&gt;Let's see if it took.&lt;br /&gt;&lt;br /&gt;C:\Users\Kamilion&gt;cacls %TEMP%&lt;br /&gt;C:\Users\Kamilion\AppData\Local\Temp Raziel\Kamilion:(OI)(IO)F&lt;br /&gt;                                   Raziel\Kamilion:(CI)F&lt;br /&gt;                                   NT AUTHORITY\SYSTEM:(OI)(CI)F&lt;br /&gt;&lt;br /&gt;Sure enough!&lt;br /&gt;&lt;br /&gt;Run the installer, and boom, no more 2203 error. I have my Burnout, and learned a new trick!&lt;br /&gt;&lt;br /&gt;Sometimes annoying errors can actually be useful.&lt;br /&gt;Edit: Argh, no [code] tags!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-3641499693557913455?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/3641499693557913455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=3641499693557913455' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/3641499693557913455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/3641499693557913455'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2009/07/burnout-paradise-and-windows-7.html' title='Burnout Paradise and Windows 7'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-2884323318089099174</id><published>2008-05-12T12:22:00.000-07:00</published><updated>2008-05-12T13:11:55.014-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hak5'/><category scheme='http://www.blogger.com/atom/ns#' term='Nexenta'/><category scheme='http://www.blogger.com/atom/ns#' term='UBCD4Win'/><category scheme='http://www.blogger.com/atom/ns#' term='Bootable'/><category scheme='http://www.blogger.com/atom/ns#' term='U3'/><category scheme='http://www.blogger.com/atom/ns#' term='Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSolaris'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><title type='text'>Booting The Heron from a U3</title><content type='html'>Well, one day last week, I got bored and decided to tinker with my &lt;a href="http://www.sandisk.com/Products/Item%282321%29-SDCZ7-4096-A11-Cruzer_Titanium_4GB.aspx"&gt;Sandisk Cruzer Titanium 4GB with U3&lt;/a&gt;. Normally, when you jam one of these in your USB port, it shows up as a &lt;a href="http://u3.sandisk.com/download/apps/lpinstaller/isofiles/cruzer-autorun.iso"&gt;6MB CD-ROM&lt;/a&gt; drive and the rest of the space as a USB Mass Storage Device (USB Harddrive).&lt;br /&gt;&lt;br /&gt;Now, here's the neat thing: It does this all in hardware.&lt;br /&gt;The chipset inside registers as two distinct devices, a CD-ROM with autoplay software for windows with the fancy U3 launchpad, and the actual flash drive. Windows Device Manager shows two devices, and jamming it in my Ubuntu 8.04 installation also displays as two drives. So, thinking about this, I walked over to a friend's PC, rammed it in the front panel USB, hit the power button, and whacked F12 to show the boot drive selection menu.&lt;br /&gt;&lt;br /&gt;Imagine my surprise when even the BIOS recognized it as two distinct devices...&lt;br /&gt;So, I started tooling around google, and discovered the "&lt;a href="http://wiki.hak5.org/wiki/Universal_U3_LaunchPad_Hacker"&gt;U3 Universal Customizer&lt;/a&gt;".&lt;br /&gt;Normally, people would use this to patch in a new ISO under 6MB to replace the existing one.&lt;br /&gt;&lt;br /&gt;I began screwing around with some of the other software from the &lt;a href="http://wiki.hak5.org/wiki/Category:USB_Hacks"&gt;Hak5&lt;/a&gt; site, and poked around with the USB Switchblade &amp;amp; USB Hacksaw software...&lt;br /&gt;&lt;br /&gt;Basically, what they are, is a replacement for the 6MB portion of the drive that contains some 'malware' that will bleed a windows system dry -- swipes all the passwords, sets up an encrypted stunnel, and emails it all off to an address of your choice. Interesting, but not terribly useful unless you're a vengeful 14 year old intent on swiping some other kiddie's myspace passwords for fun and pr0fit. Big deal. Since I run Ubuntu primarily now, it wouldn't affect me, even with WINE installed, due to the very nice "This disc has autoplay, do you want to execute it?" dialog.&lt;br /&gt;&lt;br /&gt;So I tinkered around with it some more... And then I found out by trial and error that the U3 Universal Customizer can change the domain size of the CD side of the device! The first time I tried this was with a 10MB ISO containing &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt; and some other bits including &lt;a href="http://www.disktrix.com/UDIntroduction.htm"&gt;DiskTrix's Ultimate Defrag&lt;/a&gt;. From everything I read, I was told this would brick the unit, but I tried anyway. It worked!&lt;br /&gt;&lt;br /&gt;So then I figured, hey, wait a minute. If I can shoehorn 10MB on there, what about 700MB?&lt;br /&gt;Well, first try, it didn't work... but &lt;a href="http://www.sandisk.com/Retail/Default.aspx?CatID=1415"&gt;LPUninstaller&lt;/a&gt; managed to unbork my drive and &lt;a href="http://u3.sandisk.com/download/apps/LPInstaller.exe"&gt;LPInstaller&lt;/a&gt; got me back to the standard U3 Launchpad.&lt;br /&gt;&lt;br /&gt;Then I thought... Hey, what if there's a signature stuck on the ISO somewhere that the U3 bits are looking for?&lt;br /&gt;&lt;br /&gt;I dug up a copy of MagicISO, which can normally remaster ISOs, opened up cruzer-autorun.iso, deleted everything but the autorun.inf, dropped process explorer in there, edited the autorun.inf, opened up my Ubuntu 8.04 ISO, saved the bootsector to a BIF file, copied all of the files out of the ISO to C:\Ubu804, loaded the bootsector.bif into the cruzer-autorun.iso, and dropped all the files in C:\Ubu804 in there, and ran U3 Universal Customizer...&lt;br /&gt;&lt;br /&gt;*45* minutes later, SUCCESS!&lt;br /&gt;&lt;br /&gt;So I jammed the drive into my friend's PC, hit the power button, whacked F12 to get to the boot menu, and selected the U3 Titanium CDROM device...&lt;br /&gt;&lt;br /&gt;And bricked my pants as Ubuntu's CD Bootloader came up. Hit enter twice, and about 45 seconds later, I'm staring at the Ubuntu 8.04 desktop, grinning my ass off like an idiot. Plus you can use the rest of the Mass Storage side for "persistant" mode! Now if I could just figure out how to get "toram" working again, and dump openoffice from casper, I'd be one happy camper!&lt;br /&gt;&lt;br /&gt;To sum it all up:&lt;br /&gt;&lt;br /&gt;Edit the existing cruzer-autorun.iso with MagicISO instead of creating a new ISO.&lt;br /&gt;"Burn" the ISO onto the Cruzer with U3 Universal Customizer.&lt;br /&gt;&lt;br /&gt;This should work with just about any bootable ISO that doesn't rely on things expecting hard coded ISO9660 LBA addresses.&lt;br /&gt;&lt;br /&gt;(And it should even work on an &lt;a href="http://www.ubcd4win.com/"&gt;UBCD4Win&lt;/a&gt; / &lt;a href="http://www.nu2.nu/pebuilder/"&gt;BartPE&lt;/a&gt; / &lt;a href="http://opensolaris.org/os/downloads/"&gt;OpenSolaris Indiana or Nevada&lt;/a&gt; /&lt;a href="http://www.nexenta.org/os/Download"&gt;Nexenta&lt;/a&gt; ISO under 4096MB!)&lt;br /&gt;&lt;br /&gt;The only thing you need is unrestricted access to a Windows NT5.x (Windows 2000 / Windows XP) machine for about an hour.&lt;br /&gt;&lt;br /&gt;Good luck, beware of bricking your $50 keychain bootable CD-ROM!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2779966409133897249-2884323318089099174?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/2884323318089099174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=2884323318089099174' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/2884323318089099174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/2884323318089099174'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2008/05/booting-heron-from-u3.html' title='Booting The Heron from a U3'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2779966409133897249.post-4174333669584510931</id><published>2008-04-30T13:28:00.000-07:00</published><updated>2008-04-30T13:33:37.762-07:00</updated><title type='text'>Forcing Vista Home Basic/Premium to play with SAMBA</title><content type='html'>After spending hours trying, I finally managed to come up with a solution...&lt;br /&gt;From my posting in the &lt;a href="http://forums.microsoft.com/msdn/showpost.aspx?siteid=1&amp;amp;postid=3186539&amp;amp;sb=0&amp;amp;d=1&amp;amp;at=7&amp;amp;ft=11&amp;amp;tf=0&amp;amp;pageid=3"&gt;MSDN forum&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[quote user="Jim Frost"]&lt;br /&gt;&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\LMCompatibilityLevel&lt;br /&gt;&lt;br /&gt;controls the security level mandated or allowed for logins.  In Vista it defaults to 0x3, which means "NTLMv2 only".  This is not supported by Samba, or at least not supported by any of the Samba servers I use (Mac OS X, Debian Sarge, or Buffalo TeraStation).  This is despite the fact that the Samba documentation implies that it should work.&lt;br /&gt;[/quote]&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;NTLMv2 did not work reliably until recent samba 3.0.2X releases.&lt;br /&gt;Vista Home Basic/Premium does not have secpol.msc. Ultimate does.&lt;br /&gt;&lt;br /&gt;[quote user="K Frazier"]&lt;p&gt;I had the same issue with my Linksys Media Server Router (WRTSL54GS) which offers SAMBA based NAS.&lt;/p&gt; &lt;p&gt;In addition to the suggestion to change the LSA Compatability from 3 to 1 (NTLMv2 required to NTLMv2 if available), which reverts back to XP type of authentication, I also found that treating the UserID as that of a foreign domain controller works.&lt;/p&gt; &lt;p&gt;That is...If your NAS is a member of the FOO workgroup, when you pass your authentication info, you can specify the format of "FOO\userid" in the username field.  It is important to use the Workgroup name and not the NAS server machine name.  This should work for most current generation SAMBA implementations.&lt;/p&gt;[/quote]&lt;br /&gt;&lt;br /&gt;The full solution for Vista Home Basic/Premium+ SambaV2/V3:&lt;br /&gt;&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Set HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\LMCompatibilityLevel&lt;/span&gt;&lt;/span&gt; from 0x3 to 0x1 to switch from "0x3: Try NTLMv2" (Confuses samba) to "0x1: Negotiate NTLMv2 if possible, Try NTLMv1, else use MSLANMAN".&lt;br /&gt;&lt;br /&gt;Vista also REQUIRES a domain identifier before the username:&lt;br /&gt;For all of us home users without a domain controller, use your WORKGROUP name instead of a DOMAIN identifier:&lt;br /&gt;&lt;br /&gt;If I wanted to log in on a machine named "SERVER", one would assume you would use "SERVER\username" but this is incorrect.&lt;br /&gt;What you actually want to do is login as "WORKGROUP\username" with Vista AFTER setting &lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;LMCompatibilityLevel to 0x1.&lt;br /&gt;&lt;br /&gt;So, for many people this would look something similar to:&lt;br /&gt;"MSHOME\Owner" or "MSHOME\Administrator"&lt;br /&gt;&lt;br /&gt;Remember, you need both the registry edit AND the identifier\username!&lt;br /&gt;&lt;br /&gt;Good luck!&lt;br /&gt;&lt;br /&gt;--Kamilion&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/2779966409133897249-4174333669584510931?l=blog.sllabs.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.sllabs.com/feeds/4174333669584510931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2779966409133897249&amp;postID=4174333669584510931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4174333669584510931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2779966409133897249/posts/default/4174333669584510931'/><link rel='alternate' type='text/html' href='http://blog.sllabs.com/2008/04/forcing-vista-home-basicpremium-to-play.html' title='Forcing Vista Home Basic/Premium to play with SAMBA'/><author><name>Kamilion</name><uri>http://www.blogger.com/profile/17989033559273222154</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_d_kmXuVe1cY/TPeLUbL3y0I/AAAAAAAAAr8/_mZ7YXkTUJI/S220/RoboReverend2.gif'/></author><thr:total>0</thr:total></entry></feed>
