Блог понаехавшего | шо?

CAT | Рамблер

Dec/09

3

perl2port

Странно, что этого до сих пор никто не написал: App::Pm2Port

Создаёт порт из перлового модуля и отправляет его разработчикам FreeBSD.

Как работать:

pm2port CSS::Croco

Тестируем и находим баги.

, Hide

Nov/09

5

Ускоряем свой HTTP-сервер

Для начала расскажу, как обычно работают сервера:

  1. Создаётся сокет, который слушает порт
  2. Вызывается системный вызов accept, который берёт первого клиента из очереди соединений, а если его нет – то блокирует приложение до тех пор, пока он не появится
  3. Приложение что-то делает с этим клиентом и в конце концов с ним прощается
  4. goto пункт два

nginx и lighttpd использует вместо accept функции select/kevent/epoll, которые позволяют работать со многими клиентами одновременно, но это уже отдельная история (к асинхронным веб-серверам accept-фильтры применимяются точно так же)

Accept-фильтры – это модули ядра FreeBSD, которые не говорят, что сокет готов до тех пор, пока не выполнится какое-то условие. Я нашёл только два фильтра:

  • dataready – accept блокирует сокет до тех пор, пока в него прийдут данные. Когда мы получаем сокет, мы уже точно можем из него что-то считать
  • httpready – сокет блокируется до тех пор, пока не прийдёт полный GET/HEAD запрос. Соответственно, нам не надо тратить время на переключение контекста, если запрос ещё не собрался.

Остановимся на фильтре httpready

Буферизирует он только GET и HEAD запросы, так как в POST/PUT может прийти 600мегабайтный порнофильм.
Итак, подключаем модуль accf_http:

    kldload accf_http
    echo 'accf_http_load=”YES”' >> /boot/loader.conf

Далее нужно изменить работу с сокетом — установить опцию httpready:

        struct accept_filter_arg afa;
        bzero(&afa, sizeof(afa));
        strcpy(afa.af_name, "httpready");
        setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));

Результаты тестов

Так как существует мнение, что accept-фильтры бесполезны, мы решили провести тестирование. Веб-сервер был выбран AnyEvent::HTTPD, клиент – ab. Итак, результаты:

  1. локальная машина, 10000 запросов, concurrency = 4: httpready даёт прирост в 10%
  2. локальная сеть, 10000 запросов, concurrency=1000: httpready даёт прирост в 10%
  3. локальная сеть, 10000 запросов, concurrency = 4: прирост в 25%
  4. локальная сеть, 1000 запросов, concurrency = 1: в два раза!

В боевых условиях, при наличии GPRS, 256k и прочего позора цивилизации, скорость ещё увеличится.

Настройка веб-серверов

В apache 1.3+ и nginx accept-фильтры поддерживаются.

Apache под FreeBSD изначально содержит такую конфигурацию:

 AcceptFilter http httpready
 AcceptFilter https dataready

и менять её не стоит.
А вот в настройках сервера nginx стоит добавить опцию

    accept_filter "httpready";

Ссылки

No tags Hide

Oct/09

5

LeechBlock

Этот пост посвящен распиздяям, которые не могут заставить себя работать. Я из таких людей. Ведь кроме исправления говна, которое я накодировал, есть всякие вконтактики, фейсбуки, твиттеры и остальные убивалки времени. И я нихрена не успеваю.

Как только я пришёл в Рамблер, я осознал, что из-за постоянного распиздяйства в Приватбанке, я вконец разленился. И начал заставлять себя работать. В этом мне помог отличный плагин к Firefox – LeechBlock.

Он умеет

  • блокировать заразные сайты (vkontakte,twitter, etc)
  • блокировать сайты по времени – например, с 13:00 до 24:00 у меня заблокирована вся гадость
  • во время блокировки можно запретить изменение настроек и доступ к about:config
  • можно ставить лимиты, напоимер: 5 минут в час на почту, 5 минут в день – на вконтакте

Вот и сейчас себе его поставил…

, Hide

Сегодня заметил, что прошёл уже год, как Я работаю в Рамблере

По этому поводу я напишу немного букав. Как сейчас помню фразу, сказанную моим начальником, АП Витязем:

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

Может быть я не передал фразу дословно, но смысл был таким. Через пару месяцев я поехал на UA Web в Киев, где с отвисшей челюстью слушал о том, как у Яндекса и других компаний всё охуенно. И подумал, а не отправить ли мне резюме в Яндекс.

Отправил. Для симметрии его же послал в Рамблер и Mail.ru. Кто-то из этой счастливой тройки (скорее всего Mail.ru) позвонил моему начальнику из Приватбанка, за что я получил изрядных пиздюлей :-)

Когда я ехал в Маскву, я надеялся, что мне удастся найти работу в Яндексе. Ну и собеседование в Рамблере для галочки пройти стоило. :-) Тогда же я устроил аукцион прикольный. В стиле “пойду к тем, кто больше заплатит”. Яндексоиды предложили больше, но мне уже хотелось в Рамблер. Ведь в Рамблере был мой любимый Catalyst и DBIx::Class :-)

И я ни разу не пожалел об этом решении… К чему это я? Да ни к чему, просто понос мыслей.

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

Пригодилось ли вам реально в жизни высшее образование? С реальными историями, желательно.

No tags Hide

Для начала расскажу историю. В далёком 2004-м году чувак по имени Vladi Belperchinov-Shabanski “Cade” написал модуль Algorithm::FloodControl. В те дремучие века люди не знали, что такое ООП и их заботила поддержка Perl4 :-)

Сделал апгрейд этому модулю. Сделал его ООП-шным, добавил поддержку backend-ов для Cache::Memcached::Fast, Cache::FastMmap. Сделал и для Cache::Memcached, ибо не сложно три строки написать, но когда 15 процессов инкрементят запись, то срабатывает от силы 10% инкрементов. Ниипу почему.

Наверное, ещё будут бока с документацией. Это я поправлю.

Algorithm-FloodControl-1.90

, , Hide

Oct/08

31

боянчег)

— Ага, ось ці хлопці…Я роблю особливе, вуличне чаклунство…Хочете побачити трішечки чаклунства?
— Ненене, Дэвид Блейн, отвали от нас….Мы вообще по-украински не понимаем!!
— А, то ви москалі? А що робите в Тернополі?
— Отвали, демон! Что хотим, то и делаем! И не москали, а русские.
— А ви впевнені, що ви русскіє? Ось ти…Ти впевнений в цьому?
— Ну блин….Уверен конечно.
— А що це ти тоді вирядився так? Вишиванка …ше й оселедець козацький на голові.
— Что??? Какая еще вышиванка? В рот мне ноги, демон, что ты наделал? Верни нам наши шмоты…фак мой мозг!
— Доречі, хлопці…я щось забув вдома свій годинник….Не підкажете котра година?
— Ееее….За вісім хвилин шоста….Фак мій моск, демон…що ти наробив….я говорю українською!!! Очманіти можна…Ноги мені до рота! Зупинись….відчепись від нас, добре? Ну що ще? Що ти пиришся, демон?
— Та я оце думаю…Ви плануєте святкувати майбутній день народження Степана Бандери?
— Якого Бандери? Цього злісного націоналіста, який чинив звірства серед мирного населення? Ой…що це я несу всяку московську пропаганду…Це ж справжній незламний патріот нашої України….Слава Україні! Відсвяткуємо як треба, з розмахом!
— Героям слава)) Ну бувайте…Годі з вас… я бачу, що ви хороші хлопці…

No tags Hide

Lenta.ru: Бизнес: Антимонопольщики не разрешили купить “Бегуна”

Федеральная антимонопольная служба (ФАС) отказала компании Kokuna Holdings Limited в приобретении у компании Rambler Media агентства контекстной рекламы “Бегун”. Об этом говорится в официальном пресс-релизе ФАС.

от себя могу добавить: в ФАС пидарасы. всё. до единого.

, , Hide

Find it!

Theme Design by devolux.org