Перевод: Тестируйте шаг за шагом

Оригинал: You Need tests...just Not Yet

Я постоянно натыкаюсь на посты в блогах или интересные презентации, которые дают мне пищу для размышлений. В последнее время изо всех сил пытался придумать стратегию, чтобы помочь разработчикам понять, когда им следует приступать к написанию тестов для своих программ.

Если вы верите в силу разработки через тестирование (Test-Driven Development, TDD), тогда ответ будет следующим. Вы начинаете писать тесты сразу после старта работы над проектом и так до конца, шаг за шагом. Я верю, что TDD может быть очень мощным средством разработки для создания модулей или компонентов.

Читать дальше →

Почему FastCGI + Nginx быстрее, чем Apache + mod_php?

Оригинал: Why is FastCGI /w Nginx so much faster than Apache /w mod_php?

Сначала я собирался написать пост о том, почему Nginx в связке с FastCGI работает быстрее, чем Apache с mod_php. Не так давно ходили слухи, что Nginx с запущенным PHP через FastCGI производительнее, чем Apache с mod_php. Многие знакомые утверждали, что это чистая правда. Некоторое время назад я провел небольшое исследование по этому вопросу и собрал интересные факты.

Сегодня я хотел бы подробно рассказать о своих поисках истины и проанализировать получившиеся результаты. Так вот, для начала замечу, что раньше мне приходилось увеличивать производительность. Если мне не изменяет память, это было необходимо и для работы с Magento.

Читать дальше →

Composer: Управление версиями


Оригинал: Composer Versioning

Если вы не знаете, что такое Composer, немедленно переходите на сайт Composer и начинайте изучать.
Я знаю многих людей, которые сталкиваются с ограничениями, связанными с использованием Composer-зависимостей. Надеюсь, этот пост поможет пролить свет на то, почему некоторые моменты при работе с версиями являются нежелательными и как их избежать. Я начну свой пост с наихудшего из возможных сценариев и буду двигаться по мере улучшения ситуации.

Читать дальше →

Grunt.js: волшебная палочка для фронтенд-разработчика

На сегодняшний день почти любой сайт, если он хоть немного сложнее домашней странички любимого кота, хранит под своим капотом кучу файлов с тоннами кода на css и javascript. Недобросовестные разработчики, ссылаясь на быстрый интернет пользователей, не стесняются выкатывать на продакшн свои творения в формате «as is», совсем не думая о том, что доля мобильного траффика растет как на дрожжах, а высокой скоростью мобильный интернет нас порадует еще очень нескоро. И это лишь один из поводов всерьез задуматься о грамотной сборке и оптимизации фронтенда. Нет, серьезно, берите свои многочисленные jquery-плагины, js-модули, виджеты, библиотеки, овощи там, рожь, пшеницу, вот это все, и минифицируйте, конкатенируйте, тестируйте, компилируйте, а такая магическая штука, как grunt.js, поможет в этом с помощью всего одной команды в консоли.

Читать дальше →

Ответ на «микрооптимизацию в PHP»

Оригинал: A Response to “Micro-Optimizations in PHP”

На прошлой неделе я прочитал пост, рекомендованный мне в PHP Weekly. Он назывался Микрооптимизация в PHP. Я повелся, ведь всегда стремлюсь быть лучшим PHP разработчиком. Пост начинается с общих рекомендаций, которые, по сути, являются даже не микро-, а микро-микрооптимизацией. Продолжая читать, я приходил к выводу, что описанное в тексте и вовсе имеет мало общего с оптимизацией. В итоге я могу сказать, что пост был написан безответственно — заявления автора не имели обоснований.

Обидно, что я получаю такие низкокачественные посты из рассылки PHP. Подобные статьи путают разработчиков, что, в свою очередь, способствует созданию некачественных приложений в сообществе PHP-разработчиков. Эта ситуация заставляет задуматься о росте числа хейтеров PHP.

Я не сомневаюсь в том, что автор писал статью с исключительно добрыми намерениями. Но, по крайней мере, он должен был предоставить доказательства сделанных в статье заявлений. В конце концов, хороший разработчик должен всегда спрашивать,почему? Я прочитал рекомендуемые в том посте оптимизации. Я оценил рекомендации с точки зренияабсолютной правды и обозначил каждую из них как истина или ложь. Пожалуйста, ознакомьтесь с полным текстом, прежде чем заметите ошибки.

Читать дальше →

Доступны видео с последней конференции PHP Frameworks Day

Доклады всех участников достойны внимания. Видео доступны на официальном канале мероприятия на youtube: www.youtube.com/user/fwdays/videos. Так же на facebook были выложены фотографии: www.facebook.com/fwdays/photos_stream

Комрады, какой фреймворк вы используете для средних проектов?

Интересно отношение сообщества к фреймворкам. Лично я предпочитаю Yii. Вторая версия очень вкусная, но сырая. А Вы что используете в повседневной работе?

Декаплинг и фреймворки

Оригинал: Living Apart Together: Decoupling Code and Framework

Вы, конечно, используете в своей работе новейшие технологии и фреймворки. Более того, вы самостоятельно написали 2,5 фреймворка, ваш код  PSR-2 совместим, полностью юнит-тестирован, имеет сопровождающие PHPMD  и PHPCS конфигурации, и даже может поставляться с надлежащей документацией (на самом деле, она существует!). При выпуске новой версии вашего любимого фреймворка вы захотите побыстрее использовать его в своем ​​проекте и получите пару отчетов об ошибке. Вы, может быть, даже воспользуетесь модульным тестированием, чтобы определить ошибку и сделаете патч, чтоб исправить ее. Если это может помочь вам стать тем разработчиком, которым вы хотите быть, — пересмотрите отношения вашего кода и фреймворка.

Читать дальше →

Share ссылки популярных социальных сетей

Часто ли вам во время работы требуется создать кнопки share для социальных сетей Вконтакте, Facebook, Twitter и тд? У меня в работе они возникают с завидной регулярностью. Для того, что бы не перерывать тонны мануалов на десятке сайтов соц-сетей для разработчиков, я решил написать этот пост-заметку со списком ссылок для создания share кнопок. Список будет дополняться.

Переменные в листингах:
  • [URL] — url страницы, которой Вы собираетесь делиться в соц сетях.
    Например http://www.example.com/catalog/good/1.html.
  • [TITLE] — заголовок записи, который будет опубликован в соц сети.
    Например Продукт нашего завода.
  • [DESC] — описание записи, которое будет опубликовано в соц сети.
    Например Этот неведомый продукт был выпущен на нашем заводе «Торгпромсельмашхимстрой комбинат номер 5».
  • [IMAGE] — изображение, которое относится к публикуемой в соц сети записи.
    Например http://www.example.com/images/good-1.jpg.

Для начала в блоке head страницы, нужно добавить четыре мета тега:
<meta property="og:url" content="[URL]">
<meta property="og:title" content="[TITLE]">
<meta property="og:description" content="[DESC]">
<meta property="og:image" content="[IMAGE]">

А теперь размещаем ссылки.

Читать дальше →

Группа PHP-FIG и разделяемые интерфейсы

Оригинал: On php-fig and Shared Interfaces

Этот пост я написал по просьбе Эверта Пота, с которым успел пообщаться во время голландской конференции PHP в июне 2012 года. В статье подробно рассмотрены некоторые наблюдения, связанные с группой PHP-FIG и, надеюсь, после прочтения вы поймете, почему я больше не принимаю непосредственного участия в ней.

Читать дальше →