(no subject)
27/4/06 12:12PHP, MVC и другие троебуквия
Андрей рассказал о своих впечатлениях от PHP-шных фреймворков Zoop и Zephyr.
Сказал, что если по-человечески писать на PHP, а это значит - обязательно используя библиотеку Smarty, то есть отделяя представление от логики, то функции этих ферймворков становятся не нужны.
Цитирую
cousin_it: "А
разделение View и Controller в PHP нужно не для элегантности кода.
Просто если в ответ на POST-запрос отдавать страницу, то ломается
поведение кнопок Back и Refresh во всех браузерах: "Do you wish to
resend the information?"
Вчера по сети пробегала картинка, изображающая взлом локальной машины. См. ссылку в конце поста.
В 5-й версии PHP наконец-то поправили грамматику. До того, если функция возвращает объект(хэш), нельзя было написать func()->field. Можно было:
В J2EE ту же задачу решают: раньше самой популярной библиотекой была Struts, а сейчас - Tapestry. Java Server Faces (JSF) упоминается как "набирающая популярность" библиотека. Почему, она же существует уже достаточно давно? Из-за каких-то изменений в версии 1.2?
Длинные транзакции и разрешение конфликтов
Дима Харченко спросил, как решаются проблемы конкурентности в длинных транзакциях, они же бизнес-транзакции. Пример бизнес-транзакции - это клиент веб-магазина положил товар в корзинку, и пошёл собирать корзинку дальше. В это время другой покупатель положил в свою корзинку ту же самую (единственную на складе) единицу товара. Или менеджер вообще снёс товар со склада и из ассортимента.
Имеем типичный write-write конфликт.
У них в проекте вообще нарушалось правило Киркгофа: из точки выходило меньше товара, чем его завозили %)
(Кстати, shoppping cart в e-магазинах должен храниться около двух недель)
Я пересказал фаулеровский подход из "Корпоративных систем", когда все длинные транзакии реализуются в сервере приложений бизнес-объектами. Какое-то количество общей "транзакционной" логики реализовать придётся, но небольшое и достаточно специфическое. Почти наверняка уровни изоляции писать НЕ придётся %)
При этом состояние бизнес-объектов сервера приложения можно хранить и не в нём самом, а опять в БД - все корзинки, остатки товаров и т.п.
Ещё Димина команда рассматривала вариант - ввести тернарную (троичную) логику наличия товара. Не "есть"-"нет", а "есть"-"нет"-"может быть". Правда, это тоже нужно писать руками, причём много. Так, вместо простого оператора сравнения количества товара на складе с количеством заказанного покупателем (<=) придётся делать обработку троичного значения.
Тут же всплыли версии значений булевской переменной: "Нет, не сейчас", "Нет, и никогда не говори мне об этом" и "У меня болит голова".
Туда же - Вова Мутель упомянул индийскую школу логики с 5ю значениями: "Да", "Нет", "Ни да ни нет", "И да и нет" и "Ни один из перечисленных вариантов".
3-значная логика есть в Boost. Приколитесь:
Оффтопики
Вспоминали, что такое парсек.Не вспомнили %) Вова вспимнил.
О XP Вова сказал, что "нет сильнее той фаланги, в которой воины любят друг друга" (Ксенофонт).
Надолго занесло в разговор о Форексе.
Придумали, вслед за фотопринтером и принтером на CD, принтер для пиццы и профессию "верстальщик пиццы". Страшная картинка тут.
Андрей рассказал о своих впечатлениях от PHP-шных фреймворков Zoop и Zephyr.
Сказал, что если по-человечески писать на PHP, а это значит - обязательно используя библиотеку Smarty, то есть отделяя представление от логики, то функции этих ферймворков становятся не нужны.
Цитирую
Вчера по сети пробегала картинка, изображающая взлом локальной машины. См. ссылку в конце поста.
В 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, принтер для пиццы и профессию "верстальщик пиццы". Страшная картинка тут.
Tags:
(no subject)
27/4/06 04:03 (UTC)(no subject)
27/4/06 04:34 (UTC)много - потому что Zend слишком долго морозится и не может передрать рельсу )
+ Not Invented Here, конечно =)
(no subject)
27/4/06 04:44 (UTC)А в чём они не могут передрать рельсу (я всё ещё не знаю ни того ни другого 8((() ?
(no subject)
27/4/06 05:19 (UTC)Zend - официальная контора, которая продвигает php.
чтобы покончить с творящимся бардаком (у каждого свой фреймворк), они начали делать движок, который должен стать стандартом.
но как-то странно начали. начали с непонятного набора функций(!), класса для чтения rss и прочей фигни (