Как мы используем LLVM для ускорения формирования отчётов
Для бизнес-приложений очень важна возможность быстро сформировать нужный отчёт. Для этого, в частности, важно быстро получить результат запроса (часто – очень сложного запроса) к СУБД. Что не всегда просто, потому что с этой СУБД работают на чтение и запись тысячи (а иногда - десятки тысяч) пользователей.
Чтобы не нагружать рабочую СУБД запросами для отчетов мы разработали механизм копий баз данных, копирующий данные (все или их часть) из рабочей БД в отдельную БД для отчетности. Пользователи могут строить отчеты на «отчетной» БД, быстрее получая результат и не нагружая рабочую базу.
Для дальнейшего ускорения формирования отчетности мы разработали Дата акселератор — собственную SQL-совместимую in-memory базу данных, ориентированную на максимальную производительность в задачах OLAP. Дата акселератор может использоваться в качестве «отчетной БД» и позволяет существенно (иногда – на порядки) ускорить формирование отчетов.
https://habr.com/ru/companies/1c/articles/645365/
Алгоритмы и Структуры данных
Для бизнес-приложений очень важна возможность быстро сформировать нужный отчёт. Для этого, в частности, важно быстро получить результат запроса (часто – очень сложного запроса) к СУБД. Что не всегда просто, потому что с этой СУБД работают на чтение и запись тысячи (а иногда - десятки тысяч) пользователей.
Чтобы не нагружать рабочую СУБД запросами для отчетов мы разработали механизм копий баз данных, копирующий данные (все или их часть) из рабочей БД в отдельную БД для отчетности. Пользователи могут строить отчеты на «отчетной» БД, быстрее получая результат и не нагружая рабочую базу.
Для дальнейшего ускорения формирования отчетности мы разработали Дата акселератор — собственную SQL-совместимую in-memory базу данных, ориентированную на максимальную производительность в задачах OLAP. Дата акселератор может использоваться в качестве «отчетной БД» и позволяет существенно (иногда – на порядки) ускорить формирование отчетов.
https://habr.com/ru/companies/1c/articles/645365/
Алгоритмы и Структуры данных
Хабр
Как мы используем LLVM для ускорения формирования отчётов
Для бизнес-приложений очень важна возможность быстро сформировать нужный отчёт. Для этого, в частности, важно быстро получить результат запроса (часто – очень сложного запроса) к СУБД. Что не всегда...
❤1
k-means in Clickhouse
Алгоритм k-means хорошо известен и применяется когда надо быстро разделить массив данных на группы или т.н. "кластеры". Предполагается, что каждый элемент данных имеет набор численных метрик, и мы можем говорить как о позиции точки в некотором многомерном пространстве, так и о их взаимной близости.
k-means относится к категории EM-алогоритмов (Expectanion-Maximization), где мы попеременно определяем насколько правильно текущее разбиение точек на кластеры, а затем немного его улучшаем.
Этот достаточно простой алгоритм, был сформулирован ещё в 1950-х, и с тех пор реализован на самых разных языках программирования. Есть реализации для MySQL и Postgress, и даже для Excel.
https://habr.com/ru/articles/645291/
Алгоритмы и Структуры данных
Алгоритм k-means хорошо известен и применяется когда надо быстро разделить массив данных на группы или т.н. "кластеры". Предполагается, что каждый элемент данных имеет набор численных метрик, и мы можем говорить как о позиции точки в некотором многомерном пространстве, так и о их взаимной близости.
k-means относится к категории EM-алогоритмов (Expectanion-Maximization), где мы попеременно определяем насколько правильно текущее разбиение точек на кластеры, а затем немного его улучшаем.
Этот достаточно простой алгоритм, был сформулирован ещё в 1950-х, и с тех пор реализован на самых разных языках программирования. Есть реализации для MySQL и Postgress, и даже для Excel.
https://habr.com/ru/articles/645291/
Алгоритмы и Структуры данных
Хабр
k-means in Clickhouse
Алгоритм k-means хорошо известен и применяется когда надо быстро разделить массив данных на группы или т.н. "кластеры". Предполагается, что каждый элемент данных имеет набор численных метрик, и мы...
Разделяй и Властвуй. Разбор задач
Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск).
В этой статье мы рассмотрим два примера задач с пояснениями и кодом, в которых будет использоваться этот подход.
https://habr.com/ru/companies/otus/articles/599309/
Алгоритмы и Структуры данных
Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск).
В этой статье мы рассмотрим два примера задач с пояснениями и кодом, в которых будет использоваться этот подход.
https://habr.com/ru/companies/otus/articles/599309/
Алгоритмы и Структуры данных
Хабр
Разделяй и Властвуй. Разбор задач
Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход...
ИИ-поиск в 2ГИС: как учим нейросети понимать настроение, фото и смыслы
Поиск — одна из ключевых функций в 2ГИС. Он помогает миллионам пользователей каждый день находить нужные места в городе. Долгое время мы опирались на классические методы: морфологию, справочник организаций, геопозицию и популярность объектов. Это позволяло покрывать множество сценариев, но со временем стало понятно — этого недостаточно.
Пользователи хотят искать так, как думают: по настроению, по смыслу или вообще без слов — по фотографии блюда или интерьера. Мы решили переосмыслить подход к поиску. В этой статье рассказываем, как мы решали три задачи:
https://habr.com/ru/companies/2gis/articles/951008/
Алгоритмы и Структуры данных
Поиск — одна из ключевых функций в 2ГИС. Он помогает миллионам пользователей каждый день находить нужные места в городе. Долгое время мы опирались на классические методы: морфологию, справочник организаций, геопозицию и популярность объектов. Это позволяло покрывать множество сценариев, но со временем стало понятно — этого недостаточно.
Пользователи хотят искать так, как думают: по настроению, по смыслу или вообще без слов — по фотографии блюда или интерьера. Мы решили переосмыслить подход к поиску. В этой статье рассказываем, как мы решали три задачи:
https://habr.com/ru/companies/2gis/articles/951008/
Алгоритмы и Структуры данных
Хабр
ИИ-поиск в 2ГИС: как учим нейросети понимать настроение, фото и смыслы
Поиск — одна из ключевых функций в 2ГИС. Он помогает миллионам пользователей каждый день находить нужные места в городе. Долгое время мы опирались на классические методы: морфологию, справочник...
Музыка и математика: как аккорды вдохновляют архитектуру алгоритмов
Эта статья — эксперимент на стыке музыки, математики и программирования. Мы попробуем взглянуть на аккорды не как на набор звуков, а как на архитектурные паттерны. Я покажу, как гармонические последовательности могут подсказать нам структуру алгоритмов, приведу примеры кода и проведу параллели между миром нот и миром вычислений.
https://habr.com/ru/articles/951718/
Алгоритмы и Структуры данных
Эта статья — эксперимент на стыке музыки, математики и программирования. Мы попробуем взглянуть на аккорды не как на набор звуков, а как на архитектурные паттерны. Я покажу, как гармонические последовательности могут подсказать нам структуру алгоритмов, приведу примеры кода и проведу параллели между миром нот и миром вычислений.
https://habr.com/ru/articles/951718/
Алгоритмы и Структуры данных
Как JPEG стал стандартом изображений в интернете
JPEG — формат-динозавр. Ему уже за тридцать, но он по-прежнему живее всех живых: даже в 2025 году изображения в JPEG встречаются повсюду.
В конце 80-х инженерам нужно было как-то справляться с растущими размерами файлов. Интернет был медленным, а фотографии — всё тяжелее. Тогда и придумали решение: сжатие с потерями, основанное на дискретном косинусном преобразовании (DCT). Если по-простому, DCT — это способ выкинуть из картинки то, чего наш глаз почти не заметит, и оставить главное. В итоге получаем файл в разы меньше, а картинка всё ещё выглядит прилично.
Почему именно этот подход победил конкурентов, кто его протолкнул и как JPEG стал «языком» интернета для изображений — обо всём этом дальше.
https://habr.com/ru/companies/first/articles/951960/
Алгоритмы и Структуры данных
JPEG — формат-динозавр. Ему уже за тридцать, но он по-прежнему живее всех живых: даже в 2025 году изображения в JPEG встречаются повсюду.
В конце 80-х инженерам нужно было как-то справляться с растущими размерами файлов. Интернет был медленным, а фотографии — всё тяжелее. Тогда и придумали решение: сжатие с потерями, основанное на дискретном косинусном преобразовании (DCT). Если по-простому, DCT — это способ выкинуть из картинки то, чего наш глаз почти не заметит, и оставить главное. В итоге получаем файл в разы меньше, а картинка всё ещё выглядит прилично.
Почему именно этот подход победил конкурентов, кто его протолкнул и как JPEG стал «языком» интернета для изображений — обо всём этом дальше.
https://habr.com/ru/companies/first/articles/951960/
Алгоритмы и Структуры данных
Хабр
Как JPEG стал стандартом изображений в интернете
JPEG — формат-динозавр. Ему уже за тридцать, но он по-прежнему живее всех живых: даже в 2025 году изображения в JPEG встречаются повсюду. В конце 80-х инженерам нужно было как-то справляться с...
👍1
Алгоритмы, базы и порядок: практическая подборка книг для разработчиков
Алгоритмы, базы данных и качество данных — три темы, без которых сегодня не обходится ни один проект. От того, как разработчик обращается с ними, зависит не только скорость работы приложений, но и то, насколько вообще можно доверять системе. Если алгоритм выбран неправильно — система будет тормозить; если база построена на «костылях» — она станет источником ошибок; если данные не проверять на качество — отчеты превратятся в хаос.
Чтобы помочь разобраться в этом, команда Read IT Club собрала подборку из трех книг, которые проверили рецензенты клуба — эксперты из ведущих технологических компаний. В них нет академической скуки, зато есть практические советы: как выбрать правильный алгоритм, не угробить архитектуру базы и научиться бороться с «грязными» данными. Каждая из них решает свою часть головоломки, но вместе они дают цельную картину того, как работать с данными и кодом надежно, эффективно и без лишних драм.
https://habr.com/ru/companies/croc/articles/952010/
Алгоритмы и Структуры данных
Алгоритмы, базы данных и качество данных — три темы, без которых сегодня не обходится ни один проект. От того, как разработчик обращается с ними, зависит не только скорость работы приложений, но и то, насколько вообще можно доверять системе. Если алгоритм выбран неправильно — система будет тормозить; если база построена на «костылях» — она станет источником ошибок; если данные не проверять на качество — отчеты превратятся в хаос.
Чтобы помочь разобраться в этом, команда Read IT Club собрала подборку из трех книг, которые проверили рецензенты клуба — эксперты из ведущих технологических компаний. В них нет академической скуки, зато есть практические советы: как выбрать правильный алгоритм, не угробить архитектуру базы и научиться бороться с «грязными» данными. Каждая из них решает свою часть головоломки, но вместе они дают цельную картину того, как работать с данными и кодом надежно, эффективно и без лишних драм.
https://habr.com/ru/companies/croc/articles/952010/
Алгоритмы и Структуры данных
Хабр
Алгоритмы, базы и порядок: практическая подборка книг для разработчиков
Алгоритмы, базы данных и качество данных — три темы, без которых сегодня не обходится ни один проект. От того, как разработчик обращается с ними, зависит не только скорость работы приложений, но и то,...
Хватит писать «чистый» код. Пора писать понятный код
Да, это очередная статья по чистому коду. Но по разным источникам, соотношение времени, затрачиваемого на чтение и написание кода, может достигать 7 к 1 и даже больше. Когда вы исправляете ошибку, добавляете новую функциональность или проводите рефакторинг, вы сначала погружаетесь в логику, написанную другими людьми (или вами же, но несколько месяцев назад). Именно поэтому читаемость кода становится более важным фактором, чем скорость его первоначального написания. Нечитаемый код - это технический долг, который замедляет всю команду и увеличивает стоимость разработки в долгосрочной перспективе.
https://habr.com/ru/articles/952300/
Алгоритмы и Структуры данных
Да, это очередная статья по чистому коду. Но по разным источникам, соотношение времени, затрачиваемого на чтение и написание кода, может достигать 7 к 1 и даже больше. Когда вы исправляете ошибку, добавляете новую функциональность или проводите рефакторинг, вы сначала погружаетесь в логику, написанную другими людьми (или вами же, но несколько месяцев назад). Именно поэтому читаемость кода становится более важным фактором, чем скорость его первоначального написания. Нечитаемый код - это технический долг, который замедляет всю команду и увеличивает стоимость разработки в долгосрочной перспективе.
https://habr.com/ru/articles/952300/
Алгоритмы и Структуры данных
Хабр
Хватит писать «чистый» код. Пора писать понятный код
Да, это очередная статья по чистому коду. Но по разным источникам , соотношение времени, затрачиваемого на чтение и написание кода, может достигать 7 к 1 и даже больше. Когда вы исправляете ошибку,...
Двадцать вопросов, которые помогают разработать алгоритм
Как разработать алгоритм, решающий сложную задачу? Многие считают, что для этого нужно «испытать озарение», что процесс этот не вполне рационален и зависит от творческой силы или таланта.
На самом деле решение любой задачи сводится к сбору информации о наблюдаемом объекте. Причем этот принцип применим как для решения самых сложных научно-исследовательских задач, так и для решения прикладных задач. Работа изобретателя напоминает не столько работу волшебника, сколько путешествие первооткрывателя по неизведанной территории. Главное качество хорошего изобретателя – умение собирать информацию.
Если вы хотите решить сложную задачу, собирайте информацию в самых разных направлениях. Ответив на следующие 20 вопросов, вы легко выстроите план работы над задачей.
https://habr.com/ru/articles/113597/
Алгоритмы и Структуры данных
Как разработать алгоритм, решающий сложную задачу? Многие считают, что для этого нужно «испытать озарение», что процесс этот не вполне рационален и зависит от творческой силы или таланта.
На самом деле решение любой задачи сводится к сбору информации о наблюдаемом объекте. Причем этот принцип применим как для решения самых сложных научно-исследовательских задач, так и для решения прикладных задач. Работа изобретателя напоминает не столько работу волшебника, сколько путешествие первооткрывателя по неизведанной территории. Главное качество хорошего изобретателя – умение собирать информацию.
Если вы хотите решить сложную задачу, собирайте информацию в самых разных направлениях. Ответив на следующие 20 вопросов, вы легко выстроите план работы над задачей.
https://habr.com/ru/articles/113597/
Алгоритмы и Структуры данных
Хабр
Двадцать вопросов, которые помогают разработать алгоритм
Как разработать алгоритм, решающий сложную задачу? Многие считают, что для этого нужно «испытать озарение», что процесс этот не вполне рационален и зависит от творческой силы или таланта. На самом...
Бэктестер для торговых стратегий на GPU со скоростью просчёта 150 тыс стратегий за 1 секунду
Меня зовут Андрей Счастливый. Пишу на Python. Месяц назад разбираясь с одним пакетом для бэктестинга торговых стратегий на C был очень разочарован в низкой скорости. А ведь в пакете для бэктестинга самое главное скорость и вообще возможность массово пакетами тестировать торговые стратегии. Решил написать на Python свой бэктестер с GPU.
За месяц написал пакет и вот ближе к делу, хочу рассказать о нём. Тянуть не буду сразу в лоб, цифры в факты.
WarpTrade - высокопроизводительный GPU-бэктестинг торговых стратегий, написанный на Python с использованием Taichi. Проект построен на модульной архитектуре с универсальным движком, способным запускать любые торговые стратегии через систему регистрации ядер. В основе лежит алгоритм собственной разработки.
https://habr.com/ru/articles/952434/
Алгоритмы и Структуры данных
Меня зовут Андрей Счастливый. Пишу на Python. Месяц назад разбираясь с одним пакетом для бэктестинга торговых стратегий на C был очень разочарован в низкой скорости. А ведь в пакете для бэктестинга самое главное скорость и вообще возможность массово пакетами тестировать торговые стратегии. Решил написать на Python свой бэктестер с GPU.
За месяц написал пакет и вот ближе к делу, хочу рассказать о нём. Тянуть не буду сразу в лоб, цифры в факты.
WarpTrade - высокопроизводительный GPU-бэктестинг торговых стратегий, написанный на Python с использованием Taichi. Проект построен на модульной архитектуре с универсальным движком, способным запускать любые торговые стратегии через систему регистрации ядер. В основе лежит алгоритм собственной разработки.
https://habr.com/ru/articles/952434/
Алгоритмы и Структуры данных
Хабр
Бэктестер для торговых стратегий на GPU со скоростью просчёта 150 тыс стратегий за 1 секунду
Привет, Хабр! Меня зовут Андрей Счастливый. Пишу на Python. Месяц назад разбираясь с одним пакетом для бэктестинга торговых стратегий на C был очень разочарован в низкой скорости. А ведь в пакете для...
Обучение скрытых слоёв S–A–R перцептрона без вычисления градиентов
Аннотация. Классический перцептрон Розенблатта с архитектурой S–A–R исторически не имел устойчивого алгоритма обучения многослойных структур. В результате в современном машинном обучении доминирует метод обратного распространения ошибки (backpropagation), основанный на градиентном спуске. Несмотря на успехи, этот подход имеет фундаментальные ограничения: необходимость вычисления производных нелинейных функций и высокая вычислительная сложность. В данной работе показано, что при интерпретации работы нейросети через алгоритм ID3 (Rule Extraction) скрытый слой автоматически формирует чистые окрестности в смысле кластерного анализа — признаки группируются по классам ещё до завершения обучения. На основе этого наблюдения автором предложен новый стохастический алгоритм обучения, восходящий к идеям Розенблатта, но принципиально расширяющий их: он позволяет обучать скрытые слои перцептрона без вычисления градиентов. Таким образом, впервые решается классическая проблема обучения архитектуры S–A–R без градиентных методов. Это открывает путь к созданию принципиально новых алгоритмов обучения нейросетей с более простой и интерпретируемой динамикой.
https://habr.com/ru/articles/952532/
Алгоритмы и Структуры данных
Аннотация. Классический перцептрон Розенблатта с архитектурой S–A–R исторически не имел устойчивого алгоритма обучения многослойных структур. В результате в современном машинном обучении доминирует метод обратного распространения ошибки (backpropagation), основанный на градиентном спуске. Несмотря на успехи, этот подход имеет фундаментальные ограничения: необходимость вычисления производных нелинейных функций и высокая вычислительная сложность. В данной работе показано, что при интерпретации работы нейросети через алгоритм ID3 (Rule Extraction) скрытый слой автоматически формирует чистые окрестности в смысле кластерного анализа — признаки группируются по классам ещё до завершения обучения. На основе этого наблюдения автором предложен новый стохастический алгоритм обучения, восходящий к идеям Розенблатта, но принципиально расширяющий их: он позволяет обучать скрытые слои перцептрона без вычисления градиентов. Таким образом, впервые решается классическая проблема обучения архитектуры S–A–R без градиентных методов. Это открывает путь к созданию принципиально новых алгоритмов обучения нейросетей с более простой и интерпретируемой динамикой.
https://habr.com/ru/articles/952532/
Алгоритмы и Структуры данных
Хабр
Обучение скрытых слоёв S–A–R перцептрона без вычисления градиентов
C. Яковлев mg.sc .comp e-mail: tac1402@gmail.com Disclaimer. Это анонс, я еще работаю над научной статьей, но пока не могу найти ментора для возможности публикации в arxiv.org. Но пока...
🤯1
ESP32: Базовые алгоритмы машинного обучения
ESP32 давно зарекомендовал себя как универсальный микроконтроллер для IoT: он умеет работать с Wi-Fi и Bluetooth, управлять сенсорами и исполнительными устройствами. Но за последние годы стало ясно, что даже на таких простых устройствах можно запускать алгоритмы машинного обучения.
В этой статье рассмотрим, как на ESP32 можно реализовать три базовых алгоритма классификации — дерево решений, метод К-ближайших соседей (KNN) и полносвязную нейросеть на TensorFlow Lite.
https://habr.com/ru/articles/952518/
Алгоритмы и Структуры данных
ESP32 давно зарекомендовал себя как универсальный микроконтроллер для IoT: он умеет работать с Wi-Fi и Bluetooth, управлять сенсорами и исполнительными устройствами. Но за последние годы стало ясно, что даже на таких простых устройствах можно запускать алгоритмы машинного обучения.
В этой статье рассмотрим, как на ESP32 можно реализовать три базовых алгоритма классификации — дерево решений, метод К-ближайших соседей (KNN) и полносвязную нейросеть на TensorFlow Lite.
https://habr.com/ru/articles/952518/
Алгоритмы и Структуры данных
Хабр
ESP32: Базовые алгоритмы машинного обучения
ESP32 давно зарекомендовал себя как универсальный микроконтроллер для IoT: он умеет работать с Wi-Fi и Bluetooth, управлять сенсорами и исполнительными устройствами. Но за последние годы стало ясно,...
Нормированные пространства и рендеринг трёхмерных фрактальных множеств: ray marching, поле расстояний, базовые примеры
Как и любому ИТ‑специалисту, мне приходится сталкиваться с новыми нестандартными задачами, для решения которых нужно погрузиться в новую для себя область, взглянуть на работу под другим углом, активизировать весь свой бэкграунд, в особенности математический.
Для меня самыми интересными из таких задач всегда являются те, которые связаны с визуализацией данных. Вот один из примеров. Я работал в команде Platform V Monitor — это кроссплатформенный ИТ‑мониторинг и сервисы телеметрии, для которого нужно было визуализировать представление данных в виде ориентированного графа с большим количество (1000+) вершин и еще большим количеством рёбер.
Каждая вершина должна была иметь подпись‑название и являлась управляющим элементом интерфейса. Одним из возможных вариантов решения, было использование методов компьютерной графики, «выход в 3D». И хотя в итоге удалось решить задачу, оставаясь в 2D, трёхмерный вариант решения имел свои достоинства.
https://habr.com/ru/companies/sberbank/articles/952102/
Алгоритмы и Структуры данных
Как и любому ИТ‑специалисту, мне приходится сталкиваться с новыми нестандартными задачами, для решения которых нужно погрузиться в новую для себя область, взглянуть на работу под другим углом, активизировать весь свой бэкграунд, в особенности математический.
Для меня самыми интересными из таких задач всегда являются те, которые связаны с визуализацией данных. Вот один из примеров. Я работал в команде Platform V Monitor — это кроссплатформенный ИТ‑мониторинг и сервисы телеметрии, для которого нужно было визуализировать представление данных в виде ориентированного графа с большим количество (1000+) вершин и еще большим количеством рёбер.
Каждая вершина должна была иметь подпись‑название и являлась управляющим элементом интерфейса. Одним из возможных вариантов решения, было использование методов компьютерной графики, «выход в 3D». И хотя в итоге удалось решить задачу, оставаясь в 2D, трёхмерный вариант решения имел свои достоинства.
https://habr.com/ru/companies/sberbank/articles/952102/
Алгоритмы и Структуры данных
Хабр
Нормированные пространства и рендеринг трёхмерных фрактальных множеств: ray marching, поле расстояний, базовые примеры
Всем привет! Меня зовут Андрей Гринблат, я ИТ‑инженер в СберТехе, занимаюсь разработкой фронтенд‑интерфейсов приложений. Как и любому ИТ‑специалисту, мне приходится сталкиваться...
Зубрить сложно, понимать легко: бинарный поиск
Как правило, обучающие материалы сводятся к показу одного «правильного» решения. Такие решения можно попробовать запомнить, но они быстро забываются и не помогают по-настоящему понять алгоритм.
Меня интригует вопрос: возможно ли объяснение, которое позволит не просто заучивать формулы, а понять саму логику? И если такое объяснение существует, даст ли оно возможность решать похожие задачи — или даже помогает становиться лучшим программистом?
Сразу оговорюсь: мы не будем останавливаться на тривиальных проверках,
вроде пустого массива или некорректных параметров. Фокус статьи — на сути алгоритма.
https://habr.com/ru/articles/952810/
Алгоритмы и Структуры данных
Как правило, обучающие материалы сводятся к показу одного «правильного» решения. Такие решения можно попробовать запомнить, но они быстро забываются и не помогают по-настоящему понять алгоритм.
Меня интригует вопрос: возможно ли объяснение, которое позволит не просто заучивать формулы, а понять саму логику? И если такое объяснение существует, даст ли оно возможность решать похожие задачи — или даже помогает становиться лучшим программистом?
Сразу оговорюсь: мы не будем останавливаться на тривиальных проверках,
вроде пустого массива или некорректных параметров. Фокус статьи — на сути алгоритма.
https://habr.com/ru/articles/952810/
Алгоритмы и Структуры данных
Хабр
Зубрить сложно, понимать легко: бинарный поиск
Зачем нужна ещё одна статья про бинарный поиск? Обычно в обучающих материалах показывают одно «правильное» решение. Его можно выучить, но оно быстро забывается и не помогает понять алгоритм. Меня...
Задачи по алгоритмам: ищем непростые числа
Я не математик, но люблю решать задачи. Я люблю трудные задачи, которые не знаешь, как решать, а если и знаешь, трудно написать код верно.
Наконец, все работает. Остаются черновики, которые выбросить жалко. Выброшу лишнее с черновика и оставлю конспект, который и через годы напомнит решение.
Говорят "У человека феноменальная память - он помнит все". Он записывает. Не помните, что делали три дня назад? Ведите дневник, а не покупайте "таблетки для памяти".
https://habr.com/ru/articles/952986/
Алгоритмы и Структуры данных
Я не математик, но люблю решать задачи. Я люблю трудные задачи, которые не знаешь, как решать, а если и знаешь, трудно написать код верно.
Наконец, все работает. Остаются черновики, которые выбросить жалко. Выброшу лишнее с черновика и оставлю конспект, который и через годы напомнит решение.
Говорят "У человека феноменальная память - он помнит все". Он записывает. Не помните, что делали три дня назад? Ведите дневник, а не покупайте "таблетки для памяти".
https://habr.com/ru/articles/952986/
Алгоритмы и Структуры данных
Хабр
Задачи по алгоритмам: ищем непростые числа
Я не математик, но люблю решать задачи. Я люблю трудные задачи, которые не знаешь, как решать, а если и знаешь, трудно написать код верно. Наконец, все работает. Остаются черновики, которые выбросить...
ESP32 + LD2410: Архитектуры нейронных сетей для классификации движений
Микроконтроллеры давно перестали быть простыми устройствами для управления датчиками и исполнительными механизмами. Сегодня, благодаря библиотекам вроде TensorFlow Lite, даже компактный ESP32 способен выполнять инференс нейросетей в реальном времени. В этой статье я расскажу о серии экспериментов по классификации движений человека с помощью сверхширокополосного радарного датчика LD2410 и различных базовых архитектур машинного обучения, таких как полносвязная, свёрточная, рекуррентная нейронные сети и трансформер (механизм внимания).
Каждый из подходов я реализовал и проверил на практике. В итоге получилась серия видеоуроков и репозиториев с кодом, но здесь я соберу все в одну статью, чтобы показать эволюцию решений и сравнить их эффективность.
https://habr.com/ru/articles/952548/
Алгоритмы и Структуры данных
Микроконтроллеры давно перестали быть простыми устройствами для управления датчиками и исполнительными механизмами. Сегодня, благодаря библиотекам вроде TensorFlow Lite, даже компактный ESP32 способен выполнять инференс нейросетей в реальном времени. В этой статье я расскажу о серии экспериментов по классификации движений человека с помощью сверхширокополосного радарного датчика LD2410 и различных базовых архитектур машинного обучения, таких как полносвязная, свёрточная, рекуррентная нейронные сети и трансформер (механизм внимания).
Каждый из подходов я реализовал и проверил на практике. В итоге получилась серия видеоуроков и репозиториев с кодом, но здесь я соберу все в одну статью, чтобы показать эволюцию решений и сравнить их эффективность.
https://habr.com/ru/articles/952548/
Алгоритмы и Структуры данных
Хабр
ESP32 + LD2410: Архитектуры нейронных сетей для классификации движений
Схема подключения. Движения для классификации. Микроконтроллеры давно перестали быть простыми устройствами для управления датчиками и исполнительными механизмами. Сегодня, благодаря библиотекам вроде...
Визуализация алгоритмов стандартной библиотеки C++ (продолжение)
В стандартной библиотеке C++ много разных алгоритмов для работы с контейнерами. С помощью этих алгоритмов можно искать значения, сортировать последовательности, изменять их и делать многое другое. Среди такого большого количества алгоритмов есть довольно сложные, которые сходу не поймешь. Но если визуализировать их работу, то все становится ясно.
https://habr.com/ru/articles/763024/
Алгоритмы и Структуры данных
В стандартной библиотеке C++ много разных алгоритмов для работы с контейнерами. С помощью этих алгоритмов можно искать значения, сортировать последовательности, изменять их и делать многое другое. Среди такого большого количества алгоритмов есть довольно сложные, которые сходу не поймешь. Но если визуализировать их работу, то все становится ясно.
https://habr.com/ru/articles/763024/
Алгоритмы и Структуры данных
Хабр
Визуализация алгоритмов стандартной библиотеки C++ (продолжение)
В стандартной библиотеке C++ много разных алгоритмов для работы с контейнерами. С помощью этих алгоритмов можно искать значения, сортировать последовательности, изменять их и делать многое другое....
❤2
Как не сломать продакшен: 8 основных паттернов распределенных систем
Распределeнные системы стали основой современных высоконагруженных и отказоустойчивых приложений. Однако их разработка сопряжена сo множеством вызовов – от управления состоянием и взаимодействия сервисов до обработки отказов и масштабирования. Чтобы упростить решение этих задач, инженеры используют проверенные временем архитектурные паттерны. В этой статье мы разберeм восемь ключевых шаблонов, помогающих строить надeжные и эффективные распределенные системы.
https://proglib.io/p/kak-ne-slomat-prodakshen-8-osnovnyh-patternov-raspredelennyh-sistem-2025-02-10
Алгоритмы и Структуры данных
Распределeнные системы стали основой современных высоконагруженных и отказоустойчивых приложений. Однако их разработка сопряжена сo множеством вызовов – от управления состоянием и взаимодействия сервисов до обработки отказов и масштабирования. Чтобы упростить решение этих задач, инженеры используют проверенные временем архитектурные паттерны. В этой статье мы разберeм восемь ключевых шаблонов, помогающих строить надeжные и эффективные распределенные системы.
https://proglib.io/p/kak-ne-slomat-prodakshen-8-osnovnyh-patternov-raspredelennyh-sistem-2025-02-10
Алгоритмы и Структуры данных
Библиотека программиста
🏗️ 🔨 Как не сломать продакшен: 8 основных паттернов распределенных систем
Подробный разбор всех основных паттернов проектирования высоконагруженных распределенных систем
ИИ для рисования: раскрываем секреты нейронного переноса стиля
Раскладываем по полочками, как «думает» нейронная сеть VGG-19, когда ей прилетает задача скопировать стиль художника из вида Homo sapiens.
https://proglib.io/p/ii-dlya-risovaniya-raskryvaem-sekrety-neyronnogo-perenosa-stilya-2022-08-29
Алгоритмы и Структуры данных
Раскладываем по полочками, как «думает» нейронная сеть VGG-19, когда ей прилетает задача скопировать стиль художника из вида Homo sapiens.
https://proglib.io/p/ii-dlya-risovaniya-raskryvaem-sekrety-neyronnogo-perenosa-stilya-2022-08-29
Алгоритмы и Структуры данных
Библиотека программиста
🤖🎨 ИИ для рисования: раскрываем секреты нейронного переноса стиля
Раскладываем по полочками, как «думает» нейронная сеть VGG-19, когда ей прилетает задача скопировать стиль художника из вида Homo sapiens.
Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 2 — прямая трассировка
Если данный материал покажется Вам не актуальным, не уникальным или, более того, бессмысленным, прошу обратить Ваше внимание на то, что данная статья является лишь второй из цепочки связанного рассказа про различные аспекты трассировки лучей и рендеринг трёхмерных изображений. Я считаю необходимым, со своей стороны, подвести читателя к теме полноценно и сохраняя нить повествования.
https://habr.com/ru/articles/763894/
Алгоритмы и Структуры данных
Если данный материал покажется Вам не актуальным, не уникальным или, более того, бессмысленным, прошу обратить Ваше внимание на то, что данная статья является лишь второй из цепочки связанного рассказа про различные аспекты трассировки лучей и рендеринг трёхмерных изображений. Я считаю необходимым, со своей стороны, подвести читателя к теме полноценно и сохраняя нить повествования.
https://habr.com/ru/articles/763894/
Алгоритмы и Структуры данных
Хабр
Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 2 — прямая трассировка
Прежде всего Если данный материал покажется Вам не актуальным, не уникальным или, более того, бессмысленным, прошу обратить Ваше внимание на то, что данная статья является лишь второй из цепочки...
❤1
Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 1 — как создается изображение?
Первое, что нам нужно для создания изображения, - это двумерная поверхность (эта поверхность должна иметь некоторую площадь и не может быть точкой). С помощью этого, мы можем визуализировать изображение в виде разреза, сделанного через пирамиду, вершина которой расположена в центре нашего глаза, а высота параллельна линии нашего зрения (помните, чтобы что-то увидеть, мы должны смотреть вдоль линии, соединяющей глаз с этим объектом). Мы будем называть этот срез, упомянутый ранее, плоскостью изображения (эта плоскость изображения подписана как холст, из-за схожести с художественным холстом). Плоскость изображения - это концепция компьютерной графики, и мы будем использовать ее как двумерную поверхность для проецирования нашей трехмерной сцены. Возможно, кому-то всё это может показаться очевидным, однако, то, что мы только что описали, является одной из самых фундаментальных концепций, используемых для создания изображений на различных устройствах. Например, эквивалентом в фотографии является поверхность пленки (сенсор для цифровой камеры) или, как упоминалось ранее, холст, используемый художниками.
https://habr.com/ru/articles/763416/
Алгоритмы и Структуры данных
Первое, что нам нужно для создания изображения, - это двумерная поверхность (эта поверхность должна иметь некоторую площадь и не может быть точкой). С помощью этого, мы можем визуализировать изображение в виде разреза, сделанного через пирамиду, вершина которой расположена в центре нашего глаза, а высота параллельна линии нашего зрения (помните, чтобы что-то увидеть, мы должны смотреть вдоль линии, соединяющей глаз с этим объектом). Мы будем называть этот срез, упомянутый ранее, плоскостью изображения (эта плоскость изображения подписана как холст, из-за схожести с художественным холстом). Плоскость изображения - это концепция компьютерной графики, и мы будем использовать ее как двумерную поверхность для проецирования нашей трехмерной сцены. Возможно, кому-то всё это может показаться очевидным, однако, то, что мы только что описали, является одной из самых фундаментальных концепций, используемых для создания изображений на различных устройствах. Например, эквивалентом в фотографии является поверхность пленки (сенсор для цифровой камеры) или, как упоминалось ранее, холст, используемый художниками.
https://habr.com/ru/articles/763416/
Алгоритмы и Структуры данных
Хабр
Введение в трассировку лучей: простой метод создания 3D-изображений. Часть 1 — как создается изображение?
Как же создается изображение? Рисунок 1 : мы можем визуализировать изображение в виде разреза, сделанного через пирамиду, вершина которой расположена в центре нашего глаза и высота которой параллельна...
❤1