пʼятниця, 21 грудня 2007 р.

UaEnv::FIO

Модуль UaEnv::FIO призначений для відмінювання прізвища, імені і по батькові у давальний відмінок.
На даний момент доступний через SVN проекту.
svn checkout http://uaenv.rubyforge.org/svn/

або
svn checkout svn://rubyforge.org/var/svn/uaenv


Подивитись вихідний код:
http://uaenv.rubyforge.org/svn/lib/fio/fio.rb

Попереджаю відразу, лінгвіст тут і поруч не стояв. Тому використовуйте цей модуль на власний страх і ризик. Прошу за знайдені помилки мене сильно не лаяти. Код з часом буде вдосконалюватись. І було б дуже доречним якби Ви повідомляли про знайдені неточності і баги.

UaEnv::FIO::dative_case("Іванченко", "Іван", "Іванович")
=> ["Іванченку", "Івану", "Івановичу"]

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

Дело Ленина живет!

Щойно переглядаючи звіти у Google Analitycs помітив що частина Referring трафіку йде з [live.julik.nl (referral)] [/2007/08/ruitls-goes-ukrainian]. Зацікавило. Ось автор RuTils пише про мій UaEnv:
Недавно в процессе браузинга наткнулся на UaEnv. Дело Ленина живет!
Как сторонник тотального космополитизма и дружбы между народами рукоплескаю и катаюсь в экстазе. Другое дело что перед форканием можно было и интегрировать оба, да? :-)

/me трохи соромно і водночас дуже приємно :).
А тепер щодо UaEnv. Я про нього вже і забув. Функціоналу який там зараз є мені наразі вистачає з головою :). Десь на днях додам до проекту функцію, що схиляє прізвище, ім'я і по батькові (в давальний відмінок). Заодно і скину нову версію gem-у.

Get current time from internet time server

Вдосконалюючи Новорічний Лічильник написав простенький скрипт який бере поточну дату і час з інтернету. Можливо комусь пригодиться.

# Provides date & time data from NIST (time.nist.gov)

require 'socket'

time_server = "time-nw.nist.gov"
begin
# http://www.faqs.org/rfcs/rfc867.html
# "JJJJJ YY-MM-DD HH:MM:SS TT L H msADV UTC(NIST) OTM"
#
client = TCPSocket.open(time_server, 13)
time_str = client.read
rescue SocketError => err
puts err
exit
end

# Parse and assign to variables
# ju - Modified Julian Date (MJD)
# ye - Year (2 digits)
# mo - Month (2 digits)
# da - Day (2 digits)
# ho - Hour (24-hour, 2 digits)
# me - Minutes (2 digits)
# se - Seconds (2 digits)
#
ju, ye, mo, da, ho, mi ,se = /(\d{5})\s(\d{2})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})/.match( time_str.strip)[1..7]

# Create the NIST time from parsed data
#
utc_time_now = Time.utc(ye, mo, da, ho, mi, se)

local_time_now = utc_time_now.localtime
puts local_time_now

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

четвер, 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 автодоповнення стане доступним.