Pull to refresh
4
0.8
Дмитрий Померанцев @pda0

User

Send message

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

Level of difficultyMedium
Reading time6 min
Views9.8K

В этой статье мы рассмотрим классический конкурентный кольцевой буфер и обсудим, как его можно оптимизировать для повышения производительности. Я покажу вам, как существенно улучшить этот показатель от 5,5 миллионов элементов в секунду до 112 миллионов элементов в секунду — и эти показатели выше, чем в реализациях Boost и Folly. Если вам требуется готовая реализация со всеми этими оптимизациями, посмотрите мою библиотеку SPSCQueue.h.

Кольцевой буфер также называется очередью «один производитель — один потребитель» (SPSC). В ней не бывает ожидания (и, соответственно, не бывает блокировок), это конкурентный примитив. Такая структура данных находит множество вариантов применения, и здесь я рассмотрю передачу сетевых пакетов между сетевым контроллером и драйверами операционной системы. Основная задача, решаемая при этом — выполнение событий ввода/вывода в относительно новом асинхронном API io_uring.

Читать далее

Почему число «1/137» встречается в природе повсюду

Level of difficultyMedium
Reading time12 min
Views69K

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

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

Если бы только начальные условия нашей Вселенной были другими, то космическая история разворачивалась бы одинаково в общих чертах, но детали отличались бы между той гипотетической Вселенной и нашей собственной. Что касается фундаментальных констант, то одни изменения были бы глубокими, а другие — едва заметными. В нашей Вселенной константы имеют явно выраженные значения, и именно эта комбинация даёт тот космос, в котором мы живём. Одна из этих фундаментальных констант известна как постоянная тонкой структуры, и её приблизительное значение (1/137) фигурирует в расчётах, имеющих значение для целого ряда явлений, как на субатомном, так и на космическом уровнях.

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

Читать далее

Программа, которая падала на первой команде

Reading time9 min
Views13K

Нашего клиента донимали отчёты о вылетах, показывавшие, что его программа ломается на самой первой команде.

Я открыл один из дампов вылета, он оказался настолько странным, что отладчик даже не мог понять, что пошло не так.

Читать далее

Оптимизация компилятора на пальцах

Reading time15 min
Views5.8K

Почему я это написал, и как читать статью

Недавно получил от друга такое сообщение:

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

Я сразу же подумал: «Ну конечно, я знаю тысячу статей и видеороликов на эту тему», но вскоре осознал, что практически во всех таких источниках от читателя требуется знать компьютерный жаргон, внутреннее устройство, промежуточные представления, т.д. Вот какая проблема здесь возникает: те, кто пользуется компиляторами (как, например, мой друг), всем этим не заморачиваются. Их не волнует, каково именно промежуточное представление LLVM, или что такое φ-узел, или какой проход и почему называется «ротацией циклов». Нет, их интересуют (в порядке убывания приоритета) ответы на вопросы: (1) что, (2) почему, (3) как.

Читать далее

PHP Typed: Маленький Composer пакет, который нарушает PHP правила ради вас

Level of difficultyEasy
Reading time8 min
Views6.8K

Звучит слишком громко? Давайте уточним, чтобы избежать обманутых ожиданий: этот пакет использует немного магии вне Хогвартса, и будет действительно полезен любителям строгой типизации в PHP.

Читать далее

Рецензия на книгу «Байесовская оптимизация с примерами из библиотек Python»

Level of difficultyEasy
Reading time9 min
Views3.3K

Байесовская оптимизация (Bayesian Optimization) призвана решить проблему исследования данных от «черного ящика» путем объединения вероятностного машинного обучения (ML) и теории принятия решений. Несмотря на то, что BayesOpt доказала свою эффективность во многих реальных задачах оптимизации «черного ящика», многие практикующие ML-специалисты все еще сторонятся этой методики, полагая, что для этого им нужны более высокие компетенции. Теперь у вас есть возможность получить нужные знания с новой книгой от издательства Manning в русском переводе от Alist в партнерстве с БХВ.

Читать далее

Защита схемы от переполюсовки, что может быть проще?

Level of difficultyMedium
Reading time15 min
Views49K
image
«Я не такая», «со мной этого точно не может случиться» — говорили они, но упорно продолжали пихать батарейки в пульт для телевизора не той стороной…

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

Содержание:



Всех неравнодушных к электронике прошу под кат!
Читать дальше →

Открытая IDE для российских разработчиков

Level of difficultyEasy
Reading time6 min
Views70K

Компания Haulmont совместно с Группой Астра и Axiom JDK создает некоммерческое партнерство для развития открытой российской среды разработки – OpenIDE.

Все три компании имеют огромный опыт в создании популярных продуктов для разработчиков и мы верим, что сможем сделать качественный продукт. Мы не планируем изобретать велосипед и будем использовать в качестве основы популярную среду с открытым кодом IntelliJ IDEA Community Edition.

Почему это хорошая новость для российских разработчиков? Чем это отличается от самой IntelliJ IDEA CE или уже существующей российской GigaIDE? Какие языки будут поддерживаться? Что со Spring? Когда релиз? Читайте под катом.

Читать далее

Сглаживание мешей в Blender

Reading time2 min
Views6.2K

Дело в том, что если на вашей модели отчётливо видно полигональную сетку, это смотрится не очень красиво, хоть и имеет свой стиль. Здесь вы узнаете о способах сглаживания 3д-моделей в программе Blender 3d, а также о сферах их применения и о том, какой вариант лучше всего подойдёт именно для вас!

Читать далее

Bevel и его применение в Blender 3D

Level of difficultyEasy
Reading time1 min
Views3.6K

Bevel в Blender 3D и работа с ним. То, как его настроить, как работать с ним и в целом что он такое! Информация про способы его добавления на модель и его возможности.

Читать далее

От Trello к Obsidian: шаблон для управления проектами в стиле scrum

Level of difficultyMedium
Reading time5 min
Views6.9K

Однажды команда открыла для себя 'Plus for Trello' — уникальное браузерное расширение для Trello, которое стало одним из лучших инструментов для учёта рабочего времени и ведения скрама небольшой командой. В этой статье расскажем о том, как этот плагин использовался в рабочем процессе, как Obsidian смог подхватить эстафету после его «смерти», и будет представлен проверенный временем шаблон проекта Obsidian для командной работы по scrum.

Читать далее

Создание бота в дискорде с деплоем на сервер за 5 минут

Reading time7 min
Views6K

Доброго времени суток, уважаемые читатели. В этой статье мы поговорим о том как сделать простейшего бота в Discord на Python с базой данных SQlite3 и задеплоим его с использованием GitOps-подхода за три команды в терминале.

Функционал бота будет следующим:

1. Вывод пинга: 

- Бот отвечает на команду /пинг, отправляя обратно сообщение с текущим пингом на запущенном сервере.

2. Выдача роли: 

Читать далее

Как технарю и не только проверить блогера в телеграме на накрутку?

Level of difficultyEasy
Reading time5 min
Views2K

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

Читать далее

Как правильно составить оферту для услуги в 2025

Level of difficultyMedium
Reading time10 min
Views1.5K

Задумывались, почему каждая третья оферта претендует на звание «самый опасный документ на сайте»?

Я задумывалась, но мне по профессии положено — я Татьяна Евсеева, руководитель практики сопровождения онлайн-бизнеса Legal UP. За последний год я создала сотни оферт для разных компаний, еще больше документов исправила.

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

Читать далее

Катастрофа в российской зоне проекта NTPPool.org

Level of difficultyEasy
Reading time4 min
Views93K

Привет, Хабр! Своим первым постом на площадке я хочу привлечь внимание к катастрофе, сложившейся на данный момент в RU-зоне проекта NTPPool.org. Я думаю, что проект в представлении не нуждается, тем не менее, для тех, кто никогда о нём не слышал - во многом благодаря ему все ваши компьютеры, смартфоны, серверы и прочие гаджеты имеют точное время.

Читать далее

«Это катастрофа, шеф!» — как облако помогает организовать Disaster Recovery

Level of difficultyEasy
Reading time8 min
Views1.3K

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

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

Читать далее

Разработка цифровой аппаратуры нетрадиционным методом: CGA видеоадаптер на SpinalHDL

Level of difficultyHard
Reading time127 min
Views4.8K

В предыдущей статье (ч.1, ч.2) я рассказывал как построить свою полностью открытую вычислительную систему на опенсорсных решениях — некую синтезируемую систему-на-кристалле, которая будет адаптирована под ваши задачи, в которой всё до последнего триггера находится под вашим управлением и не зависит ни от рыночной конъюнктуры, ни от политических решений. В этой статье я расскажу и покажу как добавить к этой СнК простейший видеоадаптер под тип старого доброго Color Graphics Adapter (CGA), но с современным (HDMI) интерфейсом, с графическим и текстовым режимами и аппаратным скроллингом для плавной прокрутки изображений. Как и в предыдущей статье, речь пойдет о проектировании аппаратуры на языке SpinalHDL и синтезе её для микросхем ПЛИС, используя опенсорсный тул. Все эксперименты я буду проводить на плате «Карно» с ПЛИС Lattice серии ECP5, но весь мой код, за исключением части касающейся настроек PLL, будет аппаратно независимым и легко адаптируемым под любой тип микросхем ПЛИС из поддерживаемых тулчейном Yosys/NextPNR.

Читать далее

Нотация моделирования архитектуры С4 — примеры диаграмм и инструменты

Level of difficultyMedium
Reading time19 min
Views131K

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

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

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

Читать далее

Structurizr инструкция для начинающих

Level of difficultyMedium
Reading time4 min
Views4.6K

Всем привет!

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

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

Давай посмотрим

Как платить налог с криптовалюты в 2024 году?

Level of difficultyEasy
Reading time3 min
Views15K

Всем привет! В этой статье мы расставим все точки над "И" по теме, как же все-таки платить налог с доходов от криптовалют, в том числе предпринимателям и ИП. Поехали!

Читать далее

Information

Rating
2,638-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity