22 April 2012

json_encode и кириллица

В PHP 5.4 наконец-то починили кириллицу в json_encode:

$ php -a
Interactive shell

php > var_dump(json_encode('мама мыла раму'));
string(76) ""\u043c\u0430\u043c\u0430 \u043c\u044b\u043b\u0430 \u0440\u0430\u043c\u0443""
php > var_dump(json_encode('мама мыла раму', JSON_UNESCAPED_UNICODE));
string(28) ""мама мыла раму""

Хотя бы так.

8 January 2012

Debian, SSL

В продолжение темы.

Чтобы установить свой самопальный корневой сертификат на Debian-машину, нужно:

  1. Положить корневой сертификат (webdev.crt, к примеру) в /usr/local/share/ca-certificates;
  2. Выполнить update-ca-certificates.

После этого можно спокойно делать openssl verify certificate.crt на каком-нибудь подписанном нами клиентском сертификате. Вывод должен быть таким:

$ openssl verify certificate.crt 
certificate.crt: OK

23 September 2011

doctrine-fixtures Issue

Есть в doctrine-fixtures одна проблема... И никак её не порешают ведь :(

Для себя временно рещил вопрос таким образом (для проекта на Symfony 2):

$ echo 'SET GLOBAL foreign_key_checks = 0;' | mysql
$ sudo -u www-data php /srv/www/project/app/console --env=prod doctrine:fixture:load
$ echo 'SET GLOBAL foreign_key_checks = 1;' | mysql

6 September 2011

Шпаргалка по SSL-сертификатам

Создание ключа:

openssl genrsa 2048 > /etc/ssl/private/test.com.key

Создание самоподписанного сертификата:

openssl req -new -key /etc/ssl/private/test.com.key -x509 -days 3650 -out /etc/ssl/certs/test.com.pem

Создание запроса на выпуск сертификата (для отправки в центр сертификации):

openssl req -new -key /etc/ssl/private/test.com.key -out test.com.csr

А так же подпись CSR (для самопального CA, первый запуск):

openssl x509 -req -days 3650 -in test.com.csr -CA /etc/ssl/certs/ca.pem -CAkey /etc/ssl/private/ca.key -CAcreateserial -out /etc/ssl/certs/test.com.pem

P.S. Просмотр информации о сертификате:

openssl x509 -noout -in test.com.pem -issuer -subject -dates

26 August 2011

Doctrine 2 — дата и время

Столкнулся с проблемой использования типа datetime из Doctrine 2 и MySQL. Точнее, вот с чем: для временных меток я, естественно, хотел использовать MySQL'овский TIMESTAMP, который поддерживает временные зоны и хранит всё правильным образом. Но в Doctrine 2 datetime идёт в MySQL только как DATETIME, т.е. поддержки TIMESTAMP вообще нет.

И тут я стал думать :)

Сначала, естественно, о том, как вкрячить TIMESTAMP. И меня очень удивило, почему никто этого до сих пор не сделал.

А потом я подумал (не без помощи @magazoll) в другом направлении. Ведь база должна быть тупым хранилищем (в нашем случае). Почему бы тогда просто не хранить в БД тот же DATETIME, только время там держать в UTC+0. Т.е. в модели держать время в UTC+0. А уже при выводе или другой обработке конвертить в правильную зону, которая у пользователя.

Обосрите вариант.

25 July 2011

habrahabr.ru/blogs/pm/124716: «ScrumMaster ни в коем случае не должен стать «чугунной крышкой», ограничивающей сверху интеллектуальные порывы членов команды — стоит ему хоть раз поспорить с коллегами на тему, в которой он не является сведущим, напомнив, что он их менеджер — и до конца дней за ним закрепится ярлык «тупого ублюдка».

anotherpm.com/blog/?p=1462: «Если команда «зажала» Архитектора со всех сторон критикой, то единственный выход для него – защищать свою позицию, даже если это противоречит логике! В противном случае он будет унижен и раздавлен, а его последующие решения будут сразу же восприниматься критически».

Интересно.

18 March 2011

Format XML in CLI

$ xmllint --format file.xml
$ curl http://test.com/some.xml | xmllint --format -