<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Дмитрий Елисеев</title>
    <description>ElisDN</description>
    <pubDate>Wed, 08 Apr 2026 07:50:55 +0300</pubDate>
    <generator>ElisDN</generator>
    <link>https://elisdn.ru</link>
    <copyright>Copyright 2026 https://elisdn.ru</copyright>
    <item>
      <title>Предновогодняя распродажа стримов</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/170/streams-2025"><img src="https://elisdn.ru/upload/images/blogs/bdbd6a59096effc4247fb6b0a8dbe9aa_250x0.jpg" alt="" title="Предновогодняя распродажа стримов" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Долгие новогодние каникулы – это хорошая возможность отдохнуть от рабочей загрузки и изучить что-то новое, что всегда поможет продвинуться по карьере и найти более интересную работу. Поэтому объявляю предновогоднюю распродажу моих прошедших и новых стримов по программированию, архитектуре и смежным вещам на вечно актуальные темы.

</p><p><a href="https://elisdn.ru/blog/170/streams-2025" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 25 Dec 2025 16:32:36 +0300</pubDate>
      <link>https://elisdn.ru/blog/170/streams-2025</link>
      <guid isPermaLink="false">post_170</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Про оркестрацию по-взрослому</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/169/orchestration"><img src="https://elisdn.ru/upload/images/blogs/da0b1078791df4cd1200d50dc14181eb_250x0.jpg" alt="" title="Про оркестрацию по-взрослому" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Вскоре проведём третью часть нашего стрима про БД. А сейчас пришла пора проанонсировать следующий стрим на новый осенний сезон. Если другие стримы были на небольшие более-менее простые темы, то теперь пришла пора бросить себе вызов и провести более сложную серию эфиров на тему, которую многие ждали и просили.</p><p><a href="https://elisdn.ru/blog/169/orchestration" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 24 Jul 2025 17:46:56 +0300</pubDate>
      <link>https://elisdn.ru/blog/169/orchestration</link>
      <guid isPermaLink="false">post_169</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Podlodka PHP Crew про Async</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/168/podlodka-php-async"><img src="https://elisdn.ru/upload/images/blogs/f75d79f1c5d2cdfdd3d5f4526b3f69e2_250x0.jpg" alt="" title="Podlodka PHP Crew про Async" style="display:block; float:left; margin:0 10px 10px 0"></a><p>У Подлодки началась большая онлайн-движуха PHP Crew про производительность. Организаторам понравилась идея моего стрима про способы ускорения PHP-приложений и они внезапно попросили меня что-нибудь на эту тему рассказать у них. Про инструменты и производительность там будут другие доклады, а я предпочитаю не поверхностно рассматривать готовые инструменты, а копнуть глубже, чтобы понять, как они работают изнутри.</p><p><a href="https://elisdn.ru/blog/168/podlodka-php-async" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 21 Apr 2025 16:41:14 +0300</pubDate>
      <link>https://elisdn.ru/blog/168/podlodka-php-async</link>
      <guid isPermaLink="false">post_168</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Про PHP и микросервисы на ITGM</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/167/itgm-microservices"><img src="https://elisdn.ru/upload/images/blogs/20f8037e1ea4b51f6bc49abc574ddaf9_250x0.jpg" alt="" title="Про PHP и микросервисы на ITGM" style="display:block; float:left; margin:0 10px 10px 0"></a><p>У петербургского сайта Piter United есть традиция, что каждый год они с друзьями проводят бесплатный слёт IT-сообществ IT Global Meetup. В этот раз там будем и мы с нашим сообществом Live PHP. В воскресенье я проведу трансляцию сообщества и выступлю с докладом.</p><p><a href="https://elisdn.ru/blog/167/itgm-microservices" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 08 Apr 2025 14:07:13 +0300</pubDate>
      <link>https://elisdn.ru/blog/167/itgm-microservices</link>
      <guid isPermaLink="false">post_167</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Осознанная работа с базами данных</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/166/relational-dbs"><img src="https://elisdn.ru/upload/images/blogs/10526b13b8503e1b16d5fd30f4b512aa_250x0.jpg" alt="" title="Осознанная работа с базами данных" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Когда-то в позпрошлой жизни я проводил вебинар про теорию баз данных. Это было давно и там мы мало что реально затронули из практики. Пришла пора дополнить повествование и теорию кучей практики по написанию и рефакторингу SQL запросов и по оптимизации запросов и работы БД.</p><p><a href="https://elisdn.ru/blog/166/relational-dbs" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 09 Mar 2025 20:04:43 +0300</pubDate>
      <link>https://elisdn.ru/blog/166/relational-dbs</link>
      <guid isPermaLink="false">post_166</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Беспредел множественного наследования</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/165/multiple-inheritance"><img src="https://elisdn.ru/upload/images/blogs/a12c26589371c6753063ec72200ec2f5_250x0.jpg" alt="" title="Беспредел множественного наследования" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Наш прошлый большой митап удался и пришло время продолжить. Вчера организовал трансляцию и выступил с докладом на очередном митапе сообщества LivePHP. Почему переработки – зло. Как выстрелить себе в ногу при обновлении ОС, сломать индексы и ограничения БД и почему во всем виноват юникод. Почему во многих языках програмиирования есть множественное наследование интерфейсов, но нет множественного наследования реализации.</p><p><a href="https://elisdn.ru/blog/165/multiple-inheritance" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 06 Dec 2024 11:09:16 +0300</pubDate>
      <link>https://elisdn.ru/blog/165/multiple-inheritance</link>
      <guid isPermaLink="false">post_165</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Про безопасность web-приложений</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/164/stream-web-security"><img src="https://elisdn.ru/upload/images/blogs/e88312028fbd00d7707419533b4277f6_250x0.jpg" alt="" title="Про безопасность web-приложений" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В комментариях и чатах к предыдущим стримам часто попадалось предложение о том, что было бы интересно посмотреть или послушать что-нибудь на тему безопасной разработки web-приложений. Как про написание безопасного кода, так и про защиту сетей, виртуальных машин и Docker-контейнеров.</p><p><a href="https://elisdn.ru/blog/164/stream-web-security" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 26 Nov 2024 15:54:14 +0300</pubDate>
      <link>https://elisdn.ru/blog/164/stream-web-security</link>
      <guid isPermaLink="false">post_164</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Обзор нововведений PHP 8.4</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/163/php-84-release"><img src="https://elisdn.ru/upload/images/blogs/daee3f0517e1458e450c0e72a972b07c_250x0.jpg" alt="" title="Обзор нововведений PHP 8.4" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Внезапно на канале CutCode меня из чата пригласили в эфир с обзором нововведений PHP 8.4. Наконец мы дождались появления в PHP полноценных свойств как в других языках. Ещё появилось полезные функции для поиска элементов в массивах и несколько других улучшений.</p><p><a href="https://elisdn.ru/blog/163/php-84-release" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 21 Nov 2024 22:24:57 +0300</pubDate>
      <link>https://elisdn.ru/blog/163/php-84-release</link>
      <guid isPermaLink="false">post_163</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Большой стрим про SOLID и GRASP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/162/solid-grasp"><img src="https://elisdn.ru/upload/images/blogs/fb9cba67f75e7651eb3d59ff9328e3be_250x0.jpg" alt="" title="Большой стрим про SOLID и GRASP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В статьях и стримах мы стараемся делать код таким, чтобы его было удобнее разрабатывать и поддерживать. При этом мы часто упоминаем некоторые принципы из SOLID и паттерны из GRASP как что-то само собой разумеющееся. Эти аббревиатуры у всех на слуху. Но на практике оказывается, что многие пытаются их вызубрить без понимания зачем они нужны и для чего они придумывались. А потом безуспешно пытаются применить их у себя и получают не тот результат, который хотели.</p><p><a href="https://elisdn.ru/blog/162/solid-grasp" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 20 Oct 2024 12:03:59 +0300</pubDate>
      <link>https://elisdn.ru/blog/162/solid-grasp</link>
      <guid isPermaLink="false">post_162</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Страх PSR и Как растут проекты</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/161/how-projects-grow"><img src="https://elisdn.ru/upload/images/blogs/8313c14129a5aeb29470df5e1aa7362c_250x0.jpg" alt="" title="Страх PSR и Как растут проекты" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Наш позапрошлый большой митап удался и пришло время продолжить. Сегодня организую трансляцию и выступлю с докладом на четвёртом митапе сообщества LivePHP в Санкт-Петербурге. Докладчики расскажут про новую IDE и про код, а я выступлю с опытным философским докладом о том, почему меняются и как растут проекты.</p><p><a href="https://elisdn.ru/blog/161/how-projects-grow" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 03 Oct 2024 14:02:41 +0300</pubDate>
      <link>https://elisdn.ru/blog/161/how-projects-grow</link>
      <guid isPermaLink="false">post_161</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Про типизацию в PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/160/php-types"><img src="https://elisdn.ru/upload/images/blogs/c1a08de2e2f3dc5ba819737fa02f1935_250x0.jpg" alt="" title="Про типизацию в PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В сообществе LivePHP помимо митапов появились стримы-подкасты. Сегодня вместе со Станиславом Ракчаевым и Валентином Удальцовым обсудим встроенные и пользовательские типы в PHP и их пользу для разработки.</p><p><a href="https://elisdn.ru/blog/160/php-types" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 12 Jun 2024 18:33:52 +0300</pubDate>
      <link>https://elisdn.ru/blog/160/php-types</link>
      <guid isPermaLink="false">post_160</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Способы ускорения PHP-приложений</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/159/php-app-speedup"><img src="https://elisdn.ru/upload/images/blogs/2bb76028162102c2f789389bd384568e_250x0.jpg" alt="" title="Способы ускорения PHP-приложений" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Когда мы с вами делали наши проекты, мы не уделяли должного внимания оптимизации скорости запуска приложения в продакшене. И помимо классического подхода с сервером PHP-FPM появились альтернативные PHP-серверы вроде RoadRuner и асинхронные PHP-фреймворки. Альтернативы с нами уже достаточно давно, поэтому пора обратить на них внимание.</p><p><a href="https://elisdn.ru/blog/159/php-app-speedup" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 08 Apr 2024 15:26:09 +0300</pubDate>
      <link>https://elisdn.ru/blog/159/php-app-speedup</link>
      <guid isPermaLink="false">post_159</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Переносимое окружение для разработки и тестов</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/158/dev-test-env"><img src="https://elisdn.ru/upload/images/blogs/e82b85908ac267837ff4608567e64d96_250x0.jpg" alt="" title="Переносимое окружение для разработки и тестов" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Сегодня с Валентином Удальцовым и Кириллом Несмеяновым выступлю с докладом на втором митапе сообщества LivePHP в Санкт-Петербурге. Они расскажут про асинхронность и полиморфизм, а я соберу в кучу советы по построению быстроподнимаемого переносимого окружения для разработки и тестирования веб-проектов.</p><p><a href="https://elisdn.ru/blog/158/dev-test-env" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 15 Feb 2024 11:29:08 +0300</pubDate>
      <link>https://elisdn.ru/blog/158/dev-test-env</link>
      <guid isPermaLink="false">post_158</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Разделение кода на модули и микросервисы</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/157/stream-modules"><img src="https://elisdn.ru/upload/images/blogs/ab087aa8d0153858daf47828a4af3fb9_250x0.jpg" alt="" title="Разделение кода на модули и микросервисы" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На сайте скринкастов начинаем программирование доменной модели через практику Event Storming проекта аукциона. Но помимо этого будет крайне полезно рассмотреть примеры из разных предметных областей. Для этого мы проведём большой практический стрим про разделение кода на модули и микросервисы.</p><p><a href="https://elisdn.ru/blog/157/stream-modules" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 18 Dec 2022 18:08:33 +0300</pubDate>
      <link>https://elisdn.ru/blog/157/stream-modules</link>
      <guid isPermaLink="false">post_157</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Контрибьютить приятно</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/156/pleasure-contributing"><img src="https://elisdn.ru/upload/images/blogs/60fcc62f36bc01e4cf5c9949d72d0439_250x0.jpg" alt="" title="Контрибьютить приятно" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Однажды ты и пассия твоей мечты находите друг друга. Тебя нравятся её коммиты и её совершенный код. Предлагаешь ей коливинг, SSH-ключ и сердце. Если ты ей нравишься, то она тебе грантит акцесс в свою приватную репу. Но только избранный пулл-реквест пройдёт все проверки в её гитхаб экшенc.</p><p><a href="https://elisdn.ru/blog/156/pleasure-contributing" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 15 Nov 2022 14:11:41 +0300</pubDate>
      <link>https://elisdn.ru/blog/156/pleasure-contributing</link>
      <guid isPermaLink="false">post_156</guid>
      <category><![CDATA[Саморазвитие]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Колхозный FAANG</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/155/farm-faang"><img src="https://elisdn.ru/upload/images/blogs/30fe0afdcd4177a81829752a26deea27_250x0.jpg" alt="" title="Колхозный FAANG" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Роковый стёб о стартапах и IT-релокации #ХойЖив</p><p><a href="https://elisdn.ru/blog/155/farm-faang" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 05 Sep 2022 14:19:37 +0300</pubDate>
      <link>https://elisdn.ru/blog/155/farm-faang</link>
      <guid isPermaLink="false">post_155</guid>
      <category><![CDATA[Саморазвитие]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Работа сервера и заблуждения в PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/154/php-http-server"><img src="https://elisdn.ru/upload/images/blogs/fe1cf38c75ecc437f0204ff9db57f97b_250x0.jpg" alt="" title="Работа сервера и заблуждения в PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При записи обновлённой серии скринкастов по устройству HTTP-фреймворка помимо обсуждения компонентности и написания кода выпустили крайне полезный мегаскринкаст про разные варианты работы HTTP-сервера с PHP: от взаимодействия серверов Apache или Nginx по CGI-протоколам до написания сервера на PHP. Если у вас скоро собеседование, то это будет особенно актуально.</p><p><a href="https://elisdn.ru/blog/154/php-http-server" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 01 Aug 2022 13:59:16 +0300</pubDate>
      <link>https://elisdn.ru/blog/154/php-http-server</link>
      <guid isPermaLink="false">post_154</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Затестил Delay на трёх аккордах</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/153/trying-delay"><img src="https://elisdn.ru/upload/images/blogs/5a4c66160676fe7f9361be445182e358_250x0.jpg" alt="" title="Затестил Delay на трёх аккордах" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Дело было не вечером, делать было есть чего.</p><p><a href="https://elisdn.ru/blog/153/trying-delay" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 26 Jul 2022 15:32:24 +0300</pubDate>
      <link>https://elisdn.ru/blog/153/trying-delay</link>
      <guid isPermaLink="false">post_153</guid>
      <category><![CDATA[Саморазвитие]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Исходный код elisdn.ru</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/152/source-code"><img src="https://elisdn.ru/upload/images/blogs/c254614c990b9bbd8ecc64d35a3b4fcf_250x0.jpeg" alt="" title="Исходный код elisdn.ru" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В докладе о переписывании легаси рассказывал о постепенном обновлении и рефакторинге своего сайта. Теперь выкладываю доработанный исходный код всего PHP-проекта с полной автоматизацией разработки и деплоя и активным использованием Docker.</p><p><a href="https://elisdn.ru/blog/152/source-code" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 10 Jun 2022 16:11:02 +0300</pubDate>
      <link>https://elisdn.ru/blog/152/source-code</link>
      <guid isPermaLink="false">post_152</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Герои меча и PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/151/php-2021"><img src="https://elisdn.ru/upload/images/blogs/e5d5b5e1cd04fdde7e3d7502b6f07348_250x0.jpg" alt="" title="Герои меча и PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В PHP-сообществе помимо выпусков PHP-дайджеста появилась добрая традиция проводить большой опрос и подводить итоги года. И все интересные и полезные нововведения языка с экосистемой и рекомендуемые вами ресурсы обсуждать в большом стриме. Пришла пора подвести новые итоги и рассказать, что было полезного в этот раз.</p><p><a href="https://elisdn.ru/blog/151/php-2021" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 10 Feb 2022 12:39:38 +0300</pubDate>
      <link>https://elisdn.ru/blog/151/php-2021</link>
      <guid isPermaLink="false">post_151</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Зависимости для сущностей и команд</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/150/entity-dependencies"><img src="https://elisdn.ru/upload/images/blogs/0bad39976dca908a1e1c9365893c910b_250x0.jpg" alt="" title="Зависимости для сущностей и команд" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Продолжаем беспощадный цикл статей про работу с зависимостями. После знакомства с сущностямии сервисами и рассмотрения основных способов внедрения зависимостей сегодня мы применим всё это на практике. И выберем что, куда и когда нам будет более удобно внедрять.</p><p><a href="https://elisdn.ru/blog/150/entity-dependencies" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 24 Dec 2021 15:23:03 +0300</pubDate>
      <link>https://elisdn.ru/blog/150/entity-dependencies</link>
      <guid isPermaLink="false">post_150</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Вертикальное разделение кода, тестов и конфигов</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/149/code-structure"><img src="https://elisdn.ru/upload/images/blogs/3ce8a8548c6cc54601cce5693b7a4a6e_250x0.jpg" alt="" title="Вертикальное разделение кода, тестов и конфигов" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Спонтанно выступил с докладом и заодно технически организовал трансляцию третьего митапа сообщества BeerPHP SPb. Понял, что проведение трансляции тренирует стрессоустойчивость, так как почти всё, что могло пойти с техникой не так, пошло не так. Но получилось отлично.</p><p><a href="https://elisdn.ru/blog/149/code-structure" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 12 Dec 2021 12:47:33 +0300</pubDate>
      <link>https://elisdn.ru/blog/149/code-structure</link>
      <guid isPermaLink="false">post_149</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Способы внедрения зависимостей</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/148/dependency-injection"><img src="https://elisdn.ru/upload/images/blogs/a3e72ee6956d81be4c7709820e75e61b_250x0.jpg" alt="" title="Способы внедрения зависимостей" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В наших проектах мы активно используем контейнер внедрения зависимостей. При этом мы им часто пользуемся спонтанно, не особо объясняя принципы, которыми руководствуемся. Многие статьи часто только перечисляют способы внедрения, но не говорят об их плюсах и минусах. Поэтому в этом цикле статей мы сравним эти способы и выберем, какие удобнее использовать в разных ситуациях.</p><p><a href="https://elisdn.ru/blog/148/dependency-injection" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 23 Nov 2021 14:04:23 +0300</pubDate>
      <link>https://elisdn.ru/blog/148/dependency-injection</link>
      <guid isPermaLink="false">post_148</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Стрим про новый рабочий сезон</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/147/screencasts-2021"><img src="https://elisdn.ru/upload/images/blogs/c6e9615a42c49afcb82ba57c27434100_250x0.jpg" alt="" title="Стрим про новый рабочий сезон" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Недавно на Deworker провели большой стрим с планами по записи и перезаписи скринкастов на новый рабочий сезон этого и следующего года. Спасибо всем за ваши предложения по контенту! С вами мы сделали наши видео лучше, чем изначально планировали.</p><p><a href="https://elisdn.ru/blog/147/screencasts-2021" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 13 Oct 2021 12:17:56 +0300</pubDate>
      <link>https://elisdn.ru/blog/147/screencasts-2021</link>
      <guid isPermaLink="false">post_147</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Реализация OAuth2 с JWT для PHP бэкенда</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/146/oauth2-php-backend"><img src="https://elisdn.ru/upload/images/blogs/4c4ffc48af38009ca7f96257b2f780cb_250x0.jpg" alt="" title="Реализация OAuth2 с JWT для PHP бэкенда" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В серии скринкастов по разработке проекта на Slim и React мы полностью завершили реализацию аутентификации OAuth 2.0 на стороне бэкенда со многими нюансами, которые стоит учитывать. Получился интересный плейлист.</p><p><a href="https://elisdn.ru/blog/146/oauth2-php-backend" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 30 Jul 2021 10:53:01 +0300</pubDate>
      <link>https://elisdn.ru/blog/146/oauth2-php-backend</link>
      <guid isPermaLink="false">post_146</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Feature Flags для ReactJS и PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/145/feature-flags-js-php"><img src="https://elisdn.ru/upload/images/blogs/60f7f245d9023350fae2fa3065e90d7f_250x0.jpg" alt="" title="Feature Flags для ReactJS и PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В нашей серии скринкастов мы ранее затронули практики непрерывной интеграции и доставки. И при рассмотрении этих CI/CD философий вместо классического подхода Feature Branches с созданием отдельных Git-веток для фич мы рассказали об альтернативном подходе Trank Based Development для скрытой разработки новой функциональности в основной Git-ветке. И в этом недавнем эпизоде мы применили это на практике.</p><p><a href="https://elisdn.ru/blog/145/feature-flags-js-php" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 19 Mar 2021 16:57:16 +0300</pubDate>
      <link>https://elisdn.ru/blog/145/feature-flags-js-php</link>
      <guid isPermaLink="false">post_145</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>О сложности домена и о провайдерах в PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/144/domain-and-providers"><img src="https://elisdn.ru/upload/images/blogs/bff4dd8576f3440eb18335ee9617f36e_250x0.jpg" alt="" title="О сложности домена и о провайдерах в PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Провели ленивый импровизированный стрим на общеполезные темы. Чем неудобен в разработке процедурный код и код без разделения. Какие сложности предметной области обнаруживаются при анализе бизнеса. Про сходства и различия фреймворков. Про использование интерфейсов и классов провайдеров для конфигурирования приложения и для организации гибкой модульности.</p><p><a href="https://elisdn.ru/blog/144/domain-and-providers" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 03 Mar 2021 13:29:37 +0300</pubDate>
      <link>https://elisdn.ru/blog/144/domain-and-providers</link>
      <guid isPermaLink="false">post_144</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Большой стрим про PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/143/php-2020"><img src="https://elisdn.ru/upload/images/blogs/5a187abb4c490e984b9fabc90a6b8854_250x0.jpg" alt="" title="Большой стрим про PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>PHP-сообщество продолжает радовать своей активностью в проведении классных мероприятий. Перед каникулами провели большой опрос по итогам прошлого года. А теперь по итогам опроса решили провести большой стрим, на который пригласили активных участников.</p><p><a href="https://elisdn.ru/blog/143/php-2020" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 25 Feb 2021 12:14:30 +0300</pubDate>
      <link>https://elisdn.ru/blog/143/php-2020</link>
      <guid isPermaLink="false">post_143</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Структуры с процедурами или объекты?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/142/structs-or-objects"><img src="https://elisdn.ru/upload/images/blogs/c379f935c151825aeaa323c3e2b190a6_250x0.jpg" alt="" title="Структуры с процедурами или объекты?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Мы с вами сочинили много кода в проектах, где мы активно пользуемся контейнером внедрения зависимостей. Многие статьи рассматривают только внедрение сервис-контейнера, но не рассказывают о практиках написания самих сервисов. Об этом мы подробно расскажем в следующей части. Но перед этим нужно договориться об используемой в будущем терминологии и определиться с понятием сервиса. Поэтому сегодня рассмотрим, чем сервисы отличаются от других вещей в программном коде.</p><p><a href="https://elisdn.ru/blog/142/structs-or-objects" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 21 Feb 2021 12:21:13 +0300</pubDate>
      <link>https://elisdn.ru/blog/142/structs-or-objects</link>
      <guid isPermaLink="false">post_142</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сдвиг парадигмы: Как бэкендеру понять фронтенд?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/141/frontend-for-backenders"><img src="https://elisdn.ru/upload/images/blogs/c0cc802aaa89a7463f48290416c85256_250x0.jpg" alt="" title="Сдвиг парадигмы: Как бэкендеру понять фронтенд?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Мой блог читают в основном PHP-программисты. Но почти все новые проекты сейчас делают с отдельным JS-фронтендом, а программисты классических сайтов становятся мало кому нужны. Если им не уходить намеренно только в бэкенд, то есть риск стать устаревшим разработчиком, умеющим делать только примитивные вещи на jQuery. Для более удобной работы там придуманы свои фреймворки. А с ними у бэкендеров есть проблемы...</p><p><a href="https://elisdn.ru/blog/141/frontend-for-backenders" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 24 Dec 2020 14:02:51 +0300</pubDate>
      <link>https://elisdn.ru/blog/141/frontend-for-backenders</link>
      <guid isPermaLink="false">post_141</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Фреймворки и инструменты PHP для Enterprise</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/140/php-frameworks-for-enterprise"><img src="https://elisdn.ru/upload/images/blogs/5b8d36db2ac892c0369f447cc7674d72_250x0.jpg" alt="" title="Фреймворки и инструменты PHP для Enterprise" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Пригласили выступить на митапе про фреймворки и инструменты PHP на тему выбора инструмента для разработки Enterprise-проектов. Доработал свой доклад о RAD и дополнил слайдами. Сравнил несколько подходов по степени осознанности программирования.</p><p><a href="https://elisdn.ru/blog/140/php-frameworks-for-enterprise" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 16 Nov 2020 11:30:49 +0300</pubDate>
      <link>https://elisdn.ru/blog/140/php-frameworks-for-enterprise</link>
      <guid isPermaLink="false">post_140</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>ХудоБедно: Разговор об онлайн-обучении</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/139/hudo-bedno-online"><img src="https://elisdn.ru/upload/images/blogs/aca5471773164f6546c6a70328d935c8_250x0.png" alt="" title="ХудоБедно: Разговор об онлайн-обучении" style="display:block; float:left; margin:0 10px 10px 0"></a><p>После нашего весьма успешного интервью Антон Морев пригласил меня на новый канал ХудоБедно поговорить о нюансах обучения в онлайне. Поговорили, как определять, какой материал будет интересен аудитории, как его преподносить. Обсудили, что нужно для записи скринкастов. Много ли на это тратится усилий и стоит ли вообще этим всем заниматься.</p><p><a href="https://elisdn.ru/blog/139/hudo-bedno-online" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 22 Aug 2020 11:20:21 +0300</pubDate>
      <link>https://elisdn.ru/blog/139/hudo-bedno-online</link>
      <guid isPermaLink="false">post_139</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>MoreView: Про разработку и проекты</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/138/interview-moreview"><img src="https://elisdn.ru/upload/images/blogs/224aa3f1dccc1c73537614dc7cecedb0_250x0.jpg" alt="" title="MoreView: Про разработку и проекты" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Ничто не предвещало, но неожиданно появилась возможность сходить на онлайн-интервью. Обсудили PHP, JS, etc. и ошеломительное человеческое стремление к прекрасному. Поговорили о подходах к разработке, важности качества проектов и о вариантах архитектуры.</p><p><a href="https://elisdn.ru/blog/138/interview-moreview" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 22 Jul 2020 18:16:03 +0300</pubDate>
      <link>https://elisdn.ru/blog/138/interview-moreview</link>
      <guid isPermaLink="false">post_138</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>BeerPHP SPB: Переписывая легаси</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/137/rewriting-legacy"><img src="https://elisdn.ru/upload/images/blogs/564656c6b299be941c4fad0701bdc86d_250x0.png" alt="" title="BeerPHP SPB: Переписывая легаси" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На дебютном январском BeerPHP SPB Meetup #1 выступил с рассказом о своём опыте избавления от легаси-кода и обновления фреймворка в проекте. Про эволюционное переписывание, внедрение автоматизации тестирования и деплоя. О том, что помогало обновлению и что мешало.</p><p><a href="https://elisdn.ru/blog/137/rewriting-legacy" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 16 Mar 2020 09:23:54 +0300</pubDate>
      <link>https://elisdn.ru/blog/137/rewriting-legacy</link>
      <guid isPermaLink="false">post_137</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Разработка проекта по DDD с CI/CD</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/136/project-slim-react"><img src="https://elisdn.ru/upload/images/blogs/3ae56fca23a9560fe4e470036abe49dd_250x0.jpg" alt="" title="Разработка проекта по DDD с CI/CD" style="display:block; float:left; margin:0 10px 10px 0"></a><p>До этого мы с вами занимались программированием классических сайтов с шаблонизаторами без интерактива. Мы занимались только PHP и не рассматривали смежные темы. На это раз запишем большую серию скринкастов по разработке под ключ целикового проекта сайта-аукциона с API на микрофреймворке Slim PHP и интерактивным фронтендом на ReactJS.</p><p><a href="https://elisdn.ru/blog/136/project-slim-react" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 06 Dec 2019 14:24:18 +0300</pubDate>
      <link>https://elisdn.ru/blog/136/project-slim-react</link>
      <guid isPermaLink="false">post_136</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Про фреймворки и сервисный слой</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/135/phprussia-oop"><img src="https://elisdn.ru/upload/images/blogs/48d2c7cb9536cc0f437bb3fec7bcb277_250x0.jpg" alt="" title="Про фреймворки и сервисный слой" style="display:block; float:left; margin:0 10px 10px 0"></a><p>После нашего отчёта о конференции по разрешению организаторов публикую запись своего доклада на PHP Russia про важность разделения кода и инкапсуляции бизнес-логики в сервисах и сущностях.</p><p><a href="https://elisdn.ru/blog/135/phprussia-oop" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 29 Sep 2019 15:16:52 +0300</pubDate>
      <link>https://elisdn.ru/blog/135/phprussia-oop</link>
      <guid isPermaLink="false">post_135</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Четыре столпа PSR</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/134/four-pillars-of-psrs"><img src="https://elisdn.ru/upload/images/blogs/3e7f4f1d9b863755325b33d8201d0ca5_250x0.jpg" alt="" title="Четыре столпа PSR" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Пополним рубрику ответов на вопросы. Недавно пришло письмо с вопросом по мотивам нашей серии по PSR-7, на который родился большой ответ. В качестве вопроса хотел привести цитаты, но для целостного понимания письмо с письменного разрешения автора привожу почти целиком...</p><p><a href="https://elisdn.ru/blog/134/four-pillars-of-psrs" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 11 Sep 2019 14:48:40 +0300</pubDate>
      <link>https://elisdn.ru/blog/134/four-pillars-of-psrs</link>
      <guid isPermaLink="false">post_134</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мы это сделали! Видеоотчёт</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/133/master-class-results"><img src="https://elisdn.ru/upload/images/blogs/498e75cd6b5ae962dd059325ca262bf8_250x0.jpg" alt="" title="Мы это сделали! Видеоотчёт" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Все видеозаписи уроков обработаны, тайм-коды проставлены, вопросы отвечены. Наш самый крупный четырёхмесячный мастер-класс по Symfony завершён. Вот что у нас с вами получилось...</p><p><a href="https://elisdn.ru/blog/133/master-class-results" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 03 Sep 2019 17:00:50 +0300</pubDate>
      <link>https://elisdn.ru/blog/133/master-class-results</link>
      <guid isPermaLink="false">post_133</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Интервью обо всём на Hexlet</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/132/interview-hexlet"><img src="https://elisdn.ru/upload/images/blogs/88909e623c21d6e005f37cdbd3c98c22_250x0.jpg" alt="" title="Интервью обо всём на Hexlet" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Пригласили на интервью в Hexlet.&nbsp;Провели философский и немного программистский расслабленный вебинар про фриланс, предпринимательство, фреймворки, работу и обучение.</p><p><a href="https://elisdn.ru/blog/132/interview-hexlet" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 03 Jun 2019 15:18:11 +0300</pubDate>
      <link>https://elisdn.ru/blog/132/interview-hexlet</link>
      <guid isPermaLink="false">post_132</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Отчёт о PHP Russia 2019</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/131/phprussia-report"><img src="https://elisdn.ru/upload/images/blogs/df4bae6510cb42c308ac7ca1b6aeacf5_250x0.jpg" alt="" title="Отчёт о PHP Russia 2019" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Вот и выступил в пятницу на конференции PHP Russia 2019. Покапитанил про ООП, сервисный слой и Doctrine. Почти весь день разговаривал со зрителями и отвечал на вопросы и дал небольшое интервью.</p><p><a href="https://elisdn.ru/blog/131/phprussia-report" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 19 May 2019 19:31:52 +0300</pubDate>
      <link>https://elisdn.ru/blog/131/phprussia-report</link>
      <guid isPermaLink="false">post_131</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Философия RAD и Enterprise фреймворков</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/130/enterprise-frameworks"><img src="https://elisdn.ru/upload/images/blogs/64cfc843efe35bf491cac9adda6b35a4_250x0.jpg" alt="" title="Философия RAD и Enterprise фреймворков" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Как и обещали, выкладываем запись вводного урока нашего мастер-класса про философию Symfony и других фреймворков и про основные требования, предъявляемые заказчиками и программистами к фреймворкам.</p><p><a href="https://elisdn.ru/blog/130/enterprise-frameworks" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 17 Mar 2019 19:53:38 +0300</pubDate>
      <link>https://elisdn.ru/blog/130/enterprise-frameworks</link>
      <guid isPermaLink="false">post_130</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Приглашение на мастер-класс + подробности</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/129/welcome-to-master-class"><img src="https://elisdn.ru/upload/images/blogs/c2d5e865a90e6be7e7e41e5e04b83e17_250x0.jpg" alt="" title="Приглашение на мастер-класс + подробности" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Страница готова, тезисы написаны. Выкладываю официальное приглашение на наш большой мастер-класс по разработке проекта на Symfony.&nbsp;Если есть желание провести время в компании программистов, то подключайтесь!</p><p><a href="https://elisdn.ru/blog/129/welcome-to-master-class" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 14 Mar 2019 18:01:10 +0300</pubDate>
      <link>https://elisdn.ru/blog/129/welcome-to-master-class</link>
      <guid isPermaLink="false">post_129</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Открытие Базы Знаний</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/128/deworker-knowledge"><img src="https://elisdn.ru/upload/images/blogs/f1b4e255ebec7a12562218623a614009_250x0.jpg" alt="" title="Открытие Базы Знаний" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Все технические и гуманитарные вопросы решены, ничто нас больше не отвлекает. Пора открывать наш клуб и наполнять его жизнью. С чего начнём? Может с создания полезного раздела, где можно прокачать свои знания? А почему бы и нет. От этого всем только лучше. В связи с этим у меня сегодня обращение, где рассказываю, как до этого дошёл и что это будет.</p><p><a href="https://elisdn.ru/blog/128/deworker-knowledge" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 10 Mar 2019 13:57:38 +0300</pubDate>
      <link>https://elisdn.ru/blog/128/deworker-knowledge</link>
      <guid isPermaLink="false">post_128</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Чего вы ждёте от мастер-класса по Symfony?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/127/symfony-waiting"><img src="https://elisdn.ru/upload/images/blogs/cfb212b97c0b840ec22e0a71d00b2d13_250x0.jpg" alt="" title="Чего вы ждёте от мастер-класса по Symfony?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В старом чате из МК по Laravel, на почте и в ВК набралась от вас куча замечаний и предложений когда, зачем, кому и как проводить предстоящий мастер-класс по разработке проекта на Symfony Framework.&nbsp;В связи с этим провели в YouTube живой стрим, где обсудили особо интересные предложения по содержимому и формату и сделали из этого кучу выводов.</p><p><a href="https://elisdn.ru/blog/127/symfony-waiting" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 06 Mar 2019 15:25:53 +0300</pubDate>
      <link>https://elisdn.ru/blog/127/symfony-waiting</link>
      <guid isPermaLink="false">post_127</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Открытие клуба программистов</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/126/programmers-club"><img src="https://elisdn.ru/upload/images/blogs/a3ca9bf7bbc6c8e211c139e755e7a5e8_250x0.jpg" alt="" title="Открытие клуба программистов" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Этот год завершён, пора идти к новым свершениям!&nbsp;Как говорил в одном из предыдущих постов, открываю большой проект с интересными вещами для программистов и тех, кто с этим связан. Начало положено и уже можно вступать.</p><p><a href="https://elisdn.ru/blog/126/programmers-club" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 29 Dec 2018 13:26:16 +0300</pubDate>
      <link>https://elisdn.ru/blog/126/programmers-club</link>
      <guid isPermaLink="false">post_126</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мастер-класс по Apache Kafka и RabbitMQ</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/125/rabbitmq-master-class"><img src="https://elisdn.ru/upload/images/blogs/6560b5a4a9bc8d51674326b5151a196f_250x0.jpg" alt="" title="Мастер-класс по Apache Kafka и RabbitMQ" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На весеннем мастер-классе по Laravel у меня попросили провести отдельный урок по RabbitMQ и Apache Kafka. Материал готов, и вскоре мы с вами проведём пару жарких вечеров. Построим пример сайта с сервисами, выполняющими фоновые задачи и общающимися через брокеры.</p><p><a href="https://elisdn.ru/blog/125/rabbitmq-master-class" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 24 Sep 2018 16:15:23 +0300</pubDate>
      <link>https://elisdn.ru/blog/125/rabbitmq-master-class</link>
      <guid isPermaLink="false">post_125</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>PSR-7 фреймворк: Консольные команды, базы данных и ресурсы</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/124/psr7-console-db-assets"><img src="https://elisdn.ru/upload/images/blogs/e4d85c080434a5d115bc1d050abe959e_250x0.jpg" alt="" title="PSR-7 фреймворк: Консольные команды, базы данных и ресурсы" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Завершающий урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Добавляем поддержку написания консольных команд, добавляем работу с базами данных с помощью PDO и готовых ORM, оптимизируем запросы</p><p><a href="https://elisdn.ru/blog/124/psr7-console-db-assets" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 21 Sep 2018 21:13:54 +0300</pubDate>
      <link>https://elisdn.ru/blog/124/psr7-console-db-assets</link>
      <guid isPermaLink="false">post_124</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Да здравствует Сентябрь!</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/123/plans-for-september"><img src="https://elisdn.ru/upload/images/blogs/f552d3df6d28d9caa5aaeaa00000c334_250x0.jpg" alt="" title="Да здравствует Сентябрь!" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Многие спрашивают в личных сообщениях о судьбе нового проекта из прошлой рассылки. И интересуются, чем я кроме программирования, статей и скринкастов в жизни занимаюсь.&nbsp;Летний отдых закончился. Начинаем новый сезон.&nbsp;Что нас ждёт в профессиональном и культурном плане в сентябре?</p><p><a href="https://elisdn.ru/blog/123/plans-for-september" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 05 Sep 2018 18:46:18 +0300</pubDate>
      <link>https://elisdn.ru/blog/123/plans-for-september</link>
      <guid isPermaLink="false">post_123</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Запуск нового проекта</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/122/new-project"><img src="https://elisdn.ru/upload/images/blogs/f5b12a7e519341129c2717231b121405_250x0.jpg" alt="" title="Запуск нового проекта" style="display:block; float:left; margin:0 10px 10px 0"></a><p>По многочисленным просьбам программистов, веб-студий и всех сочувствующих решил продолжить полезные дела и открыть новый проект.&nbsp;Если не хотите пропустить интересные вещи в своей жизни, то подключайтесь к нам.</p><p><a href="https://elisdn.ru/blog/122/new-project" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 22 Jun 2018 10:21:42 +0300</pubDate>
      <link>https://elisdn.ru/blog/122/new-project</link>
      <guid isPermaLink="false">post_122</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title> PSR-7 фреймворк: PSR-15, вывод ошибок и логирование</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/121/psr7-errors-and-logging"><img src="https://elisdn.ru/upload/images/blogs/309cc12022abfb3b5d9d9843aa2c7900_250x0.jpg" alt="" title=" PSR-7 фреймворк: PSR-15, вывод ошибок и логирование" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Шестой урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Обновляем фреймворк под принятый PSR-15, дорабатываем вывод ошибок в продакшене и в режиме отладки, изучаем композицию вместо наследования и внедряем логирование.</p><p><a href="https://elisdn.ru/blog/121/psr7-errors-and-logging" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 20 Jun 2018 16:13:42 +0300</pubDate>
      <link>https://elisdn.ru/blog/121/psr7-errors-and-logging</link>
      <guid isPermaLink="false">post_121</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>DevConf 2018 и слайды про Агрегатное мышление</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/120/devconf-report"><img src="https://elisdn.ru/upload/images/blogs/25a2f88bd253404bf99fc112d90925f0_250x0.jpg" alt="" title="DevConf 2018 и слайды про Агрегатное мышление" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В пятницу и субботу в Москве в центре Digital October и в офисе Action&nbsp;провели DevConf 2018. Было круто! Выступил с докладом о проектировании доменных агрегатов, где показал примеры инкапсуляции бизнес-логики внутрь доменных сущностей и декомпозиции внутренностей по ответственностям.</p><p><a href="https://elisdn.ru/blog/120/devconf-report" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 24 May 2018 16:15:31 +0300</pubDate>
      <link>https://elisdn.ru/blog/120/devconf-report</link>
      <guid isPermaLink="false">post_120</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Буду на DevConf 2018</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/119/going-to-devconf"><img src="https://elisdn.ru/upload/images/blogs/526a0da624b137b64d40c130fbd09f74_250x0.jpg" alt="" title="Буду на DevConf 2018" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Мастер-класс по Laravel успешно завершён. Если пропустили, то уже можете приобрести запись. Через пару недель запишу крайний скринкаст нашей серии про PSR-фреймворки. А пока внезапная новость.</p><p><a href="https://elisdn.ru/blog/119/going-to-devconf" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 20 Apr 2018 16:09:01 +0300</pubDate>
      <link>https://elisdn.ru/blog/119/going-to-devconf</link>
      <guid isPermaLink="false">post_119</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>PSR-7 фреймворк: Шаблонизаторы и вёрстка</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/118/psr7-framework-templates"><img src="https://elisdn.ru/upload/images/blogs/8e18f1e44e28bb27333b61a1d440b4db_250x0.jpg" alt="" title="PSR-7 фреймворк: Шаблонизаторы и вёрстка" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Пятый урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Пишем свой шаблонизатор с наследованием шаблонов через систему блоков и изучаем работу существующих.</p><p><a href="https://elisdn.ru/blog/118/psr7-framework-templates" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 20 Feb 2018 14:16:07 +0300</pubDate>
      <link>https://elisdn.ru/blog/118/psr7-framework-templates</link>
      <guid isPermaLink="false">post_118</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мастер-класс по Laravel</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/117/laravel-master-class"><img src="https://elisdn.ru/upload/images/blogs/2f181b91be46f3ad51968d0c0cc276cf_250x0.jpg" alt="" title="Мастер-класс по Laravel" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Приветствую читателей моих статей и зрителей моих вебинаров и скринкастов! Наш мастер-класс по PSR-фреймворкам близится к завершению. Четыре урока из шести уже опубликованы и записан черновик пятого. Осталось записать чистовой вариант и смонтировать. В связи с этим пришла пора провести обещанный ранее мастер-класс по Laravel, чтобы в нём на практике применить и закрепить свои теоретические знания и поработать над архитектурными практиками.</p><p><a href="https://elisdn.ru/blog/117/laravel-master-class" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 01 Feb 2018 11:40:23 +0300</pubDate>
      <link>https://elisdn.ru/blog/117/laravel-master-class</link>
      <guid isPermaLink="false">post_117</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>PSR-7 фреймворк: Контейнер внедрения зависимостей</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/116/psr7-framework-container"><img src="https://elisdn.ru/upload/images/blogs/e31060a94c97bc9c65b9aa343882f523_250x0.jpg" alt="" title="PSR-7 фреймворк: Контейнер внедрения зависимостей" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Четвёртый урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Разрабатываем систему управления конфигурацией приложения и автоматизируем внедрение зависимых объектов и параметров в сервисы.</p><p><a href="https://elisdn.ru/blog/116/psr7-framework-container" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 18 Jan 2018 10:17:39 +0300</pubDate>
      <link>https://elisdn.ru/blog/116/psr7-framework-container</link>
      <guid isPermaLink="false">post_116</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>PSR-7 фреймворк: Middleware и Pipeline</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/115/psr7-framework-middleware"><img src="https://elisdn.ru/upload/images/blogs/709cf4ec3b4ed4bf347e33d3463c3f8a_250x0.jpg" alt="" title="PSR-7 фреймворк: Middleware и Pipeline" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Третий урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Сегодня рассмотрим крайне полезную тему реализации промежуточного слоя посредников Middleware поверх контроллеров и написания трубопровода Pipeline для их вызова.</p><p><a href="https://elisdn.ru/blog/115/psr7-framework-middleware" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 28 Dec 2017 08:34:43 +0300</pubDate>
      <link>https://elisdn.ru/blog/115/psr7-framework-middleware</link>
      <guid isPermaLink="false">post_115</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>PSR-7 фреймворк: Контроллеры и маршрутизация</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/114/psr7-framework-router"><img src="https://elisdn.ru/upload/images/blogs/dc59c027c2d920c085a796f906bdb088_250x0.jpg" alt="" title="PSR-7 фреймворк: Контроллеры и маршрутизация" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Второй урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Сегодня рассмотрим разделение на страницы и разделы сайта путём создания контроллеров и сопутствующей системы маршрутизации.</p><p><a href="https://elisdn.ru/blog/114/psr7-framework-router" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 19 Dec 2017 13:10:41 +0300</pubDate>
      <link>https://elisdn.ru/blog/114/psr7-framework-router</link>
      <guid isPermaLink="false">post_114</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>PSR-7 фреймворк: Структура и работа с HTTP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/113/psr7-framework-http"><img src="https://elisdn.ru/upload/images/blogs/37895dfe7670cd97045cf7823001c650_250x0.jpg" alt="" title="PSR-7 фреймворк: Структура и работа с HTTP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Первый урок серии скринкастов по изучению PSR-7 микрофреймворков в PHP. Сегодня рассмотрим создание структуры директорий, написание объектов для взаимодействия с HTTP-протоколом и их тестирование с помощью PHPUnit.</p><p><a href="https://elisdn.ru/blog/113/psr7-framework-http" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 18 Dec 2017 12:03:08 +0300</pubDate>
      <link>https://elisdn.ru/blog/113/psr7-framework-http</link>
      <guid isPermaLink="false">post_113</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Итоги года и планы на будущее</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/112/results-of-the-year"><img src="https://elisdn.ru/upload/images/blogs/273ef1f77db81cbb3e2bf963425e1eb5_250x0.jpg" alt="" title="Итоги года и планы на будущее" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Обычно итоги года подводят лёжа под новогодней ёлкой. Но после летнего отдыха и осеннего ремонта пора сообщить о промежуточных этапах программистской жизни перед новым рабочим сезоном. Да и перед послезавтрашним днём рождения.</p><p><a href="https://elisdn.ru/blog/112/results-of-the-year" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 13 Nov 2017 14:45:53 +0300</pubDate>
      <link>https://elisdn.ru/blog/112/results-of-the-year</link>
      <guid isPermaLink="false">post_112</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Композитные формы в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/111/yii2-composite-forms"><img src="https://elisdn.ru/upload/images/blogs/da01926454d623d50fa32f736908d956_250x0.jpg" alt="" title="Композитные формы в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При разработке с отделением моделей форм от доменных сущностей (чему мы посвятили недавний цикл статей) поначалу возникает неудобство копирования повторяющихся полей из формы в форму. В одном из уроков мастер-класса мы познакомились с одним из решений этого вопроса. Рассмотрим тот код и оформим его в самодостаточное публичное расширение.</p><p><a href="https://elisdn.ru/blog/111/yii2-composite-forms" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 30 Jun 2017 12:43:56 +0300</pubDate>
      <link>https://elisdn.ru/blog/111/yii2-composite-forms</link>
      <guid isPermaLink="false">post_111</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>YiiConf 2017: Фотоотчёт и видео докладов</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/110/yiiconf-2017"><img src="https://elisdn.ru/upload/images/blogs/9ed6f35963229bb8d90ffb68ed71ae37_250x0.jpg" alt="" title="YiiConf 2017: Фотоотчёт и видео докладов" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Вот и прошли 16 и 18 июня, когда на базе конференции DevConf прошёл второй выпуск YiiConf с докладами и мастер-классами. Фотографии успешно выложены, поэтому пора публиковать отчёт</p><p><a href="https://elisdn.ru/blog/110/yiiconf-2017" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 26 Jun 2017 12:22:02 +0300</pubDate>
      <link>https://elisdn.ru/blog/110/yiiconf-2017</link>
      <guid isPermaLink="false">post_110</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Доменные сущности и ActiveRecord</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/109/domain-entities-active-record"><img src="https://elisdn.ru/upload/images/blogs/8c5db2f8783e4c08c99f11032f5b6ea5_250x0.jpg" alt="" title="Доменные сущности и ActiveRecord" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В этом цикле статей мы уже разобрались с проектированием сущностей, спрограммировали свой собственный репозиторий и изучили&nbsp;использование Doctrine ORM. В этот раз завершим эксперимент и узнаем, можно ли с минимальным ущербом подружить нетривиальный класс доменной сущности с ActiveRecord ORM проекта на Yii2.</p><p><a href="https://elisdn.ru/blog/109/domain-entities-active-record" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 07 May 2017 11:31:02 +0300</pubDate>
      <link>https://elisdn.ru/blog/109/domain-entities-active-record</link>
      <guid isPermaLink="false">post_109</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Доменные сущности и Doctrine ORM</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/108/domain-entities-doctrine"><img src="https://elisdn.ru/upload/images/blogs/cababc106ad0c4037e6354540293e757_250x0.jpg" alt="" title="Доменные сущности и Doctrine ORM" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В прошлый раз мы вручную изготовили работающий репозиторий для сохранения доменных сущностей, чтобы более-менее узнать, как работают изнутри различные ORM. В этот раз на основе прошлого опыта рассмотрим готовую библиотеку Doctrine ORM и попробуем интегрировать её в наш проект на Yii2.</p><p><a href="https://elisdn.ru/blog/108/domain-entities-doctrine" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 21 Apr 2017 09:08:44 +0300</pubDate>
      <link>https://elisdn.ru/blog/108/domain-entities-doctrine</link>
      <guid isPermaLink="false">post_108</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мастер-класс по разработке интернет-магазина на Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/107/yii2-shop-master-class"><img src="https://elisdn.ru/upload/images/blogs/3d645e8c4f92e702b2163f9d7ce15a75_250x0.jpg" alt="" title="Мастер-класс по разработке интернет-магазина на Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>После познания дзена на интенсиве по ООП многие просили сделать что-нибудь посущественнее на Yii2 Framework, чтобы применить новые знания на практике. И даже на форуме упомянули, что ждут от меня курс по фреймворку. Как и обещал в блоге, скоро запустим большой многодневный мастер-класс по &nbsp;разработке интернет-магазина на Yii2 с использованием лучших практик.</p><p><a href="https://elisdn.ru/blog/107/yii2-shop-master-class" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 20 Apr 2017 11:31:18 +0300</pubDate>
      <link>https://elisdn.ru/blog/107/yii2-shop-master-class</link>
      <guid isPermaLink="false">post_107</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Реализация репозитория для доменных сущностей</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/106/domain-native-repository"><img src="https://elisdn.ru/upload/images/blogs/cfc3ef29711c533d2fa61ffcf46c8dae_250x0.jpg" alt="" title="Реализация репозитория для доменных сущностей" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Итак, продолжим! Мы уже немного научились&nbsp;проектировать сущности&nbsp;в первой части и даже подготовили небольшой&nbsp;прикладной сервис&nbsp;во второй. И договорились, что нам для хранения доменных сущностей в базе нужно сделать некий репозиторий. И даже сделали его тестовый эмулятор и подготовили работающие тесты. Перед изучением каких-либо готовых решений сегодня навелосипедим собственную реализацию репозитория без использования сторонних ORM-систем.</p><p><a href="https://elisdn.ru/blog/106/domain-native-repository" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 08 Apr 2017 12:34:22 +0300</pubDate>
      <link>https://elisdn.ru/blog/106/domain-native-repository</link>
      <guid isPermaLink="false">post_106</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервисный слой и контроллеры</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/105/services-and-controllers"><img src="https://elisdn.ru/upload/images/blogs/2f9cc0e491419fbee9a2d9cfbd067190_250x0.jpg" alt="" title="Сервисный слой и контроллеры" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Продолжаем погружение в проектирование и разработку. В прошлой статье мы сочинили полноценную сущность-агрегат предметной области&nbsp;Employee&nbsp;со своей собственной бизнес-логикой для описания объектов сотрудников. Теперь нужно как-то работать с ней из контроллера, сохранять в базу данных и доставать обратно. Но наш&nbsp;Employee&nbsp;не содержит ни одной строки по работе с базой данных, поэтому сам сохраняться не умеет. Что же с этим делать?</p><p><a href="https://elisdn.ru/blog/105/services-and-controllers" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 07 Apr 2017 11:02:27 +0300</pubDate>
      <link>https://elisdn.ru/blog/105/services-and-controllers</link>
      <guid isPermaLink="false">post_105</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Проектирование сущностей предметной области</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/104/domain-entities-modelling"><img src="https://elisdn.ru/upload/images/blogs/f74e0efe59f3b0dbf45f0535c4a2b1bc_250x0.jpg" alt="" title="Проектирование сущностей предметной области" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Некоторые разработчики порой недоумевают, как можно программировать на фреймворках без использования CRUD и ActiveRecord, и почему такую &laquo;лёгкую&raquo; на первый взгляд прямую работу с полями в базе данных недолюбливают тру-ООП-шники.&nbsp;Да и многие спрашивают, что в тестах нужно тестировать, а что не нужно. И нужно ли проверять приватные методы или нет? Разберёмся в этих вопросах.</p><p><a href="https://elisdn.ru/blog/104/domain-entities-modelling" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 30 Mar 2017 13:40:05 +0300</pubDate>
      <link>https://elisdn.ru/blog/104/domain-entities-modelling</link>
      <guid isPermaLink="false">post_104</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Построение и тестирование REST API в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/103/yii2-rest-api"><img src="https://elisdn.ru/upload/images/blogs/d2bfeb1862d78cd8799a20223794c2ca_250x0.png" alt="" title="Построение и тестирование REST API в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Вебинар-скринкаст о сравнении протоколов удалённого вызова процедур RPC, доступа к объектам SOAP и архитектуры REST для реализации API для работы с сайтом. Рассмотрели написание RESTFul API для проекта на Yii2 Framework и его тестирование с использованием Codeception.</p><p><a href="https://elisdn.ru/blog/103/yii2-rest-api" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 16 Feb 2017 12:00:39 +0300</pubDate>
      <link>https://elisdn.ru/blog/103/yii2-rest-api</link>
      <guid isPermaLink="false">post_103</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Yii2 Application Development Cookbook</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/102/yii2-application-development-cookbook"><img src="https://elisdn.ru/upload/images/blogs/c410a4b5fa25c870e8442a733d6107f1_250x0.jpg" alt="" title="Yii2 Application Development Cookbook" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Те, кто следит за судьбой PHP и Yii, вероятно заметили в новостях Yii2, предновогоднем PHP-дайджесте на Habrahabr и в блоге RMCreative Александра Макарова о выходе новой редакции популярной книги практических рецептов Yii Development Cookbook, переписанной в этот раз на Yii2.</p><p><a href="https://elisdn.ru/blog/102/yii2-application-development-cookbook" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 16 Jan 2017 15:05:21 +0300</pubDate>
      <link>https://elisdn.ru/blog/102/yii2-application-development-cookbook</link>
      <guid isPermaLink="false">post_102</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Ответы на вопросы по ООП</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/101/oop-week-three-answers"><img src="https://elisdn.ru/upload/images/blogs/aa4d050986ddd170ccd52f05d5952c39_250x0.jpg" alt="" title="Ответы на вопросы по ООП" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Вчера после окончания интенсива провели бесплатный дополнительный урок с ответами на вопросы по ООП. Поговорили ещё раз об ответственностях контроллеров, немного про MVC, View Model и фреймворки, повторили критерии выноса кода в отдельные компоненты. Личных вопросов не было, поэтому с разрешения участников выкладываю запись для всеобщего просмотра.</p><p><a href="https://elisdn.ru/blog/101/oop-week-three-answers" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 07 Dec 2016 14:11:04 +0300</pubDate>
      <link>https://elisdn.ru/blog/101/oop-week-three-answers</link>
      <guid isPermaLink="false">post_101</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Динамические базы данных для ActiveRecord</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/100/active-record-dynamic-db"><img src="https://elisdn.ru/upload/images/blogs/648370fac6ca4ab715a06583243816fd_250x0.jpg" alt="" title="Динамические базы данных для ActiveRecord" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Как-то давно у меня спрашивали, как сделать хранение пользовательского контента в разных базах данных, а недавно этот же вопрос всплыл на форуме вновь: &laquo;Подскажите в общих чертах, как можно реализовать динамическое переключение между базами в зависимости от подключенного пользователя&raquo;.</p><p><a href="https://elisdn.ru/blog/100/active-record-dynamic-db" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 09 Nov 2016 12:48:05 +0300</pubDate>
      <link>https://elisdn.ru/blog/100/active-record-dynamic-db</link>
      <guid isPermaLink="false">post_100</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Неделя ООП: Третий поток</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/99/oop-week-three"><img src="https://elisdn.ru/upload/images/blogs/85bad7d926ae65e3d2f97854df65d0ab_250x0.jpg" alt="" title="Неделя ООП: Третий поток" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Представляю наше главное событие осени. Снова запускаю уже многим полюбившийся супер-мега-интенсив по объектно-ориентированному программированию. Что в третьем потоке будет такого эпического и чем он будет отличаться от предыдущих?</p><p><a href="https://elisdn.ru/blog/99/oop-week-three" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 02 Nov 2016 10:13:36 +0300</pubDate>
      <link>https://elisdn.ru/blog/99/oop-week-three</link>
      <guid isPermaLink="false">post_99</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Функциональный PHP: Многопоточный парсер</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/98/functional-php-parser"><img src="https://elisdn.ru/upload/images/blogs/8f2626123692ca668524d52cc0883ef3_250x0.jpg" alt="" title="Функциональный PHP: Многопоточный парсер" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Второй мастер-класс по функциональному программированию в PHP на примере написания многопоточного парсера активных участников форума. Рассмотрели базовую реализацию многопоточности в PHP и отличия от других языков программирования.</p><p><a href="https://elisdn.ru/blog/98/functional-php-parser" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 23 Oct 2016 21:34:24 +0300</pubDate>
      <link>https://elisdn.ru/blog/98/functional-php-parser</link>
      <guid isPermaLink="false">post_98</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мобильная тема для Yii2 на примере Test First</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/97/tdd-mobile-theme"><img src="https://elisdn.ru/upload/images/blogs/548bb0b55da92673ac40b48770694bfe_250x0.jpg" alt="" title="Мобильная тема для Yii2 на примере Test First" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На вебинаре о тестировании мы не уделили внимания практическому применению парадигмы Test Driven Development (TDD) и Test First в реальных проектах и написанию моков в модульных тестах. Попробуем решить сегодняшнюю задачу по практике написания тестов до кода и потренируемся в составлении модульных и функциональных тестов.</p><p><a href="https://elisdn.ru/blog/97/tdd-mobile-theme" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 18 Oct 2016 16:29:41 +0300</pubDate>
      <link>https://elisdn.ru/blog/97/tdd-mobile-theme</link>
      <guid isPermaLink="false">post_97</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Функциональный PHP: Подсчёт стоимости товаров</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/96/functional-php-cost"><img src="https://elisdn.ru/upload/images/blogs/c332184800463c5e71fa0bc53b93b100_250x0.jpg" alt="" title="Функциональный PHP: Подсчёт стоимости товаров" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Запись мастер-класса по функциональному программированию в PHP на примере подсчёта стоимости товаров в корзине интернет-магазина. Рассмотрели путь эволюции от процедерного кода до функционального.</p><p><a href="https://elisdn.ru/blog/96/functional-php-cost" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 07 Oct 2016 12:10:30 +0300</pubDate>
      <link>https://elisdn.ru/blog/96/functional-php-cost</link>
      <guid isPermaLink="false">post_96</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Функциональное программирование или ООП?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/95/functional-vs-oop"><img src="https://elisdn.ru/upload/images/blogs/44930b9981ddff036561db839be3f7a0_250x0.jpg" alt="" title="Функциональное программирование или ООП?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Часто встречаю статьи и доклады от функциональщиков, что функциональное программирование рулит, а объекты это треш. Не будем здесь говорить о процедурщиках, которые думают, что они функциональщики. Вместо этого разберёмся, чем функциональное программирование отличается от других парадигм и для чего это всё вообще нужно.</p><p><a href="https://elisdn.ru/blog/95/functional-vs-oop" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 04 Oct 2016 12:07:01 +0300</pubDate>
      <link>https://elisdn.ru/blog/95/functional-vs-oop</link>
      <guid isPermaLink="false">post_95</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Куда поместить код: статический метод или сервис?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/94/static-method-vs-service"><img src="https://elisdn.ru/upload/images/blogs/ea37c60819da249081144d4f920ce5c8_250x0.jpg" alt="" title="Куда поместить код: статический метод или сервис?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В очередном обсуждении архитектуры и DDD на форуме Yii (да, такое бывает, но жуткий дефицит) возник вопрос по упрощённому фрагменту сущности User из демо-приложения. Попробуем поразмышлять об архитектуре методов и о доменных моделях в Yii2.</p><p><a href="https://elisdn.ru/blog/94/static-method-vs-service" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 28 Sep 2016 11:36:51 +0300</pubDate>
      <link>https://elisdn.ru/blog/94/static-method-vs-service</link>
      <guid isPermaLink="false">post_94</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Неделя ООП: Интенсив не для ленивых</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/93/oop-week-review"><img src="https://elisdn.ru/upload/images/blogs/580f302ae155cf953c7fa9052940e002_250x0.jpg" alt="" title="Неделя ООП: Интенсив не для ленивых" style="display:block; float:left; margin:0 10px 10px 0"></a><p>С первого интенсива по ООП прошло уже полтора месяца. Надеюсь, что его участники уже несколько раз пересмотрели запись и многое&nbsp;попробовали&nbsp;в своих проектах. Так что пора двигаться дальше.&nbsp;На первом интенсиве это оказалось не так страшно. как многим казалось.&nbsp;Пришло время подвести итоги и сформировать планы на будущее.</p><p><a href="https://elisdn.ru/blog/93/oop-week-review" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 14 Jun 2016 16:03:40 +0300</pubDate>
      <link>https://elisdn.ru/blog/93/oop-week-review</link>
      <guid isPermaLink="false">post_93</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Пример использования кеширования в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/92/yii2-caching"><img src="https://elisdn.ru/upload/images/blogs/18b364f60e72fa8176a91a5710d71a96_250x0.jpg" alt="" title="Пример использования кеширования в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Спонтанный вебинар о применении кеширования данных, фрагментов и страниц в Yii2 на примере каталога с прошлого скринкаста. Рассмотрели несколько вариантов и ответили на интересные вопросы зрителей</p><p><a href="https://elisdn.ru/blog/92/yii2-caching" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 10 Jun 2016 09:12:11 +0300</pubDate>
      <link>https://elisdn.ru/blog/92/yii2-caching</link>
      <guid isPermaLink="false">post_92</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Генерируем классы фикстур в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/91/gii-fixture-generator"><img src="https://elisdn.ru/upload/images/blogs/9a53c2f54e53211cf4a006c5bcbcbd39_250x0.jpg" alt="" title="Генерируем классы фикстур в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При входе в чужой проект (или при доработке своего старого) часто сталкиваемся с отсутствием хоть каких-то автоматических тестов. А без них весьма неприятно ковыряться в исходниках, так как есть постоянный страх что-то сломать. Поэтому первым делом приходится внедрять автотесты. Посмотрим, чем Gii может нам помочь.</p><p><a href="https://elisdn.ru/blog/91/gii-fixture-generator" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 06 Jun 2016 14:21:27 +0300</pubDate>
      <link>https://elisdn.ru/blog/91/gii-fixture-generator</link>
      <guid isPermaLink="false">post_91</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Не откладывайте это на потом</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/90/oop-week"><img src="https://elisdn.ru/upload/images/blogs/deb59afafbb2c4f92e493ee07dc51072_250x0.jpg" alt="" title="Не откладывайте это на потом" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Многие через обратную связь просят их обучить какому-нибудь фреймворку, мотивируя это тем, что хотят перейти на новый уровень разработки. Но после собеседования часто оказывается, что они работали только с самописным кодом или с процедурными CMS, где толком не встречались с объектно-ориентированным подходом.</p><p><a href="https://elisdn.ru/blog/90/oop-week" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 11 Apr 2016 14:17:22 +0300</pubDate>
      <link>https://elisdn.ru/blog/90/oop-week</link>
      <guid isPermaLink="false">post_90</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Работа со связями моделей в Yii2 на примере каталога</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/89/related-models-on-yii2"><img src="https://elisdn.ru/upload/images/blogs/a55a7a41d373b17bcaf173086fa0b14d_250x0.jpg" alt="" title="Работа со связями моделей в Yii2 на примере каталога" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Сначала хотел провести вебинар по связям ActiveRecord-моделей в Yii2 на основе урока о теории баз данных, осветив несколько тем из документации. Но получилась бы куча &laquo;воды&raquo; без практики. Так что решил показать на примере разработки каталога для интернет-магазина из реальной жизни.</p><p><a href="https://elisdn.ru/blog/89/related-models-on-yii2" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 25 Mar 2016 15:56:58 +0300</pubDate>
      <link>https://elisdn.ru/blog/89/related-models-on-yii2</link>
      <guid isPermaLink="false">post_89</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Публикация расширений на GitHub и Packagist</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/88/seo-service-on-yii2-composer-extensions"><img src="https://elisdn.ru/upload/images/blogs/32646b03f4e640a1bd8a1a6668919f47_250x0.jpg" alt="" title="Сервис на Yii2: Публикация расширений на GitHub и Packagist" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В прошлой части мы написали удобный гибридный AuthManager, который можем захотеть использовать в других проектах. Да и в обратную связь поступало много вопросов, как подготовить какой-нибудь компонент для совместного использования в разных приложениях. Так что попробуем сделать полноценное переносимое расширение, которое выгрузим на GitHub и опубликуем для подключения через Composer.</p><p><a href="https://elisdn.ru/blog/88/seo-service-on-yii2-composer-extensions" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 21 Mar 2016 10:26:30 +0300</pubDate>
      <link>https://elisdn.ru/blog/88/seo-service-on-yii2-composer-extensions</link>
      <guid isPermaLink="false">post_88</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Добавление RBAC для разграничения прав</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/87/seo-service-on-yii2-adding-rbac"><img src="https://elisdn.ru/upload/images/blogs/5999eb8788a5c70f6518dcdc1a81b061_250x0.jpg" alt="" title="Сервис на Yii2: Добавление RBAC для разграничения прав" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Недавно мы переработали модульную структуру нашего сервиса. А нас уже есть модуль администрирования, который необходимо закрыть от посторонних глаз. Вдальнейшем мы будем добавлять новые ограничения для разных пользователей, поэтому пришла пора добавить контроль доступа на основе ролей.</p><p><a href="https://elisdn.ru/blog/87/seo-service-on-yii2-adding-rbac" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 17 Mar 2016 16:10:17 +0300</pubDate>
      <link>https://elisdn.ru/blog/87/seo-service-on-yii2-adding-rbac</link>
      <guid isPermaLink="false">post_87</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Связи независимых модулей в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/86/module-relations-on-yii2"><img src="https://elisdn.ru/upload/images/blogs/1db7ca1ee054994c21e046348d4e1665_250x0.jpg" alt="" title="Связи независимых модулей в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>К предыдущей философской статье об организации более-менее независимой структуры модулей появился комментарий вопросом о том, возможно ли оставить каждый модуль независимым, если между ними всё-таки нужно организовать какое-либо взаимодействие.&nbsp;Предположим, что у нас имеются несколько модулей с моделями, которые мы написали сами или подключили чужие.</p><p><a href="https://elisdn.ru/blog/86/module-relations-on-yii2" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 07 Mar 2016 11:25:06 +0300</pubDate>
      <link>https://elisdn.ru/blog/86/module-relations-on-yii2</link>
      <guid isPermaLink="false">post_86</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Организация переносимых модулей</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/85/seo-service-on-yii2-reusing-of-modules"><img src="https://elisdn.ru/upload/images/blogs/3e9feeb8959be27bbcf894cbe0eefbe0_250x0.jpg" alt="" title="Сервис на Yii2: Организация переносимых модулей" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В предыдущем рефакторинге мы начали перемещать переводы и конфигурацию в модули. Осталось сделать ещё одну вещь, незаметную снаружи, но очень важную для структуры приложения. А именно, довести разбивку на модули до логического завершения.</p><p><a href="https://elisdn.ru/blog/85/seo-service-on-yii2-reusing-of-modules" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 25 Feb 2016 16:58:27 +0300</pubDate>
      <link>https://elisdn.ru/blog/85/seo-service-on-yii2-reusing-of-modules</link>
      <guid isPermaLink="false">post_85</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Тестирование приложения с Codeception</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/84/seo-service-on-yii2-application-testing"><img src="https://elisdn.ru/upload/images/blogs/bc3e2c509628aa431267eee944be3736_250x0.jpg" alt="" title="Сервис на Yii2: Тестирование приложения с Codeception" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Мы разбили проект на модули и сделали управление пользователями, так что некий каркас приложения у нас готов. Пора приступить к написанию модульных, интеграционных, функциональных и приёмочных тестов. Сейчас расскажем о специфичных вещах, касающихся именно нашего проекта на основе нашего большого вебинара о тестировании.</p><p><a href="https://elisdn.ru/blog/84/seo-service-on-yii2-application-testing" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 04 Feb 2016 12:31:48 +0300</pubDate>
      <link>https://elisdn.ru/blog/84/seo-service-on-yii2-application-testing</link>
      <guid isPermaLink="false">post_84</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Немного о теории реляционных баз данных</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/83/something-about-databases"><img src="https://elisdn.ru/upload/images/blogs/d250426e8e84524390c754271d5dcdd5_250x0.jpg" alt="" title="Немного о теории реляционных баз данных" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На форуме и в личных сообщениях часто спрашивают о проектировании базы данных и о работе со связями в ActiveRecord во фреймворке. Про сохранение связанных моделей, про их вывод, про сортировку и поиск. Но и при этом многие не знают, откуда эти связи берутся, как организовываются и как за ними нужно следить. Поэтому отдельно поговорили о теории баз даных с практическим уклоном на нормализацию и внешние ключи.</p><p><a href="https://elisdn.ru/blog/83/something-about-databases" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 29 Jan 2016 09:30:49 +0300</pubDate>
      <link>https://elisdn.ru/blog/83/something-about-databases</link>
      <guid isPermaLink="false">post_83</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Автоудаление неактивных пользователей</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/82/seo-service-on-yii2-inactive-autoclean"><img src="https://elisdn.ru/upload/images/blogs/1857e3401d15297870ef16f14bd959fc_250x0.jpg" alt="" title="Сервис на Yii2: Автоудаление неактивных пользователей" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В прошлой части мы немного изменили структуру нашей системы. Фактически это были банальные операции по переносу файлов и частей кода с места на место. А сейчас добавим что-то новое. В комментариях предложили вычищать из базы пользователей, не активировавших свой адрес при регистрации. Рассмотрим. как это можно осуществить.</p><p><a href="https://elisdn.ru/blog/82/seo-service-on-yii2-inactive-autoclean" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 26 Jan 2016 12:52:11 +0300</pubDate>
      <link>https://elisdn.ru/blog/82/seo-service-on-yii2-inactive-autoclean</link>
      <guid isPermaLink="false">post_82</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Первый рефакторинг</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/81/seo-service-on-yii2-first-refactoring"><img src="https://elisdn.ru/upload/images/blogs/fc59c067ef943b01dfa7e2174bcdc490_250x0.jpg" alt="" title="Сервис на Yii2: Первый рефакторинг" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В нашем проекте хоть и есть модульная структура, но она пока модульная не полностью. Предыдущие главы были немного дополнены и изменены. Если вы следили за обновлениями в комментариях, то могли заметить, что мы немного исправили наш проект. Сегодня мы как раз рассмотрим эти исправления.</p><p><a href="https://elisdn.ru/blog/81/seo-service-on-yii2-first-refactoring" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 24 Dec 2015 12:02:08 +0300</pubDate>
      <link>https://elisdn.ru/blog/81/seo-service-on-yii2-first-refactoring</link>
      <guid isPermaLink="false">post_81</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Восемь причин изучить PHPDoc</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/80/some-reasons-to-learn-phpdoc"><img src="https://elisdn.ru/upload/images/blogs/890aa4b073f051c8d36e796f03e8844d_250x0.jpg" alt="" title="Восемь причин изучить PHPDoc" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Часто встречаю вопрос о том, что же это за странные блоки комментариев постоянно генерируются в представлениях, в ActiveRecord-классах и перед всеми методами в коде? Что они обозначают и зачем они нужны? Это какой-то особый синтаксис объявления переменных в PHP или что?</p><p><a href="https://elisdn.ru/blog/80/some-reasons-to-learn-phpdoc" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 10 Dec 2015 13:11:55 +0300</pubDate>
      <link>https://elisdn.ru/blog/80/some-reasons-to-learn-phpdoc</link>
      <guid isPermaLink="false">post_80</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Аутентификация, авторизация и RBAC в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/79/authentication-and-rbac-on-yii2"><img src="https://elisdn.ru/upload/images/blogs/fa38adfb3c5cf0d745feb514a858df6c_250x0.jpg" alt="" title="Аутентификация, авторизация и RBAC в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В этот раз порассуждали о понятиях и реализациях различных подходов к авторизации, аутентификации и контроле доступа на основе ролей в Yii2. Рассмотрели нюансы, сравнили друг с другом различные подходы к реализации RBAC.</p><p><a href="https://elisdn.ru/blog/79/authentication-and-rbac-on-yii2" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 02 Dec 2015 15:56:23 +0300</pubDate>
      <link>https://elisdn.ru/blog/79/authentication-and-rbac-on-yii2</link>
      <guid isPermaLink="false">post_79</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Тестирование с PHPUnit и Codeception</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/78/yii2-codeception-testing"><img src="https://elisdn.ru/upload/images/blogs/034caa43ec60e2884aaad7eaa5837d46_250x0.jpg" alt="" title="Тестирование с PHPUnit и Codeception" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Самая объёмная тема среди предложенных завершена.&nbsp;Выкладываю исправленную и дополненную запись вебинара-скринкаста о тестировании c PHPUnit и Codeception. Добавлены и доработаны примеры кода, пункты про аннотации, фикстуры, анализ покрытия, Faker, про установку всего через Composer и другие нюансы.</p><p><a href="https://elisdn.ru/blog/78/yii2-codeception-testing" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 30 Oct 2015 11:35:28 +0300</pubDate>
      <link>https://elisdn.ru/blog/78/yii2-codeception-testing</link>
      <guid isPermaLink="false">post_78</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Фриланс и студия. Куда податься программисту?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/77/freelance-vs-remote-work"><img src="https://elisdn.ru/upload/images/blogs/03d4c8eb741b6b7b4c47ce3dd14e1d87_250x0.jpg" alt="" title="Фриланс и студия. Куда податься программисту?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Недавно в обратную связь поступил вопрос: куда пойти работать неопытному молодому программисту? А именно, продолжить искать заказы на фрилансе или всё-таки устроиться удалённо в крупную студию или другую компанию и работать там?</p><p><a href="https://elisdn.ru/blog/77/freelance-vs-remote-work" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 14 Jul 2015 12:33:56 +0300</pubDate>
      <link>https://elisdn.ru/blog/77/freelance-vs-remote-work</link>
      <guid isPermaLink="false">post_77</guid>
      <category><![CDATA[Работа и бизнес]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Модуль администрирования и GridView</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/76/seo-service-on-yii2-admin-and-sef"><img src="https://elisdn.ru/upload/images/blogs/d8b3acdf5e673e54534eeb3244191bdb_250x0.jpg" alt="" title="Сервис на Yii2: Модуль администрирования и GridView" style="display:block; float:left; margin:0 10px 10px 0"></a><p>После добавления личного кабинета пользователя и редактора профиля в прошлых частях сегодня начнём делать модуль администратора. А именно, создадим модуль и CRUD для управления пользователями с помощью генератора Gii и доработаем его вид и маршрутизацию под свои требования.</p><p><a href="https://elisdn.ru/blog/76/seo-service-on-yii2-admin-and-sef" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 13 Jul 2015 15:38:35 +0300</pubDate>
      <link>https://elisdn.ru/blog/76/seo-service-on-yii2-admin-and-sef</link>
      <guid isPermaLink="false">post_76</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Устройство поведений Behaviors в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/75/usage-of-behaviors-in-yii2"><img src="https://elisdn.ru/upload/images/blogs/6ac24bf4828b977441f3eb195349eef7_250x0.jpg" alt="" title="Устройство поведений Behaviors в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Время идёт, уроки становятся круче.&nbsp;Провели очередной вебинар по мотивам статьи о поведениях. В перерыве поговорили о жизни, о программировании, о блогах.&nbsp;А какая тема дальше? Поразмышлял об этом в эфире. В любом случае сразу вам сообщю в рассылке по вебинарам.</p><p><a href="https://elisdn.ru/blog/75/usage-of-behaviors-in-yii2" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 29 Jun 2015 12:38:22 +0300</pubDate>
      <link>https://elisdn.ru/blog/75/usage-of-behaviors-in-yii2</link>
      <guid isPermaLink="false">post_75</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Работа с событиями в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/74/events-on-yii2-and-javascript"><img src="https://elisdn.ru/upload/images/blogs/cc01d6a2506be63a1aa85d2da7f756da_250x0.jpg" alt="" title="Работа с событиями в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Давным-давно была опубликована статья про события в Yii. В дополнение на этот раз попробовали выполнить несколько примеров в прямом эфире. Начали с событий в JavaScript, пощёлкали по кнопкам, потом перешли в PHP и изучили принципы объявления, навешивания обработчиков и запуска события в Yii2 Framework.</p><p><a href="https://elisdn.ru/blog/74/events-on-yii2-and-javascript" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 25 May 2015 04:28:05 +0300</pubDate>
      <link>https://elisdn.ru/blog/74/events-on-yii2-and-javascript</link>
      <guid isPermaLink="false">post_74</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Геттеры и сеттеры: магия и Yii2 </title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/73/getters-and-setters-yii2-magic"><img src="https://elisdn.ru/upload/images/blogs/efb3d98cbcf93b2a5819a0306fefab72_250x0.jpg" alt="" title="Геттеры и сеттеры: магия и Yii2 " style="display:block; float:left; margin:0 10px 10px 0"></a><p>При подготовке вебинара о событиях вспомнил, что в Yii2, в отличие от первой версии, события и поведения на компоненты приложения можно навесить через конфигурационный файл виртуальными свойствами. И я уже давно хотел рассказать о геттерах и сеттерах.</p><p><a href="https://elisdn.ru/blog/73/getters-and-setters-yii2-magic" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 15 May 2015 13:53:54 +0300</pubDate>
      <link>https://elisdn.ru/blog/73/getters-and-setters-yii2-magic</link>
      <guid isPermaLink="false">post_73</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Что такое MVC Framework на примере Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/72/what-is-web-mvc-framework"><img src="https://elisdn.ru/upload/images/blogs/cf14594644f24d7c7a00f2684e27f5aa_250x0.jpg" alt="" title="Что такое MVC Framework на примере Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Поговорили о том, что же такое фреймворк, из чего он состоит, что за зверь этот Web-MVC и как он облегчает жизнь. Это нам как раз пригодится при изучении остальных тем. А ещё немного порассуждали о других фреймворках в блоке ответов на вопросы.</p><p><a href="https://elisdn.ru/blog/72/what-is-web-mvc-framework" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 07 May 2015 22:41:30 +0300</pubDate>
      <link>https://elisdn.ru/blog/72/what-is-web-mvc-framework</link>
      <guid isPermaLink="false">post_72</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Просмотр и редактирование профиля</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/71/seo-service-on-yii2-user-profile"><img src="https://elisdn.ru/upload/images/blogs/1d701ee664941896a4117768874a744c_250x0.jpg" alt="" title="Сервис на Yii2: Просмотр и редактирование профиля" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В прошлой части мы исправляли и переводили интерфейс нашего приложения. Сегодня мы, как анонсировалось ранее, добавим страницу просмотра профиля пользователя и выведем формы для редактирования информации о пользователе и для смены пароля.</p><p><a href="https://elisdn.ru/blog/71/seo-service-on-yii2-user-profile" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 28 Apr 2015 13:09:25 +0300</pubDate>
      <link>https://elisdn.ru/blog/71/seo-service-on-yii2-user-profile</link>
      <guid isPermaLink="false">post_71</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Вебинары по Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/70/programming-webinars"><img src="https://elisdn.ru/upload/images/blogs/860842596b76ec5c86f785176b060740_250x0.jpg" alt="" title="Вебинары по Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Ура! Вы меня уговорили. На улице потеплело и я теперь добрый.&nbsp;Приглашаю всех желающих на бесплатные вебинары по веб-программированию в общем и по разработке на Yii2 Framework в частности. Конечно не такие полезные, как на картинке, но тоже сойдёт :)</p><p><a href="https://elisdn.ru/blog/70/programming-webinars" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 22 Apr 2015 16:46:07 +0300</pubDate>
      <link>https://elisdn.ru/blog/70/programming-webinars</link>
      <guid isPermaLink="false">post_70</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Доработка шаблона приложения и i18n</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/69/seo-service-on-yii2-interface-amendments"><img src="https://elisdn.ru/upload/images/blogs/2a32409eff643378026a32e5458eb068_250x0.jpg" alt="" title="Сервис на Yii2: Доработка шаблона приложения и i18n" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В прошлый раз мы к нашему приложению на basic-шаблоне добавили функционал хранения пользователей в базе данных и добавили формы подтверждения электронного адреса и восстановления пароля. Сегодня мы сделаем последние подготовительные штрихи: доработаем интерфейс, переведём всё с английского языка и добавим кроссбраузерность.</p><p><a href="https://elisdn.ru/blog/69/seo-service-on-yii2-interface-amendments" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 09 Apr 2015 10:20:14 +0300</pubDate>
      <link>https://elisdn.ru/blog/69/seo-service-on-yii2-interface-amendments</link>
      <guid isPermaLink="false">post_69</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>UrlManager и UrlRule: Беседа о маршрутизации в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/68/urlmanager-and-urlrule-conversation"><img src="https://elisdn.ru/upload/images/blogs/e9f5b243f136bb3849a52c7c801c7541_250x0.jpg" alt="" title="UrlManager и UrlRule: Беседа о маршрутизации в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Возникла идея с разрешения собеседника записать и выложить небольшую спонтанную консультацию. Первый блин записи со скайпа вышел комом: голоса друг на друга накладываются и по громкости разные. Кто осилит досмотреть до конца, тот герой :)</p><p><a href="https://elisdn.ru/blog/68/urlmanager-and-urlrule-conversation" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 25 Mar 2015 14:12:33 +0300</pubDate>
      <link>https://elisdn.ru/blog/68/urlmanager-and-urlrule-conversation</link>
      <guid isPermaLink="false">post_68</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Читаю документацию по фреймворку, а тут такое...</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/67/documentation-for-beginners"><img src="https://elisdn.ru/upload/images/blogs/78ca1f7696d7dc8aa3825fe6104624fe_250x0.jpg" alt="" title="Читаю документацию по фреймворку, а тут такое..." style="display:block; float:left; margin:0 10px 10px 0"></a><p>Ну вот опять! Сел сочинить небольшой комментарий к посту на форуме и разошёлся на целую статью. В общем, публикую здесь. Кстати, заходите на форум (ссылки ниже в статье). Там весело. Пока немного отдохнул после практикума. Оказалось, что двухмесячные курсы сильно выматывают расходами энергии на подготовку и проведение. Пришлось на два месяца забросить другие дела. Теперь пора с новыми силами возвращаться в блог.</p><p><a href="https://elisdn.ru/blog/67/documentation-for-beginners" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 27 Feb 2015 15:30:27 +0300</pubDate>
      <link>https://elisdn.ru/blog/67/documentation-for-beginners</link>
      <guid isPermaLink="false">post_67</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Ещё чуть-чуть... Обращение к записавшимся</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/66/git-and-composer-going-to-begin"><img src="https://elisdn.ru/upload/images/blogs/7bafa5c7f35d21c44d07713399dd5131_250x0.jpg" alt="" title="Ещё чуть-чуть... Обращение к записавшимся" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Чуть больше месяца назад стартовала предварительная запись на новый мини-спринт по изучению систем контроля версий. Месяц уже начался две недели назад, и у меня есть для Вас несколько хороших новостей. Думал отправить это письмо только записавшимся, но потом решил выложить обращение и здесь, так как личных тайн здесь нет.&nbsp;Итак, поехали!</p><p><a href="https://elisdn.ru/blog/66/git-and-composer-going-to-begin" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 15 Nov 2014 19:55:42 +0300</pubDate>
      <link>https://elisdn.ru/blog/66/git-and-composer-going-to-begin</link>
      <guid isPermaLink="false">post_66</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Перенос пользователей в БД</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/65/seo-service-on-yii2-moving-users-into-db"><img src="https://elisdn.ru/upload/images/blogs/2cb4767831ff8e27dbf778a445192585_250x0.jpg" alt="" title="Сервис на Yii2: Перенос пользователей в БД" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В прошлых частях мы создали новое приложение на Yii2, доработали конфигурационный файлы и разбили приложение на модули. Сегодня мы, как было обещано ранее, перенесём хранение пользователей в базу данных и добавим возможность регистрации и восстановления пароля.</p><p><a href="https://elisdn.ru/blog/65/seo-service-on-yii2-moving-users-into-db" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 14 Oct 2014 18:22:10 +0400</pubDate>
      <link>https://elisdn.ru/blog/65/seo-service-on-yii2-moving-users-into-db</link>
      <guid isPermaLink="false">post_65</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Запускаем практикум по Git и Composer</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/64/git-and-composer-for-beginners"><img src="https://elisdn.ru/upload/images/blogs/86e0e3caab07c11fc7b83ce5f51a7ac5_250x0.jpg" alt="" title="Запускаем практикум по Git и Composer" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В комментариях и в обратной связи повышенный интерес проявляется к Git и Composer от тех, кто не сталкивался с ними ранее. Статьи и инструкции написаны, но их сразу мало кто поймёт, так как в ходе изучения вопросы задать некому. Обычная проблема документации. Команды выучить можно, но что именно с ними делать и как правильно применять &ndash; понять сложно.</p><p><a href="https://elisdn.ru/blog/64/git-and-composer-for-beginners" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 09 Oct 2014 19:01:08 +0400</pubDate>
      <link>https://elisdn.ru/blog/64/git-and-composer-for-beginners</link>
      <guid isPermaLink="false">post_64</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Хлебные крошки в Symfony2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/63/breadcrumbs-for-symfony"><img src="https://elisdn.ru/upload/images/blogs/63114e87b4809e72831295012e3e35a8_250x0.jpg" alt="" title="Хлебные крошки в Symfony2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Начиная проект на Symfony2, в отличие от Yii, у разработчика наверняка возникает чувство недостатка встроенной реализации де-факто стандартных обыденных вещей вроде паджинатора и хлебных крошек. Но это сложно назвать проблемой, так как за много лет существования фреймворка написано множество готовых компонентов.</p><p><a href="https://elisdn.ru/blog/63/breadcrumbs-for-symfony" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 01 Sep 2014 17:41:37 +0400</pubDate>
      <link>https://elisdn.ru/blog/63/breadcrumbs-for-symfony</link>
      <guid isPermaLink="false">post_63</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Настройки IDE и модули</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/62/seo-service-on-yii2-ide-and-modules"><img src="https://elisdn.ru/upload/images/blogs/4c266c42256a0b06e9c8368804d57349_250x0.jpg" alt="" title="Сервис на Yii2: Настройки IDE и модули" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Продолжаем разработку нашего чудо-сервиса на Yii2. На прошлом уроке мы создали через Composer новый проект и дополнили его раздельной системой конфигурационных файлов. Сегодня мы внедрим в проект модульную структуру и немного лучше познакомимся с базовыми настройками и некоторыми возможностями авторефакторинга в PhpStorm IDE.</p><p><a href="https://elisdn.ru/blog/62/seo-service-on-yii2-ide-and-modules" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 04 Aug 2014 15:01:17 +0400</pubDate>
      <link>https://elisdn.ru/blog/62/seo-service-on-yii2-ide-and-modules</link>
      <guid isPermaLink="false">post_62</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Подключаем SOAP веб-сервисы в Yii2</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/61/soap-services-on-yii2"><img src="https://elisdn.ru/upload/images/blogs/9779c931da45f8cbb62db306687a1ceb_250x0.jpg" alt="" title="Подключаем SOAP веб-сервисы в Yii2" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Многие сайты и некоторые серверные приложения позволяют обращаться к ним по сети посредством стандартизированного протокола SOAP. Они выкладывают некий открытый API, через который позволяют вызывать некоторые их методы с передачей параметров. При этом масштабы таких систем могут быть совершенно разными: получение прогноза погоды, сеть 1C крупной организации или система бронирования авиабилетов.</p><p><a href="https://elisdn.ru/blog/61/soap-services-on-yii2" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 25 Jul 2014 13:02:55 +0400</pubDate>
      <link>https://elisdn.ru/blog/61/soap-services-on-yii2</link>
      <guid isPermaLink="false">post_61</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сервис на Yii2: Установка и настройка приложения</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/60/seo-service-on-yii2-installing-of-application"><img src="https://elisdn.ru/upload/images/blogs/ecaf32c032b47a9d15aa8cc1d97498ac_250x0.jpg" alt="" title="Сервис на Yii2: Установка и настройка приложения" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В комментариях к предыдущей статье появилось предложение пошагово разобрать процесс разработки целого приложения на Yii2. Инструкция по созданию блога выложена в официальном руководстве. Пока для первой части, но это, думаю, ненадолго. Конечно же, там не было раскрыто специфических моментов, но, тем не менее, руководство имелось. Оно открыто для изменений: каждый знакомый с системами контроля версий может это руководство и блог доработать.</p><p><a href="https://elisdn.ru/blog/60/seo-service-on-yii2-installing-of-application" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 16 Jul 2014 14:21:24 +0400</pubDate>
      <link>https://elisdn.ru/blog/60/seo-service-on-yii2-installing-of-application</link>
      <guid isPermaLink="false">post_60</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Приветствие Yii2. Интерактив</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/59/yii2-interactive"><img src="https://elisdn.ru/upload/images/blogs/e98dd36de5d7d245b6b84e571093d75b_250x0.jpg" alt="" title="Приветствие Yii2. Интерактив" style="display:block; float:left; margin:0 10px 10px 0"></a><p>С момента предыдущей публикации на сайте прошло два месяца. За это время практически наступило лето, начал набирать обороты мой замороженный с декабря по апрель марафонский контентный проект, изучено много материалов в различных областях знаний. Но главное событие этой весны для некоторых программистов &ndash; это выход beta-версии нового Yii 2.0. Это не может не радовать, так как практически на наших глазах произошёл вход Yii в экосистему фреймворков нового поколения.</p><p><a href="https://elisdn.ru/blog/59/yii2-interactive" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 26 May 2014 14:45:09 +0400</pubDate>
      <link>https://elisdn.ru/blog/59/yii2-interactive</link>
      <guid isPermaLink="false">post_59</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Продвигаем старые записи из архива в Twitter</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/58/old-posts-promotion-on-twitter"><img src="https://elisdn.ru/upload/images/blogs/9b08daaa109722f4db9c20c6ef53eea7_250x0.jpg" alt="" title="Продвигаем старые записи из архива в Twitter" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Хотите сделать приятелю или самому себе подарок в какой-нибудь знаменательный день? Любому человеку, который ведёт какой-нибудь блог и совмещает с этим активную жизнь в твиттере. Ведь не так уж и сложно добавить своему сайту несколько дополнительных переходов из этого микроблога.</p><p><a href="https://elisdn.ru/blog/58/old-posts-promotion-on-twitter" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 13 Mar 2014 20:14:30 +0400</pubDate>
      <link>https://elisdn.ru/blog/58/old-posts-promotion-on-twitter</link>
      <guid isPermaLink="false">post_58</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Здравствуйте, Дмитрий! Как стать профессионалом?</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/57/hello-from-comments"><img src="https://elisdn.ru/upload/images/blogs/984119e6ffd51a31bc846bc3642e5fc6_250x0.jpg" alt="" title="Здравствуйте, Дмитрий! Как стать профессионалом?" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Среди комментариев к своим статьям я неожиданно получил сообщение&nbsp;с просьбой дать совет по изучению компьютерной грамотности. Про все технические моменты рассказывать в статье не имеет смысла, так как это невозможно охватить разом, но моральное наставление дать следует. Если кто-то хочет стать крутым компьютерщиком/бизнесменом/президентом, то без личностной трансформации добиться этого проблематично.</p><p><a href="https://elisdn.ru/blog/57/hello-from-comments" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 21 Feb 2014 19:08:12 +0400</pubDate>
      <link>https://elisdn.ru/blog/57/hello-from-comments</link>
      <guid isPermaLink="false">post_57</guid>
      <category><![CDATA[Саморазвитие]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Вывод иерархических пунктов в CGridView в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/56/yii-hierarchical-gridview"><img src="https://elisdn.ru/upload/images/blogs/f33329bc882bb932e143aaba6f48ccdb_250x0.jpg" alt="" title="Вывод иерархических пунктов в CGridView в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Недавно в обратную связь поступил вопрос. Один из читателей поинтересовался, как можно сделать удобный вывод иерархических данных, построенных по принципу Adjacency List, в виджете CGridView вместо CTreeView. Это, например, могут быть вложенные статические страницы, категории или пункты меню, хранимые в базе данных. Попробуем решить этот вопрос.</p><p><a href="https://elisdn.ru/blog/56/yii-hierarchical-gridview" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 29 Jan 2014 16:42:51 +0400</pubDate>
      <link>https://elisdn.ru/blog/56/yii-hierarchical-gridview</link>
      <guid isPermaLink="false">post_56</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Composer и пакетная революция в мире PHP</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/55/package-revolution-in-the-php-world"><img src="https://elisdn.ru/upload/images/blogs/4a75494c95816c85c20d9d5cfc394173_250x0.jpg" alt="" title="Composer и пакетная революция в мире PHP" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Мир PHP-разработки с давних времён славится хаотической практикой создания зависимых самописных неуниверсальных систем.&nbsp;И приверженцы остальных языков над ним смеялись. В последние годы, что действительно хорошо, он всё более масштабно переходит к другому, более осознанному будущему. Интересная для многих практика социального программирования с использованием публичных репозиториев привнесла идею обобщении полученных знаний.</p><p><a href="https://elisdn.ru/blog/55/package-revolution-in-the-php-world" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 23 Jan 2014 19:56:47 +0400</pubDate>
      <link>https://elisdn.ru/blog/55/package-revolution-in-the-php-world</link>
      <guid isPermaLink="false">post_55</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Элементы SEO для Yii Framework</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/54/seo-elements-for-yii-framework"><img src="https://elisdn.ru/upload/images/blogs/d8cf3872d6f9e92a57013f3d3a3fd2f9_250x0.jpg" alt="" title="Элементы SEO для Yii Framework" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При построении любого сайта в какой-то момент разработчик сталкивается с требованиями поисковой оптимизации. Традиционно она включает в себя построение правильной адресной структуры, исключение из индексации служебных страниц и неинтересных для поискового робота фрагментов, добавление метаинформации для записей. Более расширенный вариант подразумевает специфическое распределение ссылочного веса и борьбу с дубликатами адресов.</p><p><a href="https://elisdn.ru/blog/54/seo-elements-for-yii-framework" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 24 Dec 2013 22:05:23 +0400</pubDate>
      <link>https://elisdn.ru/blog/54/seo-elements-for-yii-framework</link>
      <guid isPermaLink="false">post_54</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Предпраздничные новости декабря</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/53/three-december-news"><img src="https://elisdn.ru/upload/images/blogs/1d0f13fab3d7cdda2f5a2a768970aad1_250x0.jpg" alt="" title="Предпраздничные новости декабря" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Вот и прошёл недавно первый год второй жизни блога.&nbsp;В то время, пока вы делитесь эмоциями в комментариях ко вчерашней статье о миграциях, пора мне выйти из тени и поделиться парой новостей. Итак, если у вас есть какие-нибудь предложения к развитию блога в будущем году, если у вас уже праздничное настроение, то прошу пожаловать под кат.</p><p><a href="https://elisdn.ru/blog/53/three-december-news" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 12 Dec 2013 18:15:03 +0400</pubDate>
      <link>https://elisdn.ru/blog/53/three-december-news</link>
      <guid isPermaLink="false">post_53</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Использование миграций базы данных</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/52/db-migrations-in-frameworks"><img src="https://elisdn.ru/upload/images/blogs/c4fb6a8f61a113f06b857f4851ad3779_250x0.jpg" alt="" title="Использование миграций базы данных" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Три программиста пишут код проекта. И с кодом у них нет проблем. Есть три рабочих машины, центральный репозиторий и главный рабочий сервер, берущий файлы из этого же репозитория. Работа кипит. у каждого на своём компьютере установлен PhpMyAdmin, что им позволяет время от времени вносить изменения в свою базу данных.</p><p><a href="https://elisdn.ru/blog/52/db-migrations-in-frameworks" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 11 Dec 2013 16:26:03 +0400</pubDate>
      <link>https://elisdn.ru/blog/52/db-migrations-in-frameworks</link>
      <guid isPermaLink="false">post_52</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Консольный минимизатор скриптов и стилей в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/51/console-css-and-js-minimizer-for-yii"><img src="https://elisdn.ru/upload/images/blogs/edc7032e8b52330579468e84325fbc28_250x0.jpg" alt="" title="Консольный минимизатор скриптов и стилей в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На прошлом уроке мы познакомились с консольным режимом в PHP и с консольными командами в Yii. Теперь пришла пора собрать вместе наши знания и перейти к практике. При разработке любых проектов удобно разделять CSS и JavaScript на отдельные файлы, но их обилие в секции HEAD заметно уменьшает скорость загрузки веб-страницы. Итак, поехали!</p><p><a href="https://elisdn.ru/blog/51/console-css-and-js-minimizer-for-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 24 Nov 2013 10:17:02 +0400</pubDate>
      <link>https://elisdn.ru/blog/51/console-css-and-js-minimizer-for-yii</link>
      <guid isPermaLink="false">post_51</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Консольные команды в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/50/console-commands-in-yii"><img src="https://elisdn.ru/upload/images/blogs/818ec2032988dbf00057a2c52ddccb8f_250x0.jpg" alt="" title="Консольные команды в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Для решения специфических задач часто используются готовые консольные команды. Но намного интереснее не только использовать чужие, но и уметь создавать свои. Это поможет легко автоматизировать любую рутинную работу, на которую обычно тратится довольно много времени. Многие фреймворки имеют встроенные инструменты для написания не только самих веб-приложений, но и для создания инфраструктуры пользовательских консольных команд.</p><p><a href="https://elisdn.ru/blog/50/console-commands-in-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 19 Nov 2013 12:32:59 +0400</pubDate>
      <link>https://elisdn.ru/blog/50/console-commands-in-yii</link>
      <guid isPermaLink="false">post_50</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>День варенья программиста</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/49/happy-birthday"><img src="https://elisdn.ru/upload/images/blogs/68f70d446cbab045cf89b742562a4dae_250x0.jpg" alt="" title="День варенья программиста" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В этот знаменательный день, 15-е ноября, автор данного сайта справляет очень хороший праздник. В общем, у меня отличное настроение и хочется всем дарить подарки. В связи с данным событием на эти два дня объявляю маленький конкурс. Присоединяйтесь!</p><p><a href="https://elisdn.ru/blog/49/happy-birthday" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 15 Nov 2013 11:57:51 +0400</pubDate>
      <link>https://elisdn.ru/blog/49/happy-birthday</link>
      <guid isPermaLink="false">post_49</guid>
      <category><![CDATA[События и акции]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Маршрутизация во фреймворках: CUrlManager в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/48/routing-in-frameworks-yii-curlmanager"><img src="https://elisdn.ru/upload/images/blogs/ebf071749467e53807e319897f43b2d2_250x0.jpg" alt="" title="Маршрутизация во фреймворках: CUrlManager в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В первой части мы с вами рассмотрели работу системы маршрутизации, изучили некоторые нюансы и научились правильно составлять шаблоны адресов. В этой же части мы попробуем перейти непосредственно к пониманию работы и нюансам использования менеджера адресов в Yii Framework.</p><p><a href="https://elisdn.ru/blog/48/routing-in-frameworks-yii-curlmanager" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 18 Sep 2013 14:45:01 +0400</pubDate>
      <link>https://elisdn.ru/blog/48/routing-in-frameworks-yii-curlmanager</link>
      <guid isPermaLink="false">post_48</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Маршрутизация во фреймворках: Управление адресами URL</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/47/routing-in-frameworks-url-managing"><img src="https://elisdn.ru/upload/images/blogs/d003e0927794859691ee4e3a3aea8cd5_250x0.jpg" alt="" title="Маршрутизация во фреймворках: Управление адресами URL" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Каждый разработчик, знакомящийся с каким-либо фреймворком, проходит некий путь знакомства с системой маршрутизации запросов в нём. Данный компонент присутствует во многих системах и служит для использования &laquo;красивых&raquo; адресов страниц. В этой статье мы познакомимся с работой этой системы.</p><p><a href="https://elisdn.ru/blog/47/routing-in-frameworks-url-managing" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 18 Sep 2013 14:41:35 +0400</pubDate>
      <link>https://elisdn.ru/blog/47/routing-in-frameworks-url-managing</link>
      <guid isPermaLink="false">post_47</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Нет времени? Играйте в игры!</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/46/if-do-not-have-time-play-games"><img src="https://elisdn.ru/upload/images/blogs/19799a1c6d001af5d353fe7240a5f443_250x0.jpg" alt="" title="Нет времени? Играйте в игры!" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Нравятся ли вам компьютерные игры? Нравится ли то приятное чувство, когда растут проценты прохождения миссий и от уровня к уровню повышаются умения вашего персонажа или скорость и мощь вашего автомобиля? Как за неделю игры набираются десятки артефактов и растут запасы золота? Прямо сейчас вам предоставляется исключительная возможность сыграть в стратегию от первого лица, в которой &laquo;прокачать&raquo; нового, более чем реального героя.</p><p><a href="https://elisdn.ru/blog/46/if-do-not-have-time-play-games" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 20 Aug 2013 19:05:52 +0400</pubDate>
      <link>https://elisdn.ru/blog/46/if-do-not-have-time-play-games</link>
      <guid isPermaLink="false">post_46</guid>
      <category><![CDATA[Саморазвитие]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Использование событий Events в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/45/events-programming-on-yii"><img src="https://elisdn.ru/upload/images/blogs/47203dd16bee9e31271bd7a27d4ce90c_250x0.jpg" alt="" title="Использование событий Events в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При программировании на компонентном языке с поддержкой графического интерфейса часто приходится иметь дело с событиями. Любой визуальный объект в каждом из этих языков может обладать свойствами, методами и событиями. Но этими языками событийный подход не ограничивается. Попробуем по аналогии с реализацией в других языках разобраться с работой с ними в Yii.</p><p><a href="https://elisdn.ru/blog/45/events-programming-on-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 17 Jun 2013 19:55:09 +0400</pubDate>
      <link>https://elisdn.ru/blog/45/events-programming-on-yii</link>
      <guid isPermaLink="false">post_45</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сквозной поиск для сайта на Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/44/multitable-search-for-yii-site"><img src="https://elisdn.ru/upload/images/blogs/7fc5e5ed398f3a377ac33392e4ff18ef_250x0.jpg" alt="" title="Сквозной поиск для сайта на Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При разработке любого более-менее крупного проекта на Yii у программиста может возникнуть необходимость внедрения поиска. И если для интернет-магазина будет достаточно искать только по каталогу, то для информационного сайта нужно обеспечить сквозной поиск по нескольким сущностям сразу. В конце этого урока мы рассмотрим готовые решения по поиску, а в начале для образовательных целей напишем свой велосипед.</p><p><a href="https://elisdn.ru/blog/44/multitable-search-for-yii-site" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 16 May 2013 16:48:51 +0400</pubDate>
      <link>https://elisdn.ru/blog/44/multitable-search-for-yii-site</link>
      <guid isPermaLink="false">post_44</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Переключение числа элементов на странице в CListView</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/43/various-pagesize-for-clistview"><img src="https://elisdn.ru/upload/images/blogs/58f1e43fbd1347c79d9efb6d64f7006e_250x0.jpg" alt="" title="Переключение числа элементов на странице в CListView" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Для вывода ленты записей на страницу в Yii имеется очень удобный готовый виджет CListView. Совместно с провайдером данных он позволяет выводить элементы с разбивкой на страницы и сортировкой. Но при разработке некоторых интернет-магазинов и всевозможных каталогов часто возникает необходимость в переключении числа элементов на странице. Попробуем добавить меню &laquo;Выводить по: 10 20 30&raquo; в нашу ленту записей.</p><p><a href="https://elisdn.ru/blog/43/various-pagesize-for-clistview" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 09 May 2013 18:36:32 +0400</pubDate>
      <link>https://elisdn.ru/blog/43/various-pagesize-for-clistview</link>
      <guid isPermaLink="false">post_43</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>HTMLPurifier и контент тега PRE</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/42/pre-tag-content-vs-html-purifier"><img src="https://elisdn.ru/upload/images/blogs/3a71d54ea55c523413af36f425d588e4_250x0.jpg" alt="" title="HTMLPurifier и контент тега PRE" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Недавно мы познакомились с использованием HTMLPurifier. Этот компонент позволяет отфильтровать вредные элементы из HTML кода, обработать ссылки, закрыть незакрытые теги. Большой список возможностей позволяет использовать его для фильтрации полученного от пользователя контента. Вместо использования BBCode мы попробуем доработать HTMLPurifier для удобной работы тега &lt;pre&gt; в комментариях пользователей.</p><p><a href="https://elisdn.ru/blog/42/pre-tag-content-vs-html-purifier" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 01 May 2013 16:12:31 +0400</pubDate>
      <link>https://elisdn.ru/blog/42/pre-tag-content-vs-html-purifier</link>
      <guid isPermaLink="false">post_42</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Использование поведений Behavior в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/41/usage-of-behaviors-in-yii"><img src="https://elisdn.ru/upload/images/blogs/2dace0806a4146e5283be52d8c7dc104_250x0.jpg" alt="" title="Использование поведений Behavior в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Большинство рецептов по Yii на этом сайте так или иначе сводятся к написанию поведения и подключению его к своему проекту. В обсуждении статьи о шаблонизаторе для вывода виджетов появился комментарий с просьбой подробно осветить работу с поведениями и, собственно, объяснить, для чего же они на самом деле нужны и почему их любят использовать некоторые продвинутые разработчики.</p><p><a href="https://elisdn.ru/blog/41/usage-of-behaviors-in-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 16 Apr 2013 12:55:10 +0400</pubDate>
      <link>https://elisdn.ru/blog/41/usage-of-behaviors-in-yii</link>
      <guid isPermaLink="false">post_41</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мультиязычный сайт на Yii: Перевод контента моделей</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/40/yii-based-multilanguage-site-content-translations"><img src="https://elisdn.ru/upload/images/blogs/7352d0da94e718cc9ac6cedcd63a2cfa_250x0.jpg" alt="" title="Мультиязычный сайт на Yii: Перевод контента моделей" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Это продолжение статьи Мультиязычный сайт на Yii: Интерфейс и URL, в которой мы рассмотрели способы указания языка в URL адресе страницы, переопределив всего два метода пары стандартных компонентов Yii, и использование многоязычности. В этой части мы коснёмся непосредственно перевода текста наших динамических страниц и статей.</p><p><a href="https://elisdn.ru/blog/40/yii-based-multilanguage-site-content-translations" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 09 Apr 2013 17:46:52 +0400</pubDate>
      <link>https://elisdn.ru/blog/40/yii-based-multilanguage-site-content-translations</link>
      <guid isPermaLink="false">post_40</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Мультиязычный сайт на Yii: Элементы интерфейса и URL</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/39/yii-based-multilanguage-site-interface-and-urls"><img src="https://elisdn.ru/upload/images/blogs/eeee9fa05b6802302e36c7005fd1921d_250x0.jpg" alt="" title="Мультиязычный сайт на Yii: Элементы интерфейса и URL" style="display:block; float:left; margin:0 10px 10px 0"></a><p>По многочисленным просьбам, поступающим в обратную связь, и по повышенной потребности аудитории Yii-разработчиков хочу поделиться некоторыми моментами в реализации поддержки нескольких языков на любом проекте, написанном на этом фрэймворке.</p><p><a href="https://elisdn.ru/blog/39/yii-based-multilanguage-site-interface-and-urls" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 09 Apr 2013 17:18:40 +0400</pubDate>
      <link>https://elisdn.ru/blog/39/yii-based-multilanguage-site-interface-and-urls</link>
      <guid isPermaLink="false">post_39</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Делаем Sitemap для проекта на Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/38/sitemap-for-yii-project"><img src="https://elisdn.ru/upload/images/blogs/11e3d9c416a0edf8fa4b4eae8de91e22_250x0.jpg" alt="" title="Делаем Sitemap для проекта на Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Поразмышлять о вариантах создания карты сайта для проекта на фрэймворке Yii сподвиг этот вопрос на русскоязычном форуме. Наверняка это пригодится для любого более-менее насыщенного страницами проекта. Каждый, несомненно, делает это по своему. Конечно же, можно выбрать любое другое готовое расширение, но для образовательных целей попробуем придумать пару вариантов решения этого вопроса.</p><p><a href="https://elisdn.ru/blog/38/sitemap-for-yii-project" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 05 Apr 2013 14:34:40 +0400</pubDate>
      <link>https://elisdn.ru/blog/38/sitemap-for-yii-project</link>
      <guid isPermaLink="false">post_38</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Создаём свои типы ячеек для CGridView в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/37/custom-cgridview-columns-in-yii"><img src="https://elisdn.ru/upload/images/blogs/0473c6c2e45203801646d19c63f42b13_250x0.jpg" alt="" title="Создаём свои типы ячеек для CGridView в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В предыдущем рецепте по стилизации виджетов мы рассмотрели,&nbsp;как можно кастомизировать стандартные и персональные виджеты Yii, упростив при этом код представлений до минимума. В этом уроке мы на примере грида записей своего мини-блога попробуем улучшить вид и минимизировать код ячеек виджета CGridView.</p><p><a href="https://elisdn.ru/blog/37/custom-cgridview-columns-in-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 25 Mar 2013 11:16:12 +0400</pubDate>
      <link>https://elisdn.ru/blog/37/custom-cgridview-columns-in-yii</link>
      <guid isPermaLink="false">post_37</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Подходы к стилизации виджетов в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/36/yii-widgets-styling-approaches"><img src="https://elisdn.ru/upload/images/blogs/06a8ec1f21b24f1b59993616cc81eb97_250x0.jpg" alt="" title="Подходы к стилизации виджетов в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В комплекте Yii Framework изначально поставляется набор виджетов Zii. Программисты знакомятся с обилием возможностей по стилизации виджетов, начинают кастомизировать, но не сразу доходят до удобных способов стилизации. В этом рецепте мы попробуем максимально сократить размеры копируемого из вида в вид кода.</p><p><a href="https://elisdn.ru/blog/36/yii-widgets-styling-approaches" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 24 Mar 2013 14:40:15 +0400</pubDate>
      <link>https://elisdn.ru/blog/36/yii-widgets-styling-approaches</link>
      <guid isPermaLink="false">post_36</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сборка Igbinary для PHP 5.4.11 под Windows</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/35/sborka-igbinary-dlia-php-5411-pod-windows"><img src="https://elisdn.ru/upload/images/blogs/52eb556d5b43d0df1745fd0223a2efd5_250x0.jpg" alt="" title="Сборка Igbinary для PHP 5.4.11 под Windows" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Необходимость работы с громадными массивами в одном из проектов привела к альтернативному расширению для сериализации данных igbinary. Прочитать о нём кое-что можно здесь. Расширение добавляет функции igbinary_serialize и igbinary_unserialize, которые, в отличие от стандартных функций сериализации, конвертируют данные в бинарный блок. Если автор обзора не обманывает, то расширение даёт &laquo;5-кратное преимущество по размеру и 20-кратное по скорости&raquo;.</p><p><a href="https://elisdn.ru/blog/35/sborka-igbinary-dlia-php-5411-pod-windows" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 14 Feb 2013 21:44:15 +0400</pubDate>
      <link>https://elisdn.ru/blog/35/sborka-igbinary-dlia-php-5411-pod-windows</link>
      <guid isPermaLink="false">post_35</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Живой Layout или Упрощаем темизацию в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/34/jivoi-layout-ili-uproshaem-temizaciyu-v-yii"><img src="https://elisdn.ru/upload/images/blogs/b9455f2af2f3e3dc59b5527513ced544_250x0.jpg" alt="" title="Живой Layout или Упрощаем темизацию в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Каждый &laquo;ленивый&raquo; разработчик в глубине души желает упростить себе работу с создаваемой им системой. Как вы, наверное, заметили, в каждом совете этого блога автор руководствуется привычкой выносить всё общее и всё изменяемое в отдельные самодостаточные компоненты (в поведения, действия, валидаторы, фильтры, виджеты, переопределённые базовые классы). В итоге такая практика приводит к состоянию, когда порой несколько разнородных проектов работают на одном и том же коде с различием только в теме оформления. В этот раз поговорим именно о темах.</p><p><a href="https://elisdn.ru/blog/34/jivoi-layout-ili-uproshaem-temizaciyu-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 04 Feb 2013 17:53:28 +0400</pubDate>
      <link>https://elisdn.ru/blog/34/jivoi-layout-ili-uproshaem-temizaciyu-v-yii</link>
      <guid isPermaLink="false">post_34</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Генерация URL для вложенных категорий в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/33/generaciia-url-dlia-vlojennih-kategorii-v-yii"><img src="https://elisdn.ru/upload/images/blogs/8ef7d00a758eb06fef240c6f4aaf9401_250x0.jpg" alt="" title="Генерация URL для вложенных категорий в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Стандартный класс CUrlManager в Yii (да и в других фреймворках) позволяет собирать URL динамически на основе правил маршрутизации. В интернет-магазинах и блогах часто используются многоуровневые категории. Попробуем использовать их в Yii.</p><p><a href="https://elisdn.ru/blog/33/generaciia-url-dlia-vlojennih-kategorii-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 10 Jan 2013 17:11:40 +0400</pubDate>
      <link>https://elisdn.ru/blog/33/generaciia-url-dlia-vlojennih-kategorii-v-yii</link>
      <guid isPermaLink="false">post_33</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Интеграция форума phpBB в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/32/podklyuchaem-forum-phpbb-k-yii"><img src="https://elisdn.ru/upload/images/blogs/4ce6df899a69b0b0f54dc2e5fb422865_250x0.jpg" alt="" title="Интеграция форума phpBB в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>У любого разработчика может возникнуть необходимость установки форума на сайт, написанный на Yii. Простой установкой в отдельную папку на сервере и в отдельную или эту же базу данных это порой не ограничивается. С большой вероятностью разработчику нужно будет организовать единую сквозную авторизацию на сайте и форуме. Попробуем это сделать.</p><p><a href="https://elisdn.ru/blog/32/podklyuchaem-forum-phpbb-k-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 04 Jan 2013 20:27:50 +0400</pubDate>
      <link>https://elisdn.ru/blog/32/podklyuchaem-forum-phpbb-k-yii</link>
      <guid isPermaLink="false">post_32</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Динамические атрибуты для товаров (используем EAV в Yii)</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/31/dinamicheskie-atributi-dlia-tovarov-ispolzovanie-eav-v-yii"><img src="https://elisdn.ru/upload/images/blogs/9fdbe393c86f7fb9480eb9c2da584148_250x0.jpg" alt="" title="Динамические атрибуты для товаров (используем EAV в Yii)" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В системах управления контентом (CMS) интернет-магазинов (да и часто для других нужд) можно встретить возможность добавлять неограниченное число полей к различным сущностям. Это знакомые всем списки характеристик товаров, а иногда имеется целая система создания новых типов контента (CCK), которой, кстати, славится Drupal. До полноценной системы CCK нам далеко, но реализовать динамические поля для товаров своего интернет-магазина на Yii всё-таки стоит.</p><p><a href="https://elisdn.ru/blog/31/dinamicheskie-atributi-dlia-tovarov-ispolzovanie-eav-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 03 Jan 2013 14:09:30 +0400</pubDate>
      <link>https://elisdn.ru/blog/31/dinamicheskie-atributi-dlia-tovarov-ispolzovanie-eav-v-yii</link>
      <guid isPermaLink="false">post_31</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Перенос конфигурации в модули Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/30/perenos-blokov-konfiguracii-v-moduli-yii"><img src="https://elisdn.ru/upload/images/blogs/eecfac853fd3c7dd0c5f2360d5f74df8_250x0.jpg" alt="" title="Перенос конфигурации в модули Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При переделывании своего проекта на модульную структуру сразу же захотелось сделать модули минимально связанными. При этом многим приходится сталкиваться с организацией выноса настроек модулей из главного конфигурационного файла в сами модули. Рассмотрим несколько приёмов и подводных камней.</p><p><a href="https://elisdn.ru/blog/30/perenos-blokov-konfiguracii-v-moduli-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 27 Dec 2012 10:36:27 +0400</pubDate>
      <link>https://elisdn.ru/blog/30/perenos-blokov-konfiguracii-v-moduli-yii</link>
      <guid isPermaLink="false">post_30</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Наследование CRUD операций от базового контроллера</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/29/nasledovanie-crud-operacii-ot-bazovogo-kontrollera"><img src="https://elisdn.ru/upload/images/blogs/073e1ef10b4f4af13b9204460952d7b5_250x0.jpg" alt="" title="Наследование CRUD операций от базового контроллера" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Раньше мы рассматривали возможность повторного использования стандартных CRUD операций путём выноса их в отдельные классы (наследники класса CAction в Yii). У этого способа есть альтернатива &ndash; наследование общих действий от базового контроллера. Рассмотрим этот способ подробнее, а также попробуем найти и решить некоторые его проблемы.</p><p><a href="https://elisdn.ru/blog/29/nasledovanie-crud-operacii-ot-bazovogo-kontrollera" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 02 Dec 2012 15:04:59 +0400</pubDate>
      <link>https://elisdn.ru/blog/29/nasledovanie-crud-operacii-ot-bazovogo-kontrollera</link>
      <guid isPermaLink="false">post_29</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>«Бесконечная» лента записей с ajax дозагрузкой на Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/28/beskonechnaia-lenta-zapisei-s-ajax-dozagruzkoi-na-yii"><img src="https://elisdn.ru/upload/images/blogs/301d362194cdebaa327cb5c76a5cd7c5_250x0.jpg" alt="" title="«Бесконечная» лента записей с ajax дозагрузкой на Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На многих новых сайтах всё чаще встречается вывод списка новостей или других сущностей в виде бесконечно подгружающейся ленты. На некоторых сайтах подгрузка выполняется автоматически (на twitter.com или vk.com), на других &ndash; вручную, то есть в конце списка вместо стандартного переключателя страниц имеется кнопка &laquo;Показать ещё&raquo;. Освежим в памяти работу с ClistView и попробуем реализовать подобный функционал на своём сайте.</p><p><a href="https://elisdn.ru/blog/28/beskonechnaia-lenta-zapisei-s-ajax-dozagruzkoi-na-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 25 Nov 2012 20:17:57 +0400</pubDate>
      <link>https://elisdn.ru/blog/28/beskonechnaia-lenta-zapisei-s-ajax-dozagruzkoi-na-yii</link>
      <guid isPermaLink="false">post_28</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Оптимизация запросов ActiveRecord без DAO</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/27/optimizaciia-zaprosov-activerecord-bez-dao"><img src="https://elisdn.ru/upload/images/blogs/d8c4fe2e983245fafd4ccc7f600e6b52_250x0.jpg" alt="" title="Оптимизация запросов ActiveRecord без DAO" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Одна из вечных тем, то и дело всплывающих в сети и касаемых Yii Framework &ndash; это спор относительно использования в своих проектах прямых SQL запросов посредством DAO с одной стороны против использования ActiveRecord с другой. Ведь при разрастании объёмов данных и связей между ними в высоконагруженных проектах многие разработчики переходят от удобной объектной модели ActiveRecord к низкоуровневой работе с прямыми SQL запросами и с простыми асcоциативными массивами. Посмотрим, как в некоторых случаях можно разогнать выборки ActiveRecord почти до скорости DAO.</p><p><a href="https://elisdn.ru/blog/27/optimizaciia-zaprosov-activerecord-bez-dao" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 23 Nov 2012 18:57:04 +0400</pubDate>
      <link>https://elisdn.ru/blog/27/optimizaciia-zaprosov-activerecord-bez-dao</link>
      <guid isPermaLink="false">post_27</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Чекбоксы для связей «Многие ко многим» в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/26/chekboksi-dlia-sviazei-mnogie-ko-mnogim-v-yii"><img src="https://elisdn.ru/upload/images/blogs/419800aded5edc1428b75d1368a651b0_250x0.jpg" alt="" title="Чекбоксы для связей «Многие ко многим» в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Разговорились сегодня насчёт вывода списка чекбоксов в админке для выбора категорий к записи, то есть для связи MANY_MANY. Предоположим, что в нашем блоге есть записи и категории. Или товары в магазине и категории. При этом у каждой записи или у каждого товара можно выбрать несколько категорий. Как вывести этот список на странице редактирования статьи или товара?</p><p><a href="https://elisdn.ru/blog/26/chekboksi-dlia-sviazei-mnogie-ko-mnogim-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 22 Nov 2012 18:01:00 +0400</pubDate>
      <link>https://elisdn.ru/blog/26/chekboksi-dlia-sviazei-mnogie-ko-mnogim-v-yii</link>
      <guid isPermaLink="false">post_26</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Меню с иконками на основе CMenu в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/25/menyu-s-ikonkami-na-osnove-cmenu-v-yii"><img src="https://elisdn.ru/upload/images/blogs/f4c63cc0c4906c462790001e49def089_250x0.jpg" alt="" title="Меню с иконками на основе CMenu в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Велика вероятность, что в новом или старом проекте на Yii появится необходимость изготовления меню с иконками. Это может понадобиться и при вёрстке уже готового шаблона. Рассмотрим несколько решений и сравним их между собой с точки зрения семантики и архитектурной чистоты.</p><p><a href="https://elisdn.ru/blog/25/menyu-s-ikonkami-na-osnove-cmenu-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 21 Nov 2012 15:57:35 +0400</pubDate>
      <link>https://elisdn.ru/blog/25/menyu-s-ikonkami-na-osnove-cmenu-v-yii</link>
      <guid isPermaLink="false">post_25</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Выносим CRUD действия контроллеров в классы в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/24/vinosim-deistviia-kontrollerov-v-klassi"><img src="https://elisdn.ru/upload/images/blogs/ff3ecbcfa34cccf341f80bb6d6fe5c4c_250x0.jpg" alt="" title="Выносим CRUD действия контроллеров в классы в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Любой программист с опытом осознаёт, что в неудачно спроектированном тяжёлом проекте изначально или со временем накапливается много неуправляемого&nbsp;и ненужного мусора. Это, например, повторяющийся код. В описании контроллера официального руководства Yii Framework указано, что Yii поддерживает вынос действий в отдельные классы и описывается процедура подключения этих действий к контроллерам. Но мало кто пользуется этим способом, так как не находит действительно тяжёлых повторяющихся экшенов.</p><p><a href="https://elisdn.ru/blog/24/vinosim-deistviia-kontrollerov-v-klassi" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 19 Nov 2012 22:19:35 +0400</pubDate>
      <link>https://elisdn.ru/blog/24/vinosim-deistviia-kontrollerov-v-klassi</link>
      <guid isPermaLink="false">post_24</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Получение курсов валют с сайта Центробанка</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/23/poluchenie-kursov-valyut-s-saita-centrobanka"><img src="https://elisdn.ru/upload/images/blogs/7e2a64f6cea6c7d345ad40cfc98854df_250x0.jpg" alt="" title="Получение курсов валют с сайта Центробанка" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При разработке интернет-магазинов или различных информеров для сайтов часто приходится реализовывать получение актуальных курсов валют. Не все разработчики знают, что достаточно удобно получать курсы на любую дату используя API сайта Центрального банка РФ.</p><p><a href="https://elisdn.ru/blog/23/poluchenie-kursov-valyut-s-saita-centrobanka" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 15 Nov 2012 19:30:03 +0400</pubDate>
      <link>https://elisdn.ru/blog/23/poluchenie-kursov-valyut-s-saita-centrobanka</link>
      <guid isPermaLink="false">post_23</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Гибкая настройка разрешений для ролей RBAC</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/22/gibkaia-nastroika-razreshenii-dlia-rolei-rbac"><img src="https://elisdn.ru/upload/images/blogs/bd2a54aea31c94a506e76d5ae7162cf0_250x0.jpg" alt="" title="Гибкая настройка разрешений для ролей RBAC" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Практически в каждом проекте возникает необходимость реализовать регистрацию и авторизацию пользователей. В рецепте RBAC и описание ролей в файле подробно описана реализация распределения доступа пользователям по ролям. Этот рецепт является уточнением рецепта Аутентификация и авторизация, в котором и описано использование доступа по ролям. Попробуем сделать настройку ролей пользователей более гибкой.</p><p><a href="https://elisdn.ru/blog/22/gibkaia-nastroika-razreshenii-dlia-rolei-rbac" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 14 Nov 2012 14:02:10 +0400</pubDate>
      <link>https://elisdn.ru/blog/22/gibkaia-nastroika-razreshenii-dlia-rolei-rbac</link>
      <guid isPermaLink="false">post_22</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Yii и хранение настроек в базе данных</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/21/yii-i-hranenie-nastroek-v-baze-dannih"><img src="https://elisdn.ru/upload/images/blogs/d1d909d235a5df004c63f6a59dd3d4d3_250x0.jpg" alt="" title="Yii и хранение настроек в базе данных" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Как многим известно, для хранения настроек приложения в Yii выделен специальный раздел params в конфигурационном файле. Это решение достаточно простое, но оно не позволяет легко менять настройки самому пользователю в панели управления сайта. Очередной вопрос на русском форуме Yii натолкнул меня поделиться своим вариантом решения упомянутого там вопроса.</p><p><a href="https://elisdn.ru/blog/21/yii-i-hranenie-nastroek-v-baze-dannih" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 13 Nov 2012 21:44:32 +0400</pubDate>
      <link>https://elisdn.ru/blog/21/yii-i-hranenie-nastroek-v-baze-dannih</link>
      <guid isPermaLink="false">post_21</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Перенаправление внешних ссылок на промежуточную страницу</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/20/pereadresaciia-vneshnih-ssilok-na-promejutochnuyu-stranicu"><img src="https://elisdn.ru/upload/images/blogs/9400f18e7133ee98f878f2fe32a91c96_250x0.jpg" alt="" title="Перенаправление внешних ссылок на промежуточную страницу" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В комментариях к записи о HTML Purifier был задан вопрос о том, каким образом можно переделать внешние адреса на переход через промежуточную страницу на своём сайте. Сделаем функционал, обрабатывающий внешние ссылки в тексте и переадресующий их на страницу подтверждения перехода на другие сайты.</p><p><a href="https://elisdn.ru/blog/20/pereadresaciia-vneshnih-ssilok-na-promejutochnuyu-stranicu" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 06 Nov 2012 20:55:03 +0400</pubDate>
      <link>https://elisdn.ru/blog/20/pereadresaciia-vneshnih-ssilok-na-promejutochnuyu-stranicu</link>
      <guid isPermaLink="false">post_20</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Генерация уникального имени файла в PHP проектах</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/19/generaciia-unikalnogo-imeni-faila"><img src="https://elisdn.ru/upload/images/blogs/18b79209ec614f9f459c397288afb112_250x0.jpg" alt="" title="Генерация уникального имени файла в PHP проектах" style="display:block; float:left; margin:0 10px 10px 0"></a><p>C самых первых проектов, поддерживающих загрузку файлов на сервер, любой программист сталкивается с необходимостью генерации уникальных случайных имён для загруженных файлов. Рассмотрим несколько вариантов решения данной проблемы.</p><p><a href="https://elisdn.ru/blog/19/generaciia-unikalnogo-imeni-faila" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Tue, 06 Nov 2012 18:48:15 +0400</pubDate>
      <link>https://elisdn.ru/blog/19/generaciia-unikalnogo-imeni-faila</link>
      <guid isPermaLink="false">post_19</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Отладочный таймер и пример интеграции в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/17/otladochnii-taimer-i-primer-integracii-v-yii"><img src="https://elisdn.ru/upload/images/blogs/255e25166eb28bd4301f20c1a13b95bd_250x0.jpg" alt="" title="Отладочный таймер и пример интеграции в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Довольно часто возникает необходимость проследить время исполнения некоторых фрагментов программного кода и отследить особо медленные участки для их последующей оптимизации. Имеющиеся отладочные расширения не проникают внутрь ваших файлов, а чаще выводят только общее время выполнения скрипта. Для локального рефакторинга и оптимизации они не подходят.</p><p><a href="https://elisdn.ru/blog/17/otladochnii-taimer-i-primer-integracii-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 03 Nov 2012 13:35:56 +0400</pubDate>
      <link>https://elisdn.ru/blog/17/otladochnii-taimer-i-primer-integracii-v-yii</link>
      <guid isPermaLink="false">post_17</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>DCategoryBehavior: Работа с категориями и списками в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/16/dcategorybehavior-rabota-s-kategoriiami-i-spiskami-v-yii"><img src="https://elisdn.ru/upload/images/blogs/8e32cecde6607005a95ca65cb4427b67_250x0.jpg" alt="" title="DCategoryBehavior: Работа с категориями и списками в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В процессе работы с фреймворком часто приходится запрашивать у моделей всевозможные массивы (для генерации меню, для выпадающих списков в формах поиска или редактирования сущностей), а также находить нужную категорию по составному пути.</p><p><a href="https://elisdn.ru/blog/16/dcategorybehavior-rabota-s-kategoriiami-i-spiskami-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 31 Oct 2012 15:01:40 +0400</pubDate>
      <link>https://elisdn.ru/blog/16/dcategorybehavior-rabota-s-kategoriiami-i-spiskami-v-yii</link>
      <guid isPermaLink="false">post_16</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>DToggleColumn: Колонка-переключатель для CGridView</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/15/dtogglecolumn-kolonka-pereklyuchatel-dlia-cgridview"><img src="https://elisdn.ru/upload/images/blogs/d78330e4808678e6fa651eab24e512ec_250x0.jpg" alt="" title="DToggleColumn: Колонка-переключатель для CGridView" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При администрировании многих разделов сайта возникла необходимость работы с логическими переключаемыми атрибутами модели (опубликована новость или нет, прочитано сообщение или нет и т.п.). В сети нашлось решение использовать колонку из чекбоксов с автосохранением данных Ajax запросом по событию onChange(). Эстетически выводить несколько колонок чекбоксов было не очень красиво. Было решено для наглядности сделать столбик из иконок-ссылок.</p><p><a href="https://elisdn.ru/blog/15/dtogglecolumn-kolonka-pereklyuchatel-dlia-cgridview" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 29 Oct 2012 10:26:35 +0400</pubDate>
      <link>https://elisdn.ru/blog/15/dtogglecolumn-kolonka-pereklyuchatel-dlia-cgridview</link>
      <guid isPermaLink="false">post_15</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Комментарии для разных сущностей в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/14/kommentarii-dlia-raznih-sushnostei-v-yii"><img src="https://elisdn.ru/upload/images/blogs/a5dc98fa2fcf53582369a5d167dd102b_250x0.jpg" alt="" title="Комментарии для разных сущностей в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В теме о событиях натолкнулся на вопрос о том, как имея объект комментария на сайте получить ссылку на материал, к которому этот комментарий оставлен, при условии, что комментарии могут иметь привязку к разным сущностям. Сам я тоже использую в своих проектах комментарии к разнородным сущностям, поэтому хочу поделиться своей реализацией.</p><p><a href="https://elisdn.ru/blog/14/kommentarii-dlia-raznih-sushnostei-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 26 Oct 2012 12:43:24 +0400</pubDate>
      <link>https://elisdn.ru/blog/14/kommentarii-dlia-raznih-sushnostei-v-yii</link>
      <guid isPermaLink="false">post_14</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Встраиваем виджеты в текст страницы в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/13/vstraivaem-vidjeti-v-tekst-stranici-v-yii"><img src="https://elisdn.ru/upload/images/blogs/a60728509db5cb190e8157bf1c35a22e_250x0.jpg" alt="" title="Встраиваем виджеты в текст страницы в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Давным давно в тридевя... в шаблонизаторе моей второй по счёту старой CMS вставка виджетов в шаблон была релизована посредством использования старой доброй клинописи вида {{WidgetName|param1=val1;param2=val2}}. Этот код можно было встявлять даже в текст, что давало неоценимую возможность компоновать страницы любой сложности из виджетов прямо в текстовом редакторе админки.</p><p><a href="https://elisdn.ru/blog/13/vstraivaem-vidjeti-v-tekst-stranici-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 24 Oct 2012 11:17:07 +0400</pubDate>
      <link>https://elisdn.ru/blog/13/vstraivaem-vidjeti-v-tekst-stranici-v-yii</link>
      <guid isPermaLink="false">post_13</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>DPurifyTextBehavior: Используем HTML Purifier в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/12/dpurifytextbehavior-v-yii"><img src="https://elisdn.ru/upload/images/blogs/f124d2ef2f0f82838ae28c35a69109e9_250x0.jpg" alt="" title="DPurifyTextBehavior: Используем HTML Purifier в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При выводе новостей и комментариев на публичном или личном сайте возникает необходимость фильтрации HTML-кода от опасных XSS элементов. Компонент HTML Purifier, поставляемый в комплекте с Yii Framework, может сильно облегчить задачу фильтрации. Это действительно мощный и гибко настраиваемый инструмент. Рассмотрим способы работы с ним.</p><p><a href="https://elisdn.ru/blog/12/dpurifytextbehavior-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 21 Oct 2012 15:31:59 +0400</pubDate>
      <link>https://elisdn.ru/blog/12/dpurifytextbehavior-v-yii</link>
      <guid isPermaLink="false">post_12</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Различные сайдбары для разделов сайта в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/11/razlichnie-saidbari-dlia-razdelov-saita-v-yii"><img src="https://elisdn.ru/upload/images/blogs/1793f3c861ac4055d9d7a8c6f838456a_250x0.jpg" alt="" title="Различные сайдбары для разделов сайта в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На официальном форуме Yii Framework встретил вопрос об организации работы с сайдбарами на сайте. Вопрос возник в связи с требованиями автора выводить разное содержимое панелей в разных разделах сайта. Автор пробует выделить место для сайдбара в главном шаблоне views/layouts/main.php и генерировать содержимое сайдбаров в самих конкретных представлениях. Поделюсь своей организацией шаблонов.</p><p><a href="https://elisdn.ru/blog/11/razlichnie-saidbari-dlia-razdelov-saita-v-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 19 Oct 2012 12:08:03 +0400</pubDate>
      <link>https://elisdn.ru/blog/11/razlichnie-saidbari-dlia-razdelov-saita-v-yii</link>
      <guid isPermaLink="false">post_11</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>DCurrentPassword: Валидация текущего пароля в Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/10/dcurrentpassword-validaciia-tekushego-parolia"><img src="https://elisdn.ru/upload/images/blogs/825fd42faf4c4945a2d2e759884ea21e_250x0.png" alt="" title="DCurrentPassword: Валидация текущего пароля в Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В одном из проектов потребовалось ввести в форму изменения профиля пользователя поле &laquo;Введите текущий пароль&raquo;. Сначала был быстро сделан валидирующий метод в самой модели пользователя. В последующем для повторного использования в разных проектах было решено написать полноценный внешний валидатор.</p><p><a href="https://elisdn.ru/blog/10/dcurrentpassword-validaciia-tekushego-parolia" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 18 Oct 2012 16:05:20 +0400</pubDate>
      <link>https://elisdn.ru/blog/10/dcurrentpassword-validaciia-tekushego-parolia</link>
      <guid isPermaLink="false">post_10</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Безопасное хранение пароля в модели Yii</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/9/bezopasnoe-hranenie-parolia-v-modeli-yii"><img src="https://elisdn.ru/upload/images/blogs/aeb6fc1ec113b19e00869287c7e4f165_250x0.jpg" alt="" title="Безопасное хранение пароля в модели Yii" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Достаточно часто на тематических форумах по Yii встречаются вопросы новичков о организации хранения паролей пользователей в модели User. Вопрос звучит примерно так: &laquo;У меня в модели User есть поле password, в котором я храню хэш пароля. Как мне сделать так, чтобы пароль не перезаписывался при каждом сохранении модели?&raquo; Вопрос любопытный и для других фреймворков.</p><p><a href="https://elisdn.ru/blog/9/bezopasnoe-hranenie-parolia-v-modeli-yii" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Thu, 18 Oct 2012 13:36:07 +0400</pubDate>
      <link>https://elisdn.ru/blog/9/bezopasnoe-hranenie-parolia-v-modeli-yii</link>
      <guid isPermaLink="false">post_9</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>DGRAvatarHelper: Получаем глобальный аватар пользователя</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/8/dgravatarhelper-poluchaem-globalnii-avatar-polzovatelia"><img src="https://elisdn.ru/upload/images/blogs/7bf884db2f045a0dbb045c628ff77fe0_250x0.jpg" alt="" title="DGRAvatarHelper: Получаем глобальный аватар пользователя" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Часто владельцы блогов устанавливают на свои сайты плагины для работы с сервисом Gravatar. Если кто не знает, то суть сервиса вот в чём: Любой человек может зарегистрироваться в сервисе, вписать свой email и привязать к нему аватарку. После привязки эта аватарка становится доступной всему миру с сервера Gravatar по идентификатору, легко высчитываемому по адресу электронной почты пользователя.</p><p><a href="https://elisdn.ru/blog/8/dgravatarhelper-poluchaem-globalnii-avatar-polzovatelia" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 17 Oct 2012 20:11:34 +0400</pubDate>
      <link>https://elisdn.ru/blog/8/dgravatarhelper-poluchaem-globalnii-avatar-polzovatelia</link>
      <guid isPermaLink="false">post_8</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Автоматический уникальный идентификатор для кеша</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/7/avtomaticheskii-unikalnii-identifikator-dlia-kesha"><img src="https://elisdn.ru/upload/images/blogs/5bff180c17d5fc71595bc0b1b4dfd467_250x0.jpg" alt="" title="Автоматический уникальный идентификатор для кеша" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В Yii полезно использовать кеширование не только SQL-запросов, но и HTML-фрагментов страницы. Очень удобно то, что можно обрамить кеширующим блоком вызов любого более-менее статичного виджета в представлении или лэйауте чтобы он не пересобирался каждый раз заново. Но при этом возникает необходимость в придумывании для каждого фрагмента уникального ключа, по которому он будет записан в кэше.</p><p><a href="https://elisdn.ru/blog/7/avtomaticheskii-unikalnii-identifikator-dlia-kesha" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Mon, 15 Oct 2012 15:57:29 +0400</pubDate>
      <link>https://elisdn.ru/blog/7/avtomaticheskii-unikalnii-identifikator-dlia-kesha</link>
      <guid isPermaLink="false">post_7</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Неуловимая пара секунд</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/6/neulovimaia-para-sekund"><img src="https://elisdn.ru/upload/images/blogs/f36f7db9fe18123348f8d5d57b20a834_250x0.jpg" alt="" title="Неуловимая пара секунд" style="display:block; float:left; margin:0 10px 10px 0"></a><p>В полудрёме на мягком диване, попивая свежевыжатый сок, вы зашли на нужный вам сайт. Окинули взглядом страницу, щелкнули по нужной ссылке, получили то, что желали и закрыли браузер. Вам кажется, что ничего особенного не произошло за эти несколько секунд, но, оказывается, это не так. Не всё так просто.</p><p><a href="https://elisdn.ru/blog/6/neulovimaia-para-sekund" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Wed, 12 Sep 2012 13:07:20 +0400</pubDate>
      <link>https://elisdn.ru/blog/6/neulovimaia-para-sekund</link>
      <guid isPermaLink="false">post_6</guid>
      <category><![CDATA[UX-дизайн]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Интерактивная карта регионов во Flash</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/5/interaktivnaia-karta-regionov-vo-flash"><img src="https://elisdn.ru/upload/images/blogs/6be9e4715820d629fe7c1113d7748fe5_250x0.png" alt="" title="Интерактивная карта регионов во Flash" style="display:block; float:left; margin:0 10px 10px 0"></a><p>На этот раз ко мне обратился один приятель и спросил, как это во Flash программисты делают всякие интерактивные штуки? Привело его к этому желание сделать у себя на странице &laquo;крутую&raquo; интерактивную карту. Чтобы при наведении надписи появлялись... И дал мне собственноручно (надеюсь) нарисованную картинку.&nbsp;</p><p><a href="https://elisdn.ru/blog/5/interaktivnaia-karta-regionov-vo-flash" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Fri, 18 Nov 2011 20:17:10 +0400</pubDate>
      <link>https://elisdn.ru/blog/5/interaktivnaia-karta-regionov-vo-flash</link>
      <guid isPermaLink="false">post_5</guid>
      <category><![CDATA[Программирование]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Выбираем исполнителя для проекта</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/4/vibiraem-ispolnitelia-dlia-proekta"><img src="https://elisdn.ru/upload/images/blogs/ec686342f82c97a181abaa8904a3155e_250x0.jpg" alt="" title="Выбираем исполнителя для проекта" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Каждый игрок на рынке услуг зазывает клиентов фразой &laquo;Закажите у нас! Круче чем у нас не найдёте!&raquo;, но при нынешнем заполнении интернета сайтами многочисленных web-студий очень важно не прогадать с выбором исполнителя, которому Вы доверите осуществление Ваших замыслов. Если у Вас ещё нет сайта и нет денег на оплату услуг проверенной веб-студии, то когда-то вопрос выбора у Вас возникнет. Осмелюсь дать несколько советов как уберечь деньги и нервы заказчика при выборе исполнителя.</p><p><a href="https://elisdn.ru/blog/4/vibiraem-ispolnitelia-dlia-proekta" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 27 Nov 2010 15:06:28 +0300</pubDate>
      <link>https://elisdn.ru/blog/4/vibiraem-ispolnitelia-dlia-proekta</link>
      <guid isPermaLink="false">post_4</guid>
      <category><![CDATA[Работа и бизнес]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Сколько стоит сайт и почему</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/3/skolko-stoit-sait-i-pochemu"><img src="https://elisdn.ru/upload/images/blogs/4f87184285ffdd5162486a7cbb5c7f3f_250x0.jpg" alt="" title="Сколько стоит сайт и почему" style="display:block; float:left; margin:0 10px 10px 0"></a><p>При первом обращении к web-разработчикам каждый спрашивает, сколько же стоит сайт, сколько времени он создаётся. Вы, наверное, сразу спросите то же самое? В этом процессе не может быть стандартных цен. Когда называют всем суммы от 6000 до 600 000 рублей и сроки от трех дней до года, то все клиенты удивляются, почему же такой большой разброс?</p><p><a href="https://elisdn.ru/blog/3/skolko-stoit-sait-i-pochemu" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 06 Nov 2010 14:44:51 +0300</pubDate>
      <link>https://elisdn.ru/blog/3/skolko-stoit-sait-i-pochemu</link>
      <guid isPermaLink="false">post_3</guid>
      <category><![CDATA[Работа и бизнес]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Насколько легко заявить о себе</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/2/naskolko-legko-zaiavit-o-sebe"><img src="https://elisdn.ru/upload/images/blogs/0bccd195c52527273e2222ae8007e81d_250x0.jpg" alt="" title="Насколько легко заявить о себе" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Однажды Вы зашли в интернет и увидели, как легко в нём найти всё, что угодно, как он притягивает к себе и даёт полную свободу, возможность побывать в любой точке планеты за один клик мышки, получить ответ на любой вопрос не выходя из дома или офиса.</p><p><a href="https://elisdn.ru/blog/2/naskolko-legko-zaiavit-o-sebe" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sun, 01 Aug 2010 14:24:48 +0400</pubDate>
      <link>https://elisdn.ru/blog/2/naskolko-legko-zaiavit-o-sebe</link>
      <guid isPermaLink="false">post_2</guid>
      <category><![CDATA[Саморазвитие]]></category>
      <slash:comments>0</slash:comments>
    </item>
    <item>
      <title>Как создаются интернет-проекты</title>
      <description><![CDATA[<a href="https://elisdn.ru/blog/1/kak-sozdayutsia-internet-proekti"><img src="https://elisdn.ru/upload/images/blogs/4cb42baae34276c38781f6cffb97723b_250x0.jpg" alt="" title="Как создаются интернет-проекты" style="display:block; float:left; margin:0 10px 10px 0"></a><p>Как создаются интернет-проекты? Сложно ли это? Много ли труда вкладывают разработчики в своё детище? Сейчас мы это увидим. В этой статье рассмотрим стадии создания полноценного сайта.</p><p><a href="https://elisdn.ru/blog/1/kak-sozdayutsia-internet-proekti" rel="nofollow">Читать далее &rarr;</a></p>]]></description>
      <pubDate>Sat, 24 Jul 2010 14:23:04 +0400</pubDate>
      <link>https://elisdn.ru/blog/1/kak-sozdayutsia-internet-proekti</link>
      <guid isPermaLink="false">post_1</guid>
      <category><![CDATA[Работа и бизнес]]></category>
      <slash:comments>0</slash:comments>
    </item>
  </channel>
</rss>
