Расшифровка моего интервью с автором Ruby
Во время осенней конференции Ruby Russia я, на правах организатора, поймал в кулуарах автора Ruby и устроил ему часовой

Динамический высокоуровневый язык программирования
Lowkiq — это новый сервер упорядоченной обработки фоновых задач для ruby и redis. Он был создан в компании BIA-Technologies, разрабатывающей логистические решения.

В этой статье я расскажу о проблемах обработки фоновых заданий, с которыми мы столкнулись, и о их решении.
REPL в мире наколенной разработки расшифровывается как Read → Evaluate → Print Loop. Зачитали, выполнили, напечатали, и так много раз.
Ruby, как и многие другие языки, поставляется с собственной реализацией REPL под названием irb. Который, хотя и справляется с примитивными задачами, все-таки полностью удовлетворить запросы взыскательного разработчика не может. Но существует и гораздо более развитая альтернатива: pry.

Привет, я Саня — iOS-разработчик в Surf, и в этой статье поделюсь своим способом решения головной боли, которая возникает при работе на проекте с несколькими таргетами.

Недавно я написал небольшой гем для валидаций и хотел бы поделиться с вами его реализацией.
Идеи, которые преследовались при создании библиотеки:
Почти все эти пункты завязаны на первом — простоте. Итоговая реализация невероятно маленькая, поэтому я не отниму у вас много времени.
С исходным кодом можно ознакомиться здесь.
Эликсир позаимствовал из Эрланга многое. Например, оба — языки с динамической
типизацией (что прекрасно, что бы вам там категоричные строгие типы в касках
не говорили). При этом, в обоих языках присутствуют расширенные возможности для
проверки типов, когда это надо.
Вот введение в typespecs, а вот здесь можно ознакомиться с ними подробнее.
Если вкратце, мы можем определить спецификацию сигнатуры функции, и если вызов не соответствует объявленным ожиданиям, статический анализатор кода, известный как dialyzer, заругается. Формат этих спецификаций выглядит довольно изящно:
@spec concat(binary(), any()) :: {:ok, binary()} | {:error, any()}
def concat(origin, any), do: origin <> IO.inspect(any)








Различные аспекты эксплуатации DNS уже неоднократно затрагивались автором в ряде статей опубликованных в рамках блога. При этом, основной акцент всегда делался на повышение безопасности этого ключевого для всего Интернет сервиса.

До последнего времени, несмотря на очевидность уязвимости DNS трафика, который, до сих пор, по большей части, передаётся в открытом виде, для злонамеренных действий со стороны провайдеров, стремящихся повысить своих доходы за счёт встраивания рекламы в контент, государственных силовых органов и цензуры, а также просто преступников, процесс усиления его защиты, несмотря на наличие различных технологий, таких как DNSSEC/DANE, DNScrypt, DNS-over-TLS и DNS-over-HTTPS, буксовал. И если серверные решения, а некоторые из них существуют уже довольно долгое время, широко известны и доступны, то поддержка их со стороны клиентского программного обеспечения оставляет желать много лучшего.