Так уж сложилось, что в СНГ довольно популярен русский Q&A ресурс по ИТ тематике — Тостер. Однако чего-то ему не хватало, когда я начал плотно с ним знакомиться. Это и вылилось в улучшение в виде браузерного расширения. Встречайте.
Ключевые особенности:
- Название: Toster Comfort.
- Статистика пользователей: процент вопросов с решением; карма с Хабра; сводка из профиля — всё это в списке вопросов Тостера.
- Уведомления: в реальном времени на сайте, на иконке, плюс push-уведомления, много настроек, сайт должен быть открыт (вики).
- Фильтры: условия на основе формул: можно скрывать вопросы, раскрашивать их цветом, а также показывать уведомления, — всё это гибко настраивается в виде логических условий (вики).
- Интерфейс: мелкие улучшения, например, показ точных дат или отображение статуса подписки в списке вопросов.
- Интерфейс Хабра: мелкие улучшения (опционально), например, линии на отступы в комментариях.
- Open source: можно переделать под себя, если очень хочется (исходники).
- Free: MIT License.
- Потребление памяти: 30-50МБ, в зависимости от опций и интенсивности использования Тостера
- Размер: 93КБ для v0.8.1 (распакованный, не минимизированный код).
- Фреймворк: отсутствует, чистый JS (минимализм).
- Качество кода: среднее, смешение стилей, большие функции, грязные приёмы, мало комментов.
- Разрешения:
toster.ru, habr.com, notifications, storage, unlimitedStorage
Изначально расширение сделал для себя с одной-единственной целью: показывать процент вопросов пользователя, в которых он удосужился нажать кнопку «Отметить решением». Затем мало-помалу добавлялись то одни, то другие хотелки, пока инструмент не вырос в монстра на сотню килобайт. Тем не менее, принцип «не использовать ничего лишнего» соблюдался до конца.
Одной из главных фич сейчас является использование формул в настройках. С ними можно делать практически, что угодно, любую хотелку по управлению своим вниманием. Главное знать, что хотеть. Сокрытие, изменение цвета и уведомления — вот три основных аспекта внимания при работе с сайтом. Фильтрация всего и вся — ключ к удобству.
Пример гибкого правила, которое позволит получать уведомления на определённую тему:
!tag("Блокирование рекламы") && !contains(t,"реклам") && contains(t,"блокиров") && !tag("HTACCESS") || containsWord(t,"ркн") || contains(t,"роскомнадзор") || contains(t,"роскомпозор") || contains(t,"государств") || contains(t,"запрещен") || contains(t,"запрещён") || contains(t,"пиратск") || containsWord(t,"обход") || containsWord(t,"ростелеком") || containsWord(t,"яровой") || containsWord(t,"рф") && tag("Компьютерные сети") = notify
Сразу скажу, что функцию eval() использовать было нельзя. Так что особо не разгуляешься. Поэтому пришлось написать свой костыль на 5 КБ кода, используя обратную польскую запись. Это, можно сказать, сильно кастрированный JS, как по функциям, так и по синтаксису.
Недавно был пост про Toster Extension. Если сравнивать, то TE имеет более приятный интерфейс и кое-какие функции, которых нет в Toster Comfort. Однако моё расширение делает акцент на потреблении ресурсов. Впрочем, никто не мешает использовать оба расширения, они не должны конфликтовать.
По-хорошему, TC нужно переписывать с нуля, потому что работу можно ускорить минимум вдвое, а работу с кэшем — раз в 10, отказавшись от localStorage и JSON.stringify() и изменив некоторые архитектурные решения. Но этот подвиг предстоит делать уже не мне. А я поклонник принципа «работает — не трогай». Пока отпуск, активно принимаю issues и PR, но не в ущерб минимализму. Спасибо за внимание!
Автор: dollar