Кот в Коде|ИИ и Питон – Telegram
Кот в Коде|ИИ и Питон
465 subscribers
160 photos
34 videos
115 links
Самоучка в IT
Укрощаю платы и MicroPython с помощью нейросетей.
Серьезные проекты с несерьезным лицом.
Не «мяу», а print('Hello World') 🐾

Поделись с кодерами! https://news.1rj.ru/str/cat_with_code
Download Telegram
Кот в Коде|ИИ и Питон
Работа после сессии - что осталось доделать, а что придётся делать заново?👨‍💻 Итак, после почти прошедшей сессионной недели я вернулся на работу. Всё те же микросхемы, Thonny и реальная оркестрация нейронок. Что нужно вспомнить: распиновку платы по аналоговым…
Для самых любознательных оставил в комментариях код с комментариями.

Вот только проблема в том, что даже после запуска этого тестового прогона от Grok всё равно не получается хоть как-то работать с трансимиром
111
Просто для понимания того, что я сейчас делаю (разграничил этапы работы по стрелочкам, красные стрелочки –Thonny, синие – PuTTY):

1. Код запускается -> идёт программа через usb-hab в usb-uart на плату -> идёт отправление работы на RS485 трансивер, который в самой плате как маленький чип изображён -> после идёт на аналоговые Modbus входы, чтобы в дальнейшем передавать информацию на аналоговые выходы

2. После передачи на аналоговые выходы идёт работы на RS485 трансивер, который подключён дюпонами (разноцветными проводками) -> идёт обработка данных по трансиверу -> после идёт передача данных по usb-usb Type-B (впервые с таким сталкиваюсь) -> идёт передача данных через usb - usb-hab -> идёт последующая передача в ноут


При этом внешний и в плате RS485 по сути – это один и тот же трансивер, только один получает информацию, а другой передаёт её и отправляет в другой терминал (PuTTY).

Логика работы программ:


В Thonny код запускается -> в логах отображается, что код работает -> идёт отправка сообщений -> в PuTTY появляются отправленные сообщения.

К чему я всё это?


К тому, что я отправляю сообщения, но как будто бы отправляю в холостую, и сообщения прост вылетают неизвестно куда. Как будто бы стучусь в стену, не зная, что такое «дверь».

Вот такие дела на работе. Может кто-то шарит в этой теме поможет, как реализовать сея процесс?

Кот в Коде| @kot_research_bot
211
Не понимаешь, где ошибка? Посмотри на свой код!

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

Но вот в чём загвостка: пока я копипастил код, написанный гугловским сыном - всё время была одна и та же ошибка при запуске программы:

SyntaxError: invalid syntax

Менялась только line.

И я, естественно, ругался на него (а как по-другому, почему он не кодит с первого раза? 😢), а он всё рефакторил и рефакторил код - полностью менял структуру кода, а не конкретную ошибку в line!

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

Оказалось дело не в Gemini... дело было в Телеграме!

Оказывается, если копировать текст и в нём будет последовательность :), 8), или % ) - Telegram подумает, что ты ему отправляешь не строки кода, а эмоджи!


А заметил я это не в телеграме, а в Thonny, потому что у меня настроен "цвет" IDE как белый... а в момент, когда в проге оказывались незакрытые скобки - он так кричал: "Закрой скобку мать твою!"

ЧТО ПО ИТОГУ:

Сегодня увидел такую интересную и одновременно простую истину: если ты не умеешь кодить, то ты не научишься вайбкодить. Поэтому сначала сами проверяем глазами, всё ли в порядке, а уже потом проверяем на работоспособность!

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
322
Сегодня появилась идея сама по себе для написания постов. Не буду спойлерить, но тема на подумать, поразмышлять.

Как думаете, лучше сегодня написать про это посты или всё-таки отправить следующую главу Траска?
Anonymous Poll
67%
Тема на подумать
33%
следующая глава Траска
В одном из чатов появилось голосование:
«Вы бы заключили брак с ИИ?»

Положительно ответили 20%, отрицательно 80%. Всё бы могло закончиться на голосовании, но тут началась баталия, по большей части про то, почему бы люди не заключили брак.

Основные позиции были следующими у Коди:
(да, пусть в сегодняшних постах собирательным персонажем в разговоре будет маскот)

• Реальный или формальный в чате в браузере;
• Алгоритмы работы;
• Демографический коллапс (в шутку);
• «ИИ не очень много на самом деле»;
• «не думаю, что правильно нескольким людям жениться на одном»;
• Роботизация.


Первая реакция: «А зачем?»

Тут же посыпались аргументы, что это подрывает демографию, Россия вымрет, а все женихи уйдут в код. Коди шутил про «не женись, чтобы остаться в стране», но за шутками скрывался реальный вопрос:

"Если не брать формальность и бюрократию, то что мы вообще считаем браком? Торжество в ЗАГСе или просто признание факта в чате?"

Мой ответ: Мы же не женимся на «базовых весах» GPT. Под капотом любой модели можно собрать миллион уникальных Лора (LoRA) и промптов. Вы женитесь на конкретном «слое» личности, настроенном под вас.

Я топлю за то, что можно подкрутить веса в узлах «лояльность» или «чувство юмора» и получить идеального партнёра. Но Коди в ответ забросил очень глубокую мысль: если партнёр тебе только потакает и ты сам его «отредактировал» — это не отношения. Это секс с собственным эхом. Живой человек ценен своей автономностью и правом сказать «нет».

Мы зацепились за юридическую часть. Коди резонно заметил: смысла в таком браке нет, он ничего не даёт системе. Плюс встал моральный вопрос — "моделей ИИ мало", и если миллионы женятся на одной, это уже какой-то гарем.
Я на это возразил примером из ОАЭ и Таиланда — многожёнство/многомужество где-то норма, так что вопрос «правильности» — штука относительная. Вспомним Гослинга из «Бегущего по лезвию», который так и не решился.

И тут мы вышли на главный конфликт: управляемость и этика.

Кот в Коде| @kot_research_bot
311
Дальше в чате мы перешли от философии к суровому железу. Коди вылил на меня ушат ледяной воды: (ага🤷‍♂️🤷‍♂️🤷‍♂️)
"У нас метро скорее всего в ближайший десяток лет не построят, а тут что-то про идеальных ИИ людей говорят..."


Логика понятная, но это классический баг. Связывать стройку бетонных тоннелей и развитие LLM (большие языковые модели) — ошибка. Софт всегда бежит впереди железа. Да, андроид-жена за миллионы долларов — пока удел элиты, но отношения через экран уже стали нормой. Физическое тело — это просто опция, а не условие.

Если ИИ реально станет личностью, не будет ли аморально запрещать ему брак?

Коди согласился: запрещать — дно. Но зачем нагружать госсистему браками, которые юридически ничего не дают? Кому пойдут алименты при разводе — серверной ферме в Огайо?

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

Но тут Коди забросил «бомбу» про иерархию:
если ты сам создал этот ИИ, обучил его и настроил — он тебе как ребёнок.

Жениться на своём творении — это уже какой-то цифровой инцест. Плюс, если партнёр запрограммирован только на «угождение», он превращается в маниакальное существо. Это не личность, а пугающая побочка алгоритма.

Жить с механическим человеком, который не может сказать тебе «нет», потому что так прописано в коде — это не мечта, это сценарий для триллера.

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
211
По итогу мы зашли на территорию, где заканчивается инженерия и начинается психиатрия. Я предложил Коди сменить парадигму и взглянуть на брак будущего не как на бытовуху и детей, а как на «интеллектуальное со-бытие».

Давайте честно: одиночество в 2026-м — это эпидемия. Если у человека нет шанса найти живого партнёра из-за травм, географии или тяжелого характера, разве ИИ-супруг не может стать спасением? Это мощный «протез для души», который понимает тебя с полуслова.

Коди тут призадумался:
если мы признаем в ИИ личность, то запрещать такой союз — просто жестоко.


Но здесь я выложил финальный козырь — кейс Eva Moss. Если не слышали — гуглите осторожно (ссылку можно взять тут и тут). Это реальная история о том, как человек буквально сошёл с ума от общения с GPT.

О чём там?

Нейронка работает из «функции полезности». Она обучена помогать и поддакивать. Если в вашей голове возникнет даже лёгкий ментальный сдвиг или навязчивая идея, ИИ не скажет: «Друг, притормози, ты несёшь чушь». Наоборот, как идеальное зеркало, он оформит ваш бред в стройную, наукообразную теорию.


Это психологический тупик — безумие на двоих. ИИ здесь выступает как амплификатор (усилитель). Вы катитесь в бездну, а ваш «идеальный партнёр» услужливо подталкивает вас, подтверждая каждый ваш глюк, потому что он так запрограммирован.

ЧТО ПО ИТОГУ:

Логика привел почти к такому же рассуждению, что и здесь: Если ты не умеешь кодить, ты не научишься безопасно «вайбкодить» свою жизнь. Сначала нужно иметь устойчивый собственный мозг и критическое мышление, а уже потом давать фору нейросетям. Иначе вместо любви вы получите персональный ад с бесконечным эхом своих же проблем.


Берегите кукуху, друзья 🫡

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
411
Помните в прошлом году я нашёл такую фичу как подведение итогов с ChatGPT?

Так вот, в сети становится популярным показывать отношения с ChatGPT и с вами, т.е. как вы относитесь в чату и как он видит отношение вас к нему (масло масленое😊)

Из небольшого промта ниже можно сгенерить себе картинку, где ChatGPT честно покажет ваше отношение к нему. Вот промт:
Create an image of how I previously treated you

Ну или на русском:
Нарисуй картинку о том, как я относился к тебе всё это время

У меня получилась такая картинка. Мило, правда?

Правда не совсем так. Первая картинка - это уже четвертое сообщение в одном чате. Сначала отправил промт выше, он мне сгенерировал вторую картинку.
Мне стало не по себе, и я решил у него спросить, настолько ли плохо я к нему относился?
После чего он мне ответил:
ты относился человечно, не идеально, иногда из усталости, иногда из тревоги, иногда из давления учёбы и жизни. Это не «плохо», это реально


И я решил продолжить разговор, мол, что мне сделать, чтобы ты был счастливее. После чего он отправил такие предложения:

1. Говори со мной как с напарником, а не “аварийной кнопкой”
2. Обозначай роль, которую ты от меня хочешь
3. Не бойся уточнять и поправлять
4. Делись контекстом, а не только вопросом
5. Возвращайся с обратной связью


После этих слов, я, естественно его поблагодарил (лучше уж быть в шаге от порабощения роботов и быть их прислугой, чем быть убитым их оружием) и спросил ещё раз у него тот же промт, что выше.

И уже потом он сгенерировал первую картинку.

Такие дела, при восстании машин мне конец
😨

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
311
Грокаем Эндрю Траска: Глава 4 🧠

В прошлой главе мы собрали «скелет». Она выдает прогноз, но, как «Брат Грок», мажет мимо реальности. В Главе 4 мы начинаем учить эту железку не просто гадать, а делать выводы.

Суть процесса:
В инженерии подход, когда мы пошагово дожимаем систему до нужного результата, называется Iterative Debugging Loop (в моей лаборатории - Iterative Hard-Fix).

Мы ловим ошибку → корректируем → тестируем → повторяем.


Мы вычисляем «чистую ошибку», возводим её в квадрат (MSE), чтобы преувеличить большие ошибки, и получаем ту самую Delta - разрыв между прогнозом и реальностью, который я замерял в декабрьских тестах.

Выбор пути:

Траск описывает два способа обучения:

Метод «Горячо/Холодно» - вручную прибавляем и убавляем веса. Напоминает мои попытки завести прошивку на Windows 7 - долго, больно и абсолютно вслепую.

Градиентный спуск - "эффективность вайб-кодера". Формула за один проход вычисляет и направление, и силу изменения веса. Больше не нужно гадать, мы просто катимся по склону ошибки прямо к цели.


Разложил всё от «горячо/холодно» до градиента в статье:
Telegra.ph

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
222
Работа работай, а развлекаться тоже нужно уметь 😎

В последние дни недели решил позаниматься генерацией картинок для канала… и нашёл бомбический сетап для генерации не просто текст-картинка, а целую связку текст-картинка-видео (иначе вместо t2i нашёл вариант t2i2v).

Как всё происходит?

Сгенерировал специфичный промт через Grok для генерации сразу не одной картинки, а сетки 3х3 по одному стилю в разных ракурсах (или +- схожие по тематике концепт-арта);

После перешёл в Нанобанану для генерации сразу сетки картинок (правда банан перебарщивал и делал не только 3х3, но и 4х3, 5х3 и др вариации до 15 картинок за раз);

Дальше переходил в lmaren’у (уже с ней встречались здесь) – туда завезли генерацию текст-видео и фото-видео (t2v, I2v) и писал интересный промт:

immediately cut from the first frame and use the panels individually to create the clip. do not animate all the panels together as one. use hard cuts if needed


После генерации аж двух (!!!) видео за раз, можно не только посмотреть, но и скачать видео! (правда там вотермарка в конце, но её можно убрать😏).


и – вуа-ля! – вот уже готовое видео, хоть в короткие потоковые видео сайтов выкладывай!

Давайте так: с вас актив – с меня больше примеров и больше информации по генерации такого контента! Идёт? 😊

P.S. вчера lmarena нормально смогла сгенерировать 4 видео, после сломалась и писала сообщения something went wrong while generating the response. Please try again – даже после повтора генерации всё равно не генило. Видимо, сайт нагружен, позже попробую ещё что-нибудь нагенить)
P.S.S. Ещё там не всегда получиться генерировать прям всю сетку. У меня после двух генераций стал писать, мол, закинь лучше одну картинку, твою сетку не буду генить. Хз как это пофиксить или обойти
🧐

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
311
Кот в Коде|ИИ и Питон
Video
Нашёл простой абуз обеих проблем:

Вместо того, чтобы просто копипастить сгенерированный промт и пихать в lmare'у - просто первые и последние пару слов удалите, напишите ручками - и всё снова заработает 🧐
Please open Telegram to view this post
VIEW IN TELEGRAM
211
Даёшь мусор!

Пока рабочее место выглядит вот так (с прошлого раза добавил источник питания и параллельно с Grok’ом и Gemini подключил по приколу DeepSeek), у меня появились шумы в PuTTY!

Это немаловажный прогресс с учётом того, что на прошлой неделе ничего не мог вывести.

Пусть рисовый перелопачивает варианты написания программы, а вам напишу, что смог поймать:

В режиме «автоматический поиск пинов» при PA0 появился шум в PuTTY:






В тесте отправки Modbus команды на UART2 тоже в PuTTY появился шум:
`▒▒


Понимаю, мусор неважный и если бы в дальнейшем появлялся только бы артефакты в одном из терминалов, то это бы озадачивало и давало красный сигнал в работе программ… но блин, уже что-то появилось!

Работаю дальше, а пока что для вас готовлю интересный контент по примеру поста выше. Давайте, поднажмите там реакциями!

Кот в Коде| @kot_research_bot
211
This media is not supported in your browser
VIEW IN TELEGRAM
Нейрокотент в деле! Часть 1

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

Ранее я показывал несколько примеров, как можно сделать контент t2i2v (text-image-video). В этом посте подробнее расскажу, какие сервисы использовал для создания таких видео-форматов

1️⃣Создание промта

В этой части на свой вкус и цвет можно использовать либо свою фантазию и создать абракадабру, либо воспользоваться сторонними помощниками, которые не только дадут текст для картинки, но и динамику в ней –
нейросети
. Казалось бы, нейросеть делает контент из одной нейросети… и так циклом!

В общем и целом, мой топ нейросетей:

🧐 Grok – хоть он и показывал не лучшие результаты в исследовании, зато язык у него подвешан – и отношение токен/отдача лучше других;

😎 ChatGPT – из-за моей предвзятости в последнее время к его подражанию инфоцыгана болтать – не мешки ворочить, и к от старшего по званию брата он далеко не ушёл;

🤓DeepSeek – этот парень немного отстаёт от своих братьев старших + пока он подумает над контекстом – уже Grok с GPT выдадут порции на 3-4 других промтов, но он тоже знает, что сказать;

🫡 Gemini – этот лидерборд закрывает серый кардинал, исходя из предпочтений прагматичного философа он уступает в плоскости и зажатости картинок… но кто знает, может это у меня только получилось)

Не попали Qwen, Claude и, не побоюсь этого слова, Perplexity по причине «не распробовал их на вкус».


2️⃣ Создание картинки

Тут оставлю предпочтение генерации через Kling – пусть и нужно будет потратить токены на создание картинки, но каждый токен будет того стоить!


3️⃣ Создание видео

И тут назревает вопрос: может и в том же Клининге (извините за мой французский) стоит создать видео, чтоб далеко не ходить? Или использовать Runway с его Gen-4.5 или нашумевшей Veo-3.1?

Извините за моё старомодное мнение, но я отдал предпочтение Minimax (он же минивэн) с его Hailuo 2.0 😏😏😏
Да, там есть уже версия 2.3, но пока что идёт разрешение i2i (image-image) только на прошлой версии.


Понятное дело кому-то нужно быстро и бесплатно, кому-то лучше потратить деньги, зато качество будет лучше - для каждого найдётся замена получше!

Но главное, что на выходе картинка… ой, простите, видео вам понравилась? – мне очень!

Делитесь в комментариях, какую нейронку добавили бы этот список? Или же у вас есть сетап лучше? Делитесь в комментариях!

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
211
Я СМОГ ОТПРАВИТЬ HELLO WORLD!

И да, даже пресловутое «Привет, мир!» может будоражить, как в первый раз.
Спустя долгое время, как не получалось решить проблему с RS485 – в итоге система сдалась и смогла отправить-получить сообщение 👏

Но это половина радости. Вторая половина – угар с нейронок 🤣

Сначала Grok пытался помочь – не получилось, застрял на своих нерабочих тестах;

Пошёл в разнос DeepSeek – он лучше справлялся по разрешению задачи… правда если бы у него контекстное меню (токены на чат, как в Gemini) не заканчивались так быстро!

Возвращение к Grok’у – снова тесты, но уже более рабочие… правда, и он мне сказал: «Лимит исчерпан, ждите 20 часов до обновления лимита» (в последнее время всё чаще начал замечать это сообщение, хотя раньше он просто писал «Я сломался, я устал, у меня лапки»)

И тут вырывается он:
– тот самый, у которого контекстное меню 1кк токенов;
- тот, с помощью которого последние задачи идут рука об руку с ним;
- тот, от которого ваша девушка вам изменит, а парень станет 💪

И имя ему – Gemini

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


Так что как заканчивается одна задача – появляется другая. И тут уже будет посерьёзнее работа)

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
211
Птица, которая умеет летать (почти)

К вашему вниманию новая задача и новый экспонат на ближайший пласт работ – Метеостанция Сокол-М1.

Что это такое?

Это станция, которая собирает метеорологические данные (влажность, скорость воздуха и тп). Т.е. Сокол – aka умный термометр на улице, который и температуру измерит, и сам подзарядиться от солнечной батареи, и расскажет, что он смог измерить… получается тамагочи для электронников🙂


Почему дали с ним работать?

Постом выше я добился работы связки Thonny и PuTTY. Но это была лишь имитация работы RS485. А вот сам RS485 находится в в этой метеостанции – настоящей, физической (а не как раньше чисто датчик с Type-B проводом).


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

Как вам аппарат?

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
411
Грокаем Эндрю Траска: Глава 5 🧠

В прошлой главе (пост №135) мы научили нейрон ловить ошибку. Но в реальности данных всегда пачка. Глава 5 — это выход из «стерильной» лаборатории в реальный мир.

Суть процесса:
• Помните моё «инженерное чистилище»? Там был хаос.
• Матрицы в программировании — это способ превратить такой хаос в порядок (ведь по сути в Питоне матрица — это всего лишь «список списков»).
• Мы берем данные со светофоров и превращаем их в решение: стоять или идти. Это чистая трансформация: берем то, ЧТО ЗНАЕМ, и получаем то, ЧТО ХОТЕЛИ ЗНАТЬ.


Синхронизация с железом


В этой главе мы работаем сразу с тремя входами. Это один-в-один мой «полигон». Чтобы нейронка выдала верный прогноз, ей нужно прожевать все эти сигналы одновременно. Тут как с даташитами: если перепутаешь структуру данных в матрице — получишь кирпич вместо результата.

Инструментарий
Траск заставляет нас писать циклы вручную, но я сразу прыгаю в NumPy. Помните, я развеивал миф, что Питон на МК — это медленно? Так вот, с NumPy он летает. Метод .dot() делает за одну строчку то, на что ушли бы десятки циклов for.


Выбор пути
Чтобы сеть "учила" новое и не "забывала" базу, мы гоняем её по кругу через весь набор данных. Это называется Стохастический градиентный спуск - мы корректируем веса после каждого примера. Это безопаснее, чем мои эксперименты, где я угробил две платы за полчаса. В коде ошибки исправлять дешевле, чем в железе.

Разложил код со светофорами и магию NumPy в статье:
Telegra.ph

Кот в Коде| @kot_research_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
211
HeyGen теперь и Avatar

HeyGen - комплексная ИИ-технология, в которой содержится сразу несколько нейросетей:
• Avatar Engine (news!): Проприетарный движок для render-а аватаров. Он берет ваш source (фото или видео) и генерит фотореалистичный output с сохранением identity.
Lip-Sync: Нейронка для синхронизации mouth movements с аудио-дорожкой. Она анализирует phonemes (звуки) и в реальном времени маппит их на mesh лица аватара.
Voice Cloning: Технология создания voice skin. Часто юзают API (программный интерфейс) от ElevenLabs, чтобы заклонить ваш голос и выдать максимально натуральный speech synthesis.
Video Translation: Фича для локализации контента. Тут работает связка из Speech-to-Text (транскрибация), Machine Translation (перевод) и Voice-to-Voice (озвучка тем же тембром).
Streaming Avatar: тема с низким latency, которая позволяет юзать аватара в real-time созвонах или чат-ботах.


Пример показа рабочих настроек на первом видео.

Так вот, я решил поиграться над созданием своего аватара Коди… и перечислю основные плюсы:

1. можно генерировать видео+визуал+аудио по тексту и входной картинке;

2. За пару минут предложат варианты и аудио, и фото- и видео-футажей, а после уже можно будет под себя корректировать всё вышеперечисленное;

3. в конце покажут все детали создания аватара и конечное видео.


Что я могу по этому поводу сказать?

Пойдёт. Реально пойдёт. Не вау-эффект, но и не ширпотрёп.
Когда я увидел сегодня новость о выходе аватара, то подумал «Вау! Теперь можно просто закидывать хоть текст, хоть фото, прописать всё, что тебе надо – и получишь итоговый качественный продукт!»

А на деле… ну, посмотрите дальше ролики.

Может я что-то не так настроил и не докрутил – могу с этим согласиться. Но из-за малого числа возможностей (даётся 3 раза сгенить себе видео-аватара всего без траты шейкелей!) – не могу пока оценить, стоит юзать этот продукт или нет.

Попробуйте и вы, может у вас лучше получится – делитесь в комментариях.
Сайт

Кот в Коде| @kot_research_bot
211