Как стать автором
Обновить
40
0
Марат @maratk

Пользователь

Отправить сообщение

Интервью с Эриком Михаельс-Обером, RubyHero-2014

Время на прочтение4 мин
Количество просмотров6.6K
Эрик — Ruby-герой 2014 года, популярный ментор среди разных Ruby-сообществ (Ruby Summer of Code, Google Summer of Code и Rails Girls Summer of Code) и просто интересный человек. Изначально интервью должно было выглядеть в стиле «коротко продолжи фразу», но Эрик подошел к делу творчески, поэтому публикую его полностью.
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии3

Секрет объектно-ориентированной разработки в Rails

Время на прочтение10 мин
Количество просмотров2.7K
Сегодня мы предоставим вашему вниманию перевод поста Стива Клабника (Steve Klabnik), известного разработчика, приверженца Ruby, одного из победителей Ruby Hero Award этого года. Что это за награда? Она присуждается победителями прошлого года тем участникам сообщества, которые наиболее проявили себя: создали значимый обучающий контент, разработали плагины и гемы, участвовали в проектах с открытым кодом. Такая награда была создана для того, чтобы отметить наиболее проявивших себя людей и дать им признание, которое они заслуживают.
Пообщаться со Стивом можно будет на конференции в Киеве RubyC 5-6 ноября этого года.


Я часто говорю людям, что учил Ruby через Rails. Это один из худших способов, но к тому времени я уже выучил столько языков программирования, что это не мешало мне. Тем не менее, это дало мне слегка искаженное ощущение того, насколько тщательно проектировать классы, необходимые для Rails приложений. К счастью, я пристрастно просматриваю код, написанный другими, и заметил, что есть одна важная вещь, которая встречается в разработках у многих уважаемых мною людей.

Мне кажется, эти люди также считают эту вещь уникальной. Это не когда люди, не умеющие писать хороший код, стараются, но все равно получается плохо. Это как флаг, сигнал. Теперь, когда я вижу, как кто-то внедряет эту вещь, я сразу думаю: «он шарит». Возможно, я слишком сильно доверяю своему чувству, но эта продвинутая техника разработки предлагает множество взаимосвязанных преимуществ вашим Rails приложениям, легко применима и ускоряет тестирование на порядок или больше. К сожалению, для многих начинающих Rails разработчиков это неочевидно, но я хотел бы, чтобы вы писали код лучше и вот я здесь, чтобы, с вашего позволения, «раскрыть секрет» и поделиться этой мощной техникой с вами.

Читать дальше →
Всего голосов 60: ↑53 и ↓7+46
Комментарии19

Слияние Rails и Merb: Производительность (Часть 2 из 6)

Время на прочтение9 мин
Количество просмотров909
Шесть последовательных статей о слиянии Rails и Merb были опубликованы на www.engineyard.com с декабря 2009 до апреля 2010 года. Это вторая статья. Первая тут.

Следующим замечательным улучшением, которое мы надеялись внедрить в Rails из Merb, была лучшая производительность. Поскольку Merb появился после Rails, разработчики Merb имели возможность узнать, какие части Rails использовались чаще, и оптимизировать их производительность.

Мы хотели взять из Merb изменения, улучшающие производительность, и перенести их в Rails 3. В этом посте я расскажу о нескольких оптимизационных моментах, добавленных в Rails 3: уменьшение времени работы контроллера и (сильное) ускорение рендера коллекции партиалов.
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии8

Слияние Rails и Merb: Год спустя (часть 1 из 6)

Время на прочтение9 мин
Количество просмотров802
Шесть последовательных статей о слиянии Rails и Merb были опубликованы на www.engineyard.com с декабря 2009 до апреля 2010 года. Это первая из них.

Сегодня ровно год с того дня, как мы объявили о слиянии Rails и Merb. Тогда было много скептических отзывов относительно успешности этого предприятия. Самой распространенной ассоциацией у тех, кто слышал о наших планах, был единорог. На RailsConf в прошлом году, и DHH (Девид Хайнемайер Ханссон, автор Rails. — прим. перев.), и я упоминали единорога в своих докладах, вызывая смех относительно поставленных нами огромных ожиданий и явной невозможности выполнить их для версии 3.0.

Прошел год, настало время отразить то, как хорошо мы потрудились для достижения поставленных целей. На протяжении следующих нескольких дней я детально опишу прогресс, совершенный в сторону каждого из пунктов моего оригинального поста (http://www.engineyard.com/blog/2008/rails-and-merb-merge/).
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии12

Изменение поведения метода в зависимости от контекста

Время на прочтение1 мин
Количество просмотров700
По сути задачка для гиков:
Есть класс А, у него метод save, принимающий один параметр, у параметра есть значение по умолчанию (допустим, true). Экземпляр класса А, принимающий метод save без параметров, автоматически принимает true и работает в соответствии с этим флагом. Есть класс В, у которого есть поле типа А. При вызове метода save для этого поля изнутри контекста класса В без параметров управление должно передаваться другой реализации метода, которая принимает по умолчанию значение параметра false. Примерно как работает override, но не глобально, а внутри только одного класса.
Читать дальше →
Всего голосов 10: ↑5 и ↓50
Комментарии7

Улучшенные идиомы для плагинов

Время на прочтение6 мин
Количество просмотров2K
Этот пост был опубликован 12 ноября 2009 года, но я думаю он не потерял своей актуальности, потому что плагины к Rails (и не только) все так же актуальны.

Последние дни мы с Карлом работали над системой плагинов. В частности, мы прошлись по Rails Plugin Guide. Читая гайд, мы заметили много излишеств в представленных там идиомах.

Я не упрекаю автора гайда; представленные идиомы в точности повторяют те, которые использовались с самых ранних дней Rails. С другой стороны, глядя на них я вспоминал те дни, когда при виде такого кода мне казалось, что Ruby полон магических заклинаний и относительно простые вещи требуют проведения каких-то особых церемоний (вроде танца с бубном. — Прим. перев.).

Вот пример:
Copy Source | Copy HTML<br/>module Yaffle<br/>  def self.included(base)<br/>    base.send :extend, ClassMethods<br/>  end<br/> <br/>  module ClassMethods<br/>    # любой метод здесь будет применяться классом, например, Hickwall<br/>    def acts_as_something<br/>      send :include, InstanceMethods<br/>    end<br/>  end<br/> <br/>  module InstanceMethods<br/>    # любой метод тут будет применяться экземпляром, например, @hickwall<br/>  end<br/>end <br/>

Начнем с того, что send вообще не нужен. Метод acts_as_something будет вызываться в самом классе, что даст ему доступ к приватному методу include.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии3

ActiveModel: пусть любой Ruby объект почувствует себя ActiveRecord

Время на прочтение8 мин
Количество просмотров4.6K
Yehuda Katz опубликовал эту запись в своем блоге 10 января 2010 года.

Огромное количество действительно хорошей функциональности Rails 2.3 скрыты в его монолитных компонентах. Я уже публиковал несколько сообщений о том, как мы упростили код маршрутизатора, диспетчера и некоторых частей ActionController, частично реорганизовав функциональность ActionPack. ActiveModel — еще один модуль, появившийся в Rails 3 после реорганизации полезной функциональности.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии19

Строительные блоки Ruby

Время на прочтение13 мин
Количество просмотров19K
Хвастаясь классными особенностями Ruby перед непосвященными (или перед партнером по языковому спаррингу), возбужденный рубист часто хватается за «мощный синтаксис блоков» в Ruby. К сожалению, для питониста или джависта остаются непонятными возможности пресловутого «мощного блочного синтаксиса» из-за отсутствия соответствующих механизмов в их языках.

Начнем с того, что мы обычно указываем на Rake, RSpec или Sinatra в качестве примеров удивительного использования блочного синтаксиса:
Читать дальше →
Всего голосов 60: ↑53 и ↓7+46
Комментарии46

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Зарегистрирован
Активность