<?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:kolloid</id>
  <title>Дневник Евгения Морозова</title>
  <subtitle>Евгений Морозов</subtitle>
  <author>
    <name>Евгений Морозов</name>
  </author>
  <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom"/>
  <updated>2009-11-26T08:56:10Z</updated>
  <lj:journal userid="4242942" username="kolloid" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://kolloid.livejournal.com/data/atom" title="Дневник Евгения Морозова"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:398914</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/398914.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=398914"/>
    <title>IE is Being Mean to Me</title>
    <published>2009-11-26T08:56:10Z</published>
    <updated>2009-11-26T08:56:10Z</updated>
    <category term="reddit"/>
    <category term="ссылки"/>
    <category term="видео"/>
    <content type="html">Завидую, когда кто-то может в такой форме выразить свои чувства. Меня ненависть к IE может спровоцировать лишь на рубку ноутбука топором.&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=vTTzwJsHpU8"&gt;http://www.youtube.com/watch?v=vTTzwJsHpU8&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:398142</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/398142.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=398142"/>
    <title>Пятница</title>
    <published>2009-10-02T15:09:34Z</published>
    <updated>2009-10-02T15:11:03Z</updated>
    <category term="танцы"/>
    <category term="дневник"/>
    <category term="испанский"/>
    <category term="жизнь"/>
    <content type="html">Получил сегодня загранпаспорт. Можете меня поздравить, для меня это было непросто, а уж сколько переживаний было. Милиционерша, принимавшая документы, язвительно прошлась по понаехавшим и сказала, что скорее всего мою анкету завернут. Тем не менее, прибежал сегодня за 15 минут до закрытия, и благополучно получил. Только рожа на фотографии напоминает, скорее, русского мафиози. У меня во всех паспортах жуткие фотографии, потому что всегда забываю, что фотографируюсь на паспорт и прихожу черт знает в каком виде.&lt;br /&gt;&lt;br /&gt;На обратном пути решил отметить чашкой кофе в Венеции. Познакомился с обаятельным итальянцем, Альваро, который недавно приехал в Питер, говорит по-английски и немного по-испански. Но испанский он знает хуже меня, так что сразу перешли на английский. Оказалось, что он работает сисадмином в одной софтверной конторе, а в свободное время преподает латиноамериканские танцы. Удачное знакомство. :)&lt;br /&gt;&lt;br /&gt;Кстати, заметил, что начал при разговоре путаться: когда говорю на испанском, частенько вставляю английские слова, и наоборот. Меня это ужасно расстраивает. Некрасиво как-то, а собеседнику, наверное, еще хуже слушать эту мешанину. Надо больше практиковаться, больше общаться на обоих языках, наверное. Где бы только найти собеседников.&lt;br /&gt;&lt;br /&gt;Завтра надеюсь дойти до занятия по реггетону, а после него наверное зайду на сальса-вечеринку, которую устраивает организатор нашего танцевального клуба. Танцевать я еще не смогу, но хотя бы взгляну, как это выглядит вживую.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:397627</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/397627.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=397627"/>
    <title>How to fail at journalism</title>
    <published>2009-09-28T10:18:51Z</published>
    <updated>2009-09-28T10:18:51Z</updated>
    <category term="ссылки"/>
    <content type="html">&lt;a href="http://www.jgc.org/blog/2009/09/how-to-fail-at-journalism.html"&gt;http://www.jgc.org/blog/2009/09/how-to-fail-at-journalism.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Не только в России журналисты выдумывают небылицы.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:397414</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/397414.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=397414"/>
    <title>Cien años de soledad</title>
    <published>2009-09-27T10:51:53Z</published>
    <updated>2009-09-27T10:51:53Z</updated>
    <category term="сальса"/>
    <category term="дневник"/>
    <category term="испанский"/>
    <content type="html">Наконец начал читать «Сто лет одиночества» в оригинале. Уже давно собирался, но только сегодня появилось время и настроение. Я когда-то перевод начинал читать, но поскольку нет своего экземпляра, а с экрана читать не люблю, так и не дочитал.&lt;br /&gt;&lt;br /&gt;Пока на каждую строчку уходит минут 20 времени. Грамматические конструкции вроде бы не особенно сложные, но очень много незнакомых слов. Едва ли не каждое второе. Все вношу в anki, надеюсь, дальше читать станет легче.&lt;br /&gt;&lt;br /&gt;Еще накачал клипов по сальсе. Периодически отрабатываю движения перед экраном. Наверное, ужасно коряво, но надеюсь это поможет мне догнать нашу группу. Очень хочется начать танцевать.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:397146</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/397146.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=397146"/>
    <title>Kseniya Simonova - Sand Animation (Україна має талант / Ukraine's Got Talent)</title>
    <published>2009-09-26T14:21:31Z</published>
    <updated>2009-09-26T14:21:31Z</updated>
    <category term="youtube"/>
    <category term="reddit"/>
    <category term="ссылки"/>
    <category term="видео"/>
    <content type="html">&lt;a href="http://www.youtube.com/watch?v=518XP8prwZo"&gt;http://www.youtube.com/watch?v=518XP8prwZo&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:396946</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/396946.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=396946"/>
    <title>JavaScript must die</title>
    <published>2009-09-25T13:21:07Z</published>
    <updated>2009-09-25T13:21:07Z</updated>
    <category term="security"/>
    <category term="javascript"/>
    <content type="html">&lt;a href="http://jgc.org/blog/"&gt;«My thesis is that the security situation with JavaScript is so poor that the only solution is to kill it»&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:396627</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/396627.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=396627"/>
    <title>Сальса</title>
    <published>2009-09-24T06:30:36Z</published>
    <updated>2009-09-24T07:38:35Z</updated>
    <category term="танцы"/>
    <category term="сальса"/>
    <category term="дневник"/>
    <content type="html">Вчера сходил впервые на танцы. Собирался начать еще в понедельник, но в понедельник притащил свою партнершу, а она прямо с порога зала убежала — еще более стеснительная, чем я. :)&lt;br /&gt;&lt;br /&gt;Остаток понедельника и весь вторник я ее настраивал на то, что у нее все получится, и в среду она согласилась сделать еще одну попытку, хотя пришлось впихивать ее в зал почти силой. Наверное помогло то, что нас было всего трое на первом занятии — я, моя партнерша, и еще одна девочка.&lt;br /&gt;&lt;br /&gt;Ведет занятия симпатичная веселая кубинка Дейзи, которая не знает ни слова по-русски (только «право» и «лево», но и их она путает) — и я, и моя партнерша, от нее в восторге. Именно благодаря ей Рита решила остаться, хотя у нее, также как и у меня, пока ничего не получается, и она очень стесняется. Меня Дейзи постоянно подбадривала, в конце занятия я поболтал с ней немного на своем ломаном испанском, и она сказала, что видно, что я никогда не танцевал, но также видно, что очень хочу научиться, значит, у меня все получится.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:396032</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/396032.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=396032"/>
    <title>Случайное знакомство</title>
    <published>2009-09-13T00:41:27Z</published>
    <updated>2009-09-13T00:41:27Z</updated>
    <category term="дневник"/>
    <category term="испанский"/>
    <content type="html">Пил сегодня в «Венеции» кофе у стойки, когда зашла пара из Испании. Услышал, как они переговариваются по-испански и пытаются сделать заказ на английском, решил не упускать шанс и познакомиться. Поскольку их двое, приходилось обращаться к ним на «вы» (vosotros), а поскольку раньше никогда с двумя собеседниками одновременно не разговаривал, спрягать глаголы оказалось сущей мукой.&lt;br /&gt;&lt;br /&gt;Зовут их Ферран и Кончи (Conxi, тоже в первый раз слышу такое оригинальное имя), живут в Барселоне, работают в банке, любят путешествовать. Специально берут отпуск осенью, чтобы поездить по миру. В Испании принято отдыхать в августе, но мои новые друзья говорят, что в августе работать в банке очень хорошо, потому что есть кондиционер и нет посетителей. А в сентябре, когда все возвращаются из отпусков и начинается стресс и неразбериха, они наоборот уезжают. )))&lt;br /&gt;&lt;br /&gt;Постоянно восхищались моим произношением — значит не зря стараюсь каждый день слушать уроки и радио на испанском.&lt;br /&gt;&lt;br /&gt;Под конец обменялись номерами телефонов и адресами электронной почты. Я сказал, что могу погулять с ними завтра или на неделе, показать город, но они отказываются, говорят, что не хотят злоупотреблять моим расположением. Впрочем, пообещали, что в понедельник позовут с собой во второй половине дня.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:395972</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/395972.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=395972"/>
    <title>Life update</title>
    <published>2009-09-12T12:02:35Z</published>
    <updated>2009-09-12T12:03:06Z</updated>
    <category term="дневник"/>
    <category term="испанский"/>
    <content type="html">Сдал экзамен по испанскому на «4». Что-то в последнее время перестало хватать времени на испанский, пропустил много занятий. Очень обидно, хотелось сдать на 5. Да и язык на уровне A2 оказался намного сложнее, чем я думал. Прошедшие времена, сослагательное наклонение, императив — все это очень сложно. Кажется, испанский значительно сложнее английского.Ну, разберусь. На уровень B1 решил пока не идти — нет времени и хочется отдохнуть. Пойду в конце октября-начале ноября. Еще не начал читать книги, все откладываю из-за нехватки времени. Зато периодически ставлю в качестве фона испанское интернет-радио, и, кажется, даже что-то понимаю.&lt;br /&gt;&lt;br /&gt;Сегодня написал первый баг в баг-трекер Django. Натыкался на ошибки и раньше, конечно, но всегда кто-то сообщал о них раньше меня.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:395626</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/395626.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=395626"/>
    <title>Статистика</title>
    <published>2009-09-09T08:28:22Z</published>
    <updated>2009-09-09T08:28:22Z</updated>
    <category term="performance"/>
    <category term="sql"/>
    <category term="postgresql"/>
    <content type="html">Однако, ALTER COLUMN SET STATISTICS с последующим ANALYZE реально помогает ускорить выполнение запроса в казалось бы совершенно безнадежных ситуациях. Почему-то я к этому способу обратился в самый последний момент.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:395314</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/395314.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=395314"/>
    <title>Как оптимизировать запрос?</title>
    <published>2009-09-08T11:15:56Z</published>
    <updated>2009-09-08T11:15:56Z</updated>
    <category term="performance"/>
    <category term="sql"/>
    <category term="postgresql"/>
    <content type="html">Есть такой запрос (сгенерирован Django ORM и отформатирован мной):
&lt;pre&gt;
SELECT activity_activityevent.id, activity_activityevent.user_id, activity_activityevent.added_on
FROM activity_activityevent 
WHERE activity_activityevent.user_id IN (
   SELECT U0.user_id 
   FROM profile U0 
   INNER JOIN profile_friends U1 
   ON U0.user_id = U1.to_profile_id
   WHERE U1.from_profile_id = 5
) 
ORDER BY activity_activityevent.added_on DESC 
LIMIT 10
&lt;/pre&gt;
&lt;a name="cutid1"&gt;&lt;/a&gt;
&lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; с настройками по умолчанию:
&lt;pre&gt;
Limit  (cost=4815.62..4815.65 rows=10 width=202) (actual time=332.938..332.977 rows=10 loops=1)
  -&amp;gt;  Sort  (cost=4815.62..4816.35 rows=292 width=202) (actual time=332.931..332.945 rows=10 loops=1)
        Sort Key: activity_activityevent.added_on
        Sort Method:  top-N heapsort  Memory: 19kB
        -&amp;gt;  Hash IN Join  (cost=2204.80..4809.31 rows=292 width=202) (actual time=12.856..283.916 rows=15702 loops=1)
              Hash Cond: (activity_activityevent.user_id = u0.user_id)
              -&amp;gt;  Seq Scan on activity_activityevent  (cost=0.00..2370.43 rows=61643 width=202) (actual time=0.020..126.129 rows=61643 loops=1)
              -&amp;gt;  Hash  (cost=2200.05..2200.05 rows=380 width=8) (actual time=12.777..12.777 rows=424 loops=1)
                    -&amp;gt;  Nested Loop  (cost=11.20..2200.05 rows=380 width=8) (actual time=0.260..11.594 rows=424 loops=1)
                          -&amp;gt;  Bitmap Heap Scan on profile_friends u1  (cost=11.20..62.95 rows=380 width=4) (actual time=0.228..1.202 rows=424 loops=1)
                                Recheck Cond: (from_profile_id = 5)
                                -&amp;gt;  Bitmap Index Scan on profile_friends_from_profile_id_key  (cost=0.00..11.10 rows=380 width=0) (actual time=0.208..0.208 rows=424 loops=1)
                                      Index Cond: (from_profile_id = 5)
                          -&amp;gt;  Index Scan using profile_pkey on profile u0  (cost=0.00..5.61 rows=1 width=4) (actual time=0.012..0.015 rows=1 loops=424)
                                Index Cond: (u0.user_id = u1.to_profile_id)
Total runtime: 333.190 ms
&lt;/pre&gt;

Теперь запрещаем seq scan (&lt;code&gt;set enable_seqscan to off&lt;/code&gt;) и снова выполняем &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt;:
&lt;pre&gt;
Limit  (cost=9528.36..9528.38 rows=10 width=202) (actual time=165.047..165.090 rows=10 loops=1)
  -&amp;gt;  Sort  (cost=9528.36..9529.09 rows=292 width=202) (actual time=165.042..165.058 rows=10 loops=1)
        Sort Key: activity_activityevent.added_on
        Sort Method:  top-N heapsort  Memory: 19kB
        -&amp;gt;  Nested Loop  (cost=2201.00..9522.05 rows=292 width=202) (actual time=13.074..126.209 rows=15702 loops=1)
              -&amp;gt;  HashAggregate  (cost=2201.00..2204.80 rows=380 width=8) (actual time=12.996..14.131 rows=424 loops=1)
                    -&amp;gt;  Nested Loop  (cost=11.20..2200.05 rows=380 width=8) (actual time=0.263..11.665 rows=424 loops=1)
                          -&amp;gt;  Bitmap Heap Scan on profile_friends u1  (cost=11.20..62.95 rows=380 width=4) (actual time=0.232..1.181 rows=424 loops=1)
                                Recheck Cond: (from_profile_id = 5)
                                -&amp;gt;  Bitmap Index Scan on profile_friends_from_profile_id_key  (cost=0.00..11.10 rows=380 width=0) (actual time=0.210..0.210 rows=424 loops=1)
                                      Index Cond: (from_profile_id = 5)
                          -&amp;gt;  Index Scan using profile_pkey on profile u0  (cost=0.00..5.61 rows=1 width=4) (actual time=0.013..0.016 rows=1 loops=424)
                                Index Cond: (u0.user_id = u1.to_profile_id)
              -&amp;gt;  Index Scan using activity_activityevent_user_id on activity_activityevent  (cost=0.00..18.82 rows=35 width=202) (actual time=0.014..0.130 rows=37 loops=424)
                    Index Cond: (activity_activityevent.user_id = u0.user_id)
Total runtime: 165.323 ms
&lt;/pre&gt;

Время выполнения запроса уменьшилось в два раза. Тот же самый результат получается, если установить &lt;code&gt;random_page_cost&lt;/code&gt; меньшим или равным &lt;code&gt;1.2&lt;/code&gt;. Оба подхода мне не очень нравятся, особенно с выключением seq scan.

Просто не понимаю, каким разумным методом заставить postgres использовать здесь индекс. Видимо, я что-то не догоняю.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:395163</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/395163.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=395163"/>
    <title>Проблемы оптимизации производительности</title>
    <published>2009-09-06T06:03:50Z</published>
    <updated>2009-09-06T06:03:50Z</updated>
    <category term="memcached"/>
    <category term="performance"/>
    <category term="cmemcache"/>
    <category term="postgres"/>
    <content type="html">Питоновское расширение cmemcache для работы с memcached начало выдавать такие сообщения ни с того, ни с сего:
&lt;pre&gt;[NOTICE@1252216599.924163] mcm_storage_cmd():3339: unable to store value: add 
[NOTICE@1252216599.924494] mcm_storage_cmd():3339: unable to store value: add 
[NOTICE@1252216599.924764] mcm_storage_cmd():3339: unable to store value: add 
[NOTICE@1252216599.925048] mcm_storage_cmd():3339: unable to store value: add&lt;/pre&gt;
&lt;p&gt;Соответственно, кэширование не работает. Гугление этих ошибок никакого вразумительного ответа не дает. Видимо, придется откатываться к более медленному pure-python модулю memcache.&lt;/p&gt;

&lt;p&gt;Искусственный интеллект PostgreSQL начинает задалбывать. Есть долгий запрос с несколькими JOIN'ами. В паре JOIN'ов не используется индекс, вместо этого Postgres ищет 1000 значений в таблице из миллиона записей методом seq scan. Развернул дамп базы локально на той же версии postgres. Сделал VACUUM ANALYZE для трех таблиц, которые используются в JOIN'ах. Postgres начал использовать индекс и время выполнения запроса уменьшилось более чем в два раза. На production VACUUM ANALYZE тех же таблиц ни к чему не приводит, запрос выполняется все так же медленно.&lt;/p&gt;

&lt;p&gt;Может быть ему вообще запретить метод seq scan?&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:394765</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/394765.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=394765"/>
    <title>Поиск таблиц, для которых не существует индекса, в PostgreSQL</title>
    <published>2009-09-04T12:11:35Z</published>
    <updated>2009-09-04T12:11:35Z</updated>
    <category term="tips"/>
    <category term="performance"/>
    <category term="sql"/>
    <category term="optimization"/>
    <category term="postgresql"/>
    <content type="html">&lt;pre&gt;
CREATE OR REPLACE VIEW pg_table_nonindex_x AS
SELECT
x1.table_in_trouble,
pg_relation_size(x1.table_in_trouble) AS sz_n_byts,
x1.seq_scan, x1.idx_scan,
CASE
WHEN pg_relation_size(x1.table_in_trouble) &amp;gt; 500000000
THEN 'Exceeds 500 megs, too large to count in a view. For a count, count individually'::text
ELSE count(x1.table_in_trouble)::text
END AS tbl_rec_count,
x1.priority
FROM
(
SELECT
(schemaname::text || '.'::text) || relname::text AS table_in_trouble,
seq_scan,
idx_scan,
CASE
WHEN (seq_scan - idx_scan) &amp;lt; 500 THEN 'Minor Problem'::text
WHEN (seq_scan - idx_scan) &amp;gt;= 500 AND (seq_scan - idx_scan) &amp;lt; 2500 THEN 'Major Problem'::text
WHEN (seq_scan - idx_scan) &amp;gt;= 2500 THEN 'Extreme Problem'::text
ELSE NULL::text
END AS priority
FROM
pg_stat_all_tables
WHERE
seq_scan &amp;gt; idx_scan
AND schemaname != 'pg_catalog'::name
AND seq_scan &amp;gt; 100) x1
GROUP BY
x1.table_in_trouble,
x1.seq_scan,
x1.idx_scan,
x1.priority
ORDER BY
x1.priority DESC,
x1.seq_scan
;
SELECT * FROM pg_table_nonindex_x;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.postgresonline.com/journal/index.php?/archives/65-How-to-determine-which-tables-are-missing-indexes.html#c1114"&gt;Отсюда&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:394615</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/394615.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=394615"/>
    <title>Насколько хорошо вы знаете испанский</title>
    <published>2009-08-20T18:40:03Z</published>
    <updated>2009-08-20T18:40:03Z</updated>
    <category term="ссылки"/>
    <category term="испанский"/>
    <content type="html">&lt;a href="http://spanish.about.com/b/2009/08/18/well-what-do-you-know.htm"&gt;Несколько тестов от about.com&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:394447</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/394447.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=394447"/>
    <title>По поводу ареста кардера</title>
    <published>2009-08-19T04:13:47Z</published>
    <updated>2009-08-19T04:13:47Z</updated>
    <category term="reddit"/>
    <category term="ссылки"/>
    <category term="юмор"/>
    <content type="html">Из комментариев на reddit к этой новости: &lt;a href="http://news.bbc.co.uk/2/hi/business/8206305.stm"&gt;US man 'stole 130m card numbers'&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;    &lt;blockquote&gt;He would also have to pay a fine of $250,000 (£150,000) for each of the two charges.&lt;/blockquote&gt;&lt;br /&gt;Good thing he didn't download any music!&lt;br /&gt;&lt;/blockquote&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:394199</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/394199.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=394199"/>
    <title>Испанские глаголы</title>
    <published>2009-08-18T15:26:18Z</published>
    <updated>2009-08-18T15:31:17Z</updated>
    <category term="испанский"/>
    <content type="html">От обилия информации голова идет кругом. Как заучить все спряжения? А в modo imperativo? А в pretérito? Ладно, есть правила, но все равно мне пока тяжело их запомнить и применять на лету. Не думал, что испанский настолько сложный. Он легкий только на поверхности.&lt;br /&gt;&lt;br /&gt;Пока нашел простенький тест: &lt;a href="http://www.studyspanish.com/verbs/"&gt;http://www.studyspanish.com/verbs/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Надо бы что-нибудь подобное для anki написать. Допустим, помечать глаголы меткой &lt;strong&gt;Verbo&lt;/strong&gt; и генерировать дополнительные вопросы, типа, «как спрягается этот глагол в таком-то времени в таком-то наклонении»... Не знаю, когда время для этого появится.&lt;br /&gt;&lt;br /&gt;P.S. Нашел еще одну полезную ссылку: &lt;a href="http://www.wordreference.com/conj/ESverbs.asp"&gt;Conjugación de Verbos/Spanish Verb Conjugation&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:393756</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/393756.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=393756"/>
    <title>Про средний класс</title>
    <published>2009-08-18T14:33:13Z</published>
    <updated>2009-08-18T14:33:13Z</updated>
    <category term="нанозарплаты и мегаоткаты"/>
    <category term="ссылки"/>
    <content type="html">&lt;a href="http://www.apn.ru/publications/comments20197.htm"&gt;...Середняк это вовсе не очкастый поджарый выпускник университета и путешественник по заграницам. Наш середняк — обстоятельный дядька с пузцом, при бороде и в жилетке, крепкий хозяин. Он вовремя поменял кардан на старой «ниве», картошку выкопал, пока вёдро. Борща поел, капусту из бороды вынул и на икону перекрестился. Слава Богу, хорошо живём.&lt;br /&gt;&lt;br /&gt;Осталось дождаться, когда этот посконный российский средний класс организует нам соответствующие инновации и нанотехнологии. ...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;via &lt;span class='ljuser ljuser-name_alexthunder' lj:user='alexthunder' style='white-space: nowrap;'&gt;&lt;a href='http://alexthunder.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://alexthunder.livejournal.com/'&gt;&lt;b&gt;alexthunder&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:393243</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/393243.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=393243"/>
    <title>Район №9</title>
    <published>2009-08-17T08:11:56Z</published>
    <updated>2009-08-17T08:11:56Z</updated>
    <category term="кино"/>
    <category term="дневник"/>
    <content type="html">На выходных посмотрел «Район №9». Очень понравился. Самый нестандартный фантастический фильм за последние годы. В кинотеатре рядом со мной народ приподнимался на креслах в определенные моменты, и не позднее середины сеанса все забыли про попкорн.&lt;br /&gt;&lt;br /&gt;После сеанса пришло в голову, что это, возможно, пропаганда толерантности, но довольно ненавязчивая.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:392812</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/392812.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=392812"/>
    <title>Еще фотографии и видео с испанского</title>
    <published>2009-08-16T19:46:22Z</published>
    <updated>2009-08-16T19:48:00Z</updated>
    <category term="фотография"/>
    <category term="видео"/>
    <category term="испанский"/>
    <content type="html">&lt;a href="http://static.cactus-mouse.com/photos/spanish-3/"&gt;Фотографии&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Меня на этих фотографиях нет, поскольку в тот день сильно порезался бритвой, пришлось заклеить морду пластырем, постеснялся фотографироваться.&lt;br /&gt;&lt;br /&gt;Длинноволосая брюнетка — Мария Кармен, переводчица из Андалусии, очень красивая. Не знал, что испанки бывают настолько красивыми. Девочка в белой толстовке и очках — дочь Игнасио, Соледад (странное имя, как им в голову приходит так детей называть).&lt;br /&gt;&lt;br /&gt;Видео, как наш Игнасио играет на гитаре. Не перестаю удивляться талантам этого человека. На одном из видео поет Валя — секретарь центра. Ни слова не разобрать, но красиво. ))))&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=Fj7TcR9bV6s"&gt;http://www.youtube.com/watch?v=Fj7TcR9bV6s&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=bePx4oFDtPE"&gt;http://www.youtube.com/watch?v=bePx4oFDtPE&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=X4ipaADjS9o"&gt;http://www.youtube.com/watch?v=X4ipaADjS9o&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=S9moAsx4gmc"&gt;http://www.youtube.com/watch?v=S9moAsx4gmc&lt;/a&gt; (сиськи! но одетые, не обольщайтесь)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:392388</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/392388.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=392388"/>
    <title>Identifying unicode punctuation characters with Python regex</title>
    <published>2009-08-12T08:59:53Z</published>
    <updated>2009-08-12T09:02:17Z</updated>
    <category term="закладки"/>
    <category term="python"/>
    <category term="cjk"/>
    <category term="unicode"/>
    <category term="ссылки"/>
    <category term="программирование"/>
    <category term="regular expressions"/>
    <content type="html">&lt;a href="http://mail.python.org/pipermail/python-list/2008-November/687537.html"&gt;Identifying unicode punctuation characters with Python regex&lt;/a&gt;. Хм, неужели нет более простого способа, как в Perl, например?..&lt;br /&gt;&lt;br /&gt;Необходимость возникла из-за того, что pymmseg (основанный на mmseg-cpp) считает CJK-пунктуацию отдельными словами. :(</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:391923</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/391923.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=391923"/>
    <title>python и MeCab</title>
    <published>2009-08-11T08:15:54Z</published>
    <updated>2009-08-11T08:15:54Z</updated>
    <category term="python"/>
    <category term="nlp"/>
    <category term="mecab"/>
    <category term="mmseg"/>
    <category term="languages"/>
    <category term="chinese"/>
    <category term="japanese"/>
    <category term="программирование"/>
    <content type="html">&lt;p&gt;Существует пакет MeCab для работы с японскими текстами. Предназначение его неизвестно, поскольку документация скудная и исключительно на японском. Мне надо всего лишь разбивать японские текст по словам (китайские тоже, но для этих целей есть простой и понятный &lt;a href="http://github.com/pluskid/pymmseg-cpp/tree/master"&gt;pymmseg&lt;/a&gt;).

&lt;p&gt;К счастью, нашел на Google Code Search минимальный пример на Ruby, который быстро портировал на Python:
&lt;pre&gt;
import MeCab

def words(text):
    mecab = MeCab.Tagger("")

    mnode = mecab.parseToNode(text.encode('euc_jp'))
    word_array = []

    while mnode:
        infos = {}
        infos['word'] = mnode.surface.decode('euc_jp')
        feature = mnode.feature.decode('euc_jp')
        array = feature.split(",")
        infos['type'] = array[0]
        infos['dform'] = array[4]
        infos['reading'] = array[5]
        if not infos['type'] == "BOS/EOS":
            word_array.append(infos)
        mnode = mnode.next

    return word_array

sentence = u"共焦点レーザ走査型顕微鏡FV1000は、レーザ顕微鏡に求められる基本性能を極限まで追求しました"
print sentence
for w in words(sentence):
    print w['word']
&lt;/pre&gt;

&lt;p&gt;Для работы необходимо установить пакеты &lt;tt&gt;mecab&lt;/tt&gt; и &lt;tt&gt;python-mecab&lt;/tt&gt;, например, из &lt;a href="http://cl.naist.jp/~eric-n/ubuntu-nlp/"&gt;The Ubuntu NLP Repository&lt;/a&gt; (я использовал самосборный).</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:391263</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/391263.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=391263"/>
    <title>Полный PHP головного мозга</title>
    <published>2009-08-06T07:11:22Z</published>
    <updated>2009-08-06T07:11:22Z</updated>
    <category term="php"/>
    <category term="программирование"/>
    <content type="html">&lt;a href="http://habrahabr.ru/blogs/webdev/66309/"&gt;Хранение кода в бд или собираем код по кирпичикам&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;А ведь потом какая-то несчастная душа будет поддерживать сайты, сделанные этим «гением» от PHP. :(</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:390411</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/390411.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=390411"/>
    <title>Сегодняшнее утро</title>
    <published>2009-08-01T07:15:47Z</published>
    <updated>2009-08-01T07:15:47Z</updated>
    <category term="психология"/>
    <category term="дневник"/>
    <content type="html">Проснулся от женского визга под окном: «Ты свои вещи взял, а мои, типа, не помещаются!» и т.п. в течении получаса на такой громкости, что стекла в окнах дрожали. Выглядываю — компания из четырех человек собирается ехать на отдых в маленькой тойоте. И у одной девушки не помещается в машину баул, в который она набила, видимо, половину своего гардероба. На уговоры оставить что-нибудь дома, не соглашалась: «Вы для своих вещей нашли место, а для моих не хотите!!!»&lt;br /&gt;&lt;br /&gt;В итоге, она орала час, так что я не смог снова уснуть при всем желании, а затем решила оскорбиться, бросила все, и ушла домой. Остальные три человека стояли под окнами и уговаривали ее не психовать и вернуться. Еще через час она все-таки вышла.&lt;br /&gt;&lt;br /&gt;В промежутке я выходил в магазин и прошел мимо этой компании. Мало того, что они выехали на два часа позже, так настроение у всех безнадежно испорчено утренней истерикой, выражение лиц — кислое.&lt;br /&gt;&lt;br /&gt;Напомнило, как я жил с такой мадам целых два года. Подобные сцены повторялись если не раз в день, то несколько раз в неделю. &lt;br /&gt;&lt;br /&gt;Ужас... Есть же такие люди, у которых единственное удовольствие в жизни — испортить настроение окружающим. У меня настроение тоже испортилось, и из-за того, что не выспался, и из-за неприятных воспоминаний, и потому что жалко парнишку, который связался с этой стервой.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:390152</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/390152.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=390152"/>
    <title>La nota del examen</title>
    <published>2009-07-31T16:04:37Z</published>
    <updated>2009-07-31T16:04:37Z</updated>
    <category term="дневник"/>
    <category term="испанский"/>
    <content type="html">Похвастаюсь немного:&lt;br /&gt;&lt;blockquote&gt;Hola Eugenio!&lt;br /&gt;&lt;br /&gt;Tengo el placer de informarte que tu nota final es de 93 puntos,  es decir&lt;br /&gt;excelente (5) . Te felicito!!! Te deseo nuevos exitos en el estudio del&lt;br /&gt;español!!! Para cualquier ayuda estoy a tu disposicion.&lt;br /&gt;&lt;br /&gt;Saludos, Roberto.&lt;/blockquote&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kolloid:389695</id>
    <link rel="alternate" type="text/html" href="http://kolloid.livejournal.com/389695.html"/>
    <link rel="self" type="text/xml" href="http://kolloid.livejournal.com/data/atom/?itemid=389695"/>
    <title>Операторы против Skype</title>
    <published>2009-07-30T06:19:43Z</published>
    <updated>2009-07-30T06:19:43Z</updated>
    <category term="жадность"/>
    <category term="ссылки"/>
    <content type="html">Только ленивый об этом еще не писал, но все же приведу ссылку для тех, кто не в курсе:&lt;br /&gt;&lt;a href="http://www.novayagazeta.ru/data/2009/080/33.html"&gt;Асяссины&lt;/a&gt;</content>
  </entry>
</feed>
