Страница телеграм канала Pepegramming

pepegramming logo

Pepegramming

587 подписчиков

Грустно о программировании. Все проблемы сюда: @davydovanton Ссылки на конкретные посты: http://telegra.ph/Pepegramming-Contents-03-11 Обратная связь: https://goo.gl/forms/iUd1Gufq6WnTsaO62


Входит в категории: Технологии
Pepegramming
07.02.2020 13:02
Пятничное чтиво Выложил запись стрима на ютуб. На следующей неделе стрим, разберем как работает 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;
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
31.01.2020 16:01
Пятничное чтиво На этой неделе прошел первый стрим после перерыва. Видео обработал, планирую на выходных выложить на ютуб. А старые записи можно найти по ссылке. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— 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
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
29.01.2020 20:01
Начинаем стрим https://www.twitch.tv/davydovanton
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
28.01.2020 15:01
Напомню, что пробую вернуть стримы обратно, поэтому завтра первый стрим после длинного перерыва. Соберем руби кор и может пофиксим простой баг или напишем тестов. А так же запустим рандомную библиотеку на мастере руби
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
28.01.2020 13:01
Привет! Факт: в quicktype.io есть поддержка dry-types или dry-struct. Он нагенерит бойлерплейт и поможет в разных кейсах: * Когда есть готовый JSON и хочется его типизировать на рубях * Если вы уже описали типы в TypeScript, то можно сгенерить из этого драй-типы * Когда пишем обёртки к API, можно из JSON Schema сгенерить типы и структуры для запросов Он не подойдет тем, кто использует dry-types и dry-schema >= 1.0 — сайт генерирует схемы со старым синтаксисом. Очень хотим это исправить, — нужна помощь. Мы описали в ишью на гитхабе, как это может работать и как начать: https://github.com/quicktype/quicktype/issues/1379 Хорошая задачка для новичков и тех, у кого есть 1 час времени на помощь опенсорсу и руби
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
24.01.2020 12:01
Пятничное чтиво Привет, на следующей неделе, 29 января, будет стрим. Соберем мастер ветку руби, посмотрим как подключить гемы, чтобы проверить совместимость с последней версией языка. По сути, перескажу информацию, которую показывали пол года назад в Бристоле кор разработчики руби. Вспомнить что было на стримах можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— MIR: A lightweight JIT compiler project Часто встречающаяся статья этой недели. В 2018 году, на rubykaigi, Владимир Макаров рассказал о новом проекте MIR. А на этой неделе вышла статья в которой Владимир описывает концепцию Lightweight JIT compiler и MIR в частности. От статьи стоит ждать сравнения с GCC/LLVM-based JIT, графиков, объясняющих, как MIR работает с руби. А также список ссылок и книг, которые можно прочитать, чтобы лучше разобраться в теме. Уверен, что статья не для каждого, могу порекомендовать в первую очередь тем, кто интересуется прогрессом jit в руби. Лично мне, после общения с Владимиром на kaigi, интересно наблюдать как MIR развивается. ————————————— Применение API Gateway Описание паттерна API gateway. Подробно рассказывается о 6 основных функциях, которые гейтвей предоставляет и показывается идея того, как гейтвей должен работать в системе (предоставлять токен и после, сервисы будут получать токен). Автор указывают плюсы и минусы, но огорчает отсутствие сравнения существующих решений. В топтале рассмотрели 19 решений для API gateway и остановились на Traefik который сейчас и внедряем. Гейтвей предоставляет единую точку входа и авторизации (ходит в отдельный сервис), а также маппинг с куки на jwt токен для внутренней системы. ————————————— Очередь задач в PostgreSQL Считаю, что постгрес умеет все. В качестве примера - сегодняшняя статья, где автор рассказывает как написать свою очередь на PSQL. Стоит ждать кучу хранимок, головную боль при решении проблем распределенных систем (не описывается в статье) и понимание того, что иногда можно действительно обойтись одной базой данных для проекта. Теперь жду аналог сайдкика, который будет работать с psql. Важно, чтобы была легкая миграция на другие решения. Скорее всего придется писать собственный брокер и запариться с тем, как согласовывать данные. ——— одной строкой ——— - jollheef/donate: Cryptocurrency donation daemon - Twitter: “TIL about PostgreSQL advisory locks. They allow you to use your PG database for shared locking.” - Announcing Sorbet 0.5
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
17.01.2020 13:01
Пятничное чтиво Привет, стримы вернулись. Ближайший стрим будет 29 января. Темы пока нет, но если есть идеи - буду рад обсудить. Вспомнить что было на стримах можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— SHIFT Commerce’s Journey: Deconstructing Monolithic Applications into Services Часто используемый материал последних шести месяцев. Нравится, что грамотно описана экстракция, которая начинается с продьюсинга данных, после чего эти данные обрабатываются на пустом сервисе (без бизнес логики, просто миграция данных в бд) и только после уже появляются бизнес логика и события. Важно понимать, что описанный подход может быть сделан и без каски, главная мысль текста - начинайте миграцию с данных, а не с кода. Потому что в противном случае придется страдать с дампами и расхождением данных между монолитом и сервисом. Основываясь на опыт, могу сказать, что это безопасный способ экстракции сервиса и данных из монолита. Понравились картинки, которые можно использовать каждый раз, когда объясняешь этот подход (что и делаю последнее время). Однозначный мастхев для тех кто переходит с монолита на сервисы. ————————————— The Language Agnostic, All-Purpose, Incredible, Makefile Лонгрид о том, как использовать утилиту make. По правде сказать, лонгрид вдохновил начать использовать make в своих проектах. В статье найдете список “звонков” когда стоит посмотреть на make, а не использовать специфичные инструменты (rake как пример). Автор описывает плюсы make (к сожалению минусов в статье не нашел), а так же примеры использования и разбор реального кейса с миграцией команд rails на make. Если вас тоже вдохновит статья, советую продолжить текстом Вани связанный с make. ————————————— Serverless Databases: The Future of Event-Driven Architecture В статье рассматривается следующий этап развития serverless - serverless databases. Рассказывается что это такое (разработаны для непредсказуемых нагрузок и быстро под них подстраиваются). В связи с этим, клиент платит только за ресурсы базы данных. Кроме теории, показывается реальная имплементацию от aws - Amazon Aurora Serverless. В конце описывается будущее серверлесс баз данных, преимущества и ограничения на текущий момент. И приводится список примеров использования. ——— одной строкой ——— - Announcing Message DB: Event Store and Message Store for PostgreSQL
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
10.01.2020 14:01
Пятничное чтиво Пару дней назад в твиттере поднялась тема того, что на медиуме нет хороших статей. Разбиваем этот миф тремя ссылками с медиума. Вспомнить что было на стримах можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— CQRS: What? Why? How? CQRS  паттерн, который может использоваться не зная о существовании паттерна. Тут используется 2 модели: для чтения и для записи. Пример: постгрес в котором создаются записи - модель для записи, эластик, использующийся для поиска информации и синхранизующийся с постгресом - модель для чтения. Автор статьи подробнее объясняет что такое CQRS, почему в компании начали использовать этот паттерн (спойлер: что бы сделать мир и коммуникации лучше). Так же, приводятся tips/trics для моделей и критерии, когда стоит использовать CQRS и рассказывает об eventual consistency. А так же, ближе к середине, текст уходит в ДДД, показывается как сделать события на основе domain story telling и почему эвенты =/= event sourcing. Однозначный мастрид недели. ————————————— Zero Downtime Schema Migrations Распределенная миграция частая и сложная проблема если выполняется сталкиваться в первый раз. В статье описываются решения проблемы и как справляться с этим в руби мире. Будет полезно тем, кто еще не сталкивался или не знает, что можно сделать в ситуации когда нужна распределенная миграция. Знаю, что в роме планируется решение для подобных проблем, но не уверен в этом на 100%. А один раз сам столкнулся с проблемой не приятно, подробнее рассказывал в докладе в Минске в прошлом году. ————————————— Making systems more resilient (1) — Circuit Breaker Описание патрона Circuit Breaker. Если в системе больше два сервиса и один делает запрос в другой и второй сервис не отвечает - первый сервис упадет с ошибкой тайм-аута. Тут может помочь Circuit Breaker. Паттерн определит упавший сервис и сразу возвращать ошибку без тайм-аутов. Подробности работы и применения - в статье. ——— одной строкой ——— - Uncle Bob: “Imagine a system written in Eiffel with perfect use of ‘design by contract’” - How to Hold the Most Effective Meetings
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
03.01.2020 13:01
Пятничное чтиво В 2020 году пятничное чтиво выходит из отпуска. Так как я разобрался с нагрузкой, то стримы вернуться в январе (примерно 22 января). Вспомнить что было на стримах можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Аварии помогают учиться Ошибки случаются, поэтому важно уметь чинить систему и обучаться, основываясь на опыте полученном во время сбоя. В расшифровке доклада, инженер Контура, даётся определение инцидента и объясняет как получить пользу от факапа в продакшене. Так же показывается как писать постмортемы и как с ними работать. В самом докладе понравилось обилие ссылок на дальнейшее чтение, описание опыта и мысли, например, глоссарий терминов. Так же понравился живой опыт обработки ошибок и разбор аналитики основанной на постмортемах. Если хочется научиться получать выгоду от инцидентов или интересна эта тема - однозначный мастхев. ————————————— Python at Scale: Strict Modules - Instagram Engineering В канале редко упоминается питон, но статья больше об опыте, чем о языке. Инженеры из инстаграмма описывают практики использования питона. Интерес вызвали разделы об импортах и сайд эффектах в проекте. Раздел о долгой загрузки проекта пересекается с топталом и несколькими минутами ожидания, когда запуститься rails c. В статье нет откровений - проблемы как и в других экосистемах: мутабельность стейта, медленная загрузка монолита, сайд эффекты. Явных решений в статье не найдете, но стоит воспринимать данный пост как пищу для ума. ————————————— Service Discovery in a Microservices Architecture Четвертая статья в цикле о микросервисах написанная инженерами ngnix. в статье рассказывается что такое Service Discovery и почему в cloudbased микросервисных без подхода никуда. Статья однозначный мастрид для тех, кто не знает или слышал, но не использовал service discovery. Рассматриваются два discovery паттерна: client-side discovery и server-side discovery. В обоих случаях используется Service Registry сервис, в котором регистрируются сервисы в системе. Для client-side discovery сервис напрямую идет в Service Registry и после этого делает запрос к нужному сервису. В server-side discovery появляется еще одна прослойка в виде Load Balancer, который достает данные о сервисах из Service Registry и через который проходит каждый запрос в системе. Так же, в статье рассказывается о самом Service Registry, приводятся опенсорсные примеры (consul, zookeeper и eureka разработанная в Netflix). И показываются 2 паттерна регистрации сервиса (SelfRegistration Pattern и ThirdParty Registration Pattern). ——— одной строкой ——— - Twitter: “what are we using for user authentication in rails these days” - ksqlDB: The event streaming database purpose-built for stream processing applications. - Announcing Eventide v2
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
25.10.2019 17:10
Привет! Последний месяц рассылка даётся все сложнее и сложнее, поэтому решил снизить напряг и взять перерыв. Хочу верить, что в ближайшее время отдохну и все вернётся на свои места.
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
18.10.2019 14:10
Привет! Завтра буду выступать в Орле (http://developers-day.ru), поэтому ссылки подготовить не успел. Если будете на мероприятии - у меня куча наклеек, которые я буду рад раздать.
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
11.10.2019 18:10
Пятничное чтиво Стримы на паузе, а вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Documenting Software Architecture Статья этого года в личном списке. В тексте указываются виды документации в архитектуре. Описывается 6 видов документации и диаграмм. Особенно полезным стала информация о 4+1 Architectural view model и Architecture Decision Records. А так же, автоматическую генерацию dependency diagrams делаю в dry-system-dependency_graph. Если задумались о стандартизации и описанию системы - однозначный мастрид этой пятницы. ————————————— The expanding sidecar pattern for microservices with ballerina sidecar Sidecar pattern - основной партерном в распределенных системах. Описание паттерн советую читать на сайте Microsoft. А в статье описывается три этапа развития паттерна. А так же рассказывается о языке ballerina, который поможет реализовать подобный паттерн и упростить интеграцию между сервисами. ————————————— 10 lessons learned from the Ruby Refactoring Kata Рефакторинг нужен не только для увеличения maintainability в проекте, но и так же как обучающее упражнение. Andrzej сделал рефакторинг программы для отображения результатов игры в теннис и рассказал об уроках, которые узнал для себя. В результате, после рефакторинга, программа похожа на стейт машину, а из уроков стоит выделить два: - нет доверия тестам; - желательно знать о домене, в котором работаешь;
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
04.10.2019 15:10
Пятничное чтиво Конференция прошла, наступило время отдыха. В планах перенести статьи на сайт (в разработке) и начать второй сезон стримов. Вспомнить что было можно тут. Так же буду рад предложениям, вопросам и идеям. Можно написать в личку, а можно в анонимную форму. ————————————— Как сервера договариваются друг с другом: алгоритм распределенного консенсуса Raft В прошлом выпуске рассматривалась проблема консернуса в распределенных системах. В конце упоминал об алгоритме raft, который используется в nats. Сегодня, ребята из додо, описывают принцип работы данного алгоритма. В сегодняшней статье описываются понятия и сам алгоритм согласования. А на одном стримов попробуем написать этот алгоритм на руби. ————————————— Understanding Zeitwerk in Rails 6 В этом году, на конференции, Xavier Noria рассказывал о собственном проекте, который называется zeitwerk. Инструмент решает проблему загрузки в руби коде, rails 6 использует гем по дефолту. В статье рассматривается, как zeitwerk работает, какую конкретно проблему решает и как работает автолоадинг теперь. Также показывается, что делать если хотите использовать библиотеку вне рельс (гем уже встроен в karafka). ————————————— Day Two Problems When Using CQRS and Event Sourcing На последок - любимый тип статей с проблемами использования технологий. Сегодня рассматривается где и как эвент сорсинг и CQRS. Список проблем, затронутых в тексте: люди слишком рано начинают использовать подобные паттерны, консервативная обработка событий и нерациональное использование снепшотов для состояния. От себя добавлю проблему стандартизации событий между командами и отсутствие опыта инженеров, которые имплементируют подобные системы. ——— одной строкой ——— - Релиз dry-effects;
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
30.09.2019 17:09
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме


Pepegramming
30.09.2019 17:09
спасибо ребятами из питера (@saintprug), в интернете появилась моя запись доклада про DI в руби. Если не знаете что это или хотите послушать историй из UK - маст хев на сегодня
Читать

Обращаем внимание, что мы не несем ответственности за содержимое(content) того или иного канала размещенный на нашем сайте так как не мы являемся авторами этой информации и на сайте она размещается в автоматическом режиме