Кодовой Барабанщик
описание
БлогеРОК программиста-барабанщика 👨💻🥁 Telegram: @GranSteL YouTube: https://youtube.com/@granstel ВКВидео: https://vkvideo.ru/@drummer_programmer
101
подписчиков
Охват к подписчикам
56,4%
ERR
Реакции к просмотрам
3,32%
49 на 25 постов
Пересылки к просмотрам
0,07%
1
Постов в день
0,4
всего 26
Где отзываются чаще
доля реакций к просмотрам- 24 июл.25го июля (суббота) в 20:00 потрясающий концерт в BarChuk!❤️🔥 Виолетта Орлова - певица, автор музыки и текстов. Вместе с группой ХИТПОИНТ она исполнит авторские песни и каверы в оригинальных рок-аранжировках. В каждой песне - своя история и глубокий смысл. Проникновенный голос солистки и живая музыка погрузят слушателя в свою уникальную атмосферу. 📒25 июля (суббота) в 20:00 📍BarChuk (Староваганьковский пер., 19с3) ❤Вход свободный8,62%
- 12 авг.🚀 Новая серия: от кода до железа Когда в мою жизни пришла #ИИшница, я понял, что с ней можно очень глубоко погрузиться в любую тему: как в устройство баз данных, так и в устройство программ😣 Мне стало интересно разложить прям по байтикам максимально простой однострочный "Hello world!"🖥 Оказалось, что он как торт 🎂 (или как лук🧅, или как огр 🤥), состоит из нескольких слоёв 🔥 Между строкой, которую ты пишешь, и транзистором, который её исполняет, ещё целая стопка: компилятор, рантайм, операционная система, и процессор. Давай вместе пройдём через все эти слои сверху вниз🔽 Начнём с самого начала. Вот файл hello.cs: Console.WriteLine("Hello, World!"); Вот команда запуска: dotnet run hello.cs ⚙️ Что происходит под капотом Код на C# не исполняется напрямую на процессоре. Сначала компилятор (его зовут Roslyn) переводит наш код в промежуточный байт-код — IL (Intermediate Language). Это ещё не инструкции процессора, а переносимый «полуфабрикат». Потом стартует рантайм — CoreCLR, движок .NET. Он берёт IL и уже на лету, прямо во время работы, до-компилирует его в настоящие инструкции процессора. Это называется JIT (Just-In-Time): метод компилируется в момент первого вызова. Важная деталь про масштаб: IL-код нашей строки весит 11 байт, а рантайм, который его исполняет, весит 77 МБ. То есть наш с тобой код — это тонкая надстройка над огромным механизмом, который работает задолго до первой инструкции нашего кода и делает всё необходимое, чтобы мы увидели заветные строки на экране⚙️ Что именно он делает? Создаёт потоки Поток (thread) — это отдельная линия исполнения внутри процесса нашей программу, которую операционная система раскладывает по ядрам процессора. В одном процессе их может быть достаточно много. Сколько? Правильный ответ, конечно, «зависит». При отладке их можно получить целых 7! 7️⃣ И число это не фиксированное, его можно регулировать 🔧 А что ещё? Занимает память 🫡 Физически процесс держит около 24 МБ, но нашей программы там почти нет: больше 20 МБ — это сам рантайм (движок CLR, JIT-компилятор, библиотека базовых типов). Из нашего там два места: 🔲стеки потоков: у каждого из семи потоков свой стек под локальные переменные и кадры вызовов функций. Под него резервируется несколько мегабайт адресов, но физически занято по паре килобайт на поток 🕳 GC-куча (heap): здесь живут объекты, созданные через new. За этим простым словом скрывается целый мир со своими регионами: 👶gen0/👨🦱gen1/👴gen2 — здесь хранятся разные поколения «обычных» объектов (размером до 85 000 байт) 🌾 LOH — большие объекты (от 85 000 байт) 📍 POH — закреплённые (pinned) объекты 🧊 FOH — литералы и «вмороженные» объекты И это далеко не всё! 🅰️ Что с этим делать 🟢 Программы работают на целой стопке слоёв: от кода и компилятора до операционной системы и процессора 🟢 За классическим «Hello world» стоит огромный механизм — рантайм, который делает всё необходимое, что наша программа сработала в том окружении, в котором оказалась Если тебе что-то не понятно из вышесказанного👆 — не страшно, мне тоже многое не понятно, так что будем разбираться вместе🫂 Постепенно углубимся в каждую тему и разберёмся, как это всё работает💪 🧑💻dp🥁 #dotnet #csharp #инженерныештучки #heavywednesday8,33%
- 13 авг.Способы применения нейронок: тестировщик 😨 Многие вещи в программировании начинаются и заканчиваются с тестов: - Хочешь исправить баг: сперва напиши тесты на ожидаемое поведение - Закончил задачу? Напиши тесты! Написание тестов — довольно рутинная работа. Особенно неприятно, если основной код уже написан, а теперь, оказывается, нужно потратить примерно столько же времени, чтобы убедиться, что он работает (и, зачастую, тесты конечно находят баги, что полезно 🐞) Если не доверяешь нейронке написание основного кода, попробуй отдать ей написание тестов Написание тестов относительно легко формализовать: есть правила, паттерны, структура, ожидаемое поведение. И доверить нейросети такую работу не так страшно. В худшем случае тест будет красным или работать вхолостую Кстати, ещё интересный вариант — попросить нейросеть проверить уже написанные тесты 🔍 🟢Зелёный тест ещё не означает хороший тест 🔴 Можно написать тест с такой запутанной подготовкой, что он фактически проверяет сам себя. Или ничего не проверяет вовсе. Или проверяет не то, что нужно. Или проверяет слишком много и ломается от каждого изменения 💔 Особенно это неприятно со сложными интеграционными тестами: они могут выполняться долго, а пользы при этом не давать почти никакой 0️⃣ Здесь #ИИшница тоже может помочь. Она способна быстро пройтись по коду, проследить взаимосвязи и ветвления, понять, что реально происходит во время теста, и найти несостыковки между тестом и тем, что он якобы должен проверять Ещё более интересный вариант: реальное тестирование функционала Юнит-тесты могут проверить лишь определённую логику в вакууме. Интеграционные тесты могут проверить, как взаимодействую между собой по одному экземпляру сервисов в идеальных условиях Воссоздавать вручную условия для более достоверного тестирования довольно сложно: нужно поднять необходимую инфраструктуру, нужное количество реплик основного и связанных сервисов, наполнить БД данными. Вручную такое будешь делать чуть ли не дольше, чем выполнять само тестирование. Ну и, кстати, воспроизвести сложные тест-кейсы вручную тоже будет довольно сложно и долго В общем, моя рекомендация, конечно же, доверить это всё нейросети 🧠 Всё необходимое можно поднять в контейнерах, что выглядит довольно безопасно для твоего компа, а тест-кейсы нейросеть воспроизведёт через запросы к поднятым сервисам Можно ещё и попросить её придумать какие-нибудь интересные неочевидные случаи для проверки. Ты можешь удивиться, на что способны сервисы в состоянии гонки за БД при обрыве связи с брокером 🇷🇺 Если не хочешь нагружать свой комп, и у тебя есть хороший тестовый стенд, можно попросить нейронку сделать всё на нём. Она будет отправлять запросы с твоего компа, как будто это делаешь ты. Ну и опять же, тестовые стенды не так страшно сломать. В крайнем случае, вы все вместе поймёте, где было слабое место в инфраструктуре🧠 ⚠️Конечно, важно, чтобы на тестовом стенде не оказалось каких-нибудь чересчур чувствительных данных: персданных пользователей, кредов от прод-сервисов, и прочего, что нейронке не стоит читать лишний раз 🔓 В общем, ещё одна вполне практичная сфера применения нейросетей в разработке — это тестирование на всех уровнях: написать тесты, проверить тесты, протестировать изменения⚡️7,14%
- 2 авг.Такой вот сюжет не так давно добавил в #занимательныеистории 🖥5,88%
- 13 маябез подписи5,77%
- 29 маябез подписи5,56%
- 30 июл.Картинка дня 🌇 #ИИшница5,26%
- 7 авг.Способы применения нейронок: хаос-инженер 🤩 Иногда баг возникает в очень специфических условиях: большая конкуренция за ограниченные вычислительные ресурсы, нестабильная сеть, внезапно отвалившийся брокер сообщений, и т. п. Однажды мне надо было починить нестабильный тест в пайплайне сборки, который в разных прогонах мог как пройти, так и упасть, без видимых на то причин. Причиной же было то, что пайпланы выполняются на не самых мощных раннерах, и как раз в условиях конкуренции могли не срабатывать условия для выполнения теста, то есть он был ещё и весьма хрупок. На моём компе этот тест стабильно проходил, поэтому мне нужно был подобрать такие ограничивающие условия, при которых он начнёт падать, чтобы потом убедиться, что внесённое исправление действительно устраняет проблему 🪲 Сложность в том, что зависимость немонотонная: если ресурсов слишком много, все необходимые операции успевают выполниться вовремя. Если чересчур мало, то операции настолько медленны, что тоже, как ни странно, успешно выполняются. Надо было подобрать золотую середину в несколько итераций, что вручную может выполняться довольно долго. Я попросил нейросеть помочь подобрать нужные параметры, и она стала итеративно запускать тест в контейнере с определёнными ограничениями и несколько раз прогонять его в таком окружении. И это сработало: удалось получить воспроизводимое нестабильное поведение и проверить исправление 🎉 С обрывом связи похожая история. #ИИшница может воссоздать условия, в которых имитируется обрыв связи или отключение нужного сервиса. Вручную писать такое - тоже не самая простая задача, на отладку которой могла бы уйти куча времени ⏳ В общем, нейросеть позволяет довольно быстро подготовить эксперимент, запустить его, и получить воспроизводимый сценарий, и это ещё один интересный способ использовать ИИ в разработке: не только проанализировать код, но и испытать его в стрессовых условиях4,84%
- 26 июл.Это мы с #хитпоинт вчера, сейчас дома уже 🤟4,40%
- 4 авг.Эскиз картинки к будущему посту в C# Short posts4,00%
- 3 авг.Способы применения нейронок: аналитик кода 🔍 Часто говорят, что нейросети галлюцинируют 🤪 Обычно этим понятием объясняют явление, когда нейронка достраивать картину самостоятельно в условиях неопределённости 🤔 Если же дать нейросети, например, свою кодовую базу, и спросить что-нибудь по ней, вероятность ошибок становится значительно ниже, ведь ИИшнице не надо будет придумывать архитектуру с нуля, а лишь проанализировать то, что уже есть🧠 Особенно это полезно это, когда нужно разобраться в новом большом сервисе, который ты видишь впервые 🆕 Что интересного можно спросить у ИИ про твой код? Отслеживание пути данных 🗺 Например, пока поле из базе данных попадёт на экран пользователя, оно может: 🟢 несколько раз переименоваться 🟢 пройти через DTO и мапперы 🟢 объединиться с другими полями 🟢 вычисляться на основе нескольких значений Вручную восстановить такую цепочку бывает очень утомительно (особенно, когда путь проходит через несколько сервисов в разных репозиториях): нужно открыть десятки файлов, постоянно переключаться между ними и держать всё это в голове🤯 #ИИшница же способна довольно быстро собрать всю цепочку и показать её целиком⚡️ Диагностика сложных багов 🐞 Можно попросить нейросеть: Проанализируй кодовую базу и найди возможные причинно-следственные связи, которые могли привести к <этому багу>. Покажи, на чём основан каждый вывод. Не додумывай, перепроверяй, уточняй Иногда такой подход позволяет заметить зависимости, до которых вручную пришлось бы добираться очень долго ⚠️Важный момент про безопасность ⚠️ Анализировать корпоративный код нейросетью стоит только тогда, когда это разрешено политиками твоей компании Если внутренние правила прямо запрещают передавать код внешним ИИ-сервисам, то делать этого, конечно, не стоит 🚫 Особенно если речь идёт о публичных облачных нейросетях, работающих за пределами корпоративного контура Если же такого запрета нет, то хорошей практикой будет отключить использование ваших диалогов для обучения модели 🧠 У большинства популярных сервисов такая настройка есть. Это не только снижает вероятность использования ваших данных для обучения, но и в целом является хорошей практикой при работе с корпоративной информацией А если в компании запрещено использовать внешние нейросети, то нередко есть альтернатива — внутренний ИИ-ассистент, развернутый внутри корпоративного контура 🏢 В этом случае лучше пользоваться именно им: кодовая база остаётся внутри инфраструктуры компании, а ты при этом всё равно получаешь преимущества анализа кода с помощью ИИ✨3,85%
- 28 июл.без подписи3,77%