Обновить
2.1

Ruby *

Динамический высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

DevConf 2015 — сформирована программа конференции

Время на прочтение5 мин
Охват и читатели6.6K

Крупнейшая конференция DevConf 2015 пройдет в эту пятницу в Москве (конгресс центр Измайлово Бета).
20 июня пройдут эксклюзивные мастер-классы: Sphinx 3.0, MySQL 5.7, Docker, cоздание мобильных игр и архитектуры социальной сети
62 докладчика — 7 потоков: Python, PHP, Ruby, Javascript, Storage, DevOps, Commonкаждый Веб-разработчик найдет что-то интересное для повышения своей квалификации!
Читать дальше →

Правда ли, что Go быстрее Ruby?

Время на прочтение3 мин
Охват и читатели13K
Последние несколько лет я занимаюсь созданием игр для социальных сетей. В качестве back-end применяю связку Ruby + Sinatra + Redis. Redis используется в качестве единственной базы данных. Производительности одной базы Redis часто не хватает, поэтому используется кластер из нескольких баз данных. Более подробно о том, как создавалось решение в виде кластера баз Redis можно прочитать в этой статье.

В последнее время у меня большой интерес вызывает язык программирования Go — слишком много плюшек его использование сулит программисту. Хочется back-end для новых игр написать на нем, но существующая и отлаженная кодовая база на Ruby мешает этому.

Поэтому я решил двигаться небольшими итерациями и начал с переписывания микросервисов применяемых в играх на Go.

Читать дальше →

Ruby и C. Часть 4. Дружим акселерометр, гироскоп и дальномер с Raphael.js

Время на прочтение6 мин
Охват и читатели9.6K
В предыдущих частях от iv_s (раз два три) были описаны различные техники использования C и Ruby вместе. Я бы хотел рассказать о еще одной возможной связке – использовании уже существующих системных C-функций.

Я потихоньку улучшаю своего робота-рисовача. Он написан на Ruby, поэтому при подключении к нему акселерометра с гироскопом, мне, само собой, захотелось продолжить использовать эту технологию.

Как оказалось, достучаться до функций работы с шиной I2C в Ruby предельно просто – он позволяет использовать уже написанные и установленные библиотеки на C.



Схема работы такая:
на RaspberryPi запущен Sinatra сервер, который при обращении отдает данные о повороте платы по осям X и Y, а также расстояние до ближайшего препятствия в сантиметрах.
На клиенте для визуализации и отладки написан простой скрипт с использованием Raphael3d.js, который каждые 100мс опрашивает устройство и поворачивает схематическую плату в соответствии с положением платы физической.
Читать дальше →

BSON инъекция в MongoDB адаптере для Ruby

Время на прочтение3 мин
Охват и читатели11K
В BSON-ruby был найден баг, который в лучшем случае приводил к небольшому DoS, но большинство версий было уязвимо к инъекции в BSON (аналог SQL инъекции, BSON это бинарный аналог JSON, используемый для работы с базой).

На хабре уже как-то упоминалась особенность регулярок в руби — у нас ^$ значат не просто начало и конец строки, но и новую строку \n.

Но тогда в примерах были лишь XSS «javascript:a()\nhttp://», и я давно искал пример, когда регулярки приводят к чему-то серьезному. И вот пару дней назад, во время аудита внешних библиотек нашего клиента, наткнулся на следующий код в BSON-ruby.

def legal?(str)
  !!str.match(/^[0-9a-f]{24}$/i)
end
Читать дальше →

DevConf 2015: 38 попугаев или как конференция сообществ разработчиков пытается выжить в блокаде импортозамещения

Время на прочтение1 мин
Охват и читатели13K

Коллеги по WEB-цеху! Мы рады пригласить Вас на 6-ю DevConf 2015 — которая пройдет 19 июня в Москве.
Многие злопыхатели — говорят, что конференции разработчиков загнутся. Работодатели зажимают бюджеты на развитие разработчиков и т.д.
Но мы не сдаемся — и будем проводить мероприятия — несмотря ни на что. Мы верим — за нами «правда» — а «в чем сила брат?»
Читать дальше →

Язык программирования Crystal

Время на прочтение2 мин
Охват и читатели44K
Читая статью Интервью с Эриком Михаельс-Обером, RubyHero-2014, наткнулся на упоминание ЯП Crystal.
«Что за зверь?» — подумал я и полез искать информацию. То, что я нашел, меня, признаюсь, впечатлило.
Читать дальше →

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

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

Не совсем крутой Ruby

Время на прочтение3 мин
Охват и читатели25K
image

Помню, как два года назад столкнулся с Руби. Язык показался прекрасным, все в нем понятно и просто, нет ничего лишнего, нет ничего не очевидного. Шло время, навыки росли, времена менялись и вот уже Руби не кажется мне таким привлекательным как раньше: медленно работает, да и большие проекты поддерживать тяжело. Почему? Да потому что большие проекты и Руби — это вообще вещи несовместимые. Ты видишь скорость выполнения на других языках и хочется плакать — из-за того, что когда-то был сделан выбор именно в сторону этого языка программирования.

Ниже вы найдете 5 наиболее угнетающих меня вещей в Руби. Все они расписаны достаточно поверхностно.
Читать дальше →

Несколько полезных ruby-трюков, которые (возможно) улучшат ваш код

Время на прочтение3 мин
Охват и читатели32K
Скучая в эту дождливую праздничную погоду, наткнулся на занимательную статейку в блоге с говорящим названием Samurails, в которой описываются некоторые интересные ruby-трюки, которые наверняка будут интересны новичкам.

Итак, приступим.

Создаем хэш из массива


Проще простого. Ставим команду Hash перед любым массивом и получаем готовые пары ключ/значение:

Hash['key1', 'value1', 'key2', 'value2']

# => {"key1"=>"value1", "key2"=>"value2"}

Читать дальше →

Проблема с кодировкой в Sprockets 3 при работе с HTML файлами

Время на прочтение2 мин
Охват и читатели2.4K
Я не так давно обновил один из проектов до Rails 4.2 и заметил интересный эффект: кодировка обработанных html файлов в ассетах меняется на ISO-8859-1.

Данная проблема актуальна для Sprockets 3.0.0 и 3.0.1.
Читать дальше →

Еще один способ узнать, кто залогинен на сайте, используя faye + redis

Время на прочтение3 мин
Охват и читатели7.9K

Проблема


Было приложение, использующее Ruby on Rails, и стандартный набор гемов (вроде devise). На одной из страниц необходимо было выводить информацию о текущих активных пользователях.

Решение


Первой же мыслью было при каждом запросе записывать в текущего юзера время этого самого запроса и, таким образом, зная таймаут сессии, можно было вычислить, кто активен, а кто нет. Но таймаут стоял порядка 15 минут, поэтому если вкладку просто закрыли — то он все еще будет «активным» на протяжении этого времени. Уменьшать таймаут сессии было нельзя. Да и вариант каждый раз обновлять запись в базе выглядел немного костыльно, учитывая, что одновременных активных юзеров было порядка 2к. Из самых быстрых и простых вариантов — реализация используя вебсокеты + redis.

Faye vs WebsocketRails


tldr; В итоге был выбран faye.

Изначальный выбор был предоставлен двумя вариантами. Гугление ответ на вопрос что лучше не дало, поэтому все плюсы и минусы — это то, что удалось накопать из доков и статей.

Плюсов у websocket-rails я не нашел, зато минусы были очевидные: последнее обновление было довольно давно, на каждое подключение открывался отдельный поток, что потенциально могло заддосить наш и так не очень мощный сервер. Faye в свою очередь работает через event machine и полностью асинхронный, плюс постоянно обновляется.
Читать дальше →

RubyMine 7.1: улучшенная работа с Puppet, JavaScript, CoffeeScript и не только

Время на прочтение2 мин
Охват и читатели11K
Привет, Хабр!

Вот весна и перевалила через свою середину, к концу подходит апрель. Этот месяц был богат на хорошие новости от JetBrains: обновление ReSharper Ultimate, выпуск ReSharper C++ и CLion 1.0. А сегодня мы надеемся порадовать и Ruby-разработчиков. В среду, 15 апреля, вышло обновление нашей интеллектуальной среды для разработки на Ruby и Rails — RubyMine 7.1. Прежде всего, в новой версии мы усовершенствовали поддержку Puppet, кроме того уделили много внимания JavaScript и CoffeeScript, постарались привнести еще больше удобства и эффективности в процесс написания кода.


Читать дальше →

Новая книга о Ruby

Время на прочтение2 мин
Охват и читатели21K
Здравствуйте, коллеги!

Не так давно мы публиковали опрос по книгам о Ruby, К сожалению, вариант «Ни одна из них» оказался удручающе популярен. Поэтому мы решили возвестить о долгожданном выходе книги Хэла Фултона "The Ruby Way", аннотацию которой размещаем под катом.
Читать дальше →

Ближайшие события

Результаты ежегодного исследования StackOverflow — про технологии, зарплаты, счастье и кофе

Время на прочтение3 мин
Охват и читатели63K
Крупнейший международный портал разработчиков StackOverflow провёл ежегодный опрос. Участвовали более 26 тысяч человек из 157 стран. Результаты получились очень интересные.

Общая картина


Самая большая концентрация разработчиков на 1000 человек в Люксембурге, Исландии и Швеции. Средний возраст разработчика — 28.5 лет и его дата рождения приходится на апрель 1986 года. Женщин менее 6% и почти половина из них начали программировать лишь в последние 2 года.
Читать дальше →

Ruby Together – фонд развития языка Ruby

Время на прочтение3 мин
Охват и читатели8.8K


Пару раз проскочив в условном Ruby Weekly, сайт инициативы Ruby Together не зацепил моего внимания, хотя должен был. Давайте разберемся, на что нам предлагают потратить свой трудовой доллар.

Ruby Together — некоммерческая организация, занятая привлечением и распределением денег на развитие инфраструктуры языка Ruby. Уже сейчас под крылом организации находятся столпы экосистемы Ruby: гем bundler, репозиторий rubygems.org и сам проект rubygems. Организация управляется советом директоров, который состоит из хорошо знакомых всем рубистам имен: André Arko, Aaron Patterson (интервью для хабра), Steve Klabnik (интервью для хабра, «Как я нахожу время?»), Sarah Mei, Terence Lee, Ines Sombra, Joel Watson.

Индивидуальное членство в организации стоит $40 в месяц, корпоративное членство – $800. Взносы дают право голоса и ряд бонусов, о которых под катом. Для тех, кто просто хочет помочь проекту деньгами, существует статус «друга», без доступа к внутренним ресурсам и права голоса, с ежемесячным взносом $10, либо разовым взносом произвольной суммы. На текущий момент к проекту присоединились компании Stripe и Engine Yard, а также более 30 индивидуальных участников.

Принять участие.
Читать дальше →

JetBrains на RubyConfBy в Минске 22 марта

Время на прочтение1 мин
Охват и читатели2.1K
Привет, Хабр!

Уже в это воскресенье, 22 марта, в Минске пройдет однодневная конференция RubyConfBY, и наши докладчики уже пакуют чемоданы. В этот раз два Андрея, Андрей Вокин и Андрей Власовских, расскажут об инструментах, позволяющих находить ошибки в Ruby-коде без его выполнения. При этом, представляя команды RubyMine и PyCharm, они также попробуют сравнить Ruby и Python, чтобы понять, как стиль программирования влияет на статический анализ кода.

И немного о самой конференции со слов ее организаторов:
Читать дальше →

Как обойти двух факторную аутенфикацию Authy с ../sms

Время на прочтение3 мин
Охват и читатели39K
image

С помощью простого ввода ../sms можно было обойти второй фактор на сайтах использующих 2FA через authy.com (а их довольно много).

Самое интересное что такая досадная уязвимость появилась не по вине Authy, да и нашел я всю эту цепочку багов с большой удачей.
Читать дальше →

Vesta CP: установка веб-приложений на Ruby и Python

Время на прочтение6 мин
Охват и читатели13K


Привет Хабр.
Я люблю, когда все лежит на своих местах, все в чистоте и порядке.
Поэтому раз в квартал разгребаю творческий беспорядок.
Для меня важно иметь стабильную ОС с уверенностью в том, что после очередного ежедневного обновления ничего не сломается. Многие разработчики выбирают ОС исходя из наличия актуальных версий софта. Я умею готовить Centos и в "yum -y install yum-cron" уверен на 99.98%.

Расскажу, как при этом можно использовать последние версии ruby и python для web-разработки. Так же по результатам на сервере будут установлены 4 веб-приложения от одного регулярного пользователя: djangocms (python 3.4.3 ), quokka (python 2.7.9 ), redmine (ruby 2.2.1 ), refinerycms (ruby 2.0.0). На тонкие параметры запуска приложения внимание обращено не будет (выбор БД, количество веркеров, соединений, логи и т.д.). Хотел описать LocomotiveCMS, но оно оказалось паровозом с кучей ручных правок для сетапа.

Для комфорта и удобства будем использовать панель управления VestaCP. Потому что она просто великолепна и идеологически родная.
Читать дальше →

Как мы Email рассылки делали

Время на прочтение2 мин
Охват и читатели3.3K
Привет, Хабр!

Давно уже собирался написать о то как мы в своих реализовывали email-рассылки, да все никак руки не доходили. В общем не мне вам рассказывать о пользе email-маркетинга, просто хочу поделиться техническими деталями реализации этой задачи на Ruby on Rails.

Задача


Нужно, чтобы пользователи периодически по определенному условию получали email-ы. Например: Пользователь зарегистрировался 5 дней назад.
Читать дальше →

На Cousera открыта запись на курсы по веб-разработке на Ruby on Rails «Web Application Architectures»

Время на прочтение3 мин
Охват и читатели13K
Периодически я заходил на курсеру посмотреть доступны ли там какие-нибудь прикладные курсы. Было банально интересно, промелькнёт ли какой-нибудь лучик света за суровой теорией. Смотрел по языкам программирования, по управлению проектами, по аналитике. А сегодня увидел курс, информацией о котором и захотелось поделиться.

Его название в заголовке, а перевод описания ниже, а пока пару слов, почему я считаю, что он полезен всем:
  • Новичкам можно изучить новую для них технологию или подтянуть ещё не укрепившиеся знания.
  • Гуру-рельсовикам можно заработать Verified Certificate и тем самым подтвердить свои знания для общественности. Например, его можно прикрепить в LinkedIn или указывать в откликах на фрилансе


Смотреть содержание курса

Вклад авторов