Toaster - alles im Komposter. Filtere und genieße

Es hat sich so ergeben, dass eine russische Q&A-Ressource im IT-Bereich im СНГ recht beliebt ist — Toaster. Aber es fehlte etwas, als ich begann, mich intensiver damit zu beschäftigen. Das führte zur Verbesserung in Form einer Browsererweiterung. Lernen Sie uns kennen.

Wesentliche Merkmale:

  • Name: Toster Comfort.
  • Nutzerstatistiken: der Anteil der Fragen mit Lösungen; Karma von Habr; eine Zusammenfassung des Profils – all dies ist in der Fragenliste von Toster enthalten.
  • Benachrichtigungen: in Echtzeit auf der Website, auf dem Icon, plus Push-Benachrichtigungen, viele Einstellungen, die Website muss geöffnet sein (Wiki).
  • Filter: Bedingungen basierend auf Formeln: Fragen können ausgeblendet, farblich markiert und Benachrichtigungen angezeigt werden – all dies ist flexibel in Form von logischen Bedingungen einstellbar (Wiki).
  • Benutzeroberfläche: kleine Verbesserungen, wie z. B. die Anzeige von genauen Daten oder den Status des Abonnements in der Fragenliste.
  • Habr-Schnittstelle: kleine Verbesserungen (optional), z. B. Linien für Einzüge in Kommentaren.
  • Open Source: kann nach Belieben umgestaltet werden, wenn man wirklich möchte (Quellcode).
  • Kostenlos: MIT Lizenz.
  • Speicherverbrauch: 30-50 MB, abhängig von den Optionen und der Nutzungshäufigkeit von Toster.
  • Größe: 93 KB für v0.8.1 (entpackter, nicht minimierter Code).
  • Framework: nicht vorhanden, reines JS (Minimalismus).
  • Codequalität: durchschnittlich, Mischungen von Stilen, große Funktionen, unordentliche Tricks, wenige Kommentare.
  • Berechtigungen: toster.ru, habr.com, Benachrichtigungen, Speicher, unbegrenzter Speicher

Ursprünglich wurde die Erweiterung für mich selbst mit einem einzigen Ziel erstellt: den Prozentsatz der Fragen anzuzeigen, bei denen der Benutzer die Schaltfläche „Als Lösung markieren“ gedrückt hat. Nach und nach wurden verschiedene Wünsche hinzugefügt, bis das Tool zu einem Monster von hundert Kilobyte wuchs. Dennoch wurde das Prinzip „nichts Überflüssiges verwenden“ bis zum Ende beibehalten.

Eine der Hauptfunktionen ist heutzutage die Verwendung von Formeln in den Einstellungen. Damit kann man praktisch alles machen, was man zur Steuerung seiner Aufmerksamkeit möchte. Das Wichtigste ist zu wissen, was man will. Ausblenden, Farbänderung und Benachrichtigungen – das sind die drei Hauptaspekte der Aufmerksamkeit beim Arbeiten mit der Website. Die Filterung von allem und jedem ist der Schlüssel zur Bequemlichkeit.

Ein Beispiel für eine flexible Regel, die Benachrichtigungen zu einem bestimmten Thema ermöglicht:

!tag("Werbeblockierung") && !contains(t,"Werbung") && contains(t,"Blockierung") && !tag("HTACCESS") || containsWord(t,"rkn") || contains(t,"roskomnadsor") || contains(t,"roskomposor") || contains(t,"Staaten") || contains(t,"verboten") || contains(t,"verboten") || contains(t,"piratisch") || containsWord(t,"Umgehung") || containsWord(t,"rostelekom") || containsWord(t,"Jarovoj") || containsWord(t,"rf") && tag("Computernetzwerke") = notify

Ich sage gleich, dass die Funktion eval() nicht verwendet werden durfte. Daher konnte ich mich nicht wirklich austoben. Also musste ich meinen eigenen Workaround mit 5 KB Code schreiben, indem ich die umgekehrte polnische Notation. Man kann sagen, dass es ein stark beschnittener JS ist, sowohl in Bezug auf Funktionen als auch auf Syntax.

Neulich gab es einen Beitrag über Toster Extension. Im Vergleich hat TE eine angenehmere Benutzeroberfläche und einige Funktionen, die in Toster Comfort fehlen. Allerdings legt meine Erweiterung Wert auf den Ressourcenverbrauch. Doch niemand hindert daran, beide Erweiterungen zu nutzen, sie sollten nicht miteinander konkurrieren.

Eigentlich müsste TC von Grund auf neu geschrieben werden, denn man könnte die Arbeit mindestens verdoppeln und die Arbeit mit dem Cache um das Zehnfache beschleunigen, indem man auf localStorage und JSON.stringify() verzichtet und einige architektonische Entscheidungen ändert. Aber dieses Kunststück steht mir nicht mehr bevor. Ich bin ein Befürworter des Prinzips "Wenn es funktioniert, lass es in Ruhe". Solange Urlaub ist, nehme ich aktiv Issues und PRs an, aber nicht auf Kosten des Minimalismus. Danke für Ihre Aufmerksamkeit!

Quelle: habr.com

60GB SSD 8Gb DDR4