Search
Write a publication
Pull to refresh
5
0
Андрей @UncleAndy

User

Send message

Почему мотоцикл не смог заменить танк, или перевод сайта REG.RU с Template::Toolkit на Text::Xslate

Reading time7 min
Views5.8K
За любым крупным интернет-проектом стоит автоматизированная информационная система и сайт, продающий товары или услуги. Чем крупнее проект, тем сложнее логика сайта, и тем большую нагрузку ему приходится нести. Возникают задачи увеличения «мощности» сайта и уменьшения времени отклика страниц. Как и все, кто пишет подобные системы, периодически мы проводим сессии по тюнингу скорости работы нашего сайта. Оптимизируем всё, до чего можем дотянуться. На определённом этапе упёрлись в скорость работы HTML-шаблонизатора, который сходу не совсем понятно как «разогнать». Кое-что удалось выжать с помощью кэширования подшаблонов, но, несмотря на полученные позитивные результаты, время работы шаблонизатора всё равно оставалось краеугольным камнем в скорости генерации страниц. Нужны были более радикальные меры, возможно даже другие шаблонизаторы…

Об истории одной из наших инициатив в нелёгком деле поиска Святого Грааля самого быстрого шаблонизатора читайте ниже в подробном отчете Дмитрия Карасика, который был привлечён к решению этой задачи:

«По-моему, сейчас все используют шаблонизаторы для веб-девелопмента. Все используют и потихоньку ругаются на несовершенство выбранного инструмента. Ведь миграция развесистого проекта на другой шаблонизатор – дело весьма непростое, поэтому гораздо чаще люди предпочитают что-то допиливать в уже существующем пакете, чем переписывать массу кода с неизвестным результатом.
Читать дальше →

Gem ice_cube для повторяющихся событий

Reading time3 min
Views4.5K
В некоторых проектах требуется дать возможность пользователю настроить правила для повторяющихся событий. Иногда правила событий могут быть достаточно сложными, к примеру, “каждый предпоследний день месяца” или “каждую вторую пятницу месяца до определенной даты“. Для решения подобных задач можно успешно применять gem ice_cube.
Читать дальше →

AWS Insight: Как работают Placement Groups

Reading time2 min
Views4.9K
Привет! image

У многих есть проекты с «хайлоадом». Немногие используют кластеры на AWS. И те, кто всё-таки их используют, должны использовать Placement группы.

Что это такое


Placement Groups (Группы размещения) — логические объединения кластерных типов AWS инстансов, позволяющие уменьшить сетевые задержки. AWS гарантирует скорость в 10 Gb между серверами, запущенными в одной плейсмент группе. Чисто теоретически, эти инстансы запускаются географически рядом.

При обычном размещении инстансов получается приблизительно следующая картина:

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

AWS Insight: Как работает ELB

Reading time2 min
Views14K
Привет! image

Хочу поведать читателям Хабрахабра о сервисе Elastic Load Balancer, который входит в состав Enterprise Compute Cloud. Многие давно уже пользуются сервисом ELB, но не знают как работает сервис изнутри. Я немного владею этой информацией — многочасовые митинги с саппортом AWS иногда гораздо познавательнее документации на сайте.

Итак, начнём с основ, потом перейдём к нюансам.

Что такое ELB.


Elastic Load Balancer — это сервис, предоставляющий балансировку запросов между инстансами EC2/VPC. Соответственно есть 2 типа ELB, которые
  • видны из интернета — EC2/VPC
  • не видны из интернета — VPC
Читать дальше →

AWS: IAM роли для серверов

Reading time1 min
Views6.1K
Привет! image

Я хочу рассказать о фиче IAM ролей для серверов в AWS. Роль — это совокупность прав доступа, которые можно применить к серверу. Можем рассмотреть на определённом примере — дать доступ серверу к S3, не забивая никаких ключей вручную.

Приступим к примеру.

1. Создадим роль с нужными правами


Идём в консоль IAM и там создаём роль S3.

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

Квадрокоптер дополненной реальности — обзор AR.Drone 2.0

Reading time9 min
Views156K
На прошедший недавно ДР мне подарили AR.Drone 2.0. На хабре были обзоры первой версии, а я хочу рассказать что же изменилось во второй и поделиться впечатлениями от использования этого квадрокоптера.
По позиционированию разработчиков, AR.Drone это не только ценный мех просто квадрокоптер (некоторые читают название как Эир Дрон), а квадрокоптер с задумкой под идею дополненной реальности (Augmented Reality Drone). Дрон работает на Linux, управление им осуществляется с iOS и Android устройств, для него есть игровые приложения дополненной реальности, а еще у него открытый API.
Но давайте по-порядку...

Многопользовательский биллинг в Amazon Web Sevices

Reading time2 min
Views7.2K
Привет хабрасообщество! image

Есть большие проекты с отдельными аккаунтами и множеством IAM пользователями. Но чаще встречаются более мелкие клиенты, и тут хотелось бы собрать всех вместе, но биллить их отдельно. Как же это сделать? Как выставлять счёт разным клиентам под одним аккаунтом AWS? Я сейчас об этом и расскажу.

Тегирование


Для разделения ресурсов и многопользовательского биллинга в AWS используются теги. Тегирование можно приладить ко всему, что угодно. Разного рода трафик, операции ввода-вывода, RDS, SQS, S3 и т.д. можно считать отдельно по тегами. Итак, возьмём главным тег PROJECT и применим его ко всем серивсам, например:

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

Борьба с DDoS глазами Highload Lab

Reading time15 min
Views73K
O трендах и тенденциях в DDoS-атаках рассказывает создатель Highload Lab и сети фильтрации трафика QRATOR Александр Лямин. Интервью мы брали еще в начале года, но изменилось пока немногое



DDoS-атаки появились на заре интернета. Знакомство с ними для меня лично началось во время проекта IT Territory в 2003 году, когда игра только стартовала. Она имела достаточно агрессивную рекламную кампанию, в ответ на которую тут же прилетел DDoS от конкурентов. Скажу честно, я растерялся. Больше всего из-за того, что компания, которая оказывала хостинг-услуги, не просто не смогла, а не пожелала бороться с атакой. Ее представители сказали, что это не их проблема.
Читать дальше →

Ruby на вашем сервере может работать в 2 раза медленее из-за RVM

Reading time2 min
Views17K

Просматривая сегодня «Ruby Inside», наткнулся на статью Justin Kulesza Is Your Application Running with Ruby – Slow?. Статья от 6 ноября, но на Хабре об этой ситуации ни слова. А суть статьи вот в чем: ребята переносили свое приложение с сервера на Solaris на сервер с Ubuntu и использовали RVM для компиляции Ruby. Однако после переноса они заметили, что приложение стало как-будто бы тормознутее. Сначала погрешили на железо, но быстро выяснили, что дело в RVM, а именно в том, что RVM совершенно не использует оптимизацию при компиляции.
Читать дальше →

EventMachine ⇒ сбор информации из разных источников с последующей обработкой

Reading time3 min
Views9.2K

Самый простой способ наступить на грабли — использовать асинхронность. Я знаком с программистами, зарекомендовавшими себя как крепкие профессионалы, которые буквально пасовали перед многопоточностью. Для затравки расскажу мою любимую историю про deadlock (прошу прощения за боян, но уж больно хорош). Лет десять назад Associated Press поведало миру, как в аэропорту шведского города Крисианстад пилот пытался посадить пассажирский самолет, однако никто из диспетчеров не ответил на его запрос. Оказалось, что диспетчер еще не вернулся из отпуска. В итоге самолет кружил над аэропортом, пока срочно не вызвали запасного диспетчера, который и
посадил самолет через полчаса. Разбор полетов показал, что причиной стало опоздание самолета. На борту которого и находился тот самый диспетчер, спешивший на работу из отпуска.

Итак, когда мы сталкиваемся с асинхронностью, нам приходится ломать привычную картину в голове: субъективно окружающий нас мир однопоточен. Если мы послали письмо, а через неделю получили ответ, для нас все происходит в пределах одного потока; нам не приходится отвечать за действия респондента и почтальона. А нашему коду — приходится.
Чтобы упростить жизнь программиста, можно использовать паттерн Реактор. Лучшая (на мой взгляд) его имплементация для руби — EventMachine. Но и с ней бывают не очевидные моменты. Об одном из них я и планирую вкратце рассказать.
Читать дальше →

Кто использует Node.js: Trello (Часть 2)

Reading time5 min
Views16K
Это продолжение перевода «The Trello Tech Stack».

Часть 1
  • CoffeeScript
  • Клиент
    * Backbone.js
    * HTML5 History API
    * Mustache
  • Pushing and Polling
    * Socket.io and WebSockets
    * AJAX запросы

Часть 2
  • Сервер
    * node.js
    * HAProxy
    * Redis
    * MongoDB
  • Итак, нравится ли нам это?

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

Цветовые профили и их использование

Reading time3 min
Views99K
Сразу оговорюсь, что я и близко не являюсь профессионалом в области обработки изображений, но хочу поделиться с вами кое-какими полученными знаниями (с примером). Очень надеюсь, что информация будет для вас полезной.

При работе с изображениями многим приходилось сталкиваться с понятием «цветовой профиль». Откуда оно взялось? По определению, цветовой профиль — это набор данных, описывающих устройство цветного ввода или вывода (монитор, принтер и так далее). Профили определяют требования к внешнему виду через соответствия между пространствами цветов и PCS (Profile Connection Space). Пространство связи профиля может быть XYZ или LAB, а соответствия обычно задаются таблицами или «картами».
Читать дальше →

Работа с временем в Google

Reading time2 min
Views53K

Высокоточный рубидиевый осциллятор PRS10

Компания Google решила отказаться от использования NTP (Network Time Protocol) и создала свою собственную систему проверки времени с GPS и атомными часами, более точную и надёжную. Её назвали TrueTime API. Система работает для обеспечения целостности крупнейшей в мире базы данных Google Spanner, распределённой по всему миру.
Читать дальше →

Веб-сервер за рубежом + статика в России = ускорение скорости загрузки страницы

Reading time3 min
Views17K
Самый частый вопрос при выборе зарубежного хостера (на примере Hetzner): «Не будет ли сайт тормозить»? Несмотря на то, что ping к Hetzner из России достаточно мал, статика (особенно тяжелая или если ее много) с серверов, размещенных в России, отдается быстрее.

Есть несколько вариантов увеличения скорости оставаясь в Hetzner:

1. Использование российских CDN-сервисов.
2. Проксирование/кэширования статики через сервер/vps, размещенный в России.

Я расскажу, как технически реализовать проксирование/кэширование статики с помощью nginx через сервер, размещенный в России.

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

PCI-E SSD накопитель OCZ Z-Drive R4

Reading time4 min
Views21K
IT технологии развиваются семимильными шагами, и достаточно молодая технология SSD тому прямое подтверждение. Ещё не так давно только появлялись первые модели SSD накопителей, не так давно цены на них стали приемлемыми для использования в рабочих станциях и серверах, и вот уже, SSD накопители потихоньку подходят к ограничению SATA интерфейса, упираясь в доступные 6 гигабит в секунду. Рассказом о OCZ Z-Drive R4 я хотел бы продолжить наш небольшой цикл обзоров PCI-E SSD накопителей (в конце которого, мы подведём итоги, сравним различные модели различных систем хранения данных и постараемся определить — что же и для каких целей в настоящий момент лучше всего использовать). Начинали мы с уже достаточно старенькой модели Fusion-io ioDrive Duo, а продолжим прошлогодней, предназначенной для корпоративного сегмента моделью от <a href=«www.advanserv.ru/products/pci-e-ssd/ocz-technology/z-drive-r4-solid-state-drives--c-series.
Читать дальше →

От идеи до гаджета. Путь «Самурая» в России (часть 2)

Reading time6 min
Views43K

Добрый день!
Продолжу рассказ о создании защищенной флешки Samurai. Первую часть рассказа Вы можете прочесть здесь — От идеи до гаджета. Путь «Самурая» в России.
Когда идея была более или менее сформулирована, мы приступили к ее реализации.

Прототип (ноябрь 2007)


Сначала был разработан макет флешки, размеры которого нас особо не тревожили. В итоге он получился размером с пачку сигарет.
В момент разработки появился клиент, который немедленно приобрел 20 таких «флешек». Это была плата, обтянутая термоусадкой, с выпуклостями от кнопок клавиатуры.
Читать дальше →

IBM провела симуляцию нейрокомпьютера, сопоставимого с мозгом человека

Reading time2 min
Views76K
На конференции Supercomputing 2012 компания IBM представила результаты работы нейросимулятора Compass на суперкомпьютере Sequoia (второе место в мировом рейтинге суперкомпьютеров). Впервые был достигнут масштаб, соответствующий человеческому мозгу — 530 миллиардов нейронов и 137 триллионов синапсов. Симуляция происходила в 1542 раза медленнее реального времени. В ней были задействованы все 1 572 864 ядер и полтора петабайта памяти.

Compass — система симуляции новой компьютерной архитектуры TrueNorth, которую в IBM называют «старшим братом Watson». В отличие от привычных нам компьютеров, основанных на архитектуре фон Неймана, TrueNorth построен по образу и подобию мозга, на базе разработанных IBM "нейросемантических ядер" — чипов, содержащих кремниевые нейроны и синапсы. Каждый чип содержит 256 нейронов, 1024 аксона и 256х1024 синапса. Площадь чипа, произведённого по 45-нанометровой технологии — 4.5 мм2. В рекордной симуляции была смоделирована работа 2084 миллиардов таких ядер.
Читать дальше →

Простой и очень бюджетный способ получить надежную спам защиту для своего почтового сервера

Reading time3 min
Views24K
Полгода назад передо мной встала серьезная задача — перевести всех пользователей средней по размеру компании (100 человек) с многочисленных личных почтовых ящиков на единый корпоративный почтовый сервер (в данном случае Exchange — уже была лицензия, но тема моего пост касается любого почтового сервера). Пользователи уже привыкли к своим интерфейсам (mail.ru, yandex, gmail и т.д.) и надежности работы данных почтовых систем, и главное — минимальному количеству получаемого спама. Т.к. компания небольшая, то речи о выделении бюджета на полноценное резервирование не шло (доступный ресурс — один виртуальный сервер и один внешний ip адрес) и на покупку хорошего сервиса спам-защиты. Но мне кажется, я нашел идеальное решение в этой ситуации — как минимизировать спам и заодно получить дополнительное резервирование.
Читать дальше →

PostgreSQL — Asynchronous Replication + Pooling + Failover

Reading time4 min
Views15K
Вариант простой для понимания асинхронной master-slave репликации на базе Postgresql 9.1


Впервые встала задача единоличной реализации полноценной репликации и впервые был написан мини-мануал, который и хочу здесь представить.

Для системы репликации Мастер-Слейв использовалась комбинация
  • PostgreSQL 9.1 (БД) +
  • Bucardo 4.5 (репликатор) +
  • PgPool-II (пулер и файловер)

А дальше по порядку..

Силовые тренировки: раскатываем HTTPS под высокими нагрузками

Reading time6 min
Views17K
В сентябре Почта Mail.Ru включила HTTPS-шифрование для всех пользователей.

Преимущества защищенного соединения очевидны всем разработчикам крупных интернет-проектов. Большинство современных web-серверов (nginx, Apache, etc) и браузеров поддерживают HTTPS. В то же время сайтов, на которых безопасный протокол включен всегда и по умолчанию, не так много. Почему это так? С какими трудностями мы столкнулись при поддержке HTTPS? Читайте под катом.
Читать дальше →

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Date of birth
Registered
Activity

Specialization

Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis