суббота
Интересный баг 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, Интересное
четверг
Аудио и видео звонки в 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, Отдых, Полезное
среда
Про eFax

Однажды мне понадобилось принять факс из далекого буржуинства. Разумеется, факса у меня дома в офисе не оказалось. Знакомых напрягать тоже не захотел, вот и воспользовался сервисом eFax. Они дают выделенный номер факса в городе по выбору (в US, UK и еще в куче стран), и на этот номер можно принять факс. Потом факс отправляется на указанный при регистрации email. И что самое интересное, у них есть free 30 days trial, типа если не нравится - откажитесь в любой момент, денег с вас не возьмем.
При регистрации они спрашивают персональные данные и номер банковской карты. Карта нужна реально существующая, поскольку они ее проверяют. У меня напрмер они заблокировали 1 рубль на карте для проверки, и только после этого разрешили воспользоваться их сервисом.
И вот свершилось, заветный факс пришел по почте. А вот чем читать его - хз, файл был с расширением .efx. Как выяснилось, читать такие факсы может только их софтина (efax messenger), которая работает только под виндой и под Mac OS. Так что пришлось скачивать этот троян эту программу, иначе факс просто не прочитать и не сконвернтнуть в TIF. Кстати, на сайте можно в настройках сразу указать, что факсы должны быть в формате TIF, тогда читать их можно будет чем угодно; но я об этом узнал уже после того, как получил файл в efx.
Но самое интересное началось, когда я решил отказаться от услуг этого сервиса. Нигде в админке такой возможности не предусмотрено, для подачи запроса на закрытие аккаунта надо связаться напрямую с саппортом. Погуглив, нашел ссылку, где можно начать процесс отказа от услуг efax. Дальше начался футбол, ибо американский саппорт якобы не смог посмотреть мой акк, он направил меня в саппорт в UK. А в UK саппорт общается только по телефону, да еще и с shared cost, где звонок значительно дороже звонка на обычный телефон. К примеру, 2.5 минуты общения с саппортом мне обошлись примерно в пол евро; это при том, что звонок в Лондон через Skype на обычный городской телефон обойдется в 2 евроцента за минуту со всеми налогами.
Английский саппорт (как и американский) сразу отказ не принимает, обязательно спрашивает о причинах отказа от сервиса. Я им сказал, что для того, чтобы пользоваться их софтиной, надо ставить винду. А так, как я сижу под линуксом, не имею возможности пользоваться вашим приложением. Такой ответ саппорт устроил, и сегодня я получил уведомление о закрытии своего аккаунта
В целом, сервис неплохой для тех, кто регулярно отправляет и получает факсы. Но мне он оказался ни к чему, хотя для разового приема факса он вполне сгодится
Ярлыки: Интересное
вторник
OpenSUSE, Skype и отправка SMS

На сегодняшний день последней версией скайпа для OpenSUSE является версия 2.0.0.72. Возможность отправлять СМСки в скайпе появилась только с версии 2.5, но как оказалось, отправить SMS можно и из OpenSUSE, и из Ubuntu с использованием Skype API on Linux.
Для того, чтобы заработала отправка SMS, надо установить сам Skype, а также Python wrapper Skype4Py, и утилиту Skysentials.
После запуска видим Skysentials видим вполне интуитивно понятную тулзу для отправки SMS:

Отправка СМС не бесплатная, но сопоставима по стоимости с отправкой с мобильника. А с учетом того, что сейчас скайп активно рассылает ваучеры на пополнение баланса, можно и попробовать.
Я испытал это чудо буржуйской техники, и выяснил две вещи.
Ярлыки: Linux, Интересное, Полезное
воскресенье
Балансировка нагрузки с помощью nginx
Наш проект давно уже перерос возможности одного сервера, и совсем недавно мы решили собрать кластер из нескольких вебсерверов и центрального сервера с базой данных. Как я уже писал, простое включение nginx в качестве проксирующего вебсервера уже значительно облегчает жизнь, но nginx может раскидывать запросы и по нескольким серверам. Вот пример такой конфигурации:
upstream backend {
server 192.168.1.1:8080;
server 192.168.1.2:8080;
server 192.168.1.3:8080;
}
server {
listen 80;
server_name somedomain.tld;
location ~* \.()$ {
root /home/username/data/www/somedomain.tld; }
location / {
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_connect_timeout 30s;
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* /.(jpg|jpeg|gif|png|css|mp3|avi|mpg|txt|js|jar|rar|zip|tar|wav|wmv)$ {
root /home/username/data/www/somedomain.tld;}
}
В этом случае все запросы будут равномерно раскидываться между серверами с внутренними айпишниками 192.168.1.1- 192.168.1.3
Проблемы начнутся, если сайт хранит сессии в файлах. Разумеется, при перенаправлении запроса на другой сервер файл сессии на нем не будет найден, и сайт будет работать некорректно, поэтому придется хранить сессии в базе данных.
Ярлыки: Интересное
Я в восторге от Google App Engine

Не так давно я обратился в истинную веру стал изучать Python, и как оказалось, не зря. Питон уже давно успешно используется Гуглом в качестве одного из официальных языков разработки веб-приложений, и на сегодняшний день это один из двух языков, на котором легко пишутся приложения для Google App Engine (второй язык - Java)
Гугл предлагает хостить такие приложения совершенно бесплатно. Те, кто в этом шарит, может слепить весьма достойные приложения. Хостинг этот весьма необычный, нет привычного доступа по FTP, SSH; все делается через консоль установленного фреймворка. Статику заливать можно, использовать БД - тоже. Но это будет не привычная всем MySQL или Oracle, это какая-то своя гугловская хитрая база данных, к которой можно строить запросы с помощью GQL, в чем-то похожий на привычных нам SQL.
Дело было вечером, и вместо скачивания фильмов из сети, исключительно интереса ради я решил написать на Python игру "Угадай число" и выложить ее на бесплатный гуглохостинг. На нем все работает также стабильно, как и дома.
Интересно то, что к бесплатному хостингу от гугла запросто можно прикрутить свой домен и хостить свои разработки, не нагружая свой VDS. При всем уважении к хостеру, вряд ли по надежности он сравнится с бесплатным хостингом от Google.
Ярлыки: Интересное, Полезное
вторник
Управление браузером и написание сетевых ботов

Большинство сетевых ботов легко пишутся на Perl с использованием библиотеки WWW::Mechanize или LWP::UserAgent. Но начинаются проблемы, если целевая страница построена на AJAX, поскольку Mechanize не умеет обрабатывать Javascript.
Победить эту проблему можно, заставив обычный браузер делать то, что нужно программе. Для программистов под Windows есть модули Win32::IE::Mechanize, который худо-бедно, но все же управляет ослом и заставляет его лазить по интернету. С юниксовыми ботами несколько сложнее, поскольку браузеры приходится контролировать или через плагины, или через инъекции управляющего Javascript.
Из бесплатных инструментов мне больше всего понравились Selenium Remote Control и Watir. Первый кроссплатформенный, может стыковаться с любым языком программирования и работает практически с любым браузерами на инъекциях Javascript. Но он довольно сложен в настройке и запросто может глючить на формах, содержащих много скриптов.
Watir же может управлять только лисой, и только через плагин, который доступен для скачивания на официальном сайте. Watir не очень хорошо работает с фреймами, но зато не засоряет код полученной страницы дополнительными скриптами. Правда, у этой системы есть один недостаток, она работает только с Ruby (есть еще порт на Java, проект Watij).
Ярлыки: Интересное
пятница
Все-таки оптимистов больше, чем пессимистов
понедельник
ICQ? Jabber? Skype!
Для общения с коллегами я раньше использовал только ICQ. Но с тех пор, как у меня стали появляться заказчики с RentACoder, мне пришлось использовать и другие способы связи.
Удивительно, но аська популярна в основном у нас, на пространстве бывшего СССР. Большинство буржуинов из моего контакт-листа используют Yahoo! Messenger, значительная часть пользуется MSN Messenger А вот Jabber'ом пользуются единицы, несмотря на все преимущества этого протокола обмена сообщениями.
Компания AOL частенько портит кровь пользователям альтернативных клиентов ICQ, меняя протокол сообщений, что приводит к неработоспособности клиентов вроде QIP. Последняя гадость от AOL случилась 21 января, и затронула значительную часть людей из моего контакт-листа. Поэтому я и стараюсь перевести все свои контакты на другие протоколы обмена сообщениями.
Пока мне больше всего нравится Jabber, но им пользуются единицы. Есть даже Jabber-клиенты с возможностью голосового чата, например Google Talk и Jabbin. Ho так как я пользуюсь OpenSUSE, Google Talk мне не подходит. А Jabbin как проект, к сожалению, заглох. Последнее обновление программы было в 2006 году. Нормальных джаббер-клиентов с поддержкой голосового или видео чата не нашел, поэтому и пришлось поставить Skype и Gizmo.
Голосовой чат бесспорно, удобен. Не надо топтать клаву и постоянно пялиться в монитор. Голосовое и видеообщение с компьютера на компьютер и там, и там бесплатное. Ну а за звонок на обычный телефон не грех и заплатить.
Ярлыки: Интересное
пятница
Paypal заговорил по-русски

Ну что же, теперь среди доступных языков в интерфейсе Paypal появился и русский. Для того, чтобы проклятые буржуины перестали нас считать страной третьего мира, осталось сделать совсем немного: включить возможность приниема платежей для граждан бывшего СССР.
Для работы с Paypal вполне подходят карты Visa Virtuon и Visa E-C@rd банков ВТБ и ВТБ24; не тратьте деньги на более дорогие карты, поскольку карты Visa Classic от ВТБ и ВТБ24 с Paypal не работают.
Ярлыки: Интересное
суббота
Про Goolge AJAX API

Недавно открыл для себя Goolge AJAX API. Оказалось очень полезной штукой; например, можно легко и красиво построить список последних записей блога (смотрим в левый верхний угол), или встроить в страничку переводчик с поддержкой кучи языков. Еще большие чудеса можно вытворять с поиском в Google, в том числе и с поиском по картинкам. Но самое главное, что использование этого API практически не нагружает сервер, поскольку оно все построено на Javascript, выполняется на стороне клиента, а серверная часть скрипта выполняется где-то в Google. Это идеальное средство для украшательства страниц на не очень мощных и недорогих VDS.
Термсы Google не всегда позволяют использовать API так, как нам хочется. Но ничто не запрещает сделать для себя нечто аналогичное и заточить под свои нужды, большую часть кода видно невооруженным глазом.
Ярлыки: Интересное, Программирование, Юзабилити
среда
Полезные сервисы для работы с YouTube
Ролики с YouTube на низкой скорости через браузер просто невозможно смотреть, постоянно воспроизведение запинается и ждет докачки остальной части ролика.
Еще один полезный сервис Gickr позволяет из роликов YouTube делать анимированные GIFы.
Ярлыки: Интересное
воскресенье
MD5 умер. Уязвимость не позволяет его использовать как hash-функцию для проверки целостности программы или подписывания кода.
Однако, недавние исследования показали, что и этот алгоритм несовершенен.
Суть эксперимента заключалось в создании двух разных программ, с разными названиями и разной функциональностью; но с одинаковой сигнатурой MD5.
Они взяли MS Visual C++ в качестве компилятора, и написали 2 простейших программы; скомпилировали их и получили 2 исполняемых файла с одинаковой сигнатурой. Исходный текст программы, исполняемые файлы и ключи шифрования доступный по ссылке, приведенной выше; все желающие могут самостоятельно проверить, что сигнатуры этих файлов совпадают.
Таким образом, злоумышленники при серьезном подходе в любой бинарник смогут зашить вирус/троян/или еще какую-нибудь гадость, и измененный бинарник пройдет проверку подписи MD5.
Будте внимательны, и старайтесь не устанавливать программ, сигнатура которых рассчитана с помощью MD5. Сигнатуры SHA-1 на сегодняшний день являются менее уязвимыми для атак, чем сигнатуры MD5; учтите это при установке сторонних программ.
Ярлыки: MD5, Интересное, Криптография
