вівторок, 13 липня 2010 р.

Робота з форматом CSV в Ruby 1.9

Сьогодні мова піде про роботу з форматом CSV в Ruby 1.9.x.
Wikipedia каже:
CSV (від англ. Comma Separated Values - значення, розділені комами) - це текстовий формат, призначений для представлення табличних даних. Кожен рядок файлу - це один рядок таблиці. Значення окремих колонок розділяються розділовим символом (delimiter) - кома (,) або крапку з комою (;). Використовуваний символ роздільника залежить від встановленої в системі локалі. У США це кома, а в Росії - крапка з комою, так як кома використовується для дробових чисел (на відміну від США, де це крапка). Значення, що містять зарезервовані символи, такі як: кома, крапка з комою або новий рядок обрамляються символом подвійні лапки ("); якщо у значенні зустрічаються лапки - вони представляються в файлі у вигляді двох лапок поспіль. Рядки розділяються парою символів CR LF (0x0D 0x0A) (в DOS і Windows ця пара генерується натисканням клавіші Enter).

У Ruby 1.9 стандартна бібліотеки CSV була замінена на FasterCSV.

У прикладі я буду використовувати екпортовану у CSV адресну книгу з Nokia PC Suite. Цей скрипт буде виводити доступну інформацію про контакти.
# -*- encoding: utf-8

require 'csv'
filename = 'contacts.csv'
CSV.foreach(filename, :col_sep => ';', :headers => :first_row, :encoding => 'UTF-8') do |row|
  puts "==="
  row.to_hash.each_pair{|k, v| puts "#{k} => #{v}" if !v.empty?}
end


Опції:
  • row_sep - розлілювач полів (по замовчуванню кома)
  • col_sep - розділювач рядків (по замовчуванню перехід на новий рядок)
  • headers(:first_row означає, що перший рядок трактується, як заголовок)
  • encoding - кодування файлу

Щоб подивитись всі доступні опції виконайте в терміналі:
ri CSV::new

середа, 7 липня 2010 р.

Онлайн тест по Ruby

На сервісі Quizful є тест з основ Ruby - http://www.quizful.net/category/ruby.

Наразі є тільки тест початкового рівня. Але в майбутньому планується додати тести з Ruby середнього та експертного рівнів. Ще одним поліпшенням буде розширення списку питань з усіх тестів розділу, а також розбиття всіх питань на тематики (синтаксис, оператори, класи і т.д.).

Крім того на Quizful ви знайдете більше 100 тестів по адмініструванню, програмуванню, базам даних, веб-технологіях

Нові методи для роботи з масивами у Ruby 1.9.2

Робота з масивами та аналогічними об’єктами у Ruby є дуже простою. З Ruby 1.9.2 ми отримали більше цікавих можливостей :)

У файлі NEWS написано:
* Array
    * new method:
      * Array#keep_if
      * Array#repeated_combination
      * Array#repeated_permutation
      * Array#rotate
      * Array#rotate!
      * Array#select!
      * Array#sort_by!

    * extended methods:
      * Array#{uniq,uniq!,product} can take a block.
...
  * Enumerable
    * New methods:
      * Enumerable#chunk
      * Enumerable#collect_concat
      * Enumerable#each_entry
      * Enumerable#flat_map
      * Enumerable#slice_before

У цій статті коротко розглянемо ці методи.

пʼятниця, 2 липня 2010 р.

Ruby 1.9.2 RC

Майже за планом вийшов реліз-кандидат Ruby 1.9.2.
Було виправлено близько 130 багів. Версія 1.9.2 в більшості випадків сумісна з 1.9.1. Проте додано багато нових методів.

Все йде за планом і Ruby 1.9.2 буде випущена на початку серпня.

>>> Подробиці