Ruby/Rails дайджест #10: подкаст з DHH, новий блог про розробку, виступи на RubyKaigi
Привіт! Вересень виявився багатим на події у світі Ruby/Ruby on Rails, тому поспішаємо поділитися з вами останніми новинами.
У десятому ювілейному дайджесті зустрічайте множинні рекомендації та поради щодо поліпшення продуктивності роботи на Ruby/Rails, подкаст від Basecamp з участю David Heinemeier Hansson, новий блог про розробку, відео виступів з конференції RubyKaigi і важливі події в жовтні.
Почитати
Understanding the secret_key_base in Ruby on Rails — secret_key_base — відмінний спосіб скоротити нагруженность конфігурацій. У туториале наводяться приклади використання secret_key_base і йдеться про цінності цієї конфігурації для додатків Ruby on Rails.
Code simplicity — Command pattern — в цьому туториале ви знайдете інформацію, як застосовувати шаблон проектування 'Command' на прикладі сценарію купівлі товару в онлайн-магазині.
Superfast CSV imports using PostgreSQL'COPY s command — рекомендації, як максимально швидко імпортувати CSV, використовуючи команду PostgreSQL's COPY.
Серія з двох статей з докладним поясненням моделей паралелізму (concurrency models) в Ruby:
- Introduction to Concurrency Models with Ruby. Part I — в першій частині автор розглядає відмінності між процесами, потоки, що таке GIL, EventMachine і Fibers в Ruby.
- Introduction to Concurrency Models with Ruby. Part II — друга частина присвячена більш просунутим видами моделей паралелізму, таким як Actors, передачі послідовних процесів, Software Transactional Memory і Guilds — нової моделі паралелізму, яка може застосовуватися в Ruby 3.
Teaching a Neural Network to play a game using Q-learning — у попередньому випуску нашого дайджесту ми пропонували прочитати статтю від Practical Artificial Intelligence про те, як навчити штучний інтелект грати в просту гру з використанням Q-learning . У цьому випуску пропонуємо вам дізнатися, як за допомогою нейронної мережі і Q-Learning створити штучний інтелект, який зміг би грати в комп'ютерну гру.
Using the scikit-learn machine learning library in Ruby using PyCall — з цього туториала ви дізнаєтеся, як використовувати набір простих і ефективних інструментів для машинного навчання і штучного інтелекту Scikit-learn. Scikit-learn написаний на Python, але Ruby розробники можуть з ним взаємодіяти через PyCall.
How we made our rspec test suite to run 2x faster — швидкість виконання автотестів відіграє важливу роль у розробці програмного забезпечення. Приклад у цій статті ви дізнаєтеся, як удвічі прискорити виконання RSpec.
Verify user phone numbers in Ruby on Rails with the Authy Phone Verification API — корисний туторіал про те, як перевірити достовірність номера телефону користувача в додатку на Rails 5 з допомогою Authy Phone Verification API.
Підбірка корисних статей від Engine Yard за вересень:
- Ruby on Rails Security 17-Item Checklist — корисний чекліст перевірки безпеки програми для Rails розробників.
- AWS Image with Storage S3 and EFS: A Rails How To — туторіал, як налаштувати сервіси зберігання фотографій Amazon S3 і Amazon Elastic File System програми на Rails.
- Customer Stories: Resolving a Deploy Issue Due to Load Error — кейс, в якому описується приклад успішного вирішення проблеми помилки завантаження під час розгортання програми.
- Using Services to Keep Your Rails Controllers Clean and DRY — складна система контролерів, які важко міняти, ? це не те, що хочеться виявити в Rails-додатку. Щоб уникнути цього, варто звернути увагу на підказки в статті, як використовувати сервіси для організації контролерів.
- Improving Rails App Performance with Database Refactoring & Caching — покращуємо продуктивність Rails-додатки, рефакторимо базу даних і підключаємо кешування.
- 7 Completely Legal Rails Performance-Enhancing Techniques — поради щодо поліпшення швидкості часу відгуку і пропускної спроможності Rails-додатки.
- Running on Rails AWS: Know Your Options — у цій статті ви знайдете описи чотирьох варіантів запуску Rails на AWS, які допоможуть вам вирішити, який з них краще підходить для вашого застосування.
Rails: make sure you have proper DB indexes for your model's unique validations — стаття - нагадування про те, що треба не забувати про індекси бази даних при створенні власних валідаторів.
That time I wrote a query with прикутий ruby methods weighing in at 41 lines and 2844 chars — що робити, якщо вийшов SQL-запит на 41 рядок? Автор статті ділиться досвідом, як рефакторіть такі запити.
How to include Rails Associated Model Data in React components — в цьому туториале ви знайдете підказки, як отримати доступ до пов'язаних даними моделі з вашого компонента React на Rails.
DEALING WITH RUBY DEPENDENCY CONFLICTS — рекомендації, як уникнути конфліктів залежностей в Ruby і які для цього існують інструменти.
Ruby: pass by value or pass by reference? — існують суперечливі погляди на те, як в Ruby передаються параметри за посиланням або значенням. Автор блогу Rubyblog.pro пропонує розібратися, як це працює.
Improving spec speed in a huge, old Rails app — по мірі того, як зростає проект, все більше часу йде на виконання continuous integration, і швидкість spec стає однією з проблем. З цього кейса ви дізнаєтеся, як поліпшити швидкість виконання тестів у масштабному додатку на Rails.
Rails Best Practice — Persisting Addresses in PostgreSQL — рішення, яке пропонує послідовний, ефективний і надійний спосіб зберігання та вилучення складних типів даних з бази даних SQL.
A Puzzle About Ruby Constants — константи мови Ruby іноді можуть спантеличити навіть досвідчених розробників. У цьому туториале знайдуться поради, як розібратися з логікою Ruby для визначення константи.
Breaking Up the Behemoth — дуже часто багато програм з часом обростають великими, складними і постійно мінливими класами. У цій статті ви знайдете поради, як краще уникнути появи габаритного коду.
DateTime#to_time and Time#to_time preserves receiver's timezone offset info in Ruby 2.4 — методи DateTime#to_time and Time#to_time можуть бути використані для повернення об'єкта Time. У туториале ви знайдете відмінності роботи з цими методами у версіях Ruby 2.3 і Ruby 2.4.
3 ways that will make you React with Rails developer — поради та корисні ресурси, як краще ініціалізувати React.js в додаток на Rails.
Debugging Why Your Specs Have Slowed Down — якщо виконання spec-тестів займає, на ваш погляд, вічність, радимо взяти на озброєння ці підказки щодо визначення причин уповільнень і методи запобігання їх у майбутньому.
У вересні побачив світ новий блог від Ruby/Rails розробника Paul Martensen і вже встиг поповнитися кількома статтями:
- Off the Rails! Part 1. — у своїй першій статті автор блогу намагається піти від Ruby on Rails і пропонує альтернативний спосіб написати JSON-API для застосування.
- Off the Rails! Part 2. — друга частина туториала, як створити додаток без використання Rais. Автор пропонує розширити структуру програми, додавши Bundler, Rake, Sequel і базу даних Postgres.
- Refactoring CanCan(Can) Abilities — якщо в системі вашого додатку присутня складний набір правил авторизації, ці поради допоможуть зробити їх більш керованими.
- A way to split up big merge - or pull-requests — у статті описано спосіб, як спростити один великий Pull-Request на декілька невеликих. Така практика допомагає команді розробників робити code review швидше і якісніше.
Серія статей на тему застосування API-інтерфейсу GraphQL в Rails:
- How to Implement a GraphQL API in Rails — туторіал, як реалізувати API-інтерфейс GraphQL в Rails.
- GraphQL and Performance in Rails — в туториале розглядаються три способи уникнути проблем з продуктивністю за допомогою GraphQL в додатку на Rails, а також інструмент, що допомагає контролювати, які запити виконуються врозріз з API-інтерфейсом GraphQL.
Підбірка статей про розробку від Arkency за вересень:
- How to setup development work with RailsEventStore and mutant — туторіал про те, як настроїти роботу Rails Event Store, бібліотеки для публікації та зберігання подій з Mutant, інструментом для мутаційного тестування в Ruby.
- Making tmux work for you — tmux — це менеджер терміналів, до якого зручно підключатися і відключатися, не втрачаючи при цьому процеси та історію. У статті ви знайдете рішення, як налаштувати автоматизацію робочих процесів з допомогою tmux.
- How mutation testing causes deeper thinking about your code + constructor for an included in module Ruby — кейс на тему мутаційного тестування, і яку роль це відіграє для вашого коду.
- Physical separation in Rails apps — як ви поділяєте контексти предметної області ваших додатків на Rails? Автор ділиться своїм досвідом фізичного поділу Rails програми.
- Rails components — neither engines nor gems — дискусії з приводу Bounded Contexts.
- All the ways to generate routing paths in Rails — перелік способів створення напрямків маршрутизації.
- Composable RSpec matchers — у статті розглядається кейс розробки RSpec matchers.
For Software Engineers — Scalability Introduction — у цій статті ви знайдете корисну інформацію про масштабованості і як її досягти при розробці програмного забезпечення.
Послухати
Rework — 03 — Pick A Fight (on Twitter) — подкаст від Basecamp з участю CTO Basecamp David Heinemeier Hansson, де David розповість про мистецтво сперечатися з людьми в інтернеті та безпосередньо в Twitter.
Подкасти від The Ruby Rogues продовжують радувати бесідами з відомими програмістами:
- RR 326: Chatbots with Jamie Wright — гість цього випуску Jamie Wright, один із спікерів на Ruby Developer Summit 2017, розповість про свій досвід роботи з чат-ботами.
- RR 328: Rails Security Beyond the Defaults with Matias Korhonen — гість випуску Matias Korhonen працює над численними проектами, в тому числі і на Rails. В подкасті Matias розповість про безпеку додатків на Rails.
- RR 329: Learning Machine Learning with Marc-Andr? Cournoyer — у цьому випуску автори подкасту і гість Marc-Andr? Cournoyer обговорюють вивчення machine learning в Ruby.
Свіжі подкасти від The Bike Shed у вересні:
- The Bike Shed — 122: Name That Smell — у цьому випуску автори подкасту ведуть бесіду про роботу над новим проектом, про тестах пов'язаних із зовнішніми сервісами і помилку точності, яка зустрічається в ActiveRecord.
- The Bike Shed — 123: Too Many Parameters — в цьому епізоді автори подкасту обговорюють проблеми, що виникають при повторному використанні коду.
- The Bike Shed — 124: Nope. Nope. Nope. Nope. — епізод присвячений процесу подачі заявки на участь у конференціях Ruby, аналізу коду і багато іншого.
- The Bike Shed — 125: Less Bad Than Expected — обговорення переваг і недоліків FactoryGirl і уразливість даних Equifax.
П'ятий сезон подкастів на RWpod триває, і за вересень зібралося чимало випусків:
- 35 випуск 05 сезону. Sequel 5.0.0, Webpacker 3.0, TypeScript 2.5, ExceptionAlarm, React-Move 2.0, Unmiss та інше
- 36 випуск 05 сезону. Yarn 1.0, Gemfile's new clothes, Headless Chrome vs PhantomJS, Size Limit: Make the Web lighter та інше
- 37 випуск 05 сезону. Ruby 2.4.2, Roda 3.0.0, CoffeeScript 2, Babel 7.0, GraphQL and Performance in Rails та інше
- 38 випуск 05 сезону. GitLab 10.0, Ruby 3 JIT roadmap, Blockchain Lite, Relicensing React, Storybook, Bosket та інше
Подивитися
The 11-minute guide to building and launching an online store with Rails, Stripe Checkout and Heroku — короткий гайд по створенню інтернет-магазину на Rails. З відео ви дізнаєтеся, як налаштувати платежі для магазину через Stripe checkout.js і розгорнути його на Heroku.Підбірка скрінкасти від GO RAILS у вересні:
- Faster Rails boot times with Bootsnap — з цього екрана ви дізнаєтеся, як Bootsnap прискорює час завантаження програми на Ruby і Ruby on Rails.
- Geo-spatial Search with Geocoder and Google Maps — у цьому скринкасте ви дізнаєтеся, як повторити функцію визначення геолокаціі, як у додатків Yelp і Airbnb з допомогою гема Geocoder.
- Geo-spatial Search with Searchkick and ElasticSearch — у цьому епізоді ви навчитеся індексувати і знаходити моделі з геолокації з допомогою Searchkick і Elasticsearch.
Підбірка скрінкасти від Drifting Ruby за вересень:
- Episode #096 — Auditing with Paper Trail — скрінкасти про те, як з допомогою гема paper_trail відстежувати і реєструвати зміни в моделях Rails.
- Episode #097 Single Table Inheritance — епізод про STI.
- Episode #098 — Polymorphic Associations — з цього епізоду ви дізнаєтеся, чим поліморфні асоціації відрізняються один від одного і навчитеся трюкам, як спростити їх використання.
- Episode #099 Creating a Basic Gem — з допомогою цього екрана ви навчитеся створювати Ruby-гем.
RubyKaigi 2017 — International Conference — у вересні в Японії пройшла щорічна конференція RubyKaigi , на якій виступали відомі розробники з Японії, так і західні фахівці. У цій добірці пропонуємо виступу англійською:
- Improving TruffleRuby's Startup Time with the SubstrateVM/Kevin Menard
- Busting Performance Bottlenecks: Improving Boot Time by 60%/Julian Nadeau
- High Concurrent Ruby Web Development Without Fear/Delton Ding
- Bundler 2/Colby Swandale
- Memory and Fragmentation Bloat in Ruby/Nate Berkopec
- JRuby at 15 Years: Meeting the Challenges/Charles Nutter, Thomas E Enebo
- Pattern Matching in Ruby/YUKI TORII
- Bending The Curve: Putting Rust in Ruby with Helix/Godfrey Chan, Terence Lee
- Type Checking Ruby Programs with Annotations/Soutaro Matsumoto
- Automated Type Contracts Generation for Ruby/Valentin Fondaratov
- Do Androids Dream of Electronic Dance Music?/Julian Cheal, Eric Weinstein
- How is Close Ruby 3?3 For Production Web Apps?/Noah Gibbs
- Flor — hubristic interpreter/John Mettraux
- Food, Wine and Machine Learning: Teaching a Bot to Taste/Mai Nguyen
- Asynchronous and Non-Blocking IO with JRuby/Joe Kutner
- Static Typo Checker in Ruby/Yuki Nishijima
- The Curious Case of Wikipedia Parsing/Victor Shepelev
- The Ruby Module Builder Pattern/Chris Salzberg
- Compiling Ruby/Kevin Deisz
- I quit my job to write my own language: Goby/Stan Lo
- Hanami — New Ruby Web Framework/Anton Davydov
- Mapping your world with Ruby/Mat Schaffer
- C how to supercharge Ruby with Rubex/Самір Deshmukh
- Towards Ruby 3?3 performance/Vladimir Makarov
- RubyKaigi 2017 Closing
Релізи та бібліотеки
Бібліотеки
Zen Rails Base Application — шаблон для нових Rails додатків, скоротити час на створення нового проекту.
ruby-vips — гем, який, забезпечує прив'язку Ruby до бібліотеки обробки зображень libvips.
Slack Neuralyzer — гем, для масового видалення повідомлень і файлів на Slack-каналах.
Gemfile's new clothes — незабаром очікується реліз Bundler 2.0 — менеджера для управління гемами. Рекомендуємо дізнатися, чого очікувати від нової версії, і бути в курсі всіх змін задовго до релізу. Також у статті зазначається, якими опціями вже зараз можна користуватися в останніх версіях.
Say Hi to Delivery Boy! — бібліотека Racecar забезпечує простий і інтуїтивно зрозумілий спосіб створення і налаштування споживачів (consumers) у Kafka, і може легко інтегруватися з додатком Rails.
BRAKEMAN: Rails Security Scanner — сканер безпеки Brakeman виявляє уразливості в програмах Rails з допомогою статичного аналізу. І, що дуже зручно, після сканування він створює звіт про всі проблеми безпеки, які він ідентифікував.
Awesome Data Science with Ruby — список туториалов, бібліотек і різноманітних джерел про різних додатках Data Science з використанням мови програмування Ruby.
Релізи
JRuby 9.1.13.0 Released — у вересні вийшла нова версія JRuby.
Welcome Release of Webpacker 3.0 — новини з недавнього релізу гема Webpacker.
Rubies 2.2.8, 2.3.5, and 2.4.2 are now available — у вересні вийшли оновлення на Ruby. Версії 2.2.8, 2.3.5 і 2.4.2.
Rails 5.1.4 and 5.0.6 released — 7 вересня вийшли оновлені версії Ruby on Rails. Повний список змін можна подивитися на GitHub .
Rails 4.2.10 released — також у вересні оновилася версія Rails 4.2. Як заявляють розробники, ця версія більше не буде підтримуватися, за винятком серйозних виправлень безпеки.
Karafka (Ruby + Kafka) framework 1.0.0 Release Notes — вийшов реліз Karafka 1.0 — це відносно свіжий фреймворк, авторам якого вдалося реалізувати безліч нових функцій і виправити помилки. Якщо ви хочете якомога швидше познайомитися з фреймворком і почати з ним працювати, пропонуємо вам ці примітки до випуску.
Книги
Рекомендовані
Effective Testing with RSpec 3 has been released! — в цьому місяці вийшла книга про тестування «Effective Testing with RSpec 3: Build Ruby Apps with Confidence». Замовити можна на Amazon і PragProg .
Релізи
The Unhappy Path. Failure Management Patterns in Ruby and Rails — книга від Benjamin Roth «The Unhappy Path. Failure Management Patterns in Ruby and Rails» ще в процесі написання, але передзамовлення вже відкритий.
Події
International Ruby Conferences Fall 2017 — список міжнародних Ruby-конференцій, які охоплюю земну кулю від Японії до Бразилії цієї осені.
Coderetreat — 6 жовтня в Києві Ruby Meditation влаштовує тренінг «Coderetreat» з Сергієм Сержиенко — представником мінського Ruby-спільноти.
RUBY Meditation #18 — 7 жовтня у Києві проходитиме митап Ruby Meditation #18. Повний список спікерів і розклад поки очікується, але вже можна реєструватися.
SphereCon — Ruby and Go Conference — 28 жовтня в Києві пройде конференція за технологіями Ruby, Go і Front-End. Вхід вільний, але не забудьте зареєструватися.
RUBY Meditation #19 — митап Ruby Meditation #19 також проводиться в Києві 4 листопада. Квитки вже у продажу.
RUBY Meditation — 20th Anniversary — 2 грудня в Києві пройде ювілейний митап Ruby Meditation #20. Новини з організації заходу можна відстежувати на сторінці в Facebook. Також є можливість придбати квитки .
Курси
Курси від Codaline — з 16 вересня по 1 жовтня 2017 оголошено набір на третій сезон курсів від Codaline, де одним з напрямків буде мова програмування Ruby. Курси будуть проводитися в режимі offline в Черкаському державному технологічному університеті.
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.
? Попередній випуск: Ruby дайджест #9
Опубліковано: 30/09/17 @ 10:00
Розділ Блоги
Рекомендуємо:
React 16: огляд нової архітектури fiber
DOU Labs: як харків'яни створили IT-музей
Кібербезпека по-українськи: про тиск силовиків, білих і чорних хакерів і цінності диванних експертів
Junior дайджест: курси, стажування, інтернатура. Жовтень'17
Кейс: від 0 до 13000 чоловік в місяць для сайту клініки лазерної медицини