В этой статье я расскажу об одном полезном, но малоизвестном приеме работы с git — как можно легко создать коммит, используя дерево из другого коммита. Проще говоря, как получить нужное состояние проекта на какой-либо ветке, если это состояние уже когда-то и где-то было в репозитории раньше. Будет приведено несколько примеров того, как это позволяет элегантно решать некоторые практические задачи. И в частности я расскажу о найденном мной методе, который позволяет значительно упростить исправление множественных конфликтов при rebase. Кроме того, эта статья — отличный способ понять на практике, что из себя представляет коммит в git-е.
Рубрика «tree»
Как и зачем красть деревья в git
2018-12-20 в 6:35, admin, рубрики: commit, conflict, Git, merge, rebase, tree, Системы управления версиямиГенеалогическое древо внутри Git
2018-09-13 в 13:32, admin, рубрики: genealogy, Git, github, gitlab, tree, ненормальное программированиеПоздравляю всех с днем программиста! Желаю больше ярких "коммитов", принятых "пулл-реквестов", меньше незапланированных "мержей" и чтобы ваши ветви жизни оставались актуальными как можно дольше. В качестве идейного подарка предлагаю реализацию генеалогического древа средствами системы контроля версий Git. Ну что же… звучит как план!
Для тех, кто сразу все понял, выкладываю исходники генератора: GenealogyTreeInGit и сами генеалогические древа — мое и президентов США.
Кроме того, я реализовал простой социальный граф. Он отображает не только степень родства, но и статус отношений между потомками, отображает такие события как свадьба, развод, рождение ребенка, а также вклады в отношения тех или иных сторон.
Снова о деревьях
2018-04-30 в 13:57, admin, рубрики: explain, Materialized Path, postgresql, recursive, treeВесна — пора подумать о деревьях. Деревья в DB это один из самых острых вопросов при работе с данными. В данном топике сравним быстродействие Materialized Path и Adjacency List методов с помощью команды «explain analize».
Читать полностью »
Неисчислимое: в поисках конечного числа
2018-04-13 в 11:56, admin, рубрики: tree, Алгоритмы, Блог компании Mail.Ru Group, большие числа, Грэм, информационная безопасность, математика, уравнение, формулы, числа
Древние греки — приверженцы концепций, имеющих строгий логический смысл — всячески избегали концепции бесконечности. Действительно, какое нам дело до бесконечного ряда чисел, если ни записать, ни представить его мы не можем.
В средние века логическую строгость отбросили ради математических результатов и разработали чрезвычайно эффективные алгоритмические методы, оперирующие в вычислениях бесконечностью.
В XX в. стала отчетливо проступать другая проблема. С бесконечностью мы можем разобраться при помощи одного символа (∞), но что делать с числами, которые меньше бесконечности, но при этом невообразимо огромны?
Мы вплотную подошли к числам, едва уступающим «уроборосу», но при этом все еще имеющим теоретическое и практическое значение. Вы, вероятно, могли слышать о числе Грэма, которое является верхней границей для решения определенной проблемы в теории Рамсея. Спустя 88 лет после появления теоремы Рамсея математики готовы отбросить старые методы и пойти еще дальше.
Добро пожаловать в кроличью нору без дна.
Читать полностью »
Сравнение производительности иерархических моделей Django и PostgreSQL
2017-05-22 в 13:12, admin, рубрики: Adjacency List, django, hierarchical data, Ltree, Materialized Path, nested set, postgresql, python, tree, деревья, иерархические данные, Разработка веб-сайтов, метки: Adjacency List, hierarchical data, Materialized PathДобрый день, уважаемые читатели.
Сегодняшняя статья будет посвящена сравнению моделей работы с иерархическими данными в PostgreSQL, через Django приложение. В статья я специально не использую чистую реализацию в базе данных, т. к. меня интересует именно производительность в среде, приближенной к боевой.
Открытый курс машинного обучения. Тема 5. Композиции: бэггинг, случайный лес
2017-03-27 в 11:28, admin, рубрики: bagging, boosting, forest, mlcourse_open, ods, open data science, python, random forest, tree, Алгоритмы, Блог компании Open Data Science, математика, машинное обучениеПривет всем, кто дожил до пятой темы нашего курса!
Курс собрал уже более 1000 участников, из них первые 3 домашних задания сделали 520, 450 и 360 человек соответственно. Около 200 участников пока идут с максимальным баллом. Отток намного ниже, чем в MOOC-ах, даже несмотря на большой объем наших статей.
Данное занятие мы посвятим простым методам композиции: бэггингу и случайному лесу. Вы узнаете, как можно получить распределение среднего по генеральной совокупности, если у нас есть информация только о небольшой ее части; посмотрим, как с помощью композиции алгоритмов уменьшить дисперсию, и таким образом улучшим точность модели; разберём, что такое случайный лес, какие его параметры нужно «подкручивать» и как найти самый важный признак. Сконцентрируемся на практике, добавив «щепотку» математики.
- Первичный анализ данных с Pandas
- Визуальный анализ данных c Python
- Классификация, деревья решений и метод ближайших соседей
- Линейные модели классификации и регрессии
- Композиции: бэггинг, случайный лес
- Обучение без учителя: PCA, кластеризация, поиск аномалий
- Искусство построения и отбора признаков. Приложения в задачах обработки текста, изображений и гео-данных
Lock-free структуры данных. Concurrent maps: деревья
2015-03-17 в 5:55, admin, рубрики: c++, libcds, lock-free, map, tree, Алгоритмы, параллельное программирование, ПрограммированиеЭто последняя, на сегодняшний день, статья из цикла про внутреннее устройство конкурентных ассоциативных контейнеров. В предыдущих статьях рассматривались hash map, был построен алгоритм lock-free ordered list и контейнеры на его основе. За бортом остался один важный тип структур данных — деревья. Пришло время немного рассказать и о них.
Исследования, посвященные алгоритмам конкурентных деревьев, не требующих внешней синхронизации доступа к ним, начались довольно давно — в 70-х годах прошлого века, — и были инициированы развитием СУБД, поэтому касались в основном оптимизации страничных деревьев (B-tree и его модификации).
Развитие lock-free подхода в начале 2000-х не прошло мимо алгоритмов деревьев, но лишь недавно, в 2010-х годах, появилось множество действительно интересных работ по конкурентным деревьям. Алгоритмы деревьев довольно сложны, поэтому исследователям потребовалось время — порядка 10 лет — на их lock-free/non-blocking адаптацию. В данной статье мы рассмотрим самый простой случай — обычное бинарное дерево, даже не самобалансирующееся.
Читать полностью »
Tree — убийца JSON, XML, YAML и иже с ними
2015-01-18 в 23:03, admin, рубрики: json, NIH, tree, XML, yaml, Программирование, стандарты Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый стандарт формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML.
Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:
Больше — лучше | JSON | XML | YAML | INI | Tree |
---|---|---|---|---|---|
Человекопонятность | 3 | 1 | 4 | 5 | 5 |
Удобство редактирования | 3 | 1 | 4 | 5 | 5 |
Произвольная иерархия | 3 | 3 | 3 | 1 | 5 |
Простота реализации | 3 | 2 | 1 | 5 | 5 |
Скорость парсинга/сериализации | 3 | 1 | 1 | 5 | 5 |
Размер в сериализованном виде | 3 | 1 | 4 | 5 | 5 |
Поддержка поточной обработки | 0 | 0 | 5 | 5 | 5 |
Бинарная безопасность | 0 | 0 | 0 | 0 | 5 |
Универсальность | 4 | 3 | 3 | 1 | 5 |
Распространённость | 5 | 5 | 3 | 3 | 0 |
Поддержка редакторами | 5 | 5 | 3 | 5 | 1 |
Поддержка языками программирования | 5 | 5 | 3 | 5 | 1 |
Custom Tree v2 jQuery plugin + draggable
2013-08-02 в 11:37, admin, рубрики: javascript, jquery, jquery plugins, plugin, plugins, tree, treecontrol, treeview, Веб-разработка, метки: javascript, jquery plugins, plugin, plugins, tree, treecontrol, treeview На днях решил вернуться к перепиливанию одного своего старенького Open Source проекта.
В процессе обдумывания решил, что предыдущий компонент с деревом в его нынешнем виде меня больше не устраивает.
Хотелось чего-нибудь более Event Driven, с понятным и простым API.
Сейчас решил, что оно уже готово для Public.
Берите, пользуйтесь.
Или посмотрите на example в рамках GH-pages.
Под катом краткий перевод краткой документации по API.
UPD: в комментариях мой код для организации перетаскивания.
Читать полностью »
Knockoutjs. «Растим» дерево
2013-01-21 в 7:25, admin, рубрики: javascript, knockout, knockoutjs, mvvm, tree, treeview, Веб-разработка, метки: javascript, knockout, knockoutjs, mvvm, tree, treeview
Судя по частоте появления статей, KnockoutJS набирает популярность на Хабре. Внесу и я свою лепту. Хочу осветить тему нестандартных для HTML элементов управления и «дерева» в частности. Под деревом здесь понимается аналог элемента управления TreeView. Статья подразумевает, что читатель уже знаком с KnockoutJS на базовом уровне. Публикация может рассматриваться, как пособие для изучения KnockoutJS. С другой стороны, надеюсь, и опытные пользователи KnockoutJS смогут почерпнуть для себя что-то новое.
Читать полностью »