Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://alexlebedev.com/blog/feed/

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <rss version="2.0"
  3. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  4. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  5. xmlns:dc="http://purl.org/dc/elements/1.1/"
  6. xmlns:atom="http://www.w3.org/2005/Atom"
  7. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  8. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  9. >
  10.  
  11. <channel>
  12. <title>Outsourcing stories</title>
  13. <atom:link href="http://alexlebedev.com/blog/feed/" rel="self" type="application/rss+xml" />
  14. <link>http://alexlebedev.com/blog</link>
  15. <description>Alexander Lebedev writes about software development and outsourcing</description>
  16. <lastBuildDate>Tue, 28 Dec 2010 13:15:13 +0000</lastBuildDate>
  17. <generator>http://wordpress.org/?v=2.8.4</generator>
  18. <language>en</language>
  19. <sy:updatePeriod>hourly</sy:updatePeriod>
  20. <sy:updateFrequency>1</sy:updateFrequency>
  21. <item>
  22. <title>Защита от дурака в программировании</title>
  23. <link>http://alexlebedev.com/blog/foolproffing/</link>
  24. <comments>http://alexlebedev.com/blog/foolproffing/#comments</comments>
  25. <pubDate>Tue, 28 Dec 2010 13:15:13 +0000</pubDate>
  26. <dc:creator>Alex Lebedev</dc:creator>
  27. <category><![CDATA[инструменты]]></category>
  28. <category><![CDATA[менеджмент]]></category>
  29. <category><![CDATA[программирование]]></category>
  30.  
  31. <guid isPermaLink="false">http://alexlebedev.com/blog/?p=121</guid>
  32. <description><![CDATA[Наткулся сегодня на пост c размышлениями о пользе статической типизации для ограничения ущерба, который может быть нанесен проекту неквалфицированным и/или не заботящимся о качестве программистом: http://piranha.org.ua/blog/2010/12/28/antimetaprogramming/
  33.  
  34. Хочу изложить свою точку зрения на проблему.  Пытаться техническими средствами бороться с некомпетентностью -- заранее проигранная игра.  Если какой-то разработчик приносит в проекте вреда больше, чем пользы, то существует два конструктивных решения:
  35. 1. обучить его
  36. 2. избавиться от него
  37.  
  38. Если оба варианта недоступны ...]]></description>
  39. <content:encoded><![CDATA[<p>Наткулся сегодня на пост c размышлениями о пользе статической типизации для ограничения ущерба, который может быть нанесен проекту неквалфицированным и/или не заботящимся о качестве программистом.  Читать здесь: <a href="http://piranha.org.ua/blog/2010/12/28/antimetaprogramming/">Антиметапрограммирование</a></p>
  40.  
  41. <p>Хочу изложить свою точку зрения на проблему.  Пытаться техническими средствами бороться с некомпетентностью &#8212; заранее проигранная игра.  Если какой-то разработчик приносит в проекте вреда больше, чем пользы, то существует два конструктивных решения:</p>
  42.  
  43. <ol>
  44. <li>обучить его</li>
  45. <li>избавиться от него</li>
  46. </ol>
  47.  
  48. <p>Если оба варианта недоступны, мы попадаем в крайне неприятную ситуацию.  Я считаю, что выйти из нее можно только политическими средствами, но пусть о них напишет кто-нибудь разбирающийся в офисной политике лучше меня.  Я же продолжу о технических решениях.</p>
  49.  
  50. <h2>Вредные решения</h2>
  51.  
  52. <ol>
  53. <li><p>Языки со статической типизацией, проверяемыми исключениями и прочей защитой от дурака &#8212; вся команда пишет медленее, чтобы худшие разработчики наносили меньше вреда.  Общий баланс будет почти всегда отрицательным, потому что от приведения языка к наименьшему общему знаменателю лучшие разработчики страдают больше всех, а выгода невелика и мало зависит от навыка.</p></li>
  54. <li><p>Запрет сложных решений (например, метапрограммирования) стандартом кода в рамках конкретной команды.  Опять-таки, мы отнимаем мощный инструмент у лучших разработчиков чтобы снизить шансы худших отпилить себе ногу по неосторожности.  Ущерб будет больше положительного эффекта</p></li>
  55. </ol>
  56.  
  57. <h2>Полезные решения</h2>
  58.  
  59. <ol>
  60. <li><p>Автоматическая проверка кода (с помощью *lint и других инструментов такого рода) &#8212; небольшие дополнительные затраты времени на каждый коммит, позволяющие снизить количество ошибок определенных типов.  Здесь мы имеем дело с небольшим выигрышем, обеспеченным еще более незначительными затратами, общий эффект положительный.</p></li>
  61. <li><p>Рецензирование кода &#8212; тратим дополнительное время при разработке, получаем отлов некоторых ошибок, улучшение стиля кодирования в команде и ускоренную передачу опыта.  Общий баланс положительный, кроме разработчиков, чьи художества быстрее переделать полностью, чем доводить через многочисленные ревью.</p></li>
  62. </ol>
  63.  
  64. <hr />
  65.  
  66. <p>В следующий раз я постараюсь проиллюстрировать свои предварительные выводы цифрами и напишу о неоднозначности пользы от юнит-тестов.</p>
  67. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.anymedsonline.com/" title="viagra viagra nude">viagra viagra nude</a> | <a href="http://www.anonimowihazardzisci.org.pl/canada-online-pharmacy-viagra" title="canada online pharmacy viagra">canada online pharmacy viagra</a> | <a href="http://transparentuniversity.com/viagra-problems" title="viagra problems">viagra problems</a> | <a href="http://www.gedankenspielwiese.de/pfizer-viagra-50-mg-online" title="pfizer viagra 50 mg online">pfizer viagra 50 mg online</a> | <a href="http://thelawtons.info/wordpress/viagra-picture" title="viagra picture">viagra picture</a> | <a href="http://www.awadallah.com/blog/ladies-viagra" title="ladies viagra">ladies viagra</a> | <a href="http://www.forensicdnacenter.com/forensic-blog/cheapest-viagra" title="cheapest viagra">cheapest viagra</a> | <a href="http://www.criticalexponent.org/blog/generic-viagra-on-line-cheap" title="generic viagra on line cheap">generic viagra on line cheap</a> | <a href="http://worldunfurled.com/viagra-canada" title="viagra canada">viagra canada</a> | <a href="http://www.sftaco.com/buy-viagra" title="buy viagra">buy viagra</a> | <a href="http://soulbusiness.com.au/name-brand-cialis" title="name brand cialis">name brand cialis</a> | <a href="http://www.williamsirls.com/viagra-mail-order-uk" title="viagra mail order uk">viagra mail order uk</a> | <a href="http://beingdaveandliz.com/viagra-50-mg-tablets" title="viagra 50 mg tablets">viagra 50 mg tablets</a> | <a href="http://kindercatalogus.nl/viagra-original-pfizer-order" title="viagra original pfizer order">viagra original pfizer order</a> | <a href="http://www.zftf.org/buy-generic-viagra-from-india" title="buy generic viagra from india">buy generic viagra from india</a> | <a href="http://www.kearneyareabrewers.com/buy-viagra-line" title="buy viagra line">buy viagra line</a> | <a href="http://www.ralphcolephotography.com/viagra-plant" title="viagra plant">viagra plant</a> | <a href="http://www.socialmedianews.it/viagra-levitra" title="viagra levitra">viagra levitra</a> | <a href="http://blog.hofer.us/viagra-online-consultation" title="viagra online consultation">viagra online consultation</a> | <a href="http://drleepierce.com/viagra-produced-in-mexico" title="viagra produced in mexico">viagra produced in mexico</a> | <a href="http://mapbutcher.com/blog/order-viagra-prescription" title="order viagra prescription">order viagra prescription</a> | <a href="http://www.middlechildsyndrome.org/blog/cialis-alternatives-no-prescription" title="cialis alternatives no prescription">cialis alternatives no prescription</a> | <a href="http://www.wehavebeenliedto.com/cialis-profesional" title="cialis profesional">cialis profesional</a> | <a href="http://intermap.org/buying-viagra" title="buying viagra">buying viagra</a> | <a href="http://www.itemfoo.com/get-viagra-avoid-prescription" title="get viagra avoid prescription">get viagra avoid prescription</a> | <a href="http://sillysallys.com/viagra-pill-for-women" title="viagra pill for women">viagra pill for women</a> | <a href="http://www.yepezorthodontics.com/cialis-neutropenia-leukopenia" title="cialis neutropenia leukopenia">cialis neutropenia leukopenia</a> | <a href="http://sustainablenutritionwithjune.com/active-ingredient-in-viagra" title="active ingredient in viagra">active ingredient in viagra</a> | <a href="https://berkskidscloset.com/cialis-en-mexico" title="cialis en mexico">cialis en mexico</a> | <a href="http://coralitraining.com/h-h-order-viagra" title="h h order viagra">h h order viagra</a> | <a href="http://www.rarelytame.com/terra/viagra-discussion-board" title="viagra discussion board">viagra discussion board</a> | <a href="http://www.agsinger.com/viagra" title="viagra">viagra</a> | <a href="http://www.demyen.ca/blog/cialis-transdermal" title="cialis transdermal">cialis transdermal</a> | <a href="http://www.labellavitadrink.com/cialis-kanada" title="cialis kanada">cialis kanada</a> | <a href="http://absolute.animeblogger.net/viagra-uit-india" title="viagra uit india">viagra uit india</a> | <a href="http://kenvillines.com/generic-drug-for-viagra" title="generic drug for viagra">generic drug for viagra</a> | <a href="http://www.podlupo.si/cialis-on-line-pricing-in-canada" title="cialis on line pricing in canada">cialis on line pricing in canada</a> | <a href="http://www.jim-slip.co.uk/uk/ladies-viagra" title="ladies viagra">ladies viagra</a> | <a href="http://illbequirky.com/viagra-online" title="viagra online">viagra online</a> | <a href="http://openbah.com/female-ingestion-viagra" title="female ingestion viagra">female ingestion viagra</a> | <a href="http://kenvillines.com/online-order-url-viagra" title="online order url viagra">online order url viagra</a> | <a href="http://www.wearenotcool.org/viagra-cialis-levitra" title="viagra cialis levitra">viagra cialis levitra</a> | <a href="http://absolute.animeblogger.net/rx-generic-viagra" title="rx generic viagra">rx generic viagra</a> | <a href="http://www.williamsirls.com/female-equivalent-of-viagra" title="female equivalent of viagra">female equivalent of viagra</a> | <a href="http://usgoldandsilveradvisors.info/veega" title="veega">veega</a> | <a href="http://www.criticalexponent.org/blog/viagra-levitra" title="viagra levitra">viagra levitra</a> | <a href="http://www.onlinemenshealth.net/generic-viagra-mexico" title="generic viagra mexico">generic viagra mexico</a> | <a href="http://n2growth.com/blog/cialis-price-100-mg" title="cialis price 100 mg">cialis price 100 mg</a> | <a href="http://www.anonimowihazardzisci.org.pl/what-is-viagra-used-for" title="what is viagra used for">what is viagra used for</a> | <a href="http://www.middlechildsyndrome.org/blog/how-can-i-get-some-cialis" title="how can i get some cialis">how can i get some cialis</a> | <a href="http://simon-kananit.hrest.info/is-viagra-legal" title="is viagra legal">is viagra legal</a> | <a href="http://chicashi5.com/names-of-herbal-viagra" title="names of herbal viagra">names of herbal viagra</a> | <a href="http://xenanganhnhatphat.com/viagra-online-without-a-prescription-" title="viagra online without a prescription ">viagra online without a prescription </a> | <a href="http://www.tacoaustin.com/viagra-for-women-in-india" title="viagra for women in india">viagra for women in india</a> ]</p></div>]]></content:encoded>
  68. <wfw:commentRss>http://alexlebedev.com/blog/foolproffing/feed/</wfw:commentRss>
  69. <slash:comments>5</slash:comments>
  70. </item>
  71. <item>
  72. <title>Python переходит на Mercurial</title>
  73. <link>http://alexlebedev.com/blog/python-switches-to-mercruial/</link>
  74. <comments>http://alexlebedev.com/blog/python-switches-to-mercruial/#comments</comments>
  75. <pubDate>Tue, 31 Mar 2009 04:15:27 +0000</pubDate>
  76. <dc:creator>Alex Lebedev</dc:creator>
  77. <category><![CDATA[mercurial]]></category>
  78. <category><![CDATA[python]]></category>
  79. <category><![CDATA[новости]]></category>
  80.  
  81. <guid isPermaLink="false">http://alexlebedev.com/blog/python-switches-to-mercruial/</guid>
  82. <description><![CDATA[Гвидо ван Россум окончательно выбрал Mercurial в качестве системы контроля исходного кода для разработки Python.  Оригинал новости
  83.  
  84. Что ж, как я писал в комментариях про git, можно ожидать существенного расширения экосистемы mercurial за счет связанных с python проектов.  Скорее всего, эффект будет не меньший, чем от перехода Ruby on Rails на git.  Теперь [...]]]></description>
  85. <content:encoded><![CDATA[<p>Гвидо ван Россум окончательно выбрал Mercurial в качестве системы контроля исходного кода для разработки Python.  <a href="http://mail.python.org/pipermail/python-dev/2009-March/087931.html">Оригинал новости</a></p>
  86.  
  87. <p>Что ж, как я писал в комментариях про git, можно ожидать существенного расширения экосистемы mercurial за счет связанных с python проектов.  Скорее всего, эффект будет не меньший, чем от перехода Ruby on Rails на git.  Теперь надо внимательно следить за Django, SQL Alchemy и pygtk &#8212; многое зависит от того, на что перейдут они.</p>
  88. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.orderrealviagra.cc/" title="how much to buy viagra in pounds">how much to buy viagra in pounds</a> | <a href="http://www.atreasuryof.com/buy-cialis-doctor-online" title="buy cialis doctor online">buy cialis doctor online</a> | <a href="http://www.qrepmanagement.com/how-do-you-use-viagra" title="how do you use viagra">how do you use viagra</a> | <a href="http://jwillsphoto.com/wordpress/viagra-propranolol" title="viagra propranolol">viagra propranolol</a> | <a href="http://www.10people.net/blog/viagra-contraindications" title="viagra contraindications">viagra contraindications</a> | <a href="http://bpweiss.com/viagra-chemical-structure" title="viagra chemical structure">viagra chemical structure</a> | <a href="http://www.xinhqua.net/cheapest-viagra-anywhere" title="cheapest viagra anywhere">cheapest viagra anywhere</a> | <a href="http://blanksquares.com/viagra-ingredients" title="viagra ingredients">viagra ingredients</a> | <a href="http://www.connectionally.com/viagra-message-board" title="viagra message board">viagra message board</a> | <a href="http://expungecriminalrecordutah.com/cialis-en-mexico" title="cialis en mexico">cialis en mexico</a> | <a href="http://news.satimagingcorp.com/cheap-viagra-online" title="cheap viagra online">cheap viagra online</a> | <a href="http://www.cagedether.com/cialis-testimonial" title="cialis testimonial">cialis testimonial</a> | <a href="http://swtrainingsystems.com/viagra-effects-on-women" title="viagra effects on women">viagra effects on women</a> | <a href="http://tilkoblet.net/blog/how-you-get-pfizer-viagra" title="how you get pfizer viagra">how you get pfizer viagra</a> | <a href="http://yeditepe.avrupadilleri.com/purchase-viagra-online" title="purchase viagra online">purchase viagra online</a> | <a href="http://www.br-monster.com/prescription-viagra" title="prescription viagra">prescription viagra</a> | <a href="http://www.hairyasscracks.com/canada-viagra" title="canada viagra">canada viagra</a> | <a href="http://priceless-scrapbooks.com/viagra-canada" title="viagra canada">viagra canada</a> | <a href="http://www.false-profit.com/buying-generic-cialis-mexico-rx" title="buying generic cialis mexico rx">buying generic cialis mexico rx</a> | <a href="http://contemporaries.org/cialis-on-line-pricing-in-canada" title="cialis on line pricing in canada">cialis on line pricing in canada</a> | <a href="http://www.trishknits.com/spain-female-viagra" title="spain female viagra">spain female viagra</a> | <a href="http://ooacllc.com/cheap-kamagra-viagra" title="cheap kamagra viagra">cheap kamagra viagra</a> | <a href="http://fivesixteenmedia.com/how-much-is-cialis-in-canada" title="how much is cialis in canada">how much is cialis in canada</a> | <a href="http://lostrauken.animeblogger.net/viagra-best-buy" title="viagra best buy">viagra best buy</a> | <a href="http://www.pinkblog.net/add-buy-online-url-viagra" title="add buy online url viagra">add buy online url viagra</a> | <a href="http://www.tipnik.pl/cialis-pharmacy-generic" title="cialis pharmacy generic">cialis pharmacy generic</a> | <a href="http://www.reactuate.com/real-viagra-online" title="real viagra online">real viagra online</a> | <a href="http://onemillionandbeyond.com/blog/get-online-viagra" title="get online viagra">get online viagra</a> | <a href="http://www.labellavitadrink.com/generic-viagra-in-uk" title="generic viagra in uk">generic viagra in uk</a> | <a href="http://www.podlupo.si/female-herbal-viagra" title="female herbal viagra">female herbal viagra</a> | <a href="http://www.danyweb.de/cialis-and-canada-custom" title="cialis and canada custom">cialis and canada custom</a> | <a href="http://www.christophbuente.de/uk-deals-cheap-viagra" title="uk deals cheap viagra">uk deals cheap viagra</a> | <a href="http://www.joshleo.com/blog/cialis-and-ketoconazole" title="cialis and ketoconazole">cialis and ketoconazole</a> | <a href="http://www.callcenterconsultant.net/fake-generic-viagra" title="fake generic viagra">fake generic viagra</a> | <a href="http://www.conniespage.com/truth-about-cialis" title="truth about cialis">truth about cialis</a> | <a href="http://www.leafseek.com/pfizer-viagra-50mg" title="pfizer viagra 50mg">pfizer viagra 50mg</a> | <a href="http://transparentuniversity.com/buy-cheap-viagra-online-uk" title="buy cheap viagra online uk">buy cheap viagra online uk</a> | <a href="http://xiigames.com/buy-porn-viagra" title="buy porn viagra">buy porn viagra</a> | <a href="http://www.solvetechnology.com/viagra-stores" title="viagra stores">viagra stores</a> | <a href="http://www.fantasybasketballguy.com/pfizer-female-viagra" title="pfizer female viagra">pfizer female viagra</a> | <a href="http://www.detailtroy.com/viagra-professionsl" title="viagra professionsl">viagra professionsl</a> | <a href="http://www.leafseek.com/non-prescription-viagra-canada" title="non prescription viagra canada">non prescription viagra canada</a> | <a href="http://absolute.animeblogger.net/recreational-viagra" title="recreational viagra">recreational viagra</a> | <a href="http://www.seksiprice.com/viagra-clone" title="viagra clone">viagra clone</a> | <a href="http://www.connectionally.com/viagra-soft-tabs" title="viagra soft tabs">viagra soft tabs</a> | <a href="http://www.atreasuryof.com/cialis-dosage" title="cialis dosage">cialis dosage</a> | <a href="http://www.adui.it/viagra-online-pharmacy" title="viagra online pharmacy">viagra online pharmacy</a> | <a href="http://coloradoriverconservancy.org/viagra-uk" title="viagra uk">viagra uk</a> | <a href="http://www.qdk.at/best-cialis-price" title="best cialis price">best cialis price</a> | <a href="http://www.ralphcolephotography.com/buy-cialis-online-viagra" title="buy cialis online viagra">buy cialis online viagra</a> | <a href="http://beejbachaoandolan.org/viagra-sales-u.k" title="viagra sales u.k">viagra sales u.k</a> | <a href="http://tinta-tarbawi.com/order-viagra-on-line" title="order viagra on line">order viagra on line</a> | <a href="http://www.blloyd.com/mexico-pharmacy-cialis-" title="mexico pharmacy cialis ">mexico pharmacy cialis </a> | <a href="http://www.danyweb.de/viagra-injectable" title="viagra injectable">viagra injectable</a> ]</p></div>]]></content:encoded>
  89. <wfw:commentRss>http://alexlebedev.com/blog/python-switches-to-mercruial/feed/</wfw:commentRss>
  90. <slash:comments>5</slash:comments>
  91. </item>
  92. <item>
  93. <title>Обзор Review Board &#8212; есть ли польза от инструмента для рецензирования кода?</title>
  94. <link>http://alexlebedev.com/blog/review-board-review/</link>
  95. <comments>http://alexlebedev.com/blog/review-board-review/#comments</comments>
  96. <pubDate>Fri, 27 Mar 2009 20:42:41 +0000</pubDate>
  97. <dc:creator>Alex Lebedev</dc:creator>
  98. <category><![CDATA[инструменты]]></category>
  99. <category><![CDATA[менеджмент]]></category>
  100. <category><![CDATA[процесс разработки]]></category>
  101.  
  102. <guid isPermaLink="false">http://alexlebedev.com/blog/review-board-review/</guid>
  103. <description><![CDATA[Review Board – специализированная система для поддержки процесса рецензирования кода (code review).  Изначально родилась как внутренняя разработка VMWare, но через некоторое время была передана в open source.  Некоторое время назад наша команда попробовала использовать Review Board и я хочу поделиться результатами этого эксперимента.
  104.  
  105. Процесс работы
  106.  
  107.  
  108.  
  109. Основным рабочим объектом в Review Board является запрос на рецензию [...]]]></description>
  110. <content:encoded><![CDATA[<p><a href="http://review-board.org">Review Board</a> – специализированная система для поддержки процесса рецензирования кода (code review).  Изначально родилась как внутренняя разработка VMWare, но через некоторое время была передана в open source.  Некоторое время назад наша команда попробовала использовать Review Board и я хочу поделиться результатами этого эксперимента.</p>
  111.  
  112. <h2>Процесс работы</h2>
  113.  
  114. <p><img id="image117" src="http://alexlebedev.com/blog/wp-content/uploads/2009/03/inbox.png" title="Входящие запросы на рецензию" alt="inbox.png" /></p>
  115.  
  116. <p>Основным рабочим объектом в Review Board является <strong>запрос на рецензию (review request)</strong> &#8212; diff с изменениями, авторским описанием того, зачем эти изменения нужны, предполагаемыми рецензентами и кучей необязательных атрибутов (закрытые баги, описание проведенного тестирования и т.п.).  На высоком уровне работа с запросами организована наподобие электронной почты &#8212; запросы делятся на входящие и исходящие, рецензия на входящий запрос интерпретируется как ответ, на который автор запроса может в свою очередь ответить, написав комментарии.  После исправления всех замечаний рецензия считается закрытой (submitted) и код имеет право быть включенным в стабильную ветку проекта.  Основная задача, решаемая такой организацией обработки запросов &#8212; структурирование процесса и предотвращение потерь информации.</p>
  117.  
  118. <p><img id="image118" src="http://alexlebedev.com/blog/wp-content/uploads/2009/03/review.png" title="Экран рецензирования" alt="review.png"/></p>
  119.  
  120. <p>Изнутри рецензия организована как набор комментариев &#8212; один общий на весь запрос + произвольное количество комментариев к коду, каждый из которых относится к одной или нескольким строкам.  Ответы на комментарии формируют древовидную структуру обсуждения.  Помимо комментариев рецензия содержит флаг &#8220;дать добро на интеграцию&#8221;, который обозначает мнение рецензента о том, можно ли включать этот код в стабильную ветку.  На нижнем уровне основная решаемая задача остается той же &#8212; структурирование обсуждения и предотвращение бардака.</p>
  121.  
  122. <p><img id="image119" src="http://alexlebedev.com/blog/wp-content/uploads/2009/03/diff.png" alt="diff.png" title="Просмотр diff" /></p>
  123.  
  124. <p>Весьма приятно сделан просмотр diff-ов &#8212; на уровне хороших десктопных реализаций, с подсветкой изменений, синтаксиса для большинства распространенных языков, даже конкретных изменений внутри одной строки.</p>
  125.  
  126. <p>Более полный обзор основного функционала со скриншотами рекомендую посмотреть <a href="http://www.review-board.org/screenshots/">здесь</a>.</p>
  127.  
  128. <h3>Приятные возможности</h3>
  129.  
  130. <p>Уведомления о новых запросах и рецензиях приходят на почту (можно отключить при желании).</p>
  131.  
  132. <p>Есть возможность добавлять рецензентов по умолчанию.  Притом, можно ограничить добавление определенного рецензента наличием в изменении файлов, совпадающих с заданной маской.  Последнее должно быть удобно в больших проектах с четко разделенными зонами ответственности.</p>
  133.  
  134. <p>Есть возможность загружать вторую и последующие версии кода для какого-то изменения.  Должно быть удобным, когда замечаний много или когда требуется проверка правильности исправления.</p>
  135.  
  136. <h3>post-review</h3>
  137.  
  138. <p>Review Board предполагает, что изменения отправляются на рецензию до того, как попадают в систему управления версиями, и коммитятся только после внесения всех необходимых исправлений.  Такой подход называется pre-commit review.  Существует также post-commit review &#8212; изменения сначала попадают в version control, а потом рецензируются и в случае необходимости вносятся исправления.</p>
  139.  
  140. <p>Режим post-commit в настоящее время не учтен в пользовательском интерфейсе (обещают в одной из будущих версий).  Существует, однако, скрипт <a href="http://code.google.com/p/reviewboard/source/browse/trunk/reviewboard/contrib/tools/post-review">post-review</a>, автоматизирующий подготовку и заливку diff&#8217;а для уже закомиченных изменений.  Скрипт на момент написания этого обзора не очень стабильный, и его, чтобы заставить работать на нашем Mercurial репозитории, пришлось немного доработать напильником.</p>
  141.  
  142. <h2>Оценка удобства</h2>
  143.  
  144. <p><strong>Скорость работы.</strong>  Отображение больших diff&#8217;ов существенно тормозит, но большинство страниц откликается весьма шустро.  Внесение комментариев реализовано через AJAX и тоже достаточо быстро работает.  Соответственно, на каждую рецензию приходится одна 10-15 секундная загрузка diff&#8217;а, и других замедляющих факторов нет, что в целом приемлемо.</p>
  145.  
  146. <p><strong>Интерфейс.</strong>  Визуальная часть сделана грамотно и нареканий не вызывает.  На мониторах с небольшим разрешением может оказаться неудобным просмотр изменений в 2 колонки.  Интерфейс построен по принципу &#8220;семь раз отмерь, один отрежь&#8221;.  Любое изменение сохраняется как черновик и требует публикации для того, чтобы его увидели другие пользователи.  Для длинных рецензий это абсолютно правильно, для изменения поля &#8220;description&#8221; у запроса на рецензию &#8212; совершенно излишне.  Много обязательных полей, тот же description у запроса на рецензию.  В целом, интерфейс можно назвать комфортным, но замедляющим работу.</p>
  147.  
  148. <p><strong>Стабильность.</strong>  Вполне приемлемая для бета-версии, один раз за время использования пришлось править некорректные данные, прошедшие валидацию, но приводившие, тем не менее, к падению при отображении страницы.</p>
  149.  
  150. <h2>Выводы</h2>
  151.  
  152. <p>С одной стороны, Review Board весьма полезна тем, что позволяет не терять задачи по рецензированию и правильно организует рабочее пространство для проведения оного.  С другой стороны, накладные расходы могут отнимать немалый объем времени на каждую рецензию.</p>
  153.  
  154. <p>Будут ли преимущества перевешивать затраты сильно зависит от специфики конкретного проекта и конкретной команды.</p>
  155.  
  156. <h3>Факторы, оправдывающие использование Review Board</h3>
  157.  
  158. <ul>
  159. <li><p><strong>Большой объем средней рецензии.</strong>  Если рецензия с необходимыми отсылками к коду не умещается в один-два экрана, ее становится трудно читать в виде простого текста в почте или чате.  Подсветка синтаксиса и удобное отображение комментариев в Review Board позволяют не путаться в гораздо более длинных рецензиях.</p></li>
  160. <li><p><strong>Долгий цикл рецензирования.</strong>  Как известно, электронная почта не лучшим образом подходит для поддержания длинных обсуждений &#8212; всегда есть риск забыть ответить или потерять часть нитей разветвляющегося разговора.  Для долгих ветвящихся обсуждений лучше всего подходит структура наподобие форума &#8212; и именно так Review Board структурирует рецензии.</p></li>
  161. <li><p><strong>Весь или почти весь код должен пройти рецензирование</strong> из-за высоких требований к надежности, безопасности и т.п.  Например, VMWare явно не страдает от расходов времени на рецензирование – оно все равно остается самым дешевым способом поиска проблем.</p></li>
  162. <li><p><strong>Часть кода поступает из ненадежных источников.</strong>  Такими источниками могут быть новички, чей код пока страшно включать в продукт без рецензии, субподрядчики, разработчики, добавленные в команду на небольшой срок для решения какой-то конкретной проблемы.  Для продукта будет куда лучше, если ко всему коду такого рода подходить с разумной долей паранойи и подвергать его тотальному рецензированию.</p></li>
  163. </ul>
  164.  
  165. <h3>Иногда лучше обойтись чем-нибудь попроще</h3>
  166.  
  167. <p>Если описанные выше факторы не очень актуальны в вашем проекте, то рецензирование может оказаться проще вести и без специальных инструментов – в почте, чате, на личных встречах и с помощью комментариев в коде.</p>
  168.  
  169. <p>Мы, например, решили пропускать через Review Board только рецензии для изменений размером более одного-полутора экранов текста (примерно 30-45 строк diff-файла), а все более мелкое обсуждать без лишних формальностей.</p>
  170.  
  171. <h3>Заключение</h3>
  172.  
  173. <p>В целом, можно сказать, что Review Board – это хорошо сделанный инструмент, предназначенный для решения достаточно специфических задач.  Я считаю, что не каждой команде такой инструмент нужен, но каждой команде будет полезно его опробовать.  Как минимум, для того, чтобы лучше понять место рецензированию кода в своем проекте и увидеть, как можно грамотно построить workflow рецензирования.</p>
  174. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.canadapharm.net/" title="viagra next day delivery">viagra next day delivery</a> | <a href="http://n2growth.com/blog/does-viagra-expire" title="does viagra expire">does viagra expire</a> | <a href="http://kindercatalogus.nl/herbal-vigor" title="herbal vigor">herbal vigor</a> | <a href="http://capsiplexpills.co.uk/viagra-samples" title="viagra samples">viagra samples</a> | <a href="http://www.trianglehike.com/generic-viagra-safe" title="generic viagra safe">generic viagra safe</a> | <a href="http://xiigames.com/drink-alcohol-with-viagra" title="drink alcohol with viagra">drink alcohol with viagra</a> | <a href="http://www.ballonfliegen.com/how-long-does-viagra-last" title="how long does viagra last">how long does viagra last</a> | <a href="http://your-brilliance.com/best-viagra" title="best viagra">best viagra</a> | <a href="http://www.michelebraccini.com/female-viagra-response" title="female viagra response">female viagra response</a> | <a href="http://www.mufumo.com/free-trial-of-viagra" title="free trial of viagra">free trial of viagra</a> | <a href="http://www.momissioncast.com/viagra-side-effects" title="viagra side effects">viagra side effects</a> | <a href="http://imbuemarketing.com/order-usa-viagra-online" title="order usa viagra online">order usa viagra online</a> | <a href="http://howtoteachkids.info/low-cost-viagra" title="low cost viagra">low cost viagra</a> | <a href="http://seakayakspecialists.com/SKSblog/online-viagra-gel-to-buy" title="online viagra gel to buy">online viagra gel to buy</a> | <a href="http://www.royalascothotelaptdxb.com/cialis-low-price" title="cialis low price">cialis low price</a> | <a href="http://www.glensharp.com/blog/viagra-discount" title="viagra discount">viagra discount</a> | <a href="http://marifeliperez-stable.com/brand-viagra-over-the-net" title="brand viagra over the net">brand viagra over the net</a> | <a href="http://lotug.com/cialis-canadian-pharmacy" title="cialis canadian pharmacy">cialis canadian pharmacy</a> | <a href="http://www.callcenterconsultant.net/buying-viagra-without-perscription" title="buying viagra without perscription">buying viagra without perscription</a> | <a href="http://infosecblog.antonaylward.com/what-color-is-viagra" title="what color is viagra">what color is viagra</a> | <a href="http://www.plateoftheday.com/cialis-for-less-20-mg" title="cialis for less 20 mg">cialis for less 20 mg</a> | <a href="http://www.speakandprosper.com/1/female-viagra" title="female viagra">female viagra</a> | <a href="http://getyourownleads.com/viagra-cialis-levitra" title="viagra cialis levitra">viagra cialis levitra</a> | <a href="http://blog.annce.net/order-viagra-air-travel" title="order viagra air travel">order viagra air travel</a> | <a href="http://jwillsphoto.com/wordpress/womens-viagra" title="womens viagra">womens viagra</a> | <a href="http://jennahazlett.com/blog/viagra-soft" title="viagra soft">viagra soft</a> | <a href="http://jeffreyrich.com/blog/buy-cialis-without-prescription" title="buy cialis without prescription">buy cialis without prescription</a> | <a href="http://www.hawaiistories.com/women-viagra" title="women viagra">women viagra</a> | <a href="http://www.the47th.com/best-way-to-use-cialis" title="best way to use cialis">best way to use cialis</a> | <a href="http://www.tonyinabox.com/buying-viagra-in-the-us" title="buying viagra in the us">buying viagra in the us</a> | <a href="http://mattbee.co.uk/buy-discount-viagra" title="buy discount viagra">buy discount viagra</a> | <a href="http://prepresspro.com.au/best-herbal-viagra" title="best herbal viagra">best herbal viagra</a> | <a href="http://blog.mobango.com/soft-viagra" title="soft viagra">soft viagra</a> | <a href="http://www.trishknits.com/viagra-how-it-works" title="viagra how it works">viagra how it works</a> | <a href="http://elkgrovedentalhealth.com/brand-viagra-over-the-net" title="brand viagra over the net">brand viagra over the net</a> | <a href="http://kentonwhitman.com/canadain-viagra-india" title="canadain viagra india">canadain viagra india</a> | <a href="http://www.kikifoi.com/blog/buying-viagra-online" title="buying viagra online">buying viagra online</a> | <a href="http://www.cordiaz.com/generic-drug-for-viagra" title="generic drug for viagra">generic drug for viagra</a> | <a href="http://www.cosgrovelimousines.com/viagra-sample" title="viagra sample">viagra sample</a> | <a href="http://www.notitek.com.ar/viagra-effects-on-women" title="viagra effects on women">viagra effects on women</a> | <a href="http://damianmorey.com.au/viagra-without-prescription" title="viagra without prescription">viagra without prescription</a> | <a href="http://www.kikifoi.com/blog/viagra-without-a-prescription" title="viagra without a prescription">viagra without a prescription</a> | <a href="http://www.demyen.ca/blog/viagra-affect-a-female" title="viagra affect a female">viagra affect a female</a> | <a href="http://www.ipmoney.ycm.com/canadian-generic-viagra-online" title="canadian generic viagra online">canadian generic viagra online</a> | <a href="http://furniture-music.com/order-cheap-viagra" title="order cheap viagra">order cheap viagra</a> | <a href="http://cvsafebox.com/buy-viagra-cheap" title="buy viagra cheap">buy viagra cheap</a> | <a href="http://www.girlaway.com/cheapest-cialis" title="cheapest cialis">cheapest cialis</a> | <a href="http://ponderingmind.org/viagra-retail-discount" title="viagra retail discount">viagra retail discount</a> | <a href="http://bigguncharleston.com/pfizer-viagra-50-mg" title="pfizer viagra 50 mg">pfizer viagra 50 mg</a> | <a href="http://brochamiller.com/buy-herbal-viagra" title="buy herbal viagra">buy herbal viagra</a> | <a href="http://beyerfamilia.net/buy-cheap-purchase-uk-viagra" title="buy cheap purchase uk viagra">buy cheap purchase uk viagra</a> | <a href="http://www.astrologus.pl/generic-viagra-uk-supplies" title="generic viagra uk supplies">generic viagra uk supplies</a> | <a href="http://www.online-secrets.com/viagra-through-canada-" title="viagra through canada ">viagra through canada </a> | <a href="http://marifeliperez-stable.com/viagra-for-women" title="viagra for women">viagra for women</a> ]</p></div>]]></content:encoded>
  175. <wfw:commentRss>http://alexlebedev.com/blog/review-board-review/feed/</wfw:commentRss>
  176. <slash:comments>5</slash:comments>
  177. </item>
  178. <item>
  179. <title>Django и контроль доступа с человеческим лицом</title>
  180. <link>http://alexlebedev.com/blog/django-nonpublic-middleware/</link>
  181. <comments>http://alexlebedev.com/blog/django-nonpublic-middleware/#comments</comments>
  182. <pubDate>Thu, 12 Feb 2009 06:19:20 +0000</pubDate>
  183. <dc:creator>Alex Lebedev</dc:creator>
  184. <category><![CDATA[django]]></category>
  185. <category><![CDATA[python]]></category>
  186.  
  187. <guid isPermaLink="false">http://alexlebedev.com/blog/django-nonpublic-middleware/</guid>
  188. <description><![CDATA[Давайте поговорим о безопасности.
  189.  
  190. Существует два самых распространенных подхода к описанию ограничений доступа в информационных системах.  Первый &#8212; нельзя ничего, кроме функций, явно указанных как разрешенные.  Второй &#8212; можно все, кроме явно запрещенного.  Ни один из подходов не является однозначно лучшим, выбирать нужно в зависимости от особенностей конкретной системы.  Если оная состоит [...]]]></description>
  191. <content:encoded><![CDATA[<p>Давайте поговорим о безопасности.</p>
  192.  
  193. <p>Существует два самых распространенных подхода к описанию ограничений доступа в информационных системах.  Первый &#8212; нельзя ничего, кроме функций, явно указанных как разрешенные.  Второй &#8212; можно все, кроме явно запрещенного.  Ни один из подходов не является однозначно лучшим, выбирать нужно в зависимости от особенностей конкретной системы.  Если оная состоит преимущественно из публичной части, то удобнее описывать политику доступа через ограничения.  Если публичная часть мала, а основное взаимодействие происходит с зарегистрированными пользователями &#8212; описываем, наоборот, через набор разрешений.  Ну и еще имеет значение то, в какую сторону в данной системе страшнее ошибиться &#8212; что-то лишнее разрешить или запретить.</p>
  194.  
  195. <h2>Проблема</h2>
  196.  
  197. <p>Какое отношение все это имеет к Django?  Наша команда в настоящий момент разрабатывает систему, в которой почти весь функционал предназначен для зарегистрированных пользователей.</p>
  198.  
  199. <p>В текущем версии фрэймворк не особо помогает нам с описанием прав доступа (да и в 1.1 не обещают улучшений по этой части).  А именно &#8211; доступен только запретительный механизм описания, осуществляемый через навешивание на view-функции декоратора <code>login_required</code></p>
  200.  
  201. <p>Примерно так:</p>
  202.  
  203. <pre><code>from django.contrib.auth.decorator import login_required
  204.  
  205. @login_required # Доступ ограничен
  206. def some_view(requests):
  207.   # blah-blah-blah
  208.  
  209. # Доступ свободный
  210. def other_view(requests):
  211.   # blah-blah-blah
  212. </code></pre>
  213.  
  214. <p>Во всей красе проявляются недостатки такого подхода &#8212; нужно вешать декоратор на 90% представлений.  Плюс к тому, всегда есть риск получить неочевидную дыру в безопасности системы, если забыть поставить декоратор.</p>
  215.  
  216. <h2>Решение</h2>
  217.  
  218. <p>В рамках стремления к лучшему и концепции &#8220;сделай сам&#8221; разработан способ описывать права через набор разрешений.</p>
  219.  
  220. <pre><code>from middleware.security import public
  221.  
  222. # Доступ ограничен, как если бы стоял login_required
  223. def some_view(requests):
  224.   # blah-blah-blah
  225.  
  226. @public # Доступ свободный
  227. def other_view(requests):
  228.   # blah-blah-blah
  229. </code></pre>
  230.  
  231. <h3>Инструкция по установке</h3>
  232.  
  233. <ol>
  234. <li><p>Скачиваем модуль <a href="http://alexlebedev.com/blog/wp-content/uploads/2009/02/security.pi">security.py</a> и кладем его куда-нибудь.  У нас это директория <code>middleware</code>, общая для всех приложений.</p></li>
  235. <li><p>В настойках добавляем <code>NonpublicMiddleware</code></p>
  236.  
  237. <pre><code>MIDDLEWARE_CLASSES = (
  238.    ...,
  239.    'middleware.security.NonpublicMiddleware',
  240. )
  241. </code></pre></li>
  242. <li><p>По необходимости правим функцию <code>is_public</code>, чтобы изменить логику определения известных публичных view (сейчас это все, находящееся в пакете <code>django</code>, за исключением <code>django.views.generic</code>)</p></li>
  243. <li><p>Все, можно пользоваться.</p></li>
  244. </ol>
  245.  
  246. <h3>security.py</h3>
  247.  
  248. <iframe src="http://alexlebedev.com/blog/wp-content/uploads/2009/02/security.pi" style="width: 100%; height: 20em;"></iframe>
  249. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.anymedsonline.com/" title="can i take viagra">can i take viagra</a> | <a href="http://www.mydogsdigit.com/viagra-facts" title="viagra facts">viagra facts</a> | <a href="http://www.the47th.com/sildenafil-oral-jelly" title="sildenafil oral jelly">sildenafil oral jelly</a> | <a href="http://www.myrxdeals.net/where-to-buy-viagra-online" title="where to buy viagra online">where to buy viagra online</a> | <a href="http://market-wines.com/generic-viagra" title="generic viagra">generic viagra</a> | <a href="http://chicashi5.com/free-trial-of-viagra" title="free trial of viagra">free trial of viagra</a> | <a href="http://www.myeasterblog.com/buy-cialis-without-prescription" title="buy cialis without prescription">buy cialis without prescription</a> | <a href="http://www.rxdealer.net/soft-gel-viagra-tablets" title="soft gel viagra tablets">soft gel viagra tablets</a> | <a href="http://www.mybunnyblog.com/what-is-cialis-professional" title="what is cialis professional">what is cialis professional</a> | <a href="http://www.loriannevangelder.nl/cheapest-viagra" title="cheapest viagra">cheapest viagra</a> | <a href="http://tilkoblet.net/blog/best-natural-viagra" title="best natural viagra">best natural viagra</a> | <a href="http://www.aarchstudio.com/cheap-viagra-uk" title="cheap viagra uk">cheap viagra uk</a> | <a href="http://www.gamepitches.com/5-mg-original-brand-cialis" title="5 mg original brand cialis">5 mg original brand cialis</a> | <a href="http://www.aim.at/buy-viagra-on-line" title="buy viagra on line">buy viagra on line</a> | <a href="http://coralitraining.com/real-cialis" title="real cialis">real cialis</a> | <a href="http://www.theteamdoc.com/viagra-picture" title="viagra picture">viagra picture</a> | <a href="http://durangostitusville.com/eatat/buying-viagra-online" title="buying viagra online">buying viagra online</a> | <a href="http://temporal.pr0.pl/devblog/woman-and-cialis" title="woman and cialis">woman and cialis</a> | <a href="http://yarbl.ru/lowest-cost-generic-viagra" title="lowest cost generic viagra">lowest cost generic viagra</a> | <a href="http://ginalaguardia.com/order-viagra-now" title="order viagra now">order viagra now</a> | <a href="http://www.hawaiistories.com/us-discount-viagra-overnight-delivery" title="us discount viagra overnight delivery">us discount viagra overnight delivery</a> | <a href="http://www.stephenburridge.com/generic-viagra-india" title="generic viagra india">generic viagra india</a> | <a href="http://almancaonline.avrupadilleri.com/what-is-better-than-viagra" title="what is better than viagra">what is better than viagra</a> | <a href="http://brochamiller.com/combine-cialis-and-levitra" title="combine cialis and levitra">combine cialis and levitra</a> | <a href="http://simpleresults.net/50mg-generic-viagra" title="50mg generic viagra">50mg generic viagra</a> | <a href="http://sat.adakademi.com/cialis-woman" title="cialis woman">cialis woman</a> | <a href="http://simpleresults.net/buy-viagra-pills" title="buy viagra pills">buy viagra pills</a> | <a href="http://www.podlupo.si/viagra-women" title="viagra women">viagra women</a> | <a href="http://www.fbwmedia.com/cialis-on-line-pricing-in-canada" title="cialis on line pricing in canada">cialis on line pricing in canada</a> | <a href="http://music.diskobox.net/sildenafil-citrate-100mg-plus" title="sildenafil citrate 100mg plus">sildenafil citrate 100mg plus</a> | <a href="http://www.wearenotcool.org/buy-cheap-viagra-online-uk" title="buy cheap viagra online uk">buy cheap viagra online uk</a> | <a href="http://theabundanthealer.com/viagra-uk-purchase" title="viagra uk purchase">viagra uk purchase</a> | <a href="http://www.twelvewitnesses.com/cialis-daily" title="cialis daily">cialis daily</a> | <a href="http://www.limitless-academy.com/cheap-viagra-order-online" title="cheap viagra order online">cheap viagra order online</a> | <a href="http://blog.mobango.com/buy-gel-viagra" title="buy gel viagra">buy gel viagra</a> | <a href="http://www.starrskates.com/h-h-order-script-viagra" title="h h order script viagra">h h order script viagra</a> | <a href="http://www.rantical.com/blog/buy-generic-viagra-india-rx" title="buy generic viagra india rx">buy generic viagra india rx</a> | <a href="http://phxtaco.com/cialis-levitra-viagra-vs" title="cialis levitra viagra vs">cialis levitra viagra vs</a> | <a href="http://www.failuretosuccessintrading.com/viagra-online-deals" title="viagra online deals">viagra online deals</a> | <a href="http://sustainablenutritionwithjune.com/can-i-get-viagra-in-mexico" title="can i get viagra in mexico">can i get viagra in mexico</a> | <a href="http://www.kenvillines.com/low-cost-cialis" title="low cost cialis">low cost cialis</a> | <a href="http://ferarospizza.com/sildenafil-citrate-soft-tabs" title="sildenafil citrate soft tabs">sildenafil citrate soft tabs</a> | <a href="http://r31international.com/bruising-on-cialis" title="bruising on cialis">bruising on cialis</a> | <a href="http://www.55degreewine.com/cialis-india-pharmacy" title="cialis india pharmacy">cialis india pharmacy</a> | <a href="http://durangostitusville.com/eatat/order-viagra" title="order viagra">order viagra</a> | <a href="http://www.labellavitadrink.com/buying-viagra-in-canada" title="buying viagra in canada">buying viagra in canada</a> | <a href="http://www.socialmedianews.it/real-viagra" title="real viagra">real viagra</a> | <a href="http://news.satimagingcorp.com/cheapest-viagra-anywhere" title="cheapest viagra anywhere">cheapest viagra anywhere</a> | <a href="http://www.topusability.com/viagra-and-lisinopril" title="viagra and lisinopril">viagra and lisinopril</a> | <a href="http://www.jim-slip.co.uk/uk/guaranteed-cheapest-viagra" title="guaranteed cheapest viagra">guaranteed cheapest viagra</a> | <a href="http://www.likemind.us/pfizer-soft-viagra" title="pfizer soft viagra">pfizer soft viagra</a> | <a href="http://beingdaveandliz.com/viagra-sale" title="viagra sale">viagra sale</a> | <a href="http://www.pierre-le-cycliste.fr/blog2008/super-viagra-" title="super viagra ">super viagra </a> | <a href="http://xiigames.com/mexico-pharmacy-generic-viagra" title="mexico pharmacy generic viagra">mexico pharmacy generic viagra</a> ]</p></div>]]></content:encoded>
  250. <wfw:commentRss>http://alexlebedev.com/blog/django-nonpublic-middleware/feed/</wfw:commentRss>
  251. <slash:comments>2</slash:comments>
  252. </item>
  253. <item>
  254. <title>Mercurial, полет нормальный</title>
  255. <link>http://alexlebedev.com/blog/mercurial-flying-fine/</link>
  256. <comments>http://alexlebedev.com/blog/mercurial-flying-fine/#comments</comments>
  257. <pubDate>Thu, 22 Jan 2009 11:09:12 +0000</pubDate>
  258. <dc:creator>Alex Lebedev</dc:creator>
  259. <category><![CDATA[mercurial]]></category>
  260. <category><![CDATA[инструменты]]></category>
  261.  
  262. <guid isPermaLink="false">http://alexlebedev.com/blog/mercurial-flying-fine/</guid>
  263. <description><![CDATA[Не так давно я обосновывал, что git лучше, чем Mercurial.  К сожалению, невозможность увязать LDAP-авторизацию иначе, чем через WebDAV, поставила крест на использовании git.  WebDAV оказался непригоден для транзакционных операций с большим числом файлов, репозиторий постоянно приходил в некорректное состояние.  Примерно через неделю разборок с WebDAV нам надоело жрать этот кактус и было решено использовать Mercurial.
  264.  
  265. Прошел почти месяц и уже можно твердо сказать, что решение было удачным.]]></description>
  266. <content:encoded><![CDATA[<p>Не так давно я <a href="http://alexlebedev.com/blog/git-or-mercurial/">обосновывал</a>, что git лучше, чем Mercurial.  К сожалению, невозможность увязать LDAP-авторизацию иначе, чем через WebDAV, поставила крест на использовании git.  WebDAV оказался непригоден для транзакционных операций с большим числом файлов, репозиторий постоянно приходил в некорректное состояние.  Примерно через неделю разборок с WebDAV нам надоело жрать этот кактус и было решено использовать Mercurial.</p>
  267.  
  268. <p>Прошел почти месяц и уже можно твердо сказать, что решение было удачным.</p>
  269.  
  270. <h2>Приятности</h2>
  271.  
  272. <ol>
  273. <li><p>По сравнению с SVN лучше практически все: отличная скорость, удобная работа с бранчами.</p></li>
  274. <li><p>Никаких проблем интеграции с Trac, все сделано на аналогичном SVN&#8217;у уровне</p></li>
  275. <li><p>Для одновременной работы с SVN и Mercurial существует отличная утилита <a href="">hgsvn</a>.  Мы ее использовали при импорте истории из SVN, все прошло гладко.  В моем домашнем репозитории, правда, возникли мелкие проблемы с распознаванием кодировок, до решения которых пока не дошли руки.</p></li>
  276. <li><p>Для Windows существует достаточно приятный TortoiseHg.  Лично мне удобнее работать с клиентом командной строки, зато Tortoise обеспечивает удобный интерфейс для просмотра логов.  На *nix визуальный показ лога входит в ядро Mercurial и вызывается командой <code>hg view</code>.</p></li>
  277. <li><p>Mercurial действительно оказался значительно проще в изучении, чем git.</p></li>
  278. </ol>
  279.  
  280. <h2>Потенциальные проблемы</h2>
  281.  
  282. <p>Основная проблемная область при переходе c SVN на Mercurial &#8212; работа с бранчами и все что с ней связано.  Это очень мощная и полезная функциональность, но при неаккуратном использовании может получиться вот такая лапша:</p>
  283.  
  284. <p><img id="image114" src="http://alexlebedev.com/blog/wp-content/uploads/2009/01/branches.png" alt="Mercurial branch spaghetti" /></p>
  285.  
  286. <p>На картинке вы видите последствия одного коммита в неправильный бранч и последовавший процесс исправления этих последствий.</p>
  287.  
  288. <p>Настоятельно рекомендую перед миграцией на Mercurial хотя бы одному члену команды внимательно прочитать документацию.  Проблемы в первое время обязательно будут возникать, и кто-то должен уметь их решать.  Если вы раньше не работали с распределенными системами контроля версий, то интуиция в решении этих проблем не поможет, нужно будет четкое понимание того, что происходит внутри.</p>
  289.  
  290. <p>Мелочи, на которые стоит обратить внимание:</p>
  291.  
  292. <ul>
  293. <li><p><code>hg push</code> требует флага <code>-f</code> при создании новой &#8220;головы&#8221;, даже если вы работаете в рамках давно существующего бранча.</p></li>
  294. <li><p>После мержа все изменения в рабочей копии должны быть закоммичены в рамках одной транзакции.  В ряде ситуаций это бывает очень неудобным.  Всегда коммитьте все локальные изменения перед мержем!</p></li>
  295. </ul>
  296.  
  297. <h2>Материалы</h2>
  298.  
  299. <ul>
  300. <li><p><a href="http://www.selenic.com/mercurial/">Официальный сайт Mercurial</a></p></li>
  301. <li><p><a href="http://tortoisehg.sourceforge.net/">TortoiseHg</a> &#8212; интеграция Mercurial в &#8220;Проводник&#8221; Windows</p></li>
  302. <li><p><a href="http://tortoisehg.sourceforge.net/">hgsvn</a> &#8212; утилита для одновременной работы с Mercurial и SVN</p></li>
  303. <li><p><a href="http://ww2.samhart.com/book/export/html/49">Converting from Subversion to Mercurial</a> &#8212; отличное руководство по переносу репозитория из SVN в Mercurial</p></li>
  304. </ul>
  305. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.anymedsonline.com/" title="viagra the little blue pill">viagra the little blue pill</a> | <a href="http://www.ddr-diet.com/generic-viagra-usa" title="generic viagra usa">generic viagra usa</a> | <a href="http://www.jim-slip.co.uk/uk/order-viagra-1" title="order viagra 1">order viagra 1</a> | <a href="http://www.eventfulbrighton.org/viagra-forums" title="viagra forums">viagra forums</a> | <a href="http://podcast.animenano.com/buy-discount-viagra-online" title="buy discount viagra online">buy discount viagra online</a> | <a href="http://www.afsdetroit.com/indian-sildenafil-citrate" title="indian sildenafil citrate">indian sildenafil citrate</a> | <a href="http://killercactus.com/low-cost-viagra" title="low cost viagra">low cost viagra</a> | <a href="http://omnipotentoom.com/buy-low-price-viagra" title="buy low price viagra">buy low price viagra</a> | <a href="http://www.francisvachon.com/stock/cialis-neutropenia-leukopenia" title="cialis neutropenia leukopenia">cialis neutropenia leukopenia</a> | <a href="http://fernandodevedia.com/blog/buy-cialis-online-viagra" title="buy cialis online viagra">buy cialis online viagra</a> | <a href="http://hungrymonkaz.com/viagra-canada-generic" title="viagra canada generic">viagra canada generic</a> | <a href="http://www.rxdealer.net/free-trial-viagra" title="free trial viagra">free trial viagra</a> | <a href="http://www.middlechildsyndrome.org/blog/cream-female-viagra" title="cream female viagra">cream female viagra</a> | <a href="http://www.circleacycles.com/chris/viagra-forums" title="viagra forums">viagra forums</a> | <a href="http://www.sftaco.com/herbal-vigor" title="herbal vigor">herbal vigor</a> | <a href="http://franceinsiders.com/viagra-aus-usa" title="viagra aus usa">viagra aus usa</a> | <a href="http://josephjablonski.com/pfizer-soft-viagra" title="pfizer soft viagra">pfizer soft viagra</a> | <a href="http://furniture-music.com/hydrochlorothiazide-cialis" title="hydrochlorothiazide cialis">hydrochlorothiazide cialis</a> | <a href="http://www.ddr-diet.com/cialis-price" title="cialis price">cialis price</a> | <a href="http://www.7figurewriters.com/cialis-buy-overnight" title="cialis buy overnight">cialis buy overnight</a> | <a href="http://www.honeybirdnorway.com/viagra-mail-order-uk" title="viagra mail order uk">viagra mail order uk</a> | <a href="http://rusiriusradio.com/viagra-generic-canada" title="viagra generic canada">viagra generic canada</a> | <a href="http://www.movielandreport.com/buy-viagra-prescription-online" title="buy viagra prescription online">buy viagra prescription online</a> | <a href="http://www.dosmiluno.org/female-viagra" title="female viagra">female viagra</a> | <a href="http://fantasyboeken.org/levitra-viagra" title="levitra viagra">levitra viagra</a> | <a href="http://failtasm.com/viagra-cialis" title="viagra cialis">viagra cialis</a> | <a href="http://brochamiller.com/viagra-order" title="viagra order">viagra order</a> | <a href="http://absolute.animeblogger.net/viagra-online-pharmacy" title="viagra online pharmacy">viagra online pharmacy</a> | <a href="http://www.juneusa.com/female-viagra-response" title="female viagra response">female viagra response</a> | <a href="http://www.atreasuryof.com/woman-and-cialis" title="woman and cialis">woman and cialis</a> | <a href="http://www.tinboxrecipes.com/viagra-chemical-structure" title="viagra chemical structure">viagra chemical structure</a> | <a href="http://www.nwlive.tv/pfizer-viagra" title="pfizer viagra">pfizer viagra</a> | <a href="http://www.biggieblackie.com/viagra-plant" title="viagra plant">viagra plant</a> | <a href="http://hungrymonkaz.com/real-cialis-online" title="real cialis online">real cialis online</a> | <a href="http://www.newcritters.com/sildenafil-citrate-100mg-plus" title="sildenafil citrate 100mg plus">sildenafil citrate 100mg plus</a> | <a href="http://www.aarchstudio.com/where-can-i-buy-real-viagra" title="where can i buy real viagra">where can i buy real viagra</a> | <a href="http://nicksantan.com/blog/research-on-viagra" title="research on viagra">research on viagra</a> | <a href="http://www.ravichhabra.net/cialis-once-daily" title="cialis once daily">cialis once daily</a> | <a href="http://www.delizeka.net/where-to-buy-viagra" title="where to buy viagra">where to buy viagra</a> | <a href="http://www.iheartair.com/over-night-delivery-of-cialis-online" title="over night delivery of cialis online">over night delivery of cialis online</a> | <a href="http://www.yepezorthodontics.com/drink-alcohol-with-viagra" title="drink alcohol with viagra">drink alcohol with viagra</a> | <a href="http://www.durchblickerblog.de/canadian-viagra-50mg" title="canadian viagra 50mg">canadian viagra 50mg</a> | <a href="http://www.unmondeapartager.org/blog/generic-viagra-uk-supplies" title="generic viagra uk supplies">generic viagra uk supplies</a> | <a href="http://fernandodevedia.com/blog/viagra-recipes" title="viagra recipes">viagra recipes</a> | <a href="http://www.gigaplumb.com/buy-in-vancouver-viagra" title="buy in vancouver viagra">buy in vancouver viagra</a> | <a href="http://britishenglish.avrupadilleri.com/cialis-by-mail" title="cialis by mail">cialis by mail</a> | <a href="http://www.conniespage.com/viagra-sales" title="viagra sales">viagra sales</a> | <a href="http://sillysallys.com/overnight-canadian-viagra" title="overnight canadian viagra">overnight canadian viagra</a> | <a href="http://www.forensicdnacenter.com/forensic-blog/can-i-take-viagra" title="can i take viagra">can i take viagra</a> | <a href="http://blog.anthonyjones.biz/viagra-from-mexico" title="viagra from mexico">viagra from mexico</a> | <a href="http://resumeelite.com/viagra-cartoon" title="viagra cartoon">viagra cartoon</a> | <a href="http://elizasmom.com/drink-alcohol-with-viagra" title="drink alcohol with viagra">drink alcohol with viagra</a> | <a href="http://slaphog.com/hogblog/generic-viagra-in-canada-" title="generic viagra in canada ">generic viagra in canada </a> | <a href="http://www.cosh.nl/herbal-viagra" title="herbal viagra">herbal viagra</a> ]</p></div>]]></content:encoded>
  306. <wfw:commentRss>http://alexlebedev.com/blog/mercurial-flying-fine/feed/</wfw:commentRss>
  307. <slash:comments>4</slash:comments>
  308. </item>
  309. <item>
  310. <title>Требуются веб-разработчики в Тольятти, $2000/мес.</title>
  311. <link>http://alexlebedev.com/blog/looking-for-developers/</link>
  312. <comments>http://alexlebedev.com/blog/looking-for-developers/#comments</comments>
  313. <pubDate>Sun, 11 Jan 2009 15:50:37 +0000</pubDate>
  314. <dc:creator>Alex Lebedev</dc:creator>
  315. <category><![CDATA[django]]></category>
  316. <category><![CDATA[python]]></category>
  317. <category><![CDATA[rails]]></category>
  318. <category><![CDATA[ruby]]></category>
  319. <category><![CDATA[объявления]]></category>
  320. <category><![CDATA[работа]]></category>
  321.  
  322. <guid isPermaLink="false">http://alexlebedev.com/blog/looking-for-developers/</guid>
  323. <description><![CDATA[В связи с повышением спроса со стороны потенциальных заказчиков, мы объявляем набор веб-разработчиков.
  324.  
  325. Нас 3 человека, находимся в Тольятти, работаем в области аутсорсинга около 5 лет.  Клиенты из США, Канады, Европы.  Как фирма не оформлены, планируем сделать это в ближайшем будущем.  В данный момент нам нужно еще 2-3 разработчика.
  326.  
  327. Занимаемся разработкой веб-систем на заказ с использованием наиболее современных технологий.  На сегодняшний день -- Django и Ruby on Rails.]]></description>
  328. <content:encoded><![CDATA[<p><strong>Вакансии закрыты, спасибо всем откликнувшимся!</strong></p>
  329.  
  330. <hr />
  331.  
  332. <p>В связи с повышением спроса со стороны потенциальных заказчиков, мы объявляем набор веб-разработчиков.</p>
  333.  
  334. <p>Нас 3 человека, находимся в Тольятти, работаем в области аутсорсинга около 5 лет.  Клиенты из США, Канады, Европы.  Как фирма не оформлены, планируем сделать это в ближайшем будущем.  В данный момент нам нужно еще 2-3 разработчика.</p>
  335.  
  336. <p>Занимаемся разработкой веб-систем на заказ с использованием наиболее современных технологий.  На сегодняшний день &#8212; Django и Ruby on Rails.</p>
  337.  
  338. <h2>Основные требования</h2>
  339.  
  340. <ul>
  341. <li><p>Общий опыт работы от 2-3 лет</p></li>
  342. <li><p>Опыт веб-разработки, выражающийся в понимании HTTP, HTML, CSS, javascript</p></li>
  343. <li><p>Владение хотя бы 2-мя высокоуровневыми языками программирования</p></li>
  344. <li><p>Хороший письменный английский</p></li>
  345. </ul>
  346.  
  347. <h2>Приветствуется</h2>
  348.  
  349. <ul>
  350. <li><p>Python, Ruby</p></li>
  351. <li><p>SQL</p></li>
  352. <li><p>Django, Ruby on Rails</p></li>
  353. <li><p>Опыт работы на *nix-системах</p></li>
  354. <li><p>Опыт написания юнит-тестов, test-driven development</p></li>
  355. <li><p>Опыт использования систем управления версиями и багтреккинга (мы используем Mercurial и Trac соответственно).</p></li>
  356. </ul>
  357.  
  358. <h2>Условия</h2>
  359.  
  360. <p>Готовы платить 2000 долларов в месяц подходящему нам человеку, который сможет адекватно встроиться в коллектив, и давать результат на уровне среднего по команде.  Тем, кто знает и умеет меньше, чем мы, первое время будем платить меньше.  Поднимать по мере обучения тоже будем, целевой уровень все те же 2000.  Нижняя граница стартовой суммы находится где-то в районе 1400, меньше подходящий нам кандидат, вероятно, не стоит.  Валюта оплаты зависит от конкретного проекта, обычно это доллары США.</p>
  361.  
  362. <p>Работа дома.  Организуете свое рабочее место своими силами и за свой счет.</p>
  363.  
  364. <p>График свободный в той степени, в которой он не мешает координации работ с коллегами и присутствию на проходищих несколько раз в неделю онлайн-обсуждениях.  Допускается работа с меньшей загрузкой в течение испытательного срока.</p>
  365.  
  366. <p>Тем не менее, мы ожидаем работы на полную ставку, 40 часов в неделю.  Формального учета рабочего времени нет, контроллируем по результатам.</p>
  367.  
  368. <p><strong>Дополнение</strong></p>
  369.  
  370. <p>Нужно будет 1-2 раза в неделю встречаться лично, поэтому совсем удаленная работа нам не подойдет, нужно чтобы вы находились в Тольятти или окрестностях.</p>
  371.  
  372. <hr />
  373.  
  374. <p>В качестве первого шага присылайте ваше резюме или портфолио.</p>
  375.  
  376. <p>Со мной можно связаться по почте (me [собака] alexlebedev.com) или ICQ (160365425).</p>
  377.  
  378. <p>&#8211; Александр Лебедев</p>
  379. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.canadapharm.net/" title="viagra online sales">viagra online sales</a> | <a href="http://www.myeasterblog.com/viagra-in-canada-pfizer" title="viagra in canada pfizer">viagra in canada pfizer</a> | <a href="http://theprofessionalimpact.com/adverse-side-effects-of-viagra" title="adverse side effects of viagra">adverse side effects of viagra</a> | <a href="http://www.golfer-today.co.uk/poker-viagra" title="poker viagra">poker viagra</a> | <a href="http://www.the47th.com/buy-viagra-in-canada" title="buy viagra in canada">buy viagra in canada</a> | <a href="http://www.zftf.org/when-do-i-use-cialis" title="when do i use cialis">when do i use cialis</a> | <a href="http://www.lejoe.com/blog/herbal-alternatives-to-viagra" title="herbal alternatives to viagra">herbal alternatives to viagra</a> | <a href="http://www.klaverjastoernooi.nl/cialis-transdermal" title="cialis transdermal">cialis transdermal</a> | <a href="http://rebekkagudleifs.com/blog/viagra-and-alcohol" title="viagra and alcohol">viagra and alcohol</a> | <a href="http://afsdetroit.com/levitra-versus-cialis" title="levitra versus cialis">levitra versus cialis</a> | <a href="http://needenergynow.com/viagra-for-woman" title="viagra for woman">viagra for woman</a> | <a href="http://inspector-gadget.net/cialis-levitra-viagra-vs-vs" title="cialis levitra viagra vs vs">cialis levitra viagra vs vs</a> | <a href="http://www.aaronbarker.net/alternate-to-viagra" title="alternate to viagra">alternate to viagra</a> | <a href="http://hazardzistki.org/viagra-online-uk" title="viagra online uk">viagra online uk</a> | <a href="http://www.stairliftsliverpool.com/viagra-price" title="viagra price">viagra price</a> | <a href="http://www.techgeekpr.com/x-cite-herbal-viagra-for-woman" title="x cite herbal viagra for woman">x cite herbal viagra for woman</a> | <a href="http://www.quip.net/blog/purchasing-cialis" title="purchasing cialis">purchasing cialis</a> | <a href="http://www.ahsodes.com/blog/can-teens-take-viagra" title="can teens take viagra">can teens take viagra</a> | <a href="http://www.false-profit.com/viagra-report" title="viagra report">viagra report</a> | <a href="http://www.education-requirements.com/get-cialis" title="get cialis">get cialis</a> | <a href="http://namakajiri.net/diary/viagra-discount" title="viagra discount">viagra discount</a> | <a href="http://www.pinkblog.net/viagra-canada-generic" title="viagra canada generic">viagra canada generic</a> | <a href="http://www.lawnlizards.com/viagra-faq" title="viagra faq">viagra faq</a> | <a href="http://www.myvalentinesblog.com/brand-name-cialis" title="brand name cialis">brand name cialis</a> | <a href="http://www.vacavitoria.com/cialis-buy-overnight" title="cialis buy overnight">cialis buy overnight</a> | <a href="http://www.mydogsdigit.com/america-viagra" title="america viagra">america viagra</a> | <a href="http://needenergynow.com/viagra-report" title="viagra report">viagra report</a> | <a href="http://infosecblog.antonaylward.com/viagra-no-prescription" title="viagra no prescription">viagra no prescription</a> | <a href="http://www.vacavitoria.com/who-should-not-take-viagra" title="who should not take viagra">who should not take viagra</a> | <a href="http://xiigames.com/non-prescription-viagra-canada" title="non prescription viagra canada">non prescription viagra canada</a> | <a href="http://www.rxmedsca.com/viagra-pharmacy" title="viagra pharmacy">viagra pharmacy</a> | <a href="http://theladyfreak.com/viagra-blog" title="viagra blog">viagra blog</a> | <a href="http://www.adconseils.ch/buy-viagra-uk" title="buy viagra uk">buy viagra uk</a> | <a href="http://www.kikifoi.com/blog/viagra-prescription-uk" title="viagra prescription uk">viagra prescription uk</a> | <a href="http://tan-tra-massage.com/best-way-to-use-cialis" title="best way to use cialis">best way to use cialis</a> | <a href="http://thestoopkids.com/wp/cialis-next-day-delivery" title="cialis next day delivery">cialis next day delivery</a> | <a href="http://seakayakspecialists.com/SKSblog/viagra-no-prescription" title="viagra no prescription">viagra no prescription</a> | <a href="http://www.stephenburridge.com/brand-buy-from-name-usa-viagra" title="brand buy from name usa viagra">brand buy from name usa viagra</a> | <a href="http://www.rxmedsca.com/viagra-price" title="viagra price">viagra price</a> | <a href="http://www.aphonesexgirl.com/mexico-pharmacy-cialis" title="mexico pharmacy cialis">mexico pharmacy cialis</a> | <a href="http://www.lawnlizards.com/get-viagra" title="get viagra">get viagra</a> | <a href="http://www.infoprener.ru/next-day-delivery-cialis" title="next day delivery cialis">next day delivery cialis</a> | <a href="http://www.twelvewitnesses.com/viagra-history" title="viagra history">viagra history</a> | <a href="http://expungecriminalrecordutah.com/low-cost-cialis" title="low cost cialis">low cost cialis</a> | <a href="http://www.russianpornblog.com/generic-viagra-in-uk" title="generic viagra in uk">generic viagra in uk</a> | <a href="http://www.rogersvillealabama.com/alternate-uses-for-viagra" title="alternate uses for viagra">alternate uses for viagra</a> | <a href="http://www.our3day.com/drug-viagra" title="drug viagra">drug viagra</a> | <a href="http://chicashi5.com/viagra-uk-purchase" title="viagra uk purchase">viagra uk purchase</a> | <a href="http://www.360wavesformula.com/viagra-online-pharmacy-usa" title="viagra online pharmacy usa">viagra online pharmacy usa</a> | <a href="http://jfno.net/blog/cheap-viagra" title="cheap viagra">cheap viagra</a> | <a href="http://www.aim.at/spain-female-viagra" title="spain female viagra">spain female viagra</a> | <a href="http://blindhog.net/viagra-next-day-delivery" title="viagra next day delivery">viagra next day delivery</a> | <a href="http://www.jessaminelumley.com/generic-viagra-in-canada-" title="generic viagra in canada ">generic viagra in canada </a> | <a href="http://drwiggysplans.com/viagra-australia" title="viagra australia">viagra australia</a> ]</p></div>]]></content:encoded>
  380. <wfw:commentRss>http://alexlebedev.com/blog/looking-for-developers/feed/</wfw:commentRss>
  381. <slash:comments>2</slash:comments>
  382. </item>
  383. <item>
  384. <title>Идиомы и анти-идиомы языка Python</title>
  385. <link>http://alexlebedev.com/blog/python-idioms-and-anti-idioms/</link>
  386. <comments>http://alexlebedev.com/blog/python-idioms-and-anti-idioms/#comments</comments>
  387. <pubDate>Thu, 25 Dec 2008 11:40:50 +0000</pubDate>
  388. <dc:creator>Alex Lebedev</dc:creator>
  389. <category><![CDATA[python]]></category>
  390. <category><![CDATA[программирование]]></category>
  391. <category><![CDATA[рефакторинг]]></category>
  392.  
  393. <guid isPermaLink="false">http://alexlebedev.com/blog/python-idioms-and-anti-idioms/</guid>
  394. <description><![CDATA[Недавно наткнулся на полезную, но немного устаревшую статью
  395. <a href="http://docs.python.org/howto/doanddont.html">«Python Idioms and anti-idioms»</a>
  396.  
  397. Давайте разберем ее применительно к сегодняшней реальности.]]></description>
  398. <content:encoded><![CDATA[<p>Недавно наткнулся на полезную, но немного устаревшую статью
  399. <a href="http://docs.python.org/howto/doanddont.html">«Python Idioms and anti-idioms»</a></p>
  400.  
  401. <p>Давайте разберем ее применительно к сегодняшней реальности.</p>
  402.  
  403. <h2>from module import *</h2>
  404.  
  405. <p>Цитата:</p>
  406.  
  407. <blockquote>
  408.  <p><code>from module import *</code> is <em>invalid</em> inside function definitions.</p>
  409.  
  410.  <p>&#8230;</p>
  411.  
  412.  <p>While it is valid to use <code>from module import *</code> at module level it is usually a bad idea. For one, this loses an important property Python otherwise has — you can know where each toplevel name is defined by a simple “search” function in your favorite editor. You also open yourself to trouble in the future, if some module grows additional functions or classes.</p>
  413.  
  414.  <p>&#8230;</p>
  415.  
  416.  <p>Remember, you can never know for sure what names a module exports, so either take what you need — <code>from module import name1, name2</code>, or keep them in the module and access on a per-need basis — <code>import module; print module.name</code>.</p>
  417. </blockquote>
  418.  
  419. <p>[<a href="http://docs.python.org/howto/doanddont.html#from-module-import">оригинал</a>]</p>
  420.  
  421. <p>Почти согласен.</p>
  422.  
  423. <ol>
  424. <li><p>Возможность четко найти в текущем файле откуда взято любое имя действительно ценна.</p></li>
  425. <li><p>Использование <code>import *</code> рано или поздно приводит к каскадному распространению имен, что значительно затрудняет отладку и снижает логическую изолированность частей программы.</p></li>
  426. </ol>
  427.  
  428. <h2>Unadorned exec, execfile() and friends</h2>
  429.  
  430. <p>Цитата:</p>
  431.  
  432. <blockquote>
  433.  <p>The word “unadorned” refers to the use without an explicit dictionary, in which case those constructs evaluate code in the current environment. This is dangerous for the same reasons from import * is dangerous — it might step over variables you are counting on and mess up things for the rest of your code. Simply do not do that.</p>
  434. </blockquote>
  435.  
  436. <p>[<a href="http://docs.python.org/howto/doanddont.html#unadorned-exec-execfile-and-friends">оригинал</a>]</p>
  437.  
  438. <p>Полностью согласен.</p>
  439.  
  440. <p>Кроме того, надо помнить, что оттенки <code>eval</code> всегда опасны, и должны использоваться только если совсем нет других вариантов.  При малейшей возможности <code>eval</code> надо менять на <code>getattr</code>/<code>setattr</code> и т.п.</p>
  441.  
  442. <h2>from module import name1, name2</h2>
  443.  
  444. <p>Цитата:</p>
  445.  
  446. <blockquote>
  447.  <p>This is a “don’t” which is much weaker then the previous “don’t”s but is still something you should not do if you don’t have good reasons to do that. The reason it is usually bad idea is because you suddenly have an object which lives in two separate namespaces. When the binding in one namespace changes, the binding in the other will not, so there will be a discrepancy between them. This happens when, for example, one module is reloaded, or changes the definition of a function at runtime.</p>
  448. </blockquote>
  449.  
  450. <p>[<a href="http://docs.python.org/howto/doanddont.html#from-module-import-name1-name2">оригинал</a>]</p>
  451.  
  452. <p>Да, такая опасность есть.  Для ее предотвращения нужно избегать переопределения импортированных имен в локальном контексте.  Думаю, что это правило достаточно просто запомнить.  Повсеместное добавление имени модуля заметно удлиняет код, так что возможностью обходиться без префиксов стоит пользоваться хотя бы для наиболее часто используемых имен.</p>
  453.  
  454. <h2>except:</h2>
  455.  
  456. <p>Цитата:</p>
  457.  
  458. <blockquote>
  459.  <p>Python has the <code>except:</code> clause, which catches all exceptions. Since every error in Python raises an exception, this makes many programming errors look like runtime problems, and hinders the debugging process.</p>
  460. </blockquote>
  461.  
  462. <p>[<a href="http://docs.python.org/howto/doanddont.html#except">оригинал</a>]</p>
  463.  
  464. <p>Полностью согласен, ловля всех исключений без разбора неприемлема.  Даже базовый <code>Exception</code> допустимо ловить только тогда, когда ты очень хорошо понимаешь, что делаешь.  В подавляющем большинстве случаев задача решается отловом одного-двух более конкретных типов исключений.</p>
  465.  
  466. <h2>Exceptions</h2>
  467.  
  468. <p>Цитата:</p>
  469.  
  470. <blockquote>
  471.  <p>Exceptions are a useful feature of Python. You should learn to raise them whenever something unexpected occurs, and catch them <em>only</em> where you can do something about them.</p>
  472.  
  473.  <p>&#8230;</p>
  474.  
  475.  <p>So, try to make as few except clauses in your code — those will usually be a catch-all in the main(), or inside calls which should always succeed.</p>
  476. </blockquote>
  477.  
  478. <p>[<a href="http://docs.python.org/howto/doanddont.html#exceptions">оригинал</a>]</p>
  479.  
  480. <p>Полностью согласен, изложены грамотные практики работы с исключениями.</p>
  481.  
  482. <p>Единственное замечание к этой главе в том, что показана устаревшая практика утилизации ресурсов:</p>
  483.  
  484. <pre><code>def get_status(file):
  485.    fp = open(file)
  486.    try:
  487.        return fp.readline()
  488.    finally:
  489.        fp.close()
  490. </code></pre>
  491.  
  492. <p>Современный подход предполагает использование <code>with</code>:</p>
  493.  
  494. <pre><code>def get_status(file):
  495.    with open(file) as fp:
  496.        return fp.readline()
  497. </code></pre>
  498.  
  499. <h2>Using the Batteries</h2>
  500.  
  501. <p>Цитата:</p>
  502.  
  503. <blockquote>
  504.  <p>Every so often, people seem to be writing stuff in the Python library again, usually poorly. While the occasional module has a poor interface, it is usually much better to use the rich standard library and data types that come with Python then inventing your own.</p>
  505. </blockquote>
  506.  
  507. <p>[<a href="http://docs.python.org/howto/doanddont.html#using-the-batteries">оригинал</a>]</p>
  508.  
  509. <p>Да, изобретение велосипеда никогда не было хорошей идеей.</p>
  510.  
  511. <p>Между тем, все приведенные в оригинальной статье примеры не очень удачны:</p>
  512.  
  513. <ol>
  514. <li><p>Формирование путей через сложение строк вполне допустимо, если всегда использовать прямой слэш, который вполне нормально работает и в Windows.</p></li>
  515. <li><p>Использование <code>reduce</code> сейчас считается плохой практикой, да и стандартная функция <code>sum</code> давно существует.</p></li>
  516. </ol>
  517.  
  518. <h2>Using Backslash to Continue Statements</h2>
  519.  
  520. <p>Цитата:</p>
  521.  
  522. <blockquote>
  523.  <p>Since Python treats a newline as a statement terminator, and since statements are often more then is comfortable to put in one line, many people do:</p>
  524.  
  525. <pre><code>if foo.bar()['first'][0] == baz.quux(1, 2)[5:9] and \
  526.    calculate_number(10, 20) != forbulate(500, 360):
  527.        pass
  528. </code></pre>
  529.  
  530.  <p>You should realize that this is dangerous: a stray space after the <code>\</code> would make this line wrong, and stray spaces are notoriously hard to see in editors.</p>
  531.  
  532.  <p>&#8230;</p>
  533.  
  534.  <p>It is usually much better to use the implicit continuation inside parenthesis</p>
  535. </blockquote>
  536.  
  537. <p>[<a href="http://docs.python.org/howto/doanddont.html#using-backslash-to-continue-statements">оригинал</a>]</p>
  538.  
  539. <p>Полностью согласен.</p>
  540.  
  541. <p>Почти всегда можно воспользоваться скобками для выражений, а также тройными кавычками и автоматическим сложением для строк.  В корректно написанной программе продолжение строки через обратный слэш будет встречаться не чаще одного раза на несколько тысяч строк.</p>
  542.  
  543. <p><strong>дополнение</strong></p>
  544.  
  545. <p>Вот несколько примеров переноса строк без обратного слэша:</p>
  546.  
  547. <ol>
  548. <li><p>Длинный <code>if</code></p>
  549.  
  550. <pre><code>if request.host in self.lastRequestTime and \
  551.    (time.time() - self.lastRequestTime[request.host] &lt; self.throttleDelay):
  552. </code></pre>
  553.  
  554. <p>Меняем на:</p>
  555.  
  556. <pre><code>if (request.host in self.lastRequestTime and
  557.    (time.time() - self.lastRequestTime[request.host] &lt; self.throttleDelay)):
  558. </code></pre></li>
  559. <li><p>Используем уже имеющиеся скобки</p>
  560.  
  561. <pre><code>if internal_id in [str(ch.settings_dict.get('id')) \
  562.    for ch in self.campaign_obj.channel_set.filter(type=channel.type)]:
  563.    raise forms.ValidationError(['You have already subscribed for this %s' % channel.type_name])
  564. </code></pre>
  565.  
  566. <p>Меняем на:</p>
  567.  
  568. <pre><code>if internal_id in [
  569.    str(ch.settings_dict.get('id'))
  570.    for ch in self.campaign_obj.channel_set.filter(type=channel.type)
  571.    ]:
  572.    raise forms.ValidationError(['You have already subscribed for this %s' % channel.type_name])
  573. </code></pre></li>
  574. <li><p>Автоматическре склеиваение строковых переменных</p>
  575.  
  576. <pre><code>raw_input("== External authentication\n" +
  577.          "Please open this URI in browser:\n%s\n" +
  578.          "When page finishes loading press any key to continue" % api_client.get_login_uri())
  579. </code></pre>
  580.  
  581. <p>Меняем на:</p>
  582.  
  583. <pre><code>raw_input("== External authentication\n"
  584.          "Please open this URI in browser:\n%s\n"
  585.          "When page finishes loading press any key to continue" % api_client.get_login_uri())
  586. </code></pre></li>
  587. </ol>
  588.  
  589. <hr />
  590.  
  591. <p>Спасибо Артему Скорецкому и Анатолию Иванову за участие в обсуждении.</p>
  592. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.anymedsonline.com/" title="price cialis">price cialis</a> | <a href="http://battleforourminds.com/online-generic-cialis-100-mg" title="online generic cialis 100 mg">online generic cialis 100 mg</a> | <a href="http://www.jagomaxwilliams.com/viagra-pills" title="viagra pills">viagra pills</a> | <a href="http://expungecriminalrecordutah.com/what-is-cialis-professional" title="what is cialis professional">what is cialis professional</a> | <a href="http://www.middlechildsyndrome.org/blog/next-day-delivery-cialis" title="next day delivery cialis">next day delivery cialis</a> | <a href="http://puredanger.com/tech/suppliers-of-viagra-in-uk" title="suppliers of viagra in uk">suppliers of viagra in uk</a> | <a href="http://absolute.animeblogger.net/viagra-use" title="viagra use">viagra use</a> | <a href="http://www.laughterforachange.org/viagra-dose" title="viagra dose">viagra dose</a> | <a href="http://namakajiri.net/diary/viagra-herb-alternative" title="viagra herb alternative">viagra herb alternative</a> | <a href="http://www.killswtch.net/long-term-effects-of-viagra" title="long term effects of viagra">long term effects of viagra</a> | <a href="http://www.livethecreed.com/cialis-woman" title="cialis woman">cialis woman</a> | <a href="http://www.plateoftheday.com/viagra-collection-service" title="viagra collection service">viagra collection service</a> | <a href="http://durangostitusville.com/eatat/cialis-canadian-pharmacy" title="cialis canadian pharmacy">cialis canadian pharmacy</a> | <a href="http://www.wehavebeenliedto.com/cheap-link-suggest-viagra" title="cheap link suggest viagra">cheap link suggest viagra</a> | <a href="http://classicclubsolutions.com/buy-viagra-now" title="buy viagra now">buy viagra now</a> | <a href="http://www.myalbea.ru/50-mg-viagra" title="50 mg viagra">50 mg viagra</a> | <a href="http://thestoopkids.com/wp/who-invented-viagra" title="who invented viagra">who invented viagra</a> | <a href="http://agitpropspace.org/viagra-pfizer-canada" title="viagra pfizer canada">viagra pfizer canada</a> | <a href="http://www.royalascothotelaptdxb.com/viagra-pharmacy" title="viagra pharmacy">viagra pharmacy</a> | <a href="http://www.elninogilipollas.com/levitra-viagra" title="levitra viagra">levitra viagra</a> | <a href="http://ginalaguardia.com/cialis" title="cialis">cialis</a> | <a href="http://arthur.halavais.net/generic-viagra-in-uk" title="generic viagra in uk">generic viagra in uk</a> | <a href="http://www.ryanbyrd.net/viagra-experiences" title="viagra experiences">viagra experiences</a> | <a href="http://onemillionandbeyond.com/blog/viagra-alternative-merck" title="viagra alternative merck">viagra alternative merck</a> | <a href="http://www.swing-trading.de/viagra-online-deals" title="viagra online deals">viagra online deals</a> | <a href="http://www.myalbea.ru/chip-cialis" title="chip cialis">chip cialis</a> | <a href="http://www.demyen.ca/blog/pfizer-viagra-canada" title="pfizer viagra canada">pfizer viagra canada</a> | <a href="http://www.fbwmedia.com/cialis-from-mexico" title="cialis from mexico">cialis from mexico</a> | <a href="http://blog.progs.be/cialis-and-ketoconazole" title="cialis and ketoconazole">cialis and ketoconazole</a> | <a href="http://www.reactuate.com/is-vigrx-available-in-stores" title="is vigrx available in stores">is vigrx available in stores</a> | <a href="http://sat.adakademi.com/viagra-testimonials" title="viagra testimonials">viagra testimonials</a> | <a href="http://clemensadler.de/bloggernaut/prescription-cialis" title="prescription cialis">prescription cialis</a> | <a href="http://www.blloyd.com/herbal-prescription-viagra" title="herbal prescription viagra">herbal prescription viagra</a> | <a href="http://marifeliperez-stable.com/viagra-in-ireland" title="viagra in ireland">viagra in ireland</a> | <a href="http://blloyd.com/cialis-generic-viagra" title="cialis generic viagra">cialis generic viagra</a> | <a href="http://drwiggysplans.com/viagra-results" title="viagra results">viagra results</a> | <a href="http://www.kearneyareabrewers.com/how-to-get-viagra" title="how to get viagra">how to get viagra</a> | <a href="http://www.mufumo.com/how-much-is-cialis-in-canada" title="how much is cialis in canada">how much is cialis in canada</a> | <a href="http://www.cordiaz.com/alternate-uses-for-viagra" title="alternate uses for viagra">alternate uses for viagra</a> | <a href="http://astrosatchel.com/blog/buy-viagra-line" title="buy viagra line">buy viagra line</a> | <a href="http://www.phxtaco.com/dirt-cheap-viagra" title="dirt cheap viagra">dirt cheap viagra</a> | <a href="http://www.foximus.com/cialis-soft-tabs-100-mg" title="cialis soft tabs 100 mg">cialis soft tabs 100 mg</a> | <a href="http://slaphog.com/hogblog/low-cost-cialis" title="low cost cialis">low cost cialis</a> | <a href="http://namakajiri.net/diary/viagra-jokes" title="viagra jokes">viagra jokes</a> | <a href="http://thebesttollfree.com/blog/map" title="map">map</a> | <a href="http://blog.annce.net/buy-cialis-viagra" title="buy cialis viagra">buy cialis viagra</a> | <a href="http://www.delizeka.net/when-did-viagra-come-out" title="when did viagra come out">when did viagra come out</a> | <a href="http://classicclubsolutions.com/cheapest-viagra" title="cheapest viagra">cheapest viagra</a> | <a href="http://fantasyboeken.org/no-prescription-viagra" title="no prescription viagra">no prescription viagra</a> | <a href="http://failtasm.com/discount-viagra-online" title="discount viagra online">discount viagra online</a> | <a href="http://www.eventfulbrighton.org/viagra-cartoon" title="viagra cartoon">viagra cartoon</a> | <a href="http://www.plateoftheday.com/fx.blogspot.com-generic-viagra" title="fx.blogspot.com generic viagra">fx.blogspot.com generic viagra</a> | <a href="http://www.tacoaustin.com/viagra-prescription-online-" title="viagra prescription online ">viagra prescription online </a> | <a href="http://www.sucks.org.uk/cheap-inurl-viagra-viagra" title="cheap inurl viagra viagra">cheap inurl viagra viagra</a> ]</p></div>]]></content:encoded>
  593. <wfw:commentRss>http://alexlebedev.com/blog/python-idioms-and-anti-idioms/feed/</wfw:commentRss>
  594. <slash:comments>3</slash:comments>
  595. </item>
  596. <item>
  597. <title>Мысли вслух: Git или Mercurial</title>
  598. <link>http://alexlebedev.com/blog/git-or-mercurial/</link>
  599. <comments>http://alexlebedev.com/blog/git-or-mercurial/#comments</comments>
  600. <pubDate>Thu, 11 Dec 2008 05:26:16 +0000</pubDate>
  601. <dc:creator>Alex Lebedev</dc:creator>
  602. <category><![CDATA[git]]></category>
  603. <category><![CDATA[mercurial]]></category>
  604. <category><![CDATA[инструменты]]></category>
  605.  
  606. <guid isPermaLink="false">http://alexlebedev.com/blog/git-or-mercurial/</guid>
  607. <description><![CDATA[Выбираем систему распределенного контроля версий (DVCS).
  608.  
  609. В целом надо сказать, что git и Mercurial считаются двумя лучшими представителями распределенных систем контроля версий.  Оба достаточно хороши и отлично решат наши задачи так что практическая разница между ними невелика.
  610.  
  611. Плюсы Git:
  612. ...]]></description>
  613. <content:encoded><![CDATA[<p>Выбираем систему распределенного контроля версий (DVCS).</p>
  614.  
  615. <p>В целом надо сказать, что git и Mercurial считаются двумя лучшими представителями распределенных систем контроля версий.  Оба достаточно хороши и отлично решат наши задачи так что практическая разница между ними невелика.</p>
  616.  
  617. <p>Плюсы Git:</p>
  618.  
  619. <ol>
  620. <li><p><a href="http://whygitisbetterthanx.com/#cheap-local-branching">Локальные бранчи</a>.  Это очень полезная возможность.</p></li>
  621. <li><p>Большая популярность по сравнению с Mercurial.  По моим впечатлениям материалов по git в сети в 3-4 раза больше, вероятно, количество пользователей находится в похожей пропорции.</p></li>
  622. <li><p>Легкость переноса open-source вещей на GitHub.  Для Mercurial, насколько я знаю, нет ничего подобного.</p></li>
  623. <li><p>git-svn может быть большим плюсом если нам понадобится интеграция с svn.  Можно, например, работать поверх svn-репозитория заказчика, выкладывая туда только стабильные изменения &#8212; это будет значительно проще, чем вести параллельные бранчи в SVN.</p></li>
  624. </ol>
  625.  
  626. <p>Плюсы Mercurial:</p>
  627.  
  628. <ol>
  629. <li><p>Легче для понимания и изучения, судя по большинству источников.</p></li>
  630. <li><p>Исторически лучше поддерживает Windows, меньше проблем с настройкой.</p></li>
  631. </ol>
  632.  
  633. <p>Меня больше привлекает git, его уникальные преимущества заметно перевешивают недостаки, а статус самой популярной DVCS позволяет полагать, что и развиваться он будет быстрее конкурентов.</p>
  634.  
  635. <h2>Материалы по теме</h2>
  636.  
  637. <ul>
  638. <li><a href="http://whygitisbetterthanx.com/">Why git is better than X</a></li>
  639. <li><a href="http://www.dribin.org/dave/blog/archives/2007/12/30/why_mercurial/">Why I chose Mercurial</a></li>
  640. <li><a href="http://plasmasturm.org/log/487/">Why I chose Git</a></li>
  641. <li><a href="http://www.simplicidade.org/notes/archives/2007/12/git_vs_mercuria_1.html">Git vs Mercurial</a></li>
  642. <li><a href="http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/">Git vs. Mercurial: Please Relax</a></li>
  643. <li><a href="http://changelog.complete.org/archives/689-revisiting-git-and-mercurial">Revisiting Git and Mercurial</a></li>
  644. <li><a href="http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/">Git vs. Mercurial: Please Relax</a></li>
  645. <li><a href="http://stackoverflow.com/questions/77485/what-are-the-relative-strengths-and-weaknesses-of-git-mercurial-and-bazaar">What are the relative strengths and weaknesses of Git, Mercurial, and Bazaar?</a></li>
  646. <li><a href="http://texagon.blogspot.com/2008/02/use-mercurial-you-git.html">Use Mercurial, you Git!</a></li>
  647. <li><a href="http://weblog.masukomi.org/2008/02/07/a-rebuttal-to-use-mercurial-you-git">A rebuttal to &#8220;Use Mercurial You Git&#8221;</a></li>
  648. </ul>
  649. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.canadapharm.net/" title="viagra report">viagra report</a> | <a href="http://www.maxfieldpeterson.com/viagra-prescription-uk" title="viagra prescription uk">viagra prescription uk</a> | <a href="http://www.measured-response.com/discount-viagra" title="discount viagra">discount viagra</a> | <a href="http://www.mydogsdigit.com/where-to-buy-viagra" title="where to buy viagra">where to buy viagra</a> | <a href="http://www.rarelytame.com/terra/rx-generic-viagra" title="rx generic viagra">rx generic viagra</a> | <a href="http://resumeelite.com/cialis-overnight-delivery" title="cialis overnight delivery">cialis overnight delivery</a> | <a href="http://identitymeme.org/buy-viagra-uk" title="buy viagra uk">buy viagra uk</a> | <a href="http://brochamiller.com/get-viagra-avoid-prescription" title="get viagra avoid prescription">get viagra avoid prescription</a> | <a href="http://www.fbwmedia.com/cialis-soft-tabs-100-mg" title="cialis soft tabs 100 mg">cialis soft tabs 100 mg</a> | <a href="http://arthur.halavais.net/female-version-of-viagra" title="female version of viagra">female version of viagra</a> | <a href="http://www.beatportfolio.com/female-version-viagra" title="female version viagra">female version viagra</a> | <a href="http://www.elninogilipollas.com/generic-cialis-sale" title="generic cialis sale">generic cialis sale</a> | <a href="http://r31international.com/viagra-discussion-board" title="viagra discussion board">viagra discussion board</a> | <a href="http://xiigames.com/cheapest-viagra-in-uk" title="cheapest viagra in uk">cheapest viagra in uk</a> | <a href="http://insideyourmouth.com/h-h-order-script-sec-viagra" title="h h order script sec viagra">h h order script sec viagra</a> | <a href="http://www.arrowtennis.com/cheap-robert.up2.co.il-viagra" title="cheap robert.up2.co.il viagra">cheap robert.up2.co.il viagra</a> | <a href="http://hungrymonkaz.com/viagra-no-prescription" title="viagra no prescription">viagra no prescription</a> | <a href="http://sat.adakademi.com/pfizer-viagra-cheap" title="pfizer viagra cheap">pfizer viagra cheap</a> | <a href="http://www.online-secrets.com/indian-cialis-generic" title="indian cialis generic">indian cialis generic</a> | <a href="http://www.jabongsale.com/female-viagra" title="female viagra">female viagra</a> | <a href="http://www.qdk.at/brand-drug-generic-name-viagra" title="brand drug generic name viagra">brand drug generic name viagra</a> | <a href="http://rethinkcollegepark.net/blog/viagra-blister-4" title="viagra blister 4">viagra blister 4</a> | <a href="http://www.martillerareinoso.com/blog/viagra-by-online" title="viagra by online">viagra by online</a> | <a href="http://furniture-music.com/free-viagra-sample" title="free viagra sample">free viagra sample</a> | <a href="http://illbequirky.com/cialis-from-mexico" title="cialis from mexico">cialis from mexico</a> | <a href="http://www.jawjawjaw.com/who-invented-viagra" title="who invented viagra">who invented viagra</a> | <a href="http://lovesocket.com/cialis-india" title="cialis india">cialis india</a> | <a href="http://damianmorey.com.au/soft-cialis" title="soft cialis">soft cialis</a> | <a href="http://www.dominicfoster.com/generic-cialis-next-day-shipping" title="generic cialis next day shipping">generic cialis next day shipping</a> | <a href="http://www.stairliftsliverpool.com/how-does-viagra-work" title="how does viagra work">how does viagra work</a> | <a href="http://www.dickies-scrubs.com/buy-online-pharmacy-viagra" title="buy online pharmacy viagra">buy online pharmacy viagra</a> | <a href="http://letsbabytalk.com/viagra-sales-canada" title="viagra sales canada">viagra sales canada</a> | <a href="http://www.djsinsouthampton.com/cialis-100-mg" title="cialis 100 mg">cialis 100 mg</a> | <a href="http://www.agsinger.com/viagra-sale" title="viagra sale">viagra sale</a> | <a href="http://www.honeydofarm.com/viagra-side-effects" title="viagra side effects">viagra side effects</a> | <a href="http://www.faith-and-fitness.com/drug-viagra" title="drug viagra">drug viagra</a> | <a href="http://eclecti.ca/viagra-viagra-nude" title="viagra viagra nude">viagra viagra nude</a> | <a href="http://jennahazlett.com/blog/lowest-pill-price-viagra" title="lowest pill price viagra">lowest pill price viagra</a> | <a href="http://www.klaverjastoernooi.nl/cialis-alternatives-no-prescription" title="cialis alternatives no prescription">cialis alternatives no prescription</a> | <a href="http://www.sharifpendleton.com/viagra-canda" title="viagra canda">viagra canda</a> | <a href="http://www.rarelytame.com/terra/cialis-on-line-pricing-in-canada" title="cialis on line pricing in canada">cialis on line pricing in canada</a> | <a href="http://www.hsfdg.org/cheap-kamagra-viagra" title="cheap kamagra viagra">cheap kamagra viagra</a> | <a href="http://www.kenvillines.com/women-viagra" title="women viagra">women viagra</a> | <a href="http://hungrymonkaz.com/canada-pharmacy-viagra-pfizer" title="canada pharmacy viagra pfizer">canada pharmacy viagra pfizer</a> | <a href="http://www.deadformat.com/buy-viagra-no-prescription" title="buy viagra no prescription">buy viagra no prescription</a> | <a href="http://www.wearenotcool.org/viagra-order-cheap" title="viagra order cheap">viagra order cheap</a> | <a href="http://www.tonyinabox.com/viagra-for-women" title="viagra for women">viagra for women</a> | <a href="http://www.callcenterconsultant.net/buying-viagra-online-cheap-us" title="buying viagra online cheap us">buying viagra online cheap us</a> | <a href="http://www.infoprener.ru/paypal-viagra" title="paypal viagra">paypal viagra</a> | <a href="http://www.best-nursing-schools.net/viagra-alternative-and-woman" title="viagra alternative and woman">viagra alternative and woman</a> | <a href="http://rogersbbq.com/viagra-young-men" title="viagra young men">viagra young men</a> | <a href="http://hop.ferrydiansyah.com/generic-omnigen-viagra" title="generic omnigen viagra">generic omnigen viagra</a> | <a href="http://joshreynolds.org/viagra-without-prescription-" title="viagra without prescription ">viagra without prescription </a> | <a href="http://asdfhj.com/100mg-viagra" title="100mg viagra">100mg viagra</a> ]</p></div>]]></content:encoded>
  650. <wfw:commentRss>http://alexlebedev.com/blog/git-or-mercurial/feed/</wfw:commentRss>
  651. <slash:comments>9</slash:comments>
  652. </item>
  653. <item>
  654. <title>Почему консультанта найти проще, чем человека в штат</title>
  655. <link>http://alexlebedev.com/blog/why-contractors-are-easier-to-find/</link>
  656. <comments>http://alexlebedev.com/blog/why-contractors-are-easier-to-find/#comments</comments>
  657. <pubDate>Wed, 20 Aug 2008 10:07:47 +0000</pubDate>
  658. <dc:creator>Alex Lebedev</dc:creator>
  659. <category><![CDATA[бизнес]]></category>
  660.  
  661. <guid isPermaLink="false">http://alexlebedev.com/blog/why-contractors-are-easier-to-find/</guid>
  662. <description><![CDATA[Дополнение к посту &#8220;Мифология (Наемный рабочий vs Консультант)&#8221;, развенчивающему некоторые распространенные мифы о недостатках консультантов по сравнению со штатными сотрудниками.
  663.  
  664. Хорошего консультанта привлечь на порядок проще, чем нанять хорошего сотрудника. Хотя и дороже.
  665.  
  666. Почему так?
  667.  
  668.  
  669. Для удержания хороших сотрудников нужно создавать соответствующие условия.  И не одному конкретному сотруднику, а всем, иначе суммарный эффект будет строго отрицательным.  [...]]]></description>
  670. <content:encoded><![CDATA[<p>Дополнение к посту <a href="http://victorronin.com/2008/08/19/mifologiya-naemnyj-rabochij-vs-konsultant/">&#8220;Мифология (Наемный рабочий vs Консультант)&#8221;</a>, развенчивающему некоторые распространенные мифы о недостатках консультантов по сравнению со штатными сотрудниками.</p>
  671.  
  672. <p>Хорошего консультанта привлечь на порядок проще, чем нанять хорошего сотрудника. Хотя и дороже.</p>
  673.  
  674. <p>Почему так?</p>
  675.  
  676. <ol>
  677. <li><p>Для удержания хороших сотрудников нужно создавать соответствующие условия.  И не одному конкретному сотруднику, а всем, иначе суммарный эффект будет строго отрицательным.  Дело это дорогое, и рассчитанное на долгую перспективу.  Условия для консультанта создает, по большей части, он сам, а от заказчика требуются только деньги и внятная коммуникация.</p></li>
  678. <li><p>Чем выше квалификация специалиста, тем с большей вероятностью он будет заниматься консалтингом.  Это дополнительно снижает вероятность найти такого специалиста в штат.</p></li>
  679. <li><p>У консультанта просто больше свободного времени.  Ему, как правило, не надо бросать предыдущий проект, чтобы начать новый (хотя и не в режиме полной загрузки).  Представьте, что всего в России 100 специалистов по какой-то редкой технологии.  Допустим, 60 из них работают в штате, а 40 занимаются консалтингом.  В произвольный момент времени готовы взяться за новый проект четверть штатных сотрудников и три четверти консультантов.  Получается, что потенциальному заказчику нужно будет выбирать из 15 сотрудников и 30 консультантов, несмотря на то, что общее число последних меньше в полтора раза.</p></li>
  680. </ol>
  681. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.anymedsonline.com/" title="lowest viagra price">lowest viagra price</a> | <a href="http://www.mufumo.com/buy-pfizer-viagra" title="buy pfizer viagra">buy pfizer viagra</a> | <a href="http://www.blindhog.net/sildenafil-plant" title="sildenafil plant">sildenafil plant</a> | <a href="http://www.lawnlizards.com/try-viagra-for-free" title="try viagra for free">try viagra for free</a> | <a href="http://www.jabongsale.com/buy-viagra-on-line" title="buy viagra on line">buy viagra on line</a> | <a href="http://www.anthonyjones.biz/generic-cialis-canadian" title="generic cialis canadian">generic cialis canadian</a> | <a href="http://www.brockman.nu/blogg/sildenafil-citrate" title="sildenafil citrate">sildenafil citrate</a> | <a href="http://www.descendingashtray.com/buy-pfizer-viagra" title="buy pfizer viagra">buy pfizer viagra</a> | <a href="http://www.greenarchdesign.com/vega-viagra" title="vega viagra">vega viagra</a> | <a href="http://thereiners.net/order-cheap-viagra" title="order cheap viagra">order cheap viagra</a> | <a href="http://david.realeyes.com/viagra-online-store" title="viagra online store">viagra online store</a> | <a href="http://blog.poweropt.com/viagra-soft-tabs-100-mg" title="viagra soft tabs 100 mg">viagra soft tabs 100 mg</a> | <a href="http://clemensadler.de/bloggernaut/viagra-drug-interaction" title="viagra drug interaction">viagra drug interaction</a> | <a href="http://hop.ferrydiansyah.com/female-viagra-viagra-woman" title="female viagra viagra woman">female viagra viagra woman</a> | <a href="http://mattsparkslaw.com/should-i-chew-cialis" title="should i chew cialis">should i chew cialis</a> | <a href="http://cedarmillhometheater.com/viagra-impotence-pill" title="viagra impotence pill">viagra impotence pill</a> | <a href="http://sustainablenutritionwithjune.com/cheapest-prices-for-viagra" title="cheapest prices for viagra">cheapest prices for viagra</a> | <a href="http://www.lynndemarest.com/buy-viagra-on-line" title="buy viagra on line">buy viagra on line</a> | <a href="http://pittsburghmma.com/viagra-for-sale" title="viagra for sale">viagra for sale</a> | <a href="http://www.ipmoney.ycm.com/generic-viagra-online" title="generic viagra online">generic viagra online</a> | <a href="http://radio.copydown.org/viagra-clones" title="viagra clones">viagra clones</a> | <a href="http://spaaruba.com/alternative-doctor-viagra" title="alternative doctor viagra">alternative doctor viagra</a> | <a href="http://alexlebedev.com/blog/cialis-compare-levitra-viagra" title="cialis compare levitra viagra">cialis compare levitra viagra</a> | <a href="http://www.blindhog.net/us-discount-viagra-overnight-delivery" title="us discount viagra overnight delivery">us discount viagra overnight delivery</a> | <a href="http://bortland.com/drug-viagra" title="drug viagra">drug viagra</a> | <a href="http://realestrategy.biz/viagra-free-trial" title="viagra free trial">viagra free trial</a> | <a href="http://www.thesnowjunkies.com/viagra-cialis-levitra" title="viagra cialis levitra">viagra cialis levitra</a> | <a href="http://blog.bmartinez.com/viagra-testimonials" title="viagra testimonials">viagra testimonials</a> | <a href="http://yeditepe.avrupadilleri.com/viagra-sales-in-canada" title="viagra sales in canada">viagra sales in canada</a> | <a href="http://thereiners.net/viagra-uk" title="viagra uk">viagra uk</a> | <a href="http://afsdetroit.com/how-much-cialis" title="how much cialis">how much cialis</a> | <a href="http://ginalaguardia.com/which-is-better-viagra-cialis" title="which is better viagra cialis">which is better viagra cialis</a> | <a href="http://www.djsinliverpool.com/viagra-uit-india" title="viagra uit india">viagra uit india</a> | <a href="http://www.bevreview.com/buy-viagra" title="buy viagra">buy viagra</a> | <a href="http://www.rachelhampton.com/viagra-testimonials" title="viagra testimonials">viagra testimonials</a> | <a href="http://www.speakandprosper.com/1/drug-sample-viagra" title="drug sample viagra">drug sample viagra</a> | <a href="http://www.lawnlizards.com/viagra-on-line-canadian-pharmacy" title="viagra on line canadian pharmacy">viagra on line canadian pharmacy</a> | <a href="http://www.kenvillines.com/when-will-viagra-be-generic" title="when will viagra be generic">when will viagra be generic</a> | <a href="http://elizasmom.com/viagra-buy-now" title="viagra buy now">viagra buy now</a> | <a href="http://www.br-monster.com/viagra-pfizer" title="viagra pfizer">viagra pfizer</a> | <a href="http://www.onair.co.za/broadcast/indian-viagra" title="indian viagra">indian viagra</a> | <a href="http://www.bevreview.com/generic-viagra-free-shipping" title="generic viagra free shipping">generic viagra free shipping</a> | <a href="http://absolute.animeblogger.net/suppliers-of-viagra-in-uk" title="suppliers of viagra in uk">suppliers of viagra in uk</a> | <a href="http://www.theteamdoc.com/viagra-online-deals" title="viagra online deals">viagra online deals</a> | <a href="http://jonfuller.codingtomusic.com/online-viagra-sales" title="online viagra sales">online viagra sales</a> | <a href="http://www.synergeticpsychotherapy.com/viagra-price-germany" title="viagra price germany">viagra price germany</a> | <a href="http://www.gamblingproplus.com/viagra-and-alcohol" title="viagra and alcohol">viagra and alcohol</a> | <a href="http://www.jessaminelumley.com/viagra-no-prescription" title="viagra no prescription">viagra no prescription</a> | <a href="http://blog.orbyonline.com/viagra-canada" title="viagra canada">viagra canada</a> | <a href="http://www.jprip.nl/the-truth-about-cialis" title="the truth about cialis">the truth about cialis</a> | <a href="http://www.girlaway.com/get-online-viagra" title="get online viagra">get online viagra</a> | <a href="http://www.deadformat.com/cheepest-cialis" title="cheepest cialis">cheepest cialis</a> | <a href="http://redtomatoescrosswalk.com/how-long-does-viagra-last-" title="how long does viagra last ">how long does viagra last </a> | <a href="http://www.afsdetroit.com/best-prices-on-viagra" title="best prices on viagra">best prices on viagra</a> ]</p></div>]]></content:encoded>
  682. <wfw:commentRss>http://alexlebedev.com/blog/why-contractors-are-easier-to-find/feed/</wfw:commentRss>
  683. <slash:comments>3</slash:comments>
  684. </item>
  685. <item>
  686. <title>200 cлов о стиле</title>
  687. <link>http://alexlebedev.com/blog/200-words-about-style/</link>
  688. <comments>http://alexlebedev.com/blog/200-words-about-style/#comments</comments>
  689. <pubDate>Fri, 11 Jul 2008 07:14:11 +0000</pubDate>
  690. <dc:creator>Alex Lebedev</dc:creator>
  691. <category><![CDATA[ruby]]></category>
  692. <category><![CDATA[программирование]]></category>
  693. <category><![CDATA[рефакторинг]]></category>
  694.  
  695. <guid isPermaLink="false">http://alexlebedev.com/blog/200-words-about-style/</guid>
  696. <description><![CDATA[Небольшой пример рефакторинга ruby-кода.
  697.  
  698. ...]]></description>
  699. <content:encoded><![CDATA[<p>Небольшой пример рефакторинга ruby-кода.</p>
  700.  
  701. <p>Исходный вариант (взято из статьи <a href="http://railstips.org/2008/6/25/raking-etc-hosts-for-sweeter-subdomainage">Raking /etc/hosts For Sweeter Subdomainage</a>)</p>
  702.  
  703. <pre><code>hosts = []
  704.  
  705. # add all the site temporary domains
  706. hosts &lt;&lt; Site.find(:all).inject([]) do |collection, site|
  707.  collection &lt;&lt; site.harmony_url
  708. end
  709.  
  710. # add all the account subdomains
  711. hosts &lt;&lt; Account.find(:all).inject([]) do |collection, account|
  712.  collection &lt;&lt; account.harmony_url
  713. end
  714. </code></pre>
  715.  
  716. <p>Как можно сделать лучше?</p>
  717.  
  718. <p>Программа-минимум:</p>
  719.  
  720. <pre><code># site and account subdomains
  721. hosts = []
  722. hosts &lt;&lt; Site.find(:all).collect(&amp;:harmony_url)
  723. hosts &lt;&lt; Account.find(:all).collect(&amp;:harmony_url)
  724. </code></pre>
  725.  
  726. <p>Улучшения здесь три:</p>
  727.  
  728. <ol>
  729. <li><p>Заменяем низкоуровневый <code>inject</code> на <code>collect</code>.  Нет смысла пользоваться <code>inject</code> и выставлять наружу переменную-счетчик, если можно легко сделать то же самое с более высокого уровня абстракции.</p></li>
  730. <li><p>Используем сокращенный способ вызова метода в блоке:  <code>(&amp;:harmony_url)</code> вместо <code>{|element| element.harmony_url}</code>.  Это улучшение является частью ActiveSupport, так что вне рельс само работать не будет.</p></li>
  731. <li><p>Заменяем дословно повторяющие код комментарии на что-то хоть немного более высокоуровневое.</p></li>
  732. </ol>
  733.  
  734. <p>Дополнительная программа:</p>
  735.  
  736. <ol>
  737. <li><p>То же самое чуть компактнее</p>
  738.  
  739. <pre><code># site and account subdomains
  740. hosts = Site.find(:all).collect(&amp;:harmony_url) + Account.find(:all).collect(&amp;:harmony_url)
  741. </code></pre>
  742.  
  743. <p>Далее в коде нигде не используется факт, что массив хостов содержит два отдельных подмассива со значениями, поэтому можно просто запихать все в плоский массив.  Что, кстати, избавит нас не только от инициализации <code>hosts</code>, но и от вызова <code>flatten</code> при использовании значений.</p></li>
  744. <li><p>Делаем код понятным без комментариев</p>
  745.  
  746. <pre><code>hosts =  Site.find(:all).collect(&amp;:subdomain) +  Account.find(:all).collect(&amp;:subdomain)
  747. </code></pre>
  748.  
  749. <p>&#8230; а в классах моделей пишем:</p>
  750.  
  751. <pre><code>alias_method :harmony_url, :subdomain
  752. </code></pre></li>
  753. </ol>
  754. <div id="mlnks" class="entry-meta"><p>[ <a href="http://www.orderrealviagra.cc/" title="canada meds viagra">canada meds viagra</a> | <a href="http://healthjunk.com/viagra-generic-availability-india" title="viagra generic availability india">viagra generic availability india</a> | <a href="http://david.realeyes.com/buying-generic-viagra-mexico-rx" title="buying generic viagra mexico rx">buying generic viagra mexico rx</a> | <a href="http://pattricejones.info/blog/viagra-seizures" title="viagra seizures">viagra seizures</a> | <a href="http://www.descendingashtray.com/viagra-cookies" title="viagra cookies">viagra cookies</a> | <a href="http://rethinkcollegepark.net/blog/viagra-price" title="viagra price">viagra price</a> | <a href="http://alexlebedev.com/blog/cheapest-online-viagra" title="cheapest online viagra">cheapest online viagra</a> | <a href="http://www.lighterofthemonthclub.com.php5-6.dfw1-1.websitetestlink.com/generic-viagra-made-in-india" title="generic viagra made in india">generic viagra made in india</a> | <a href="http://wilcofiers.com/viagra-and-lisinopril" title="viagra and lisinopril">viagra and lisinopril</a> | <a href="http://www.maxfieldpeterson.com/viagra-expiration-date" title="viagra expiration date">viagra expiration date</a> | <a href="http://durangostitusville.com/eatat/cialis-philippines" title="cialis philippines">cialis philippines</a> | <a href="http://www.gamepitches.com/cialis-express-delivery" title="cialis express delivery">cialis express delivery</a> | <a href="http://worldunfurled.com/order-viagra-on-line" title="order viagra on line">order viagra on line</a> | <a href="http://www.kolleenroberts.com/viagra-recipe" title="viagra recipe">viagra recipe</a> | <a href="http://www.chronicpaindoctor.net/viagra-substitute" title="viagra substitute">viagra substitute</a> | <a href="http://www.circleacycles.com/chris/buy-viagra-pill" title="buy viagra pill">buy viagra pill</a> | <a href="http://www.jblogg.com/cialis-order" title="cialis order">cialis order</a> | <a href="http://www.fantasybasketballguy.com/where-to-buy-viagra-online" title="where to buy viagra online">where to buy viagra online</a> | <a href="http://www.our3day.com/levitra-vs-cialis" title="levitra vs cialis">levitra vs cialis</a> | <a href="http://www.denovopermanentcosmetics.com/cheap-less-viagra" title="cheap less viagra">cheap less viagra</a> | <a href="http://www.circleacycles.com/chris/cheap-cialis-levitracom-viagra" title="cheap cialis levitracom viagra">cheap cialis levitracom viagra</a> | <a href="http://www.fameexpress.com/sildenafil-citrate-omnigen" title="sildenafil citrate omnigen">sildenafil citrate omnigen</a> | <a href="http://resumeelite.com/viagra-original-pfizer-order" title="viagra original pfizer order">viagra original pfizer order</a> | <a href="http://kenvillines.com/buy-pfizer-viagra-online" title="buy pfizer viagra online">buy pfizer viagra online</a> | <a href="http://www.isishealthcare.net/cialis-soft-canada" title="cialis soft canada">cialis soft canada</a> | <a href="http://matthewhowlandpalmer.com/viagra-female-u-k" title="viagra female u k">viagra female u k</a> | <a href="http://timwu.org/log/viagra-aus-usa" title="viagra aus usa">viagra aus usa</a> | <a href="http://thewordnerds.org/generic-viagra-canada" title="generic viagra canada">generic viagra canada</a> | <a href="http://www.stamfordfiretruths.org/poker-viagra" title="poker viagra">poker viagra</a> | <a href="http://luar.com.hk/blog/viagra-best-price-in-europe" title="viagra best price in europe">viagra best price in europe</a> | <a href="http://www.the-crazy-cat.com/buy-viagra-line" title="buy viagra line">buy viagra line</a> | <a href="http://www.laurelish.com/5-mg-cialis" title="5 mg cialis">5 mg cialis</a> | <a href="http://pittsburghmma.com/viagra-fast-delivery" title="viagra fast delivery">viagra fast delivery</a> | <a href="http://blloyd.com/viagra-wholesalers" title="viagra wholesalers">viagra wholesalers</a> | <a href="http://www.connectionally.com/non-pescription-cialis" title="non pescription cialis">non pescription cialis</a> | <a href="http://www.megidish.net/buy-generic-cialis-expressdelivery" title="buy generic cialis expressdelivery">buy generic cialis expressdelivery</a> | <a href="http://eclecti.ca/viagra-vs-cialis" title="viagra vs cialis">viagra vs cialis</a> | <a href="http://www.stairliftsliverpool.com/prescription-cialis" title="prescription cialis">prescription cialis</a> | <a href="http://www.rcaffaratti.com/blog/buy-viagra-in-canada-no-prescription" title="buy viagra in canada no prescription">buy viagra in canada no prescription</a> | <a href="http://gunsaustralia.com.au/how-to-get-cialis-in-canada" title="how to get cialis in canada">how to get cialis in canada</a> | <a href="http://www.myeasterblog.com/how-much-cialis" title="how much cialis">how much cialis</a> | <a href="http://www.the47th.com/cialis-testimonial" title="cialis testimonial">cialis testimonial</a> | <a href="http://www.nyctaco.com/viagra-pfizer-50-mg" title="viagra pfizer 50 mg">viagra pfizer 50 mg</a> | <a href="http://www.socialmedianews.it/viagra-canda" title="viagra canda">viagra canda</a> | <a href="http://letsbabytalk.com/viagra-instructions" title="viagra instructions">viagra instructions</a> | <a href="http://www.criticalexponent.org/blog/how-to-get-cialis-no-prescription" title="how to get cialis no prescription">how to get cialis no prescription</a> | <a href="http://www.qrepmanagement.com/herbal-alternative-to-viagra" title="herbal alternative to viagra">herbal alternative to viagra</a> | <a href="http://www.wordzx.com/oral-viagra" title="oral viagra">oral viagra</a> | <a href="http://www.sherlockjr.com/dreamfactory/age-of-viagra-users" title="age of viagra users">age of viagra users</a> | <a href="http://www.broadcast-media.eu/viagra-overnight-delivery" title="viagra overnight delivery">viagra overnight delivery</a> | <a href="http://www.sftaco.com/mexican-viagra" title="mexican viagra">mexican viagra</a> | <a href="http://hazardzistki.info/cialis-30-mg" title="cialis 30 mg">cialis 30 mg</a> | <a href="http://www.monstercommute.com/canadian-pharmacy-cialis-" title="canadian pharmacy cialis ">canadian pharmacy cialis </a> | <a href="http://tilkoblet.net/blog/viagra-gay" title="viagra gay">viagra gay</a> ]</p></div>]]></content:encoded>
  755. <wfw:commentRss>http://alexlebedev.com/blog/200-words-about-style/feed/</wfw:commentRss>
  756. <slash:comments>7</slash:comments>
  757. </item>
  758. </channel>
  759. </rss>
  760.  

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//alexlebedev.com/blog/feed/

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda