Oppa Cyprus Style

Date September 19th, 2013 Author Vitaly Agapov

Отдохнули в июне 2013 года.

Tags:
Категория: Beyond IT | 3 Комментариев »


Забег в пейнтбол

Date September 19th, 2013 Author Vitaly Agapov

Поиграли в августе 2013-го года.

Tags:
Категория: Beyond IT | Нет комментариев »


Пишем хук для Atlassian Stash

Date August 27th, 2013 Author Vitaly Agapov

Ничто так не способствует карьере творца, как немного смерти и безвестности.

Дэн Симмонс «Падение Гипериона»

Раньше я тесно взаимодействовал с системой контроля версий Subversion и с системой для багтрекинга (точнее issue-трекинга) Atlassian Jira. Они были тесно переплетены друг с другом. Jira показывала привязанные к задачам коммиты в SVN, SVN спрашивал у Jira разрешения на коммит с учётом главного правила – сообщение к коммиту должно содержать валидный ключ задачи в Jira. Последняя фича реализовывалась с помощью плагина JIRA Commit Acceptance и pre-commit хука для SVN, написанного на Perl'е.

Когда же SVN отошёл и уступил место git'у под управлением Atlassian Stash, возникла необходимость реализовать ту же самую тёплую ламповую функциональность, которая существовала и раньше. Каково же было моё удивление, когда я узнал, что плагина для Stash с аналогичным хуком не существует (да-да, хуки здесь существуют в виде плагинов). А это значило, что следует засучить рукава и разобраться, как написать свой собственный плагин под Stash и научить его делать то, что нам надо.

Плагины для продуктов Atlassian пишутся на Java, и лично для меня основной сложностью и преградой было именно это обстоятельство, ведь я джавой головного мозга не страдаю и за всю жизнь не написал на Java ни строчки кода, если не считать кое-каких HelloWorld'ов по разным туториалам. Но всё бывает в первый раз. Так что этот текст может пригодиться (а может и не пригодиться) людям совершенно далёким от java-разработки, плагиностроения для Atlassian'овсих продуктов и вообще от быдлокодинга.

Читать далее »

Tags: ,
Категория: Java | Нет комментариев »


Связка Nginx + Varnish + HAProxy для чайников

Date August 12th, 2013 Author Vitaly Agapov

Как же управлять такой ордой? – пораженно думал Михаил. Чем же прокормить такую бездну праздного народа?

Алексей Иванов «Сердце Пармы»

Эту универсальную связку можно использовать на любых высоконагруженных проектах. Она не будет тормозить, жрать ресурсы и пыхтеть как паровоз (это кивок в сторону Apache). Она легко управляется, отлично масштабируется на любое число серверов в кластере и хорошо мониторится.

Здесь Nginx будет заниматься свои обычным делом: отдавать статику, терминировать ssl-сессии, обеспечивать rewrite url’ов и т.д. Часть трафика, подлежащую кэшированию, он будет отдавать Varnish’у, а всё остальное – на HAProxy. Varnish будет исправно кэшировать весь отдаваемый контент, лишь изредка обращаясь за обновлениями на тот же HAProxy. HAProxy будет проксировать запросы на бэкенды, балансируя нагрузку и обеспечивая механизм sticky sessions. Само собой, если бэкенд (тот же Tomcat) всего один, то HAProxy тут нам не понадобится. Но это частный случай.

Читать далее »

Tags: , ,
Категория: HAProxy, Nginx, Varnish | Нет комментариев »


Nginx и ModSecurity

Date July 19th, 2013 Author Vitaly Agapov

Всем хорош Nginx, но у Apache всегда была целая россыпь козырей в рукаве, не позволявшая Nginx'у приблизиться к нему в его неимоверной крутости. Одним из таких козырей был плагин ModSecurity, про который я относительно недавно опять писал статейку. Каково же было моё удивление, тщательно перемешанное с радостью, когда я узнал, что ModSecurity теперь работает и с Nginx'ом и что этот плагин только-только вышел из беты. Радость была обоснована ещё и тем, что незадолго до того я искал какие-нибудь аналоги для использования. Тыкал палочкой Naxsi, но ничего под свои нужды так и не нашёл. А тут такой подарок.

Подарок оказался не без сюрпризов. Но обо всём по порядку.

Читать далее »

Tags: ,
Категория: Nginx | Нет комментариев »


На байдарке от Беличьего до Корелы и обратно

Date July 16th, 2013 Author Vitaly Agapov

Tags:
Категория: Beyond IT | Нет комментариев »


Заметки об Apache, часть 6: Простая защита от ДДоС/брутфорса средствами ModSecurity

Date March 27th, 2013 Author Vitaly Agapov

Попробуй хотя бы… Сыграем мир в четыре руки?

Г.Л.Олди «Восставшие из рая»

Года, эдак, три назад я уже постил здесь статейку "mod_security2 для Apache", касающуюся использования модуля ModSecurity. Она и сейчас вполне занятна, полезна и самодостаточна. И там даже был пример на нашу сегодняшнюю тему, но я хотел бы эту самую тему углубить и рассмотреть более подробно. Посмотрим, как можно защититься от перебора паролей на сайте или даже обеспечить простенькую (это ключевое слово, так как от забивания полосы канала это не спасёт) защиту от DDoS. Посмотрим, как в ModSecurity можно работать со счётчиками и реализовывать на этих счётчиках сценарии защиты.

Итак, мы предполагаем, что некоторые антисоциальные элементы могут начать доставлять нам неудобства, заваливая сайт некоторыми запросами на логин или, например, на некоторые тяжёлые страницы, нагружающие бэкенд. Давайте их банить.

Читать далее »

Tags: ,
Категория: Apache | 1 Комментарий »


Хэши в AWK

Date February 28th, 2013 Author Vitaly Agapov

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

Андрей Валентинов «Ола»

AWK я люблю и уважаю, хоть и пользуюсь его возможностями максимум на 1,5%. Когда же я понял, что он умеет работать с ассоциативными массивами, это число резко выросло до 1,86%. До awk-гуру рукой подать.

Допустим мы выбрали из access.log ip-адреса пользователей и размеры ответов и хотим подсчитать, кто сколько раз к нам сходил (это просто) и сколько трафика суммарно высосал (это интереснее). Допустим, сырой файл выглядит так:

Читать далее »

Tags:
Категория: Linux | 1 Комментарий »


Заметки об Apache, часть 5: Принудительная компрессия контента

Date January 29th, 2013 Author Vitaly Agapov

Талант – не редкость, редкость – умение выжить при своих талантах.

Нил Стивенсон «Ртуть»

В некоторых ситуациях может потребоваться сжимать отдаваемые страницы, даже если пользователь не указал в заголовке Accept-Encoding поддержки gzip или вообще не проставил оный заголовок. Чаще всего этими пользователями оказываются вовсе не бедолаги с древними браузерами середины девяностых годов, а простые парсеры wget-чики, которых можно было бы просто забанить, но по какой-то причине жалко. Но трафика тоже жалко. Так что можно придумать два способа, как заставить Apache сжимать контент независимо от Accept-Encoding. Читать далее »

Tags:
Категория: Apache | Нет комментариев »


Проба стедикама

Date January 28th, 2013 Author Vitaly Agapov

Первая криворукая прогулка с Flycam DSLR Nano FC.

Tags:
Категория: Beyond IT | Нет комментариев »