<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/printf/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя printf]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 23:20:55 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Внутри поста деньги. Очередной JavaScript-конкурс]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/258245/</guid>
      <link>https://habr.com/ru/articles/258245/?utm_campaign=258245&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/files/e37/627/181/e37627181610414fa772f63d710d3118.png" width="320" align="right"/>Привет, друзья. Тут речь пойдет о маленьких конкурсах JavaScript-программистов, которые проводит стартап Хола. Мне до сих пор кажется, что посетители Хабрахабра — самая целевая аудитория для таких конкурсов, особенно после разделения сайтов на МикроМозг и тот, другой сайт.<br/>
<br/>
Принять участие в описанной здесь коллективной бессознательной потехе могут, конечно, все желающие; памятные подарки включают в себя суммарно чуть больше трех тысяч долларов американских денег (это я специально забегаю вперед для привлечения внимания, такой литературный прием).<br/>
<br/>
Еще в этом посте я постараюсь подытожить опыт, сын ошибок трудных: что уже делали, что получилось, и как с этим теперь жить дальше.<br/>
<br/>
<h4>Про конкурс</h4><br/>
Сразу самое интересное: условия конкурса.<br/>
 <a href="https://habr.com/ru/articles/258245/?utm_campaign=258245&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Всенепременно читать дальше</a>]]></description>
      
      <pubDate>Mon, 18 May 2015 19:54:29 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Я пиарюсь]]></category>
      <category><![CDATA[javascript]]></category><category><![CDATA[конкурс]]></category><category><![CDATA[работа]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Пост о маленьких видеоиграх]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/236713/</guid>
      <link>https://habr.com/ru/articles/236713/?utm_campaign=236713&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="http://js13kgames.com/entries/escape-the-pit"><img src="https://habrastorage.org/files/47c/42a/403/47c42a4036c546b89fff747f6d5d47e9.png" align="right"/></a>Привет, друзья. В этом посте мне бы хотелось рассказать, как я писал маленькие HTML5-игры для <a href="http://js13kgames.com/">конкурса js13k</a>, какие подводные камни повстречались на этом тернистом пути, и что получилось в результате.<br/>
<br/>
<div class="spoiler"><b class="spoiler_title">Подводные камни на тернистом пути</b><div class="spoiler_text">(Подводные камни на тернистом пути — это русло пересыхающей реки, например. Летом в нем растет всякая трава и другие вегетарианские штуки, а осенью начинаются дожди, и всё уходит под воду. Получается терновник вместе с подводными камнями, очень метафорично и травмоопасно.)</div></div><br/>
Рассказ изобилует ссылками на разные штуки, которые помогли мне в работе, а значит, с некоторой вероятностью пригодятся и вам в схожей ситуации. Вообще цель этого поста — рассказать, как всё на самом деле просто делается. Уверен, это сразу же мотивирует тысячи людей писать всякие видеоигры и другие программы, или не мотивирует.<br/>
<br/>
<h4>Но сначала 77 слов про js13k</h4> <a href="https://habr.com/ru/articles/236713/?utm_campaign=236713&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше, там самое интересное же</a>]]></description>
      
      <pubDate>Sat, 13 Sep 2014 20:56:31 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Разработка игр]]></category>
      <category><![CDATA[gamedev]]></category><category><![CDATA[js13k]]></category><category><![CDATA[html5]]></category><category><![CDATA[css3]]></category><category><![CDATA[javascript]]></category><category><![CDATA[canvas]]></category><category><![CDATA[пирожки]]></category><category><![CDATA[горячие пирожки]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Разгоняем JavaScript вместе (Внимание, конкурс!)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/hola/articles/223207/</guid>
      <link>https://habr.com/ru/companies/hola/articles/223207/?utm_campaign=223207&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/4be/65f/5ad/4be65f5ad8194ee1b19f7f2f35a8f5cb.jpg" align="right" width="400"/>Привет, друзья.<br/>
<br/>
Так получилось, что мы пишем разные высоконагруженные вещи на JS. В отличие от простых сценариев в браузере, оптимизация производительности JS на сервере (речь в основном о Node.js) – тема очень интересная практически. Думаю, присутствующим не надо объяснять, почему быстрый код лучше, чем медленный.<br/>
<br/>
Вообще оптимизация – это далеко не только переписывание на Си или ассемблере «горячих» участков кода. В нашей команде дискуссия о том, как заставить скрипт работать шустрее – явление перманентное. А поскольку существуют объективные критерии оценки (бенчмарк и юнит-тесты), не допускающие патологической ситуации «о вкусах не спорят» – в результате действительно получается быстрый код, снижение нагрузки на сервер, процветание, радость.<br/>
 <a href="https://habr.com/ru/articles/223207/?utm_campaign=223207&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sun, 18 May 2014 11:09:02 GMT</pubDate>
      <dc:creator><![CDATA[printf (Hola)]]></dc:creator>
      <category><![CDATA[Блог компании Hola]]></category><category><![CDATA[Спортивное программирование]]></category><category><![CDATA[JavaScript]]></category>
      <category><![CDATA[javascript]]></category><category><![CDATA[производительность]]></category><category><![CDATA[оптимизация]]></category><category><![CDATA[конкурс]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Readability своими руками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/220983/</guid>
      <link>https://habr.com/ru/articles/220983/?utm_campaign=220983&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/d83/22c/e16/d8322ce16ac2929781cb2f4062960382.jpg" align="right">Поскольку побеждать <s>Великий Китайский</s> Роскомнадзор наша <a href="https://hola.org">штука для обхода блокировок в интернете</a> пока не особенно научилась, а рассказать что-нибудь странное про свою работу все равно хочется, расскажу про реимплементацию похожего на Readability алгоритма при помощи Node.js и <abbr title="Beijing Institute of Technology">Бэйцзинского технологического института</abbr>.<br>
<br>
<h2>Что это вообще такое</h2><br>
Readability — это радикальное продолжение идеи AdBlock убирать с веб-сайтов лишние элементы. Там, где AdBlock старается снести только самые бесполезные для пользователя вещи (в основном рекламу), Readability удаляет заодно скрипты, стили, навигацию и все остальное ненужное. Раньше такой вид страницы называли «версия для печати», хотя на самом-то деле текст предназначен для чтения (отсюда название Readability – «Удобочитаемость»).<br>
<br>
<h3>Лирическое отступление про парсеры</h3><br>
Основная характеристика парсера сайтов, или других слабо структурированных форматов – это количество знаний о частных случаях использования формата в дикой природе.<br> <a href="https://habr.com/ru/articles/220983/?utm_campaign=220983&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше, там самое интересное</a>]]></description>
      
      <pubDate>Sat, 26 Apr 2014 17:07:18 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[Алгоритмы]]></category>
      <category><![CDATA[readability]]></category><category><![CDATA[алгоритм]]></category><category><![CDATA[node.js]]></category><category><![CDATA[sax]]></category><category><![CDATA[парсер]]></category><category><![CDATA[html]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Задача за $500. Часть вторая, про деньги]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/213529/</guid>
      <link>https://habr.com/ru/articles/213529/?utm_campaign=213529&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/d45/803/b81/d45803b814656e22f8d421127892d2ec.png" align="right" width="250"/>В <a href="http://habrahabr.ru/post/193308/">прошлом посте</a> (tl;dr метод поиска сотрудников через конкурсы с денежными призами в интернете, а не по классической схеме «резюме, отдел кадров, работа») с первого комментария началось обсуждение рентабельности подхода, а именно – не слишком ли дорого такие поиски работников обойдутся. Постараюсь ответить на этот вопрос, ну и вообще рассказать, что получилось.<br/>
<br/>
Напомню вкратце общие положения:<br/>
<br/>
<ul>
<li>Всем желающим предложена <a href="http://thecodeil.com/5min_challenge_ru.html">задача</a> на языке Си;</li>
<li>Программист, приславший хорошее решение с первого раза, получает $500, без каких-либо обязательств;</li>
<li>Со второго и более раза – $250;</li>
<li>Трудоустройство (в т.ч. удаленная работа) предлагается при наличии взаимной симпатии;</li>
<li>Никаких резюме, «холодных» рассылок через LinkedIn и т.п. фигни.</li>
</ul> <a href="https://habr.com/ru/articles/213529/?utm_campaign=213529&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше, там самое интересное</a>]]></description>
      
      <pubDate>Sun, 23 Feb 2014 08:05:49 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Я пиарюсь]]></category>
      <category><![CDATA[трудоустройство]]></category><category><![CDATA[поиск сотрудников]]></category><category><![CDATA[удаленная работа]]></category><category><![CDATA[раздача слонов]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Задача за $500. Как стартап программистов искал]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/193308/</guid>
      <link>https://habr.com/ru/articles/193308/?utm_campaign=193308&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/7d8/af3/6e8/7d8af36e8b11cdce97e3cc1518a684d4.jpg" align="left"/>Многие компании вовсе не стремятся что-то улучшить или поменять в своем отношении к найму сотрудников: срабатывает принцип хорошего админа «работает — не трогай», лень, уверенность в дедовских методах работы кадровиков (нужное подчеркнуть).<br/>
<br/>
Вообще поиск разработчиков — тема достаточно сложная, отчасти из-за обилия противоречивой информации. Только на Хабре в <a href="//habrahabr.ru/hub/hr/">хабе «HR»</a> интересующийся вопросом читатель найдет массу вещей обо всем на свете.<br/>
<br/>
В этом посте я не сделаю никаких душераздирающих выводов, мне просто хочется <s>увеличить уровень энтропии</s> рассказать о том, как находит хороших разработчиков маленький, но очень мультинациональный стартап, что из этого получается, а что не получается. <a href="https://habr.com/ru/articles/193308/?utm_campaign=193308&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше, там самое интересное</a>]]></description>
      
      <pubDate>Wed, 11 Sep 2013 08:33:22 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Я пиарюсь]]></category>
      <category><![CDATA[трудоустройство]]></category><category><![CDATA[поиск работы]]></category><category><![CDATA[поиск сотрудников]]></category><category><![CDATA[раздача слонов]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Строковая интерполяция. Сказка-быль]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/192124/</guid>
      <link>https://habr.com/ru/articles/192124/?utm_campaign=192124&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h4>Постановка задачи</h4><br/>
Совершенно случайно я превратился из питониста в JS-разработчика, и на мою хрупкую детскую психику обрушился непосильный груз вещей, которых в JS нет. Например, нет удобного форматирования строк. На питоне можно написать:<br/>
<pre><code class="python">'hello, %(thing)s' % {'thing': 'world'}
</code></pre><br/>
Или вот так:<br/>
<pre><code class="python">'hello, {thing}'.format(**{'thing': 'world'})
</code></pre><br/>
<img src="https://habrastorage.org/storage3/a92/9aa/9d0/a929aa9d08b94d837843e66649493599.jpg"/><br/>
 <a href="https://habr.com/ru/articles/192124/?utm_campaign=192124&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше, там интересно</a>]]></description>
      
      <pubDate>Sat, 31 Aug 2013 16:57:43 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[javascript]]></category><category><![CDATA[строки]]></category><category><![CDATA[интерполяция]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Связные списки в функциональном стиле]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/175725/</guid>
      <link>https://habr.com/ru/articles/175725/?utm_campaign=175725&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Рассмотрим вариант реализации связных списков через <a href="http://ru.wikipedia.org/wiki/Замыкание_(программирование)">замыкания</a>.<br/>
<br/>
Для обозначения списков будем использовать нотацию, похожую на Haskell: <code>x:xs</code>, где <code>x</code> — начало списка (<code>head</code>), <code>xs</code> — продолжение (<code>tail</code>).<br/>
<br/>
<img src="https://habrastorage.org/storage2/1b0/86c/b44/1b086cb44a25ec279c634994d960374c.png"/><br/>
<br/>
В качестве языка реализации я выбрал JavaScript.<br/>
<br/>
<h3>Конструируем список</h3> <a href="https://habr.com/ru/articles/175725/?utm_campaign=175725&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 06 Apr 2013 16:40:04 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[Ненормальное программирование]]></category><category><![CDATA[Функциональное программирование]]></category>
      <category><![CDATA[функциональное программирование]]></category><category><![CDATA[замыкания]]></category><category><![CDATA[функции высшего порядка]]></category><category><![CDATA[связные списки]]></category><category><![CDATA[структуры данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Поиграть со шрифтами?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/143665/</guid>
      <link>https://habr.com/ru/articles/143665/?utm_campaign=143665&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="http://animuchan.net/randomizr/"><img src="https://habrastorage.org/getpro/habr/post_images/a71/70b/517/a7170b51701e498d16dc4ad128a6eef8.png" alt="Randomizr" title="пффф тыкай уже" align="right"/></a>Здравствуйте, веб-дизайнеры Хабрахабра.<br/>
<br/>
Вашему вниманию предлагается штука, в которой можно неистово играть шрифтами (и не только) — <a href="http://animuchan.net/randomizr/">Web Design Randomizr</a>. Она появилась случайно, задумывалась совершенно иначе, получилось что-то совсем третье, в общем, ничего примечательного.<br/>
<br/>
Пример того, что она делает, видно на изображении справа, если оно загрузилось.<br/>
 <a href="https://habr.com/ru/articles/143665/?utm_campaign=143665&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 11 May 2012 15:59:35 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Веб-дизайн]]></category>
      <category><![CDATA[веб-дизайн]]></category><category><![CDATA[шрифты]]></category><category><![CDATA[тепловая смерть вселенной]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Что не спрашивать на технических интервью]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/285468/</guid>
      <link>https://habr.com/ru/articles/285468/?utm_campaign=285468&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/3f2/b43/ea6/3f2b43ea6dddbc71d02152ba0cc3dbb6.gif" align="right"/>Никогда не требуйте от соискателя эзотерических знаний в какой-то определенной технологии. Нет абсолютно никакой связи между такими знаниями и тем, насколько эффективно человек будет работать в вашей команде.<br/>
<br/>
Идея этого поста пришла мне в голову, когда я наткнулся на статью под названием «<a href="http://darcyclarke.me/development/front-end-job-interview-questions/">Вопросы для интервью на должность Front-end разработчика</a>». Невероятно длинный список, приведенный в статье — это именно те вопросы, которые никогда не следует задавать. Вообще никогда.<br/>
<br/>
Спрашивать эти вещи на собеседовании означает внушить соискателю, <i>«я настоящий маньяк и неделю гуглил всю эту бессмысленную фигню только затем, чтобы поиздеваться над тобой и увидеть, как ты страдаешь».</i><br/>
 <a href="https://habr.com/ru/articles/285468/?utm_campaign=285468&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Thu, 23 Feb 2012 22:53:18 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Карьера в IT-индустрии]]></category>
      <category>интервью</category><category>интервью с разработчиками</category><category>собеседование</category><category>вопросы на собеседовании</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Разработчики Firefox опубликовали Roadmap на 2012 год]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/138147/</guid>
      <link>https://habr.com/ru/articles/138147/?utm_campaign=138147&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/365/4bd/f7b/3654bdf7b8a8518e5fbc89662b19ec87.png" align="right"/>Перевел ближайшие полгода, возможно, кому-то будет интересно почитать. Насколько я понимаю, в ночных сборках многие вещи уже работают.<br/>
<br/>
<a href="https://wiki.mozilla.org/Firefox/Roadmap">Ссылка на оригинал (Mozilla Wiki)</a>.<br/>
<br/>
<h5>Первый квартал</h5><br/>
<a href="https://wiki.mozilla.org/Features/Add-ons/Add-ons_Default_to_Compatible">Совместимость аддонов</a>: наш опыт показывает, что большинство аддонов не ломаются в новых версиях Firefox. Мы решили, что позволим загружать аддоны, в которых явно не прописана совместимость с новой версией браузера.<br/>
<br/>
<a href="https://wiki.mozilla.org/Firefox/Features/Chrome_migration">Миграция с Google Chrome</a>: Firefox уже поддерживает миграцию (экспорт пользовательских данных) с других популярных браузеров. Пришло время предоставить аналогичный функционал для пользователей Google Chrome.<br/>
 <a href="https://habr.com/ru/articles/138147/?utm_campaign=138147&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 13 Feb 2012 21:34:28 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Firefox]]></category>
      <category><![CDATA[mozilla]]></category><category><![CDATA[firefox]]></category><category><![CDATA[roadmap]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Рисуем графики (диаграммы) в Django]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/126704/</guid>
      <link>https://habr.com/ru/articles/126704/?utm_campaign=126704&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<div style="text-align:center;"><img src="https://habrastorage.org/getpro/habr/post_images/3dc/786/197/3dc78619743cfc6a1990898b5a15504d.png" alt="django-google-charts" /></div><br/>
Многие веб-разработчики время от времени сталкиваются с необходимостью визуализировать сравнительно большое количество данных при помощи диаграмм (далее я буду называть их графиками, хоть это и не совсем верно). Задача не нова, и в сети есть множество готовых решений: работающие на стороне сервера и на стороне клиента, использующие изображения, Canvas, SVG, Flash, Silverlight…<br/>
<br/>
В этой статье я расскажу про <a href="http://publishedin.com/django-google-charts/">django-google-charts</a> и некоторые особенности использования <a href="http://code.google.com/apis/chart/">Google Chart Tools</a> для построения графиков на сайте под управлением Django.<br/>
<br/>
Часто, когда нужно добавить график на страницу, разработчик идет по пути наименьшего сопротивления: копирует JavaScript из примера в интернете и как-нибудь выводит в него данные из приложения. Получается что-то наподобие:<br/>
<br/>
<pre><code class="javascript">var chart_data = [
    {% for row in chart_data %}
    [{{ row.0 }}, {{ row.1 }}],
    {% endfor %}
];
</code></pre><br/>
 <a href="https://habr.com/ru/articles/126704/?utm_campaign=126704&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Почему это плохо?</a>]]></description>
      
      <pubDate>Fri, 19 Aug 2011 18:13:35 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Django]]></category>
      <category><![CDATA[django]]></category><category><![CDATA[google charts]]></category><category><![CDATA[google visualization]]></category><category><![CDATA[templates]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[django-php: PHP в шаблонах Django]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/125773/</guid>
      <link>https://habr.com/ru/articles/125773/?utm_campaign=125773&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/comment_images/edb/a29/16c/edba2916c453ded0e85f71d1d896cdd1.png" alt="django-php" align="left"/>В этом посте я расскажу, как подружить Django и PHP с помощью приложения <a href="http://animuchan.net/django_php/">django-php</a>.<br/>
<br/>
Нам понадобится бинарник php-cgi, установленный в системе. Проверить его наличие можно, введя в терминале<br/>
<br/>
<pre><code class="bash">$ which php-cgi</code></pre><br/>
 <a href="https://habr.com/ru/articles/125773/?utm_campaign=125773&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 05 Aug 2011 18:45:42 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Django]]></category>
      <category><![CDATA[django]]></category><category><![CDATA[php]]></category><category><![CDATA[fun]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Тестирование проектов Django]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/122156/</guid>
      <link>https://habr.com/ru/articles/122156/?utm_campaign=122156&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage/2942b0a8/bd682de3/79b223ac/8f0ab262.png" align="right"/><a href="http://habrahabr.ru/blogs/python/121162/">В предыдущем посте</a> мы бегло рассмотрели некоторые приемы тестирования кода на питоне. Все это применимо также и к Django-проектам, безусловно, но есть достаточное количество подводных камней и просто интересных штук, о которых я попробую рассказать.<br/>
<br/>
Краткое содержание поста:<ol>
<li>тестирование веб-сайтов — это сложно и непонятно</li>
<li>юнит-тесты в django</li>
<li>тестовая БД и как с ней бороться</li>
<li>smoke testing</li>
<li>покрытие кода (code coverage)</li>
</ol> <a href="https://habr.com/ru/articles/122156/?utm_campaign=122156&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 18 Jun 2011 18:36:28 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Django]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[django]]></category><category><![CDATA[testing]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Тестирование. Начало]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/121162/</guid>
      <link>https://habr.com/ru/articles/121162/?utm_campaign=121162&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage/9c1771f8/cfce96c6/2a16a33b/5e5c4cef.png" align="right"/><br/>
Привет. В этой серии постов я попробую рассказать про тестирование кода на питоне, в частности проектов django. Мы рассмотрим модульное тестирование (юнит-тесты), статический анализ кода и некоторые подводные камни тестирования веб-сайтов.<br/>
<br/>
Вводную часть о пользе тестирования опустим — код, покрытый тестами, становится мягким и шелковистым, про это только ленивый еще не читал / писал.<br/>
 <a href="https://habr.com/ru/articles/121162/?utm_campaign=121162&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sun, 12 Jun 2011 02:55:15 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[unittest]]></category><category><![CDATA[doctest]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Веб-разработка на iPad]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/116246/</guid>
      <link>https://habr.com/ru/articles/116246/?utm_campaign=116246&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В этом посте мне хотелось бы пообщаться с вами на тему «пригоден ли айпад для создания контента». А поскольку сочинять музыку и рисовать картины я совсем не умею, мы сейчас попробуем создать веб-страничку на айпаде и выложить ее в интернет.<br/>
<br/>
<img src="https://habrastorage.org/storage/9ab055c4/000af446/c6680150/b15adc2e.png"/><br/>
<br/>
<h3>Инвентарь</h3><br/>
Нам понадобится текстовый редактор (я выбрал Gusto, хотя можно было использовать, например, Textastic), графический редактор (установил на всякий случай сразу два: Adobe Photoshop Express и PhotoPad, оба бесплатные), приложение Яндекс.Фотки для загрузки картинок в интернет, и CSS3Machine — про нее расскажу прямо сейчас.<br/>
<br/>
Далее в посте очень много изображений. Пользователи медленного, мобильного или дорогостоящего интернета могут испытывать дискомфорт и легкое головокружение.<br/>
 <a href="https://habr.com/ru/articles/116246/?utm_campaign=116246&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 26 Mar 2011 15:38:57 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[веб-разработка]]></category><category><![CDATA[ipad]]></category><category><![CDATA[айпад]]></category><category><![CDATA[создание контента]]></category><category><![CDATA[html5]]></category><category><![CDATA[css3]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Brother DCP-330C: учимся экономить краску]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/90532/</guid>
      <link>https://habr.com/ru/articles/90532/?utm_campaign=90532&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<a href="http://i434.photobucket.com/albums/qq69/leprouser/image.jpg"><img src="https://habrastorage.org/getpro/geektimes/post_images/3cc/12f/715/3cc12f7159e3277bbc1c93abb009a530.png" align="left"/></a>Так получилось, что мне в руки попал означенный принтер. Хорошая, надо сказать, железка: недорогая, печатает вроде неплохо, на сайте производителя нашлись даже драйвера под Linux и <i>вменяемая</i> инструкция по их установке.<br/>
<br/>
Обнаружился и один существенный недостаток: работа с расходными материалами. Устройство использует чернильные картриджи Innobella LC-57, коих четыре штуки (отдельно C, M, Y, K). Уровень краски определяется очень приблизительно, зачастую принтер сигнализирует о необходимости замены картриджа, когда израсходована едва половина чернил. Хуже того, если один из картриджей опустел или не установлен, устройство отказывается делать что-либо вообще.<br/>
<br/>
 <a href="https://habr.com/ru/articles/90532/?utm_campaign=90532&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 09 Apr 2010 16:20:13 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Компьютерное железо]]></category>
      <category><![CDATA[принтер]]></category><category><![CDATA[brother]]></category><category><![CDATA[экономия]]></category><category><![CDATA[лайфхак]]></category><category><![CDATA[хозяйке на заметку]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[GROUP_CONCAT для Django ORM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/87096/</guid>
      <link>https://habr.com/ru/articles/87096/?utm_campaign=87096&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/0d6/8ec/caf/0d68eccaf19433a05cb942b3acda7c53.png" align="left"/><br/>
<a href="http://docs.djangoproject.com/en/dev/topics/db/aggregation/">Агрегатные функции</a> в Django ORM — крутые. Это обстоятельство послужило поводом добавить еще одну =)<br/>
<br/>
Далее речь пойдет о mysql-специфичной функции <code><a href="http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_group-concat"></a>GROUP_CONCAT</code> и <s>волшебных розовых пони, как на картинке</s> django-trunk.<br/>
 <a href="https://habr.com/ru/articles/87096/?utm_campaign=87096&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 10 Mar 2010 23:34:39 GMT</pubDate>
      <dc:creator><![CDATA[printf]]></dc:creator>
      <category><![CDATA[Django]]></category>
      <category><![CDATA[django]]></category><category><![CDATA[mysql]]></category><category><![CDATA[group_concat]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
