<?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-8222526</id><updated>2011-07-08T11:57:35.396-05:00</updated><category term='wxpython'/><category term='couchdb python turbogears2'/><category term='couchdb'/><category term='python'/><title type='text'>Batok</title><subtitle type='html'>Software Developer as a matter of fact</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://batok.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8222526.post-3251670774353210764</id><published>2010-07-21T21:12:00.002-05:00</published><updated>2010-07-21T21:16:30.062-05:00</updated><title type='text'>A brief guide to using virtualenv with wxpython</title><content type='html'>If you are developing wxpython applications may be you can find ...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Brief Guide to using virtualenv with wxpython&lt;/blockquote&gt; useful.&lt;br /&gt;&lt;br /&gt;Albeit it's specific for python 2.7 and Mac OS X, some ideas can be used for other platforms and versions.&lt;br /&gt;&lt;br /&gt;Available at github &lt;a href="http://bit.ly/bwdWCR"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-3251670774353210764?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/3251670774353210764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=3251670774353210764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/3251670774353210764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/3251670774353210764'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2010/07/brief-guide-to-using-virtualenv-with.html' title='A brief guide to using virtualenv with wxpython'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-2263793821511903662</id><published>2009-02-27T19:08:00.002-06:00</published><updated>2009-02-27T19:10:48.849-06:00</updated><title type='text'>Just a test of syntaxhighlighter in blogger</title><content type='html'>This is just a test of syntaxhighlighter.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;from couchdb.schema import Document, View, IntegerField, TextField&lt;br /&gt;from couchdb import Database&lt;br /&gt;&lt;br /&gt;map_fun = """&lt;br /&gt;function(doc){&lt;br /&gt;        emit(doc.name, doc.age);&lt;br /&gt;}&lt;br /&gt;"""&lt;br /&gt;class Person(Document):&lt;br /&gt;        name = TextField()&lt;br /&gt;        age = IntegerField()&lt;br /&gt;        by_name = View('people', map_fun)&lt;br /&gt;&lt;br /&gt;db = Database("http://127.0.0.1:5984/borrame")&lt;br /&gt;&lt;br /&gt;# to make a view permanent do this&lt;br /&gt;from couchdb.design import ViewDefinition&lt;br /&gt;ViewDefinition.sync_many(db, [Person.by_name])&lt;br /&gt;&lt;br /&gt;Person(name = "batok", age = 48).store(db)&lt;br /&gt;Person(name = "rgalvan", age = 47).store(db)&lt;br /&gt;Person(name = "robert", age = 30).store(db)&lt;br /&gt;&lt;br /&gt;for person in Person.by_name( db, limit = 3):&lt;br /&gt;        print person.name, person.age&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/8222526-2263793821511903662?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/2263793821511903662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=2263793821511903662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/2263793821511903662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/2263793821511903662'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2009/02/just-test-of-syntaxhighlighter-in.html' title='Just a test of syntaxhighlighter in blogger'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-1740712236349400600</id><published>2008-12-22T16:18:00.003-06:00</published><updated>2008-12-22T16:27:39.613-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb python turbogears2'/><title type='text'>Introducing blogcdb</title><content type='html'>I have created a new project at github.&lt;br /&gt;&lt;br /&gt;It's blogcdb ( a blog engine that uses couchdb ).&lt;br /&gt;&lt;br /&gt;The blog engine is made with turbogears 2, a very good python web framework.&lt;br /&gt;&lt;br /&gt;Also uses dojo javascript framework for some fancy stuff. Dojo version 1.2.3 is included.&lt;br /&gt;&lt;br /&gt;To store blog posts, comments and attachments , the erlang based couchdb document database engine is used.&lt;br /&gt;&lt;br /&gt;Requirements:&lt;br /&gt;&lt;br /&gt;couchdb-python module by Christopher Lenz and Jan Lenhardt.&lt;br /&gt;python 2.6&lt;br /&gt;turbogears 2 : trunk version which also needs a lot of modules.&lt;br /&gt;dojo 1.2.3 ( included ).&lt;br /&gt;couchdb ( svn truk version ) available from apache software foundation.&lt;br /&gt;erlang/otp&lt;br /&gt;mozilla's spidermonkey.&lt;br /&gt;&lt;br /&gt;Get blogcdb at http://www.github.com/batok/blogcdb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-1740712236349400600?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/1740712236349400600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=1740712236349400600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/1740712236349400600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/1740712236349400600'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2008/12/introducing-blogcdb.html' title='Introducing blogcdb'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-4961876256463063602</id><published>2008-12-10T14:45:00.005-06:00</published><updated>2008-12-10T15:10:18.730-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wxpython'/><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><title type='text'>A wxpython GUI interface to a blog.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/_-hyF8eAeQds/SUAuhvP7oUI/AAAAAAAAACY/LBUZO1lL7pY/s144/screenshot20081127210325191840.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 144px; height: 90px;" src="http://lh6.ggpht.com/_-hyF8eAeQds/SUAuhvP7oUI/AAAAAAAAACY/LBUZO1lL7pY/s144/screenshot20081127210325191840.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have created a github project with the name &lt;a href="http://github.com/batok/couchdb-wxpython/wikis"&gt;couchdb-wxpython&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The project is a python script that uses:&lt;br /&gt;&lt;br /&gt;wxpython ( a python module for GUI which is cross-platform.  It is a wrapper for wxwidgets ).&lt;br /&gt;&lt;br /&gt;couchdb , a document oriented database to store blogposts , comments and attachments.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The program can also take screenshots and store them as attachments into couchdb.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-4961876256463063602?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/4961876256463063602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=4961876256463063602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/4961876256463063602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/4961876256463063602'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2008/12/wxpython-gui-interface-to-blog.html' title='A wxpython GUI interface to a blog.'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_-hyF8eAeQds/SUAuhvP7oUI/AAAAAAAAACY/LBUZO1lL7pY/s72-c/screenshot20081127210325191840.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-8973657233052768099</id><published>2008-09-09T18:41:00.007-05:00</published><updated>2008-10-08T23:48:04.327-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='couchdb'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>New attachment handling in couchdb-python module</title><content type='html'>I've been trying out the new methods for the Database class in couchdb-python, in the svn repository.&lt;br /&gt;&lt;br /&gt;I tried put_attachment.&lt;br /&gt;&lt;br /&gt;Guess you already have a couchdb database called blog.  To get a reference to the db you have to...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;from couchdb.schema import *&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class Post(Document):&lt;br /&gt;    author = TextField()&lt;br /&gt;    subject = TextField()&lt;br /&gt;    content = TextField()&lt;br /&gt;    tags = ListField( TextField() )&lt;br /&gt;    comments = ListField( DictField(Schema.build(&lt;br /&gt;        comment_author = TextField(),&lt;br /&gt;        comment = TextField(),&lt;br /&gt;        comment_date = DateTimeField()&lt;br /&gt;    )))&lt;br /&gt;    date = DateTimeField()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;from couchdb import Server&lt;br /&gt;from datetime import datetime&lt;br /&gt;import binascii&lt;br /&gt;s = Server("http://127.0.0.1:5984/")&lt;br /&gt;s.create("blog")&lt;br /&gt;blog = s["blog"]&lt;br /&gt;p = Post( author = "Me", subject = "Whatever for the subject ", content = "Any content",date = datetime.now(), tags = ["Python", "Couchdb", "Blog"])&lt;br /&gt;&lt;br /&gt;p.store(blog)&lt;br /&gt;&lt;br /&gt;f = open("apythonfile.py", "rb")&lt;br /&gt;foo = binascii.b2a_base64(f.read()) # this convert the content of the file to a encode 64 string&lt;br /&gt;&lt;br /&gt;#put_attachment only works right now with an encoded string as I see and with a dictionary object for the document ( first parameter ) and not for a Document instance as used here , so...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;blog = s["blog"]&lt;br /&gt;adoc = blog[p.id]  &lt;br /&gt;&lt;br /&gt;and finally call the method...&lt;br /&gt;&lt;br /&gt;blog.put_attachment( adoc, "apythonfile.py", foo, "text/python")&lt;br /&gt;&lt;br /&gt;#you can't do blog.put_attachment( p, "apythonfile.py", f, "text/python") which I taught by reading the doc inside the method.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-8973657233052768099?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/8973657233052768099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=8973657233052768099' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/8973657233052768099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/8973657233052768099'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2008/09/new-attachment-handling-in-couchdb.html' title='New attachment handling in couchdb-python module'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-2776272590084267110</id><published>2008-07-18T17:08:00.005-05:00</published><updated>2008-07-21T15:32:18.427-05:00</updated><title type='text'>Yet another python frameworks' "which one is best for my project"</title><content type='html'>Python web frameworks ( or libraries )  which I have used for real world projects.&lt;br /&gt;&lt;br /&gt;1 -  Zope 2 /Plone.  This was the first one.  Tal template system was nice to learn.  Throw the web zope application server update is nice for designers but not for development ( despite I used cadaver webdav command line client which also uses vim ).  In general, I didn't like Zope, because is not very pythonic.&lt;br /&gt;&lt;br /&gt;2 -  Nevow.  This came second after asking in IRC channels about a good one framework to use.  A guy convinced me to try it. Nevow is the swiss army knife of the python web frameworks.  You can do the impossible with it , but it's very complex for simple , business like endeavors.&lt;br /&gt;&lt;br /&gt;3 - After Nevow I gave Django a try and liked it.  At the same time I gave Turbogears 1 a try after watching the wiki in 20 minutes screencast by TG's author Kevin Dangoor.  Then I decided on embrace TG 1.&lt;br /&gt;&lt;br /&gt;4.  When TG 1.0 felt short to one of my project expectations I decided to use Pylons which I liked a lot.  The problem with Pylons is that , becoming another "swiss army knife" as Nevow, simple things were ackward to do.&lt;br /&gt;&lt;br /&gt;5 - Now it's time of a happy convergence :  TG simplicity + Pylons , that is , Turbogears 2.  So I have to say good bye to cherrypy , kid  and sqlobject .  Welcome Paste, gengshi, webob, sqlalchemy, toscawidgets, beaker, etc.  At this very moment I think TG2 is "Easy Pylons".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-2776272590084267110?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/2776272590084267110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=2776272590084267110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/2776272590084267110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/2776272590084267110'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2008/07/yet-another-python-frameworks-which-one.html' title='Yet another python frameworks&apos; &quot;which one is best for my project&quot;'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-3205980286652449607</id><published>2007-06-18T17:55:00.000-05:00</published><updated>2007-06-18T19:57:06.637-05:00</updated><title type='text'>Wxwidgets' messages in Spanish</title><content type='html'>&lt;span style="font-size:85%;"&gt;In a cpp wxwidgets app...&lt;br /&gt;&lt;br /&gt;1 - Within the source wxwidgets , there's a samples folder.&lt;br /&gt;&lt;br /&gt;2 - cd to samples folder , and then to calendar folder.&lt;br /&gt;&lt;br /&gt;3 - Add this line before the end of the wxApp class in calendar.cpp...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;wxLocale m_locale;&lt;br /&gt;&lt;br /&gt;4 - Add these four at the beginning of the OnInit method of the inherited wxApp...&lt;br /&gt;&lt;br /&gt;if( m_locale.Init()){&lt;br /&gt;m_locale.AddCatalog(wxT("es"));&lt;br /&gt;m_locale.AddCatalogLookupPathPrefix( wxT("."));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;5 - Compile the sample with ... make -f makefile.unx  ( this in MacOSX or any Unix)&lt;br /&gt;&lt;br /&gt;6 - Do this if in MacOSX ...&lt;br /&gt;&lt;br /&gt;$ mkdir calendar.app&lt;br /&gt;$ cd calendar.app&lt;br /&gt;$ mkdir Contents&lt;br /&gt;$ cd Contents&lt;br /&gt;$ mkdir MacOS&lt;br /&gt;$ cd MacOS&lt;br /&gt;$ ln -s ../../../calendar calendar&lt;br /&gt;$ cd ../../..&lt;br /&gt;$ open calendar.app&lt;br /&gt;&lt;br /&gt;7 - If everything goes as expected days and months of the calendar widget get displayed in spanish.&lt;br /&gt;&lt;br /&gt;In you want to apply this in a &lt;span style="font-weight: bold;"&gt;wxpython&lt;/span&gt; program...&lt;br /&gt;&lt;br /&gt;1 - If you started your wxpython program with wx.PySimpleApp, ie ...&lt;br /&gt;app = wx.PySimpleApp()&lt;br /&gt;&lt;br /&gt;2 - add these lines after that ...&lt;br /&gt;&lt;br /&gt;locale = wx.Locale()&lt;br /&gt;if locale.Init(wx.LANGUAGE_DEFAULT , wx.LOCALE_LOAD_DEFAULT | wx.LOCALE_CONV_ENCODING ):&lt;br /&gt; locale.AddCatalog("es")&lt;br /&gt; locale.AddCatalogLookupPathPrefix(".")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3 - After this if your program , for example, uses wx.PreviewFrame, all messages in the frame and widgets will be displayed in Spanish!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-3205980286652449607?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/3205980286652449607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=3205980286652449607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/3205980286652449607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/3205980286652449607'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2007/06/wxwidgets-messages-in-spanish.html' title='Wxwidgets&apos; messages in Spanish'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-5176302824046982286</id><published>2007-03-23T17:30:00.000-06:00</published><updated>2007-03-23T17:41:09.527-06:00</updated><title type='text'>wxPython ArtProvider images mini browser</title><content type='html'>&lt;pre style="font-size: 1em"&gt;&lt;br /&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt; wx&lt;br /&gt;&lt;font color="#804040"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt; &lt;font color="#008080"&gt;MyFrame&lt;/font&gt;(wx.Frame):&lt;br /&gt;    &lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt; &lt;font color="#008080"&gt;__init__&lt;/font&gt;(self):&lt;br /&gt;        title = &amp;quot;&lt;font color="#ff00ff"&gt;wx.ART browser&lt;/font&gt;&amp;quot;&lt;br /&gt;        wx.Frame.__init__(self, None, -1, title, size = (200,300))&lt;br /&gt;&lt;br /&gt;        li = [&amp;quot;&lt;font color="#ff00ff"&gt;wx.%s&lt;/font&gt;&amp;quot; % x &lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt; x &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt; dir(wx) &lt;font color="#804040"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; x.startswith(&amp;quot;&lt;font color="#ff00ff"&gt;ART&lt;/font&gt;&amp;quot;)]&lt;br /&gt;&lt;br /&gt;        lb = wx.ListBox(self, -1, choices = li, style=wx.LB_SINGLE)&lt;br /&gt;        self.sb = wx.StaticBitmap(self, -1, wx.ArtProvider.GetBitmap(eval(li[0])))&lt;br /&gt;&lt;br /&gt;        sizer = wx.BoxSizer(wx.VERTICAL)&lt;br /&gt;        sizer.Add(lb)&lt;br /&gt;        sizer.Add( [ 20, 20 ] , 0, wx.ALIGN_CENTER|wx.ALL, 5 )&lt;br /&gt;        sizer.Add(self.sb, wx.ALIGN_CENTER|wx.ALL, 5)&lt;br /&gt;        self.SetSizer(sizer)&lt;br /&gt;&lt;br /&gt;        self.Bind(wx.EVT_LISTBOX, self.OnUpdateBitmap, lb)&lt;br /&gt;&lt;br /&gt;    &lt;font color="#804040"&gt;&lt;b&gt;def&lt;/b&gt;&lt;/font&gt; &lt;font color="#008080"&gt;OnUpdateBitmap&lt;/font&gt;(self, event):&lt;br /&gt;        name = event.GetString()&lt;br /&gt;        im = wx.ArtProvider.GetBitmap(eval(name))&lt;br /&gt;        w, h = im.GetSize()&lt;br /&gt;        self.sb.SetSize((w,h))&lt;br /&gt;        self.sb.SetBitmap(im)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;app = wx.PySimpleApp()&lt;br /&gt;f = MyFrame()&lt;br /&gt;f.Center()&lt;br /&gt;f.Show()&lt;br /&gt;app.MainLoop()&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/8222526-5176302824046982286?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/5176302824046982286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=5176302824046982286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/5176302824046982286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/5176302824046982286'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2007/03/wxpython-artprovider-images-mini.html' title='wxPython ArtProvider images mini browser'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-116372661808976430</id><published>2006-11-16T19:11:00.000-06:00</published><updated>2006-11-16T19:23:38.100-06:00</updated><title type='text'>Scp of a screenshot ( using wxpython  and paramiko )</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Try this one.&lt;br /&gt;This takes a screenshot and send it to a server using scp ( paramiko )&lt;br /&gt;All you need is WxPython.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import wx&lt;br /&gt;import paramiko&lt;br /&gt;import sys&lt;br /&gt;from time import sleep&lt;br /&gt;&lt;br /&gt;class Screenshot(object):&lt;br /&gt;    def __init__(self, filename = "snap.png"):&lt;br /&gt;        self.filename = filename&lt;br /&gt;        try:&lt;br /&gt;            p = wx.GetDisplaySize()&lt;br /&gt;            self.p = p&lt;br /&gt;            bitmap = wx.EmptyBitmap( p.x, p.y)&lt;br /&gt;            dc = wx.ScreenDC()&lt;br /&gt;            memdc = wx.MemoryDC()&lt;br /&gt;            memdc.SelectObject(bitmap)&lt;br /&gt;            memdc.Blit(0,0, p.x, p.y, dc, 0,0)&lt;br /&gt;            memdc.SelectObject(wx.NullBitmap)&lt;br /&gt;            bitmap.SaveFile(filename, wx.BITMAP_TYPE_PNG )&lt;br /&gt;            &lt;br /&gt;        except:&lt;br /&gt;            self.filename = ""&lt;br /&gt;        &lt;br /&gt;def main():               &lt;br /&gt;    paramiko.util.log_to_file('snap.log')&lt;br /&gt;    &lt;br /&gt;    caption = u"Required data"&lt;br /&gt;    path = "/var/www/html/screenshots" # change this to make it your default path&lt;br /&gt;    hostname = "www.whateverdomain.com" # change this to make it your default targe host&lt;br /&gt;    username = "batok" # change this to make it your default user&lt;br /&gt;    port = 22 # change this to another port if necessary....&lt;br /&gt;    &lt;br /&gt;    app = wx.PySimpleApp()&lt;br /&gt;    time_to_wait = wx.GetNumberFromUser(message = "Time", &lt;br /&gt;                                        prompt = "Secs.",&lt;br /&gt;                                         caption = "Enter Seconds to Wait...",&lt;br /&gt;                                          value = 5,&lt;br /&gt;                                            min = 5,&lt;br /&gt;                                             max = 20,&lt;br /&gt;                                              parent= None )&lt;br /&gt;    try:&lt;br /&gt;        tw = int(time_to_wait)&lt;br /&gt;    except:&lt;br /&gt;        sys.exit(-1)&lt;br /&gt;    sleep( tw  )&lt;br /&gt;    try:&lt;br /&gt;        wx.Bell()&lt;br /&gt;    except:&lt;br /&gt;        pass&lt;br /&gt;    &lt;br /&gt;    s_shot = Screenshot()&lt;br /&gt;    &lt;br /&gt;    filename = s_shot.filename&lt;br /&gt;    if filename == "":&lt;br /&gt;        sys.exit(-1)&lt;br /&gt;        &lt;br /&gt;    if wx.YES == wx.MessageBox("Do you want to see the screenshot/nreduced by the half ?", "Hey!", wx.YES_NO | wx.ICON_QUESTION):&lt;br /&gt;        dlg = wx.Dialog(None,-1, "Your screenshot half the size")&lt;br /&gt;        img = wx.Image("snap.png" , wx.BITMAP_TYPE_ANY)&lt;br /&gt;        w = img.GetWidth()&lt;br /&gt;        h = img.GetHeight()&lt;br /&gt;        img2 = img.Scale(w/2,h/2)&lt;br /&gt;        wx.StaticBitmap(dlg,-1, wx.BitmapFromImage(img2))&lt;br /&gt;        dlg.Fit()&lt;br /&gt;        dlg.Show()&lt;br /&gt;        &lt;br /&gt;    &lt;br /&gt;    target = "%s/%s" % ( path, filename )&lt;br /&gt;    wx.MessageBox("A %s X %s screenshot\nis at %s" % (s_shot.p.x, s_shot.p.y, filename ), "Hey!")&lt;br /&gt;    hostname = wx.GetTextFromUser("Host", caption = caption , default_value=hostname)&lt;br /&gt;    username = wx.GetTextFromUser("User Name", caption = caption , default_value=username)&lt;br /&gt;    password = wx.GetPasswordFromUser("Password", caption = caption )&lt;br /&gt;    s_target = wx.GetTextFromUser("Destination File", caption= caption, default_value = target)&lt;br /&gt;    &lt;br /&gt;    if "" in (hostname, username, s_target):&lt;br /&gt;        wx.MessageBox("Mmmm... some required fields are empty", "Hey!")&lt;br /&gt;        sys.exit(-1)&lt;br /&gt;    &lt;br /&gt;    # Now paramiko's stuff... a.k.a secure copy&lt;br /&gt;    try:&lt;br /&gt;        &lt;br /&gt;        t = paramiko.Transport((hostname, port))&lt;br /&gt;        t.use_compression(True)&lt;br /&gt;        t.connect(username=username, password=password, hostkey=None)&lt;br /&gt;        sftp = paramiko.SFTPClient.from_transport(t)&lt;br /&gt;        data = open(filename, 'rb').read()&lt;br /&gt;        sftp.open(s_target, 'wb').write(data)&lt;br /&gt;        t.close()&lt;br /&gt;        wx.MessageBox("The %s file was sent to server" % filename, "Hey!")&lt;br /&gt;    &lt;br /&gt;    except Exception, e:&lt;br /&gt;        print e&lt;br /&gt;        try:&lt;br /&gt;            t.close()&lt;br /&gt;        except:&lt;br /&gt;            pass&lt;br /&gt;        &lt;br /&gt;    return&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    main()&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/8222526-116372661808976430?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/116372661808976430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=116372661808976430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/116372661808976430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/116372661808976430'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/11/scp-of-screenshot-using-wxpython-and.html' title='Scp of a screenshot ( using wxpython  and paramiko )'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-115879242193101543</id><published>2006-09-20T17:30:00.000-05:00</published><updated>2006-09-20T17:47:01.950-05:00</updated><title type='text'>Turbogears and Genshi baby steps</title><content type='html'>These are the baby steps for using Genshi template system in Turbogears.&lt;br /&gt;&lt;br /&gt;1 - In case you have not installed Genshi do....&lt;br /&gt;easy_install Genshi&lt;br /&gt;&lt;br /&gt;2 - Create a new turbogears project with...&lt;br /&gt;tg-admin quickstart genshibasic&lt;br /&gt;&lt;br /&gt;3 - Go to controllers.py in ./genshibasic/genshibasic directory&lt;br /&gt;&lt;br /&gt;add this to the Root class&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   @expose(template="genshi:genshibasic.templates.genshi")&lt;br /&gt;   def genshi(self):&lt;br /&gt;    return dict(pretty="basic")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4 - create a new template file ( genshi.html ) in the templates directory of the project.&lt;br /&gt;&lt;br /&gt;include this in genshi.html ...&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&lt;br /&gt;      xmlns:py="http://genshi.edgewall.org/"&lt;br /&gt;      lang="en"&amp;gt;&lt;br /&gt;pretty ${pretty}&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;5 - Start your project with&lt;br /&gt;&lt;br /&gt;python start-genshibasic.py&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6 - Open your browser and type http://localhost:8080/genshi&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;The rest is to study carefully genshi documentation to be a black belt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-115879242193101543?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/115879242193101543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=115879242193101543' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115879242193101543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115879242193101543'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/09/turbogears-and-genshi-baby-steps.html' title='Turbogears and Genshi baby steps'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-115697329965979150</id><published>2006-08-30T16:23:00.000-05:00</published><updated>2006-08-30T16:42:26.116-05:00</updated><title type='text'>A snap of the screen in wxPython and scp afterwards</title><content type='html'>This &lt;span style="font-weight:bold;"&gt;python&lt;/span&gt; program takes a snapshot of the screen, saving it to snap.png file, and copying the file via sftp to a server.&lt;br /&gt;&lt;br /&gt;Python 2.4 , Wxpython and paramiko are required.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import wx&lt;br /&gt;import paramiko&lt;br /&gt;&lt;br /&gt;paramiko.util.log_to_file('snap.log')&lt;br /&gt;filename = "snap.png"&lt;br /&gt;app = wx.PySimpleApp()&lt;br /&gt;p = wx.GetDisplaySize()&lt;br /&gt;bitmap = wx.EmptyBitmap( p.x, p.y)&lt;br /&gt;dc = wx.ScreenDC()&lt;br /&gt;memdc = wx.MemoryDC()&lt;br /&gt;memdc.SelectObject(bitmap)&lt;br /&gt;memdc.Blit(0,0, p.x, p.y, dc, 0,0)&lt;br /&gt;memdc.SelectObject(wx.NullBitmap)&lt;br /&gt;bitmap.SaveFile(filename, wx.BITMAP_TYPE_PNG )&lt;br /&gt;hostname = wx.GetTextFromUser("Host")&lt;br /&gt;username = wx.GetTextFromUser("User Name")&lt;br /&gt;password = wx.GetPasswordFromUser("Password")&lt;br /&gt;port = 22&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;wx.MessageBox("A %s X %s snap of the screen\nis at %s" % (p.x, p.y, filename ), "Hey!")&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;try:&lt;br /&gt;   t = paramiko.Transport((hostname, port))&lt;br /&gt;   t.connect(username=username, password=password, hostkey=None)&lt;br /&gt;   sftp = paramiko.SFTPClient.from_transport(t)&lt;br /&gt;&lt;br /&gt;   data = open(filename, 'rb').read()&lt;br /&gt;   sftp.open(filename, 'wb').write(data)&lt;br /&gt;&lt;br /&gt;   t.close()&lt;br /&gt;   wx.MessageBox("The %s file was sent to server" % filename, "Hey!")&lt;br /&gt;&lt;br /&gt;except Exception, e:&lt;br /&gt;   print e&lt;br /&gt;   try:&lt;br /&gt;       t.close()&lt;br /&gt;   except:&lt;br /&gt;       pass&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/8222526-115697329965979150?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/115697329965979150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=115697329965979150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115697329965979150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115697329965979150'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/08/snap-of-screen-in-wxpython-and-scp.html' title='A snap of the screen in wxPython and scp afterwards'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-115661975685516743</id><published>2006-08-26T14:15:00.000-05:00</published><updated>2006-08-27T09:44:56.463-05:00</updated><title type='text'>A snap of the screen in wxPython</title><content type='html'>This &lt;span style="font-weight: bold;"&gt;python&lt;/span&gt; program takes a snapshot of the screen.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;WxPython&lt;/span&gt; is required.&lt;br /&gt;&lt;br /&gt;import wx&lt;br /&gt;filename = "snap.png"&lt;br /&gt;app = wx.PySimpleApp()&lt;br /&gt;p = wx.GetDisplaySize()&lt;br /&gt;bitmap = wx.EmptyBitmap( p.x, p.y)&lt;br /&gt;dc = wx.ScreenDC()&lt;br /&gt;memdc = wx.MemoryDC()&lt;br /&gt;memdc.SelectObject(bitmap)&lt;br /&gt;memdc.Blit(0,0, p.x, p.y, dc, 0,0)&lt;br /&gt;memdc.SelectObject(wx.NullBitmap)&lt;br /&gt;bitmap.SaveFile(filename, wx.BITMAP_TYPE_PNG )&lt;br /&gt;wx.MessageBox("A %s X %s snap of the screen\nis at %s" % (p.x, p.y, filename ), "Hey!")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-115661975685516743?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/115661975685516743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=115661975685516743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115661975685516743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115661975685516743'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/08/snap-of-screen-in-wxpython.html' title='A snap of the screen in wxPython'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-115593976629392242</id><published>2006-08-18T17:22:00.000-05:00</published><updated>2006-08-18T17:22:46.296-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/hello/110/1719/320/Snap031%202006081817_13_06.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/hello/110/1719/400/Snap031%202006081817_13_06.jpg'&gt;&lt;/a&gt;&lt;br /&gt;vmware server win32 console&amp;nbsp;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-115593976629392242?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/115593976629392242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=115593976629392242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115593976629392242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/115593976629392242'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/08/vmware-server-win32-console.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-114935160531111175</id><published>2006-06-03T11:11:00.000-05:00</published><updated>2006-06-03T11:20:05.346-05:00</updated><title type='text'>In search of the python web framework</title><content type='html'>-Look no further, a good guy yell me at IRC.&lt;br /&gt;Try Nevow.&lt;br /&gt;&lt;br /&gt;That was about a year and half.&lt;br /&gt;&lt;br /&gt;-If you are looking for a python based web framework try Nevow!, this guy insisted.&lt;br /&gt;&lt;br /&gt;There was no Turbogears or Django then, the very hyped framewords of these very days.&lt;br /&gt;&lt;br /&gt;TG and Django have good screencast and nice looking websites.  Speaking about their features, well, they seem very well integrated.  In the case of TG, an impressive tie of disperate projects.  Django includes everything from the same project.&lt;br /&gt;&lt;br /&gt;Despite facts and popularity of the two, I still love the swiss army knife freedom and power of Nevow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-114935160531111175?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/114935160531111175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=114935160531111175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/114935160531111175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/114935160531111175'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/06/in-search-of-python-web-framework.html' title='In search of the python web framework'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-113632007022822005</id><published>2006-01-03T14:22:00.000-06:00</published><updated>2006-01-03T14:30:25.580-06:00</updated><title type='text'>Nevow has nice features!</title><content type='html'>&lt;a href="http://divmod.org/trac/wiki/DivmodNevow"&gt;Nevow&lt;/a&gt;  , a python based web construction toolkit , has a lot of nice features, that deserve attention:&lt;br /&gt;&lt;br /&gt;1 - LivePage ( Ajax ).&lt;br /&gt;2 - Canvas ( Flash to server ).&lt;br /&gt;3 - XUL , the python way.&lt;br /&gt;4 - Stan ( Python...ized XHTML )&lt;br /&gt;5 - Formless ( automatic Form generation ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-113632007022822005?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/113632007022822005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=113632007022822005' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/113632007022822005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/113632007022822005'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2006/01/nevow-has-nice-features.html' title='Nevow has nice features!'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-112480080830478347</id><published>2005-08-23T07:36:00.000-05:00</published><updated>2005-08-23T07:40:08.310-05:00</updated><title type='text'>Another one on wxPython</title><content type='html'>I've made a python class ( wxpython ) to dump the contents of a wx.Grid or wx.ListCtrl to an excel file.&lt;br /&gt;&lt;br /&gt;The class and a demo app is available at www.smartics.biz/site/descargas/index_html&lt;br /&gt;&lt;br /&gt;The messages of the class and the demo app are in spanish.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-112480080830478347?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/112480080830478347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=112480080830478347' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/112480080830478347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/112480080830478347'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2005/08/another-one-on-wxpython.html' title='Another one on wxPython'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-112387996708393068</id><published>2005-08-12T13:39:00.000-05:00</published><updated>2005-08-12T15:52:47.130-05:00</updated><title type='text'>Swatch and sendxmpp to rescue!</title><content type='html'>In these days there are lots of kids using hacking tools that try to log in via ssh.&lt;br /&gt;&lt;br /&gt;My servers are attacked every day in this way.&lt;br /&gt;&lt;br /&gt;I decided to add swatch to monitor log files.&lt;br /&gt;&lt;br /&gt;Also I installed sendxmpp to send xmpp messages ( jabber ) to my jabber server.&lt;br /&gt;&lt;br /&gt;The combination is great!&lt;br /&gt;&lt;br /&gt;Both tools, swatch and sendxmpp are written in Perl, and to be installed depend on other perl modules which are properly installed via cpan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-112387996708393068?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/112387996708393068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=112387996708393068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/112387996708393068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/112387996708393068'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2005/08/swatch-and-sendxmpp-to-rescue.html' title='Swatch and sendxmpp to rescue!'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-112365011041986818</id><published>2005-08-09T23:54:00.000-05:00</published><updated>2005-08-10T00:01:50.426-05:00</updated><title type='text'>wxPython!</title><content type='html'>wxPython , the marriage of wxWidgets and Python , is a very good option to develop multiplatform GUI apps.&lt;br /&gt;&lt;br /&gt;Windows installation is a matter of running and exe, and follow the wizard.&lt;br /&gt;&lt;br /&gt;For Mac OS X is a little bit trickier.&lt;br /&gt;&lt;br /&gt;And for Linux , depends on the distro.  For fedora core 3 or 4 is about compiling RPM source files and then installing the resulting binary RPM files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-112365011041986818?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/112365011041986818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=112365011041986818' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/112365011041986818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/112365011041986818'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2005/08/wxpython.html' title='wxPython!'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-111696139505506129</id><published>2005-05-24T14:03:00.000-05:00</published><updated>2005-05-24T14:03:15.096-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/110/1719/320/desktop.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/400/desktop.jpg'&gt;&lt;/a&gt;&lt;br /&gt;my desktop&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-111696139505506129?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/111696139505506129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=111696139505506129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/111696139505506129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/111696139505506129'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2005/05/my-desktop.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109677031261380840</id><published>2004-10-02T21:09:00.000-05:00</published><updated>2004-10-02T21:25:12.613-05:00</updated><title type='text'>Tips for today</title><content type='html'>Fedora core 2:&lt;br /&gt;&lt;br /&gt;Everything was ok with one of my customers.  Each user accesing a dos based app from dosemu/freedos had been working smooth... until fedora core 2 arrived...&lt;br /&gt;&lt;br /&gt;Well the change from Xfree86 to X.org had its consequences.  The new fedora user couldn't run the app as the other people ( which had Mandrake and Redhat 8 and 9 installed ).&lt;br /&gt;&lt;br /&gt;After several tries I decided to access the app from one of the RH9 users.  So I did this bash script:&lt;br /&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;FONTDIR=/home/blabla/dosemu/Xfonts&lt;br /&gt;cd $FONTDIR&lt;br /&gt;mkfontdir&lt;br /&gt;xset +fp $FONTDIR&lt;br /&gt;ssh user@machine "dosemu/xdosemu"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.....&lt;br /&gt;&lt;br /&gt;Now the problem was with Squid... &lt;br /&gt;&lt;br /&gt;How to make a user access everything related to yahoo but nothing else ?&lt;br /&gt;&lt;br /&gt;The trick was editing the /etc/squid/squid.conf file by prepending the domain def in dstdomain directive with a . ( dot ) like this ...&lt;br /&gt;&lt;br /&gt;acl yahoouser src 192.168.0.152&lt;br /&gt;&lt;br /&gt;acl yahoo dstdomain .yahoo.com&lt;br /&gt;acl yahoo2 dstdomain .yimg.com&lt;br /&gt;http_access deny yahoouser !yahoo !yahoo2&lt;br /&gt;&lt;br /&gt;( See the . before yahoo.com and yimg.com )&lt;br /&gt;&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/8222526-109677031261380840?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109677031261380840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109677031261380840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109677031261380840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109677031261380840'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/10/tips-for-today.html' title='Tips for today'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109639239739140668</id><published>2004-09-28T12:26:00.000-05:00</published><updated>2004-09-28T12:26:37.390-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/110/1719/320/Snap022%202004092812_21_15.2.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/400/Snap022%202004092812_21_15.jpg'&gt;&lt;/a&gt;&lt;br /&gt;Introducing my dhcpf.conf file&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109639239739140668?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109639239739140668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109639239739140668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109639239739140668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109639239739140668'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/introducing-my-dhcpf.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109620724532064780</id><published>2004-09-26T08:46:00.000-05:00</published><updated>2004-09-26T09:05:55.316-05:00</updated><title type='text'>One more on Squid</title><content type='html'>One example on configuring squid to let navigate user(s) only to selected places ( it needs Squid to be run on the machine which is resolving names &lt;span style="font-style:italic;"&gt;[ may be using bind with resolv.conf pointing to 127.0.0.1 ]&lt;/span&gt;.  Once I tried this on a machine which was resolved by another one and the dstdomain feature didn't work ):&lt;br /&gt;&lt;br /&gt;acl myipaddress src 192.168.0.111&lt;br /&gt;acl firstdomain dstdomain www.oneallowed.com&lt;br /&gt;acl seconddomain dstdomain www.anotherallowed.com&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;http_access deny myipaddress !firstdomain !seconddomain&lt;br /&gt;&lt;br /&gt;( this means , 192.168.0.111 can't access anything but www.oneallowed and www.anotherallowed ). &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/8222526-109620724532064780?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109620724532064780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109620724532064780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109620724532064780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109620724532064780'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/one-more-on-squid.html' title='One more on Squid'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109604746931246183</id><published>2004-09-24T12:37:00.000-05:00</published><updated>2004-09-24T12:37:49.313-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/110/1719/320/Snap021%202004092412_38_01.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/200/Snap021%202004092412_38_01.jpg'&gt;&lt;/a&gt;&lt;br /&gt;Tks Robert for the help on Combos&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109604746931246183?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109604746931246183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109604746931246183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109604746931246183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109604746931246183'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/tks-robert-for-help-on-combos.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109604710471028173</id><published>2004-09-24T12:31:00.000-05:00</published><updated>2004-09-24T12:31:44.710-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/110/1719/320/bk.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/200/bk.jpg'&gt;&lt;/a&gt;&lt;br /&gt;Ladies and Gentlemen: Bullwinkle&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109604710471028173?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109604710471028173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109604710471028173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109604710471028173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109604710471028173'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/ladies-and-gentlemen-bullwinkle.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109598633218371213</id><published>2004-09-23T19:30:00.000-05:00</published><updated>2004-09-23T19:38:52.183-05:00</updated><title type='text'>Screwdrivers</title><content type='html'>One pseudo-cop got my 6 screwdriver set at Mexico City International Airport just before departure:&lt;br /&gt;&lt;br /&gt;- You can't have these on the plane.&lt;br /&gt;&lt;br /&gt;- Why not, do I look like a terrorist or what?&lt;br /&gt;&lt;br /&gt;- No Mr. you don't.  You have to go where the clerk is ( 2 miles away ).&lt;br /&gt;&lt;br /&gt;- Hey Pal, my plane is about to take off and I need to...&lt;br /&gt;&lt;br /&gt;- You must go where the clerk.&lt;br /&gt;&lt;br /&gt;Suddenly I looked over my shoulders and the screen displayed -- 5 minutes to go.&lt;br /&gt;&lt;br /&gt;- Mmm.  Happy Birthday ( damn cop ) .  This is my gift ( fk* asshole ).&lt;br /&gt;&lt;br /&gt;Goodbye screwdriver set :(&lt;br /&gt;&lt;br /&gt;Moral : "Never get a screwdriver set at Mexico City Airport"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109598633218371213?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109598633218371213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109598633218371213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109598633218371213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109598633218371213'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/screwdrivers.html' title='Screwdrivers'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109597865195401328</id><published>2004-09-23T17:30:00.000-05:00</published><updated>2004-09-23T19:29:10.943-05:00</updated><title type='text'></title><content type='html'>&lt;div class="audblog"&gt;&lt;a href="http://www.audioblogger.com/media/34145/97363.mp3" class="audLink"&gt;&lt;img src="http://www.audioblogger.com/media/images/audioblogger.gif" class="audImg"border="0" alt="this is an audio post - click to play" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;Music and Lyrics by Mr. Louis Klink&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109597865195401328?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109597865195401328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109597865195401328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109597865195401328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109597865195401328'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/music-and-lyrics-by-mr.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109572743668617261</id><published>2004-09-20T19:43:00.000-05:00</published><updated>2004-09-20T19:43:56.686-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/110/1719/320/SimNora.py%20(C%20%20varios2%20wxp)%20-%20GVIM%2020%2009%202004%2007%2043%2033%20p.m..jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/400/SimNora.py%20(C%20%20varios2%20wxp)%20-%20GVIM%2020%2009%202004%2007%2043%2033%20p.m..jpg'&gt;&lt;/a&gt;&lt;br /&gt;It's all about Python, WxWidgets, Postgresql and Vim&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109572743668617261?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109572743668617261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109572743668617261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109572743668617261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109572743668617261'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/its-all-about-python-wxwidgets.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109538639291078619</id><published>2004-09-16T20:59:00.000-05:00</published><updated>2004-09-20T10:15:47.993-05:00</updated><title type='text'></title><content type='html'>The way to post to blogger in python:&lt;br /&gt;&lt;br /&gt;import xmlrpclib&lt;br /&gt;server = xmlrpclib.server("http://plant.blogger.com/api/RPC2")&lt;br /&gt;username = "your name goes here"&lt;br /&gt;password = "your password goes here"&lt;br /&gt;appkey = "your application key goes here, which is somewhat lenghty and hex"&lt;br /&gt;blogid = "your blog number "&lt;br /&gt;server.blogger.newPost( appkey, blogid, username, password, "Hello World", True)&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109538639291078619?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109538639291078619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109538639291078619' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109538639291078619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109538639291078619'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/way-to-post-to-blogger-in-python.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109538585153451179</id><published>2004-09-16T20:50:00.000-05:00</published><updated>2004-09-16T20:50:51.533-05:00</updated><title type='text'></title><content type='html'>This message was posted from&lt;br /&gt;a python application&lt;br /&gt;which is an interesting way of posting&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109538585153451179?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109538585153451179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109538585153451179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109538585153451179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109538585153451179'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/this-message-was-posted-from-python.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109530210396273833</id><published>2004-09-15T21:35:00.000-05:00</published><updated>2004-09-16T20:52:48.206-05:00</updated><title type='text'>Mexico's Independence Day</title><content type='html'>Mexico's Independence Day (15-16 th September ) celebration is rainy&lt;br /&gt;and fireworks are not lightning the sky.  Fiesta at Glorieta Chapalita&lt;br /&gt;is interrupted by season's hurricanes friend --&gt; rain ...&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109530210396273833?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109530210396273833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109530210396273833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109530210396273833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109530210396273833'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/mexicos-independence-day.html' title='Mexico&apos;s Independence Day'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109529282260235720</id><published>2004-09-15T19:00:00.000-05:00</published><updated>2004-09-26T09:11:06.346-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/110/1719/320/Psi%2015%2009%202004%2007%2000%2045%20p.m..jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/400/Psi%2015%2009%202004%2007%2000%2045%20p.m..jpg'&gt;&lt;/a&gt;&lt;br /&gt;Psi ...&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is Psi, a jabber client program for Windows, in action&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109529282260235720?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109529282260235720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109529282260235720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109529282260235720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109529282260235720'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/psi.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109528645395738409</id><published>2004-09-15T17:14:00.000-05:00</published><updated>2004-09-15T19:46:44.246-05:00</updated><title type='text'></title><content type='html'>I own this company and am the CEO.&lt;br&gt;&lt;br /&gt;&lt;a href='http://photos1.blogger.com/img/110/1719/640/logosmartics.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/110/1719/320/logosmartics.jpg'&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="httpd://www.smartics.biz"&gt;Smartics&lt;/a&gt;&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109528645395738409?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109528645395738409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109528645395738409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109528645395738409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109528645395738409'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/i-own-this-company-and-am-ceo.html' title=''/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109528173348910235</id><published>2004-09-15T15:46:00.000-05:00</published><updated>2004-09-15T15:55:33.490-05:00</updated><title type='text'>Squidview</title><content type='html'>Squidview. A wonderful piece of software.  Due to this nugget my &lt;i&gt;squid's&lt;/i&gt;&amp;nbsp;&lt;b&gt;access.log&lt;/b&gt;&amp;nbsp;file is easier to monitor ( bye tail -f /var/log/squid/access.log ). &lt;br&gt;&lt;br&gt;The $HOME/.squidview/aliases file feature is great. &lt;br&gt;&lt;br&gt;Finally I don't need to remember the IP address of every machine in the network.&lt;br&gt;&lt;br&gt;Maybe some day I will port this software to wxPython.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109528173348910235?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109528173348910235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109528173348910235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109528173348910235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109528173348910235'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/squidview.html' title='Squidview'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8222526.post-109449976781090975</id><published>2004-09-06T15:40:00.000-05:00</published><updated>2004-09-06T14:42:47.810-05:00</updated><title type='text'>Every blog has a start!</title><content type='html'>Yeap, every blog has a start.&lt;br /&gt;&lt;br /&gt;This is not an exception to that.&lt;br /&gt;&lt;br /&gt;If you like music, chess and technology then you are somewhat like me.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8222526-109449976781090975?l=batok.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://batok.blogspot.com/feeds/109449976781090975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8222526&amp;postID=109449976781090975' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109449976781090975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8222526/posts/default/109449976781090975'/><link rel='alternate' type='text/html' href='http://batok.blogspot.com/2004/09/every-blog-has-start.html' title='Every blog has a start!'/><author><name>Batok</name><uri>http://www.blogger.com/profile/01896692220559183675</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/img/110/1719/320/MVC-003F.jpg'/></author><thr:total>2</thr:total></entry></feed>
