Думал как это назвать, но в силу своей программистской направленности ничего другого не пришло в голову, по своей сути — бесконечно вложенные друг в друга картинки. interact10ways.com/usa/information_interactive.htm
UPD: Осторожно! Затягивает и может потратить много полезного времени :-)
Рекурсивны SQL запросы являются одним из способов решения проблемы дерева и других проблем, требующих рекурсивную обработку. Они были добавлены в стандарт SQL 99. До этого они уже существовали в Oracle. Несмотря на то, что стандарт вышел так давно, реализации запоздали. Например, в MS SQL они появились только в 2005-ом сервере.
Чтобы понять рекурсию, сначала надо понять рекурсию. Возможно, поэтому рекурсивные запросы применяют так редко. Наверняка вы представляете что такое SQL-запрос, я расскажу, чем рекурсивные запросы отличаются от обычных. Тема получилась объемная, приготовьтесь к долгому чтению. В основном речь пойдет об Oracle, но упоминаются и другие СУБД.
Приглашаются к обсуждению все, имеющие опыт использования, в качестве хранилища данных, древовидных СУБД. Было бы полезно делится опытом разработки древовидных структур, описанием конкретики построения дерева индексов и алгоритмов полнотекстового поиска информации внутри хранилища данных.
Поскольку любая компьютерная система с целью оптимизации обмена производит обмен между памятью и диском в виде блоков, то атомарным элементом, хранящим данные на диске, является блок. Ни для кого не секрет, что многие СУБД (тот же ORACLE и MSSQL) фактически хранят данные в Б-деревьях. Б-дерево – это набор логически связанных блоков, выстроенных в иерархию, на каждом уровне которой определены блоки, у каждого из которых одинаковое количество уровней потомков. Описание алгоритма работы Б-дерева выходит за рамки данного блога.
Реляционный, объектный или прямой доступ обеспечивается логической моделью. Попробую предположить, что разумное использование логической модели данных, максимально приближенной к фактическому хранению – позволит более просто и быстро обрабатывать низкоуровневые данные, чем использование других логических моделей(SQL и пр.), хотя и существенно повышаются требования к уровню разработки механизмов доступа к данным. Возможно, что прямой доступ может быть представлен логическим деревом. Примером логического дерева данных – является глобал в СУБД Cache.
Приведу несколько примеров использования, из личного опыта, древовидных структур данных (глобалов).
Многие ругают xslt за его ресурсоемкость, некрасивость, негибкость, сложность…да много за что еще, наверное, его ругают. Как раз для тех, кто ругает его по последним трем пунктам я и написала данный пост.
Этот пост признан компенсировать пробел в ваших знаниях и представить xslt во всей его красоте.
Недавно передо мной встала задача написать скрипт, который бы из исходного xml получал xml, состоящий только из уникальных элементов. Об исходном файле ничего заранее не известно, абсолютно ничего.
Вслед за Ораклом со своим ‘connet by prior ‘ все остальные СУБД вводят свои реализации иерархических запросов (ИЗ). Хотелось бы рассказать широкой аудитории как это сделано в PostgreSQL.
Решатель формул сам по себе очень интересная тренировка, и в определённый момент эта тренировка может очень пригодиться в другой задаче – конструировании новой формулы, автоматической её проверке (погрешность, просчёт значений по списку координат)… И excel вам не поможет, да и неспортивно.
Обнаружил очень забавный баг у Google, не смог удержаться и делюсь им с вами.
1) Заходим на страницу Google для мобильных устройств с компьютера.
2) Нажимаем на ссылку «Карты» в меню.
3) Наслаждаемся рекурсией.
На неё ведёт и довольно популярная, но старая ссылка google.com/gmm/.
P.S. Баг виден не у всех пользователей. Возможно это из-за того что google перенаправляет вас на страницу Google for Mobile для вашего региона (добавляет в ссылку /intl/ru/ и т.д.).
P.P.S. Проверял в Chrome 4 и IE8.
В этой статье я собираюсь поведать читателям о рисовании деревьев. Нет, не тех деревьев, которые растут из почвы и в которых селятся белки. Сегодня мы будем визуализировать деревья как структуры данных. Данная статья написана по мотивам статьи Andrew Kennedy «Functional Pearls: Drawing Trees» из журнала Journal of Functional Programming, 6(3): 527-534, Cambridge University Press, May 1996 (электронная версия статьи тут), и является, в некотором роде, её переводом.
Не так давно, я написал небольшой класс для автоматического кэширования и обновления произвольных значений. Пользоваться им было очень легко — стоило лишь создать анонимный класс с перегруженным методом update, а потом, когда нужно, вызывать функции для пометки значения устаревшим и для получения самого значения:
Многие хабрапользователи наверняка знакомы с квайнами — программами, выводящими собственный исходный код. Сегодня я хочу показать как сделать интересный вариант квайна — ZIP-архив, который распаковывается сам в себя.
В этой статье я хочу поделиться опытом распознавания рукописных математических выражений. Хотя уже и существуют такие средства распознавания рукописных формул как «Панель математического ввода» mip.exe в Windows7, разнообразие подходов к решению данной проблемы не может не впечатлять. Об одном из таких подходов я и собираюсь рассказать.
Этих списков тысячи, некоторые из них — даже списки других списков. Но сейчас Википедия вышла но новую степень просветления: в оглавлении появился список списков списков. Что замечательно, он содержит не только разные списки списков, но также самого себя.
(Отдельно ведётся список списков, которые не содержат самих себя). Похоже, ещё немного — и Википедия познает нирвану.
Столь претензионным заголовком я хочу начать статью про одну из многих моделей исчисления (Computational model) — рекурсивные функции. В первой части этого поста мы разберем (в кратце, ибо подробно все расписано на Википедии) теоретическую составляющую этой модели (примитивная рекурсия), во второй же половине мы попробуем претворить данную модель в жизнь (частично) с помощью языка Scala.