Как стать автором
Обновить
64
0
Андрей 'virus' Янцен @zvirusz

Backend developer

Отправить сообщение

Отправка уведомлений на почту при деплое проекта

Время на прочтение 4 мин
Количество просмотров 5.8K
В нашем проекте при каждом деплое разработчики, тестеры и ещё пара людей получают замечательные письма:
Subject: Наш проект версии v1.1.1 обновлён на сервере 'testing'

user1 выложил следующие обновления на сервер 'testing':

Коммиты по задачам:
jira.local/browse/PROJECT-1234

Полный список коммитов с предыдущего обновления:
4392a53 Thu Aug 18 17:50:32 2011 +0700 user1 / [PROJECT-1234] сделал полезное
f2fcfe2 Thu Aug 18 17:37:53 2011 +0700 user1 / сделал страшное
cb1fcbe Wed Aug 17 15:18:10 2011 +0700 user2 / зарефакторил

Изменения по файлам:
file1 | 4 ++--
file2 | 8 ++++----
file3 | 8 ++++----
3 files changed, 10 insertions(+), 10 deletions(-)

Такое решение помогло нам избавиться от вопросов тестеров «Ну что, выложили уже исправление бага XXX?», «Что нового на тестовом сервере?». Так же — все члены команды, отдел внедрения и руководство в курсе, что происходит с кодом на серверах.
Для работы используется git, capistrano (+ multistage), php, bash (+ некоторые консольные утилитки). Если интересно — заходим под кат.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 11

Реанимируем dctc для борьбы с ложными файлами

Время на прочтение 3 мин
Количество просмотров 660
Года 4 назад у меня родилась идея — написать бота, который бы отслеживал активность в нашем локальном DC-хабе — просто логировал чат и выполнял простые команды в приват. За пару вечеров был найден прекрасный консольный клиент — dctc, с которым можно взаимодействовать через unix-socket; а ещё за пару вечеров — написан простенький бот на php. При создании бота были внесены первые поправки в код dctc, чтобы он не посылал странные команды на сервер. Через некоторое время меня сделали модератором на этом самом хабе и я начал безжалостно банить. Но удобной системы для отслеживания количества банов у конкретных людей не было, но администратор каждые 5 минут генерировал информацию по текущим банам — ещё несколько убитых вечеров — и вот администрация обрела лёгкую возможность отслеживать порядковый номер бана.

Спустя ещё несколько месяцев в сети стали появляться фэйки — это когда, например, скачиваешь Шрэка, а там вовсе даже не Шрэк, а красная шапочка и трое непонятных мужиков… Некоторое время боролись своими силами, но душа поэта не выдержала — и я решил улучшить бота.
что же было сделано и как всё это заиметь себе?
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 7

QR для оплаты по СМС

Время на прочтение 1 мин
Количество просмотров 891
Сегодня первый раз в жизни производил оплату услуги через SMS, и чтобы не нажимать на неудобные, маленькие кнопочки смартфона я просто открыл qrcode.kaywa.com и заполнил необходимые поля на компьютере, затем скормил картинку сканеру штрих-кодов на телефоне — и получил готовую SMS (с заполненным номером и текстом) — оставалось только нажать «отправить».
Так вот, почему бы вам, господам принимающим оплату через SMS не упростить жизнь пользователю и не добавить небольшую картинку рядом с информацией о платеже? Благо делается это предельно просто — например код по ссылке chart.apis.google.com/.../ сгенерирует сообщение на номер 01 с текстом abcdef123. Да и существуют готовые решения для генерации QR-кодов для популярных языков программирования, если у вас нет желания зависеть от гугла.
Реализовать не сложно (разве что в дизайн вписать), а пользователю — приятно.
Всего голосов 15: ↑9 и ↓6 +3
Комментарии 11

Странности с php-модулем Memcached

Время на прочтение 1 мин
Количество просмотров 1.8K
На 4 серверах стоит модуль Memcached (1.0, libmemcached 0.34, memcached 1.2.6), который прикручен к:
1. Nginx + PHP-FPM (5.2.11)
2. Nginx + SpawnFCGI + PHP (5.2.6)

Через некоторые промежуток времени php перестаёт принимать новые соединения — в error.log nginx'a валится «connection refused». Когда использовался модуль Memcache подобных проблем не наблюдалось. Сейчас проблема решается костылём — что-то вроде nc -w 2 localhost 9000 || /etc/init.d/php restart. Кто-нибудь сталкивался с подобной проблемой? Есть идеи, как её решить? Возврат к memcache, смену ЯП и т.п. не предлагать.
Всего голосов 5: ↑1 и ↓4 -3
Комментарии 13

Расширяем функционал Monopoly City Streets

Время на прочтение 13 мин
Количество просмотров 499
Разработчиками в MCS, к сожалению, не предусмотрена возможность застройки улицы большим количеством зданий за пару кликов мышкой. Но ведь игра написана на JS, так что ничего нам не мешает написать небольшой букмарклет, который и позволит нам добавить требуемый функционал.
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 23

Об одном эвристическом методе детекции вирусных инжекций на сайтах

Время на прочтение 6 мин
Количество просмотров 1.3K
! Пост написал RomanL, но за неимением необходимого количества кармы — опубликовать его не может.

Хочу рассказать об одном решении, как можно обнаружить внедрения полиморфного вирусного JavaScript-кода в страницы сайтов. Заметка расcчитана на подготовленных пользователей, которым не надо объяснять элементарных вещей и которые могут сами найти дополнительную информацию не требуя ссылок на википедию :)

Читать дальше →
Всего голосов 77: ↑68 и ↓9 +59
Комментарии 39

Отслеживание iframe

Время на прочтение 3 мин
Количество просмотров 1.8K
Однажды мне надоели жалобы клиентов, вроде «на моём сайте вирус, сделайте что-нибудь!». Объяснять людям об опасности сохранения паролей от ФТП на небезопасной машине так же надоело. Гениальное оказалось рядом — обычно поражаются файлы index.* и default.* — так почему бы не отслеживать изменение этих файлов. Сказано — сделано.
UPD: код переписан — теперь никакого SQL и PHP, тупо парсим xferlog bash'ем
Читать дальше →
Всего голосов 48: ↑45 и ↓3 +42
Комментарии 51

вывод новостей с группировкой по дате

Время на прочтение 2 мин
Количество просмотров 2.5K
Дано: MODx 1.0.0
Нужно: выводить список новостей в следующем формате:
25.08.09
> заголовок 2 новости от 25 августа
описание

> заголовок 1 новости от 25 августа
описание

24.08.09
> заголовок новости от 24 августа
описание

Реально ли это сделать без переписывания куска Ditto?
Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 5

конфигурация модуля

Время на прочтение 2 мин
Количество просмотров 851
Дано: ZF1.9.1;
2 модуля — default и admin: default лежит в /application, admin — в /application/modules/admin
есть единый конфиг — /application/config/application.ini
Если добавить в него строку (?)
admin.resources.layout.layout = admin
то модуль admin продолжает подгружать layout по умолчанию, если же добавить другую строчку:
resources.layout.layout = admin
то layout меняется, но для всего сайта.

Если создать Admin_Bootstrap — то в первом случае layout меняется для всего сайта.

Внимание вопрос: как корректно добавлять модуль-ориентированные настройки?

UPD: под катом решение для подгрузки плагинов (в виде простенького плагина)
Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 6

Как установить Linux из сети

Время на прочтение 3 мин
Количество просмотров 43K
Буквально вчера хабраюзер Arceny поведал нам об установке дебиана с USB-flash. В статье он упомянул о возможности установки «С помощью загрузки по сети (PXE boot)», благодаря чему я решил наконец написать материал по созданию сервера pxe boot.
понеслась
Всего голосов 36: ↑33 и ↓3 +30
Комментарии 30

Поднимаем subversion для приятной разработки

Время на прочтение 2 мин
Количество просмотров 4.5K
В один прекрасный день мне надоело заливать по ftp\ssh все изменения, внесённые в проект. К этому моменту я уже вынашивал идею перенести разработку под управление SVN — контроль версий, всё-таки приятная штука. В итоге было решено совместить приятное с полезным — и контроль версий, и автоматическое обновление проекта. По традиции — повествование будет вестись на примере моего любимого debian'a.
Заметку можно считать дополнением статьи svn tips (по крайней мере — первого пункта).
поехали
Всего голосов 60: ↑46 и ↓14 +32
Комментарии 60

Настройка маршрутизации по двум провайдерам

Время на прочтение 3 мин
Количество просмотров 94K
Вчера столкнулся с небольшой проблемой — на машине с Win2k3 установлены 2 сетевых карты, 2 провайдера. Проблема оказалась следующая: подсети пересекаются (точнее — совпадают). Было решено использовать за основной шлюз 1го провайдера, а по внутрисетевым ресурсам гулять — через 2го. И всё бы ничего, но машина должна обслуживать входящие соединения с обоих интерфейсов. Но, благодаря статическим маршрутам, ответы на запросы из подсети 10.0.0.0/8, пришедшей со стороны первого провайдера уходили через канал второго провайдера, что было, мягко говоря, не тем, что нужно. Как решить эту проблему под линухом — я знал (и тоже поведаю в этой заметке). Немного погуглив был найден вариант решения (в msdn'e наткнулись на управления приоритетами соединений). Коллега (WAJIM, привет) подумал — и нашёл 2й вариант. Потом немного (совсем немного) подумал я — и по аналогии появился 2й вариант решения для линуха :)
Итого, под катом вас ожидает 4 варианта решения задачи маршрутизации по 2м провайдерам — 2 под виндовс и 2 под линукс.
понеслась
Всего голосов 42: ↑41 и ↓1 +40
Комментарии 33

Каскадирование squid'ов

Время на прочтение 5 мин
Количество просмотров 22K
Во времена слишком дорогого анлима (64кбита — 1000рур), сотворили с товарищами кластер проксей, дабы увеличить суммарную пропускную способность. Время шло, цены менялись. Сейчас они уже более дружелюбны — мбитный анлим (с ночным удвоением скорости) стоит всё те же 1000рур. Но, не смотря на это, кластером всё ещё иногда пользуемся. Решил вот поделиться с общественностью методом создания такого добра, вдруг кому будет интересно.
Для опытов нам потребуется:
  • 1 сервер с установленным на нём squid'ом + ещё какой-нибудь проксёй (если хотите, чтобы этот сервер был не только центральным, но и делился инетом).
    я расскажу про поднятие кластера на базе дебиана, 2 интернет-каналов и 3 сквидов (сквиды для родительских проксе выбраны по 2 причинам: из-за возомжности предоставления статистики по текущим соединениям; из-за лени искать альтернативу)
  • любое количество компьютеров, с любыми ОС и любыми http-проксями
  • опционально — апач, пхп и скрипт SqStat — для просмотря активности прокси

дальше
Всего голосов 36: ↑29 и ↓7 +22
Комментарии 34

Информация

В рейтинге
Не участвует
Откуда
London, England - London, Великобритания
Дата рождения
Зарегистрирован
Активность