Как стать автором
Обновить
4
0

Пользователь

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

Моделируем процессы в OpenFOAM и отображаем результаты в веб

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

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


Я обычный разработчик, и не являюсь специалистом в данной научной области. С этим видом задач я столкнулся впервые в рамках недавно прошедшего хакатона FIT-M 2020, где мне посчастливилось поучаствовать в качестве со-организатора и ментора. Опыт мне показался интересным, в частности из-за возможности прикоснуться к области высокопроизводительных вычислений (англ. High Performance Computing), которые часто запускают на суперкомпьютерах. Я разобрался как можно довольно быстро наладить запуск вычислений на сервере в облаке и посмотреть на результат прямо через браузер, хоть с планшета или телефона!


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


Barcelona Supercomputing Center - Centro Nacional de Supercomputación
Картинка взята из Barcelona Supercomputing Center

Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

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

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

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

Читать далее
Всего голосов 18: ↑21 и ↓-3+24
Комментарии6

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

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

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

Читать далее
Всего голосов 39: ↑37 и ↓2+35
Комментарии101

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

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

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

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

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

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии17

Дообучение EasyOCR

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

Всем привет!

Представляю краткий tutorial по дообучению EasyOCR. возможно обучение на Google colab.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Docker для новичков — #3 Что нужно знать о Docker compose

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

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

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии3

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

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

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

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

Читать далее
Всего голосов 64: ↑64 и ↓0+64
Комментарии5

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

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



Hello world!


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



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


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

Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии12

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

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

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


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

Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии8

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

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

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


image


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

Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Комментарии18

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

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


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

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

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

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

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров42K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

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

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

Время на прочтение4 мин
Количество просмотров253K
Два плюс два, умножить на два?

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 22: ↑21 и ↓1+20
Комментарии15

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

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

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

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

Читать далее
Всего голосов 74: ↑74 и ↓0+74
Комментарии36

learnopengl. Урок 1.1 — OpenGL

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

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

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

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

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

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

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


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

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

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

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

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

Читать далее
Всего голосов 18: ↑13 и ↓5+8
Комментарии11

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

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

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

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

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

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

Читать далее
Всего голосов 22: ↑18 и ↓4+14
Комментарии12
1
23 ...

Информация

В рейтинге
4 347-й
Откуда
Кызыл, Тува (Тувинская Респ.), Россия
Зарегистрирован
Активность