PHP — анализ производительности кода и поиск узких мест

blackfireНастоящим переворотом в мире PHP стал PHPUnit, который вышел в 2004 году (появилась версия 1.0). До появления этого инструмента тестировать по сути приходилось вручную, каждый раз проверяя, что ничего не поломалось. В такой схеме баги непреднамеренно появлялись на production серверах.

В настоящее время помимо PHPUnit существуют другие фреймворки для тестирования, такие как PHPSpec, Behat, Codeception.

С производительностью же (а точнее с написанием тестов по ее оценке) дела обстоят гораздо хуже. Большинство разработчиков этим просто не занимается. В больших компаниях есть целые отделы, чья работа как раз заключается в поиске различных багов, а также оценке производительности приложения. Может у разработчиков просто не хватает инструментов для анализа своих приложений, либо нужно долго изучать то, чем по сути занимаются тестировщики? Читать далее

Логирование в PostgreSQL

postgresql logsЗачем вообще нужно логирование в базе данных? Для начала попробуйте ответить себе сами на этот вопрос.
У вас были когда-нибудь ситуации, когда кто-то изменил строку в таблице и на вопрос, почему система стала выдавать странные результаты, разработчики только разводили руками?
А была ли ситуация, когда кто-то случайно удалил таблицу и потом приходилось ее восстанавливать с бэкапа. Вы ведь делаете бэкапы, правда?
А иногда еще хочется посмотреть, кто соединился с базой. Ну и в добавок, когда что-то пойдет не так, логи могут помочь вам разобраться с этой ситуацией.

Читать далее

MongoDB 3.2

mongodb

Совсем недавно вышла новая версия популярной NoSQL базы данных MongoDb. Что же нового принесла нам эта версия, случился ли прорыв и как новая версия сможет повлиять на текущую разработку в проектах, где используют NoSQL подход. Обо всех изменениях читайте под катом.

Читать далее

Mercurial Diff — как сделать удобно

icdiff-css-demo-tall-2x

hg diff — показывает, что изменилось в файле. Однако не очень удобно смотреть на изменения в файлах при этом.

Всегда хотелось, чтобы diff’ы в mercurial были более наглядными и понятными. К счастью, это можно сделать. Нам потребуется одна небольшая утилита, и скрипты, которую сделают нашу работу еще лучше. Читать далее

MacOS X Ошибка с CURL при работе с SSL

OpenSSL

В MacOS X если вы попытаетесь сделать запрос по протоколу https с использованием сертификата, то вероятно всего получите следующую ошибку

* Hostname was NOT found in DNS cache
* Trying xx.xx.xx.xx...
* Connected to example.com (xx.xx.xx.xx) port abcd (#0)
* WARNING: SSL: CURLOPT_SSLKEY is ignored by Secure Transport. The private key must be in the Keychain.
* WARNING: SSL: Certificate type not set, assuming PKCS#12 format.
* SSL: Can't load the certificate "/path/to/folder/cert.test.pem" and its private key: OSStatus -25299
* Closing connection 0

Проблема описана тут http://curl.haxx.se/mail/archive-2013-10/0036.html.

Читать далее

MongoDB лимиты операционной системы

mongodb
При входе в консоль mongo можно увидеть такое сообщение


WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

Если для Linux систем все решается простым ulimit -n <число>, то для Mac OS X Yosemite параметры поменялись.
Читать далее

Обновление timezone для PHP

26 октября был перевод стрелок в России на час назад. Многие системы автоматически обновили timezone. Как пользователь MacOs, iOS8 я с проблемами не столкнулся. Однако проблема осталась в php. Просто скрипт

echo date("Y-m-d H:i:s");

возвращал время на час вперед. Почему так происходит?

Читать далее