SimpleR - выглядит интересно, но пока в версии 1.0.0-alpha.1 :)) рановато использовать в продакшене. #dotnet
Medium
SignalR Simplified: Creating Efficient Pure WebSocket Servers with SimpleR for ASP.NET Core
Creating pure WebSocket server on ASP.NET Core has become a lot easier. Learn how to use SimpleR in scenarios where SignalR is not an…
❤1👍1
Пара десятков вопросов (статья на linkedin) для задач на собесах со ссылками на solution #howto #questions
👍1
Столкнулся тут с необходимости поснифать на DEV среде трафик между контейнерами докера... Некоторое количество командных строк на память.
Для начала с помощью
Дампы пакетов в ASCII ( -A ):
Тоже самое + поиск по подстроке 'Sec-WebSocket-Key':
Фильтрация только с флагом SYN (например для того чтобы посмотреть установку входящих соединений):
Мониторинг keep-alive пакетов
Отображение заголовков http-пакетов GET/POST/HEAD
Ну а потом я вспомнил, что есть такой инструмент как nast, который позволяет дампить более простой строкой как заголовки так и тело входящего запроса:
#tools #docker #tcpdump
Для начала с помощью
docker network ls
надо выяснить id нужного интерфейса (далее этот id написан как INTERFACE), 8000 - это exposed port моего контейнера.Дампы пакетов в ASCII ( -A ):
tcpdump -i INTERFACE 'tcp dst port 8000' -A
Тоже самое + поиск по подстроке 'Sec-WebSocket-Key':
tcpdump -i INTERFACE 'tcp dst port 8000' -A | grep 'Sec-WebSocket-Key:'
Фильтрация только с флагом SYN (например для того чтобы посмотреть установку входящих соединений):
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] & (tcp-syn) != 0)' -A
Мониторинг keep-alive пакетов
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] == tcp-ack and less 1)' -A
Отображение заголовков http-пакетов GET/POST/HEAD
tcpdump -i INTERFACE 'tcp dst port 8000' -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'
Ну а потом я вспомнил, что есть такой инструмент как nast, который позволяет дампить более простой строкой как заголовки так и тело входящего запроса:
nast -i INTERFACE -d -f 'tcp dst port 8000'
#tools #docker #tcpdump
👍8
Ещё одна статья по поводу использования ArrayPool<T>. Это и правда помогает, когда надо много аллоцировать на короткое время. Особенно помогает если надо аллоцировать буферы примерно одинакового размера. #dotnet
www.sharpgis.net
dotMorten | Removing Memory Allocations in HTTP Requests Using ArrayPool<T>
dotMorten - .NET Ramblings, XAML hacking and some GIS endeavors - This post will describe how you can make network requests in .NET without constantly allocating large amounts of memory and reduce your allocations to almost zero.
👍3
Простой вариант сделать свой reverse proxy с помощью YARP. Также в статье не описано этого, но рулить балансировкой можно из кода - основываясь на каких-то других (своих) критериях (время, адрес-подсеть источника, ...) #dotnet #architecture
👍1🔥1
Monoliths have been problematic, then micro-services turned out to be differently problematic. So let’s swing the pendulum back partway but focus more on making our monoliths modular for easier, more maintainable long term development.
Ещё один взгляд на модульные монолиты.
Вторая часть статьи, более подробная. #architecture
Ещё один взгляд на модульные монолиты.
Вторая часть статьи, более подробная. #architecture
❤3
Некоторое количество советов при логировании с помощью Serilog (в основном связано с обогащением контекста разными штуками, чтобы потом легче было искать в логах нужное) #dotnet
Code Maze
Best Practices for Logging With Serilog
In this article, we'll take a closer look at some best practices when it comes to logging in .NET with Serilog.
🔥2
Чуть более десятка полезных запросов для Postgres собрал и оформил с примерами. Для одного поста в телегу - это слишком много (особенно с разметкой примеров вывода). Так что положил в виде gist на github:
🔸Текущие выполняемые запросы
🔸Запросы, выполняемые более 1 секунды
🔸Таблицы с % попадания в кэш при их использовании
🔸Размеры таблиц (включая индексы)
🔸Размеры индексов
🔸Размер текущей БД
🔸Размеры и наличие временных файлов
🔸Статистика по чтению индексов
🔸Статистика использования индексов
🔸Топ 5 самых активных таблиц
🔸Топ 5 самых активных индексов
🔸Никогда не использованные индексы
#postgres
🔸Текущие выполняемые запросы
🔸Запросы, выполняемые более 1 секунды
🔸Таблицы с % попадания в кэш при их использовании
🔸Размеры таблиц (включая индексы)
🔸Размеры индексов
🔸Размер текущей БД
🔸Размеры и наличие временных файлов
🔸Статистика по чтению индексов
🔸Статистика использования индексов
🔸Топ 5 самых активных таблиц
🔸Топ 5 самых активных индексов
🔸Никогда не использованные индексы
#postgres
👍8🔥6🤓1
LongQueryInterceptor.cs (gist) - автоматически логирует в штатный лог запросы EntityFramework, которые выполняются дольше чем указанное время. #dotnet #ef
👍7🔥3
inject/provide в Vuejs - да... это не Рио-де-Жанейро, конечно назвать это DI сложно, но помогает разгрузить код от кросс-ссылок на файлы. Ну и офиц документация да, она правда нищевата на примеры.
#vuejs
#vuejs
👍1
Zuplo - интересный проект, который позволяет завернуть твоё API в них и делать разное (биллить, менеджить ключи, ...) без особых телодвижений.
Zuplo
API Key Management - Zuplo
Zuplo's API key management makes it easy to create, manage, and revoke API keys. Create API keys for your team members and give them access to only the data they need.
🤔2👍1
Как-то прошло мимо и я заметил только щас, что недавно был анонсирован pl/dotnet (там есть ссылка на github), который позволяет писать функции и процедуры на C# для Postgres.
В прод конечно же я бы это затаскивать не стал, потому что версия 0.99beta (что как бы намекает), ну и помня историю с появлением аналогичного в MSSQL - где в первых версиях (ну как в первых, в mssql 2005 что ли) на каждый вызов создавался app domain, а после вызова удалялся. В эпоху .net 4.0 это было небыстро и било по перфомансу запросов прилично, а также регулярно отрывало башку оптимизатору, который не знал как оценить план выполнения такой функции. Так что в первых версиях это можно было использовать только для каких-нибудь единичных штук (отправить емайл, распарсить файл, дёрнуть урл, ...). Потом это конечно же починили, но я никогда так и решился использовать .net внутри mssql.
Но времена нынче другие, .net стал сильно побыстрее и думаю там это вполне пригодно. Не могу пока придумать зачем, но интересно.
#dotnet #postgres
В прод конечно же я бы это затаскивать не стал, потому что версия 0.99beta (что как бы намекает), ну и помня историю с появлением аналогичного в MSSQL - где в первых версиях (ну как в первых, в mssql 2005 что ли) на каждый вызов создавался app domain, а после вызова удалялся. В эпоху .net 4.0 это было небыстро и било по перфомансу запросов прилично, а также регулярно отрывало башку оптимизатору, который не знал как оценить план выполнения такой функции. Так что в первых версиях это можно было использовать только для каких-нибудь единичных штук (отправить емайл, распарсить файл, дёрнуть урл, ...). Потом это конечно же починили, но я никогда так и решился использовать .net внутри mssql.
Но времена нынче другие, .net стал сильно побыстрее и думаю там это вполне пригодно. Не могу пока придумать зачем, но интересно.
#dotnet #postgres
😁2🤔2👍1
Т.к. я не дизайнер ниразу (а иногда UI делать надо :) - нахожу интересным посмотреть на готовые UI например на layers.to.
Там есть конечно весьма спорные решения (с точки зрения юзабельности, например это што) - но в целом большое собрание, чтобы можно было посмотреть на сочетание цветов и некоторые подходы. #ui
Там есть конечно весьма спорные решения (с точки зрения юзабельности, например это што) - но в целом большое собрание, чтобы можно было посмотреть на сочетание цветов и некоторые подходы. #ui
👍8
Tomato Architecture - A Pragmatic Approach to Software Design - время изучить ещё один подход к архитектуре :))) название конечно ну такое и в целом там ничо нового в статье, однако интересны два подхода связанные с модульностью:
Package by feature - правда тут вылезает вопрос как именно классифицировать feature и насколько гранулярно, но там есть ссылка на другую статью, где чуть подробнее раскрываеца это.
Test not only units, but whole features - вот это тоже интересная штука. Unit-тесты безусловно полезны и нужны (особенно если у тебя математика внутри), но вот интеграционные тесты на feature как раз показывают как будет работать твоя feature в окружении. #architecture #howto
Package by feature - правда тут вылезает вопрос как именно классифицировать feature и насколько гранулярно, но там есть ссылка на другую статью, где чуть подробнее раскрываеца это.
Test not only units, but whole features - вот это тоже интересная штука. Unit-тесты безусловно полезны и нужны (особенно если у тебя математика внутри), но вот интеграционные тесты на feature как раз показывают как будет работать твоя feature в окружении. #architecture #howto
🔥2