суббота

 

Что делать, если стащили пароли

Компьютерная безопасность

Недавно с моим другом произошла неприятная история. Он где-то подцепил трояна, который спер пароли 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 logo

Я фигею, дорогая редакция! Со времен 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, о чем пока ни разу не пожалел.

Ярлыки: , ,


 

Аудио и видео звонки в Jabber

Pidgin Logo

Собственно, предыстория здесь. Очень долгое время я искал джаббер-клиента под 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 - больше возможностей, плагинов и прочих фич

Ярлыки: , ,


суббота

 

Как скачать видео с сайта

Есть как минимум 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" . Все, ролик можно смотреть оффлайн.

Плюсы: Не надо ничего дополнительно ставить, все работает и так. На всех сайтах, что я проверял, этот способ работает на ура.

Минусы: Надо напрягаться, копировать и переименовывать файл. Иначе рано или поздно кэш очистится и видео придется качать заново. Но этот недостаток не такой уж и страшный.

Ярлыки: , , ,


пятница

 

OpenSuSe 11.0 Настрока раскладки клавиатуры

Эти настройки желательно делать сразу, чтобы потом не было мучительно больно за бездарно потраченное время проблем с общением на разных языках. А спохватился я тогда, когда в одном окошке Skype общался с заказчиком, а в окошке Jabber'а с одним из субподрядчиков; заказчик шпрехает только на рiдной аглицкой мове, подрядчик же в основном по-русски говорит когда трезвый. И так задолбало меня переключение языка клавы, что я решил разобраться, можно ли привязать язык клавиатуры к конкретному окну в KDE.

Теоретически все просто, идем в Настройки рабочего стола Центра управления КДЕ, где методом научного тыка попадаем в раскладки клавиатуры:

Настройка раскладки клавиатуры в OpenSuSe 11.0 KDE 3.5.9, часть 1
Настройка раскладки клавиатуры в OpenSuSe 11.0 KDE 3.5.9, часть 2
Настройка раскладки клавиатуры в OpenSuSe 11.0 KDE 3.5.9, часть 3

Картинка 1, вопрос - а нахрена зачем я добавил вторую раскладку клавиатуры, если раскладка RU поддерживает латиницу? А оказывается, если оставить в настройках только одну раскладку клавиатуры (как у меня и было сделано), то рисунок на картинке 2 никогда бы не получился. При сохранении настроек политика переключения автоматически слетала в "Глобально", а не оставалась в состоянии "Окно". И следовательно, каждое переключение языка отражалось на всех открытых окнах. Отсюда и все проблемы с переключением клавы.

Ярлыки: ,


суббота

 

Настройка проводного интернета от Билайн в OpenSuSe

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

Интернет от Билайна настраиваится легко под виндой, но вот со всяческими линуксами он дружить совершенно не хочет. На официальном сайте у них есть только настройки под винду да под Mac OS, и например настроить его под SuSe оказалось непросто.

Всем линуксоидам, на кого свалилось несчастье в виде интернета от Билайн, советую почитать вот эти топики:

  • http://homenet.corbina.net/index.php?showtopic=204977
  • http://homenet.corbina.net/index.php?showtopic=171860
  • и вообще посмотреть всю ветку:
  • http://homenet.corbina.net/index.php?showforum=629

  • Я у себя настроил интернет без использования kvpnc. Я так и не раскопал, как в нем можно отключить буферизацию pptp. А с включенной буферизацией иногда происходили непонятные тормоза в работе. И еще, MTU пришлось выставить ниже 1500, поскольку с MTU 1500 довольно большой процент пактов пропадал и довольно много сервисов переставало работать.

    В общем, интернет от Билайна мне не понравился. Геморрой с настройкой слишком большой, чтобы я и дальше пользовался услугами этого провайдера.

    P.S. Я тут из Черногории недавно вернулся, начинаю потихоньку выкладывать материалы о поездке.

    Ярлыки: ,


    понедельник

     

    Как подружить вебкамеру Genius e Messenger 112 и OpenSUSE

    Genius e-Messenger 112, отвратительная веб-камера

    Вебкамера Genius e Messenger 112 одна из самых дешевых, и одна из самых хреновых. Родные драйвера есть только под винду, а под linux она без напильника и танцев с бубном работать не желает.

    Итак, если вы счастливый обладатель OpenSUSE версии до 11.1 (версия ядра до 2.6.27), то камеру завести относительно несложно. Надо установить пакет gspcav, наложить на него патч, собрать и установить модуль gspca — камера заведется без проблем.

    Но если вы несчастный обладатель самого глючного дистрибутива OpenSUSE, ваши беды не закончились на его установке. Дело в том, что начиная с версии ядра 2.6.27 программисты решили вымахнуться и перенесли поддержку драйверов gspca из отдельного пакета в состав ядра. И разумеется, прозевали поддержку этой злосчастной камеры. Правда, пообещали, что начиная с версии ядра 2.6.28 эта камера будет работать.

    Но на сегодняшний день последней версией ядра для OpenSUSE 11.1 является 2.6.27, поэтому или придется драйвер собрать руками, или скачать / ждать новую версию ядра. Ждать мне было лень, поэтому я скачал исходники ядра, и поправил файл gspca_pac207.c, дописав одну выделенную строчку:



    528 static const __devinitdata struct usb_device_id device_table[] = {
    529 {USB_DEVICE(0x041e, 0x4028)},
    530 {USB_DEVICE(0x093a, 0x2460)},
    531 {USB_DEVICE(0x093a, 0x2463)},
    532 {USB_DEVICE(0x093a, 0x2464)},
    533 {USB_DEVICE(0x093a, 0x2468)},
    534 {USB_DEVICE(0x093a, 0x2470)},
    535 {USB_DEVICE(0x093a, 0x2471)},
    536 {USB_DEVICE(0x093a, 0x2476)},
    537 {USB_DEVICE(0x093a, 0x2472)},
    538 {USB_DEVICE(0x2001, 0xf115)},
    539 {}
    540 };

    Модуль собрался, и заработал, но с глюками. Cheese, Skype работают нормально, а вот camorama не завелась. Яркость изображения регулируется с помощью v4lctl, а вот как регулировать контрастность или цветовой баланс — хз. В старой версии ядра таких проблем не было.

    Ярлыки: ,


    вторник

     

    OpenSUSE, Skype и отправка SMS

    Skype Logo

    На сегодняшний день последней версией скайпа для OpenSUSE является версия 2.0.0.72. Возможность отправлять СМСки в скайпе появилась только с версии 2.5, но как оказалось, отправить SMS можно и из OpenSUSE, и из Ubuntu с использованием Skype API on Linux.

    Для того, чтобы заработала отправка SMS, надо установить сам Skype, а также Python wrapper Skype4Py, и утилиту Skysentials.

    После запуска видим Skysentials видим вполне интуитивно понятную тулзу для отправки SMS:


    Отправка СМС из скапа под линуксом

    Отправка СМС не бесплатная, но сопоставима по стоимости с отправкой с мобильника. А с учетом того, что сейчас скайп активно рассылает ваучеры на пополнение баланса, можно и попробовать.



    Я испытал это чудо буржуйской техники, и выяснил две вещи.


  • Отправка СМС отлично работает под OpenSUSE, только вот Skype4Py пришлось чуть-чуть напильником доработать (в первой строчке заменить python2.5 на python2.6)
  • СМС в Черногорию отправить нельзя.
  • Ярлыки: , ,


    воскресенье

     

    Я в восторге от Google App Engine

    Логотип Google App Engine

    Не так давно я обратился в истинную веру стал изучать Python, и как оказалось, не зря. Питон уже давно успешно используется Гуглом в качестве одного из официальных языков разработки веб-приложений, и на сегодняшний день это один из двух языков, на котором легко пишутся приложения для Google App Engine (второй язык - Java)

    Гугл предлагает хостить такие приложения совершенно бесплатно. Те, кто в этом шарит, может слепить весьма достойные приложения. Хостинг этот весьма необычный, нет привычного доступа по FTP, SSH; все делается через консоль установленного фреймворка. Статику заливать можно, использовать БД - тоже. Но это будет не привычная всем MySQL или Oracle, это какая-то своя гугловская хитрая база данных, к которой можно строить запросы с помощью GQL, в чем-то похожий на привычных нам SQL.

    Дело было вечером, и вместо скачивания фильмов из сети, исключительно интереса ради я решил написать на Python игру "Угадай число" и выложить ее на бесплатный гуглохостинг. На нем все работает также стабильно, как и дома.

    Интересно то, что к бесплатному хостингу от гугла запросто можно прикрутить свой домен и хостить свои разработки, не нагружая свой VDS. При всем уважении к хостеру, вряд ли по надежности он сравнится с бесплатным хостингом от Google.

    Ярлыки: ,


    понедельник

     

    Экспорт баз MySQL

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

    mysqldump -u username -p db_name --routines --extended-insert >dump.sql

    Ярлыки: ,


    воскресенье

     

    Как получить список дат в mysql

    Однажды мне потребовалось получить список дат на каждый день 2009 года. Как оказалось, в mysql такой список получить очень просто.

    Для этого нужна всего лишь любая таблица, в которой есть не меньше 365 строк. У меня такая таблица была, и называется она games. Скрипт выглядит так:


    SET @rownum:=0;
    select adddate('2008-12-31',interval @rownum:=@rownum+1 DAY) next_date from games limit 0,365;

    Ярлыки: ,


    суббота

     

    OpenSuSe 11.1: Самый глючный дистрибутив всех времен и народов

    OpenSuSe Logo

    Не так давно я обновлял систему с OpenSuSe 11.0, как обычно, запустив обновление. После него отказались работать X, mplayer не показывал фильмы в fullscreen mode и творилось много неприятного. В связи с чем было принято решение снести все нафиг и поставить OpenSuSe 11.1, ведь в прошлый раз все произошло безболезненно.

    Однако, проблемы начались сразу после установки. KDE4 оказался зело глючный, по крайней мере в без напильника многое работать не стало. Например, kget отказывался скачивать поставленные в очередь файлы, akregator рушился при добавлении RSS лент в ридер.

    В связи с чем я и переставил систему на SuSe 11.1 с KDE 3.5. Но на этом мои злоключения не закончились. Хроническая болезнь всех видеокарт ATI продолжается вместе с любым дистрибутивом линукса. Каждая инсталляция превращается в головную боль, поскольку система с упорством маньяка ставит глюкавый драйвер radeonhd, вместо родного ATI-шного fglrx.

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

    Но это все лирика. Установка драйверов старым добрым способом, описанным для SuSe 10.3, не дала желаемый результат. Драйвер встал, но 3D ускорение работало из рук вон плохо.
    Симптомы были такие:


    > glxinfo | grep direct
    direct rendering: Yes

    glxgears показывал порядка 300 кадров в секунду (что для карты с ускорителем и для маленького окошка слишком мало).

    fgl_glxgears не запускался, рушился с вот такой ошибкой:
    X Error of failed request: GLXUnsupportedPrivateRequest

    Лечится просто, надо в .bashrc дописать вот такую строчку:
    export LD_LIBRARY_PATH=/usr/X11R6/lib:$LD_LIBRARY_PATH
    и перелогиниться после этого.

    Сразу заработал fgl_glxgears и Quake3, и жизнь снова стала прекрасна и замечательна... казалось бы.

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

    В файле /etc/X11/xinit/xinitrc.common надо закомментировать строчки 103 и 104:


    xdpyinfo | grep -q "X.Org version: 6.9.0" || \
    setxkbmap -print | xkbcomp - $DISPLAY

    Это сильно облегчит жизнь при настройке клавиатуры через Sax2, официально зарегистрированный баг SuSe 11.1: https://bugzilla.novell.com/show_bug.cgi?id=432627

    Ну и еще одна серьезная пакость была в этом дистрибутиве, после установки SuSe 11.1 перестал работать звук. Эти товарищи включили кривой набор пакетов ALSA, в результате чего и звук пропал. Лечится обновлением драйверов до последней версии:


    zypper ar http://download.opensuse.org/repositories/multimedia:/audio/openSUSE_11.1/ multimedia

    zypper install alsa alsa-utils alsa-tools alsa-firmware libasound2

    zypper rr multimedia

    далее в зависимости от ядра, выполняются следующие команды:

    zypper ar http://download.opensuse.org/repositories/multimedia:/audio:/KMP/openSUSE_11.1/ multimedia

    zypper install alsa-driver-kmp-default

    zypper rr multimedia

    (для ядра kernel 2.6.27.7_9.1-1.1-default i386 or x86_64 GNU/Linux (openSUSE-11.1)

    или

    zypper ar http://download.opensuse.org/repositories/multimedia:/audio:/KMP/openSUSE_11.1/ multimedia

    zypper install alsa-driver-kmp-pae

    zypper rr multimedia

    (для ядра с kernel 2.6.27.7_9.1-1.1-pae i386 GNU/Linux (openSUSE-11.1)

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

    Ярлыки: , ,


    воскресенье

     

    Прикручиваем Paypal для оплаты

    Одной из самых популярных платежных систем в буржунете является Paypal. Поэтому желающие прикрутить ее к своему сайту для оплаты товаров и услуг встречается очень часто на любом фрилансерском сайте, например, на RentACoder. Но так, как россиянам Paypal разрешает иметь только send only аккаунты, у нас эта платежная система не прижилась.

    Сделать кнопку «Buy now» совсем не сложно, это простейшая форма вот такого вида:

    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="paypal@site.com">
    <input type="hidden" name="item_name" value="Buy Online Access to BlahBlahBlah.com">
    <input type="hidden" name="amount" value="10.00">
    <input type="hidden" name="no_note" value="1">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="bn" value="PP-BuyNowBF">
    <input type="hidden" name="custom" value="Some Value">
    <input type="hidden" name="return" value="http://www.site.com/payments/pp_success.php">
    <input type="hidden" name="notify_url" value="http://www.site.com/payments/pp_notify.php">
    <input type="hidden" name="rm" value="POST">
    <input type="submit" name="submit" value="Buy Now">
    </form>

    Когда пользователь произведет оплату, он будет перенаправлен на URL, указанный в параметре return. После этого Пейпал сам отправит уведомление о поступившем платеже на notify_url, только эти данные подлежат тщательной проверке, поскольку любому злоумышленнику не составит особого труда сформировать POST-запрос на notify_url. Поэтому полученные данные надо перезапросить у paypal еще раз, добавив к запросу параметр cmd со значением _notify-validate. И если paypal подтвердит совершенный платеж, транзакцию можно считать завершенной.

    Для сторонних разработчиков Paypal предусмотрел специальный сервис Paypal Sandbox, который позволяет тестировать весь процесс приема платежей, с одним небольшим ограничением. В paypal sandbox не работает IPN (Instant Payment Notification), когда уведомление о платеже отправляется на notify_url. Для отладки скриптов по обработке IPN в песочнице сделали отдельный инструмент Instant Payment Notification (IPN) simulator.

    Ярлыки: ,


    понедельник

     

    О пользе nginx

    Вот уже болльше 2-х лет я пользуюсь хостингом от FirstVDS и MiniVDS, причем для моих небольших нужд вполне хватает самых дешевых тарифов, на которых дается всего 64 Мб RAM. Свободной памяти у меня практически никогда не бывает, но все сервисы стабильно работают.

    Я всерьез задумался, а есть ли смысл включать nginx. Кроме статики, у меня еще есть куча скриптов; причем php работает как модуль apache. Да и сам nginx тоже будет висеть в памяти и есть ресурсы.

    Удивительно, но после того, как я у себя включил nginx, apache стал есть меньше памяти. И как выяснилось, это заслуга nginx.

    Зачастую апач генерит страницу быстрее, чем отдает ее клиенту; особенно, если клиент имеет не очень хороший канал. И пока он ее отдает, процесс висит в памяти и жрет системные ресурсы. Вот тут и приходит на помощь nginx, который работает как прокси. Он мухой забирает все, что сгенерил апач, и отдает все это добро клиенту. Апач же, законив свою грязную работу, спокойно умирает.

    Включить nginx в панели ISPmanager можно одним кликом мыши, и уже через пару-тройку минут можно будет видеть результат. У меня, правда, процесс не совсем корректно отработал, nginx стартовал, а апаче почему-то нет. Пришлось апач запустить вручную. И еще, если автоматически созданные поддомены сделаны вручную через mod_rewrite, возможно некорректное отоборажение картинок на сабах. В этом случае придется вручную править правила раздачи картинок с поддоменов для nginx

    Ярлыки: ,


    четверг

     

    Как сбросить пароль в mysql

    Иногда бывают ситуации, когда рутовый пароль на базу MySQL проебали где-то потерялся, и его надо срочно перезадать. Если есть доступ к shell на сервере, то сделать это достаточно просто:

    1. Останавливаем mysqld:

    /etc/init.d/mysqld stop

    2. Запускаем mysqld без проверки прав доступа:

    mysqld_safe --skip-grant-tables &

    3. Заходим под рутом и перебиваем пароль:

    mysql -u root -D mysql
    mysql> update user set password=password('new_password') where user='root';


    4. Обновляем права доступа:

    flush privileges;

    5. Выходим, убиваем mysqld и запускаем его снова:

    mysql> exit;
    /etc/init.d/mysqld stop
    /etc/init.d/mysqld start

    Ярлыки: , ,


    понедельник

     

    Парсинг поисковых систем

    Yahoo! Logo

    Обычно поисковые системы не позволяют себя парсить простым смертным. Например, великий и ужасный Google банит айпишник на несколько часов, если делать запросы слишком часто. А еще гугл иногда выдает свою аццкую капчу, и иногда меняет форматирование своей выдачи, что осложняет жизнь нашим коллегам.

    Однако, есть и дружелюбные поисковики, которые вполне официально разрешают себя парсить. Всего лишь надо зарегистрировать аккаунт на Yahoo, получить app id key и настроить свой парсер, благо API под него доступно там же на самых популярных языках программирования.

    Никаких пауз между запросами, никакой подделки юзерагента или сбрасывания cookie делать не надо, все работает быстро и надежно. Выдачу можно забирать в XML, что значительно упрощает парсинг. Однако не стоит забывать, что в термсах Yahoo прописаны ограничения: не более 5000 запросов с одного IP. Как видите, ничто не запрещает использовать все доступные IP адреса для получения желаемого результата.

    Ярлыки: , ,


    среда

     

    RentACoder: удаленная работа для программиста

    Rent A Coder

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

    Обязательное условие — приличное владение английским языком, поскольку большинство заказчиков англоязычные. Регистрируемся здесь как кодер, настраиваем свое резюме, предпочтения, опыт работы и обязательно подписываемся на RSS сообщения с новыми бидами.

    Система работает так. Заказчик выставляет свою задачу, и описывает ее например так:

    Hello,

    We currently have a functioning school management website. We need a coder who will take all static text on the website and make it to be loaded from the database. We have a page in admin where we have 'pages', we need this to be extended to include all text on the entire website. Additionally, it should be possible to add new pages and they appear in a top menu.

    Further, there are two tiny changes we also need:


    1. We have a comment text field. It should be made bigger using CSS
    2. The list of 'events' displays on the frontpage. Currently about 10 are displayed. We need this list expanded to show 40

    Заказчик выбирает ценовую категорию для проекта (например, Project Type: Very Small Business Project: under $100(USD)) и может выставить максимальный приемлемый для себя бид (в данном случае Max Accepted Bid: $60.00 (USD)).

    Кодеры читают задачу, и если их она устраивает, отвечают на нее своим бидом. Заказчик смотрит на биды кодеров, историю их работы, рейтинги и прочие факторы, и решает, а работать ли дальше. Он может отказаться от своего предложения (cancel), либо выбрать чей-то бид.

    Как правило, другие подробности работы заказчик описывает кодеру после того, как кодер принял бид. Заказчик переводит деньги в пользу RentACoder (escrow), и они после выполнения работы и принятия ее заказчиком, переходят в пользу кодера (за вычетом комиссии системы).

    Есть несколько тонкостей в работе. Если кодер в течение 24 часов после принятия бида заказчиком понимает, что по какой-то причине не сможет справиться с задачей, он обязан уведомить заказчика об этом и подать заявку на отказ от задачи. Это так называемый grace period, в течение которого кодер может безболезненно для себя и для заказчика отказаться от работы, не получив негативного рейтинга. Заказчику при этом возвращаются все переведенные в пользу RentACoder деньги.

    Если кодер все сделал вовремя, результат работы (без исключений) должен быть прикреплен к задаче для проверки и принятия ее закачиком. После успешного принятия работы кодер получает свои деньги, работа добавляется в портфолио и кодер получает рейтинг. Заказчик также получает рейтинг.

    Если же закачик или кодер чем-то недовольны, все споры решаются независимым арбитражом.

    Комиссия системы составляет 15%, но не менее 3 USD. Выплаты производятся по тому графику, который выбирает кодер (устанавливается минимальная сумма для выплаты (например, $100), и выбирается график выплат — в начале следующего месяца либо по окончании двухнедельного срока).

    Выплаты производятся 4-мя способами:

  • перевод на банковский счет (этот способ годится и для россиян)
  • перевод Western Union
  • выплаты на карту Payoneer Prepaid Mastercard (если ее нет, они ее сделают и вышлют)
  • выплаты в Paypal (для граждан бывшего СССР этот способ оплаты не подойдет)
  • Система очень удобная, довольно много соотечественников уже работает с ней. Категории задач встречаются самые разные, от настройки серверов до разработки крупных порталов, от перевода статей на другие языки до SEO-задач.

    Система удобна не только для кодеров, но и для заказчиков; поэтому этот сервис и стал таким популярным. Конкуренция там весьма высокая, поскольку среди кодеров встречаются и индусы, и китайцы, готовые работать за гроши. Они сильно демпингуют, но для кодеров с хорошим портфолио они серьезной конкуренции не представляют.

    В общем, регистрируйтесь и пробуйте, наверняка сервис понравится и вам.

    Ярлыки: , ,


    пятница

     

    Blogger на своем домене и настройки firewall

    Платформа Blogger
    Платформа Blogger умеет вести блоги не только на blogspot.com, но и на своих доменах. Публикация постов представляет собой заливку готовых html-файлов на хостинг с помощью FTP или SFTP. А чтобы отсечь любителей подбирать пароли FTP, Blogger опубликовал IP-адреса серверов, с которых он может проводить публикацию постов:

    66.102.15.83
    216.34.7.186
    64.233.166.192-207
    64.233.178.192-207

    Т.е. достаточно в firewall.conf дописать всего 5 строчек, чтобы отсечь брутфорсеров паролей:

    add allow tcp from 66.102.15.83 to me 21
    add allow tcp from 216.34.7.186 to me 21
    add allow tcp from 64.233.166.192/28 to me 21
    add allow tcp from 64.233.178.192/28 to me 21
    add reset tcp from any to me 21

    Ярлыки: ,


     

    Как подружить SonyEricsson K750i и OpenSuSe 10.3

    Готовлюсь к длительной поездке в глушь, где доступ в интернет будет возможен только через GPRS от МТС. Как оказалось, подключить мой мобильник SE K750i в качестве GPRS-модема совсем не сложно.

    Для этого надо соединить телефон с помощью USB-кабеля с ноутбуком, и проверить, видит ли его система как модем:

    # lsusb

    Создаем /etc/wvdial.conf:


    [Dialer Defaults]
    Init1 = ATZ
    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
    Init3 = AT+CGDCONT=1,"IP","internet.mts.ru"
    Modem = /dev/ttyACM0
    Phone = *99***1#
    Idle Seconds = 300
    Modem Type = USB Modem
    Stupid Mode = 1
    Compuserve = 0
    Baud = 115200
    Auto DNS = on
    New PPPD = Yes
    Dial Command = ATDT
    Ask Password = 0
    ISDN = 0
    Password = mts
    Username = mts


    Можно поиграться с настройками скорости соединения. Выше 115200 у меня она не поднималась, обычно она в районе 57600 baud.

    Вот и все, дозваниваемся до оператора с помощью команды wvdial, отключаемся от интернета нажатием CTRL+C.

    И для удобства, чтобы не запускать wvdial под рутом, можно сделать:
    #chmod u+s /usr/bin/wvdial

    Ярлыки: ,


    воскресенье

     

    Проектирование и настройка домашней сети.

    Задача: есть несколько компьютеров дома; есть выделенная линия (ADSL-модем) с выходом в интернет. Требуется объединить компьютеры в локальную сеть, чтобы каждый из пользователей мог выходить в интернет.

    Первый способ:

    Домашняя сеть, вариант №1

    Плюсы:

    Здесь все компьютеры объединяются в сеть с одинаковой маской; любой из них может включаться и выключаться по своему желанию, никому при этом не мешая.

    Минусы:

    Затруднен контроль за трафиком каждого компьютера. Кроме того, система получится весьма дырявой, если все компьютеры будут объединены с помощью точки доступа WiFi.
    При неграмотной настройке беспроводного соединения (доступ без пароля или включение WEP-шифрования) соседи по квартире запросто смогут пользоваться интернетом за ваш счет.

    Про доступ без пароля и так все ясно; а вот WEP-шифрование уже давно не является гарантией безопасности. Ровно год назад была опубликована статья о том, что исследователям из Германии удалось извлечь 104-битный ключ WEP за 3 секунды путем перехвата беспроводных пакетов в течение нескольких минут. Так что, если вы все-таки решили настроить сеть с беспроводным соединением, ставьте мощность передатчика на минимум и ставьте шифрование WPA/WPA2. И все равно такая сеть не будет защищенной от проникновения извне, т.к. нет гарантий того, что никто не подберет пароль.

    Второй способ:

    Домашняя сеть, правильный вариант

    Плюсы:

    Можно контролировать все в одном месте, на сервере.

    Минусы:

    Сервер постоянно должен быть включен, иначе у остальных компьютеров не будет доступа в интернет.

    Этот вариант намного безопаснее и интереснее предыдущего, но требует специальной настройки сервера. Там придется поднять прокси-сервер, настроить маршрутизацию и желательно поднять VPN или OpenVPN. Это очень пригодится, если появятся клиенты, которые будут соединяться через беспроводное соединение WiFi. OpenVPN поверх беспроводного соединения значительно осложнит жизнь потенциальным взломщикам; даже если они подберут пароль на соединение, у них не будет ключа шифрования.

    Ярлыки: , , , ,


    среда

     

    Как автоматически создавать поддомены

    Задача: при обращении к поддомену сервер должен отдавать контент из соответствующей поддиректории для заданного VirtualHost.

    Есть 2 способа решения задачи, и какой из них лучше – решайте сами.
    В любом случае, сначала надо настроить WildCard DNS на домене, иначе ничего работать не будет.

    Если Ваш проект хостится у firstvds или у minivds, то при добавлении домена на Ваш аккаунт файл зоны будет выглядеть примерно так:


    $TTL 3600
    domain.com. IN SOA ns1.minivds.com. root.mylogin.minivds.com. (2007041702 10800 3600 604800 86400)
    ;
    domain.com. IN NS ns1.minivds.com.
    domain.com. IN NS ns2.minivds.com.
    domain.com. IN MX 10 mail
    domain.com. IN MX 20 mail
    domain.com. IN A XXX.YYY.ZZZ.WWW
    www IN A XXX.YYY.ZZZ.WWW
    ftp IN A XXX.YYY.ZZZ.WWW
    mail IN A XXX.YYY.ZZZ.WWW
    smtp IN A XXX.YYY.ZZZ.WWW
    pop IN A XXX.YYY.ZZZ.WWW
    domain.com. IN TXT "v=spf1 a mx ~all"


    Чтобы включить WildCard DNS, достаточно в файл зоны добавить всего одну строчку и поменять цифры в serial number зоны. После исправлений файл доменной зоны будет выглядеть так:


    $TTL 3600
    domain.com. IN SOA ns1.minivds.com. root.mylogin.minivds.com. (2007041703 10800 3600 604800 86400)
    ;
    domain.com. IN NS ns1.minivds.com.
    domain.com. IN NS ns2.minivds.com.
    domain.com. IN MX 10 mail
    domain.com. IN MX 20 mail
    domain.com. IN A XXX.YYY.ZZZ.WWW
    www IN A XXX.YYY.ZZZ.WWW
    ftp IN A XXX.YYY.ZZZ.WWW
    mail IN A XXX.YYY.ZZZ.WWW
    smtp IN A XXX.YYY.ZZZ.WWW
    pop IN A XXX.YYY.ZZZ.WWW
    * IN A XXX.YYY.ZZZ.WWW
    domain.com. IN TXT "v=spf1 a mx ~all"


    Через некоторое время можно попробовать пингануть домены abc.domain.com, asfwsegws.domain.com – доменное имя 3-го уровня должно определяться с тем же IP-адресом, что и доменное имя 2-го уровня.
    Вот теперь можно переходить к настройке сабдоменов.

    Способ номер 1: вносим изменения в httpd.conf
    Выглядит это примерно так:


    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.domain.com
    RewriteCond %{HTTP_HOST} !^cgi-bin\.domain\.com$ # запрещаем перенаправление для cgi-bin
    RewriteCond %{HTTP_HOST} ^(www\.)?(([^\.]+)\.){1}domain.com$
    RewriteCond /home/domain/data/www/domain.com/%3 -d
    RewriteRule ^/(.*) /%3/$1


    Перезапускаем apache и все – любая поддиректория, созданная в /home/domain/data/www/domain.com/ будет доступна как поддомен. Это самый правильный вариант создания поддоменов.

    Но такой способ не будет работать на виртуалхостингах, поскольку доступ пользователю к httpd.conf никто не даст.

    Способ номер 2: поддомены через .htaccess:


    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^subdomain1.domain.com$ [OR]
    RewriteCond %{HTTP_HOST} ^www.subdomain1.domain.com$
    RewriteRule ^(.*)$ http://www.domain.com/subdomain1/ [R=301,L]
    RewriteCond %{HTTP_HOST} ^subdomain2.domain.com$ [OR]
    RewriteCond %{HTTP_HOST} ^www.subdomain2.domain.com$
    RewriteRule ^(.*)$ http://www.domain.com/subdomain2/ [R=301,L]

    В этом случае при обращении к subdomain1.domain.com или к www.subdomain1.domain.com пользователь будет перенаправлен на URL http://www.domain.com/subdomain1/ и он это заметит.

    Ярлыки: ,


     

    Linux: копируем красиво (с прогресс баром)

    Все, кто хоть раз использовал wget, видели progress bar скачивания файла. Можно ли что-то подобное сделать и с командой cp?

    Легко, как два байта переслать:



    #!/bin/sh
    cp_p()
    {
    set -e
    strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
    | awk '{
    count += $NF
    if (count % 10 == 0) {
    percent = count / total_size * 100
    printf "%3d%% [", percent
    for (i=0;i<=percent;i++)
    printf "="
    printf ">"
    for (i=percent;i<100;i++)
    printf " "
    printf "]\r"
    }
    }
    END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
    }



    результат работы выглядит так:



    cp_p /install/suse-10.3.iso /mnt
    75% [===========================================> ]



    Бесполезно, но... красиво!

    З.Ы. Придумал не я, честно подглядел вот здесь.

    Ярлыки: ,