<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;DEcARHgzeCp7ImA9WxNRF0w.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544</id><updated>2009-09-11T17:40:45.680-07:00</updated><title>buy it, use it, break it, fix it.</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://antonkovalyov.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/antonkovalyov" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;D0IAQHw5fip7ImA9WxNTEUw.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-863098263926699926</id><published>2009-08-12T15:14:00.000-07:00</published><updated>2009-08-12T15:19:01.226-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-12T15:19:01.226-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="marcriboud" /><category scheme="http://www.blogger.com/atom/ns#" term="photos" /><category scheme="http://www.blogger.com/atom/ns#" term="ussr" /><title>СССР, 1960-63</title><content type="html">&lt;p&gt;Великолепные фотографии из СССР 60х годов: &lt;a href="http://www.marcriboud.com/marcriboud/europe/RUSSIE/index.html"&gt;Marc Riboud — RUSSIA, 1960-63&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.marcriboud.com/marcriboud/europe/RUSSIE/index.html"&gt;&lt;img src="http://dl.getdropbox.com/u/447925/pics/marc_riboud_russia.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&amp;copy; Марк Рибу&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-863098263926699926?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/uvf_YPuDXQU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=863098263926699926" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/863098263926699926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/863098263926699926?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/08/ussr-in-60s.html" title="СССР, 1960-63" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CE4MQXk5eCp7ImA9WxJaFUw.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-6785554737391562991</id><published>2009-08-05T15:53:00.000-07:00</published><updated>2009-08-05T15:56:20.720-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-05T15:56:20.720-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Хм</title><content type="html">&lt;p&gt;С удивлением обнаружил, что в Python декоратор нужно обязательно объявлять до его первого использования.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-6785554737391562991?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/uPU_TigA2hE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=6785554737391562991" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6785554737391562991?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6785554737391562991?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/08/blog-post.html" title="Хм" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Dk4MSH4ycCp7ImA9WxJbGU4.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-6360010664306054390</id><published>2009-07-29T23:18:00.000-07:00</published><updated>2009-07-29T23:23:09.098-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-29T23:23:09.098-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="сан-франциско" /><category scheme="http://www.blogger.com/atom/ns#" term="фото" /><title>Канатоходец</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/3771549338/" title="IMG_4456 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3509/3771549338_6aa0cd7ba3.jpg" width="500" height="333" alt="IMG_4456" /&gt;&lt;/a&gt;&lt;/p&gt;

Сан-Франциско, среда, вечер. На берегу залива.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-6360010664306054390?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/XbjgN_vrzhE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=6360010664306054390" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6360010664306054390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6360010664306054390?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/07/blog-post.html" title="Канатоходец" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEUAQ3YyfCp7ImA9WxJbGEg.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-7762260504380945061</id><published>2009-07-29T01:24:00.000-07:00</published><updated>2009-07-29T01:30:42.894-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-29T01:30:42.894-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="spain" /><category scheme="http://www.blogger.com/atom/ns#" term="barcelona" /><category scheme="http://www.blogger.com/atom/ns#" term="gaudi" /><category scheme="http://www.blogger.com/atom/ns#" term="catalonia" /><title>Sagrada Família</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/3767773293/" title="IMG_3810 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2569/3767773293_6fd72957a0.jpg" width="500" height="333" alt="IMG_3810" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Искупительный Собор Святого Семейства. Барселона, Каталония, Испания.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-7762260504380945061?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/2KSvszxWrpc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=7762260504380945061" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/7762260504380945061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/7762260504380945061?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/07/sagrada-familia.html" title="Sagrada Família" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A08DQ3g4fCp7ImA9WxJUEEU.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-3791681844376164619</id><published>2009-07-08T14:49:00.000-07:00</published><updated>2009-07-08T14:51:12.634-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-08T14:51:12.634-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="работа" /><title>Dear NULL</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/3702546616/" title="Dear NULL by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2485/3702546616_3ef715a252_o.png" width="500" height="128" alt="Dear NULL" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Вот такое письмо я получил сегодня утром. Я практически оскорблен.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-3791681844376164619?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/DLNOth44ZbA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=3791681844376164619" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/3791681844376164619?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/3791681844376164619?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/07/dear-null.html" title="Dear NULL" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0EHRX08cCp7ImA9WxJVE0k.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-8546749002101035203</id><published>2009-06-29T23:57:00.000-07:00</published><updated>2009-06-30T00:07:14.378-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T00:07:14.378-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="гейпарад" /><category scheme="http://www.blogger.com/atom/ns#" term="сан-франциско" /><category scheme="http://www.blogger.com/atom/ns#" term="sfpride09" /><category scheme="http://www.blogger.com/atom/ns#" term="sfpride" /><title>Гей-парад в Сан-Франциско, 2009</title><content type="html">&lt;p&gt;Выложил фотографии гей-парада, который проходил в минувшее воскресенье в Сан-Франциско. Ниже фликровское слайд-шоу (нужен флеш), а вот &lt;a href="http://www.flickr.com/photos/antonkovalyov/sets/72157620562717331/"&gt;прямая ссылка на фотографии&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;object width="500" height="375"&gt; &lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620562717331%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620562717331%2F&amp;set_id=72157620562717331&amp;jump_to="&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620562717331%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620562717331%2F&amp;set_id=72157620562717331&amp;jump_to=" width="500" height="375"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Там же был махонькая демонстрация пуританских гомофобов против геев, лесбиянок и прочей угрозы национальной безопасности США (я серьезно, на одном плакате так и написано). Прямая &lt;a href="http://www.flickr.com/photos/antonkovalyov/sets/72157620614605353/"&gt;ссылка на фотографии&lt;/a&gt;, слайдшоу ниже:&lt;/p&gt;

&lt;p&gt;&lt;object width="500" height="375"&gt; &lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620614605353%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620614605353%2F&amp;set_id=72157620614605353&amp;jump_to="&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620614605353%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fantonkovalyov%2Fsets%2F72157620614605353%2F&amp;set_id=72157620614605353&amp;jump_to=" width="500" height="375"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-8546749002101035203?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/NcL5lgRH7Ss" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=8546749002101035203" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/8546749002101035203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/8546749002101035203?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/06/san-francisco-pride-parade-2009.html" title="Гей-парад в Сан-Франциско, 2009" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEECQn8zfyp7ImA9WxJVEkk.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-2865065321366026066</id><published>2009-06-28T20:35:00.000-07:00</published><updated>2009-06-28T20:37:43.187-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-28T20:37:43.187-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="парад" /><category scheme="http://www.blogger.com/atom/ns#" term="сан-франциско" /><category scheme="http://www.blogger.com/atom/ns#" term="sfpride09" /><category scheme="http://www.blogger.com/atom/ns#" term="sfpride" /><title>Гэвин Ньюсом</title><content type="html">&lt;p&gt;Сегодня, SF Pride '09, мэр Сан-Франциско Гэвин Ньюсом.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/3669951687/" title="Gavin Newsom on SF Pride '09 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2602/3669951687_668ed1d20f.jpg" width="500" height="375" alt="Gavin Newsom on SF Pride '09" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-2865065321366026066?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/EvWdgH-KnnY" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=2865065321366026066" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2865065321366026066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2865065321366026066?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/06/gavin-newsom.html" title="Гэвин Ньюсом" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkANR3wyeSp7ImA9WxJWGUw.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-1425405946245933584</id><published>2009-06-24T23:13:00.000-07:00</published><updated>2009-06-24T23:19:56.291-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-24T23:19:56.291-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="новости" /><category scheme="http://www.blogger.com/atom/ns#" term="сан-франциско" /><title>Новости нашего городка</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;(06-24) 13:20 PDT ЮЖНОЕ САН-ФРАНЦИСКО&lt;/strong&gt; — Бездомный врезал скейтбоурдом по лицу другого бездомного в результате спора на тему квантовой физики и расщепления атомов. &lt;cite&gt;&lt;a href="http://www.sfgate.com/cgi-bin/article.cgi?file=/c/a/2009/06/24/BAH118D37E.DTL"&gt;SFGate&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-1425405946245933584?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/6dKzifbuNBw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=1425405946245933584" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/1425405946245933584?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/1425405946245933584?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/06/blog-post_24.html" title="Новости нашего городка" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUINSHw-cCp7ImA9WxJWEUw.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-4854166326564366784</id><published>2009-06-15T17:02:00.000-07:00</published><updated>2009-06-15T17:53:19.258-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-15T17:53:19.258-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Ошибка в несуществующем файле</title><content type="html">&lt;p&gt;Интересное случилось на работе. Началось всё с того, что некоторые тесты при своем падении начали тащить за собой весь фреймворк. Т. е. выполняется тест, в тестируемом файле вылезает какая-нибудь ошибка и, вместо того, чтобы записать её в лог и красиво закончить работу, вся тестинговая подсистема падает с сообщением &lt;code&gt;AttributeError: 'NoneType' object has no attribute 'startswith'&lt;/code&gt;. Это проявлялось только у меня на компьютере, поэтому, вооружившись дебаггером, я начал ковырять один такой тест.&lt;/p&gt;

&lt;p&gt;Сразу выяснилось, что &lt;code&gt;traceback.extract_tb&lt;/code&gt; иногда возвращал None вместо содержимого строки, на котором произошла ошибка. Далее джанга пыталась безуспешно вызвать метод startswith у None в результате чего и падала .&lt;/p&gt;

&lt;p&gt;Функция extract_tb возвращает None вместо содержимого строки только тогда, когда исходный текст модуля не доступен. Я начал дебаггить модули traceback и linecache, чтобы понять почему мы не можем прочитать прекрасно читаемый файл и обнаружил чудесное:&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;&lt;code&gt;(Pdb) tb.tb_frame.f_code
&amp;lt;code object click at 0x10894e8, \
file "/home/anton/disqus/disqus/contrib/selenium.py", line 268&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;Дело в том, что у меня ни то, что этого файла, у меня даже /home на компьютере нет (на OS X пользовательские директории находятся в /Users). Т. е. в какой-то момент исключение генерировалось из несуществующего файла (cправедливости ради, стоит отметить, что правильная мысль о причине AttributeError у меня была ещё в самом начале, но я её почему-то отбросил). Увидев это, я понял отчего несуществующие файлы у меня бросаются исключениями. Осталось только провести небольшой эксперимент: найти правильный selenium.py, изменить дату модификации и запустить тест заново.&lt;/p&gt;

&lt;p&gt;Всё дело в том, что я какое-то время пользовался этой же инсталляцией с удаленной линукс машины, монтировав директорию через sshfs. Линуксовый питон создавал .pyc файлы а, поскольку файл с того момента не менялся, мой текущий питон файлы не пересобирал и соответственно модуль selenium думал, что он находится по старому адресу и этот адрес отдавал дальше по запросу. Модуль traceback, получив такой адрес, пытался прочитать исходный текст файла, не находил его и возвращал None.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-4854166326564366784?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/fESEV6WkyXQ" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=4854166326564366784" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4854166326564366784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4854166326564366784?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/06/blog-post.html" title="Ошибка в несуществующем файле" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CU4CR3c8eip7ImA9WxJXF00.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-2924859271213478581</id><published>2009-06-10T23:29:00.000-07:00</published><updated>2009-06-11T00:06:06.972-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-11T00:06:06.972-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="доклады" /><category scheme="http://www.blogger.com/atom/ns#" term="сан-франциско" /><category scheme="http://www.blogger.com/atom/ns#" term="музеи" /><category scheme="http://www.blogger.com/atom/ns#" term="mongodb" /><category scheme="http://www.blogger.com/atom/ns#" term="маунтин-вью" /><title>Разные вещи</title><content type="html">&lt;h4&gt;Музей компьтерной истории&lt;/h4&gt;

&lt;p&gt;Скопировал с фотоаппарата и выложил в сеть фотографии, которые я сделал в &lt;a href="http://computerhistory.org"&gt;музее компьютерной истории&lt;/a&gt;, что в Маунтин-Вью.&lt;/p&gt;


&lt;h4&gt;MongoDB&lt;/h4&gt;

&lt;p&gt;Сегодня был в компании Slide на докладе о &lt;a href="http://mongodb.org"&gt;MongoDB&lt;/a&gt;. MongoDB это высоко-производительная, документо-ориентированная система без формальной схемы базы данных (если я правильно перевел high-performance, document-oriented schema-free database). Половину доклада можно было, в принципе, прочитать у них на сайте, а вот вторая половина — про автоматический шардинг — получилась весьма интересной.&lt;/p&gt;

&lt;p&gt;Мы, на работе, тоже используем Монго, но пока только для нескольких небольших проектов. К примеру, все данные для нашего шортера адресов хранятся именно в этой базе данных.&lt;/p&gt;

&lt;p&gt;Кстати, интересный факт: поскольку шелл для этой базы данных написан с использованием джаваскрипта, они используют джаваскрипт-интерпретатор. Так вот, раньше они пользовались V8, но недавно переключились на SpiderMonkey. Сегодня я спросил у авторов о причине и оказалось, что V8 очень трудно портировать на 64 битные системы. Вот и весь интересный факт.&lt;/p&gt;

&lt;h4&gt;Сан-Франциско&lt;/h4&gt;

&lt;p&gt;В Сан-Франциско холодно и нет солнца и это не смотря на то, что сейчас лето. Последние два-три дня вообще постоянные тучи и туманы.&lt;/p&gt;


&lt;h4&gt;Google I/O&lt;/h4&gt;

&lt;p&gt;Нашел &lt;a href="http://picasaweb.google.com/googio2009/GoogleIO2009#5340637720103260530"&gt;себя&lt;/a&gt; среди официальных фотографий с Google I/O.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-2924859271213478581?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/FZ4UkzPjkqM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=2924859271213478581" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2924859271213478581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2924859271213478581?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/06/different-things.html" title="Разные вещи" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0YESXk_fip7ImA9WxJQFU4.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-3181089475726905313</id><published>2009-05-28T12:30:00.001-07:00</published><updated>2009-05-28T12:31:48.746-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T12:31:48.746-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="googleio" /><title>Сергей Брин на Google I/O</title><content type="html">&lt;p&gt;Минут 10 назад, Сергей Брин дает интервью на Google I/O:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/3573360989/" title="Sergey Brin by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3602/3573360989_90a97f582c.jpg" width="500" height="375" alt="Sergey Brin" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-3181089475726905313?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/e_2oAE0IS90" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=3181089475726905313" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/3181089475726905313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/3181089475726905313?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/sergey-brin-google-io.html" title="Сергей Брин на Google I/O" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0cBRn0zeCp7ImA9WxJQE0o.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-6094695096099755153</id><published>2009-05-26T10:50:00.000-07:00</published><updated>2009-05-26T14:57:37.380-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T14:57:37.380-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="сша" /><category scheme="http://www.blogger.com/atom/ns#" term="калифорния" /><category scheme="http://www.blogger.com/atom/ns#" term="prop8" /><title>Пуританская страна</title><content type="html">&lt;p&gt;Около часа назад, демонстрация возле Верховного Суда Калифорнии.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/3567601838/" title="IMG_1379 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3628/3567601838_f368c6cc66.jpg" width="500" height="375" alt="IMG_1379" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Суд оставил Prop 8 в силе, тем самым оставив браки между геями вне закона.&lt;/p&gt;

&lt;p&gt;UPD: &lt;a href="http://www.flickr.com/photos/antonkovalyov/sets/72157618827391960/"&gt;Остальные фотографии&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-6094695096099755153?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/0Y3bNBaRpiQ" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=6094695096099755153" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6094695096099755153?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6094695096099755153?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/blog-post_26.html" title="Пуританская страна" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUEDQXszeip7ImA9WxJQEk4.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-1270391583423019434</id><published>2009-05-24T23:40:00.000-07:00</published><updated>2009-05-24T23:41:10.582-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-24T23:41:10.582-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Битовые поля</title><content type="html">&lt;p&gt;Когда таблица в классической, реляционной базе данных достигает определенного размера процесс какого-либо изменения её структуры становится очень болезненным. Однако, по мере того, как ваша программа развивается и обрастает новым функционалом, добавлять дополнительную информацию просто необходимо.&lt;/p&gt;

&lt;p&gt;У нас чаще всего к большим таблицам нужно добавлять поля-флаги: разрешены ли комментарии в треде, подтвердил ли пользователь свой эл. адрес и так далее. К примеру, с тем пор как мы запустили «социальные комментарии» (на русском это название звучит ещё хуже, чем на английском) к нашим источникам добавились ещё два сайта: Reddit и News YC. А это два новых флага в таблице.&lt;/p&gt;

&lt;p&gt;Решение этой задачки далеко не ново и было взято моим коллегой &lt;a href="http://twitter.com/andrewbadr"&gt;Эндрю&lt;/a&gt; из Си: чтобы компактно хранить данные булевого типа в одном поле можно использовать битовые поля. С такими полями нет необходимости каждый раз менять структуру таблиц, достаточно лишь закрепить в коде следующий свободный бит за соответствующим флагом.&lt;/p&gt;

&lt;p&gt;Ниже я написал небольшой пример, основанный на используемом нами подходе:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from functools import partial

def bitfield_handler(field, bit):
    mask = 2**bit

    def _bit_handler(self, value=None):
        if value is not None:
            oldvalue = (getattr(self, field, 0) or 0)
            if value:
                setattr(self, field, oldvalue | mask)
            else:
                setattr(self, field, oldvalue &amp; (~mask))
        curvalue = (getattr(self, field, 0) or 0)
        return curvalue &amp; mask

    return _bit_handler

properties_handler = partial(bitfield_handler, 'properties')

class User(object):
    def __init__(self):
        self.properties = 0

    IS_VERIFIED = properties_handler(0)
    RECEIVE_NOTIFICATIONS = properties_handler(1)


if __name__ == '__main__':
    user = User()
    user.IS_VERIFIED(True)
    assert(user.IS_VERIFIED())
    assert(not user.RECEIVE_NOTIFICATIONS())

    user.IS_VERIFIED(False)
    user.RECEIVES_NOTIFICATIONS(True)
    assert(not user.IS_VERIFIED())
    assert(user.RECEIVE_NOTIFICATIONS())
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;В принципе, код вполне себе понятный, но если есть какие-либо вопросы — с радостью отвечу на них в комментариях. Вы можете заметить, что конкретно эту имплементацию можно улучшить: использовать свойства вместо обычных методов, не возвращать ничего при установке бита и т. д. Я с этим согласен, но эта заметка не про конкретную реализацию, а про общий подход.&lt;/p&gt;

&lt;div class="more-reading"&gt;
&lt;p&gt;По теме:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/Битовое_поле"&gt;Битовое поле&lt;/a&gt; в Википедии&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-1270391583423019434?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/d-ghTK-JguM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=1270391583423019434" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/1270391583423019434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/1270391583423019434?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/blog-post_24.html" title="Битовые поля" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;Dk8HQns-fSp7ImA9WxJQEUg.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-8741898882275572577</id><published>2009-05-24T01:27:00.000-07:00</published><updated>2009-05-24T01:47:13.555-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-24T01:47:13.555-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="googleio" /><category scheme="http://www.blogger.com/atom/ns#" term="конференция" /><title>Google I/O 2009</title><content type="html">&lt;p&gt;В среду и четверг я буду на конференции &lt;a href="http://code.google.com/events/io/"&gt;Google I/O&lt;/a&gt;. Вроде все доклады, на которые хочу сходить, выбрал и занес себе в календарик. Хотя одна дыра всё таки осталась, но её заполню уже на месте. Очень жду &lt;em&gt;V8: Building a High Performance JavaScript Engine&lt;/em&gt; и &lt;em&gt;Even Faster Websites&lt;/em&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-8741898882275572577?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/_mkVjWBA1ZM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=8741898882275572577" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/8741898882275572577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/8741898882275572577?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/google-io-2009.html" title="Google I/O 2009" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0IBRX4yeip7ImA9WxJRF0w.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-3286597563766564015</id><published>2009-05-19T00:31:00.001-07:00</published><updated>2009-05-19T00:52:34.092-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-19T00:52:34.092-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="стэнфорд" /><category scheme="http://www.blogger.com/atom/ns#" term="гугл" /><category scheme="http://www.blogger.com/atom/ns#" term="фото" /><category scheme="http://www.blogger.com/atom/ns#" term="долина" /><title>Кремниевая Долина</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/antonkovalyov/collections/72157618454747674/" title="Palo Alto CalTrain station by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3629/3545379232_d86f6440cd.jpg" width="500" height="375" alt="Palo Alto CalTrain station" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Создал на фликре &lt;a href="http://www.flickr.com/photos/antonkovalyov/collections/72157618454747674/"&gt;коллекцию&lt;/a&gt;, куда буду складывать фотографии из Кремниевой Долины. Пока выложил Гуглплекс, Стэнфордский университет и кусочки маленьких американских городков.&lt;/p&gt;

&lt;p&gt;Изнутри офисы Гугла мне посмотреть не удалось, потому что я там был проездом, а у них без знакомого сотрудника внутрь не пускают. Как найду кого-нибудь, кто согласится устроить мне тур, так и посмотрю (хотя коллеги по работе говорят, что ничего особенного внутри нет — офисы, как офисы; но всё равно интересно).&lt;/p&gt;

&lt;p&gt;Стэнфорд — огромный университет (все красные крыши на фотографиях — здания университета), по территории разбросаны скульптуры Родена, бегают белки и студенты.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-3286597563766564015?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/3X6g-PadWlU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=3286597563766564015" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/3286597563766564015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/3286597563766564015?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/blog-post_19.html" title="Кремниевая Долина" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUYGQ305fip7ImA9WxJRFUk.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-2973951877140048693</id><published>2009-05-14T21:34:00.000-07:00</published><updated>2009-05-17T00:58:42.326-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-17T00:58:42.326-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Наблюдение</title><content type="html">&lt;p&gt;Допустим, у нас есть модель &lt;code&gt;A1&lt;/code&gt; со связанным полем &lt;code&gt;field1&lt;/code&gt; и вы хотите проверить наличие этого поля в райнтайме. Выполнив &lt;code&gt;hasattr(A1, 'field1')&lt;/code&gt; вы также выполните операцию &lt;code&gt;getattr&lt;/code&gt;*, что, в свою очередь, вполне возможно приведет к дополнительному (и порой совершенно ненужному) запросу к базе данных.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;* — django/db/models/fields/related.py:228&lt;/small&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-2973951877140048693?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/9BDFdH1v9-U" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=2973951877140048693" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2973951877140048693?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2973951877140048693?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/blog-post_14.html" title="Наблюдение" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D0ENSX46eip7ImA9WxJREUU.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-4172306910920171863</id><published>2009-05-12T20:17:00.000-07:00</published><updated>2009-05-12T20:34:58.012-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-12T20:34:58.012-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="санфранциско" /><title>Новости нашего городка</title><content type="html">&lt;blockquote&gt;&lt;strong&gt;16:20 PDT РИЧМОНД&lt;/strong&gt; — Подозреваемый в убийстве 21-летнего мужчины был арестован после того, как он позвонил в службу спасения, повредив колено во время бегства с места преступления. &lt;cite&gt;
&lt;a href="http://www.sfgate.com/cgi-bin/article/comments/view?f=/c/a/2009/05/12/BAJM17J2CC.DTL"&gt;SFGate&lt;/a&gt; &lt;/cite&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-4172306910920171863?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/iQwlXv29wSU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=4172306910920171863" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4172306910920171863?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4172306910920171863?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/05/blog-post.html" title="Новости нашего городка" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;C04ESXg8cSp7ImA9WxVaFkQ.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-198260425731791149</id><published>2009-04-13T23:40:00.004-07:00</published><updated>2009-04-13T23:51:48.679-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-13T23:51:48.679-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="#rus" /><category scheme="http://www.blogger.com/atom/ns#" term="kindle" /><category scheme="http://www.blogger.com/atom/ns#" term="книги" /><title>Kindle 2</title><content type="html">&lt;p&gt;Только что купил себе &lt;a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI"&gt;Kindle 2&lt;/a&gt;, должны на этой неделе доставить. Решающим фактором для меня оказалась книга Адама Смита &lt;span style="font-style:italic;"&gt;The Wealth of Nations&lt;/span&gt;, которую я купил несколько дней назад. Во-первых, книга толстая — ни в поезде, ни в кровати её толком не почитаешь. Во-вторых, текст напечатан мелким шрифтом на очень сильно переработанной бумаге, что сводит на нет весь комфорт чтения. Ну и цена: 15 долларов за печатное издание против 80 центов за электронную версию (с большим, хорошим шрифтом и на приятном глазу экране).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-198260425731791149?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/I1eBny7La40" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=198260425731791149" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/198260425731791149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/198260425731791149?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/04/kindle-2.html" title="Kindle 2" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DEMDQ3c9eCp7ImA9WxVaEE0.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-5742814053330828231</id><published>2009-04-06T01:05:00.004-07:00</published><updated>2009-04-06T01:27:52.960-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-06T01:27:52.960-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="видео" /><category scheme="http://www.blogger.com/atom/ns#" term="#rus" /><category scheme="http://www.blogger.com/atom/ns#" term="pycon" /><title>Видео: A Whirlwind Excursion through Writing a C Extension</title><content type="html">&lt;p&gt;Команда, которая снимала ПайКон в этом году, выложила приличное количество видео-записей по адресу &lt;a href="http://pycon.blip.tv/"&gt;http://pycon.blip.tv&lt;/a&gt;. Звук и видео очень даже приличные, я сам планирую посмотреть в ближайшее время те доклады, что пропустил на самой конференции.&lt;/p&gt;&lt;p&gt;И ещё раз хочу посоветовать всем, кто интересуется программированием самого языка, замечательный доклад Нэда Батчелдера &lt;a href="http://tinyurl.com/whirlext"&gt;A Whirlwind Excursion through Writing a C Extension&lt;/a&gt;, который рассказывает о Python-C API. Это именно тот инструментарий, который вы будете использовать если вдруг захотите написать расширение к Питону, какой-нибудь нативный модуль или просто внести свой вклад в развитие языка.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;script type="text/javascript" src="http://blip.tv/scripts/pokkariPlayer.js?ver=2008010901"&gt;&lt;/script&gt;     &lt;script type="text/javascript" src="http://blip.tv/syndication/write_player?skin=js&amp;amp;posts_id=1967116&amp;amp;source=3&amp;amp;autoplay=true&amp;amp;file_type=flv&amp;amp;player_width=&amp;amp;player_height="&gt;&lt;/script&gt;     &lt;div id="blip_movie_content_1967116"&gt;     &lt;a rel="enclosure" href="http://blip.tv/file/get/Pycon-AWhirlwindExcursionThroughWritingACExtension330.flv" onclick="play_blip_movie_1967116(); return false;"&gt;&lt;img title="Click to play" alt="Video thumbnail. Click to play" src="http://blip.tv/file/get/Pycon-AWhirlwindExcursionThroughWritingACExtension330.flv.jpg" border="0" /&gt;&lt;/a&gt;  
  &lt;a rel="enclosure" href="http://blip.tv/file/get/Pycon-AWhirlwindExcursionThroughWritingACExtension330.flv" onclick="play_blip_movie_1967116(); return false;"&gt;Click To Play&lt;/a&gt;     &lt;/div&gt;          &lt;/center&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-5742814053330828231?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/c6hVbdI_b5o" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=5742814053330828231" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/5742814053330828231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/5742814053330828231?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/04/whirlwind-excursion-through-writing-c.html" title="Видео: A Whirlwind Excursion through Writing a C Extension" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkMMQnk6eip7ImA9WxVaEE0.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-4987025725717457849</id><published>2009-04-06T00:44:00.004-07:00</published><updated>2009-04-06T00:54:43.712-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-06T00:54:43.712-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="кино" /><title>Кино</title><content type="html">За, уже прошедшие, выходные я посмотрел четыре фильма:&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.imdb.com/title/tt1068680/"&gt;Yes Man&lt;/a&gt; (2008) — фильм хороший, но не более того.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imdb.com/title/tt0177858/"&gt;Im Juli&lt;/a&gt; (2000) — это уже второй фильм Фатиха Акина (а всего у него я смотрел целых два фильма), от которого я в полнейшем восторге. Первым был &lt;a href="http://www.imdb.com/title/tt0347048/"&gt;Gegen die Wand&lt;/a&gt; (2004).&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imdb.com/title/tt0892782/"&gt;Monsters vs. Aliens 3D&lt;/a&gt; (2009) — я первый раз в своей жизни смотрел кино в 3D очках и могу сказать, что технология классная. А вот мультфильм совершенно не понравился.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imdb.com/title/tt0037988/"&gt;The Picture of Dorian Gray&lt;/a&gt; (1945) — не смотря на то, что я большой поклонник романа (хотя возможно это было причиной), фильм мне не понравился.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-4987025725717457849?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/_OEAygka81w" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=4987025725717457849" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4987025725717457849?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4987025725717457849?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/04/blog-post.html" title="Кино" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkAFSXg-fyp7ImA9WxVbE0U.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-4884072205423945113</id><published>2009-03-29T08:02:00.007-07:00</published><updated>2009-03-29T20:45:18.657-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-29T20:45:18.657-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="#rus" /><category scheme="http://www.blogger.com/atom/ns#" term="pycon" /><category scheme="http://www.blogger.com/atom/ns#" term="конференция" /><title>PyCon '09</title><content type="html">&lt;p&gt;Сегодня завершился третий и заключительный день конференции &lt;a href="http://us.pycon.org/"&gt;ПайКон&lt;/a&gt; '09, которая в этом году проходит в городке &lt;a href="http://maps.google.com/maps?client=safari&amp;amp;oe=UTF-8&amp;amp;ie=UTF8&amp;amp;cid=0,0,2196016276445250745&amp;amp;fb=1&amp;amp;split=1&amp;amp;gl=us&amp;amp;dq=hyatt+rosemont+illinois&amp;amp;daddr=6350+N+River+Road,+Rosemont,+IL+60018&amp;amp;geocode=3022605861995096927,41.990850,-87.859966&amp;amp;ei=WDbQScHGJajmnQeV_-nHCQ&amp;amp;ll=41.989784,-87.860112&amp;amp;spn=0.010893,0.017638&amp;amp;t=h&amp;amp;z=16"&gt;Роузмонт&lt;/a&gt;, что рядом с Чикаго. За эти дни было сделано немало интересных докладов, два кейноута и большое количество мини-презентации на различные тематики, в большинстве своем, так или иначе относящиеся к Питону.&lt;/p&gt;&lt;p&gt;Лучшим был доклад &lt;a href="http://nedbatchelder.com/"&gt;Нэда Бэтчелдера&lt;/a&gt; о том, как программировать расширения к Питону на языке Си. За 45 минут, со скоростью и уверенностью хорошего лектора, Нэд рассказал о том, как написаны модули языка изнутри, показал примеры создания собственных нативных функций и типов данных, а также предупредил о некоторых ловушках, которые могут встретиться по мере написания своего расширения.&lt;/p&gt;&lt;p&gt;И как оказалось, на этом — более низком уровне — нет ничего сложного. Но, несмотря на то, что код хорошо спроектирован и задокументирован, при написании расширения стоит быть внимательным, потому как Си по прежнему Си: нужно следить за утечками памяти, перехватывать неверные данные и инициализировать исключения (исключений в Си нет, поэтому при неверных данных нужно зарегистрировать исключение и вернуть NULL; в любом другом случае NULL возвращать нельзя), и т. д. Таким образом, на этом уровне нам предстоит выполнять все действия, что этажом выше делают за нас, вручную.&lt;/p&gt;&lt;p&gt;Нэд опубликовал свои слайды и описание к ним у себя на сайте: &lt;a href="http://nedbatchelder.com/text/whirlext.html"&gt;A Whirlwind Excursion through Python C Extensions&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;После этого доклада мне снова захотелось поучаствовать в разработке Питона, а потому презентация &lt;a href="http://sayspy.blogspot.com/"&gt;Брэта Кеннона&lt;/a&gt; пришлась как раз кстати. Брэт, один из основных разработчиков языка, рассказал о том, как текущая команда и небольшая армия помощников улучшают Питон и как мы можем вступить в их ряды.&lt;/p&gt;&lt;p&gt;Всё это весьма интересно, но тут есть один нюанс. Я ни разу не натыкался на живой баг в Питоне, а те, что описаны в &lt;a href="http://bugs.python.org/"&gt;багтрекере&lt;/a&gt; либо относятся к совсем уж редко используемым модулям, либо к каким-нибудь нестандартным архитектурам. По поводу добавления функционала особо светлых идей у меня тоже нет, поэтому в один из перерывов я спросил у Брэта с чего можно начать. Как оказалось, улучшения требуют автоматические тесты и именно это может стать стартовой точкой для тех, кто хочет помочь, но не знает как. Конечно, написание и улучшение тестов не самая интересная задача на свете, но зато в процессе можно более глубоко понять Питон изнутри.&lt;/p&gt;&lt;p&gt;На конференции также было два кейноута: один от автора языка, &lt;a href="http://python.org/~guido/"&gt;Гвидо ван Россума&lt;/a&gt;, а второй от основателей &lt;a href="http://reddit.com/"&gt;Реддита&lt;/a&gt;. Последний был посвящен переходу от Лиспа к Питону, всяким интересным техническим деталям и шуткам.&lt;/p&gt;&lt;p&gt;Что касается Гвидо, то он говорил на разные темы: про твиттер, пути развития языка, основной команде и, конечно же, программистах. Он посоветовал не сильно беспокоиться по поводу популярности других языков и состояния мировой экономики, потому что “&lt;a href="http://search.twitter.com/search?q=too+smart+to+fail+pycon"&gt;you are too smart to fail&lt;/a&gt;”. Относительно самого языка, &lt;a href="http://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B4%D1%83%D1%88%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B6%D0%B8%D0%B7%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B8%D0%BA%D1%82%D0%B0%D1%82%D0%BE%D1%80"&gt;Великодушный Диктатор&lt;/a&gt; призвал перестать подкручивать сам язык и сфокусироваться на проблемах вокруг него.&lt;/p&gt;&lt;p&gt;Кстати, на семинаре посвященном различным имплементациям Питона, я узнал об одном проекте, разрабатываемым инженерами из Гугла. Называется проект &lt;a href="http://code.google.com/p/unladen-swallow/"&gt;Unladen Swallow&lt;/a&gt; и цель у них — написать значительно более быструю версию CPython, а после влить изменения в основную ветку. Они также планируют заменить виртуальную машину Питона на JIT построенный на базе LLVM.&lt;/p&gt;&lt;p&gt;Были также доклады не совсем относящиеся к Питону, как например великолепный обзор текущего состояния рынка не-реляционных баз данных. &lt;a href="http://bob.pythonmac.org/"&gt;Боб Ипполито&lt;/a&gt; рассказал об основных алгоритмах, которые используют у себя такие гиганты интернетов, как Гугл, Амазон, Фейсбук так далее. Разработки у них очень интересные, но в большинстве случаев (&lt;a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf"&gt;Dynamo/Амазон&lt;/a&gt; и &lt;a href="http://labs.google.com/papers/bigtable.html"&gt;BigTable/Гугл&lt;/a&gt;) проприетарные и их невозможно использовать за пределами компании. Другое дело Фейсбук: их &lt;a href="http://incubator.apache.org/cassandra/"&gt;Cassandra&lt;/a&gt; это вполне себе открытый проект. У всех этих проектов есть один общий недостаток: они заточены под инфраструктуру компании, в которой разрабатывались. В общем, рынок пока молодой, программы либо заточены под конкретные нужды, либо пока ещё не стабильны.&lt;/p&gt;&lt;p&gt;Это та небольшая часть докладов, о которой у меня сейчас есть время рассказать. ПайКон — отличная конференция, с огромным количеством интересных людей, проектов и тем для обсуждений, которые я не смогу полностью описать. Но все кейноуты, доклады и мини-презентации были записаны на видео и через некоторое время их выложат в сеть. Как только это случится (и мне станет об этом известно), я дам ссылки на видео и, по возможности, сопровожу их кратким описанием.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-4884072205423945113?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/_rOWzZuKbEw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=4884072205423945113" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4884072205423945113?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/4884072205423945113?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/03/pycon-09.html" title="PyCon '09" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DE4HRHk4fCp7ImA9WxVUEUo.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-1357166952629327119</id><published>2009-03-15T21:12:00.002-07:00</published><updated>2009-03-15T21:15:35.734-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-15T21:15:35.734-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="chucktaylor" /><category scheme="http://www.blogger.com/atom/ns#" term="photos" /><category scheme="http://www.blogger.com/atom/ns#" term="converse" /><title>Flickr album update: Converse / Chuck Taylor</title><content type="html">&lt;a href="http://www.flickr.com/photos/antonkovalyov/3358252113/" title="Converse / Chuck Taylor by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3427/3358252113_2a0e6f006f.jpg" width="500" height="375" alt="Converse / Chuck Taylor" /&gt;&lt;/a&gt;
&lt;small&gt;&amp;copy; Anton Kovalyov. License: &lt;a href="http://creativecommons.org/licenses/by-nc-sa/3.0/"&gt;by-nc-sa&lt;/a&gt;&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-1357166952629327119?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/F2od2zmBWgs" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=1357166952629327119" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/1357166952629327119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/1357166952629327119?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2009/03/flickr-album-update-converse-chuck.html" title="Flickr album update: Converse / Chuck Taylor" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkMEQ3Y-fyp7ImA9WxRaGE4.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-6346019074364468707</id><published>2008-12-20T18:58:00.004-08:00</published><updated>2008-12-20T20:40:02.857-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-20T20:40:02.857-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="art" /><category scheme="http://www.blogger.com/atom/ns#" term="sanfrancisco" /><category scheme="http://www.blogger.com/atom/ns#" term="sfmoma" /><title>Modern art</title><content type="html">Imagine that you don't understand modern art. I mean, what if all those abstract pictures and installations are completely meaningless to you. No, honestly, imagine that this circle is just a circle and not the answer to the ultimate question about life, the universe and everything. You see, that is how I feel every time I see a trash can filled with variegated stones. Because, usually, for me it is a can with stones and for everybody else it is a message about humanity.

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3123435435/" title="IMG_0216 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3221/3123435435_d14a256899.jpg" width="500" height="375" alt="IMG_0216" /&gt;&lt;/a&gt;

But I was wrong. I mean, a &lt;a href="http://flickr.com/photos/antonkovalyov/3124261678/"&gt;room with sand&lt;/a&gt; is still a room with sand. Nothing to do with that, I am not enlightened. I was wrong about modern art in general.

I realized that today while visiting &lt;a href="http://www.sfmoma.org/"&gt;San Francisco Museum of Modern Art&lt;/a&gt;. There I made a very interesting observation (which most of you may call self-evident). And it goes like this: modern art is not just meaningless installations or weird videos. It is also beautiful and useful things, &lt;a href="http://flickr.com/photos/antonkovalyov/3124262572/"&gt;social analysis&lt;/a&gt; and even science.

Yes, perhaps your laptop (or bicycle, or even your graduate work) is also a piece of modern art. They have Apple Cube and iPhone in the industrial design section. They have a picture of bacillus in spoiled milk in the microscopes section. And I am not telling you about telescopes section which is totally great.

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3123434597/" title="IMG_0187 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3075/3123434597_7246e931f0.jpg" width="500" height="375" alt="IMG_0187" /&gt;&lt;/a&gt;

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3123433869/" title="IMG_0169 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3082/3123433869_dcb7de2834.jpg" width="500" height="377" alt="IMG_0169" /&gt;&lt;/a&gt;

Of course there are still a lot of pretty but useless pictures and installations. Don't get me wrong, you can have it on your wall but you can't ask it to make a sandwich.

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3124261402/" title="IMG_0185 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3290/3124261402_c55a49fb8d.jpg" width="500" height="375" alt="IMG_0185" /&gt;&lt;/a&gt;

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3124260808/" title="IMG_0175 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3112/3124260808_c17613d9f8.jpg" width="500" height="375" alt="IMG_0175" /&gt;&lt;/a&gt;

Also, SFMOMA has a pricey shop on the first floor which reminded me that ordinary things can be beautiful. And even more, ordinary things must be beautiful.

That's all. Now, to advertise my own photo album at flickr, I am going to say that there is &lt;a href="http://flickr.com/photos/antonkovalyov/sets/72157611393220931/"&gt;a set with photographs from the museum&lt;/a&gt; and you really should check it out. Okay, done.

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3123435211/" title="IMG_0205 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3123/3123435211_2e7ba399b6.jpg" width="500" height="375" alt="IMG_0205" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-6346019074364468707?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/mGOS8EFXnD8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=6346019074364468707" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6346019074364468707?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/6346019074364468707?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2008/12/modern-art.html" title="Modern art" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0MGQno9cSp7ImA9WxRaE0w.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-2251224964173179938</id><published>2008-12-14T21:02:00.004-08:00</published><updated>2008-12-14T21:37:03.469-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-14T21:37:03.469-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="notes" /><category scheme="http://www.blogger.com/atom/ns#" term="sanfrancisco" /><title>Sculptures</title><content type="html">San Francisco has a lot of nice sculptures. Like this one which is located across the street from the Golden Gate University:

&lt;a href="http://www.flickr.com/photos/antonkovalyov/3109746958/" title="IMG_0089 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3012/3109746958_22aea611f9.jpg" width="500" height="375" alt="IMG_0089" /&gt;&lt;/a&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;And its neighbors (click to enlarge):&lt;/div&gt;
&lt;a href="http://www.flickr.com/photos/antonkovalyov/3108916061/" title="IMG_0087 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3222/3108916061_43b605f869_t.jpg" width="75" height="100" alt="IMG_0087" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/antonkovalyov/3109746424/" title="IMG_0086 by anton.kovalyov, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3171/3109746424_a401b0b4a7_t.jpg" width="75" height="100" alt="IMG_0086" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-2251224964173179938?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/qdzDdo6MnEw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=2251224964173179938" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2251224964173179938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/2251224964173179938?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2008/12/sculptures.html" title="Sculptures" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DUIDRH47cCp7ImA9WxRaEU8.&quot;"><id>tag:blogger.com,1999:blog-1608178059741070544.post-5937052460479116957</id><published>2008-12-12T12:43:00.004-08:00</published><updated>2008-12-12T16:19:35.008-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-12T16:19:35.008-08:00</app:edited><title>iCon</title><content type="html">So I read the &lt;a href="http://www.amazon.com/iCon-Steve-Jobs-Greatest-Business/dp/0471720836"&gt;iCon by Simon and Young&lt;/a&gt;. The book is nice although not terribly interesting and sometimes even boring. But don't take my word for it because I don't really like biographies.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;And I also found a great quote there that is still relevant:
&lt;blockquote&gt;“The rewarding things isn't merely to start a company or to take it public. It's like when you're a parent. Although the birth experience is a miracle, what's truly rewarding is living with your child and helping him grow up. The problem with the Internet start-up craze isn't that too many people are starting companies; it's that too many people aren't sticking with it. That's somewhat understandable, because there are many moments filled with despair and agony, when you have to fire people and cancel things and deal with very difficult situations. That's when you find out who you are and what your values are.” —Steve Jobs&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1608178059741070544-5937052460479116957?l=antonkovalyov.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antonkovalyov/~4/2UhgXmgd4LA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1608178059741070544&amp;postID=5937052460479116957" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/5937052460479116957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1608178059741070544/posts/default/5937052460479116957?v=2" /><link rel="alternate" type="text/html" href="http://antonkovalyov.com/2008/12/icon.html" title="iCon" /><author><name>Anton Kovalyov</name><uri>http://www.blogger.com/profile/04077650895808456390</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04635351101460631245" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
