Как стать автором
Обновить
9
0
Антон Вдовиченко @avdx

Программист

Отправить сообщение

Установка Windows через CMD

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров14K

Приходилось ли вам устанавливать современные версии Windows? Если да, то вам точно знаком установщик, каждый этап которого прогружается несколько секунд, и который яростно навязывает вам использование аккаунта Microsoft, с каждым обновлением делая использование локального аккаунта всё труднее и труднее.

Но существует альтернативный способ установить Windows — более быстрый, не требующий подключения к интернету и не навязывающий никаких сервисов — ручная установка с использованием CMD.

Читать далее

МРТ для DataScience. Часть 1

Время на прочтение8 мин
Количество просмотров1.5K

За полтора года работы с сегментацией МРТ-данных у меня накопилось множество прочитанных статей, а также своих заметок, мыслей и почеркушек. После их сборки получился вполне объемный материал, который я буду здесь постепенно выкладывать. Планирую по вторникам и четвергам. Сегодня - содержание всего цикла, список литературы, на который я ссылаюсь по ходу и первый обзорный кусок.

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

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

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

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

Читать далее

Автоматизированное 3D-сегментирование зубов: Современные методы, вызовы и перспективы

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров717

1. Обзор проблемы

Трёхмерная стоматологическая визуализация, в особенности конусно-лучевая компьютерная томография (КБКТ), стала ключевым инструментом в современной стоматологии для диагностики и планирования лечения (The Application of Artificial Intelligence for Tooth Segmentation in CBCT Images: A Systematic Review). КБКТ обеспечивает получение высококачественной 3D-информации о зубах и окружающих костных структурах при меньшей дозе облучения по сравнению с медицинской КТ (The Application of Artificial Intelligence for Tooth Segmentation in CBCT Images: A Systematic Review). Это богатство информации позволяет проводить точное ортодонтическое планирование, моделировать ортогнатическую хирургию, планировать установку зубных имплантатов и выявлять патологические процессы (The Application of Artificial Intelligence for Tooth Segmentation in CBCT Images: A Systematic Review) (The Application of Artificial Intelligence for Tooth Segmentation in CBCT Images: A Systematic Review). Автоматизированная обработка 3D-сканов зубов (детекция, сегментация и классификация) имеет огромное значение – она может ускорить клинические процессы, повысить согласованность диагностики и облегчить создание 3D-печатных моделей или CAD/CAM-моделей для протезирования и хирургических навигационных систем. Например, точная сегментация зубов позволяет получить 3D-модели, которые помогают при навигации имплантатов и автотрансплантации зубов, повышая шансы на успех (The Application of Artificial Intelligence for Tooth Segmentation in CBCT Images: A Systematic Review). Кроме того, автоматизированный анализ может помочь в выявлении ретенированных или отсутствующих зубов и способствовать проведению виртуальных процедур (например, изготовлению кап, коррекции окклюзии), что подчеркивает практическую ценность цифровой стоматологии.

Читать далее

5 способов нарисовать обводку

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров7.2K

Рендеринг обводки (контуров) — это техника, часто используемая в играх или из эстетических, или из геймплейных соображений. Например, в игре Sable контуры применяются для создания стиля, напоминающего комиксы, а в The Last of Us контуры используются для выделения врагов, когда игрок переходит в режим скрытности.

В этом посте мы расскажем о пяти способах рендеринга контура вокруг объекта.

Читать далее

Безопасная лазерная коррекция = SMILE Pro на VISUMAX 800

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров7K

Революция в лазерной коррекции зрения: VISUMAX 800 от Carl Zeiss с технологией SMILE Pro устанавливает новые стандарты безопасности. Представьте операцию, которая длится всего 8 секунд, обеспечивает минимальное воздействие на глаз и позволяет забыть о проблемах со зрением. Это не фантастика, а реальность, доступная уже сегодня. Давайте разберемся, почему SMILE Pro на VISUMAX 800 считается одной из самых безопасных технологий лазерной коррекции зрения.

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

Читать далее

Рендеринг текста без текстур

Время на прочтение9 мин
Количество просмотров5.2K

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

Так делает imgui, равно как и все, кто использует stb_truetype. Сам процесс приятно напоминает процесс наборного производства на физических станках.

Причудливо, правильно, но в то же время напряжно.

Если нам нужно просто вывести какое‑то сообщение для дебага? Нет ли какого‑либо более простого метода?

В данной статье я опишу метод бестекстурной отрисовки дебаг‑текста. Вдобавок, отрисовка будет производиться в один вызов draw.

Читать далее

Голый Линукс — запуск ядра-одиночки

Время на прочтение11 мин
Количество просмотров32K

Итак, Linux - не операционная система, а только ядро для неё. Всё остальное приходит от проекта GNU (и других). И вот интересно - на что годится ядро само по себе?

Эта статья - очень "начального" уровня. Устроим маленький эксперимент - создадим чистую виртуальную машину и попробуем запустить ядро Linux "без всего". Или почти "без", т.к. нам понадобится загрузчик ОС - и какая-нибудь "пользовательская программа" (её мы сотворим сами). Конечно, продвинутые пользователи Linux такой "эксперимент" могут провести просто отредактировав параметры запуска при включении - но наш рассказ всё же для тех кто почти (или совсем) не в теме :)

Бонусом чуть-чуть коснёмся системных вызовов и пару слов скажем о других ядрах.

Загружаемся... Погружаемся...

Создаем алгоритм определения скорости объектов по видео

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.7K

Определение скорости объекта на видеопотоке является актуальной задачей в сфере компьютерного зрения и обработки видео, в частности, в области автономного вождения, контроля на дорогах, видеонаблюдения, спортивной аналитики. Скорость объектов может быть важной информацией в задаче трекинга, определения действий и других задач.

Мы разработали алгоритм, который учитывает движение камеры при помощи оптического потока. Оптический поток определяет движение пикселей между двумя последовательными кадрами. Изменения в потоке являются, смещением пикселей, анализируя которое, можно вычислить относительную скорость движения объекта и скорость фона вокруг него. Из физики известно, что вектор абсолютной скорости является их разностью. Так как смещение в пикселях можно пересчитать в смещение в метрах, то и абсолютная скорость движения в пикселях пересчитывается в скорость в м/с, что требуется для решения задачи.

Читать далее

В поиске собственных значений (матриц)

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров9.3K


Как найти собственные числа и собственные значения матрицы? Методы, излагаемые в курсе линейной алгебры, основанные на определении — применимы ли они к реальным данным? Существует ли простой алгоритм поиска этих величин, который можно понять, а не просто поверить?
Об этом мы поговорим под катом

Почему мои ZFS-диски так шумят?

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров19K
У Джонни Кэша есть песня «One piece at a time» 1976 года. В ней рассказывается история об автомеханике, собирающем собственный Cadillac из деталей, которые он в течение 25 лет по одной тырил с производственного конвейера General Motors.

Некоторое время назад пользователь Practical ZFS задал обманчиво простой вопрос:

«У меня есть пул Proxmox из трёх RAIDz1 vdev (virtual device, виртуальное устройство) по 4 диска. Проблема в том, что во время работы VM все двенадцать дисков минимум раз в секунду издают громкий звук, причём в течение всего дня. Что может быть причиной, и как это устранить?»
Читать дальше →

Создание Git-коммита: The Hard Way

Время на прочтение6 мин
Количество просмотров11K

Мы постоянно используем высокоуровневые команды git, такие как git add и git commit. Однако также существует другая группа команд git, которые обрабатывают низкоуровневые операции.

В этой статье мы создадим git‑коммит, используя низкоуровневые операции, а не команду git commit.

Читать далее

Удивительная история развития сортировки в JDK

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров7.3K

Как вы считаете, если выполнить java.util.Arrays.sort(), то какая сортировка будет вызвана? Quicksort? Timsort? И та, и другая, потому что для объектов вызывается Timsort, а для примитивов (чисел int, long, float и так далее) — Dual-Pivot Quicksort. В JDK 6 для объектов использовался стандартный Merge sort, а для чисел классическая реализация Quicksort с одним опорным элементом, предложенная Джоном Бентли и Дугласом МакИлрой. В JDK 7 оба алгоритма поменялись: теперь объекты сортируются с помощью Timsort, автор Тим Петерс, а для простых типов данных используется Dual-Pivot Quicksort, предложенный мною вместе с Джоном Бентли и Джошем Блоком в 2009 году. Эта сортировка используется более 15 лет не только в JDK, но и в Android (хотя и немного устаревшая версия).

А зачем нам вообще второй алгоритм сортировки, если есть Timsort? Почему не использовать один и для объектов, и для примитивов? Сегодня я, как автор, расскажу историю Dual-Pivot Quicksort: как он начинался, как развивался и как продолжает развиваться сейчас.

Читать далее

Он вам не «MacOS»

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров17K

Рассказываю и показываю что можно сотворить с iMac без прав администратора и установки стандартных средств разработки.

Погрузиться

Как полностью отключить Защитник (Defender) Windows 11

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров87K

За последний месяц я описал два интересных издания Windows 11 – Enterprise G в статье Windows 11 Enterprise G – Что за издание для правительства Китая и зачем оно вам? / Хабр (habr.com), и IoT Enterprise LTSC в статье Windows 11 24H2 IoT Enterprise LTSC – что за зверь, и чем он хорош? / Хабр (habr.com). В комментариях и сообщениях в личку все чаще слышу, что хорош EnterpriseG своей легкостью, в первую очередь выпиленным Защитником и телеметрией, но увы, не имеет локализации. А IoT LTSC тоже хорош и переведен, и быть ему тем на что можно наконец переходить тем, кто еще живет на Windows 7, если бы не Defender.

Способов удалять телеметрию есть много, я обычно просто штатно отключаю при установке то, что дают выключить и не парюсь, в сети есть проекты вычищающие глубокие хвосты.

С Защитником тоже опробовано много способов борьбы. Защитник с каждой версией становится все более устойчивым к попыткам себя отключить.

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

По итогам тестирования мной также признаны неработоспособными способы отключения Защитника через ProductPolicy и редактирование MUM файла, описывающего компоненты входящие в издание ОС, так как так или иначе, при перезагрузке или обновлении Защитник возвращается в строй. Встроенные групповые политики (и локальные политики через gpedit.msc) позволяли его отключить в Windows 10, но в Windows 11 встроено значительно больше функций защиты, их нужно отключать более грубо вручную.

Как полностью удалить Защитника?

Умножение Монтгомери

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров17K

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

Один из вариантов эффективного решения — умножать по модулю, вообще при этом не используя операции деления, с помощью алгоритма Монтгомери.

Про него я и хотел бы поговорить.

Читать далее

Ускорение JPEG-кодирования с использованием нескольких потоков

Время на прочтение7 мин
Количество просмотров5.2K
Стандарт JPEG появился в 1992 году. С тех пор JPEG-изображения оказались неразрывно связаны с цифровой фотографией, они используются практически в каждом приложении, которое работает с изображениями фотографического качества. Причина того, что стандарт JPEG был так быстро принят всем миром, того, что он стал практически универсальным способом хранения изображений, заключается в том, что в нём одновременно используется несколько подходов к сжатию изображений. Один из этих подходов основан на понимании ограничений системы зрительного восприятия информации человеком, и того, какую информацию, наиболее важную, нужно сохранить, а от какой, менее важной, можно избавиться.


Читать дальше →

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

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров16K

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

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

Читать далее

Объявление и инициализация переменных в C++

Уровень сложностиСредний
Время на прочтение41 мин
Количество просмотров35K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это шестая статья из серии, список предыдущих статей приведен в конце в разделе 7. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена объявлению и инициализации переменных.


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


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

Читать дальше →

Как правильно дифференцировать дискретные функции (Часть 2. Все-таки, МКЭ?)

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров9.8K

Публикация является продолжением обсуждения алгоритмов вычисления первой производной дискретной функции (функции, заданной массивом {аргумент: значение}, или массивом узловых значений). В части первой обсуждались функции из библиотеки NumPy, и был предложен альтернативный алгоритм, повышающий точность расчетов на границах области определения функции. В настоящей публикации предложены 2 алгоритма на основе метода конечных элементов (МКЭ, Finite Elements Method), один из которых показал на тестовых функциях лучшие результаты в сравнении с альтернативами.

Читать далее

Монотонная кубическая интерполяция

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.7K

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

В данной статье разобран алгоритм монотонной кубической интерполяции, предложенный Фритчем и Карлосоном в работе [1].

На рисунке красным обозначен результат обычной кубической интерполяции Эрмита, а синим - монотонной, кругами - опорные точки траектории.

Примеры кода написаны на C++, исходники всей библиотеки лежат здесь. Также написана копия библиотеки на Java, исходники лежат здесь.

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность