Pull to refresh
0
@Daemychread⁠-⁠only

User

Send message

Всеобъемлющая Теория Матриц

Level of difficultyEasy
Reading time13 min
Views12K

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

Погрузится в мир матриц

Проблема, о которой вы наверняка не задумывались: print(.1+.2)

Level of difficultyEasy
Reading time9 min
Views15K

Как следует отображать на экране результат деления 3.0 на 10.0 ? Сколько цифр следует вывести, если пользователь не указал точность?

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

Давайте продолжим разговор о самой неоптимизированной в мире библиотеке эмуляции плавающей точки при помощи целочисленной арифметики.

Это вторая статья из цикла «Санпросвет о плавающей точке»:

1. Компьютеры и числа

2. Вывод чисел с плавающей точкой на экран <- вы тут

Читать далее

Барьерные токены: Мощное расширение парсеров для работы с отступами языков Python и YAML

Level of difficultyEasy
Reading time9 min
Views2.1K

Сегодня я расскажу, как из-за случайной встречи с ANTLR я создал RCParsing, библиотеку на C# для парсинга практически любого вида синтаксиса, поддерживающую парсинг отступов из коробки. Мы разберемся, как работают разные алгоритмы парсинга и чем отличается тот, что используется у меня. Также я закину пример кода для парсинга упрощенного YAML с использованием моей библиотеки.

Читать далее

Математика, биты, магия и немного ненормального программирования на C

Level of difficultyMedium
Reading time13 min
Views12K

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

Идея написать эту статью зародилась из моего поста. В нем я рассказал о том, что через последовательность Фибоначчи можно конвертировать мили в километры с небольшой погрешностью. Увидев, что многим понравилась, я задумался: почему бы не изучить еще какие-нибудь трюки, заодно практикуясь в программировании на C?

Всех, кто заинтересовался — прошу под кат.

Читать далее

Params-коллекции и collection expressions в C#

Level of difficultyEasy
Reading time8 min
Views3.6K

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

В экосистеме C# за последние два релиза случилось ровно то, чего многим не хватало для аккуратной работы со списками значений. В C# 12 появились collection expressions — синтаксис вида [1, 2, 3] со spread-элементами .., который конвертируется в массивы, Span, ReadOnlySpan, интерфейсы коллекций и любые правильно устроенные типы. В C# 13 к этому добавили params-коллекции: теперь params может быть не только массивом, а почти любой поддерживаемой коллекцией, включая спаны и неизменяемые контейнеры.

Читать далее

Процедурная генерация воксельных рогаликовых уровней

Level of difficultyMedium
Reading time30 min
Views3.8K

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

Читать далее

SRP ч2, Уравнение рендеринга. Функции освещения

Level of difficultyEasy
Reading time6 min
Views2.6K

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

Читать далее

Красно-чёрное дерево: полная реализация на C#

Level of difficultyMedium
Reading time19 min
Views6.4K

Что может заставить обратить внимание на красно-чёрные деревья, и как их реализовать? Статья ответит на оба эти вопроса. Бонусом будет показано, как на основе красно-чёрного сконструировать дерево интервалов.

Читать далее

База про юнит-тесты в C# на xUnit v3

Level of difficultyEasy
Reading time6 min
Views3.9K

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

Сегодня разберёмся с юнит‑тестами в C# на основе xUnit v3 — библиотеки, которая стала практически стандартом де‑факто в.NET‑среде.

Почему именно xUnit? Всё просто: его создали Джим Ньюкирк и Брэд Уилсон — разработчики NUnit. Они решили выкинуть всю архаику вроде [SetUp], [TearDown] и прочих рудиментов и построили фреймворк с нуля, строго под TDD. Весной вышла xUnit v3 2.0.2, в которой завезли Assert.MultipleAsync, полностью обновили сериализацию. А в.NET 9 уже штатно продвигается Microsoft.Testing.Platform (MTP) — сверхлёгкий тестовый рантайм, с которым xUnit v3 работает прямо из коробки. Короче говоря, это самый нативный выбор под.NET 9 на сегодня.

Читать далее

The Billiard Fractals

Level of difficultyHard
Reading time25 min
Views986


Complex systems often appear chaotic or incomprehensible, yet closer examination reveals that such complexity can frequently be reduced to a simple underlying mechanism. By systematically removing layers of emergent behavior, one can uncover a fundamental rule or equation from which the entire system originates.

Read more →

Процедурная генерация миров: как создать уникальные локации для каждого игрока

Level of difficultyMedium
Reading time10 min
Views8.8K

Как работает процедурная генерация в играх? В этой статье разбираемся с основными понятиями и алгоритмами процедурной генерации.

Читать далее

Детальный обзор полей Галуа

Level of difficultyMedium
Reading time15 min
Views19K

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

Этими словами заканчивалось письмо Эвариста Галуа, написанное для своего друга Огюста Шевалье за два дня до его смерти от полученных на дуэли ран на 21 году жизни. Ни Якоби, ни Гаусс в его теоремах не разобрались, зато спустя 15 лет разобрался Жозеф Лиувилль и опубликовал работы Галуа, ставшие впоследствии фундаментом современной алгебры, известные сейчас как теория Галуа. В статье расскажу про одну из частей этой теории - поля Галуа, получившая настолько повсеместное применение в криптографии и избыточном кодировании, что Intel и AMD выпустили набор процессорных расширений для эффективной реализации операций над этими полями.

Заметка! Если вам довелось использовать/реализовывать поля Галуа, то большая часть статьи для вас скорее всего будет не интересна, но возможно в последних разделах будет что-то для вас новое.

Читать далее

Создание контрола Avalonia/WPF для двухцветных векторных Bootstrap Icons

Level of difficultyHard
Reading time33 min
Views1.6K

В мире разработки приложений, будь то веб или десктоп, использование иконок является неотъемлемой частью пользовательского интерфейса. Векторные иконки предпочтительнее растровых, так как они масштабируются без потери качества. Одной из популярных коллекций векторных иконок является Bootstrap Icons, содержащая более 2000 готовых иконок. Хотя коллекция Bootstrap Icons доступна как npm-пакет bootstrap-icons и ориентирована на веб-разработку, её можно эффективно использовать в десктопных приложениях.

Создадим с нуля контрол BootstrapIcon для удобного использования двухцветных векторных иконок в приложениях на Avalonia/WPF. Сами изображения, в основном берем из SVG-файлов библиотеки bootstrap-icons, отсюда и название нашего контрола.

Туториал ориентирован на разработчиков, знакомых с Avalonia на базовом уровне. Основной упор в реализации контрола делается на Avalonia. Вариант для WPF, надеюсь, будет полезен для тех, кто переходит с WPF на Avalonia.

🔗 Полученные контролы BootstrapIcon для Avalonia и WPF с примерами использования размещены на GitHub.

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

Читать далее

Бесплатный сайт (блог, cv, wiki) — закроем уже эту тему

Reading time6 min
Views7.5K

Как же меня бесят статьи в духе “Как всего за 139 рублей в месяц развернуть свой сайт-визитку на vps”. Какие 139 рублей за сайт-визитку, совсем уже стыд потеряли?!

В этой статье я вам пошагово расскажу и покажу как бесплатно разместить и вести ваш личный сайт(блог, cv, wiki). Вам даже отдельный домен не нужен (всё будет “из коробки”), хотя в последнем шагом мы и его прикрутим. От вас нужны будут базовые знания git и просто уметь работать с markdown.

Читать далее

Всё про Generic Math в C#

Level of difficultyHard
Reading time21 min
Views13K


С момента своего релиза в C# 11 и .NET 7 Обобщённая Математика так и осталась тёмной лошадкой в глазах программистов. Разработчики не понимают и не используют эту фичу, статья же ответит на все вопросы и разложит всё по полочкам.

Рассмотрим с нуля концепцию Generic Math. Как она выглядит в C# и других языках программирования, почему вообще появилась. Также зароемся в «кишки» System.Numerics и узнаем, как применить в продакшне кровавого ынтэрпрайза.
Читать дальше →

readonly struct в C#

Level of difficultyEasy
Reading time5 min
Views5.3K

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

Вы, вероятно, уже сталкивались с struct в C# и задумались: а зачем нужен readonly struct и когда он реально спасает, а когда, наоборот, начинает всё тормозить? Сегодня это и рассмотрим.

Читать далее

Взлом зашифрованного pdf-файла. Часть 2

Level of difficultyEasy
Reading time4 min
Views7.3K

Всех приветствую, читатели Хабра!

Вторая часть исследования безопаности файлов pdf. После того, как я опубликовал первую часть (https://habr.com/ru/articles/906076/) у одного из моих коллег возник вопрос: а что если зашифровать pdf файл при помощи программы Adobe (естественно на Windows). Естественно что, меня заинтересовал этот вопрос, и мы решили совместно с моим коллегой зашифровать файлы в ОС Windows (10) при помощи Adobe и на сайте, указанном в первой части. Один из файлов был зашифрован в Windows но на сайте указанном в первой части статьи. Сделал я это специально для того, чтобы узнать не будет ли проблем совместимости на двух ОС - Windows и Linux, и возможно ли кракнуть такой файл, который был создан в другой системе, так сказать тестовый запуск. Другие файлы были зашифрованы в программе, опять же на ОС Windows. Почему мой коллега и я задались вопросом возможности крака? В Adobe возможно зашифровать pdf файл при помощи небезызвестного AES!

Примечание

Правовая информация:

Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях.
Автор статьи не несет ответственности за ваши действия.
Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей

Читать далее

C#, Кодогенерация и DDD Часть 1 — Настраиваем проект и запускаем простой кодогенератор

Level of difficultyMedium
Reading time8 min
Views7.5K

В этом цикле статей рассмотрим как можно легко и быстро делать на C# любые однотипные действия просто навешивая атрибуты на доменные сущности

(первая часть, вторая часть, третья часть, четвертая часть)

Читать далее

Реализация базового метода Стёрмера-Верле

Level of difficultyEasy
Reading time5 min
Views5.6K

Используем силу уравнений Ньютона и численных методов для моделирования динамики простых плоских мешей в реальном времени! В конце вы сможете моделировать падение ножниц ✂️ как на анимации

Читать далее

Разрабатываем печать документов на .NET с помощью OpenXml. Часть 2

Reading time6 min
Views1.1K

Всем привет! Я Александр Родов, ведущий разработчик в компании «БАРС Груп», автор и руководитель разработки сервиса генерации печатных форм Sprinter. Этой статьей мы продолжаем рассказ о возможностях использования библиотек DocumentFormat.OpenXml для генерации печатных файлов «офисных» форматов.

Напомним, в предыдущей части мы сформулировали постановку нашей демонстрационной задачи, а именно разработать печать данных заказа в некотором абстрактном интернет-магазине. Далее реализовали первую часть документа, содержащую шапку документа и колонтитул с логотипом магазина. Подробнее с постановкой задачи и примерами исходного кода можно ознакомиться по ссылке выше. Ну а на очереди у нас — печать таблиц в docx!

Читать далее
1
23 ...

Information

Rating
Does not participate
Registered
Activity