Как пережать видео из 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 подбирается эмпирическим путём, он определяет размер финального файла - чем больше битрейт тем лучше качество но больше размер файла, соответственно - чем меньше тем хуже качество и меньше размер.
Как собрать идеальное 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 и, вуаля - у нас есть все, что нужно для нормальной работы.
- Конечно, данный список компонентов может быть расширен в соответствии с вашими персональными пристрастиями, тут каждый сам решает, что ему нужно.
Как изменить кодировку базы данных на 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, если у вас другая кодировка, скрипт легко подправить.
Leverage browser caching
Для того чтобы проверить есть ли у сайта узкие места можно воспользоваться мега полезной штукой Page Speed Plugin. Работает в chrome и firefox. Оказывается на большинстве сайтов по умолчанию не выводятся заголовки которые говорят браузеру как правильно кешировать ресурсы
На linode.com для решение проблемы добавил в httpd.conf следующее:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon "access plus 2 weeks"
ExpiresByType image/png "access plus 2 weeks"
ExpiresByType image/jpeg "access plus 2 weeks"
ExpiresByType image/gif "access plus 2 weeks"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
</IfModule>
На другом сервере указанное действо оказалось недостаточным пришлось добавить:
Header unset Pragma
FileETag None
Header unset ETag
И еще включил сжатие для некоторых файлов:
AddOutputFilterByType DEFLATE text/css application/x-javascript application/javascript