Kohana: Контроллер для CLI

Kohana - в первую очередь фреймворк, т.е. каркас приложений, и не обязательно для Web. Результатом работы Веб приложения может быть не только гипертекст(HTML) но и JSON, XML, изображения, простой текст, так и вовсе ничего.

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

Всё-таки оказалось, что kohana сильно ориентирован на вэб, хотя казалось бы, компоненты должны быть отдельно друг от друга.

Для написания консольного приложения(впрочем как и "демона") на основе Kohana нужно немного "допилить" контроллер. По-прежнему всю логику будет выполнять именно он, за одним исключением - если приложение и будет что то выводить - то это сообщения для отладки.

Важным моментом в этом является отлавливание ошибок. Стандартный отлов ошибок и исключений будет работать по-прежнему, но при малейшем E_NOTICE у вас в консоль отобразиться как минимум строк сто HTML кода - страница ошибки. Рано или поздно надоест прокручивать вверх и разбираться в коде - почему бы не представить ошибку в более понятном и читаемом виде?

Read more

Удобный доступ к конфигу/массиву

Долго думал как назвать пост. Иногда очень достают километровые строки для доступа к массиву(как правило километры - именно в конфиге), например:

$this->config->config['siteconfig']['someavatar']['normal']['height']

А хочется что - то более лаконичное, вроде

$this->_siteConfig('someavatar', 'normal', 'height');

или может даже

$this->_siteConfig('someavatar/normal/height')

Read more

CodeIgniter: добавляем фильтр. Часть 1

Прочитав небольшой обзор фреймворка yii навеяло желание сделать одной очень нужной для CodeIgniter вещи - фильтра. Подробнее о том что это. В кратце - метод который вызывается сразу после конструктора контроллера перед выполнением метода, который был выбран фреймворком на основании правил роутинга.

Область применения - самая разная: различные проверки прав, xss фильтрация, установка каких-либо полей класса, загрузка и инициализация моделей/библиотек/хелперов и прочего.

Read more

flex: Array в качестве dataProvider в DataGrid’е

Изначально у меня все данные для отображения в таблицах хранились в обычных массивах Array, с биндингом, в общем виде как то так:

[Bindable]
protected var super_mega_array:Array = new Array();

В него push'ались элементы, и всё это дело какбе работало. В процессе работы приложения массив меняется, я надеясь на [Bindable] думал, что таблицы тоже должны какбе поменяться. А вот и нет.

Read more

flex: много DataGrid с одинаковыми столбцами

Есть такая ситуация: много DataGrid компонентов, но у них есть общее - один и тот же заголовок таблицы(проперти columns).

Задача - не дублировать колонки в каждой из таблиц, т.е. избежать вот такого
[cc lang="xml"]








[/cc]

Read more

jQuery: отправка полей формы ajax-ом

Чтоб отправить поля формы(в примере с id="f2s"), с помощью jQuery и аякса методом POST, в качестве второго аргумента не обязательно специально создавать объект в котором перечислять поля в виде ключ-значение.
Можно поступить так:
[cc lang="html"]
debug me
[/cc]

Read more

Смена дефолтной jvm в debian

Чтоб изменить виртуальную машину ява(jvm) по умолчанию можно воспользоваться утилиткой update-alternatives

У меня вот так:

update-alternatives --config java
Есть 4 вариантов для альтернативы java (предоставляет /usr/bin/java).

  Выбор   Путь                                  Приор Состояние
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      автоматический режим
  1            /usr/bin/gij-4.3                           43        ручной режим
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      ручной режим
* 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        ручной режим
  4            /usr/lib/jvm/java-gcj/jre/bin/java         1042      ручной режим

Read more