!!! Не переносим background.js на TypeScript, это позволит писать к нему модули как на JS, так и на TS
- Установить node js, зайти консолью в папку проекта
npm i
- установить зависимости проекта (один раз)npm run build
- сборка (после изменений и до подгрузки расширения)- Подгружаем расширение из папки dict
Определитель языка - https://github.com/nitotm/efficient-language-detector-js?tab=readme-ov-file
- Проверить
- Измерить скорость и решить какую модель мы используем, большую /среднюю /маленькую
Расширение создано для блокировки "время пожирающих сайтов", чтобы сохранять внимание и продуктивность
В сфере продуктивности есть два взгляда на решение проблемы с вниманием, (1) - это убирать "шумы", всякие уведомления, время пожирающие ресурсы и т.п, (2) - усиленная концентрация, прокачивать навык концентрироватся и тому подобное
"современная наука пришла к окончательному выводу, что мозг способен меняться всю жизнь, а следовательно, обучение — это естественное и перманентное его состояние. Потому и заставлять никого не надо — нужно только создать такие условия, в которых мозг будет учиться тому, чему хотите научиться вы сами (иначе он усвоит что-нибудь бесполезное вроде очередной дурной привычки)."
Статья на тему - https://knife.media/neuroplasticity/
Механизм слов-веса не идеален, но он прост и дешёв. Возможно потом по мере развития Data science части мы перейдём на что-то лучшие, но пока для нас сложно даже создать слова-веса, хотя механизм уже есть и мы можем это делать Будет куча ложноположительных, ложноотрицательных блокировок - надо найти оптиум в том числе и для пользователя
Нужно найти нишу, что конкретно мы будем закрывать. Для меня когда-то это расширение было дополнение к решению от SkyDNS, т.к у них очень большой и классные белые и чёрные списки, но если перебрать 10 сайтов с аниме найти рабочие можно. Cold Turkey идеален для разбора url адресов, поэтому это не наша ниша
Думаю нам нужно сконцентрироватся на таком типо инструменте для фокуса, например на неделю у тебя заблокированы книги, музыка,видео и т.п. А вот блокировку "не подходящего для работы контента" мы наверное полностью забьём. Или надо ? Потому что это позволит занять нишу родительского контроля. Но детям возможно хватает уже существующих решений
Там есть целый бизнес контент фильров для дитей, школ, библиотек, компаний, хотя тема не то, чтобы очень популярна. Пока что все предпочитают смотреть тик ток, чем делать что-то другое
Основано на другом расширении, которое блокирует не подходящий для работы контент, но оно было полностью переписано на манифест 3 и из-за этого кода от изначального расширения уже нету. Осталась только сама архитектура и логика приложения, Были добавлены новые ф-и и закрыты баги Хотя изначальное расширение тоже "позаимствовало" сами слова-веса из какого-то другого решения, там что-то связанное с работой и контент фильтраницей(никто не хочет чтобы сотрудники смотрели ютуб на работе ?)
1.1.0.4 - версия имеет механизмы:
- Блокировки сайтов по механизму слов-веса, если на сайте найдены слова из списка(настроек), и их веса в сумме превышают лимит, сайт блокируется
- Сайты до проверки скрываются от пользователя(Сделано, чтобы они не показывались, если процессор нагружен и проверка останавливается)
- Если сайт на не ru или en языке, то он блокируется
- Блокируется воспроизведение видео на сайтах не из белого списка
- Также версия WORKSPACE, а значит в ней пока что не реализованы ручные настройки, т.к пользователь легко бы мог их изменить
TODO: 1.2
- Всё из версии 1.1.0.4 + исправление багов
- Настройки для пользователей
- Хороший, поддерживаемый код
- Красивый дизайн
Основной файл инициализации расширения - manifest.json, там в json формате написано, какие скрипты где должны запускаться, какие разрешения есть у расширения(доступ к истории, хранилищу, настройкам прокси и т.д)
Директория assets - содержит иконки, шрифты
Директория contentScripts - контентные скрипты(Запуск на начале загрузки страницы, в конце)
- contentStart.js - применение стилей для сокрытия страницы
- contentVideo.js - запуск в начале загрузки DOM и на всех фреймах. Блокирует загрузку видео
- contentEnd.js - получает текст страницы и раскрывает её после сканирования и решения о блокировки
Директория pages - страницы расширения(Могут быть настройками, pop up'ами и т.д)
- BlockPage - страница блокировки (на неё идёт перенаправление заблокированных страниц)
- Options - страница настроек для пользователя
Директория - utils - preset.json - пресет настроек
tsconfig.json - настройки сборщика TypeScript`а
webpack.config.js - файл настройки webpack
package.json - пакеты зависимостей, а также указание на то, что будет использоваться для сборки