<?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/storms/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя storms]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 11:13:11 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[Как я попал в ThoughtWorks или образцовое интервью]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/479874/</guid>
      <link>https://habr.com/ru/articles/479874/?utm_campaign=479874&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/post_images/5af/2b0/187/5af2b0187971b50653582a7e38b324d0.jpg" alt="image"><br>
<br>
Не кажется ли вам странным то, что когда вы собираетесь поменять место работы и возникает необходимость пройти интервью, то в первую очередь вы думаете «надо подготовиться к интервью». Прорешать задачи на HackerRank, почитать Crack the coding interview, зазубрить как устроен ArrayList и чем она отличается от LinkedList. Ах да, еще сортировки спросить могут, и явно будет непрофессионально сказать, что quick sort скорее всего будет лучшим выбором.<br>
Но постойте, вы ведь программируете 8 часов в день, решаете интересные и нетривиальные задачи, и на новом месте работы будете делать плюс-минус тоже самое. Но тем не менее, чтобы пройти интервью необходимо как-то дополнительно готовиться, даже не оттачивать ежедневные навыки, а выучить то, что вам не понадобилось ни на текущем месте работы, ни вряд ли понадобиться на следующем. На ваши возражения о том, computer science у нас в крови, и разбуди нас посреди ночи мы обязаны написать с закрытыми глазами на наволочке обход дерева в ширину даже не приходя в сознание, я отвечу, что если я буду устраиваться в цирк, и моим главным трюком будет именно это — то пожалуй да, я согласен. Нужно этот навык проверить.<br> <a href="https://habr.com/ru/articles/479874/?utm_campaign=479874&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 13 Dec 2019 05:47:55 GMT</pubDate>
      <dc:creator><![CDATA[storms]]></dc:creator>
      <category><![CDATA[IT-эмиграция]]></category><category><![CDATA[Управление персоналом]]></category><category><![CDATA[Управление разработкой]]></category>
      <category><![CDATA[it-миграция]]></category><category><![CDATA[собеседование в it]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Укращение Демонов или инфраструктура для Gearman]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/162039/</guid>
      <link>https://habr.com/ru/articles/162039/?utm_campaign=162039&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage1/a83f1fe1/bf3fb3cb/c6825a17/1a8d1610.gif" alt="image"/><br/>
<br/>
Gearman — фреймворк для распределения задач. Подробней о нем можно почитать: <a href="http://habrahabr.ru/post/123451/">Здесь</a> или <a href="http://habrahabr.ru/post/142210/">Здесь</a>. Этот инструмент — находка для решения целого ряда задач. Но при его эксплуатации на боевых серверах мы столкнулись с некоторыми проблемами, решением которых я хочу поделится:<br/>
 — Как автоматически запускать демонов и следить за их здоровьем?<br/>
 — Как запустить несколько инстансов воркеров?<br/>
 — Куда демоны будут писать сообщения, предназначенные для вывода на экран?<br/>
 — А как следить, чтобы демоны не отвлекались <s>на грудастых гаргулий</s>, а работали. словом следить за нагрузкой.<br/>
Для этого есть довольно удобные инструменты:<br/>
<br/>
 <a href="https://habr.com/ru/articles/162039/?utm_campaign=162039&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 19 Mar 2013 04:56:36 GMT</pubDate>
      <dc:creator><![CDATA[storms]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[gearman]]></category><category><![CDATA[supervisor]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[PHP Unit. Опыт тестирования классов, работающих с Базой Данных]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/139727/</guid>
      <link>https://habr.com/ru/articles/139727/?utm_campaign=139727&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Тестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем спор «покрывать код тестами или нет». Просмотрев свой проект, нам стало очевидно, что львиная доля классов основана на взаимодействии с базой данных. Поэтому было однозначно решено: «тестированию быть». <br/>
Далее я хочу поделится опытом написания модульных тестов для кода, работающего с базой данных.<br/>
<br/>
PHPUnit содержит расширение для тестирования базы данных. Расширение выполняет следующие функции: <br/>
<ul>
<li>перевод базы данных в заранее известное состояние,</li>
<li>выполнение необходимых модификаций данных, </li>
<li>проверка, что в базе данных созданы ожидаемые записи.</li>
</ul><br/>
К сожалению в этом списке отсутствует одна очень нужная нам фича — восстановление данных в состояние, в котором они находились до тестов. Я хочу предложить 2 варианта решения этой проблемы. Так же попутно остановлюсь на проблеме внешних ключей, которая часто возникает при накатывании не полных тестовых данных на «рабочую» базу.<br/>
<br/>
Итак, я предлагаю 2 варианта решения проблемы: как после проведения юнит теста вернуть базу данных в исходное состояние:<br/>
Первый путь — «Транзакционный». Суть которого сводится к выполнению всего теста в рамках одной транзакции, и последующему rollback'у транзакции.<br/>
Второй — Перед выполнением теста скопировать структуру «рабочей» базы и проводить тестирование на ней.<br/>
 <a href="https://habr.com/ru/articles/139727/?utm_campaign=139727&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sun, 11 Mar 2012 10:59:42 GMT</pubDate>
      <dc:creator><![CDATA[storms]]></dc:creator>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[DBUnit]]></category><category><![CDATA[unit test]]></category><category><![CDATA[базы данных]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
