Понадобилось мне, чтобы торрент клиент оповещал меня в QIP о закачке очередной порции добра.
Ринулся я искать подходящую утилиту с интерфейсом командной строки для отправки XMPP сообщений… и ничего не нашел — кругом клиенты, не заточенные для нужд автоматизации. Отсутствие
очевидных кандидатов подвигло меня к написанию собственной утилиты.
В данной статье я не буду вдаваться в подробности работы RVM и rbenv. Информации по данным штуковинам хватает на просторах интернета. Здесь же я хочу попытаться раскрыть вопрос: когда стоит использовать rbenv, а когда нет?
Цель
Для этого давайте для начала разберемся для чего же создавался RVM, а для чего rbenv. Для этого достаточно взглянуть на возможности обоих систем.
Продолжаем серию статей, в которой мы знакомим читателей с различными веб фреймворками. И сегодня позвольте представить Goliath (Голиаф,
http://postrank-labs.github.com/goliath/) — асинхронный веб фреймворк на Ruby, созданный компанией PostRank (
http://postrank.com/), ныне купленной Google.
Главной особенностью Голиафа является применение модели событий для ввода-вывода, посредством библиотеки EventMachine, а также механизма волокон (fibers), появившегося в Ruby 1.9. Его можно считать аналогом столь модного сегодня Node.js, только на Ruby.
В статье мы рассмотрим такие вопросы:
- волокна и события;
- установка Goliath;
- написание простого чата с применением механизма long-polling;
В заключении вы найдете традиционные тесты производительности.
Интересный факт: в Ruby 1.9.3 с 64-битным интерпретатором обработка строк длиной 23 и менее символов происходит
почти вдвое быстрее, чем строк длиной 24 и более символов. Другими словами, этот код Ruby:
str = "1234567890123456789012" + "x"
… будет обработан в 1,92 раза быстрее, чем этот:
str = "12345678901234567890123" + "x"
Для 32-битного интерпретатора Ruby граница производительности находится в районе
11/12 символов.
Конечно, довольно глупо изучать свой код и уменьшать все строки до 11 или 23 символов. Разница в производительности проявляется только на сотнях тысяч строк. Однако, желающим покопаться во внутренностях замечательного языка Ruby может быть интересно, почему так происходит.
Тви:
rubynoname.
RSS и
сайт подкаста на RPod.ru
Новогодний Выпуск
Сommunity-driven, присылайте свои пулл-реквесты
сюда
прослушан 662 раза
28 декабря 2011, 16:07
10
Среди преподавателей сложилось мнение, что Ruby — наиболее подходящий язык для изучения программирования. Первый в жизни ЯП должен быть максимально простым в использовании и, разумеется, объектно-ориентированным. В нём не должно быть каких-то двусмысленных концепций или странных особенностей синтаксиса. В общем, Ruby подходит идеально, решили ребята из компании The Hybrid Group и выпустили приложение KidsRuby (
код на github) — уроки Ruby для детей.
27 декабря 2011, 19:33
249
Команда разработчиков JRuby
настоятельно рекомендует всем установить последнюю версию OpenJDK 7u2 (OpenJDK 7 update 2), которая
значительно доработана по сравнению с июльским релизом JDK 7 GA (General Availability). Среди прочего, сделана важная оптимизация в подсистеме invokedynamic. Поскольку JRuby 1.7 активно использует эту подсистему, то разработчики специально придерживали выпуск 1.7, дожидаясь этого апдейта. Собственно, официальный релиз 1.7 не произошёл до сих пор, но предварительную сборку для тестирования можно скачать
здесь.
При использовании JRuby 1.6.x после апгрейда с Java 6 на Java 7 вы увидите прирост скорости JRuby-приложений примерно на 10-30%, а в случае с JRuby 1.7 — примерно
в три раза!
Разработчики просят тех, кто не заметил никакой разницы в производительности, зарегистрировать сообщение в
баг-трекере. Очевидно, это какой-то баг, который постараются исправить к официальному релизу JRuby 1.7.
Это ещё не всё. Для будущего OpenJDK 7u4 запланирован новый оптимизатор invokedynamic, и ребята из OpenJDK говорят о возможности ещё большего увеличения производительности.
Доброго времени суток!
Вместо введения
Наконец-то я нашёл немного времени для того, чтобы продолжить своё повествование о разнообразных чудесах в Ruby. Как вы помните, в
прошлой части мы познакомились с основами написания своего гема. Мы узнали, какой минимальный набор файлов должен быть для того, чтобы его собрать. Также мы узнали как мы можем опубликовать своё творение в RubyGems. В тот же день (после написания первой части) в RubyGems неожиданно проявился всплеск гемов под названием
hello-world. Причём я застал довольно много вариаций оного. Некоторые даже не удосужились поменять строку, где указывается автор гема.
g.author = "krovatti"
Некоторые вовсе задавали гему следующие значения версий:
g.version = "666"
g.version = "111"
g.version = "911"
В общем было достаточно много других вариаций, что меня, как автора, безусловно, не могло не радовать.
19 декабря 2011, 16:18
64