Как стать автором
Поиск
Написать публикацию
Обновить
82
0
Алексей @fuCtor

Backend developer

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

Балансировка в Finagle: как работает и как сделать свой балансировщик

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1.9K

Finagle — библиотека от разработчиков Twitter. Ее используют для организации межсервисного RPC и построения mesh-микросервисной архитектуры. У библиотеки богатая функциональность по тонкой настройке и интроспекции, но сегодня мы рассмотрим клиентскую балансировку.

Читать далее

JRuby + Ratpack = ❤️

Время на прочтение8 мин
Количество просмотров5.2K

Многие разработчики на Ruby знают как обстоят дела с асинхронным выполнением кода на имеющихся серверах. Либо вы используете что-то на EventMachine, либо колдуете с Ruby::Concurrent, Celluloid.


В любом случае, это работает не сильно эффективно из-за GIL (ждем, надеемся и верим в Ruby 3).
Но есть реализации свободные от этой проблемы, одна из них поверх JVM — JRuby, где теже самые библиотеки будут чувствовать себя гораздо комфортней.


Много расписывать не буду, думаю все как минимум слышали про него. Главной особенностью данной реализации является легкая интеграция с любой библиотекой на JVM. Это открывает большой простор в выборе библиотек и готовых инструментов.

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

ВКонтакте запустил сервис денежных переводов

Время на прочтение2 мин
Количество просмотров51K
Сегодня ВКонтакте, похоже, выкатил новое обновление. Некоторые пользователи уже могли увидеть уведомления в чатах (в вэб-версии точно) о новом сервисе, с сегодняшнего дня пользователи социальной сети получили возможность делать переводы с пластиковых карт другим пользователям. Не знаю, всем ли открыт доступ, возможно, как часто у них бывает, обновление будет выкатывать волнами.

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

Прием уведомлений от внешних сервисов, или зачем был сделан Hooksler

Время на прочтение5 мин
Количество просмотров7.5K
В последнее время большую популярность приобрел сервис для командной коммуникации Slack. Из коробки он имеет немалое количество интеграций с различными сервисами + довольно удобное внешнее API. Но при всем при этом на бесплатных аккаунтах есть ограничение в 5 интеграций. Прицепили мы github, newrelic + пару досок с trello и все, количество их закончилось. Можно использовать универсальный Incoming WebHook, но он само собой имеет свой формат и никак не совместим с другими сервисами. Но программист не был бы программистом, если бы не решил эту задачу.
Читать дальше →

Горизонтальное масштабирование websocket-ов на Ruby

Время на прочтение6 мин
Количество просмотров8.8K
Не так давно вышла статья, в которой автор описывал свой framework для написания приложений с использованием Ruby, Sinatra и websoсket. Но в том решении не был затронут вопрос горизонтального масштабирования. Так при подключении к одному из узлов, пользователи могут получать уведомления/данные только о событиях/изменениях, вызванных пользователями этого же узла, а при изменениях, внесенных через другой, они не узнают. Для решения данной задачи необходимо организовать общую шину данных. Рассматривать данную задачу буду в контексте обмена сообщениями клиент-клиент.
Читать дальше →

Интеграция Ruby в Nginx

Время на прочтение6 мин
Количество просмотров14K


Уже достаточно давно существует всем известная связка Nginx + Lua, в том числе здесь был ряд статей. Но время не стоит на месте. Примерно год назад появилась первая версия модуля, интегрирующего Ruby в Nginx.
Читать дальше →

Подсчет статистики загрузок в Google Analytics

Время на прочтение3 мин
Количество просмотров9.8K

Продолжая тему использования связки Nginx + Lua решил поделиться небольшой инструкцией подсчета загрузки статических данных и учетом всего этого в Google Analytics.
Читать дальше →

Авторизация через Facebook, Google, Twitter и Github используя Omniauth

Время на прочтение16 мин
Количество просмотров31K
Озадачившись однажды вопросом добавление регистрации/входа на сайт через сторонние сервисы начал искать, что уже есть готового, либо описания как это уже кто-то делал. Готовые сервисы были откину сразу, остался вариант реализовывать самому. И тут Google навел на подробную инструкцию. Ознакомившись и вдохновленный тем решением сделал свою модификацию, все работало, был просто счастлив.

Спустя некоторое время решил посмотреть что-же еще есть на том ресурсе интересного, но к своему разочарованию сайт был не доступен. Слава кэшу Яндекса, откуда была выдернута копия того материала. И чтобы он не пропал безвозвратно, решил сделать его перевод и выложить здесь.

И так приступим...


Эта глава будет посвящена известному гему Omniauth. Omniauth это новая система идентификации поверх Rack для мультипровайдерной внешней идентификации. Он будет использован для связи CommunityGuides (прим: в настоящий момент ресурс не доступен и похоже уже не вернется) с Facebook, Google, Twitter и Github. Данная глава покажет как интегрировать все это с существующей идентификацией через Devise.
Читать дальше →

Неканоническое STI в Rails

Время на прочтение4 мин
Количество просмотров9.3K
Перед тем как начать повествование, вспомним что же такое STI.

STI (Single Table Inheritance) — паттерн проектирования, который позволяет перенести объектно-ориентированное наследование на таблицу реляционной базы данных. В таблице БД должно присутствовать поле идентифицирующее название класса в иерархии. Зачастую, в том числе в RoR, поле называют type.

С помощью данного паттерна можно создавать объекты, которые содержат идентичный набор полей, но имеют разное поведение. Например, таблица пользователей, содержащая имя, логин и пароль, но использовалось два класс пользователей Admin, Visitor. Каждый класс, содержит как унаследованны так и индивидуальный набор методов. Определение того, какой класс будет создан и используется поле type, имя поля может быть переопределено.

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

Но может случится иная ситуация…
Читать дальше →

Работа с моделями и делегатами на примере создания списка аля FireFox

Время на прочтение8 мин
Количество просмотров27K
Не раз проскакивали сравнения сложности построения интерфейсов на Qt. В данной статье приведу пример, как можно сделать список в стиле списка модулей FireFox.



Для этого воспользуемся MVC подходом, который реализован в Qt. На выходе получим что-то вроде этого:


Весь процесс разделим на 3 части:
  1. создание модели
  2. создание делегата
  3. создание представления


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

Launcher для Google AI Challenge Tools

Время на прочтение1 мин
Количество просмотров1.1K
Многие на Хабрахабр приняли участие в Google AI Challenge. Скачали инструменты для локального тестирования и уже ощутили прелесть и удобство их:
  • запуск с консоли;
  • десятки открытых страниц с симуляцией (мне лайв режим не нравится например), либо обновлять надо;
  • чтобы сделать новую симуляцию нужно править файл запуска;
  • и другие

Сидел я так, сидел и в один прекрасный день задумался, а почему бы не сделать мини инструмент, который бы все это объединял в одном месте и забыть про консоль.
Читать дальше →

Поддомены в Rails

Время на прочтение4 мин
Количество просмотров6.5K
Думаю каждый кто работал с под-доменами в Rails 3 видел данный скринкаст.

Когда столкнулся с этим примером стояла задача сделать динамические поддомены + некоторые фиксированные. Динамические должны были соответствовать некоторому полю одной из моделей. Таким образом были выдвинуты условия для конечного решения:
  • возможность указания фиксированного поддомена, либо группы поддоменов;
  • возможность привязки к полю из модели ActiveRecord;
  • удобный синтаксис для записи всего этого в routes.rb.
Читать дальше →

Открыта бесплатная регистрация своих адресов во ВКонтакте

Время на прочтение1 мин
Количество просмотров2.8K
Все помнят, что X месяцев назад администрация данной социальной сети предоставила возможность: за определенную плату заменить адрес своей страницы с vkontakte.ru/idXXXXXX на что-то более запоминающееся (vkontakte.ru/superbaby) + как отметил Alaska создается одноименный поддомен.
Зайдя сегодня утром после очередного перехода по страницам увидел сообщение, что не хотели бы заменить адрес на предложенный (адрес формировался из фамилии) и снизу соответственно согласен/не согласен. В тоже время если зайти в настройки то можно уже указать тот адрес который всеже хотелось бы.

image

image
Скриншоты LOtuSS

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

Создание смазывания фона под окном в Windows

Время на прочтение2 мин
Количество просмотров4K
Буквально вчера в блогах разработчиков Qt был опубликован топик, в котором описывалось как можно создать эффект размытия фона под окном приложения в Windows Vista и Windows 7.

Под катом его перевод

Notepad++ как инструмент для совместного редактирования текста

Время на прочтение1 мин
Количество просмотров3.1K
Думаю многие пользуются или пользовались текстовым редактором Notepad++. Данный редактор кроме своего базового функционала имеет не плохой набор плагинов. Так в последней сборке был обнаружен примечательный модуль под названием NppNetNote.
Читать дальше →

rWin 0.5 beta — клиент для rTorrent на Qt

Время на прочтение2 мин
Количество просмотров2.6K
Многим известен торрент клиент для Unix систем rTorrent. Его достоинством и недостатком является консольный интерфейс, но есть множество способов борьбы с ним, начиная от web интерфейсов (wTorrent), заканчивая frontend-ом написанным на Java (nTorrent). Лично сам пользуюсь web интерфейсом + screen в консоли. Все бы хорошо, НО за время использования (а это уже примерно как год) постоянно было неудобство со слежением за загрузками и регулировкой скорости закачки. Поэтому решил сделать небольшой клиент, который бы висел в трее, показывал скорость загрузки и другую полезную информацию.
Читать дальше →

Работа с альтернативными потоками данных через WinAPI

Время на прочтение5 мин
Количество просмотров11K
В прошлой статье я описал, что такое альтернативные потоки и как их можно использовать. Там были примеры работы с ними через командную строку, но можно делать тоже самое и программно стандартными средствами WinAPI.
Ниже дан свободный перевод части статьи, касающейся данного вопроса.
Читать дальше →

Альтернативные потоки данных в NTFS или как спрятать блокнот

Время на прочтение2 мин
Количество просмотров59K

Введение


Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.
продолжение

Использование различных изображений на каждом мониторе в Vista или XP

Время на прочтение1 мин
Количество просмотров23K
Используете ли вы для работы два монитора? И не возникало ли желание установить изображение рабочего стола для каждого экрана в отдельности? Думаю что возникало, но, попробовав сделать это, возникла проблема. Проблема заключалась в том, что Vista не позволяла установить различные изображения, а ставила на обоих мониторах одинаковое. Тогда в поисках ответа на вопрос «Как это сделать?» нашел следующее решение.
Решение под катом

Идея сервиса: PC-Линч

Время на прочтение2 мин
Количество просмотров560
Почти на всех более или менее посещаемых форумах есть раздел посвященный компьютерному железу. И не редко там появляются топики вида «оцените сборку» или «помогите собрать компьютер». И тогда пришла в голову идея…
Читать дальше →

Информация

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

Специализация

Backend Developer
Lead
Scala
Git
Docker
Redis
High-loaded systems
Designing application architecture
PostgreSQL