субота, 31 грудня 2011 р.

З Новим Роком!


Ruby-ua вітає усіх з Новим 2012 Роком, який настане вже через кілька годин!

Бажаю в новому році творчих успіхів, гарного коду, відкритих API, швидкого заліза і щоб кваліфікація ваша тільки росла.
$ ruby -e 'def a;10.times{puts " "*rand(79)+"*"};end;99.times{a;puts " "*34+"З Новим 2012 роком!";a;sleep 0.1;puts "\e[2J"}'

Ура! З наступаючим!

середа, 28 грудня 2011 р.

Ретроспектива 2011


2011 рік добігає кінця, і я згадав запис, у якому згадував про найбільш значущі події в світі Ruby, що відбулися в 2010. Хотілось вірити, що тенденція збережеться. Так і сталося.

Цей рік приніс декілька приємних новин:
  • У 2011 році Ruby став повнолітнім
  • Реліз 1.9.3 - основної реалізації мови програмування Ruby
  • Оголошено про початок робіт над Ruby 2.0
  • Опублікований план підготовки релізу Ruby 2.0
  • Matz автор мови Ruby в інтерв'ю виданню InfoWorld повідомив, що працює над діалектом мови для мобільних пристроїв
  • Yukihiro Matsumoto тепер працює в Heroku
  • Припинена підтримка Ruby 1.8.6

Розвиток альтернативних реалізації мови Ruby:
  • Реліз MagLev 1.0, альтернативної реалізації Ruby VM з вбудованим NoSQL-сховищем, побудованої на основі використання 64-розрядної віртуальної машини VMware GemStone/S, початково створеної для мови Smalltalk.
  • Реліз JRuby 1.6 - реалізації мови Ruby, написаної цілком на Java і призначеної для виконання у віртуальній машині JVM з підтримкою Ruby 1.9.2. Прискорення JRuby 1.7 у три рази після установки OpenJDK 7 update 2
  • Успіхи спільноти розробників Rubinius - альтернативної реалізація мови програмування Ruby, написаної на C++
  • MacRuby 0.10 - реалізація мови програмування Ruby, написаної на Objective-C і фреймворку CoreFoundation. Розроблена компанією Apple Inc. Базується на версії Ruby 1.9.

Також хочеться відмітити декілька цікавих проектів:
  • Бібліотека rbenv від 37signals: проста і легка альтернатива RVM для керування версіями Ruby
  • Ruboto - фреймворк для написання повноцінних програми для Android на Ruby
  • У 2011 склалася тенденція, що кожен проект на Ruby приєднується до Travis. Travis - дуже проста, система безперервної інтеграції, яка розповсюджується у вигляді відкритих вихідних кодів.

Інші значущі релізи:

P.S. З наступаючим Новим Роком!
P.P.S. Якщо вам є що додати, пишіть в коментарі.

пʼятниця, 23 грудня 2011 р.

Створення простого AJAX-сайту з Sinatra та JQuery

За основу цієї статті взятий скрінкаст Building a Simple AJAX Website with Sinatra & jQuery. Зараз у вільний час я працюю над сайтом isit.heroku.com, який основну свою ідею почерпнув саме цього скрінкасту.

У цій статті ви дізнаєтеся:
  • Як створити свій власний веб-сайт із таймером зворотного відліку
  • Як визначити в Sinatra, якщо запит XMLHttpRequest чи ні
  • Як відключити шаблони(layouts) для XHR запитів у Sinatra
У цьому епізоді ми будемо використовувати Sinatra, HAML і JQuery.

"Is It" веб-сайт

Ви можливо зустрічали цей жанр сайтів раніше. Це прості веб-сайти з "Так" або "Ні" в середині сторінки. Вони відповідають на питання типу "Це Різдво?", "Це Новий Рік?" або інші термінові питання. Іноді на сторінці також є таймер зворотного відліку.

Розробку нашого "Is It" веб-сайту розпочнемо з огляду структури додатку на Sinatra.
app.rb - це головний файл нашого додатку, який містить єдиний маршрут до кореневої URL-адреси. Також ви помітили, у ньому підключається файл lib/countdown.rb.

## app.rb
# -*- encoding: utf-8 -*-
require 'sinatra'
require 'haml'

require_relative 'lib/countdown.rb'

get '/' do

end

вівторок, 13 грудня 2011 р.

Асоціації в DataMapper

Прочитавши заголовок цієї статті, читач мабуть зрозуміє про що піде мова нижче. У далекому 2009 я писав статтю про DataMapper, у якій згадувались асоціації між моделями. Сьогодні з власного досвіду спробую описати найбільш поширені асоціації та роботу з ними.
Для початку освіжимо пам'ять.
DataMapper - це ORM бібліотека (англ. Object-relational mapping, Обє'ктно-реляційна проекція - технологія, яка зв'язую бази даних з концепцією об'єктно-орієнтовного програмування, створюючи "віртуальну об'єктну базу даних").

Асоціації - це спосіб оголошення відносин між моделями. Вони надають ряд методів, які дозволяють створювати відносини та отримувати пов'язані моделі.

Зараз ORM використовуються повсюдно - ніхто не намагається працювати з базою вручну. Функціонал дозволяє зробити багато речей простіше. Робота з асоціаціями стала в рази легшою. Можна не використовувати SQL-запити, а працювати з даними, як зі звичайними об'єктами.

Я писав цю статтю виключно для себе, тому методика викладання навряд чи сподобається вам своєю легкістю і доступністю :))
Картинка для затравки.
Зацікавило? Тоді ласкаво прошу під кат.

неділя, 11 грудня 2011 р.

Ruby/Tk в RVM

Так як wxRuby не розвивається більше 2-ох років, а Qt4 надмірний для моїх задач. Вибір впав на бібліотеку Tk, яка поставляється разом з Ruby.

Tk (від англ. Toolkit — "набір інструментів", "інструментарій") - кросплатформна бібліотека базових елементів графічного інтерфейсу, яка розповсюджується відкритими вихідними текстами.

Для того щоб почати використовувати Tk достатньо імпортувати бібліотеку для роботи з нею:
require 'tk'
Якщо ви отримаєте помилку
LoadError: cannot load such file -- tk
значить Tk не скомпільована з вашим Ruby.
Якщо у вас RVM, ласкаво прошу під кат.