четвер, 13 грудня 2007 р.

Rails & REST

Впивалися у вуха довбані звуки,
очі фіксували небачені глюки,
Мене зачепило й поволокло,
Туди, де прикольно, туди, де світло.
(© Роллік'С - Манера даБІЛА)

Рекомендовано до прочитання, ознайомлення і негайного вживання: http://www.b-simple.de/download/restful_rails_en.pdf

понеділок, 10 грудня 2007 р.

Rails 2.0.1 :: Обновився

Обновився... it's works: yay!

Пів дня потратив щоб хоч щось простеньке написати :(. Ніфіга з того не вийшло... Туплю, просто туплю...
І де "Wow!" яке я очікував? Де screencast-и "Як написати блог за 15 хвилин" :) ? Ну де хоча б один tutorial для dummies?
Хоча є і приємні моменти: Sexy migrations.
Дійсно sexyyyyy! Views також стали до неподобства sexy :). А без scaffold (це було "Wow!", коли я вперше подивився screencast про Rails 1.0) новачок в повній мірі зможе відчути жорсткий секс. Ага... є така файна штука як REST (wtf?).

В загальному враження позитивні! Будемо розбиратися...
От так от малята... Чекайте запису про те як же все таки написати блог за 15 хвилин використовуючи Rails 2.0.

UPD. Ласкаво просимо в світ Rails, світ не скаффолдінгу і тупих блогів за 15 хвилин, а уніфікації і організованості.

неділя, 9 грудня 2007 р.

Декілька хороших новин

Відразу декілька хороших новин.
З'явилися 2 книжки по Ruby on Rails російською:
Гибкая разработка веб-приложений в среде Rails

Rails. Сборник рецептов


Як тільки хоч одна з низ з'явиться в Україні, обов'язково придбаю :)

Вийшла фінальна версія Ruby on Rails 2: якось спробую...

І вийшла фінальна версія NetBeans 6.0 : ура!

Тепер тільки чекаємо Різдва і фінальної версії Ruby 2.

неділя, 25 листопада 2007 р.

До Нового Року ще можна пристрелитись



Зацініть який я файнєцький кавалок коду написав. Сам не можу натішитись :)

$KCODE = "u"

# Перетворює число секунд у зручний формат -- [секунди, хвилини, години, дні]
#
def human_timer(total_sec)
(day ,hour = (tmp, min = (tmp, sec = (total_sec.to_i).divmod(60))[0].divmod(60))[0].divmod(24))
return sec, min, hour, day
end

# Вибирає відмінок в залежності від числа
#
def choose_plural(amount, *variants)
variant = ( (amount % 10 == 1 && amount % 100 != 11) ? 1 : (amount % 10 >= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100 >= 20) ) ? 2 : 3 )
return variants[variant - 1]
end

# Формує стрічку скільки часу залишилось до Нового Року )))
#
def glue_string
new_year_date = Time.mktime(2008)
total_sec = new_year_date - Time.now
if total_sec > 0
sec, min, hour, day = human_timer(total_sec)
a_string ="До Нового Року залишилось"
a_string << " #{day} #{choose_plural(day, 'день', 'дні', 'днів')}" if !day.zero?
a_string << " #{hour} #{choose_plural(hour, 'година', 'години', 'годин')}" if !hour.zero?
a_string << " #{min} #{choose_plural(min, 'хвилина', 'хвилини', 'хвилин')}" if !min.zero?
a_string << " #{sec} #{choose_plural(sec, 'секунда', 'секунди', 'секунд')}" #if !sec.zero?
else
a_string = "З Новим Роком!"
end
end

puts glue_string


Тільки не кажіть що так писати не можна :). Я ж так старався... Думаю як ще можна спотворити цей витвір...

Ось декілька прикладів виконання:
$ ruby happy_new_year.rb
До Нового 2008 Року залишилось 36 днів 10 годин 36 хвилин 28 секунд
$ ruby happy_new_year.rb
До Нового 2008 Року залишилось 36 днів 10 годин 36 хвилин 24 секунди
$ ruby happy_new_year.rb
До Нового 2008 Року залишилось 36 днів 10 годин 36 хвилин 21 секунда

пʼятниця, 23 листопада 2007 р.

Автодоповнення в irb

irb - це інтерактивна консоль Ruby, яка розповсюджується в офіційному пакеті інтерпритатора. Запускається з консолі за допомогою комади $ irb . Незамінна річ для вивчення мови "методом тику". Пишеш строку коду ruby, irb тобі відразу відповідає. Вводиш будь-яку команду і отримуєш результат або помилку. Наприклад: "2+2" а він: "4", або "abcdefg".upcase => "ABCDEFG".
Крім того irb володіє функцією автодоповнення (code completion), що дуже зручно якщо ви точно не пам'ятаєте команди або ж хочете переглянути всі доступні методи для змінної. Наприклад, набравши "ruby". і натиснувши клавішу "TAB" , ви отримаєте щось схоже:
Display all 130 possibilities? (y or n)
.map
.__id__ .match
.__send__ .max
.all? .member?
.any? .method
.between? .methods
.capitalize .min
.capitalize! .next
.casecmp .next!
.center .nil?
.chomp .object_id
.chomp! .oct
.chop .partition


Дуже зручно, чи не так?
Для того щоб підключити автодоповнення необхідно відредагувати конфігураційний файл irb (у Linux це ~/.irbrc):
require "irb/completion"

Після перезапуску irb автодоповнення стане доступним.

середа, 31 жовтня 2007 р.

Sun випустила NetBeans під GPL

Представники компанії Sun обіцяли це доволі давно, і відтепер - починаючи з версії 6.0 beta 2 їх середовище розробки стало цілком відкритим. відтепер NetBeans розповсюджується під подвійною ліцензією - GPL v2 і CDDL. Нагадаю що окрім підтримки Java, починаючи з 6 версії ця IDE підтримує також Ruby/Rails/jruby.
Докладніше про NetBeans 6 тут.

понеділок, 29 жовтня 2007 р.

Новий фірмовий знак мови програмування Ruby



Асоціація Ruby під безпосереднім головуванням Yukihiro "Matz" Matsumoto вибрала переможця Ruby Logo Contest. Перемогу здобув логотип від Tom Schaub і розповсюджується під ліцензією Creative Commons Attribution-ShareAlike license.

вівторок, 16 жовтня 2007 р.

Hardware Upgrade

На тижні відправив свого старенького пенька (Pentium III 733, 128 Мб ОЗП) на пенсію. Пізніше застосую його у якості невеликого файлового сервера.
На зміну йому прийшов молодий боєць:
  • AMD Athlon 64 X2 Dual Core Processor BE-23000 1.91 ГГц
  • 1 Гб ОЗП
  • NVIDIA GeForce 7300 GT
Різниця на лице :).

gem-и перестали глючити...
$ gem search someone
Ляпота...
Поки що приглядають до NetBeans IDE 6.0 Beta 1 for Ruby

середа, 26 вересня 2007 р.

rmovie

rmovie є розширенням Ruby, яке надає методи для доступу до файлів мультимедіа (зокрема відео файлів), він може повертати кадри відео, як малюнки, які в подальшому можна імпортуватися до RMagick. Це дозволяє створювати ескізи малюнків із фільмів. rmovie також корисний для звіту про тривалість і бітрейт аудіо файлів (mp3, wma ...). rmovie має доступ до багатьох відео форматів, які підтримуються ffmpeg (avi, mpg, wmv, mov).

Насамперед пересвідчіться, що Ruby встановлений у вашій системі (тут використовується Ubuntu):
$ sudo apt-get install ruby1.8
$ sudo apt-get install ruby1.8-dev
$ sudo apt-get install rubygems

Для того щоб rmovie працював необхідно встановити також вихідні коди libavcodec і libavformat:
$ sudo apt-get install ffmpeg
$ sudo apt-get install libavcodec-dev
$ sudo apt-get install libavformat-dev


Для того щоб витягувати кадри відео необхідно встановити RMagick:
$ sudo apt-get install librmagick-ruby


Встановити rmovie можна декількома способами:
Спосіб 1.
$ wget http://files.rubyforge.mmmultiworks.com/rmovie/rmovie-0.5.1.gem
$ gem install rmovie-0.5.1.gem

Спосіб 2.
$ gem install rmovie
Building native extensions. This could take a while...
Successfully installed rmovie, version 0.5.1


Невеликий приклад використання rmovie спільно з RMagick

require 'rubygems'
require 'rmovie'
require 'RMagick'
mov = RMovie::Movie.new("movie.avi")
mov.duration # => 5440.43994140625
mov.frame_count # => 136011
mov.frame_width # => 672
mov.frame_height # => 384
mov.has_audio? # => true
mov.file_name # => "/media/sdb5/films/movie.avi"
frame = mov.frame(10)
img = Magick::Image.new(frame.width, frame.height) # => 672x384 DirectClass 16-bit
img.import_pixels(0, 0, frame.width, frame.height, "RGB", frame.to_string, Magick::CharPixel) # => 672x384 DirectClass 16-bit
img.write("output.jpg") # => output.jpg 672x384 DirectClass 16-bit 16kb


За більш докладнішою документацією зверніться до rmovie API Documentation та RMagick Documentation

Область застосування зв'язки rmovie + RMagick обмежує тільки ваша фантазія. Enjoy!