середа, 28 квітня 2010 р.

ВКонтакте → Авторизація Desktop-додатків на прикладі Ruby і Mechanize

Увага! Дана версія документації є застарілою. Замість неї я рекомендую прочитати статтю ВКонтакте → Авторизація Standalone-додатків використовуючи OAuth 2.0 на прикладі Ruby і Mechanize

Нещодавно розробники соціальної мережі ВКонтакте повідомити про запуск можливості використання VK API для standalone-додатків. Я ж вирішив експериментально перевірити цю нову можливість у зв'язці з мовою Ruby.

Використані джерела:

Авторизація Desktop-додатків
Desktop-додатки на відміну від звичайних програм ВКонтакте запускаються у вигляді звичайних програм на пристрої користувача, яким може бути комп'ютер, комунікатор або смартфон. Наприклад, це може бути додаток на платформі Adobe AIR або додаток для iPhone, написане на Objective-C.

Почав писати обгортку до цього на Ruby. І відразу ж засмутився - авторизація на даний момент через одне місце. Потрібен компонент браузера з підтримкою JavaScript. Насправді я уявлення не маю як таке реалізувати на Ruby. Доведеться вручну вивчати що і куди посилати. Але чому б не зробити метод у який висилається логін-пароль? І просто отримувати ID сесії.
Маємо те, що маємо. Обійдемося поки цим. А в майбутньому, надіюся виправлять.
Для початку необхідно створити новий або взяти вже існуючий додаток.

пʼятниця, 23 квітня 2010 р.

Meet Padrino! Part 1

Днями по гарячих слідах Sinatra 1.0 вийшов офіційний реліз Padrino. Цю статтю я почав писати відразу після виходу версії 0.9.9 (2 квітня), але з технічних причин зумів довести її до кінця тільки після виходу 0.9.10 (22 квітня).

Padrino - це ще один веб-фреймворк, написаний на мові Ruby. Padrino намагається зробити розробку додатків більш простою і елегантною настільки наскільки це можливо, шляхом розширенням функціональності Sinatra (додаючи помічники, генератори, інтерфейс адміністратора, інтернаціоналізацію), зберігаючи його дух.
Я вже писав декілька статей про Sinatra, думаю їх буде корисно почитати.

Отже, зустрічайте – Padrino!

пʼятниця, 26 березня 2010 р.

Sinatra 1.0 is OUT!

Днями світ побачила версія 1.0 чудового DSL для створення веб-застосунків на Ruby - Sinatra.
Список змін в порівнянні з попередньою стабільною версією можна подивитися тут.
Зі слів Blake Mizerany - одного із авторів, найбільші зміни у цій версія - це чистка і стабілізація коду.

Також, починаючи з версії 1.0 Sinatra використовує бібліотеку Tilt для рéндерингу шаблонів. Це додає підтримку кешування шаблонів, послідовного трасування шаблонів, а також підтримку нових систем шаблонів, як Mustache і Liquid.

$ gem update sinatra
Updating sinatra
Successfully installed sinatra-1.0
Gems updated: sinatra

Long live Sinatra!

четвер, 25 березня 2010 р.

Новий реліз-план для Ruby 1.9.2

Згідно з попереднім планом фінальна версія Ruby 1.9.2 планувалась на кінець 2009 року.
Нещодавно було оголошено переглянутий графік релізів Ruby 1.9.2, згідно з яким, реліз відбудеться приблизно в середині серпня.
  • 31 березня буде заморожено список нових можливостей Ruby 1.9.2
  • 30 квітня буде заморожений код, всі можливості не реалізовані до цього часу не увійдуть в реліз
  • 31 травня - вихід 1.9.2-preview2: можливості, які не будуть завершені і стабільні до цього моменту, не ввійдуть в реліз
  • 30 червня - вихід 1.9.2-rc: всі знайдені на попередніх етапах помилки повинні бути виправлені
  • 31 липня - вихід 1.9.2-p0: протягом двох тижнів будуть збиратися багрепорти і завершувати реліз, перш ніж випустити його

Що ж будемо сподіватися, що цього разу розробники впораються з наміченими термінами і ми отримаємо стабільний реліз гілки 1.9.x до осені.

Відкритим залишається питання, коли ж вийде Ruby 2.0? В twitter-і Yuki Sonoda одного з розробників Ruby є інформація про те, що це може відбутися раніше, ніж очікувалося, Ruby 1.9.3 вже може бути 2.0.

четвер, 18 березня 2010 р.

Ruby Best Practices


Напевно, багато хто вже чули про цей проект. Останні кілька місяців виходили окремі розділи книги.

Тепер повністю готову книгу Ruby Best Practices можна завантажити безкоштовно.

Посилання:

четвер, 11 березня 2010 р.

Yahoo! Weather і Ruby

Yahoo! Weather RSS-канал дозволяє отримувати останню інформацію про погоду для вашої місцевості. Ви можете зберігати цю інформаію у вашому улюбленому RSS-агрегаторі, або включити ці дані до вашого сайту або додатку. RSS динамічно генерується на основі WOEID.

Короткий опис формату запиту URL та RSS відповіді.
Запит RSS слідує наступному простому синтакстису HTTP GET: починається з простого базого URL за яким слідують додаткові параметри і значення після знаку питання (?). Кілька параметрів розділяються амперсандом (&).
Базовий URL для каналу погоди є
http://weather.yahooapis.com/forecastrss
Два можливі параметри:
  • w - для WOID (обов'язковий параметр, що вказує на місце розташування для прогнозу погоди). Наприклад w=935810
  • u - для одиниць вимірювання(c: за Цельсієм, f: за Фаренгейтом). Наприклад u=c. Вибір 'c' покаже всі дані в метричних одиницях(наприклад швидкість вітру буде відображатися в кілометрах за годину).
http://weather.yahooapis.com/forecastrss?w=location

Наприклад, щоб отримати погоду для Тернополя, використовується код 935810.
http://weather.yahooapis.com/forecastrss?w=935810

Щоб знайти значення WOID для вашого міста, здійсність пошук на головній сторінці.
Наприклад для Тернополя, URL сайту буде мати наступний вигляд:
http://weather.yahoo.com/ukraine/ternopil-oblast/tarnopol'-935810/
Де WOID це 935810.

RSS відповідь я не буду докладно описувати.
Знизу приведений приклад коду для роботи з Yahoo! Weather з Ruby.

середа, 10 березня 2010 р.

Mechanize 1.0.0

Тихо і непомітно 6.02.2010 вийшов реліз моєї улюбленої бібліотеки для Ruby Mechanize версії 1.0.0. Хоч новина вже встигла припасти пилом, але краще пізно ніж ніколи. Змін не так вже й багато. Розробники в основному зосередилися на виправленні помилок.

Особливості релізу:
  • Константа WWW вважається застарілою, натомість слід використовувати константу верхного рівня Mechanize
  • Нові методи SelectList#option_with і SelectList#options_with для пошуку параметрів у випадаючому списку
  • Необов’язкові параметри можуть передавалися методу Mechanize#get

Виправлені помилки
  • Краща обробка помилок пов’язаних з некоректним кодуваннями сторінки
  • Підтримка 7-бітного кодування
  • Виправлений баґ із перетвореннями за допомогою бібліотеки Iconv
  • Відсилання форми з нульовим(nil) кодуванням сторінки
  • Прапорці(чекбокси) і поля впорядковуються за зовнішнім виглядом сторінки перед відправленням форми
  • Виправлення значень за замовчуванням з серіалізованим кукісом(cookies)
  • Перенаправлення за межами HEAD не дотримуються

Для демонстрації я переписав скрипт для Google Translate, для сумісності з новою версією Mechanize.

четвер, 4 лютого 2010 р.

Як дізнатися, хто Вас додав в закладки на ВКонтакте?

Как узнать кто добавил в закладки вконтакте?

Вас напевно завжди мучила цікавість? І, напевно, вам завжди хотілося дізнатися, у кого ж ви перебуваєте в закладках, хто вважає вас цікавим? Ви можете легко про це дізнатися. Все що потрібно для цієї інструкції - це інтерпретатор Ruby і бібліотека WWW::Mechanize

пʼятниця, 29 січня 2010 р.

Вирішення проблеми з wxRuby на Ubuntu 9.10

Існує баг з wxRuby на Ubuntu Karmic Koala.
Темою цього допису буде вирішення цієї проблеми, щоб зробити можливою розробку додатків у зв'язці Ruby 1.9 та wxRuby на Ubuntu 9.10.
Отже,покрокова інструкція.

Інсталяція необхідних пакетів для розробників

$ sudo apt-get install build-essential libssl-dev libreadline5 libreadline5-dev zlib1g zlib1g-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libwxgtk2.8-0 libwxgtk2.8-0-dev

Встановлення Ruby (1.9.1)

Про те як зібрати Ruby 1.9.1 з вихідних кодів я описував тут
Коротко:
Завантажуємо останню свіжу версію Ruby (на момент написання статті це 1.9.1-p376)
Розпаковуємо архів і встановлюємо:
$ tar xzvf ruby-1.9.1-p376.tar.gz
$ ./configure --prefix=/opt/ruby191
$ make
$ make test
$ sudo make install

Встановлення змінних оточення

Оскільки Ruby ми збирали у /opt/ruby191, встановлюємо відповідні змінні оточення
$ PATH=/opt/ruby191/bin:$PATH
$ LD_LIBRARY_PATH=/opt/ruby191/lib:$LD_LIBRARY_PATH

Встановлення SWIG (1.3.38)

Спочатку видаляємо пакети SWIG з дистрибутиву якщо вони встановлені:
$ sudo apt-get remove swig swig1.3 --purge

Максимальна версія SWIG, що допускається для компіляції wxRuby - це 1.3.38.
Скачуємо архів swig-1.3.38.tar.gz з сайту www.swig.org
Розпаковуємо командою:
$ tar xzvf swig-1.3.38.tar.gz

У каталозі із вихідними кодами SWIG:
$ ./configure --prefix=/opt
...
checking for ruby... ruby
checking for Ruby header files... could not locate ruby.h...using -I/opt/ruby191/lib/ruby/1.9.1/i686-linux
checking for Ruby library... -Wl,-R -Wl,/opt/ruby191/lib -L/opt/ruby191/lib -lruby-static in /opt/ruby191/lib
...
$ make
$ sudo make install

Встановлення wxRuby (2.0.1)

Звантажуємо архів з вихідними кодами wxRuby з сайту wxruby.rubyforge.org
Розархівовуємо командою
$ tar xzvf wxruby-2.0.1.tar.gz
і в каталозі з вихідним кодом робимо:
$ rake1.9.1 WXRUBY_VERSION=2.0.1
$ strip -x lib/wxruby2.so
$ rake1.9.1 gem
$ sudo gem1.9.1 install -l wxruby-ruby19

Тестуємо

$ ruby1.9.1 /opt/ruby191/lib/ruby/gems/1.9.1/gems/wxruby-ruby19-2.0.1-x86-linux/samples/bigdemo/bigdemo.rb

четвер, 31 грудня 2009 р.

RubyUA → Підсумки року


RubyUA радий привітати Вас з наступаючим Новим 2010 Роком!
Бажаю всім Вам досягнення поставлених цілей і завдань, стабільності, благополуччя і процвітання!
По-менше дебага, побільше гарного і стабільного коду!
Щастя і здоров'я Вам і Вашим близьким!

До Нового Року залишились лічені години, тому хочеться згадати що було в житті блогу. Подій насправді було не дуже багато. Але все ж цей рік був не такий, як інші.
Протягом 2009 року блог пережив 4382 відвідувань(з яких 3046 абсолютно унікальних). В цілому було переглянуло 9308 сторінок.