Как стать автором
Обновить
114
0

Desktop software developer

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

Заметки по архитектуре .NET библиотеки: пространства имён

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

Одно пространство имён для всего или же отдельные под каждую папку? Быть может, есть варианты интереснее? Рискнём и ступим на землю жестоких программистских баталий, в которых льётся цифровая кровь и рождается “истина”: какая из организаций пространств имён есть свет, а какая от лукавого.

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

Заметки по архитектуре .NET библиотеки: кастомные структуры как средство валидации значений

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

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

Читать далее
Всего голосов 19: ↑18 и ↓1+25
Комментарии46

Музыкальное время и MIDI

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

В статье завершим цикл материалов по преобразованию MIDI-времени в другие форматы. Попутно столкнёмся с неожиданным приступом оверинжиниринга, напишем микроскопическое количество кода и откроем для себя неправильную музыку.

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

MIDI → Метр → MIDI

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

Статья поведёт нас через границу, где сходятся MIDI и метрическое время. В этом путешествии мы откроем брошюру по Международной системе единиц СИ, повстречаем файлы с более чем 6000 изменений темпа, столкнёмся с ошибками округления и напишем немного кода. Звучит заманчиво? Тогда добро пожаловать!

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

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

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

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

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

Из Open Source с любовью

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

На написание данной статьи меня вдохновила другая – Как делается OpenSource: личный опыт. Мой проект DryWetMIDI менее масштабный, но тем не менее весьма популярен в своей нише. В статье я вспомню, как он создавался, развивался, что дал (и продолжает давать) и какие были любопытные моменты по пути. Надеюсь, сии мемуары будут вам интересны и полезны в ваших собственных начинаниях.

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

Конвертация MIDI-времени в такты и доли

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

Представьте: вы создаёте новый шедевр в любимой DAW, вставляете в проект MIDI-файл, редактор показывает, что ноты в нём имеют восьмую длительность. Не обращая на это внимания, вы продолжаете творить. Но, постойте. А как DAW, собственно, понимает, что ноты в файле восьмые?

В статье попробуем разобраться, как времена в MIDI-файле соотносятся с главным форматом времени при работе с музыкой – тактами и долями. Результатом наших исследований будет законченный алгоритм на C#.

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

Создание .NET библиотеки от А до Я

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

Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?

Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.

Читать далее
Всего голосов 42: ↑41 и ↓1+51
Комментарии13

Таймер в .NET с интервалом 1 мс. macOS

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

Ранее мы уже посмотрели, чем нам может помочь .NET в реализации задачи, обозначенной в теме статьи, в Windows. Сейчас рассмотрим её решение в macOS.

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

Таймер в .NET с интервалом 1 мс. Windows

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

Вы пишите код на платформе .NET под Windows и вам нужно выполнять некоторые действия каждую миллисекунду. Возможно ли это? Какие есть варианты и насколько они надёжны? Разберёмся, что можно использовать, и какие есть гарантии по точности срабатывания. Статья сконцентрирована на поиске такого решения, которое работало бы и под .NET Framework, и под .NET Core / .NET, и в разных версиях ОС, и являлось бы механизмом общего назначения (а не только для программ с GUI, например).

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

Введение в CoreMIDI

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

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

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

Creating a NuGet package for a library with platform-specific API

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

When creating a .NET library with a partially platform-specific API, we should think about how to pack it into a NuGet package so that the installed library will work in various scenarios (.NET Framework, .NET Core, self-contained application and so on). Unfortunately, it is difficult to find a step-by-step instruction on the web that describes how to perform this task. This article is intended to be such an instruction.

Read more
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Создание пакета NuGet для библиотеки с платформозависимым API

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

Когда речь заходит о создании .NET библиотеки, части API которой являются платформозависимыми, приходится думать, как всё это оформить в NuGet пакет, да так, чтобы установленная из пакета библиотека работала в разных сценариях (.NET Framework, .NET Core, self-contained app и т.д.). К сожалению, в сети сложно найти инструкцию, которая бы шаг за шагом показывала, как выполнить эту задачу. Данная статья призвана быть такой инструкцией.

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

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Test Automation Engineer
Lead
C#
.NET
Git
Selenium
Test Automation