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

Опубликовано:

В нашем проекте при каждом деплое разработчики, тестеры и ещё пара людей получают замечательные письма:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Subject: Наш проект версии v1.1.1 обновлён на сервере 'testing'

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

Коммиты по задачам:
http://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 (+ некоторые консольные утилитки). Если интересно - заходим под кат.

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

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

Опубликовано:

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

Спустя ещё несколько месяцев в сети стали появляться фэйки - это когда, например, скачиваешь Шрэка, а там вовсе даже не Шрэк, а красная шапочка и трое непонятных мужиков… Некоторое время боролись своими силами, но душа поэта не выдержала - и я решил улучшить бота.

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

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

Опубликовано:
Метки: idea, qr, sms-платежи

Сегодня первый раз в жизни производил оплату услуги через SMS, и чтобы не нажимать на неудобные, маленькие кнопочки смартфона я просто открыл qrcode.kaywa.com и заполнил необходимые поля на компьютере, затем скормил картинку сканеру штрих-кодов на телефоне — и получил готовую SMS (с заполненным номером и текстом) — оставалось только нажать «отправить».

Так вот, почему бы вам, господам принимающим оплату через SMS не упростить жизнь пользователю и не добавить небольшую картинку рядом с информацией о платеже? Благо делается это предельно просто — например код по ссылке chart.apis.google.com/…/ сгенерирует сообщение на номер 01 с текстом abcdef123. Да и существуют готовые решения для генерации QR-кодов для популярных языков программирования, если у вас нет желания зависеть от гугла.

Реализовать не сложно (разве что в дизайн вписать), а пользователю — приятно.

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

Опубликовано:
Метки: games, javascript, mcs

Разработчиками в MCS, к сожалению, не предусмотрена возможность застройки улицы большим количеством зданий за пару кликов мышкой. Но ведь игра написана на JS, так что ничего нам не мешает написать небольшой букмарклет, который и позволит нам добавить требуемый функционал.

Весь код MCS находится в файле monopoly.1255614067.js. Если посмотреть firebug’ом, что происходит в процессе покупки здания — мы увидим, что используются 2 функции — MCS.BUILD.showLocations() (для отображения маркеров доступных мест) и MCS.BUILD.buyBuilding() (для, собственно, покупки здания). После размышлений у меня получился следующий код:

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

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

Опубликовано:

Однажды мне надоели жалобы клиентов, вроде “на моём сайте вирус, сделайте что-нибудь!”. Объяснять людям об опасности сохранения паролей от ФТП на небезопасной машине так же надоело. Гениальное оказалось рядом - обычно поражаются файлы index.* и default.* - так почему бы не отслеживать изменение этих файлов. Сказано - сделано.

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

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

Опубликовано:

Буквально вчера хабраюзер Arceny поведал нам об установке дебиана с USB-flash. В статье он упомянул о возможности установки С помощью загрузки по сети (PXE boot), благодаря чему я решил наконец написать материал по созданию сервера pxe boot.

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

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

Опубликовано:

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

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

Каскадирование Squid’ов

Опубликовано:

Во времена слишком дорогого анлима (64кбита — 1000руб), сотворили с товарищами кластер проксей, дабы увеличить суммарную пропускную способность. Время шло, цены менялись. Сейчас они уже более дружелюбны — мбитный анлим (с ночным удвоением скорости) стоит всё те же 1000руб. Но, не смотря на это, кластером всё ещё иногда пользуемся. Решил вот поделиться с общественностью методом создания такого добра, вдруг кому будет интересно.

Для опытов нам потребуется:

  1. 1 сервер с установленным на нём squid’ом + ещё какой-нибудь проксёй (если хотите, чтобы этот сервер был не только центральным, но и делился инетом). я расскажу про поднятие кластера на базе дебиана, 2 интернет-каналов и 3 сквидов (сквиды для родительских проксе выбраны по 2 причинам: из-за возомжности предоставления статистики по текущим соединениям; из-за лени искать альтернативу)
  2. Любое количество компьютеров, с любыми ОС и любыми http-проксями
  3. Опционально — апач, пхп и скрипт SqStat — для просмотря активности прокси
Читать дальше