Как сохранить изображение в ico
Потребовалось сделать favicon.ico, да как назло никакого софта для сохранения в ico не оказалось под рукой, даже премного-мной-уважаемый Photoshop не умеет сохранять в ico, пришлось импровизировать.
В PHPThumb обнаружил отличную функцию для сохранения GD ресурса в ICO. На основе этой функции сделал собственный мааааааленький скриптик для преобразования графических файлов в ico. В общем, инструмент получился действительно полезный - выкладываю его для общего пользования. Здесь исходник.
Поддерживает GIF, PNG и BMP.
Upd: для этих же целей есть офигительный сервис favicon.ru
Upd2: Бесплатный конкурент Фотошопа - Gimp прекрассно умеет сохранять в ico.
Upd3: Как оказалось гимп всё-же сохряняет ico с ошибкой - получается фигня, по крайней мере в Windows версии.
PHP заменяет пробелы в именах переменных на _
Похоже, что эта пагубная традиция идет со времён когда переменные, передаваемые через GET и POST превращались в глобальные переменные. Eсли поле формы описано как <input type="text" name="Last Name"> то в PHP оно преобразуется в $_POST['Last_Name'].
Довольно неприятное поведение, но это факт.
Локальное время в MySQL отличается от времени в PHP
Начинаю понимать почему многие разработчики забивают на тип DATETIME в MySQL и используют вместо него целочисленные поля:
$date = gmmktime(0,0,0,1,1,2010); //2010-01-01 00:00:00; DB::execute("insert into messages SET date_created=from_unixtime(?)",$date); $id = DB::getLastID(); $r = DB::execute("select date_created from messages where message_id=?",$id); print $r->fields[0]; //2010-01-01 03:00:00
все функции для работы с датой используют локальное время MySQL сервера, но так как они могут не совпадать с локальным временем в PHP то можно получить довольно интересные баги...
Оказывается для MySQL нужно выставлять зону отдельно.
DB::execute("SET time_zone='".Config::$mysql_timezone."'");
причем, строковые значения вида 'America/New_York' для зоны дают странные результаты - почемуто у меня получилось расхождение в 34 секунды c PHP, возможно связано с тем, что MySQL высчитывает даты с использованием leap seconds c в PHP просто прибавляет или вычитает часовую разницу, поэтому решил, что лучше использоватать числовые зоны, типа SET time_zone='-5:00'.
ColorPicker
Выложил на ztools.org компонент для выбора цвета, по моему, получилось неплохо...
Компонент представляет собой RGB палитру, наподобие той, что используется в Photoshop - на мой взгляд, так выбирать цвет удобнее всего, хотя, есть задумка сделать еще несколько оригинальных колорпикеров.