ch
Feedback
cherkashin.dev

cherkashin.dev

前往频道在 Telegram

Александр Черкашин. Бойскаут, Борец с перфекционизмом. Для связи 👉 @cherkalexander Фулстек разработчик в decisions.com. Работаю со стеком TypeScript, React, C# Пишу о программировании и не только. Блог: https://cherkashin.dev

显示更多
2 113
订阅者
+224 小时
-37
-1930
帖子存档
А вы заметили, что в консоли хрома появился ИИ? Я сперва думал, как это применить, а потом мне понадобилось очистить все браузерные данные для одного Progressive Web App. - Написал коммент // generate code to remove all local data stored in browser for this app прямо в консоли хрома - Нажал cmd + i - Хром сгенирировал код - Нажал tab - Все готово #ai

🎉 Результаты розыгрыша: 🏆 Победитель: 1. RB (@distribate) ✔️Проверить результаты

До завтра разыгрываем 🎟 бесплатный билет на Podlodka AI Crew. Как обычны, по одному докладу утром и вечером всю неделю 15 — 19 июня. Особенно приходите, если вы ещё не уверовали в AI 😉

Я более-менее регулярно хожу на конференции Подлодки по Реакту, но в эпоху ИИ стараюсь больше разбираться с тем, как правильн
Я более-менее регулярно хожу на конференции Подлодки по Реакту, но в эпоху ИИ стараюсь больше разбираться с тем, как правильно выстроить работу с ИИ-агентами. Слышал, есть ещё ретрограды, которые отрицают использование ИИ-агентов 😅 (Саня привет 👋) Сам я почти все задачи решаю с помощью агентов, поэтому хочется посмотреть, как другие ими пользуются. В этот раз иду на Podlodka AI Crew, которая пройдёт онлайн с 15 по 19 июня 📅. Формат у Подлодки, как обычно, удобный: пять дней живых Zoom-сессий утром и вечером, закрытое комьюнити в Telegram и обсуждения со спикерами. Можно спокойно посещать конфу и не выпадать из работы на целый день. Посмотрел программу, пока хочу посетить: - Жизнь после Spec Driven Development, как не убить качество — трансляция, кстати, будет доступна для всех 10 июня - Дизайн без дизайнеров: генерируем UI с помощью AI - Как эффективно проверять код, сгенерированный AI - Eval Driven Development: как перестать проверять AI на глаз Если вам кажется, что онлайн-конференция — это примерно то же самое, что потом посмотреть записи на YouTube, то нет. На Подлодке можно задавать вопросы спикерам, обсуждать доклады в чате и знакомиться с другими участниками. 🎫 Купить билет можно здесь. А по промокоду cherkashin_dev_ai будет скидка 500р. А теперь давайте перейдём к самой интересной части — розыгрышу 🎁. Запущу его завтра, поэтому включайте уведомления, чтобы не пропустить. Правила простые: если вы подписаны на канал и нажали «участвовать», вы получаете шанс выиграть билет. #ai #conference

Сегодня ровно 9 лет как я не менял работу 🙈 У нас в компании дают дополнительный месяц оплачиваемого отпуска за 10 лет работы 🔥 - если думаешь, дотяну до 10 лет 😱 - если думаешь, сольюсь раньше

Вы же знаете, что в нашем App Store недоступны многие приложения — например, ChatGPT. Поэтому если вы вдруг захотели кодить и
Вы же знаете, что в нашем App Store недоступны многие приложения — например, ChatGPT. Поэтому если вы вдруг захотели кодить из такси в Codex по пути домой (вдруг вы хотите кодить не переставая?!), то ничего у вас не получится. Это я к чему: решил создать себе второй Apple-аккаунт. Арендовал американский номер, включил КВН, но постоянно вылетала ошибка: Your account cannot be created at this time. Я грешил на то, что использовал почту Яндекса. Потом товарищ сказал, что он регистрировал второй аккаунт на российский номер. Я решил попробовать: ввёл свой российский номер, почту Яндекса — и всё сработало. Регион указал канадский. В общем, не нужны никакие виртуальные номера. Вроде как я использовал тот же номер, который уже привязан к другой учётке, так что даже вторая симка не понадобилась. Настолько привык к запретам, что не знал, что так просто ещё можно что-то сделать) Правда, слышал, что зарегистрироваться на российский номер получается не у всех. Так что, возможно, тут как повезёт. Тут описано, как использовать новый Apple ID в App Store, не выходя из основного аккаунта. Через ChatGPT придумал канадский адрес и телефон. Телефон никто не проверяет, по крайней мере на этапе авторизации. 🔥 — если у вас есть зарубежный Apple ID 👍 — если обходитесь российским 🤷‍♂️ — у меня андроид

Давно, я не рекомендовал статьи, а сегодня принес «Иногда лучше делать, а не планировать». Там описывается одна простая мысль: за последние десятилетия реализация проектов погрязла в бесконечных совещаниях и согласованиях. Несколько примеров: - Эмпайр-стейт-билдинг построили за 410 дней: с 22.01.1930 по 01.05.1931. - Космическая программа «Аполлон» — от формулирования задачи 12.09.1962 до высадки на Луну 20.07.1969 — заняла менее 7 лет. В наши дни только получение разрешения на строительство может занять несколько лет или десятилетий. Потом ещё несколько лет уйдёт на документацию, подготовку инфраструктуры и т. д. Например, строительство высокоскоростного поезда между Сан-Франциско и Лос-Анджелесом началось в 2015 году и не окончено до сих пор. Самая классная фраза из статьи: «Время, потраченное на обсуждение пункта, обратно пропорционально рассматриваемой сумме». Это правило называется законом Паркинсона. Думаю, все замечали, как на каком-нибудь митинге чрезмерное внимание уделяется мелочам. Например, можно 20 минут обсуждать название кнопки или порядок полей в форме, хотя всем примерно понятно, что надо сделать. Каждый считает, что важно сделать именно так, как хочет он. При этом сложные моменты, где нужно приложить усилие и реально подумать, люди часто пропускают. То же самое часто происходит и во время код-ревью. Все мастера указать на неправильное именование переменной, но чтобы разобраться в архитектуре, многие не хотят тратить силы. Это ещё называется bike-shed effect или «эффект велосипедного сарая». Год назад у нас произошла большая реструктуризация, и появился скрам со своими планированиями и грумингами. На груминге можно долго обсуждать, как лучше что-то сделать, где могут появиться подводные камни, что ещё нужно учесть и прочее. Но я вижу, как все терпеть не могут эти митинги. Все хотят просто сидеть и заниматься своим делом. Для некоторых важных задач, конечно, нужно обсудить подход и понять, как мы будем это решать. Но, кажется, что гораздо важнее полностью понять требования, а что до реализации  — для некритичных задач проще спросить у Клода или Кодекса: «что сломается, если я внесу это изменение?» или «как лучше реализовать это?», а не тратить время всей команды на обсуждение. Да и иногда проще быстро спрототипировать — спасибо тому же Клоду — и спросить у команды: «вот так нормально?», чем снова собирать всех на обсуждение. Раньше что-то переписать могло занять дни, а теперь — часы. Поэтому мне кажется, что это не такая уж плохая идея. Ещё один интересный момент из статьи: В 1944 году ЦРУ выпустило инструкцию по саботажу работы компаний для своих диверсантов. Среди советов: всё прогонять через формальные каналы, чаще делать длинные доклады, спорить о формулировках, поднимать несущественные вопросы и возвращаться к уже принятым решениям. Задача — снижать продуктивность, но выглядеть так, будто ты просто соблюдаешь правила. Иногда кажется, что многие современные менеджеры отлично с этим справляются. Ставьте: - 🔥 — если митинги заколебали - 👍 — если вы везунчик и у вас минимум митингов #fridayreading

Я пару месяцев назад сделал экспорт постов из Телеги в свой блог написанный на Astro, и агент навайбкодил мне такую конструкц
+1
Я пару месяцев назад сделал экспорт постов из Телеги в свой блог написанный на Astro, и агент навайбкодил мне такую конструкцию — for await.
for await (const message of client.iterMessages(entity, { reverse: false })) {
  // ....
}
for await...of — это цикл для перебора асинхронных коллекций. Обычно он используется, когда данные приходят не все сразу, а постепенно: например, из API, базы данных, файла или постраничной загрузки. Сообщения подгружаются постепенно: for await берёт сообщения одно за другим, а когда текущая загруженная порция заканчивается, iterMessages делает следующий запрос в Telegram за новой порцией. Минимальный пример выглядит так:
const delay = (value, ms) =>
  new Promise((resolve) => setTimeout(() => resolve(value), ms));

async function* makeNumbers() {
  yield await delay(1, 1000);
  yield await delay(2, 1000);
  yield await delay(3, 1000);
}

async function run() {
  for await (const number of makeNumbers()) {
    console.log(number);
  }
}

run();
Наиболее простой для понимания пример применения — пагинация. Мы можем инкапсулировать всю работу с получением данных в асинхронном генераторе, и пройтись по коллекции с помощью for await. Реальный пример можно посмотреть здесь или на второй картинке. ⚠️ Важный момент: for await работает последовательно. Он не запускает все итерации параллельно. 👍 — было полезно 👀 — уже знали про for await А выгруженные посты, можно посмотреть 👉 здесь. #javascript

19 июня еду на CPC.Forum — международный форум про перфоманс-маркетинг и рекламные системы. Сейчас почти у всех одна и та же история: реклама дорожает, лиды добываются сложнее, цикл сделки растет, а планы по продажам никто не снижает. На форуме как раз будут разбирать, что с этим делать. Особенно ценно, что в программе: ▪️ 100+ спикеров (Amazon, «Яндекс Реклама», Flowwow, Calltouch, RUTUBE, PREMIER, Skyeng, «Самолёт», Skillbox, GeekBrains, Clickise, «Купер», «Ёбидоёби» и др.); ▪️ Более 4-х залов по разным темам (записи выступлений тоже будут); ▪️ Большая выставка известных компаний (мерч, интерактивы, розыгрыши); ▪️ Организованный нетворкинг; ▪️ Панельная дискуссия по трафику от топ-экспертов рынка; ▪️ Церемония CPC.Awards; ▪️ VIP-afterparty с концертом от суперзвезд! Хедлайнер форума — Ксения Собчак. Лично я очень хочу послушать выступления: - Денис Сметнёв — «Инструменты, которые стали возможны благодаря AI» - Артур Саркисян — «Новая операционная система бизнеса: ИИ, данные и клиентская память» - Алексей Дощинский — «Как расти через контент в 2026 году: площадки, системный постинг, автоматизация, аналитика и ИИ-советы» - Владимир Сургай — «SurgayGPT: ИИ-автоматизация маркетинга TFA.digital» 📅 19 июня, пятница 📍 Москва, Конгресс-центр ЦМТ Надеюсь, увидимся там с вами! Цены скоро станут выше, успевайте приобретать билеты со скидками ❤️

У меня уже давно была идея реализовать проект «Второй Мозг». Я долгое время пользовался Notion, но они редиски, и поэтому я перебрался в Obsidian. И в эпоху ИИ понимаю, что это было самым правильным решением. Так вот, я думал, было бы круто взять свой Obsidian Vault, положить его на VPS, прикрутить к нему телеграм-чат и нейронки. Тогда мой список дел и проектов всегда был бы под рукой. А ещё можно записывать, что готовит жена, и в следующий раз, когда она спросит «что приготовить», быстро спросить ИИ, что было приготовлено за последние 2 недели, и выбрать. 😄 Тут на прошлой неделе сходил на вебинар OpenClaw и понял, что всё уже реализовано... Иногда чувствую себя дедом, когда выходит новый инструмент. Кажется, что все вокруг уже давно со всем разобрались, а я ещё понятия не имею, зачем этот инструмент нужен. Если кратко, OpenClaw — это такой open-source AI-агент, который можно поднять у себя и подключить к своим данным, файлам, сервисам и общаться прямо в Телеге. Получается, это примерно тот самый личный ассистент поверх Obsidian, о котором я и думал. 😅 Благодаря ребятам из Guide DAO получается держать руку на пульсе. Сейчас у ребят появились курсы по: - OpenClaw - Курс по клоуд коду - Курс вайбкодер - Курс по созданию агентов - скоро появится курс по созданию продукта и его монетизации Покупая один курс, вы получаете доступ ко всему. А сейчас по промокоду 🏷 CHERKASHIN действует скидка 15%. В общем, теперь хочу разобраться, где лучше хостить OpenClaw, обязательно ли нужен Docker, какой хостинг подешевле выбрать, как синхронизировать Obsidian Vault на VPS и локально и прочее. Если вы уже со всем этим разобрались, расскажите в комментариях 🙏 Расскажите, а вы пользуетесь OpenClaw? Какие задачи он для вас закрывает? - 🔥 — активно пользуюсь - 👍 — потыкал немного - 👀 — не довелось #ai #obsidian

Часто при генерации кода ИИ использует в JavaScript ключевое слово void. Я, конечно, видел void, но обычно где-то в минифицированном коде. Сам никогда не использовал, если не считать C# 😄, поэтому такое немного мозолит глаза:
void fetchUser();
Зачем он нужен? Оператор void вычисляет переданное выражение и всегда возвращает undefined.
const result = void fetchUser();console.log(result); // undefined
Но в примере с fetchUser смысл обычно другой: так явно показывают, что промис запускается «в фоне», а результат мы специально не ждём.
void fetchUser().catch((error) => {  console.error('Failed to fetch user', error);});
👍 — если знали про void ❤️ — если тоже видели, но не использовали 😱 — если ИИ уже успел нагенерить вам такого в проекте #frontend #javascript

Мне сегодня 30 🎂 Хотелось сесть и как-то порефлексировать на эту тему, но, если честно, особо не хочется 😄 Единственное, чт
+1
Мне сегодня 30 🎂 Хотелось сесть и как-то порефлексировать на эту тему, но, если честно, особо не хочется 😄 Единственное, что правда хочется сказать: чем старше становишься, тем бережнее относишься к своему времени. И тем заметнее, как быстро оно бежит. А вообще, если оглянуться назад: — 20 лет назад я и не задумывался, как хорошо у меня сложится жизнь — 15 лет назад — даже не подозревал — 10 лет назад — и мечтать не мог Надеюсь, дальше всё будет только лучше. А пока я приехали в Москву и пойду отмечать. Тут моя жена вечно говорит: «Почему ты пишешь “я”, а не “мы”?» Так что исправляюсь: мы приехали в Москву, мы пошли отмечать 😄 А вам спасибо, что продолжаете читать, комментировать и ставить реакции. Для вас это, может быть, мелочь. А для меня — правда важно ❤️ #about_me

Помню, в одном из банков, которые я сменил за последние несколько лет, в настройках была опция выбрать папку для сохранения ф
Помню, в одном из банков, которые я сменил за последние несколько лет, в настройках была опция выбрать папку для сохранения файлов. Пользователь один раз выбирал директорию, а дальше все выгрузки сохранялись туда без стандартного диалога выбора файла. Тогда я и решил разобраться, как браузер вообще может работать с локальной файловой системой. Долго откладывал, но наконец добрался до File System Access API. Это API позволяет сайту работать с локальными файлами и папками, но только после явного выбора пользователя. Например, можно открыть папку и пройтись по её содержимому:
const directoryHandle = await window.showDirectoryPicker({
  mode: 'read',
});

for await (const [name, handle] of directoryHandle.entries()) {
  console.log(name, handle.kind);
}
handle.kind будет file или directory. Можно попросить пользователя выбрать конкретный файл и прочитать его:
const [fileHandle] = await window.showOpenFilePicker({
  types: [
    {
      description: 'Text files',
      accept: {
        'text/plain': ['.txt', '.md', '.json'],
      },
    },
  ],
});

const file = await fileHandle.getFile();
const content = await file.text();

console.log(content);
А можно создать новый файл и записать в него данные:
const fileHandle = await window.showSaveFilePicker({
  suggestedName: 'notes.md',
  types: [
    {
      description: 'Markdown',
      accept: {
        'text/markdown': ['.md'],
      },
    },
  ],
});

const writable = await fileHandle.createWritable();

await writable.write('# Hello from browser');
await writable.close();
🔐 С безопасностью всё завязано на явное действие пользователя. Сайт не может просто так взять и открыть произвольную папку на диске. Более того, браузер может не дать выбрать слишком широкие или чувствительные директории — например, Downloads или Desktop. Там обычно лежит всё подряд, и отдать сайту доступ к такой папке слишком легко случайно. Запись тоже требует отдельного разрешения. Плюс API работает только в secure context: HTTPS или localhost. Конечно, в продакшене использовать всё это врядли получится. Функции всё ещё экспериментальные и нормально поддерживаются в основном Chromium-браузерами, поэтому на телефоне не заведётся. 🧪 Собрал небольшое демо, где можно потыкать это в браузере. https://cherkashin.dev/demos/file-system-access-demo/ Ставьте: 👍 — если знали про File System Access API ❤️ — если узнали что-то новое 😱 — если страшно давать браузеру доступ к файлам #frontend

Как устроены агенты и RAG под капотом Большинство разработчиков собирают RAG и агентов по туториалам или вместе с агентом, не понимая, как всё работает внутри. Из-за этого сложно дебажить проект, масштабировать его или чинить, когда система начинает вести себя не так, как ожидаешь. Чтобы разобраться в устройстве, а не просто копировать чужой пайплайн, приходите на онлайн-лекцию от Тимура Фатыхова — инженера, который руководил DL-командой в KoronaPay. Он разберёт агентов и RAG изнутри и покажет, как собрать первые рабочие версии в n8n. На лекции вы узнаете: — как агенты принимают решения: инструменты, MCP, память — из каких частей состоит RAG и как улучшить его работу — как собрать агента и RAG в n8n — как настроить личного агента на базе Claude Code 🔔 Лекция бесплатная и пройдёт онлайн в четверг, 7 мая, в 18:00 МСК Регистрируйтесь по ссылке и приходите!

Ездил недавно на выходных в Москву, и мне нужно было посмотреть записи занятий по вайбкодингу из GuideDAO. В «Ласточке», коне
Ездил недавно на выходных в Москву, и мне нужно было посмотреть записи занятий по вайбкодингу из GuideDAO. В «Ласточке», конечно же, интернет почти не ловит, поэтому нужно было заранее скачать видео с YouTube. Раньше для скачивания видео я пользовался: - всякими сайтами, но теперь они бесплатно дают скачать видео только в разрешении 360 - Downie 4, но пробный период истёк - ffmpeg -i "...m3u8" -c copy -bsf:a aac_adtstoasc "file-name.mp4" — но он работает нестабильно, да и m3u8-ссылку в девтулзах каждый раз искать надоедает В этот раз нашёл Video DownloadHelper. С ним можно скачивать видео с разных сайтов, правда не больше 1–2 видео в течение пары часов. Но если у вас, как и у меня, 4 браузера, это не будет для вас большой проблемой 😅 Единственный нюанс — в Chrome нельзя скачивать видео с YouTube, поэтому открываем другой браузер, например Firefox. В общем, если не знаете, чем занять себя в дороге, — качайте курсы и видео, которые так долго откладывали. https://v10.downloadhelper.net/

Домой, пора домой ...
Домой, пора домой ...

Первый вау-эффект от ИИ у меня был, когда я сгенерил вот эту демку в v0. Сегодня расскажу про второй. Помню, когда я писал ди
+1
Первый вау-эффект от ИИ у меня был, когда я сгенерил вот эту демку в v0. Сегодня расскажу про второй. Помню, когда я писал диплом — сначала бакалаврский, потом магистерский — авторизация казалась чем-то невероятным. Я читал статьи, смотрел библиотеки, разбирался, что такое JWT-токен и как его использовать. Собирал всё по кусочкам и невероятно радовался, когда оно наконец начинало работать. Тогда на это уходили дни, а иногда и недели. Но с тех пор прошло уже лет 7. Сейчас я снова решил добавить аутентификацию в небольшой пет-проект. На курсе по вайбкодингу узнал про Supabase. Я не очень люблю писать бекенд, поэтому возможность делегировать аутентификацию и перекладывание джейсонов меня только порадовала. В общем, я попросил Codex реализовать аутентификацию. Он сгенерировал весь код и отдельно написал пошаговую инструкцию, что мне нужно настроить в Supabase. И вот за полчаса Magic Link-авторизация была полностью готова ✨. Если сильно упростить, Supabase — это Postgres, вокруг которого уже собрали базовые бекендовые штуки: авторизацию, хранение файлов и CRUD API. То есть, вокруг базы сразу появляется CRUD API. 👉 Кстати, завтра в Guide DAO стартует второй поток по вайбкодингу, где за месяц можно разобраться с основными инструментами и разработать собственный проект с нуля. После покупки участники получают доступ ко всей платформе Guide DAO, включая: - курс по продвинутой разработке с ИИ-агентами - трек по OpenClaw - курс по разработке ИИ-агентов Сейчас по промокоду 🏷 CHERKASHIN действует скидка 10% (плюс около 10% на сайте). Вчера я решил пойти дальше и настроить логин через Яндекс. Тут оказалось сложнее: Яндекс из коробки не поддерживается для аутентификации в Supabase. Codex сгенерировал план, я создал приложение в Яндексе, которое нужно для логина, завёл кастомного провайдера в Supabase, но ничего не заработало. Яндекс открывался, но после редиректа обратно в приложение всё ломалось. Я описал ошибку, сбросил Codex все логи, и он начал дебажить: - отправил запросы в Supabase - дёрнул ручку входа через Яндекс - понял, что ответ Яндекса отличается от того, что ожидает Supabase - замапил ответ Яндекса на стандартные поля Supabase - сам настроил и задеплоил Edge Function через CLI - обновил конфиг провайдера на новый URL И всё завелось 🚀. Вот это и есть мой второй вау-эффект от ИИ. Раньше на такую задачу легко можно было потратить несколько дней. Сейчас — пару часов. Из-за ремонта я немного отстаю от программы. Ещё нужно добавить ИИ в продукт, надеюсь к концу второго потока осилю. 👉 А пока приложение можно посмотреть здесь. Попробуйте авторизоваться и скажите, если что-то не работает. Расскажите, а вы использовали Supabase в разработке? - 👍 — да - 👀 — не довелось #ai

Поймал себя на мысли, что я очень "долго запрягаю". Помню, был в Белгороде на конференции, где выступал Дорофеев. И он там об
Поймал себя на мысли, что я очень "долго запрягаю". Помню, был в Белгороде на конференции, где выступал Дорофеев. И он там объяснял на гусеницах, что есть 2 патологии: - если гусеница (то есть мы с вами) много думает, потребляет информацию, но ничего не делает - у неё отрывается голова - если гусеница только делает, но не думает - она сплющивается Чтобы гусеница нормально двигалась, ей нужно чередовать: подумать, что-то сделать, подумать, что-то сделать. Я стараюсь соблюдать этот баланс, но иногда всё-таки впадаю в перфекционизм. Начинаю думать, что прежде чем что-то сделать, нужно сначала изучить ещё кучу всего. И в итоге, если объяснять на примере гусеницы, голова снова отрывается. Как ни крути, в эпоху ИИ это стало ещё заметнее. Ценность информации снизилась, всё теперь доступно почти мгновенно, бери и делай, но я продолжая следовать старому паттерну, хотя по сути двигаться можно гораздо быстрее. К сожалению, оригинальную картинку не нашёл, поэтому сгенерил свою для наглядности в ChatGPT. А видео с объяснением Дорофеева можно глянуть тут. Надо как-то научиться соблюдать баланс между "думать" и "делать". Ставьте: 👍 - если тоже иногда слишком долго запрягаете 🔥 - если вы здоровая гусеница #productivity

Недавно зашел на гитхаб. Открыл 2 вкладки, в одной из них я залогинился, во второй — нет. Когда открыл вторую, там увидел вот
+1
Недавно зашел на гитхаб. Открыл 2 вкладки, в одной из них я залогинился, во второй — нет. Когда открыл вторую, там увидел вот такое сообщение.
"You signed in with another tab or window. Reload to refresh your session."
Думаю, а как гитхаб понял, что я залогинился в другой вкладке? Пошел смотреть в дев тулзах — соединения по вебсокетам не нашел. Пошел гуглить, узнал, что существует BroadcastChannel, с помощью которого можно реализовать взаимодействие между вкладками. Не знаю, он ли используется на гитхабе, но фича интересная. Накидал демку — нужно открыть несколько вкладок и просто нажать "+1", значение обновится во всех вкладках, при этом будет указано, в какой именно вкладке произошло изменение. Использовать очень просто, создаёшь канал с именем, а дальше из одной вкладки можно отправлять сообщения, а в другой — слушать их и как-то на это реагировать.
const channel = new BroadcastChannel('broadcast-demo');

button.addEventListener('click', () => {
  channel.postMessage({
    type: 'session:changed'
  });
});

channel.onmessage = (event) => {
  if (event.data.type === 'session:changed') {
    console.log('Получили сообщение из другой вкладки');
  }
};
👍 — было полезно 👀 — уже знали про BroadcastChannel #browser #javascript

💪 Боремся с ютубом за внимание Вчера я вернулся из отпуска, отдохнул замечательно. Прилетел на отдых и просто ел, спал, лежа
💪 Боремся с ютубом за внимание Вчера я вернулся из отпуска, отдохнул замечательно. Прилетел на отдых и просто ел, спал, лежал и плавал, никакого тебе стресса, единственная забота — что бы такое съесть на шведском столе. Ну если не считать уведомления из налоговой. От каждого их письма я вздрагиваю, после того, как мне пришлось им заплатить 83 000р из-за неправильно оформленного патента 😅. Я не читал и не смотрел новостные видосы, не читал телеграмм каналы, ну почти. Но в те моменты, когда мне нужно было найти что-то на Ютубе, я открывал главную страницу и видел его рекомендации... И тут сразу вижу, что произошло в мире, что я что-то пропускаю, там новость интересная, а там чувак рассказывает, как он продуктивность свою увеличил в 10 раз, а ещё новый трейлер нового Человека Паука вышел. Блин, всё такое интересное, хочется сразу посмотреть, в общем, ютуб полностью захватывает внимание, через 10 минут я закрываю вкладку и только потом вспоминаю, зачем я вообще туда заходил. Пару месяцев я писал про One Sec, а сегодня расскажу про подходы, чтобы отключить навязчивые рекомендации Ютуба. Я нашел два подхода: - браузерные расширения - встроенный способ на ютубе Я пока попробовал первый вариант — расширение Unhook, оно помогает отключить все рекомендации ютуба: - главная страница будет просто пуста — просто чёрный экран (как на скрине) - при просмотре видео никаких панелей с рекомендаций, никаких отвлечений Второй подход — удалить всю историю ютуба, в этом случае главная страница будет также пуста. Этот подход пока не пробовал, но вот здесь наши индийские друзья уже всё объяснили. - ❤️ — если ютуб также захватывает ваше внимание - 👍 — если вы уже пользуетесь описанными подходами - 🔥 — если вы не против, чтобы ютуб вас отвлекал #productivity