RU

Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам. Часть 2

В первой части мы успешно вскрыли чёрный ящик LINQ: написали  Where  вручную, разобрались, как компилятор превращает  yield return &n…

.netlinqyieldc#итераторыкомпиляторленивые вычисленияотложенное выполнениеienumerabledeffered execution
Habr
RU

Code, Force, Repeat. Олдскульный GUI для олдскульных скриптов. Часть 2. Действие

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

f#.netконсольные приложенияконсольные скриптыmvufsxcodeforcesспортивное программирование
Habr
RU

Практическое применение линейной реализации асинхронных операций на примере WPF приложения

В этой статье я покажу, как использовать IAsyncEnumerable в WPF‑приложении для асинхронных операций. Код полностью рабочий, его…

iasyncenumerableасинхронное программированиечистая архитектураc#.net
Habr
RU

Code, Force, Repeat. Олдскульный GUI для олдскульных скриптов. Часть 1. Экспозиция

В этот раз я пришёл с двухчастным текстом про F#, тайппровайдеры, скрипты, спортивное программирование, MVU, консольные интерфейсы в стиле FarManage…

f#.netконсольные скриптыконсольные приложенияmvufsxcodeforcesспортивное программирование
Habr
RU

1500 строк красного: как обновление одного плагина на Rust-сервере съедает вечер — и почему виноват diff

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

rustc#.netavaloniajson
Habr
RU

Лицензионный ключ на 202 символа: почему не Ed25519 и не RSA

Понадобилось научить десктопную программу принимать лицензионные ключи: строка из письма вставляется руками и проверяется без интернета. Во что это…

ecdsaed25519.netc#цифровая подписьлицензированиекриптографияBouncyCastlelibsodiumbase32
Habr
RU

CraftHub: вложенный JSON больше не расплющивается в колонки, плюс подсветка синтаксиса и ещё по мелочи

Вложенный JSON-объект при импорте в таблицу расплющивался в колонку robot.point.x — и вся структура терялась безвозвратно. Разобрался, как сделать э…

avaloniaavaloniauijsonc#.net
Habr
RU

Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам. Часть 2

В первой части мы успешно вскрыли чёрный ящик LINQ: написали Where вручную, разобрались, как компилятор превращает yield return в конечные автоматы,…

.netlinqyieldc#компиляторитераторыленивые вычисленияотложенное выполнениеienumerabledeffered execution
Habr
RU

CraftHub: я устал редактировать JSON руками — а сообщество помогло превратить это в удобный инструмент

Полгода назад я так устал вручную ковыряться в JSON, что написал свой редактор — просто чтобы не сойти с ума. Выложил статью на Хабр, не ожидая ниче…

JSONC#.netavaloniaavaloniaui
Habr
RU

Я ненавижу AutoMapper

Признайтесь, и вы тоже. Наверное, нет более противоречивой библиотеки в мире .NET чем  AutoMapper . Тысячи проектов его используют, а разработч…

.netc#resharperrider
Habr
RU

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 15. Кульминация и полёт

В прошлой главе мы начали разбирать порт тайловых миров на F#, где познакомились с некоторыми малоизвестными возможностями Godot. В этот раз наш при…

f#godotgodot engine.netrenderingrendering server
Habr
RU

Kafka в проде: как встроенное сжатие спасло кластер, когда retention не успевал чистить диск

Привет, Хабр! Меня зовут Павел, я ведущий разработчик. В этой статье расскажу про Kafka, consumer groups, lag, offset commit и встроенное сжатие соо…

kafkacsharp.net.net coreconsumer groupretentioncompressionbackenddistributed systems
Habr