Обновить
3
0

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

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

Сравнение производительности GPU-расчетов на Python и C

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

Python обладает рядом привлекательных преимуществ к которым относится простота реализации программных решений, наглядность и лаконичность кода, наличие большого числа библиотек и многочисленного активного комьюнити. В то же время, известная всем медлительность питона часто ограничивает его применимость для “тяжелых” вычислений. Для ряда задач можно добиться существенного ускорения расчетов путем использования технологии CUDA для параллельных вычислений на GPU. Цель этого небольшого исследования — анализ возможностей эффективного использования python для расчетов на GPU и сравнение производительности различных python-решений с реализацией на C.
Читать дальше →

Python (+numba) быстрее Си — серьёзно?! Часть 1. Теория

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

Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).


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

Домен, поддомен, ограниченный контекст, пространство задач/решений в DDD: четко определены

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

Domain-Driven Design — это, как правило, подход к проектированию систем программного обеспечения, который предполагает создание общего языка между экспертами домена и разработчиками системы. В число известных правил DDD входят Use a Ubiquitous Language и Make The Implicit Explicit.

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

Данная статья подготовлена в результате длительной беседы на github с участием многих представителей сообщества DDD. Спасибо всем участникам этого диалога за сотрудничество.

Читать далее

Полупроводниковая монополия: как одна голландская компания держит под контролем мировую индустрию микросхем

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

Сегодня основой экономики являются микрочипы. Почти во всех электронных устройствах присутствует по крайней мере один полупроводниковый чип: от автомобилей и мобильных телефонов до стиральных машин и самолётов. Большая часть мирового ВВП производится устройствами, использующими полупроводники. Из-за своей повсеместной распространённости и полезности они также являются стратегически важными: США и Китай стремятся контролировать поставки и получить преимущество одного над другим.

Существует несколько основных компаний-производителей микрочипов. Есть Samsung в Южной Корее, TSMC на Тайване, Huawei в Китае, а также Intel и Texas Instruments в США. Все они производят чипы на собственных фабриках. Но машины, которые они используют для производства, производятся в основном одной компанией — голландской Advanced Semiconductor Materials Lithography (ASML).

Технология, которая делает возможным производство всех передовых чипов называется литографией в крайнем ультрафиолете (EUV). Одна EUV-машина стоит более 200 миллионов долларов. Она опирается на цепочку поставок, состоящую из более чем 800 других компаний, на доставку сотен тысяч деталей со всего мира. Многие из этих компаний существуют только благодаря одному клиенту – ASML.

Сложность как технологии, так и цепочки поставок даёт ASML сильное конкурентное преимущество. Время и затраты, которые потребуются конкуренту для воспроизведения всего процесса изготовления одной машины EUV-литографии, создают очень высокие барьеры для входа. На протяжении многих лет ASML позиционировала себя как практически единственного поставщика этой передовой технологии, которая произвела революцию в массовом производстве чипов. И поэтому в течение следующих нескольких десятилетий ASML сохранит свою монополию.
Читать дальше →

Дефективное управление временем

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

Изначально публикация должна была называться "Гре****е управление временем", что должно символизировать боль и проблемы связанные с этой активностью. Неумение решать тучу задач это очень неприятный ком в горле, мешающий находится на волне развития. Собрал методики, статьи и материалы, которые помогают мне в моем маленьком старте исследования.

Потратить время

Люди не понимают ООП

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

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →

Туториал по Unreal Engine. Часть 6: Анимация

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

Сегодня редко можно встретить игру без анимации, потому что она является важным аспектом передачи движения. Без анимации будет казаться, что персонаж не бежит, а скользит.

К счастью, Unreal позволяет быстро и удобно анимировать персонажей!

В этой части туториала вы научитесь следующему:

  • Импортировать меш со скелетом
  • Импортировать анимации
  • Создавать Animation Blueprint для переходов между разными анимациями
  • Выполнять плавные переходы анимаций
Читать дальше →

Вам не нужен для этого JavaScript

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

Прошу вас не возмущаться названием статьи. Я не ненавижу JavaScript, я люблю его. Ежедневно я пишу на нём кучу кода. Но ещё я люблю CSS и даже люблю JSX HTML. Я люблю все эти три технологии по причине, которая называется…

▍ Правило наименьших полномочий


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

В случае веба это означает, что нужно по возможности выбирать HTML вместо CSS, а затем CSS вместо JS. JS — самый универсальный язык из всех трёх, потому что на нём вы описываете, как должен вести себя браузер; но также он может ломаться, отказываться загружаться, требует дополнительных ресурсов для скачивания, парсинга и исполнения. Кроме того, при его использовании очень легко ограничить доступ пользователей, выполняющих браузинг при помощи клавиатуры или специальных возможностей.

В отличие от JS с его императивностью, HTML и CSS декларативны. Вы говорите браузеру, что делать, а не как это делать. Это значит, что браузер сам выбирает, как это делать, и может сделать это наиболее эффективным образом.

Так как функции HTML и CSS обрабатываются браузером, они могут быть более производительными, более нативными, более адаптируемыми к предпочтениям пользователя и в общем случае иметь бОльшую accessibility. Это не значит, что так будет всегда (особенно когда дело касается accessibility), но когда все сложные задачи берёт на себя браузер, от этого обычно выигрывают конечные пользователи.
Читать дальше →

Неизвестно полезный CSS

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

CSS не отстаёт от JavaScript. Постоянно развивается. Классно же. Мне особенно радостно видеть, как старые задачи, которые я решал при помощи костылей, теперь можно сделать при помощи одного свойства.


Только многие фишки неизвестны широкому кругу разработчиков. Честно говоря, некоторые я сам узнал недавно. В любом случае так дальше нельзя. Надо исправлять ситуацию!


Я собрал фишки, которые могут быть полезны в разного рода проектах. Неважно, верстаете ли вы сайт для малого бизнеса или создаёте супермодное React приложение. Они поддерживаются большинством браузеров, начиная с 2021 года. Отдельно отмечу, что я не считаю IE11 браузером, который поддерживается в современной разработке. По этой причине я не учитывал его.


Больше не буду затягивать. Давайте посмотрим, что я вам подготовил.

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

Вычисляемые знания и будущее чистой математики

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


Перевод поста Стивена Вольфрама (Stephen Wolfram) "Computational Knowledge and the Future of Pure Mathematics"
Выражаю огромную благодарность тем, кто помог мне сделать этот перевод: Владиславу Глаголеву (Himura), Илье Марчевскому, Сергею Шевчуку (opckSheff) и Анне Коваленко.


Введение


Уже больше века, каждые 4 года в некоторой точке мира проходит Международный конгресс математиков (ICM). В 1900 году, именно на нем Давид Гильберт представил свою знаменитую коллекцию проблем математики, которая по сей день задает направление исследования математикам всего мира.

В этом году ICM проходит в Сеуле, и сегодня я отправляюсь туда. Однажды я уже бывал на ICM — в Киото в 1990 году. Тогда системе Mathematica было всего 2 года, и математики ещё только начинали привыкать к ней. Многие уже повсеместно её использовали, но на ICM были и те, кто говорил «Я занимаюсь чистой математикой. В чем, интересно, мне может помочь система Mathematica

Vychisljaemye-znanija-i-budushhee-chistoj-matematiki_1.gif
Читать дальше →

Алгоритм HyperLogLog, или Оцениваем мощность множества за O(1)

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


Привет, Хабр! Меня зовут Максим, я учусь на третьем курсе МФТИ. Этим летом я участвовал в студенческой программе, которую проводила команда Tarantool. Если кратко, суть программы в том, чтобы самостоятельно или в команде решить исследовательскую задачу в определенный срок. 

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

Симуляция подъёмной силы Ньютона методом частиц на CUDA

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

https://www.youtube.com/playlist?list=PLwr8DnSlIMg0KABru36pg4CvbfkhBofAi


Как-то на Хабре мне попалась довольно любопытная статья “Научно-технические мифы, часть 1. Почему летают самолёты?”. Статья довольно подробно описывает, какие проблемы возникают при попытке объяснить подъёмную силу крыльев через закон Бернулли или модель подъёмной силы Ньютона (Newtonian lift). И хотя статья предлагает другие объяснения, мне бы всё же хотелось остановиться на модели Ньютона подробнее. Да, модель Ньютона не полна и имеет допущения, но она даёт более точное и интуитивное описание явлений, чем закон Бернулли.


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


Я же решил проверить, что же произойдёт в модели Ньютона если её улучшить. Что если добавить в неё недостающий элемент межатомного взаимодействия? Исходный код и бинарники получившегося симулятора доступны на GitHub.


Перед тем как мы начнём, я бы хотел сразу обозначить, что это статься не о физике самой модели. Эта статья о GPGPU-программировании. Мы не будем рассматривать физические свойства самой модели, потому что она груба и не подходит для настоящих расчётов. И всё же, эта неточная модель даёт куда более интуитивное описание явления подъёмной силы, чем закон Бернулли.

Прорывная концепция ракетного двигателя

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

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

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

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

Читать далее

Парсим на Python: Pyparsing для новичков

Время на прочтение6 мин
Количество просмотров191K
Парсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:

import matplotlib.pyplot  as plt

имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.

В результате парсинга, например, может быть необходимо прийти к следующему выражению:

{ 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }

Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.

Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:

r'^[ \t]*import +\D+\.\D+ +as \D+'

К счастью, есть удобный и гибкий инструмент для парсинга, который называется Pyparsing. Главное его достоинство — он делает код более читаемым, а также позволяет проводить дополнительную обработку анализируемого текста.

В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.

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

Вглубь Pyparsing: парсим единицы измерения на Python

Время на прочтение12 мин
Количество просмотров16K
В прошлой статье мы познакомились с удобной библиотекой синтаксического анализа Pyparsing и написали парсер для выражения 'import matplotlib.pyplot as plt'.

В этой статье мы начнём погружение в Pyparsing на примере задачи парсинга единиц измерения. Шаг за шагом мы создадим рекурсивный парсер, который умеет искать символы на русском языке, проверять допустимость названия единицы измерения, а также группировать те из них, которые пользователь заключил в скобки.
Читать дальше →

Оптоволоконные кабели связи. Как это делается

Время на прочтение11 мин
Количество просмотров103K
В нескольких своих постах, опубликованных более года назад, я поднял такую интересную для многих и чем-то захватывающую тему, как магистральные оптоволоконные кабели связи, в частности, тему «подводной» оптики. Информация в данных публикациях была неполной, торопливой и разрозненной, так как статьи писались «на коленке» во время обеденного перерыва. Сейчас я бы хотел поделиться структурированным и, насколько это возможно, полным материалом по теме оптики, с максимумом вкусных подробностей и гик-порно, от которых на душе любого технаря станет тепло.

Внутри схемы, гифки, таблицы и много интересного текста.

Вы готовы?

image
Давай уже сюда свой пост

2. Математическое описание систем автоматического управления

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

Публикую первую часть второй главы лекций по теории автоматического управления.
В данной статье рассматриваются:


2.1. Получение уравнений динамики системы. Статическая характеристика. Уравнение динамики САУ (САР) в отклонениях
2.2. Линеаризация уравнений динамики САУ (САР)
2.3. Классический способ решения уравнений динамики


Лекции по курсу «Управление Техническими Системами», читает Козлов Олег Степанович на кафедре «Ядерные реакторы и энергетические установки», факультета «Энергомашиностроения» МГТУ им. Н.Э. Баумана. За что ему огромная благодарность.


Данные лекции только готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика приветствуется.


Первая часть: «Введение в теорию автоматического управления. Основные понятия теории управления техническим системами»



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

Многоразовость. Как ракете вернуться целой после полёта?

Время на прочтение11 мин
Количество просмотров22K
Не многие знают, что над вопросом создания многоразовых ракет у нас в стране всерьёз задумались достаточно давно. Как гласят предания, однажды, боковой блок ракеты-носителя типа «Союз» (может это была и «Молния», сути не меняет) очень удачно приземлился. Обычно блок падает двигателем вниз, а тут упал необычным образом — баком вниз, а двигателем вверх. Может дерево задел, может порыв ветра закрутил, не понятно. Но сам факт остаётся фактом и двигатель по внешним признакам был в прекрасном состоянии. Ради интереса его сняли с обломков ракетного блока, поставили на штатный испытательный стенд, и он нормально отработал. После этого по отрасли поползли мысли, что многоразовость ракет и двигателей это не фантастика, а реальность. Говорят, «ЦСКБ-Прогресс», возглавляемое Д.И.Козловым, активно продвигало идеи многоразовых ракетных блоков в рамках темы «Подъём», которую свернули в угоду программы «Энергия-Буран» и её производной — РН «Зенит», на базе которой В.Ф.Уткин планировали делать своё семейство ракет-носителей. Вот такая история. Вообще, по истории многоразовых ракет и теории принятия решений в этой области, можно написать хорошую книгу, которая при должном подходе потянет на художественный роман. Но моей целью является рассказать о том, какие схемы обеспечения многоразовости ракетных блоков есть, почему именно они применяются, чем отличаются друг от друга и какие в них нюансы.
Читать дальше →

Шахматы на C++

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

Не так давно я захотел написать свой шахматный движок. На удивление в Интернете нашлось не так много хороших статей на эту тему. Были статьи с довольно слабыми программами, многие из которых даже умудрялись пропускать некоторые важные правила. А были статьи с хорошими программами (некоторые из них были даже чуть лучше чем получилось у меня в итоге), но там авторы рассказывали лишь основные идеи, пропуская подробности, из-за чего написать что-то свое по таким статьям было проблематично. Поэтому после написания своей программы, я решил написать статью, дабы облегчить жизнь интересующимся в данной теме. Я не претендую на лучшую шахматную программу или на чистейший код, но эта статья будет хорошим и легким началом для тех, кто хочет написать что-то свое.

Читать далее

Введение в теорию автоматического управления. Основные понятия теории управления техническим системами

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

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


Лекции по курсу «Управление Техническими Системами», читает Козлов Олег Степанович на кафедре «Ядерные реакторы и энергетические установки», факультета «Энергомашиностроения» МГТУ им. Н.Э. Баумана. За что ему огромная благодарность.


Данные лекции только готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика привествуется.


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

Информация

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