26 мар. 2009 г.

Redcar - TextMate для Linux



Страница проекта
Репозитарий на githaub.com

Как говориться
Наш ответ Чемберлену.


Особенность редактора в том, что написан он на чистом Ruby по образу и подобию TextMate.
Ничего вразумительного больше сказать не могу :-)) Погоняем - увидим. Но начало уже положено :-)



20 мар. 2009 г.

Многомерные массивы в Ruby

Заполнить многомерный массив случайными числами из заданного диапазона.
Данные вводяться с клавиатуры

Ruby не поддерживает многомерные массивы напрямую. Зато можно создать массив массивов.
Вторым параметром конструктор класса Array принимает заполнитель значения массива по умолчанию.
Почему бы не отдать ему уже готовый заполненный случаными числами одномерный массив.

>> (h, w, d = gets.split) && (a=Array.new(h, Array.new(w).map{|e| e=rand(d)}))
3 4 100
=> [[97, 96, 18, 60], [82, 73, 83, 70], [49, 3, 19, 93]]
>> a[1][3]
=> 70

cupsd: Child exited on signal 6! failed!

Именно с такой вот руганью сваливался CUPS.
Даже в логи ничего не писал.
Помогло наведение порядка в /etc/hosts.

19 мар. 2009 г.

HAML. Хайку на Ruby

HAML - DSL язык для создания разметки.
Реальная алтернатива для замены стандартного ERB.

Принципиальное отличие - формирование кода с помощью отступов пробелами(_не табуляцией_), а следовательно отсутствие надобности в закрывающих тегах.

Следовательно мы получаем как минимум вдвое меньше кода и более структурированного.
Понадобиться редактор показывающий ведущие пробелы и с хорошим управлением текстовыми блоками.

Установка:
sudo gem source -a http://gems.github.com


sudo gem install haml


Создание приложения и подключение haml:
rails [myapp]
haml --rails [myapp]


/app/views/layouts/application.haml

!!!
%html
%head
%title Hello world!!!
%body
%header
%body=yield
%footer


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Hello world!!!</title>
</head>
<body>
<header></header>
<body></body>
<footer></footer>
</body>
</html>


Некоторый виды форматирования:


  • % - тег
  • = - вычисление
  • - - выражение не возвращающее результат
  • #, . - соответственно id и класс div
  • : - фильтр(textile, sass, ruby, plain)


пример


#toolbar
%a.icon.icon-add
= link_to 'Create New'


     
<div id='toolbar'>
<a class='icon icon-add'>
<a href="/">Create New</a>
</a>
</div>


Кстати скажу, что html генериться весьма аккуратный.

Утилиты для упрощения миграции:

haml - интерпретатор haml кода в html для командной строки.

html2haml - конвертирование html файлов с erb разметкой в haml код.

17 мар. 2009 г.

RoR vs PHP или Из неверного - все, что угодно.

Это почему я такой злой был? Потому, что у меня фреймворка не было.(C) Я


Ниже я бы хотел высказать свою точку зрения на некоторые заблуждения и причины холиваров.

PHP популярней, чем RoR. RoR круче PHP.

PHP — шаблонизатор, притендующий на роль языка программирования. Создан был изначально для «нарезки» текста — таковым и остался. Этим же определяется сфера его применения — исключтельно WEB. Название говорит само за себя: PHP: Hypertext Preprocessor.

Ruby on Rails aka RoR — програмний каркас на основе высокоуровневого языка Ruby.

Правильно было бы сравнивать RoR и CakePHP.

“Нелюбовь” к PHP основывалась в основном на том, что долгое время не было програмных каркасов, достаточно популярных, чтобы объеденить вокруг себя достаточно широкий круг разработчиков и доминировать среди подобных ему.

Путаница и холивары возникают еще и потому, что слабо различается отличие между CMS, Framework и собственно самим языком программирования. Подмена одного понятия другим порождает бурю эмоций и флейма: Joomla vs RoR, PHP vs RoR etc, RoR vs Symphony

Ruby-код очень приближен к английскому языку.

Это не верно. Matz(Якихиро Мацумото) — японец, следовательно он несет особенности языка и родного удобного ему лаконичного иероглифического написания. К английскому языку близок RoR — потому как автор его американец дацкого происхождения David Heinemeier Hansson.

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

Человеку удобней смотреть на широкое чем на узкое. Тоже самой происходит и с программой. Лучше видеть всю программу сразу, чем листать страницы. Именно в этом месте происходит ломка сознания программистов C, Pascal, Javа, пытающихся писать на Ruby в стиле привычном для себя . Естественно, что код написанный в соответствии с Ruby way кажеться им “неуместной отимизацией”(сокращенной формой) их кода в ущерб его читабельности.

Для разработки на RoR необходимо переходить на Linux.

Существуют проблемы при разработке на системах семейства Windows. Но Linux не единственная альтернатива. Более того, фанаты семейства MaxOS считают, его чуть ли ни родным для Ruby, потому как со свойственной им прозорливостью в свое время одними из первых включили его в состав дистрибутива операционной системы.

Лично я сам склоняюсь к мнению, что *nix подобные системы более приспособлены для процесса разработки.

13 мар. 2009 г.

Первый номер RailsMagazine


Вышел первый номер журнала RailsMagazine. Цена 8$ USD за печатное издание.
Свободнораспространяемая копия в формате PDF будет доступна через несколько дней.