Pull to refresh
9
0
Oleg Vorobiov @isnullxbh

C++ Software Developer

Send message

Как устроены серийники для Windows, и как восстановить стёршийся COA

Level of difficultyMedium
Reading time9 min
Views25K

Эта история начинается с того, что я попытался переустановить Windows на ноутбуке, доставшемся мне вот с такой наклейкой Certificate of Authenticity (COA): часть символов серийника видны хорошо, остальные – в большей или меньшей степени угадываются; но несколько попыток ввести серийник «на глаз» успехом не увенчались. Пришлось углубляться в вопрос подробнее.

Читать далее
Total votes 129: ↑128 and ↓1+166
Comments29

Как получить радиолюбительский позывной в 2024 году

Level of difficultyEasy
Reading time7 min
Views28K

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

Читать далее
Total votes 62: ↑61 and ↓1+78
Comments71

Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

Level of difficultyMedium
Reading time11 min
Views13K

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

Читать далее
Total votes 40: ↑38 and ↓2+47
Comments26

Как мы пытались в Docs as code и проиграли

Level of difficultyEasy
Reading time6 min
Views14K

Что такое Docs as Code классно описано в статье Docs as Code: введение в предмет.
В двух словах: это ведение документации на языке разметки (Markdown, AsciiDoc) с хранением в репозитории.
Плюшки — все вытекающие от работы с репозиторием.
Минусы — в этой статье.

На осенних Analyst Days прошлого года добрая четверть докладов была посвящена теме Docs as Code. На тот момент конклав аналитиков на моём прежнем месте работы уже 9 месяцев решал, нужен ли на проекте модный-стильный-молодёжный Docs as Code или всё же остаться в дышащем на ладан Confluence. К чему пришли — не знаю. На новом месте работы мы внедрили Docs as Code за неделю — было чёткое понимание проблематики, подход казался выигрышным решением. Используем полгода.

Читать далее
Total votes 34: ↑32 and ↓2+37
Comments35

Как я произвел 200 тандыров и 13,5 млн убытков

Level of difficultyEasy
Reading time13 min
Views87K

В 2021-м я решил замахнуться на собственное производство тандыров. Мы хотели сделать премиальный продукт, мой партнер любит BMW, и говорил:

Читать далее
Total votes 158: ↑130 and ↓28+129
Comments134

Руководство по CMake для разработчиков C++ библиотек

Reading time18 min
Views94K

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

Читать далее
Total votes 71: ↑71 and ↓0+71
Comments49

Compile Time Dependency Injection в С++: как обуздать зависимости не прибегая к позднему связыванию

Level of difficultyMedium
Reading time26 min
Views8.5K

Начав свою карьеру в качестве C# разработчика, я постоянно сталкивался с использованием техники внедрения зависимостей (Dependency Injection). За то время, что я работаю с C++, я не заметил здесь такого же широкого распространения этой идеи.

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

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

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments19

Кто реально угрожает C++ (нет, Rust, не ты)

Reading time14 min
Views78K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Total votes 220: ↑208 and ↓12+244
Comments362

Скоростной АЦП с нуля. 16 бит за 10 лет

Reading time12 min
Views35K
Чего стоит разработать быстродействующий аналого-цифровой преобразователь, почти не имея опыта? Насколько сильно наше отставание в этой области? Есть ли в этой нише шанс найти коммерческое применение своей продукции и отщипнуть хоть кусочек рынка у гигантов мира сего? Выпуская в свет новый 16-битный 80 МГц АЦП, хотим порассуждать на эти темы и рассказать о самой микросхеме и опыте её создания.

image

Читать дальше →
Total votes 113: ↑113 and ↓0+113
Comments88

Async/await, There is no thread – легко обмануть тех, кто сам обманываться рад

Level of difficultyMedium
Reading time3 min
Views15K

Когда нам показывают на некотором примере, что асинхронная операция не создает потока, нам пытаются внушить, что асинхронная операция НИКОГДА не создает потока и в принципе не может его создать, но это не правда! Простой пример с работающим кодом доказывает обратное. Давайте разберем этот пример.

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

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

Читать далее
Total votes 18: ↑8 and ↓10+1
Comments56

Как сделать кастомную раскладку клавиатуры в Linux

Level of difficultyEasy
Reading time4 min
Views3.6K

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

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

В какой-то момент я подумал, что можно сделать свою раскладку, взяв за основу английскую и добавив сербские символы через правый Alt. Например, RightAlt + s = š, RightAlt + d = đ и т.д.

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

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments13

Устройство TCP/Реализация SYN-flood атаки

Level of difficultyEasy
Reading time12 min
Views19K

В данной статье мы поговорим об устройстве протокола TCP, самой популярной атаке на него – SYN-flood, а также реализуем её на практике и рассмотрим, как от неё защититься.

Изучить матчасть
Total votes 15: ↑15 and ↓0+15
Comments8

Пишем простой консольный мессенджер с end-to-end шифрованием поверх «Hidden Lake» сервисов

Level of difficultyHard
Reading time11 min
Views6.8K

Secpy-Chat — это простой консольный мессенджер со сквозным (end-to-end) шифрованием, работающий поверх сервисов анонимной сети Hidden Lake. За счёт своей простоты его можно редактировать, либо даже полностью переписывать на более любимую технологию или язык программирования. За счёт использования HL сервисов появляется возможность легко формировать децентрализованную коммуникацию в глобальной сети.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

Как запустить сотовую сеть стандарта AMPS при помощи SDR

Level of difficultyHard
Reading time12 min
Views11K
Приветствую всех!

Многие из нас всё ещё помнят такой стандарт связи как AMPS. В лучшие времена он, как и другой аналоговый стандарт NMT-450, был достаточно популярен на просторах России. И, возможно, у кого-то из нас даже был такой телефон.



Хотя сети общего пользования прекратили работу уже давным-давно, при помощи некоторого оборудования и софта всё ещё возможно дать старым телефонам возможность вновь зазвонить.
Итак, в сегодняшней статье разберёмся, как запустить сотовую сеть стандарта AMPS. Узнаем, с какими сложностями придётся столкнуться и как заставить всё это работать. Традиционно будет много интересного.
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments33

Вселенной на самом деле может быть не 13,8, а 26,7 миллиарда лет

Level of difficultyMedium
Reading time12 min
Views35K


По крайней мере, благодаря телескопу Джеймса Уэбба, у нас есть этому определенные доказательства. Мы начали видеть галактики, которым гораздо больше лет, чем может быть объяснено стандартной космологической моделью. Они выглядят чересчур «современными». Но у некоторых ученых есть объяснение: мы неверно понимаем текущий возраст Вселенной. На самом деле она гораздо старше, чем мы думали раньше.

Читать дальше →
Total votes 62: ↑56 and ↓6+65
Comments188

Как создать несколько VMFS датасторов на одном дисковом устройстве

Reading time4 min
Views9.9K
В некоторых специфических ситуациях вам может понадобиться создать несколько data store на одном дисковом устройстве. Как, например, произошло в нашем случае.

На одном из наших Vsphere ESxi серверов версии 5.5 установлен RAID адаптер Adaptec ASR72405 c подключёнными к нему 24 жёсткими дисками по 5 TB марки ST5000NM0024. Нами было принято решение построить RAID 60 на 22 дисках и ещё 2 диска сконфигурировать в hot-spare. Это обеспечивало нам необходимое дисковое пространство при максимальной полученной скорости доступа при потоковом чтении/записи — в районе 3.5 гигабайта в секунду на запись и 3.3 гигабайта в секунду на чтение. Обращаю внимание ещё раз, что по специфике нашей задачи нас интересовала именно максимальная скорость при потоковом чтении/записи.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments14

Доктор, что это за **** у меня на коже?

Reading time13 min
Views36K
Скажу сразу: я не врач.

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

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

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


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

Дело всё в том, что любые высыпания могут оказаться как реакцией иммунитета на новый фрукт, так и кожным маркером, который сигнализирует о том, что серьёзное внутреннее заболевание уже появилось или вот-вот дебютирует. И нам приходится снова и снова объяснять, что мазь не спасёт от основной причины заболевания.
Читать дальше →
Total votes 85: ↑66 and ↓19+60
Comments37

Я принес вам решение проблемы с исключениями в C#. Но вам не понравится

Reading time8 min
Views45K


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

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

Эти размышления меня измучили, и я систематизировал свои знания и идеи по обработке исключительных случаев.
Читать дальше →
Total votes 80: ↑57 and ↓23+51
Comments478

Космология. Подробный разбор решения Фридмана

Reading time8 min
Views14K
Habritants! Когда в процессе моего ознакомления с темой решения уравнений общей теории относительности для метрики Фридмана-Леметра-Робертсона-Уокера выяснилось, что единого транспарентного материала на эту тему на русском языке нет, я решил запостить разбор в виде статьи, заодно ещё раз самому лучше вникнув в тему.

Всем желающим найти собственное решение уравнений общей теории относительности Эйнштейна или просто лучше понять бытие посвящается.

В статье «О кривизне пространства» , в которой Фридман впервые приводит решение ОТО для нестационарной Вселенной, Александр Александрович указывает лишь метрику в виде интервала и уравнения-результат, справедливо полагая само решение не заслуживающей внимания рутиной.

Но в поисках «вариаций на тему» рутина горит как кокс. Поэтому — в путь.

Для понимания материала необходимы знания алгебры: понятие о производных в большей степени; тензорная — в меньшей.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments28

Впервые учёные убили спящий вирус герпеса в клетках человека

Reading time3 min
Views69K


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

После первоначального заражения вирус спит, но временами просыпается и вызывает язвы или гнойные пузыри. У немногих людей его проявления хуже – включая слепоту и воспаление мозга.
Читать дальше →
Total votes 46: ↑42 and ↓4+50
Comments75

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity