Pull to refresh
4
0
Send message

Дерево отрезков

Reading time21 min
Views2.4K

Всем привет. В этой статье я расскажу про дерево отрезков. Очень мощной структуры данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика и разреженные таблицы.

Читать далее
Total votes 10: ↑11 and ↓-1+12
Comments5

Thinkpad T480 — максимальное улучшение ноутбука, подробный гайд по замене/установке компонентов

Reading time5 min
Views35K

Thinkpad T480 - максимальное улучшение ноутбука, подробный гайд по замене/установке компонентов (ОЗУ, охлаждение, SSD, аккумуляторы и т. д.).

Читать далее
Total votes 39: ↑37 and ↓2+35
Comments101

Алгоритм расчёта расстояния между строками

Level of difficultyMedium
Reading time3 min
Views6.1K

По работе стояла задача оптимизации поиска по адресам (улицы, дома и объекты). Главный критерий - нахождение адреса, если написано с ошибками или не дописан он в полной мере. Bert’ы, косинусные расстояния эмбеддингов и т.д. не подходили, так как они заточены под смысловой поиск, а в адресах смысла нет. TF-IDF c лемматизацией тоже не очень подходил для этой задачи, результаты были плохие.

Для реализации начал использовать расстояние Дамерау-Левенштейна, и в последствие, развил это до собственного алгоритма, который находит расстояние между двумя строками.

Цель данного поста описание только алгоритма.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments17

Преобразование Уолша-Адамара

Level of difficultyHard
Reading time11 min
Views12K

На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A; найти максимальное количество его подмассивов, xor элементов которых будет одинаковым. Сам этот xor тоже нужно найти.

Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.

Читать далее
Total votes 63: ↑63 and ↓0+63
Comments5

Практическое руководство по Rust. Бонус

Level of difficultyMedium
Reading time34 min
Views6.7K



Hello world!


Представляю вашему вниманию бонусную часть практического руководства по Rust.



Другой формат, который может показаться вам более удобным.


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments12

Осваиваем кросс-компиляцию с помощью Clang и LLVM

Reading time21 min
Views20K

Каждый, кто когда-либо пробовал собрать программу на C/C++ через кросс-компиляцию знает, насколько болезненным может быть этот процесс. Главными причинами столь печального положения вещей являются недружелюбность систем сборки при конфигурации кросс-компиляции, а также запутанность процесса настройки набора утилит (тулчейна).


Одним из основных виновников этих проблем, по моему опыту, является тулчейн GNU — древний мамонт, на котором много десятилетий строится весь мир POSIX. Подобно многим компиляторам былых времён, семейство GCC и binutils никогда не ориентировалось на поддержку множества различных целей сборки в одной установке, и единственным способом хоть как-то добиться желаемого была настройка полной кросс-билд-системы для каждой целевой платформы на каждом хосте.

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments8

VS Code, python, контейнеры — как обуздать эту триаду и разрабатывать внутри контейнера

Level of difficultyMedium
Reading time16 min
Views35K

Как пользоваться VS Code в полную силу


image


Это небольшой туториал о настройке VS Code для работы с python. Здесь вы не увидите каких-то божественных откровений — тут будет просто мой опыт о том, как сделать свою работу/хобби немного комфортнее и почему я пришел именно к такой конфигурации.

Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments18

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?

Level of difficultyMedium
Reading time13 min
Views13K
image


Моддинг-сцена с разработкой и портированием кастомных прошивок для Android-устройств существует вот уже более 10 лет. В основном, энтузиасты пытаются проапгрейдить свои устройства путем портирования более свежих версий Android, чем предлагает производитель девайса. Чего уж говорить, если Galaxy S III, которому уже 12 лет стукнуло, получил неофициальный апгрейд до Android 14. Порой мне в голову приходят различные, весьма странные моддерские мысли: например, почему бы не портировать на старенький смартфон… ещё более старую версию Android, дабы посмотреть «что будет». Казалось бы «портировал и портировал», но в процессе работы я столкнулся с множеством интересных нюансов и особенностей работы Android, о которых хотел бы рассказать и вам — моим читателям! Сегодняшняя статья будет в классическом «научпоп»-стиле без кода, зато с подробными объяснениями одной из техник портирования Android-прошивок путем патчинга скриптов для конфигурации системы и подмены Board-specific библиотек, дабы система «увидела» всё необходимое железо! Интересно? Тогда жду вас под катом!
Читать дальше →
Total votes 85: ↑84 and ↓1+83
Comments32

Есть ли жизнь в виртуалке на ПК?

Level of difficultyEasy
Reading time9 min
Views11K
image
Виртуализация и работа в виртуальных машинах (ВМ) прочно входят в нашу жизнь. Кто-то таким образом тестирует программное обеспечение (ПО), кто-то реализует рабочие места, а кто-то организует работу сервисов. Неизменно во всем этом деле только то, что программным образом ресурсы ПК/ноутбука делятся на несколько частей, пропорции которых задаете Вы или человек, который его администрирует. Однако можно ли в ВМ запускать любое ПО без ограничений и может ли она быть, как и ПК, МУЛЬТИМЕДИЙНОЙ? Давайте разбираться.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments34

MacOS Monterey на Linux — быстро и просто?

Level of difficultyEasy
Reading time3 min
Views42K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →
Total votes 83: ↑79 and ↓4+75
Comments67

Обратная польская запись

Reading time4 min
Views253K
Два плюс два, умножить на два?

Не знаю как вы, но я в школе долго мучился, пытаясь разобраться с приоритетом операций и скобками. Потом, как и каждый начинающий программист, я мучился с приоритетом операций и скобками, когда писал собственный калькулятор. А оказалось, что все эти мучения были напрасны. Ведь существует прекрасный механизм, известный, как обратная польская запись. О том, что это такое и как с этим работать я и хочу вам рассказать.
Читать дальше →
Total votes 121: ↑84 and ↓37+47
Comments73

Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++

Level of difficultyMedium
Reading time24 min
Views7.7K

Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов.

Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст.

Под катом разберемся:

как организовать работу с данными и загрузку обучающего датасета, 

как описать структуру нейронной сети, 

как использовать уже готовые алгоритмы машинного обучения из доступных библиотек и фреймворков, 

как организовать конвейер обучения сети, 

как использовать предобученные глубокие сети для решения задач. 

Читать далее
Total votes 22: ↑21 and ↓1+20
Comments15

Как работает физика в играх

Level of difficultyMedium
Reading time17 min
Views16K

В мире видеоигр игровая физика играет важную роль, определяя реалистичность и взаимодействие игрового мира с игроком. Что же происходит под капотом? Какие алгоритмы и подходы используются в современных движках? И что же значит «застрять в текстурах»? (спойлер: чушь полнейшая)

В этой статье мы рассмотрим основные принципы и технологии, лежащие в основе работы физических движков, а также предоставим советы по ее оптимизации для улучшения производительности игрового движка.

Читать далее
Total votes 74: ↑74 and ↓0+74
Comments36

learnopengl. Урок 1.1 — OpenGL

Reading time7 min
Views323K
Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

Также я встал на распутье: либо я опишу все основы вроде создания окна и контекста в одной статье, чтобы не плодить статьи, но в таком случае такую огромную статью не всякий осилит; либо я также как и раньше буду переводить, опираясь на иерархию оригинала. Я решил выбрать второй вариант.

На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments9

Мощность статистических тестов на единичный корень

Reading time5 min
Views4.6K
Цель данной статьи — поделиться результатами сравнительного исследования мощности статистических тестов на единичные корни Дики-Фуллера (ADF) и Квятковского, Филлипса, Шмидта и Шина (KPSS): в случае около-нестационарных временных рядов тест ADF часто не способен отклонить нулевую гипотезу нестационарности. Это означает, что у теста ADF высокий риск ошибки второго рода, то есть вероятность не отклонить ложную нулевую гипотезу.

В данной статье мы посмотрим, насколько «мощны» тесты ADF и KPSS. Сгенерируем случайный процесс $y_t$, у которого нет единичного корня (то есть процесс является стационарным), $\phi < 1$:

$y_{t} = \phi y_{t-1} + \varepsilon_{t},$


и посмотрим, насколько различные статистические тесты распознают данный процесс как стационарный, а также на каких именно $\phi$ будет фейлиться тест ADF.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments3

Анализ временных рядов

Level of difficultyEasy
Reading time8 min
Views35K

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

Одним из наиболее важных инструментов в аналитике данных является анализ временных рядов. Временной ряд - это последовательность наблюдений за определенным параметром в разные моменты времени. Таким образом, временной ряд содержит информацию о том, как изменяется параметр со временем.

Читать далее
Total votes 18: ↑13 and ↓5+8
Comments11

Ускоряем работу python с numba

Level of difficultyEasy
Reading time7 min
Views7.4K

Привет, Хабр!

Numba — это Just-In-Time компилятор, который превращает ваш код на питоне в машинный код на лету. Это не просто мелкая оптимизация, а серьёзно ускорение.

Если вы знакомы с интерпретируемыми языками, вы знаете, что они обычно медленнее компилируемых из-за необходимости анализировать и исполнять код на лету. Но что, если бы вы могли получить лучшее из обоих миров? JIT-компиляция позволяет интерпретируемому языку, каким является Python, динамически компилировать части кода в машинный код, значительно ускоряя исполнение.

Numba использует этот подход, чтобы помочь вашему коду на питоне быть быстрей. Она анализирует вашу функцию, определяет типы данных и затем компилирует её в оптимизированный машинный код. И всё это происходит во время выполнения вашего кода.

Читать далее
Total votes 22: ↑18 and ↓4+14
Comments12

Система водяных «тёплых полов» в квартире и частном доме. Что нужно знать, чтобы не пожалеть о содеянном?

Reading time16 min
Views61K

«Тёплые полы» в квартирах- это модная тема в ремонте ещё с 1990-х.

Сейчас тема сильно развилась, так как резко увеличилось количество специалистов, желающих такие полы построить из современных материалов.

Многие владельцы квартир хотят устроить тёплые полы с подключением к общедомовым системам отопления, а управляющие компании этих ЖК такое усложнение систем не хотят разрешать.

Кто тут прав?

Читать далее
Total votes 112: ↑108 and ↓4+104
Comments334
1
23 ...

Information

Rating
3,595-th
Location
Кызыл, Тува (Тувинская Респ.), Россия
Registered
Activity