All streams
Search
Write a publication
Pull to refresh
62
0

Разработчик

Send message
Вот что значит использовать для отображения дерева таблицы.
В Cache всё было бы значительно проще:

пусть данные хранятся в глобале ^Tree

Распечатаем глобал и посмотри что внутри:
zw ^Tree

^Tree(«Россия»)=1
^Tree(«Россия»,«Воронеж»)=2
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"")=3
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Главный офис»)=6
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Офис 1»)=7
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Офис 2»)=8
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Офис 2»,«Сервер 1»)=9
^Tree(«Россия»,«Лиски»)=5
^Tree(«Россия»,«Лиски»,«ЛискиПресс»)=10
^Tree(«Россия»,«Москва»)=4

Уже это дерево легко преобразовать в xml и отобразить в интерфейсе.

Предположим что этого не достаточно и нам необходимо самим рекурсивно оббегать структуру — будем использовать низкоуровневую функцию $query ($q)

результатом выполнения комманды:
s l="^Tree" f { s l=$q(@l) q:l="" s len=$ql(l) w l,! }

будет:
^Tree(«Россия»)
^Tree(«Россия»,«Воронеж»)
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"")
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Главный офис»)
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Офис 1»)
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Офис 2»)
^Tree(«Россия»,«Воронеж»,«ООО „“Рога и копыта»"",«Офис 2»,«Сервер 1»)
^Tree(«Россия»,«Лиски»)
^Tree(«Россия»,«Лиски»,«ЛискиПресс»)
^Tree(«Россия»,«Москва»)

Добавим отступы (пусть никого не пугает вложенный цикл
f i=1:1:len {w " "} ) и идентефикаторы выполним комманду:

s l="^Tree" f { s l=$q(@l) q:l="" s len=$ql(l) f i=1:1:len {w " "} w "(",$g(@l),") ",$qs(l,len),! }

получим:
 (1) Россия
  (2) Воронеж
   (3) ООО "Рога и копыта"
    (6) Главный офис
    (7) Офис 1
    (8) Офис 2
     (9) Сервер 1
  (5) Лиски
   (10) ЛискиПресс
  (4) Москва


Всё. Никаких хитростей никаких наворотов стандартные низкоуровневые функции. Стандартное дерево, в котором и хранятся все данные. Даже индексы не задействованы.
«и слишком общее описание способа хранения этой структуры» — я описал конкретный используемое мной способ хранения (конечно структура представлена сокращённо).

В Cache xml не хранится. Дело в том что любой xml — можно отобразить в глобал но не любой глобал — можно отобразить в xml. Поэтому xml — используется только как тело пост запроса (ответа). В самом Cache данные так и хранятся — в дереве.

Если действительно интересно прочитать про каше — то я опишу механизмы хранения данных и индексов используемые мной.
Технологию MapReduce использует InterSystems — разработчик СУБД Cache
Странно, что никто не обратил внимание на новый проект avtomagazine.ua Совсем молодой проект, объявлений достаточно, скорость есть, правда ребятам ещё над дизайном поработать надо, но в целом достаточно достойный сайт.
Искал акуру — показало митсубиши.

ria.ua по вашему перегружена — ребят да у вас на 5 объявлений — 7 экранов внизу заполненных непонятно чем.

Скорость можно оценивать только на большом объёме данных (сейчас вообще не видно количество объявлений) и при большой нагрузке пользователей ( ни одного счётчика я не нашёл).

Яваскрипты — сами по себе ничего не дают (на том же am.ua яваскрипты получше будут).

Для таких сайтов самое важное функционал и качественный контент (а красивости людей в последнюю очередь интересуют).

Как-то очень громко написано — про более чем скромное начинание.

Предлагаю не пиаром обмениваться — а решениями и обсуждениями человеческо-технических проблем, с которыми мы сталкиваемся при разработке таких проектов. В общем — делиться опытом.
спасибо электронный вариант уже нашёл.
то что мусор на входе не стоит заменять на дефаулт значения это ясно, а где книгу купить?
12 ...
28

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Registered
Activity