понедельник, 4 октября 2010 г.

Инсталяция Android SDK под Eclipse Helios

Шаг 1. Инсталяция Android SDK

Первым действием устанавливаем пакет Android SDK starter package. Скачиваем версию для Linux по ссылке http://developer.android.com/sdk/index.html, далее разархивируем пакет в отдельный каталог и прописываем путь ко всем утилитам пакета в PATH
export PATH=${PATH}:/tools
Шаг 2. Инсталяция ADT плагина для работы в Eclipse

Запускаем Eclipse, в меню выбираем Help / Install New Software прописываем в качестве адреса для установки https://dl-ssl.google.com/android/eclipse/, отмечаем галочкой все, соглашаемся с лицензией и со всем остальным, ждем окончания инсталяции софта и перегружаем Eclipse.
Не забыть прописать в Preferences путь к Android SDK!

Шаг 3. Инсталяция платформы разработки

В меню Eclipse выбираем последовательно Window/ Android SDK and AVD Manager, затем в левой панели выбираем Available Packages. В списке доступных пакетом отмечаем версию SDK Platform Android X.Y для инсталяции и последующей работы. Ждем окончания.
Готово! Можно приступать приступать к тестированию. Например, вывести бессмертный Hello, World!

вторник, 11 мая 2010 г.

Chrome JS Error ReferenceERror: doIt is not defined

Если отлаживая Javascript на своем сайте вы уже столкнулись мистической ошибкой "doIt is not defined", безуспешно не можете отыскать ее в в недрах чужого (или хуже своего) кода и уже оглядываете рабочий стол на предмет магического бубна, то этот совет наверняка окажется полезным. ;-)

Оказывается, эту ошибку вызывает один из экстеншенов Chrome, а именно, Chrome SEO. Если отключить его, то ошибка пропадает бесследно.

пятница, 7 мая 2010 г.

Пара замечаний по настройке Apache после перехода на Ubuntu 10.04

После конфигурации виртуальных хостов рабочих проектов и перезапуска Apache вижу в консоли следующие предупреждения:
noe@studio:~/etc/apache2$ sudo apache2ctl restart
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Fri May 07 22:09:13 2010] [warn] VirtualHost 127.0.0.1:80 overlaps with VirtualHost 127.0.0.1:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Fri May 07 22:09:13 2010] [warn] NameVirtualHost *:80 has no VirtualHosts

Вижу, что Apache перегрузился и работает нормально, но меня абсолютно не устраивают вывод предупреждений всякий раз, когда я буду перезапускать сервер.

Could not reliably determine the server’s fully qualified domain name

Проблема решается просто, добавлением строки "ServerName localhost" в файл /etc/apache2/httpd.conf

NameVirtualHost *:80 has no VirtualHosts

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

За подсказки спасибо авторам Jeremy Kendall, Mohamed Aslam и Ивану

четверг, 6 мая 2010 г.

UPDATE + JOIN + COUNT() в MySQL

Сегодня столкнулся с проблемой. Данные одной таблицы надо обновить данными тз другой таблицы с учетом статуса в третьей ;-)

Недолго думая написал следующий скрипт:
UPDATE `tags` AS t
LEFT JOIN `auction_tags` AS at ON t.id = at.tag_id
INNER JOIN `auctions` AS a ON a.id = at.auction_id AND a.status = 'active'
SET t.auctions_count = COUNT(at.auction_id)
Не прошло. :-( Оказывается такая конструкция инструкции UPDATE не допускает использование функции COUNT(). После получасового общения с всемирным разумом посредством Google был найден неожиданный вариант выполняющий ту же самую работу:
UPDATE `tags` AS t
SET t.auctions_count = (
SELECT COUNT(at.auction_id)
LEFT JOIN `auction_tags` AS at ON t.id = at.tag_id
INNER JOIN `auctions` AS a ON a.id = at.auction_id AND a.status = 'active'
)
Хм, век живи -век учись...

суббота, 6 марта 2010 г.

Инсталяция и использование FFmpeg с применением x264

Несмотря на то что FFmpeg и x264 доступны в репозиториях Ubuntu, на все равно придется скомпилить их самостоятельно. В дальнейшем, чтобы предотвратить замещение скомпилированных нами программ новыми из стандартных репозиториев Ubuntu, не забудьте зафиксировать полученную версию с помощью программы обновлений synaptic.

Шаг 1. Зависимости

Удалим x264, libx264-dev и ffmpeg если они были установлены ранее:
sudo apt-get remove ffmpeg x264 libx264-dev
Установим пакеты необходимые для компиляции x264 и ffmpeg:
sudo apt-get update
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libx11-dev libxfixes-dev libxvidcore4-dev zlib1g-dev
Шаг 2. Инсталяция x264

Скачиваем исходные тексты программ с официального x264 git репозитория, компилируем и устанавливаем видео кодек:
cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`+`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default
Шаг 3. Инсталяция libtheora

Для поддержки OGG файлов скомпилируем Theora видео кодек, поскольку тот что находится в репозиториях Ubuntu слишком старый для использования. Иначе при компиляции ffmpeg надо исключить опцию --enable-libtheora:
sudo apt-get install libogg-dev
cd
wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
tar xzvf libtheora-1.1.1.tar.gz
cd libtheora-1.1.1
./configure --disable-shared
make
sudo checkinstall --pkgname=libtheora --pkgversion "1.1.1" --backup=no --default
Шаг 4. Инсталяция ffmpeg

Для установки FFmpeg берем текущую версию с официального FFmpeg svn репозитория. Запустив в консоли "./configure --help" вы можете включить или выключить те или иные опции при компиляции программы:
cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`" --backup=no --default
hash ffmpeg
Использование FFmpeg и x264

One-pass CRF (Constant Rate Factor) Однопроходное slow (медленное) перекодирование файла с постоянным коэфициентом сжатия, задаваемое параметром -crf. Меньшее значение повышает качество выходного видео файла, но увеличивает его физический размер. Нормальный диапазон от 18 до 28.
ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -crf 22 -threads 0 output.mp4

Two-Pass encode. Кодирование с опцией fast (быстрое) происходит в два этапа и используется для получения фиксированных размеров битрейта или выходного файла:
ffmpeg -i input.avi -pass 1 -vcodec libx264 -vpre fast_firstpass -b 512k -bt 512k -threads 0 -f rawvideo -an -y /dev/null && ffmpeg -i input.avi -pass 2 -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre fast -b 512k -bt 512k -threads 0 output.mp4
iPod 640x480 использует slow и ipod640 параметры:
ffmpeg -i input.avi -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre slow -vpre ipod640 -crf 26 -threads 0 -f ipod output.mp4

четверг, 4 марта 2010 г.

Синхронизация Tomboy с помощью Dropbox

Dropbox - это один из моих любимых онлайн сервисов, на который я прочно подсел за последний год. Несложный и простой в использовании сервис легко интегрируется c Linux, Mac и Windows и позволяет синхронизировать файлы между компьютерами. Можете считать этот сервис большой "флэшкой" предоставленной вам "на халяву".

Сервис обычно используют для хранения документов или обмена файлами с друзьями, но его можно также приспособить для хранения ваших настроек программ синхронизированых между всеми вашими компьютерами. Возьмите к примеру Tomboy - замечательная программа представлющую смесь блокнота и вики. Идеальное средство для ведения заметок на десктопах Ubuntu, но мне всегда было обидно, что эти заметки так трудно синхронизировать между машинами. С Dropbox, это решается удивительно просто.

Если вы еще не пользователь Dropbox, то самое время регистрироваться на сайте https://www.dropbox.com. По окончанию инсталяции программы в вашем домашнем каталоге появится новая директория "Dropbox". Все файлы внутри ее будут автоматически синхронизироваться с Dropbox и с другими компьютерами, на которых вы установите приложение.


Теперь, когда Dropbox установлен, просто создайте каталог под названием "tomboy" (или как-то иначе) внутри вашей директории Dropbox. Затем в настройках Tomboy, нажмите на вкладку "Synchronization" и выберите "Local Folder" и укажите путь к папке "tomboy".

Чтобы синхронизировать ваши заметки, просто нажмите "Tools" и "Syncronize Notes" в верхней части любой записки Tomboy ... и все! Повторите эти действия на всех других компьютерах, и вы теперь имеете полностью синхронизированые Tomboy Notes на всех ваших компьютерах. Это также защищает вас от случайной потери данных, и даже если что-то случится с вашим компьютером, вы всегда будете иметь копию сохраненных в Dropbox.

понедельник, 22 февраля 2010 г.

Установка javaplugin для Google Chrome

Насколько я в курсе, Google Chrome не "дружит" с openjdk icedtea, а вот плагин от sun java 1.6 можно подключить без проблем.
$ aptitude install sun-java6-plugin
$ mkdir /opt/google/chrome/plugins/
$ cd /opt/google/chrome/plugins/
$ ln -s /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
Запускаем Google Chrome, тестируем...

четверг, 18 февраля 2010 г.

Google Chrome: Как отключить javascrpt в Chrome

Современные браузеры по умолчанию все поддерживают javascript. И Google Chrome или Chromium здесь не исключение, но если все же понадобится отключить эту функциональность, то можно просто запустить браузер из консоли с параметром -disable-javascript.
$ chromium-browser -disable-javascript
Тестировал на браузерах Chrome, версия 5.0.307.9 beta, и Chromium, версия 5.0.330.0 (39184) Ubuntu. Трюк работает только в Chromium.

Из других возможных параметров, найденных на просторах интернета:
-disable-images
-disable-java
-disable-plugins
-disable-popup-blocking
-start-maximized


Сработал только -start-maximized и только с Chromium.

PS. Параметр -disable-images работает с Chrome и не работает с Chromium. ;-)