По тегу: "perl"

Всем привет, это снова я и Perl 6.

Вообще-то, изначально в планы входили по две публикации в неделю, но, очень скоро я вдруг осознал, что материала набегает на 9 глав, и месячник Perl 6 может затянуться на двумесячник. Не хотелось бы.

Поэтому снова здесь ликбез по Perl 6, продолжение искрометной первой и удивляющей второй главы, пятничная-последняя-статья-про-перл-на-этой-неделе-обещаю.

Новая глава называется «Циклы».

Читаем!
shootnix
shootnix
07 августа 2009, 13:43
 13  
просмотров
1052
9


Perl 6
Сегодня разработка 6-й версии языка уже даже у скептиков не вызывает сомнений. Шестому перлу быть. Точнее даже, что он уже есть. Но пока не полноценный, а только тестовый. Но развитие идет, причем, отличными темпами. И если верить цифрам, фактам и людям, что делают Parrot (вирутальную машину, на которой запускается Perl 6), то продакшн-версию нам ждать осталось меньше, чем полгода. Следом за Parrot релизется Rakudo — официальная реализация 6-го перла.

На сегодняшний день разработка Rakudo ведется довольно быстро, скорость даже, в некотором роде, впечатляет. Реализовано уже много чего, Rakudo проходит более 10 000 тестов, что вполне неплохо. Смотреть за статусом можно здесь: http://rakudo.org/status.

Иными словами, прищло то время, когда с Perl 6 можно и нужно знакомиться. Самый простой способ описан на сайте Rakudo. Для этого вам понадобится git и компилятор C. Ну и Perl 5, конечно (это временно, в финальном релизе никакого Perl 5 не будет).

Сначала создайте отдельную директорию где-нибудь. Назовите ее, например, rakudo. Теперь перемещайтесь туда и набирайте в командной строке:

git clone git://github.com/rakudo/rakudo.git

Если у вас все еще нет git'a и вы не знаете, нужен ли он вам, можете скачать тарбол с гитхаба:

http://github.com/rakudo/rakudo/downloads

Найдите теперь файл Configure.pl. Запускайте его так:

$ perl Configure.pl --gen-parrot

Атрибут --gen-parrot ответственнен за загрузку и компиляцию последней версии Parrot. После всего, что промелькнуло на экране, наберите

$ make

Если все прошло гладко, вы увидите в корневой папке новообразовавшийся файл с именем perl6 (или perl6.exe, если у вас windows). Это и есть ваш компилятор Perl 6. Запускать его просто:

$ ./perl6

Чтобы упростить себе немного жизнь, можно сделать следующее (для пользователей Linux). Создайте файл /usr/bin/perl6. А в нем поместите вот это:

#!/bin/sh
/path/to/rakudo/perl6 "$@"

Теперь можно запускть перл-шесть, просто набрав в терминале:

$ perl6

И небольшой тест:

> .say for 1..10

Надо сказать, что Perl 6 — это совершенно новый язык, лишь слегка похожий на прежний, пятый. Т.е. учить его придется всем, не важно, знаете вы предыдущую версию языка, или нет. Но оно того стоит, я полагаю.

shootnix
shootnix
26 июля 2009, 15:55
 2  
просмотров
313
3

Сегодня поговорим о контроллерах в MVC фреймворке Catalyst. Тем более, что контроллеры — это, пожалуй, единственная его часть, которая поставляется нативно и присутвтует в проекте на самом старте.

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

Все эти манипуляции осуществляются посредством глобального объекта, называмого «контекст» — он является наследником всех ваших классов и классов Catalyst. По принятому согашению, объект получил простое и симпатичное имя — $c.

читать дальше
shootnix
shootnix
05 июля 2009, 14:46
 0  
просмотров
195
1

Для тех, кто знаком с языком Ruby, не секрет, что весь код в нем является объектом. Т.е. все переменные, строки и даже сам код — это совершенно простые объекты самого языка, к которым применимы соответствующие методы:

-199.abs # 199
"ruby is cool".length # 12
"Your mother is nice.".index("u") # 2


Круто. Давайте теперь представим, как бы все это выглядело, если бы мы пользовали perl:

abs( -199 )
length( "ruby is cool" )
index( "Your mother is nice.", "u" );


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

-199->abs
"perl is cool"->length
"Your mother is nice."->index("u")


Поможет нам в этом autobox::Core.
Модуль предлагает совершенно иную структуру кода, написанного на Perl. Отныне все скаляры, списки, хэши и даже сам код — все это является объектами соответствующих классов.

Какие же методы и как нам теперь можно использовать? Давайте разбираться по-порядку.

МАССИВЫ:

my @ary = (1..10);say @ary->pop # последний элемент массива
say @ary->shift # первый элемент массива
@ary->push( 11 ) # добавить элемент в массив
say @ary->elems # кол-во элементов (из perl6)
say @ary->last # последний элемент списка (из perl6)
say @ary->sum # сумма элементов массива
say @ary->join( ' - ' ) # превратить массив в строку "1 - 2 - 3 .. - 10"


Вложенные функции теперь можно представить в виде цепочки методов:

@ary->join( ' - ' )->say


Работа с указателями совершенно идентична:

my $ary = [1..10];
$aty->elems->say


Массивы могут перебираться внутри цикла таким образом:

@ary->foreach( sub { say $_[0] } );


ХЭШИ
:

my %hash = ( a => 1, b => 2, c => 3 );%hash->keys # все ключи хэша
%hash->values # все значения хэша
%hash->delete( 'a' ) # удалить значение
%hash->exists( 'a' ) # проверить существование значения


Точно так же, как и массив, можно перебрать и хэш:

%hash->each(sub { print $_[0], ' is ', $_[1], "\n" });


Ну и напоследок про хэши:

%hash->keys->sort->reverse->print; # вывести ключи хэша, отсортированные в обратном                                       # порядке.


СПИСКИ
:
В большинстве случаев к спискам применимы те же методы, что и к массивам:

[1, 2, 3, 4, 5]->elems->say;


СКАЛЯРЫ:
Скаляры — это строки, числа и символы. Функций для работы со скалярами довольно много, я покажу несколько примеров.

my $scalar = "10 20 30 40";

my @ary = $scalar->split(qr{ })->elements;
# превратить строку в массив

$scalar->strip # удалить пробелы в начале и конце
16->sqrt # квадратный корень
"hello"->uc # все буквы сделать строчными (рез.: HELLO)
"HELLO"->lc # все буквы сделать прописными (рез.: hello)


Числовые функции:
add, and, band, bor, bxor, cmp, dec, div, eq, flip, ge, gt, inc, le, lshift, lt, mod, mult, mcmp, ne, neg, meq, mge, mgt, mle, mlt, mne, not, or, pow, rpt, rshift, sub, xor.

Последнее
Чтобы эту красоту использовать, нужен модуль autobox::Core. Делаем так:

$ sudo cpan autobox::Core

Все.

shootnix
shootnix
27 июня 2009, 20:04
 26  
просмотров
140
4

Довольно любопытное видео, посвященное Catalyst.

http://wiki.dandascalescu.com/howtos/catalyst/introduction_to_catalyst

shootnix
shootnix
24 июня 2009, 14:35
 0  
просмотров
150
1

Для начала, Catalyst — это фреймворк с хорошей историей, давно существующий и развивающийся, с внушительной документацией. В этой статье я расскажу, на что он похож.

Catalyst — это MVC-фреймворк, т.е. приложение, написанное при помощи Catalyst, разделено на три части: модель, представление и контроллер.

Модель в понимании Catalyst — это часть приложения, отвечающая за хранение данных, поиск данных, редактирование данных, создание данных и тд. Сокращенно такую формулу записывают «CRUD» (Create, Read, Update, Delete). Модель не знает, как отображать данные, ей, в сущности, наплевать на то, что с данными и как делать, она умеет только CRUD. В идеале, конечно. Класс, отвечающий за интеграцию каталиста с конкретной моделью, называется Catalyst::Model. Этот класс наследует все методы той модели, которую вы выберете. А выбрать вы можете: http://search.cpan.org/search?query=Catalyst::Model&mode=all

Самыми популярными моделями хранения данных на сегодня являются Catalyst::Model::RDBI, Catalyst::Model::DBIx::Class, Catalyst::Model::DBI. Сами разработчики настаивают на использовании ими же разработанной Catalyst::Model::DBIx::Class, но, повторю, вы можете выбрать любой, какой захотите, хоть Catalyst::Model::File.

Представление — это вторая базовая вещь в Catalyst. Оно (представление) отвечает за рендеринг шаблона. В свою очередь, представление не умеет хранить и доставать данные, не умеет управлять приложением. Это просто шаблон. Класс, отвечающий за представление, соответственно, называется Catalyst::View. Здесь все точно так же, как и с моделью: существует множество шаблонизаторов, работающих с Catalyst: http://search.cpan.org/search?query=Catalyst::View&mode=all.

Сами разработчики предлагают воспользоваться Template::Toolkit (Catalyst::View::TT) — очень мощным шаблонизатором, с массой всяких приятных и не очень мелочей. Еще из наиботее известных и популярных шаблонизаторов для рендеринга HTML (а, как вы сами понимаете, HTML — это не единственное, что может показать View) в Catalyst можно выделить: Catalyst::View::Mason, Catalyst::View::HTML::Template. Забавно, что существует даже Catalyst::View::PHP — для использования PHP в качестве шаблонизатора для Catalyst.

Контроллеры в Catalyst — это отдельные классы. Методы этих классов называются Action. В каждом контроллере может находиться много разных экшенов. Контроллер — это функциональная единица Catalyst. Контроллеры не знают ничего про модель и представление, но они прекрасно осведомлены о том, что нужно делать в тот или иной момент.

Контроллеров тоже много. Одни могут работать с формами, другие с документами и так далее. Посмотреть можно тут: http://search.cpan.org/search?query=Catalyst::Controller&mode=all

Основную часть контроллеров пишут программисты, но есть специальные контроллеры, вызываемые автоматически, которые, при желании, могут быть переопределены.

Объединением и упралением этих трех сущностей занимается переменная, называемая «контекст», $c. В «контекст» попадают методы контроллера, модели и даже представления. А также плагинов. Кроме этого, $c имеет свои собственные методы и свойства.

И раз уж я упомянул о плагинах, то скажу о них еще пару слов. Плагины — это расширения Catalyst. Найти их легко: http://search.cpan.org/search?query=Catalyst::Plugin&mode=all. Как видите, их довольно много. Если хорошо поискать, то можно найти все, что нужно.

Вывод из всего вышенаписанного можно сделать такой: Catalyst — это кракас, а уж что на этот каркас надевать, решать вам. Catalyst не предлагает одно решение, их тут может быть очень много, и в этом вся прелесть.

shootnix
shootnix
24 июня 2009, 14:18
 1  
просмотров
172
3

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

Кроме того, Catalyst — это очень гибкий каркас, в котором можно использовать совершенно разные инструменты — хоть конроллеры, хоть представления. Не всегда мнение самих разработчиков каталиста может совпадать с вашим и тогда придется непросто.

Под кат
shootnix
shootnix
24 июня 2009, 00:15
 6  
просмотров
539
3
 
участники
shootnix
Rex
edmond-mouse
mikusya
Legend_FoX
PeterWilson
askhattk
barmaglot
wwax
tima888
t-sh
Sigurt
zloyrusskiy
goodev
10275
PILIGRIM
войти
зарегистрироваться
сообщества
последние записи
записи по обсуждениям
записи по рейтингу
создать новое сообщество
личные блоги
последние записи
записи по обсуждениям
люди
самые активные
новые
по городам
по интересам
блог проекта
правила участия
помощь
мы на других сайтах
реклама
конкурсы
контакты
WebEverywhere, 2008-2010

Lyakhov.KZ - Большая энциклопедия Казнета Lyakhov.KZ - Большая энциклопедия Казнета