singalen: (Default)
[personal profile] singalen
PHP, MVC и другие троебуквия
Андрей рассказал о своих впечатлениях от PHP-шных фреймворков Zoop и Zephyr.
Сказал, что если по-человечески писать на PHP, а это значит - обязательно используя библиотеку Smarty, то есть отделяя представление от логики, то функции этих ферймворков становятся не нужны.
Цитирую [livejournal.com profile] cousin_it: "А разделение View и Controller в PHP нужно не для элегантности кода. Просто если в ответ на POST-запрос отдавать страницу, то ломается поведение кнопок Back и Refresh во всех браузерах: "Do you wish to resend the information?"

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

В 5-й версии PHP наконец-то поправили грамматику. До того, если функция возвращает объект(хэш), нельзя было написать func()->field. Можно было:
$v = func();
$v->field ...
О Джаве - поправьте меня, если я ошибаюсь.
В J2EE ту же задачу решают: раньше самой популярной библиотекой была Struts, а сейчас - Tapestry. Java Server Faces (JSF) упоминается как "набирающая популярность" библиотека. Почему, она же существует уже достаточно давно? Из-за каких-то изменений в версии 1.2?

Длинные транзакции и разрешение конфликтов
Дима Харченко спросил, как решаются проблемы конкурентности в длинных транзакциях, они же бизнес-транзакции. Пример бизнес-транзакции - это клиент веб-магазина положил товар в корзинку, и пошёл собирать корзинку дальше. В это время другой покупатель положил в свою корзинку ту же самую (единственную на складе) единицу товара. Или менеджер вообще снёс товар со склада и из ассортимента.
Имеем типичный write-write конфликт.
У них в проекте вообще нарушалось правило Киркгофа: из точки выходило меньше товара, чем его завозили %)
(Кстати, shoppping cart в e-магазинах должен храниться около двух недель)

Я пересказал фаулеровский подход из "Корпоративных систем", когда все длинные транзакии реализуются в сервере приложений бизнес-объектами. Какое-то количество общей "транзакционной" логики реализовать придётся, но небольшое и достаточно специфическое. Почти наверняка уровни изоляции писать НЕ придётся %)
При этом состояние бизнес-объектов сервера приложения можно хранить и не в нём самом, а опять в БД - все корзинки, остатки товаров и т.п.
Ещё Димина команда рассматривала вариант - ввести тернарную (троичную) логику наличия товара. Не "есть"-"нет", а
"есть"-"нет"-"может быть". Правда, это тоже нужно писать руками, причём много. Так, вместо простого оператора сравнения количества товара на складе с количеством заказанного покупателем (<=) придётся делать обработку троичного значения.
Тут же всплыли версии значений булевской переменной: "Нет, не сейчас", "Нет, и никогда не говори мне об этом" и "У меня болит голова".
Туда же - Вова Мутель упомянул индийскую школу логики с 5ю значениями: "Да", "Нет", "Ни да ни нет", "И да и нет" и "Ни один из перечисленных вариантов".
3-значная логика есть в Boost. Приколитесь:
tribool b = some_operation();
if (b) {
  // b is true
}
else if (!b) {
  // b is false
}
else {
  // b is indeterminate
}

Оффтопики
Вспоминали, что такое парсек. Не вспомнили %) Вова вспимнил.
О XP Вова сказал, что "нет сильнее той фаланги, в которой воины любят друг друга" (Ксенофонт).
Надолго занесло в разговор о Форексе.
Придумали, вслед за фотопринтером и принтером на CD, принтер для пиццы и профессию "верстальщик пиццы". Страшная картинка тут.

про пхп задело )

27/4/06 03:21 (UTC)
Posted by [identity profile] kelyar.livejournal.com
эээ, а причем тут POST ??

не смотрел именно эти фреймворки, но обычно их ф-ии - немного больше, чем просто template engine )

(no subject)

27/4/06 04:34 (UTC)
Posted by [identity profile] kelyar.livejournal.com
кроме шаблонов - скажем ORM, кэширование, + кучу разных полезных модулей

много - потому что Zend слишком долго морозится и не может передрать рельсу )
+ Not Invented Here, конечно =)

(no subject)

27/4/06 05:19 (UTC)
Posted by [identity profile] kelyar.livejournal.com
ага, http://framework.zend.com/

Zend - официальная контора, которая продвигает php.
чтобы покончить с творящимся бардаком (у каждого свой фреймворк), они начали делать движок, который должен стать стандартом.

но как-то странно начали. начали с непонятного набора функций(!), класса для чтения rss и прочей фигни (

(no subject)

27/4/06 06:14 (UTC)
Posted by [identity profile] dik.livejournal.com
тостеры умеют выжигать на тостах всякую ботву уже. например, прогноз погоды.

http://www.netoscope.ru/news/2001/04/09/1995.html
Posted by [identity profile] profuel.livejournal.com
Я так и не понял - откуда и на какой основе строился этот список.
Поэтому тем более мне не ясно - почему там нет ни ZOOP ни Zephyr ни Xoops, о котором говорил Владимир Мутель.
Последний стал номинантом Community Choice Awards 2006 на SourceForge.Net.... такое звание просто так не получает никто.
Поклацал я фреймворки в том списке.... на PHP без надписи в названии не натолкнулся,... но вот такие строки в одном из них - " **** is compatible with both PHP4 and PHP5" - сразу наводя на мысль, что MVC там и близко не лежало... без наследования этого красиво не сделаешь, я так думаю.

(no subject)

27/4/06 14:19 (UTC)
Posted by [identity profile] profuel.livejournal.com
Вспоминали, что такое парсек. Не вспомнили %)
а вот тут как раз Владимир точно вспомнил определение ;)

(no subject)

30/4/06 09:19 (UTC)
Posted by (Anonymous)
странно читать о том что движок шаблонов теперь заменяет целый фреймворк...
Posted by (Anonymous)
а что, в PHP 4 проблемы с наследованием?

(no subject)

30/5/06 10:45 (UTC)
Posted by [identity profile] dph.livejournal.com
О Джаве - поправьте меня, если я ошибаюсь.
В J2EE ту же задачу решают: раньше самой популярной библиотекой была Struts, а сейчас - Tapestry. Java Server Faces (JSF) упоминается как "набирающая популярность" библиотека. Почему, она же существует уже достаточно давно?

К сожалению, Tapestry еще очень далеко до популярности - большая часть программистов как использовала Struts, так и использует ;( Да и у Tapestry куча проблем.
Я вообще подозреваю, что дальше будет сразу прыжкок на AJAX сайты, а все эти жуткие библиотеки шаблонов вымрут.

(no subject)

30/5/06 11:16 (UTC)
Posted by [identity profile] dph.livejournal.com
Основная проблема Tapestry - про нее очень мало информации в инете.
И, как и для всех подобных платформ, очень дорого делать что-то не предполагавшееся. Например, генерить с помощью Tapestry XML довольно сложно.
Мы где-то пару месяцев с ней игрались, потом решили все на AJAX делать.

Про AJAX. В общем, да, на клиент передается модель. ТОлько лучше не XML, а Json - его проще разбирать и на сервере и на клиенте.
Кода - довольно много, несколько сот килобайт, грузится один раз.
Зато код довольно ясный и на сервере и на клиенте - и гораздо проще в сопровождении, нежели созданный с шаблонами (там очень сложно отделить Model от View и Controller).
Ну и Ajax снимает некоторые проблемы вроде кнопки Back ;)

March 2023

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 
Page generated 3/2/26 05:59

Expand Cut Tags

No cut tags