<?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-11349913</id><updated>2012-02-10T11:28:19.011-06:00</updated><category term='logging'/><category term='gpg'/><category term='postgres'/><category term='back'/><category term='postgresql'/><category term='decode'/><category term='package'/><category term='news'/><category term='nohup'/><category term='bashrc'/><category term='development'/><category term='ping'/><category term='hosting'/><category term='self'/><category term='ps'/><category term='info'/><category term='psql'/><category term='query'/><category term='chrome'/><category term='linkx'/><category term='awk'/><category term='copy'/><category term='git'/><category term='extension'/><category term='celery'/><category term='file extension'/><category term='email'/><category term='unicode'/><category term='bzip2'/><category term='su'/><category term='compress'/><category term='sh'/><category term='packages'/><category term='table'/><category term='du find size filesystem space'/><category term='type'/><category term='java'/><category term='absolute'/><category term='field'/><category term='format'/><category term='django'/><category term='uncompress'/><category term='root'/><category term='introspection'/><category term='1.4'/><category term='raw'/><category term='mac'/><category term='ServerAliveInterval'/><category term='network'/><category term='ubuntu'/><category term='authenicate'/><category term='json'/><category term='svn'/><category term='subversion'/><category term='google'/><category term='space'/><category term='matplotlib'/><category term='mail'/><category term='smtp'/><category term='net'/><category term='private key'/><category term='list'/><category term='client'/><category term='decrypt'/><category term='generic'/><category term='unittest'/><category term='smb'/><category term='recursive'/><category term='option'/><category term='subprocess'/><category term='os x'/><category term='ports'/><category term='Oracle'/><category term='osx'/><category term='png'/><category term='OSS'/><category term='pgp'/><category term='encrypt'/><category term='cp'/><category term='sound'/><category term='shell'/><category term='lookup'/><category term='mismatch'/><category term='manytomany'/><category term='code'/><category term='virtualenv'/><category term='repository'/><category term='update'/><category term='current'/><category term='alias'/><category term='extensions'/><category term='init'/><category term='boot'/><category term='signed'/><category term='login'/><category term='cookies'/><category term='netbios'/><category term='sftp'/><category term='LoadModule'/><category term='manifest'/><category term='migration'/><category term='ssh'/><category term='modules'/><category term='autocomplete'/><category term='post'/><category term='thread'/><category term='ssh_config'/><category term='ie'/><category term='webfaction'/><category term='tar'/><category term='gunzip'/><category term='meta'/><category term='print'/><category term='sudo'/><category term='lxml'/><category term='sql'/><category term='unix'/><category term='too long'/><category term='samba'/><category term='djangobb'/><category term='htaccess'/><category term='macports'/><category term='prune'/><category term='timeout'/><category term='charset'/><category term='management'/><category term='queryset'/><category term='install'/><category term='openid'/><category term='public key'/><category term='beauti'/><category term='path'/><category term='south'/><category term='relative'/><category term='rsync'/><category term='encoding'/><category term='pip'/><category term='storage'/><category term='column'/><category term='settings'/><category term='pipe'/><category term='date'/><category term='grant'/><category term='insert'/><category term='join command UNIX shell sh bash linux'/><category term='localhost'/><category term='jar'/><category term='manytoone'/><category term='firefox'/><category term='test'/><category term='encryption'/><category term='queries'/><category term='sudoers'/><category term='prettyprint'/><category term='grep'/><category term='app'/><category term='scp'/><category term='popen'/><category term='vim'/><category term='eclipse'/><category term='chainloading'/><category term='onetoone'/><category term='get'/><category term='backup'/><category term='xml'/><category term='htpasswd'/><category term='line numbers'/><category term='select'/><category term='mysql'/><category term='httpd'/><category term='sequence'/><category term='models'/><category term='openssl'/><category term='alter'/><category term='manage'/><category term='sendmail'/><category term='bash'/><category term='comprehension'/><category term='compile'/><category term='user'/><category term='alternate port'/><category term='pid'/><category term='color'/><category term='html'/><category term='session'/><category term='pypi'/><category term='mod_python'/><category term='certificate'/><category term='content type'/><category term='version control'/><category term='testing'/><category term='plugins'/><category term='add user'/><category term='ls'/><category term='remove'/><category term='cert'/><category term='key gen'/><category term='setup'/><category term='url'/><category term='bunzip2'/><category term='create user'/><category term='grub'/><category term='admin'/><category term='cache'/><category term='rm'/><category term='mysql-python'/><category term='mirror'/><category term='map'/><category term='postfix'/><category term='gzip'/><category term='manager'/><category term='curl'/><category term='http'/><category term='menu.lst'/><category term='form'/><category term='safe mode'/><category term='chardet'/><category term='string'/><category term='find'/><category term='for'/><category term='commands'/><category term='delete'/><category term='python'/><category term='fieldset'/><category term='class'/><category term='wrap'/><category term='script'/><category term='rabbitmq'/><category term='port'/><category term='file'/><category term='database'/><category term='merge'/><category term='apache'/><category term='linux'/><category term='element'/><category term='guide'/><category term='ajax'/><category term='process'/><category term='etree'/><category term='patterns'/><category term='convert'/><category term='views'/><category term='sqlalchemy'/><category term='random'/><category term='chain'/><category term='reset'/><category term='complete'/><category term='asound'/><category term='configure'/><category term='name'/><category term='AuthType Basic'/><category term='instance'/><category term='config'/><category term='conversions'/><category term='trash'/><category term='source'/><category term='tcp'/><category term='ALSA'/><category term='jobs'/><category term='upload'/><category term='search'/><category term='model'/><category term='pyqrcode'/><category term='whoosh'/><category term='beautifulsoup'/><category term='password'/><title type='text'>Linux Info</title><subtitle type='html'>Information about various Linux / UNIX / OS X topics</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default?start-index=101&amp;max-results=100'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>124</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11349913.post-7934879366178494582</id><published>2012-02-09T12:06:00.000-06:00</published><updated>2012-02-09T12:06:47.191-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tar'/><category scheme='http://www.blogger.com/atom/ns#' term='bzip2'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><title type='text'>Copy File through Compressed Tar</title><content type='html'>&lt;b&gt;Copy and Compress File through an ssh connection&lt;/b&gt;&lt;br /&gt;tar jcvf - myfile.txt | ssh myhost.com "cat &amp;gt; myfile.tar.bz2"&lt;br /&gt;&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/11349913-7934879366178494582?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7934879366178494582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7934879366178494582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7934879366178494582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7934879366178494582'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2012/02/copy-file-through-compressed-tar.html' title='Copy File through Compressed Tar'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4414955595667385528</id><published>2012-02-09T12:04:00.000-06:00</published><updated>2012-02-10T11:28:19.021-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookies'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='decode'/><category scheme='http://www.blogger.com/atom/ns#' term='models'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><category scheme='http://www.blogger.com/atom/ns#' term='introspection'/><title type='text'>Django Session Introspection</title><content type='html'>&lt;br /&gt;&lt;b&gt;Get Data Stored in a Session&lt;/b&gt;&lt;br /&gt;from django.contrib.sessions import models&lt;br /&gt;s = models.Session.objects.get(session_key='05adfa345a54525cad912')&lt;br /&gt;s.get_decoded()&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/11349913-4414955595667385528?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4414955595667385528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4414955595667385528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4414955595667385528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4414955595667385528'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2012/02/django-session-introspection.html' title='Django Session Introspection'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5964872431769335116</id><published>2011-11-19T13:11:00.001-06:00</published><updated>2011-11-19T13:11:54.728-06:00</updated><title type='text'></title><content type='html'>&lt;span style="color: blue;"&gt;ImageMatik&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Convert all TIFs in a directory to JPEGs&lt;/b&gt;&lt;br /&gt;mogrify -format jpg -quality 50 *.tiff&lt;br /&gt;&lt;br /&gt;&lt;i&gt;http://linuxuser32.wordpress.com/2007/06/16/batch-image-convert-scale-thumbnail-jpegs-pdf/&lt;/i&gt;&lt;br /&gt;&lt;div&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/11349913-5964872431769335116?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5964872431769335116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5964872431769335116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5964872431769335116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5964872431769335116'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/11/imagematik-convert-all-tifs-in.html' title=''/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3724007811425726</id><published>2011-11-10T17:31:00.001-06:00</published><updated>2011-11-10T17:38:15.848-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='etree'/><category scheme='http://www.blogger.com/atom/ns#' term='lxml'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='element'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><title type='text'></title><content type='html'>&lt;br /&gt;&lt;h3 class="post-title entry-title" style="color: #993333; font: normal normal bold 130%/normal 'Lucida Grande', 'Trebuchet MS'; letter-spacing: -1px; margin-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Python: lxml insert element before and after given element&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;Based on:&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/7474972/python-lxml-append-element-after-another-element"&gt;http://stackoverflow.com/questions/7474972/python-lxml-append-element-after-another-element&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;from lxml import etree&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;xml = etree.parse('old_xml.xml')&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;count = 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;div&gt;for pp in xml.xpath('/response/items/item'):&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;prod_id = etree.Element('new_element') &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# this element will be inserted&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;prod_id.text = "%s" % count&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;nav = pp.find('name') &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# we will insert before/after this element&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;div = nav.getparent()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;pp.insert(pp.index(nav), prod_id) &lt;span class="Apple-style-span" style="color: blue;"&gt;# insert before 'name'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;pp.insert(pp.index(nav) + 1, prod_id)&lt;span class="Apple-style-span" style="color: blue;"&gt; # insert after 'name'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;count += 1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;out = open('new_xml.xml','w')&lt;/div&gt;&lt;div&gt;out.write(etree.tostring(xml, pretty_print=True))&lt;/div&gt;&lt;div&gt;out.close()&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3724007811425726?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3724007811425726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3724007811425726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3724007811425726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3724007811425726'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/11/python-lxml-insert-element-before-and.html' title=''/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7744966897245163778</id><published>2011-11-10T17:19:00.001-06:00</published><updated>2011-11-10T17:31:28.640-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chardet'/><category scheme='http://www.blogger.com/atom/ns#' term='charset'/><category scheme='http://www.blogger.com/atom/ns#' term='lxml'/><category scheme='http://www.blogger.com/atom/ns#' term='encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='beautifulsoup'/><title type='text'></title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #990000; font-family: Times, 'Times New Roman', serif; font-size: large;"&gt;Python: Detect Charset and convert to Unicode&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Converting data to Unicode via chardet&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/2686709/encoding-in-python-with-lxml-complex-solution"&gt;http://stackoverflow.com/questions/2686709/encoding-in-python-with-lxml-complex-solution&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;import chardet&lt;br /&gt;from lxml import html&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;f = open('my.xml')&lt;/div&gt;&lt;div&gt;content = f.read()&lt;/div&gt;&lt;div&gt;f.close()&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;encoding = chardet.detect(content)['encoding']&lt;br /&gt;if encoding != 'utf-8':&lt;br /&gt;&amp;nbsp; &amp;nbsp; content = content.decode(encoding, 'replace').encode('utf-8')&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Converting Data to Unicode via UnicodeDammit&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;a href="http://lxml.de/elementsoup.html"&gt;http://lxml.de/elementsoup.html&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;from BeautifulSoup import UnicodeDammit&lt;br /&gt;&lt;div&gt;&lt;br /&gt;converted = UnicodeDammit(content)&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;if not converted.unicode:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; raise UnicodeDecodeError(&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"Failed to detect encoding, tried [%s]",&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ', '.join(converted.triedEncodings)) &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # print converted.originalEncoding&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return converted.unicode&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Credit goes to Ian Bicking and others on the lxml team&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7744966897245163778?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7744966897245163778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7744966897245163778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7744966897245163778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7744966897245163778'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/11/python-detect-charset-and-convert-to.html' title=''/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6336578174626482574</id><published>2011-11-08T12:37:00.001-06:00</published><updated>2011-11-08T12:38:42.663-06:00</updated><title type='text'></title><content type='html'>&lt;br /&gt;&lt;b&gt;Using lxml xpath to get elements with a default namespace&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;div&gt;xml_string="""&lt;/div&gt;&lt;div&gt;&amp;lt;a xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;lt;b&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;r&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;Value&amp;gt;string&amp;lt;/Value&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;/r&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;r&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;Value&amp;gt;string&amp;lt;/Value&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;/r&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/b&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;e&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;string1&amp;lt;/string&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;lt;string&amp;gt;string2&amp;lt;/string&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/e&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;/a&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;"""&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;from lxml import etree&lt;/div&gt;&lt;div&gt;xml = etree.fromstring(xml_string)&lt;/div&gt;xml.xpath('/w3:a/w3:b/w3:r/w3:Value/text()', namespaces={'w3':'http://www.w3.org/1999/xhtml'})&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6336578174626482574?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6336578174626482574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6336578174626482574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6336578174626482574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6336578174626482574'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/11/using-lxml-xpath-to-get-elements-with.html' title=''/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-437918965262647322</id><published>2011-09-22T22:00:00.001-05:00</published><updated>2011-09-22T22:40:59.290-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='delete'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlalchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='select'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><title type='text'>SQLAlchemy Notes</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;Summarized From&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://www.sqlalchemy.org/docs/core/tutorial.html&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;This covers the basics of the Non-orm usage of SQLAlchemy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Define connection engine&lt;/span&gt;&lt;br /&gt;from sqlalchemy import create_engine&lt;br /&gt;engine = create_engine('sqlite:///:memory:', echo=True)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Create some database tables&amp;nbsp;&lt;/span&gt;&lt;br /&gt;from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey&lt;br /&gt;metadata = MetaData()&lt;br /&gt;users = Table('users', metadata,&lt;br /&gt;&amp;nbsp; &amp;nbsp; Column('id', Integer, primary_key=True),&lt;br /&gt;&amp;nbsp; &amp;nbsp; Column('name', String),&lt;br /&gt;&amp;nbsp; &amp;nbsp; Column('fullname', String),&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;addresses = Table('addresses', metadata,&lt;br /&gt;&amp;nbsp; Column('id', Integer, primary_key=True),&lt;br /&gt;&amp;nbsp; Column('user_id', None, ForeignKey('users.id')),&lt;br /&gt;&amp;nbsp; Column('email_address', String, nullable=False)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;metadata.create_all(engine)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Insert into the tables&lt;/span&gt;&lt;br /&gt;ins = users.insert()&lt;br /&gt;ins.values(name='jack', fullname='Jack the Pumpkin king')&lt;br /&gt;&lt;br /&gt;conn = engine.connect()&lt;br /&gt;result = conn.execute(ins)&lt;br /&gt;result.inserted_primary_key&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Multiple insert into the tables&lt;/span&gt;&lt;br /&gt;conn.execute(addresses.insert(), [&lt;br /&gt;&amp;nbsp; &amp;nbsp;{'user_id': 1, 'email_address' : 'jack@yahoo.com'},&lt;br /&gt;&amp;nbsp; &amp;nbsp;{'user_id': 1, 'email_address' : 'jack@msn.com'},&lt;br /&gt;&amp;nbsp; &amp;nbsp;{'user_id': 2, 'email_address' : 'www@www.org'},&lt;br /&gt;&amp;nbsp; &amp;nbsp;{'user_id': 2, 'email_address' : 'wendy@aol.com'},&lt;br /&gt;])&lt;br /&gt;&lt;br /&gt;result = engine.execute(users.insert(), name='fred', fullname="Fred Flintstone")&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Select from the tables&lt;/span&gt;&lt;br /&gt;from sqlalchemy.sql import select&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Select all fields in user table&lt;/span&gt;&lt;br /&gt;s = select([users])&lt;br /&gt;result = conn.execute(s)&lt;br /&gt;list(result)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Select name and fullname columns from user table&lt;/span&gt;&lt;br /&gt;s = select([users.c.name, users.c.fullname])&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Join two user and address tables&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# &amp;nbsp;Cartesian&amp;nbsp;product&amp;nbsp;&lt;/span&gt;&lt;br /&gt;list(conn.execute(select([users, addresses])))&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Join on id columns&lt;/span&gt;&lt;br /&gt;list(conn.execute(select([users, addresses], users.c.id==addresses.c.user_id)))&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# create conditions for the where clause&lt;/span&gt;&lt;br /&gt;from sqlalchemy.sql import and_, or_, not_&lt;br /&gt;print and_(users.c.name.like('j%'), users.c.id==addresses.c.user_id, )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;s = select([(users.c.fullname + "--" + addresses.c.email_address).label('title')])&lt;br /&gt;print conn.execute(s).fetchall()&lt;br /&gt;&lt;br /&gt;print users.join(addresses)&lt;br /&gt;print users.join(addresses, addresses.c.email_address.like(users.c.name + '%'))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;s = select([users.c.fullname], from_obj=[&lt;br /&gt;&amp;nbsp; &amp;nbsp;users.join(addresses, addresses.c.email_address.like(users.c.name + '%'))&lt;br /&gt;&amp;nbsp; &amp;nbsp;])&lt;br /&gt;print conn.execute(s).fetchall()&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Delete records based on a condition&lt;/span&gt;&lt;br /&gt;conn.execute(users.delete().where(users.c.name &amp;gt; 'm'))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-437918965262647322?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/437918965262647322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=437918965262647322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/437918965262647322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/437918965262647322'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/09/sqlalchemy-notes.html' title='SQLAlchemy Notes'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1584620049784116952</id><published>2011-09-01T21:53:00.000-05:00</published><updated>2011-09-01T21:53:19.661-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='post'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='client'/><title type='text'>Django: Quickly testing an authenticated ajax</title><content type='html'>&lt;br /&gt;&lt;b&gt;Make a authenticated post with the django test client and mark simulate an ajax post:&lt;/b&gt;&lt;br /&gt;from django.test import Client&lt;br /&gt;&lt;div&gt;&lt;div&gt;c = Client()&lt;/div&gt;&lt;/div&gt;&lt;div&gt;c.login(username='jjasinski', password='xxxx')&lt;/div&gt;&lt;div&gt;&lt;div&gt;print c.post('/user/posts/1/',{},HTTP_X_REQUESTED_WITH='XMLHttpRequest')&lt;/div&gt;&lt;/div&gt;&lt;div&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/11349913-1584620049784116952?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1584620049784116952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1584620049784116952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1584620049784116952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1584620049784116952'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/09/django-quickly-testing-authenticated.html' title='Django: Quickly testing an authenticated ajax'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7489971962401193404</id><published>2011-08-10T17:59:00.001-05:00</published><updated>2011-08-10T17:59:15.832-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='signed'/><category scheme='http://www.blogger.com/atom/ns#' term='self'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='certificate'/><category scheme='http://www.blogger.com/atom/ns#' term='cert'/><title type='text'>Self-signed SSL Certificate</title><content type='html'>&lt;a href="http://articles.slicehost.com/2007/12/19/ubuntu-gutsy-self-signed-ssl-certificates-and-nginx"&gt;http://articles.slicehost.com/2007/12/19/ubuntu-gutsy-self-signed-ssl-certificates-and-nginx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7489971962401193404?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7489971962401193404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7489971962401193404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7489971962401193404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7489971962401193404'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/08/self-signed-ssl-certificate.html' title='Self-signed SSL Certificate'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7481096116399085739</id><published>2011-07-01T00:29:00.000-05:00</published><updated>2011-07-01T00:29:31.930-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copy'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><category scheme='http://www.blogger.com/atom/ns#' term='cp'/><category scheme='http://www.blogger.com/atom/ns#' term='linkx'/><title type='text'>Using Rsync to copy file Structure</title><content type='html'>&lt;b&gt;Simple rsync copy on local filesystem:&lt;/b&gt;&lt;br /&gt;rsync -r -t -v source/ dest&lt;br /&gt;&lt;br /&gt;&lt;b&gt;rsync over ssh:&lt;/b&gt;&lt;br /&gt;rsync -r -t -v username@source.com:/path/to/src/ /path/to/dest&lt;br /&gt;&lt;br /&gt;&lt;b&gt;rsync copy shortcut to archive:&lt;/b&gt;&lt;br /&gt;rsync -av&amp;nbsp;username@source.com:/path/to/src/ /path/to/dest&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Common Flags:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;-a = archive copy. &amp;nbsp;Equivalent to flags -rlptgoD&lt;br /&gt;&amp;nbsp;-r = recursive copy&lt;br /&gt;&amp;nbsp;-t = save timestamp&lt;br /&gt;&amp;nbsp;-v = verbose copy&lt;br /&gt;&amp;nbsp;-vv = more verbose&lt;br /&gt;&amp;nbsp;-u = don't copy over existing files newer than source&lt;br /&gt;&amp;nbsp;-l = preserve symlinks&lt;br /&gt;&amp;nbsp;-p = preserve premissions&lt;br /&gt;&amp;nbsp;-g = preserve group&lt;br /&gt;&amp;nbsp;-o = preserve owner&lt;br /&gt;&amp;nbsp;-D = preserve devices (superuser only)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/tips/linux-use-rsync-transfer-mirror-files-directories.html"&gt;&lt;i&gt;http://www.cyberciti.biz/tips/linux-use-rsync-transfer-mirror-files-directories.html&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Rsync"&gt;http://en.wikipedia.org/wiki/Rsync&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7481096116399085739?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7481096116399085739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7481096116399085739' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7481096116399085739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7481096116399085739'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/07/using-rsync-to-copy-file-structure.html' title='Using Rsync to copy file Structure'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-368626326370188668</id><published>2011-06-02T23:52:00.012-05:00</published><updated>2011-10-02T13:37:49.620-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='info'/><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Git INFO Common Commands</title><content type='html'>&lt;b&gt;Configure Git client options: &lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# show config options&lt;/span&gt;&lt;br /&gt;git config --list  &lt;span class="Apple-style-span" style="color: blue;"&gt;# show all &lt;/span&gt;&lt;br /&gt;git config --global --list  &lt;span class="Apple-style-span" style="color: blue;"&gt;# show only global &lt;/span&gt;&lt;br /&gt;git config --local --list  &lt;span class="Apple-style-span" style="color: blue;"&gt;# show only local &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# --global option impacts options at a global level&lt;br /&gt;# --local option impacts options at a local level (.git/config)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# set username/email associated with client&lt;/span&gt;&lt;br /&gt;git config --global user.email "joe@example.com"&lt;br /&gt;git config --global user.name "Joe Jaz" &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# add color syntax highlighting&lt;/span&gt;&lt;br /&gt;git config --global color.status auto &lt;br /&gt;git config --global color.branch auto &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# set default pager and editor &lt;/span&gt;&lt;br /&gt;git config --global core.editor vim  &lt;span class="Apple-style-span" style="color: blue;"&gt;# or set the GIT_EDITOR environment variable&lt;/span&gt;&lt;br /&gt;git config --global core.pager less &lt;span class="Apple-style-span" style="color: blue;"&gt;# or set the GIT_PAGER environment variable &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; # display an option value&lt;/span&gt;&lt;br /&gt;git config &lt;i&gt;group.value&lt;/i&gt;&lt;br /&gt;git config user.name&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Start a new repository and import:&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# In the root folder to add to version control:&lt;/span&gt;&lt;br /&gt;git init&lt;br /&gt;git init --bare &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# creates a new repository (with no working copy)&lt;/span&gt;&lt;br /&gt;git add .  &lt;span class="Apple-style-span" style="color: blue;"&gt;# add everything in directory to repo&lt;/span&gt;&lt;br /&gt;git commit -m '&lt;i&gt;initial commit&lt;/i&gt;'&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Making commits:&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# commit specific files&lt;/span&gt;&lt;br /&gt;git commit file1 file2 -m '&lt;i&gt;comment&lt;/i&gt;'&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# commit all 'added' files&lt;/span&gt;&lt;br /&gt;git commit -a -m '&lt;i&gt;comment&lt;/i&gt;'&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# change a commit message&lt;/span&gt;&lt;br /&gt;git commit --amend -m '&lt;i&gt;New Message&lt;/i&gt;'&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Create new repository by cloning existing one:&lt;/b&gt;&lt;br /&gt;git clone --bare . &lt;i&gt;path_or_url_to_git_dir.git&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Setting the remote repository (to push and pull from):&lt;/b&gt;&lt;br /&gt;git remote add&amp;nbsp;&lt;i&gt;short_name&lt;/i&gt; &lt;i&gt;path_or_url_to_git_dir.git&lt;/i&gt;&lt;br /&gt;git remote add origin git://github.com/imagescape/iscape-authlog.git&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Show remote repositories available:&lt;/b&gt;&lt;br /&gt;git remote&lt;br /&gt;git remote -v &lt;span style="color: blue;"&gt;# show the url &lt;/span&gt;&lt;br /&gt;git remote show origin&amp;nbsp; &lt;span style="color: blue;"&gt;# show detail information about origin &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Remove a remote repository:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;git remove &lt;i&gt;repo_name&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rename a remote repository:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;git rename &lt;i&gt;old_repo_name new_repo_name&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Push and Pull from remote repository:&lt;/b&gt;&lt;br /&gt;git push origin  # push recent commits to remote repository called "origin"&lt;br /&gt;git pull origin # pull updates from origin&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Revert changes in working copy:&lt;/b&gt;&lt;br /&gt;git clean -n &lt;br /&gt;git clean --dry-run&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Show file differences:&lt;/b&gt; &lt;br /&gt;git diff&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;# show differences between working copy and any files staged for commit&lt;/span&gt;&lt;br /&gt;git diff --staged&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;# compares staged changes with last commit&lt;/span&gt;&lt;br /&gt;git diff --cached&amp;nbsp; &lt;span style="color: blue;"&gt;# same as above for git older than 1.6.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Show File/s History:&lt;/b&gt;&lt;br /&gt;git log filename  &lt;span class="Apple-style-span" style="color: blue;"&gt;# Show single file versions &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Show number of lines changed in file/s&lt;/span&gt;&lt;br /&gt;git log -stat  &lt;i&gt;filename&lt;/i&gt;  &lt;span class="Apple-style-span" style="color: blue;"&gt;# single file&lt;/span&gt;&lt;br /&gt;git log -stat  &lt;span class="Apple-style-span" style="color: blue;"&gt;# multiple files&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# show log summaries on one line&lt;/span&gt;&lt;br /&gt;git log --pretty=oneline  &lt;span class="Apple-style-span" style="color: blue;"&gt;# Pre-defined format&lt;/span&gt;&lt;br /&gt;git log --pretty=format:"%h - %cD (%an) %s"  &lt;span class="Apple-style-span" style="color: blue;"&gt;# custom format (see below)&lt;/span&gt;&lt;br /&gt;git log --pretty=format:"%h %s" --graph&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; Pre-Defined Pretty formats:&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; oneline&lt;br /&gt;&amp;nbsp; &amp;nbsp; short&lt;br /&gt;&amp;nbsp; &amp;nbsp; medium&lt;br /&gt;&amp;nbsp; &amp;nbsp; full&lt;br /&gt;&amp;nbsp; &amp;nbsp; fuller&lt;br /&gt;&amp;nbsp; &amp;nbsp; email &lt;br /&gt;&amp;nbsp; &amp;nbsp; raw&lt;br /&gt;&amp;nbsp; &amp;nbsp; format:string # where string is&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;b&gt;Format Strings&lt;/b&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #38761d;"&gt;%H: commit hash&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #274e13;"&gt;%h: abbreviated commit hash&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %T: tree hash&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %t: abbreviated tree hash&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %P: parent hashes&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %p: abbreviated parent hashes&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %an: author name&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %aN: author name (respecting .mailmap, see &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html"&gt;git-shortlog(1)&lt;/a&gt; or &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-blame.html"&gt;git-blame(1)&lt;/a&gt;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %ae: author email&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %aE: author email (respecting .mailmap, see &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html"&gt;git-shortlog(1)&lt;/a&gt; or &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-blame.html"&gt;git-blame(1)&lt;/a&gt;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %ad: author date (format respects --date= option)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %aD: author date, RFC2822 style&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %ar: author date, relative&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %at: author date, UNIX timestamp&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %ai: author date, ISO 8601 format&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #38761d;"&gt;%cn: committer name&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %cN: committer name (respecting .mailmap, see &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html"&gt;git-shortlog(1)&lt;/a&gt; or &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-blame.html"&gt;git-blame(1)&lt;/a&gt;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #38761d;"&gt;%ce: committer email&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %cE: committer email (respecting .mailmap, see &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html"&gt;git-shortlog(1)&lt;/a&gt; or &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-blame.html"&gt;git-blame(1)&lt;/a&gt;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #38761d;"&gt;%cd: committer date&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %cD: committer date, RFC2822 style&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %cr: committer date, relative&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %ct: committer date, UNIX timestamp&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %ci: committer date, ISO 8601 format&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %d: ref names, like the --decorate option of &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-log.html"&gt;git-log(1)&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %e: encoding&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt; %s: subject&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %f: sanitized subject line, suitable for a filename&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %b: body&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %B: raw body (unwrapped subject and body)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %N: commit notes&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %gD: reflog selector, e.g., refs/stash@{1}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %gd: shortened reflog selector, e.g., stash@{1}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %gs: reflog subject&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %Cred: switch color to red&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %Cgreen: switch color to green&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %Cblue: switch color to blue&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %Creset: reset color&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %C(…): color specification, as described in color.branch.* config option&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %m: left, right or boundary mark&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %n: newline&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %%: a raw %&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %x00: print a byte from a hex code&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %w([[,[,]]]): switch line wrapping, like the -w option of &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html"&gt;git-shortlog(1)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Show git branches available:&lt;/b&gt;&lt;br /&gt;git branch&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Show all branches including remote branches:&lt;/b&gt;&lt;br /&gt;git branch -a&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Create new branch:&lt;/b&gt;&lt;br /&gt;git branch new_branch&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Change branches:&lt;/b&gt;&lt;br /&gt;git checkout new_branch&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Delete branch:&lt;/b&gt;&lt;br /&gt;git branch -D new_branch&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Merge branch into current copy:&lt;/b&gt;&lt;br /&gt;git merge branch_to_merge_in&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Resolve a Merge:&lt;/b&gt;&lt;br /&gt;1) Edit file to resolve&lt;br /&gt;2) git add conflict_file&lt;br /&gt;3) git commit&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Undo a Merge: &amp;nbsp;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# restores state to pre-merge&lt;/span&gt;&lt;br /&gt;git reset --heard HEAD&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://jonas.nitro.dk/git/quick-reference.html"&gt;&lt;i&gt;http://jonas.nitro.dk/git/quick-reference.html&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;a href="http://www.vogella.de/articles/Git/article.html#git_stagingindex"&gt;http://www.vogella.de/articles/Git/article.html#git_stagingindex&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;a href="http://book.git-scm.com/3_basic_branching_and_merging.html"&gt;&lt;i&gt;http://book.git-scm.com/3_basic_branching_and_merging.html&lt;/i&gt;&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/11349913-368626326370188668?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/368626326370188668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=368626326370188668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/368626326370188668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/368626326370188668'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/06/git-info-common-commands.html' title='Git INFO Common Commands'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5416475663497877011</id><published>2011-05-15T16:05:00.001-05:00</published><updated>2011-05-15T16:06:26.422-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='thread'/><category scheme='http://www.blogger.com/atom/ns#' term='pipe'/><category scheme='http://www.blogger.com/atom/ns#' term='subprocess'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='popen'/><title type='text'>Python Process Info</title><content type='html'>&lt;b&gt;Pipe the output of one process into the input of another via python:&lt;/b&gt;&lt;br /&gt;import subprocess&lt;br /&gt;p1 = subprocess.Popen(['echo','joe'], shell=False,&lt;br /&gt;&amp;nbsp; &amp;nbsp; stdout=subprocess.PIPE)&lt;br /&gt;p2 = subprocess.Popen(['cat','-n'], stdin=p1.stdout,&lt;br /&gt;&amp;nbsp; &amp;nbsp; stdout=subprocess.PIPE)&lt;br /&gt;p2.stdout.read()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5416475663497877011?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5416475663497877011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5416475663497877011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5416475663497877011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5416475663497877011'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/05/python-process-info.html' title='Python Process Info'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2429515533115491219</id><published>2011-05-15T16:01:00.001-05:00</published><updated>2011-05-15T16:04:06.723-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openid'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Common Open ID Urls</title><content type='html'>Taken From&lt;i&gt;&amp;nbsp;http://stackoverflow.com/questions/1116743/where-can-i-find-a-list-of-openid-provider-urls&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Google &lt;a href="https://www.google.com/accounts/o8/id"&gt;https://www.google.com/accounts/o8/id&lt;/a&gt;&lt;br /&gt;Yahoo &lt;a href="https://me.yahoo.com/"&gt;https://me.yahoo.com&lt;/a&gt;&lt;br /&gt;Flickr &lt;a href="http://www.flickr.com/username"&gt;http://www.flickr.com/username&lt;/a&gt;&lt;br /&gt;AOL &lt;a href="http://openid.aol.com/username"&gt;http://openid.aol.com/username&lt;/a&gt;&lt;br /&gt;Blogspot &lt;a href="https://www.blogspot.com/"&gt;https://www.blogspot.com/&lt;/a&gt;&lt;br /&gt;LiveJournal &lt;a href="http://username.livejournal.com/"&gt;http://username.livejournal.com/&lt;/a&gt;&lt;br /&gt;Wordpress &lt;a href="https://username.wordpress.com/"&gt;https://username.wordpress.com/&lt;/a&gt;&lt;br /&gt;VerisignLabs &lt;a href="https://pip.verisignlabs.com/"&gt;https://pip.verisignlabs.com/&lt;/a&gt;&lt;br /&gt;MyOpenID &lt;a href="https://www.myopenid.com/"&gt;https://www.myopenid.com/&lt;/a&gt;&lt;br /&gt;MyVidoop &lt;a href="https://myvidoop.com/"&gt;https://myvidoop.com/&lt;/a&gt;&lt;br /&gt;ClaimID &lt;a href="https://claimid.com/username"&gt;https://claimid.com/username&lt;/a&gt;&lt;br /&gt;Technorati &lt;a href="https://technorati.com/people/technorati/username/"&gt;https://technorati.com/people/technorati/username/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2429515533115491219?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2429515533115491219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2429515533115491219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2429515533115491219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2429515533115491219'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/05/common-open-id-urls.html' title='Common Open ID Urls'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-407747644088150788</id><published>2011-05-03T00:17:00.000-05:00</published><updated>2011-05-03T00:17:37.365-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>SVN List Codes</title><content type='html'>&lt;b&gt;Codes Displayed when doing an "svn stat"&lt;/b&gt;&lt;br /&gt;U = Working file was updated&lt;br /&gt;G = Changes on the&amp;nbsp;repository&amp;nbsp;were automatically merged into the working copy&lt;br /&gt;M = Working Copy is modified&lt;br /&gt;C = This file conflicts with the version in the repo&lt;br /&gt;? = This file is not under version control&lt;br /&gt;! = This file is under version control but is missing or incomplete&lt;br /&gt;A = This file will be added to version control after commit&lt;br /&gt;A+ = This file will be moved after commit&lt;br /&gt;D = This file will be deleted after commit&lt;br /&gt;I = This item is being ignored (due to the svn:ignore porperty)&lt;br /&gt;L = This file is locked&lt;br /&gt;X = &amp;nbsp;Item is unversioned, but used by an externals definition&lt;br /&gt;~ = Messed up item (file when it should be dir). resolve by moving and doing "svn up"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://knaddison.com/technology/svn-status-code-cheat-sheet"&gt;http://knaddison.com/technology/svn-status-code-cheat-sheet&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-407747644088150788?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/407747644088150788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=407747644088150788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/407747644088150788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/407747644088150788'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/05/svn-list-codes.html' title='SVN List Codes'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2006825525710637634</id><published>2011-04-26T18:59:00.004-05:00</published><updated>2011-04-26T19:05:12.876-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whoosh'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Whoosh Python Search Notes</title><content type='html'>&lt;b&gt;Baisc Whoosh Search Walkthrough&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Import required&amp;nbsp;&lt;/span&gt;&lt;br /&gt;import os&lt;br /&gt;from whoosh.index import create_in&lt;br /&gt;from whoosh.fields import *&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Create a "Schema" object to store text to search&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# You can create custom search fields such as "title", "domain", "path"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# and "content".&amp;nbsp;&lt;/span&gt;&lt;br /&gt;schema = Schema(title=TEXT(stored=True), domain=ID(stored=True),&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;&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; path=ID(stored=True), content=TEXT)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Check to see if a search index directory exists; if not, create one&lt;/span&gt;&lt;br /&gt;if not os.path.exists("search_test"):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;os.mkdir("search_test")&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Create a search index in the search index directory&lt;/span&gt;&lt;br /&gt;ix = create_in("search_test", schema, indexname="testindex")&lt;br /&gt;writer = ix.writer()&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Index some documents&lt;/span&gt;&lt;br /&gt;writer.add_document(title=u"Document 1", domain=u"www.mysearch.com",&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; path=u"/mywebsite", content=u'Article')&lt;br /&gt;writer.add_document(title=u"Document 2", domain=u"www.mysearch.com",&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; path=u"/mywebsite/2/article/1", content=u'Document a')&lt;br /&gt;writer.commit()&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Running search queries&lt;/span&gt;&lt;br /&gt;from whoosh.qparser import QueryParser&lt;br /&gt;import whoosh.index as index&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Check to see if the given search index exists&lt;/span&gt;&lt;br /&gt;if index.exists_in("search_test", indexname="testindex"):&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# open the search index&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ix = index.open_dir("search_test", indexname="testindex")&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# generate a search query based on some string.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Here is creates a query looking for "Document" in the "content"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# search index field.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;query = QueryParser("content", ix.schema).parse(u'*Document*')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;with ix.searcher() as searcher:&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# do the actual search&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;results = searcher.search(query)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;results&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Running search queries&lt;/span&gt;&lt;br /&gt;from whoosh.qparser import QueryParser&lt;br /&gt;import whoosh.index as index&lt;br /&gt;if index.exists_in("search_test", indexname="testindex"):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ix = index.open_dir("search_test", indexname="testindex"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;query = QueryParser("domain", ix.schema).parse(u'www.mydomain.com')&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;with ix.searcher() as searcher:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;results = searcher.search(query)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;results&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Running search queries&lt;/span&gt;&lt;br /&gt;from whoosh.qparser import QueryParser, MultifieldParser&lt;br /&gt;import whoosh.index as index&lt;br /&gt;from whoosh.query import *&lt;br /&gt;if index.exists_in("search_test", indexname="testindex"):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ix = index.open_dir("search_test")&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;query = MultifieldParser(["domain","title","content"], schema=ix.schema).parse(u"Document OR Article")&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;with ix.searcher() as searcher:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;results = searcher.search(query)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;results&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2006825525710637634?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2006825525710637634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2006825525710637634' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2006825525710637634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2006825525710637634'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/whoosh-python-search-notes.html' title='Whoosh Python Search Notes'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8620841425701347463</id><published>2011-04-26T18:52:00.000-05:00</published><updated>2011-04-26T18:52:53.073-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alter'/><category scheme='http://www.blogger.com/atom/ns#' term='column'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Different way to alter a Postgres table</title><content type='html'>&lt;b&gt;Alter Postgres Tables via metadata&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;(Thanks Louis R.)&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;select atttypmod from pg_attribute where attrelid = 'TABLE1'::regclass and attname = 'title';&lt;br /&gt;# then&lt;br /&gt;update pg_attribute set atttypmod = 200+4 where attrelid = 'TABLE1'::regclass and attname = 'title';&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sniptools.com/databases/resize-a-column-in-a-postgresql-table-without-changing-data"&gt;http://sniptools.com/databases/resize-a-column-in-a-postgresql-table-without-changing-data&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-8620841425701347463?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8620841425701347463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8620841425701347463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8620841425701347463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8620841425701347463'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/different-way-to-alter-postgres-table.html' title='Different way to alter a Postgres table'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3758354691583478376</id><published>2011-04-21T14:58:00.000-05:00</published><updated>2011-04-21T14:58:53.816-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Quick Setup Instructions for SVN Compile and Local Install</title><content type='html'>Steps to make a custom build of SVN and place it in non-system directory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Make a place to store the new copy:&lt;/b&gt;&lt;br /&gt;mkdir -p /home/myuser/customsvn/src/&lt;br /&gt;cd /home/myuser/customsvn/src/&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Download from Apache Subversion; place in local install src directory:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;ls -la /home/myuser/customsvn/src/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;subversion-1.6.xx.tar.bz2 &lt;br /&gt;subversion-deps-1.6.xx.tar.bz2&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Untar subversion &lt;i&gt;then&lt;/i&gt;&amp;nbsp;subversion-deps:&lt;/b&gt;&lt;br /&gt;tar -jxvf&amp;nbsp;subversion-1.6.xx.tar.bz2 &lt;br /&gt;tar -jxvf&amp;nbsp;subversion-deps-1.6.xx.tar.bz2&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configure Command (Configure without Apache stuff):&lt;/b&gt;&lt;br /&gt;./configure --prefix=/home/myuser/customsvn/bin/svn/ --with-apxs=no --disable-mod-activation --with-serf=no --with-berkeley-db=no &amp;nbsp;| tee configure.jjj.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3758354691583478376?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3758354691583478376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3758354691583478376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3758354691583478376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3758354691583478376'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/quick-setup-instructions-for-svn.html' title='Quick Setup Instructions for SVN Compile and Local Install'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6936962994840847535</id><published>2011-04-19T12:09:00.006-05:00</published><updated>2011-04-20T16:35:25.763-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='1.4'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>SVN Merging For Version 1.4-</title><content type='html'>&lt;b&gt;Merging for svn 1.4- is a bit different than for newer versions. &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;This is what I have found that works for merging a trunk to a branch:&lt;/b&gt;&lt;br /&gt;&lt;s&gt;svn merge \&lt;/s&gt;&lt;br /&gt;&lt;s&gt;&amp;nbsp;&amp;nbsp;svn+ssh://svn.example.com/repo/myproject/branches/newbranch@HEAD \&lt;/s&gt;&lt;br /&gt;&lt;s&gt;&amp;nbsp;&amp;nbsp;svn+ssh://svn.example.com/repo/myproject/trunk@HEAD \&lt;/s&gt;&lt;br /&gt;&lt;s&gt;&amp;nbsp;&amp;nbsp;/sites/myproject/src/myproject-workingcopy&lt;/s&gt;&lt;br /&gt;&lt;s&gt;&lt;br /&gt;&lt;/s&gt;&lt;br /&gt;&lt;s&gt;*NOTE: seems weird that the trunk is the argument after the branch, but my trunk changes weren't being merged in when I did it the other way&lt;/s&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;It seems that with svn version pre 1.4, you must specify the version where your branch was last copied or merged from. &amp;nbsp;If your branch was created at version 234, then the following command would merge it.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;svn merge --dry-run \&lt;br /&gt;&amp;nbsp;&amp;nbsp;svn+ssh://svn.example.com/export/myproject/branches/newbranchh@234 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;svn+ssh://svn.example.com/export/myproject/trunk/@HEAD .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.svnforum.org/threads/38394-1.4-merge"&gt;&lt;i&gt;http://www.svnforum.org/threads/38394-1.4-merge&lt;/i&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6936962994840847535?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6936962994840847535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6936962994840847535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6936962994840847535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6936962994840847535'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/svn-merging-for-version-14.html' title='SVN Merging For Version 1.4-'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-818917693962223530</id><published>2011-04-15T12:03:00.002-05:00</published><updated>2011-04-15T12:05:48.618-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='content type'/><category scheme='http://www.blogger.com/atom/ns#' term='generic'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><title type='text'>Django Content Type Quick Reference</title><content type='html'>from django.contrib.contenttypes.models import ContentType&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Get the content type for a given model&lt;/span&gt;&lt;br /&gt;ct = ContentType.objects.get(app_label="myapp", model="mymodel")&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# or&lt;/span&gt;&lt;br /&gt;ct = ContentType.objects.get_for_model(MyModel)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Get the class associated with the content type&lt;/span&gt;&lt;br /&gt;model_cls = ct.model_class()&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Filter the queryset as normal&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;queryset = model_cls.objects.filter() &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Get a specific object instance given a content type&lt;/span&gt;&lt;br /&gt;ct.get_object_for_this_type(username='Guido')&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/"&gt;http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-818917693962223530?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/818917693962223530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=818917693962223530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/818917693962223530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/818917693962223530'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/django-content-type-quick-reference.html' title='Django Content Type Quick Reference'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2673653422031012249</id><published>2011-04-13T16:33:00.007-05:00</published><updated>2011-06-23T02:20:59.880-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='modules'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Cool Python Modules</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;u&gt;String Similarity&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;google-diff-match-patch&lt;/b&gt;&amp;nbsp;- The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://code.google.com/p/google-diff-match-patch/wiki/API"&gt;http://code.google.com/p/google-diff-match-patch/wiki/API&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;pylevenshtein&lt;/b&gt;&amp;nbsp;- Levenshtein (edit) distance, and edit operations, string similarity...&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://code.google.com/p/pylevenshtein/"&gt;http://code.google.com/p/pylevenshtein/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;difflib&lt;/b&gt;&amp;nbsp;- classes and functions for comparing sequences&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://docs.python.org/library/difflib.html"&gt;http://docs.python.org/library/difflib.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Database Tools&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;uuid&lt;/b&gt; - Python built-in module for creating unique ids&lt;br /&gt;&lt;a href="http://docs.python.org/library/uuid.html"&gt;http://docs.python.org/library/uuid.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;django-command-extensions: UUIDField &lt;/b&gt;- &amp;nbsp;uuid field distributed with django-comamnd-extensions.&lt;br /&gt;&lt;a href="http://code.google.com/p/django-command-extensions/"&gt;http://code.google.com/p/django-command-extensions/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;django-uuidfield &lt;/b&gt;- stand-alone Django UUIDField&amp;nbsp;implementation.&lt;br /&gt;&lt;a href="https://github.com/dcramer/django-uuidfield"&gt;https://github.com/dcramer/django-uuidfield&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;System Tools&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Imp&lt;/b&gt; - get python internals&lt;br /&gt;&lt;a href="http://docs.python.org/library/imp.html"&gt;http://docs.python.org/library/imp.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Django Tools&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AutoSlugify&lt;/b&gt; - automate slug field&lt;br /&gt;&lt;a href="http://packages.python.org/django-autoslug/"&gt;http://packages.python.org/django-autoslug/&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/11349913-2673653422031012249?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2673653422031012249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2673653422031012249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2673653422031012249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2673653422031012249'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/cool-python-modules_13.html' title='Cool Python Modules'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1544756281440814343</id><published>2011-04-13T14:53:00.001-05:00</published><updated>2011-06-23T11:56:04.680-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Postgresql Sequences</title><content type='html'>&lt;b&gt;Create a new sequence:&lt;/b&gt;&lt;br /&gt;CREATE SEQUENCE mytable_myid_seq;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Add the sequence as the incrementor for a table column:&lt;/b&gt;&lt;br /&gt;ALTER TABLE mytable&lt;br /&gt;ALTER COLUMN myid&lt;br /&gt;SET DEFAULT NEXTVAL('mytable_myid_seq');&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update existing rows in table with the sequence:&lt;/b&gt;&lt;br /&gt;UPDATE mytable&lt;br /&gt;SET myid = NEXTVAL('mytable_myid_seq');&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Display the sequence information:&lt;/b&gt; &lt;br /&gt;Select * from mytable_myid_seq;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update a sequence to be one greater than a table's id column:&lt;/b&gt;&lt;br /&gt;select setval('mytable_myid_seq', (select max(id) + 1 from mytable));&lt;br /&gt;&lt;a href="http://railspikes.com/2009/3/6/duplicate-key-violates-unique-constraint"&gt;http://railspikes.com/2009/3/6/duplicate-key-violates-unique-constraint&lt;/a&gt; (thanks Louis)&lt;br /&gt;&lt;a href="http://pointbeing.net/weblog/2008/03/mysql-versus-postgresql-adding-an-auto-increment-column-to-a-table.html"&gt;http://pointbeing.net/weblog/2008/03/mysql-versus-postgresql-adding-an-auto-increment-column-to-a-table.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1544756281440814343?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1544756281440814343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1544756281440814343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1544756281440814343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1544756281440814343'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/postgresql-sequences.html' title='Postgresql Sequences'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3458946653437034395</id><published>2011-04-01T17:07:00.000-05:00</published><updated>2011-04-01T17:07:30.209-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='current'/><title type='text'>Django News/Code At www.djangocurrent.com</title><content type='html'>I've created a more formal blog called &lt;a href="http://www.djangocurrent.com/"&gt;www.djangocurrent.com&lt;/a&gt;, focused around Django. &amp;nbsp;I'll continue to post code snippets and information on this site, but will additionally post more formal write-ups at &lt;a href="http://djangocurrent.com/"&gt;djangocurrent.com&lt;/a&gt;. &amp;nbsp;Check it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3458946653437034395?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3458946653437034395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3458946653437034395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3458946653437034395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3458946653437034395'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/04/django-newscode-at-wwwdjangocurrentcom.html' title='Django News/Code At www.djangocurrent.com'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3245502970166989608</id><published>2011-03-16T10:46:00.000-05:00</published><updated>2011-03-16T10:46:19.088-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='prettyprint'/><title type='text'>Pretty Print XML with Python</title><content type='html'>&lt;div&gt;&lt;b&gt;Pretty Print XML&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;import xml.dom.minidom&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Read XML from File&lt;/span&gt;&lt;br /&gt;&lt;div&gt;xml = xml.dom.minidom.parse(xml_filename)&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Read XML from String&lt;/span&gt;&lt;/div&gt;&lt;div&gt;xml = xml.dom.minidom.parseString(xml_string)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;xml.toprettyxml()&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/749796/pretty-printing-xml-in-python"&gt;&lt;i&gt;http://stackoverflow.com/questions/749796/pretty-printing-xml-in-python&lt;/i&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3245502970166989608?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3245502970166989608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3245502970166989608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3245502970166989608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3245502970166989608'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/03/pretty-print-xml-with-python.html' title='Pretty Print XML with Python'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3657856450874719706</id><published>2011-02-25T14:32:00.000-06:00</published><updated>2011-02-25T14:32:28.222-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='manager'/><category scheme='http://www.blogger.com/atom/ns#' term='chain'/><category scheme='http://www.blogger.com/atom/ns#' term='queryset'/><title type='text'>Django Chain QuerySet</title><content type='html'>Based off of:&lt;br /&gt;&lt;a href="http://zmsmith.com/2010/04/using-custom-django-querysets/"&gt;http://zmsmith.com/2010/04/using-custom-django-querysets/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3657856450874719706?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3657856450874719706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3657856450874719706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3657856450874719706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3657856450874719706'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/02/django-chain-queryset.html' title='Django Chain QuerySet'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-210465462212388567</id><published>2011-02-25T01:23:00.002-06:00</published><updated>2011-03-04T09:37:20.253-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='port'/><title type='text'>Find Open Ports</title><content type='html'>&lt;b&gt;Find open ports on local Linux machine:&lt;/b&gt;&lt;br /&gt;sudo netstat -lnptu&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;http://www.techrepublic.com/blog/security/list-open-ports-and-listening-services/443&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-210465462212388567?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/210465462212388567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=210465462212388567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/210465462212388567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/210465462212388567'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/02/find-open-ports.html' title='Find Open Ports'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5420464236485616550</id><published>2011-01-30T14:48:00.005-06:00</published><updated>2011-04-13T10:03:36.135-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unittest'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='views'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Django Testing Views</title><content type='html'>&lt;b&gt;Setting up the example:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;--- views.py -------------------------------------&lt;br /&gt;&lt;span style="color: blue;"&gt;# define a view for testing&lt;/span&gt;&lt;br /&gt;def index(request, template_name=''):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context = {'things':MyThing.objects.all(),}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return render_to_response(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; template_name,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context, context_instance=RequestContext(request))&lt;br /&gt;&lt;br /&gt;--- urls.py  ---------------------------------------&lt;br /&gt;&lt;span style="color: blue;"&gt;# define a url for testing &lt;/span&gt;&lt;br /&gt;urlpatterns = patterns('',&lt;br /&gt;...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; url('^$', 'core.views.index',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {'template_name': 'someindex.html'},&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name="index"),&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Testing from a Dango shell&lt;/b&gt;:&lt;br /&gt;import django&lt;br /&gt;from django.test.client import Client&lt;br /&gt;django.test.utils.setup_test_environment() &lt;span style="color: blue;"&gt;# needed to see response context&lt;/span&gt;&lt;br /&gt;client = Client()&lt;br /&gt;response = client.get('/') &lt;br /&gt;response.context[-1]['things']&lt;br /&gt;&lt;div&gt;&lt;div style="color: blue;"&gt;# we now have access to the response context and can use this&lt;/div&gt;&lt;div style="color: blue;"&gt;# test code&lt;span style="color: blue;"&gt; in a unittest tests.py file.&amp;nbsp; (not yet shown)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Testing in a test.py file:&lt;/b&gt;&lt;br /&gt;class SimpleTest(TestCase):&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;def test_view_list(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resp = self.client.get(reverse('some_named_url'))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.assertEqual(resp.status_code, 200)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.assertTrue('somevar' in resp.context[-1])&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="color: blue;"&gt;&lt;i style="color: black;"&gt;http://ericholscher.com/blog/2008/nov/11/practical-examples-test-django/ &lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5420464236485616550?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5420464236485616550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5420464236485616550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5420464236485616550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5420464236485616550'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/01/django-testing-views.html' title='Django Testing Views'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4976050219844274442</id><published>2011-01-06T23:02:00.006-06:00</published><updated>2011-06-11T12:21:45.726-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packages'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><title type='text'>Favorite Plugins</title><content type='html'>&lt;b&gt;Firefox Plugins for Web Development&lt;/b&gt;&lt;br /&gt;- ColorZilla   # color picker &lt;br /&gt;- Firebug  # CSS / HTML / JS debugger&lt;br /&gt;- Firecookie # cookie info for firebug&lt;br /&gt;- JSONView  # Pretty JSON viewer&lt;br /&gt;- RESTClient   # GET and POST to restful interfaces&lt;br /&gt;- Selenium IDE  # Create tests you can replay in the browser &lt;br /&gt;- Tamper Data # Allow one to tamper with headers and POST vars the client sends&lt;br /&gt;- View Source Chart  # Pretty HTML viewer&lt;br /&gt;- Web Developer  # Web developer tools &lt;br /&gt;- GMarks # google bookmars sync &lt;br /&gt;- LIVE HTTP headers # view http headers&lt;br /&gt;- SQLite Manager # manage SQLite db files&lt;br /&gt;- YSlow # Yahoo performance tool&lt;br /&gt;- SearchStatus # find website rankings &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Thunderbird Plugins for Google Sync&lt;/b&gt;&lt;br /&gt;- Lightening # Calendar plugin&lt;br /&gt;- google_contacts # sync google contacts&lt;br /&gt;- CalDev sync google calendar # http://www.google.com/support/calendar/bin/answer.py?hl=en&amp;amp;answer=99358&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Eclipse Plugins&lt;/b&gt;&lt;br /&gt;- Pydev # python web development&lt;br /&gt;- Subclipse # subversion for eclipse&lt;br /&gt;- Egit # git plugin for eclipse&lt;br /&gt;- m2eclipse # maven plugin for Java package management&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4976050219844274442?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4976050219844274442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4976050219844274442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4976050219844274442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4976050219844274442'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/01/favorite-plugins.html' title='Favorite Plugins'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-537753140350828701</id><published>2011-01-05T10:45:00.012-06:00</published><updated>2011-01-13T00:57:07.952-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='type'/><category scheme='http://www.blogger.com/atom/ns#' term='conversions'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>Python Date Operations</title><content type='html'>&lt;b&gt;Get current time:&lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; import datetime&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; datetime.date.today()&lt;br /&gt;datetime.date(2011, 1, 12)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; datetime.datetime.now()&lt;br /&gt;datetime.datetime(2011, 1, 12, 20, 36, 21, 430985&lt;b&gt;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Adding time and timedelta:&lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; datetime.timedelta(hours=7) + datetime.datetime(2011,1,1)&lt;br /&gt;datetime.datetime(2011, 1, 1, 7, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; datetime.timedelta(days=50) + datetime.date(2011,1,1)&lt;br /&gt;datetime.date(2011, 2, 20)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Subtracting dates:&lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; datetime.date(2011,1,2) - datetime.date(2011,1,1)&lt;br /&gt;datetime.timedelta(1)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Convert date and time into datetime:&lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; import datetime&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;d = datetime.date(2010,01,05)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;t = datetime.time(10,25)&lt;br /&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt;datetime.datetime.combine(d,t)&lt;/div&gt;&lt;div&gt;&lt;div&gt;datetime.datetime(2010, 1, 5, 10, 25)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Convert String to datetime:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; datetime.datetime.strptime("2011-01-05","%Y-%m-%d")&lt;/div&gt;&lt;div&gt;datetime.datetime(2011, 1, 5, 0, 0)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Convert datetime to&amp;nbsp;individual components:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; dt = datetime.datetime(2011,01,05,12,00)&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; (dt.year, dt.month, dt.day, dt.hour, dt.minute)&lt;/div&gt;&lt;div&gt;(2011, 1, 5, 12, 0)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Convert datetime to date:&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; dt = datetime.datetime(2011,01,05,12,00)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;gt;&amp;gt;&amp;gt; dt.date()&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;datetime.date(2011, 1, 5)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;b&gt;Add one day to a date:&lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; dt = datetime.datetime(2011,01,05,12,00)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; delta = datetime.timedelta(days=1)&lt;br /&gt;&lt;div&gt;&lt;div&gt;&amp;gt;&amp;gt;&amp;gt; dt + delta&lt;/div&gt;&lt;div&gt;datetime.datetime(2011, 1, 6, 12, 0)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Number of days in a month:&lt;/b&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; import calendar &lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; calendar.monthrange(2011,1)&lt;br /&gt;(5, 31)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;more to come...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;a href="http://stackoverflow.com/questions/1937622/convert-date-to-datetime-in-python"&gt;http://stackoverflow.com/questions/1937622/convert-date-to-datetime-in-python&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch32s03.html"&gt;&lt;i&gt;http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch32s03.html&lt;/i&gt;&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/11349913-537753140350828701?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/537753140350828701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=537753140350828701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/537753140350828701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/537753140350828701'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2011/01/python-date-operations.html' title='Python Date Operations'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1446354249963080079</id><published>2010-12-06T18:33:00.003-06:00</published><updated>2011-03-29T16:30:41.777-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='print'/><title type='text'>Pretty Print JSON with python</title><content type='html'>&lt;b&gt;Pretty Print JSON&lt;/b&gt;&lt;br /&gt;echo '{"foo": "lorem", "bar": "ipsum"}' | python -mjson.tool&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dump Django data as pretty JSON&lt;/b&gt;&lt;br /&gt;./manage.py dumpdata mymodule | python -mjson.tool&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Prety Print JSON from Python Shell&lt;/b&gt;&lt;br /&gt;import json&lt;br /&gt;json_data = [1,2,3,{'a','b',c'}]&lt;br /&gt;json.dumps(json_data, sort_keys=True, indent=4)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;a href="http://stackoverflow.com/questions/352098/how-to-pretty-print-json-script"&gt;http://stackoverflow.com/questions/352098/how-to-pretty-print-json-script&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;a href="http://docs.python.org/library/json.html"&gt;http://docs.python.org/library/json.html&lt;/a&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1446354249963080079?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1446354249963080079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1446354249963080079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1446354249963080079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1446354249963080079'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/12/pretty-print-json-with-python.html' title='Pretty Print JSON with python'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3258579957124458673</id><published>2010-11-27T02:04:00.006-06:00</published><updated>2010-11-27T02:24:58.861-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='storage'/><category scheme='http://www.blogger.com/atom/ns#' term='upload'/><category scheme='http://www.blogger.com/atom/ns#' term='field'/><title type='text'>Django: Random Image/File Field name</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;By default, Django image/file fields place uploaded files in the MEDIA_ROOT directory, under a subdirectory given by the "upload_to" model field parameter. &amp;nbsp;However, the name of uploaded file is the same name as the original filename uploaded by the client. &amp;nbsp;The filename can be changed by creating a custom storage manager.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;---- myapp/storage.py&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;import&lt;/span&gt; os, itertools, random, string&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;from&lt;/span&gt; django.core.files.storage &lt;span class="Apple-style-span" style="color: blue;"&gt;import&lt;/span&gt; FileSystemStorage&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;def&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #b45f06;"&gt;rand_key&lt;/span&gt;(size):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return "".join([random.choice(string.letters + string.digits)&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;for i in range(size)])&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;class&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #b45f06;"&gt;RandomFileSystemStorage&lt;/span&gt;(FileSystemStorage):&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: purple;"&gt;def&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #b45f06;"&gt;get_valid_name&lt;/span&gt;(self, name):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;file_root, file_ext = os.path.splitext(name)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return "&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;%s%s&lt;/span&gt;" % (rand_key(32), file_ext)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: purple;"&gt;def&lt;/span&gt; &lt;span class="Apple-style-span" style="color: #b45f06;"&gt;get_available_name&lt;/span&gt;(self, name):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dir_name, file_name = os.path.split(name)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;file_root, file_ext = os.path.splitext(file_name)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;count = itertools.count(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;while self.exists(name):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name = os.path.join(dir_name, "&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;%s_%s%&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #990000;"&gt;s&lt;/span&gt;" % (&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; rand_key(32),&amp;nbsp;&amp;nbsp;count.next(), file_ext))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return name&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;---- myapp/models.py&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;from&lt;/span&gt; django.db &lt;span class="Apple-style-span" style="color: blue;"&gt;import&lt;/span&gt; models&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;from&lt;/span&gt; myapp.storage &lt;span class="Apple-style-span" style="color: blue;"&gt;import&lt;/span&gt; RandomFileSystemStorage&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;class&lt;/span&gt; &lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #b45f06;"&gt;Photo&lt;/span&gt;&lt;/span&gt;(models.Model):&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;image = models.ImageField(upload_to='&lt;span class="Apple-style-span" style="color: #cc0000;"&gt;media&lt;/span&gt;',&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;storage=RandomFileSystemStorage())&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3258579957124458673?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3258579957124458673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3258579957124458673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3258579957124458673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3258579957124458673'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/11/django-random-imagefile-field-name.html' title='Django: Random Image/File Field name'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5401420732949182809</id><published>2010-11-16T22:43:00.013-06:00</published><updated>2010-11-17T01:09:19.007-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rabbitmq'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='celery'/><title type='text'>Setup Django RabbitMQ and Celery</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;Rabbit Message Queue is a separate server that remotely executes tasks given to it.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Celery is a Python client program that sends tasks to the RabbitMQ. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Django-celery is a Django wrapper for Celery that makes it&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;work with Django more nicely. &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Tasks are executed in Django&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;view code or wherever. &amp;nbsp;The tasks can be&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;defined in the Django&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;app,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;are sent to a Celery client daemon executed by ./manage.py and&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Celery serializes the task and sends it to RabbitMQ for processing.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;RabbitMQ notifies Celery when it is done with each task.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;1) Install deps&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;UBUNTU 10.04 NOTE&lt;/span&gt;&lt;br /&gt;sudo aptitude install python-virtualenv &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;#(recommended but not required)&lt;/span&gt;&lt;br /&gt;sudo aptitude install rabbitmq-server&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;2) Create rabbitmq user and vhost&lt;/span&gt;&lt;br /&gt;sudo rabbitmqctl add_user my_rabbit_user mypasswd&lt;br /&gt;sudo rabbitmqctl add_vhost /my_vhost&lt;br /&gt;sudo rabbitmqctl set_permissions -p /my_vhost my_rabbit_user "" ".*" ".*"&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;3) Setup python environment&lt;/span&gt;&lt;br /&gt;virtualenv --no-site-packages testrabbitmq &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;#(create a virtualenv, not required)&lt;/span&gt;&lt;br /&gt;cd testrabbitmq&lt;br /&gt;. ./bin/activate &lt;span class="Apple-style-span" style="color: blue;"&gt;# (activate virtualenv, not required)&lt;/span&gt;&lt;br /&gt;pip install django&lt;br /&gt;pip install celery&lt;br /&gt;pip install django-celery&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;4) Setup Django project&lt;/span&gt;&lt;br /&gt;django-admin.py startproject testc &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# create a test project&lt;/span&gt;&lt;br /&gt;cd testc&lt;br /&gt;python ./manage.py startapp cel &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# create a test app&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;5) Create a test model&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Edit cel/models.py:&lt;/span&gt;&lt;br /&gt;from django.db import models&lt;br /&gt;class MyModel(models.Model):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;field1 = models.CharField(max_length=12)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;field2 = models.CharField(max_length=12)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;6) Create some test tasks:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Edit cel/tasks.py&lt;/span&gt;&lt;br /&gt;from celery.decorators import task&lt;br /&gt;@task&lt;br /&gt;def add(x, y)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return x + y&lt;br /&gt;&lt;br /&gt;from cel import models&lt;br /&gt;@task&lt;br /&gt;def addmodel(x, y):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record = models.MyModel.objects.create(field1=x, field2=y)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record.save()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return record&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;from cel import models&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;@task(ignore_result=True) &lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;# Celery will ignore results sent back to it&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;def addmodel2(x, y):&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record = models.MyModel.objects.create(field1=x, field2=y)&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record.save()&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return record&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;7) configure django settings&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Edit settings.py&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# set django-celery autoloader&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;import djcelery&lt;br /&gt;djcelery.setup_loader()&lt;br /&gt;&lt;div style="color: blue;"&gt;...&lt;/div&gt;&lt;div style="color: blue;"&gt;# Set database settings&lt;/div&gt;&lt;div style="color: blue;"&gt;...&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# set information to connect to rabbitmq (broker)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;BROKER_HOST = "127.0.0.1"&lt;br /&gt;BROKER_PORT = 5672&lt;br /&gt;BROKER_VHOST = "/my_vhost"&lt;br /&gt;BROKER_USER = "my_rabbit_user"&lt;br /&gt;BROKER_PASSWORD = "1234"&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# add to installed apps&lt;/span&gt;&lt;br /&gt;INSTALLED_APPS = (&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;'djcelery', &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# django-celery&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;'cel',&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;8) Syncdb&lt;/span&gt;&lt;br /&gt;python ./manage syncdb&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;9) Restart the rabbitmq server (optional)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;UBUNTU 10.04 NOTE - Ubuntu starts the rabbitmq&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;server by default&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;and installs an init script&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;(/etc/init.d/rabbitmq-server start|stop). &amp;nbsp;For testing,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;let's stop the server and restart manually run it in the&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;foreground to see more output.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;sudo /etc/init.d/rabbitmq-server stop&lt;br /&gt;sudo rabbitmq-server start&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# will display lots of output and say broker is running. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# The terminal will wait.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;10) Start the celery client process&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;In another terminal&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;(if using virtualenv, be sure to activate it)&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;in the testrabbitmq Django project,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;execute the following:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;python ./manage.py celeryd -l info&lt;br /&gt;&lt;div style="color: blue;"&gt;# this will hang the terminal and set the Celery (the message client) waiting.&amp;nbsp;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;11) Send a message&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;In another terminal (if using virtualenv, be sure to activate it),&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;in the testrabbitmq Django project,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;execute the following:&lt;/span&gt;&lt;br /&gt;python ./manage.py shell&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; from cel import tasks&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result = tasks.add.delay(1, 2)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.ready() &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# waits until task is done&lt;/span&gt;&lt;br /&gt;True&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.state&lt;br /&gt;u'SUCCESS'&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.successful()&lt;br /&gt;True&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result = tasks.add.delay(1 + 2&lt;span class="Apple-style-span" style="color: blue;"&gt;) # will cause an error&lt;/span&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.successful()&lt;br /&gt;False&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result = tasks.addmodel.delay('a','b')&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.successful()&lt;br /&gt;True&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; for i in range(0,1000): &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# stresstest&lt;/span&gt;&lt;br /&gt;.... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;result = tasks.addmodel.delay('a','b')&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# alternate syntax (more flexible - can pass args)&lt;/span&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result = tasks.addmodel.apply_asyc(args=['c','d'])&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.successful()&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# execute at a given time&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;gt;&amp;gt;&amp;gt; from datetime import datetime, timedelta&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;gt;&amp;gt;&amp;gt; result = tasks.addmodel.apply_asyc(args=['c','d'],&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; eta=datetime.now() + timedelta(minutes=1))&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;gt;&amp;gt;&amp;gt; result.successful()&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# execute after a given number of seconds&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;gt;&amp;gt;&amp;gt; result = tasks.addmodel.apply_asyc(args=['c','d'],&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&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; countdown=3)&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;gt;&amp;gt;&amp;gt; result.successful()&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# alternate syntax &amp;nbsp;(can queue functions you don't own)&lt;/span&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; from celery.execute import send_task&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; tasks.addmodel.name&lt;br /&gt;'cel.tasks.addmodel'&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result = send_task("cel.tasks.addmodel", args=['e', 'f'])&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; result.get()&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; from djcelery.models import TaskMeta&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; TaskMeta.objects.count() &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# this table contains all results meta info&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# for tasks not defined with&amp;nbsp;ignore_result=True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;APPENDIX - rabbitmq commands&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sudo rabbitmqctl stop &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# stop the rabbitmq&lt;/span&gt;&lt;br /&gt;sudo rabbitmqctl list_users &lt;span class="Apple-style-span" style="color: blue;"&gt;# list the available users&lt;/span&gt;&lt;br /&gt;sudo rabbitmqctl list_vhosts &lt;span class="Apple-style-span" style="color: blue;"&gt;# list the available vhosts&lt;/span&gt;&lt;br /&gt;sudo rabbitmqctl list_queues&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Listing queues ...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;celery 544 &amp;nbsp; # by default, lists the queues in the server&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: blue;"&gt;# and how many messages in them&lt;/span&gt;&lt;br /&gt;sudo rabbitmqctl list_queues [options]&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;common list_queues options&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name = name of queue&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; durable = queue survives server restarts&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pid = erlang process id &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; messages_ready = ready to be delivered to clients&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; messages = queue depth&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; memory = bytes of mem consumed by erlang process&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# NOTES, for any changes to the code, be sure to restart the celery client (./manage.py celeryd)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;i&gt;http://www.turnkeylinux.org/blog/django-celery-rabbitmq&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;i&gt;http://ask.github.com/celery/userguide/executing.html&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5401420732949182809?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5401420732949182809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5401420732949182809' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5401420732949182809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5401420732949182809'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/11/setup-django-rabbitmq-and-celery.html' title='Setup Django RabbitMQ and Celery'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5800156955465155275</id><published>2010-11-05T11:39:00.005-05:00</published><updated>2010-11-05T12:06:43.019-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='back'/><category scheme='http://www.blogger.com/atom/ns#' term='form'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Tell Browser not to cache forms on back</title><content type='html'>&lt;b&gt;This works in IE and Firefox but not Chrome or Opera&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;meta http-equiv="cache-control" content="no-cache"&amp;gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;!-- tells browser not to cache --&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;meta http-equiv="cache-control" content="no-store"&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="expires" content="0"&amp;gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;!-- says that the cache expires 'now' --&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;meta http-equiv="pragma" content="no-cache"&amp;gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;!-- says not to use cached stuff, if there is any --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5800156955465155275?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5800156955465155275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5800156955465155275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5800156955465155275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5800156955465155275'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/11/tell-browser-not-to-cache-forms-on-back.html' title='Tell Browser not to cache forms on back'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6448201186691511029</id><published>2010-10-19T20:21:00.012-05:00</published><updated>2011-03-04T11:59:00.281-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='models'/><category scheme='http://www.blogger.com/atom/ns#' term='table'/><category scheme='http://www.blogger.com/atom/ns#' term='introspection'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Django List Installed Tables and Models</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Get Database connection&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;# Django 1.2&lt;/b&gt;&lt;br /&gt;from django.db import connections&lt;br /&gt;&lt;div&gt;&lt;div&gt;connection = connections['default']&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;&lt;b&gt;# Django 1.1.1&amp;lt;=&lt;/b&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;from django.db import connection&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Get Database tables&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;tables = connection.introspection.table_names()&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Get Database models&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div style="margin: 0px;"&gt;modelclasses = connection.introspection.installed_models(tables)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# Get Django model name and app name&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;for model in list(modelclasses):&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;print model._meta.app_label,&amp;nbsp;model._meta.module_name&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# A better way to get Django models&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;from django.db.models.loading import get_models, get_app&lt;br /&gt;get_app('app_label') &lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;# returns an app class given a label&lt;/span&gt;&lt;br /&gt;get_models() &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# all models&amp;nbsp;&lt;/span&gt;&lt;br /&gt;get_models(application) &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;# models belonging to app class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;# Get a model from a string&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;from django.db import models&lt;br /&gt;models.get_model(*"myapp.mymodel".split('.')) &lt;span class="Apple-style-span" style="color: blue;"&gt;# returns model class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;# Get all Python modules&lt;/b&gt;&lt;/div&gt;import sys&lt;br /&gt;sys.modules &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;a href="http://www.slideshare.net/ubernostrum/django-in-depth?src=related_normal&amp;amp;rel=3017822"&gt;http://www.slideshare.net/ubernostrum/django-in-depth?src=related_normal&amp;amp;rel=3017822&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6448201186691511029?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6448201186691511029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6448201186691511029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6448201186691511029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6448201186691511029'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/10/django-12-list-installed-tables-and.html' title='Django List Installed Tables and Models'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3397017999969756452</id><published>2010-10-06T20:46:00.000-05:00</published><updated>2010-10-06T20:46:00.367-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pip'/><category scheme='http://www.blogger.com/atom/ns#' term='pypi'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mirror'/><title type='text'>Use alternate Mirror for Python pypi installs (when pypi goes down)</title><content type='html'>&lt;b&gt;Specify alternate mirror from the command line:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Consolas, Inconsolata, Monoaco, monospace; font-size: 14px; line-height: 20px; white-space: pre;"&gt;pip install -i http://d.pypi.python.org/simple $PACKAGE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Specify alternate mirror in ~/.pip/pip.conf:&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Consolas, Inconsolata, Monoaco, monospace; font-size: 14px; line-height: 20px; white-space: pre;"&gt;[global]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Consolas, Inconsolata, Monoaco, monospace; font-size: 14px; line-height: 20px; white-space: pre;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Consolas, Inconsolata, Monoaco, monospace; font-size: 14px; line-height: 20px; white-space: pre;"&gt;index-url = http://d.pypi.python.org/simple&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://jacobian.org/writing/when-pypi-goes-down/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3397017999969756452?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3397017999969756452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3397017999969756452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3397017999969756452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3397017999969756452'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/10/use-alternate-mirror-for-python-pypi.html' title='Use alternate Mirror for Python pypi installs (when pypi goes down)'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5873315309994627843</id><published>2010-10-04T14:15:00.000-05:00</published><updated>2010-10-04T14:15:16.648-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Query Django Admin Log</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;Show Django Admin Log entries&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;select u.username, u.first_name, u.last_name, l.action_time, c.name, c.app_label,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; l.object_id as "Object Modified", l.object_repr, l.action_flag, l.change_message&lt;br /&gt;from (auth_user u inner join django_admin_log l on u.id = l.user_id )&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;inner join django_content_type c on c.id = l.content_type_id&lt;br /&gt;where l.object_id = '9' &lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;/* filter by object id if desired */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; and l.action_time &amp;gt; to_date('2010-10-04 01:00','YYYY-MM-DD HH:MI') &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;/* filter by date range */&lt;/span&gt;&lt;br /&gt;order by l.action_time;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5873315309994627843?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5873315309994627843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5873315309994627843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5873315309994627843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5873315309994627843'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/10/query-django-admin-log.html' title='Query Django Admin Log'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8739242333427482996</id><published>2010-08-30T09:21:00.000-05:00</published><updated>2010-08-30T09:21:51.607-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='bashrc'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Change Default Linux Shell</title><content type='html'>&lt;div style="color: blue;"&gt;Needs sudo privileges: to change the default shell:&lt;/div&gt;chsh&lt;br /&gt;&lt;br /&gt;&lt;i&gt;http://forums.devshed.com/unix-help-35/how-to-change-default-shell-52749.html&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-8739242333427482996?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8739242333427482996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8739242333427482996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8739242333427482996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8739242333427482996'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/change-default-linux-shell.html' title='Change Default Linux Shell'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5559638735457798488</id><published>2010-08-27T11:33:00.000-05:00</published><updated>2010-08-27T11:33:22.549-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smtp'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='hosting'/><title type='text'>Host a Test email server for Django header debugging</title><content type='html'>Set the following in settings.py&lt;br /&gt;&lt;tt class="xref std std-setting docutils literal"&gt;&lt;span class="pre"&gt;EMAIL_HOST&lt;/span&gt;&lt;/tt&gt;&lt;tt class="xref std std-setting docutils literal"&gt;&lt;span class="pre"&gt;&amp;nbsp;&lt;/span&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt class="xref std std-setting docutils literal"&gt;&lt;span class="pre"&gt;EMAIL_PORT&lt;/span&gt;&lt;/tt&gt; &lt;br /&gt;&lt;br /&gt;Run the following to host the test webserver&lt;br /&gt;&lt;pre&gt;python -m smtpd -n -c DebuggingServer localhost:1025&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;http://docs.djangoproject.com/en/dev/topics/email/ &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5559638735457798488?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5559638735457798488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5559638735457798488' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5559638735457798488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5559638735457798488'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/host-test-email-server-for-django.html' title='Host a Test email server for Django header debugging'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6138854717176744541</id><published>2010-08-26T21:17:00.000-05:00</published><updated>2010-08-26T21:17:54.046-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='manage'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='init'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='commands'/><title type='text'>Django Management Commands</title><content type='html'>&lt;b&gt;Django syncdb without prompts&lt;/b&gt;&lt;br /&gt;python manage.py syncdb --noinput&lt;br /&gt;&lt;br /&gt;http://docs.djangoproject.com/en/dev/ref/django-admin/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6138854717176744541?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6138854717176744541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6138854717176744541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6138854717176744541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6138854717176744541'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/django-management-commands.html' title='Django Management Commands'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5024098458814891206</id><published>2010-08-21T11:33:00.001-05:00</published><updated>2010-08-21T11:33:08.995-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='complete'/><category scheme='http://www.blogger.com/atom/ns#' term='autocomplete'/><title type='text'>Bash customize autocomplete</title><content type='html'>http://www.linuxjournal.com/content/more-using-bash-complete-command&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5024098458814891206?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5024098458814891206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5024098458814891206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5024098458814891206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5024098458814891206'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/bash-customize-autocomplete.html' title='Bash customize autocomplete'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4843391444963477559</id><published>2010-08-21T11:08:00.002-05:00</published><updated>2010-08-23T13:38:10.318-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='admin'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='fieldset'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Dynamic Fieldsets in Django Admin</title><content type='html'>&lt;span style="color: blue;"&gt;Problem: the fieldsets option for the admin interface (classes defined in admin.py) requires that you explicitly list every single field in the model in the fieldset list that you pass to it.&amp;nbsp; This gets tedious if you add a field to a model, as you also have to add it to this admin.py.&amp;nbsp; Not very DRY.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Solution:&lt;/span&gt; &lt;br /&gt;&lt;b&gt;In models.py&lt;/b&gt; &lt;br /&gt;from django.db import models&lt;br /&gt;class My(models.Model):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; f = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = models.CharField(max_length=10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h = models.CharField(max_length=10)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;In admin.py&lt;/b&gt; &lt;br /&gt;from django.contrib import admin&lt;br /&gt;from django.forms.models import fields_for_model&lt;br /&gt;from f import models&lt;br /&gt;class MyAdmin(admin.ModelAdmin):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def __init__(self, *args, **kwargs):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(MyAdmin, self).__init__(*args, **kwargs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all_fields = set(fields_for_model(models.My))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldset1_fields = ('e', 'f',)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldset2_fields = ('g', 'h',)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fieldset_fields = set(fieldset1_fields) | set(fieldset2_fields)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rest_fields = list(all_fields - fieldset_fields)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.fieldsets = (&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; (None, {&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; 'fields': rest_fields&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('Fieldset 1', {&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; 'classes': ('collapse',),&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; 'fields': fieldset1_fields&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('Fieldset 2', {&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; 'classes': ('collapse',),&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; 'fields': fieldset2_fields&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; models = models.My&lt;br /&gt;admin.site.register(models.My, MyAdmin)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks for the help lorochka85&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4843391444963477559?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4843391444963477559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4843391444963477559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4843391444963477559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4843391444963477559'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/dynamic-fieldsets-in-django-admin.html' title='Dynamic Fieldsets in Django Admin'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7539565961598837982</id><published>2010-08-19T21:01:00.005-05:00</published><updated>2010-08-21T11:10:48.197-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='beauti'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Drill through a Login with Python</title><content type='html'>import urllib2&lt;br /&gt;import urllib&lt;br /&gt;import BeautifulSoup&lt;br /&gt;&lt;br /&gt;# build opener with HTTPCookieProcessor&lt;br /&gt;o = urllib2.build_opener( urllib2.HTTPCookieProcessor() )&lt;br /&gt;urllib2.install_opener( o )&lt;br /&gt;&lt;br /&gt;# assuming the site expects 'user' and 'pass' as query params&lt;br /&gt;p = urllib.urlencode( { 'username': 'myusername', 'password': 'mypassword' } )&lt;br /&gt;&lt;br /&gt;# perform login with params&lt;br /&gt;f = o.open( 'https://www.mysite.com/login',  p )&lt;br /&gt;data = f.read()&lt;br /&gt;f.close()&lt;br /&gt;&lt;br /&gt;# second request should automatically pass back any&lt;br /&gt;# cookies received during login... thanks to the HTTPCookieProcessor&lt;br /&gt;f = o.open( 'http://www.mysite.com/home/' )&lt;br /&gt;data = f.read()&lt;br /&gt;f.close()&lt;br /&gt;&lt;br /&gt;soup = BeautifulSoup.BeautifulSoup(data)&lt;br /&gt;&lt;br /&gt;http://www.nomadjourney.com/2009/03/automatic-site-login-using-python-urllib2/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7539565961598837982?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7539565961598837982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7539565961598837982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7539565961598837982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7539565961598837982'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/drill-through-login-with-python.html' title='Drill through a Login with Python'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3730683586753940079</id><published>2010-08-16T14:59:00.000-05:00</published><updated>2010-08-16T15:00:27.852-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='format'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><title type='text'>Python String format</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Python Format dates into strings &lt;/span&gt;&lt;br /&gt;from datetime import date&lt;br /&gt;d1 = date(2010,01,23)&lt;br /&gt;d2 = date(2010,01,23)&lt;br /&gt;"%s - %s" % (d1.strftime("%m / %d / %Y"), d1.strftime("%m / %d / %Y"))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3730683586753940079?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3730683586753940079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3730683586753940079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3730683586753940079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3730683586753940079'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/python-string-format.html' title='Python String format'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1971770389566364508</id><published>2010-08-12T17:35:00.005-05:00</published><updated>2011-08-03T10:24:27.494-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='convert'/><title type='text'>Python Unicode Convert</title><content type='html'>&lt;b&gt;Convert weird unicode string characters to string:&lt;/b&gt;&lt;br /&gt;import unicodedata&lt;br /&gt;unicodedata.normalize('NFKD',unicode_string).encode('ascii','ignore')&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Django module for helping convert things to ascii strings:&lt;/b&gt;&lt;br /&gt;from django.utils.encoding import smart_str&lt;br /&gt;smart_str('weird string goes here')&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Another hack for removing unicode errors:&lt;/b&gt;&lt;br /&gt;unicode('my weird string', errors='ignore')&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.python.org/howto/unicode.html#the-unicode-type"&gt;http://docs.python.org/howto/unicode.html#the-unicode-type&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1971770389566364508?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1971770389566364508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1971770389566364508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1971770389566364508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1971770389566364508'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/08/python-unicode-convert.html' title='Python Unicode Convert'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6847834089212404053</id><published>2010-07-15T18:55:00.007-05:00</published><updated>2010-07-15T20:46:59.491-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matplotlib'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>matplotlib basics</title><content type='html'>&lt;pre&gt;&lt;span class="k"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Simple Plot&lt;/span&gt;&lt;br /&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;4&lt;/span&gt;&lt;span class="p"&gt;])&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# plot a set of points (1,1) and (3,2)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;plt.plot([1,3],[1,2],'ro')&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# Or plot as a bunch of connect line segments&lt;/span&gt;&lt;br /&gt;plt.plot([2,4,6],[2,4,6])&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# set a label for the x and y axis&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ylabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'some numbers'&lt;/span&gt;&lt;span class="p"&gt;)&lt;br /&gt;plt.xlabel('joe rocks')&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# set the axis [xmin, xmax, ymin, ymax ]&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;plt.axis([0,6,0,5])&lt;/span&gt;&lt;br /&gt;# 'show' the graph&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Plot a function&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;As far as I can tell matplotlib cannot plot a continuous function.  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Instead, create a range of distinct numbers:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;import numpy as np&lt;br /&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;plt&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# create a range of numbers from 0 to 5. increment by .1&lt;/span&gt;&lt;br /&gt;x = np.arange(0.,5.,.1)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# apply a function to that &lt;/span&gt;&lt;br /&gt;y = np.sin(x)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# plot with extra display params&lt;/span&gt;&lt;br /&gt;plt.plot(x,y,linewidth=2.0, label='joeplot', color='blue')&lt;br /&gt;&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;r'$\alpha_i &gt; \beta_i$'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fontsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="nn"&gt;plt.axis([0,5,-1,1])&lt;br /&gt;plt.grid(True)&lt;br /&gt;plt.show()&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Make a cool heatmap&lt;br /&gt;&lt;/span&gt;import numpy as np&lt;br /&gt;import matplotlib.pyplot as plt&lt;br /&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="pln"&gt;#x &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; y &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; np&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;linspace&lt;/span&gt;&lt;span class="pun"&gt;(-&lt;/span&gt;&lt;span class="lit"&gt;5&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;5&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;12&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;span class="nn"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# create a grid of 12 X coordinates and 12 Y coordinates &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# these coordinates will be used to represent specific locations on &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# the grid.  the meshgrid() basically creates a nice uniform coordinate grid&lt;/span&gt;&lt;br /&gt;X,Y = np.meshgrid([1,2,3,4],[1,2,3])&lt;br /&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="pln"&gt;# X&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt;Y &lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; np&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;meshgrid&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;x&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; y&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;span class="nn"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# these ravel functions basically make the 2d arrays created above into lists&lt;/span&gt;&lt;br /&gt;x = X.ravel()&lt;br /&gt;y = Y.ravel()&lt;br /&gt;plt.subplot(111)&lt;br /&gt;plt.hexbin(x,y,C=[1,2,3,3,2,2,3,3,2,3,3,4], gridsize=30)&lt;br /&gt;cb = plt.colorbar()&lt;br /&gt;cb.set_label('Heat Value')&lt;br /&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="pln"&gt;plt&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;axis&lt;/span&gt;&lt;span class="pun"&gt;([&lt;/span&gt;&lt;span class="pln"&gt;x&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;min&lt;/span&gt;&lt;span class="pun"&gt;(),&lt;/span&gt;&lt;span class="pln"&gt; x&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;max&lt;/span&gt;&lt;span class="pun"&gt;(),&lt;/span&gt;&lt;span class="pln"&gt; y&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;min&lt;/span&gt;&lt;span class="pun"&gt;(),&lt;/span&gt;&lt;span class="pln"&gt; y&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;max&lt;/span&gt;&lt;span class="pun"&gt;()])&lt;/span&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;span class="nn"&gt;plt.grid(True)&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://stackoverflow.com/questions/2369492/generate-a-heatmap-in-matplotlib-using-a-scatter-data-set&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6847834089212404053?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6847834089212404053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6847834089212404053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6847834089212404053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6847834089212404053'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/07/matplotlib-basics.html' title='matplotlib basics'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4857052060327619467</id><published>2010-07-09T18:13:00.001-05:00</published><updated>2010-07-09T18:14:40.021-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualenv'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='pyqrcode'/><title type='text'>Case Study Notes: install pyqrcode in a virtualenv on OSX</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;Kind of a buggy install.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mkdir qrcode; cd qrcode&lt;br /&gt;virtualenv --distribute --no-site-packages ve&lt;br /&gt;source ./ve/bin/activate&lt;br /&gt;echo "pil" &gt; requirements.pip&lt;br /&gt;echo "http://svn.apache.org/repos/asf/lucene/pylucene/trunk/jcc" &gt;&gt; requirements.pip&lt;br /&gt;&lt;br /&gt;wget http://downloads.sourceforge.net/pyqrcode/pyqrcode-0.2.1.tar.gz?use_mirror=&lt;br /&gt;&lt;br /&gt;cd pyqrcode-0.2.1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# EDIT  pyqrcode-0.2.1/Makefile &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;#  change the call to jcc from &lt;/span&gt;&lt;br /&gt;GENERATE=python -m jcc --jar $(LIBFILE) \&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;#  TO&lt;/span&gt;&lt;br /&gt;GENERATE=python -m jcc.__main__ --jar $(LIBFILE) \&lt;br /&gt;&lt;br /&gt;make&lt;br /&gt;make egg&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# it will create qrcode-0.2.1-py2.6-macosx-10.6-universal.egg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# Edit qrcode-0.2.1-py2.6-macosx-10.6-universal.egg/qrcode/__init__.py&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;#  change the line &lt;/span&gt;&lt;br /&gt;_qrcode._setExceptionTypes(JavaError, InvalidArgsError)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;#  TO&lt;/span&gt;&lt;br /&gt;_qrcode._set_exception_types(JavaError, InvalidArgsError)&lt;br /&gt;&lt;br /&gt;pip -E ./ve/ install qrcode-0.2.1-py2.6-macosx-10.6-universal.egg&lt;br /&gt;&lt;br /&gt;# http://pyqrcode.sourceforge.net/&lt;br /&gt;# http://www.mail-archive.com/pythonmac-sig@python.org/msg09864.html&lt;br /&gt;# http://mail-archives.apache.org/mod_mbox/lucene-pylucene-dev/200904.mbox/%3C49EEECAC.7070606@cheimes.de%3E&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4857052060327619467?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4857052060327619467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4857052060327619467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4857052060327619467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4857052060327619467'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/07/case-study-notes-install-pyqrcode-in.html' title='Case Study Notes: install pyqrcode in a virtualenv on OSX'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8869775501252389446</id><published>2010-07-09T17:42:00.006-05:00</published><updated>2010-07-09T18:19:31.199-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualenv'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql-python'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><title type='text'>Installing MySQL-python (MySQLdb) in a virtualenv on OSX 10.6</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;There were two problems with the MySQL-Python package that I had when installing on OS X 10.6 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:times new roman;" &gt;1) First, an error saying "EnvironmentError: mysql_config not found"&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:times new roman;" &gt;when setup.py is run (through pip or easy_install) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:times new roman;" &gt;2) Second, an error saying "&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:Courier,Monospaced;" class="fixed_width" &gt;ImportError:  dynamic module does not define init function(init_mysql) when importing MySQLdb" when 'import MySQLdb" is issued&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Causes:&lt;/span&gt;&lt;br /&gt;1) This is caused by the build script not being able to find a MySQL program called mysql_config.  This program is used to determine metadata about the mysql install.  For example, the command "mysql_config --cflags" reports the flags used to build mysql.&lt;br /&gt;2) This is caused by a mismatch between the architectures that MySQL was built with and the architecture that MySQL-python installer is trying to build and install MySQL-python as.  To find what arch MySQL was built as, run &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:Courier,Monospaced;" class="fixed_width" &gt;"mysql_config --cflags" (this was i386 in my case).  OSX tries to build MySQL-python as&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; x86_64.  Therefore, there is a arch mismatch.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Solution:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;1) Locate the mysql_config binary location and add the path to the MySQL-python/site.cfg file as a config directive: "mysql_config = /opt/local/bin/mysql_config5"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;2) Use the arch x86_64 (64 bit) version of MySQL compiled through MacPorts, not a i386 (32 bit) version downloaded off the internet and installed as a dmg. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Summary:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Assuming the MacPorts version of MySQL is installed, both issues can be solved by adding the mysql_config = /opt/local/bin/mysql_config5 config directive to the MySQL-python/site.cfg file.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# SCRIPTED SOLUTION: Create a script called setup.sh and add the following lines&lt;/span&gt;&lt;br /&gt;virtualenv --distribute --no-site-packages ve&lt;br /&gt;source ./ve/bin/activate&lt;br /&gt;pip install -E ./ve -r requirements.1.pip  &lt;span style="color: rgb(51, 51, 255);"&gt;# other deps&lt;/span&gt;&lt;br /&gt;export ARCHFLAGS="-arch x86_64"&lt;br /&gt;pip install -E ./ve MySQL-python&lt;br /&gt;echo "mysql_config = /opt/local/bin/mysql_config5" &gt;&gt; ./ve/build/MySQL-python/site.cfg&lt;br /&gt;pip install -E ./ve MySQL-python&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Resources:&lt;br /&gt;http://groups.google.com/group/python-virtualenv/msg/cf4f3117faea476b?pli=1&lt;br /&gt;http://birdhouse.org/blog/2009/02/21/python-mysql-connections-on-mac-os/&lt;br /&gt;http://stackoverflow.com/questions/2111283/how-to-build-64-bit-python-on-os-x-10-6-only-64-bit-no-universal-nonsense&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-8869775501252389446?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8869775501252389446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8869775501252389446' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8869775501252389446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8869775501252389446'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/07/installing-mysql-python-mysqldb-in.html' title='Installing MySQL-python (MySQLdb) in a virtualenv on OSX 10.6'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-496513149759638474</id><published>2010-06-26T15:07:00.005-05:00</published><updated>2010-06-26T15:18:59.208-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualenv'/><category scheme='http://www.blogger.com/atom/ns#' term='package'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='pip'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python Pip Usage</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Basic PIP install&lt;/span&gt;&lt;br /&gt;pip install somepackage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Basic PIP uninstall&lt;/span&gt;&lt;br /&gt;pip uninstall somepackage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements file&lt;/span&gt;&lt;br /&gt;# cat requirements.pip&lt;br /&gt;MyApp&lt;br /&gt;Framework==0.0.1&lt;br /&gt;Library&gt;=0.2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing using a requirements file&lt;/span&gt;&lt;br /&gt;pip install -r requirements.pip&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PIP Freezing requirements&lt;/span&gt;&lt;br /&gt;pip freeze  &lt;span style="color: rgb(51, 51, 255);"&gt;# lists all packages and the specific version installed.  Useful for migrating&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PIP install into virtualenv env&lt;/span&gt;&lt;br /&gt;pip install -E ./env&lt;br /&gt;pip install -E ./env -r requirements.pip   &lt;span style="color: rgb(51, 51, 255);"&gt;# using a requirements file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Basic script for creating a virtualenv and installing requirements&lt;/span&gt;&lt;br /&gt;virtualenv --distribute --no-site-packages ve&lt;br /&gt;source ./ve/bin/activate&lt;br /&gt;pip install -E ./ve -r requirements.pip&lt;br /&gt;pip install -E ./ve -r requirements-test.pip&lt;br /&gt;&lt;br /&gt;http://heisel.org/blog/2009/11/21/django-hudson/&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://pip.openplans.org/#freezing-requirements&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-496513149759638474?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/496513149759638474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=496513149759638474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/496513149759638474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/496513149759638474'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/pip-usage.html' title='Python Pip Usage'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7728553010074122119</id><published>2010-06-21T00:48:00.003-05:00</published><updated>2011-07-07T15:38:12.060-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualenv'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='djangobb'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Case Study Notes: install djangobb in virtualenv</title><content type='html'>Ubuntu 10.04 python 2.6 django 1.1&lt;br /&gt;&lt;br /&gt;sudo apt-get build-dep python-psycopg2&lt;br /&gt;sudo aptitude install python-dev&lt;br /&gt;&lt;br /&gt;cd Sites&lt;br /&gt;virtualenv --no-site-packages env&lt;br /&gt;. ./env/bin/activate&lt;br /&gt;pip install pil&lt;br /&gt;pip install markdown2 Markdown&lt;br /&gt;pip install django-registration&lt;br /&gt;pip install djapian&lt;br /&gt;pil install xapian&lt;br /&gt;pip install psycopg2&lt;br /&gt;easy_install -i http://downloads.egenix.com/python/index/ucs4/ egenix-mx-base&lt;br /&gt;pip install http://code.djangoproject.com/svn/django/tags/releases/1.1.2/&lt;br /&gt;hg clone http://hg.djangobb.org/djangobb/ djangobb&lt;br /&gt;cd env/lib/python2.6/site-packages/&lt;br /&gt;cp /usr/lib/python2.6/dist-packages/_xapian.so .&lt;br /&gt;cp /usr/lib/python2.6/dist-packages/xapian.py .&lt;br /&gt;&lt;br /&gt;# configure settings.py to use postgresql_psycopg2&lt;br /&gt;# comment out the openid stuff&lt;br /&gt;&lt;br /&gt;## http://www.saltycrane.com/blog/2009/07/using-psycopg2-virtualenv-ubuntu-jaunty/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7728553010074122119?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7728553010074122119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7728553010074122119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7728553010074122119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7728553010074122119'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/case-study-notes-install-virtualenv.html' title='Case Study Notes: install djangobb in virtualenv'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-949447155430890094</id><published>2010-06-20T09:10:00.039-05:00</published><updated>2011-08-23T10:44:15.370-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='localhost'/><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='psql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Postgresql Basic Commands</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Login to postgresql:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;psql -d mydb -U myuser -W&lt;br /&gt;psql -h myhost -d mydb -U myuser -W&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Default Admin Login:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;sudo -u postgres psql -U postgres&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;List databases on postgresql server:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;psql -l [-U myuser] [-W]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Turn off line pager pagination in psql:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\pset pager&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Determine system tables:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;select * from pg_tables where tableowner = 'postgres';&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;List databases from within a pg shell:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\l&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;List databases from UNIX command prompt:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;psql -U postgres -l&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Describe a table:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\d tablename&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Quit psql:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\q&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Switch postgres database within admin login shell:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\connect databasename&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Reset a user password as admin: &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;alter user usertochange with password 'new_passwd'; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Show all tables:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\dt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;List all Schemas: &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\dn&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;List all users:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;\du&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Load data into posgresql:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;psql -W -U username -H hostname &amp;lt; file.sql  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Dump (Backup) Data into file:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;pg_dump -W -U username -h hostname database_name &amp;gt; file.sql &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Increment a sequence:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;SELECT nextval('my_id_seq');&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Create new user:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;CREATE USER tom WITH PASSWORD 'myPassword';&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Change user password:  &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;ALTER USER Postgres WITH PASSWORD 'mypass';&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Grant user createdb privilege: &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;ALTER USER myuser WITH createdb; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Show Database Version:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;SELECT version();&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Change Database Owner:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;alter database database_name owner to new_owner;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Copy a database: &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;CREATE DATABASE newdb WITH TEMPLATE originaldb;&lt;br /&gt;&lt;a href="http://www.commandprompt.com/ppbook/x14316"&gt;&lt;i&gt;http://www.commandprompt.com/ppbook/x14316&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;View Database Connections:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;SELECT * FROM pg_stat_activity;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://www.devdaily.com/blog/post/postgresql/log-in-postgresql-database&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://forums.devshed.com/postgresql-help-21/how-do-you-turn-off-more-scroll-lock-at-psql-174831.htm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://www.cyberciti.biz/faq/howto-add-postgresql-user-account/ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;a href="http://archives.postgresql.org/pgsql-general/1998-08/msg00050.php"&gt;http://archives.postgresql.org/pgsql-general/1998-08/msg00050.php&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/876522/creating-a-copy-of-a-database-in-postgres"&gt;http://stackoverflow.com/questions/876522/creating-a-copy-of-a-database-in-postgres&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-949447155430890094?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/949447155430890094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=949447155430890094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/949447155430890094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/949447155430890094'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/postgresql-login-commands.html' title='Postgresql Basic Commands'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8946312931291827336</id><published>2010-06-18T16:44:00.006-05:00</published><updated>2010-06-18T16:49:31.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rm'/><category scheme='http://www.blogger.com/atom/ns#' term='trash'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='remove'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='join command UNIX shell sh bash linux'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Recycle bin script</title><content type='html'>&lt;pre&gt;&lt;br /&gt;crm()&lt;br /&gt;{&lt;br /&gt;# pass this function the name of the directory that&lt;br /&gt;# you want to backup and remove &lt;br /&gt;if [ -d "$1" ]&lt;br /&gt;then&lt;br /&gt;  cd "${1}/../"&lt;br /&gt;else&lt;br /&gt;  echo "Directory does not exist"&lt;br /&gt;  return 1&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;PWD=`pwd`&lt;br /&gt;BKPFILES=`find $PWD -type -f`&lt;br /&gt;BKPDIR="$HOME/.Trash"&lt;br /&gt;daten=`date +%Y.%m.%d-%H.%M.%S`&lt;br /&gt;&lt;br /&gt;for i in $BKPFILES&lt;br /&gt;do&lt;br /&gt;  echo "$i"&lt;br /&gt;  DIRNAME="$BKPDIR"`echo ${i%/*}`&lt;br /&gt;  FILENAME=`echo ${i##*/}`&lt;br /&gt;  mkdir -p "$DIRNAME"&lt;br /&gt;  cp -pf "$i" "${DIRNAME}/${FILENAME}.${daten}"&lt;br /&gt;  #NEWFILE=`echo "$i" | sed 's|[ \/]|_|g'`&lt;br /&gt;  print "$i"  "$NEWFILE"   " $DIRNAME"&lt;br /&gt;done&lt;br /&gt;rm -rf "$1"&lt;br /&gt;cd - &lt;br /&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/11349913-8946312931291827336?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8946312931291827336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8946312931291827336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8946312931291827336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8946312931291827336'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/make-trash-directory-that-backs-up-do.html' title='Recycle bin script'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3049122706380641850</id><published>2010-06-17T16:10:00.002-05:00</published><updated>2010-06-24T18:44:14.336-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='os x'/><category scheme='http://www.blogger.com/atom/ns#' term='color'/><category scheme='http://www.blogger.com/atom/ns#' term='alias'/><category scheme='http://www.blogger.com/atom/ns#' term='osx'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='ls'/><title type='text'>OSX Color LS</title><content type='html'>&lt;span style="color: rgb(0, 0, 153);"&gt;Color LS for Mac OX&lt;/span&gt;&lt;br /&gt;alias ls='ls -G'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3049122706380641850?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3049122706380641850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3049122706380641850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3049122706380641850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3049122706380641850'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/osx-color-ls.html' title='OSX Color LS'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2789840696584611072</id><published>2010-06-15T11:18:00.004-05:00</published><updated>2010-06-24T18:44:49.602-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='option'/><category scheme='http://www.blogger.com/atom/ns#' term='alternate port'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><title type='text'>sftp notes</title><content type='html'>&lt;span style="color:#3333ff;"&gt;sftp using alternate port:&lt;/span&gt;&lt;br /&gt;sftp -oPort=2222 &lt;a href="mailto:username@host.com"&gt;username@host.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;sftp using alternate private key file:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;sftp -o IdentityFile=/custom/file/location.pem username@host.com&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;http://www.unix.com/shell-programming-scripting/43334-sftp-scripting-help-required.html&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2789840696584611072?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2789840696584611072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2789840696584611072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2789840696584611072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2789840696584611072'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/sftp-notes.html' title='sftp notes'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4038298830860204215</id><published>2010-06-15T03:08:00.014-05:00</published><updated>2010-06-21T01:25:25.442-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='guide'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Basic Python Development Server setup with Ubuntu 10.04</title><content type='html'>&lt;span style="font-weight: bold;font-family:arial;" &gt;Quick setup guide&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;# config vi command line&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;echo "set -o vi" &gt;&gt; ~/.bashrc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;. ~/.bashrc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;# install packages&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;aptitude install vim openssh-server apache2 python-virtualenv  python-mysqldb  mysql-server  libapache2-mod-php5 libapache2-mod-wsgi eclipse subversion nmap ubuntu-restricted-extras g++ git-gui virtualbox-ose php5-cli mdadm fabric&lt;/span&gt;&lt;span style="font-family:arial;"&gt; python-dev&lt;/span&gt; mercurial&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;# eclipse development plugins&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;install pydev for eclipse&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;install subclipse for eclipse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;# firefox development plugins &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;install firebug for firefox @ http://getfirebug.com/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;install web developer for firefox  @ https://addons.mozilla.org/en-US/firefox/addon/60/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;# add google repo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;deb http://dl.google.com/linux/deb/ stable non-free&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;aptitude update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;cd /opt/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;wget http://www.djangoproject.com/download/1.1.2/tarball/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;wget http://www.djangoproject.com/download/1.2.1/tarball/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;tar -xvf Django-1.1.2.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;tar -xvf Django-1.2.1.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;cd /usr/lib/python2.6/dist-packages&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ln -s /opt/Django-1.2.1/django/ django&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;# mysql workbench download (64 bit version)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;aptitude install libzip1 python-pysqlite2&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;  # deps needed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-oss-5.2.22-1ubu1004-amd64.deb/from/http://mirror.services.wisc.edu/mysql/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;dpkg -i mysql-workbench-oss-5.2.22-1ubu1004-amd64.deb&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:times new roman;font-size:100%;"  &gt;# setup postgresql &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;aptitude install postgresql pga&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;dmin&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;3 python-psycopg2&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;sudo su -&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;passwd postgres&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;su postgres&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;psql template1&lt;/span&gt; &lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;The last instruction should open the psql shell, where you  can run the following:&lt;/span&gt;&lt;/p&gt; &lt;p  style="font-family:times new roman;"&gt;&lt;span style="font-size:100%;"&gt;ALTER USER postgres WITH ENCRYPTED PASSWORD 'mypassw&lt;/span&gt;ord';&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);font-family:arial;" &gt;# Setup NX server (Google NeatX server)&lt;/span&gt;&lt;br /&gt;sudo apt-get install python-software-properties &amp;amp;&amp;amp; sudo add-apt-repository ppa:freenx-team&lt;br /&gt;sudo apt-get update&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;sudo apt-get install neatx-server&lt;br /&gt;&lt;br /&gt;## NOTE: if neatx gives a weird error, delete the session dirs on the server:&lt;br /&gt;## /var/lib/neatx/sessions/some_dir/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;https://help.ubuntu.com/community/FreeNX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;http://programmingzen.com/2007/12/26/installing-django-with-postgresql-on-ubuntu/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4038298830860204215?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4038298830860204215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4038298830860204215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4038298830860204215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4038298830860204215'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/basic-python-development-server-setup.html' title='Basic Python Development Server setup with Ubuntu 10.04'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7709495827791395694</id><published>2010-06-14T00:57:00.002-05:00</published><updated>2010-06-14T01:03:01.211-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ping'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Simple Network Test Script</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;This is a simple script to log network outages on a local network &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;root@ubuntu:/mnt/root/usr/local/bin# more lifeline &lt;/span&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;PING='/bin/ping'&lt;br /&gt;EXTHOST1='www.google.com'&lt;br /&gt;EXTHOST2='sun.iwu.edu'&lt;br /&gt;INTHOST='192.168.1.1'&lt;br /&gt;LOG='/var/log/network_outages'&lt;br /&gt;WAITTIME=120&lt;br /&gt;&lt;br /&gt;echo "NETWORK STATUS SCRIPT: Started " `date` &gt;&gt; $LOG&lt;br /&gt;while [ 1=1 ]&lt;br /&gt;do&lt;br /&gt;&amp;nbsp;&amp;nbsp; dater=`date +%Y.%m.%d-%H.%M.%S`&lt;br /&gt;&amp;nbsp;&amp;nbsp; $PING -q -c1 $EXTHOST1&lt;br /&gt;&amp;nbsp;&amp;nbsp; ret=$?&lt;br /&gt;&amp;nbsp;&amp;nbsp; echo "RET: $ret"&lt;br /&gt;&amp;nbsp;&amp;nbsp; if [ $ret -ne 0 ]&lt;br /&gt;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    echo "EXTERNAL_PING(1): outage detected $dater" &gt;&gt; $LOG&lt;br /&gt;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; dater=`date +%Y.%m.%d-%H.%M.%S`&lt;br /&gt;&amp;nbsp;&amp;nbsp; $PING -q -c1 $EXTHOST2&lt;br /&gt;&amp;nbsp;&amp;nbsp; ret=$?&lt;br /&gt;&amp;nbsp;&amp;nbsp; echo "RET: $ret"&lt;br /&gt;&amp;nbsp;&amp;nbsp; if [ $ret -ne 0 ]&lt;br /&gt;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    echo "EXTERNAL_PING(2): outage detected $dater" &gt;&gt; $LOG&lt;br /&gt;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $PING -q -c1 $INTHOST&lt;br /&gt;&amp;nbsp;&amp;nbsp; ret=$?&lt;br /&gt;&amp;nbsp;&amp;nbsp; echo "RET: $ret"&lt;br /&gt;&amp;nbsp;&amp;nbsp; if [ $ret -ne 0 ]&lt;br /&gt;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    echo "INTERNAL_PING: outage detected $dater" &gt;&gt; $LOG&lt;br /&gt;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sleep $WAITTIME&lt;br /&gt;done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7709495827791395694?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7709495827791395694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7709495827791395694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7709495827791395694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7709495827791395694'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/06/simple-network-test-script.html' title='Simple Network Test Script'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8748171863557602971</id><published>2010-05-05T17:03:00.000-05:00</published><updated>2010-05-05T17:04:19.970-05:00</updated><title type='text'>Simple HEX Editor</title><content type='html'>&lt;strong&gt;View file in Hex Editor &lt;/strong&gt;&lt;br /&gt;od -cx filename&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-8748171863557602971?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8748171863557602971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8748171863557602971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8748171863557602971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8748171863557602971'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/05/simple-hex-editor.html' title='Simple HEX Editor'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7442153656012850496</id><published>2010-04-20T11:21:00.016-05:00</published><updated>2010-06-18T10:24:58.335-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='extensions'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='remove'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><title type='text'>Bash String Operatinos</title><content type='html'>&lt;strong&gt;Remove the last four characters in a string&lt;/strong&gt;&lt;br /&gt;echo "somefile.txt" &amp;#124; awk 'sub("....$","")&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remove file extension from a string&lt;/strong&gt;&lt;br /&gt;ls -1 &amp;#124; sed 's/\(.*\)\..*/\1/'&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remove PREFIX from SOMEPATH&lt;/strong&gt;&lt;br /&gt;SOMEPATH="/home/myuser/usr/bin/"&lt;br /&gt;PREFIX="/home/myuser/"&lt;br /&gt;echo ${SOMEPATH#$PREFIX}&lt;br /&gt;Returns: usr/bin/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remove shortest match of PREFIX from SOMEPATH&lt;/strong&gt;&lt;br /&gt;SOMEPATH="/home/sub/subhome/myuser/usr/bin/"&lt;br /&gt;PREFIX="/*/myuser/"&lt;br /&gt;echo ${SOMEPATH#$PREFIX}&lt;br /&gt;Returns: usr/bin/&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Parsing parts of a file:&lt;/strong&gt;&lt;br /&gt;foo=/tmp/my.dir/filename.tar.gz&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;To get: /tmp/my.dir (like dirname)&lt;/span&gt;&lt;br /&gt;path = ${foo%/*}&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;To get: filename.tar.gz (like basename) &lt;/span&gt;&lt;br /&gt;file = ${foo##*/}&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;To get: filename&lt;/span&gt;&lt;br /&gt;base = ${file%%.*}&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;To get: tar.gz&lt;br /&gt;&lt;/span&gt;ext = ${file#*.}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Removing first 8 characters of a string:&lt;/strong&gt;&lt;br /&gt;echo $var &amp;#124; cut -c9-&lt;br /&gt;&lt;br /&gt;&lt;a href="http://unstableme.blogspot.com/2008/03/printremove-first-some-characters-of.html"&gt;http://unstableme.blogspot.com/2008/03/printremove-first-some-characters-of.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tldp.org/LDP/LGNET/18/bash.html"&gt;&lt;em&gt;http://tldp.org/LDP/LGNET/18/bash.html&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docstore.mik.ua/orelly/unix/upt/ch09_07.htm"&gt;&lt;em&gt;http://docstore.mik.ua/orelly/unix/upt/ch09_07.htm&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://unstableme.blogspot.com/2007/12/removing-last-two-characters-bash.html"&gt;&lt;em&gt;http://unstableme.blogspot.com/2007/12/removing-last-two-characters-bash.html&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unix.com/shell-programming-scripting/40360-remove-file-extension.html"&gt;&lt;em&gt;http://www.unix.com/shell-programming-scripting/40360-remove-file-extension.html&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7442153656012850496?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7442153656012850496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7442153656012850496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7442153656012850496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7442153656012850496'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/04/bash-string-operatinos.html' title='Bash String Operatinos'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-690250602531805743</id><published>2010-02-03T10:22:00.003-06:00</published><updated>2010-02-03T10:27:09.871-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='instance'/><title type='text'>Oracle Login Context Information</title><content type='html'>&lt;strong&gt;Find the Database instance you are logged into&lt;/strong&gt;&lt;br /&gt;SELECT sys_context('USERENV', 'DB_NAME') FROM dual;&lt;br /&gt;SELECT sys_context('USERENV', 'INSTANCE_NAME') FROM dual;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Find the operating system user hosting the Oracle session&lt;/strong&gt;&lt;br /&gt;SELECT sys_context('USERENV', 'OS_USER') FROM dual;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Find the Oracle user currently logged into&lt;/strong&gt;&lt;br /&gt;SELECT sys_context('USERENV', 'SESSION_USER') FROM dual;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.psoug.org/reference/sys_context.html"&gt;http://www.psoug.org/reference/sys_context.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-690250602531805743?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/690250602531805743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=690250602531805743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/690250602531805743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/690250602531805743'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/02/oracle-login-context-information.html' title='Oracle Login Context Information'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5020183444185797899</id><published>2010-01-02T15:01:00.003-06:00</published><updated>2010-01-02T15:13:35.622-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualenv'/><category scheme='http://www.blogger.com/atom/ns#' term='package'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='path'/><title type='text'>Python Virtual Env</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Download and install via apt-get, ports, easy_install, etc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Locate the install directory (usually site-packages) and find the &lt;/span&gt;&lt;span style="font-weight: bold;font-family:monospace;" &gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;virtualenv.py script.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alternatively, the package manager may have installed a virtualenv script into your PATH. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I will use ENV to refer to /path/to/python/virtual/env&lt;br /&gt;I will use virtualenv.py to refer to /path/to/script/virtualenv.py&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Create a new Virtual Environment&lt;/span&gt;&lt;br /&gt;python virtualenv.py ENV&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(optional) Activate (set PATH and PYTHONPATH) for new Virtual ENV&lt;/span&gt;&lt;br /&gt;source ENV/bin/activate&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Location of Virtual Env python binary&lt;/span&gt;&lt;br /&gt;ENV/bin/python&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Location of Virtual ENV python site-packages dir&lt;/span&gt;&lt;br /&gt;ENV/lib/python2.x/site-packages/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Location of Virtual ENV python easy_install script&lt;/span&gt;&lt;br /&gt;ENV/bin/easy_install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://pypi.python.org/pypi/virtualenv&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5020183444185797899?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5020183444185797899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5020183444185797899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5020183444185797899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5020183444185797899'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2010/01/python-virtual-env.html' title='Python Virtual Env'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5466321511494668101</id><published>2009-12-11T02:22:00.002-06:00</published><updated>2009-12-11T02:25:30.283-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curl'/><category scheme='http://www.blogger.com/atom/ns#' term='post'/><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='get'/><title type='text'>curl Usage</title><content type='html'>&lt;div&gt;&lt;b&gt;Send a POST&lt;/b&gt;&lt;/div&gt;curl -u joe:1234 -X POST http://localhost:8000/api/1.0/NU1yWdRM5JBjnZpZX/message/ -d "message=test"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-u = username and password&lt;/div&gt;&lt;div&gt;-d = post parameters &lt;/div&gt;&lt;div&gt;-X = request method&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5466321511494668101?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5466321511494668101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5466321511494668101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5466321511494668101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5466321511494668101'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/12/curl-usage.html' title='curl Usage'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5860596720217510370</id><published>2009-12-08T12:35:00.002-06:00</published><updated>2009-12-08T12:39:26.309-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netbios'/><category scheme='http://www.blogger.com/atom/ns#' term='samba'/><category scheme='http://www.blogger.com/atom/ns#' term='lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='name'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><category scheme='http://www.blogger.com/atom/ns#' term='smb'/><title type='text'>netbios name lookups</title><content type='html'>&lt;strong&gt;Find NetBIOS name from IP&lt;/strong&gt;&lt;br /&gt;Windows:&lt;br /&gt;  netstat -a 192.168.1.22&lt;br /&gt;&lt;br /&gt;Linux:&lt;br /&gt;  nbtstat 192.168.1.22  &lt;span style="color:#3333ff;"&gt;# ntbstat separate package&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Find IP from NetBIOS name&lt;/strong&gt;&lt;br /&gt;Windows:&lt;br /&gt;  nbtstat -a host.example.com&lt;br /&gt;&lt;br /&gt;Linux:&lt;br /&gt;  nmblookup host.example.com&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.irongeek.com/i.php?page=security/ipinfo"&gt;&lt;em&gt;http://www.irongeek.com/i.php?page=security/ipinfo&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5860596720217510370?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5860596720217510370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5860596720217510370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5860596720217510370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5860596720217510370'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/12/netbios-name-lookups.html' title='netbios name lookups'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1818971218877801534</id><published>2009-10-28T01:38:00.003-05:00</published><updated>2009-10-28T01:48:20.865-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ports'/><category scheme='http://www.blogger.com/atom/ns#' term='macports'/><category scheme='http://www.blogger.com/atom/ns#' term='package'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>MacPorts Usage</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update MacPorts itself&lt;/span&gt;&lt;br /&gt;sudo port selfupdate&lt;br /&gt;sudo port -d selfupdate   # debug&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Updates the port tree with new versions definitions &lt;/span&gt;&lt;br /&gt;sudo port sync&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;List available ports&lt;/span&gt;&lt;br /&gt;sudo port list&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Search ports&lt;/span&gt;&lt;br /&gt;port search [keyword]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lookup package info &lt;/span&gt;(desc, maintainer, etc)&lt;br /&gt;port info [package]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Find package dependencies&lt;/span&gt;&lt;br /&gt;port deps [package]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Install package&lt;/span&gt;&lt;br /&gt;sudo port install [package]&lt;br /&gt;sudo port -v install [package]  #verbose&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Clean out build files and tarballs&lt;/span&gt;&lt;br /&gt;port clean --all [pakcage]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Uninstall a package&lt;/span&gt;&lt;br /&gt;sudo port uninstall [package]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show port contents&lt;/span&gt;&lt;br /&gt;port contents [package]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;List installed packages&lt;/span&gt;&lt;br /&gt;port installed&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;List outdated ports&lt;/span&gt;&lt;br /&gt;port outdated&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Upgrade specific packages&lt;/span&gt;&lt;br /&gt;port upgrade [package]&lt;br /&gt;port upgrade outdated #updates all outdated packages&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://guide.macports.org/chunked/using.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1818971218877801534?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1818971218877801534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1818971218877801534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1818971218877801534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1818971218877801534'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/10/macports-usage.html' title='MacPorts Usage'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4286943207936352077</id><published>2009-10-18T14:09:00.002-05:00</published><updated>2009-10-18T14:10:57.113-05:00</updated><title type='text'>DJango Model Inheritance with subclasses</title><content type='html'>http://www.djangosnippets.org/snippets/1034/&lt;br /&gt;http://www.djangosnippets.org/snippets/1031/&lt;br /&gt;http://adam.gomaa.us/blog/2009/feb/16/subclassing-django-querysets/&lt;br /&gt;http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4286943207936352077?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4286943207936352077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4286943207936352077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4286943207936352077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4286943207936352077'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/10/django-model-inheritance-with.html' title='DJango Model Inheritance with subclasses'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2526277754031826038</id><published>2009-10-09T11:37:00.006-05:00</published><updated>2010-12-29T16:12:27.390-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='comprehension'/><category scheme='http://www.blogger.com/atom/ns#' term='for'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><title type='text'>Python List Operations (map, for comprehensions)</title><content type='html'>&lt;strong&gt;EXAMPLE 1&lt;/strong&gt;&lt;br /&gt;# Create a list&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,6]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# iterate through the list using a for comprehension&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i for i in l]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 2, 3, 4, 5, 6]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# square elements in the list using a for comprehension&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i**2 for i in l]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# square only even elements in the list using a for comprehension&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i**2 for i in l if i % 2 == 0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[4, 16, 36]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# iterate through the list using map&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda w: w, l)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 2, 3, 4, 5, 6]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# square each element of the list using map&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda w: w**2, l)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# or use map to call a separately defined function to# iterate through the list&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; def squa(x): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;...... return x**2 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(squa, l)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# use map function to call a separately defined function that takes 2 args&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l2 = map(lambda w: (w,2),l)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[(1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2)]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; def pow(base, expo):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;...... return base**expo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda (x,y): pow(x,y), l2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# filter a list&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; filter(lambda w: w &amp;gt; 2, l)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[3, 4, 5, 6]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EXAMPLE 2&lt;/strong&gt;&lt;br /&gt;# define a simple class to play with&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; class A(object): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;...... def __init__(self, x): &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;........ self.x = x&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# create simple list of object instances of the class&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l = [A(1), A(2), A(3)]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# use a for (list) comprehension to iterate through the list&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i.x for i in l]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 2, 3]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# use a for comprehension to iterate with a condition&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i.x for i in l if i.x &amp;gt; 1]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[2, 3]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# use map to apply a function to every element in the list&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda w: w.x, l) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 2, 3]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda w: w.x * w.x, l)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;strong&gt;EXAMPLE 1&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# Create a list&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l = [1,2,3,4,5,6]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# iterate through the list using a for comprehension&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i for i in l]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 2, 3, 4, 5, 6]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# square elements in the list using a for comprehension&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i**2 for i in l]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# square only even elements in the list using a for comprehension&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; [i**2 for i in l if i % 2 == 0]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[4, 16, 36]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# iterate through the list using map&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda w: w, l)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 2, 3, 4, 5, 6]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# square each element of the list using map&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda w: w**2, l)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# or use map to call a separately defined function to# iterate through the list&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; def squa(x):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;...... return x**2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(squa, l)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# use map function to call a separately defined function that takes 2 args&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l2 = map(lambda w: (w,2),l)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; l2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[(1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2)]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; def pow(base, expo):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;...... return base**expo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; map(lambda (x,y): pow(x,y), l2)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[1, 4, 9, 16, 25, 36]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;# filter a list&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt; filter(lambda w: w &amp;gt; 2, l)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span style="font-family: 'courier new';"&gt;[3, 4, 5, 6]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;strong&gt;EXAMPLE 3&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;#&amp;nbsp;split a list into chunks&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;map(None, *(iter(range(10)),) * 3)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;i&gt;http://stackoverflow.com/questions/1335392/iteration-over-list-slices&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: 'Times New Roman'; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2526277754031826038?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2526277754031826038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2526277754031826038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2526277754031826038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2526277754031826038'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/10/python-list-operations-map-for.html' title='Python List Operations (map, for comprehensions)'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-931961337545023639</id><published>2009-10-07T21:04:00.016-05:00</published><updated>2011-02-11T10:08:21.251-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='south'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Django South Migrations</title><content type='html'>&lt;b&gt;Install Django South&lt;/b&gt;&lt;br /&gt;&lt;div&gt;-  Place the untared 'south' folder into your Django applicaion&lt;/div&gt;&lt;div&gt;-  Modify the project's settings.py and add 'south' to the INSTALLED_APPS list&lt;/div&gt;&lt;div&gt;-  For new Django projects: &lt;/div&gt;&lt;div&gt;---1) initialize any Django apps or models to monitor with South.&lt;/div&gt;&lt;div&gt;----a)  See Initializing Applications below&lt;/div&gt;&lt;div&gt;---2) run ./manage.py syncdb&lt;/div&gt;&lt;div&gt;---3) run ./manage.py migrate &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;s&gt;To view help on startmigration: &lt;/s&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;# South 7.x+ uses the schemamigration command instead&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;s&gt;./manage.py startmigration&lt;/s&gt;&lt;/div&gt;&lt;div&gt;&lt;s&gt;Usage: ./manage.py startmigration appname migrationname [--initial] [--auto]     &lt;/s&gt;&lt;/div&gt;&lt;div&gt;&lt;s&gt;[--model ModelName] [--add-field ModelName.field_name] [--freeze] [--stdout]&lt;/s&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Initializing Applications &lt;/b&gt;- needed whenever you want to track more Django apps&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #000099;"&gt; &lt;span style="color: #3333ff;"&gt;# this creates a 'migrations' folder in your Django app directory&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;s&gt;./manage startmigration &lt;i&gt;app_name&lt;/i&gt; &lt;i&gt;comment&lt;/i&gt; --initial&lt;/s&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;# updates for South 7.x+&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #3333ff;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;./manage schemamigration&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;i&gt;app_name&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;i&gt;comment&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;--initial&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: #3333ff;"&gt;# Init's all models in application&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span"&gt;&lt;s style="color: black;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;./manage startmigration&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;i&gt;app_name&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/s&gt;&lt;s style="color: black;"&gt;--initial&lt;/s&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# updates for South 7.x+&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #000066;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;./manage schemamigration&amp;nbsp;&lt;i&gt;app_name&lt;/i&gt;  --initial &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3333ff;"&gt;# comment is optional here&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #000066;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #000066;"&gt;&lt;span style="color: black; font-weight: bold;"&gt;Adding South with no data and &lt;span style="font-style: italic;"&gt;no existing&lt;/span&gt; models.py objects:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 1) syncdb as normal &lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;python manage.py syncdb&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 2) Start an application if needed&lt;/span&gt;&lt;br /&gt;python manage.py startapp &lt;span style="color: black; font-style: italic;"&gt;appname&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;# 3) create a migration file with a blueprint to create tables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;s&gt;python manage.py startmigration &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt; --initial&lt;/s&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;# updates for South 7.x+&lt;br /&gt;python manage.py&amp;nbsp;schemamigration&amp;nbsp;&lt;span style="font-style: italic;"&gt;appname&lt;/span&gt;&amp;nbsp;--initial&lt;br /&gt;&lt;span style="color: blue;"&gt;# 4) Apply the blueprint and create the tables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;python manage.py migrate &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #3333ff;"&gt;# 5) Repeat steps 3 and 4 for each additional app if needed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adding south with no data and &lt;span style="font-style: italic;"&gt;existing&lt;/span&gt; models.py objects:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 1) syncdb as normal if needed&lt;/span&gt;&lt;br /&gt;python manage.py syncdb&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 2) create a migration file with a blueprint to create tables&lt;/span&gt;&lt;br /&gt;&lt;s&gt;python manage.py startmigration &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt; --initial&lt;/s&gt;&amp;nbsp;# updates for South 7.x+&lt;br /&gt;python manage.py schemamigration&amp;nbsp;&lt;span style="font-style: italic;"&gt;appname&lt;/span&gt;&amp;nbsp;--initial&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 3) Apply the blueprint but it doesn't actually create the tables&lt;/span&gt;&lt;br /&gt;python manage.py migrate &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt; --fake&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 4) Repeat steps 2 and 3 for each additional app if needed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;Applying changes after making changes to a model (repeat for each app):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Creates a migration 'blueprint' file and guesses what should take place&lt;/span&gt;&lt;br /&gt;&lt;s&gt;python manage.py startmigration &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt; &lt;span style="font-style: italic;"&gt;migrationname&lt;/span&gt; --auto&lt;/s&gt; &lt;span class="Apple-style-span" style="color: blue;"&gt;# updates for South 7.x+&lt;/span&gt;&lt;br /&gt;python manage.py schemamigration&amp;nbsp;&lt;span style="font-style: italic;"&gt;appname&lt;/span&gt;&amp;nbsp;&lt;span style="font-style: italic;"&gt;migrationname&lt;/span&gt;&amp;nbsp;--auto&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# OR create the blueprint file but it will be empty&lt;/span&gt;&lt;br /&gt;&lt;s&gt;python manage.py startmigration &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt; &lt;/s&gt;&lt;span style="font-style: italic;"&gt;&lt;s&gt;migrationname&amp;nbsp;&lt;/s&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# updates for South 7.x+&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;python manage.py schemamigration&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span style="font-style: italic;"&gt;appname&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;span style="font-style: italic;"&gt;migrationname&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# make any modifications needed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# migrate the tables in the app&lt;/span&gt;&lt;br /&gt;python manage.py migrate &lt;span style="font-style: italic;"&gt;appname&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# OR migrate all tables in all apps&lt;/span&gt;&lt;br /&gt;python manage.py migrate&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adding a new model to an app already managed with south:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;s&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;./manage startmigration&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;app_name&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;comment&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;--model&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;m1&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;--model&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;m2&lt;/i&gt;&lt;/span&gt;&lt;/s&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;# updates for South 7.x+&lt;/span&gt;&lt;br /&gt;./manage schemamigration&amp;nbsp;&lt;i&gt;app_name&lt;/i&gt; &lt;i&gt;comment&lt;/i&gt; --model &lt;i&gt;m1&lt;/i&gt; --model &lt;i&gt;m2&lt;/i&gt; &lt;span class="Apple-style-span" style="color: #3333ff;"&gt;# inits specific models&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;List available migrations &lt;/span&gt;&lt;br /&gt;python manage.py migrate --list&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://south.aeracode.org/wiki/ConvertingAnApp&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-931961337545023639?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/931961337545023639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=931961337545023639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/931961337545023639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/931961337545023639'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/10/django-south-migrations.html' title='Django South Migrations'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-264243107400113820</id><published>2009-09-22T10:41:00.008-05:00</published><updated>2009-09-22T11:16:01.799-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='queries'/><category scheme='http://www.blogger.com/atom/ns#' term='space'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Oracle Space queries</title><content type='html'>&lt;strong&gt;Get Used space for current user&lt;/strong&gt;&lt;br /&gt;SELECT sum(bytes)/(1024 * 1024) as "Used (MB)"&lt;br /&gt;FROM user_SEGMENTS&lt;br /&gt;ORDER BY 1 desc&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Get tablespace usage for all&lt;/strong&gt; &lt;strong&gt;users using that tablespace&lt;/strong&gt;&lt;br /&gt;select owner, sum(bytes)/power(2,20)mb&lt;br /&gt;from dba_extents&lt;br /&gt;where tablespace_name = 'TABLESPACE'&lt;br /&gt;group by owner&lt;br /&gt;order by 2 desc;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Get Total tablespace available for current user&lt;/strong&gt;&lt;br /&gt;select tablespace_name,round(sum(bytes) / (1024 * 1024),2) "Tablespace SIZE (MB)"&lt;br /&gt;from user_free_space&lt;br /&gt;group by tablespace_name&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Get space of individual tables/indexes (objects) in a schema&lt;/strong&gt;&lt;br /&gt;select sum(bytes) / (1024 * 1024) as MB,owner,segment_type, segment_name&lt;br /&gt;from dba_segments s&lt;br /&gt;where owner = 'SCHEMA'&lt;br /&gt;group by owner,segment_type, segment_name&lt;br /&gt;order by MB desc&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Get USER_  dictornary Tables&lt;/strong&gt;&lt;br /&gt;SELECT table_name, comments&lt;br /&gt;FROM dictionary&lt;br /&gt;WHERE table_name LIKE 'USER_%'&lt;br /&gt;ORDER BY table_name;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://snipplr.com/view/4748/get-a-list-of-all-the-user-tables-oracle/"&gt;&lt;em&gt;http://snipplr.com/view/4748/get-a-list-of-all-the-user-tables-oracle/&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freelists.org/post/oracle-l/dba-extents-vs-dba-segments,8"&gt;&lt;em&gt;http://www.freelists.org/post/oracle-l/dba-extents-vs-dba-segments,8&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-264243107400113820?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/264243107400113820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=264243107400113820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/264243107400113820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/264243107400113820'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/09/oracle-space-queries.html' title='Oracle Space queries'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-237679124274994114</id><published>2009-09-12T11:12:00.002-05:00</published><updated>2009-09-12T11:15:09.546-05:00</updated><title type='text'>CSS Pre Tag formatting</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Make pre tags wrap as expected&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;pre {&lt;br /&gt;white-space: pre-wrap;       /* css-3 should we be so lucky... */&lt;br /&gt;white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */&lt;br /&gt;white-space: -pre-wrap;      /* Opera 4-6  */&lt;br /&gt;white-space: -o-pre-wrap;    /* Opera 7  */&lt;br /&gt;word-wrap: break-word;       /* Internet Explorer 5.5+ */&lt;br /&gt;_white-space: pre;   /* IE only hack to re-specify in addition to&lt;br /&gt;word-wrap  */&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://archivist.incutio.com/viewlist/css-discuss/55677&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://bavotasan.com/tutorials/how-to-wrap-text-within-the-pre-tag-using-css/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-237679124274994114?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/237679124274994114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=237679124274994114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/237679124274994114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/237679124274994114'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/09/css-pre-tag-formatting.html' title='CSS Pre Tag formatting'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2881621113353184825</id><published>2009-08-21T15:27:00.002-05:00</published><updated>2009-09-14T16:15:09.546-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sh'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='relative'/><category scheme='http://www.blogger.com/atom/ns#' term='absolute'/><category scheme='http://www.blogger.com/atom/ns#' term='path'/><title type='text'>Relative to Absolute Path in Shell Script</title><content type='html'>&lt;strong&gt;Simple bash function to convert relative paths to absolute pats&lt;/strong&gt;&lt;br /&gt;fun_abs&lt;br /&gt;{ echo “`cd \`dirname $1\`; pwd`/`basename $1`” }&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.robertpeaslee.com/index.php/converting-a-relative-path-to-an-absolute-path-in-bash/"&gt;&lt;em&gt;http://www.robertpeaslee.com/index.php/converting-a-relative-path-to-an-absolute-path-in-bash/&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE: unfortuately the above only works for directories that exist - the perl hack will get around this&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;fun_abs&lt;br /&gt;{FILE=`$PERL -e "use File::Spec::Functions qw[rel2abs];print rel2abs('$1');"`; echo "$FILE"; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2881621113353184825?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2881621113353184825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2881621113353184825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2881621113353184825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2881621113353184825'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/08/relative-to-absolute-path-in-shell.html' title='Relative to Absolute Path in Shell Script'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1683924311961294527</id><published>2009-08-20T10:23:00.004-05:00</published><updated>2009-08-20T10:26:45.803-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file extension'/><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='extension'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Get File Extension in Shell Script</title><content type='html'>&lt;strong&gt;&lt;span style="font-family:arial;"&gt;Returns the last file extension in the file name&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;echo "thisfile.txt.log"awk -F . '{print $NF}' &lt;span style="color:#3333ff;"&gt;# returns "log"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://liquidat.wordpress.com/2007/09/29/short-tip-get-file-extension-in-shell-script/"&gt;&lt;em&gt;http://liquidat.wordpress.com/2007/09/29/short-tip-get-file-extension-in-shell-script&lt;/em&gt;/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1683924311961294527?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1683924311961294527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1683924311961294527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1683924311961294527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1683924311961294527'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/08/get-file-extension-in-shell-script.html' title='Get File Extension in Shell Script'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5283712350250786031</id><published>2009-07-25T20:08:00.003-05:00</published><updated>2009-07-25T20:13:09.222-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='png'/><category scheme='http://www.blogger.com/atom/ns#' term='mismatch'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='color'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Correct CSS PNG Color Mismatch</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Copied from link below&lt;/span&gt;&lt;br /&gt;Mac OS X will render the images using the color profile they got stored, actually png gamma correction would be more exact. This is not immediately apparent because at a glance the files may look identical but using the pngs over a CSS background color often reveals an unpleasant sight on the mac, especially on Safari.&lt;br /&gt;To prevent such a color mismatch either use a different image format or strip the png gamma correction. In the case of the latter, &lt;a href="http://pmt.sourceforge.net/pngcrush/"&gt;pngcrush&lt;/a&gt; does a pretty good job.&lt;br /&gt;I was pleasantly surprised that I could install it with ease on &lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt; (&lt;i&gt;"yum install -y pngcrush&lt;/i&gt;"). To use it run:&lt;br /&gt;&lt;br /&gt;pngcrush -rem gAMA -rem cHRM -rem iCCP -rem sRGB png-file-name optimized-png-file-name&lt;br /&gt;&lt;png-file-name&gt;&lt;optimized-png-file-name&gt;&lt;br /&gt;&lt;br /&gt;http://www.viseztrance.com/2009/02/fixing-the-png-color-mismatch-on-mac-os-x.html&lt;/optimized-png-file-name&gt;&lt;/png-file-name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5283712350250786031?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5283712350250786031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5283712350250786031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5283712350250786031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5283712350250786031'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/07/correct-css-png-color-mismatch.html' title='Correct CSS PNG Color Mismatch'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3058594689090290688</id><published>2009-05-22T12:50:00.020-05:00</published><updated>2011-02-08T10:39:33.258-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='line numbers'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='settings'/><category scheme='http://www.blogger.com/atom/ns#' term='wrap'/><title type='text'>vim settings</title><content type='html'>&lt;span style="color: #3333ff;"&gt;# start vim with an alternate vimrc location&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;vim -u &lt;i&gt;filename&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Turn compatibility mode off via set command&lt;/span&gt;&lt;br /&gt;:set nocompatible&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# view special characters in a vim session&lt;/span&gt;&lt;br /&gt;:set list&lt;br /&gt;:set nolist &lt;span style="color: #3333ff;"&gt;# disable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# set search result hilighting &lt;/span&gt;&lt;br /&gt;:set hlsearch&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# use different visible characters to see special characters in vim&lt;/span&gt;&lt;br /&gt;:set listchars=eol:$,tab:&amp;gt;-,trail:~,extends:&amp;gt;,precedes:&amp;lt; :set list &lt;span style="color: #3333ff;"&gt;# view line numbers&lt;/span&gt;&lt;br /&gt;:set nu&lt;br /&gt;:set nonu &lt;span style="color: #3333ff;"&gt;# disable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# enable linewrap (on by default)&lt;/span&gt;&lt;br /&gt;:set wrap&lt;br /&gt;:set nowrap &lt;span style="color: #3333ff;"&gt;#disable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# indenting &lt;/span&gt;&lt;span style="color: #3333ff;"&gt;source code (setup)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;:set et&lt;/span&gt; &lt;span style="color: #3333ff;"&gt;# expand tabs to spaces&lt;br /&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;:set sw=4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;:set smarttab&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;# Manually choose the language for syntax highlighting&lt;/div&gt;&lt;span style="color: black;"&gt;:setf &lt;i&gt;language&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;:setf html&amp;nbsp; &lt;span style="color: blue;"&gt;# example&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;# The available languages for syntax highlighting&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;i&gt;# can be found in the vim install directory.&amp;nbsp;&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span style="color: black;"&gt;&lt;span style="color: blue;"&gt;# In my system, it was /usr/share/vim/vim72/syntax&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# indenting source code (usage)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;1) in command mode press v to and arrows to select a range of lines&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;2) after selecting, press ==&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;a href="http://vim.wikia.com/wiki/Indenting_source_code"&gt;&lt;i&gt;http://vim.wikia.com/wiki/Indenting_source_code&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# indent multiple lines (not necessarily source code)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;1) in command mode press v and arrows to select a range of lines&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;2) type shift &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;shift &amp;lt; will shift a block back&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# compatibility mode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# by default, vim will enter into compatibility mode when loading.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Disable this behavior one of two ways&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 1) Create a .vimrc in your home directory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# 2) Within the vim command line, type :set nocompatible&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# trim whitespace at end of line&lt;/span&gt;&lt;br /&gt;:1,$s/[ &amp;lt;tab&amp;gt;]*$//&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# get vim to return the previous position when editing files&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;" Tell vim to remember certain things when we exit&lt;br /&gt;"  '10 : marks will be remembered for up to 10 previously edited files&lt;br /&gt;"  "100 : will save up to 100 lines for each register&lt;br /&gt;"  :20 : up to 20 lines of command-line history will be remembered&lt;br /&gt;"  % : saves and restores the buffer list&lt;br /&gt;"  n... : where to save the viminfo files&lt;br /&gt;set viminfo='10,\"100,:20,%,n~/.viminfo&lt;br /&gt;&lt;br /&gt;" when we reload, tell vim to restore the cursor to the saved position&lt;br /&gt;augroup JumpCursorOnEdit&lt;br /&gt;au!&lt;br /&gt;autocmd BufReadPost *&lt;br /&gt;\ if expand("&lt;afile&gt;:p:h") !=? $TEMP |&lt;br /&gt;\ if line("'\"") &amp;gt; 1 &amp;amp;&amp;amp; line("'\"") &amp;lt;= line("$") |&lt;br /&gt;\ let JumpCursorOnEdit_foo = line("'\"") |&lt;br /&gt;\ let b:doopenfold = 1 |&lt;br /&gt;\ if (foldlevel(JumpCursorOnEdit_foo) &amp;gt; foldlevel(JumpCursorOnEdit_foo - 1)) |&lt;br /&gt;\ let JumpCursorOnEdit_foo = JumpCursorOnEdit_foo - 1 |&lt;br /&gt;\ let b:doopenfold = 2 |&lt;br /&gt;\ endif |&lt;br /&gt;\ exe JumpCursorOnEdit_foo |&lt;br /&gt;\ endif |&lt;br /&gt;\ endif&lt;br /&gt;" Need to postpone using "zv" until after reading the modelines.&lt;br /&gt;autocmd BufWinEnter *&lt;br /&gt;\ if exists("b:doopenfold") |&lt;br /&gt;\ exe "normal zv" |&lt;br /&gt;\ if(b:doopenfold &amp;gt; 1) |&lt;br /&gt;\ exe "+".1 |&lt;br /&gt;\ endif |&lt;br /&gt;\ unlet b:doopenfold |&lt;br /&gt;\ endif&lt;br /&gt;augroup END&lt;br /&gt;&lt;/afile&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session"&gt;&lt;span style="font-style: italic;"&gt;http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=789327"&gt;&lt;i&gt;http://ubuntuforums.org/showthread.php?t=789327&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;a href="http://www.oualline.com/vim-cook.html"&gt;&lt;i&gt;http://www.oualline.com/vim-cook.html&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/1675688/make-vim-show-all-white-spaces-as-a-character"&gt;http://stackoverflow.com/questions/1675688/make-vim-show-all-white-spaces-as-a-character&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jamesreubenknowles.com/set-vim-syntax-language-270"&gt;http://jamesreubenknowles.com/set-vim-syntax-language-270&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3058594689090290688?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3058594689090290688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3058594689090290688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3058594689090290688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3058594689090290688'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/05/vim-settings.html' title='vim settings'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3924728281464223936</id><published>2009-02-01T19:29:00.004-06:00</published><updated>2010-08-16T15:47:02.218-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='port'/><category scheme='http://www.blogger.com/atom/ns#' term='alternate port'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>svn+ssh on alternate port</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Setup the config&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# Add the following lines to ~/.subversion/config&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# must be put in the [tunnels] section of the config file&lt;/span&gt;&lt;br /&gt;sshnew=ssh -l &lt;span style="font-style: italic;"&gt;user&lt;/span&gt; -p &lt;span style="font-style: italic;"&gt;2222&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Execute the svn:&lt;/span&gt;&lt;br /&gt;svn co svn+sshnew://servername.com/path/to/repository/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3924728281464223936?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3924728281464223936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3924728281464223936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3924728281464223936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3924728281464223936'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/02/svnssh-on-alternate-port.html' title='svn+ssh on alternate port'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1833048717825288411</id><published>2009-02-01T13:15:00.004-06:00</published><updated>2011-02-23T10:12:58.013-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='raw'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><title type='text'>Djanog show model query</title><content type='html'>&lt;pre&gt;&lt;span class="k"&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;Show the raw SQL generated by a model access:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;# DEBUG needs to be set True&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;&lt;/span&gt;&amp;gt;&amp;gt;&amp;gt; from&lt;/span&gt; &lt;span class="nn"&gt;django.db&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;br /&gt;&lt;span class="gp"&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;queries&lt;/span&gt;&lt;br /&gt;&lt;span class="go"&gt;[{'sql': 'SELECT polls_polls.id,polls_polls.question,polls_polls.pub_date FROM polls_polls',&lt;/span&gt;&lt;br /&gt;&lt;span class="go"&gt;'time': '0.002'}]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;``sql``  &lt;span style="color: #3333ff;"&gt;# The raw SQL statement&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;``time``&lt;/span&gt; # How long the statement took to execute, in seconds.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;Reset the queries list returned above:&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Times, 'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-weight: normal; white-space: normal;"&gt;&lt;pre style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="k"&gt;&amp;gt;&amp;gt;&amp;gt; from&lt;/span&gt; &lt;span class="nn"&gt;django import db&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="nn"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;"&gt;&lt;pre style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="k"&gt;&amp;gt;&amp;gt;&amp;gt; db.reset_queries()&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="k"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="k"&gt;&lt;i&gt;&lt;a href="http://docs.djangoproject.com/en/dev/faq/models/"&gt;http://docs.djangoproject.com/en/dev/faq/models/&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-style: italic;"&gt;&lt;a href="http://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is-running"&gt;http://docs.djangoproject.com/en/dev/faq/models/#how-can-i-see-the-raw-sql-queries-django-is-running&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&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/11349913-1833048717825288411?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1833048717825288411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1833048717825288411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1833048717825288411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1833048717825288411'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/02/djanog-show-model-query.html' title='Djanog show model query'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-521363025930051796</id><published>2009-01-17T13:07:00.004-06:00</published><updated>2009-01-17T13:18:02.055-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='htpasswd'/><category scheme='http://www.blogger.com/atom/ns#' term='LoadModule'/><category scheme='http://www.blogger.com/atom/ns#' term='AuthType Basic'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='webfaction'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='httpd'/><category scheme='http://www.blogger.com/atom/ns#' term='htaccess'/><title type='text'>Secure Django Location with htaccess file (webfaction)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Basic steps to secure a Django account using htaccess file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;note, this examples assumes apache 2.2, in which the basic auth apache module changed.&lt;br /&gt;note, this example uses a WebFaction account but can be applied to any Django Apache install.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;1) Execute this command to create an htpassword file&lt;br /&gt;htpasswd -c /home/my_account/webapps/evesch/apache2/conf/.mypasswds my_user&lt;br /&gt;&lt;br /&gt;2) Execute this command to create a htgroups file&lt;br /&gt;echo "managers: my_user" &gt; /home/my_account/webapps/evesch/apache2/conf/.mygroups&lt;br /&gt;&lt;br /&gt;3) Modify your httpd.conf file to look like this.&lt;br /&gt;############# contents of /home/my_account/webapps/evesch/apache2  #####&lt;br /&gt;ServerRoot "/home/my_account/webapps/evesch/apache2"&lt;br /&gt;&lt;br /&gt;LoadModule dir_module modules/mod_dir.so&lt;br /&gt;LoadModule env_module modules/mod_env.so&lt;br /&gt;LoadModule log_config_module modules/mod_log_config.so&lt;br /&gt;LoadModule mime_module modules/mod_mime.so&lt;br /&gt;LoadModule python_module modules/mod_python.so&lt;br /&gt;LoadModule rewrite_module modules/mod_rewrite.so&lt;br /&gt;&lt;br /&gt;# added by me (joe)&lt;br /&gt;LoadModule auth_basic_module modules/mod_auth_basic.so&lt;br /&gt;LoadModule authn_file_module modules/mod_authn_file.so&lt;br /&gt;LoadModule authz_user_module modules/mod_authz_user.so&lt;br /&gt;LoadModule authz_groupfile_module modules/mod_authz_groupfile.so&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KeepAlive Off&lt;br /&gt;Listen 7637&lt;br /&gt;LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined&lt;br /&gt;CustomLog logs/access_log combined&lt;br /&gt;ServerLimit 2&lt;br /&gt;&lt;br /&gt;&lt;location&gt;&amp;lt;Location "/"&amp;gt;&lt;br /&gt;  PythonHandler django.core.handlers.modpython&lt;br /&gt;  PythonPath "['/home/my_account/webapps/evesch', '/home/my_account/webapps/evesch/lib/python2.5'] + sys.path"&lt;br /&gt;  SetEnv DJANGO_SETTINGS_MODULE myproject.settings&lt;br /&gt;  SetHandler python-program&lt;br /&gt;&lt;br /&gt; # added by me (joe)&lt;br /&gt;  AuthType Basic&lt;br /&gt;  AuthName "Under Construction"&lt;br /&gt;  AuthUserFile /home/my_account/webapps/evesch/apache2/conf/.mypasswds&lt;br /&gt;  AuthGroupFile /home/my_account/webapps/evesch/apache2/conf/.mygroups&lt;br /&gt;  Require group managers&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;br /&gt;&lt;/location&gt;&lt;br /&gt;##############################################&lt;br /&gt;&lt;br /&gt;4) restart your apache server and web browser&lt;br /&gt;/home/my_account/webapps/evesch/apache2/bin/stop&lt;br /&gt;/home/my_account/webapps/evesch/apache2/bin/start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://forum.webfaction.com/viewtopic.php?id=2363&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-521363025930051796?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/521363025930051796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=521363025930051796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/521363025930051796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/521363025930051796'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/01/secure-django-location-with-htaccess.html' title='Secure Django Location with htaccess file (webfaction)'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3842656859520116734</id><published>2009-01-17T12:43:00.003-06:00</published><updated>2009-01-17T13:06:12.129-06:00</updated><title type='text'>Show RAM Memory Usage (Linux)</title><content type='html'>&lt;pre  style="font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Show RAM used by given user (in MB)&lt;/span&gt;&lt;br /&gt;ps -u your_username -o rss,command | grep -v peruser | awk '{sum+=$1} END {print sum/1024}'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show RAM used by individual process (in KB)&lt;/span&gt;&lt;br /&gt;ps -u your_username -o rss,pid,command&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://forum.webfaction.com/viewtopic.php?id=2356&lt;/span&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/11349913-3842656859520116734?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3842656859520116734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3842656859520116734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3842656859520116734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3842656859520116734'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/01/show-ram-memory-usage-linux.html' title='Show RAM Memory Usage (Linux)'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8516942646191804977</id><published>2009-01-08T18:50:00.001-06:00</published><updated>2009-01-08T19:08:28.179-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='configure'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='httpd'/><category scheme='http://www.blogger.com/atom/ns#' term='mod_python'/><title type='text'>Compile httpd (Apache)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Http Configure options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;./configure --enable-so --with-mpm=worker --prefix=/opt/httpd/http2.2/  --enable-rewrite --enable-alias --with-port=8080 --enable-cgi --enable-spelling | tee jjj.configure | tee jjj.configure&lt;br /&gt;make | tee jjj.make&lt;br /&gt;make install | tee jjj.make&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mod_python Configure options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;./configure --with-apxs=/opt/httpd/http2.2/bin/apxs --with-python=/opt/python2.6/bin/python&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://cavedoni.com/2005/django-osx&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-8516942646191804977?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8516942646191804977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8516942646191804977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8516942646191804977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8516942646191804977'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/01/compile-httpd-apache.html' title='Compile httpd (Apache)'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4382732555099052471</id><published>2009-01-06T18:11:00.002-06:00</published><updated>2009-01-06T18:14:25.271-06:00</updated><title type='text'>Change keyboard in X</title><content type='html'>http://ubuntu-tutorials.com/2008/01/31/changing-the-system-keyboard-mapping-on-ubuntu-dvorak-vs-qwerty/&lt;br /&gt;http://xorg.freedesktop.org/archive/X11R7.0/doc/html/setxkbmap.1.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4382732555099052471?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4382732555099052471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4382732555099052471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4382732555099052471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4382732555099052471'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2009/01/change-keyboard-in-x.html' title='Change keyboard in X'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3865627335875064282</id><published>2008-12-16T11:26:00.009-06:00</published><updated>2010-01-20T13:55:43.008-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prune'/><category scheme='http://www.blogger.com/atom/ns#' term='too long'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='ls'/><title type='text'>Find Usage</title><content type='html'>&lt;strong&gt;"Grep" through each file in a directory:&lt;/strong&gt;&lt;br /&gt;ls xargs grep -i '&lt;em&gt;STRING&lt;/em&gt;'&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;List all directories and subdirectories in a directory&lt;/strong&gt;&lt;br /&gt;find . -type d&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;List all files in a directory no recursion &lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;# workaround&lt;/span&gt;&lt;span style="color:#3333ff;"&gt; for "&lt;em&gt;parameter list is too long&lt;/em&gt;".&lt;/span&gt;&lt;br /&gt;find . \( ! -name . -prune \) -name '&lt;em&gt;STRING*&lt;/em&gt;' -print&lt;br /&gt;find . -maxdepth 1 -name '&lt;em&gt;STRING*&lt;/em&gt;' -print&lt;span style="color:#3333ff;"&gt; # GNU find only&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remove all files in a directory no recursion &lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;# workaround for "&lt;em&gt;parameter list is too long&lt;/em&gt;".&lt;/span&gt;&lt;br /&gt;find . \( ! -name . -prune \) -name 'STRING&lt;em&gt;*&lt;/em&gt;' -print -exec rm {} \;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Find a file with a given inode and delete it&lt;/strong&gt;&lt;br /&gt;ls -lai &lt;span style="color:#3333ff;"&gt;# lists the inodes next to the files&lt;/span&gt;&lt;br /&gt;find . -inum 12345 -exec rm {} \; &lt;span style="color:#3333ff;"&gt;# finds and removes by inode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.faqs.org/qa/qa-1381.html"&gt;&lt;em&gt;http://www.faqs.org/qa/qa-1381.html&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sial.org/howto/shell/"&gt;http://sial.org/howto/shell/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3865627335875064282?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3865627335875064282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3865627335875064282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3865627335875064282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3865627335875064282'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/12/find-usage.html' title='Find Usage'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4524378506515111816</id><published>2008-10-13T23:31:00.019-05:00</published><updated>2008-10-14T00:51:01.972-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='manytoone'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='models'/><category scheme='http://www.blogger.com/atom/ns#' term='model'/><title type='text'>Django Model Many-to-One</title><content type='html'>&lt;pre class="literal-block"  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;&lt;span style="font-weight: bold;"&gt;Define the models&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;from django.db import models&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;Reporter&lt;/span&gt;(models.Model):&lt;br /&gt;.. first_name = models.CharField(max_length=30)&lt;br /&gt;.. last_name = models.CharField(max_length=30)&lt;br /&gt;.. email = models.EmailField(blank=True, null=True)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;__unicode__&lt;/span&gt;(self):&lt;br /&gt;.. &lt;span style="color: rgb(204, 153, 51);"&gt;return &lt;/span&gt;u"%s %s" % (self.first_name, self.last_name)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;Article&lt;/span&gt;(models.Model):&lt;br /&gt;.. headline = models.CharField(max_length=100)&lt;br /&gt;.. pub_date = models.DateField()&lt;br /&gt;.. reporter = models.ForeignKey(Reporter, blank=True, null=True)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;def&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;__unicode__&lt;/span&gt;(self):&lt;br /&gt;.. &lt;span style="color: rgb(204, 153, 51);"&gt;return&lt;/span&gt; self.headline&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;.. class&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;Meta&lt;/span&gt;:&lt;br /&gt;.... ordering = ('headline',)&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;------------------------------------------------&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Add some objects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;# import models from core.models&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; from core.models import Reporter, Article&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&gt;&gt; from datetime import datetime  &lt;span style="color: rgb(51, 51, 255);"&gt;# needed for inserting current time&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;# add some reporters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; r1 = Reporter(first_name="Joe", last_name="Jaz")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; r1.save()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; r2 = Reporter(first_name="Jane", last_name="Smith")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; r2.save()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;# add some articles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; a1 = Article(headline="Article1", pub_date=datetime(2008,10,14))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; a1.reporter = r1 &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;# can add separately &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; a1.save()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; a2 = Article(headline="Article2", pub_date=datetime(2008,10,15), reporter=r2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; a2.save()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;# show an article's reporter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;&gt;&gt; a1.reporter&lt;/span&gt;&lt;reporter:&gt;&lt;/reporter:&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;reporter:&gt;&lt;article:&gt;&lt;br /&gt;&lt;/article:&gt;&lt;/reporter:&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;Reporter: Joe Jaz&amp;gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;reporter:&gt;&lt;article:&gt;&lt;reporter:&gt;&lt;/reporter:&gt;&lt;/article:&gt;&lt;/reporter:&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;reporter:&gt;&gt;&gt;&gt; a2.reporter.first_name&lt;br /&gt;'Jane'&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# create an article "under" a Reporter via the Reporter object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# the 'article_set' method is generated on model creation using the lower-case model name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# the create method automatically does a save()&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; a3 = r1.article_set.create(headline="Article3", pub_date=datetime.now())&lt;br /&gt;&gt;&gt;&gt; a3.headline&lt;br /&gt;'Article3'&lt;br /&gt;&gt;&gt;&gt; a3&lt;/reporter:&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&amp;lt;Article: Article1&amp;gt;&lt;/span&gt;  &lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# returns object with Article type&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;reporter:&gt;&lt;article:&gt;  &gt;&gt;&gt; a3.reporter&lt;br /&gt;&lt;/article:&gt;&lt;/reporter:&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;Reporter: Joe Jaz&amp;gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;reporter:&gt;&lt;article:&gt;&lt;reporter:&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; # returns object with Reporter type - the article reporter&lt;br /&gt;# create an article with no reporter and then add it to a particular reporters set of articles&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# the add method automatically does a save()&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; a4 = Article(headline="Article4", pub_date=datetime.now())&lt;br /&gt;&gt;&gt;&gt; r2.article_set.add(a4)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# show all of the given reporter's articles&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; r2.article_set.all()&lt;br /&gt;[&amp;lt;Article: Article2&amp;gt;, &amp;lt;Article: Article4&amp;gt;]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# count the number of articles that belong to a reporter&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt;&gt;&gt; r2.record_set.count()&lt;br /&gt;2&lt;br /&gt;&gt;&gt;&gt; r1.record_set.count()&lt;br /&gt;2&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# associate article 4 with reporter 1 (instead of reporter 2)&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; r1.article_set.add(a4)&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# we can assign it back and use different syntax this time&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; a4.reporter = r2&lt;br /&gt;&gt;&gt;&gt; a4.save()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# we can assign multiple articles to a reporter at a time&lt;br /&gt;# this syntax calls save automatically&lt;br /&gt;&lt;/span&gt;&gt;&gt;&gt; r1.article_set = [a2, a4]&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# we can create an article and assign it with a reporter_id instead of the reporter object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# the reporter_id field is generated with the model&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; a5 = Article(headline="Article5",pub_date=datetime.now(),reporter_id=r1.id)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&gt;&gt;&gt; a5.save()&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# or reporter_id can be a string&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; a6 = Article(headline="Article6",pub_date=datetime.now(), reporter_id="1")&lt;br /&gt;&gt;&gt;&gt; a6.save()&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# Do a query to find reporters of article 1 and article 3&lt;/span&gt;&lt;br /&gt;&gt;&gt;&gt; Reporter.objects.filter(article__in=[a1,a3])&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://www.djangoproject.com/documentation/models/many_to_one/&lt;/span&gt;&lt;/reporter:&gt;&lt;/article:&gt;&lt;/reporter:&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4524378506515111816?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4524378506515111816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4524378506515111816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4524378506515111816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4524378506515111816'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/10/django-model-many-to-one.html' title='Django Model Many-to-One'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-8662390050888837840</id><published>2008-10-12T16:46:00.007-05:00</published><updated>2008-10-13T23:31:52.732-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='recursive'/><category scheme='http://www.blogger.com/atom/ns#' term='manytomany'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='onetoone'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django OneToMany &amp; ManyToMany Recursive Models</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Define the models in core.models.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;from django.db import models&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);"&gt;Place&lt;/span&gt;(models.Model):&lt;br /&gt;   .. name = models.CharField(max_length=50);&lt;br /&gt;..  parent = models.ForeignKey('self', null=True);&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(204, 153, 51);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;..&lt;/span&gt; def&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;__unicode__&lt;/span&gt;(self):&lt;br /&gt;           &lt;span style="color: rgb(204, 153, 51);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;....&lt;/span&gt;  return&lt;/span&gt; "%s &gt; %s" % (self.name,self.parent )&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;class&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;Fan&lt;/span&gt;(models.Model):&lt;br /&gt;.. name = models.CharField(max_length=8)&lt;br /&gt;   .. idol = models.ManyToManyField('self', null=True)&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(204, 153, 51);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;..&lt;/span&gt; def&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;__unicode__&lt;/span&gt;(self):&lt;br /&gt;           &lt;span style="color: rgb(204, 153, 51);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.... &lt;/span&gt;return&lt;/span&gt; self.name&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interact with a Foreign Key (One to Many) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# import Place model&lt;/span&gt;&lt;br /&gt;from core.models import Place&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# add a Place and save&lt;/span&gt;&lt;br /&gt;world = Place(name="Earth", parent=None)&lt;br /&gt;world.save()&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# add two Places with the world as a parent&lt;/span&gt;&lt;br /&gt;country1 = Place(name="US", parent=world)&lt;br /&gt;country1.save()&lt;br /&gt;country2 = Place(name="UK", parent=world)&lt;br /&gt;country2.save()&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# add two Places with the US as a parent&lt;/span&gt;&lt;br /&gt;city1 = Place(name="Chicago")&lt;br /&gt;city1.parent = country1  &lt;span style="color: rgb(51, 51, 255);"&gt;# make the association through an update&lt;/span&gt;&lt;br /&gt;city1.save()&lt;br /&gt;city2 = Place(name="New York", parent=country1) &lt;span style="color: rgb(51, 51, 255);"&gt;# associate through insert&lt;/span&gt;&lt;br /&gt;city2.save()&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# select all the places &lt;/span&gt;&lt;br /&gt;Place.objects.all()&lt;br /&gt;&lt;br /&gt;------------------------------------------------------&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interact with a Many to Many model&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;from core.models import &lt;/span&gt;&lt;span&gt;Fan&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# Define 2 people&lt;/span&gt;&lt;br /&gt;person1 = &lt;/span&gt;&lt;span&gt;Fan(name="Joe")&lt;br /&gt;person1.save()&lt;br /&gt;person2 = Fan(name="Jane")&lt;br /&gt;person2.save()&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# associate the two people&lt;/span&gt;&lt;br /&gt;person1.idol.add(person2)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;------------------------------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-8662390050888837840?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/8662390050888837840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=8662390050888837840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8662390050888837840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/8662390050888837840'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/10/django-onetomany-manytomany-models.html' title='Django OneToMany &amp; ManyToMany Recursive Models'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-9043652424231893673</id><published>2008-09-22T14:18:00.004-05:00</published><updated>2008-09-22T14:52:14.136-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jar'/><category scheme='http://www.blogger.com/atom/ns#' term='class'/><category scheme='http://www.blogger.com/atom/ns#' term='manifest'/><title type='text'>Java Jar Commands</title><content type='html'>&lt;strong&gt;Creating the File structure&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;# simple suggested structure&lt;/span&gt;&lt;br /&gt;project_directory/&lt;br /&gt;\&lt;br /&gt; _ bin/  &lt;span style="color:#3333ff;"&gt;# binary files&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;   \_ byte_file.class &lt;/span&gt;&lt;span style="color:#3333ff;"&gt;# compiled java bytecode&lt;/span&gt;&lt;br /&gt; _src/  &lt;span style="color:#3333ff;"&gt;# source files  (optional)&lt;/span&gt;&lt;br /&gt; _META-INF/  &lt;span style="color:#3333ff;"&gt;# standard location for manifest file&lt;/span&gt;&lt;br /&gt;     \_MANIFEST.MF  &lt;span style="color:#3333ff;"&gt;# manifest file containing jar variables&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;Editing the MANIFEST.MF&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;The manifest can contain variables such as the following:&lt;/span&gt;&lt;br /&gt;Main-Class: &lt;em&gt;class_name&lt;/em&gt;  &lt;span style="color:#3333ff;"&gt; # name of a class with a "main" method that will run when jar is run. &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="color:#000000;"&gt;Class-path:&lt;/span&gt; &lt;em&gt;path/to/classes/in/package/  # path start at root of package &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;Create the Jar&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;jar -cvfm &lt;em&gt;jar_name.jar  path/to/manifest.mf  dir/to/class/files/&lt;/em&gt;&lt;br /&gt;jar -cvfm project.jar META-INF/MANIFEST.MF bin/&lt;br /&gt;  -c &lt;span style="color:#3333ff;"&gt;# compress into a jar&lt;/span&gt;&lt;br /&gt;  -v &lt;span style="color:#3333ff;"&gt;# verbose output&lt;/span&gt;&lt;br /&gt;  -f &lt;span style="color:#3333ff;"&gt;# compress to a file specified on the command line (versus to stdout)&lt;/span&gt;&lt;br /&gt;  -m &lt;span style="color:#3333ff;"&gt;# specify a path to a manifest file.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Execute the Jar&lt;/strong&gt;&lt;br /&gt;java -jar &lt;em&gt;jar_name.jar&lt;/em&gt; &lt;em&gt;&lt;arguments&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;Extract a Jar file&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;jar -xvf &lt;em&gt;jar_name.jar&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-9043652424231893673?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/9043652424231893673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=9043652424231893673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/9043652424231893673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/9043652424231893673'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/09/java-jar-commands.html' title='Java Jar Commands'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3439682210181914180</id><published>2008-08-19T21:02:00.003-05:00</published><updated>2008-08-19T21:04:31.598-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='timeout'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='ServerAliveInterval'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh_config'/><category scheme='http://www.blogger.com/atom/ns#' term='client'/><title type='text'>SSH Client Persistance</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Keep SSH connections from timing out&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;On your client, add this line to your /etc/ssh/ssh_config:&lt;/span&gt;&lt;br /&gt;ServerAliveInterval 30&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3439682210181914180?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3439682210181914180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3439682210181914180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3439682210181914180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3439682210181914180'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/08/ssh-client-persistance.html' title='SSH Client Persistance'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6209327962070484930</id><published>2008-08-09T12:30:00.008-05:00</published><updated>2009-04-25T16:13:48.597-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALSA'/><category scheme='http://www.blogger.com/atom/ns#' term='sound'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='OSS'/><category scheme='http://www.blogger.com/atom/ns#' term='asound'/><title type='text'>Sound Card Info</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Check what ALSA soundcards are available on a Linux system:&lt;/span&gt;&lt;br /&gt;cat /proc/asound/cards&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Check what features each ALSA card has:&lt;/span&gt;&lt;br /&gt;cat /proc/asound/devices&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# note that the left number column corresponds to a soundcard in the above list&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;List sound cards detected&lt;/span&gt;&lt;br /&gt;aplay -l&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Set the default sound card:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# Enter this into /etc/asound.conf or .asoundrc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="listing"&gt;pcm.!default {&lt;br /&gt;type hw&lt;br /&gt;card 1&lt;br /&gt;}&lt;br /&gt;ctl.!default {&lt;br /&gt;type hw&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;card 1&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre class="listing"&gt;&lt;span style="font-family:Georgia;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Using alsamixer to select which sound card to affect: &lt;/span&gt;&lt;br /&gt;alsamixer -c &lt;card_number_from_proc&gt;&amp;lt;sound_card_number_from_proc&amp;gt; &lt;/card_number_from_proc&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;strong&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Using mplayer with a non-default sound device&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;mplayer -ao oss:/dev/dsp *.mp3  &lt;span style="color: rgb(51, 51, 255);"&gt;# device 0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;mplayer -ao alsa:device=hw=0.0 *.mp3  &lt;span style="color: rgb(51, 51, 255);"&gt;# device 0&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;mplayer -ao oss:/dev/dsp1 *.mp3 &lt;span style="color: rgb(51, 51, 255);"&gt;# device 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;mplayer -ao alsa:device=how=1.0 *.mp3 &lt;span style="color: rgb(51, 51, 255);"&gt;# device 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://seehuhn.de/pages/alsa&lt;br /&gt;http://ubuntuforums.org/showthread.php?t=747054&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6209327962070484930?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6209327962070484930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6209327962070484930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6209327962070484930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6209327962070484930'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/08/sound-card-info.html' title='Sound Card Info'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7067922153987482612</id><published>2008-07-17T16:58:00.001-05:00</published><updated>2008-08-05T11:42:07.018-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sendmail'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='mail'/><category scheme='http://www.blogger.com/atom/ns#' term='postfix'/><title type='text'>Sendmail/Postfix Info</title><content type='html'>&lt;strong&gt;Sendmail view mailq:&lt;/strong&gt;&lt;br /&gt;mailq&lt;br /&gt;sendmail -bp&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Se&lt;/strong&gt;&lt;strong&gt;ndmail view verbose info:&lt;/strong&gt;&lt;br /&gt;sendmail -v&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unix.com.ua/orelly/networking/tcpip/ch10_08.htm"&gt;http://www.unix.com.ua/orelly/networking/tcpip/ch10_08.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Postfix Info&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.akadia.com/services/postfix_mta.html"&gt;http://www.akadia.com/services/postfix_mta.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7067922153987482612?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7067922153987482612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7067922153987482612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7067922153987482612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7067922153987482612'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/07/postfix-info.html' title='Sendmail/Postfix Info'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-6187591057230836110</id><published>2008-07-09T15:57:00.004-05:00</published><updated>2008-07-09T16:21:41.946-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='join command UNIX shell sh bash linux'/><title type='text'>Join UNIX Command</title><content type='html'>&lt;span style="color:#3333ff;"&gt;Join takes two &lt;u&gt;sorted&lt;/u&gt; text files and joins them together on common keys, similar to the Join SQL statements. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;Basic join syntax:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;join &lt;em&gt;file1 file2&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Specify a delimiter other than the default of whitespace (for input and output):&lt;/strong&gt;&lt;br /&gt;join -t&lt;em&gt;:&lt;/em&gt; &lt;em&gt;file1 file2&lt;/em&gt; &lt;span style="color:#3333ff;"&gt;# sets the delimiter to be a colon&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Join on specific columns in each file:&lt;/strong&gt;&lt;br /&gt;join -1 &lt;em&gt;1 &lt;/em&gt;-2 &lt;em&gt;1&lt;/em&gt; &lt;em&gt;file1 file2&lt;/em&gt; &lt;span style="color:#3333ff;"&gt;# this will make file1's first column join with the file2's first column. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Join on a specific column and output specific columns:&lt;/strong&gt;&lt;br /&gt;join -1&lt;em&gt;1 &lt;/em&gt;-2&lt;em&gt;1 &lt;/em&gt;-o &lt;em&gt;1.1 1.2 2.1 2.2 file1 file2&lt;/em&gt; &lt;span style="color:#3333ff;"&gt;# the -o &lt;/span&gt;&lt;span style="color:#3333ff;"&gt;options takes space-seperated arguments that take the form of file.column to specify only particular columns. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Specify filler text in a result column when two keys do not match between files:&lt;/strong&gt;&lt;br /&gt;join -e &lt;em&gt;"none" file1 file2&lt;/em&gt; -o 1.1 1.2 2.1 2.2 &lt;span style="color:#3333ff;"&gt;# the -e option needs to be used with -o&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.softpanorama.org/Tools/join.shtml"&gt;&lt;em&gt;&lt;span style="color:#000000;"&gt;http://www.softpanorama.org/Tools/join.shtml&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.computerhope.com/unix/ujoin.htm"&gt;&lt;em&gt;&lt;span style="color:#000000;"&gt;http://www.computerhope.com/unix/ujoin.htm&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-6187591057230836110?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/6187591057230836110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=6187591057230836110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6187591057230836110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/6187591057230836110'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/07/join-unix-command.html' title='Join UNIX Command'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1562601955463874510</id><published>2008-06-02T23:46:00.007-05:00</published><updated>2009-01-17T13:32:02.767-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='mod_python'/><title type='text'>Compile Python 2.5 From Source</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Download from Python web page&lt;br /&gt;&lt;/span&gt;http://www.python.org/&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;UnTAR and enter the directory&lt;/span&gt;&lt;br /&gt;tar -jxvf Python-2.5.2.tar.bz2&lt;br /&gt;cd Python-2.5.2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configure using an alternate install dir&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;(use ./configure -h for config options)&lt;/span&gt;&lt;br /&gt;./configure --prefix=/opt/python/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Build and install the software&lt;/span&gt;&lt;br /&gt;make | tee makelog&lt;br /&gt;make test | tee maketestlog&lt;br /&gt;make install | tee makeinstalllog&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;This will create a python binary.  If you specified the prefix, it will put it in the bin/ directory under the prefix directory. However, this compiles the command line python version.  To get it working with Apache, preform the following.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Download mod_python&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;http://www.modpython.org/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Untar and enter into the directory&lt;/span&gt;&lt;br /&gt;tar -zxvf  mod_python-3.3.1.tgz&lt;br /&gt;cd  mod_python-3.3.1&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configure mod_python.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;It needs to know where python binary to use, and the apache build tool apxs is located during the configure&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;./configure \&lt;br /&gt;  --with-apxs=/usr/sbin/apxs \  &lt;span style="color: rgb(51, 51, 255);"&gt;# the apache build tool&lt;/span&gt;&lt;br /&gt;  --with-python=/opt/python25/bin/python2.5 \  &lt;span style="color: rgb(51, 51, 255);"&gt;# path to python binary&lt;/span&gt;&lt;br /&gt;    | tee output.config&lt;br /&gt;make | tee output.make&lt;br /&gt;make install | tee output.makeinstall&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;make install should place a binary module in /etc/httpd/modules &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;(or /usr/lib/httpd/modules) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;The module will be called mod_python.so&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configure Apache&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;You will need to tell Apache to   load the module by adding the following line in the Apache   configuration file (httpd.conf)&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;LoadModule python_module modules/mod_python.so&lt;br /&gt;&amp;lt;Directory /path/to/somewhere &amp;gt;&lt;br /&gt;  AddHandler mod_python .py&lt;br /&gt;  PythonHandler mptest&lt;br /&gt;  PythonDebug On&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Imaging Support&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;To be able to manipulate images with python, you need the PIL library.  Download it from http://www.pythonware.com/products/pil/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;After untaring and entering the directory, install by:&lt;span style="color: rgb(0, 0, 0);"&gt; python setup.py install&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;It will copy files into your default (`which python`) python install. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://www.modpython.org/live/current/doc-html/inst-apacheconfig.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1562601955463874510?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1562601955463874510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1562601955463874510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1562601955463874510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1562601955463874510'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/06/compile-python-25-from-source.html' title='Compile Python 2.5 From Source'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-1201447496100879768</id><published>2008-04-20T12:01:00.010-05:00</published><updated>2008-04-21T20:47:16.342-05:00</updated><title type='text'>Basic apache .htaccess authentication</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;To restrict access to a specific directory&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Create a .htaccess file in the directory that you want to restrict&lt;/span&gt;&lt;br /&gt;AuthUserFile /path/to/.mypasswds&lt;br /&gt;AuthGroupFile /dev/null&lt;br /&gt;AuthName "Title for password box"&lt;br /&gt;AuthType Basic&lt;br /&gt;require user &lt;span style="font-style: italic;"&gt;username&lt;/span&gt;&lt;br /&gt;&lt;span&gt;require user user2 &lt;span style="color: rgb(0, 0, 153);"&gt;# you can add more users by setting multiple require statements&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;To generate an encrypted password&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Execute this shell command which will create the file .mypasswds with a hashed password entry&lt;/span&gt;&lt;br /&gt;htpasswd -c &lt;span style="font-style: italic;"&gt;/path/to/.mypasswds&lt;/span&gt; &lt;span style="font-style: italic;"&gt;user&lt;/span&gt;name&lt;br /&gt;New password: &lt;span style="font-style: italic;"&gt;password&lt;/span&gt;&lt;br /&gt;Re-type new password: &lt;span style="font-style: italic;"&gt;password&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enable the configuration&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;The module mod_auth must be loaded in Apache2 config&lt;/span&gt;&lt;br /&gt;LoadModule auth_module modules/mod_auth.so&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Edit the Apache2 config files to set the AllowOverride for the directory you want to protect&lt;/span&gt;&lt;br /&gt;&amp;lt;Directory "/var/www/html"&amp;gt;&lt;br /&gt;Options Indexes FollowSymLinks&lt;br /&gt;AllowOverride AuthConfig&lt;br /&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;http://www.yolinux.com/TUTORIALS/LinuxTutorialApacheAddingLoginSiteProtection.html&lt;br /&gt;http://engr.oregonstate.edu/computing/web/43&lt;br /&gt;http://httpd.apache.org/docs/2.0/howto/auth.html&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-1201447496100879768?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/1201447496100879768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=1201447496100879768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1201447496100879768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/1201447496100879768'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/04/basic-apache-htaccess-authentication.html' title='Basic apache .htaccess authentication'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3069896831683302510</id><published>2008-04-17T21:47:00.009-05:00</published><updated>2008-06-03T00:08:47.000-05:00</updated><title type='text'>Compile PHP 5 From Source</title><content type='html'>&lt;span style="color: rgb(51, 51, 255);"&gt;Before configuring, you must have development versions of the given packages installed.  For example, for mcrypt support, you must install mcrypt-devel.  In the list below, this applies to zlib-devel, libxml2-devel, mysql-devel, bzip2-devel, httpd-devel, and mhash-devel. Some configure options below didn't require a development version. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;View configure options&lt;/span&gt;&lt;br /&gt;./configure --help&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Many configure options allow an optional =/path syntax to allow you to specify a non-default location for the development libraries.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Special configure notes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;The --prefix config option allows you to specify a non-default location to install the php distribution (The root of the install, if you will)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;The --exec-prefix directory allows you to specify an alternate location to install the compiled PHP binary files.  In this example, they are set to the same location in the /opt directory.&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Highly recommended to install &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;--with-apxs (Apache 1.x) or --with-apxs2 (Apache 2.x).  This creates the Apache module called libphp5.so that is normally installed in the Apache modules directory.  This module is what Apache uses to run PHP web sites (and not the command line PHP program from the --prefix directory).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Configure command&lt;/span&gt;&lt;br /&gt;./configure \&lt;br /&gt;--prefix=/opt/php5/dist \&lt;br /&gt;--exec-prefix=/opt/php5/dist \&lt;br /&gt;--with-mysql \&lt;br /&gt;--with-pdo-mysql \&lt;br /&gt;--with-zlib \&lt;br /&gt;--with-bz2 \&lt;br /&gt;--enable-zip \&lt;br /&gt;--with-openssl \&lt;br /&gt;--with-mcrypt \&lt;br /&gt;--with-mhash \&lt;br /&gt;--with-curl \&lt;br /&gt;--with-gd \&lt;br /&gt;--with-jpeg-dir \&lt;br /&gt;--with-png-dir \&lt;br /&gt;--with-ttf \&lt;br /&gt;--with-apxs2 \&lt;br /&gt;--enable-ftp \&lt;br /&gt;--enable-exif \&lt;br /&gt;--with-freetype-dir \&lt;br /&gt;--enable-calendar \&lt;br /&gt;--enable-soap \&lt;br /&gt;--enable-mbstring \&lt;br /&gt;--with-libxml-dir=/usr/lib&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Brief explanation of given config options&lt;/span&gt;&lt;br /&gt;--prefix=/opt/php5/dist     &lt;span style="color: rgb(102, 0, 204);"&gt;# sets where the root of the install will be&lt;/span&gt;&lt;br /&gt;--exec-prefix=/opt/php5/dist  &lt;span style="color: rgb(51, 51, 255);"&gt;# sets where the root of the binary install will be&lt;/span&gt;&lt;br /&gt;--with-mysql        &lt;span style="color: rgb(51, 51, 255);"&gt;# add mysql support&lt;/span&gt;&lt;br /&gt;--with-pdo-mysql    &lt;span style="color: rgb(51, 51, 255);"&gt;# add support for php mysql database abstraction layer&lt;/span&gt;&lt;br /&gt;--with-zlib         &lt;span style="color: rgb(51, 51, 255);"&gt;# add support for compressing using zlib&lt;br /&gt;&lt;/span&gt;--with-bz2                   &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for bunzip2&lt;br /&gt;&lt;/span&gt;--enable-zip                 &lt;span style="color: rgb(51, 51, 255);"&gt;# adds zip compression support&lt;/span&gt;&lt;br /&gt;--with-openssl               &lt;span style="color: rgb(51, 51, 255);"&gt;# adds openssl functionality&lt;/span&gt;&lt;br /&gt;--with-mcrypt                &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for mycrypt style functions (encryption)&lt;/span&gt;&lt;br /&gt;--with-mhash                 &lt;span style="color: rgb(51, 51, 255);"&gt;# adds special hashing functions &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;--with-curl                  &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for cURL which &lt;/span&gt;&lt;br /&gt;--with-gd                    &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for manipulating images with php&lt;/span&gt;&lt;br /&gt;--with-jpeg-dir              &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for manipulating jpegs with php&lt;/span&gt;&lt;br /&gt;--with-png-dir               &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for manipulating png files with php&lt;/span&gt;&lt;br /&gt;--with-ttf                   &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for manipulating true type fonts&lt;/span&gt;&lt;br /&gt;--with-apxs2                 &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for apache2 module (important)&lt;/span&gt;&lt;br /&gt;--enable-ftp                 &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for php ftp&lt;/span&gt;&lt;br /&gt;--enable-exif                &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for manipulating Image metadata&lt;/span&gt;&lt;br /&gt;--with-freetype-dir          &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for FreeType2&lt;/span&gt;&lt;br /&gt;--enable-calendar            &lt;span style="color: rgb(51, 51, 255);"&gt;# don't know&lt;/span&gt;&lt;br /&gt;--enable-soap                &lt;span style="color: rgb(51, 51, 255);"&gt;# adds support for SOAP XML stuff&lt;/span&gt;&lt;br /&gt;--enable-mbstring &lt;span style="color: rgb(0, 0, 153);"&gt;# multi-byte string support&lt;/span&gt;&lt;br /&gt;--with-libxml-dir=/usr/lib   &lt;span style="color: rgb(51, 51, 255);"&gt;# adds XML support (required) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Compile and install PHP&lt;/span&gt;&lt;br /&gt;make | tee output.make&lt;br /&gt;make test | tee output.maketest&lt;br /&gt;make install | tee output.makeinstall&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Special notes about the compile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;When using --with-apxs or --with-apxs2, the libphp5.so will be compiled in the "libs/" directory of the PHP source code.  The make install will try to copy this automatically to your Apache modules directory. (In the case of the above example, make install placed the module in the /etc/httpd/modules directory - this is really a simlink to /usr/lib/httpd/modules/ in this case.)&lt;br /&gt;The command line PHP binary will be located in the bin/ directory of the path specified by the --prefix option.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Install the mod_php shared library into apache&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;After a compile of php with the --with-apxs or --with-apxs2, and placement in the /etc/httpd/modules directory (as mentioned above), the module needs to be referenced in the httpd.conf&lt;br /&gt;&lt;/span&gt;LoadModule php5_module /usr/lib/httpd/modules/libphp5.so&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;# Also, the following needs to be added to the httpd.conf&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;# Cause the PHP interpreter to handle files with a .php extension&lt;/span&gt;&lt;br /&gt;AddHandler php5-script php&lt;br /&gt;AddType text/html       php&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;# PHP Syntax Coloring&lt;/span&gt;&lt;br /&gt;AddType application/x-httpd-php-source phps&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;# Add index.php to the list of files that will be served as directory&lt;/span&gt;&lt;br /&gt;DirectoryIndex index.php&lt;br /&gt;&lt;br /&gt;http://dan.drydog.com/apache2php.html&lt;br /&gt;http://us.php.net/manual/en/configure.php#configure.options.servers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3069896831683302510?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3069896831683302510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3069896831683302510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3069896831683302510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3069896831683302510'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/04/compile-php-5-from-source.html' title='Compile PHP 5 From Source'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5639718220793983626</id><published>2008-02-07T20:56:00.006-06:00</published><updated>2009-04-19T12:21:11.791-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='menu.lst'/><category scheme='http://www.blogger.com/atom/ns#' term='chainloading'/><category scheme='http://www.blogger.com/atom/ns#' term='grub'/><category scheme='http://www.blogger.com/atom/ns#' term='config'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Grub Config</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Example of menu.lst booting a kernel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;title Item Title Goes here&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# this first root option selects which partition to set GRUB root&lt;/span&gt;&lt;br /&gt;root (hd0,0) &lt;span style="color: rgb(51, 51, 255);"&gt;# name of the partition that grub should look for the kernel image &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;# the second root option in the kernel statement is the root partition that Linux will mount to&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;kernel (hd0,4)/boot/vmlinuz ro root=/dev/sda5 &lt;span style="color: rgb(51, 51, 255);"&gt;# location of read only image.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;initrd (hd0,4)/boot/initrd.img&lt;/span&gt; # location of initrd image&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;boot &lt;/span&gt;# actually boots the system with the given commands&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Example of menu.lst chainloading an OS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;title Item Title Goes here&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;root (hd0,1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;chainloader +1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Installing grub into a boot sector (within the os)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sudo grub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt; root (hd0,0)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt; setup (hd0)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0,0 );"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&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/11349913-5639718220793983626?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5639718220793983626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5639718220793983626' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5639718220793983626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5639718220793983626'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2008/02/grub-config.html' title='Grub Config'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3801233406972421629</id><published>2007-11-22T13:34:00.003-06:00</published><updated>2008-04-08T00:54:29.548-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grant'/><category scheme='http://www.blogger.com/atom/ns#' term='create user'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='add user'/><title type='text'>Create MySQL User</title><content type='html'>&lt;span style="font-weight: bold;"&gt;To create a user in mysql, issue the following:&lt;br /&gt;&lt;/span&gt;&lt;span class="syntax"&gt;&lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;CREATE&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_identifier"&gt;USER&lt;/span&gt; &lt;span class="syntax_quote syntax_quote_single"&gt;'&lt;span style="font-style: italic;"&gt;user&lt;/span&gt;'&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_user"&gt;@&lt;/span&gt;&lt;span class="syntax_quote syntax_quote_single"&gt;'&lt;span style="font-style: italic;"&gt;host&lt;/span&gt;'&lt;/span&gt; &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;IDENTIFIED&lt;/span&gt;  &lt;span class="syntax_alpha syntax_alpha_reservedWord"&gt;BY&lt;/span&gt;  &lt;span class="syntax_quote syntax_quote_single"&gt;'&lt;span style="font-style: italic;"&gt;password&lt;/span&gt;'&lt;/span&gt;&lt;span class="syntax_punct syntax_punct_queryend"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;To create a user in mysql and assign grants, issue the following:&lt;/span&gt;&lt;br /&gt;grant&lt;span style="font-style: italic;"&gt; privilege&lt;/span&gt; on &lt;schema&gt;&lt;span style="font-style: italic;"&gt;database.table&lt;/span&gt; to '&lt;span style="font-style: italic;"&gt;user&lt;/span&gt;'@'&lt;span style="font-style: italic;"&gt;host&lt;/span&gt;' [with grant option] [identified by &lt;span style="font-style: italic;"&gt;"password&lt;/span&gt;"]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Available privileges&lt;/span&gt;:&lt;br /&gt;ALL [PRIVILEGES]&lt;br /&gt;ALTER&lt;br /&gt;CREATE&lt;br /&gt;DELETE&lt;br /&gt;DROP&lt;br /&gt;FILE  &lt;br /&gt;INDEX&lt;br /&gt;INSERT&lt;br /&gt;PROCESS&lt;br /&gt;USAGE&lt;br /&gt;RELOAD&lt;br /&gt;SELECT&lt;br /&gt;SHUTDOWN&lt;br /&gt;UPDATE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To revoke privileges&lt;/span&gt;:&lt;br /&gt;revoke &lt;span style="font-style: italic;"&gt;privilege &lt;/span&gt;on &lt;span style="font-style: italic;"&gt;database.table&lt;/span&gt; from &lt;span style="font-style: italic;"&gt;user&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;To revoke grant option:&lt;/span&gt;&lt;br /&gt;revoke grant option on &lt;/schema&gt;&lt;span style="font-style: italic;"&gt;database.table&lt;/span&gt; from &lt;span style="font-style: italic;"&gt;user&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To change a password:&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;UPDATE mysql.user SET Password=PASSWORD('&lt;span style="font-style: italic;"&gt;password&lt;/span&gt;')&lt;br /&gt;WHERE User='&lt;span style="font-style: italic;"&gt;someuser&lt;/span&gt;';&lt;br /&gt;&lt;br /&gt;http://www.tech-faq.com/reset-mysql-password.shtml&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3801233406972421629?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3801233406972421629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3801233406972421629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3801233406972421629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3801233406972421629'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/11/create-mysql-user.html' title='Create MySQL User'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-4418415115686602607</id><published>2007-11-22T13:32:00.007-06:00</published><updated>2008-07-08T16:48:54.404-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='safe mode'/><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='reset'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><title type='text'>Reset MYSQL root password</title><content type='html'>&lt;span style="FONT-WEIGHT: bold"&gt;Reset the mysql "root" password:&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;1) Log in as UNIX root&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;2) Stop the MySQL Deamon (may vary depending on OS)&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;/etc/rc.d/init.d/mysqld stop &lt;/span&gt;&lt;br /&gt;3) Start mysql in safe mode&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &lt;/span&gt;&lt;br /&gt;4) Log into the mysql schema as root in safe mode&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;/usr/local/mysql/bin/mysql --user=root mysql &lt;/span&gt;&lt;br /&gt;5) Run the update to change the password&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;UPDATE user SET Password=PASSWORD('YOUR_PASSWORD') &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;WHERE Host='localhost' AND User='root';&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;flush privileges;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;6) Restart the MySQL server deamon&lt;/span&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;/etc/rc.d/init.d/mysqld start &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Method set a root password&lt;/span&gt;&lt;br /&gt;mysqladmin -u root password 'new-password'&lt;br /&gt;&lt;br /&gt;&lt;em&gt;http://help.hardhathosting.com/question.php/200&lt;/em&gt; &lt;span style="FONT-STYLE: italic"&gt;&lt;password&gt;&lt;/password&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-4418415115686602607?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/4418415115686602607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=4418415115686602607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4418415115686602607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/4418415115686602607'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/11/reset-mysql-root-password.html' title='Reset MYSQL root password'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2207514944293619936</id><published>2007-09-14T15:18:00.002-05:00</published><updated>2010-01-20T14:05:09.104-06:00</updated><title type='text'>Terminal Information</title><content type='html'>&lt;strong&gt;The $TERM environment variable sets the terminal type. &lt;/strong&gt;&lt;strong&gt;The terminal type environment variable should specify a terminal type definition file that is usually located in the /usr/share/lib/terminfo/ directory. &lt;/strong&gt;&lt;strong&gt;This terminal type in the shell environment should match the terminal type setting in your terminal emulator program (xterm, putty, gterm, secureCRT, etc. ). &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Set this environment variable to override default terminfo DB location&lt;/strong&gt;&lt;br /&gt;TERMINFO&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use this to query a terminfo DB in a nondefault location&lt;/strong&gt;&lt;br /&gt;infocmp -A /nonstandard/terminfo/DB/location/path&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Terminfo default DB location&lt;/strong&gt;&lt;br /&gt;/usr/share/lib/terminfo&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Show differences between terms&lt;/strong&gt;&lt;br /&gt;infocmp -d vt100 vt220&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Show similarities between terms&lt;/strong&gt;&lt;br /&gt;infocmp -c vt100 vt220&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Show term capabilities&lt;/strong&gt;&lt;br /&gt;infocmp &lt;span style="COLOR: rgb(51,51,255)"&gt;# no args defaults to $TERM var&lt;br /&gt;&lt;/span&gt;infocmp -I &lt;span style="COLOR: rgb(51,51,255)"&gt;# no args defaults to $TERM var&lt;/span&gt;&lt;br /&gt;infocmp &lt;em&gt;term_name&lt;/em&gt; &lt;span style="COLOR: rgb(51,51,255)"&gt;# term_name is a filename in the terminfo DB location&lt;/span&gt;&lt;br /&gt;infocmp -&lt;span style="COLOR: rgb(51,51,255)"&gt;1 # one item per line&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Print ansi escape sequences for a given terminal capability&lt;/strong&gt;&lt;br /&gt;tput &lt;em&gt;option&lt;/em&gt; &lt;span style="COLOR: rgb(51,51,255)"&gt;# option listed in infocmp output&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(51,51,255)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;Compile a terminfo source file to be stored in the TERMINFO dir&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;tic &lt;em&gt;filename&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Create Windows style newline characters from the terminal&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;type:&lt;/span&gt; Ctrl-v Ctrl-m&lt;br /&gt;printf '\r\n'&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Display Windows style newline characters&lt;/strong&gt;&lt;br /&gt;cat -ve &lt;em&gt;filename&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Enable color in vim for terminals that support it (xterm, vt100, linux)&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Add the following to the ~/.vimrc&lt;/span&gt;&lt;br /&gt;set t_Co=8&lt;br /&gt;set t_Sf=^[[3%p1%dm&lt;br /&gt;set t_Sb=^[[4%p1%dm&lt;br /&gt;syntax on&lt;br /&gt;&lt;br /&gt;Replace the ^[ with a real &lt;esc&gt; key (type CTRL-V ESC)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vimdoc.sourceforge.net/htmldoc/syntax.html#xterm-color"&gt;&lt;em&gt;http://vimdoc.sourceforge.net/htmldoc/syntax.html#xterm-color&lt;/em&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vim.wikia.com/wiki/Color_highlighting_on_telnet"&gt;http://vim.wikia.com/wiki/Color_highlighting_on_telnet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Newline"&gt;&lt;em&gt;http://en.wikipedia.org/wiki/Newline&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2207514944293619936?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2207514944293619936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2207514944293619936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2207514944293619936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2207514944293619936'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/09/terminal-information.html' title='Terminal Information'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7899388434231059457</id><published>2007-08-22T19:25:00.011-05:00</published><updated>2010-10-06T09:28:22.816-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='repository'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Subversion</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Setting up a repository:&lt;/span&gt;&lt;br /&gt;svnadmin create /usr/local/svn/newrepos&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Import files into repository:&lt;/span&gt;&lt;br /&gt;svn import &lt;span style="font-style: italic;"&gt;/import/dir&lt;/span&gt; file:///usr/local/svn/newrepos/projectname -m "comment" &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;List files in a repository tree:&lt;/span&gt;&lt;br /&gt;svn list file:///usr/local/svn/newrepos/projectname&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;svn ls  &lt;span style="color: #000099;"&gt;#while in sandbox&lt;/span&gt;&lt;br /&gt;svn ls -v &lt;span style="color: #000099;"&gt;# verbose &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Checkout a directory:&lt;/span&gt;&lt;br /&gt;svn checkout "http://host:port/path"&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;svn co http://host:port/path&lt;br /&gt;svn checkout file:///path/to/repos&lt;br /&gt;svn checkout file:///localhost/path/to/repos&lt;br /&gt;svn checkout svn+ssh://host/path/to/repos&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Check a specific revision:&lt;/span&gt;&lt;br /&gt;svn checkout -r &lt;span style="font-style: italic;"&gt;revision_num&lt;/span&gt;&lt;br /&gt;svn checkout -r {2006-02-17}&lt;br /&gt;svn checkout -r {"2006-02-17 15:30"}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Checkin a file:&lt;/span&gt;&lt;br /&gt;svn commit filename.txt -m "some comment here"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update working copy with committed changes from other users:&lt;/span&gt;&lt;br /&gt;svn update&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Manage local copy (sandbox):&lt;/span&gt;&lt;br /&gt;svn add &lt;span style="font-style: italic;"&gt;filename&lt;/span&gt;&lt;filename&gt;&lt;br /&gt;svn delete &lt;span style="font-style: italic;"&gt;filename&lt;/span&gt;&lt;filename&gt;&lt;br /&gt;svn move &lt;span style="font-style: italic;"&gt;file1 file2&lt;/span&gt;&lt;file1&gt; &lt;file2&gt;&lt;br /&gt;svn copy &lt;span style="font-style: italic;"&gt;file1 file2&lt;/span&gt;&lt;file1&gt; &lt;file2&gt;&lt;br /&gt;svn mkdir &lt;span style="font-style: italic;"&gt;dirname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;View files changed since last commit:&lt;br /&gt;&lt;/span&gt;svn stat&lt;br /&gt;svn stat &lt;span style="font-style: italic;"&gt;filename&lt;/span&gt;&lt;br /&gt;svn status -v  &lt;span style="color: #000099;"&gt;# verbose view of all files in sandbox&lt;/span&gt;&lt;br /&gt;svn status -v -u &lt;span style="color: #000099;"&gt;# contacts the repository to show more info&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;View changes since last commit:&lt;/span&gt;&lt;br /&gt;svn diff &lt;span style="color: #000099;"&gt;# show diffs within files&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Revert a file (working copy):&lt;/span&gt;&lt;br /&gt;svn revert &lt;span style="font-style: italic;"&gt;file&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/filename&gt;&lt;/filename&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Restore a previously committed file back to working copy:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;filename&gt;&lt;filename&gt;&lt;file1&gt;&lt;file2&gt;&lt;file1&gt;&lt;file2&gt;svn merge -r curr&lt;i&gt;_version&lt;/i&gt;&lt;current_version&gt;:&lt;i&gt;prev_version&lt;/i&gt;&lt;older&gt; working_file.txt&lt;/older&gt;&lt;/current_version&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/filename&gt;&lt;/filename&gt;&lt;/div&gt;&lt;div&gt;&lt;filename&gt;&lt;filename&gt;&lt;file1&gt;&lt;file2&gt;&lt;file1&gt;&lt;file2&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show revision history:&lt;br /&gt;&lt;/span&gt;svn log&lt;br /&gt;svn log -r 5:19 &lt;span style="color: #000099;"&gt;# shows revisions 5 through 19&lt;br /&gt;&lt;span style="color: black;"&gt;svn log -r 9 &lt;/span&gt;# shows revision 9&lt;br /&gt;&lt;span style="color: black;"&gt;svn log &lt;/span&gt;&lt;span style="color: black; font-style: italic;"&gt;filename&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;# show revisions on a given file&lt;br /&gt;&lt;span style="color: black;"&gt;svn log -r {2006-11-20}:{2006-11-22} &lt;/span&gt;# show versions between two dates&lt;br /&gt;&lt;span style="color: black;"&gt;svn log --verbose &lt;/span&gt;# show all files in all revisions&lt;br /&gt;&lt;span style="color: black;"&gt;svn log --verbose | grep "/path/to/file/" -B10 &lt;/span&gt;# grep history and show last 10 lines&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;Show file info:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;svn info &lt;/span&gt;&lt;span style="color: black; font-style: italic;"&gt;filename&lt;br /&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Backup a repository:&lt;/span&gt;&lt;br /&gt;svnadmin dump&lt;/span&gt;&lt;span style="color: black; font-style: italic;"&gt; /path/to/repository &amp;gt; dumpfile&lt;br /&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Restore a repository:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;svnadmin load&lt;/span&gt;&lt;span style="color: black; font-style: italic;"&gt; /path/to/repository/ &lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-style: italic;"&gt; dumpfile.dump&lt;br /&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Export a repository without all the metadata:&lt;br /&gt;&lt;/span&gt;svn export file:///path/to/repository  export_dir&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/filename&gt;&lt;/filename&gt;&lt;br /&gt;&lt;b&gt;Ignore files in the svn working copy:&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;create a file in home directory called .svnignore&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;While in working copy, run command&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 12px;"&gt;svn -R propset svn:ignore -F /path/to/home/.svnignore .&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Monaco, Consolas, 'Andale Mono', 'DejaVu Sans Mono', monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;filename&gt;&lt;filename&gt;&lt;file1&gt;&lt;file2&gt;&lt;file1&gt;&lt;file2&gt;&lt;span style="color: #000099;"&gt;&lt;span style="color: black;"&gt;&lt;i&gt;http://pandemoniumillusion.wordpress.com/2008/05/07/ignore-pyc-files-in-subversion/&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/filename&gt;&lt;/filename&gt;&lt;br /&gt;&lt;filename&gt;&lt;filename&gt;&lt;file1&gt;&lt;file2&gt;&lt;file1&gt;&lt;file2&gt;&lt;span style="color: #000099;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://svnbook.red-bean.com/en/1.0/re10.html&lt;br /&gt;http://svnbook.red-bean.com/en/1.0/re36.html&lt;br /&gt;http://aralbalkan.com/1381&lt;br /&gt;http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-3-sect-6.2.2&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/file2&gt;&lt;/file1&gt;&lt;/filename&gt;&lt;/filename&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7899388434231059457?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7899388434231059457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7899388434231059457' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7899388434231059457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7899388434231059457'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/08/subversion.html' title='Subversion'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-2268297595534791445</id><published>2007-04-22T18:30:00.000-05:00</published><updated>2007-04-22T19:12:30.001-05:00</updated><title type='text'>Serial to USB converter</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Prerequisites&lt;br /&gt;&lt;/span&gt;minicom&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;kernel configure  options:&lt;/span&gt;&lt;br /&gt;USB=m   &lt;span style="color: rgb(51, 51, 255);"&gt;# USB subsystem&lt;/span&gt;&lt;br /&gt;USB_SERIAL=m &lt;span style="color: rgb(51, 51, 255);"&gt;# USB serial port support&lt;/span&gt;&lt;br /&gt;USB_SERIAL_GENERIC=m  &lt;span style="color: rgb(51, 51, 255);"&gt;# USB serial port generic driver&lt;/span&gt;&lt;br /&gt;USB_SERIAL_PL2303=m &lt;span style="color: rgb(51, 51, 255);"&gt;# USB serial port driver&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;menuconfig path:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;- Device Drivers -&gt;&lt;br /&gt;-- USB Support -&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; --- USB Serial Converter support -&gt;&lt;br /&gt;---- USB Generic Serial Driver&lt;br /&gt;---- (hardware specific driver)&lt;driver&gt;&lt;br /&gt;----  e.x.  USB Prolific 2303  Single Port Serial Driver&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;lsmod Listing &lt;/span&gt;(modules loaded)&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;br /&gt;usbcore        pl2303,usbserial,...&lt;br /&gt;- usbserial     pl2303&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Minicom serial port settings:&lt;/span&gt;&lt;br /&gt;Serial Device: /dev/ttyUSB0&lt;br /&gt;Bps/Par/Bits: 9600 8N1&lt;br /&gt;Hardware Flow Control: No&lt;br /&gt;Software Flow Control: No&lt;br /&gt;&lt;br /&gt;http://www.gentoo.org/doc/en/usb-guide.xml &lt;/span&gt;&lt;/driver&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-2268297595534791445?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/2268297595534791445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=2268297595534791445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2268297595534791445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/2268297595534791445'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/04/serial-to-usb-converter.html' title='Serial to USB converter'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-9027518279416571902</id><published>2007-04-14T11:48:00.000-05:00</published><updated>2007-04-15T16:40:39.316-05:00</updated><title type='text'>iproute commands</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Prerequisites&lt;/span&gt;&lt;span&gt;&lt;br /&gt;iproute2 package&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;kernel configure options:&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;CONFIG_IP_ADVANCED_ROUTER=y&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;CONFIG_IP_MULTIPLE_TABLES=y&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;CONFIG_IP_ROUTE_MULTIPATH=y&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;menuconfig path:&lt;br /&gt;&lt;span style="font-size:85%;"&gt; - Networking --&gt;&lt;br /&gt;-- Networking Support --&gt;&lt;br /&gt;--- Networking options --&gt;&lt;br /&gt;---- TCP/IP networking&lt;br /&gt;----- IP: Advanced router&lt;br /&gt;----- IP: policy routing&lt;br /&gt;----- IP: equal cost multipath&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Enable IP Forwarding&lt;br /&gt;&lt;/span&gt;&lt;span&gt;echo "1" &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;/span&gt;&lt;span&gt;echo 0 &gt; /proc/sys/net/ipv4/conf/all/rp_filter&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;IP LINK&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt; (cmd subset)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Show hardware address&lt;/span&gt;&lt;br /&gt;ip link&lt;br /&gt;ip link [show|ls|list|sh]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Take an interface up/down&lt;/span&gt;&lt;br /&gt;ip link set dev (device) up&lt;br /&gt;ip link set (device) up&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;ip link set dev (device) down&lt;br /&gt;ip link set (device) up&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Change the MAC address of the interface&lt;/span&gt;&lt;br /&gt;ip link set dev (device) address (arp address)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;IP ADDRESS &lt;/span&gt;&lt;span style="font-size:130%;"&gt;(cmd subset)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show ip address&lt;/span&gt;&lt;br /&gt;ip addr&lt;br /&gt;ip addr [show|sh|list|ls]&lt;br /&gt;ip addr show dev eth0 &lt;span style="color: rgb(0, 0, 153);"&gt;# show specific device&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show ip addresses (the old "ifconfig" way)&lt;br /&gt;&lt;/span&gt;ifconfig -a&lt;br /&gt;ifconfig&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Assign IP address to interface&lt;/span&gt;&lt;br /&gt;ip addr [add|a] (address)/(mask) dev (device)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ex:&lt;/span&gt; ip addr add 192.168.1.2/24 dev eth0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Assign IP address to interface (the old "ifconfig" way)&lt;/span&gt;&lt;br /&gt;ifconfig eth0 192.168.1.2 netmask 255.255.255.0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remove IP address from interface&lt;/span&gt;&lt;br /&gt;ip addr [delete|del|d] (address)/(mask) dev (device)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ex:&lt;/span&gt; ip addr del 192.168.1.2/24 dev eth0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;IP NEIGHBOR &lt;/span&gt;&lt;span style="font-size:130%;"&gt;(cmd subset)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show ip Layer 2 neighbors (arp table)&lt;/span&gt;&lt;br /&gt;ip neigh&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show ip Layer 2 netighbors (the old "arp" way)&lt;/span&gt;&lt;br /&gt;arp -a&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add new ARP mapping&lt;/span&gt;&lt;br /&gt;ip neigh add 192.168.1.100 dev eth0 lladdr (mac address)&lt;br /&gt;ip neigh add 192.168.1.100 dev eth0 lladdr (mac address) nud reachable&lt;br /&gt;&lt;br /&gt;NUD Statuses&lt;br /&gt;--permanent (perm) # administrative mapping&lt;br /&gt;--noarp # neighbor valid but no attempt to rearp will be made&lt;br /&gt;--reachable # neighbor entry valid until timeout&lt;br /&gt;--stale # old arp entry&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remove ARP mapping&lt;/span&gt;&lt;br /&gt;ip neigh del 192.168.1.100 dev eth0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flush arp table&lt;/span&gt;&lt;br /&gt;ip neigh flush&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;IP ROUTE &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;(cmd subset)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Show ip routing tables&lt;/span&gt;&lt;br /&gt;ip route&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show ip routing tabes (the old "route" way)&lt;br /&gt;&lt;/span&gt;route&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add Static Route &lt;/span&gt;&lt;br /&gt;ip route add (network)/(mask) via (ip to route through)&lt;br /&gt;e.x. ip route add 10.0.0.0/24 via 192.244.7.65&lt;br /&gt;ip route add (network)/(mask) src INTERFACE_IP dev (device)&lt;br /&gt;ip route add (network)/(mask) dev (device) protocol static&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add Static Route (old "route" method)&lt;/span&gt;&lt;br /&gt;route add -net 10.0.0.0 netmask 255.255.255.0 dev eth0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add Default Route&lt;/span&gt;&lt;br /&gt;ip route add default via GATEWAY_IP&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add Default Route (old "route" method)&lt;/span&gt;&lt;br /&gt;route add default gw 192.168.1.1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Del Route&lt;/span&gt;&lt;br /&gt;ip route del 10.0.0.0/24&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Delete all routes on an interface&lt;/span&gt;&lt;br /&gt;ip route flush dev eth0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.policyrouting.org/iproute2.doc.html&lt;br /&gt;http://gentoo-wiki.com/Dual_internet_connections&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-9027518279416571902?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/9027518279416571902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=9027518279416571902' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/9027518279416571902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/9027518279416571902'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/04/iproute-commands.html' title='iproute commands'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3959764608417393982</id><published>2007-04-07T10:13:00.000-05:00</published><updated>2007-04-07T10:45:09.231-05:00</updated><title type='text'>Date Time Clocks</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Setting the timezone: &lt;/span&gt;&lt;br /&gt;ln -sf /usr/share/zoneinfo/your/zone /etc/localtime&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show time in a given timezone:&lt;/span&gt;&lt;br /&gt;zdump Japan&lt;br /&gt;zdump America/Chicago&lt;br /&gt;zdump US/Central&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;View date and time:&lt;/span&gt;&lt;br /&gt;date&lt;br /&gt;date --utc  &lt;span style="color: rgb(51, 51, 255);"&gt;#universal time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Set the date and time:&lt;/span&gt;&lt;br /&gt;date -s "16:15:00" &lt;span style="color: rgb(51, 51, 255);"&gt;# just the time&lt;/span&gt;&lt;br /&gt;date -s "16:15:00 April 7, 2007" &lt;span style="color: rgb(51, 51, 255);"&gt;# date and time&lt;/span&gt;&lt;br /&gt;date 040716552007.00 &lt;span style="color: rgb(51, 51, 255);"&gt;# the fields being &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:Helvetica,Arial,sans-serif;" &gt;MMDDhhmmCCYY.ss&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Verify connectivity with NTP server:&lt;br /&gt;&lt;/span&gt;ntpdate&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;-q time.nist.gov&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:times new roman;" &gt;Several common time servers:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);font-family:Helvetica,Arial,sans-serif;" &gt;clock.redhat.com&lt;br /&gt;   clock2.redhat.com&lt;br /&gt;   ns1.tuxfamily.org&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;" &gt;&lt;br /&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-family:Helvetica,Arial,sans-serif;" &gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;" &gt;time.nist.gov&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);font-family:times new roman;" &gt;time.apple.com&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Manually use NTP to set time&lt;/span&gt;:&lt;br /&gt;ntpdate time.nist.gov&lt;br /&gt;ntpdate -v time.nist.gov&lt;span style="color: rgb(51, 51, 255);"&gt; # verbose output&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:Helvetica,Arial,sans-serif;" &gt;&lt;span style="font-family:times new roman;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Use NTPd to automatically set date and time:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/etc/init.d/ntpd start  &lt;span style="color: rgb(51, 51, 255);"&gt; #ntpd must be installed, of course&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;font-family:times new roman;" &gt;Monitor NTPd:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;" &gt;ntpdc -p&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:times new roman;" &gt;ntpdc -p -n&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://www.linuxsa.org.au/tips/time.html&lt;br /&gt;http://www.vanemery.com/Linux/RH-Linux-Time.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3959764608417393982?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3959764608417393982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3959764608417393982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3959764608417393982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3959764608417393982'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/04/date-time-clocks.html' title='Date Time Clocks'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-49256099382305143</id><published>2007-04-01T14:13:00.000-05:00</published><updated>2007-04-15T02:21:13.433-05:00</updated><title type='text'>Fake RAID links</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Wikipedia FakeRAID Def&lt;/span&gt;&lt;br /&gt;http://en.wikipedia.org/wiki/Fakeraid&lt;br /&gt;Not transparent to the OS like real RAID.  Not controlled entirely by the operating system either like softRAID.  However, it uses hardware and needs an OS driver.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LINUX FakeRAID drivers&lt;/span&gt;&lt;br /&gt;http://linux-ata.org/driver-status.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;List of FaikRAID hardware devices/controllers&lt;/span&gt;&lt;br /&gt;http://linuxmafia.com/faq/Hardware/sata.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My MoBo&lt;/span&gt;&lt;br /&gt;http://www.pcstats.com/articleview.cfm?articleid=1770&amp;page=1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;This Mobo uses the following kernel modules:&lt;/span&gt;&lt;br /&gt;sata_nv: for the 4 nForce4 controllers&lt;br /&gt;&lt;br /&gt;kernel configure option: &lt;span style="font-size:85%;"&gt;&lt;br /&gt;CONFIG_SATA_NV=y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;menconfig path:&lt;br /&gt;&lt;span style="font-size:85%;"&gt; - Device Drivers --&gt;&lt;br /&gt; -- Serial ATA (prod) and ... --&gt;&lt;br /&gt; --- ATA device support --&gt;&lt;br /&gt; ---- NVIDIA SATA support&lt;br /&gt; ----- sata_sil: for the 4 Sillicon Image 3314 controllers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;kernel configure option:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;CONFIG_SATA_SLI = y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;menuconfig path:&lt;br /&gt;&lt;span style="font-size:85%;"&gt; - Device Drivers --&gt;&lt;br /&gt; -- Serial ATA (prod) and ... --&gt;&lt;br /&gt; --- ATA device support --&gt;&lt;br /&gt; ---- Silicon Image SATA support&lt;br /&gt; ----- ahci: generic Open standard (I don't have this, but worth a mention)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;kernel configure option:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;CONFIG_SATA_AHCI=y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;menuconfig path:&lt;br /&gt;&lt;span style="font-size:85%;"&gt; - Device Drivers --&gt;&lt;br /&gt; -- Serial ATA (prod) and ... --&gt;&lt;br /&gt; --- ATA device support --&gt;&lt;br /&gt; ---- AHCI SATA support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Both of these modules depend on the module:&lt;/span&gt;&lt;br /&gt;libata&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Libata depends on the following module: &lt;/span&gt;&lt;br /&gt;scsi_mod&lt;br /&gt;&lt;br /&gt;kernel configure option:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;CONFIG_SCSI=y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;menuconfig path: &lt;span style="font-size:85%;"&gt;&lt;br /&gt; - Device Drivers --&gt;&lt;br /&gt; -- SCSI device support --&gt;&lt;br /&gt; --- SCSI device support&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-49256099382305143?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/49256099382305143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=49256099382305143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/49256099382305143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/49256099382305143'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/04/fake-raid-links.html' title='Fake RAID links'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-3953469982889567982</id><published>2007-03-20T01:25:00.000-05:00</published><updated>2007-03-20T01:26:08.326-05:00</updated><title type='text'>Linux Quota Support</title><content type='html'>http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-3953469982889567982?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/3953469982889567982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=3953469982889567982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3953469982889567982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/3953469982889567982'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/03/linux-quota-support.html' title='Linux Quota Support'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5867514180076257408</id><published>2007-03-20T00:46:00.003-05:00</published><updated>2010-06-14T01:09:32.246-05:00</updated><title type='text'>mdadm software raid usage</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;Install &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;mdadm package needed (aptitude install mdadm)&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;http://neil.brown.name/blog/mdadm&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;br /&gt;Create array:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1&lt;br /&gt;or&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;span style="font-size:100%;"&gt;  mdadm -Cv /dev/md0 -l0 -n2 -c128 &lt;/span&gt;/dev/sdb1 /dev/sdc1&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;/etc/mdadm.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  # optional, but used for easier interaction&lt;/span&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;  DEVICE  /dev/sdb1 /dev/sdc1&lt;br /&gt;ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Show md info:&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;# produces output that you would put in the mdadm.conf&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  mdadm --detail --scan&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Show device info: &lt;/span&gt;&lt;br /&gt;mdadm -E /dev/sdc1&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  # shows info about the component disks &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Start (assemble) Existing Array:&lt;/span&gt;&lt;br /&gt;mdadm -As /dev/md0&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  # -A starts assemble mode to assemble existing array&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  # -s indicates the use of /etc/mdadm.conf&lt;/span&gt;&lt;br /&gt;or&lt;br /&gt;mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  # starts array without existing /etc/mdadm.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Assemble an existing array automatically:&lt;/span&gt;&lt;br /&gt;mdadm --assemble --scan&lt;br /&gt;or&lt;br /&gt;mdadm -As&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Stop the array:&lt;/span&gt;&lt;br /&gt;mdadm -S /dev/md0&lt;br /&gt;or&lt;br /&gt;mdadm --stop /dev/md0&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Add a disk:&lt;/span&gt;&lt;br /&gt;mdadm /dev/md0 --add /dev/sdc1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remove a disk:&lt;/span&gt;&lt;br /&gt;mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# "fails" and removes a disk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;fstab entry for the array:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;# this assumes the array was formated with ext3 &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;/dev/md0  /export/  ext3  suid,dev,defaults,exec  0  0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://www.linuxdevcenter.com/pub/a/linux/2002/12/05/RAID.html&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/11349913-5867514180076257408?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5867514180076257408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5867514180076257408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5867514180076257408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5867514180076257408'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/03/mdadm-software-raid-usage.html' title='mdadm software raid usage'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-7719165939093979101</id><published>2007-03-03T22:23:00.002-06:00</published><updated>2008-03-22T13:28:16.050-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sudoers'/><category scheme='http://www.blogger.com/atom/ns#' term='sudo'/><category scheme='http://www.blogger.com/atom/ns#' term='su'/><category scheme='http://www.blogger.com/atom/ns#' term='authenicate'/><title type='text'>SUDO</title><content type='html'>&lt;user&gt;&lt;host&gt;&lt;span style="font-weight: bold;"&gt;Generic syntax of /etc/sudoers&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;lt;users_to_allow&amp;gt; &amp;lt;host&amp;gt; = (run_as_user) &amp;lt;command_to_run&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/host&gt;&lt;/user&gt;&lt;span&gt;&amp;lt;users_to_allow&amp;gt; &amp;lt;host&amp;gt; = (run_as_user) &amp;lt;file_to_grant&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;user&gt;&lt;host&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;No password for users in admin group&lt;/span&gt;&lt;br /&gt;%admin ALL= (ALL) NOPASSWD: ALL&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No password for joeuser user&lt;/span&gt;&lt;br /&gt;joeuser ALL=(ALL) NOPASSWD: ALL&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Allow joeuser to run only certain privileged commands as root&lt;/span&gt;&lt;br /&gt;joeuser ALL= /bin/kill, /usr/local/bin/&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Allow joeuser to run certain commands as given users&lt;/span&gt;&lt;br /&gt;joeuser ALL=(janeuser,johnuser) /bin/kill, /usr/local/bin&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Run sudo command as another user using &lt;/span&gt;&lt;br /&gt;sudo -u janeuser /bin/kill&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://aplawrence.com/Basics/sudo.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/host&gt;&lt;/user&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-7719165939093979101?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/7719165939093979101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=7719165939093979101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7719165939093979101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/7719165939093979101'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/03/sudo.html' title='SUDO'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11349913.post-5304343119441224465</id><published>2007-02-26T13:17:00.010-06:00</published><updated>2011-12-12T10:50:34.356-06:00</updated><title type='text'>Screen Command Usage</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Create a new Screen session&lt;/span&gt;&lt;br /&gt;screen &lt;span style="color: #3333ff;"&gt;# creates a default session&lt;/span&gt;&lt;br /&gt;screen -S name &lt;span style="color: #3333ff;"&gt;# creates a session with a name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Screen has two similar concepts: screens and window sessions.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# screens are seperate processes that show up when doing &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# a "screen -ls" listing. W&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;indows are "sub-screens" of a given &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# screen process used for split &lt;/span&gt;&lt;span style="color: #3333ff;"&gt;screen modes and such.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Rename an already created window &lt;/strong&gt;&lt;br /&gt;CTRL-a A &lt;span style="color: #3333ff;"&gt;# then provide name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Detach from a screen session&lt;/span&gt;&lt;br /&gt;screen -d &lt;span style="color: #3333ff;"&gt;# detach from a command prompt&lt;/span&gt;&lt;br /&gt;Ctrl-a d&lt;span style="color: #3333ff;"&gt; # detach from anywhere in the session&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;List screen sessions&lt;/span&gt;&lt;span style="color: black;"&gt;screen -ls&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reattach to a screen session&lt;/span&gt;&lt;br /&gt;screen -r &lt;span style="color: #3333ff;"&gt;# attaches to default session&lt;/span&gt;&lt;br /&gt;screen -r name &lt;span style="color: #3333ff;"&gt;# attaches to specific session (unique string in the name)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: #3333ff;"&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;Toggle between several attached windows&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: #3333ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: #3333ff;"&gt;Ctrl-a Ctrl-a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: #3333ff;"&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;Attach to an already attached screen (mirror)&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;screen -x&lt;span style="color: #000099;"&gt; &lt;span style="color: #3333ff;"&gt;# attaches to default session&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;screen -x name &lt;span style="color: #3333ff;"&gt;# attaches to named session&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black; font-weight: bold;"&gt;Share a screen session&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;owner:&lt;br /&gt;screen -S name &lt;span style="color: #3333ff;"&gt;# start and name the screen &lt;/span&gt;&lt;br /&gt;Ctrl-a :multiuser on&amp;nbsp;&lt;span style="color: #3333ff;"&gt;# add multiuser support&lt;/span&gt;&lt;br /&gt;Ctrl-a :acladd userids &lt;span style="color: #3333ff;"&gt;# share the screen to userids (comma sep)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;client:&lt;br /&gt;screen -x username/session &lt;span style="color: #3333ff;"&gt;# attach to the screen (in mirror)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Change permissions on a shared session&lt;/span&gt;&lt;br /&gt;owner:&lt;br /&gt;Ctrl-a :aclchg userids [&lt;em&gt;permbits]&lt;/em&gt; [&lt;em&gt;list]&lt;/em&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# permbits = rwx and prefixed by "-" or "+"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# list of commands - #(all windows), ?(all commands)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remove user access&lt;/span&gt;&lt;br /&gt;owner:&lt;br /&gt;acldel userids &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lock a Screen&lt;/strong&gt;&lt;br /&gt;ctrl-a ctrl-x &lt;span style="color: #3333ff;"&gt;# requires user to enter password to unlock&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;Copy and Paste from the screen scrollback buffer&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Ctrl-a [Esc] &lt;span style="color: #3333ff;"&gt;# enters scrollback editor (movement like vi)&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;[spacebar] &lt;span style="color: #3333ff;"&gt;# starts and stops a copy selection range&lt;/span&gt;&lt;br /&gt;Ctrl-a :paste . &lt;span style="color: #3333ff;"&gt;# pastes the copy buffer to the term&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Screenrc options:&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;/home/&amp;gt; vi .screenrc&lt;br /&gt;#shell -bash&lt;br /&gt;shell -ksh &lt;span style="color: #3333ff;"&gt;# Make Screenrc exe .profile file on login&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Set the scrollback buffer&lt;/span&gt;&lt;br /&gt;defscrollback 5000&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Turn off the startup banner&lt;/span&gt;&lt;br /&gt;startup_message off&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# displays a status line at the bottom of the terminal window.&lt;/span&gt;&lt;br /&gt;hardstatus alwayslastline "Screen: %w %c:%s %D, %M/%d/%Y "&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# detach on hangup - if my dial-up session fails, screen will simply&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# detach and let me re re-attach later&lt;/span&gt;&lt;br /&gt;autodetach on&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Split Screen&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# Create two screens&lt;/span&gt;&lt;br /&gt;screen &lt;span style="color: #3333ff;"&gt;# create &lt;/span&gt;&lt;span style="color: #3333ff;"&gt;first screen&lt;/span&gt;&lt;br /&gt;CTRL-a c &lt;span style="color: #3333ff;"&gt;# create secon&lt;/span&gt;&lt;span style="color: #3333ff;"&gt;d &lt;u&gt;screen session&lt;/u&gt; (1 screen instance, but 2 window sessions)&lt;/span&gt;&lt;br /&gt;CTRL-a S &lt;span style="color: #3333ff;"&gt;# split the screen&lt;/span&gt;&lt;br /&gt;CTRL-a TAB &lt;span style="color: #3333ff;"&gt;# move to the bottom part of the split&lt;/span&gt;&lt;br /&gt;CTRL-a " &lt;span style="color: #3333ff;"&gt;# will prompt for a screen number. Choose 0 or 1 indicating the window session&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;CTRL-a Q&lt;/span&gt; # quit all splits except the current&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;Scrollback / Copy and Paste&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;CTRL-a [&lt;/span&gt; or&lt;span style="color: black;"&gt; CTRL-a ESC &lt;/span&gt;# frees the cursor to move into &lt;/span&gt;&lt;span style="color: #3333ff;"&gt;scrollback buffer (Copy mode)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# ESC to exit copy mode without copying&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;# use arrow &lt;/span&gt;&lt;span style="color: #3333ff;"&gt;keys or h,j,k,l to navigate in copy mode&lt;br /&gt;# use CTRL-F and CTRL-B to page up and down in copy mode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;ENTER &lt;/span&gt;# indicates a start point for text copy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;ENTER &lt;/span&gt;# (second) indicates an end point for text copy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span style="color: black;"&gt;CTRL-a ]&lt;/span&gt; # pastes copied text range&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aperiodic.net/screen/quick_reference"&gt;&lt;span style="color: black;"&gt;&lt;em&gt;http://aperiodic.net/screen/quick_reference&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11349913-5304343119441224465?l=jazstudios.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jazstudios.blogspot.com/feeds/5304343119441224465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11349913&amp;postID=5304343119441224465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5304343119441224465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11349913/posts/default/5304343119441224465'/><link rel='alternate' type='text/html' href='http://jazstudios.blogspot.com/2007/02/screen-command-usage.html' title='Screen Command Usage'/><author><name>Joe Jasinski</name><uri>http://www.blogger.com/profile/05381310347182579103</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
