<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:pythonini</id>
  <title>Kinght who said PY!</title>
  <subtitle>Knights who said Py!</subtitle>
  <author>
    <name>Kinght who said PY!</name>
  </author>
  <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom"/>
  <updated>2008-09-17T15:45:08Z</updated>
  <lj:journal userid="12131128" username="pythonini" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://pythonini.livejournal.com/data/atom" title="Kinght who said PY!"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:15242</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/15242.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=15242"/>
    <title>вечная проблем GIL</title>
    <published>2008-09-17T15:45:08Z</published>
    <updated>2008-09-17T15:45:08Z</updated>
    <category term="system"/>
    <category term="gil"/>
    <content type="html">Мало кто знает почему-то, но есть вполне живая и неплохо работающая ветка Python, в которой GIL не существует [&lt;a href="http://code.google.com/p/python-safethread/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]. GIL это общий лок интерпретатора, благодаря которому, или точнее говоря вопреки которому Python вмеру быстр в малтитредных приложениях.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:15050</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/15050.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=15050"/>
    <title>Python-cjson: быстрая реализация json парсера</title>
    <published>2007-03-20T15:12:20Z</published>
    <updated>2007-03-20T15:16:41Z</updated>
    <category term="web"/>
    <category term="library"/>
    <category term="json"/>
    <category term="sample"/>
    <content type="html">Быстрая реализация json парсера на C++ с удобным и понятным синтаксисом.[&lt;a href="http://cx.hu/python-cjson/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;br /&gt;
Код выглядит так:

&lt;pre&gt;
&lt;font color="#a020f0"&gt;import&lt;/font&gt; re
&lt;font color="#a020f0"&gt;import&lt;/font&gt; cjson
&lt;font color="#a020f0"&gt;import&lt;/font&gt; datetime
&lt;font color="#b22222"&gt;# Encoding Date objects:
&lt;/font&gt;&lt;font color="#a020f0"&gt;def&lt;/font&gt; &lt;font color="#0000ff"&gt;dateEncoder&lt;/font&gt;(d):
    &lt;font color="#a020f0"&gt;assert&lt;/font&gt; isinstance(d, datetime.date)
    &lt;font color="#a020f0"&gt;return&lt;/font&gt; &lt;font color="#bc8f8f"&gt;'new Date(Date.UTC(%d,%d,%d))'&lt;/font&gt;%(d.year, d.month, d.day)
&lt;font color="#b8860b"&gt;json&lt;/font&gt;=cjson.encode([1,datetime.date(2007,1,2),2], extension=dateEncoder)
&lt;font color="#a020f0"&gt;assert&lt;/font&gt; json==&lt;font color="#bc8f8f"&gt;'[1, new Date(Date.UTC(2007,1,2)), 2]'&lt;/font&gt;
&lt;font color="#b22222"&gt;# Decoding Date objects:
&lt;/font&gt;&lt;font color="#b8860b"&gt;re_date&lt;/font&gt;=re.compile(&lt;font color="#bc8f8f"&gt;'^new\sDate\(Date\.UTC\(.*?\)\)'&lt;/font&gt;)
&lt;font color="#a020f0"&gt;def&lt;/font&gt; &lt;font color="#0000ff"&gt;dateDecoder&lt;/font&gt;(json,idx): json=json[idx:] m=re_date.match(json)
    &lt;font color="#a020f0"&gt;if&lt;/font&gt; &lt;font color="#a020f0"&gt;not&lt;/font&gt; m: &lt;font color="#a020f0"&gt;raise&lt;/font&gt; &lt;font color="#bc8f8f"&gt;'cannot parse JSON string as Date object: %s'&lt;/font&gt;%json[idx:] args=cjson.decode(&lt;font color="#bc8f8f"&gt;'[%s]'&lt;/font&gt;% \
                     json[18:m.end()-2]) dt=datetime.date(*args)
    &lt;font color="#a020f0"&gt;return&lt;/font&gt; (dt,m.end()) &lt;font color="#b22222"&gt;# must return (object, character_count) tuple
&lt;/font&gt;
&lt;font color="#b8860b"&gt;data&lt;/font&gt;=cjson.decode(&lt;font color="#bc8f8f"&gt;'[1, new Date(Date.UTC(2007,1,2)), 2]'&lt;/font&gt;,
&lt;font color="#b8860b"&gt;extension&lt;/font&gt;=dateDecoder)
&lt;font color="#a020f0"&gt;assert&lt;/font&gt; data==[1,datetime.date(2007,1,2),2]
&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:14684</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/14684.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=14684"/>
    <title>PyTables 2: мажорный апдейт</title>
    <published>2007-03-17T01:17:46Z</published>
    <updated>2007-03-17T01:17:46Z</updated>
    <category term="db"/>
    <category term="pytables"/>
    <category term="sql"/>
    <content type="html">PyTables это не RDBMS, это средство для работы с иерархически организованными данными большого обьема.
Ни в коем случае не замена SQLным базам, предназначено это дело скорее для научных или технических данных.
В версии 2 (пока бета): новые типы данных, новая система построения запросов, новая система быстрых индексов. В общем все новое [&lt;a href="http://www.pytables.org/moin" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:14456</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/14456.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=14456"/>
    <title>chardet: детектор кодировки текста</title>
    <published>2007-03-17T01:07:38Z</published>
    <updated>2007-03-17T01:07:38Z</updated>
    <category term="charset"/>
    <category term="unicode"/>
    <content type="html">Собственно название говорит за себя, видимо это в продолжение предыдущего поста. Обратите внимание, только кодировки - не языка [&lt;a href="http://chardet.feedparser.org/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:14325</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/14325.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=14325"/>
    <title>Python и кодировки</title>
    <published>2007-03-17T01:03:45Z</published>
    <updated>2007-03-17T01:03:45Z</updated>
    <category term="code"/>
    <category term="links"/>
    <category term="charset"/>
    <category term="unicode"/>
    <category term="sample"/>
    <content type="html">Сначала ссылка - самое подробное рассмотрение проблем кодировок и юникода в питоне. Внятно, но по аглицки [&lt;a href="http://boodebr.org/main/python/all-about-python-and-unicode" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;br /&gt;
Теперь от себя - у меня есть код, который мигрирует из проекта в проект последние 2 года. Он позволяет забыть про проблемы кодировок на какое-то время. Выглядит он примерно так:&lt;br /&gt;
    &lt;pre&gt;
&lt;font color="#b22222"&gt;#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-
# Конечно в нормальной жизни этих коментариев тут нет
# Загрузить кодеки и библиотеку локалей, установить дефолтную локаль согласно
# переменной окружения LC_ALL.
&lt;/font&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt; locale, codecs; locale.setlocale(locale.LC_ALL, &lt;font color="#bc8f8f"&gt;''&lt;/font&gt;)
&lt;font color="#b22222"&gt;# Теперь в encoding положим текущая кодировку локали.
&lt;/font&gt;encoding = locale.getlocale()[1]
&lt;font color="#b22222"&gt;# Если кодировка не определилась - это винды. Там полюбому UTF-8 :)
&lt;/font&gt;&lt;font color="#a020f0"&gt;if&lt;/font&gt; &lt;font color="#a020f0"&gt;not&lt;/font&gt; encoding:
    encoding = &lt;font color="#bc8f8f"&gt;"utf-8"&lt;/font&gt;
&lt;font color="#b22222"&gt;# Установим дефолтную локаль. Финт с ушами reload() нужен потому что разработчики
# питона дюже умные и логично удаляют функцию setdefaultencoding при загрузке.
# Оно в общем то логично, но я же умный.
&lt;/font&gt;&lt;font color="#a020f0"&gt;import&lt;/font&gt; sys;reload(sys);sys.setdefaultencoding(encoding)
&lt;font color="#b22222"&gt;# Установили кодеки для вывода в потоки согласно распорядку.
&lt;/font&gt;sys.stdout = codecs.getwriter(encoding)(sys.stdout, errors = &lt;font color="#bc8f8f"&gt;"replace"&lt;/font&gt;)
sys.stderr = codecs.getwriter(encoding)(sys.stderr, errors = &lt;font color="#bc8f8f"&gt;"replace"&lt;/font&gt;)
&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:13858</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/13858.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=13858"/>
    <title>NamedTuple: новое в python2.6</title>
    <published>2007-03-17T00:51:15Z</published>
    <updated>2007-03-17T00:51:15Z</updated>
    <category term="2.6"/>
    <category term="python"/>
    <category term="sample"/>
    <content type="html">Смотрите какая красота появилась в python2.6a1 [&lt;a href="http://docs.python.org/dev/lib/named-tuple-factory.html" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;br /&gt;
Используется примерно так:
&lt;pre&gt;&lt;font color="#a020f0"&gt;from&lt;/font&gt; collections &lt;font color="#a020f0"&gt;import&lt;/font&gt; NamedTuple
Point = NamedTuple(‘Point’, ‘x y’)
p = Point(10, 5)
&lt;font color="#a020f0"&gt;print&lt;/font&gt; p.x &lt;font color="#b22222"&gt;# напечатает 10
&lt;/font&gt;&lt;font color="#a020f0"&gt;print&lt;/font&gt; p.y &lt;font color="#b22222"&gt;# напечатает полюбому 5
&lt;/font&gt;&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:13772</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/13772.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=13772"/>
    <title>netifaces: интерфейс к ifconfig</title>
    <published>2007-03-17T00:34:57Z</published>
    <updated>2007-03-17T00:34:57Z</updated>
    <category term="unix"/>
    <category term="network"/>
    <category term="osx"/>
    <content type="html">Alastair представил наконец то свой интерфейс к внутренностям сетевого интерфейса. Пока что только на чтение, и только под OS X. На самом деле под FreeBSD тоже работает неплохо. [&lt;a href="http://alastairs-place.net/netifaces/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:13367</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/13367.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=13367"/>
    <title>grassyknoll: полнотекстовый поисковик по HTTP</title>
    <published>2007-03-17T00:31:21Z</published>
    <updated>2007-03-17T00:31:21Z</updated>
    <category term="http"/>
    <category term="search"/>
    <category term="network"/>
    <content type="html">Я в панике от идеи, поэтому перевожу как есть:
“Оно проиндексирует и найдет любой нафиг текст, который ты пошлешь через HTTP. Сетевое. Довольно умное. Довольно дружественное. Независящее от языка. Гладкое. Современное.”
Много слов, да? На самом деле это такая странная идея - запихиваешь в него по HTTP данные, а он их индексирует и можно по ним искать. Зависит от PyLucene конечно же.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:13254</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/13254.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=13254"/>
    <title>ActiveState Python 2.5</title>
    <published>2007-03-17T00:23:47Z</published>
    <updated>2007-03-17T00:23:47Z</updated>
    <category term="python"/>
    <category term="activestate"/>
    <content type="html">&lt;table width="100%"&gt;&lt;tr&gt;
    &lt;td&gt;&lt;img src="http://www.activestate.com/_images/product-assets/activepython/boxshot_h105.png" border="0"&gt;&lt;/td&gt;
    &lt;td width="90%"&gt;Обновился ActiveState - долгожданный переезд на ветку 2.5. Для диких, это одна из сборок python под все платформы, главное конечно под Windows. Включает в себя в том числе и кучу библиотек для работы с Win32 API и, что не менее важно, пачку документации на родном английском языке. [&lt;a href="http://www.activestate.com/products/activepython/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:12909</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/12909.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=12909"/>
    <title>заждались?</title>
    <published>2007-03-17T00:18:32Z</published>
    <updated>2007-03-17T00:18:32Z</updated>
    <category term="stuff"/>
    <content type="html">Заждались поди, оглоеды? Сейчас будет пачка обновлений - считайте что спам.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:12688</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/12688.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=12688"/>
    <title>xmlobjects: еще одна парадигма для xml раппинга</title>
    <published>2007-03-06T02:05:52Z</published>
    <updated>2007-03-06T02:05:52Z</updated>
    <category term="libs"/>
    <category term="xmlobjets"/>
    <category term="xml"/>
    <content type="html">XMLOjbects для питона и xml это как ORM для баз данных [&lt;a href="http://wiki.osafoundation.org/Projects/Xmlobjects" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;По сути своей это оболочка вокруг ElementTree, красивая такая, обектная. Доступ к тегам и пропертям осуществляется через map.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:12403</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/12403.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=12403"/>
    <title>"правильный" split</title>
    <published>2007-03-05T12:40:20Z</published>
    <updated>2007-03-05T12:43:03Z</updated>
    <category term="code"/>
    <category term="shlex"/>
    <category term="split"/>
    <category term="sample"/>
    <content type="html">А ведь я когда-то писал это сам, для себя. Сплит строки с учетом кавычек и комментариев - очень часто решаемая задача. Которая давно стандартизована в модуле shlex

&lt;pre&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;font color="#a020f0"&gt;import&lt;/font&gt; shlex
&amp;gt;&amp;gt;&amp;gt; shlex.split(&lt;font color="#bc8f8f"&gt;"1 2 3 '4 5 6' 7 8 9 # comments"&lt;/font&gt;, comments = &lt;font color="#a020f0"&gt;True&lt;/font&gt;)
[&lt;font color="#bc8f8f"&gt;'1'&lt;/font&gt;, &lt;font color="#bc8f8f"&gt;'2'&lt;/font&gt;, &lt;font color="#bc8f8f"&gt;'3'&lt;/font&gt;, &lt;font color="#bc8f8f"&gt;'4 5 6'&lt;/font&gt;, &lt;font color="#bc8f8f"&gt;'7'&lt;/font&gt;, &lt;font color="#bc8f8f"&gt;'8'&lt;/font&gt;, &lt;font color="#bc8f8f"&gt;'9'&lt;/font&gt;]
&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:12116</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/12116.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=12116"/>
    <title>DjangoSnippets</title>
    <published>2007-03-05T00:39:01Z</published>
    <updated>2007-03-05T00:39:01Z</updated>
    <category term="links"/>
    <category term="djangosnippets"/>
    <category term="sites"/>
    <content type="html">DjangoSnippets. Джанго Сниппетс. Еще раз - Джанго Снипетс. Полезные снипеты для всех кто пишет на джанге [&lt;a href="http://www.djangosnippets.org/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]. В закладки полюбому.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:11853</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/11853.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=11853"/>
    <title>grailmud: MUD на Python</title>
    <published>2007-03-05T00:36:35Z</published>
    <updated>2007-03-05T00:36:35Z</updated>
    <category term="grailmud"/>
    <category term="mud"/>
    <category term="games"/>
    <content type="html">GrailMud - новый, на этот раз совсем даже неплохо написанный [&lt;a href="http://cheeseshop.python.org/pypi/grailmud/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;] Эх. На 5 бы лет пораньше.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:11570</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/11570.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=11570"/>
    <title>Несколько блоговых заметок</title>
    <published>2007-03-05T00:31:09Z</published>
    <updated>2007-03-05T00:31:09Z</updated>
    <category term="blogs"/>
    <category term="gvr"/>
    <category term="james tauber"/>
    <content type="html">Floris Bruynooghe пишет об использовании странного, но приятного метода написания маленьких программ. Он предлагает писать их не исполняемыми файлами, а наоборот - модулями. Подробнее [&lt;a href="http://bruynooghe.blogspot.com/2007/02/writing-applications-as-modules.html" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;Jeremy Hylton - пространно о нелогичности названия функции locals() [&lt;a href="http://jeremyhylton.blogspot.com/2007/02/locals-and-free-variables.html" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;В блоге Гвидо - подробности, слайды, видео с блекддеком и ага, о проекте Python 3.0, более известный как проект Python 3000 [&lt;div class='ljparseerror'&gt;[&lt;b&gt;Error:&lt;/b&gt; Irreparable invalid markup ('&amp;lt;a [...] &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;lt;/a&amp;gt;') in entry.  Owner must fix manually.  Raw contents below.]&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 95%; overflow: auto"&gt;Floris Bruynooghe пишет об использовании странного, но приятного метода написания маленьких программ. Он предлагает писать их не исполняемыми файлами, а наоборот - модулями. Подробнее [&amp;lt;a href=&amp;#39;http://bruynooghe.blogspot.com/2007/02/writing-applications-as-modules.html&amp;#39;&amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;lt;/a&amp;gt;]&lt;br /&gt;&lt;br /&gt;Jeremy Hylton - пространно о нелогичности названия функции locals() [&amp;lt;a href=&amp;#39;http://jeremyhylton.blogspot.com/2007/02/locals-and-free-variables.html&amp;#39;&amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;lt;/a&amp;gt;]&lt;br /&gt;&lt;br /&gt;В блоге Гвидо - подробности, слайды, видео с блекддеком и ага, о проекте Python 3.0, более известный как проект Python 3000 [&amp;lt;a href=&amp;#39;http://www.artima.com/weblogs/viewpost.jsp?thread=196889&amp;#39;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;lt;/a&amp;gt;]&lt;br /&gt;&lt;br /&gt;James Tauber [&amp;lt;a href=&amp;#39;http://jtauber.com/blog/2007/02/23/one_laptop_per_child%2C_python_(and_cleese)&amp;#39;&amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;lt;/a&amp;gt;] рассказывает об особенностях проекта OLPC. Вкратце - оказывается большая часть интерфейса, вплоть до тамошней абстракции файловой системы написана на Python.&lt;br /&gt;&lt;br /&gt;Не много? Не утомил?&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:11355</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/11355.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=11355"/>
    <title>jython: уже 2.2</title>
    <published>2007-03-05T00:08:56Z</published>
    <updated>2007-03-05T00:08:56Z</updated>
    <category term="jython"/>
    <category term="tools"/>
    <category term="ironpython"/>
    <category term="pypy"/>
    <content type="html">Между тем Jython достиг реализации спецификации Python2.2 [&lt;a href="http://www.pythonthreads.com/news/latest/jython-beta-with-all-features-of-version-2.2-released.html" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]. Пока что только бета, но we call it 'beta' cause it's much betta than nothing.&lt;br /&gt;&lt;br /&gt;Собственно Jython это реализация языка Python для JVM. Идея кажется мне странной, но вот Microsoft поддерживает проект IronPython - реализацию питона для .NET.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:11100</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/11100.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=11100"/>
    <title>pylint: 0.13</title>
    <published>2007-03-05T00:00:21Z</published>
    <updated>2007-03-05T00:00:21Z</updated>
    <category term="tools"/>
    <category term="pylint"/>
    <category term="utils"/>
    <content type="html">Для тех, кому еще понятно слово lint и -Wall. Lint для python. Не сказать чтобы очень хороший, но неплохой. Рикамендед [&lt;a href="http://www.logilab.org/projects/pylint/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:10964</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/10964.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=10964"/>
    <title>mlabwrap</title>
    <published>2007-02-28T13:12:59Z</published>
    <updated>2007-02-28T13:12:59Z</updated>
    <category term="mathlab"/>
    <category term="math"/>
    <category term="wrapper"/>
    <content type="html">Одной строкой: раппер вокруг mathlab, он же - бридж для доступа к функциям матлаба из python.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:10693</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/10693.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=10693"/>
    <title>Shed Skin: компилятор Python в C++</title>
    <published>2007-02-28T13:11:02Z</published>
    <updated>2007-02-28T13:11:02Z</updated>
    <category term="tools"/>
    <category term="pypy"/>
    <category term="pyrex"/>
    <content type="html">Да, вам не показалось. Это оптимизирующий компилятор Python -&amp;gt; C++ -&amp;gt; Бинарный код. Результаты работают очень быстро, но за все приходится платить - ShedSkin понимает только очень небольшой сабсет языка Python. Изменения в версии 0.0.20:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;улучшена работа со списками и словарями&lt;/li&gt;&lt;li&gt;поправлена работа операций целочисленного деления (/, //, divmod,  floordiv), так чтобы они работали по схеме CPython2.5&lt;/li&gt;&lt;li&gt;преобразование float в str аналогичное CPython&lt;/li&gt;&lt;li&gt;масса исправлений в коде самого компилятора&lt;/li&gt;&lt;li&gt;починена наконец то работа с &lt;i&gt;self&lt;/i&gt; в статических методах.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Таким образом как вы понимаете работы еще вагон и маленькая тележка, но уже сейчас это очень полезный инструмент. [&lt;a href="http://mark.dufour.googlepages.com/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:10397</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/10397.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=10397"/>
    <title>PyPy: это не то о чем вы подумали.</title>
    <published>2007-02-28T12:59:11Z</published>
    <updated>2007-02-28T12:59:11Z</updated>
    <category term="tools"/>
    <category term="pypy"/>
    <content type="html">Не смотря на идиотское с точки зрения русского человека название (впрочем zope это еще круче) PyPy это просто реализация языка Python на самом языке Python. Не спрашивайте зачем - лучше почитайте обзор изменений в версии 0.99.0 [&lt;a href="http://comments.gmane.org/gmane.comp.python.announce/6883" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;].</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:10048</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/10048.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=10048"/>
    <title>buzhug: база данных на коленке</title>
    <published>2007-02-28T12:51:12Z</published>
    <updated>2007-02-28T12:51:12Z</updated>
    <category term="db2api"/>
    <category term="libs"/>
    <category term="sql"/>
    <category term="sample"/>
    <content type="html">&lt;p&gt;BuzHug: еще одно решение для хранения данных, на этот рас pure python style. Красивое и правильное решение задачи. [&lt;a href="http://buzhug.sourceforge.net/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;Оно действительно работает быстро. На удивление быстро, всего в 6 раз медленнее mysql. Но это очень хороший показатель, ведь я пока не пробовал ничего оптимизировать, хотябы через Pyrex.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
    &lt;pre&gt;
&lt;font color="#a020f0"&gt;from&lt;/font&gt; buzhug &lt;font color="#a020f0"&gt;import&lt;/font&gt; Base
&lt;font color="#a020f0"&gt;from&lt;/font&gt; datetime &lt;font color="#a020f0"&gt;import&lt;/font&gt; date

&lt;font color="#b22222"&gt;# buzhug &amp;#1087;&amp;#1086;&amp;#1093;&amp;#1086;&amp;#1078; &amp;#1085;&amp;#1072; sql, &amp;#1090;&amp;#1086;&amp;#1083;&amp;#1100;&amp;#1082;&amp;#1086; &amp;#1076;&amp;#1083;&amp;#1103; &amp;#1087;&amp;#1080;&amp;#1090;&amp;#1086;&amp;#1085;&amp;#1080;&amp;#1089;&amp;#1090;&amp;#1086;&amp;#1074;
# &amp;#1088;&amp;#1072;&amp;#1079;&amp;#1085;&amp;#1099;&amp;#1077; &amp;#1092;&amp;#1086;&amp;#1088;&amp;#1084;&amp;#1099; create table
&lt;/font&gt;&lt;font color="#b8860b"&gt;teams&lt;/font&gt; = Base(&lt;font color="#bc8f8f"&gt;'teams'&lt;/font&gt;)
teams.create((&lt;font color="#bc8f8f"&gt;'name'&lt;/font&gt;,str),(&lt;font color="#bc8f8f"&gt;'city'&lt;/font&gt;,str))

&lt;font color="#b8860b"&gt;players&lt;/font&gt; = Base(&lt;font color="#bc8f8f"&gt;'players'&lt;/font&gt;).create(
        (&lt;font color="#bc8f8f"&gt;'name'&lt;/font&gt;,unicode),
        (&lt;font color="#bc8f8f"&gt;'firstname'&lt;/font&gt;,unicode),(&lt;font color="#bc8f8f"&gt;'team'&lt;/font&gt;,teams),
        (&lt;font color="#bc8f8f"&gt;'position'&lt;/font&gt;,str),(&lt;font color="#bc8f8f"&gt;'born'&lt;/font&gt;,date))

&lt;font color="#b8860b"&gt;matches&lt;/font&gt; = Base(&lt;font color="#bc8f8f"&gt;'matches'&lt;/font&gt;).create(
        (&lt;font color="#bc8f8f"&gt;'home'&lt;/font&gt;,teams),(&lt;font color="#bc8f8f"&gt;'away'&lt;/font&gt;,teams),
        (&lt;font color="#bc8f8f"&gt;'date'&lt;/font&gt;,date),(&lt;font color="#bc8f8f"&gt;'goals_home'&lt;/font&gt;,int),(&lt;font color="#bc8f8f"&gt;'goals_away'&lt;/font&gt;,int))

&lt;font color="#b22222"&gt;# &amp;#1101;&amp;#1090;&amp;#1086; insert into table
&lt;/font&gt;teams.insert(name=&lt;font color="#bc8f8f"&gt;"&amp;#1057;&amp;#1087;&amp;#1072;&amp;#1088;&amp;#1090;&amp;#1072;&amp;#1082;"&lt;/font&gt;,city=&lt;font color="#bc8f8f"&gt;"&amp;#1052;&amp;#1086;&amp;#1089;&amp;#1082;&amp;#1074;&amp;#1072;"&lt;/font&gt;)
teams.insert(name=&lt;font color="#bc8f8f"&gt;"&amp;#1044;&amp;#1080;&amp;#1085;&amp;#1072;&amp;#1084;&amp;#1086;"&lt;/font&gt;,city=&lt;font color="#bc8f8f"&gt;"Ki&amp;#1077;&amp;#1074;"&lt;/font&gt;)

&lt;font color="#b22222"&gt;# &amp;#1090;&amp;#1080;&amp;#1087;&amp;#1086;&amp;#1074;&amp;#1072;&amp;#1103; &amp;#1086;&amp;#1087;&amp;#1077;&amp;#1095;&amp;#1072;&amp;#1090;&amp;#1082;&amp;#1072; - &amp;#1047;&amp;#1077;&amp;#1085;&amp;#1080;&amp;#1090; &amp;#1087;&amp;#1080;&amp;#1096;&amp;#1077;&amp;#1090;&amp;#1089;&amp;#1103; &amp;#1095;&amp;#1077;&amp;#1088;&amp;#1077;&amp;#1079; &amp;#1045; 
&lt;/font&gt;teams.insert(&lt;font color="#bc8f8f"&gt;"&amp;#1047;&amp;#1080;&amp;#1085;&amp;#1080;&amp;#1090;"&lt;/font&gt;,&lt;font color="#bc8f8f"&gt;"&amp;#1057;&amp;#1055;&amp;#1041;"&lt;/font&gt;)

&lt;font color="#b22222"&gt;# &amp;#1052;&amp;#1072;&amp;#1084;, &amp;#1101;&amp;#1090;&amp;#1086; select, &amp;#1087;&amp;#1088;&amp;#1077;&amp;#1076;&amp;#1089;&amp;#1090;&amp;#1072;&amp;#1074;&amp;#1083;&amp;#1103;&amp;#1077;&amp;#1096;&amp;#1100;?
&lt;/font&gt;&lt;font color="#b8860b"&gt;zenit&lt;/font&gt; = [ r &lt;font color="#a020f0"&gt;for&lt;/font&gt; r &lt;font color="#a020f0"&gt;in&lt;/font&gt; teams &lt;font color="#a020f0"&gt;if&lt;/font&gt; r.name == &lt;font color="#bc8f8f"&gt;"&amp;#1047;&amp;#1080;&amp;#1085;&amp;#1080;&amp;#1090;"&lt;/font&gt; ][0]

&lt;font color="#b22222"&gt;# &amp;#1040; &amp;#1101;&amp;#1090;&amp;#1086; - &amp;#1072;&amp;#1087;&amp;#1076;&amp;#1077;&amp;#1081;&amp;#1090;!
&lt;/font&gt;teams.update(zenit,name=&lt;font color="#bc8f8f"&gt;"&amp;#1047;&amp;#1077;&amp;#1085;&amp;#1080;&amp;#1090;"&lt;/font&gt;)

&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:9897</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/9897.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=9897"/>
    <title>Ух, еще ссылки</title>
    <published>2007-02-24T18:35:24Z</published>
    <updated>2007-02-24T18:40:04Z</updated>
    <category term="libs"/>
    <category term="lxml"/>
    <category term="blog"/>
    <category term="tutorial"/>
    <content type="html">&lt;p style="margin: 0.0px 0.0px 12.0px 0.0px; "&gt;На Лёрнингпайтон очередной туториал, для тех кто хочет писать GUI на Python: &lt;a href="http://www.learningpython.com/2007/02/17/pylan-a-gtd-todo-application-written-in-python-and-pygtk-part-one/" rel="nofollow"&gt;&lt;span style="text-decoration: underline ; color: #001de0"&gt;PyLan - туду приложение на pygtk&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="margin: 0.0px 0.0px 12.0px 0.0px; "&gt;&lt;span style="text-decoration: underline ; color: #001de0"&gt;&lt;a href="http://cheeseshop.python.org/pypi/Lython/" rel="nofollow"&gt;Lython&lt;/a&gt;&lt;/span&gt; - компилятор lisp в питоновый байткод.&lt;/p&gt;
&lt;p style="margin: 0.0px 0.0px 12.0px 0.0px; "&gt;Обновился &lt;a href="http://cheeseshop.python.org/pypi/lxml" rel="nofollow"&gt;&lt;span style="text-decoration: underline ; color: #001de0"&gt;lxml теперь (1.2)&lt;/span&gt;&lt;/a&gt;. Поддержка XInclude через ElementTree и куча багфиксов.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:9060</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/9060.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=9060"/>
    <title>Elixir: SQLAlchemy declarative</title>
    <published>2007-02-24T18:10:29Z</published>
    <updated>2007-02-24T18:10:29Z</updated>
    <category term="libs"/>
    <category term="dbapi2"/>
    <category term="sql"/>
    <category term="dbapi"/>
    <content type="html">&lt;p&gt;Jonathan LaCour и сотоварищи наконец то зарелизились. Великолепный раппер вокруг &lt;a href="http://www.sqlalchemy.org/" rel="nofollow"&gt;SQLAlchemy&lt;/a&gt;, этого совершенно неюзабельнго агрегата, для людей, которые ненавидят SQL. Называется Elixir [&lt;a href="http://elixir.ematia.de/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;/p&gt;&lt;p&gt;&lt;a href="http://elixir.ematia.de/tutorial.html" rel="nofollow"&gt;Туториал&lt;/a&gt; и два интересных сообщения в блоге разработчика [&lt;a href="http://www.cleverdevil.org/computing/51/say-hello-to-elixir-for-sqlalchemy" rel="nofollow"&gt;1&lt;/a&gt;], [&lt;a href="http://www.cleverdevil.org/computing/52/making-a-statement-with-elixir" rel="nofollow"&gt;2&lt;/a&gt;]&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:8740</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/8740.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=8740"/>
    <title>Java2Python</title>
    <published>2007-02-24T17:30:17Z</published>
    <updated>2007-02-24T17:30:17Z</updated>
    <category term="tools"/>
    <category term="system"/>
    <content type="html">&lt;p&gt;Ну вот. Началось. Java to Python - простой и эффективный способ трансляции кода из Java в Python. [&lt;a href="http://code.google.com/p/java2python/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;/p&gt;&lt;p&gt;Помяните мое слово - скоро появятся человекоподобные роботы, которые пишут на Java и транслируют это дело в Python.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:pythonini:8509</id>
    <link rel="alternate" type="text/html" href="http://pythonini.livejournal.com/8509.html"/>
    <link rel="self" type="text/xml" href="http://pythonini.livejournal.com/data/atom/?itemid=8509"/>
    <title>SOAP FTW</title>
    <published>2007-02-24T17:18:30Z</published>
    <updated>2007-02-24T17:24:51Z</updated>
    <category term="rpc"/>
    <category term="libs"/>
    <category term="soap"/>
    <category term="sample"/>
    <content type="html">&lt;p&gt;Исторически сложилось так, что я не люблю XML RPC. Ну не знаю почему, просто нелюблю. SOAP не люблю тоже, но его просто много и с ним приходится считаться.&lt;/p&gt;&lt;p&gt;Обновилась неплохая реализация SOAP для Python, называется разумеется soaplib [&lt;a href="http://trac.optio.webfactional.com/" rel="nofollow"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;]&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;А вот и пример:&lt;/p&gt;&lt;br /&gt;    &lt;pre&gt;
&lt;font color="#7f007f"&gt;from&lt;/font&gt; soaplib.wsgi_soap &lt;font color="#7f007f"&gt;import&lt;/font&gt; SimpleWSGISoapApp
&lt;font color="#7f007f"&gt;from&lt;/font&gt; soaplib.service &lt;font color="#7f007f"&gt;import&lt;/font&gt; soapmethod
&lt;font color="#7f007f"&gt;from&lt;/font&gt; soaplib.serializers.primitive &lt;font color="#7f007f"&gt;import&lt;/font&gt; String, Integer, Array

&lt;font color="#7f007f"&gt;class&lt;/font&gt; &lt;font color="#218a21"&gt;HelloWorldService&lt;/font&gt;(SimpleWSGISoapApp):
    &lt;font color="#da6fd5"&gt;@soapmethod&lt;/font&gt;(String,Integer,_returns=Array(String))
    &lt;font color="#7f007f"&gt;def&lt;/font&gt; &lt;font color="#0000ff"&gt;say_hello&lt;/font&gt;(&lt;font color="#7f007f"&gt;self&lt;/font&gt;,name,times):
        results = []
        &lt;font color="#7f007f"&gt;for&lt;/font&gt; i &lt;font color="#7f007f"&gt;in&lt;/font&gt; range(0,times):
            results.append(&lt;font color="#bb8f8f"&gt;'Hello, %s'&lt;/font&gt;%name)
        &lt;font color="#7f007f"&gt;return&lt;/font&gt; results

&lt;font color="#7f007f"&gt;def&lt;/font&gt; &lt;font color="#0000ff"&gt;make_client&lt;/font&gt;():
    &lt;font color="#7f007f"&gt;from&lt;/font&gt; soaplib.client &lt;font color="#7f007f"&gt;import&lt;/font&gt; make_service_client
    client = make_service_client(&lt;font color="#bb8f8f"&gt;'http://localhost:7889/'&lt;/font&gt;,HelloWorldService())
    &lt;font color="#7f007f"&gt;return&lt;/font&gt; client
   
&lt;font color="#7f007f"&gt;if&lt;/font&gt; __name__==&lt;font color="#bb8f8f"&gt;'__main__'&lt;/font&gt;:
    &lt;font color="#7f007f"&gt;try&lt;/font&gt;:&lt;font color="#7f007f"&gt;from&lt;/font&gt; cherrypy.wsgiserver &lt;font color="#7f007f"&gt;import&lt;/font&gt; CherryPyWSGIServer
    &lt;font color="#7f007f"&gt;except&lt;/font&gt;:&lt;font color="#7f007f"&gt;from&lt;/font&gt; cherrypy._cpwsgiserver &lt;font color="#7f007f"&gt;import&lt;/font&gt; CherryPyWSGIServer
    server = CherryPyWSGIServer((&lt;font color="#bb8f8f"&gt;'localhost'&lt;/font&gt;,7889),HelloWorldService())
    server.start()
&lt;/pre&gt;</content>
  </entry>
</feed>

