Search
Write a publication
Pull to refresh
36
0

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

Send message

Оптимизируя неоптимизируемое: ускорение компиляции C++

Level of difficultyMedium
Reading time7 min
Views8.6K

В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.

Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:

  • Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
  • Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
  • Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
  • Возможность переноса поддержки Unicode.

Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.
Читать дальше →

Мапперы на Famicom, NES, Денди: откуда взялись и зачем нужны (часть 1/2)

Level of difficultyMedium
Reading time17 min
Views16K

Примерно раз в десятилетие на русскоязычных около-компьютерных ресурсах кто-нибудь поднимает тему такого элемента архитектуры 8-битной Денди и её прародителей, как «маппер», пытаясь на пальцах объяснить, что же это такое. И каждый раз у меня возникает ощущение, что рассказчики сами не вполне знакомы с сюжетом. К тому же практически всегда речь идёт о чисто технических моментах, совершенно не затрагивая историю вопроса: откуда взялось, как развивалось, чем было полезно для фактических игр — что, на мой взгляд, может быть интересно гораздо более широкому кругу лиц.

Так сложилось, что я имею довольно глубокий, примерно по локоть, практический опыт взаимодействия с этими самыми «мапперами», также могу рассказать кое-что и за их историю, и, разумеется, обладаю уверенностью, что уж я-то точно понимаю всё как есть, и расскажу так, что все вздрогнут. Поэтому под катом — всё, что вы когда-либо хотели или не хотели спросить про мапперы, но боялись или вовсе даже и не собирались спрашивать.
Читать дальше →

Когда старый софт лучше нового

Level of difficultyEasy
Reading time7 min
Views76K

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

Практика показывает, что новые версии утилит часто изменяются к худшему, раздуваются, обрастают ненужными функциями, начинают тормозить или вовсе перестают запускаться. Ухудшение программного продукта со временем — известный процесс, для которого есть специальный термин: дерьмофикация (enshittification, слово придумал Кори Доктороу). Она происходит не только с десктопным или мобильным софтом, но и с платформами. Все мы за последние годы наблюдали дерьмофикацию Google, Reddit, Amazon, Twitter и Facebook (два последних вообще признаны экстремистами и запрещены в РФ). Аналогично с десктопным софтом и мобильными приложениями.

В то же время старый софт многолетней давности фантастически быстро работает. Программы в несколько мегабайт, которые запускаются мгновенно, потребляют минимум памяти и просто летают. По сути, ресурсы современных CPU для них избыточны. Пользоваться такими инструментами одно удовольствие. Такое чувство, что работаешь на суперкомпьютере, а не обычном ПК.
Читать дальше →

Неожиданное взаимодействие предсказания ветвлений и подсистем памяти

Reading time10 min
Views7.3K

Это 15-я статья в серии, посвящённая оптимизации подсистем памяти. Остальные доступны здесь (англ.).

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

Что нам стоит вязальный аппарат построить? Некоторая информация и ряд мыслей на тему…

Reading time10 min
Views18K
Картинка Macrovector, Catalyststuff, Freepik

Ткацкое и вязальное дело — одни из старейших и известнейших изобретений человечества, сопровождающие его в течение большей части истории.

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

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

К 30-летнему юбилею DOOM: как два садиста, психопат и мормон создали одну из величайших игр в истории? Часть 3

Level of difficultyEasy
Reading time6 min
Views21K

Продолжим наш рассказ о том, как несколько весьма своеобразных программистов создали великий и ужасный Doom. Мы уже поговорили о непростом детстве двух Джонов, главных героев нашей истории, и рассказали, как Кармак и Ромеро начали писать игры. Затем — как они встретились в депрессивном и криминальном городе среди луизианских болот, работая на компанию Softdisc. Теперь же наши герои дозрели до мысли о том, чтобы писать крутые игры вместе — тем самым встав на скользкую дорожку серьёзного геймдева. Они ещё не знали, куда именно она их приведёт, но были полны энтузиазма, жажды создания крутейших игр, а также фантазий самого мрачного характера. Впрочем, их первое совместное творение получилось совсем не мрачным — и некоторых членов команды это буквально выморозило!

Все части цикла статей о создании DOOM:
Читать дальше →

Загружаем OpenIPC по сети на камеру без удаления заводской прошивки

Level of difficultyMedium
Reading time13 min
Views28K


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

Из дополнительных железок нам понадобится мультиметр, USB UART-адаптер на 3.3 вольта и dupont-проводки от макетной платы, чтобы подключиться к камере. Сегодня будем настраивать загрузку OpenIPC на камере с сервера вместо классической загрузки с микросхемы флэш-памяти. Если понравится, можно даже оставить работать камеру таким образом навсегда.

Особенно такой вариант будет удобен тем, кто разрабатывает программы для камеры, и нужно быстрым и удобным способом подкидывать в систему программы, модули ядра, менять ядро и саму корневую файловую систему. А также тем, кто использует камеру как одноплатный компьютер вместо плодово-ягодных плат.
Дальше о том, как заставить загружаться камеры с сервера по сети

IT-2024: AI не решает — решают люди

Level of difficultyEasy
Reading time7 min
Views8.4K
Году в 2010-м я читал журнал с интервью одного из тогдашних топов диджитал-сферы и мне запомнилась фраза про то, что тот, кто может спрогнозировать ситуацию в отрасли на пять лет вперёд, тот идиот или мошенник. В наше время горизонт планирования сократился чуть ли не до квартала: трудно прогнозировать, понимая, что на твой бизнес, твою карьеру, твои инвестиции может оказать влияние что угодно, от международного конфликта до вируса или пожара в ЦОДе за тысячи километров от тебя. Уже давно пропало ощущение «островка стабильности» дома, в семье, среди коллег и друзей. В таких условиях остаётся одно, на что можно положиться, рассчитывать и что нужно ценить, — это люди. Увы, современные компании, да и сами люди этого не понимают. Я хочу вас предостеречь: берегите людей — это главный актив. И теперь это не фигуральное пафосное выражение, а формула выживания. 

В статье не будет универсальных рецептов и объективной логики — скорее, будет постановка проблемы, которую нам всем скоро придётся решать.

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

Собираем электрогитару из конструктора

Level of difficultyEasy
Reading time8 min
Views19K


Привет, Хабр! Что может быть лучшим новогодним подарком для гитариста, чем электрогитара, которую он собрал сам? Конечно, многие предпочли бы престижный инструмент, усилитель или эффект от известного производителя.

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

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

Итоги блога RUVDS на Хабре в 2023 году

Level of difficultyEasy
Reading time5 min
Views1.7K
27 декабря Хабр подвёл итоги года, которые довольно интересные — из них видно, что Хабр не стоит на месте и продолжает расти и активно развиваться. У нас год ещё не закончился, но мы решили тоже подвести итоги — и чтобы сравнить их с предыдущими периодами, и чтобы как-то соотнести с итогами Хабра, да и в целом, возможно, они кому-то будут интересны.



В этот раз не хочется писать длинные вступления и подводки — допускаем, что и вам не очень хочется читать их в выходной день :) Поэтому только самое-самое.
Читать дальше →

Главные мемы 2023 года: атомный советпанк, русы с ящерами, барбенгеймер и гусь-матерщинник

Level of difficultyEasy
Reading time7 min
Views18K

2023 год вновь оказался не только бурным, но и богатым на мемы разной степени упоротости. Некоторые из них кажутся существующими уже несколько лет как, хотя появились или плотно завирусились совсем недавно. Вспомним же перед встречей нового 2024-го, над чем мы кекали и угорали в уже ставшем историей 2023-м — ну а в конце немного обсудим свежайшие мемы о наступающем годе!
Читать дальше →

Распаковываем файл gzip вручную

Level of difficultyMedium
Reading time5 min
Views13K

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

$ echo "aaaaaaaa" > test.out
$ xxd test.out
00000000: 6161 6161 6161 6161 0a     aaaaaaaa.

Файл получился размером 9 байт — 8 символов a плюс перевод каретки в конце.

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

$ gzip -1 test.out
$ xxd test.out.gz
00000000: 1f8b 0808 bf35 6a61 0403 7465 7374 2e6f  .....5ja..test.o
00000010: 7574 004b 4c84 002e 00b6 66d7 ad09 0000  ut.KL.....f.....
00000020: 00

Дисклеймер: эту статью я писал в целях обучения, так что мог допустить некоторые ошибки. Мне нравится заниматься низкоуровневым программированием, но моя основная деятельность сосредоточена на веб-разработке для Microsoft Teams.
Читать дальше →

Проект «Селенит». Часть 6: Финализация

Level of difficultyMedium
Reading time8 min
Views7.7K

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

Мне очень не хотелось писать эту часть цикла. Учить других на своих ошибках – сомнительное удовольствие, но образовательная составляющая всегда была и остаётся основной в проекте «Селенит». И очень важно не только сделать что-то, но и доступно объяснить на этом примере, почему сделано именно так.

Далее речь пойдёт о неочевидных нюансах влияния топологии печатной платы на характеристики радиоэлектронной аппаратуры связи на примере весьма неоднозначных опытов по компоновке и трассировке печатной платы трансивера Selenite Lite.

Все части цикла статей о создании любительской радиостанции:

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

Мистер Твистер. Впечатления о Twister OS для Raspberry Pi

Level of difficultyEasy
Reading time8 min
Views12K

Когда я купил себе Raspberry Pi 400 и водрузил на него Dosbian, я заранее знал, что рано или поздно наиграюсь в «X-Com» и захочу попробовать что-нибудь ещё. Классическую Raspberry Pi OS я уже видел, поэтому душа требовала разнообразия, а пятая точка — приключений. И тут я совершенно случайно наткнулся в сети на упоминание Twister OS — альтернативной операционной системы для «малины» на базе той же Raspbian, но с настраиваемым графическим интерфейсом, который умеет мимикрировать под другие популярные операционки, что может быть важно для людей, непривычных к Linux. Разумеется, я решил попробовать Twister на своём Raspberry Pi и оценить его возможности. Сразу отмечу, что обзор не претендует на техническую глубину — скорее, это впечатления простого пользователя, пытающегося понять, стоит ли тратить время на установку Twister OS, или это баловство, и лучше Raspbian человечество ничего не придумало. Да, предупреждаю сразу: внутри будет много картинок!
Читать дальше →

Собираем объёмный дисплей на Raspberry Pi

Level of difficultyMedium
Reading time16 min
Views23K

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

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

Сканирующий переводчик: что это такое?

Level of difficultyEasy
Reading time10 min
Views5.9K

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

Это весьма любопытный артефакт ушедшей эпохи. Тем не менее, свою работу он делает и делает её хорошо даже сейчас…
Читать дальше →

Сложный был год

Level of difficultyEasy
Reading time12 min
Views23K
image

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

Из-за этого мы сейчас переживаем крупнейший передел рынка хостинга в России.

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

Ещё в этом году в ЦОДы начало поступать полностью отечественное железо из отечественной компонентной базы и отечественных плат (на самом деле — нет), отвалилась страховка от киберрисков от AIG (вместе с AIG), и пришлось искать российский аналог. Были скандал и мир с Казахстаном при открытии двух новых площадок, мы взяли премию «Хостер года», запустили собственный бесплатный DNS (аналог Route53), перешли на OpenAPI в хостинге, открыли ещё две площадки: ЦОДы во Владивостоке и в Турции в Измире (это там, где было наводнение), запустили и сломали спутник (дважды), пережили крупную аварию и после неё ввели понятное SLA на доступность с денежной гарантией.

В общем, сложный был год. Налоги, катастрофы, проституция, бандитизм и недобор в армию. С последним мириться было нельзя… Простите, рассказываю по существу.
Читать дальше →

10 тёмных паттернов в UX-дизайне и как их избежать

Level of difficultyEasy
Reading time12 min
Views15K

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

К типичным тёмным паттернам относятся давление на чувства, ложная срочность, заманивание, сбор личных данных, навязывание, подсовывание, маскировка рекламы, намеренное введение в заблуждение, паттерн «Roach Motel», предвыбор нежелательных опций, добавление лишних товаров в корзину, спам-рассылка по друзьям, автоматическое продлевание платной подписки после её окончания и не только.

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

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

Расцвет эпохи русских веб-комиксов. Часть 1: «Серые будни магов», Тока Paint и «Космоножка»

Level of difficultyEasy
Reading time6 min
Views5.7K

В первой и второй частях мы обсудили первые популярные веб-комиксы на русском языке. Сейчас их гораздо больше, буквально на любой вкус — но среди них есть самые популярные, яркие и мемные. Их узнают даже те обитатели Рунета, которые очень далеки от мира веб-комиксов. Сегодня у нас в обзоре —саркастичная Космоножка, упоротые и слегка озабоченные персонажи Токи, а также элегантные питерские маги среди своих серых будней.
Читать дальше →

«Треугольный» Big Muff на транзисторах

Level of difficultyMedium
Reading time8 min
Views9.2K


Привет, Хабр! Знаете, какую педаль использовал Дэвид Гилмор в классических альбомах The Wall и Animals группы Pink Floyd?

Он играл на своём знаменитом Чёрном Стратокастере, который впоследствии продаст Джеймсу Ирсею почти за четыре миллиона долларов, через транзисторную версию педали Big Muff Pi от компании Electro-Harmonix. Один из её вариантов мы сегодня спаяем и послушаем.
Читать дальше →

Information

Rating
Does not participate
Works in
Registered
Activity