<?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/tenphi/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя tenphi]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Wed, 06 May 2026 02:35:41 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[Numl – Альтернативный язык разметки и стилизации для веб]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/510026/</guid>
      <link>https://habr.com/ru/articles/510026/?utm_campaign=510026&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Всем привет! Меня зовут Андрей, я профессионально разрабатываю веб-интерфейсы уже больше 11 лет и последний год развиваю проект Numl, который можно назвать языком разметки и стилизации для веб. В этой статье я расскажу, как в попытке перебороть ряд особенностей CSS и упростить вёрстку веб-проектов получился целый язык, который не только удовлетворил все наши потребности в стилизации, но также позволил уменьшить кол-во JS-кода и улучшить доступность.</p><br>
<p><img src="https://habrastorage.org/webt/-7/da/ww/-7dawwmgg3grcy_b98f46y3ktgm.jpeg"></p> <a href="https://habr.com/ru/articles/510026/?utm_campaign=510026&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 08 Jul 2020 09:49:51 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi]]></dc:creator>
      <category><![CDATA[CSS]]></category><category><![CDATA[HTML]]></category><category><![CDATA[Веб-дизайн]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[дизайн-система]]></category><category><![CDATA[css-фреймворк]]></category><category><![CDATA[web components]]></category><category><![CDATA[dark theme]]></category><category><![CDATA[custom properties]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Мутационный анализ, или как тестировать тесты]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/421141/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/421141/?utm_campaign=421141&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Тестов много не&nbsp;бывает&nbsp;&mdash; это все знают. Мемы про unit и&nbsp;интеграционное тестирование уже не&nbsp;очень-то веселят. А&nbsp;мы&nbsp;по-прежнему не&nbsp;знаем, можно&nbsp;ли полагаться на&nbsp;результаты прохождения тестов, и&nbsp;какой процент покрытия позволит не&nbsp;пустить баги в&nbsp;продакшен. Если фатальные изменения в&nbsp;коде проскакивают тесты, не&nbsp;оказывая влияния на их&nbsp;результат, то&nbsp;решение напрашивается само&nbsp;&mdash; надо тестировать тесты!<br/>
<br/>
<img src="https://habrastorage.org/webt/6w/kv/4n/6wkv4nyll_4lnom-dlicndmsuhu.png"/><br/>
<br/>
О&nbsp;подходе к&nbsp;автоматизации этой задачи и&nbsp;был доклад Марка Лангового на&nbsp;<a href="http://frontendconf.ru/">Frontend Conf</a>. Видео и&nbsp;статья короткие, а&nbsp;идеи очень рабочие&nbsp;&mdash; надо брать на&nbsp;заметку.<br/>
 <a href="https://habr.com/ru/articles/421141/?utm_campaign=421141&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Wed, 21 Nov 2018 06:24:28 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Веб-разработка]]></category><category><![CDATA[Тестирование веб-сервисов]]></category>
      <category><![CDATA[frontendconf]]></category><category><![CDATA[мутационное тестирование]]></category><category><![CDATA[javascript]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Frontend Conf — с заботой о пользователе]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/421139/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/421139/?utm_campaign=421139&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Не стану утверждать, что фронтенд важнее бэкенда, или поддерживать спорную концепцию, что «бэкенд в современном вебе не обязателен». Оставим холивары в стороне, просто признаем, что фронтенд-разработчик занимается собственно клиентской стороной веб-проектов, а значит его работа больше всего видна конечным пользователям, за которых идет борьба. То есть, не уделить фронтенду должного внимания, просто непозволительная роскошь.<br>
<br>
С этим определились, осталось только разобраться, и как же теперь все сделать круто. Где тут в интернете про это пишут? — Да везде! И вот, чтобы разобраться со всем многообразием современных технологий, фреймворков и библиотек, мы проводим профессиональную конференцию Frontend Conf. Отбирая для неё темы мы сделали упор не на хайповость, а на полезность докладов. Любой профессиональный фронтендер придя на конференцию может быть уверен, что найдёт для себя много полезных докладов соответствующих его уровню знаний. Какие именно доклады в итоге вошли в программу, расскажу под катом.<br>
<br>
<img src="https://habrastorage.org/webt/os/pi/nv/ospinvi-veihtg9o_aofabbto-8.jpeg"><br> <a href="https://habr.com/ru/articles/421139/?utm_campaign=421139&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 28 Sep 2018 10:31:34 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[CSS]]></category><category><![CDATA[Конференции]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[frontendconf]]></category><category><![CDATA[api]]></category><category><![CDATA[css]]></category><category><![CDATA[frontend]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как работает Headless Chrome]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/421137/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/421137/?utm_campaign=421137&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Уже из&nbsp;названия понятно, что headless-браузер&nbsp;&mdash; это нечто без головы. В&nbsp;контексте фронтенда&nbsp;&mdash; это незаменимый инструмент разработчика, с&nbsp;помощью которого можно тестировать код, проверять качество и&nbsp;соответствие верстке. Виталий Слободин на&nbsp;Frontend Conf решил, что необходимо познакомиться с&nbsp;устройством этого инструмента поближе.<br/>
<br/>
Под катом компоненты и&nbsp;особенности работы Headless Chrome, интересные сценарии использования Headless Chrome. Вторая часть про Puppeteer&nbsp;&mdash; удобную Node.js-библиотеку для управления Headless-режимом в&nbsp;Google Chrome и&nbsp;Chromium.<br/>
<br/>
<div class="oembed"><div><div style="left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;"><iframe src="https://www.youtube.com/embed/WPcahL2K27w?rel=0&amp;showinfo=1&amp;hl=en-US" style="border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;" allowfullscreen scrolling="no"></iframe></div></div></div><br/>
<strong>О&nbsp;спикере: </strong> Виталий Слободин&nbsp;&mdash; бывший разработчик PhantomJS&nbsp;&mdash; тот, кто закрыл его и&nbsp;похоронил. Иногда помогает Константину Токареву ( <u><a href="https://github.com/annulen">annulen</a></u>) в&nbsp;«воскрешенной» версии QtWebKit&nbsp;&mdash; том самом QtWebKit, где есть поддержка ES6, Flexbox и&nbsp;многие других современных стандартов.<br/>
<br/>
Виталий любит исследовать браузеры, в&nbsp;свободное время копаться в&nbsp;WebKit, Chrome и&nbsp;прочее, прочее. Про браузеры сегодня и&nbsp;поговорим, а&nbsp;именно про безголовые браузеры и&nbsp;всю их&nbsp;семейку призраков. <a href="https://habr.com/ru/articles/421137/?utm_campaign=421137&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Wed, 05 Sep 2018 13:01:29 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Node.JS]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[headless browser]]></category><category><![CDATA[headless chrome]]></category><category><![CDATA[тестирование]]></category><category><![CDATA[оптимизация сайта]]></category><category><![CDATA[frontendconf]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Шесть наиболее полезных докладов с Frontend Conf 2018]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/420965/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/420965/?utm_campaign=420965&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Друзья, с позиции главы программного комитета <a href="http://frontendconf.ru/moscow/2018">Frontend Conf</a> поместил под катом краткий обзор шести самых полезных докладов с РИТ++ 2018 по фронтенду. <br/>
<br/>
В подборке нашлось место рассказу про то, как настраивать <b>PWA-приложения</b> и делать их более нативными. Отдельно затронуты <b>вопросы транспиляции</b>, где на примере API Яндекс.Карт показано, как можно писать на ES2015, получая на выходе ES3, и обеспечить поддержку IDE и линтеров. Еще одна история &mdash; про <b>популярные форматы хранения изображений</b>, их сжатие и варианты загрузки на мобильные устройства. Не менее хардкорный доклад про то, как перенести нагрузку, связанную с <b>расчетом анимации, с CPU на видеокарту</b>. Плюс два отдельных доклада про <b>секреты и лайфхаки CSS</b>.<br/>
<br/>
Все доклады &mdash; сугубо практические, а некоторые &mdash; вполне холиварные. Одним словом, именно такие, как мы любим, и отбираем для Frontend Conf Moscow.<br/>
<br/>
<img src="https://lh3.googleusercontent.com/24Co-ZZ5j23GbvbSTy4BDFsJ76On_azrGUXUjixC3pom9IeJ5_4J7iNLWYVVOl64zyPKwaaQUmnpOyiVeLL53Jf97Mvvc9Ym_88-qdWHJ3ZIPY9LTug2iKTk8VkHuXSSWcNkp64M"/><br/>
 <a href="https://habr.com/ru/articles/420965/?utm_campaign=420965&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Tue, 28 Aug 2018 10:56:49 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[CSS]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[frontendconf]]></category><category><![CDATA[css]]></category><category><![CDATA[pwa]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Иван Тулуп: асинхронщина в JS под капотом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/417461/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/417461/?utm_campaign=417461&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[А&nbsp;вы&nbsp;знакомы с&nbsp;Иваном Тулупом? Скорее всего&nbsp;да, просто вы&nbsp;еще не&nbsp;знаете, что это за&nbsp;человек, и&nbsp;что о&nbsp;состоянии его сердечно-сосудистой системы нужно очень заботиться.<br/>
<br/>
Об&nbsp;этом и&nbsp;о&nbsp;том, как работает асинхронщина в&nbsp;JS под капотом, как Event Loop работает в&nbsp;браузерах и&nbsp;в&nbsp;Node.js, есть&nbsp;ли какие-то различия&nbsp;и, может быть, похожие вещи рассказал <strong>Михаил Башуров</strong> (<a href="https://habr.com/ru/users/saitonakamura/" class="user_link">SaitoNakamura</a>) в&nbsp;своем докладе на&nbsp;РИТ++. С&nbsp;удовольствием делимся с&nbsp;вами расшифровкой этого познавательного выступления.<br/>
<br/>
<img src="https://habrastorage.org/webt/mv/fj/ah/mvfjah-dahl8fndi-w8rt4qkbxw.jpeg"/><br/>
<br/>
<strong>О&nbsp;спикере:</strong> Михаил Башуров&nbsp;&mdash; fullstack веб-разработчик на&nbsp;JS и .NET из&nbsp;Luxoft. Любит красивый&nbsp;UI, зеленые тесты, транспиляцию, компиляцию, технику compiler allowing и&nbsp;улучшать dev experience.<br/>
<br/>
<strong>От&nbsp;редактора:</strong> Доклад Михаила сопровождался не&nbsp;просто слайдами, а&nbsp;демо-проектом, в&nbsp;котором можно понажимать на&nbsp;кнопочки и&nbsp;самостоятельно посмотреть за&nbsp;выполнением тасок. Оптимальным вариантом будет открыть <a href="https://saitonakamura.github.io/ivan-tooloop/">презентацию</a> в&nbsp;соседней вкладке и&nbsp;периодически к&nbsp;ней обращаться, но&nbsp;и&nbsp;по&nbsp;тексту будут даны отсылки на&nbsp;конкретные страницы. А&nbsp;теперь передаем слово спикеру, приятного чтения.<br/>
<br/>
<div class="oembed"><div><div style="left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;"><iframe src="https://www.youtube.com/embed/bUx8wk4LdoY?rel=0&amp;showinfo=1&amp;hl=en-US" style="border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;" allowfullscreen scrolling="no"></iframe></div></div></div> <a href="https://habr.com/ru/articles/417461/?utm_campaign=417461&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Thu, 16 Aug 2018 12:33:34 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Node.JS]]></category><category><![CDATA[Высоконагруженные системы]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[frontend]]></category><category><![CDATA[javascript]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[event loop]]></category><category><![CDATA[рит++]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Знай свой JIT: ближе к машине]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/417459/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/417459/?utm_campaign=417459&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[До того, как написанный нами код будет исполнен, он проходит довольно долгий путь. <strong>Андрей Мелихов</strong> в своем докладе на РИТ++ 2018 разобрал каждый шаг на этом пути на примере движка V8. Заходите под кат, чтобы выяснить, что даёт нам глубокое понимание принципов работы компилятора и как сделать JavaScript код производительнее.<br>
<br>
<img src="https://habrastorage.org/webt/iy/2r/ke/iy2rkenolmtnchwu_whyurlrw80.jpeg"><br>
<br>
Узнаем, является ли WASM серебряной пулей для повышения производительности кода, и всегда ли оправданы оптимизации.<br>
<br>
<strong><em>Спойлер:</em></strong> «Преждевременная оптимизация — корень всех бед», Дональд Кнут.<br>
<br>
<img src="https://habrastorage.org/webt/rd/-o/q7/rd-oq7q2m9bjipzyqo1l3jrlqti.jpeg"><br>
<br>
<strong><em>О спикере:</em></strong> Андрей Мелихов работает в компании Яндекс.Деньги, активно пишет на Node.js, а в браузере — меньше, поэтому ему ближе серверный JavaScript. Андрей поддерживает и развивает сообщество devShacht, заходите познакомиться на <a href="https://github.com/devSchacht">GitHub</a> или <a href="https://medium.com/devschacht">Medium</a>.<br> <a href="https://habr.com/ru/articles/417459/?utm_campaign=417459&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 02 Aug 2018 12:37:53 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Высоконагруженные системы]]></category><category><![CDATA[Клиентская оптимизация]]></category><category><![CDATA[Компиляторы]]></category>
      <category><![CDATA[jit]]></category><category><![CDATA[javascript]]></category><category><![CDATA[v8]]></category><category><![CDATA[компиляторы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Frontend Conf Moscow — клиентсайд и вглубь и вширь]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/oleg-bunin/articles/417457/</guid>
      <link>https://habr.com/ru/companies/oleg-bunin/articles/417457/?utm_campaign=417457&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Как-то так получается, что клиентская разработка, с&nbsp;одной стороны, захватывает территории и&nbsp;становится все более востребованной, с&nbsp;другой,&nbsp;&mdash; все больше обосабливается. О&nbsp;распространении мы&nbsp;судим по&nbsp;нескольким последним фестивалям РИТ++, на&nbsp;которых и&nbsp;докладов по&nbsp;фронтенду было в&nbsp;2-3 раза больше, чем по&nbsp;бэкенду или DevOps, и&nbsp;слушателям это было интереснее, и&nbsp;даже приехавшие видеоблогеры в&nbsp;основном оказались фонтендерами, но&nbsp;об&nbsp;этом позже. А&nbsp;в&nbsp;ответ на&nbsp;тенденции разделения и&nbsp;углубления специализаций мы&nbsp;организуем <a href="http://frontendconf.ru/moscow/2018">Frontend Conf Moscow</a>. О&nbsp;том, что будет из&nbsp;себя представлять эта конференция, что от&nbsp;неё ждать, как поучаствовать, читайте далее.<br/>
<br/>
<img src="https://habrastorage.org/webt/kp/l8/cs/kpl8cs7tggbpeyhuym9kkmnowps.png"/><br/>
<br/>
<h2>О&nbsp;главном</h2><br/>
<a href="http://frontendconf.ru/moscow/2018/">Frontend Conf Moscow</a> пройдет <strong>4&nbsp;и&nbsp;5&nbsp;октября в&nbsp;Москве</strong> в&nbsp;хорошо знакомом и&nbsp;удобном Инфопространстве. Это будет два дня, которые мы&nbsp;с&nbsp;вами целиком посвятим технологиям разработки клиентской части веб-проектов. Доклады в&nbsp;несколько потоков, мастер-классы, митапы, обсуждения с&nbsp;экспертами за&nbsp;чашкой кофе или, в&nbsp;вечернее время, стаканом кое-чего еще, сильнейшие разработчики среди участников&nbsp;&mdash; все это позволит <strong>погрузиться в&nbsp;тему полностью</strong>, и&nbsp;обсудить аспекты, которые до&nbsp;этого оказывались слишком узкими или специфичными.<br/>
 <a href="https://habr.com/ru/articles/417457/?utm_campaign=417457&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Thu, 26 Jul 2018 08:18:37 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi (Конференции Олега Бунина (Онтико))]]></dc:creator>
      <category><![CDATA[Блог компании Конференции Олега Бунина (Онтико)]]></category><category><![CDATA[CSS]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Конференции]]></category><category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[frontend]]></category><category><![CDATA[conference]]></category><category><![CDATA[конференция]]></category><category><![CDATA[frontendconf]]></category><category><![CDATA[web-разработка]]></category><category><![CDATA[css]]></category><category><![CDATA[api]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Обзор Mobile Safari iOS 6 для веб-разработчиков]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/145912/</guid>
      <link>https://habr.com/ru/articles/145912/?utm_campaign=145912&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/storage2/294/1ef/694/2941ef694e765583c7b3c0705c52c314.png" align="right"/><br/>
Уже было сказано довольно <a href="http://www.iphones.ru/iNotes/227528">много</a> <a href="http://habrahabr.ru/post/145861/">слов</a> про новую версию iOS и её бета-релиз. Однако, за кадром остались новые интересные возможности мобильной версии Safari о которых просто нельзя не рассказать. Но обо всём по порядку.<br/>
<br/>
<i>Данная статья изначально планировалась как перевод, но подготовленного материала хватило на самостоятельную статью. Для тестирования возможностей использовались iOS 6 beta 1 и Safari 6 developer preview for Mac. И то и другое доступно для скачивания для зарегистрированных разработчиков Apple.</i><br/>
<br/>
 <a href="https://habr.com/ru/articles/145912/?utm_campaign=145912&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 16 Jun 2012 07:48:20 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi]]></dc:creator>
      <category><![CDATA[Safari]]></category><category><![CDATA[iOS]]></category>
      <category><![CDATA[ios 6]]></category><category><![CDATA[web-development]]></category><category><![CDATA[mobile safari]]></category><category><![CDATA[web audio api]]></category><category><![CDATA[beta]]></category><category><![CDATA[css filters]]></category><category><![CDATA[remote debugging]]></category><category><![CDATA[web inspector]]></category><category><![CDATA[web storage]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Strain It! — Валидация и приведение данных на PHP]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/115082/</guid>
      <link>https://habr.com/ru/articles/115082/?utm_campaign=115082&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<h4>Введение</h4><br/>
Пожалуй любой программист рано или поздно сталкивается с проблемой валидации данных. Потратив уйму сил на написание однотипных алгоритмов валидации и я решил поискать более удобные способы. Было это довольно давно, и с тех пор мне довелось попользоваться большим количеством готовых решений и разработать несколько своих, которыми благополучно пользовался до недавнего времени.<br/>
<br/>
Но после того как я перешел на PHP 5.3 меня потянуло написать новый валидатор на основе анонимных функций. А заодно еще раз потренироваться в их использовании. Мною ставились следующие требования к будущему классу:<br/>
<ul>
<li>Декларативность (информация о валидации должна задаваться объектами/массивами)</li>
<li>Гибкость (высокая эффективность кода, написанного с помощью этого класса)</li>
<li>Скорость (ничего лишнего)</li>
</ul><br/>
Уже после начала работ, мне пришла в голову мысль о том, что анонимные функции в этом классе можно использовать не только для валидации, но и для приведения данных к нужному виду (например к определенному типу). Добавив к списку требований еще одно («Универсальность») я смело переименовал класс в Strain.<br/>
<br/>
Что же в итоге получилось… читаем ниже. Здесь я не буду претендовать на оригинальность решения и прочую ерунду. Если вам понравится такой подход, используйте его в своих проектах, а если нет — то нет. Для отчаянных любителей извращений исходники я опубликую в конце статьи.<br/>
 <a href="https://habr.com/ru/articles/115082/?utm_campaign=115082&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 07 Mar 2011 21:06:21 GMT</pubDate>
      <dc:creator><![CDATA[Tenphi]]></dc:creator>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[php]]></category><category><![CDATA[анонимные функции]]></category><category><![CDATA[валидация]]></category><category><![CDATA[приведение данных]]></category><category><![CDATA[фильтрация данных]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
