𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
194 subscribers
570 photos
48 videos
5 files
60 links
ニャン
Download Telegram
𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Photo
Ну все
Затянул гайки так, что мать родная не признает)
❤4🤩3❤‍🔥1🔥1
Небольшой спойлер 👀
👀5❤3🫡1
Yoo

Слегка не в тему, но все же - решил засветиться где-нибудь еще, та и попробовать себя в переводе песен, почему бы и нет?

Знакомьтесь: Dose Dose by manika

Сказать честно: Песня охренительно красивая. Хоть и название смущает, но в тексте упоминаний почти 0 (около 2-х строчек)

Зато песня сама очень приятная, всегда слушаю ее чтобы сосредоточиться.

Перевод делал своими лапками, он больше адаптирован под распевку, чем прям на 100% сохранение смысла (но все равно вышло неплохо как по мне-)

Клип на YT: тык
Оригинал на Genius: тык
Перевод на Genius: тык

(Да, изначально оригинала не было на Genius, пришлось запариться и добавлять самому ¯\_(ツ)_/¯)
🥰3❤1
Оке-оке-оке. Прошлый пост вам не зашел. Компенсируем этим постом про ASAI

Небольшой sneak peek к модулю для приборной панели для ASAI (Напомню: АСАЙ - Адаптивная Система Автомобильного Интерфейса)

Пока-что конкретно этот модуль выполняет только базовые функции:
- Управление подсветкой приборной панели (RGB-Лента)
- Выбора режима подсветки с легко программируемыми эффектами
- TM1637 для вывода времени и другой информации
- Энкодер для управления подсветкой, переключения между менюшками и тд.
- DS1302 для подсчета текущего времени, не смотря на отключения автомобильного питания (старый сдох от старости, 1993-2025, F🫡)

За последние 2 дня конечно потерял нюх в режиме сна, ибо нужно быстро собрать приборку. Весь день паяю, всю ночь пишу код. Вчера написал 3 легковесные библиотеки: RootTM1637, RootDS1302 и RootEncoder

Накиньте ❤️/🔥 если вам интересно про них (И выпуск исходники в открытый доступ конечно)

А я.. досматривать сон пойду чтоль...
❤6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
❤3
Многострадальческий опыт написания бота на С++ и почему это того стоит

Здорова всем бессонным. Тоже не спится, поэтому напишу небольшое сообщение. Как вы знаете - я большой любитель Плюсов (В принципе это мой любимый язык программирования)

Конкретно сегодня на повестке ночи - наш бот E.C.H.O, как мы уменьшели использование ОЗУ с ~80 МБ до 8 и причем тут вообще С++

Все началось с сервера за полторы шаурмы в месяц - полностью оправдал себя. Вылетает так, что я и6ал. Хотя без прикрас - держится стабильно на Debian 11, но оставляет около 100 МБ ОЗУ

По началу у меня не было опыта работы с ТГ-Ботами, поэтому пошел по самому простому пути - закачал какие-то индуские библиотеки, с ИИшкой накинул на Питоне бота и ахерел от вылетов - Система, мягко говоря, ЧАСТЕНЬКО перезагружала бота от переполнения ОЗУ, а тот в свою очередь писал сообщение админам, мол, был перезапущен (По 2 раза в день 😭)


Конечно, можно было пойти в оптимизацию Питона, но будем честны? Все угодно ты можешь написать на Питоне, а Питон ты можешь написать на С++ хвхвхвхвх. Та и вообще Питон это язык интерпретируемый (выполняется в реальном времени), со своей виртуальной средой, всякими наворотами и тд. А я напомню - Оперативки категорически мало!

Выбор очевиден - Компилируемый С++, но это же тяжело... Нихера, скажу я так! Было конечно пару проблем, но в целом путь самурая пройден. Расскажу про основные моменты:
- Установка TgBot: Дааа, эту библиотеку фиг установишь, если не знаешь как работать с CMake
- Работа с CMake: У меня еще не было опыта в CMake, но с ним я познал удовольствия жизни и теперь если я скажу что CMake плохой то знайте - меня взломали :D
- Установка зависимостей: В Линуксе - pip install... (фанаты Линукса - ваш звездный час), а в Виндовсе... - Брр, абра кадабра, бадабум! АХ БИЛЛ ГЕЙТС РАЗРЕШИ МНЕ УСТАНОВИТЬ ЭТОТ ПАКЕТ В ВИНДУ ПЖПЖПЖ 😭 (Немного тяжко, но в целом vcpkg спас ситуацию)
- Сборка проекта под Линукс: Вот НИКОГДА не спрашивайте, как я это сделал. А, вы все еще тут? Ну в целом я сначала пошел собирать проект на сервере, но когда сервер ТУПО ПЕРЕЗАГРУЗИЛСЯ ОТ НАГРУЗКИ ХВХВХВХВ (Сборка не самая простая задача), то пошел билдить на своем пк и тут опять Билл Гейтс....
- Эмуляция Debian 11: Сука, да! Если нужно собрать бота на Debian 11, то думай как Debian 11! А ирония в том, что штатный WSL (Эмулятор Линукса для Винды) содержит в себе только Debian 12, который ну ни как не подходит для сборки проекта на Debian 11. Решение?
- Docker: Я не знаю, где я так нагрешил.... Но мне пришлось скачать Docker, чтобы с него как-то выкачать образ Debian 11 (эти овощи в Debian не дают скачать старые версии системы), установить систему в WSL и уже в WSL работать с Debian 11...

Пздц, я знаю. Но что теперь?


А теперь у нас есть весь цикл для создания бота: От написание кода -> Тест на рабочем пк -> Сборка под сервер (релиз)

А главное: нахера зачем это все? Ну...
- Во-первых: Мне, как кодеру на С++, сложновато писать где-то еще (Особенно Питон 💀), ибо я любитель строгой типизации данных, структуры, перечисления, шаблоны, классы с ООПшкой, а также предкомпилируемые условия и вычисления (а.к.а. Макросы).
- Во-вторых: Если грамотно писать код, то создание переменных и аллокаций идет к минимуму = Меньше использование ОЗУ.
- Та и в принципе Питон и оптимизация это две несовместимые вещи. Кто-бы что не говорил, но вся оптимизации Питона упираются в вынесение функций в С++ код, который уже хоть как-то компилируется заранее (Вы OpenCV скачайте, сами увидите в консоли как он сидит компилирует С++ файлы лол)

Интересно ваше мнение: Сделать ли статью на telegraph и/или на Хабре? Расскажу про полную установку и настройку. Ибо раз уж я пишу этот пост - то значит уже давно решил все упомянутые выше проблемы (Бонусом тестовый проект с ботом прикреплю, чего мелочиться)

Мораль истории такова: Кто ищет оптимизацию, тот всегда найдет (Даже если это стоило 14 часов в Райдере)

Высыпайтесь
❤4👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
❤4
Rendered on UnReal Engine 2025
❤5🔥4👀1😨1
𝐑𝐨𝐨𝐭𝐓𝐨𝐨𝐥 𝐁𝐥𝐨𝐠
Накиньте ❤️/🔥 если вам интересно про них (И выпуск исходники в открытый доступ конечно)
Оке-оке-оке, как и обещал! Только что выложил 3 легковесные библиотеки для Ардуино, которые я сам использую в ASAI:

- RootTM1637 - Управление 4-значными 7-сегментными дисплеями на базе TM1637: Вывод времени, управление точкой и яркостью

- RootDS1302 - Работа с модулем времени DS1302: Установка и чтение времени

- RootEncoder - Опрос энкодеров с неограниченным подсчётом кликов + события удержания + обратный вызов (callback) через лямбды


Вся документация грамотно расписана, примеры присутствуют. Функционала в них по минимуму, чисто MVP (Минимально Рабочий Продукт)

Будут какие-либо вопросы, баги или предложения - обращайтесь ко мне в чате или ЛС

GitHub:
RootTM1637 - https://github.com/RootTool0/RootTM1637

RootDS1302 - https://github.com/RootTool0/RootDS1302

RootEncoder - https://github.com/RootTool0/RootEncoder


Have fun!
❤3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
❤3
Unreal Engine 5.5.4 не перестает удивлять

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

(todo - маркер для программистов, что нужно сделать на будущее)
🥰2😁2
Небольшой тул для быстрой замены BP в С++ с сохранением параметров

Знаю-знаю, первый вопрос: "Replace Selected Actors with... + Copy Properties" ?

Но копирование параметров не работает, когда разговор идет о замене БП класса в С++ (Ибо в Анриле это совершенно 2 разных класса, штатное копирование не сработает)

Решение - минимально рабочий тул. Просто спавните этот класс в мире, выбираете БП и С++ класс, а затем нажимаете на кнопку "Replace Classes" ¯\_(ツ)_/¯

Единственная особенность - параметры для переноса прописываются в коде (выделено отдельной зоной, строки 38-48)

В небольшой фиче могу сказать, что есть возможность откатить изменения (Ctrl+Y, Ctrl+Z)

продолжаю переписывать бекенд ага
❤‍🔥2🔥1🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️Разработчики Portal: Solver портировали игру на.. ноду Texture Sample

Респект за оптимизацию 👍
👍5🤯1
Задачка по С++ со звездочкой

Пока болею, заставили решил пройти олимпиаду по ИИ. Есть такая простая (на первый взгляд) задачка. Условия на картинке, ограничения:
- Максимальное время выполнения: 1 секунда
- Максимальное использование памяти: 256 МБ
- Стандарт С++: С++20
- Входные значения: В диапазоне от 1 до 10^18 (включительно)
- Цель: Добиться O(1) (Это реально)

Скажу сразу:
- Компилируемые языки будут эффективнее, чем интерпретируемые
- Используйте тип unsigned long long (а.к.а. uint64_t)
- Если решать задачу в лоб, у вас выйдет примерно O(2^(a+b)) - что овердохера

Оставлю тут небольшую обводку:
#include <iostream>
#include <cstdint>

uint64_t f(const uint64_t& a, const uint64_t& b){
// Реализация функции...
}

int main() {
uint64_t a, b;

std::cin >> a >> b;
std::cout << f(a, b);

return 0;
}


А дальше сами. Удачи :)

через пару часов пришлю подсказку
❤5🔥1🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
❤4
Продолжая решать задачку со звездочкой

Все, кто пошли решать задачу "в лоб" - посочувствую вам. ибо... там буквально нечего делать ¯\_(ツ)_/¯

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

Могу лишь намекнуть на то, что такое странное расположение a и b выбрано не случайно - это именно оси x и y в привычном понимании прямоугольной системы координат, сечете?
(Накинул еще немного цветов чисто для удобства)

Что могу сказать? Ну.... Диагональ всегда равна единице. То есть можно сделать неплохое умозаключение, что если a == b, то это будет единица, а это копеечка в оптимизацию как никак!

Но да ладно, сделаем важное наблюдение - Чем больше "a" и чем меньше "b", тем больше результат. Такое чувство, будто тут пахнет делением одно на другое....

Не сдавайтесь, мы совсем близко
🔥3❤1👍1