Quicky 0.1

Статус
В этой теме нельзя размещать новые ответы.

WP

^_^
Quicky 0.1

Предлогаю покурить новый Smarty-совместимый шаблонизатор.

http://whitephoenix.ru/quicky.rar - исходники
http://whitephoenix.ru/quicky/_test/syntax.php , http://whitephoenix.ru/quicky/_test/simple.php - примеры работы.

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

Тестирование через ab:
Quicky - http://whitephoenix.ru/quicky.ab.txt:
Requests per second: 72.15 [#/sec] (mean)
Time per request: 277.188 [ms] (mean)
Time per request: 13.859 [ms] (mean, across all concurrent requests)
Smarty - http://whitephoenix.ru/smarty.ab.txt:
Requests per second: 32.84 [#/sec] (mean)
Time per request: 609.063 [ms] (mean)
Time per request: 30.453 [ms] (mean, across all concurrent requests)
 

Найч

Алгоритмик :-)
Поправь в доке
Код:
И в одном экземляпляре класса можно использовать сразу нельзя компиляторов.
Смарти у меня используется для бэкенда, где (грубо говоря) есть 3 шаблона, по которым все рубрики и работают. Ессно, шаблоны там непростые. Попробовал заменить. Конечно, не завелось ;)
Поскольку ты заявил о совместимости со смарти, то
Замечания:
- ldelim, rdelim в смартях немного не так называются. Как-то с ходу не придумал, как красиво поменять их из класса квики. Поправил в коде
- нет настройки для местоположения кустомных плагинов. В сколько-нибудь сложной системе очень хочется свои плагины хранить не просто отдельно от нативных, но и разбитых на какие-то группы по разным папкам
- получаю еррор - Can't compile template: (путь здесь)
без каких-либо пояснений. Как-то не очень видно, почему
- А заниматься отладкой твоего класса не очень интересно хотя бы потому, что инденты у тебя по одному пробелу - читается не очень

Твой вариант однозначно приятней смарти, но ты определись с совместимостью, и тогда можно будет продолжить (или закончить) с переходом
 

fisher

накатила суть
1) машина, версии ПО. здесь в первую очередь интересны настройки смарти, и какой испоьлзуется акселератор. если не используется то почему (акселератор ускоряет смарти раза в 3-4). не виндоуз ли это (уж больно медленно)?
2) методика. что 30 RPC что 70 RPC это что-то ооочень медленное. что ж именно там делается? код какой выполняется? где тест для plain php?
3) если есть желание, можно приготовить тест аналогичный lebowski-bench(http://alexeyrybak.com/blitz/lebowski_bench.tar.gz) (то есть от тебя нужен код, который все это делает), я его гоняю регулярно, сообщу результаты.
 

WP

^_^
Найч
1. Спасибо, исправил, через пару часов залью обновление. Поменять - $tpl->compilers['Quicky']->left_delimiter = '(';
2. А как отделять кустомные от стандартных? Давай подумаем. Я вижу несколько вариантов. Либо сделать mixed $plugins_dir, и если массив - то искать требуемый плагин во всех папках по порядку. Либо отделить нативные плагины от кустомных и задать им разные папки.
3. Это означает что файл не может быть прочитан. В случае парс-еррора или чего-то еще - другая ошибка.
4. Отладкой займусь я) А мне очень нравится такое читать, и не люблю лишние пробелы.
fisher
1. Винда, ноут. Никакого не используется. Настройки - compile_check = true, force_compile = false.
2. Гонял вот это - http://whitephoenix.ru/quicky/_test/simple.php
3. А там ведь нет для смарти)
 

fisher

накатила суть
виндоуз? ну право, кому интересны тесты на виндоуз? твой тест даст 1000 RPS на писюке с линухом! соотвественно у тебя там погрешность огого. дальше - акселератор. без акселератора вообще это не годится. "А там ведь нет для смарти" - да он есть, отдельно где-то, а он тебе поможет? надо не забыть закачать новую версию, кину ссылку
 

WP

^_^
fisher
Конечно поможет, я вставлю шаблон к себе и запущу тест)

Тест сравнительный.
 

fisher

накатила суть
объясняю, почему он неверный. представим себе, что мы попробовали померять скорость бега антилопы и леопарда в конуре для жучки!
 

WP

^_^
Плохой пример, т.к. эти двое имеют свойство разгоняться. А шаблонизаторы нет.
 

itprog

Cruftsman
WP
попробуй весь код в одну строчку записать, будет удобнее читать :)

Сами шаблоны неплохие получаются. По коду вопрос. Вроде пишется под PHP5, (microtime(TRUE), static function), но используется синтаксис PHP4 (var, &$this). Причины?
 

WP

^_^
itprog
> попробуй весь код в одну строчку записать, будет удобнее читать
Частично и одной строчкой, например короткие if'ы.
> Причины?
А я не вижу причин делать иначе. Можно заменить var на public но кому от этого будет легче жить?
 

magic

lancer
Пробовал запустить тест на Smarty. Исправляй шаблон :)
Fatal error: Smarty error: [in simple/index.tpl line 24]: syntax error: unrecognized tag: ($smarty.section.outer.index is odd by 2)?'.':'*' (Smarty_Compiler.class.php, line 439) in /var/www/vhosts/test/public_html/smarty/Smarty.class.php on line 1095
 

WP

^_^
;) В смарти не поддерживается тернарный оператор по ходу дела. Этот шаблон взят из смартовский примеров которые в комплекте идут. Запусти его ;)
 

Найч

Алгоритмик :-)
Андрейка
глупо перед обкаткой называться релизом


WP
просто 2 разные папки для нативных и кустомных, думаю, будет достаточно. Конечно, в сложных системах с разбивкой на модули правильней плагины тоже разбивать согласно модулям, но вряд ли там для фронтенда будет использоваться нечто отличное от специально заточенных. А для бэкенда хватит и двух.
Can't compile template - Это означает что файл не может быть прочитан. Связь как-то не очень прослеживается ;)
Пропиши более осмысленные сообщения

Когда зальешь?
 

WP

^_^
Найч
1. Хорошо, но думаю лучше массив сразу, покрасить и забыть.
2. Немного переработал механизм и сделал другое сообщение.

Сейчас кое-что сделаю и залью, ориентировочно в 20:00 по Москве.

-~{}~ 31.01.07 19:35:

Андрейка
Хм, ну $userdir я не реализовывал, есть только $template_dir. Чтоб не выполнялся PHP - погаси allow_php_native.

-~{}~ 31.01.07 20:58:

http://whitephoenix.ru/quicky.rar?nocache
- Сделал так что plugins_dir может быть массивом.
- Исправил сообщение об ошибке.
- Много мелких доработок.
 

Найч

Алгоритмик :-)
- при загрузке фильтров в fetch_plugin имя передается уже с ".php", хотя в методе fetch_plugin ты добаляешь расширение. Понятно, что filter.php.php не будет найден
- объяви сразу plugin_dir как массив. не совсем правильно в наследованном классе делать сначала
$this->plugins_dir = array();
$this->plugins_dir[] = 'plugins';
$this->plugins_dir[] = QUICKY_CUSTOM_PLUGIN_DIR;
ведь plugins ты уже у себя в конструкторе обозвал
- нельзя бросить абсолютный путь к шаблону. У тебя обязательно добавляется $this->template_dir. Конечно, можно выставить в пустую и радоваться, но как-то это не правильно
- не создается файловая структура для записи скомпилинного файла. По-русски - у меня скомпилиненные шаблоны раскиданы по кучке папок с уровнем вложенности 3. Ты сразу пытаешься создать файл в самой глубокой папке, когда вся эта ветка не существует. Получаем ошибку
- у тебя $this->compile_dir требует слэш в конце. Может правильней сделать проверку?
- какие правила именования фильтров/плагинов?

Остановлся на том, что
<!--{include file="common_design::Header.tpl"}-->
компилит в echo include file='common_design::Header.tpl'; ?> ;)
 

WP

^_^
1. Fixed.
2. Fixed.
3. Imho, шаблоны должны браться только из template_dir. Или я не прав?
4. Не совсем понимаю, они ведь лежат все в одной папке.
5. Думаю, нет. Это везде rtrim($a[$i],'/\\').DIRECTORY_SEPARATOR. Лучше сделать метод.
6. type.\w+
7. Не воспроизвелось. Распарселось адекватно.

Обновление залью попозже.
 

Найч

Алгоритмик :-)
шаблоны должны браться только из template_dir
3. не факт. Обычная ситуация - есть несколько template_dir. Для каждого модуля своя, входящая в файловую структуру модуля. Т.е. обзывать template_dir = document_root и вставлять пути к шаблонам не интересно
4. В том-то и дело, что не в одной. Хотелось бы, чтоб не в одной. Например, cache_id = $_SERVER['REQUEST_URI'] или масса вариантов на тему
5. Ась?
6. я не про файл, а про метод внутри
7. Строка из шаблона <!--{include file="common_design::Header.tpl"}-->
 

Solid

Drosera anglica
Самый главный недостаток -- абсолютно нестандартизированное написание кода. Я, конечно, понимаю, что данную библиотеку стоит рассматривать как чёрный ящик, однако хотелось бы правильного кода (сообщество заинтересованных будет с радостью fix'ить баги), желательно писаный или только под php5, или уж ладно пусть будет php4 + php5, но не так криво, как это сделано сейчас. Так же неплохо бы было залить его куда-нибудь для контроля версий, и выдать доступ для изменения всем самым активным и заинтересованным (например, sourceforge или googlecode). Ну и конечно же комментарии... стараемся их всё-таки не забывать.
 

WP

^_^
~залил обновление~

3. Даже не знаю.. Помоему шаблоны лежат отдельно, в папке templates, и там уже можно задать modules/mymodule/template.tpl. Не думаю что производить равнозначный поиск по всему array template_dir рационально.
4. Подумаю над этим. Действительно если файлов много лучше по разным каталогам. Думаю, сделаю по первым буквам разбивку.
5. Что? Я не думаю что везде нужно делать проверку.
6. Там есть пример.
7. Скомпилировалась адекватно. Не мог бы выложить весь файл шаблона? Чтобы можно было произвести отладку в случае ошибки.
Solid
Код правильный. Поскольку он работает четко и быстро, стиль аккуратный. И вовсе не криво сделано. Он написан под PHP5. Код буду писать только я, сыт по горло уже помощниками. Лично мне комментарии не требуются.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху