Size: a a a

2020 January 28
2pegramming
Напомню, что пробую вернуть стримы обратно, поэтому завтра первый стрим после длинного перерыва. Соберем руби кор и может пофиксим простой баг или напишем тестов. А так же запустим рандомную библиотеку на мастере руби
источник
2020 January 29
2pegramming
Начинаем стрим

https://www.twitch.tv/davydovanton
источник
2020 January 31
2pegramming
Пятничное чтиво

На этой неделе прошел первый стрим после перерыва. Видео обработал, планирую на выходных выложить на ютуб. А старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

JIT and Ruby’s MJIT

На прошлой неделе добавил статью о MIR, а на этой - статья о работе JIT в руби. Статья отвечает на популярные вопросы, которые могут возникнуть у разработчика. Например, рассказывается о плюсах и минусах jit, а также о MJIT и мыслях автора о будущем инициативы. Если интересен текущий статус JIT в руби - однозначный мастхев.

—————————————

Ruby Concurrency Progress Report

Мейнтейнер async рассказывает текущий статус async. Почему статья интересна: проект получает деньги от 2019 Ruby Association Grant,  автор общается  с Матцом и Коичи и является руби кор разработчиком, проект легко встраивается в руби. Основываясь на этой информации, могу предположить, что предположительно руби кор будет сотрудничать с этим проектом, а возможно проект переедет в руби кор. Поэтому советую не только статью из заголовка, но и весь блог.

—————————————

Oban UI

que-rb/que
Turning PostgreSQL into a queue serving 10,000 jobs per second

PubSub почти бесплатно: особенности NOTIFY в PostgreSQL

Message Queues in Database Transactions

На прошлой неделе была статья об очереди задач на postgres. Поэтому сегодня 2 библиотеки, которые реализуют очереди на постгресе и 3 статьи как это сделать. Советую последнюю статью, там подробно рассказывается о том, как
можно сделать систему с отправкой сообщений через постгрес и какие ошибки могут возникнуть.

——— одной строкой ———

- TIL — git switch & git restore | http://amp.gs/uCUc
- Краткая выжимка книги Clean code
источник
2020 February 07
2pegramming
Пятничное чтиво

Выложил запись стрима на ютуб. На следующей неделе стрим, разберем как работает kafka и avro, запустим schema registry. Старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Error handling with Monads in Ruby

Вижу споры о валидности применения exeptions для bussines flow последние восемь лет. Каждый раз думаю написать статью на эту тему и каждый раз забиваю (хотя черновики остались). Сегодня статья, которую буду использовать каждый раз, когда увижу подобный спор опять.

Ждите подробный разбор концепции ошибки, какие абстракции еще используются (в пример ставится го) и какие проблемы приносит данная абстракция. В конце автор приходит к result objects с монадами. В примерах будет bind и DO notation. Однозначный мастрид недели.

—————————————

ROM and Dry Showcase: Part 1
ROM and Dry Showcase: Part 2

Ryanbigg начал серию статей о rom-rb и dry-rb. Если до этого обходили стороной rom и dry-system, статья вводят в курс дела и показывают как настроить каждую из библиотек.

В первой части рассказывается о rom: что такое и как работают репозитории/энтити, показывается как настроить rake таски для миграций и db:setup, объясняется концепция релейшенов.

Во второй части описывается dry-system: что это такое, как работать с контейнером, как регистрировать зависимости. В дополнение советую прочитать документацию к dry-system, где подробнее рассказывается о времени жизни зависимостей, плагинах и использовании изолированных контейнеров между собой.

—————————————

Protecting Your GraphQL API From Security Vulnerabilities

Cтатья-чеклист по защите GQL API. Рассказывается о лимите вложенности, переборе мутаций, использовании сессий, проблеме выполнения долгих запросов и раскрытия GQL имплементации. Некоторые вещи уже легко реализуются в руби, некоторые придется писать руками. Стоит сделать обычный чек лист выкатки API в продакшен и проверять по нему работу каждого эндпоинта перед деплоем. Жду CI шаг на проверку всех шагов в будущем!

Русский перевод

——— одной строкой ———

- pg_timetable: Advanced PostgreSQL job scheduling;
источник
2020 February 12
2pegramming
Сегодня стрим. Запустим кафку, разберёмся с авро и посмотрим зачем это вообще надо
источник
2pegramming
Начало в 20:30 по Москве
источник
2pegramming
Начинаем стрим

https://www.twitch.tv/davydovanton
источник
2020 February 13
2pegramming
Запись вчерашнего стрима уже на ютубе

https://youtu.be/K-gYVNnxVcY
источник
2020 February 14
2pegramming
Пятничное чтиво

Выложил запись стрима о kafka, avro и schema registry на ютуб. Старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Wrangling slow reports, large file exports, and long-running tasks in Rails with ActiveJob

Лонгрид по бэкграунд джобам в руби (примеры на рельсе, но и в других фреймворках работать будет похожим образом). Описываются симптомы, когда стоит начать использовать бэкграунд джобы и подробно рассматриваются существующие варианты. Из интересного - bad/good секции с примерами.

Добавлю собственные мысли:
- не верю в global ID, хотя не отрицаю того, что не смог понять концепцию до конца;
- в примере с разбивкой большой джобы на мелкие: стоит также добавить тег родительского jid для логгирования, чтобы проще понять что конкретно сломалось (своеобразная трассировка);
- Люблю пример с отправкой данных по почте, вместо показа данных сразу. Так, например, делает гугл, когда хочешь забрать аналитику по аккаунту. Жалко, что редко используются в мелких/средних проектах;

—————————————

Evaluating Ruby in Ruby

Вдохновившись instruction sequences в руби, автор написал код, который выполняет похожие последовательности инструкций, но только на руби, получилось в 100 раз медленнее. Стоит приготовиться, что это длинная статья с большим количеством примеров кода. Если у вас много времени и большое желание разобраться с YARV - однозначный мастрид.

—————————————

Deploy Machine Learning Models from R Research to Ruby / Go Production with PMML

В статье рассказывается о Predictive Model Markup Language, который позволяет использовать МЛ модели в других языках. Такой подход может помочь, если не хочется писать микросервис на питоне или R для мл модели. В статье показывается как написать модель на языке R, а потом экспортировать в pmml файл. После чего автор делиться библиотеками для руби и го, которые позволят использовать pmml файл прямо в языке. Думаю подобный подход оправдает себя, когда нужно быстро написать модель и интегрировать в проект как можно быстрее. Если у вас есть подобный опыт - будет интересно почитать о чужом опыт.

——— одной строкой ———

- Pavel Stehule’s blog: psql and gnuplot
источник
2pegramming
Ссылку на стрим указал не правильную в ссылках. Правильная тут


https://youtu.be/K-gYVNnxVcY
источник
2020 February 21
2pegramming
Пятничное чтиво

На следующей неделе стрим, будем делать проект с CQRS. Старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

How I MITM’d http://amp.gs/Jl3h … Kinda

История MITM взлома, начавшаяся с опечатки в http://amp.gs/Jl3g. Автор рассказывает, как купив домен rubgems, пытался совершить Man in the middle атаку. В статье рассказывается как работает gem install и bundle install, а также объяснение, почему bundle install может быть потенциально опасным. H читается на одном дыхании, а концовка заставляет задуматься о том, что же делать с секьюрити rubygems. К примеру, Maciej Mensfeld (автор karafka) в этом году расскажет о проекте, который поможет справится с подобными проблемами.

—————————————

On schedule - ITNEXT

Текст об отложенном выполнении кода, которого мне не хватало. Через практику использования loop, который определяет когда и что вызвать, автор приходит к двум практикам.

Starting a scheduled job dedicated process
Когда шедулер вызывает код на прямую. Пример: cloud native orchestrator может запустить rake таску, которая поднимет инстанс и выполнит команду к определенному времени.

Use standing by workers
Сервис шедулер, отправляет сообщение что пора вызывать код. А воркер уже выполняет необходимый код. Первый пришедший в голову пример - отдельный сервис с cron, который вызывает сайдкик воркеры + сайдкик сервис, который обрабатывает джобы.

Кроме самих паттернов рассказывается о подводных камнях, scheduling limits и high availability scheduling.

—————————————

Dry-struct use cases

Лонгрид от Андрея, который работал со мной над большим проектом в топтале. Автор рассказывается как взять драй библиотеки (схему, валидацию и типы) и сделать контракт чек для эндпоинта. А так же показывает хак, который поможет сериализовать данные из dry-stuct объекта. И описывает почему дебаг структурированных объектов занимает меньше времени чем объектов без типизации.

——— одной строкой ———

- Conference Talk Proposal Examples
источник
2020 February 24
2pegramming
Переслано от wi11son
Ребята, привет. Прошу вашей помощи мне в моих изысканиях. Итак, я делаю доклад на Wroclove.rb, по теме использования CLI утилит и создания инструментария для себя. Для этого я хоочу проанализировать истории команд в bash/zsh, найти какие-то паттерны и возможно придумать эту самую утилиту, или хотя бы показать, что можно было бы улучшить.

Поскольку просить просто предоставить ваши хистори не круто, как оказалось в ней может храниться много чувствительной информации, я написал cli-утилитку, которая вырезает:
1) все значения после =, таким ообразом сам факт присутствия env, остается, но значения фильтруются
2) email'ы
3) ipv4 и ipv6
4) все урлы

Как оказалось, это недостаточно, поэтому можно запустить утилитку с флагом -s

например: history_filtered --skip=ssh,scp,rspec
и тогда строчки с такими командами не попадут в выдачу

но и это не всё, там так же есть флаг -e после которого можно передать свою регулярку, если чего-то всё же я упустил.

плз, поделитесь историями в личку, Спасибо
источник
2020 February 25
2pegramming
Привет!

Завтра стрим, в 20:00 по Москве. Возьмём Sinatra, dry-system, rom, kafka и сделаем блог с комментариями по канонам CQRS. Так же поговорим о том, зачем нужен подход и как его ещё можно использовать. А так же, почему его так любят озвучивать, когда дело касается event sourcing
источник
2pegramming
Мы снова делаем RailsGirls! (3 и 4 апреля в спб)
https://vk.com/railsgirls_spb
Делитесь с подругами, которые ещё не программируют, но хотят начать 👩🏻‍💻✨
источник
2020 February 26
2pegramming
Начинаем стрим

https://www.twitch.tv/davydovanton
источник
2020 February 27
2pegramming
Выложил запись вчерашнего стрима на youtube. Теперь это официально самое долгое видео на канале
https://youtu.be/_tiiYZGMsUs

Так же, ссылка на репозиторий с исходным кодом
https://github.com/davydovanton/cqrs-ruby-example
источник
2020 February 28
2pegramming
Пятничное чтиво

В субботу буду выступать на Winter Meetup в спб, расскажу о SOA в топтале, стикеры тоже будут. В среду провел стрим, делали блог платформу с CQRS, kafka, rom-rb, dry-rb и сервисами. Старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

Deep Dive

Находка февраля. На сайте автор собирает детальное объяснение того, как работают библиотеки в руби. Уже описана работа minitest, did you mean и rackup. В случае Minitest автор пишет собственную реализацию с нуля, а в did you mean и rackup рассматривается уже существующий код. Если хотелось разобраться как работают популярные библиотеки - однозначный маст хэв.

—————————————

Observability: как наблюдать за системой?
Подробная статья об обсервабилити. Статья от позиции архитектора, поэтому автор, вместо очередного рассказа, как писать логи или настраивать ELK, расскажет о стоимости обсервабилити, рассекается об атрибутах качества (подробнее в первой главе книги с кабанчиком и в книге по эволюционным архитектурам). Понравилась часть о компромиссах и объяснении уровней наблюдаемость, в которой объясняются различия между аудитом, логами, метриками процесса и бизнес метриками.

—————————————

When microservices fail…

Метассылка, в которой найдете список из 73 ресурсов на проблемы и файлы компаний, пытавшихся построить микросервисную архитектуру. Для себя открыл Self-contained System, а в качестве чтения советую Why Microservices Fail и Istio as an Example of When Not to Do Microservices. Статьи разделены по категориям, единственное, нет разделения на вид контента (блог, слайды, выступление)


——— одной строкой ———

- Introducing Hanami::API. It’s a minimal, extremely fast, lightweight Ruby framework for HTTP APIs.
- Pow is a robust, modular, and extendable authentication and user management solution for Phoenix and Plug-based apps.
источник
2020 March 06
2pegramming
Пятничное чтиво

В среду будет новый стрим, попробуем разобраться с распределенными блокировками и напишем реализацию на ruby. А так же, возможно, успеем написать блокировку с использованием zookeeper. Старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

http://amp.gs/JHtw

Под идемпотентностью подразумевают способность метода не менять состояние при повторных вызовах. Часто такая проблема возникает при дублировании запросов на создание. Например: в поезде не стабильное интернет соединение, поэтому клиент 2 раза посылает запрос на создание данных. Идемпотентность не всегда критична, но иногда отсутствие заставляет пользователя платить два раза. Ребята из Яндекс.Такси, используя ежедневные примеры, рассказывают что такое идемпотентность в API. Понравился сторителлинг, через который объясняется мотивация “Васи” и проблемы, которые возникают при желании залатать ошибки. Радует, что примеры не закончились созданием записи, но и так же объяснили что делать для идемпотентного удаления и посылки нотификаций. Однозначный мастрид.

—————————————

http://amp.gs/JHtF
http://amp.gs/JHtX

В прошлом году, каждая архитектурная статья ссылалась на термин Service mesh. статья выше предоставляет информацию о том, что же это такое и почему сервис меш так важен в клауд инфраструктуре.

Русский перевод http://amp.gs/JHtL

—————————————

http://amp.gs/JHta

В прошлую субботу выступал на митапе в питере, где рассказывал, что сервисная архитектура сложна не только с технической точки зрения, но и с концепций о которых надо знать и которые надо помнить. Поэтому сегодня последней ссылкой будет сборник информации по микросервисам. Ссылка - entry point в мир микросервисов, так как там поверхностно описываются следующие темы:

- Определение характеристик микросервиса;
- Плюсы, которые можно использовать для продажи сервисов бизнесу;
- Список  Concerns которые желательны для полноценной работы микросервисной архитектуры;
- описание паттернов: API gateway, Event bus, Service Mesh, Backends for Frontends (BFF);
- 12 полезных практик в микросервисных архитектурах;
- список ситуаций, которые могут быть улучшены микросервисами;
- библиотеки (большая часть для джавы);
- Architecture Suggestions;

Если хотите помочь со бором информации - завел гитхаб репозиторий, в котором хочу собирать информацию по концепциям, о которых стоит помнить.

——— одной строкой ———

- Релиз dry-cli v0.6 от @wi11son
источник
2pegramming
источник
2020 March 10
2pegramming
pepegramming
Пятничное чтиво

В среду будет новый стрим, попробуем разобраться с распределенными блокировками и напишем реализацию на ruby. А так же, возможно, успеем написать блокировку с использованием zookeeper. Старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму.

—————————————

http://amp.gs/JHtw

Под идемпотентностью подразумевают способность метода не менять состояние при повторных вызовах. Часто такая проблема возникает при дублировании запросов на создание. Например: в поезде не стабильное интернет соединение, поэтому клиент 2 раза посылает запрос на создание данных. Идемпотентность не всегда критична, но иногда отсутствие заставляет пользователя платить два раза. Ребята из Яндекс.Такси, используя ежедневные примеры, рассказывают что такое идемпотентность в API. Понравился сторителлинг, через который объясняется мотивация “Васи” и проблемы, которые возникают при желании залатать ошибки. Радует, что примеры не закончились созданием записи, но и так же объяснили что делать для идемпотентного удаления и посылки нотификаций. Однозначный мастрид.

—————————————

http://amp.gs/JHtF
http://amp.gs/JHtX

В прошлом году, каждая архитектурная статья ссылалась на термин Service mesh. статья выше предоставляет информацию о том, что же это такое и почему сервис меш так важен в клауд инфраструктуре.

Русский перевод http://amp.gs/JHtL

—————————————

http://amp.gs/JHta

В прошлую субботу выступал на митапе в питере, где рассказывал, что сервисная архитектура сложна не только с технической точки зрения, но и с концепций о которых надо знать и которые надо помнить. Поэтому сегодня последней ссылкой будет сборник информации по микросервисам. Ссылка - entry point в мир микросервисов, так как там поверхностно описываются следующие темы:

- Определение характеристик микросервиса;
- Плюсы, которые можно использовать для продажи сервисов бизнесу;
- Список  Concerns которые желательны для полноценной работы микросервисной архитектуры;
- описание паттернов: API gateway, Event bus, Service Mesh, Backends for Frontends (BFF);
- 12 полезных практик в микросервисных архитектурах;
- список ситуаций, которые могут быть улучшены микросервисами;
- библиотеки (большая часть для джавы);
- Architecture Suggestions;

Если хотите помочь со бором информации - завел гитхаб репозиторий, в котором хочу собирать информацию по концепциям, о которых стоит помнить.

——— одной строкой ———

- Релиз dry-cli v0.6 от @wi11son
К сожалению, на работе завал, поэтому стрим переноситься на следующую неделю 😞
источник