Давно я сюда не писал, обходился Telegram и Twitter, но поля их слишком малы, чтобы вместить эту статью :)
Для небольшого исследования в области упаковки чисел мне понадобилось получить минимальное количество бит, требуемое для записи числа.
Его, конечно, математически можно получить с помощью двоичного логарифма “округлённого к большему целому” (буду использовать обозначение lg n).
Как вы, вероятно, знаете, в .NET Core 3.0 появились intrinsic’и[1], в частности, LZCNT. Она, конечно, возвращает leading zeroes,
но вычесть-то из 31 (для индекса в каком-нибудь массиве) или из 32 (для количества бит на число) недолго.
Однако, мне было интересно узнать и универсальное решение. В .NET Core 3.0, к счастью, добавили для этого класс BitOperations[2].
А мне, конечно же, захотелось посмотреть его исходники…
Если вы помните, давным давно я писал про srcset и sizes для картинок.
Эти атрибуты позволяют подсказать браузеру, какие картинки лучше грузить (работают для тэгов img и picture).
А сегодня увидел твит, который одной картинкой поясняет принципы работы. И решил напомнить вам эту тему.
Недавно прочитал замечательную статью User experience design for APIs.
Крайне рекомендую прочитать. И не смотрите, что это блог Keras — советы применимы к любому коду.
Мои рассуждения на эту тему:
Большинство советов логичны и понятны. Скажу больше — многие очевидны. Однако почему, блин, мы так не делаем?
Ответ на вопрос из предыдущего пункта: чаще всего, проблема в нехватке времени.
Способ решения: когда несколько раз сталкиваешься с одной и той же проблемой UX в API — решить её.
Для тех, кто пользуется Visual Studio Code, может быть полезным попробовать webhint.
Можете прочитать о нём в статье Getting hints from Visual Studio Code.
А установить из маркетплейса.
Краткое описание далее.
Рекомендую к прочтению статьи об исключениях в .NET. Точно стоит прочитать первую статью — Исключения: архитектура системы типов.
В ней много полезного, особенно — для новичков. Остальные тоже можно, если эта тема интересует:
Martijn Cuppens опубликовал простой CSS, который заставляет
div выглядеть ну очень по-разному в разных браузерах.
Что могу сказать — ещё одна хорошая иллюстрация для принципа “CSS IS AWESOME” :)
Недавно вышла статья System.IO.Pipelines: High performance IO in .NET.
Она про то, как реализовать более наглядную и быструю работу со стримами в .NET Core 2.1.
От слишком краткого пересказа статья многое потеряет — читайте оригинал. Ладно, будем честными — я сегодня подустал, поэтому бегло её прочитал и не очень разбирался :)