В процесі написанні статті Модель User в DataMapper для Warden я натрапив на цікавий тип даних BCryptHash. В DataMapper він стає доступний, якщо включити гем dm-types. BCryptHash зберігається у базі даних як рядок, що представляє сіль, хеш і вартість паролю, використовуючи алгоритм bcrypt. Він пропонує альтернативу більш звичної пари значень хеш і сіль, які зберігаються у базі даних.
середа, 26 жовтня 2011 р.
Модель User в DataMapper для Warden
В минулій статті Інтеграції Warden з Sinatra і DataMapper ми написали тестовий додаток, який використовує аутентифікацію по імені і паролю. Уважний читач не міг не помітити, що паролі у базі даних зберігаються у відкритому вигляді. Це все робилося, щоб не завантажувати статтю зайвими сутностями.
Але очевидно, з точки зору безпеки паролі у базі даних повинні зберігатися в зашифрованому вигляді. Цю тему ми і розглянемо у цій статті.
За основу взята 11 глава "Task F: Administration" з книги Agile Web Development with Rails (3rd edition).
Тут основний упор буде на роботу з DataMapper. Крім того у другій частині статті ми закладемо фундамент адміністративного інтерфейсу для керування користувачами.
Але очевидно, з точки зору безпеки паролі у базі даних повинні зберігатися в зашифрованому вигляді. Цю тему ми і розглянемо у цій статті.
За основу взята 11 глава "Task F: Administration" з книги Agile Web Development with Rails (3rd edition).
Тут основний упор буде на роботу з DataMapper. Крім того у другій частині статті ми закладемо фундамент адміністративного інтерфейсу для керування користувачами.
понеділок, 24 жовтня 2011 р.
Інтеграції Warden з Sinatra і DataMapper
В Інтернеті можна знайти багато статей на тему аутентифікації з допомогою Warden у Sinatra. Я не буду оригінальним, і напишу ще одну, щоб самому розібратися з особливостями цього інструменту. Ціллю цієї статті не є показати повністю готовий механізм аутентифікації. А лише продемонструвати основні можливості інтеграції Warden з Sinatra і Datamapper.
Warden - це Rack middleware, що забезпечує механізм аутентифікації для веб-додатків на Ruby.
Warden вимагає деяких налаштувань для Sinatra. Цього можна уникнути, використовуючи плагін Sinatra::Warden. Але ми ж не шукаємо простих шляхів.
Warden - це Rack middleware, що забезпечує механізм аутентифікації для веб-додатків на Ruby.
Warden вимагає деяких налаштувань для Sinatra. Цього можна уникнути, використовуючи плагін Sinatra::Warden. Але ми ж не шукаємо простих шляхів.
середа, 19 жовтня 2011 р.
RubyMonk - ще один браузерний самовчитель Ruby
RubyMonk — це інтерактивна платформа, яка допоможе вам освоїти основи мови програмування Ruby. Вона поєднує в собі переваги навчання з книгою і наставником. І дає навички практичного програмування в ігровій формі.
RubyMonk можна рекомендувати початківцям, які тільки відкривають для себе мову Ruby.
Навчання проходить у двох формах:
RubyMonk можна рекомендувати початківцям, які тільки відкривають для себе мову Ruby.
Навчання проходить у двох формах:
- Уроки. Користувач знайомиться з основами мови Ruby (масиви, ітерації, стрічки тощо). Всі уроки забезпечені докладним описом з прикладами коду, а також доповнені прекрасною можливістю самостійно виконати код.
- Проблеми. Користувачу дається можливість самостійно написати код для вирішення певної проблеми, використовуючи знання, отримані на уроках.
пʼятниця, 7 жовтня 2011 р.
Тестування швидкодії Time і Date в різних версіях Ruby
Вчора задався питанням швидкодії бібліотек для роботи з датою і часом, які входять до складу Ruby - Time і Date.
Для для тестування був написаний простий скрипт з використанням модуля Benchmark, який надає методи для вимірювання та звітності часу, що був затрачений на виконання коду Ruby:
У тестуванні будуть брати участь наступні версії Ruby: 1.8.7, 1.9.2 та 1.9.3-rc1, а також альтернативні реалізації інтерпретатора: Rubinius написаного на мові C++ та JRuby - на Java.
Тепер подивимося на результат виконання цього скрипта:
Для для тестування був написаний простий скрипт з використанням модуля Benchmark, який надає методи для вимірювання та звітності часу, що був затрачений на виконання коду Ruby:
require 'benchmark'
require 'date'
puts RUBY_DESCRIPTION
n = 10_000
puts
Benchmark.bm(10) do |x|
x.report("Time:") { n.times{Time.now} }
x.report("DateTime:") { n.times{DateTime.now} }
end
puts
Benchmark.bm(10) do |x|
x.report("Time:") { n.times{Time.mktime(2012, 12, 23)} }
x.report("DateTime:") { n.times{DateTime.new(2012, 12, 23)} }
end
У тестуванні будуть брати участь наступні версії Ruby: 1.8.7, 1.9.2 та 1.9.3-rc1, а також альтернативні реалізації інтерпретатора: Rubinius написаного на мові C++ та JRuby - на Java.
Тепер подивимося на результат виконання цього скрипта:
четвер, 6 жовтня 2011 р.
Mechanize 2.0 довідник
Mechanize - це бібліотека для сканування веб-сайтів для будь-якої автоматизації або з метою тестування. Довідник по Mechanize 2.0 являє собою докладний посібник для отримання речей які можна зробити в Mechanize. Це більше ніж документація, але менше ніж книга. Робота над нею вже йде, і вона буде опублікована тут безкоштовно дуже скоро!
>>> Анонс на ruby.about.com
>>> Анонс на ruby.about.com
вівторок, 4 жовтня 2011 р.
Приклад роботи Delayed_job з DataMapper у Sinatra
Delayed_job (або DJ) бібліотека асинхронної черги фонових завдань написана на Ruby.
Може знадобитись для таких типових задач як:
- поштова розсилка
- зміна розмірів зображень
- конвертування аудіо/відео
- HTTP завантаження
- оновлення інформації
- перевірка спаму
понеділок, 3 жовтня 2011 р.
Реліз Sinatra 1.3.0
Світ побачила версія 1.3.0 фреймворка Sinatra.
Найбільш помітне нововведення в цьому релізі - додавання streaming API. Цікавим моментом є те, що використовувати цю можливість можна незалежно від того, на якому сервері запущено додаток.
Приклад коду:
Крім того додали підтримку HTTP-методу PATCH:
Про інші зміни читайте в офіційному прес-релізі New feature release, Contrib and Recipes
Приклад коду:
get '/' do
stream do |out|
out << "It's gonna be legen -\n"
sleep 0.5
out << " (wait for it) \n"
sleep 1
out << "- dary!\n"
end
end
Крім того додали підтримку HTTP-методу PATCH:
patch '/' do
# ...
end
Про інші зміни читайте в офіційному прес-релізі New feature release, Contrib and Recipes
Підписатися на:
Дописи (Atom)