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

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

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

    
      
        
    
    <item>
      <title><![CDATA[Простой плагин для Twig или разворачиваем константы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/200614/</guid>
      <link>https://habr.com/ru/articles/200614/?utm_campaign=200614&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Twig — отличный шаблонизатор и, в отличие от остальных, с которыми мне приходилось сталкиваться, со временем нравится мне все больше и больше. Достоинств у Twig много и одно из них — расширяемость.<br/>
<br/>
Некоторое время мне тихонько портила жизнь небольшая проблема, на которую лень было тратить время. Недавно я все же заставил себя и, думаю, решение ее хорошо бы подошло для небольшой статейки о плагинах в Twig.<br/>
<br/>
Сама проблема — в константах внутри шаблонов. Бывают такие задачи, когда в шаблоне необходимо зашиться на какие-нибудь идентификаторы. Цифрами расставлять их — не совсем хорошо, а если для них еще и существуют константы — грех не воспользоваться функцией <code>constant</code>. Но дело в том, что после компиляции из шаблона она все равно вычисляется в рантайме. <br/>
<br/>
И что же у нас может получиться? Мы на волне рефакторинга убиваем или переименовываем константу, а о шаблоне забываем. И IDE забывает, даже хваленый PHPStorm. Успешно компилируем перед деплоем всю нашу гору шаблонов, раскидываем на сервера. Ничего не упало, просто работает все не очень, а на нашу голову сваливается огромная простыня одинаковых ворнингов. Плохо? Отвратительно!<br/>
<br/>
Решение? Резолвить константы в процессе компиляции шаблона, на отсутствующие — ругаться. <a href="https://habr.com/ru/articles/200614/?utm_campaign=200614&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 02 Nov 2013 01:32:43 GMT</pubDate>
      <dc:creator><![CDATA[return]]></dc:creator>
      <category><![CDATA[PHP]]></category>
      <category><![CDATA[twig]]></category><category><![CDATA[php]]></category><category><![CDATA[visitor]]></category><category><![CDATA[plugin]]></category><category><![CDATA[template]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[jQuery изнутри — атрибуты, свойства, данные]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/164805/</guid>
      <link>https://habr.com/ru/articles/164805/?utm_campaign=164805&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Последняя за новогодние каникулы, но не последняя в этой серии статья, посвященная внутренностям jQuery. <a href="http://habrahabr.ru/post/164677/" rel="prev">Прошлая</a> получилась очень быстрой и маленькой, но интерес хабражителей к теме, судя по опросу «стоит ли продолжать?», который висят в каждом посте некоторое время после его создания, не пропадает.<br/>
<br/>
Тема для сегодняшнего поста достаточно большая и я постараюсь рассказать о ней поинтереснее и не слишком поверхностно. Рассмотрим мы сегодня методы <a href="http://api.jquery.com/attr/">attr</a>, <a href="http://api.jquery.com/prop/">prop</a> и <a href="http://api.jquery.com/data/">data</a>.<br/>
 <a href="https://habr.com/ru/articles/164805/?utm_campaign=164805&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 08 Jan 2013 23:26:08 GMT</pubDate>
      <dc:creator><![CDATA[return]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[jQuery]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[jquery]]></category><category><![CDATA[javascript]]></category><category><![CDATA[начинающим]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[jQuery изнутри — манипуляции с DOM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/164677/</guid>
      <link>https://habr.com/ru/articles/164677/?utm_campaign=164677&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Каникулы продолжаются и мы воспользуемся этим для получения новых знаний, укрепления и расширения старых.<br/>
<br/>
Долго думал, что же разобрать дальше — атрибуты, свойства и данные или манипуляцию с DOM, даже начал писать обе статьи. И вроде бы сначала хорошо было бы дать первую тему, но в комментариях к предыдущему топику уже обратили внимание на одну особенность работы со скриптами, которая как раз относится ко второй теме, так что не будем тянуть и начнем именно с нее. Заодно прошу прощения у тех, кто увидел начало статьи, которое я по ошибке опубликовал в процессе написания.<br/>
<br/>
Итак, сегодня мы продолжим серию копаний в исходниках jQuery под номером 1.8.3 (стабильная версия на момент написания статьи). Общее представление о jQuery мы <a href="http://habrahabr.ru/post/164433/" rel="first" title="jQuery изнутри, введение">уже получили</a>, парсить html — <a href="http://habrahabr.ru/post/164533/" rel="prev" title="jQuery изнутри, парсим html">тоже</a>. Пора то, что мы распарсили куда-нибудь вставить.<br/>
 <a href="https://habr.com/ru/articles/164677/?utm_campaign=164677&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Вставь, вставь!</a>]]></description>
      
      <pubDate>Sat, 05 Jan 2013 18:53:29 GMT</pubDate>
      <dc:creator><![CDATA[return]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[jQuery]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[javascript]]></category><category><![CDATA[jquery]]></category><category><![CDATA[начинающим]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[jQuery изнутри — парсинг html]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/164533/</guid>
      <link>https://habr.com/ru/articles/164533/?utm_campaign=164533&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Продолжаем дело <a href="http://habrahabr.ru/post/164433/">первой статьи</a> и пытаемся разобраться с тем, что же делает за нас jQuery, когда мы с помощью этой библиотеки создаем DOM-элементы.<br/>
<br/>
В прошлом выпуске мы упомянули, что при передаче в jQuery вместо селектора html-строки, на основе нее <a href="https://github.com/jquery/jquery/blob/1.8.3/src/core.js#L469">функция parseHTML</a> создаст соответствующие элементы и вернет их в привычном jQuery-объекте. Сейчас мы рассмотрим все это более тщательно и затронем кроме core.js еще manipulation.js и attributes.js (мельком).<br/>
 <a href="https://habr.com/ru/articles/164533/?utm_campaign=164533&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Я клевый, мне интересно!</a>]]></description>
      
      <pubDate>Tue, 01 Jan 2013 22:58:50 GMT</pubDate>
      <dc:creator><![CDATA[return]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[jQuery]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[javascript]]></category><category><![CDATA[jquery]]></category><category><![CDATA[начинающим]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[jQuery изнутри — введение]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/164433/</guid>
      <link>https://habr.com/ru/articles/164433/?utm_campaign=164433&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[По работе мне несколько раз приходилось участвовать в собеседовании кандидатов на должность клиент-сайдера у нас в компании, смотреть на их познания в Javascript. Удивительно что никто из них не знал толком как же работает jQuery изнутри, даже те, кто отметил свои знания jQuery уровнем «отлично», увы.<br/>
<br/>
У jQuery очень низкий порог вхождения, о нем часто пишут и используют всюду, где только можно (и даже там, где, в общем-то, не нужно), поэтому некоторые даже не смотрят на чистый Javascript. Зачем, мол, его знать, когда есть jQuery, а по нему — тонны примеров и готовых плагинов? Даже на Хабре видел статью про рисование на Canvas, где автор подключил jQuery и использовал его только один раз — для того, чтобы получить доступ к Canvas по его идентификатору. И не считал это чем-то ненормальным.<br/>
<br/>
Извините, отвлекся. Суть поста и следующих частей серии в том, чтобы рассказать о том, как же работает библиотека изнутри и что же в ней происходит по мере выполнения каких-то методов.<br/>
 <a href="https://habr.com/ru/articles/164433/?utm_campaign=164433&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Готов и хочу читать дальше</a>]]></description>
      
      <pubDate>Sun, 30 Dec 2012 14:19:40 GMT</pubDate>
      <dc:creator><![CDATA[return]]></dc:creator>
      <category><![CDATA[JavaScript]]></category><category><![CDATA[jQuery]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[jquery]]></category><category><![CDATA[javascript]]></category><category><![CDATA[начинающим]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Помни о расширениях или история одного бага]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/162785/</guid>
      <link>https://habr.com/ru/articles/162785/?utm_campaign=162785&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h5>Предыстория</h5><br/>
Пришло однажды нам на почту письмо пользователя недовольного. «Не загружаются у меня на сайт ваш фотографии», говорил пользователь и прикладывал к письму скриншот. На скриншоте был слой с картинкой, а вместо картинки — обрезки от тега .<br/>
<img src="https://habrastorage.org/storage2/41a/c75/c9e/41ac75c9ed6bbd4315f2421d9c19eae9.png"/><br/>
(слева — у обычных пользователей, справа — у гневного)<br/>
 <a href="https://habr.com/ru/articles/162785/?utm_campaign=162785&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Что же дальше?</a>]]></description>
      
      <pubDate>Sun, 16 Dec 2012 21:49:13 GMT</pubDate>
      <dc:creator><![CDATA[return]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[javascript]]></category><category><![CDATA[расширения]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
