Кодерские работы 👾
102 subscribers
151 photos
15 videos
1 file
34 links
Теперь я тут обитаю и немного программирую.
Download Telegram
💾 Оптимизация использования памяти


🚀 Так как в вебсокетах я гоню сырые байты, пришлось заняться лишними аллокациями.

🧐 В итоге углубился в Span, ArrayPool и stackalloc.

📊 Результаты BenchmarkDotNet:
📉 Стандартно: ~200 KB/операция (до 40 ГБ суммарно) + GC (вплоть до Gen2).
Оптимизировано: 0 аллокаций.
⚡️ Скорость: рост в 13–18 раз.

📌 Подходы, которые я попробовал:
1️⃣ Allocating Method (Standard)
🛠 Использование Split() и т.д. создает избыточные массивы и строки. На больших объемах это кучи мусора, вызывающие тормоза, т.к. идет нагрузка на GC.

2️⃣ Оптимизированный подход
🔹 ReadOnlySpan
👁 Работаешь как с «окном» в исходный массив buffer.
🚫 Ничего не копируешь просто двигаешься по уже существующим данным.

🔹 ArrayPool
🔄 Позволяет брать массивы из пула и потом возвращать обратно. Тут важно не забывать Return, иначе можно словить неприятные баги.

🔹 stackalloc позволяет выделять память прямо на стеке:
- очищается после выхода из метода
- подходит только для небольших данных
🔥7
🧐 Познаю прелести NotebookLM.


📊 Инфографику выше я получил добавив в блокнот NotebookLM файл с кодовой базой CmdWalker и ссылками на ТГК и Гитхаб, после чего попросил ИИ создать инфографику.

🤏 И это только малая часть того, на что способен данный инструмент.

А вы используете NotebookLM?
👍21💋1💘1
☠️ DDOS на клиента


👨‍💻 Как вы знаете я тут недавно написал 1 to 1 чат и чёт пришло в голову протестировать сервак и ноут.

🔝 Написал нагрузочный клиент, который создаёт N-ое кол-во клиентов и все они пишут на один адрес, такая армия спамеров, которые пишут раз в 1-3 секунды.

🔟 При 10_000 одновременных юзеров мой ноут вполне справлялся, задержки в районе 2ms на доставку сообщения, которых было 5_000 в секунду, примерно за 15 минут набралось 4млн сообщений.

😅 Тогда я решил поднять число до 100_000, но тут мой ноут не выдержал и намертво завис. Но это скорее проблема клиентов, а не сервера, обычно 1 устройство = 1 юзер.
4💘4❤‍🔥2💋1
👨‍💻 Отправка по имени


☠️ Теперь не надо вводить 4-битный id, можно вписать юзернейм и все будет работать, но что же я поменял?

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

💬 Если ты хочешь написать кому-то вводишь его имя и общаешься.

⚙️ Также изменил структуру фрейма из-за чего пришлось написать FrameWriter и FrameReader, первый позволяет собрать фрейм, второй позволяет всю инфу достать

➡️ Фрейм:
[CMD]
[ADDRESS_LEN]
[ADDRESS]
[KEY]
Далее зашифрованная пользователем часть
[TEXT_LEN]
[TEXT]
[NAME_LEN]
[NAME]

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

🤔 Если так задуматься сюда прикрутить UI, добавить очередь сообщений и вот готовый красивый чат
💀 Но самый небезопасный, что конечно же крайне критично.
🔥41💋1💘1
💬 Чат


☝️Как говорил выше добавить очередь сообщений, состояния и вот готовый чат.

👨‍💻 В этом чате есть два режима:

📖 "Меню", где отображаются пользователи и превьюшки сообщений, которые вам прислали.
📢 Сам чат, где вы можете вести переписку с тем или иным юзером.
1💋1
👥 Группы


💬 Получилось реализовать групповые чаты, по сути группа у меня это такой виртуальный пользователь и если с клиента пришло сообщение в группу, то сервер отправляет это сообщение всем участниками группы в которой они состоят.

🖼️ Что происходит на окнах в скрине:
📢 Левое верхнее и правое нижнее - это люди в группе
💭 Нижнее левое - пишет личное сообщение
📖 Верхнее правое - открыто главное меню со списком чатов
2💋1
💻 GitHub Student Developer Pack


Пока нет особо времени на разработку, решил оформить GitHub Education.

📦 Что это такое: бесплатный набор из около 80 инструментов для студентов. В данном наборе есть многое: курсы, гайды, лицензии на IDE, хостинги и т.д.

📸 Мне понадобилось 4 попытки, чтобы подтвердить статус студента. Первые три отклонили из-за качества фото студенческого.

В итоге статус подтвердили. Сейчас жду выдачу доступов, в течение 72 часов.

👀 Как всё откроется, поделюсь с вами.

🔗 Вот ссылка на весь список https://education.github.com/pack
❤‍🔥21👍1🔥1💋1
GitHub Education


🎉 Буквально сегодня увидел, что пришли доступы к пакету.

🏆 В профиле уже красуется статус Pro: Copilot активирован, курс от GitHub имеется, остальные инструменты пока не тестил.

Доступ к Pro-версии GitHub действует 2 года до 04.04.2028. Позже продлю, так как к тому времени я ещё буду учиться.
❤‍🔥21💋1
Вайбкодинг


🚀 Как и обещал, делюсь первыми впечатлениями: конечно круто, ведь инструментов много, но есть нюанс.

💎 Доступ ко всему вроде есть, но пользоваться всем подряд не получится такой вот парадокс.

📚 Часть плюшек (типа курсов) можно забрать без проблем, для некоторых нужен VPN, но с этим, думаю, все справятся.

💳 Главная проблема в том, что есть сервисы типа DigitalOcean они требуют карту иностранного банка или PayPal для проверки на бота, а у меня сейчас этого нет.

🤖 Также решил повайбкодить и загнать Copilot в IDE, чтобы перенести систему обновлений из одного проекта в другой.

🤔 Лично у меня такой формат не вызывает того удовольствия и удовлетворения от программирования, которое есть, когда пишешь всё сам.

💡 Но могу отметить: если использовать ИИ как помощника, который предлагает альтернативы, ищет ошибки это реально удобно.

Особенно когда можно делать это прямо в IDE, не переключаясь на браузер.
5💋1
🎨 Генерация изображений


Примерно около года назад Open AI выпустили свою модель для генерации осмысленных картинок.

😊 В свое время я ее потестил, можете сравнить.

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

☝️ Вверху тот же сюжет, что я просил сгенерировать год назад и мне очень нравится прогресс.
5
🏎️ Maximus


Чуть больше двух недель назад сел за разработку следующей версии NFS-MaxEd, нынче называемой Maximus.

👨‍💻 Из проделанного: система обновлений, новая кодогенерация, импорт nfsms-скриптов (требовались ещё проверки).
😓 Но вчера проект стёрся, и меня откинуло назад на 2 недели. Почти весь прогресс стёрся, но это будет мне уроком.

⚒️ Сейчас занимаюсь новой системой кодогенерации, а также написал прогу для проверки корректности сгенерированных скриптов.

🖼️ С помощью неё я могу кинуть несколько пар скриптов и потом удобно видеть, где они отличаются (красные строки).

🔍 Это очень сокращает время на поиск несостыковок. На глаз я бы с ума сошёл сверять построчно каждый скрипт с эталоном.
1🔥41
👨‍💻 Решил освежить свое рабочее место и заменил табуретку на данное кресло, сидеть за кодом стало в разы приятнее.

🙃 Сравнительный комментарий дать не могу, так как это мое первое кресло, но я доволен.

⬆️ Однако кое-что сказать могу, учитывая мой рост (189 см), сидеть в нем вполне приятно, кресло немаленькое, можно даже лечь.

☀️ Также поздравлю всех с первым мая!
3🔥2🥰2👍1