Posts from Vlad Zarakovsky...
Vlad Zarakovsky, Thu Jan 04 16:30:52 +0300 2007
Практически как я и
говорил раньше 
Замечательный новогодний подарок для всех почитателей Ruby. Теперь он уже в десятке
TIOBE Programming Community Index. А вот Delphi из нее уже выпал.
Vlad Zarakovsky, Thu Oct 05 06:01:07 +0400 2006
Согласно данным
TIOBE Programming Community за октябрь 2006, язык Ruby впервые получил статус "A". Что это означает?
Небольшая цитата:
"TIOBE Programming Community отслеживает популярность языков программирования. Данные обновляются раз в месяц. Рейтинг языка вычисляется исходя из количества квалифицированных кадров по всему миру, курсов и third party производителей. Для вычисления рейтинга языков программирования используются популярные поисковые системы, такие как Google, MSN, Yahoo!
TIOBE Programming Community index не следует рассматривать, как способ определить самый лучший язык программирования, или найти язык, на котором написано наибольшее количество кода. Он может использоваться для проверки, что ваши навыки соответствуют сегодняшним требованиям индустрии программного обеспечения или для принятия решения, какой язык стоит выбрать для разработки новой системы".
Для каждого языка программирования вычисляются два параметра: рейтинг и статус.
Рейтинг языка указывается в процентах и определяет его положение в общей таблице языков программирования. Совсем недавно, в марте 2006 Ruby впервые появился в Top 20 языков программирования, а в сентябре 2006 уже был на 13-м месте. То есть переместился на целых 14 позиций вверх по сравнению с сентябрем 2005 года. Из всех языков, только D показал такой же быстрый рост и находится теперь в списке немного ниже Ruby. В октябре 2006 рейтинг Ruby вырос еще более чем на 0.10%. Судя по всему, в декабре Ruby вполне может оказаться уже на 12-м месте в списке.


Теперь о статусе. У каждого языка может быть статус "B", "A--", "A-" или "A". Языки, имеющие статус "A" считаются основными языками. Если в течение как минимум 3-х месяцев рейтинг языка держится выше 0.7%, то он получает статус "A". В процессе роста рейтинга, язык последовательно получает статус "B", "A--", "A-", "A". И наоборот, если рейтинг падает.
Для разработки рекомендуется использовать основные языки программирования по трем причинам:
- для неосновных языков гораздо меньше квалифицированных кадров
- производители инструментов не занимаются разработкой инструментов для неосновных языков
- как правило, для неосновных языков существует меньшее количество библиотек
Конечно, это всего лишь один из критериев использования того или иного языка. Нужно учитывать также применимость языка к предметной области, производительность, масштабируемость.
Рост, который показывает Ruby в последнее время, откровенно потрясает. Появляются те самые библиотеки и инструменты, а серьезные игроки на рынке программного обеспечения заинтересовались Ruby. Фирмы Sun и Microsoft недавно явно показали желание ввести поддержку Ruby на своих платформах в ближайшее время. Все это позволяет ничуть не сомневаться в том, что за Ruby большое будущее, и это будущее уже пришло.
Vlad Zarakovsky, Fri Sep 15 14:00:34 +0400 2006
- Adobe выпустила Ruby on Rails SDK
Adobe выпустила Ruby on Rails SDK позволяющее создавать приложения на Ruby on Rails в качестве фронтенда используя Flex (Flash) вместо HTML.
- Sun наняла разработчиков JRuby
Компания Sun, похоже, всерьез взялась за скриптовые языки. Основная работа будет вестись над JRuby, после чего имеются планы по разработке инструментов для разработчиков на Ruby.
Vlad Zarakovsky, Thu Aug 10 06:00:41 +0400 2006
- Цитата недели: Bug or Feature?
Tammo Freese: “I would expect that method calls and proc calls do not differ in such a way. Is this a bug or a feature?”
Matz: “It’s a feature, but we are trying to fix it in the next major release (1.9 or 2.0).”
- Summer of Rails
Лето - пора отпусков. А этот проект предлагает провести его незабываемо, изучая Rails и создавая на нем полезные приложения.
Вы уже установили Rails, раздобыли книги и даже сделали shopping cart application? Но ведь это было давно, а вы до сих пор так и не написали собственное приложение. Пришло время это исправить!
- Ruby Cookbook
Наконец-то доступна законченная версия книги.
Кроме того, от того же издательства O'Reilly ожидается в скором времени Rails Cookbook.
- JrubyExtras
Проект нацелен на разработку расширений для JRuby и Java версий популярных C-extensions для Ruby.
По заявлению, проект уже включает в себя "портированный" Mongrel, ActiveRecord JDBC адаптера и набор Rake tasks. Хотя на RubyForge мною был обнаружен только адаптер.
- Motiro
Новая версия похожей на Trac системы, написанная на Rails.
Vlad Zarakovsky, Thu Jul 13 08:37:01 +0400 2006
- 19 советов по Rails
Утверждается, что здесь собраны советы, которые большинство пишущих на Rails программистов не знает. Заходим, проверяем 
- Ruby In Steel 0.7 - поддержка Rails!
Стахановскими темпами продолжается разработка Steel IDE - плагина для Visual Studio 2005 для разработки приложений на Ruby. Теперь IDE включает в себя поддержку Rails.
- Mongrel 0.3.13.3
Также очень быстро продолжается разработка быстро набирающего популярность HTTP сервера предназначенного для запуска Ruby приложений напрямую по HTTP, без FastCGI. Многие уже сейчас переходят на Mongrel, что говорит о достаточной стабильности. Предполагается, что в будущем, команда script/server будет пытаться запускать сначала Mongrel, если он установлен в системе.
В последней версии лицензия сменилась на такую же, которая используется в Ruby.
- JRuby 0.9
Вышла очередная версия интерпретатора Ruby 1.8.2 написанная на Java. С этой версии можно всерьез задумываться о интеграции с Java платформой, потому как теперь в JRuby:
- установлен и работает RubyGems 0.9.0
- запускается WEBrick
- из под WEBrick запущено Rails приложение "Cookbook tutorial". (Тем не менее пока остались некоторые некорректно работающие возможности Rails).
- в дистрибутив теперь включены все non-native библиотеки Ruby.
Кстати, к версии 0.9.1 планируется даже запустить Rails приложение в J2EE сервлет контейнере. Даешь Rails под Tomcat! 
Vlad Zarakovsky, Mon May 29 09:15:59 +0400 2006
- Новый инсталятор Ruby для Windows
Предложено использовать rubygems для подключения библиотек, чтобы упростить и ускорить выпуск инсталятора. Версия 1.8.2 вышла через неделю после выпуска соответствующей версии Ruby, а версия 1.8.4 до сих пор не готова несмотря на то, что Ruby 1.8.4 вышел уже давно.
- FasterCSV готова заменить CSV?
Библиотека FasterCSV по мнению многих достаточно стабильна и готова заменить стандартную библиотеку поставляемую с Ruby. По сравнению со стандартной библиотекой, FasterCSV быстрее, имеет больше возможностей и при этом в ней есть режим совместимости со стандартной библиотекой CSV.
- new.ruby-lang.org
Все ближе и ближе запуск новой версии сайта ruby-lang.org. Дизайн готов, идет работа над контентом.
- RbYAML-0.1
Собственно парсер YAML написанный на Ruby. Хотя в стандартной поставке Ruby есть C расширение для этого.
- foxGUIb 0.6
Новая версия интерактивного GUI дизайнера для FXRuby. А здесь небольшое руководство по этому чуду инженерной мысли 
- rcov 0.4.0
Обновилась утилита для анализа покрытия кода тестами. Улучшен внешний вид генерируемых отчетов, увеличена скорость работы.
Vlad Zarakovsky, Tue Apr 04 14:53:24 +0400 2006
- Rails 1.1
Вышла новая версия Ruby on Rails с большим количеством исправлений и новыми возможностями.
- JRuby 0.8.3
Новая версия интерпретатора Ruby написанного на Java. В последней версии Java классы загружаются во много раз быстрее (пример приложения на Swing запускается 5 секунд, вместо 2 минут). По заявлению разработтчиков, проект близок к тому, чтобы на нем запустилось Ruby on Rails приложение в недалеком будущем.
- Mongrel Web Server 0.3.12.1
Продолжается интенсивная разработка сервера приложений для Ruby. В настоящее время поддеживаются фреймворки Ruby on Rails, Og Nitro, Camping.
- Rake 0.7.1
В новой версии исправлен баг возникающий при работе в Windows и небольшие улучшения.
- ZenTest 3.1.0
Новая версия утилиты для упрощения разработки в стиле TDD. Утилита на основе простых правил создает недостающий код.
- Draft Ruby exam
Дмитрий Буздин опубликовал черновик экзамена для Ruby наподобие JavaBlackBelt.com.
Предполагается, что сертификация будет проводиться в целях изучения.
Многие, кстати, не любят подобные экзамены, т.к. по их мнению, они
обычно нацелены на наименее важные аспекты языка.
Vlad Zarakovsky, Mon Apr 03 10:01:54 +0400 2006
Случилось то, что я так долго ждал:
Ruby вошел в двадцатку в рейтинге популярности языков программирования TIOBE Programming Community Index! Причем появился он там сразу на 18-ом месте, т.е. по сравнению с прошлым годом поднялся на целых 14 позиций!
TIOBE следит за популярностью языков программирования по различным критериям и обновляет рейтинг каждый месяц.
Думаю, все согласятся, что нужно благодарить за такой бурный рост прежде всего Ruby on Rails и персонально DHH. Огромное человеческое спасибо, Дэвид!
Весна - время обновления и перемен... Не знаю, как для кого, а для меня год только начинается и начинается весьма оптимистически!!!
P.S. Я все еще пишу на PHP, но с большой надеждой смотрю в будущее 
Vlad Zarakovsky, Tue Mar 21 09:17:32 +0300 2006
- Best of Ruby Quiz
Вышла новая книга по Ruby от Pragmatic Programmers. В книге собраны 25 лучших (за последний год) задач с решениями и пояснениями с сайта Ruby Quiz.
- Ruby Hacking Guide
Закончен перевод второй главы книги Minero AOKI’s "Ruby Hacking Guide" на английский язык. В книге описывается внутреннее устройство интерпретатора Ruby. Книга будет полезна всем, кто разрабатывает расширения для Ruby или просто хочет разобраться, как работает интерпретатор.
- Rails Recipes
Вышла новая бета-версия книги. В книге приводятся рецепты по использованию Rails в реальных приложениях.
- RubyCLR
Вышла третья версия моста Ruby / .NET 2.0. В этой версии появилось несколько новых примеров. Кроме того, автор поделился планами по переносу разработки на RubyForge.
- rcov 0.2.0
Обновилась утилита для сбора информации о покрытии кода. Утилита работает значительно быстрее, чем утилита coverage (в 20 - 300 раз). По словам автора, программа выполняется примерно в 3 раза медленнее, чем без rcov.
Vlad Zarakovsky, Thu Mar 09 09:25:32 +0300 2006
- YARV 0.4.0
Новая версия виртуальной машины для Ruby. Ruby 2.0 все ближе и ближе!
- RubyCLR
Новая версия RubyCLR bridge, интегрирующего Ruby с .NET 2.0. В качестве примера приводится рабочее приложение: Windows Forms 2.0 RSS Reader. Не удержался, скачал, запустил, работает. Радует появление в последнее время на Ruby и для Ruby таких интересных проектов.
Vlad Zarakovsky, Mon Feb 27 12:47:29 +0300 2006
- SwitchTower 1.0.0
Вышла финальная версия утилиты для запуска команд параллельно на нескольких серверах. Утилита часто применяется для развертывания приложений на Ruby on Rails, особенно если они запускаются на нескольких серверах.
- lazy.rb
Библиотека позволяет делать так называемый lazy loading и другие вещи красиво. Так выглядит отложенное выполнение кода:x = promise { 3 5 } # на практике вместо 3 5 нечто "тяжеловесное"
p x # => #<Lazy::Promise computation=#<Proc:...>>
p x * 3 # => 24 т.е. 3 5 выполняется здесь, т.к. понадобился x
p x # => 8Еще интереснее выполнение в отдельном потоке:x = future { 3 5 } # здесь код в блоке future запускается в отдельном потоке
do_something_else() # в это время в основном потоке выполнение продолжается
# ждем здесь значение x (т.е. завершения потока запущенного future)
p x * 3 # => 24 Красота если уж и не спасет мир, так порадует точно.
- Ruby GUI Debugger
Это Ruby/Gtk2 интерфейс для встроенного отладчика Ruby. Поддерживаются все возможности встроенного отладчика.
Vlad Zarakovsky, Wed Feb 15 14:25:54 +0300 2006
- Хорошая задачка в Ruby Quiz
В Ruby уже есть библиотека для превращения внутренних итераторов во внешние. Стандартный класс Generator недавно уже был переписан для увеличения производительности. Поставлена задача сделать еще более быструю реализацию.
- Watir WebRecorder для Ruby
Анонсирована версия программы WebRecorder, создающая код для Watir. WebRecorder - это средство для ускорения создания веб тестов и скриптов для автоматического выполнения заданных действий. Watir Webrecorder представляет собой браузер с поддержкой закладок, записывающий выполняемые в Internet Explorer действия, и создающий Ruby код использующий Watir.
Vlad Zarakovsky, Wed Feb 15 10:48:15 +0300 2006
- Новая книга по Ruby on Rails
Chad Fowler готовит книгу "Rails Recipes", которая будет представлять собой сборник рецептов для программистов на Rails. В настоящее время это бета-версия книги. Бесплатно для ознакомления доступны некоторые главы. Выход книги планируется летом.
- initialize против init
У создателя Ruby спросили, почему было выбрано более длинное имя для инициализируещего метода (меня, кстати, этот вопрос тоже мучал). Он ответил, что выбрал более длинное емя, чтобы избежать потенциальных конфликтов для такого важного метода. Кроме того, имя изначально просто было взято из T laguage (Scheme dialect). Думаю, все же второе. Лично я за "init".
- Жаргон Ruby
Hal Fulton составил список употребляемых в рамках сообщества Ruby терминов: "duck typing, threequal, spaceship operator, singleton method, singleton class, splat or unary unarray, multiple or parallel assignment, and (ehh) eigenclass." и приглашает всех поучавствовать в расширении списка.
Vlad Zarakovsky, Wed Feb 15 10:22:53 +0300 2006
Vlad Zarakovsky, Tue Jan 24 14:19:00 +0300 2006
- JRuby на майской конференции JavaOne 2006
JRuby - это интерпретатор Ruby написанный на Java. Это позволяет использовать возможности Java платформы в Ruby или наоборот. Если реализация JRuby будет проходить как намечено, то к маю мы увидим запуск Ruby on Rails под JRuby.
- Rake 0.7.0
Вышла новая версия Rake (Ruby Make) с поддержкой пространств имен в названии заданий и параллельным выполнением заданий.
- Rmagick 1.10.0
Новая версия привязки Ruby к библиотекам ImageMagick и GraphicsMagic.
- Test::Unit::Benchmark
Первая версия расширения для Test::Unit показывающего, сколько времени занимает выполнение каждого теста. Автор утверждает, что это хороший пример аспектно-ориентированного программирования в Ruby. Для установки потребуются также Devel::Which и AspectR.
- ppp
Альтернатива Kernel#p для отладки. Предоставляет методы ppp, pppp, ppm и ppmp. Народ уже поприкалывался с названия, мол "я думал это Point-to-Point-Protocol"
Предлагаю сделать универсальный метод вывода отладочной информации. Чем больше нужно информации, тем больше 'p' вводить. Можно даже не считать, а печатать "на глаз" 
- Librend 0.4
Библиотека рендеринга 2D и 3D графики в реальном времени. Также поддерживается вывод звука. Для работы требуются библиотеки SDL (звук, ввод) и OpenGL (графика).
- FreeRIDE 0.9.5
В новой версия IDE на Ruby и для Ruby появилось управление проектами. Исправлены баги и внесены мелкие дополнения. Рефакторинг в этой версии так и не довели до ума и по умолчанию он по-прежнему отключен в меню. Очень жаль.
- ICU4R 0.1.0
Очень важное начинание. Попытка реализации нормальной поддержки Unicode в Ruby с помощью библиотеки ICU.
- RubyCLR
Как и следует из названия это мост Ruby / .NET. Недавно, кстати, появилcя первый бета релиз IronPython (реализация Python для .NET и Mono). Python конечно популярнее, но хочется надеяться, RubyCLR будет развиваться очень динамично.
- RDT 0.7.0
Вышла новая версия Eclipse плагина для разработки на Ruby.
Vlad Zarakovsky, Thu Jan 19 10:03:24 +0300 2006
- Регулярные выражения в Perl и Ruby интерпретируются по разному
Так, например, выражение /^[\d\.] $/ в Perl и Ruby дает разные результаты. Связано это с тем, что в Ruby ^ и $ соответствуют началу и концу части строки от \n до \n. Для поиска начала и конца всей строки используются \A и \z соответственно (или \Z чтобы игнорировать последний перевод строки).
Vlad Zarakovsky, Wed Jan 11 13:30:00 +0300 2006
- Instant Rails 1.0 Final
Вышла финальная версия! Главное изменение - включен ruby-mswin32 1.8.4 вместо Ruby 1.8.2, идущего в составе с One-Click Ruby Installer, который пока что не обновился до Ruby 1.8.4. Как только это произойдет, разработчики обещают выпустить Instant Rails 1.1.
- Rio
Это не город мечты Остапа Бендера, а класс-обертка для стандартных классов IO, File, Dir. Нужен он для удобства. Вот некоторые примеры:
Разделение UNIX passwd файла на поля по символу ':', выборка username, uid, realname (столбцы 0, 2, 4) и запись результата в CSV файл с табуляцией.
rio('/etc/passwd').csv(':').columns(0,2,4) > rio('rpt').csv("\t")Копирование содержимого файла в строку или массив (по строкам).
rio('afile') > targetДобавление содержимого файла к строке или массиву (по строкам).
rio('afile') >> targetКопировние файла с архивированием в gzip.
rio('afile.gz').gzip < rio('afile')
- RForum 0.2
Очередной бета релиз форума написанного на Ruby on Rails.
- Snakes and Rubies
Прошла встреча посвященная фреймворкам Ruby on Rails (Ruby) и Django (Python). Доступны презентации в формате PDF, видео и аудио.
Vlad Zarakovsky, Tue Jan 03 12:03:01 +0300 2006
- The Ruby Way
Готовится к выходу второе издание этой замечательной книги, которая должна увидеть свет где-то в апреле 2006.
- SwitchTower 0.10.0
Вышла новая версия утилиты, позволяющей параллельно выполнять команды на нескольких серверах.
- Цикл do-while в Ruby
В Ruby можно сделать так:
begin
b = simulate(b,m)
end while another_turn?(b,m)
Однако создатель языка просил не использовать такую конструкцию, поскольку хочет удалить ее в будущем, если это возможно.
Что ж, как известно, цикл do-while - это тот же цикл while, но с обязательным первым шагом:
b = simulate(b,m)
while another_turn?(b,m)
b = simulate(b,m)
end
Однако лучше устранить дублирование:
loop do
b = simulate(b,m)
break unless another_turn?(b,m)
end
Vlad Zarakovsky, Wed Dec 28 15:07:00 +0300 2005
- Object Database Access v 1.0
Другой способ отображать объекты Ruby в реляционную базу данных. Объекты сериализуются и сохраняются в базу. Поддерживаются транзакции, прозрачная загрузка объектов, выборка элемента хеша без загрузки всего хеша.
- Instant Rails 1.0 preview8
Очередной релиз и снова небольшие исправления. На этот раз в тестовых приложениях в preview7 отсутствовала папка log. Думаю, быстрее создать папку, чем заново качать 35Mb.