На днях понадобилось изменить размеры у небольшой кучки фотографий, которые лежат на хостинге. Перекачивать файлы туда и обратно было лень и трафика жалко (фотки большие по 2-3 мега). Немного подумал и сделал всё с помощью утилиты convert из состава пакета ImageMagick и командной строки:

ls -1 *.jpg | while read file; do convert -size 800x600 $file -resize 800x600 +profile "*" medium/$file; echo $file; done

Пара минут — и содержимое каталога с фотографиями было сконвертировано в подкаталог medium с нужными размерами.
Немного расскажу, что делает команда.
Сначала формируется список файлов (ls -1), затем через конвейер (значок «|») этот список передаётся далее. С помощью цикла while read содержимое списка построчно считывается, обрабатывается утилитой convert и выводится для информации на экран (достаточно важный пункт: всегда полезно знать, что происходит в данный момент). А если дополнить эту строку до полноценного скрипта на shell, то с его помощью можно легко и быстро создавать целые фотоальбомы.

Обновил на своём блоге WordPress до версии 2.5. Для обновления использовал русскую версию от Lecactus, посмотреть описание и загрузить можно отсюда. Перед обновлением посмотрел все рекомендуемые там ссылки, и могу порекомендовать вот эту полезную статью. Особо сильных изменений в движке не было сделано, только очень изменился администраторский интерфейс. По личным впечатлениям у меня стало всё ощутимо притормаживать. Понаблюдаю ещё немного, и, если будет совсем плохо, сделаю откат на старую версию, благо backup перед обновлением, как полагается, сделал.

UPD: Как выяснилось у хостера проблемы были какие-то, кластер где-то полетел. Сайт несколько часов был вообще не доступен. Сейчас вроде всё худо-бедно наладилось.

При программировании часто приходится сталкиваться с необходимостью быстро внести определённые уже известные изменения в код, например, если вышла новая версия, либо исправлена какая-нибудь ошибка. В Unix для этих целей, как правило, используется «сладкая парочка» diff и patch. Утилита diff анализирует указанные файлы (каталоги) на предмет внесённых изменений и выдает результат в специальном формате. Используя эти данные, с помощью другой утилиты patch можно быстро применить изменения для других файлов.

По какой-то причине, данный подход не получил широкого распространения при программировании под Windows и для PHP. Так, например, разработчики популярного форума phpBB для публикации модицикаций (по другому mod-ов) используют обычные текстовыми файлы (а начиная с третьей версии — специальные xml файлы) с инструкциями для ручного изменения кода. Создание данных файлов — достаточно кропотливое занятие и отнимает очень много времени и сил.

Немного поискал и нашёл данные утилиты под Windows (взял из дистрибутива FPC — Free Pascal Compiler), положил здесь, надеюсь, кому-нибудь пригодится.

Недавно, в связи с покупкой SUN компании разработчика MySQL, я задавался вопросом, каким образом SUN зарабатывает на свободном ПО. На пресс-конференции, которая прошла в минувшую среду, президент SUN Джонатан Шварц, рассказал о стратегии компании в отношении свободного ПО. Компания считает, что предоставление свободного ПО пользователям в дальнейшем окупается покупкой этими пользователями аппаратных решений SUN, коммерческих лицензий, и контрактов на поддержку. Эта стратегия началась несколько лет назад с бесплатной версии своего сервера приложений и усилилась с такими продуктами, как StarOffice, OpenSolaris, системы виртуализации Open xVM, и совсем недавно приобретённой MySQL.

Наверное, всё действительно так и есть, но мне кажется, что в наших условиях это пока что мало применимо.

Firefox 3 Beta 3

14.02.2008

Firefox

Несколько дней назад разработчики Mozilla объявили о выпуске третьей бета версии третьей версии браузера Firefox. Скачать данную бету можно здесь. В данной версии можно протестировать новые функции и возможности, которые появятся в финальной версии Firefox 3. Несмотря на то, что сейчас многие пользуются Оперой, я с момента выхода первой версии остаюсь приверженцем «Огненной лисы» (её можно разглядеть на логотипе), и пока привычке изменять не собираюсь.

FLEUROPНесколько дней назад у шефа загорелась идея подарить на день рождения сестре, которая сейчас учится в Германии, букет цветов. После анализа рынка предложений решили сделать заказ именно в Германии и остановились на сайте FLEUROP (просто фотографии цветов шефу больше понравились). Поскольку с немецким я вообще не знаком, то в процессе оформления заказа пришлось воспользоваться здравым смыслом и переводчиком от Google, который позволяет делать перевод с немецкого на привычный для меня английский язык. Понравилось, что помимо собственно цветов в заказ можно заказать различные дополнительные аксессуары. К букету заказали плюшевого медвежонка, коробку конфет и указали необходимую дату доставки. Оплату произвели виртуальной картой Народного банка (у шефа была такая). Через некоторое время по электронной почте пришло подтверждение, что заказ принят. Сегодня с поистине немецкой пунктуальностью заказ был доставлен. Интересно, если организовать подобный сервис по Казахстану, будет ли на него вообще какой-нибудь спрос?

Support GoPHP5.orgГруппа разработчиков языка PHP организовала проект GoPHP5.org, назначением которого является агитация программистов, администраторов и разработчиков приложений к переходу на пятую версию. С пятого февраля ряд проектов и хостеров, полный список которых имеется на сайте, обязуется перейти на PHP 5, и в минимальных требованиях указывать версию PHP 5.2. Дата была выбрана исходя из цифр версии PHP, которые можно трактовать как дату 05/02.

Совершенно случайно натолкнулся на интересную новость:
«16 января 2008 г. — Санта-Клара, Калифорния — Сегодня корпорация Sun Microsystems объявила о заключении окончательного соглашения о приобретении компании MySQL AB — легендарного создателя систем с открытым исходным кодом и разработчика одной из самых быстрорастущих баз данных с открытым исходным кодом в мире — за общую сумму приблизительно 1 миллиард долларов.»

Думаю, что приобретение никак не отразится на этом хорошо зарекомендовавшем себя продукте, и разработка будет продолжаться. Но, интересует другой вопрос: какая выгода Sun от продукта с открытым исходным кодом, или это такой вид благотворительности?

Недавно (недели две назад) ко мне обратились с просьбой решить проблему с «медленными запросами» на форуме phpBB второй версии. Хостер (1Gb.ru) предоставил проблемные запросы, и я, особо не задумываясь, просто закомментировал их вызовы, тем более что уже была готовая наработка (mod).
На этих выходных опять пришло предупреждение от хостера, в этот раз я решил подойти к делу более основательно. Внимательно просмотрел запрос, обратил внимание на наличие индексов по запрашиваемым полям, некоторое сомнение вызывало наличие в запросе IN с большим списком ID, но, прочитав документацию по MySQL, убедился, что такие запросы при наличии индекса без проблем оптимизуются сервером. Спросил тех. поддержку хостера, с чем может быть это связано, получил потрясающий ответ, что IN вообще не подлежит оптимизации. Я подобные вещи ещё вручную делал на Клиппере с dbf базами.

При помощи команды EXPLAIN посмотрел потребляемые запросом ресурсы — действительно, по какой-то причине сервер просматривал большое количество строк, и использовались tmp (временные таблицы) для filesort. Начал гуглить, из-за чего такое возможно, и в одном месте наткнулся, что кому-то помогла SQL команда ANALYZE TABLE. Попробовал проделать данную операцию со всеми таблицами, участвующими в запросе, и действительно, проблемный запрос стал оптимизироваться, как ему и положено.

Отписал хостеру. Думаю, что они сделали оптимизацию индексов на SQL сервере, поскольку у другого обратившегося с подобной проблемой человека я её уже просто не обнаружил.

В последнее время понемногу принимаю заказы на различные технические работы, в основном по форуму phpBB. Поскольку мошенничество имеет место быть как и в обычной жизни, так и в Интернете, потенциальный заказчик всегда интересуется вопросом, можно ли мне доверять. Интересно, если сделать портфолио, исчезнут ли подобные вопросы? С другой стороны, не представляю, какую информацию там размещать? Я же не дизайнер, качество работ которого можно оценить визуально. А информация типа «сайт такой-то, исправлена ошибка с загрузкой вложений в сообщениях на форуме» большинству людей будет малопонятна, да и проверить не всегда получится. Пока нахожусь в раздумьях, может в комменты кто-нибудь дельное напишет.