Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске:

Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске:

В прошлый раз я предложил заглянуть в код MRI, чтобы разобраться с реализацией GIL и ответить на оставшиеся вопросы. Что мы сегодня и сделаем.
Черновая версия этой статьи изобиловала кусками кода на C, однако, из-за этого суть терялась в деталях. В финальной версии почти нет кода, а для любителей поковыряться в исходниках я оставил ссылки на функции, которые упоминал.
После первой части остались два вопроса:
array << nil атомарной операцией?
На первый вопрос можно ответив, взглянув на реализацию, поэтому начнем с него.
Читать полностью »
Пять из четырех разработчиков признают, что многопоточное программирование понять непросто.
Большую часть времени, что я провел в Ruby-сообществе, печально известная GIL оставалась для меня темной лошадкой. В этой статье я расскажу о том, как наконец познакомился с GIL поближе.
Первое, что я услышал о GIL, никак не было связано с тем, как она работает или для чего нужна. Все, что я услышал — что GIL — это плохо, поскольку ограничивает параллелизм, или то, что это хорошо, потому что делает код потокобезопасным. Пришло время, я приноровился к многопоточному программированию и понял, что на самом деле все сложнее.
Я хотел знать, как работает GIL с технической точки зрения. На GIL нет ни спецификации, ни документации. По сути, это особенность MRI (Matz's Ruby Implementation). Команда разработчиков MRI ничего не говорит по поводу того, как GIL работает и что гарантирует.
Впрочем, я забегаю вперед.
Читать полностью »
CoffeeScript принёс в JS неплохую абстракцию классов, основанную на прототипах.
Реализовав известную модель наследования и дополнив её наследованием методов касса,
он позволяет легко строить иерархии классов, даже не зная о цепочках прототипов.
Но и эта модель может быть улучшена.
Читать полностью »
Я думаю, что на многих сайтах пользователя спросят его физический адрес. Для доставки ли, для отсылки бумажного спама уведомлений ли. И, в общем-то — это мелочь. Вбил индекс, Москва, область, район, село, улица, дом, квартира. Казалось бы, что тут упрощать, каждый вроде помнит свой адрес, трудно ли его вбить? Но дьявол, как всегда, кроется в мелочах: пользователь опечатывается в адресе, посылка уходит не туда, лучи «добра» идут вам в обратную связь и вообще жизнь плохеет.
Приглядитесь к первой части адреса — индексу. В этом наборе из шести цифр уже есть область, район и город/село. Их можно подставить автоматом. Этим мы убъём сразу двух зайцев:
Дело за малым: нам нужна база почтовых индексов.
И она есть! Всамделишняя, электронная и, главное, официальная база индексов от Почты России.
Читать полностью »

28 сентября 2013 в Москве на территории центра Digital October состоится 12-ая конференция веб-разработчиков на языке Ruby и фреймворке Ruby On Rails – RailsClub’Moscow 2013.
RailsClub’Moscow 2013 соберет вместе ведущих российских и известных иностранных Ruby разработчиков, которые поделятся с участниками конференции своими знаниями и опытом.
На RailsClub 2013 будем обсуждать проектирование, разработку, тестирование, отладку, оптимизацию под большие нагрузки, масштабирование и эксплуатацию ruby on rails проектов.
В этом году в качестве докладчиков к нам приедут знаменитые ruby звезды:
Читать полностью »
Всем привет. Я долгое время программировал на PHP и использовал Zend 1. Работал над крупным проектом платежной системы. Система авторизации подразумевала пользователей, их авторизацию и разделение по ролям. Разделение по ролям было довольно обширным и ветвистым. Вообще в большинстве проектов если уж требуется авторизация, то, наверняка, потребуется хотя бы минимальное разделение по ролям.
Совсем недавно я начал проект на Ruby и подыскивал гем для авторизации. Но толком так и не нашел красивого и четкого гема, реализующего разделения по ролям, а может плохо искал. Теперь хочу рассказать о своем методе решения этой проблемы.
Читать полностью »
В то время как поле разработки софта растет, мы разработчики постоянно пытаемся ухватиться за новейшие технологии. К счастью, ремесло написания поддерживаемого кода языко-независимо и в этой серии постов мы сфокусируемся на мощном наборе вечных инструментов: паттернах проектирования.
Я настроятельно рекомендую книгу Russ Olsen — Design Patterns in Ruby. Наш цикл постов будет черпать вдохновение оттуда и будет чем-то вроде краткой выжимки. Таким образом, если вам понравится то что вы читаете (а я надеюсь на это!), книга будет отличным продолжением.
Мы рассмотрим различные паттерны проектирования и научимся их применять. Сегодняшняя тема — Шаблоный метод, простейший паттерн проектирования.
Читать полностью »

Стриминг крутился около Rails начиная с версии 3.2, но он был ограничен исключительно стримингом шаблонов. Rails 4 же вышел с более зрелым функционалом стриминга в реальном времени. По сути это значит что Rails сейчас способен нативно обрабатывать I/O объекты и посылать данные клиенту в риалтайме.
Streaming и Live — два отдельных модуля, реализованных внутри ActionController'а. Streaming включен по умолчанию, в то время как Live должен быть явно добавлен непосредственно в контроллере.
Основной api стриминга использует класс Fiber (доступен с версии ruby 1.9.2). Файберы предоставляют инструментарий для потоко-подобного параллелизма в ruby. Fiber дает возможность потокам приостанавливаться и возобновлять работу по желанию программиста, а не быть по сути упреждающими.
Читать полностью »

Nitrous.IO — это online IDE для веб разработки на Ruby, Python, Node.js и Go (авторы общеют больше вариантов со временем). Главными отличиями от десятка подобных проектов являются полноценный SSH-доступ к своим боксам (о них чуть ниже) и десктоп приложение, синхронизирущее локальный код с боксами, также как это делает Dropbox. И главное — в базовом варианте все это предоставляется бесплатно, поэтому попробовать и понять, нужно ли оно вам — крайне просто.
Читать полностью »