Pull to refresh
46
0
Dyzzet @Dyzzet

User

Send message

Создаем свою простую (C++) библиотеку с документацией, CMake и блекджеком

Level of difficultyMedium
Reading time33 min
Views12K

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

Если вы ловили себя на мысли: ‭«А почему мне бы не создать свою полноценную библиотеку?‭», то я рекомендую прочитать вам мою статью.

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

Некоторые из вас могут подумать что мы изобретаем велосипед. А я в ответ скажу — сможете ли вы прямо сейчас, без подсказок, только по памяти, нарисовать велосипед без ошибок?

Читать далее
Total votes 44: ↑43 and ↓1+53
Comments67

Книги, которые стоит почитать ИТ-архитекторам. Часть 2

Reading time4 min
Views17K

Привет, Хабр! Это Саша Бардаш, главный архитектор интеграционных платформ в МТС Диджитал. В прошлый раз я рассказывал о пяти книгах, которые стоит почитать начинающему ИТ-архитектору. Большое спасибо всем, кто читал. Были интересные комментарии на тему, какие еще книги почитать — кое-что из этого я добавил в свою новую подборку. Итак, под катом пять книг, которые будут интересны уже более опытным ИТ-архитекторам. Что ж, поехали!

Читать далее
Total votes 12: ↑10 and ↓2+15
Comments0

Укрощаем суммы с плавающей запятой

Level of difficultyEasy
Reading time9 min
Views9.3K

Допустим, у нас есть массив чисел с плавающей запятой, и мы хотим их суммировать. Можно наивно подумать, что их достаточно просто сложить, например, на Rust.

Однако это запросто может привести к произвольно большой накопленной погрешности. Давайте проверим:

naive_sum(&vec![1.0; 1_000_000]) = 1000000.0
naive_sum(&vec![1.0; 10_000_000]) = 10000000.0
naive_sum(&vec![1.0; 100_000_000]) = 16777216.0
naive_sum(&vec![1.0; 1_000_000_000]) = 16777216.0

Ой-ёй… Что произошло? Проблема в том .что следующее 32-битное число с плавающей запятой после 16777216 — это 16777218. Так что при вычислении 16777216 + 1, значение округляется до ближайшего числа с плавающей запятой, имеющей чётную мантиссу, то есть снова до 16777216. Мы зашли в тупик.

К счастью, есть более совершенные способы суммирования массива.

Читать далее
Total votes 30: ↑30 and ↓0+37
Comments48

Законопослушный гражданин. Инструкция по отказу от VPN

Level of difficultyEasy
Reading time2 min
Views121K

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

Читать далее
Total votes 163: ↑139 and ↓24+151
Comments238

Бомбора. Кровавый и беспощадный перевод книг

Level of difficultyEasy
Reading time11 min
Views36K

Вы покупаете книгу в бумажном исполнении, вдыхаете аромат её страниц, начинаете читать это чудо человеческой мысли и печатного станка, как вдруг… #%^#@&*#^~$%? Чуть выдохнув, вы пытаетесь понять, а что, собственно, за ахинею вы только что загрузили к себе в мозг? В этой статье поделюсь своим опытом, полученным от попытки прочитать переводную книгу от издательства Бомбора. Только сразу предупреждаю: от показанных примеров «перевода» могут случиться истерические припадки.

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

Повышение точности решения плохо обусловленных СЛАУ методом Гаусса

Level of difficultyMedium
Reading time4 min
Views6.9K

Большинство задач вычислительной математики в конечном итоге сводятся к решению систем линейных уравнений. На данный момент существует огромное количество алгоритмов для решения таких систем. Их разделяют на две большие группы: итерационные и прямые. Прямые методы позволяют получить точные значения неизвестных, если вычисления проводятся точно. Далее будем рассматривать метод Гаусса.

Читать далее
Total votes 13: ↑9 and ↓4+11
Comments12

Верните клавишу Scroll Lock

Level of difficultyEasy
Reading time4 min
Views40K

Технический прогресс не всегда прогресс. Еще на первых компьютерах IBM была клавиша Scroll Lock. Главное её предназначение в текстовых редакторах такое: сделать возможным прокручивание документа,  не меняя при этом положения курсора.

Представьте: работаете вы в Word, набираете текст. В какой-то момент решили обратиться к другой части того же документа, чтобы потом вернуться и продолжить печатать. Казалось бы, нет ничего проще — достаточно нажать на стрелку вниз на клавиатуре, подождать, пока текст промотается до нужного места,  и отпустить кнопку. Но при этом каретка, то есть место, где стоял курсор, собьется, его придется искать!

Читать далее
Total votes 50: ↑45 and ↓5+56
Comments314

Достаточно одной К155ЛА3

Level of difficultyMedium
Reading time6 min
Views57K

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

Давным-давно, когда деревья были большими, а я ещё учился в старших классах, на меня снизошло откровение от старших товарищей, что практически любое цифровое устройство можно собрать только на микросхемах К155ЛА3. Утверждение может показаться спорным, но ничто не мешает нам его проверить.

И поможет нам в этой проверке другое откровение: «Инверсия конъюнкции есть дизъюнкция инверсий». Заодно и разберёмся, что есть «конъюнкция», что есть «дизъюнкция», и причём здесь «инверсия».
И это совсем несложно
Total votes 158: ↑153 and ↓5+191
Comments156

Определение ботов на сайте с помощью нейронных сетей

Reading time4 min
Views7.6K

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

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

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

Reading time18 min
Views90K

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

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

Пасхалки в DNS

Reading time8 min
Views18K
Сетевой стек TCP/IP не в одночасье стал паутиной, соединившей интернет от края до края. Вся система развивалась довольно бурно, противоречиво, но в целом через инкрементальные усовершенствования в разных местах. Не было какого-то единого плана создания глобальной коммуникационной сети и подходящего под эти цели стека протоколов. Из-за этого вместо сферической семиэтажной OSI в вакууме в наличие у нас есть причудливое смешение технологий и протоколов, где стандарты, написанные в 1970-х всё ещё живы, лягаются и даже обеспечивают нагрузкой ваши боевые сервера.

The less popular 8.8.4.4 is slated for discontinuation
Figure 1. Комикс xkcd на злобу дня

Всё это в полной мере относится к подсистеме разрешения имён, aka name resolving, и DNS, как современной и наиболее полноценной реализации этой ключевой технологии. В качестве такового DNS пережил разнообразных саблезубых тигров и археоптериксов вроде YP/NIS/NIS+ эпохи накопления битов, вследствие чего в нём набралось немало артефактов и пасхальных яиц. Иногда их обнаруживают случайно при раскопках с помощью dig, но есть также и новые, нестандартные применения старого механизма.
Читать дальше →
Total votes 76: ↑76 and ↓0+76
Comments23

Кривые в компьютерной графике. Урок 1: Анимации

Reading time6 min
Views8.5K

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

Читать далее
Total votes 13: ↑12 and ↓1+13
Comments5

Feature freeze С++23. Итоги летней встречи комитета

Reading time8 min
Views24K

На недавней встрече комитет C++ «прорвало», и в черновую версию C++23 добавили:

  • std::mdspan
  • std::flat_map
  • std::flat_set
  • freestanding
  • std::print("Hello {}", "world")
  • форматированный вывод ranges
  • constexpr для bitset, to_chars/from_chars
  • std::string::substr() &&
  • import std;
  • std::start_lifetime_as
  • static operator()
  • [[assume(x > 0)]];
  • 16- и 128-битные float
  • std::generator
  • и очень много другого
Подробности
Total votes 63: ↑62 and ↓1+80
Comments225

Не так страшен Rust, как его излагают

Reading time5 min
Views27K

Последние годы часто хвалят язык программирования Rust. Однако, без изучения синтаксиса и особенностей языка в нём сложно разобраться. Честно говоря, при первом просмотре дальше простых примеров я продвинуться не смог. Вроде догадываешься, что тут указываем тип переменных, амперсанд – это вроде “я только посмотреть”, но всё равно код складывался в некую мешанину иероглифов с кучей скобок и, на первый взгляд, случайно проставленных точек с запятыми. То ли дело Python, минимализм синтаксиса которого так привлекателен для неокрепших душ. Однако, так ли сложен Rust на самом деле или это миф? 

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

Так ли это?
Total votes 41: ↑32 and ↓9+33
Comments123

В Data Science не нужна математика (Почти)

Reading time6 min
Views89K

Привет, чемпион!

Ребята с «вышкой» всё время умничают, что в Data Science нужна «математика», но стоит копнуть глубже, оказывается, что это не математика, а вышмат.

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

Решил накидать чек-лист из простых математических приёмов, без понимания которых — тебе точно будет сложно в DS. Если ты только начинаешь карьеру в DS, то тебе будет особенно полезно. Мощь вышмата не принижаю, но для старта всё сильно проще, чем кажется. Важно прочитать до конца!
Читать дальше →
Total votes 109: ↑102 and ↓7+129
Comments87

JIT-компилятор Python в 300 строк

Reading time11 min
Views30K

Может ли студент второго курса написать JIT - компилятор Питона, конкурирующий по производительности с промышленным решением? С учётом того, что он это сделает за две недели за зачёт по программированию.

Как оказалось, может, но с нюансами.

Читать далее
Total votes 110: ↑109 and ↓1+136
Comments37

Продление жизни временных значений в С++: рецепты и подводные камни

Reading time19 min
Views19K

Прочитав эту статью вы узнаете:

1. Способы, которыми можно продлить время жизни временного объекта в С++.

2. Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.

Информация из статьи может быть полезна как новичкам, так и профессионалам.

Если заинтересовало, то самое время налить чая, и погнали разбираться где тут референсы висят.

Чай готов, начинаем погружение
Total votes 33: ↑31 and ↓2+37
Comments11

Альтернативы исключениям С++ и зачем они нужны

Reading time10 min
Views14K

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

Читать далее
Total votes 22: ↑18 and ↓4+21
Comments40

Знакомимся с программированием на ассемблере x86

Reading time17 min
Views49K

Архитектура x86 лежит в сердце процессоров, на которых уже более трех десятилетий работают наши домашние компьютеры и удаленные серверы. Умение читать и писать код на низкоуровневом языке ассемблера – это очень весомый навык. Он позволяет создавать более быстрый код, использовать недоступные в Си возможности машин и выполнять реверс-инжиниринг скомпилированного кода.
Читать дальше →
Total votes 37: ↑34 and ↓3+45
Comments15
1
23 ...

Information

Rating
Does not participate
Registered
Activity