Size: a a a

2018 December 18
2pegramming
Привет!

Завтра (19.12) будет очередной стрим на твиче. Следующая задача:
http://amp.gs/EeAm

Разберемся как валидировать банковские карты. А так же что нужно для того, что бы сгенерировать карту и как это делают банки. Только открытая информация со всеми ссылками.

Начало в 20:00 по москве, ссылка на твич:
http://amp.gs/EeAZ
источник
2018 December 19
2pegramming
источник
2pegramming
Спасибо всем кто пришел

Запись на ютубе
https://youtu.be/yWQjisIV5pw

Запись на твитче
https://www.twitch.tv/videos/351321379

Ссылка на гитхаб репозиторий с кодом и ссылками на ресурсы
https://github.com/davydovanton/pepegraming-stream/tree/master/credit_card_validator

Буду рад идеям для следующих стримов, пожеланиям и что понравилось/не понравилось

❤️
источник
2018 December 21
2pegramming
Пятничное чтиво

Привет!
На этой неделе провел стрим, следующий думаю будет на новогодних праздниках. Ссылки в посте выше:
http://amp.gs/EVZO

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

From $erverless to Elixir – CoryODaniel – Medium
Это не первая статья о серверлесс приложениях. До этого делился статьей о том, как сделать первое руби приложение на лямбдах. Сегодняшняя тема: а действительно ли это нужно и как дорого обойдется подобное решение.
Статья понравилась не навязчивостью и реальным примером. А также тем, что задаются вопросы и не даются однозначные ответы. Нет характеристик что лучше и что правильнее. Даже когда выяснилось, что простой POST эндпоинт в лямбде стоит 30k$ в месяц, автор честно написал, что для кого-то это дешевле, чем команда опсов.

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

Printing Over Previously Printed Characters and Lines - Steven Occhipinti
CLI это конечно круто, но что бы сделать некоторые части интерфейса, нужно знать nix или целенаправленно искать ответ. Пример - динамическая отрисовка прогресс бара и другие динамически обновляющиеся части интерфейса. В статье выше собраны примеры работы с курсором и удалением текста в терминале с помощью руби. Будет полезно для инженеров, которые хотят сделать динамический CLI интерфейс, но не знает как. Для себя открыл управление курсором и \b.

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

Why We Chose Kafka For The Trello Socket Architecture
Еще одна статья о опыт. Теперь трепло пишет почему сервис переехал с RabbitMQ на Kafka. В статье найдете: проблемы, таблицу со сравнением сервисов для работы с сообщениями, обзор кафка библиотек и результаты (с метриками, ценой и простоем). Стоит отметить, что кроме кафки рассматривались еще SNS + SQS, SNS + FIFO SQS, Kinesis и Redis Streams.
источник
2pegramming
> Теперь трепло пишет

опечатался, поправить сложно будет ибо полетят все ссылки 🙁
источник
2018 December 28
2pegramming
Пятничное чтиво

Сегодня последняя пятница этого года, а значит последние ссылки в этом году. Ссылки уходят в отпуск до 11 января, стрим устроим 2го января (готовьте оливье и мандарины).

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

What are your programming goals for 2019?
Поднимаем новогоднее настроение. Разработчики из Dev community делятся целями на следующий год. Было бы интересно увидеть статистику:

Чего ждут другие разработчики больше всего?
Что в “трендах” ожидания в этом году, а что было в прошлых годах?

Если хотите поделиться целями или итогами года - с радостью опубликую в канале.

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

Making maps connectable: stable, non-proprietary IDs and data standards for streets
Описание стандарта описания улиц SharedStreets. Обожаю открывать новые стандарты. Сегодня в списке стандарт, который поможет работать с улицами, картами и графами.

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

A Brief Guide to Learning Faster (and Better)
Знаю, что разработчики любят тратить выходные на проекты, обучение и иной отдых. Поэтому однозначный мастрид - статья 2011 года, которую стараюсь перечитывать каждый год. В статье найдете: советы эффективного обучения, как строить связи между идеями, 4 правила изучения чего угодно и россыпь идей и примеров.
источник
2pegramming
А так же, в течении года просили рассказать о понравившихся технических и нетехнических книгах. Поэтому расскажу о 7 книгах, которые прочитал и понравились в этом году.

Технические

Designing Data-Intensive Applications (DDIA)
Однозначный мастрид года среди технической литературы. Я рассказывал и разыгрывал эту книгу на RubyRussia в этом году и постоянно рекламирую. Из книги узнаете:

1.  Чем отличаются реляционные, документоориентированные и графовые базы данных;
2. В чем отличие json от протобафа и авро;
3. Зачем думать об эволюции данных и где это нужно;
4. Что такое репликации, как работать с секционированием и транзакциями;
5. Узнаете об проблемах распределенных систем, почему консенсус важен;
6. Как работать с массивами данных;

Если этого мало, после каждой главы список из 50+ ссылок в библиографии. Также, существует перевод на русский.

Domain Modeling Made Functional
Книга разделена на 2 части: в первой объясняется что такое Domain Modeling, во второй, на примере F# показывается, как воплотить теорию из первой части в практику. Обратите внимание на книгу, если хотите разобраться в DDD и (или) посмотреть на F#.

Building Microservices
Еще одна книга справочник - создание микросервисов. Описывается моделирование, архитектура развития сервисов. Как тестировать, разбивать монолиты на части и интегрировать микросервисы в существующую экосистему. Также затрагивается тема безопасности, масштабирования и мониторинга. Если не хватает опыта сервисной архитектуры - книга поможет уменьшить количество ада.

Не технические

Джедайские техники
Главная книга этого года. Книга, которая заставила посмотреть иначе на планирование и работу с головой. Автор поможет научиться как работать и разгружать голову. Узнаете, как работает голова, почему задачи в TODO списке лежат вечно, а желание их сделать не появится. Перенял “спусковые крючки”, помогает разгружать голову в конце недели. Кроме того, советую послушать доклады автора, узнаете о теории ограничений.

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

Юнг в комиксах. Биография, идеи, труды
Спустя два года терапии, стало интересно разобраться с основами различных школ терапии. Читать талмуды было скучно, поэтому решил попробовать начать с комикса о Юнге. И не ошибся, читается легко, хватило одного вечера в поезде. Основных столба аналитики два: Юнг и Фрейд. Комикс рассказывает о жизни и идеях, которые предложил Юнг и почему это не нравилось Фрейду. Особенно понравились: архетипы, компенсирующие функции психики, самость и почему Юнг считал, что алхимики говорили о психике а не о физических предметах.

Антихрупкость. Как извлечь выгоду из хаоса
Долгая и сложная книга, которую не смог прочитать до конца. Вариант, который сработал -  читать 1 страницу в день, а потом переваривать что прочитал. В книге много критических вещей, везения и прочих странных вещей, но подумать об антониме хрупкости (твердость и прочность не являются противоположностью) интересно. К тому же, книгу стоит прочитать только ради примера с индейкой.
источник
2019 January 11
2pegramming
Пятничное чтиво

Привет, первые ссылки этого года уже приехали. Из-за усталости пропустил прошлый стрим, в следующую среду наверстаем.

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

Exploring a critical Net::Protocol issue in Ruby 2.6.0p0 and how it can lead to a security problem
Статья которая взрывает твиттер уже второй день. Maciej Mensfeld, автор karafka, описал критический баг в 2.6 руби связанный с Net::Protocol. Проблема заключается в том, что Net::HTTP может “съесть” символы в http запросе. В лучшем случае получите ошибку, а в худшем формат данных (json тоже) обрезается так, что сервер получает не полную, но валидную информацию. Патч уже замержили в язык + в статье приводятся патчи для Net::HTTP и Faraday.

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

Ruby in AWS Lambda with PostgreSQL / Nokogiri
CircleCI private Slack notifications with a Ruby AWS Lambda
Serverless Ruby Cron Jobs Tutorial: Route53 Backup
В прошлом году амазон добавил руби в lambda, о чем уже писалось. За это время появились статьи с примерами использования этой технологии. Сегодня - список статей с примерами того, как использовать руби в лямбдах и зачем это может быть нужно. К сожалению у меня так и не дошли руки до лямбд, но если вы успели поиграть с ними, буду рад почитать или послушать отзывы.

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

Function composition >>
Кто работал (или изучал) функциональные языки, касался темы композиции функций. В руби 2.6 добавили оператор >>, который делает тоже самое. В статье описывается что это, сравнивается композиций функций с наследованием. Автор объясняет зачем это нужно и как использовать. А также дается не стандартный пример использования композиции функций для обработки http запросов.
источник
2019 January 16
2pegramming
Привет!

Сегодня среда, а это значит, что в 20:00 по московскому времени начинаем стрим.

В этот раз решил считерить, поэтому буду делать клиентскую библиотеку для pet проекта, заодно и покажу чем занят последние пару недель. В программе: Readme Driven Development, покажу, как последние пару лет делаю подобные библиотеки, а так же сделаем топорный in memory cache для того, что бы не досить сервер.

Стартуем в 20:00, ссылка на твич:
http://amp.gs/VGY4
источник
2pegramming
Начинаем первый стрим этого года
http://amp.gs/VG5L
источник
2pegramming
Спасибо всем кто пришел

Запись на ютубе
https://youtu.be/9lV3SwbJf-0 (аплоадится)

Запись на твитче
https://www.twitch.tv/videos/364871271

Ссылка на гитхаб репозиторий с кодом
https://github.com/safelylaunch/ruby-client

Буду рад идеям для следующих стримов, пожеланиям и что понравилось/не понравилось

❤️
источник
2019 January 18
2pegramming
Пятничное чтиво

Привет!

На этой неделе провел стрим, делал http клиент для pet проекта. Больше ссылок тут:
http://amp.gs/VecI

В ближайшее время планирую сделать календарь со стримами, попробовать новые форматы и доделать пару постов.

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

[Ruby 2.7 new feature: Method reference operator

Не успел выйти 2.6, как уже появляются примеры новых методов в будущем 2.7. Первый в нашем списке - 42.:to\_s. По сути, это  экспериментальный алиас для 42.method(:to\_s), который уже попал в транк ветку языка. В статье описывается подробнее что это, как этим пользоваться и что с этим делать. А также примеры где это применить и как попробовать сегодня.

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

Rails Architect MasterClass: Bounded Contexts
Мне фана польского руби комьюнити. Там часто обсуждаются DDD и архитектурные вопросы. Сегодня статья Mariusz Kapcia о том, что такое bounded context. В статье: что это такое, как найти и как взаимодействует с другими частями системы.

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

Scaling Ruby Apps to 1000 Requests per Minute
Memory profiler tools for ruby
Fastest way to profile a method in Ruby
Последнюю неделю занимаюсь проблемой перформанса на работе. Поэтому сегодня 3 ссылки, которые могут помочь.

В первой делается упор на реквесты. Рассказывается как реквесты проходят в руби приложениях, а также о том, какие веб сервера бывают в руби мире. Описывается в чем между ними отличие и в чем отличие между способами работы (треды против форков пумы, как пример). В конце приводится пару примеров как скейлиться и как правильно сконфигурировать сервер под текущие условия.

Вторую статью я написал 4 года назад. В тексте найдете описание трех способов профилирования памяти руби кода. Мой фаворит - Ruby Memory Profiler.

Третья статья о том, как сделать бенчмарк, чтобы определить насколько быстрее стал код. Секрет успеха прост - benchmark/ips и  скрипт с вариантами тестирования. В статье показываются примеры использования и как работать с бенчмарками и тредами.
источник
2019 January 25
2pegramming
Пятничное чтиво

Привет!

На следующей неделе (среда, 30 января, 20:00 по москве) будет стрим. Пока делаю страницу с календарем, чтобы посмотреть стримы заранее.

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

Analyzing RubyGems stats for 2018
Уверен, статья появится в других рассылках, но это не значит, что ее стоит пропустить. Автор проанализировал экосистему языка за 2018 год. Немного результатов: количество новых гемов уменьшается (думаю это связано со зрелостью экосистемы), установки рельсы растут, а синатра и ханами без изменений. Виден резкий спайк по установкам Passenger в мае. Ну и как итог, рост экосистемы на 28% по сравнению с прошлым годом.

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

Launching your own Ruby gem - Part 2: Promote it
Если спросят, что вызывает проблемы в создании библиотеки, я отвечу - это пиар и “продажа” другим людям. В статье описываются шаги, благодаря которым библиотека станет привлекательнее в глазах других разработчиков. В конце приводится список ресурсов, где можно рассказать о библиотеке. Если вы сделали библиотеку или опенсорсный продукт и хотите рассказать об этом, пишите, опубликую в рассылке.

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

Good Engineering Practices while Working Solo
Я люблю использовать "правильные" практики, в персональных проектах, даже когда работаю над ними один. Это помогает попробовать новые процессы без планирования и лишнего обсуждения. А в случае успеха и появления команды, не придется тратить время на изменение процессов и борьбу с людьми. В статье описывается, что можно и стоит использовать, когда работаете в одиночку над проектом.

Русский перевод
источник
2019 January 30
2pegramming
Привет!

Сегодня среда, а значит день стрима. Будем делать маленькое hanami приложение для работы с rss. Так же будем использовать dry-system и dry-monads. Покажу зачем это надо, как использовать и объясню тестировать.

Стрим в 20:00 по москве: https://twitch.tv/davydovanton

Кроме того, сделал сайт с календарем стримов. Пока там только календарь, но в будущем планирую перевести туда посты.

http://pepegramming.site
источник
2pegramming
Начинаем стрим

https://twitch.tv/davydovanton
источник
2pegramming
Всем спасибо за стрим. Продакшен починили 😅

Ссылки:

youtube
https://youtu.be/gVC0RBnAxqE

twitch (удалиться через 14 дней)
https://www.twitch.tv/videos/372361359

Гайды ханами (возможно нужен впн будет)
http://guides.hanamirb.org

dry
http://dry-rb.org

пустой репозиторий с ханами и драй системой
https://github.com/davydovanton/pepegraming-stream/tree/master/simple%20hanami

ханами репозиторий с драй и бизнес логикой
https://github.com/safelylaunch/core

Буду рад идеям для следующих стримов, пожеланиям и что понравилось/не понравилось

❤️
источник
2019 February 01
2pegramming
Пятничное чтиво

Привет!

На неделе прошел стрим, говорили о ханами и драй систем. В следующий раз расскажу больше о dry-monads и покажу как устроены репозитории в ханами. Ссылка на прошлый стрим:
pepegramming/133

А календарь с предстоящими стримами можно найти тут:
http://amp.gs/VojI

Кроме того, на следующей неделе окажусь в минске, буду рассказывать о персональных факапах в разделении монолита на сервисы:
Ссылка на митап

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

How to break a Monolith into Microservices
Начнем со статьи в блоге Мартина Фаулера о том, как разделять монолит на сервисы. Текст - лонгрид с большим количеством советов, которые выглядят правильно. Начинать стоит с простого домена,  зависимостей должно быть меньше между частями системы, начинать с “макросервисов” действительно проще. Но к сожалению реальность иная: сложно определить, что есть "простой" домен, зависимости появляются и не контролируются, а макросервисы превращаются в месиво, которое живет отдельной жизнью.

Статья поверхностная и дьявол в деталях. Но здравые советы и вещи о которых стоит подумать заранее присутствуют.

Thanks to Repositories
Статья из блога Arkency о том, что такое репозитории и как реализовать с помощью virtus и AR. Сам уже давно думаю о том, чтобы попробовать накрутить репозиториев в рельсе и посмотреть как это будет выглядеть.

Introducing dry-schema
На неделе вышла новая библиотека в dry, которая призвана улучшить dry-validation. Что ждет dry-v можно посмотреть тут:Introducing dry-schema : ruby

Hanami | Announcing Hanami v2.0.0.alpha1
Ну а так же вышла альфа версия hanami 2.0. Это не полная версия того, что хотим сделать. Но посмотреть что будет можно локально.
источник
2019 February 08
2pegramming
Пятничное чтиво

Привет!

Начало февраля выдалось насыщенным, поэтому чтиво будет коротким. Постараюсь исправиться в следующий раз. Вчера выступил в минске, рассказывал о факапах на работе. В минске прекрасные ребята, рекомендую посетить митап или приехать на конференцию в апреле.

На следующей неделе (суббота, 16 февраля) буду говорить о сервисах в питере на митапе. Буду рад раздать стикеры и пообщаться:
Winter SaintP Ruby Meetup

А так же, 13 числа будет стрим. Расскажу о dry-monads и ROM/hanami repositories.

Подробности тут: http://amp.gs/9pjk

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

Visualizing & Tuning Postgres Autovacuum · pganalyze
Мартрид для тех, кто не знает или уже забыл что такое автовакум в постгресе. Объясняется что это, зачем и как работает.

Architecture and Design Trends Report - January 2019
Ребята из InfoQ опубликовали статью с архитектурными трендами на этот год. Из интересного: потребность в эволюционной архитектуре, микросервисы уходят в массы, как и проблемы distributed systems. Event based и actor based системы находятся на early adopters стадии и вряд ли перейдут дальше, а архитекторы уходят в технический leadership.

Finding Twitch Streamers in a PUBG Match
Статья из серии “а что, так можно было?”. На самом деле обожаю такие штуки. Сегодня рассказывается как автор искал стримы людей, которые играли вместе с ним в PUBG и что из этого вышло.

Русский перевод
источник
2019 February 13
2pegramming
Начинаем стрим.

http://amp.gs/9PfJ
источник
2pegramming
Всем спасибо за стрим.

Ссылки:

youtube
https://youtu.be/im_uvC4n9rc

twitch (удалиться через 14 дней)
https://www.twitch.tv/videos/380045817

dry-monads
https://dry-rb.org/gems/dry-monads/

аналоги из чата
https://github.com/txus/kleisli
https://github.com/bolshakov/fear
https://github.com/andypike/rectify

примеры кода с монадами (смотреть экшены)
https://github.com/makedecision-org/core
https://github.com/safelylaunch/core

Буду рад идеям для следующих стримов, пожеланиям и что понравилось/не понравилось

❤️
источник