C# Short Posts 🔞 – Telegram
C# Short Posts 🔞
250 subscribers
111 photos
4 videos
151 links
Здесь я, Дима Афонченко @Undermove1, публикую короткие заметки о разработке (и около). Я не претендую на правильность высказываний и открыт к дискуссиям, исправлениям и конструктивной критике. С любыми деструктивными вещами можно приходить в комменты)
Download Telegram
🔜 Последнюю неделю потею над докладом на DotNext.

На всякий случай – это такая охренительно крупная конфа по .NET. (на момент написания поста сайт правда лежит 👋 )

Готовлю спидран по куберу. Очень хочу сделать такое выступление, после которого любой джун/миддл (да и синьор) начнут играться с кубером, как с конструктором лего. 🥇 Поэтому над каждым слайдиком и анимацией сижу, как ОРЛИЦА НАД ОРЛЕНКОМ – выверяю, где картинка помогает восприятию, а где тормозит. Где стоит вставить шуточку, чтобы всех взбодрить, а где наоборот это только отвлечет от сути.

Не знаю примут все это дело в итоге или нет, но пользу от самой подготовки для себя уже точно ощутил.

Доклад у меня уже был давно готов в целом (как мне наивно казалось). Но недавно на меня и куратора создали чатик в телеге, куда прилетает весь фидбек, и в целом там сагрегировалась нехилая такая пачка реквестов на улучшение.

(по традиции пояснительный дикпик прилагается)

Я сначала подумал, что вроде как все это чутка избыточно для обзорного доклада про кубер. Но сейчас вот готовлю презу и с каждым новым слайдом осознаю, что вообще зря в первой версии опускал все эти моменты. Ну и разумеется, опускал, потому что сам не достаточно в них глубоко копнул.

Вообще процесс подготовки оказался в целом довольно сложным, долгим, но супер-интересным! Я чуть позже попробую рассказать, что и в какой последовательности происходило.

P.S.: Кстати, доклад придумывал и готовил по схеме, которую описывал вот в этой статье. Так что если у вас тоже есть желание что-то начать рассказывать на конфах, но не знаете с чего начать, то может поможет расступориться 🌺
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1151🔥1🙏1
О, это очень круто! Я вроде краем сознания слышал про эту книгу, но значения не придавал.

Вообще у Станислава Сидристого супер-крутые доклады про .NET. Из последнего, что я смотрел на ютьюбе lock(_sync): иллюзия идеального выбора.

Звучит сложно, но на деле рассказано просто. Мне конечно кажется, что можно еще проще) Но я на удивление понял примерно все. Короче, доклад горячо рекомендую, а книгу думаю в ближайшее время попробую осилить!

Ну и звезду репозиторию, конечно поставил. Хотя хотелось бы оформить полноценный донат!
4👍1
Forwarded from Sandbox
Я не знал, но вот знаю
Сидристый выпустил свою книгу о там как работает dotnet
Если cli via c# это взгляд снаружи, то .net platform architecture это взгляд изнутри (и актуальный)

Читать бесплатно прям на его гитхаб

Эта книга задумана мной как максимально полное описание работы .NET CLR, и частично - .NET Framework и призвана в первую очередь заставить посмотреть читателя на его внутреннюю структуру под несколько другим углом: не так, как это делается обычно.
5🔥42
⭐️ Подписки мои подписки

Короче, хочу рассказать вам, чё я сейчас делаю на работе, ибо мне кажется, что это интересная задача, и, может, вам тоже будет прикольно покрутить её в уме, а может, и опытом заделитесь.

Я сейчас делаю базу знаний — это такая внутренняя википедия для сотрудников пиццерий.

С одной стороны, штука вспомогательная (денег напрямую не генерит), с другой стороны, охуенно важная.

Ибо сердце качества продукции — это стандарты. А стандарты — это, по сути, обучение сотрудников тому, как делать свою работу хорошо и как не делать её плохо.

Обучать людей сложно. Вот недавно вышла статья на Хабре, где Джруже Обломов делится, как сложно это выстроить так, даже для одной хотдожной. А для целой сети пиццерий — это прям целая наука, которая без удобных инструментов просто не заработает.

Короче, знания — это база!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥3👍33
Так вот, прилетела задачка – сделать для базы знаний подписочную модель.

В Додо это первый случай, когда мы продаём часть системы как услугу для франчайзи. Стоимость Додо ИС входит в роялти. Но тут как бы мы продаём допфункции в приложении, которые не часть кор-функционала. Так что можно накрутить подписку.

Ну и в моей карьере это тоже первый раз, когда мне нужно реализовать чёт такое.

Посему встала задача написать какой-то удобный код, который бы проверял подписку и включал/отключал функционал в зависимости от состояния подписки.

Для себя выделил два типа проблемы, которые нужно решить:

1️⃣ Доступ к определённым функциям по подписке. Если подписка есть — то можно дёрнуть эндпоинт, а если нет, то дёргать нельзя.

2️⃣ Модификация какой-то функции в зависимости от состояния подписки. К примеру, если подписка есть, то возвращаем один список сущностей, а если нет, то обрезанный вариант.

С первым флоу всё просто.

Пишем атрибут и миддлварь, которые делают что-то такое:


public class SubnoscriptionRequirementAttribute : Attribute, IAuthorizationFilter
{
private readonly string _requiredLevel;

public SubnoscriptionRequirementAttribute(string requiredLevel)
{
_requiredLevel = requiredLevel;
}

public void OnAuthorization(AuthorizationFilterContext context)
{
var user = context.HttpContext.User;
var hasSubnoscription = user.HasClaim("SubnoscriptionLevel", _requiredLevel);

if (!hasSubnoscription)
{
context.Result = new ForbidResult();
}
}
}

[SubnoscriptionRequirement("Premium")]
public IActionResult GetPremiumContent()
{
// Доступно только для пользователей с подпиской "Premium"
}


И вуаля. Всё закрыто.

А вот со вторым я пока что размышляю, ибо тут есть несколько вариантов:

Во-первых, всё можно просто заифать. Типа прям в коде юзкейса как-то так:


[HttpGet("data")]
public IActionResult GetData()
{
var baseData = GetBaseData();

if (_subnoscriptionService.HasSubnoscription("Premium"))
{
var premiumData = GetPremiumData();
return Ok(new { Base = baseData, Premium = premiumData });
}

return Ok(new { Base = baseData });
}


Ну или сделать какой-то fabric, который выдаёт нужный функционал. Но это уже сорта одного и того же ифинга.
1
Однако тут у меня есть хотелка: желаю, чтобы при добавлении нового такого подписочного функционала я не забыл, что нужно реализовать две версии. Плюс хочется, чтобы это тоже работало как-то магически попроще, как с атрибутом.

Из первых сырых решений — постобработчик, который выбрасывает премиум-данные, если у пользователя закончилась подписка.

Все контроллеры отвечают двумя наборами данных:


[SubnoscriptionFilter("Premium")]
[HttpGet("data")]
public IActionResult GetData()
{
var baseData = GetBaseData();
var premiumData = GetPremiumData();
return Ok(new { Base = baseData, Premium = premiumData });
}

На постобработке убираем лишнее после проверки подписки:


public class SubnoscriptionFilterAttribute : ResultFilterAttribute
{
private readonly string _requiredLevel;

public SubnoscriptionFilterAttribute(string requiredLevel)
{
_requiredLevel = requiredLevel;
}

public override void OnActionExecuted(ActionExecutedContext context)
{
var user = context.HttpContext.User;
if (user.HasSubnoscription)
{
return context.Result;
}
else
{
return new { Base = context.Result.Base };
}
}
}


Но у этого подхода есть понятный минус в том, что мы как бы делаем двойную работу, которая вообще не нужна.

Можно ещё скомбинировать подход – сделать предфильтр, который поймёт, нужно ли применять поиск по премиум-функциям, а потом постфильтр. А сам хэндлер, который всё это будет обрабатывать, обозначить IPremiumFunctionHandler, который будет заставлять реализовывать два разных варианта работы.

Поначалу я, конечно, это всё сделаю попроще на ифчиках. Но, короче, хотел поделиться, вдруг тут есть кто решал похожую проблему и знает, что да как)
5❤‍🔥1👍1
😋 Кормим .NET мусором — GCServer налил, DATAS отжал

Недавно на проде включал GCServerMode. Это режим, который делит большие кучи на несколько мини-подкуч и позволяет собирать мусор параллельно в каждой из них.

На первом снепшоте памяти у нас всего три большие кучи. А на втором уже целая толпа — 12 мини-подкуч, по числу ядер процессора, и так для каждого поколения.

Я раньше думал, что это включено по умолчанию, но оказалось, что нет.

Звучит, конечно, многообещающе — теперь вашу кучу разгребает не один поток, а сразу несколько.

Что получилось по метрикам:

1️⃣ 🔽После включения DOTNET_GC_SERVER = 1 память ожидаемо выросла. И выросла прилично — примерно раза в два.

2️⃣ 🔼 Но зато количество сборок мусора сильно сократилось.

Вы, наверное, хотите узнать, как изменились метрики запросов? А вот тут изменений почти нет. Основная нагрузка у меня упирается в базу данных, поэтому по метрикам запросов разницы практически не видно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
Но и это ещё не всё! На прошлой неделе прочитал про DATAS (Dynamic Adaptation To Application Sizes). Включается через переменную окружения DOTNET_GCDynamicAdaptationMode=1.

😐 Что вообще делает DATAS (Dynamic Adaptation To Application Sizes)?

В этом режиме дотнет научается динамически менять количество мини-подкуч (на дикпике в первой части), частоту сборок мусора и компактизаций в зависимости от нагрузки.

В .NET 8 DATAS работает в экспериментальном режиме — то есть, чтобы её попробовать, нужно явно включить вручную.

Начиная с .NET 9 она уже включена по умолчанию, но у нас на проде пока восьмёрка. Было интересно глянуть, как это отразится на памяти.

Что получилось в итоге?
🔘 Мы вернулись почти к тем же значениям по памяти, которые были до включения GCServerMode. По идее тепрь сборки проходят быстрее, но доказать мне это к сожалению нечем (к сожалению метрики GC Pause не собирались)
🔘 Количество сборок мусора немного выросло — хотя всё равно осталось ниже, чем до включения обоих режимов экспериментов.
🔘 По CPU ни один из переключателей заметно не повлиял на ситуацию

Так что если вы обновитесь до .NET 9 или 10 и вдруг заметите странности в метриках памяти (например снижение в два раза), не переживайте, возможно, это просто DATAS немного шалит.

Ну и, конечно, наглядные дикпики прилагаются для всех этих манипуляций
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64
Короче, потыкал Cursor.

Он стал гораздо лучше, чем год назад. Прям на порядки.

Но что могу сказать – вайбкодить сложно. Если придерживаться парадикмы, что мы не должны лезть в процесс а только писать промпты, то я не понимаю, как это вообще.

Мой текущий флоу был такой:

1) Прошу накидать примерное решение
2) Смотрю, что он накидал.
3) Иду доредачивать в райдере.
4) Снова прошу что-то дописать.
5) Снова доредачиваю в райдере.

И так по кругу.

Удобно, что не нужно кидать больше файлы. Не удобно, что если файлы не указывать для контекста, то он бывает выхыватывает совсем не то, что нужно. Поэтому чутка смысл теряется от этого.

Но самое главное, что курсор это по сути VS Code, и это для меня самый главный минус. Так что жду https://www.jetbrains.com/junie/ в райдере. Правда райдер там что-то вообще даже не в Coming Soon 😔

Но если вы кодили в VS Code, то вам конечно курсор очень зайдет. Прям надо брать, не думая
Please open Telegram to view this post
VIEW IN TELEGRAM
👍44🤝1
🚂️️️️ Сделал парсилку новостей об AI и теперь LLMки сами для меня фильтруют бестолковые новости про них самих

Короче, недавно @sagos95 (вы его можете помнить по нашему совместному докладу про RAG) пожаловался на кучу нейро-говно-новостей и что ее тяжело разгребать.

Попросил Саню собрать источник говна в папку и дать мне почитать. Там оказалось вот столько канальчиков:

JimmyNeiron,bitten_ai,neuraldvig,olya_tashit,aiaiai,neyr0graph,tearevo,denissexy,How2AI,NeuralShit,neuronuts,neurohub,kisel_ai,neiro_sketch,CGIT_Vines,strangedalle,derplearning,ai_newz,art_design_ai,aifilmmaker

Аж 21 канал! Как ни крути – очко! 😳

Ну что ж, поплевал на руки и решил бить говно его же оружием.

Поэтому на выходных закурсорил скриптос, который запускается в Github Actions каждые три дня и присылает саммари по всем каналам ко мне в сохраненные сообщения (пока не знаю куда еще это слать, а Санчез что-то не загорелся жела).

Тут сошлись все звезды:

1️⃣ Я хотел потыкать крусор на более маленьком проекте. В итоге – весь репозиторий набросал в курсоре. От первого коммита до перового результата прошло 57 минут.

2️⃣ Телега недавно выпустила userAPI, которое позволяет автоматизировать работу от вашего имени. То есть бот будет ходить как бы под вашим аккаунтом, что и позволяет удобно читать контент каналов. Раньше для этого нужно было с бубном танцевать. (оказалось, что выпустила давно, я просто с еще каким-то релизом перепутал)

3️⃣ OpenAI выпустили новую модельку, которая вмещает миллион токенов. Как раз тот размер, который подойдет для разгребания такого инфо-потока. (Кстати, эти суки генерят столько говна, что за одно саммари сжирается 10 центов)

Результат получился в итоге как в сообщении выше (рабочая демка йопта!).

🅰️ Посмотреть код можно тут. Работает через typenoscript, который не знаю почему, привык использовать в таких штуках.

😱 А также! вы можете форкнуть проект к себе и настроить его на парсинг своих каналов.

Пока надо будет самому ручками прописать секреты, но у меня есть план сделать эту штуку чуть более юзер френдли, чтобы можно было делать себе несколько подписок с саммари. Получится эдакий нейро-RSS. Кто-то еще помнит про эту штуку?

А еще телега со всеми этими каналами, которые просто перепощивают новости стала удобным парсером – точнее, не нужно ничего парсить, просто находим нужный канал и из него все вычитываем, там уже за нас все распарсили 🤷‍♀️

P.S.: Кстати, оцените злую иронию. Чтобы разобраться в новостях по LLM, которые генерят зачастую с помощью LLM, я взял LLM и попросил написать ее скрипт, который возьмет все новости и запихнет в третью LLM и что-то заставит ее разобраться в сгенеренном нейроговне.

Вот короче, после всего этого кажется, что меня наебали и я просто оплачиваю OpenAI их reinforcement learning! 🤡

P.P.S.: А вообще, я в последнее время тащусь от джоб в GHA. Месяц назад сделал себе штуку, которая следит за курсом валют на платформе, где фрилансерам ЗП платят. Заняло пол часа – экномия деенг моментальная, так как там бывают технические скачки по 2-7 рублей, что как-то непозволительно дохуя, если обменяешь не в тот момент.

Короче, рекомендую GHAшить все подряд. За ценой товара так можно следить, к примеру, итп.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍2😁1
ДАЙДЖЕСТ ЗА 21 апреля 2025 г.

📰 Основные новости

💻 OpenAI представила новые модели o3 и o4-mini, которые умеют использовать все инструменты ChatGPT во время размышления, включая генерацию изображений, код и поиск информации. Модели уже доступны подписчикам Pro и Plus, o4-mini — бесплатна для базовых пользователей. o3 Pro появится позже.
https://news.1rj.ru/str/neuraldvig/7270
https://news.1rj.ru/str/aiaiai/16880
https://news.1rj.ru/str/ai_newz/3845

🔥 Вышел GPT-4.1 — новая модель с контекстным окном до 1 млн токенов, лучше понимает инструкции и кодирует, при этом дешевле GPT-4o. Доступна в API, скоро появится в ChatGPT.
https://news.1rj.ru/str/neuraldvig/7246
https://news.1rj.ru/str/How2AI/953
https://news.1rj.ru/str/ai_newz/3832

🎥 Google открыла видеогенератор Veo 2 с поддержкой img2video и возможностью редактирования видео (inpainting). Модель показывает высокое качество и физическую правдоподобность движений. Бесплатный доступ через Google Cloud с ограничениями.
https://news.1rj.ru/str/neuraldvig/7265
https://news.1rj.ru/str/aiaiai/16877
https://news.1rj.ru/str/neurohub/5021
https://news.1rj.ru/str/ai_newz/3825

🎞 Runway Gen-4 — новая видеомодель с высокой кинематографичностью, гибким управлением камерой и персонажами, поддержкой image-to-video и референсов.
https://news.1rj.ru/str/neuraldvig/7265
https://news.1rj.ru/str/art_design_ai/315
https://news.1rj.ru/str/neurohub/4970
https://news.1rj.ru/str/neiro_sketch/2288

🚀 Вышла альфа-версия Midjourney V7 с улучшенной детализацией, персонализацией, голосовым вводом и режимом Draft для быстрой генерации. Пока без апскейла и некоторых функций V6.
https://news.1rj.ru/str/JimmyNeiron/2916
https://news.1rj.ru/str/neuraldvig/7246
https://news.1rj.ru/str/neiro_sketch/2306
https://news.1rj.ru/str/art_design_ai/323

🤖 Яндекс запустил бета-тест YandexGPT 5 с режимом рассуждений (reasoning), показывающим цепочку размышлений модели. Модель обучена на бизнес-сценариях и математике, доступна в чатах Алисы.
https://news.1rj.ru/str/neuraldvig/7259
https://news.1rj.ru/str/ai_newz/3836

🦾 Nvidia представила нового робота Jensen с отзывчивостью и обучаемостью на новом движке Newton.
https://news.1rj.ru/str/How2AI/889

💻 Российская команда разработала нейросеть A-Vibe для генерации текстов на русском языке, которая уже используется на платформе Авито для создания описаний товаров.
https://news.1rj.ru/str/ai_newz/3810

🎮 Развлечения и интересное

🎬 Вышел первый в мире анимационный фильм, созданный с помощью нейросетей, в Белоруссии. Это прецедент, который может дать старт массовому применению AI в анимации.
https://news.1rj.ru/str/aifilmmaker/84

🎞 Нейросети превратили трейлер «Властелина колец» в аниме в стиле Хаяо Миядзаки, потратив 9 часов и $250 на генерацию.
https://news.1rj.ru/str/strangedalle/1154
https://news.1rj.ru/str/neuraldvig/7214

🎮 Microsoft выпустила генеративную версию Quake II с отрисовкой кадров нейросетью, что вызвало споры о сохранении традиций.
https://news.1rj.ru/str/NeuralShit/6282

🕹 Создана игра за 3 дня без знаний программирования с помощью Phaser, Gemini 2.5 Pro и ChatGPT, демонстрирующая возможности AI в геймдеве.
https://news.1rj.ru/str/tearevo/102

🖥 Креаторы создают цифровых блогеров и инфлюенсеров за минуту с помощью сервисов вроде Creatify AI, что может изменить маркетинг.
https://news.1rj.ru/str/neiro_sketch/2241

📊 Другое

🌍 Российские города стали трансформерами — нейросеть смоделировала роботов-героев на базе известных городов.
https://news.1rj.ru/str/neiro_sketch/2333

📈 Pinterest предсказал тренды 2025 года, основанные на поисковых запросах и инсайтах.
https://news.1rj.ru/str/art_design_ai/232

📚 В России стартовал набор в Школу анализа данных Яндекса (ШАД) — бесплатное обучение с перспективой работы в IT.
https://news.1rj.ru/str/NeuralShit/6303

📊 Исследование HBR показало, что в 2025 году популярность нейросетей сместилась с развлечений на терапию, самоорганизацию и обучение.
https://news.1rj.ru/str/neurohub/5027

🤡 ШУТКА ДНЯ
— Слушай, ChatGPT, а кто победит в драке: динозавр или миллиард куриц?
— Я бы не стал спорить с динозавром
5👏2🤝1
Я уже точно во втором состоянии
🤝1
Forwarded from Sandbox
😁63💯2
Такс, мне на волне этого мема рассказали, что есть такие челики, которые все пропускают через LLMки и не могут потом даже объяснить, что они там сделали. В связи с чем мне прям инетренсо провести опрос, вы сталкивались с такми в реальной работе?
Сталкивались ли вы с тем, что коллега не понимает, что он написал, потому что прогнал все через LLMки без особого погружения?
Anonymous Poll
22%
Да
47%
Нет
31%
ChatGPT сказал мне, что такое невозможно 🤖
Буду выступать на .NEXT 2025!

Короче, не могу не поделиться радостной новостью. Взяли мой доклад по куберу на .NEXT!

Будет дело в сентябре.

Ух, как доложусь, распишу всю историю подготовки. А то у меня еще с малых лет были вопросики, как люди вообще доходят до такого, как придумывают тему, как готовятся, как понимают, что доклад норм итп. Короч, про все расскажу в сентябре 📛 🍇
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥168🎉4
Audio
Лет шесть назад написал текст для песни со, скажем так, заразительным припевом.

Поскольку музыку я сочинять не умею, шедевр пылился где-то в закромах. И я иногда напевал его друзьям, рассказывая (с гордостью), про потенциальный хит, который никогда не будет издан.

Но вот шли годы, вышел ремастер обливиона, сунно обновила свою нейронку до невероятного качества и нейроэнузиаст @sagos95 попросил меня откопать древние свитки со словами потенциального хита этого лета.

Ну чтож хит спасен!

Мне оно виделось, как идеальная песня, которая играет на шашлычных выездах, свадьбах и корпоративах. 🐸

Короче, включайте, наслаждайтесь, делитесь 😆

PS Еще на ютуб залил

Ну или можно найти в поиск е, так ютуб будет поднимать хит выше в предложках:

Бумажный Мотолет – Песня-Хуесня
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7🔥66
Почекал сегодня windsurf. Чувствую себя, как на передаче “Кто хочет стать миллионером?”

Это весь диалог про один файл если что.

Я уже думал звонить другу, но вроде с третьей попытки вроде мы справились.

Потом оказалось, что я там переключился в режим чатика, и он не мог внести изменения, поэтому так вот сублимировал

UPD: и без режима чатика с ним такая же хуйня творится. Вот уж точно джун. Я когда только начинал, тоже своего ментора сто раз спрашивал, надо или не надо.

PS: Использовал бесплатную модель Cascade Base. Потом переключился на GPT-4.1 (promo) и он вообще отказался файлы менять
😁5🦄43