Волей случая принесло ssr-benchmark - сравнение SSR-фреймворков. vue и nuxt вполне себе норм, быстрее реакта :) #ui #vuejs
GitHub
GitHub - eknkc/ssr-benchmark: Benchmarking JS web framework SSR performance
Benchmarking JS web framework SSR performance. Contribute to eknkc/ssr-benchmark development by creating an account on GitHub.
🥰1
Контейнер с "почтовым сервером" и UI для него, который можно использовать для отладки/тестирования
Также напоминаю про https://webhook.site - который умеет не только почту принимать и показывать в реальном времени, но и принимать вебхуки по get / post и показывать содержимое чего там пришло. Использовал для интеграции со Stripe, временно направив туда вебхуки от него.
#tools #dev
Также напоминаю про https://webhook.site - который умеет не только почту принимать и показывать в реальном времени, но и принимать вебхуки по get / post и показывать содержимое чего там пришло. Использовал для интеграции со Stripe, временно направив туда вебхуки от него.
#tools #dev
👍7
Использование ClaimsTransformation для RBAC.
Помимо того, что описано в статье - напоминаю, что в пришедшего юзера (User.Identity) можно добавлять свои клаймы прямо во время обработки входящего запроса и которые (например) не были известны на момент аутентификации юзера, но возможно понадобяца в дальнейшей обработке запроса.
Я таким образом добавлял id организации, которой принадлежит юзер (доставалось из базы по id юзера, который брался из его клаймов), потому что этот id кое-где использовался для вышеупомянутой RBAC. Это можно например делать в custom AuthenticationHandler (статья про это). #dotnet
Помимо того, что описано в статье - напоминаю, что в пришедшего юзера (User.Identity) можно добавлять свои клаймы прямо во время обработки входящего запроса и которые (например) не были известны на момент аутентификации юзера, но возможно понадобяца в дальнейшей обработке запроса.
Я таким образом добавлял id организации, которой принадлежит юзер (доставалось из базы по id юзера, который брался из его клаймов), потому что этот id кое-где использовался для вышеупомянутой RBAC. Это можно например делать в custom AuthenticationHandler (статья про это). #dotnet
🔥3
Несложная сводная статья API Gateway vs. Load Balancer vs. Reverse Proxy - что, для чего, когда, почему и зачем используются те или иные штуки и чем они отличаются. #howto
❤4👍3
Возвращаясь к теме профайлинга в контейнерах.
На днях мне эти инструменты - а конкретно dotnet-trace и dotnet-counters - помогли выяснить, что перф просирается в контейнере по причине перекомпиляции EF запроса при каждом вызове. Простой вынос его в EF.CompiledQuery снизил утилизацию проца почти в 8 раз. Да, этот запрос вызывался много раз в секунду, но я первый раз такое вижу, чтобы оно ТАК влияло.
В любой контейнер эти инструменты ставятся очень просто. У меня на данный момент контейнеры собираются на базе mcr.microsoft.com/dotnet/aspnet:8.0.2-alpine3.19 и там надо
Потом снимаешь трейсы с помощью dotnet-trace, выносишь из контейнера (с помощью
PS Не забудьте убедица, что в вашем dockerfile НЕТ этой строки:
потому что у меня она изначально была и инструменты соответственно не работали - просто не видился процесс :))
На днях мне эти инструменты - а конкретно dotnet-trace и dotnet-counters - помогли выяснить, что перф просирается в контейнере по причине перекомпиляции EF запроса при каждом вызове. Простой вынос его в EF.CompiledQuery снизил утилизацию проца почти в 8 раз. Да, этот запрос вызывался много раз в секунду, но я первый раз такое вижу, чтобы оно ТАК влияло.
В любой контейнер эти инструменты ставятся очень просто. У меня на данный момент контейнеры собираются на базе mcr.microsoft.com/dotnet/aspnet:8.0.2-alpine3.19 и там надо
apk add dotnet7-sdk
dotnet tool install --global dotnet-trace
dotnet tool install --global dotnet-counters
...
Потом снимаешь трейсы с помощью dotnet-trace, выносишь из контейнера (с помощью
docker cp
) и рассматриваешь их с помощью Jetbrains dotTrace (два чая этим господам, исключительно удобная штука для рассматривания следов преступления под лупой)PS Не забудьте убедица, что в вашем dockerfile НЕТ этой строки:
ENV DOTNET_EnableDiagnostics=0
потому что у меня она изначально была и инструменты соответственно не работали - просто не видился процесс :))
Telegram
📓 Записки программера
Как профайлить софт в контейнере с помощью штатных инструментов. Несмотря на то, что в заголовоке упомянуто .net 6 - оно работает и net 5 тоже без изменений. Дампы получаемые из контейнера - открываются не только в Visual Studio, но и в Rider тоже. Что немаловажно…
👍11🔥6❤1
На просторах твиттера нашлась свеженькая ссылка по подготовке к алгоритмическим собесам.
GitHub
GitHub - beagreatengineer/algo-interview: 🧑💻 Бесплатный, минимально необходимый план подготовки к алгоритмическому интервью в…
🧑💻 Бесплатный, минимально необходимый план подготовки к алгоритмическому интервью в компанию мечты. Для начинающих и опытных специалистов. - beagreatengineer/algo-interview
👍7
FluentContracts - с одной стороны выглядит симпатично... С другой стороны - выглядит, что писанины становится чуть больше. Надо вобщем попробовать в какой-нибудь небольшой проект затащить :) #dotnet
👍4👎1🤔1
Бесплатная книга Architecting Modern Web Applications with ASP.NET Core and Microsoft Azure за авторством Steve Smith и Microsoft. Я пролистал, ну в целом сакральных знаний там не особо, но для джунов зайдет отлично, особенно учитывая что там есть ряд интересных ссылок, например на Design Patterns с примерами и сводную таблицу Principles там же.
#books #dotnet
#books #dotnet
👍4
Пишут, что релизнули MongoDB.EntityFrameworkCore - ну и LINQ-запросы выглядят почти как традиционные LINQ в EF. А у меня так и не дошли руки посмотреть во что транслируются Where/Select/... в этом случае.
#dotnet
#dotnet
MongoDB
MongoDB Provider for Entity Framework Core Now Generally Available | MongoDB Blog
We are pleased to announce that the MongoDB Provider for Entity Framework Core (EF Core) is now generally available. Learn more.
🔥2
Короткая статья с картинками про кэширование (наверное больше тоже для джунов, потому что там очевидные вещи и стратегии кэширования рассказываюца #howto
🔥3❤1
Ладно, в продолжение предыдущего поста я дополню, что есть интересного ещё из иконок
https://icomoon.io (1000+)
https://boxicons.com (1600+)
https://icons.getbootstrap.com (2000+)
https://css.gg (700+)
https://circumicons.com (1600+)
https://devicon.dev (470+)
https://feathericons.com (280+)
https://primer.style/foundations/icons (250+)
https://heroicons.com (288)
https://ionic.io/ionicons (1300+)
https://lucide.dev/icons (1400+)
https://remixicon.com (2800+)
https://www.radix-ui.com/icons (есть для figma)
https://tabler.io/icons (5200+)
https://simplelineicons.github.io
https://www.s-ings.com/typicons
https://phosphoricons.com (9000+)
https://game-icons.net (4000+)
Агрегаторы (?), там много наборов в разных стилях:
https://icon-sets.iconify.design
https://www.flaticon.com
https://icons8.com
https://thenounproject.com
#ui #icons
https://icomoon.io (1000+)
https://boxicons.com (1600+)
https://icons.getbootstrap.com (2000+)
https://css.gg (700+)
https://circumicons.com (1600+)
https://devicon.dev (470+)
https://feathericons.com (280+)
https://primer.style/foundations/icons (250+)
https://heroicons.com (288)
https://ionic.io/ionicons (1300+)
https://lucide.dev/icons (1400+)
https://remixicon.com (2800+)
https://www.radix-ui.com/icons (есть для figma)
https://tabler.io/icons (5200+)
https://simplelineicons.github.io
https://www.s-ings.com/typicons
https://phosphoricons.com (9000+)
https://game-icons.net (4000+)
Агрегаторы (?), там много наборов в разных стилях:
https://icon-sets.iconify.design
https://www.flaticon.com
https://icons8.com
https://thenounproject.com
#ui #icons
👍6
Хорошая статья "что происходит когда деплоишь в кубер"
https://github.com/jamiehannaford/what-happens-when-k8s #kubernetes
https://github.com/jamiehannaford/what-happens-when-k8s #kubernetes
GitHub
GitHub - jamiehannaford/what-happens-when-k8s: 🤔 What happens when I type kubectl run?
🤔 What happens when I type kubectl run? Contribute to jamiehannaford/what-happens-when-k8s development by creating an account on GitHub.
https://typehero.dev - challenges на TypeScript #typescript
TypeHero
Level up and learn TypeScript with interactive exercises
👍2
Наконец-то в Orleans завезли resource optimized placement strategy - можно написать кастомный strategy placement провайдер и orleans будет знать/раскидывать в правильном объеме грейны по silo.
upd: мда, нормально проект с redis clustering/membership с предыдущей 8.0.0 не апдейтица - всё развалилось из-за keyed services в Redis membership провайдере. Ладна, подождём пока починят.
upd2: localhost clustering работает (проверил IAsyncEnumerable - работает годно :)
#dotnet
upd: мда, нормально проект с redis clustering/membership с предыдущей 8.0.0 не апдейтица - всё развалилось из-за keyed services в Redis membership провайдере. Ладна, подождём пока починят.
upd2: localhost clustering работает (проверил IAsyncEnumerable - работает годно :)
#dotnet
Microsoft News
What’s new in Orleans 8 for Scalable Distributed Applications
Let's take a look at what is new with Orleans for building robust, scalable distribute applications with Orleans 8 and integration with .NET Aspire.
This media is not supported in your browser
VIEW IN TELEGRAM
Какая интересная штука, которую я прямо таки щас трогаю на предмет использования в бизнес-целях - https://www.danswer.ai - self-hosted (бесплатно) или cloud (платно), подключается OpenAI или Azure/AWS - но самое главное - целый вагон разных коннекторов, которые могут забирать данные начиная "из текстовых файлов" до Slack/Confluence/Google Drive/Github/Gitlab/... (их там больше 15 штук).
Содержит встроенный токенизатор и full-text поиск (под капотом есть Postgres, возможно используется его FTS, но это неточно - я ещё не лазил в базу)
Без каких либо проблем поднимается локально в докере одной командой (12-16 ГБ RAM), имеет свою вебморду с поиском и чятом по твоим документам. Единственное, что меня насторожило - это долгая индексация документов. Я загрузил два текстовых файла, суммарно 2 МБ plain text и индексация заняла 20 МИНУТ и 2-3 ядра. Но надо поиграться с настройками, возможно там где-то какая-то дичь стоит.
Также пока не очень понятно насколько эта штука хорошо умеет суммировать/агрегировать юзерские данные. Ну тоесть конкретно мой кейс - это дать дамп базы в каких-то вариантах, чтобы юзеры могли писать "топ 10 кастомеров 2023 года по суммам ордеров" и получить список или типа того.
#ai
Содержит встроенный токенизатор и full-text поиск (под капотом есть Postgres, возможно используется его FTS, но это неточно - я ещё не лазил в базу)
Без каких либо проблем поднимается локально в докере одной командой (12-16 ГБ RAM), имеет свою вебморду с поиском и чятом по твоим документам. Единственное, что меня насторожило - это долгая индексация документов. Я загрузил два текстовых файла, суммарно 2 МБ plain text и индексация заняла 20 МИНУТ и 2-3 ядра. Но надо поиграться с настройками, возможно там где-то какая-то дичь стоит.
Также пока не очень понятно насколько эта штука хорошо умеет суммировать/агрегировать юзерские данные. Ну тоесть конкретно мой кейс - это дать дамп базы в каких-то вариантах, чтобы юзеры могли писать "топ 10 кастомеров 2023 года по суммам ордеров" и получить список или типа того.
#ai
🔥6
Попался тут на глаза System Design for Interviews and Beyond и ютуб автора курса - чел явно не натив (подумал я), а потом нашёл его linkedin и твиттер в свойствах ютуб канала. Посмотрел несколько видео фрагментарно - хорошо объясняет и картинки норм #howto