Программирование на Ruby - Новости

RailsClub 2015: Привет всем рубистам и рубисткам!

С радостью рассказываем о том, какую программу мы приготовили на RailsClub 2015, который состоится 26 сентября в Москве. Все подробности на сайте конференции railsclub.ru (кстати, зацените наш новый сайт). Приглашаем всех неравнодушных, главное российское Ruby-событие года нельзя пропускать! Билет сейчас стоит 7000, но уже через неделю будет дороже.

Что же будет:

PERFORMANCE IN THE DETAILS: A WAY TO MAKE FASTER RUBY

Koichi Sasada, Член команды Яцухиро Мацумото в Heroku, директор Ruby Association

Heroku Matz team is working to improve quality of CRuby/MRI. Quality has several meanings, such as stability, low resource consumption, and of course speed. My main goal is to make faster Ruby.

However, we don't have one absolute solution to speed up Ruby interpreter. Instead of one solution, we introduce variety of techniques to improve Ruby's performance. In this talk, I will show you recent achievements by techniques in details.

RAILS 5: AWESOME FEATURES AND BREAKING CHANGES

Claudio Baccigalipo, контрибьютор в Rails на счету которого более 100 коммитов, член Rails Issues team

Each major release of Rails brings shiny new features and mild headaches for developers required to upgrade their applications and gems. Rails API, ActionCable, Turbolinks 3 are only a few of the changes announced for Rails 5. How can programmers get ready for the future without breaking their legacy code?

In this talk, I will cover the improvements brought by Rails 5, explain the Core team’s motivations behind each feature, and illustrate the upgrade process to smoothly transition gems and apps from Rails 4.2 to Rails 5.0.

MOCKING LANGUAGE

Sam Phippen, yчастник RSpec core team, разработчик в Fun and Plausible Solutions

This talk is an investigation into the different kinds of ways we isolate objects from their collaborators. They all seem to provide similar capabilities but there is an underlying language that talks to us about different kinds of design smells that we might have in our applications.

This talk will cover the different kinds of test doubles that we use in our applications and what they indicate about the designs of our software.

VOLT: RUBY WEB DEVELOPMENT RECHARGED

Bozhidar Batsov, Автор RuboCop и редактор Ruby and Rails style guides

Volt is a reactive web framework where your Ruby code runs both on the server and the client. Sounds crazy, right? Trust me, though, this is pretty amazing and will blow your minds.

Volt is probably the most exciting web framework in the land of Ruby since Rails. In this talk we'll go over the core ideas and principles of Volt, the advantages of Volt over traditional web apps and we'll play with a few basic examples. We'll wrap with a look towards Volt's bright future. Above all else — we'll have fun!

LAMBDA AND KAPPA ARCHITECTURES IN RUBY ON RAILS

Тимофей Цветков, Toptal Core Team, analytics department

Nowadays it’s absolutely clear that data is one of the most valuable assets and thoughtful data analysis plays essential role in any company’s success. Whether you run machine learning algorithms to build smarter and more user friendly applications or to build financial and marketing reports for stake holders, you need to perform data transformations and calculations. Such applications can’t be designed in a classical Ruby on Rails way. Lambda and Kappa architectures are common patterns for building data processing applications.

Toptal is a constantly growing company and is on track for $100M in revenue in 2015. To archive this in Toptal, we’re constantly improving our processes, KPIs and of course, our application. We’re searching for pitfalls and places to improve by monitoring our processes and by analysing our data.

In this talk we will discuss main principles of Lambda and Kappa architectures and their implementations using Ruby on Rails based on Toptal’s analytics team experience.

КАК ПЕРЕСТАТЬ БЫТЬ RAILS-РАЗРАБОТЧИКОМ

Иван Немытченко, Разработчик и энтузиаст IT мероприятий

Долгое время мы думали, что мы другие. Что подход Rails настолько крут, что у нас нет целого класса проблем, с которыми возятся несчастные джависты. Но почему-то Rails-приложения с завидной регулярностью превращаются в неподдерживаемых монстров через полгода, а то и меньше. Выходит что мы не очень-то мы и другие. Я поделюсь опытом переключения мозга из режима Rails-only-mode.

Как только перестаешь принимать на веру дефолтный способ организации кода в Rails, происходят замечательные вещи. В моем случае, новые роли объектов(Form objects, Services, Repositories) появились в коде естественным образом — как решения конкретных проблем, а не потому-что так завещал нам Мартин Фаулер. В итоге я получил гибкий(модульный, если хотите) код, который несложно поддерживать и модифицировать.
Коллеги, хватит перекладывать вину за бардак в коде на DHH! 2015 год — отличное время, чтобы стать кем-то большим, чем программист-на-фрэймворке.

МИКРОСЕРВИСЫ И ELIXIR ДЛЯ RAILS-РАЗРАБОТЧИКОВ

Самат Галимов и Борис Горячев, Meduza.io

Рассказ пойдет о том, как мы разделяем наше основное rails приложение и создаем микросервис-архитектуру. Как за год было написано более 10-ти проектов разных уровней сложности, и чем мы руководствовались, когда это затевали.

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

Также расскажем о случаях, когда лучше заблаговременно сойти с рельс и как себя при этом обезопасить. В конце доклада мы постараемся убедить вас попробовать elixir — прекрасный молодой функциональный язык программирования. На десерт несколько примеров, где он стал для нас right tool for the job.

МИКРОСЕРВИСЫ В GETT: ОТКРЫТИЕ НОВЫХ НАПРАВЛЕНИЙ И РАБОТА ПОД НАГРУЗКОЙ.

Андрей Дерябни, Тимлид Evil Martians, один из марсианских долгожителей

Gett (ранее известный как GetTaxi), популярнейший сервис для заказа такси, в этом году не только вырос по бизнес-показателям, но и открыл новые направления деятельности (вертикали) — например, доставку еды и проведение работ на дому. Чтобы отвечать требованиям бизнеса по росту, и особенно — для возможности строить новые вертикали на существующих мощностях, архитекторы Gett начали перевод сервиса на микросервисную архитектуру.

В этом Gett помогала команда марсиан под руководством Андрея. За короткий срок у Gett получилось перейти от монолитной архитектуре к использованию микросервисов — в боевом режиме, в четырех странах (США, Великобритания, Россия, Израиль). Это позволило существенно ускорить и упростить работу над разработкой новых направлений.
Вместо теоретических рассказов о том, как здорово использовать микросервисы и почему все якобы непременно должны это делать, Андрей сконцентрируется на практике и боевом опыте. В докладе он расскажет про сложности, с которыми пришлось столкнуться при разработке микросервисов и способами их решения — реализация взаимодействия сервисов (средствами REST API), версионирование состояния системы, логирование изменений (стратегия COW), распределенное конфигурирование (ZooKeeper), работа с shared-частями микросервисов, развертвывание (Chef) и тестирование. Отдельно Андрей подробно остановится на реализации паттерна Circuit Breaker для решения проблем в канале связи между сервисами.

ИЩЕМ ГДЕ И ПОЧЕМУ PRODUCTION ПРИЛОЖЕНИЕ ТОРМОЗИТ

Андрей Куманяев, Разработчик в Coub

Многие из разработчиков мира Ruby on Rails знакомы с богатым набором инструментов для профилировали приложения в development среде. Зачастую, работа с этими инструментами заканчивается до/после выкатки фичи в production. Сначала все может работать хорошо и быстро, ну а дальше… как повезет.

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

RUBY OBJECT MAPPER: REVOLUTION

Александр Кириллов, Разработчик в Evrone

Ruby Object Mapper (ROM) — экспериментальная Ruby библиотека для реализации отображения «чистых» Ruby объектов, позволяющая без лишних ограничений использовать всю мощь выбранного хранилища данных.

ROM основан на нескольких концепциях, отличающихся от «нормальной» Ruby ORM. Я расскажу об этих концепциях, разберу особенности библиотеки и покажу как жить без Active Record.

ТЕСТИРОВАНИЕ И “SOFTWARE WRITER” ГОД СПУСТЯ

Семен Бареев, Ведущий Ruby разработчик в Rambler & Co

Год назад, во время открытия RailsConf 2014, David Heinemeier Hansson поделился с нами своими мыслями по поводу профессии инженера­разработчика ПО (или “писателя ПО”, по его версии) и по поводу TDD. Вкратце, DHH высказался довольно резко в сторону TDD, аргументируя это тем что TDD ломает дизайн, делая его необоснованно сложным для понимания, давая при этом ложное чувство уверенности основанное на выдуманных показателях (coverage, ratio, speed).

Я примерил роль “Писателя ПО”. Следуя советам Дэвида, я старался тестировать всю систему, а не отдельные юниты, фокусируясь на интеграционных и “frontend” тестах. В процессе я столкнулся с непониманием некоторых коллег и бизнес лидеров. Мне пришлось развеятеть несколько мифов о тестировании, и я поделюсь этим опытом с другими разработчиками.

Кроме того, я узнал несколько трюков для ускорения тестов, освоил несколько новых инструментов для тестирования, которые я упомяну в моем докладе.

BUILDING RAILSPERF, A TOOLKIT TO DETECT PERFORMANCE REGRESSIONSIN RUBY ON RAILS CORE

Кирилл Шатров, Разработчик в Evil Martians, мейнтейнер Capistrano и Sorcery

На примере бета-версий Rails 4.2 мы убедились, как часто в фреймворке Rails могут случаться регрессии производительности, и как легко они могут остаться незамеченными.

Проблема производительности и ее регрессий становится все более острой в Ruby-сообществе. Это подтолкнуло меня и других контрибьюторов Rails к разработке Rubybench, сервиса для поиска регрессий производительности в Ruby и Rails.

В своем докладе я рассмотрю регрессии производительности на примерах коммитов из Rails, расскажу о построении бенчмарков для Ruby приложений, и продемонстрирую Rubybench и его архитектуру.

LT: CRYSTAL

Анна Щербинина, Лид веб команды в Artec Group

Crystal — компилируемый в нативный код язык. Как говорят сами разработчики, его синтаксис вдохновлен Ruby. Поэтому порог вождения для ruby разработчика не высок, и, действительно, глядя на код невольно возникает вопрос: это Crystal или Ruby? Расскажу о реализации микросервиса на Crystal: сходстве и различи c Ruby, плюсах, минусах и использовании в production.

LT: ACTIVE SUPPORT INSTRUMENTATION

Кирилл Горин, Разработчик в Toptal

Все пользуются средствами мониторинга для Rails приложений, но не все знают, что они работают на основе встроенных в Rails инструментов. Active Support Instrumentation один из них. В этом докладе я расскажу как его использовать и как можно самому написать конкурента New Relic.

LT: PERSONAL HEROKU ADD-ON WITH DOCKER

Владимир Ярцев, Tехнический директор в Cloud Castle

В каталоге аддонов Heroku более 100 готовых микросервисов, но иногда подходящего аддона нет, а с Heroku уходить не хочется.
Одно из решений — Docker, который позволяет собрать микросервис, взяв за основу образ с Docker Hub. Вот только поддержка инфраструктуры микросервиса в этом случае ложится на плечи разработчика.
Я расскажу, как совместить удобство Heroku с гибкостью Docker, заставив микросервис вести себя как аддон Heroku.

Как вы заметили, докладов стало больше. Это потому, что русскоязычные спикеры теперь выступают в два параллельных потока. В связи с этим мы переезжаем на новую площадку — Конгресс-центр Технополис Москва. Кстати, в программе еще осталось два свободных слота, а также 4 слота для блиц-докладов по 10 минут. Хотите проявить себя? Пишите на elena@evrone.ru.

В этом году нас уже поддерживают три замечательные компании:

Генеральный спонсор:

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

Золотой спонсор:

Cloud Castle — разработчик мобильных и веб-приложений на Ruby On Rails для стартапов и развивающегося бизнеса в Самаре, Нью-Йорке и Шарлотте. Мы помогаем предпринимателям запустить мобильные и веб-сервисы для их бизнеса.

Серебряный спонсор:

AT-Consulting — один из сильнейших игроков на рынке информационных технологий и ИТ-услуг для компаний телекоммуникационного, финансового, государственного, топливно-энергетического и других секторов.

Приглашаем партнеров!
И конечно, приходите на RailsClub 2015 — регистрация тут.

Бонус для тех, кто дочитал до конца: видео руби секции с DevConf 2015 и второго Ruby митапа. Приятного просмотра!

Источник: rubyflow.ru

Находим похожие результаты в PostgreSQL или поиск с ошибками

Замечали ли вы, что когда вы набираете что-то в google или yandex с ошибками, вас поправляют? Данная концепция называется триграммным поиском, она позволяет искать слова и фразы с опечатками. В этой статье мы рассмотрим, как реализовать такой поиск при помощи PostgreSQL и Ruby.

https://mkdev.me/posts/nahodim-pohozhie-rezultaty-v-postgresql-ili-poisk-s-oshibkami

alt text

Источник: rubyflow.ru

Пишем API gem: финальное метапрограммирование

Мы подошли к концу разработки гема GrooveHQ! В финальной статье мы используем метапрограммирование для улучшения читаемости кода и опубликуем проект на rubygems.org.

https://mkdev.me/posts/pishem-api-gem-finalnoe-metaprogrammirovanie

alt text

Источник: rubyflow.ru

JRubyConf 2015

JRubyConf - конференция посвященная только JRuby. Один день, один поток, уникальные спикеры.

Мероптиятие пройдет 31 июля в Потсдаме, Германия.

Список спикеров, план выступний и все остальные подробности вы сможете узнать на официальном сайте - http://2015.jrubyconf.eu/.

Источник: rubyflow.ru

eurucamp = community + learning + fun

eurucamp - это незабываемое мероприятие, которое пройдет в этому году с 31 июля по 2 августа в Потсдаме, Германия.

Помимо возможности лично пообщаться с замечательными разработчиками и принять участие в различных воркшопах, вы получаете шанс отлично отдохнуть на природе :)

Организаторы eurucamp постарались сделать все возможное, чтобы это событие было интересно не только разработчикам с различным уровнем опыта, но также их вторым половинам и детям.

Интересно? Все подробности на http://2015.eurucamp.org/.

Источник: rubyflow.ru

Пишем API gem: как написать тесты для внешнего API

Написание гема для работы с GrooveHQ подходит к концу. В этой статье мы покроем его тестами с ног до головы, рассмотрим WebMock, Rspec и общий подход к тестированию подобных гемов.

https://mkdev.me/posts/pishem-api-gem-kak-napisat-testy-dlya-vneshnego-api

alt text

Источник: rubyflow.ru

Пишем API gem: что такое Hypermedia API и как с ним подружиться

В предыдущей статье мы разметили основную структуру гема, определились с библиотекой для HTTP запросов и написали метод для работы с первой API точкой – получением списка всех тикетов. После этого я планировал начать добавлять все остальные точки, но столкнулся с проблемой, которую мы и будем решать в этой статье: поддержка Hypermedia API.

**https://mkdev.me/posts/pishem-api-gem-chto-takoe-hypermedia-api-i-kak-s-nim-podruzhitsya**

alt text

Источник: rubyflow.ru

Клиент для Telegram Bot API

Telegram совсем недавно выпустил API для создания ботов. Я очень воодушевился этой новостью и полез играться с ним. Клиенты для Ruby, которые мне попались, по тем или иным причинам не совсем устроили меня, и я решил написать свой. Надеюсь, он окажется полезен и вам!

Собственно, сам гем - https://github.com/atipugin/telegram-bot-ruby

Источник: rubyflow.ru

Пишем API gem: выбор структуры и инструментов

Первый шаг в разработке гема - выбор правильной структуры и необходимого минимума библиотек. Этот процесс и показан в статье. Спойлер: httparty

https://mkdev.me/posts/pishem-api-gem-vybor-struktury-i-instrumentov

alt text

Источник: rubyflow.ru

Разработка гема GrooveHQ с нуля до релиза

Новая серия статей, в которой ментор mkdev разрабатывает с нуля свой первый open source гем и рассказывает в деталях о процессе разработки.

https://mkdev.me/posts/kak-sozdat-gem-dlya-raboty-s-api

alt text

Источник: rubyflow.ru

Svitla Ruby Conference-2015 представляет полный видео и фото отчет

Организатор, Svitla Systems Inc. выражает благодарность всем участникам, докладчикам, спонсорам и партнерам, которые помогли организовать эти два удивительных Ruby-дня!



30-31 мая, 2015 третья киевская конференция RubyC традиционно собрала множество поклонников языка Ruby. В этом году организаторы могли похвастаться равным количеством спикеров из Украины и из-за рубежа (США, Великобритания, Германия, Словения, Болгария), среди которых выступили два Ruby-Hero 2014 года. Всего в этом году RubyC посетили 260 рубистов из Украины, Беларуси, Молдовы и даже Азербайджана! RubyC-2015 был также благословлен спонсорской поддержкой компаний Soft Serve (Генеральный спонсор), DataArt и Global Logic (Ruby спонсоры), которые два дня дарили подарки и развлекали всех гостей возле своих стендов. А самое главное событие этого года для RubyC — это присутствие 15 девушек-рубистов (по сравнению с семью в 2014 г.).


Полный фотоотчет: https://www.facebook.com/RubyC.eu

Полный видео-отчет: http://rubyc.eu/posts/36

Источник: rubyflow.ru

Самообучение веб-разработке на CodenameCRUD

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

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

Готовящиеся к выходу курсы:

  • Ruby on Rails
  • HTML5 и CSS3
  • Javascript и jQuery
  • Поиск работы веб-разработчиком

Команда проекта постоянно работает над выпуском новых курсов. Несмотря на то, что наш проект наследует идею, концепцию и содержимое курсов с англоязычного theodinproject.com, он уже нашел свою аудиторию и учеников.

Мы в равной мере будем рады всем: новым ученикам, которым будет полезен проект; контрибьюторам, которые помогут нам сделать наше Rails-приложение еще более удобным и качественным; желающим помочь с переводом уроков с английского на русский язык.

Каждый может внести свой вклад любым удобным способом :)

Источник: rubyflow.ru

DevConf 2015

DevConf - профессиональная конференция, посвященная ведущим технологиям программирования и веб-разработки.

Участникам DevConf предоставляется уникальная возможность - получить доступ сразу ко всем лидирующим технологиям веб-разработки, послушав доклады от основателей этих технологий, приехавших в Москву со всего мира.

В Ruby-секции конференции вас ждут доклады:

  • Масштабирование разработки, Дмитрий Галинский
  • Эксплуатация RoR проектов, Егор Баранов
  • Правильная работа с часовыми поясами в Rails-приложении, Андрей Новиков
  • Создание Быстрых, отказоустойчивых сервисов на EventMachine, Алексей Мартынюк
  • EventMachine или "Что делать, если вы соскучились по callback-ам?", Николай Норкин
  • Принципы построения распределенных баз данных, Алексей Никитин
  • Сбор и обработка статистики, Евгений Ли
  • Tarantool, Sharding и Nginx: скорость, простота, масштабируемость, Андрей Дроздов и Василий Сошников
  • Глубокая аналитика реальной скорости сайта, Николай Мациевский
  • Работа с требованиями в стартапе, Байкин Александр

DevConf 2015 пройдет 19 июня в гостинице Измайлово, г. Москва.

Больше подробностей и регистрация на http://devconf.ru.

Источник: rubyflow.ru

Всё, что нужно знать о routes, params и формах в Rails

Новая статья, нацеленная на новичков: рассматрвиается детально процесс передачи параметров в Rails, использование strong_params, routes и генерация форм.

https://mkdev.me/posts/vsyo-chto-nuzhno-znat-o-routes-params-i-formah-v-rails

Источник: rubyflow.ru

Predictive City: олимпиада по прогнозированию задержек авиарейсов

alt text

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

К сожалению, отклонение от графика рейсов - проблема многих авиакомпаний. Изменения в расписании становятся причиной проблем при посадке на транзитные рейсы.

Другое дело - спрогнозировать такие отклонения. В таком случае вы бы точно знали реальное время прибытия самолета и могли бы подстроить под него свои планы.

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

Мы объявляем конкурс на прогнозирование отклонения от расписания авиарейсов. Online олимпиада Predictive City будет проходить с 10 апреля по 30 июня при организации компании Provectus.
Участникам будет предоставлена информация обо всех рейсах международного аэропорта г. Казань, начиная с 20 марта 2015 года. Задача участника - написать приложение, которое будет выдавать прогноз реального времени посадки рейсов в начале каждого дня с 1 июня по 30 июня 2015 года.

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

Зарегистрироваться и узнать подробнее о соревновании вы можете на сайте: http://predictivecity.com/

Все обсуждения ведутся в Facebook.
По вопросам сотрудничества обращайтесь:
Татьяна Козовая

, Skype: tkozovaya

Источник: rubyflow.ru

RubyC-2015 представляет интервью с Эриком Михаельс-Обером

alt text

В преддверии третьей киевской конференции RubyC-2015 (30-31 мая 2015 года), организаторы представляют интервью с Эриком Михаельс-Обером (Erik Michaels-Ober), рубистом из Германии, который стал RubyHero-2014. Эрик является популярным ментором среди разных Ruby-сообществ: Ruby Summer of Code, Google Summer of Code и Rails Girls Summer of Code. В рамках RubyC-2015 Эрик представит тему Crystal programming language, подробности о которой можно узнать на сайте http://rubyc.eu/#speakers, а больше узнать о самом Эрике можно из его ответов.

I started working on Ruby full-time in 2006, when my team decided to port our web application from PHP to Rails. Rails had just turned 1.0. I believe we were using Ruby version 1.8.4 with Mongrel as the web server. This was before Rack, Bundler, RubyGems.org, or GitHub. In retrospect, it’s hard to imagine working on Ruby without these tools that I now use on a daily basis.

Ruby made me realize the value of people over computers. Most programming languages are optimized to make executing code fast. Ruby is optimized to make reading and writing code fast. This changed the way I thought about code: from something that I write for the computer to something that I write for other people.

Ruby, the language, is great but my true love is the Ruby community. By joining this community, I’m now connected to nice people, all around the world. I love meeting new Rubyists at meetups and conferences. I’ve learned so much from others, who openly share their knowledge on their blogs, podcasts, screencasts, etc. I love Rails Girls, RailsBridge, and other community programs to make programming more diverse and inclusive. I also love the creative spirit of the Ruby community, inspiring projects like Artoo, Kids Ruby, Shoes, Gosu, Sonic Pi, etc.

I think Ruby would be better language if the syntax was more consistent. For example, Ruby has 2 different ways to make a hash and 7 different ways to make a function (def, proc, Proc.new, lambda, ->, {}, do…end) compared to JavaScript, which has a unified hash/object syntax and one way to define a function, regardless of whether it’s named or anonymous. Ruby also has too many aliases compared to Python’s philosophy that there should be only one obvious way to do something. Design is the art of making decisions. By having multiple names for the same method (e.g. map/collect, reduce/inject, find/detect, find_all/select, etc.), the Ruby designers avoided making a hard decision, hoisting that choice onto the user. Ruby also has many similar names for methods that are subtly different (e.g. ==, ===, eql?, equal?). I’ve been using Ruby daily for almost 10 years and I still can’t remember the difference between eql? and equal? without looking it up. I wish these methods had more descriptive names. Another example is the subtle differences between the alias keyword and alias_method, or private and protected. I think symbols could be replaced by frozen strings and removed from the user-facing part of the language. There are a few other language “features” I would remove from the Ruby if it was up to me, like the Perl-inspired global_variables. In my opinion, these do not mesh well with the rest of the language. There are also a lot of poorly maintained and outdated code in the Ruby standard library. I’d like to see the standard library refreshed to use newer language features, like keyword arguments. If these features are not useful enough for the core/standard libraries, they should be removed from the language, since they add unnecessary complexity. The ability for Ruby to catch some type errors at startup time would be nice. I’d also like an ahead-of-time compiler than generates native binaries. And better runtime performance. I’ve started using Crystal instead of Ruby, which I will be giving my talk about, since it has most of the features I like about the Ruby language without many of the features I dislike.

If talking about the most terrible architectural solution/code I have ever met, the first thing that comes to mind is the way Rails performs uniqueness validation. For those who don’t know, it just does just does a SELECT to see whether the field already exists before doing an INSERT. The first problem is that these two operations are not done in a transaction, so there’s a race condition that allows non-unique values to be inserted. However, transactions are not a good solution either, since they would cause too much table locking. The best solution is simply to create a UNIQUE INDEX on that field in the database, which guarantees correctness and optimal performance. The Rails approach to uniqueness validation is an impedance mismatch that gives the user a false sense of security.

The most spectacular Ruby news in 2014 was the creation of RubyBench.org by Alan Guo Xiang Tan. It is an incredibly valuable (and long-overdue) contribution to the Ruby community. This project will ensure that there are no performance regressions in Ruby so it only gets faster with each release. If RubyBench existed in the past, it could have prevented the performance regression in require that snuck into Ruby 1.9.

Life after Ruby is Crystal! See my talk for more information. ;)

Currently I am working on rewriting the Twitter CLI in Crystal and coaching a Rails Girls Summer of Code team.

My dev environment contains the Fish shell, which I recommend to anyone who spends a lot of time on the command line. Try it for a week and you’ll never go back!

My favorite Ruby blogs\communities\websites are Ruby-Talk, Ruby Weekly, and This week in Rails mailing lists. Blogs, written by Aaron Patterson, Aman Gupta, Sam Saffron, James Edward Gray II, Thomas Reynolds, Sandi Metz, Tom Stuart, Avdi Grimm, Jessica Kerr and Pat Shaughnessy. I also read lots of non-Ruby blogs.

I recommend the book “Ruby Under a Microscope” by Pat Shaughnessy because it is a fascinating look at how Ruby works under the hood. I would also recommend Practical Object-Oriented Design in Ruby by Sandi Metz to any Rubyist who hasn’t read it yet. For a better theoretical understanding of computer science, I recommend Understanding Computation by Tom Stuart. To absolute beginners, I recommend Learn to Program by Chris Pine. Finally, Why's (Poignant) Guide to Ruby has a special place in my heart.

My personal life hack is: add the following line to your crontab: */30 9-17 * * 1-5 say "Stand up and walk around"

Источник: rubyflow.ru

Вход для пользователей