ru
Feedback
📓 Записки программера

📓 Записки программера

Открыть в Telegram

Канал с регулярными постами о разных интересных материалах (статьи, видео, фреймворки и полезные инструменты). https://dotnet.social/@denisio

Больше
1 078
Подписчики
-124 часа
-17 дней
+730 день
Архив постов
Кто-то где-то спрашивал, где бесплатно захостить приложение, вот вспомнилось https://fly.io/docs/about/pricing #hosting
Кто-то где-то спрашивал, где бесплатно захостить приложение, вот вспомнилось https://fly.io/docs/about/pricing #hosting

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию - для начинающих самое то (на русском языке)

An introduction to graph theory (Darij Grinberg, 2023 год, 422 страницы PDF) #books

Набор лекций по асинхронному программированию с примерами на github на русском языке

Кто хочет особенно сильно упороца по алгоритмическим задачам

Introduction of CSS transforms - я не знал что такое можно делать чисто на CSS :) #css

Чятики принесли отличную книгу на 114 страниц в PDF "What every programmer should know about memory". Там действительно все что надо бы знать про low level память и кэш.

⚠️ 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 к
Маленькие хитрости #docker - как подождать пока postgres (или любой другой сервис) придёт в норму после старта. У Postgres к примеру это занимает несколько секунд на холодный старт (=инициализация контейнера с созданием БД)

Йее 100 подписчиков :)

Имел неосторожност опубликовать в 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[] используетс
+3
Продолжаем ковырять 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, если ты уж наконец взялся за векторизацию кода. Векторизация, как правильно бенчмарка
Хороший док по гайдлайнам от Microsoft, если ты уж наконец взялся за векторизацию кода. Векторизация, как правильно бенчмаркать и т.д. #dotnet #github #sse

Ещё одна простая статья касательно #chatgpt - как сделать свой бакенд, зарегать и чтобы он использовался в контексте запросов отдавая нужные данные #dotnet

https://github.com/mizrael/Blazorex - враппер для HTML Canvas для Blazor чтобы рисовать свой блэкджек и куртизанок на канвасе из C# кода #blazor #dotnet

Ещё один всрато-тест - считаем StdDev. Разница между обычным LINQ и Vector256 - в разы на маленькой коллекции и два порядка н
+1
Ещё один всрато-тест - считаем 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 прекрасный инструмент для компаний. У каждой крупной компании как правило
Как я и предполагал - fine tuned model для ChatGPT прекрасный инструмент для компаний. У каждой крупной компании как правило есть свои knowledge base, документы, документация для софта и т.д. Несложным образом, можно запилить модель, которая будет каким-то образом смержена для API-токена с основной моделью ChatGPT и будет отвечать на completion через API уже с учётом тех документов, которые скормили в fine tuned модель. На скриншоте - ответ ChatGPT как раз с fine tuned модель, которая создана из нескольких PDF-документов с публичного сайта с предыдущей работы (отвечает на английском - потому что скормленные доки были на нём) - взято оттуда, чтобы я мог верифицировать ответ. Важным является качество первоначальных данных, на которых строица fine tuned модель. Если это print ready PDF - будет херня. Идеально - plain text полученный без всякой лишней хрени (тегов, картинок, ...). Пока неясно как быть с мультиязычностью, когда скармливается один и тот же документ на разных языках - как будут обрабатываться такие кейсы. #chatgpt