Публикации

UX для API

UX  /  Общее UX+Usability  /  API

Недавно прочитал замечательную статью User experience design for APIs. Крайне рекомендую прочитать. И не смотрите, что это блог Keras — советы применимы к любому коду.

Мои рассуждения на эту тему:

  • Большинство советов логичны и понятны. Скажу больше — многие очевидны. Однако почему, блин, мы так не делаем?
  • Ответ на вопрос из предыдущего пункта: чаще всего, проблема в нехватке времени.
  • Способ решения: когда несколько раз сталкиваешься с одной и той же проблемой UX в API — решить её.

Всё может JavaScript, и в браузере тоже

Общее  /  Языки JavaScript  /  Git

Я мог бы рассказать про релиз Node.js v10.12.0, но это не особо интересно.

Скорее всего, вы слышали про возможность поиграть в Doom в браузере, но сегодня не об этом :) Если интересно, проект js-dos использует em-dosbox для запуска DOS-овских программ в браузере.

Я вкратце расскажу о нескольких проектах, про которые я узнал сегодня, посмотрев на один из них.

Давным-давно в ленте твиттера…

Малоизвестные фичи MS SQL 2012

Базы данных Database  /  Microsoft

Давно не смотрел на новые фичи MS SQL, а за последний месяц узнал несколько. Они далеко не ключевые, но их знание может пригодиться.

Если вы считаете, что:

  • для форматирования дат внутри SQL надо использовать CONVERT и DATEPART или подключать внешние функции;
  • можно воткнуть в таблицу множество столбцов [N]VARCHAR(MAX), всё равно они хранятся отдельно;
  • нельзя сделать в одной таблице два поля VARCHAR(5000) или можно, но нельзя в оба записать максимально длинные строки;

… читайте дальше.

Об исключениях в .NET

dotNET  /  CSharp dotNET

Рекомендую к прочтению статьи об исключениях в .NET. Точно стоит прочитать первую статью — Исключения: архитектура системы типов. В ней много полезного, особенно — для новичков. Остальные тоже можно, если эта тема интересует:

Плагины для отображения размера пакетов

IDE  /  Производительность Node.js  /  Performance  /  Tools

Недавно узнал, что есть плагин import-cost, показывающий размер импортируемого пакета непосредственно в редакторе. Есть вариант для Visual Studio Code, есть для IDE семейства InelliJ.

Авторы — разные люди. Но делают одно полезное дело. Может, кто-то задумается и не будет тянуть модуль из-за одной простецкой функции :)

Pipelines и Channel<T>

dotNET  /  Производительность dotNET  /  Performance

Недавно вышла статья System.IO.Pipelines: High performance IO in .NET. Она про то, как реализовать более наглядную и быструю работу со стримами в .NET Core 2.1.
От слишком краткого пересказа статья многое потеряет — читайте оригинал. Ладно, будем честными — я сегодня подустал, поэтому бегло её прочитал и не очень разбирался :)

Часть кода из статьи:

BindingFlags.DoNotWrapExceptions

dotNET dotNET

В .NET Core 2.1 добавили новый флаг BindingFlags.DoNotWrapExceptions. Странно, что в документации этот флаг не описан. Хотя, чему я удивляюсь, пора бы привыкнуть.

Если вкратце, с этим флагом Reflection не заворачивает исключения в TargetInvocationException. Подробности можно прочитать на GitHub.