Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Search found 14 matches
Author Message
  Topic: Иерархические структуры в БД
IlVin

Replies: 113
Views: 231834

PostForum: SQL и PHP :: SQL   Posted: Mon Sep 10, 2007 4:00 pm   Subject: Иерархические структуры в БД
Повозившись с SQL запросами, пришел к выводу:
Нагромождать JOIN таблиц для каждого запроса выборки - накладно для мозговой деятельности.
Поэтому париться не стал и завел кучку вычисляемых полей,
которые пересчитываю монстроидальным запросом с кучей JOINов при каждом апдейте таблицы.

REPLACE ...
SELECT
... JOIN .... JOIN ....

Для меня такое рукоблудство имеет смысл, так как апдейт дерева происходит не часто, а выборок гораздо
больше апдейтов. Еще пару аргументов в пользу апдейта:
- JOIN таблицы с таблицей все-таки быстрая штука и апдейт происходит практически мгновенно.
- Вычисление избыточных полей с помощью команды REPLACE осуществляется за 1 запрос.
- Возможность использовать всевозможные методы выборок, присущие разным способам хранения дерева.

Вывод: Победила избыточность во главе с id-pid (adjacient model) модельлью хранения дерева.
  Topic: Иерархические структуры в БД
IlVin

Replies: 113
Views: 231834

PostForum: SQL и PHP :: SQL   Posted: Thu Sep 06, 2007 10:30 am   Subject: Иерархические структуры в БД
Немного поспав, я словил Дзен и вот что получилось:

SELECT
t0.title AS title,
CASE WHEN t0.pid=0 THEN 1 ELSE 0 END AS is_level0,
CASE WHEN t1.pid=0 THEN 1 ELSE 0 END AS is_level1,
CASE WHEN t2.pid=0 THEN 1 ELSE 0 END AS is_level2,
-- А здесь формируется текстовая строка сортировки, представляющая собой путь к каждому элементу от корня + индекс сортировки
CASE WHEN t0.pid=0 THEN CONCAT(LPAD(HEX(t0.sort),4,'0'),LPAD(HEX(t0.id),8,'0'),'000000000000000000000000')
WHEN t1.pid=0 THEN CONCAT(LPAD(HEX(t1.sort),4,'0'),LPAD(HEX(t1.id),8,'0'),
LPAD(HEX(t0.sort),4,'0'),LPAD(HEX(t0.id),8,'0'),'000000000000')
WHEN t2.pid=0 THEN CONCAT(LPAD(HEX(t2.sort),4,'0'),LPAD(HEX(t2.id),8,'0'),
LPAD(HEX(t1.sort),4,'0' ...
  Topic: Иерархические структуры в БД
IlVin

Replies: 113
Views: 231834

PostForum: SQL и PHP :: SQL   Posted: Wed Sep 05, 2007 9:35 pm   Subject: Иерархические структуры в БД
Здравствуйте, коллеги!
С интересом прочел данный тред форума и решил исследовать проблему.
Создал таблицу с полями:
- id -- Идентификатор
- pid -- Родитель
- sort -- Поле сортировки
- title -- Название
Ввел данные и озадачился вопросом визуализации в один запрос.
Для упрощения задачи принял, что вложенность дерева не превышает 3-х уровней.
Визуализация будет осуществляться в старом добром HTML::Template.
Для визуализации мне необходимо получить массив хешей с информацией
SELECT
CASE WHEN t2.id IS NOT NULL THEN t2.title
WHEN t1.id IS NOT NULL THEN t1.title
ELSE t0.title END AS title,
CASE WHEN t1.id IS NULL THEN 1 ELSE 0 END AS is_level0,
CASE WHEN t2.id IS NULL AND t1.id IS NOT NULL THEN 1 ELSE 0 END AS is_level1,
CASE WHEN t2.pid IS NOT NULL THEN 1 ELSE 0 END AS is_level2,
t0.id AS t0_id, -- отладка
t0.pid AS t0_pid, -- отладка
t0.sort AS t0_sort, -- отладка
t0.title AS t0_title, -- отладк ...
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Tue May 16, 2006 9:25 am   Subject: 16_Код и шаблон страницы


... XSLT вообще не трогать.



Вы оказались правы: переварить XSLT для меня оказалось довольно сложным.
Его я все-таки переварил, но он какой-то чужеродный для меня... (особый
геморрой с HTML текстом, передаваемым в XSLT в контейнере CDATA) Пошел по
пути провайдеров... В контроллер ввожу несколько параметров, определяющих
какой провайдер поставляет данные, а какой их преобразовывает в HTML.
Получилось, что можно просто считать файл и отправить его либо на
Perl-Script, либо на XSLT обработчик в зависимости от того, что из себя
представляет файл...
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Fri Aug 26, 2005 11:04 pm   Subject: 16_Код и шаблон страницы
XML/XSLT вместе мы не получим. Получим в шаблоне - XSLT, а в контроллере - XML.
Т.е. если контроллер будет внутри себя генерировать XML из базы, брать из шаблона XSLT схему, применять ее к сгенерированному XML и все это возвращать обратно.
Дизайнер загнется под XSLT, а программер напьется от XML :-)
И уже непонятно то ли дезигнера учить XSLT, то ли объясниять как работает <FOREACH>.
Думаю, дезигнер с большим оптимизмом будет учить XSLT, так как это все-таки стандарт :-)
Интересно - где надыбать самый шустрый XSLT процессор? В PHP как обстоят дела с XML/XSLT ?
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Fri Aug 26, 2005 10:59 pm   Subject: 16_Код и шаблон страницы
Mich, большое спасибо за поддержку :-)
Реализации того, что здесь написано нет (как раз занимаюсь этим), но есть прототип, похожий по принципу действия на то, что здесь написано.
Прототип.
Пришел я работать в контору, в которой сайты велись на всеми любимом фронтпейдже. Все страницы содержали и текст и оформление. Все загибались с ссылками и нечаянными модификациями оформления. Так как народ очень шустро набивал тексты во фронтпейдже, было решено оставить его в качестве ворда. Всем было сказано, что на сайте размещаются не страницы, а документы. Документы содержат логически отформатированный текст и больше ничего. И есть служебные файлы, в которых можно с помощью фронтпейджа расставить ссылки на документы.
Эти служебные файлы являются БД для меню - там содержатся гиперссылки и текст/картинка меню.
В закрытой части у меня динамический шаблон (набла 8), но реализованная мною самостоятельно (после реализации нашел куроводство).
Так вот, нужно из служебных файлов информацию оформлять ...
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Wed Aug 24, 2005 5:54 pm   Subject: 16_Код и шаблон страницы
Сложность условий может варьироваться. Например:
1) Все новости позднее заданной даты подсветить серым.
2) Поставить возле новостей из тематики такой-то галочку.
3) В зависимости оттого, кто является автором (источником) новости, вынести определенную функциональность в виде пиктограмм.

Этот? (Данная Вами ссылка ссылается на наш диалог.)
  Topic: А как насчет _полного_ симбиоза?
IlVin

Replies: 7
Views: 9546

PostForum: Разное :: Perl   Posted: Wed Aug 24, 2005 8:20 am   Subject: А как насчет _полного_ симбиоза?
Вот только не надо религиозных наездов... Сначала пересядьте за ОС, отличную от винды. Кстати, ярым поклонником АСП никогда не был и не буду, но уважаю эту технологию - в ней много плюсов и минусов.
А АСП с точки зрения внедрения в нее кода на различных языках программирования довольно продвинутая штука. Лучшее в технологих конкурентов нужно знать и перенимать.
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Tue Aug 23, 2005 7:21 pm   Subject: 16_Код и шаблон страницы
Правильно. Контроллер - это черный ящик с параметрами, которыми и управляет шаблон. Скажет шаблон как выводить автора - контроллер так и выведет (контроллер должен иметь интерфейс ко всем данным, которые вытягиваются из БД), а если шаблону нужны супер извраты, то на это есть callback функции...
Добавлю, что в одном шаблоне можно задать форму вывода имени автора, а в другом задать пустоту и автор соответственно выведен не будет...
Я просто глобализовал Ваш пример и предложил циклы перенести в контроллер, таким образом усложнив его, а оформление отдельных элементов и параметры цикла оставить в шаблоне, отказавшись таким образом от непонятного дизайнеру тега <FOREACH>
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Tue Aug 23, 2005 12:51 pm   Subject: 16_Код и шаблон страницы
Это скорее гибрид.
Шаблон говорит шаблонизатору:
- какой контроллер выбрать,
- какие данные выбрать контроллеру из БД
- как контроллеру оформить кусок HTML текста, в котором выводятся данные из БД
Эти пункты подразумевают то, что дизайнер имеет представление о контроллере и интерфейсе взаимодействия с контроллером из шаблона, а также о структуре этих данных.
Например, листинг новостей: там есть титл новости, краткое описание, ссылка. Есть состояния: новость кликнута не кликнута. И т.д. и т.п.
На мой взгляд кажется логичным на этом этапе передать контроллеру управление созданием HTML текста листинга новостей, но по шаблонам, доступным в шаблоне.
Я написал:
2. Контроллер должен вывести данные в соответствующем оформлении.
Имеются в виду данные, которые касаются только листинга новостей (как пример). О структуре всего шаблона страницы контроллер не имеет ни малейшего представления!
Инициирование вызова контроллера и определение начальных параметров, например: базового URL, о ...
  Topic: 16_Код и шаблон страницы
IlVin

Replies: 42
Views: 86703

PostForum: Наблы :: Куроводство   Posted: Mon Aug 22, 2005 6:48 pm   Subject: 16_Код и шаблон страницы
Прочитал статью о шаблонизаторе и задумался о представленном синтаксисе:
<!-- Блок новостей -->
<h2>Последние новости:</h2>
<DATASRC src="News">
<FOREACH src=News>
<li>$i-я новость: $news
</FOREACH>
<hr>

Согласен представить дизайнера не программистом, тогда зачем ему знать циклы ?

Идея состоит в следующем:
1. Контроллер знает сколько, каких и в каком логическом состоянии имеется данных
2. Контроллер должен вывести данные в соответствующем оформлении.
3. Оформление знает шаблон.
4. Контроллер должен иметь возможность выбрать из нескольких шаблонов тот, который
подходит для текущей (обрабатываемой) записи

Получается идеология а-ля XML/XSLT

Код :
<!-- Блок новостей -->
<CONTROLLER src="News">
<PATTERN>
<h2>Последние новости:</h2>
<UL>
$NEWSLIST
</UL>
</PATTERN>

<ITEM is_selected="NO">
<LI><A HREF="$ITEM_HREF"&g ...
  Topic: А как насчет _полного_ симбиоза?
IlVin

Replies: 7
Views: 9546

PostForum: Разное :: Perl   Posted: Fri Aug 19, 2005 8:28 pm   Subject: А как насчет _полного_ симбиоза?
Пора ребят на Apache2 перегонять - там можно поставить подряд 2 фильтра:
один будет ПХП парсить по сигнатурам <??>, а второй Perl по сигнатурам <%%>,
например... А вообще - геть в ASP на IIS - там это дело более продвинуто :-)
  Topic: Многопоточные программы на Perl 5.8 в Windows.
IlVin

Replies: 3
Views: 4578

PostForum: Разное :: Perl   Posted: Fri Aug 19, 2005 8:15 pm   Subject: Многопоточные программы на Perl 5.8 в Windows.
Проблема скорее всего в том, что в перле под винду
в неблокирующем режиме сокеты только передают инфу,
а вот открывать сокетное соединение не желают :-(
Вывод: я рекомендую не писать на Windows+Perl многопоточные приложения, если только это не линейный клиент-сервер, работающий строго по схеме "запрос-ответ" (и где передача данных и их прием не могут пересекаться). Это просто адская мУка. Используйте мой печальный пример, если решитесь на что-то подобное! На C++ это занятие значительно более приятно и предсказуемо, проходит в удобной обстановке (в частности, это касается отладчика в Visual Studio) и без сюрпризов.
В данном случае могу посоветовать помучаться с неблокурующими сокетами без многопотока :-)
Собственно вот моя поделка - отладочный бридж. Выводит в терминал трафик между сокетами...
http://ilvin.msk.ru/Sources/Perl/Bridge/Bridge.htm
  Topic: 43_HTML_FormPersister: новый взгляд на построение форм
IlVin

Replies: 187
Views: 334928

PostForum: Конструктор   Posted: Thu Aug 18, 2005 10:05 pm   Subject: 43_HTML_FormPersister: новый взгляд на построение форм
Дмитрий, а зачем Вы ввели новый атрибут тега INPUT - default="" ?
Во FrontPage в WYSIWIG режиме невозможно его установить :-(
Там для этих целей используется атрибут value="".

Думаю, что немного усложнив алгоритм, можно отказаться от
этого дополнительного атрибута, например: введя анализ переменных
$_GET, $_POST и атрибута value="" на определенность значений.
 
Page 1 of 1 All times are GMT + 3 Hours
XML