Архив за год: 2009

Perl. Лама бук

Изучаем Perl

Изучаем Perl

Сегодня на books.ru увидел интересную новость— вышло 5-ое издание на русском языке легендарной «Лама бук», первое издание которой появилось еще в 1993 году (я тогда не знал что такое компьютер,  а вот Perl уже был 🙂 ). Авторами книги являются довольно известные, в мире Perl, люди Рэндал Л. Шварц, Том Феникс, Брайан Д. Фой (тот самый, который посетил в этом году YAPC::RUSSIA 2009).

Собственно свое знакомство с Perl  я начал именно с этой книги, правда уже не вспомню какое это было издание (я читал электронную версию).

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

use perl or die;

Yii 1.0.6

Yii радует нас очередным обновлением! Версия 1.0.6 включает больше 10 новых фич и несколько баг фиксов!

Для себя особо отметил следующие нововведения:

  • yiic может генерировать модели сразу для всех таблиц в базе данных (обязательно попробую)
  • yiic генерирует связи между таблицами в моделях
  • в составе yii появился компонент для файлового кеша (давно его ждал)

Вот такие вот новости на сегодня!

А между тем почти готова первая (0.0.1) версия Юпи! на этой неделе будет первая рабочая демка!

Удачного yii-кодинга друзья!

Ubuntu 9.04

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

Могу сказать лишь одно — мне все очень нравится!!!

Хотелось бы особенно обратить внимание на систему обновления софта и библиотек. До этого я использовал OpenSuse, и там тоже была система обновлений, но то ли у меня руки кривые, то ли что-то не так в самом дистрибутиве, работала она через раз и частенько процесс обновления завершался ошибкой.

В Ubuntu все иначе! Необходимо всего лишь один раз настроить «Менеджер обновлений» и забыть про то, что Ваша система может устареть. При активном соединении с интернетом, дистрибутив проверяет наличие новых версий программ и библиотек, установленных в системе. При обнаружении таковых, в системном лотке появляется значок, нажимаем на него, вводим пароль пользователя root, нажимаем «Установить обновления» и все — Ваша система is up to date!

Более того, за один час моя система успешно обновилась с версии 8.10 до версии 9.04!

Вот такой вот крик души и БОЛЬШОЙ БОЛЬШОЙ ПЛЮС в копилку Убунте!

Читайте так же:

День Ubuntu

Не PHP единым сыт человек, или как я побывал на YAPC::RUSSIA 2009

YAPC 2009

YAPC 2009

Те не многие люди, которые читают мой блог, при вопросе:

— «а о чем он??»  (я имею ввиду свой блог :-)),

скажут:

— «в основном автор пишет про php-фреймворки, в особенности про Yii и php вообще…»

(по крайней мере я надеюсь, что так скажут :-))

А дело, собственно вот в чем! Моим первым языком, на котором я написал что-то реальное был……Perl (я не беру в счет все эти джавы, питоны, «плюсы» на которых писались лабораторки в институте или которые изучались мной давным давно) . Мое знакомство с Perl-ом произошло около 2-х лет назад, и до сегодняшнего дня, я использую именно его  в своей работе.

— «Так почему же в этом блоге нет ни одной записи про Perl и все что его касается???»

Этот вопрос я задал себе после посещения первого дня YAPC::RUSSIA 2009.

К сожалению на второй день приехать не получилось :-(.

Вкратце о том, что там было и что для себя отметил лично я!

Прежде всего я узнал что «YAPC» произносится как «япси» а не «яписи» как я все время думал!

Анатолий Шарифулин из  RostovOnDon.pm сделал замечательный доклад о том как правильно подготавливать модули для публикации на CPAN.

Заграничный гость brain d foy сделал интересный доклад о создании mini-CPAN для собственных нужд.

Александр Лурье рассказал о том как пользоваться API Web Money  из Perl (Модуль Business::WebMoney).

Так же была великолепная серия блиц-докладов!

Под завершение было проведено обсуждение  будущего Perl-а. Во время этого обсуждения, уже знакомый нам  Анатолий Шарифулин обратился к аудитории с вопросом о положении Perl-а в Российской блогосфере, он упомянул о IronMan — своебразном конкурсе, смысл которого заключается в том, что необходимо создать блог, посвященный Perl и писать не менее одного поста каждые 8 дней. Читать подробнее.

Если честно, это выступление каким-то образом подействовало на меня, я решил завести свой отдельный блог , целиком и полностью посвященный языку Perl и всему что с ним связано (или буду писать в этом блоге — еще пока не решил)!  Скорее всего, под требования IronMan мой  блог не попадет, но думаю будет интересно!  Как коворится «коминг сун…»

И на последок….

use Perl or die;

— уж очень нравится мне эта фразочка _)))

Движок блога на Yii. Front и back разделение.

Предыдущие серии

1 Вступление

2 Yii, создаем свою CMS. База данных

Наверное в каждом веб-приложении возникает задача разделения, так называемой клиентской или public части — та часть веб-сайта или веб-приложения с которой работает пользователь и админ или back части —  часть сайта, с которой работают администраторы, контент-менеджеры и прочие пользователи, отвечающие за наполнение сайта. Сегодня я хочу поговорить о том как это сделать, при использовании фреймворка Yii и какой способ выбрал я при разработке Юпи!.

Критериями для выбора способа будут являться следующие:

  • простота реализации
  • необходимость выполнять дополнительные «тело движения» (править .htaccess, колдовать с роутингом и т.д.)

И так…

При использовании Yii можно поступить несколькими способами:

  1. Создать контроллер Admin или Back и всю логику админки реализовывать там;
  2. В каталоге Controllers создать подкаталог admin или back и все контроллеры и экшены для админки располагать там;
  3. Админка в виде отдельного модуля Yii;
  4. Создать два приложения — одно  для админской части, другое для клиентской;

Все четыре способа упорядочены по сложности их реализации и по необходимости выполнять дополнительные действия — т.е. писать код!

Кратко рассмотрим достоинства и недостатки каждого из них.

1  Создать контроллер Admin или Back и всю логику админки реализовывать там — наверное самый простой способ.

Достоинтва:

  • простота реализации;
  • модели используются всем приложением;

Недостатки:

  • если админка будет очень большая (с большим функционалом), наш контроллер «раздуется» до огромных размеров, что затруднит сопровождение проекта (эту проблему, отчасти может решить вынесение экшенов в отдельные классы);
  • нет отделения админки от остальных частей проекта;

2 В каталоге Controllers создать подкаталог admin или back и все контроллеры и экшены для админки располагать там — второй по сложности реализации способ, забегая вперед, скажу, что я выбрал именно его.

Достоинства:

  • админка физически (на уровне каталога файловой системы) отделена от остальных частей проекта, причем это отделение касается не только каталога Controllers, но и каталога View;
  • модели используются всем приложением;

Недостатки:

я пока их не нашел 🙂

3 Админка в виде отдельного модуля Yii — по правде говоря, кода я начал разрабатывать Юпи! и столкнулся с проблемой разделения на back и front части — тогда еще не было поддержки модулей в Yii (она появилась в версии 1.0.3), поэтому данный способ я не рассматривал. Если кто-то пытался поступить таким образом — прошу рассказать о своем опыте в комментариях.

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

Достоинства они же, от части, являются и недостатками:

  • части системы полностью изолированы друг от друга, из этого следует что без «пляски с бубнами» и дополнительных опций в конфиге не получится использовать модели и библиотеки одного приложения в другом, а отсюда вытекает дублирование кода и все что с ним связано.

Для себя я выбрал способ №2, он, как мне кажется, наиболее удовлетворяет всем моим требованиям.

Таким образом мы имеем следующую структуру проекта.

Вопрос разделения приложения на 2 части поднимался на официальном форуме Yii, почитать можно тут.

Кроме такого вот разделения приложения на две части, для каждой из них я сделал свой базовый контроллер, таким образом все контроллеры клиентской части наследуются от YFrontMainController, а контроллеры админской части от YBackMainController. Введение новых базовых контроллеров позволяет:

  • реализовать  функционал, специфичный для каждой части приложения, в одном месте, что облегчает повторное использование и сопровождение;
  • как правило, для клиентской и адмиской частей используются разные лайауты (layouts), разделение контроллеров позволяет реализовать это очень просто (для этого достаточно переопределить свойство layout);

Например, для всех контроллеров админки, я применяю фильтр, проверяющий авторизацию пользователя, не имея базового контроллера, мне бы пришлось прописывать его во всех контроллерах админки. Так же применяется xss-фильтр, для всех данных, отправляемых из панели администрирования.

Скорее всего,  выбранное мной решение, не является идеальным и имеет скрытые (пока!) от меня недостатки, если Вы о таковых знаете — прошу высказываться в комментариях.

Удачного yii-кодинга, друзья!

Обсудить на форуме

Основной сайт Юпи! — http://yupe.ru

Исходный код — https://github.com/yupe/yupe

Присоединяйтесь!