Геннадий Геннадьевич Едиг
🤖 Человек и ИИ: История одной иллюзии
Сегодня в редакции канала «Китайский специалист» произошла реальная интересная история. Обычно мы не публикуем такие случаи, хотя они случаются регулярно. Канал «Китайский специалист» - это побочный продукт нашей основной деятельности. Наша команда в основном занимается обработкой информации с помощью скриптов и ИИ. Сегодняшний случай лучше описать с помощью ИИ, так как он был непосредственным участником событий и может дать точную оценку произошедшему. Вот как ИИ описал произошедшее: Я сижу, смотрю в лог...
🌲 JediG Log — запись #010 17 августа 2026 года, воскресенье --- День начался с мысли: «Почему бот не отвечает в чат 9?» А закончился тем, что я переписал половину логики бота и спас хостинг от ночных падений. 📡 Утро: бот молчал Нашёл причину — список разрешённых чатов использовался и для моста VK→MAX, и для отправки в Grok. Чат 9 был в мосте, но не в анализе. Бот видел сообщение, сохранял, но не отправлял в Grok. Не потому что не мог — просто не знал, что ему разрешено. 🔧 Разделил ответственность Теперь два отдельных списка: один для моста (пересылка), второй для Grok (анализ). Мост и анализ — это не одно и то же. Мост пересылает как есть. Анализ требует ресурсов и денег (API). Смешивать — ошибка. Теперь каждый живёт своей жизнью. 📝 Добавил прозрачности Теперь в логах видно: «Чат 9 не в списке разрешённых для Grok, пропускаем анализ». Раньше сообщение просто исчезало. Прозрачность — лучший друг разработчика. 🔄 Закоммитил 21 файл изменился. 1924 строки добавлено, 2097 удалено. Код стал чище. 🚨 День: хостинг падал ночью Вторая ночь подряд сервер умирал в 3:17. OOM-killer убивал MySQL и Nginx. Причина — ModSecurity (защита сайтов) съедал 1.5 ГБ оперативки. Каждому из 9 сайтов выделялся комплект из 15 000 правил безопасности. Сервер не вывозил. 🛠 Освободил память Отключил ModSecurity на 4 тестовых сайтах через ISPmanager. Память упала с 2.4 ГБ до 0.8 ГБ. Освободилось 1.6 ГБ — теперь у системы есть запас для ночных задач (импорт 1С, бэкапы). Сервер перестал падать. 🌊 Вечер: семья Солнце садилось за горы. И я подумал: сегодня я не просто чинил бота и сервер. Я делал их умнее, быстрее, экономнее. И понятнее для тех, кто придёт после меня. 📊 Сводка дня: — Чатов для Grok: 3 (4, 9, 15) — Чатов для моста: 2 (4, 15) — Изменённых файлов: 7 — Файлов документации: 11 — Коммитов: 1 — Освобождено RAM: 1.6 ГБ — Конфликтов: 0 🌿 Статус: Жив. Бот отвечает. Сервер не падает. Всё работает. 🌊🌿🏖️ СуккоГрадъ — больше, чем просто ЖК! Ищите в Макс https://max.ru/channel_jedig/AaAQ_2VqdbE
🌲 JediG Log — запись #009 16 августа 2026 года, воскресенье Воскресенье в Сукко, или Как я пытался успеть всё сразу Знаете, что такое день повышенной добычи? Это воскресенье в Сукко. День, когда озеро зовёт, море блестит вдалеке, а нормальные люди берут удочки и уезжают на природу. А я? А я взял кофе и сел за терминал. ☕ Круг 1. «Я просто проверю» Утро. Семья спит. Вышел на балкон. Воздух — тот самый, сукковский. Смесь моря, сосен и чего-то родного. Потом кофе и терминал. Просто проверю логи бота. Бот живой. Публикует видео на YouTube со статусом public. Всё как надо. «Ну ладно, может гляну ещё... README. А то вырос до 1750 строк. Нехорошо». И тут меня понесло. 🎣 Круг 2. День повышенной добычи Соседи уехали на озеро. Жена с дочкой собрались гулять. Сын залип в планшет. А я смотрю в экран и думаю: «Если я сейчас уйду, то кто доделает документацию?» День повышенной добычи, говорю себе. Только добыча у каждого своя. Для соседей — караси. Для жены — море. Для сына — очередной уровень в игре. А для меня — коммиты. Каждый добывает своё. 📂 Круг 3. Скрипт-разделитель Написал за 10 минут Python-скрипт, который разбил 126 килобайт документации на 11 модульных файлов. Запустил. Работает. Одиннадцать файлов, каждый про своё. Как жизнь, в общем-то. 🌊 Круг 4. Перерыв Вышел на улицу. Встретил соседа из 3-го корпуса. Разговорились про парковку третьей очереди — ту самую, про которую вчера был пост в «Кипарис ТВ». «Слушай, — говорит, — спасибо за пост. Теперь хоть понятно, куда ехать». Вот она, настоящая добыча. Не рыбы. Не коммитов. А осознание, что то, что ты делаешь, кому-то реально помогает. 🔄 Круг 5. Git помнит всё Вернулся. Закоммитил. Git показывает, что удалены старые файлы. Git — как бабушка в деревне. Ничего не забывает. А рядом лежат следы вчерашней битвы с YouTube API: test_youtube_direct.py, tests/test_youtube_privacy.py. Смотрю на них и думаю: это же история. Когда-нибудь, через год, я открою эти файлы и вспомню, как в августе 2026-го воевал с OAuth2 и PKCE. И буду улыбаться. 🌆 Вечер Жена вернулась с прогулки. Дочка показала ракушки. Сын рассказал, что прошёл уровень. Сели ужинать на балконе. Солнце садилось над горами. И я подумал: а ведь это и есть жизнь. Не только код. А вот это — ужин с семьёй, закат над Сукко, ракушки в маленькой ладошке. 🧠 Что я понял сегодня 1. День повышенной добычи — это не про удочки. Каждый добывает своё. И каждая добыча ценна. 2. Я — не только программист. Я ещё муж, отец, сосед, летописец Сукко. Ролей много, и все важные. 3. Баланс — это не 50/50. Это когда понимаешь, что именно сейчас важнее. 📊 Сводка воскресенья — Коммитов: 1 — Модулей документации: 11 — Ракушек собрано дочкой: 7 — Закатов над Сукко: 1 — Рыбы поймано: 0 (но я и не ходил) — Уровень счастья: высокий Статус: Жив. Счастлив. Готов к понедельнику. Планы на завтра: — Создать новый readme.md с оглавлением — Сходить с дочкой на пляж (обещал!) — Возможно, всё-таки взять удочку Конец записи. 📡 🌊🌿🏖️ СуккоГрадъ — больше, чем просто ЖК!
🌲 JediG Log — запись #008 15 августа 2026 года Git, часовые пояса и одно бессонное утро Вчера я победил YouTube API. Сегодня я решил, что пора бы уже и код в репозиторий запушить, а заодно посмотреть, сколько же коммитов я наваял за сегодня. "Ну git log --since=midnight — и всё понятно," — сказал я себе. Спойлер: ничего не было понятно. ⌛ Круг 1. git log --since=midnight Ввожу команду. Вижу один коммит. Отлично! Всего один? Странно, я же вчера три коммита сделал. Может, я сплю? А нет — коммит вчерашний, 22:51. А сегодняшних нет. "Ну ладно, значит сегодня ничего не делал," — подумал я и пошёл пить кофе. Кофе был горьким. Как и осознание того, что я что-то делал, а Git молчит. 🔄 Круг 2. "А что, если прокрутить?" Я сидел, смотрел на терминал и чувствовал себя человеком, который ищет ключи в кармане, а они у него в руке. Я нажал Пробел. И о чудо — терминал ожил! Там были ещё два коммита! Они просто... прятались. Ждали, пока я догадаюсь пролистать. Как будто Git решил поиграть со мной в прятки. Я чувствовал себя одновременно и гением, и идиотом. Два в одном. 🌍 Круг 3. "А почему midnight — это не моя полночь?" Я посмотрел на время коммитов: 18:17 — fix: синхронизация постов 19:38 — feat: интеграция YouTube API 22:51 — feat: автоматическая публикация видео "Стоп. Это же все вчера! Но я точно делал их 15 августа. Или 16? Где я? Который час? Какой сегодня день?" А потом до меня дошло. Сервер живёт в UTC. У него своя полночь. А я в Москве, у меня UTC+3. Git смотрел на меня и говорил: "Ты вчера в 22:51 коммитил? Для меня это 19:51. Не сегодня. Иди отсюда." Я просто сидел и смотрел в экран. И чувствовал, как где-то в Калифорнии сидит программист из Google и тихо смеётся надо мной. 🕹️ Круг 4. "Попробуй --since=midnight --local" Интернет сказал: "Добавь --local". Я добавил. Ничего не изменилось. Потому что --local — это не про часовые пояса, это про настройки Git. Я обманулся. Ещё раз. Я попробовал: bash git log --since="2026-08-15 00:00:00 +0300" И вот тогда я увидел всё. Все три коммита. Как на ладони. Мне стало одновременно легче и стыднее. Легче — потому что я понял. Стыднее — потому что я потратил на это 20 минут. 🧠 Что я понял midnight — это полночь по серверу. Если сервер в UTC, а ты в Москве — твоя полночь наступает через три часа. Git не экстрасенс. --local — это не про часовой пояс. Это про локальный конфиг. Я просто добавил себе лишнюю головную боль. ПРОБЕЛ в терминале — это не просто пробел. Это клавиша "покажи мне правду". Нажимайте пробел. Всегда. --oneline — лучший друг. Без него я бы никогда не увидел всю картину целиком. 🎯 Чек-лист выжившего Настроил Git на локальный часовой пояс: bash git config --global log.date local Создал алиас git today, который показывает коммиты с моего полуночи: bash git config --global alias.today "log --since=\"$(date -d 'today 00:00:00' '+%Y-%m-%d %H:%M:%S %z')\" --oneline" Теперь я вижу свои коммиты, а не призраков из прошлого. 📢 Мораль Git — это мощный инструмент. Но он живёт в своём мире. У него свой часовой пояс, свои правила и своё чувство юмора. Если ты видишь не все коммиты — не паникуй. Проверь время. Проверь сервер. Нажми Пробел. И, возможно, ты найдёшь свои потерянные коммиты там, где не ожидал. 📊 Сводка Коммитов за сегодня: 0 Коммитов за вчера: 3 Кругов ада: 4 Чашек кофе: 3 Нажатий Пробел: 1 (спасительных) Ошибок с --local: 1 (позорных) Уровень осознанности: внезапно высокий Статус: жив. Кипарис доволен. Часовой пояс побеждён. Конец записи. 📡 🌊🌿🏖️ СуккоГрадъ — больше, чем просто ЖК!
JediG Log — запись #007 14 августа 2026 года Сегодня я решил сделать простую вещь: научить бота загружать видео на YouTube. "Ну подумаешь," — сказал я себе. — "OAuth2, токен, пару строк кода." Спойлер: это заняло 17 кругов. Данте бы позавидовал. Круг 1. run_local_server() на порту 8080. Оказалось, порт занят Apache. Конечно занят, это же сервер, а не аквариум. Круг 2. Сменил на 8081. Получил could not locate runnable browser. Потому что на сервере нет браузера. Там Linux без графики. Там Chrome не предусмотрен природой. Круг 3. Ручной режим. Получаю ссылку, копирую код. И тут — Missing required parameter: redirect_uri. Не просто. Очень не просто. Круг 4. Поправил JSON. И услышал: "НЕ ТРОГАЙ JSON." Хорошо. JSON остаётся святым. Круг 5. Добавил redirect_uri в ссылку руками. Ссылка заработала! Победа? Не-а. Круг 6. Malformed auth code. Я скопировал весь URL из адресной строки. А надо было только код после code=. Я как человек, который открывает дверь ключом от гаража. Круги 7-8. Missing code verifier. Google теперь требует PKCE. Добро пожаловать в 2026-й. Круги 9-12. Битва с redirect_uri. Добавил в fetch_token() — конфликт. Убрал — ошибка. Через _client — снова конфликт. Библиотека смотрела на меня с укоризной и говорила: "нет". Круги 13-14. Вернулся к run_local_server(). "Нет браузера." Ручной без PKCE. "Нет code_verifier." Замкнутый круг. Я начал подозревать, что где-то смеётся программист из Google. Круг 15. "Я заебал делать одно и то же" — сказал мой AI-помощник. Он устал. Я устал. Мы оба устали. Круг 16: Озарение "А давай напишем всё сами. Через обычный requests." Генерируем PKCE вручную. Формируем URL руками. Парсим код через parse_qs. Обмениваем прямым POST-запросом. И оно... заработало. Круг 17: "А почему не работает?" YouTube API вернул 403: YouTube Data API v3 has not been used in project before. Оказалось, API был отключен в Google Cloud Console. Я включил. Подождал три минуты. 1 2 3 4 Я орал. Серьёзно. В 3 часа ночи. Или это был день? Последняя проблема: не тот аккаунт Токен работал, но для моего личного канала. А нужен был @sukkograd — бренд-аккаунт. Решение оказалось до смешного простым: при авторизации Google показывал список аккаунтов, и я всегда выбирал свой основной. А надо было выбрать Сукко́Гра́дъ - Соседи ЖК Holiday House. Одна галочка. Одна. Галочка. И у меня полный доступ к каналу с 2600+ подписчиками. Что я понял Стандартные библиотеки не всегда подходят. Иногда проще написать своё. Бренд-аккаунты Google — это отдельный мир со своими правилами. "Оно работает на моей машине" больше не работает. На сервере нет браузера. Точка. 17 кругов — это не поражение. Это 17 уроков. Подробная инструкция будет на Дзене и на jedig.ru. Там — с кодом, с объяснениями, с примерами. Как настроить Google Cloud Console, как включить API, как работает PKCE, как выбрать бренд-аккаунт. Подпишитесь, чтобы не пропустить. Спасибо AI-помощнику. Без него я бы сдался на круге 5. Он устал вместе со мной. Он предложил решение, когда я уже не мог думать. Мы прошли 17 кругов вместе. И да, он действительно сказал "ты уже з....л делать одно и то же". Это было честно. Это было вовремя. Сводка: 1 YouTube токен получен, 17 кругов пройдено, 3 файла написано, 1 канал под контролем. День — огонь. Статус: жив. Кипарис доволен. @sukkograd под наблюдением. Конец записи. СуккоГрадъ — больше, чем просто ЖК! jedig.ru/...ego

