Как стать автором
Обновить
2
0
Дмитрий @ExiveR

Администратор баз данных

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

Пилим движок Arcanum. Урок 03. Работа с памятью, используем полиморфные аллокаторы

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

Приветствую Хабравчане!

Продолжаем мучить разрабатывать движок для моей любимой игры Arcanum. В данном уроке расскажу, как движок управляет памятью и какие паттерны и подходы использует. Напишем свою мини реализацию полиморфных аллокаторов из С++ 17. Расскажу о некоторых оптимизациях в движке.

Читать
Всего голосов 11: ↑10 и ↓1+13
Комментарии4

Некоторые малоизвестные фичи, фокусы и причуды языка C

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

В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

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

Читать далее
Всего голосов 74: ↑73 и ↓1+92
Комментарии44

Детальный взгляд на Breadbox Ensemble. Что умела продвинутая оболочка для MS-DOS?

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

Привет, любители старого «железа». Это Антон Комаров, и сегодня мы изучим ИТ-артефакт, одно из имен которого — Breadbox Ensemble. Это графическая оболочка для MS-DOS, которая значительно опередила свое время. К примеру, концепция меню «Пуск» в ней появилась на 2,5 года раньше, чем в Windows 95. Компанию-разработчика, Berkeley Softworks, пытались купить Microsoft, Apple Notebooks и Sun Microsystems. Но руководство не согласилось, решив продолжить самостоятельное «плавание». И оно было довольно успешным: последняя версия оболочки вышла аж в 2009 году.

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

Читать далее
Всего голосов 52: ↑52 и ↓0+82
Комментарии55

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

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

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

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

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

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

Читать далее
Всего голосов 45: ↑44 и ↓1+55
Комментарии68

Автоматизация тестирования для системного аналитика. Применение Selenium и написание скрипта на Python

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

Привет, Хабр! Меня зовут Татьяна Ошуркова, я разработчик и системный аналитик. Не так давно у меня вышла статья Не базовые навыки. Как расширить свои возможности и найти новые подходы в работе, где я поделилась различными навыками и инструментами, которые могут быть полезны не только разработчику, но также и системному аналитику.

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

Читать далее
Всего голосов 6: ↑3 и ↓3+2
Комментарии0

Как я решил проблему с постоянными обрывами RDP-соединения после внедрения MFA-аутентификации

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

Как я решил проблему с постоянными обрывами RDP-соединения после внедрения MFA-аутентификации

После внедрения в рабочие процессы компании MFA-аутентификации появилась проблема - RDP-соединение обрывалось каждые 10-15 минут. Это сильно мешало работе сотрудников, в основном при работе с сервером 1С. К сожалению, точную причину проблемы в итоге мне выявить не удалось, но сама проблема все же была решена.

Читать далее
Всего голосов 4: ↑3 и ↓1+4
Комментарии10

Логические элементы и триггеры на транзисторах и диодах

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


Привет, Хабр! В электронных проектах очень часто применяются логические элементы. Они даже присутствуют во многих микроконтроллерах в качестве периферии, независимой от ядра (ПНЯ). Логические функции можно реализовать и программным способом, но аппаратные решения гораздо быстрее и надёжнее.

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

Иногда такое решение помогает улучшить трассировку платы. А ещё бывает не лишним задуматься о внутренней схемотехнике микросхем, чтобы понять, с какими внешними сигналами они могут работать, а с какими — нет. Речь о том, чтобы учитывать особенности входных и выходных каскадов, защиты от перенапряжения, и так далее.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+55
Комментарии8

Реализуем эффективный тупль с помощью C++26

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

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

Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]

И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.

В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.

Войти в мир эффективных реализаций туплей
Всего голосов 33: ↑30 и ↓3+37
Комментарии69

Книга: «PowerShell: практическая автоматизация»

Время на прочтение20 мин
Количество просмотров20K
image Привет, Хаброжители!

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

Вы узнаете, как создавать скрипты PowerShell для автоматизации локальных и облачных систем. Найдете советы по определению задач, которые стоит автоматизировать, по организации структуры скриптов и управлению ими, а также множество примеров кода с подробными пояснениями. Научитесь адаптировать уже готовые скрипты к новым условиям применения и упрощать работу специалистов не-технического профиля при помощи простых и понятных интерфейсов SharePoint.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+9
Комментарии7

Бинарные деревья — решение алгоритмических задач, часть 1

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

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

Немного теории для общего понимания сути.

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

Кстати, у меня есть телеграм-канал, где пишу подходы к решениям всяких задачек с LeetCode, там больше разборов конкретных задач, чем здесь, потому что не всегда нужна статья. В общем, если интересно - жду здесь - t.me/crushiteasy :)

Читать далее
Всего голосов 11: ↑7 и ↓4+4
Комментарии26

Математика матричных расширений: как происходит умножение матриц на примере T-Head Matrix Extension

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

Привет, Хабр! Я Андрей Соколов, инженер-программист в группе разработки математических библиотек. Месяц назад моя коллега Валерия запустила цикл статей про матричные расширения, ускоряющие операции над матрицами. Вы уже смогли узнать, что они делают и какие существуют, какие из них разрабатываются для открытой архитектуры RISC-V.

В заключительной статье цикла разберем пример использования матричного расширения T-Head под RISC-V для реализации алгоритма матричного умножения. Сначала кратко рассмотрим наивную скалярную реализацию и блочный вариант алгоритма. Затем реализуем аналогичный вариант с использованием матричного расширения — как для квадратных матриц, так и матриц произвольного размера. Второй случай интересен тем, что возникает необходимость обработки так называемых «хвостов» — блоков неправильной конфигурации. В заключение немного расскажу, какие идеи можно использовать для дальнейшей оптимизации матричного умножения, и поделюсь полезными ссылками.

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

Читать далее
Всего голосов 26: ↑26 и ↓0+37
Комментарии7

Эмиттерный повторитель — ключ к пониманию работы транзисторных каскадов

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


Привет, эту публикацию я хочу посвятить людям, кто, как и я, любил в детстве читать журнал «Радио» и книги по электронике, но не смог сам разобраться в принципах работы усилителей на биполярных транзисторах. Тема полупроводников непроста и требует понимания многих чуждых для нашей повседневной интуиции физических процессов. Я помню момент озарения, когда я понял принцип схемотехнического решения эмиттерного повторителя, и именно с него пошло постепенное понимание, как функционируют и другие типы транзисторных каскадов. И я предполагаю, что эта тема может стать точкой входа в аналоговую электронику не только для меня.
Читать и смотреть схемы
Всего голосов 149: ↑147 и ↓2+187
Комментарии117

Легкое управление списками баз 1С

Время на прочтение7 мин
Количество просмотров164K
«Лучше день потерять, а потом за пять минут долететь» (с) м/ф Крылья, ноги и хвосты.



На «Хабре» есть три отличных поста про управление списками баз в 8.х:

1. «Управление списками баз 1С 8.2»;
2. «Как приготовить сотни баз 1С и не сойти с ума»;
3. «Управление списком баз 1С 8.2 с помощью Active Directory».

Каждый из них содержит свой кусок паззла от полноценной картины: Легкое управление списками баз 1С.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии33

4 типовые ловушки в работе со строками в С и С++ и как их избежать

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

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

Читать далее
Всего голосов 32: ↑30 и ↓2+37
Комментарии17

Рефакторинг игрового движка: от сырых указателей к умным

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

Привет! Когда-то давно я уже писал статью про сырые и умные указатели, попытки использовать GC вместо них. Тогда я решил оставаться в С++ с сырыми указателями, а GC отвел место в скриптах. Но за долгое время я все больше и больше понимал что сырые указатели слишком опасны, тем более что мой движок позволяет писать игровой код на С++. Количество багов лишь подкрепляло уверенность что пора уходить от ручного управления памятью. Однако идеи про GC никак не оставляли в покое...

В статье я расскажу как переводил движок с сырых указателей на умные, разберу самые популярные концепции умных указателей, их особенности и подводные камни, и какой подход выбрал сам. Где в итоге здесь оказался GC и почему он не убивает производительность. А так же свои попытки напрячь ИИ для массового рефакторинга кода.

Читать далее
Всего голосов 9: ↑9 и ↓0+14
Комментарии46

Интерполяция: рисуем плавные графики с помощью кривых Безье. Версия 2

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

Доброго времени суток, харбачитатель.

Так начинается статья, которая представляет сообществу первый, опубликованный здесь, алгоритм интерполяции:

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии3

Pro Git, 2-е издание

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

Вне всяких сомнений, Pro Git — это одна из лучших книг про систему контроля версий git. Совсем недавно появилось второе издание этой замечательной книжки. Большие изменения произошли в издательском процессе: исходный код книги теперь хранится в AsciiDoc, а не в Markdown, а различные форматы (PDF, ePub и Mobi) автоматически генерируются с помощью O'Reilly Atlas platform. Разработка книги активно ведётся на гитхабе, актуальная online-версия находится в открытом доступе на официальном сайте, а любители печатной продукции могут заказать себе экземпляр на Amazon. Второе издание получилось почти в два раза больше первого: на сегодняшний день PDF-версия содержит 570 страниц. Помимо улучшения старого материала, книжка также пополнилась новыми главами и разделами:
Читать дальше →
Всего голосов 92: ↑88 и ↓4+84
Комментарии22

Случайные блуждания: связь с резистивным расстоянием (часть 1)

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

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

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

Читать далее
Всего голосов 1: ↑1 и ↓0+3
Комментарии2

Еще немного про LDPC коды

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

Всем привет! Я тут недавно начал разбираться в одной очень интересной теме, связанной с обработкой цифровой информации. Объектом моего исследования стали помехоустойчивые коды. Когда я был студентом, я даже писал студенческую научную статью, в которой представил код на Си для кодирования информации кодом Хэмминга на Arduino. Только вот коды Хемминга вряд ли можно применить в каких‑нибудь сложных каналах связи по типу WiFi или LTE, поэтому я начал изучать другие коды. Немного погуглив, я понял что мейнстримом среди помехоустойчивых кодов являются LDPC коды.

На Хабре была статья на тему помехоустойчивого кодирования и LDPC кодов. В ней автор очень круто описал основные принципы обработки информации, закодированной LDPC кодом, и даже привел пример декодирования методом SPA и некоторые мысли о том, как это дело можно оптимизировать. Я решил привнести свою лепту и подготовил свою небольшую статью в которой расскажу про кодирование информации на примере метода Ричардсона‑Урбанке (Richardson — Urbanke method), а также рассмотрю вариант декодирования информации методом minsum и различные способы оптимизации этого метода.

Читать далее
Всего голосов 4: ↑4 и ↓0+8
Комментарии2

Алгоритм Тарьяна для поиска минимального набора уравнений

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

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

Читать далее
Всего голосов 7: ↑7 и ↓0+11
Комментарии7
1
23 ...

Информация

В рейтинге
5 231-й
Откуда
Караганда, Карагандинская обл., Казахстан
Дата рождения
Зарегистрирован
Активность