четвер, 26 травня 2011 р.

Огляд Padrino і OmniAuth

У цій статті буде показано, як з’єднати модуль автентифікації Access Control, описаний тут, з OmniAuth middleware для Rack.

Система аутентифікації і контролю доступу Padrino забезпечує простий спосіб створювати свої системи аутентифікації. У поєднанні з OmniAuth ви можете легко використовувати її для аутентифікації за допомогою різних методів. Читайте нижче для більш докладної інформації про те, як інтегрувати їх.

У цій статті ми розглянемо дві теми:
  • Інтеграцію Padrino Admin Authentication в усі додатки вашого проекту
  • Створення власних стратегій аутентифікації

На відміну від оригінальної статті, де у якості ORM використовується ActiveRecord, тут ми будемо використовувати DataMapper, про який я писав тут. Можливо вам необхідно познайомитись з фреймворком Padrino, про який я писав тут і тут. І про OmniAuth тут.

Перш ніж ми почнемо, важливо відзначити, що наша вбудована аутентифікація, що базується на ролях, може взаємодіяти з іншими системами. Потрібно лише внести зміни у файли session.rb і account.rb для того щоб додати свій власний код.

Отже, давайте почнемо зі створення проекту використовуючи DataMapper:

субота, 21 травня 2011 р.

Термінальний віконний менеджер Tmux

Майже кожен поважаючий себе linux'оїд знайомий з чудовою утилітою GNU Screen. Але у цій статті мова піде не про неї. А про її альтернативу Tmux, яка на мою думку є більш зручнішою.
Отже.
Tmux - це термінальний віконний менеджер, і мультиплексор. Тобто дозволяє використовувати декілька терміналів у одному. Tmux так само як і screen можна легко завести у фон, і так само легко повернутися до нього.

пʼятниця, 20 травня 2011 р.

OmniAuth: Зовнішня, проста автентифікація для Rack на прикладі Sinatra і ВКонтакте

В останні один-два роки веб-додатки зазнали радикальних змін. Час, коли кожен сайт представляв собою бункер, який чекає приходу нових користувачів поступово проходить. Я роздратовано зітхаю кожен раз, коли мені доводиться заповнювати чергову реєстраційну форму замість того, щоб скористатися "Connect with Facebook", "Sing in with Twitter" або "Log in with OpenID". Зараз веб-додатки стають все більш відкритими світу. Один з кращих способів збільшення популярності та життєздатності нового сервісу є його доповнення існуючими базами користувачів таких додатків, як: Twitter, Facebook, ВКонтакте, тощо.

Нещодавно я писав про авторизацію додатків ВКонтакте використовуючи відкритий протокол OAuth 2.0. У цій статті мова піде про OmniAuth.

OmniAuth - система аутентифікації заснована на Rack, яка значно спрощує зовнішню аутентифікацію в тому сенсі, що вам немає потреби розбиратися в API провайдерів, а також не вимагає ніякої інформації про те, що буде відбуватися з надіcланими після аутентифікації даними.

Що це означає для вас? Це означає, що ви можете легко реалізувати аутентифікацію в вашому додатку через Twitter, Facebook, LinkedIn, Google, GitHub, ВКонтакте, Mailru і т.д. І потім мати повний контроль над нею.

Запуск текстового редактора в IRB

Якщо ви працюєте з Ruby, ви знаєте, що interactive ruby shell (або IRB для стислості) - це командна оболонка для програмування на мові Ruby. Програма запускається з командного рядка і дозволяє виконувати команди мови Ruby в реальному часі. IRB є чудовою для випробування однорядкового коду, але якщо вам потрібно написати більше блоків, вона починає не справлятися з роботою. Якщо вам потрібно змінити або додати один рядок у блок коду, доводиться повторно вводити всі команди одна за одною. Відчувається, що інтерфейс командного рядка IRB є обмеженим у порівнянні з силою вашого текстового редактора. У цьому дописі я збираюся показати, як ви можете взяти найкраще з обох світів, шляхом завантаження текстового редактора всередині IRB для редагування і подальшого виконання коду.

Існує бібліотека Interactive editor, що забезпечує цю функціональність. Вона доступна через gem:
$ gem install interactive_editor
Далі необхідно створити файл ~/.irbrc, якщо у вас його ще немає, і вставити в нього наступний рядок:
require 'interactive_editor'
Тоді можете використовувати його в irb:

$ irb                        # або його альтернатива ripl
> vi                         # (використовувати vi з тимчасовим файлом)
> vi 'filename.rb'           # (відкрити filename.rb в vi)
> ed                         # (використувуваьт змінну оточення EDITOR)
> [emacs|vim|mvim|nano|mate] # (інші редактори)

Додаткові матеріали:

четвер, 19 травня 2011 р.

Як визначити країну по IP адресі

Щоб дізнатися країну з IP адреси слід встановити geoip gem:
$ gem install geoip
Потім завантажити базу даних GeoLite Country, яка є безкоштовною за умови GPL/LGPL для API.
Розпакувати її кудись і використовувати як хочете.
Приклад:
require 'geoip'
geoip = GeoIP.new('GeoIP.dat')
country_location = geoip.country('8.8.4.4')
puts country_location.country_code2 # => "US"