Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site

tcc-case-title

Монаху Джишину была поставлена ​​задача по созданию веб-страницы для запросов к системной таблице по инвентаризации мешков риса. Мрачно размышляя о предстоящем скучном рабочем дне, монах внезапно вдохновился:

“Я должен разработать объект уровня представления для параметров из формы поиска”, - подумал он, - “а также объект сервисного уровня для каждой строки, возвращаемой в процессе поиска. Но эти объекты должны иметь те же атрибуты, что и объект МешокРиса, который сейчас используется для создания новых строк таблицы. Не могу ли я просто переиспользовать объект уровня базы данных для обеих целей?”

С растущим волнением он подумал: “Если бы объект уровня базы данных был бы аннотирован соответствующим образом, я бы мог разработать фреймворк, получающий форму ввода данных, проверяющий её, преобразующий в SQL, делающий запрос в базу данных и предсталяющий пользователю результаты поиска в табличном формате... всё это потребует самых минимальных усилий со стороны пользователя!”

Так, в течение следующих нескольких дней монах счастливо разрабатывал фреймворк, используя страницу поиска МешокРиса в качестве доказательства правильности концепции.

- - -

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

После того, как монах побежал выполнять задание, к Банзену подошла монахиня, стоявшая неподалеку.

“Учитель”, - спросила монахиня, - “Объект Воин содержит единственное значение состояния. Если пользовательский запрос будет представлен одним объектом Воин, то как мы сможем запросить всех воинов, состояние которых либо пропал без вести, либо в отставке, либо мёртв?”

“Никак”, - сказал Банзен.

“Кроме того”, - продолжила монахиня, - “Объект Воин содержит только информацию, хранящуюся в таблице Воин. Как же мы сможем найти воинов по типу оружия, которое они они используют, или по названию полка, в котором они служили, ведь это требует присоединения дочерних таблиц?”

“Никак”, - сказал Банзен.

Учитель взял из банки, стоявшей на его столе, небольшой тёмный кусок и передал его озадаченной монахине. “Жил когда-то монах, который устал от риса. Однажды он наткнулся на искусство создания куро сато - чёрных леденцов. Каждый день в течение многих лет он грыз кусок за куском, постепенно становясь дряблым, бледным и с дырявыми зубами. В чём заключается ошибка его учителя?”

“Не смог запретить конфеты”, - сказала монахиня.

Банзен покачал головой и толкнул тяжелую банку через стол.

“Съешь их до завтрашнего вечера”, - приказал Банзен, - “и тогда поймёшь суть наказания Джишина”.