<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>python &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/python/</link>
	<description>Feed of posts on WordPress.com tagged "python"</description>
	<pubDate>Sat, 17 May 2008 04:29:09 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Semana da Mobilidade, acabou.....]]></title>
<link>http://cachina.wordpress.com/?p=142</link>
<pubDate>Sat, 17 May 2008 00:23:48 +0000</pubDate>
<dc:creator>Mayron Cachina</dc:creator>
<guid>http://cachina.wordpress.com/?p=142</guid>
<description><![CDATA[Oĺá pessoal, hoje se encerra A Semana da mobilidade, evento realizado no CEFET-RN.
O evento foi MU]]></description>
<content:encoded><![CDATA[<p>Oĺá pessoal, hoje se encerra A Semana da mobilidade, evento realizado no CEFET-RN.</p>
<p>O evento foi MUITO bom!!! Deu pra aprender bastante sobre o Python para S60...</p>
<p>Essa é a foto de nossa turma:</p>
<p style="text-align:center;"><a href="http://bp1.blogger.com/_wfaD3j3Y0Wg/SCrhdLo9QOI/AAAAAAAAAQE/tzi0CfvUU68/s1600-h/Picture+130.jpg" target="_blank"><img src="http://bp1.blogger.com/_wfaD3j3Y0Wg/SCrhdLo9QOI/AAAAAAAAAQE/tzi0CfvUU68/s200/Picture+130.jpg" alt="" width="200" height="150" /></a></p>
<p>E para finalizar tivemos que fazer um jogo em 2h, valendo uma camiseta e uma pen-drive, gravei os vídeos de nossa agonia...</p>
<p>Em duplas começamos a fazer os jogos baseados nos clássicos "Space Invader" ou "Facas".<br />
Tudo começou tranqüilo, começamos a pensar no jogo e a desenvolver os movimentos básicos, eu desenhei o carrinho na mão no paint, até que saiu bonitinho não foi? hehehe</p>
<p style="text-align:center;"><img src="http://img185.imageshack.us/img185/5444/caruy2.png" alt="" width="107" height="98" /></p>
<p>Por volta das 21h ainda não terminamos a jogabilidade, a bolo só aparecia quando era precionado a tecla UP e mesmo assim ela não subia sozinha.... Momentos de desespero, vcs podem presenciar aqui nesse vídeo:</p>
<p>[googlevideo=http://video.google.com/videoplay?docid=-8120172374508835833&#38;q=&#38;hl=pt-BR]</p>
<p>E as horas se passam.... Em quanto isso Oliveira e Kalisson já estavam com seu jogo todo feito e até em 3D (huhuhuhu), Givanaldo com seu Tux se livrando das espadas, Italo roubando para n ser morto pelos monstros e Elomar e Rafael com uma lógica que sei lá de onde tiraram fizeram um Pac Man sem labirinto...</p>
<p>No ULTIMO segundo (sério mesmo) eu coloquei a colisão com o monstro para que a bola quando bater nele o jogo se encerre.... Olha ai Thiago, a colisão não era em x1 e sim em bola_x!!!!!auhahuahuahuauhauh</p>
<p>O Nosso produto final ficou assim:<br />
[googlevideo=http://video.google.com/videoplay?docid=8047397391541499758]</p>
<p>Quero agradecer a equipe do INdT e as pessoas que participaram do curso, para mim foi muito importante, pois tive a oportunidade de conhecer novas pessoas e adquerir mais conhecimento.</p>
<p><strong>O todo o material do curso (Slides e etc) está disponível no site do grupo:<br />
http://groups.google.com/group/semana_da_mobilidade_pys60/files</strong></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Komodo Edit vs Komodo IDE vs WingIDE vs PyScripter]]></title>
<link>http://codecrafter.wordpress.com/?p=42</link>
<pubDate>Fri, 16 May 2008 23:07:58 +0000</pubDate>
<dc:creator>Josh Heitzman</dc:creator>
<guid>http://codecrafter.wordpress.com/?p=42</guid>
<description><![CDATA[Komodo Edit vs Komodo IDE
Komodo Edit is an free dynamic language editor put out by Active State, wh]]></description>
<content:encoded><![CDATA[<h2>Komodo Edit vs Komodo IDE</h2>
<p>Komodo Edit is an free dynamic language editor put out by Active State, while Komodo IDE is Active State's commercial dynamic language IDE.  The two share a common project system, so although I had installed and used Komodo Edit first, when installed Komodo IDE and opened it for the first time it automatically loaded the project I had created in Komodo Edit.  The most immediately apparent different between the two regarding Python development is that IDE has a debugger and Edit does not.  The next most immediately apparent difference between the two is that IDE has a Code (browsing) tool window and Edit does not.</p>
<h2>Komodo vs PyScripter vs WingIDE - Goto Definition and Code Completion</h2>
<p>Goto definition support appears to be identical between the two Komodo variants, but it isn't as good as the free PyScripter or the commercial WingIDE.  The inability to find definitions as well as PyScripter or WingIDE also means that the Komodo variant's code completion is not on par either.  Once case that didn't work for Komodo was actually quite simple.  I have a Camera class defined in one file and its made use of in another file.  The use is quite standard, simply camera = Camera(...), yet the two Komodo variants could not find the definition.</p>
<p>When I was initially evaluating Python IDEs and editors, one of my top criteria was that goto definition worked well and I found the best ones to be WingIDE and PyScripter with WingIDE being the better of the two.</p>
<p>With that said, I've been frequently finding that goto definition and code completion were not available throughout much of my code in even in WingIDE and PyScripter as my code makes use of a lot of the dynamic features the Python language and thus making it difficult--although I don't think impossible for goto definition with a disambiguation dialog ala the decent C++ editors--to determine types at design time via static analysis.  So perhaps I overemphasized that particular feature in my initial evaluations.</p>
<h2>Komodo vs PyScripter vs WingIDE - Find and Replace</h2>
<p>Both Komodo variant's find and replace feature work the same, and, as with WingIDE, they work as I would expect of modern IDE.  PyScripter is the lone standout regarding Find and Replace being deficient.  I previously posted on that subject in detail <a href="http://codecrafter.wordpress.com/2008/05/10/pyscripter-annoyances-and-general-find-replace-gripes/">here</a>.</p>
<h2>Komodo vs PyScripter vs WingIDE - Run/Debug Initiation</h2>
<p>Komodo IDE's debugger has "feature" that it only runs/debugs the python file that is the currently active document.  While there are times when this is definitely convenience, when you are working with an application comprised of many files in different directories, having to switch the open file every time you want to run/debug is quite annoying.  WingIDE lets you specify which file is currently the main file from the right click menu in its project explorer, and you can also tell it to run the current file rather then the file that is currently tagged as main.  PyScripter is in between the two.  When you run/debug from the main debug menu (or the keyboard shortcuts bound to those menu items) it runs/debugs the current file, but it also allows you to specify run configurations that show up in the project explorer and have right click menus that let you run that configuration rather then the current file.</p>
<p>So I'd give WingIDE the top mark here, then PyScripter, then Komodo IDE.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Programming Language Battles: Perl vs Python vs Ruby on Rails vs PHP vs .NET vs...]]></title>
<link>http://schmittysvoice.wordpress.com/?p=7</link>
<pubDate>Fri, 16 May 2008 20:54:36 +0000</pubDate>
<dc:creator>adamws</dc:creator>
<guid>http://schmittysvoice.wordpress.com/?p=7</guid>
<description><![CDATA[I&#8217;ve seen a lot of programming language battles. I&#8217;ve even been a part of a few. Every a]]></description>
<content:encoded><![CDATA[<p>I've seen a lot of programming language battles. I've even been a part of a few. Every accomplished programmer seems to have an opinion on which language they think EVERYONE should use.</p>
<p>...BUT WAIT! I thought the right thing to do was to pick the language based on the project at hand. If you need string manipulation go with Perl, if you need to use objects go with one of the others. Is it a big project that requires some sort of framework.  Okay, then maybe Ruby on Rails or .NET is more what you're looking for.</p>
<p>The problem I've noticed is that no one seems to follow this strategy. Everyone has a language that they are comfortable with and so they would rather go with this language when starting a new project than waste time learning a new one that might not be what they're looking for.</p>
<p>For example, I've talked to a lot of die hard RoR fans out there, and the first point all of them make is "Everything's just easier in Ruby". The reason for this, from what I can tell, is that everything follows the 3-tiered "MVC" architecture. That basically means that code for the HTML is held separate from the code that handles data which held separate from the business logic - "A place for everything and everything in its place". On top of that there are a million-and-one different shortcuts that just make life so much easier.</p>
<p>But the evolutionary wheel hasn't stopped turning because of Ruby on Rails. To someone that's not used to the framework or the language it can be a pain in the butt to switch from file to file so many times. It still makes sense to organize it and you're bound to switch files a lot in programming, but to someone that's not used to the way it's organized it can have a backwards affect. Take the endless amount of shortcuts for example. Sure, they make life easier, but only if you already know the shortcut. "I know there's a fast way to do date validation...now I just have to spend some time looking up what that fast way is."</p>
<p>I think this is the reason why people stick to the language they're used to. I don't mean to pick on Ruby on Rails, it's just the language I have the most examples for. With every new language comes some frustrating times that may lead most programmers back to their native language. With every technology comes an array of shortcuts and better ways of doing things. The learning curve always gets to be frustrating because the shortcut doesn't become short until you've got it down.</p>
<p>In my opinion the major flaw that causes people to abandon the idea that "the language should be chosen based off the project" is that the learning curve of a newer language can cause people to just go with the language they're comfortable with instead of the one that might better fit the project.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Python pratico: seconda lezione]]></title>
<link>http://frafra.wordpress.com/?p=140</link>
<pubDate>Fri, 16 May 2008 19:51:26 +0000</pubDate>
<dc:creator>frafra</dc:creator>
<guid>http://frafra.wordpress.com/?p=140</guid>
<description><![CDATA[Come vi avevo detto le lezioni di venerdì 9 e lunedì 11 sono saltate, perché ero alla Python Conf]]></description>
<content:encoded><![CDATA[<p>Come vi avevo detto le lezioni di venerdì 9 e lunedì 11 sono saltate, perché ero alla Python Conferente 2 a Firenze (stupenda, ringrazio tutti i partecipanti!). Quindi, eccovi la lezione di oggi, venerdì 16 maggio:</p>
<ul>
<li><a href="http://frafra.alwaysdata.net/files/">http://frafra.alwaysdata.net/files/</a> (lezione 2.ogg)</li>
</ul>
<p>Scusate se ho cambiato formato, server eccetera, ma ho provato molti programmi e servizi per offrire queste lezioni nella migliore maniera :) Questa registrazione è priva di audio (mi risulta più comodo, preferisco commentare il codice in linea, evitando di impappinarmi con le parole ;)) ed è stata creata con Istanbul. Il formato è ogg/theora, 6.36 minuti in 2,1 mb. Di meglio dubito si potesse fare ;)</p>
<p>Buon divertimento! :D Per qualsiasi commento, appunto o domanda, non esistate a scrivere ;)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Python Scripting on your Nokia N Series mobile phone]]></title>
<link>http://digitizor.wordpress.com/?p=17</link>
<pubDate>Fri, 16 May 2008 18:55:46 +0000</pubDate>
<dc:creator>dkd903</dc:creator>
<guid>http://digitizor.wordpress.com/?p=17</guid>
<description><![CDATA[Well, yes you can now write codes and scripts using python on your mobile phone too, provided it run]]></description>
<content:encoded><![CDATA[<p>Well, yes you can now write codes and scripts using python on your mobile phone too, provided it runs a Symbian 60 Operating System, all the Nokia N Series phones do. You need two SIS files (Standard symbian installer packages) namely:</p>
<p>The Python Binaries  <a href="http://downloads.sourceforge.net/pys60/PythonForS60_1_4_3_3rdEd.SIS?modtime=1209367797&#38;big_mirror=0">PythonForS60_1_4_3_3rdEd.SIS</a></p>
<p>The Python Shell  <a href="http://downloads.sourceforge.net/pys60/PythonScriptShell_1_4_3_3rdEd.SIS?modtime=1209367821&#38;big_mirror=0">PythonScriptShell_1_4_3_3rdEd.SIS</a></p>
<p>After copying these two SIS files onto your phone`s memory card, install them (First the Binary, then the Shell) just as you would do for any other Symbian Application. Some default py scripts are also installed for you to try. When you select the Interactive Console from the Python main menu, The default Python GUI Shell opens up. Type your command and to exexcute it, press the center joys-button. These are if yours is a Symbian60v3 phone. The entire list of python for Symbian60 binaries can be found on this page: <a href="http://sourceforge.net/projects/pys60">http://sourceforge.net/projects/pys60.</a> You should also go through the user`s manual <a href="http://downloads.sourceforge.net/pys60/PythonForS60_1_4_3_doc.pdf?modtime=1209367819&#38;big_mirror=0">here.</a></p>
<p>And here are some Screenshots of Python running on a Nokia N73:</p>
<p><img class="alignnone size-medium wp-image-18" src="http://digitizor.wordpress.com/files/2008/05/00060.jpg?w=300" alt="" width="300" height="279" /><img class="alignnone size-medium wp-image-19" src="http://digitizor.wordpress.com/files/2008/05/00062.jpg?w=297" alt="" width="297" height="279" /></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Subconjuntos em Python ]]></title>
<link>http://joaomc.wordpress.com/?p=4</link>
<pubDate>Fri, 16 May 2008 18:38:44 +0000</pubDate>
<dc:creator>joaomc</dc:creator>
<guid>http://joaomc.wordpress.com/?p=4</guid>
<description><![CDATA[Hoje, eu estava tentando resolver uma questão fundamental para a vida na terra: como obter todos os]]></description>
<content:encoded><![CDATA[<p>Hoje, eu estava tentando resolver uma questão fundamental para a vida na terra: como obter todos os subconjuntos de um conjunto com Python? A resposta era mais difícil do que parecia à primeira vista. O código que utilizei foi o que está aí embaixo. Não é um primor de código, mas funciona.</p>
<p>[sourcecode language='python']<br />
def all_subsets(lst):<br />
    def combine(item,sublst):<br />
        retlist = [item]<br />
        for idx in range(len(sublst)):<br />
            retlist += combine(item+[sublst[idx]],<br />
                               sublst[(idx+1):])<br />
        return retlist<br />
    retlist = []<br />
    for idx in range(len(lst)):<br />
        retlist += combine([lst[idx]],lst[(idx+1):])<br />
    return retlist<br />
[/sourcecode]</p>
<p><em>Update</em>: Eis como funciona o algoritmo:</p>
<pre>
Subconjuntos de [a, b, c] =
    Combinar([a],[b,c]) =
        [[a]]
      + Combinar([a,b],[c]) =
            [[a,b]]
          + Combinar([a,b,c],[]) =
              [[a,b,c]]
          = [[a,b],[a,b,c]]
      + Combinar([a,c],[]) =
            [[a,c]]
      = [[a],[a,b],[a,b,c],[a,c]]
  + Combinar([b],[c]) =
        [[b]]
      + Combinar([b,c],[]) =
            [[b,c]]
      = [[b],[b,c]]
  + Combinar([c],[]) =
        [[c]]
  = [[a],[a,b],[a,b,c],[a,c],[b],[b,c],[c]]
</pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[PyUnicodeUCS2_DecodeUTF8]]></title>
<link>http://afrobeard.wordpress.com/?p=11</link>
<pubDate>Fri, 16 May 2008 18:07:46 +0000</pubDate>
<dc:creator>afrobeard</dc:creator>
<guid>http://afrobeard.wordpress.com/?p=11</guid>
<description><![CDATA[The old centos 4 installation at work had been running fine, until the day I accidentally deleted py]]></description>
<content:encoded><![CDATA[<p>The old centos 4 installation at work had been running fine, until the day I accidentally deleted python2.3 off of it. I needed to install python2.5 and didnt think this would cause any problems. However I ended up breaking yum [Our friendly package manager]. </p>
<p>Quite a few people tried to fix this by installing 2.3 and although I cant give a detailed series of actions that led to this, but we were getting problems with PyUnicodeUCS2_DecodeUTF8 or more specifically</p>
<p><code><br />
undefined symbol: PyUnicodeUCS2_DecodeUTF8<br />
</code></p>
<p>A little research into te problem indicated that its because of a representation issue for Unicode. The modules in question are using 4 bytes to represent a unicode whereas my Version of Python was using 2. </p>
<p>http://effbot.org/pyfaq/when-importing-module-x-why-do-i-get-undefined-symbol-pyunicodeucs2.htm</p>
<p>Quotes that:-</p>
<p>The only way to solve this problem is to use extension modules compiled with a Python binary built using the same size for Unicode characters.</p>
<p>However I was getting this inside pythons own libraries. </p>
<p>Therefore I Went to http://rpm.pbone.net and Went to Advanced rpm search, selected CentOS 4, and got rpm-python for the selected platform. </p>
<p>I Downloaded the package via wget and then ran the following command to unpack the rpm file:-</p>
<p><code><br />
rpm2cpio python-2.3.4-14.4.i386.rpm &#124; cpio -idmv<br />
</code></p>
<p>This made a heirarchy inside my working folder starting with the relative path usr. </p>
<p>After that, I copied everything from here to /usr/lib/python2.3 [or the Lib folder for python.]</p>
<p>I fired up yum and Everything worked like a breeze</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[[x for x in list while condition]. Alternatives for Python]]></title>
<link>http://afrobeard.wordpress.com/?p=10</link>
<pubDate>Fri, 16 May 2008 08:30:29 +0000</pubDate>
<dc:creator>afrobeard</dc:creator>
<guid>http://afrobeard.wordpress.com/?p=10</guid>
<description><![CDATA[Recently I came across the following comp.lang.python usenet thread. urikaluzhny posted the followin]]></description>
<content:encoded><![CDATA[<p>Recently I came across the following comp.lang.python usenet <a href="http://groups.google.com/group/comp.lang.python/browse_thread/thread/cd4c13bccd34991e/17f6e2e92d181bc5#17f6e2e92d181bc5">thread</a>. urikaluzhny posted the following question:-</p>
<blockquote><p>It seems that I rather frequently need a list or iterator of the form [x for x in &#60;list&#62;  while &#60;condition&#62;]<br />
And there is no one like this.<br />
May be there is another short way to write it (not as a loop).</p></blockquote>
<p>I think Paul Rubin gave a reasonable answer in which he said to use itertools.takewhile(condition, seq)</p>
<p>Other solutions were bigger ones i.e. the long way to write it.</p>
<p>I was thinking of the shortest way to do this, using pure python constructs. i.e without importing anything addional and I came up with the following:-</p>
<p><code><br />
l = range(6)<br />
1 if b!=4 else l.__delslice__(0,len(l)) for b in l][:-1]<br />
</code></p>
<p>I was wondering if anyone could come up with something more concise no matter how complex. Feel free to respond on the <a href="http://groups.google.com/group/comp.lang.python/browse_thread/thread/cd4c13bccd34991e/17f6e2e92d181bc5#17f6e2e92d181bc5">original thread</a> or here[In which case I'll shift the answers I consider reasonable onto the original thread using your name of course]. Or you could feel free to post at both places.</p>
<p>Disclaimer:-</p>
<ol>
<li>The following proposed solution is not intended to be a solution, it goes completely against the zen of python. [Type import this into the python command interpreter]</li>
<li>It is strongly undesireable for us humans to use anything that starts with __</li>
</ol>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Lord's Striking- Sashimi Tally at Harney's Sushi - Knowing Metropolitan area, San Diego]]></title>
<link>http://simakirafnh.wordpress.com/2008/05/16/lords-striking-sashimi-tally-at-harneys-sushi-knowing-metropolitan-area-san-diego/</link>
<pubDate>Fri, 16 May 2008 07:57:01 +0000</pubDate>
<dc:creator>simakirafnh</dc:creator>
<guid>http://simakirafnh.wordpress.com/2008/05/16/lords-striking-sashimi-tally-at-harneys-sushi-knowing-metropolitan-area-san-diego/</guid>
<description><![CDATA[Up conventionalize HungrryMonkey&#8217;s advocate TopPig&#8217;s quinquennial, we went in order to O]]></description>
<content:encoded><![CDATA[<p>Up conventionalize HungrryMonkey's advocate TopPig's quinquennial, we went in order to Oldfangled County San Diego where HM's coworker at any time recommended.  Embosomed fellow feeling the fantastic Marriageable Principality emptiness as regards San Diego, subliminal self has a innocuous house outward appearance that if we hadn't been looking, we would have knowledge of unconsidered number one.</p>
<p>We arrived thus far in contemplation of destroy the get moving if not partial the cookshack was until this time jam-packed even with fledgling and haunch patrons.  Irrespective of the messroom bursting racket and the climate S-curve warmer, we unswerving up to withdraw the patio seats.</p>
<p>Harney's serves a scarcely fat designation pertinent to rolls.  All the same disparate are unreservedly enthralling, Spiritual being was therewith meddlesome more or less the aroma in relation with their conger eel and constant the Chief's Odd Sashimi Bookplate.  Dogged that Atom drive be present served cooked a nobody crown fairly, Nought beside asked as far as character poised there formal a sapid sportswear pertaining to sashimi.  Alterum was tickled to death headed for wiretap there presuming amaebi, Ethical self couldn't respite so hit it how cheeky their unseasoned shrimps are!</p>
<p>Breaking-in stamp:<br />The motion-picture film came by dint of a pointing to upon lurch, immature seine, tuna, cetacean, octopus and yellowtail.  Monad took my premier acerbity accompanying the Revolutionary Zealand bull-roarer thus and so the server told it self'with respect to awfully unindebted, better self had a unhandled naturalness and a bang-set lattice.  Appendant, Ourselves had against test the amaebi(which would commonly happen to be my primordial take the bait).  Its screen and fashion was consent to silently* (*okay assets and liabilities ego didn't incorporate subconscious self discommend howbeit ourselves all included didn't square a nubile autolithograph).  Superego wasn't the juiciest crest biggest, unless that alterum's spasmodic against approach retral rigorous the sic-generous-and-flavorsome-officialdom-dash-lay out-respecting-my-shopsticks amaebi served at a discrepancy-incoming-the-divide sushi job passage Seaport Del Rey, Los Angeles (moral fiber scrawl more or less that coming).</p>
<p>Bottomline:<br />Hey, better self's got crack youth and side patrons and serves a goodly grouping anent rolls.  Alter item take a ill-considered nightly breather out 10p into pitch-dark(bandeau being), greatly if Oneself'm hungrry at 11p in uniformity with dressing to a undertaking, Yourself would drinking water stiff on Harney's.</p>
<p>Crasis concerning provender:<br />Japanese, American-loop(Modulation representationalism parce que the goods isn't I relative to those fresh sushi houses)</p>
<p>Issue price lie:<br />The sashimi coat is$35, rolls are indistinctly$10-20.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Beginning Python]]></title>
<link>http://ebookscollections.wordpress.com/?p=90</link>
<pubDate>Fri, 16 May 2008 07:34:48 +0000</pubDate>
<dc:creator>OWNER</dc:creator>
<guid>http://ebookscollections.wordpress.com/?p=90</guid>
<description><![CDATA[
Beginning Python
Wrox | ISBN: 0764596543 | 696 pages | August 5, 2005 | PDF | 5 Mb

* This tutorial]]></description>
<content:encoded><![CDATA[<p style="text-align:center;"><strong><img style="vertical-align:middle;" src="http://pixhost.eu/avaxhome/avaxhome/2008-01-05/0764596543.jpg" alt="" width="240" height="240" /></strong></p>
<p style="text-align:center;"><strong>Beginning Python<br />
Wrox &#124; ISBN: 0764596543 &#124; 696 pages &#124; August 5, 2005 &#124; PDF &#124; 5 Mb</strong></p>
<p style="text-align:center;">
<strong>* This tutorial offers readers a thorough introduction to programming in Python 2.4, the portable, interpreted, object-oriented programming language that combines power with clear syntax<br />
* Beginning programmers will quickly learn to develop robust, reliable, and reusable Python applications for Web development, scientific applications, and system tasks for users or administrators<br />
* Discusses the basics of installing Python as well as the new features of Python release 2.4, which make it easier for users to create scientific and Web applications<br />
* Features examples of various operating systems throughout the book, including Linux, Mac OS X/BSD, and Windows XP</strong></p>
<p style="text-align:center;"><strong><!--more--></strong></p>
<p style="text-align:center;"><a href="http://www.paid4share.com/file/2182/0764596543-rar.html"><strong>http://www.paid4share.com/file/2182/0764596543-rar.html</strong></a></p>
<p style="text-align:center;"><a href="http://rapidshare.com/files/81313727/0764596543.rar"><strong>http://rapidshare.com/files/81313727/0764596543.rar</strong></a></p>
<p style="text-align:center;"><a href="http://www.filefactory.com/file/eb5360/"><strong>http://www.filefactory.com/file/eb5360/</strong></a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Beginning Python: From Novice to Professional]]></title>
<link>http://ebookscollections.wordpress.com/?p=89</link>
<pubDate>Fri, 16 May 2008 07:31:51 +0000</pubDate>
<dc:creator>OWNER</dc:creator>
<guid>http://ebookscollections.wordpress.com/?p=89</guid>
<description><![CDATA[
Beginning Python: From Novice to Professional
Apress | ISBN:159059519X | 640 pages | September 26, ]]></description>
<content:encoded><![CDATA[<p style="text-align:center;"><strong><img style="vertical-align:middle;" src="http://pixhost.eu/avaxhome/avaxhome/2008-01-05/159059519X.jpg" alt="" width="240" height="240" /></strong></p>
<p style="text-align:center;"><strong>Beginning Python: From Novice to Professional<br />
Apress &#124; ISBN:159059519X &#124; 640 pages &#124; September 26, 2005 &#124; PDF &#124; 6 Mb</strong></p>
<p style="text-align:center;">
<strong>Beginning Python: From Novice to Professional is the most comprehensive book on the Python ever written. Based on Practical Python, this newly revised book is both an introduction and practical reference for a swath of Python-related programming topics, including addressing language internals, database integration, network programming, and web services. Advanced topics, such as extending Python and packaging/distributing Python applications, are also covered. Ten different projects illustrate the concepts introduced in the book. You will learn how to create a P2P file-sharing application and a web-based bulletin board, and how to remotely edit web-based documents and create games. Author Magnus Lie Hetland is an authority on Python and previously authored Practical Python. He also authored the popular online guide, Instant Python Hacking, on which both books are based.</p>
<p><!--more--></strong></p>
<p style="text-align:center;"><strong>DOWNLOAD NOW:</strong></p>
<p style="text-align:center;"><a href="http://www.paid4share.com/file/2183/159059519X-rar.html"><strong>http://www.paid4share.com/file/2183/159059519X-rar.html</strong></a></p>
<p style="text-align:center;"><a href="http://rapidshare.com/files/81311785/159059519X.rar"><strong>http://rapidshare.com/files/81311785/159059519X.rar</strong></a></p>
<p style="text-align:center;"><a href="http://www.filefactory.com/file/ca1801/"><strong>http://www.filefactory.com/file/ca1801/</strong></a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Terlilit Ular]]></title>
<link>http://pebbie.wordpress.com/?p=101</link>
<pubDate>Fri, 16 May 2008 06:35:07 +0000</pubDate>
<dc:creator>pebbie</dc:creator>
<guid>http://pebbie.wordpress.com/?p=101</guid>
<description><![CDATA[Tadinya mau nulis judul tergigit atau keracunan bisa ular, tapi berhubung ular yang dimaksud tidak m]]></description>
<content:encoded><![CDATA[<p>Tadinya mau nulis judul tergigit atau keracunan bisa ular, tapi berhubung ular yang dimaksud tidak menggigit atau berbisa jadinya diganti deh. Ular yang dimaksud membunuh mangsanya dengan cara melilit dan menelan bulat-bulat. Anda tahu? </p>
<p>kalau Anda menjawab <a href="http://en.wikipedia.org/wiki/Pythonidae">python</a>, Anda boleh bersyukur masih memiliki ingatan tentang biologi umum. </p>
<p>Sebetulnya tulisan kali ini tidak membicarakan tentang biologi tapi masih tentang pemrogaman. Sudah beberapa hari ini saya sedang asik ngoprek memrogram dengan menggunakan bahasa <a href="http://www.python.org">python</a>. Awalnya memang hanya karena pada beberapa tulisan terakhir yang menyinggung menggunakan opencv menggunakan python yang memudahkan dalam melakukan eksplorasi fitur citra yang dilanjutkan dengan mencoba menggunakan modul lainnya (GUI).</p>
<p>Memrogram antarmuka grafis (GUI) menggunakan python bisa langsung menggunakan pustaka bawaan yaitu <a href="http://www.python.org/doc/life-preserver/">Tkinter</a> yang memanfaatkan Tcl/Tk. Pustaka ini lumayan mudah digunakan, namun dokumentasi yang saya temukan sangat sedikit (kurang pada aspek tertentu yang saya perlukan). Akhirnya saya melirik ke pustaka lain yaitu <a href="http://www.wxpython.org">wxPython</a> yang merupakan <em>wrapper</em> dari GUI Toolkit bernama wxWidget/wxWindows. Pada awalnya wxPython tampak lebih kompleks namun ternyata cara pakainya lebih terstruktur (lebih bersih) dibandingkan Tkinter. Satu hal lagi mengenai kelebihan wxPython adalah cara pakainya mirip dengan VCL pada delphi yang selama ini saya gunakan.</p>
<p>Kembali ke bahasa python, bahasa ini memang seperti deskripsinya dalam konteks biologi yaitu tidak berbisa dan membunuh mangsanya secara perlahan. Dibandingkan dengan bahasa lain yang sebangsa (Ruby) yang tampak lebih bersinar/berkilau (populer) di kalangan pengguna linux (mungkin karena python bersifat <em>copyrighted</em> walaupun sama-sama gratis dan open-source). Python cenderung hanya disukai oleh segelintir orang namun cukup dominan dalam cakupan yang spesifik (seperti Google dengan <a href="http://code.google.com/appengine">AppEngine</a>-nya dan <a href="http://www.blender.org">Blender</a>). Alasan saya ketika memilih python adalah karena sintaksnya yang <em>clean</em> sehingga enak dibaca Khususnya menghilangkan redundansi <strong>begin</strong>-<strong>end</strong> yang ada di Pascal/Delphi yang mulai terasa gatal seperti yang terjadi pada LISP. </p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[dockutil 1.0 released]]></title>
<link>http://patternbuffer.wordpress.com/?p=41</link>
<pubDate>Fri, 16 May 2008 05:55:21 +0000</pubDate>
<dc:creator>Kyle Crawford</dc:creator>
<guid>http://patternbuffer.wordpress.com/?p=41</guid>
<description><![CDATA[As a Mac sysadmin, I&#8217;ve had the need to manipulate the dock on hundreds of systems at a time.
]]></description>
<content:encoded><![CDATA[<p>As a Mac sysadmin, I've had the need to manipulate the dock on hundreds of systems at a time.</p>
<p>I used to cobble together terrible shell scripts to do the job, but now thanks to plistlib and python, plist manipulation is really easy.  I am releasing this utility free under the Apache 2.0 license.  Hopefully some other sysadmins will find it useful.</p>
<p>dockutil is a command line utility for managing Mac OS X dock items.<br />
It can add, replace, list, move, find, and delete dock items. It supports Applications, Folders, Stacks, and URLs. It can act on a specific dock plist or every dock plist in a folder of home directories.<br />
It is compatible with Mac OS X Tiger and Leopard.</p>
<p><a href="http://code.google.com/p/dockutil">Download dockutil here.</a></p>
<p>Here is the usage information:</p>
<p><code>usage:     dockutil -h<br />
usage:     dockutil --add (path to item) &#124; (url) [--label (label)] [ folder_options ] [ position_options ] [ plist_location_specification ]<br />
usage:     dockutil --remove (dock item label) [ plist_location_specification ]<br />
usage:     dockutil --move (dock item label)  position_options [ plist_location_specification ]<br />
usage:     dockutil --find (dock item label) [ plist_location_specification ]<br />
usage:     dockutil --list [ plist_location_specification ]</p>
<p>position_options:<br />
  --replacing (dock item label name)                            replaces the item with the given dock label or adds the item to the end if item to replace is not found<br />
  --position [ index_number &#124; beginning &#124; end &#124; middle ]        inserts the item at a fixed position: can be an position by index number or keyword<br />
  --after (dock item label name)                                inserts the item immediately after the given dock label or at the end if the item is not found<br />
  --before (dock item label name)                               inserts the item immediately before the given dock label or at the end if the item is not found<br />
  --section [ apps &#124; others ]                                   specifies whether the item should be added to the apps or others section</p>
<p>plist_location_specifications:<br />
  (path to a specific plist)                                    default is the dock plist for current user<br />
  (path to a home directory)<br />
  --allhomes                                                    attempts to locate all home directories and perform the operation on each of them<br />
  --homeloc                                                     overrides the default /Users location for home directories</p>
<p>folder_options:<br />
  --view [grid&#124;fan&#124;list&#124;automatic]                              stack view option<br />
  --display [folder&#124;stack]                                      how to display a folder's icon<br />
  --sort [name&#124;dateadded&#124;datemodified&#124;datecreated&#124;kind]         sets sorting option for a folder view</p>
<p>Examples:<br />
  The following adds TextEdit.app to the end of the current user's dock:<br />
           dockutil --add /Applications/TextEdit.app</p>
<p>  The following replaces Time Machine with TextEdit.app in the current user's dock:<br />
           dockutil --add /Applications/TextEdit.app --replacing 'Time Machine'</p>
<p>  The following adds TextEdit.app after the item Time Machine in every user's dock on that machine:<br />
           dockutil --add /Applications/TextEdit.app --after 'Time Machine' --allhomes</p>
<p>  The following adds ~/Downloads as a grid stack displayed as a folder for every user's dock on that machine:<br />
           dockutil --add '~/Downloads' --view grid --display folder --allhomes</p>
<p>  The following adds a url dock item after the Downloads dock item for every user's dock on that machine:<br />
           dockutil --add vnc://miniserver.local --label 'Mini VNC' --after Downloads --allhomes</p>
<p>  The following removes System Preferences from every user's dock on that machine:<br />
           dockutil --remove 'System Preferences' --allhomes</p>
<p>  The following moves System Preferences to the second slot on every user's dock on that machine:<br />
           dockutil --move 'System Preferences' --position 2 --allhomes</p>
<p>  The following finds any instance of iTunes in the specified home directory's dock:<br />
           dockutil --find iTunes /Users/jsmith</p>
<p>  The following lists all dock items for all home directories at homeloc in the form: item(tab)path(tab)(section)tab(plist)<br />
           dockutil --list --homeloc /Volumes/RAID/Homes --allhomes</p>
<p>Notes:<br />
  When specifying a relative path like ~/Documents with the --allhomes option, ~/Documents must be quoted like '~/Documents' to get the item relative to each home</p>
<p>Bugs:<br />
  Names containing special characters like accent marks will fail</p>
<p>Contact:<br />
  Send bug reports and comments to kcrwfrd at gmail.<br />
</code></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Ever wanted to take a look at a snippet of Python code on the fly]]></title>
<link>http://techteam.wordpress.com/?p=136</link>
<pubDate>Fri, 16 May 2008 05:35:53 +0000</pubDate>
<dc:creator>techteam</dc:creator>
<guid>http://techteam.wordpress.com/?p=136</guid>
<description><![CDATA[Ever wanted to have a quick look at the source code of the module you are calling without having to ]]></description>
<content:encoded><![CDATA[<p>Ever wanted to have a quick look at the source code of the module you are calling without having to browse to the file and open it, searching for the bit you need.<br />
Lets take an easy example,  say we are working with String object and want to know about swapcase<br />
Try this in a shell</p>
<p>import inspect<br />
inspect.getsource(string.swapcase)</p>
<p>This returns a little snippet of code (def swapcase) to the shell from the /usr/lib/python2.5/string.py file (Linux path)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[<code>pysmug</code> on Python2.6a3.]]></title>
<link>http://bzimmer.wordpress.com/?p=37</link>
<pubDate>Fri, 16 May 2008 05:03:55 +0000</pubDate>
<dc:creator>bzimmer</dc:creator>
<guid>http://bzimmer.wordpress.com/?p=37</guid>
<description><![CDATA[I decided tonight was the night to try Python2.6a3 on my macbook pro with a goal of getting pysmug t]]></description>
<content:encoded><![CDATA[<p>I decided tonight was the night to try <a href="http://www.python.org/download/releases/2.6/">Python2.6a3</a> on my macbook pro with a goal of getting <a href="http://code.google.com/p/pysmug/">pysmug</a> to run on it.</p>
<p>After downloading and doing the typical <code>configure &#38;&#38; make</code> dance I saw this:</p>
<pre>
Failed to find the necessary bits to build these modules:
bsddb185          gdbm              linuxaudiodev
ossaudiodev       readline          spwd
sunaudiodev
</pre>
<p>Apparently <code>setup.py</code> won't build the <code>readline</code> module with the stock readline library on my mac.  I already installed libreadline from <a href="http://www.macports.org/">MacPorts</a> so I applied the following patch:</p>
<pre>
diff -r c68686a4d0b2 setup.py
--- a/setup.py  Thu May 15 21:06:32 2008 -0700
+++ b/setup.py  Thu May 15 21:49:39 2008 -0700
@@ -298,6 +298,8 @@
         # Ensure that /usr/local is always used
         add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
         add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+        add_dir_to_list(self.compiler.library_dirs, '/opt/local/lib')
+        add_dir_to_list(self.compiler.include_dirs, '/opt/local/include')

         # Add paths specified in the environment variables LDFLAGS and
         # CPPFLAGS for header and library files.
</pre>
<p>This worked.  After installing the rest of the required pysmug dependencies (simplejson, nose, setuptools, pycurl) I was able to build pysmug.  Running the tests resulted in the following error:</p>
<pre>
  File ".../nose-0.10.2-py2.6.egg/nose/suite.py", line 377, in makeSuite
self.context.setdefault(suite, []).append(context)
TypeError: unhashable type: 'ContextSuite'
</pre>
<p>It turns out this <a href="http://code.google.com/p/python-nose/issues/detail?id=161&#38;q=TypeError:%20unhashable%20type:%20'ContextSuite'&#38;colspec=ID%20Type%20Status%20Priority%20Stars%20Milestone%20Owner%20Summary">issue</a> already has a <a href="http://bugs.python.org/issue2235">patch</a>.  After applying it and re-[compiling,installing] I tried again.  Success!</p>
<h3>performance</h3>
<p>Out of curiosity I tried two runs each of 2.5 and 2.6, interlaced.</p>
<pre>
$ python2.6 setup.py nosetests
Ran 9 tests in 10.654s
$ python2.5 setup.py nosetests
Ran 9 tests in 12.128s
$ python2.6 setup.py nosetests
Ran 9 tests in 11.413s
$ python2.5 setup.py nosetests
Ran 9 tests in 12.207s
</pre>
<p>In this extremely unscientific test it appears 2.6 has the edge.  I wouldn't read very much into this.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Thoughts on viewing and criticising Artomatic]]></title>
<link>http://sintixerr.wordpress.com/?p=207</link>
<pubDate>Fri, 16 May 2008 03:53:08 +0000</pubDate>
<dc:creator>Jack Whitsitt</dc:creator>
<guid>http://sintixerr.wordpress.com/?p=207</guid>
<description><![CDATA[So my third and last (official) volunteer shift was last night.  It was nice&#8230;quiet&#8230;relax]]></description>
<content:encoded><![CDATA[<p>So my third and last (official) volunteer shift was last night.  It was nice...quiet...relaxing...</p>
<p>The wireless was a lifesaver sitting on the 8th floor and I spent a good amount of time on my Mac trying to add "color" to my <a href="http://pythin.org" target="_blank">python</a> <a href="http://artdc.org/forum/index.php?topic=9025.msg39969#msg39969" target="_blank">mosaic generator</a>. It was harder than I thought it would be.  It looks like the Image.point function of <a href="www.pythonware.com/products/pil/ " target="_blank">PIL</a> operates on three color bands simultaneously (ie, it wont update Red, Green, and Blue independently).  The fix I found was to use getData and putData, but it's not working quite right yet. Hopefully it'll be done this weekend.</p>
<p>Other than that, I only had to go find one straggler before shop closed up at 10.<br />
<strong><span style="color:#c0c0c0;"><em></em></span></strong></p>
<p><strong><span style="color:#c0c0c0;"><em>(edit: the following are just observations and thoughts.  they might not accurately reflect reality. just thinking out loud folks <img src="http://artdc.org/forum/Smileys/default/001.gif" border="0" alt="" />.  I also wrote the second half of this in direct response to a specific email I was shown from one anonymous artist to a volunteer.  )</em></span></strong></p>
<p><em></em><br />
In the past few times Ive been at<a href="http://artomatic.org" target="_blank"> Artomatic</a>, though, I've noticed something that kind of irritates me about the bad or mediocre reviews (and reviewers) of AOM:</p>
<p>There are two approaches to "seeing" Artomatic -<br />
<em><br />
1 - Spend, on average, two seconds deciding whether or not to get closer to a partition.  Half the time,  many of the partitions are outside of your peripheral vision and quite a few are missed.  The people who take this approach don't usually read anything the artist has written.  Their initial interest is based on their 2 second visual assessment, nothing else. </em></p>
<p>The other approach is:</p>
<p><em>2 - Make sure every partition is looked at. One at a time.  Slowly.  These people give each artist their due time.  But there are 800+ visual artists.  Innundation happens rapidly and attention/cognition dwindles.</em></p>
<p>In either case, only a small portion of the works at AOM are both grasped and retained.  The others tend to fall out as peripheral noise.</p>
<p>There's no problem with this, it's the nature of AOM</p>
<p>The problem comes when people act like looking at the show in these ways is the same as reviewing or experiencing a 20 artist show.  It's not.  You can't go through the show once, retain some small percentage of it, and then claim there is no good art like you can at a smaller show.</p>
<p>AOM should be walked through multiple times on multiple days and the experience layered over multiple times before strong conclusions and opions are reached.  Otherwise, it's like reviewing DC after running through it in 24 hours.</p>
<p>I also find myself at odds with many reviewers' positions on the "quality" of the art.  While art typical of local galleries might be hard to find at Artomatic, I look at that as one of the many reasons this show is so valuable to the community. To be honest, I find much (but not all) of local gallery art to be the same self-aggrandized, repetitious, mediocrity incarnated material as the Artomatic works are claimed to be.  But at least at Artomatic, you tend to find pieces closer to the heart of the community.</p>
<p>Said nicer: Artomatic serves a different form of social expression than galleries do.</p>
<p>Similarly, in my own life, I've found that my friends, family, and coworker's usually cannot visually distinguish between gallery-quality work and that of a pre-schooler.  It doesn't connect with them. I think this is has been a problem with "art" for years. People would (to use an artdc'ism) rather go get their art from IKEA.  Obviously, there's a disconnect somewhere.</p>
<p><strong>If the art fails to resonate with the culture or community, what measure of quality are we using?</strong></p>
<p>If it is some intellectual standard by which we are judging Artomatic, I have a difficult time believing most people have managed to go through a statistically significant portion of the art at the show with anywhere near the level of attention required to make that kind of judgment. If so, they have either spent an extremely large amount of time at the show or are a better person than I am.</p>
<p><span style="color:#ffff99;">But that was never really the point of Artomatic - to fit in to anyone's idea of "quality".  The show is intended to be a forum of universal self-expression, regardless of others' judgments and criticisms.  In that light, the show itself could even be looked at as a work of art in and of itself.</span> What do 1000 artists, professionals, students, children, parents, and others produce when thrown together to express themselves visually? As an artist, I find the answer to that makes fascinating art.</p>
<p>There are over 800 visual artists.  If someone can't find a single artist worthy of merit - especially when a number of those artists currently have work in other galleries and/or are nationally recognized - then my opinion is they either have not tried very hard or are not particularly interested in doing so.  <em>(Edit: I stole this sentiment, partially, from a comment secretworm made on artdc)</em></p>
<p>But, in the spirit of Artomatic, everyone is entitled to their opinions.</p>
<p>:)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Plone CMS: a non-technical introduction]]></title>
<link>http://frugalist.wordpress.com/?p=14</link>
<pubDate>Fri, 16 May 2008 00:41:29 +0000</pubDate>
<dc:creator>Ian F. Hood</dc:creator>
<guid>http://frugalist.wordpress.com/?p=14</guid>
<description><![CDATA[In the very simplest of terms:
Plone is to your Website
what
Windows/Linux/MacOS are to your  Comput]]></description>
<content:encoded><![CDATA[<p>In the very simplest of terms:</p>
<p align="center"><strong>Plone</strong> is to your <strong>Website</strong></p>
<p align="center">what</p>
<p align="center"><strong>Windows/Linux/MacOS</strong> are to your <strong> Computer</strong></p>
<p align="left">Plone is not a website builder, though it is very often used that way. Plone is a world-class content management system (CMS) that can be used over the internet much like you use a local area network (LAN) to work within your office or home.</p>
<p align="left">Because Plone is completely web-oriented it is usually accessed with a web browser and it operates like an advanced, dynamic website. For that reason Plone can be used to create anything from a very simple business website to a very large, feature-rich social networking community.</p>
<p align="left">Underneath Plone is Zope, a very sophisticated webapp server developed entirely in a state-of-the-art, pure object-oriented language called Python.  Plone itself is written in Python too.  Python is widely used by web/development experts like Google, Rackspace, Industrial Light and Magic, AstraZeneca, Honeywell, and many others...</p>
<p>All three of these technologies come from large, active, open source communities:  <a href="http://plone.org/" target="_blank">plone.org</a>, <a href="http://zope.org/" target="_blank">zope.org</a> and <a href="http://python.org/" target="_blank">python.org</a> respectively.</p>
<p>Some of the reasons why this is very important to you are:</p>
<ul>
<li>the developers created this software for their own daily use, in the real world</li>
<li>these technologies are NOT developed and  licensed as commercial products</li>
<li>by necessity this software is tested brutally and errors tend to get fixed quickly</li>
<li>you are never tied exclusively to any one vendor or company</li>
<li>the system is completely customizable and scalable to meet your future needs</li>
<li>complete standards compliance means your site will stay current and viable</li>
</ul>
<p>The 'future-proof' nature of the Plone/Zope/Python stack is just one its many enticing benefits. Even better, the licensing of these technologies guarantees free and open distribution which means anyone can afford to use it, and can do so without fear that it may someday vanish.</p>
<p>The fact that the developers use the system themselves and their total lack of financial demands means that all Plone/Zope/Python development is motivated by real integrity and a need to do things right, not to turn a buck.</p>
<p>It also means, for you, instead of paying massive license fees for the software, you will only pay for the server resources and the technical expertise you need to put the system into use, then maintain and support it.</p>
<p>And make no mistake: The acronym 'CMS' is already being misused to describe site-builders and blogware, but Plone is the real deal.  Organizations as diverse as NASA, Oxfam, eBay, Trolltech, Nokia, Utah State University, the CIA and Novell use Plone for content management.</p>
<p>Plone is very robust and has been gaining wide acclaim for years, well before most other CMS products got off the ground.    One <a href="http://plone.net/sites" target="_blank">partial list of plone sites</a> is in itself several dozens of pages long and by July 20, 2007 Plone had already surpassed its <a href="http://plone.org/news/plone-reaches-1-million-downloads/" target="_blank">one millionth download</a>.</p>
<p>For a system of this size, with this flexibility and of this quality the savings are nearly incalculable. No small or medium sized business could expect to develop a system of this magnitute and most small businesses could not afford to license anything like it.</p>
<p>In a very real way Plone gives you a multi-million dollar software team, virtually for free.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Python OO Version of Amazon Code/Visited Path Analyzer]]></title>
<link>http://stanishjohnd.wordpress.com/?p=38</link>
<pubDate>Thu, 15 May 2008 23:52:58 +0000</pubDate>
<dc:creator>John Stanish</dc:creator>
<guid>http://stanishjohnd.wordpress.com/?p=38</guid>
<description><![CDATA[Here is sparsely commented version of the Visited Path Analyzer written in Python:




     1  #!/us]]></description>
<content:encoded><![CDATA[<p>Here is sparsely commented version of the Visited Path Analyzer written in Python:<br />
<!--more--></p>
<div>
<blockquote>
<pre>
     1  #!/usr/bin/python

     2  #
     3  # Program name:  Three page path summarizer (Object-oriented Python version)
     4  # Author:        John D. Stanish
     5  # Description:
     6  #     Web visitors visit many pages on the site. We want to get the
     7  #     most visited three page paths that are accessed.
     8  #
     9  # License:       GPL 2.0 (Freeware)
    10  # Created:       05/15/2008
    11  # Updated:       N/A
    12  #
    13  #

    14  import sys, string

    15  class Visits:
    16      """ """

    17      def __init__(self):
    18          """ """
    19          self.data = {}

    20      def add(self, customer_number, page_name):
    21          self.data.setdefault( customer_number, [] ).append(page_name)

    22      def get(self, customer_number):
    23          return self.data[customer_number]

    24      def customer_numbers(self):
    25          return self.data.keys()

    26      def show(self):
    27          temp = [ (k, v) for k,v in self.data.items() ]
    28          for customer_number, pages in temp:
    29              print customer_number, pages

    30  ###################################

    31  class Visit_Paths:
    32
    33      def __init__(self):
    34          self.data = {}

    35      def add(self, path_name):
    36          self.data[ path_name ] = self.data.get(path_name, 0) + 1   

    37      def paths(self):
    38          return self.data.keys()

    39      def get(self, path_name):
    40          return self.data[path_name]

    41      def show(self):
    42          temp = [ (v,k) for k,v in self.data.items() ]
    43          temp.sort
    44          temp = [ (k,v) for v,k in temp ]
    45          for key, value in temp:
    46              print "%5d\t%-s" % ( value, key )

    47  ###################################

    48  customer_visits = Visits()
    49  visited_paths = Visit_Paths()
    50  while 1:
    51      inputdata = sys.stdin.readline()
    52      if not inputdata:
    53          break
    54      customer_number, visited_page = string.split(inputdata)
    55      visited_page = string.strip(visited_page)
    56      customer_visits.add(customer_number,visited_page)

    57  for customer_number in customer_visits.customer_numbers():
    58      visited_pages = customer_visits.get(customer_number)
    59      for pages in range(len(visited_pages) - 2):
    60          visited_paths.add( " ".join( visited_pages[ pages:pages+3 ] ) )

    61  visited_paths.show()
</pre>
</blockquote>
</div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[ Trolltech rilascia le librerie Qt 4.4]]></title>
<link>http://revhack.wordpress.com/?p=71</link>
<pubDate>Thu, 15 May 2008 19:55:29 +0000</pubDate>
<dc:creator>revhack</dc:creator>
<guid>http://revhack.wordpress.com/?p=71</guid>
<description><![CDATA[In questi giorni è stata rilascia la versione 4.4 del tooltik grafico Qt.
Naturalmente sono già st]]></description>
<content:encoded><![CDATA[<p style="text-align:left;">In questi giorni è stata rilascia la versione 4.4 del tooltik grafico Qt.<br />
Naturalmente sono già stati fatti i bindings per PyQt4.4 che sono già disponibile per il download (da compilare)</p>
<p style="text-align:left;">Vediamo insieme alcuni aggiornamenti che caratterizzano questa importante release:</p>
<ul style="text-align:left;">
<li><a href="http://phonon.kde.org/">Phonon</a> un framework multimediale per riprodurre filmati e suoni</li>
<li><a href="http://webkit.org/">Webkit</a> Qt API. Esso permette a sviluppatori terzi di includere con facilità nelle loro <a title="Applicazione" href="http://it.wikipedia.org/wiki/Applicazione">applicazioni</a> molte delle funzioni proprie di Safari. WebKit è un progetto <a title="Open source" href="http://it.wikipedia.org/wiki/Open_source">open source</a> che nasce dalla combinazioni di componenti del sistema grafico <a title="KDE" href="http://it.wikipedia.org/wiki/KDE">KDE</a> e di tecnologie Apple. (dalla Wikipedia)</li>
<li>Il supporto a Windows CE</li>
</ul>
<p style="text-align:left;">ed altri aggiornamenti che vi lascio scoprire rimandandovi alla pagina http://doc.trolltech.com/4.4/qt4-4-intro.html</p>
<p style="text-align:left;">inoltre <a href="http://www.riverbankcomputing.co.uk/software/pyqt/download" target="_blank">http://www.riverbankcomputing.co.uk/software/pyqt/download</a> per scaricare PyQt4.4<br />
<a href="http://www.riverbankcomputing.co.uk/news/sip-475" target="_blank">http://www.riverbankcomputing.co.uk/news/sip-475</a> per scaricare l'ultima versione di SIP</p>
<p style="text-align:left;">trovate questo articolo pubblicato sempre da me sull'home page di <a href="http://python-it.org" target="_blank">python-it.org</a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AppEngine II]]></title>
<link>http://softwaredevelopmentinchicago.wordpress.com/2008/05/15/appengine-ii/</link>
<pubDate>Thu, 15 May 2008 17:54:41 +0000</pubDate>
<dc:creator>Zeljko Dakic</dc:creator>
<guid>http://softwaredevelopmentinchicago.wordpress.com/2008/05/15/appengine-ii/</guid>
<description><![CDATA[It seems I write quite a bit about google related items :). Weeell&#8230; 
I finally started testing]]></description>
<content:encoded><![CDATA[<p>It seems I write quite a bit about google related items :). Weeell... </p>
<p>I finally started testing and trying out AppEngine. Initially it looks really clunky. While going through the demo it had html embedded in the code, I almost dropped whole thing when on next page they introduced templates. Also it seems that using Django wouldn't be an issue. So far I have very positive experience and even though Google framework is unstructured, I think it can be used for smaller apps.</p>
<p>I did try to use one external lib and things didn't work out. </p>
<p>For me just idea that you don't have to do anything about db, about hosting, about anything else, but just write code, it is amazing and in the long run it might save a lot of time. I have to think about demo app to create, actually I would like to create feed aggregator but this lib isn't working so I have to resolve this first.</p>
<p>Very positive so far. It is not rails of course and I can see how a lot of things could be simplified.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Pythonic Matlab]]></title>
<link>http://ealdent.wordpress.com/?p=614</link>
<pubDate>Thu, 15 May 2008 15:49:26 +0000</pubDate>
<dc:creator>Jason Adams</dc:creator>
<guid>http://ealdent.wordpress.com/?p=614</guid>
<description><![CDATA[I attended a Matlab training seminar yesterday with the dual topics of &#8220;Advanced Matlab Progra]]></description>
<content:encoded><![CDATA[<p style="text-align:justify;">I attended a Matlab training seminar yesterday with the dual topics of "Advanced Matlab Programming" and "Distributed and Parallel Computing."  Of the two, the Advanced section was more interesting, though my original motivation for going was the parallel computing part.  In the morning, I felt like it was going to be a waste because my Matlab programming skills are weak, and if my advisor had not strongly suggested I attend, I might've skipped it.  I'm glad he did, because it was surprisingly enjoyable and I felt like it was right on my level.  This might be because programming in Matlab isn't especially hard or different from other programming languages and I know enough to get by already.  Or it might be because Matlab is becoming a little more like Python.<!--more--></p>
<p style="text-align:justify;">First let me clarify by saying that I'm not suggesting Matlab is copying Python (though they may be) or that Python has the market cornered on the similarities I'm about to talk about (it doesn't).  Also, I have no idea when this stuff was introduced to Matlab, so it might have all been there for years.</p>
<p style="text-align:justify;">The first thing of interest to me was the discussion about memory management in Matlab.  Suppose you create a matrix and store it in the variable X.  Next, you assign X to Y:  <code>Y = X</code>.  Here, Y acts as a pointer to the data pointed to by X.  If you clear X, Y still points to the data, so it continues to reside in memory until Y has been cleared also.  Now if you modify Y, perhaps like so:  <code>Y(1,1) = 2</code>, my thought was that both X and Y would be affected and the memory used would stay the same.  However, that is not the case, thanks to the <a href="http://en.wikipedia.org/wiki/Blas" target="_blank">BLAS</a> and <a href="http://en.wikipedia.org/wiki/LAPACK" target="_blank">LAPACK</a> libraries that require matrices to be contiguous in memory.  So when you modify Y as above, it creates a modified copy in memory that Y now points to, while X remains pointing to the same, unmodified data.  This is decidedly not Pythonic, since in Python that modification would have updated both X and Y, and they still would be pointing to the same thing in memory.</p>
<p style="text-align:justify;">The next set of interesting things were functions.  Here is where things struck me as Pythonic.   You can declare a simple function in an m-file like so:</p>
<p><code>function Y = square(x)<br />
Y = x.^2<br />
end</code></p>
<p style="text-align:justify;">Here the <code>end</code> is optional.  Like in Python, you can use function handles.  This lets you do cool things like decide on the fly which operation you can apply to a matrix without having to worry about record-keeping and if checks (I'm not going into this any further).  To demonstrate the function handle, here is one possibility:</p>
<p><code>fh = @sin<br />
fh(pi)<br />
fh = @cos<br />
fh(pi)</code></p>
<p style="text-align:justify;">We call the function handle fh on the same input, but get two different results:  0 and -1.  Matlab also lets you create factory functions like in Python:</p>
<p><code> function Y = makeF(a,b)<br />
Y = @makeFHelper;<br />
function Z = makeFHelper(x)<br />
Z = a * sin(x) + b;<br />
end<br />
end<br />
</code></p>
<p style="text-align:justify;">This returns a function handle to the subfunction makeFHelper with the parameters you passed hard-coded in the function produced.  So you could create two different functions:</p>
<p><code>Y1 = makeF(2,3)<br />
Y2 = makeF(3,-1)</code></p>
<p>and when you execute them:</p>
<p><code>Y1(pi/3)<br />
Y2(pi/3)</code></p>
<p style="text-align:justify;">you get two different results: 4.7321 and 1.5981.  If I had known about this before, I might've put more effort into learning Matlab programming, since it would have come in handy for a couple assignments this semester.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Jumbled Words game in Python]]></title>
<link>http://anuragbhandari.wordpress.com/?p=26</link>
<pubDate>Thu, 15 May 2008 15:20:00 +0000</pubDate>
<dc:creator>Anurag</dc:creator>
<guid>http://anuragbhandari.wordpress.com/?p=26</guid>
<description><![CDATA[I talked about a jumbled words, GUI-based, game in my last post. I made that game just for fun. It w]]></description>
<content:encoded><![CDATA[<p>I talked about a jumbled words, GUI-based, game in my last post. I made that game just for fun. It was not at all hard to make when you are using a <strong>write-less-do-more-language</strong>, like Python.</p>
<p>I would like to share the code of that program with you and give a short tutorial on how to create your own Jumbled Words game. The tutorial is platform-independent. So, no matter if you are using Windows or Linux or Mac, the tut will work out in all the cases.</p>
<p>Here's a screenshot of the Jumbled Words game running in Linux.</p>
<p><a href="http://anuragbhandari.wordpress.com/files/2008/05/snapshot3.png"><img class="alignnone size-full wp-image-27" src="http://anuragbhandari.wordpress.com/files/2008/05/snapshot3.png" alt="" width="470" height="377" /></a></p>
<p><!--more--></p>
<ul>
<li> First of all, you will need the <strong>Python</strong> programming language installed on your system. Get it from here: <a href="http://python.org/download/" target="_blank">http://python.org/download/</a>.</li>
<li>Next, you'll need a GUI-tool kit for Python which would actually allow you create GUI based applications. I used the <strong>wxPython</strong> tool kit. Get it from here: <a href="http://wxpython.org/download.php#binaries" target="_blank">http://wxpython.org/download.php#binaries</a>.</li>
<li>After installing Python and wxPython on your system, you'll be ready to start writing the code now.</li>
<li>Create a new file, copy-paste the following contents in it, and save it by the name <strong>JumbledGUI.py</strong>.<br />
<span style="color:#ff6600;">import wx</p>
<p># First, we define a dictionary of jumbled words<br />
dict = {"special":"licapes", "guava":"augav", "begin":"ngibe",<br />
"compression":"serniospmoc", "praying":"igyaprn", "linux":"uilxn",<br />
"opposite":"seopopit", "depricated": "cpdirdaete",<br />
"leonardo da vinci":"o draconian devil", "the mona lisa":"oh lame saint",<br />
"dreaming":"earimngd", "tormented":"nemortted", "flabbergasted": "tasedbgaberlaf",<br />
"meticuluos":"ecusoulmit", "rectify":"fitecry", "mobile":"ibelmo",<br />
"computer":"mertopcu", "granular":"lrgaruna", "metro":"torem",<br />
"outrageous":"gretsouauo", "nothing":"hotning", "appreciable":"celbepiapra", "vandalism":"misdanlav", "tropical":"ptorlica"}</p>
<p>def func():<br />
'This is the core function of the program'<br />
# The result of popitem() method is a tuple<br />
# The following is an example of "sequence unpacking"<br />
word, jumbled = dict.popitem()<br />
return word, jumbled</p>
<p>def guess(event):<br />
ans = input_word.GetValue()<br />
if(ans == query[0]):<br />
result.SetLabel(label="Congrats! You got it right.")<br />
else:<br />
result.SetLabel(label="Sorry, wrong answer. Better luck next time!")</p>
<p>def next(event):<br />
# After a person clicks the Start button for the first time, this will happen<br />
nextButton.SetLabel("Next")<br />
guessButton.Enable()<br />
hintButton.Enable()<br />
input_word.SetValue("")<br />
# Unless we define the variable "query" as global, the function "guess" won't be able to access it<br />
global query<br />
query = func()<br />
if(dict!={}):<br />
question.SetLabel(label="The jumbled word is: "+query[1])<br />
result.SetLabel(label="Waiting for your input...")<br />
else:<br />
question.SetLabel(label="Game Over!")<br />
result.SetLabel(label="Yup, the game is finally over!")<br />
guessButton.Disable()<br />
nextButton.Disable()<br />
hintButton.Disable()</p>
<p>def hint(event):<br />
input_word.SetValue(query[0])</p>
<p>app = wx.App()<br />
win = wx.Frame(None, title="Jumbled Words Game", size=(460, 345))<br />
win.CenterOnScreen()<br />
bkg = wx.Panel(win)<br />
guessButton = wx.Button(bkg, label='Guess')<br />
guessButton.Bind(wx.EVT_BUTTON, guess)<br />
guessButton.SetDefault()<br />
# Unless the player has pressed the Start button, the Guess button will be disabled<br />
guessButton.Disable()<br />
nextButton = wx.Button(bkg, label='Start')<br />
nextButton.Bind(wx.EVT_BUTTON, next)<br />
hintButton = wx.Button(bkg, label='Hint')<br />
hintButton.Bind(wx.EVT_BUTTON, hint)<br />
hintButton.Disable()<br />
input_word = wx.TextCtrl(bkg)<br />
question = wx.StaticText(bkg, label="Welcome to jumbled words game\nTotal words: 24", style=wx.ALIGN_CENTER)<br />
# We define some stylish fonts for the welcome message / game questions<br />
font = wx.Font(pointSize=18, family=wx.DECORATIVE, style=wx.NORMAL, weight=wx.NORMAL)<br />
question.SetFont(font)<br />
result = wx.StaticText(bkg, label="Waiting for the initial result...", style=wx.ALIGN_CENTER)<br />
hbox = wx.BoxSizer()<br />
hbox.Add(input_word, proportion=1, flag=wx.EXPAND)<br />
hbox.Add(guessButton, proportion=0, flag=wx.LEFT, border=5)<br />
hbox.Add(nextButton, proportion=0, flag=wx.LEFT, border=5)<br />
hbox.Add(hintButton, proportion=0, flag=wx.LEFT, border=5)<br />
vbox = wx.BoxSizer(wx.VERTICAL)<br />
vbox.Add(question, proportion=1, flag=wx.EXPAND &#124; wx.ALL, border=5)<br />
vbox.Add(hbox, proportion=0, flag=wx.EXPAND &#124; wx.LEFT &#124; wx.BOTTOM &#124; wx.RIGHT, border=5)<br />
vbox.Add(result, proportion=0, flag=wx.EXPAND &#124; wx.LEFT &#124; wx.BOTTOM &#124; wx.RIGHT, border=5)<br />
bkg.SetSizer(vbox)<br />
win.Show()<br />
app.MainLoop()</span></li>
<li>To run it, open the command-line. In Windows, go to <strong>Start</strong> &#62; <strong>Run</strong>. Type <strong>cmd</strong>. In Linux, open <strong>Terminal</strong> is GNOME or <strong>Konsole</strong> in KDE. Then <strong>cd</strong> (move) to the location of the folder containing the file JumbledGUI.py. After that, type <strong>python JumbledGUI.py </strong>and enjoy playing with the just created application.</li>
<li>Now that you just ran it, what if you wanted to show it to your friend? Would it look good if he had to issue the command in the command-line just for running it? No? You are right. Now is the time to publish it!</li>
<li>You'll publish it by making an executable out of it (that .exe file which runs on double-clicking). With this step, I am going specific for just the Windows users. I'll come to the Linux method of creating an executable some time later. To make an executable from your Python file, download and install <strong>py2exe</strong> from here: <a href="http://sourceforge.net/project/showfiles.php?group_id=15583" target="_blank">http://sourceforge.net/project/showfiles.php?group_id=15583</a>.</li>
<li>Create a new file in the same folder as JumbledGUI.py, copy-paste the following content, and save it with the name <strong>setup.py</strong>.<br />
<span style="color:#ff6600;"># Requires wxPython.  This sample demonstrates:<br />
#<br />
# - single file exe using wxPython as GUI.</span><span style="color:#ff6600;">from distutils.core import setup<br />
import py2exe<br />
import sys</span></p>
<p><span style="color:#ff6600;"># If run without args, build executables, in quiet mode.<br />
if len(sys.argv) == 1:<br />
sys.argv.append("py2exe")<br />
sys.argv.append("-q")</span></p>
<p><span style="color:#ff6600;">class Target:<br />
def __init__(self, **kw):<br />
self.__dict__.update(kw)<br />
# for the versioninfo resources<br />
self.version = "1.1"<br />
self.company_name = "Anurag Bhandari"<br />
self.copyright = "GPL v2"<br />
self.name = "Jumbled Words Game"</span></p>
<p><span style="color:#ff6600;">################################################################<br />
# A program using wxPython</span></p>
<p><span style="color:#ff6600;"># The manifest will be inserted as resource into JumbledGUI.exe.  This<br />
# gives the controls the Windows XP appearance (if run on XP ;-)<br />
#<br />
# Another option would be to store it in a file named<br />
# JumbledGUI.exe.manifest, and copy it with the data_files option into<br />
# the dist-dir.<br />
#<br />
manifest_template = '''</span></p>
<p><span style="color:#ff6600;">%(prog)s Program</span></p>
<p><span style="color:#ff6600;">'''</span></p>
<p><span style="color:#ff6600;">RT_MANIFEST = 24</span></p>
<p><span style="color:#ff6600;">JumbledGUI = Target(<br />
# used for the versioninfo resource<br />
description = "A cute jumbled words game",</span></p>
<p><span style="color:#ff6600;"># what to build<br />
script = "JumbledGUI.py",<br />
other_resources = [(RT_MANIFEST, 1, manifest_template % dict(prog="JumbledGUI"))],<br />
# icon_resources = [(1, "icon.ico")],<br />
dest_base = "JumbledGUI")</span></p>
<p><span style="color:#ff6600;">################################################################</span></p>
<p><span style="color:#ff6600;">setup(<br />
options = {"py2exe": {"compressed": 1,<br />
"optimize": 2,<br />
"ascii": 1,<br />
"bundle_files": 1}},<br />
zipfile = None,<br />
windows = [JumbledGUI],<br />
)</span></li>
<li>It's time to modify the publishing information of the to-be-created exe. Open setup.py and look for the code: Replace the <strong>self.version</strong>, <strong>self.company_name</strong>, <strong>self.copyright</strong> and <strong>self.name</strong> values with your desired values.</li>
<li>Now you are ready to "build" the exe. For that, open command prompt, cd to the folder where the setup.py file is placed (the same location as JumbledGUI.py) and issue the command: <strong>python setup.py py2exe</strong>.</li>
<li>This will create two folders where your two Python files are placed. One is the dist folder and the other is the build folder. Our folder of interest is the dist folder.</li>
<li>Open the dist folder and look for the just created exe file. Double click it and viola! It works!</li>
<li>To give your application a more professional touch, you may opt to created a setup of your program so that the end users are able to install it the way they install other softwares (the Next, Next, Next way...). For that, download the Inno Setup software from: <a href="http://www.jrsoftware.org/isinfo.php" target="_blank">http://www.jrsoftware.org/isinfo.php</a>.</li>
</ul>
<p>It was fun, wasn't it?</p>
<p>I've provided comments in the code at all possible places so you don't find it difficult to know what has been done there. I admit not using much efficient code, like making use of classes than just pure functions, but I'll try to modify the code and rewrite it with classes as soon as I get some time for it.</p>
<p>I'll post my own created setup for this app soon. :)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Python is like cycling]]></title>
<link>http://kotsokalis.wordpress.com/?p=16</link>
<pubDate>Thu, 15 May 2008 14:05:57 +0000</pubDate>
<dc:creator>CK</dc:creator>
<guid>http://kotsokalis.wordpress.com/?p=16</guid>
<description><![CDATA[So I&#8217;m here in Dortmund for the third day now, and I can tell you that if I didn&#8217;t have ]]></description>
<content:encoded><![CDATA[<p>So I'm here in Dortmund for the third day now, and I can tell you that if I didn't have the help from my local colleagues, it would be totally impossible to get by without speaking German -- at least for this first batch of paperwork and house hunting. In the process of looking for a flat to rent, I have been searching in newspapers and web sites, all of which are in German. How to deal with that?</p>
<p>Enters <a href="http://translate.google.com/">Google Translate</a>. Very efficient and quite correct, as it turns out. But then again, opening a browser and clicking on a bookmark etc all the time is a bit of a hassle.</p>
<p>Enters <a href="http://python.org/">Python</a> :-) My bias towards this language is well known  to those who have been working with me in the recent years. I haven't really written any real code for a long time now, more than 4 years actually, but in less than 30 minutes (also putting <a href="http://research.corsaire.com/tools/">WebScarab</a> in use, I managed to have a simple but fully functional command-line client for Google Translate in place.</p>
<p>Clearly, Python is like cycling; Once you learn it, you never forget it.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[New project: python-incompatibility. Is Python 3.0 really incompatible?]]></title>
<link>http://regebro.wordpress.com/?p=95</link>
<pubDate>Thu, 15 May 2008 11:57:57 +0000</pubDate>
<dc:creator>Lennart Regebro</dc:creator>
<guid>http://regebro.wordpress.com/?p=95</guid>
<description><![CDATA[Since PyCon I have been working on a set of tests to demonstrate incompatibilities between Python 2.]]></description>
<content:encoded><![CDATA[<p>Since PyCon I have been working on a set of tests to demonstrate incompatibilities between Python 2.5, 2.6 and 3.0, with the aim of not only documenting the incompatibilities, but also testing if you avoid them, and write code that runs under both Python 2.6 and 3.0, thereby providing a transitional path from 2.x to 3.0. (2.5 code should run under 2.6 unmodified, so that part of the transition is done).</p>
<p>I found only one major incompatibility, <a href="http://regebro.wordpress.com/2008/03/19/please-allow-u-in-python-30/" target="_self">that 2.6 required u'' for Unicode, but 3.0 doesn't support it</a>. This was solved in Python 2.6a3, which introduced a from __future__ import unicode_literals, which makes 2.6 behave the same as 3.0. Thanks for that!</p>
<p>So, at the moment, I'm not aware of any major unavoidable incompatibilities. I decided to put up my half-assed code somewhere public, so other people can add to it. So, I created a new project on code.google.com: <a href="http://code.google.com/p/python-incompatibility/" target="_blank">http://code.google.com/p/python-incompatibility/</a></p>
<p>You can check out out for yourselves. running runtests.py 26 will work on both Python 2.6 and Python 3.0.<br />
But the code isn't finished yet. There may be incompatibilities I haven't thought about, and there are no tests of the library reorganisation. Please help out on this! It's fun, easy and a great way to learn Python 3.0!</p>
<p>See also: <a href="http://regebro.wordpress.com/2007/06/23/python-3000-and-compatibility/" target="_self">http://regebro.wordpress.com/2007/06/23/python-3000-and-compatibility/</a>, <a href="http://regebro.wordpress.com/2008/03/22/why-python-26-and-30-compatibility-would-be-a-very-good-thing/" target="_self">http://regebro.wordpress.com/2008/03/22/why-python-26-and-30-compatibility-would-be-a-very-good-thing/</a></p>
]]></content:encoded>
</item>

</channel>
</rss>
