Публикации

BindingFlags.DoNotWrapExceptions

dotNET dotNET

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

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

CoreRT

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

TL&DR;

CoreRT — поддержка native code для .NET Core. Слишком коротко. Ладно, это проект, который делает из сборок для .NET Core машинный код. И собирает в один файл вместе с рантаймом. Пока альфа.

Если хотите чуть больше подробностей — читайте дальше.

Про баг в MSSQL 2000 и обратную совместимость

Базы данных  /  Внезапно Databases  /  Microsoft

Приходит как-то ко мне мой коллега Дима Писаренко и говорит — “есть вопрос по SQL, но это надо видеть”. И таки-да, это стоило увидеть :)

Как думаете, что возвращал подобный запрос (любое сходство с реальными данными случайно)?

SELECT name, B as A FROM (SELECT 'first' as name, 1 as A, 2 as B UNION SELECT 'second', 2, 1) T1 ORDER BY T1.A;

Удобные таблицы с данными

UX  /  Дизайн и юзабилити  /  Визуализация UX+Usability  /  Design

Полтора года назад писал о представлении таблиц и диаграмм. По-прежнему считаю, что ту гифку сложно превзойти (по соотношению объём/полезность).

Прочитал ещё одну статью по теме — более длинную, зато с парой свежих советов.

UX для форм

UX UX+Usability

Сегодня немного про UX:

  • Размещение сообщений об ошибках.
  • Выбор между радио-кнопками и выпадающими списками
  • Покупка в 1 клик

Модификатор in, readonly struct и их производительность

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

В прошлом месяце я писал об улучшениях производительности в .NET Core 2.1, а сегодня расскажу о двух фичах C# 7.2 — модификаторе “in” и readonly-структурах.

Рассказ, как обычно, будет коротким. Но со списком статей для дополнительного изучения :) Пара статей Сергея Теплякова и мотивировала меня написать этот краткий конспект на русском языке.

Релизы Node.js, npm и nginx

Новости Node.js  /  News

Недавно вышли новые версии: Node.js 10, npm 6 и Nginx 1.14. На всякий случай — Node.js 10 будет LTS в октябре.

Node.js 10

Вкратце, изменения следующие:

  • N-API (для вызова C++)
  • OpenSSL 1.1.1
  • Асинхронные циклы
  • Коды ошибок
  • Обновление v8 до 6.6

Чуть больше про асинхронные циклы. Это возможность проитерировать что-то, возвращающее промисы в цикле и дождаться их завершения. Как-то так:

for await (const chunk of fs.createReadStream(filepath)) { // ... }

Оптимизация производительности в .NET Core 2.1

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

Скоро в свет выйдет .NET Core 2.1. Осталось сделать меньше 1% задач. Конечно, оставшиеся 5% проекта занимают 95% времени, но будем оптимистами :)

Далее будет краткое резюме статьи Performance Improvements in .NET Core 2.1.

Если вы готовы прочитать эту интересную, но огромную статью — прочитайте. Я всё-таки пристрастен и расскажу о том, что интересно лично мне. А если не хотите читать и короткую…

TL&DR; Значительно (в 1.5-2 раза) улучшена производительность многих вещей, в том числе:

  • Структуры (Value types). Это ключевые изменения, многие оптимизации сделаны за счет Span<T> и Memory<T>.
  • Сравнения. Также оптимизированы сравнения внутри Dictionary .
  • Строки — оптимизированы не только сравнения, но и такие штуки как ToLower, Format и Parse.
  • Потоки, блокировки и async/await.
  • Socket, SslStream и HttpClient.

Далее немного про некоторые оптимизации.