📓 Записки программера
Открыть в Telegram
Канал с регулярными постами о разных интересных материалах (статьи, видео, фреймворки и полезные инструменты). https://dotnet.social/@denisio
Больше1 078
Подписчики
-124 часа
-17 дней
+730 день
Архив постов
Кто-то где-то спрашивал, где бесплатно захостить приложение, вот вспомнилось
https://fly.io/docs/about/pricing
#hosting
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию - для начинающих самое то (на русском языке)
An introduction to graph theory
(Darij Grinberg, 2023 год, 422 страницы PDF) #books
Неплохое howto Implementing WebSocket Client and Server on ASP.NET Core 6.0 #dotnet
Набор лекций по асинхронному программированию с примерами на github на русском языке
Introduction of CSS transforms - я не знал что такое можно делать чисто на CSS :) #css
Чятики принесли отличную книгу на 114 страниц в PDF "What every programmer should know about memory".
Там действительно все что надо бы знать про low level память и кэш.
Repost from devdigest // dot net
⚠️ Moq получает ваш адрес электронной почты!
Moq, начиная с версии 4.20, включает в себя анализатор .NET, который сканирует вашу локальную конфигурацию git при сборке, получает ваш адрес электронной почты и отправляет его в какую-либо службу, размещенную в Azure, чтобы проверить, действительно ли вы спонсор.
🔗 https://devdigest.today/goto/2260
👉🏻 Наш канал | 💬 Наш чат
повнимательней господа, Moq апдейтнул версию и подключил либу SponsorLink, которая делает разное.
тред на Reddit
Альтернативы
* https://github.com/nsubstitute/NSubstitute
* https://fakeiteasy.github.io/
Маленькие хитрости #docker - как подождать пока postgres (или любой другой сервис) придёт в норму после старта. У Postgres к примеру это занимает несколько секунд на холодный старт (=инициализация контейнера с созданием БД)
Имел неосторожност опубликовать в mastodon вопрос про SIMD - там где Vector128 был медленее Vector256, на что пришёл Alexandre Mutel (Director C#/.NET Tech Group at Unity) и потыкал меня носом в разные места этого кода. После чего он родил статью "10x Performance with SIMD Vectorized Code in C#/.NET"
#dotnet #simd
Очень простой пример реализации паттерна Mediator :)
Не идеальный с точки зрения красоты кода (особенно в районе метода
AddMediator), но функциональный и понятный.
#dotnetПродолжаем ковырять SSE/AVX, но тут кажется мне не помешала бы пояснительная бригада. Для поиска элемента в
int[] используется Sse2.CompareEqual, которая может сравнивать 4 (Vector128) или 8 (Vector256) элементов.
До 2048 (8 КБ данных) всё работает более менее - х1.5-2 для Vector128 и ещё больше для Vector256. Однако дальше Vector128 проседает по скорости до обычного цикла на 2048 элементов (8 КБ данных) и становится медленее, чем простой цикл для 4096+ (32 КБ данных) элементов.
Vector256 проседает попозже - начиная с 5120 (20 КБ данных) элементов он сравнивается со скоростью простого цикла.
Vector128 становится медленее всех, начиная с 3072 (12 КБ данных) элементов
Пока что у меня два объяснения:
🔸 влияние L2 кэша, он насыщается и за счёт того, что данные берутся из RAM скорость резко падает
🔸 процессор уходит в throttling, однако неясно почему Vector128 становица хуже чем простой цикл (хотя возможно JIT делает loop unroll и за счёт этого получается обычный цикл быстрее)
Второй вариант я попробовал исключить, переключив режим проца в Turbo (специальной утилитой Asus), скорости чуть-чуть подросли (буквально на 4-5%), но тренды не поменялись.
С ushort ситуация выглядит другим образом - самым быстрым практически везде является Vector128<ushort> 😳 однако разрыв по скорости в разы - только <=2048 элементов (4 КБ данных), дальше разрыв крайне незначительный.
gist_int gist_ushort #sse #avx #dotnetХороший док по гайдлайнам от Microsoft, если ты уж наконец взялся за векторизацию кода. Векторизация, как правильно бенчмаркать и т.д.
#dotnet #github #sse
Ещё одна простая статья касательно #chatgpt - как сделать свой бакенд, зарегать и чтобы он использовался в контексте запросов отдавая нужные данные #dotnet
https://github.com/mizrael/Blazorex - враппер для HTML Canvas для Blazor чтобы рисовать свой блэкджек и куртизанок на канвасе из C# кода #blazor #dotnet
Ещё один всрато-тест - считаем StdDev.
Разница между обычным LINQ и Vector256 - в разы на маленькой коллекции и два порядка на большой (gist, .net 7)
Для тех кто не понял что делается на примере Average:
* загружается по 4 double в вектор (256 бит / 8 байт (64 бита) один double = 4 штуки влезает в 1 вектор)
* над ними одновременно делается операция Avx.Add - добавляем к вектору-аккумулятору такой же вектор с 4 следующими double (Vector256.Load возвращает вектор со следующими 4 double по адресу pointer)
* после прохода по всем элементами - складываем 4 штуки double из vsum - получаем полную сумму всех элементов
* делим на src.Count - получаем среднее из чего формируем новый вектор vectorMean - он получает 4 идентичных значения в своих элементах.
Аналогичным образом по 4 элемента - делается операция
Sum( (p-mean) * (p-mean) )
результат которой потом делится на src.Count и получаем Average.
Если бы операция была над float - можно было бы в 256 бит уложить сразу по 8 float'ов: 256 бит / 4 байта (32 бита) float
#csharp #avxКак я и предполагал - fine tuned model для ChatGPT прекрасный инструмент для компаний.
У каждой крупной компании как правило есть свои knowledge base, документы, документация для софта и т.д. Несложным образом, можно запилить модель, которая будет каким-то образом смержена для API-токена с основной моделью ChatGPT и будет отвечать на completion через API уже с учётом тех документов, которые скормили в fine tuned модель.
На скриншоте - ответ ChatGPT как раз с fine tuned модель, которая создана из нескольких PDF-документов с публичного сайта с предыдущей работы (отвечает на английском - потому что скормленные доки были на нём) - взято оттуда, чтобы я мог верифицировать ответ.
Важным является качество первоначальных данных, на которых строица fine tuned модель. Если это print ready PDF - будет херня. Идеально - plain text полученный без всякой лишней хрени (тегов, картинок, ...).
Пока неясно как быть с мультиязычностью, когда скармливается один и тот же документ на разных языках - как будут обрабатываться такие кейсы. #chatgpt
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
