суббота
Интересный баг mysql

По долгу службы пришлось мне отправиться в длительную поездку. Компьютер с собой не возьмешь, и поэтому приспичило меня залить дамп базы Mysql на ноутбук с OpenSuSe 11.0. Dump отказался заливаться, ругнулся вот так:
ERROR 1221 (HY000) at line 3: Incorrect usage of UNION and INTO
Код хранимой функции был чистый, давным-давно вылизанный и ошибок в нем не было. Выяснилось, что на старых версиях mysql может не работать вот такая конструкция:
select 1 into @`avar` from (select 1 union select 1) `a`;
хотя сам запрос:
select 1 from (select 1 union select 1) `a`;
синтаксически правильный и имеет право на жизнь. Баг в конце концов поправили (подробности здесь), но в стандартных репозиториях OpenSuSe 11.0 (OSS, Non-OSS, Debug и Updates) версия mysql осталась старая, с багом.
Проблема лечится подключением репозитория MySQL и обновлением до последней версии сервера mysql.
Ярлыки: Linux, MySQL, Интересное
Что делать, если стащили пароли

Недавно с моим другом произошла неприятная история. Он где-то подцепил трояна, который спер пароли FTP доступа к одному из его сайтов, и в результате злоумышленник смог залить вредоносный код в html и js файлы на его VDS. Мы проблему определили довольно оперативно, и также быстро ее устранили.
Чтобы эта неприятная ситуация не повторялась, я написал маленький скриптик:
/usr/bin/find /home -mtime -1 -print | mail -s "Modified Files" root@localhost >/dev/null 2>&1
Он работает какое-то время, и пересылает на заданную почту список файлов, которые были изменены за последние сутки. В этом случае команда find просматривает все файлы рекурсивно, начиная с директории /home. Это выглдит примерно так:
/home/user1/data
/home/user1/data/logs
/home/user1/data/logs/site1.tld.access.log
/home/user1/data/logs/site2.tld.access.log
/home/user1/data/logs/site2.tld.error.log
/home/user1/data/logs/site2.tld.access.log.0.gz
/home/user1/data/logs/site3.tld.access.log.0.gz
/home/user1/data/logs/site3.tld.error.log
/home/user1/data/logs/site3.tld.access.log
/home/user1/data/logs/site1.tld.access.log.0.gz
/home/user1/data/logs/site3.tld.error.log.0.gz
/home/user1/data/etc
/home/user1/data/etc/site1.tld.webalizer.current
/home/user1/data/etc/site1.tld.webalizer.hist
/home/user1/data/etc/site3.tld.webalizer.current
/home/user1/data/etc/site3.tld.webalizer.hist
/home/user1/data/etc/site2.tld.webalizer.current
/home/user1/data/etc/site2.tld.webalizer.hist
/home/user1/data/www/site3.tld/webstat/usage.png
/home/user1/data/www/site3.tld/webstat/index.html
/home/user1/data/www/site3.tld/webstat/daily_usage_201001.png
/home/user1/data/www/site3.tld/webstat/hourly_usage_201001.png
/home/user1/data/www/site3.tld/webstat/usage_201001.html
/home/user1/data/www/site3.tld/webstat/ctry_usage_201001.png
/home/user2/data
/home/user2/data/logs
/home/user2/data/logs/user2.tld.error.log
/home/user2/data/logs/user2.tld.access.log
/home/user2/data/logs/user2.tld.error.log.0.gz
/home/user2/data/logs/user2.tld.access.log.0.gz
/home/user2/data/etc
/home/user2/data/etc/user2.tld.webalizer.current
/home/user2/data/etc/user2.tld.webalizer.hist
/home/user2/data/www/user2.tld/webstat/index.html
/home/user2/data/www/user2.tld/webstat/usage.png
/home/user2/data/www/user2.tld/webstat/daily_usage_201001.png
/home/user2/data/www/user2.tld/webstat/hourly_usage_201001.png
/home/user2/data/www/user2.tld/webstat/usage_201001.html
/home/user2/data/www/user2.tld/webstat/ctry_usage_201001.png
/home/user4/data/logs
/home/user4/data/logs/site3.tld.access.log
/home/user4/data/logs/site3.tld.access.log.0.gz
/home/user4/data/logs/site3.tld.error.log
/home/user4/data/etc
/home/user4/data/etc/site3.tld.webalizer.current
/home/user4/data/etc/site3.tld.webalizer.hist
/home/user4/data/www/site3.tld/webstat/index.html
/home/user4/data/www/site3.tld/webstat/usage.png
/home/user4/data/www/site3.tld/webstat/daily_usage_201001.png
/home/user4/data/www/site3.tld/webstat/hourly_usage_201001.png
/home/user4/data/www/site3.tld/webstat/usage_201001.html
/home/user4/data/www/site3.tld/webstat/ctry_usage_201001.png
Как видим, сейчас никакого криминала не наблюдается. Изменились только логи и статистика, что и должно происходить раз в сутки. Если же файлы поменялись без моего ведома, я это увижу. Скрипт можно запихнуть в cron, и запускать раз в сутки.
четверг
OpenSUSE 11.2 и видеокарта ATI Radeon x1650 Series

Я фигею, дорогая редакция! Со времен OpenSUSE 11.1 не так много воды утекло, однако изменения произошли кардинальные.
Во-первых, компания ATI выкинула поддержку карточки ATI Radeon x1650 Series из новейших родных дров. Последняя версия драйвера на Radeon x1650 на сегодняшний день датируется 26 марта 2009 года, и она не совместима с новейшим XOrg 7.4, используемым в OpenSuSe 11.2. Если пойти на хитрость, и скачать действительно последнюю версию драйвера (9.11) по прямой ссылке, то выяснится, что драйвер может заработать под новым XOrg, но не с этой карточкой (смотрим Release Notes). Когда будет сделана поддержка родных дров этой карты для OpenSuSe 11.2 - неизвестно.
Во-вторых, к счастью появился драйвер c открытым кодом под эту карточку, и он таки вошел в дистрибутив OpenSuSe 11.2. В нем даже реализована экспериментальная поддержка 3D ускорения, которая периодически работает, но пока что слишком глючно. Проверял на фильмах и играх - фильмы работают на ура в полноэкранном режиме; игры могут рушиться, если текстур в движке очень много. К примеру, Quake3 пошел без проблем (после обновления драйвера), TileRacer периодически сыпется с ошибкой Segmentation fault.
В-третьих, более-менее прямо сделана поддержка моей веб камеры, качество изображения в ней под линуксом значительно хуже чем под виндой, но все же она работает без ошибок и со Skype, и с Pidgin, и с Cheese.
Поддержка моей DVB карты Prof Revolution DVB-S2 7301 PCI не реализована родными драйверами, но они легко находятся здесь, огромное спасибо автору за качественные драйвера и патчи к ядру. Качаем исходники, собираем и ставим - все как обычно.
KDE4 мне показался сырым в этом дистрибутиве, и я перешел на Gnome, о чем пока ни разу не пожалел.
Ярлыки: Linux, Железо, Полезное
Аудио и видео звонки в Jabber

Собственно, предыстория здесь. Очень долгое время я искал джаббер-клиента под Linux, который бы позволял совершать голосовые и видеозвонки другим людям. Кроме древнего и уже почти мертвого проекта Jabbin, альтернатив не было. Потом появлялись полухакерские сборки Kopete с поддержкой jingle, которые были очень капризными. Но все это было не то.
Теперь же есть минимум 2 Open Source jabber клиента, которые могут совершать аудио и видеозвонки - это Empathy и Pidgin (начиная с версии 2.6.1)
Смутило вот что, когда ставишь эти клиенты через Yast, не все зависимости соблюдаются. Т.е. после установки работает только текстовый чат, но не голосовой и не видео.
Чтобы все заработало, надо установить следующие пакеты: gst-plugins-good, gst-plugins-bad, gst-ffmpeg (в OpenSuSe 11.2 они называются gstreamer-0_10-plugins-good, gstreamer-0_10-plugins-bad, gstreamer-0_10-ffmpeg). После установки перезапускаем джаббер-клиенты, вклюаем в pidgin плагин для аудио и видеозвонков и вуаля - все работает. Причем работать будет как в Empathy, так и в Pidgin
На вкус и цвет товарищей нет, но Pidgin IMHO лучше, чем Empathy - больше возможностей, плагинов и прочих фич
Ярлыки: Linux, Интересное, Полезное
суббота
Как скачать видео с сайта
Есть как минимум 4 разных способа сграбить видео с дружественных сайтов. Итак:
1. Воспользоваться сторонним сервисом, вроде этого: keepvid.com.
Плюсы: удобно; дружественный сайт не увидит ваш IP адрес.
Минусы: Зависимость от стороннего сервиса; не все сайты с видео поддерживаются
2. Использовать плагин в браузере, для Firefox это могут быть Download Helper, Flash Video Resources Downloader или подобная приблуда.
Плюсы: легко настраивается; несложно скачивать
Минусы: Firefox от плагинов жрет больше памяти; работает с небольшим числом сайтов
3. Записать все, что происходит на экране, в видеофайл. Для линуксоидов это совсем не сложно, куча бесплатных програм позволяет это делать. Например, RecordMyDesktop.
Плюсы: Работает железобетонно всегда и везде; Можно отключить звук при записи, или наложить свой; Видео можно записывать не только целиком, но и частями, обрезая всяческие логотипы, бегущие строки и прочий мусор; Можно записывать не только видео, но и движения курсора мыши, например.
Минусы: Требуется мощный компьютер, чтобы одновременно проигрывать видео и записывать его, ресурсы кушаются совсем не кисло; Качество записанного изображения может быть хуже, если число кадров в секунду в записываемом видео не совпадает с тем же параметром в проигрываемом ролике (т.е. требуется дополнительная настройка).
И на закуску, мой любимый способ:
4. Вытащить видео из кэша браузера Работает оно примерно так. Открываем интересующее нас видео:
Ждем, когда видео полностью загрузится, и лезем в /tmp , т.к. там Firefox хранит свой кэш. Вот что я нашел у себя:
ed@notebook:/tmp> ls -l Flash*
-rw------- 1 ed users 14196852 Ноя 7 14:35 FlashZlG62O
Копируем его куда-нибудь, и переименовываем в "The Unforgiven cover with solo - Metallica.flv" . Все, ролик можно смотреть оффлайн.
Плюсы: Не надо ничего дополнительно ставить, все работает и так. На всех сайтах, что я проверял, этот способ работает на ура.
Минусы: Надо напрягаться, копировать и переименовывать файл. Иначе рано или поздно кэш очистится и видео придется качать заново. Но этот недостаток не такой уж и страшный.
Ярлыки: Интересное, Музыкальный offtopic, Отдых, Полезное