середа, 19 серпня 2009 р.

Quake Live for Linux

Те, що так довго очікувалося, нарешті збулося! Хай гримлять литаври і б’ють в барабани, хай нічні феєрверки не згасають цілу ніч, а вдень падають на землю важким дощем.Збулось!

Twitter доставив приємну звісточку:
QUAKE LIVE is back online, now with Mac & Linux support! Read more at www.quakelive.com/forum/showthread.php?t=31851


Протестовано на Ubuntu 9.04 з Firefox 3.0.13.
Плагін для Firefox оформлений у вигляді xpi-файла.

I18N. Підтримка української мови в Ruby і Ruby On Rails

Ukrainian language support for Ruby & Ruby and Rails | Підтримка української мови для Ruby та Ruby on Rails

Що це і кому це може знадобиться?

Ukrainian – бібліотека повноцінної підтримки української мови(форматування дати та часу, плюралізації та інтернаціоналізації вцілому)

Ruby on Rails

Пакет мість в собі переклади стандартних бібліотек: ActionView, ActiveRecord, ActiveSupport, а також підтримку плюралізацій для таких методів як distance_of_time_in_words та distance_of_time_in_words_to_now

неділя, 9 серпня 2009 р.

Плани на Ruby 1.9.2


Фінальна версія Ruby 1.9.2 запланована на кінець 2009 року (25 грудня).
Вже зараз ви можете спробувати перший попередній реліз, який був представлений 17 липня, під час японської конференції Ruby Kaigi 2009.

Наступні цікаві особливості будуть включені до 1.9.2, якщо вони будуть реалізовані вчасно до заморожування (25 вересня 2009 року, 1.9.2 preview release 3):


Крім того розробники обіцяють оптимізувати інтепритатор YARV а також внести зміни до стандартної бібліотеки. Докладніше тут.

субота, 8 серпня 2009 р.

Ruby for System Administration → Ruby-inotify

Inotify - це підсистема ядра Linux, яка дозволяє отримувати повідомлення про зміни у файловій системі. У основне ядро була включена починаючи з 2.6.13. Основна сфера використання - в системах пошуку (наприклад Beagle), таким чином програмі-індексатору не потрібно сканувати всю файлову систему кожні кілька хвилин.

ruby-inotify - це Ruby інтерфейс для доступу до системних викликів Linux Inotify.
Дозволяє виявляти, якщо файл був відкритий, закритий, переміщений, видалений, модифікований і багато чого іншого.


Доступні події:
ACCESS - звернення до файлу(читання).
MODIFY - файл був змінений(запис).
CREATE - файл був створений.
ATTRIB - змінені метадані (права, дата створення/редагування, розширені атрибути, і т.д.).
CLOSE_WRITE - файл, відкритий для запису, був закритий.
CLOSE_NOWRITE - файл, не відкритий для запису, був закритий.
OPEN - файл був відкритий.
MOVED_FROM - файл був переміщений від слідкування.
MOVED_TO - файл був переміщений до слідкування.
DELETE - файл був видалений.
DELETE_SELF - відслідковуваний файл/каталог був видалений.
CLOSE - IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
MOVE - IN_MOVED_FROM | IN_MOVED_TO
ALL_EVENTS - будь-яка з подій.
UNMOUNT - файлова система була відмонтована.
Q_OVERFLOW - черава inotify переповнена.
IGNORED - відслідковуваний файл був автоматично видалений, тому що файл був видалений або файлова система розмонтована.
ISDIR - подій відбулася відносто каталогу.


Процес інсталяції з вихідних кодів є дуже простим:
$ wget http://dinhe.net/~aredridel/projects/ruby/ruby-inotify-0.0.2.tar.gz
$ tar xzvf ruby-inotify-0.0.2.tar.gz
$ cd ruby-inotify-0.0.2/
$ rake1.9.1
$ sudo make install


Як воно працює?
У каталозі examples міститься скрипт watcher.rb, який є простим прикладом роботи з ruby-inotify.
#!usr/bin/ruby

require 'inotify'
require 'find'

i = Inotify.new

t = Thread.new do
i.each_event do |ev|
p ev.name
p ev.mask
end
end

raise("Specify a directory") if !ARGV[0]

Find.find(ARGV[0]) do |e|
if ['.svn', 'CVS', 'RCS'].include? File.basename(e) or !File.directory? e
Find.prune
else
begin
puts "Adding #{e}"
i.add_watch(e, Inotify::CREATE | Inotify::DELETE | Inotify::MOVE)
rescue
puts "Skipping #{e}: #{$!}"
end
end
end

t.join

При створенні/видаленні/переміщені будь-якого файлу чи каталогу на екран буде виведене його ім’я і маска.
Як бачите все доволі просто.

Запустимо скрипт:
$ ruby1.9.1 watcher.rb .


Створимо файл з іменем test.txt і подивимось на результат роботи скрипта
результат:
"test.txt"
256

Створимо каталог з іменем test
результат:
"test"
1073742080

Видалимо файл test.txt
результат:
"test.txt"
512

Видалимо каталог test
результат:
"test"
1073742336


Де застосовувати?

Та де завгодно! Наприклад на мому домашньому сервері крутиться скрипт, який слідкує за каталогом /mnt/smb/downloads (у який користувачі через ssh скачують файли з інтернету) і виводить час створення або видалення файлів на web-сторінку.

Посилання:

Ruby 1.9.1 on Ubuntu Jaunty

В репозиторії Ubuntu Jaunty немає Ruby 1.9.1, а лише пакети версії 1.9.0.
Тому ви повинні збирати його з вихідного коду або використовувати сторонні репозиторії.

Починаючи з версії 1.9.1. у комплект Ruby також входить Rubygems, так сказати Just Work™.


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

Спочатку встановдюємо необхідні залежності:
sudo apt-get install build-essential libssl-dev libreadline5 libreadline5-dev zlib1g zlib1g-dev


Далі скачуємо найсвіжішу версію Ruby 1.9.1 з офіційного сайту.
Компілюємо і встановлюємо:
./configure --prefix=/opt/ruby191
make
make test
sudo make install


І на сам кінець для зручності створимо відповідні посилання:
sudo ln -s /opt/ruby191/bin/ruby /usr/local/bin/ruby1.9.1
sudo ln -s /opt/ruby191/bin/testrb /usr/local/bin/testrb1.9.1
sudo ln -s /opt/ruby191/bin/rake /usr/local/bin/rake1.9.1
sudo ln -s /opt/ruby191/bin/ri /usr/local/bin/ri1.9.1
sudo ln -s /opt/ruby191/bin/rdoc /usr/local/bin/rdoc1.9.1
sudo ln -s /opt/ruby191/bin/irb /usr/local/bin/irb1.9.1
sudo ln -s /opt/ruby191/bin/gem /usr/local/bin/gem1.9.1
sudo ln -s /opt/ruby191/bin/erb /usr/local/bin/erb1.9.1


Готово!
$ ruby1.9.1 -e 'puts RUBY_DESCRIPTION'
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]



Встановлення з репозиторію Ubuntu on Rails PPA

Тим, хто вже тестує Ubuntu on Rails PPA спеціальний бонус від Antono Vasiljev
Додаємо новий репозиторій:
deb http://ppa.launchpad.net/ubuntu-on-rails/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/ubuntu-on-rails/ppa/ubuntu karmic main

$ sudo apt-get update
[...]
W: GPG error: http://ppa.launchpad.net jaunty Release: Слідуючі підписи не можуть бути перевірені, тому що, публічний ключ відсутній: NO_PUBKEY B6C6326781C0BE11
[...]

Додаємо публічний ключ:
gpg --keyserver keyserver.ubuntu.com --recv B6C6326781C0BE11
gpg --export --armor B6C6326781C0BE11 | sudo apt-key add -

Встановлюємо Ruby 1.9.1:
sudo apt-get install ruby1.9.1 ri1.9.1 rdoc1.9.1


Також можете зібрати пакет самостійно як це описано тут.