2011-07-27

Хопёр 2011

Вернулся из небольшого отпуска, который провёл сплавляясь на байдарках по реке Хопёр. Выложил небольшой фото отчет.

Хопер как всегда прекрасен. Воды в этом году больше чем в прошлом. Пока сплавлялись были слышны грозы, которые, впрочем, обходили нас стороной, а вчера мы даже попали под небольшой освежающий дождик — и это при том, что в Саратове в это время было +38!

Рыбы в Хопре в этом году полно, много и прочей живности - ужей, гадюк, лягушек, ящериц. Ещё видели выводок каких-то темных водяных зверьков издали, скорее всего это были выдры.

Но самый страшный зверь на Хопре — это человек, по этой причине не хочу его сильно рекламировать — трошкi е тiлько для себе :) Места куда может подъехать машина так загажены, что хочется спросить господ автомобилистов — ну неужели нельзя увезти свой мусор с собой, на худой конец просто сжечь или закопать?

К счастью, сплав по реке имеет одно неоспоримое преимущество — можно найти такие места куда не подъезжала ни одна машина а попасть можно лишь по воде, таких мест на Хопре очень много  в силу его отдаленности от больших населенных пунктов.

 

Оставить комментарий

 
  2011-07-13

Неплохой багтрекер

При создании любого проекта нужно как то управлять процессом отладки, а для этого необходим багтрекер. Багтрекер это как секс - плохой багтрекер лучше чем совсем никакого. Долгое время использовал phpBugtracker - хотя он последний раз обновлялся в 2007 году, если внести в него парочку исправлений получается вполне себе ничего багтрекер.

Ну вот для одного нового проекта решил попробовать Mantis Bugtracker. Понравилось, аккуратненько так, и ничего лишнего. Может кто порекомендует чего лучше?

 

Коментариев: 2

 
  2011-07-13

Странный глюк в PHP

Не знаю, сталкивался ли кто или это мне повезло, но вчера поймал загадочный баг, похоже, что в движке PHP, хотя, пока до конца не уверен.

Предыстория такая - работаю над проектом, над которым потрудились индийские программисты. Сам проект сделан на движке Symphony - добротный такой движок, вполне приятный. В качестве библиотеки работы с базой данных используется Creole - тоже довольно приятная штука. В качестве ORM используется Propel — штука громоздкая, но тем не менее тоже весьма мощная и простая. Вообще Symphony показался мне весьма неплохим движком, весьма простым и удобным. Наверно, потому, что он почти один в один копирует Ruby on Rails - те же хелперы, тот же yml в конфигах, такой же подход к MVC - в общем очень похоже.

Так вот, доблестные индийские программисты, вместо того, чтобы использовать оснастку из Symphony навставляли везде mysql_connect и mysql_query. И все бы ничего, но mysql_connect у них вставляется ВЕЗДЕ перед mysql_query — в одном скрипте может быть создано несколько десятков соединений, а каждый mysql_query дополняется проверкой "or die(mysql_error())", поэтому любая ошибка в sql ведет к скоропостижной кончине всего скрипта.

Чтобы хоть как то исправить это безобразие я сначала удалил все mysql_connect. Затем, все mysql_query поиском и заменой заменил на собственную функцию, использующую оснастку creole, поместил её в глобально видимый класс myTools::query():

static function query($sql){
         $connection = Propel::getConnection();
         $r = $connection->executeQuery($sql);
         return $r->getResource();
}

Странное дело код ведь тривиальный, но ресурс возвращаемый этой функцией оказался невалидным! Причем внутри функции ресурс еще остаётся рабочим а возвращённый во вне оказывается сломанным. Тот же код ВНЕ функции идеально работает, но как только выношу его в функцию — перестаёт работать.

Что это — глюк самого PHP или глюк Simphony я так и не понял, пришлось немного модифицировать класс MySQLConnection и добавить туда метод возвращающий MySQL ресурс непосредственно, минуя всякие PHP обёртки, но осадочек все же остался...

 

Оставить комментарий

 
  2011-07-09

Сагра

Молодцы, дали отпор бандитам, так держать! Хотя, если подумать, мужикам сильно повезло, что бандиты попались отмороженные - если бы те вели себя потише на подступах к деревне, может быть на колонну из пятнадцати машин никто бы ночью не обратил внимания и ситуация могла обернуться не так удачно.

 

 

 

Коментариев: 1

 
  2011-07-09

Как пережать видео из MiniDV

Друг скинул видео с камеры MiniDV на жесткий диск - всего оказалось несколько файлов в формате AVI общим объемом около пятидесяти гигабайт - встала задача собрать это все в один файл и пережать до более вменяемого размера.

Сначала собираем несколько файлов в один:

> mencoder -oac copy -ovc copy -o output.avi Видео1.avi Видео2.avi Видео3.avi

Пережимаем получившийся файл:

> ffmpeg -i output.avi -vcodec mpeg4 -acodec libmp3lame -b 700K -deinterlace video.avi

Битрейт, указанный в параметре -b подбирается эмпирическим путём, он определяет размер финального файла - чем больше битрейт тем лучше качество но больше размер файла, соответственно - чем меньше тем хуже качество и меньше размер.

 

Оставить комментарий

 
  2011-07-05

Какая гадость этот ваш WordPress!

Не спорю, штука прикольная, но уж больно архитектура у него специфическая:

  1. нет OOP: несмотря на то, что в системе вроде бы присутствуют классы - основная функциональнасть реализована на функциях;
  2. плохие привычки программирования: широко используются глобальные переменные;
  3. JavaScript ад: бардак со скриптами - доходит до того что каждый плагин тянет за собой собственный jquery или prototype;
  4. тем полно, но все кривые: темы сделаны по-идиотски - нет единого соглашения для создания тем, нет четкого разделения навигации и шаблонов - по сути вся навигация и функционал заложены в теме - а это половина движка;
  5. нет MVC: собственно нет шаблонов вообще - логика перемешана с HTML так не кодируют уже давно;
  6. SQL: движёк для работы с базой данных неплох - но он негибкий, заточен только под WP и только под MySQL;
  7. CMS: виджеты можно настраивать для всех страниц сразу, выборочно никак нельзя;
  8. низкое быстродействие: из-за навороченной системы фильтров и хуков в финале система получается тормозная и прожорливая;
  9. разработчики не подозревали о существовании других временных зонах кроме UTC: в коде жёстко прописано date_default_timezone_set('UTC');
 

Оставить комментарий

 
  2011-07-03

Обновил синфонию

Теперь сервисом можно пользоваться без регистрации с использованием одноразовых ключей.

Так как старая система регистрации осталась без изменений теперь мне кажется, что работа с системой стала несколько более сумбурной, попробую это исправить в будущем.

Кроме этого, сделал полноценный перевод на английский и добавил всяких поясняющих надписей.

 

Оставить комментарий

 
  2011-06-28

Как собрать идеальное IDE для себя

Всякий знает, что от того, какую IDE использует разработчик, напрямую зависит его продуктивность. Используя блокнот или Far - много не сделаешь.

Из доступных средств разработки на сегодняшний момент, не побоюсь этого слова — лучшей, является Eclipse. Все дело в том, что Eclipse является совершенно бесплатной и очень гибкой в настройке. Именно на базе Eclipse создано огромное количество "фиремнных" средств разработки таких как: Zend Studio, Flash Studio, Spring Source, Aptana Studio и еще куча других "студий". При внимательном рассмотрении все они оказываются старым добрым Eclipse. Какой еще проект может похвастаться таким большим количеством инкарнаций? Все дело в удивительной гибкости Eclipse и его модульности а также в удачном выборе программной платформы.

Eclipse совмещает в себе удобный язык программирования и быстрый нативный интерфейс. Eclipse написан на Java с использованием SWF. Язык Java используется миллионами разработчиков, а это значит большое количество людей могут писать под него плагины. SWF - делает его интерфейс гораздо быстрее, чем решения написанные с использованием, например, Swing - тот же NetBeans. Дело в том, что Swing попиксельно отрисовывает элементы управления средствами Java на чистом листе, в то время как SWF использует "родные" элементы управления операционной системы. Конечно, это накладывает ограничения на управление их внешним видом, но разработчикам нужно быстрое средство разработки а не красивый но медленный интерфейс.

Одной из самых интересных особенностей Eclipse является возможность собрать IDE под себя — установить на него только то, что необходимо здесь и сейчас. Причем, можно сделать несколько сборок под свои нужны и все эти сборки будут отлично работать на компьютере одновременно не конфликтуя. Например, можно собрать среду для программирования на PHP, среду для программирования на Си, среду для программирования под Android и так далее.

Что мне обычно нужно для комфортной работы с PHP проектами? Подсветка синтаксиса и подсказки для HTML, PHP, CSS, JavaScript, редактирование SQL файлов — не так уж и много.

Сборка отличного IDE для разработки под PHP на базе Eclipse займёт всего несколько минут:

1. Скачиваем Eclipse Classic под вашу операционную систему, распаковываем и запускаем Eclipse. На момент написания этого поста это версия 3.7 Indigo.

2. Идем в меню Help -> Install New Software, в появившемся диалоговом окне выбираем Work with: Indigo - http://download.eclipse.org/releases/indigo

3. В появившемся внизу списке компонентов выбираем:

- Database Development -> Data Tools Platform Enablement Extender SDK- позволит нам редактировать SQL файлы.
- Programming Languages -> PHP Development Tools (PDT) SDK Feature - набор для работы с PHP
- Web, XML, JavaEE and OSGi Enterprise Development ->Eclipse Web Development Tools - редактирование HTML, CSS файлов.
- Web, XML, JavaEE and OSGi Enterprise Development ->JavaScript Developemnt Tools - редактирование JavaScript файлов.
 
 
 
Далее, жмем на кнопку Finish и следуем инструкциям программы. Eclipse сама скачает и установит нужные компоненты и зависимости. По завершениии установки попросит перезапустить IDE и, вуаля - у нас есть все, что нужно для нормальной работы.
Конечно, данный список компонентов может быть расширен в соответствии с вашими персональными пристрастиями, тут каждый сам решает, что ему нужно.
 

Коментариев: 1

 
  2011-06-06

IPad Александра Грина

LLeo обнаружил что у Александра Грина был IPad. Он до сих пор лежит за стеклом в его доме-музее:

 

Оставить комментарий

 
  2011-06-04

Как изменить кодировку базы данных на UTF-8

Встала задача сконвертировать базу данных из latin1 в utf8. В интернете есть множестово рецептов как это сделать. Наиболее часто встречается PHP скрипт, который генерирует последовательность из ALTER TABLE комманд.

Мне такой способ показался несколько громоздким, гораздо проще сделать дамп базы данных, убрать из дампа всю информацию о кодировке столбцов, если такая имеется, изменить кодировку базы данных по умолчанию и залить дамп обратно. При этом все таблицы и столбцы примут ту кодировку, которая выставлена для базы данных в целом.

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

#!/bin/sh

DBNAME="yourdbname"
DBUSER="yourdbuser"
DBPASS="yourdbpassword"

mysqldump -u$DBUSER -p$DBPASS $DBNAME > $DBNAME.sql
sed 's/DEFAULT CHARSET=latin1//' $DBNAME.sql > ${DBNAME}_converted.sql
sed 's/CHARACTER SET latin1//' ${DBNAME}_converted.sql > ${DBNAME}_converted1.sql

mysql -u$DBUSER -p$DBPASS $DBNAME <<EOFMYSQL
ALTER DATABASE $DBNAME DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
EOFMYSQL

mysql -u$DBUSER -p$DBPASS $DBNAME < ${DBNAME}_converted1.sql

Исходная база была в latin1, если у вас другая кодировка, скрипт легко подправить.

 

Оставить комментарий