Da sehe ich den perfekten Browser

In letzter Zeit gab es viele Artikel über die Mängel moderner Software, während niemand versucht, seine Lösungen anzubieten, um die Situation zu ändern. Dieser Artikel ist die Antwort auf einige Artikel dazu und träumt von einem perfekten Browser. Wie können wir den Browser, seine Benutzeroberfläche, die Interaktionsmethoden mit Websites, die Protokolle und die Benutzererfahrung im Allgemeinen neu gestalten? Wenn Sie irgendwelche, selbst die gewagtesten Gedanken dazu haben, dann schlage ich vor, sie zu diskutieren und vielleicht den Grundstein für die Erstellung des perfekten Browsers zu legen. Letztendlich muss dies früher oder später getan werden, da die Situation auf dem Browsermarkt im Moment überhaupt nicht erfreulich ist. Und es ist kein Problem, dass andere Browser sehr komplex und schwer nachzuholen sind - wir können unseren eigenen Weg gehen, nur die erforderlichen Teile der Standards implementieren und gleichzeitig unsere eigenen nicht standardmäßigen Erweiterungen einführen. Keine Notwendigkeit, anderen nachzulaufen, lassen Sie andere hinter uns herlaufen. Lassen Sie unseren Browser für Menschen erstellt werden und nicht im Namen der kommerziellen Interessen von Unternehmen guter und fremder Konsortien, die seit langem keinen Nutzen mehr haben.



Was sollte in einem idealen Browser sein?





Suche

Wenn Sie einen neuen Browser erstellen, sollte dies zunächst eine lokale Suche nach allem sein. Durch geöffnete Tabs, Cache, hochgeladene Dateien und jede Menge Metainformationen. Die Suche sollte sowohl nach Index als auch nach regulär erfolgen, und der Benutzer sollte in der Lage sein, alle möglichen Optionen auszuwählen, einschließlich der Dokumentcodierung (z. B. eine sehr gute Suche in Far).

Einmal fand ich in einem der Foren ein interessantes Konzept des Algorithmus. Es gab keine Diskussion, also schloss ich schnell den Tab, aber das Konzept selbst setzte sich in meinem Kopf fest. Nachdem ich im Hintergrund darüber nachgedacht hatte, beschloss ich, meine Ideen zu teilen ... Aber wo? Ich habe mir schnell die Foren angesehen, in denen ich normalerweise gelebt habe - ich habe so etwas nicht gefunden. Die Suchmaschinen auch nichts, aber das ist nicht überraschend - die Foren werden nicht sofort indiziert. Ich fing an, im Browserverlauf zu stöbern - ich habe nichts gefunden, aber das ist nicht überraschend, da es groß ist, es unpraktisch zu bedienen ist, ich hätte etwas übersehen können. Ich habe fast alle Seiten wiederentdeckt - ich habe so etwas nicht gefunden. Ich suchte nach Nachrichten in der Post, in Boten und fragte sogar Leute - ohne Ergebnis. Ich begann bereits zu denken, dass ich von Reptilien kontrolliert wurde, inspirierende Konzepte, wie ich mich entschied, das letzte Tool zu verwenden: Durchsuchen der Browser-Cache-Dateien. Und fast augenblicklich fand er den Ort, den er suchte. Es stellte sich heraus, dass der Autor, da niemand das Forumsthema beantwortete, dachte, er hätte Dummheit geschrieben, sich schämte und den Thread einfach löschte. Und ich war lange auf der Suche nach diesem abgelegenen Thema und konnte es nicht finden.

Ein anderes Mal musste ich eine Videodatei aktualisieren. Die Datei hieß 1.mp4 (ich denke, viele dieser Dateien haben viel). Es war für mich von Wert, aber leider stellte sich heraus, dass es kaputt war. Wo habe ich es heruntergeladen? Ich musste es erneut nach den Schlüsselwörtern durchsuchen, die im Video selbst enthalten waren.

Sitzungen

Wenn Sie versuchen, ein neues Thema herauszufinden, werden Dutzende von Registerkarten von selbst geöffnet. Link für Link und wir haben eine Lesung für mehrere Tage. Darüber hinaus ist jede Registerkarte etwas Wichtiges, das gelesen werden muss. Was machen wir Vor allem, wenn sich das alles immer mehr ansammelt?

Sie können einfach alles schließen, was Sie sehen, und sich auf die Geschichte verlassen, heißt es in Zukunft, wenn nötig, wird sie gefunden. Oder legen Sie alle Registerkarten in den Lesezeichen ab. Oder sogar das Speichern / Drucken von Seiten ist nicht sehr praktisch, aber die genauen gefundenen Informationen gehen nie verloren (Informationen zum Speichern von Informationen werden jedoch später geschrieben).

Oder vielleicht die ganze Sitzung als Projekt speichern? Geben Sie ihnen aussagekräftige Namen wie "Ich habe nach einem Modell eines Bootes gesucht", "Programmieren lernen" und schalten Sie es nach Bedarf ein / aus? Jeder Browser verfügt jetzt über ein Profil oder einen Sitzungsmechanismus, der jedoch häufig irgendwie ausgeblendet ist, was das Auffinden und die Verwendung erschwert. Vielleicht ist der einzige Browser, in dem ein solcher Mechanismus gut implementiert ist, der Edge-Browser in seinen neuesten Versionen. Bei all den Mängeln dieses Browsers ist dieser Mechanismus so bequem wie möglich gestaltet und ermöglicht es Ihnen, keine Registerkarten zu sammeln, sondern sie bequem zu sortieren. Natürlich sind der Perfektion keine Grenzen gesetzt, aber zumindest eine solche Option ist ein Muss. Besser noch, Sie können solche Sitzungen zusammen mit dem Cache / Inhalt der Seiten speichern. Nur nicht so, wie es Browser jetzt tun, indem sie den Cache in einer binären Form speichern, sondern damit Sie 100 Registerkarten zu einem neuen Thema öffnen, sie in einem Format speichern können, das von anderen Geräten gelesen werden kann (.html / .pdf) und auf Ihr Telefon hochladen können , wo es leicht zu lesen ist, vielleicht weit weg von der Zivilisation.

Datenschutz

Der Benutzer muss entscheiden, welche Informationen er mit der Site teilen möchte. Ich sollte nicht nach verschiedenen User-Agent-Switches suchen, diese Funktionalität sollte in den Browser selbst integriert sein. Die Google.com-Suchmaschine funktioniert beispielsweise einwandfrei, wenn Sie sich als Links vorstellen. Eine unangenehme Sofort-Suche, die den eingegebenen Text frisst, wird jedoch nicht angezeigt.

Ich möchte in der Lage sein:

* Stellen Sie die Breite und Höhe des Bildschirms ein (mindestens 50000 x 50000 Pixel).
* Farbtiefe, unabhängig von den aktuellen Einstellungen
* Fügen Sie die Website zu vertrauenswürdig hinzu, damit die Cookies nicht sauer werden, wenn Sie auf "Alle löschen" klicken.
* Ersetzen Sie die Schriftarten auf der Seite und stellen Sie der Site die Liste der gewünschten Schriftarten zur Verfügung
* Bereitstellung eines beliebigen Benutzeragenten, möglicherweise sogar eines zufälligen, der aus einer großen Datei mit Optionen entnommen oder an eine bestimmte Site gebunden ist
* Wählen Sie die Sprache des Inhalts und sehen Sie, was an den Server übertragen wird, und nicht nur die „bevorzugte Sprache“, deren Entwicklung noch unbekannt ist
* Anzahl und Reihenfolge der Header, einschließlich der Emulation bekannter Fehler anderer Browser

Und im Allgemeinen muss sich alles, was mit einem Fingerabdruck versehen werden kann, ändern können. Ich möchte diese Gelegenheit haben.

Das Lustige ist, dass alte Browser eine Reihe von Einstellungen dafür haben. Zum Beispiel können Browser wie Links, w3m und netsurf nicht nur den Referrer / User-Agent deaktivieren, sondern auch viele verschiedene interessante Optionen bereitstellen, mit denen Sie das Verhalten des Browsers optimieren können, wie er diese Felder ausfüllt. Während nur zukünftige Versionen von Firefox lernen werden, wie dies zu tun ist, und nur teilweise, ohne 100% igen Benutzerschutz zu bieten, ohne Optionen, wobei das Verhalten nur unter bestimmten Bedingungen streng definiert wird (wir werden jedoch über Websiteeinstellungen und -bedingungen sprechen).

Fliegende Schiffe

MSIE hat die Position sehr lange nicht unterstützt: fest, für die er gescholten wurde. Und wie die Praxis zeigt, ist es gut, dass ich es nicht unterstützt habe. Das hat die Leute zwar nicht aufgehalten und sie haben es durch JS mit Sprungmenüs emuliert, die bis heute auf Millionen von Websites überlebt haben.

Heutzutage werden überlappende Elemente für alles Nützliche verwendet: Vollbild-Anmeldefenster, die beim Surfen angezeigt werden und nicht entfernt werden können (Facebook), Popup-Assistenten, die sich als Chat-Bots herausstellen, Vollbildnachrichten über Werbeaktionen und Geschenke, wie ich etwas gewonnen habe Manchmal zeigen sie mir nur Anzeigen (für sich genommen ohne Werbung, aber ohne Schaltfläche zum Schließen), transparente Popups, die mich daran hindern, auf die Seite zu klicken (Pornhub), und die Apotheose: Sie sagen mir, dass ich AdBlock deaktivieren muss, was ich nicht habe.

Haben Sie versucht, eine Seite zu drucken? Aber ich "drucke" oft das PDF und möchte diejenigen schlagen, die Popup-Erweiterungen wie "Wir verwenden Cookies" oder "Hier Breakin-News" irgendwo über oder unter dem Bildschirm erstellen. Nun, oder nur ein festes Menü oben und eine einfache Fußzeile unten. Nein, auf dem Bildschirm sieht es immer noch nicht so aus. Sie können die Seite scrollen und irgendwie lesen, was sie blockieren. Wissen Sie, dass dieser Mist auf jeder Seite gedruckt ist? Und oben auf dem Text gedruckt? Und dass Sie das Papier nicht kratzen können, obwohl es eine Jagd ist, weil dieser Mist einen Teil des Inhalts blockiert, der in keiner Weise gelesen werden kann? Bisher muss ich Stile aufbrechen oder separate Menüs über den Elementinspektor / die Unterverriegelung löschen. Erst danach kann ich die Seite „drucken“. Das ist etwas nervig. Aber wenn es einfache steuerbare Elemente gäbe, würde dies nicht einmal passieren!

In der Browser-Engine können Sie jedoch erkennen, wann ein Element Textinformationen überlappt und ... Nun, entfernen Sie es beispielsweise irgendwo zur Seite. Oder sogar Stile brechen und sie für gefährlich erklären. Viele Möglichkeiten. Sie können die Seite als Ebenen darstellen und dem Benutzer einige Schaltflächen geben, um die oberen Ebenen abzuschneiden oder zurückzugeben, wie dies bei einigen Spielzeugen oder dreidimensionalen Editoren der Fall war - ich möchte diese Funktion seit Jahren!

Es ist lustig, aber als IE sich weigerte, das Blink-Tag zu rendern, konnte JS das Browserfenster verschieben und nicht schließende Popups erstellen. Selbst das Anzeigen von Text in der Statusleiste ist heute schon schwierig, es ist einfacher, ihn zu emulieren. Jetzt schlage ich vor, etwas mit Blöcken zu tun, die Text überlappen. Es ist möglich, diese Funktion irgendwie abzubrechen. Und Sie müssen immer mehr Funktionen abbrechen, damit sie nicht zum Nachteil von ihnen verwendet werden können. Ja, aus diesem Grund können Sie Ihren Browser schreiben, ohne die Standards zu beachten, aber es ist praktisch, um Text zu lesen und außerdem weniger zu programmieren.

Seitenschnappschuss

Es kommt vor, dass Sie beim Öffnen einer einfachen Seite mit Text manchmal vergessen und sie in den Registerkarten hängen lassen, "für später", "um nicht zu vergessen". In der Regel gibt es dort nichts Besonderes. Zum Beispiel erzählen sie, wie man Erdbeeren im Land anbaut und nichts, was Ärger bedeutet.

Und nachdem Sie nach einigen Stunden am Computer angekommen sind, bemerken Sie, dass sich der MAUS-CURSOR kaum bewegt. ALLES in SWAP kann nicht am Computer ausgeführt werden. Entsetzt öffnen Sie die Liste der Prozesse und verfluchen (wenn Sie warten können, bis der Prozess gezeichnet wird). Und hier schließt der Tab nur mit dieser unschuldigen Seite.

Um dies zu vermeiden, habe ich einmal ein Plug-In für Firefox geschrieben, das 5 Sekunden nach dem Laden der Seite (Onload-Ereignis) setInterval / setTimeout / requestAnimationFrame durch leere Aufrufe ersetzte, die nichts taten, aber vorhandene trennten. Grundsätzlich war ich glücklich. Zwar funktionierten auch alle möglichen interaktiven Elemente, wie das Entfalten von Spoilern, nicht mehr, da keine Timer mehr vorhanden waren und durch das Öffnen des Spoilers ein Timer für die Animation gestartet wurde. Ist das ein großer Preis? Ich musste mein Plugin verlassen, da ich für ein Ereignis keine Handler zurückgeben konnte, aber wenn wir unseren Browser schreiben, warum nicht?

Alternative Implementierung: 10 Sekunden nach dem Onload-Ereignis stoppen wir das gesamte JS, entladen das DOM und belassen nur die Strukturen im Speicher, die zum Rendern von Rechtecken mit Text, Tabellen und Bildern erforderlich sind. Das war's, lass die Registerkarte Hintergrund so etwas wie ein Bild mit Text sein, nichts weiter. Eine weitere Alternative: Wir rendern das gesamte Layout in einem separaten Prozess und laden nach dem Rendern nur die Koordinaten von Text und Bildern, wie dies in Opera Mini der Fall war, sodass unser Browser etwas sicherer ist.

Das Interessanteste ist, dass es in der modernen Oper bereits etwas Ähnliches gibt, das sich jedoch nur beim Umschalten auf Batteriestrom einschaltet. Ich möchte diese Option immer für Websites haben, insbesondere für Websites, die ich zum ersten Mal besuche. Im Allgemeinen gibt es in den Eingeweiden aller modernen Browser viele nützliche Funktionen, die jedoch fest codiert sind und vom Benutzer nicht konfiguriert werden können, weshalb Browser praktisch ein großes Potenzial verlieren.

Inhalts-Caching lokal

Ich erzähle die Idee für eine Million Dollar: Laden der Seite in 0 ms. Nein, selbst wenn sich die Site vollständig in unserem Cache befindet, wird sie erst geöffnet, wenn wir eine Anfrage senden, auf die Umlaufzeit warten, die Antwort analysieren und dann dasselbe mit allen verbleibenden Skripten und Stilen tun. Und was hindert Sie daran, es SOFORT aus dem Cache zu öffnen und Inhalte im Hintergrund zu validieren, Anforderungen sofort an ALLE Ressourcen im Hintergrund zu senden und dabei die doppelte Pufferung im Hintergrund zu verwenden, um die Daten bei Änderungen zu aktualisieren, indem Sie einfach Bilder und Textblöcke neu zeichnen? Sagen Sie, was bereits im IE war und "Offline arbeiten" hieß? Ja, der IE hat immer noch viele nette und interessante Funktionen, aber erstens hat diese Funktion nicht immer funktioniert, und zweitens können wir die Seite nicht aktualisieren. In meinem Fall wird die Seite bei der Validierung automatisch neu gezeichnet.

Leider funktioniert das Caching im modernen Web nicht nur schlecht, sondern überhaupt nicht. Aber was verhindert, dass erzwungene Seiten auf der Festplatte gespeichert werden? Dies würde es nicht nur ermöglichen, die Website im Falle seines Todes zu öffnen, einige nützliche Inhalte zu speichern, sondern beispielsweise auch die Dynamik von Preisänderungen für Waren zu überwachen oder Gesprächspartner zu fangen, die ihre Beiträge geändert haben. Natürlich können Sie Seiten manuell auf der Festplatte speichern ... Aber in der Regel erinnern Sie sich nur daran, wenn Sie zu einer alten Version zurückkehren müssen, aber es gibt keine und es gibt wenig Hoffnung für ein Webarchiv. Manchmal können Sie Inhalte von Suchmaschinen abrufen, dies funktioniert jedoch nicht immer, insbesondere wenn Sie dies nicht sofort getan haben. Dies ist besonders nützlich, wenn der Inhalt leicht in separate verwaltete Elemente unterteilt werden kann, aber dazu später mehr.

Natürlich sollte das Caching in Form von inkrementellen Unterschieden erfolgen (andernfalls ist nicht genügend Platz für alles vorhanden), mit nicht intellektuellem Parsen nicht angezeigter Informationen (es ist nicht erforderlich, den sich ändernden Code der Zähler zu speichern), wobei Änderungen hervorgehoben werden und alte Versionen direkt aus der Adressleiste ausgewählt werden. Sie können bereits analysierte Seiten als eine Reihe von Rechtecken und deren Koordinaten auf dem Bildschirm speichern. Auf diese Weise können Sie das Rendern beschleunigen und Bilder können verkleinert und als h265 gespeichert werden. Dies ist viel besser als JPEG-Bilder - wir sparen Platz. Und wenn wir uns bereits so viel Mühe mit dem erzwungenen Cache und seiner Veredelung gegeben haben, warum sollten wir ihn dann nicht mit jemand anderem teilen? Die Benutzeroberfläche ist die Hauptsache. Die Funktion sollte nicht nur sein, sondern auch bequem zu verwenden sein: Öffnen Sie verschiedene Versionen der Seite, löschen oder speichern Sie Versionen von Seiten, kündigen Sie sie als öffentlichen Cache an, treffen Sie eine Auswahl von Seiten und entladen Sie lokale Versionen der Site (die besuchten Seiten), tun Sie etwas wie mht / pdf mit funktionierenden Links, damit sie auf anderen Geräten geöffnet werden können, und nicht nur irgendwo in den internen Repositorys des Browsers, wie es in einigen mobilen Browsern der Fall ist.

Um das Laden von Seiten zu beschleunigen und sich vor unerwarteten Code-Injektionen zu schützen, können verschiedene Skripte wie jquery und dergleichen, die auf verschiedenen CDNs gespeichert sind, wie die Decentraleyes-Erweiterung direkt von der lokalen Festplatte geladen werden. Das Herunterladen von Schriftarten und Symbolpaketen erfolgt sofort. Erfahren Sie mehr über das, was bereits vorhanden ist: addons.mozilla.org/en-US/firefox/addon/decentraleyes . Natürlich wäre es schön, Ihren Code analog zu browser.js (nur nicht mit den Händen der Autoren) oder Grease Monkey (nur ohne Trojaner) zu injizieren, damit Sie den Code von Websites ändern / korrigieren können. Nein, keine Krücken in Form eines Plugins, sondern native Unterstützung, die nicht langsamer wird, wie es früher in der Oper war. Aber leider gibt es jetzt einfach keine praktischen Tools zum Patchen von Site-Code. Richard Stallman nennt diese "tivoizatsii" -Seiten, aber dies wird im Abschnitt über Codesignaturen geschrieben.

Wir fügen hier eine hypothetische sitemap.xml hinzu, die die Affinität von Artikeln, Seiten für proaktives Caching, einen Link zu einem Tracker für den Austausch von p2p-Inhalten bestimmt ... und wir erhalten eine selbstreplizierende Site, die lokal gespeichert und verwendet werden kann, die jeder Belastung standhält und deren Inhalt nicht stirbt niemals. Wir werden jedoch darüber sowie über verteilte Websites sprechen.

Codesignatur

Viele von uns denken nicht, aber verschiedene Leute können Code im Browser ausführen, der unter verschiedenen, einschließlich nicht freien Lizenzen geschrieben ist. Und nicht die Tatsache, dass der Benutzer diesen Lizenzen zustimmt. Es ist wie Sex ohne vorherige Zustimmung. Im Prinzip passiert in den meisten Fällen nichts Schlimmes, aber es kann Nuancen geben. Richard Stallman hat einen ausgezeichneten Artikel „Javascript Trap“ geschrieben, auf dessen Grundlage die LibreJS-Erweiterung geschrieben wurde: en.wikipedia.org/wiki/GNU_LibreJS - dies sollte der Ausgangspunkt für die Interpretation von Javascript in unserem Browser sein!

Wenn die Angabe der Lizenz Teil des Standards wäre, wäre das Leben etwas einfacher, ist es aber nicht. Wenn die Autoren des Codes ihn mit ihrem öffentlichen Schlüssel signiert haben, könnte ich zumindest verschiedenen Autoren vertrauen, aber das gibt es auch nicht. Alles, was bleibt, ist, die Skripte zu hashen, einschließlich der kleinsten, die in die Seite eingenäht sind, und den Benutzer zu bitten, "dies zuzulassen?" um jeden von ihnen auszuführen und eine Datenbank mit erlaubten oder verbotenen Skripten zu führen. So etwas wie Antivirus. Suchen Sie auch nach "Viren" anhand von Signaturen, jedoch anstelle eines heuristischen Analysators, der dem Benutzer eine Lizenz und Fragen anzeigt. Basierend auf solchen Hashes können Sie sich nicht nur vor bösartigem Code schützen, sondern auch ein Versionsverwaltungssystem erstellen. Erstellen Sie eine Infrastruktur, in der nur der Code ausgeführt wird, dem Sie vertrauen! Haben Sie es satt, Skripte zu bekämpfen, die Text umdrehen und Sie auffordern, Adblock zu deaktivieren? Ich würde es deaktivieren, aber ich habe weder Adblock noch das Vertrauen, dass sie mich morgen nicht bitten werden, eine Spende zu tätigen oder einen Betrug zu abonnieren.

Wenn Sie mit der bemerkenswerten Arbeit von Richard Stallman nicht vertraut sind, empfehle ich die Lektüre: www.gnu.org/philosophy/javascript-trap.ru.html (auf Russisch).

Website-Bewertung / Anti-Bewertung

Einige Browser, wie z. B. Opera, haben aus irgendeinem Grund versucht, jede Site mit den Händen zu reparieren und Patches durch Einfügen von benutzerdefiniertem Code zu erstellen.Und sobald sie es satt haben, kennen wir alle das Ergebnis. Obwohl sie zu Recht stolz auf ihre Leistungen waren, die in verschiedenen Puzomerki bestätigt wurden, führten sie Tests zur Einhaltung des Standards durch.

Aber man könnte auch in die andere Richtung gehen: Anstatt etwas zu patchen, jemandem eine E-Mail zu schreiben, persönliche Verbindungen zu verwenden und so weiter, könnte man den Patch-Text direkt über der Seite mit den Worten anzeigen: „Der Autor dieser Website hält sich nicht an den folgenden Standard Code könnte diese Seite reparieren. " Nur IE-Herausforderung gewichst? Keine Emulation, stattdessen ein großes rotes Popup über die Eignung des Autors (natürlich ohne den Inhalt zu blockieren). Viele Benutzer werden dies natürlich ignorieren, aber jemand kann den Autoren der Website die Frage stellen: "Warum ist hier so viel Rot?" Und die Eigentümer der Website werden erzählen, wie sie Programmierern Geld gespart haben. Oder teilen Sie dem Kunden mit, dass "normales Google Khroma" verwendet werden muss, wodurch der Kunde sie mit größerer Wahrscheinlichkeit verlässt. Wenn auf einer solchen Website so etwas wie "location.href = 'http://google.com/' angezeigt wird,Komm wieder zu uns “- das ist noch besser, leg dich nicht mit solchen Leuten an.

Sie können noch weiter gehen: Das Bild auf der Seite wird als 100x100 angezeigt, aber tatsächlich als 500x500? Rotes Popup mit der Meldung, dass der Autor die Größe von Bildern nicht ändern kann. Ein Bild mit fotorealistischen Grafiken in PNG geschrumpft? Rotes Popup, dass der Autor die Dateiformate nicht versteht. Die Seite hat keinen Link zur Hauptseite? Ein rotes Popup mit der Meldung, dass der Autor der Website keine normale Navigation durchgeführt hat.

Natürlich können rote Popups nicht immer angezeigt werden. Wenn beispielsweise ein PNG-Bild durch Optipng besser optimiert werden kann, können Sie nur eine kleine rote Warnung anzeigen, wie die Werbeblocker ableiten. Verschiedene CDN-Optimierer machen bereits etwas Ähnliches, komprimieren die Bilder und minimieren den Code und versuchen sogar, die SQL-Injektionen an der Eingabe zu filtern. Aber all diese Freude wird nur sein, wenn der Autor Geld bezahlt und die entsprechenden Dienste verbunden hat, und was sollte ein einfacher Benutzer tun? Und ein einfacher Benutzer kann sich einfach weigern, eine Website von geringer Qualität zu verwenden, und sein Browser sollte ihm dabei helfen.

Der Werbeblocker-Bericht, in dem digitale Zahlen angezeigt werden, kann bereits als eine Art Anti-Rating-Site angesehen werden. Je mehr Anti-Rating, desto schlechter müssten die Site und der Autor etwas dagegen tun. Für einige Werte können Sie einfach Warnungen anzeigen, dass der Besuch dieser Site unerwünscht sein kann. Darüber hinaus glaube ich, dass der Browser seine Ergebnisse mit der Community teilen sollte. Sie können für jede Site eine globale Bewertung erstellen, indem Sie sich an die begehrten Ziffern für jeden Link halten, um nicht versehentlich irgendwohin zu gehen, wo der Benutzer auf eine „schlechte Erfahrung“ wartet. Natürlich kann nicht alles automatisiert werden. Daher können Sie mehrere Bewertungen erstellen, von denen einige von lebenden Personen geleitet werden, indem Sie den Code manuell überprüfen, ihre Lizenzen und die Qualität des Codes sowie die Qualität der gesamten Website überprüfen. Natürlich sollte der Mechanismus dezentralisiert und nicht von bestimmten Personen kontrolliert werden.Lassen Sie den Benutzer entscheiden, welches Abonnement abonniert wird.

Individuelle Site-Einstellungen

Jede Site oder Gruppe von Sites sollte ihre eigenen individuellen Einstellungen haben, ähnlich wie sie in der alten Opera konfiguriert werden könnten (bis zu 12 Versionen inklusive). Nur dieser Mechanismus kann verbessert werden.

Identifizieren Sie Websites zunächst nicht nur nach Domäne oder Subdomäne, sondern auch nach regulärem Ausdruck in der Domäne. Oder durch die empfangene IP-Adresse dieser Domain. Zum Beispiel möchte ich keine Skripte auf Sites / Ressourcen von Yandex ausführen (siehe die folgenden Gründe), ich könnte Listen von Blöcken von IP-Adressen finden, die Yandex gehören, und die Ausführung von nicht vertrauenswürdigem Code vorsichtig unterbrechen. Es ist einfach und leicht. Im Moment bin ich jedoch gezwungen, mich darauf zu beschränken, einzelne Domains zu verbieten (ich kenne nicht alle!), Alle Adressbereiche in eine Firewall einzugeben, was äußerst unpraktisch ist, oder meinen DNS-Server mit den Adressen für die * yandex * -Maske zu erhöhen, die ich habe im Moment tun.

Zweitens können Sie, um keine Entität zu erstellen, grundlegende Profile erstellen, z. B. "Vertrauenswürdige Site", "Normale Site", "Schlechte Site", "Für Sites von Vasyan", "Für Aliexpress" und Ihre Einstellungen dieser oder jener Site zuweisen . Und je nach Profil wird der User-Agent gesendet, die Reihenfolge und der Inhalt der Header, die Unterstützung oder das nicht unterstützte Laden von Stilen, Schriftarten, Skripten und allem anderen, was konfiguriert werden kann. Selbst um festzustellen, ob es möglich ist, den rechten Mausklick abzufangen, mit welcher Genauigkeit Timer gestartet werden sollen oder ob Animationen und Sounds abgespielt werden sollen (für einen unbekannten Zweck wird auf AliExpress eine Anforderung für MIDI angezeigt). Sie können auch Einstellungen bereitstellen, die sich zufällig ändern, z. B. zufällige User-Agent-Werte aus einer großen Liste oder einen beliebigen Proxy für eine bestimmte Site (dazu später mehr).

Kopieren und einfügen

Es scheint, dass was die grundlegendste Funktion in Programmen sein könnte, die Text anzeigen? Natürlich mit Textauswahl / Kopieren / Einfügen arbeiten!

Leider beginnen schon mit einer einfachen Auswahl Probleme. Haben Sie versucht, den Link hervorzuheben? In einem Browser, in Mail, in IM? Und wie ist es Irgendwo beginnt der Link zu ziehen, irgendwo, wo Sie darauf klicken, auch wenn Sie die Schaltfläche nicht losgelassen haben, und irgendwo müssen Sie auf den Millimeterabstand zielen, um ihn auswählen zu können. Das Auswählen von Bildern ist eine separate Lotterie. Manchmal ist dies überhaupt nicht möglich, außer durch Drücken der geheimen Hacker-Kombination STRG + A. Ein Schritt nach rechts und links - und wir haben die gesamte Seite ausgewählt und nicht den Absatz, auf den wir abzielen.

Oder der Text fällt überhaupt nicht auf und erzeugt die Illusion einer kaputten Maustaste. Selbst wenn wir zielen und den Text auswählen konnten, ist es keine Tatsache, dass wir beim Klicken mit der rechten Maustaste keine coole Warnung wie "Der Text dieser Seite ist kühl geschützt" erhalten. Oder es wird überhaupt nichts angezeigt, da Browser gelernt haben, solche Skripte automatisch abzubrechen. Oder die Anforderung, einen Bericht über einen auf der Seite gefundenen Tippfehler zu senden, wird nicht gesendet. Während ich einen Text lese, wähle ich ihn oft mit einer Maus aus, um die Wahrnehmung zu erleichtern, und dieser Dreck macht mich unglaublich wütend.

Der Einsatz ist noch schlimmer. Wird die Formatierung gespeichert oder nicht? Manchmal hängt es davon ab, ob Sie einen Hotkey oder ein „Rad“ verwenden - ein anderes Verhalten für eine scheinbar einzige Aktion. Wird es Lücken in dem geben, was in Anwendungen von Drittanbietern eingefügt wird, wenn zwischen den Blöcken keine Leerzeichen vorhanden sind? Und manchmal werden Sie die Formatierung nicht los: Sie fügen den kopierten Text in die Seite ein, z. B. in den eingegebenen Buchstaben, und der eingegebene Absatz wird plötzlich fett und / oder wird zu einem Zitat.

Letztes Quietschen der Mode: Ersetzen Sie den Inhalt der Zwischenablage. Sie haben den Text über die Katzen kopiert, ihn widerwillig in den Chat eingefügt und ... Sie haben das Verbot geharkt, da zusammen mit dem gewünschten Text eine Anzeige für die Ressource eingefügt wurde, aus der die Kopie stammt. Natürlich müssen Sie vorsichtig und vorsichtig sein und beobachten, was und wohin Sie senden ... Aber warum erlauben sich meine Tools zum Anzeigen von Text andererseits, sich so zu verhalten?

Verteilter Speicher

Das lokale Zwischenspeichern der Inhalte, über die wir zuvor gesprochen haben, ist nur ein Teil der Anforderungen eines modernen Webbenutzers. Der zweite wichtige Teil des Problems ist das Zwischenspeichern von Inhalten auf dem Server, auf dem Weg zum Client auf verschiedenen CDNs und dergleichen. In der Tat können kleine Websites mit der Tatsache konfrontiert sein, dass zu viel Datenverkehr erforderlich ist, um im Wesentlichen statische Dateien bereitzustellen. Immer und immer wieder. Und sie haben praktisch keine andere Wahl, als die kichernde CloudFlare zu füttern, damit sie ihren verteilten Cache bereitstellt.

CloudFlare selbst verfügt über eine interessante RailGun-Technologie: www.cloudflare.com/website-optimization/railgun- Dies ist eine coole Krücke, mit der Sie nicht zwischenspeicherbare Caches zwischenspeichern können, mit deren Hilfe sie nicht nur alte Versionen von Seiten zwischenspeichern, sondern auch Unterschiede mit ihnen machen und den bereits neu erstellten Unterschied von ihren Servern senden. Somit stellt sich heraus, dass Sie die Seite mit nur 1 Datenpaket von 400 Bytes aktualisieren können (die Nummer wird der Beschreibung entnommen), und der ursprüngliche Server kann sogar auf dem Telefon hosten (tatsächlich ist dies nicht der Fall). Aber für so etwas muss man ab 200 US-Dollar pro Monat bezahlen, was für kleine Websites sehr viel Geld ist.

Oh, und wenn es möglich wäre, den Inhalt in kleine überschaubare Elemente zu unterteilen ... Aber ja, dazu später mehr. Zwar gibt es Krücken wie Diff und Cloudflare mit seiner Railgun.

Das geteilte IPFS-Dateisystem ist jedoch bereits vorhanden. Und es gibt ZeroNet, mit dem Sie Websites sofort auf verteilte Weise hosten können. Sie können versuchen, den Client herunterzuladen und in dieses ungewöhnliche Netzwerk zu schauen, das keine Server benötigt!

Hier gibt es jedoch nichts Neues. Vor ungefähr 15 Jahren hatten beliebte Websites einen eigenen Desktop-Client (und manchmal mehr als einen) und eine Art Torrent-Distribution im Kit. Und heute gibt es es in der einen oder anderen Form, zum Beispiel die WikiTaxi-Anwendung, mit der Sie Wikipedia in Ihrer Tasche behalten können. Und ich erinnere mich auch an so etwas wie AportExpress, in dem sich eine vollwertige Vorlagen-Engine und native Aport-Vorlagen vom Server befanden, die Seiten auf dem Client sammelten.

Verbessertes Netzwerk

Können Sie sich vorstellen, dass Menschen manchmal über verschiedene GSM-Modems auf das Netzwerk zugreifen, wobei die ohnehin niedrige Geschwindigkeit durch die schlechten Signalempfangsbedingungen / schlechten Vertragsbedingungen beeinträchtigt wird? Und es gibt Websites wie imgur.com/a/XJmb7, auf denen es sehr schöne Dinge gibt, aber das Gewicht der Seite selbst, einschließlich aller Grafiken, übersteigt zehn Megabyte. Das einzige Problem ist, dass solche Seiten mit einer solchen Verbindung nicht angezeigt werden können.

Heutzutage versucht der Browser, alle Bilder gleichzeitig zu laden, wodurch das Laden der einzelnen Bilder verlangsamt wird (dafür erstellen sie immer noch eine Reihe von Subdomains, um die Beschränkungen für die Anzahl der Verbindungen zu umgehen). Nach einiger Zeit tritt eine Zeitüberschreitung auf und der Server schließt einfach die Verbindung und hinterlässt fehlerhafte Bilder, die gut sind, wenn überhaupt, irgendwie offen. Wenn Sie F5 drücken, wird für einen Moment eine Zeichnung angezeigt (Abbrechen des Downloads und Anzeigen der bereits geladenen Daten). Anschließend wird der Download von Anfang an fortgesetzt, ohne dass einzelne Bilder fortgesetzt werden müssen. Und Sie haben oft bemerkt, dass der Browser die Seite oder Datei zuerst mit einer Geschwindigkeit von 50 KB / s, dann mit 20 KB / s und dann mit 3 KB / s „herunterlädt“? Dies bedeutet, dass die tatsächliche Download-Geschwindigkeit aus irgendeinem Grund gleich 0 Byte / s wurde und das Trennen und erneute Starten mit großen Schwierigkeiten verbunden ist.auch wenn das technische Herunterladen der Datei möglich ist.

Der Webserver kann jedoch Torrent-Dateien für Statics generieren und im automatischen Modus verteilen, wodurch sowohl Dateien heruntergeladen als auch die Last aus dem Netzwerkkanal entfernt werden kann! Im Kern ist eine Torrent-Datei nur eine Liste von Prüfsummen, mit denen Sie eine Datei von einem beliebigen Speicherort herunterladen und die Richtigkeit der heruntergeladenen Datei überprüfen können. Somit können selbst unvollständige Bilder selbst beim fünften Versuch leicht entleert werden, um das Problem der Versionierung und Cache-Validierung genau zu lösen.

Und da wir dem Client Metadaten zu Dateien geben, können wir die gesamte Seite als „eine große Verteilung“ in Form eines Datenpakets gestalten, in dem Informationen über die Seite sowie Bilddateien, Stile, verknüpfte Seiten und andere enthalten sind Referenzen (einschließlich anderer "Distributionen"), eine Art kleine binäre Sitemap. Auf diese Weise können Sie Websites besser zwischenspeichern / vorab zwischenspeichern, alle Ressourcen schneller laden, ohne darauf warten zu müssen, dass die Seite oder die Skripte vollständig geladen werden, und sogar Websites für Menschen mit Behinderungen optimieren, indem Sie ihnen eine erweiterte Seitennavigation anbieten. Oder laden Sie keine Elemente gleichzeitig herunter, z. B. Apple-Symbole auf dem halben Bildschirm oder viele Videos.

Leider versuchen moderne Entwickler, diese Probleme auf ihre eigene Weise zu lösen, ohne Einstellungen bereitzustellen und all dies mit ihren eigenen Händen zu implementieren, d. H. "Wie es geht." Zum Beispiel das Hochladen von Bildern / Videos über eine Reihe von JS, viele Domains und die Bildlaufverarbeitung, weshalb es nicht mehr möglich ist, die Seite schnell zur „zehnten Seite“ zu scrollen, was mich sehr wütend macht. Glücklicherweise begannen einige große Anbieter wie Xiaomi, dies zu bekämpfen und fragten jedes Mal: ​​„Möchten Sie das Video abspielen? Hierfür kann eine zusätzliche Gebühr erhoben werden! “Bisher ist es jedoch unmöglich, ein automatisches Verbot solcher Schande einzurichten, und es gibt immer noch viele Möglichkeiten, um den Entwickler herumzukommen.

Wenn wir bereits endlose Websites mit endlosem Scrollen berührt haben, möchten wir darauf hinweisen: Nichts hindert den Benutzer daran, das leere Skelett des gesamten riesigen Feeds anzuzeigen, damit er problemlos darin navigieren und den Inhalt dynamisch laden kann. Aber niemand macht es.

Websites herunterladen

Angenommen, ich habe eine Website mit Handbüchern zum Anbau von Erdbeeren gefunden. Ich bewunderte, war begeistert von der Idee, ging in die Hütte und ... Und nachdem ich auf Probleme gestoßen war, wurde mir klar, dass ich jede Seite in PDF konvertieren und erst dann in die Hütte gehen musste. Warum im PDF? Ja, denn moderne Seiten möchten übrigens nicht einmal korrekt gespeichert werden, und was noch angezeigt werden muss, wenn der lokale HTML-Code geöffnet wird und wo Cookies voll sind, kann nur erraten werden.

Aber früher konnte ich Teleport Pro nehmen und die ganze Baustelle mit Erdbeeren auspumpen, auf mein Handy gießen und ruhig zur Hütte gehen! Alle Bilder werden abgepumpt, alle Links werden verlinkt, fast alles wird funktionieren. Es gab sogar Websites mit bereits hochgeladenen Websites - eine unverzichtbare Sache, die man in diesen Jahren lernen sollte, sowie Suchmaschinen auf JS, die direkt im Browser funktionierten!

Aber was passiert heute, wenn ich es versuche? Ich warte auf die Entdeckung, dass auf modernen Websites Seiten dynamisch sind, jede Seite tausend URLs hat und ich drei Seiten 10.000 Mal problemlos herunterladen kann, sie sorgfältig verknüpfe und wenn ich zur gewünschten Seite navigiere, bekomme ich sie nicht einmal, wenn sie heruntergeladen wird (von der Weg von 50 Links, den ich genauso gehen muss wie der Schaukelstuhl).

Und wenn du wirklich willst? In diesem Fall nehmen und schreiben wir heute einen Site-Parser, wählen den Inhalt aus (nach Stammgästen oder xpath), verknüpfen ihn irgendwie mit hausgemachten Skripten neu, fügen einen Index aus Scheiße und Stöcken hinzu, vielleicht sogar die einfachste Suchmaschine. All dies dauert von 1 Tag bis Sie sich langweilen. Sie können den Text einfach in Word speichern und schwören, dass alles in roter Wirkung eingefügt ist und das Markup so weit geht, dass es unmöglich ist, es anzusehen. Sie können den Videorecorder einschalten und durch die Seiten scrollen - eine kostengünstigere Option in der Zeit, obwohl eine solche Aufzeichnung viel wiegt, aber in unserer Zeit ist sie von geringer Bedeutung.

An dieser Stelle müsste ich schreiben, dass ich in einem idealen Browser die Funktion zum Auspumpen von Websites benötige, damit ich später problemlos Inhalte auf ein Telefon oder ein anderes * eigenständiges * Gerät übertragen kann. Aber unter Berücksichtigung des oben Gesagten ist dies leider unmöglich. Aber wenn unser Inhalt in kleine überschaubare Elemente unterteilt wäre ... Aber leider. Daher sollte ein moderner Browser zusätzlich zu all den oben genannten Funktionen nicht nur in der Lage sein, dieselben Elemente zu analysieren, sondern sie auch in einer lokalen Datenbank und Version zu speichern und eine Art kleines CMS zu sein.

Und denken Sie nicht, dass moderne Standorte im Prinzip nicht entleert werden können. Im Gegenteil, Statik kommt wieder in Mode, es gibt sogar interessante und beliebte Projekte wie github.com/jekyll/jekyll zur Generierung von Statik. Warum also nicht die "Quelle" der Site verteilen?

Haftungsausschluss: Teleport Pro wird hier nur als die bekannteste Software zum Pumpen von Websites verwendet. Es handelt sich nie um Werbung oder Nostalgie. Ich persönlich mochte es nicht, weil viele temporäre Dateien vorhanden waren und Javascript nicht korrekt analysiert werden konnte. Meine Wahl fiel auf andere, nicht so bekannte Rocker wie Webzip, die zwar eine Reihe von Ressourcen benötigten, Anzeigen in die Seiten einfügten, den Inhalt jedoch korrekt und vollständig herauspumpten.

Medieninhalt

Wie kleine verwaltete Elemente, die sich in einen unkontrollierbaren Monolithen verwandeln, stellen Site-Autoren primitive Tools zum Anzeigen von Medieninhalten her. Einfach ausgedrückt, jede erste Website versucht, mir über ihren einzigartigen Web-Player ein Video zu zeigen. Einzigartig dort sind natürlich das Logo und die Pannen.

Nein, es war einmal auch so, dass ich einen coolen Web-Player blitzschnell schreiben konnte, und ich würde es in nur 20 Zeilen tun! Ich bin cool, ich kann alles machen! Mit zunehmendem Alter begann ich Fragen zu stellen:

1. Wie kann man dabei die Helligkeit / den Kontrast verdrehen? Und dynamische Normalisierung?
2. Wie wechsle ich zum Vollbildmodus? Und wenn es keinen Knopf gibt, weil sie vergessen haben, ihn zu zeichnen?
3. Wie kann man einen langweiligen Vortrag um 3 Stunden beschleunigen?
4. Wie verdrehe ich einen Equalizer? Dozenten sind kaum hörbar, selbst wenn Sie die Lautsprecher abschrauben
5. Wie würde ich das Stück schneiden und an einen Freund senden?
6. Wie würde ich schnell für ein paar Sekunden zurückgehen, ohne die Maus auf einen kleinen Streifen zu richten?
7. Wie kann man dafür sorgen, dass mehr als 15 fps ausgegeben werden?

Einige Anbieter versuchen bereits, dieses Problem zu lösen. Das Problem liegt in Form primitiver hausgemachter Produkte mit Grundfunktionen. In Opera können Sie beispielsweise den Player von der Seite "schälen" und separat verwalten. Es gibt youtube-dl, mit dem Sie nicht nur Videos von einer Reihe von Diensten herunterladen, sondern auch einen Link erhalten, damit Sie ihn in einen normalen Player einfügen können, zumindest in VLC. Es gibt auch StreamLink und MPV, probieren Sie es aus, Sie werden es sicher mehr mögen als normale Spieler.

Wir können jedoch noch weiter gehen, indem wir alle oben genannten Prinzipien auf Multimedia anwenden. Wenn etwas verlieren möchte, fragen wir den Benutzer, laden es herunter, zwischenspeichern es lokal, dekodieren und zeigen es an - genau wie in jedem anderen Browser. Da wir jedoch verstehen, dass der Browser keine Multimedia-Anwendung ist und nicht alle Anforderungen erfüllen kann, können wir eine Schaltfläche in der Nähe anzeigen, mit der ein normaler Player mit dem angezeigten Inhalt gestartet wird. Vertrauen wir den Profis und Fans, die viele Stunden ihres Lebens damit verbracht haben. Personen, die Musik oder Videos live hören und nicht gezwungen sind, einen Player für 20 Dollar pro Stunde an die Site anzuschließen.

Damit die Verbindung zur Videoquelle nicht unterbrochen wird und das Video nicht erneut heruntergeladen wird, können wir wie Torrent-Clients einen lokalen Proxyserver öffnen, indem wir den Videostream im laufenden Betrieb neu packen, mit dem wir das Video an eine externe Anwendung verteilen, und wenn die Anforderung eintrifft - Ein Teil des Caches und ein Teil werden in Echtzeit entsprechend den Anforderungen der Anwendung und den Funktionen der Site gespeist. Ebenso kann jedes Video / Audio einfach als Datei gespeichert werden, selbst wenn es ursprünglich eine Live-Übertragung war oder dynamisch generierte Medienquellskripte und Dateien als solche nicht einmal existierten. Und Sie müssen nicht irgendwo auf den Seiten nach direkten Links suchen, Weiterleitungen bekämpfen oder schwere Artillerie in Form von Videoaufzeichnungen vom Bildschirm aus einbinden - der Browser sollte für den Benutzer sein, und der Benutzer wird Erfolg haben, niemand wird ihn stören. Das Schwierigste dabei ist vielleicht eine Injektion in den Flash-Prozess. Der Lebenszyklus endet jedoch, da er zu oft nicht aktualisiert werden sollte.

Unangemessenen Inhalt filtern

Wenn die Worte zum Filtern unerwünschter Inhalte normalerweise nur an Pornos oder aufdringliche Werbung in den Sinn kommen, Sie jedoch auf fast jeder Website mit einem Problem konfrontiert sind, ist es besser, diesen oder jenen Inhalt nicht zu sehen. Denken Sie daran, wie Sie durch verschiedene Websites gekrochen sind und kilometerlange Suchergebnisse mit ähnlichen Ergebnissen ausgewertet haben. Oder nicht vom gleichen Typ, aber Sie haben versucht, etwas anderes im Datensatz zu finden?

Auf einer Website mit Arbeit / freiberuflicher Tätigkeit können Sie beispielsweise häufig feststellen, dass jemand einen Aufsatz schreiben muss, aber Sie verfassen keine Aufsätze, so wie Sie nicht in JS oder PHP schreiben, sondern häufig alle derartigen Projekte aus den Suchergebnissen entfernen Es ist einfach unmöglich, sich auf Kategorien zu verlassen - normalerweise gibt niemand sie an. Oder sehen Sie sich einen Newsfeed an und wissen nach dem Absturz eines anderen Flugzeugs nicht, wohin Sie mit den Nachrichten über das Flugzeug gehen sollen, insbesondere wenn dort Verwandte waren und es Ihnen weh tut? Einige Leute bekamen einige Ausdrücke von modischen und berühmten oder sogar nur Trends, wie Spinner oder Pokemon, wodurch selbst spezielle Browser-Plug-Ins dies einfach nicht zu sehen schienen. Und wer möchte nicht einige „Freunde“ auf die schwarze Liste setzen, damit sie ihre Beiträge nie wieder sehen? Und immer noch nicht die Nachrichten über das erbrechende Nashorn mit seiner frechen Werbung zu sehen, die durch das Testen von Open-Source-Programmen und kostenlose Hilfe für die Community abgedeckt wird ...

Das Lustige ist, dass fast jeder E-Mail-Client über umfangreiche Filter zum Sortieren / automatischen Löschen von Junk-Mails verfügt, aber fast keine Website verfügt über solche Funktionen. Wenn unser Inhalt in kleine überschaubare Elemente geschnitten würde, könnten wir filtern / hervorheben, um unsere Zeit nicht mit etwas zu verschwenden, an dem wir eindeutig nicht interessiert sind. Und ich müsste keine Parser für einige Websites schreiben, die 90% des Inhalts gelöscht und mir einen Squeeze in Form der restlichen 10% in dem von mir benötigten Format zur Verfügung gestellt haben. Und nicht 10 Elemente pro Seite. Mindestens 1000 Stück . Es wäre möglich, RSS-Reader zu verwenden, aber RSS / Atom ist weit entfernt von überall, insbesondere reicht es in den Suchergebnissen nicht aus.

Kleine handliche Gegenstände

Was sind diese kleinen und überschaubaren Elemente der zuvor erwähnten Site? Stellen Sie sich zum besseren Verständnis eine statische JSON-Datei mit einigen Informationen vor. Oder XML oder die SQLite-Datenbank oder eine XLS-Datei oder eine CSV-Text-Engine oder etwas, das noch nicht einmal geboren wurde, aber notwendigerweise binär, komprimiert und nanotechnologisch ist ... Und darin stecken kleine Informationen. Klein, weil sie unteilbare logische Einheiten sind. Dies kann ein Link im Navigationsbereich sein, ein Ausschnitt für die Beschreibung des Produkts, das Produkt selbst mit allen Eigenschaften, dem Benutzerkommentar oder sogar der gesamte Artikel. Es können auch einige separate Site-Widgets sein: Suchfeld, Bestellkorb, Login / Razlogin-Feld.

Verwaltet, weil wir im Gegensatz zu einem Monolithen mit festem Blindwert solche Daten verwalten können: Identifizieren Sie die richtigen, sortieren Sie sie, geben Sie sie in direkter und umgekehrter Reihenfolge aus, filtern oder dekorieren Sie sie mit unseren Daten und erstellen Sie Meshas, ​​die zu gegebener Zeit viel Rauschen verursachen. Fast jede Site verfügt über eine Datenbank, die SQL verwaltet. Hinter SQL stehen relationale Theorie, relationale Algebra und viele, viele Methoden des Informationsmanagements. Und ein wenig tiefer werde ich zeigen, wie Informationen verwaltet werden können und wie wenig Autoren von Websites uns, wenn überhaupt, geben.

Zum Beispiel versuche ich, neue coole Arbeiten im Bereich der Demoszene zu finden. Ich gehe zu pouet.net , stupse Prods an und dann ... Einerseits möchte ich nur coole Arbeit, also sortiere ich die Arbeit nach der Anzahl der Lois. Erstens sehe ich mein Lieblings-fr-041: Trümmer sowie andere Werke, die ich mehr als einmal gesehen habe. Aber ich will etwas Frisches! Ich sage, es bedeutet am Veröffentlichungsdatum, hier ist es nur frisch. Aber welches ist das beste? Wie würde ich 2 Sortierungen kombinieren? Oder zumindest eine Auswahl nach dem Zeitraum des Formulars „für die letzten sechs Monate“ treffen und erst dann sortieren? Leider wurden mir die Werkzeuge dafür nicht gegeben. Aber jedes der Werke könnte in unserer JSON-Datei als Element aus dem Array von Werken dargestellt werden. Basierend auf dem Datenschema könnte unser Browser Steuerelemente zeichnen, die unabhängig von den Autoren der Site sind, wo wir zu unserem Vergnügen eine Auswahl treffen würden.

Ein weiteres Beispiel: Wir alle wissen, dass die Suche besser ist als Google einfach nicht. Aber manchmal hält er sich für so schlau, dass er ganze Sätze aus der Suchabfrage herauswirft, sie in verschiedene Sprachen übersetzt und zeigt, was er für nützlicher hält. Das brauche ich nicht. Wo ist das Kontrollkästchen "Hör auf schlau zu werden, ich bin hier verantwortlich"? Früher bestand es aus der richtigen Anordnung von Anführungszeichen und Pluspunkten, und jetzt befindet es sich auf bing.com - eine primitivere Suche wird sofort aktiviert , aber es sucht nach genau dem, was ich brauche und wird nicht schlau, ignoriert meine Schlüsselwörter nicht, ignoriert die Bedingungen der Anfrage nicht. Wenn er überhaupt etwas findet, aber wenn er es nicht findet, wird er dies ehrlich sagen und nicht versuchen, sich etwas auszudenken. In diesem Fall könnten wir, wenn wir kleine verwaltbare Elemente erhalten würden, die Suchergebnisse beider Suchmaschinen leicht in einem einzigen Such-Feed kombinieren. Dazu müssten wir nur zwei Arrays desselben Typs verbinden.

Sehr oft sind Suchergebnisse auf einzelnen Websites mit Spam oder ähnlichen Anzeigen oder einfach krummen Beschreibungen von etwas überfüllt. Zum Beispiel kann eine Bluse 20 Farboptionen haben - ich muss das alles mit meinen Augen vollständig durchblättern. Und im besten Fall kann ich nur einige Kategorien von Waren oder Display-Anzeigen von jemandem aus dem Problem entfernen, aber dies ist äußerst unpraktisch und oft wird eine solche Funktionalität einfach nicht bereitgestellt. Wenn wir kleine handliche Elemente haben, kann ich einfach den fahrlässigen Verkäufer herausfiltern oder sogar sofort die Kleidung der gewünschten Farbe auswählen.

Zurück zum Sortieren. Wie bei der Suche nach schönen Demoszenen sind bei der Suche nach Waren in Online-Shops häufig mehrere Parameter von Interesse, aber Sie können die Ergebnisse der Auswahl nur nach einem sortieren. Wenn überhaupt möglich. Dies betrifft sogar die größten Handelsflächen. Wenn sie Rohdaten zurückgeben würden, wäre dies sehr einfach zu manipulieren. In der Praxis müssen Sie 50 Seiten öffnen und Produktbeschreibungen manuell vergleichen, Münzen werfen und hoffen, dass der Kauf erfolgreich ist. Es gibt keine betrügerischen Pläne, wenn ein Kamm für 1 US-Dollar als Zubehör zum Los hinzugefügt wird, aber tatsächlich liegen die Mindestkosten bei 10 US-Dollar. Es gibt interessantere Methoden. Als ich mein erstes Tablet kaufte, pumpte ich Beschreibungen von 15.000 Produkten und Paketen mit Stammgästen aus, um nach den Schlüsselwörtern zu suchen, die ich brauchte - es war sehr langsam, aber ich fand meine Liebe (es war U9GT2).

Aber kommen wir zurück zu unseren Erdbeeren. Oder besser gesagt, auf die Website mit Handbüchern zum Anbau von Erdbeeren.

Stellen Sie sich vor, die Anweisung zum Anbau von Erdbeeren ist eine Ressource (der Einfachheit halber immer noch in Form einer JSON-Datei), die separat angefordert werden kann und in der sich ein semantisches Markup befindet (sie gibt an, auf welche Seiten sie verweist und auf welche Art von Links sie sich bezieht). Keine Navigation, Top-Tipps oder Kommentare anderer Benutzer - nur reiner Inhalt. Nun, Tops, Kommentare und Tipps können sich natürlich auch in der Nähe befinden, aber Hauptsache, dies ist nicht die Form eines Monolithen, sondern Sie können die erforderlichen Datentypen genau identifizieren. Natürlich werden hier Anzeigen und Skripte hinzugefügt, aber dazu später mehr. Im Moment glauben wir, dass wir reinen Inhalt haben, direkt aus der Datenbank (oder sogar aus dem Inhaltseditor). Dies ist leicht zu entleeren, zu falten, zu indizieren, ganz zu schweigen von der einfachen Zwischenspeicherung und Bereitstellung von Inhalten. Solche Elemente können zum Vor-Caching sowohl auf CDN als auch im Browser verwendet werden, um Massenpakete mit Inhalten zum effizienten Komprimieren und Laden zu erstellen (um nicht jede Schaltfläche für 50 Bytes einzeln zu ziehen), um sie zu versionieren und zu archivieren. Solche Daten können in einem Browser für eine lange Zeit verdreht und gedreht werden, ohne dass der Server belastet wird, und für eine lange Zeit mit Sortierungen und verschiedenen Auswahlen abgespielt werden. Das Lustige ist, dass dies alles genau so ist, wie es in den Datenbanken im verwaltenden CMS gespeichert ist. All dies wird jedoch über einen „Monolithizer“ ausgegeben, der die Daten in monolithischem HTML-Format einprägt, mit dem dann nur sehr schwer zu arbeiten ist.

Mit solchen Daten können Sie viele interessante Funktionen erstellen. Sie können beispielsweise Beiträge in Foren analysieren, zwischenspeichern und dann gelöschte Beiträge anzeigen.

Wo sind so kleine Elemente? Was ist schon da?

Es ist kaum zu glauben, aber Versuche, den Inhalt von seiner Präsentation zu trennen, gibt es schon seit geraumer Zeit. Das erste Zeichen war RSS, das hervorragende Arbeit bei der Bereitstellung von Snippets leistet. Yandex.market erfordert das Entladen von Filialen in einem speziellen XML-Format, das Preise, Bilder, Informationen zum Hersteller und sogar die Lieferung enthält. Andere Websites haben ihre eigenen Upload-Formate. Beispielsweise verwendet Google Merchant leicht modifiziertes RSS2.0. Im Allgemeinen können diese Formate heute gelesen und gerendert werden.

Wenn Sie sich mit Träumen beschäftigen, dh mit allen Arten von Opengrades und Mikroformaten, und HTML5 wurde viel hinzugefügt, aber leider ist es heute schwierig, sich darauf zu verlassen. Auf der anderen Seite enthalten viele Websites bereits semantisches Markup, weshalb es dumm ist, sich zu weigern, es zu lesen.

Man könnte reines XML oder JSON mit einer Reihe von benannten und halbstandardisierten Feldern austauschen. Sie können die Datenbanken sogar selbst im SQLite-Format austauschen oder darin eine kleine Auswahl generieren. Die Hauptsache ist, dass es saubere Daten ohne Code geben sollte (dazu später mehr).

Wo kann man glücklich werden?

Bis die Entwickler die Vorteile der neuen Art der Interaktion verstehen, müssen wir zunächst unser eigenes Glück erlangen. Einfach ausgedrückt, ich schlage vor, Websites zu analysieren und die Entitäten, die wir benötigen, aus ihnen herauszureißen. Sie können dies mit xpath, trendigen CSS-Selektoren oder guten alten regulären Ausdrücken tun. Ja, für jede Site im Internet müssen Sie Ihren eigenen Parser schreiben. Auf den ersten Blick ist dies eine titanische Arbeit mit einem unerreichbaren Ergebnis, aber ist es so?

Bisher gibt es mehrere Projekte, die sich auf das Parsen von Websites spezialisiert haben. Einige, wie Octoparse, erfordern fast keine Kenntnisse, die erforderlichen Blöcke werden mit der Maus ausgewählt. Neben dem Plan zum "Crawlen" wird die Site auch mit der Maus gefüllt. Dies bedeutet, dass die Einstiegsschwelle für das „Programmieren“ extrem niedrig ist. Selbst eine Hausfrau kann ihren eigenen Parser erstellen, wenn sie möchte. Wenn der Parser von schlechter Qualität ist oder nicht mehr funktioniert, zeigt der Browser die Seite einfach so an, wie sie ist, bis jemand anderes einen neuen Parser schreibt.

Es gibt auch engere Projekte, die heute arbeiten. Dies ist beispielsweise die Sofortansichtsfunktion in Telegramm. Die Leute haben bereits viele Parser geschrieben, die berühmte Websites umgehen und nur saubere Inhalte werden analysiert. Und wenn jemand einen Link zu einer solchen Site in Telegram veröffentlicht, wird die geschätzte Schaltfläche Sofortansicht angezeigt. Wenn Sie darauf drücken, wird nur reiner Inhalt ohne Werbung und anderen Müll ankommen. Das Herunterladen dauert nur wenige Kilobyte Verkehr und Speicher, nicht Megabyte Verkehr und Gigabyte Speicher, wie dies beim Browser der Fall wäre.Das Herunterladen einer so kleinen Datenmenge erfolgt sofort, daher der Name der Funktion - Sofortansicht. Wenn ein Parser ausfällt, dh ein Bug-Tracker und eine Community, die bereit sind, einen neuen Parser zu schreiben, der von einem praktischen Editor verwaltet wird. Wenn also jemand nicht an die Möglichkeit einer solchen Idee glauben kann, bis er selbst mit eigenen Augen sieht - willkommen.

Unsere Aufgabe wird zwar etwas komplizierter sein, da wir nicht nur den Text von Artikeln anzeigen, sondern auch Feeds mit Artikeln anzeigen und durch Abschnitte der Website navigieren müssen (Artikel, ein Forum und ein Geschäft - all dies sollte nicht in einem einzigen Feed gestört werden). Es ist nicht nur erforderlich, das zu extrahieren, was von der Seite benötigt wird, sondern auch zu entscheiden, welche Tabellen angeordnet werden sollen. Zum Beispiel lese ich sehr gerne Kommentare, und wenn nur die wichtigsten Nachrichten oder Artikel herausgezogen werden, wird der Wert der Ressource für mich geringer. Ich habe zum Beispiel Youtube über SkyTube gesehen und viele neue und interessante Kommentare gefunden, aber als ich zu NewPipe wechselte, blieb ich ohne sie. Darunter leidet der gleiche Parser-Satz wie bei youtube-dl. Und so sortieren Sie den resultierenden Inhalt in Regale - dies ist eine große Frage, nicht jede Hausfrau kann die Datenbankstruktur entwerfen. Die größere Frage istwie man durch solche Inhalte navigiert. Was ist die Haupt- und was ist die Tochtergesellschaft? Vor vielen Jahren habe ich bereits einen universellen Parser mit Heuristiken geschrieben, der den Hauptinhalt ausschneidet und nur Kommentare hinterlässt, weil ich dachte, dass Kommentare die Hauptsache sind.

Es ist noch schwieriger zu verstehen, was mit den empfangenen Daten zu tun ist und wie sie angezeigt werden. Hier kommen nur vorhandene Methoden in den Sinn: HTML-Vorlagen, PHP und SQL. Und wenn Browser auf NodeJS bereits funktionieren, warum nicht PHP für eine der Funktionen zum Browser hinzufügen? Ich bin kein Fan dieser Sprache, aber der Schwellenwert für die Eingabe ist minimal, und wo es mit einigen einfachen Vorlagen nicht möglich ist, können Benutzer darin programmieren (oder in einer anderen Sprache, siehe unten). So etwas wie diese Seitengeneration erinnert mich an den alten Aport Express - ein kleines Programm der Suchmaschine Aport, das die Aufgabe hatte, Suchergebnisse direkt auf dem Client anzuzeigen und so den Datenverkehr bei der damals verwendeten Einwahl zu reduzieren. Wenn jemand in die Geschichte eintauchen möchte, können Sie auf web.archive.org/web/20010124043000/http lesen: //www2.aport.ru: 80 / aexpress / und Download auf web.archive.org/web/20040627182348/http : //www.romangranovsky.narod.ru: 80 / aexpress.exe

Banner und Tracker

Nein, die Werbung selbst nervt mich nicht mehr: Im Laufe der Jahre der Netzwerkpräsenz entwickelte ich Bannerblindheit, die darin besteht, dass ich keine Blöcke an „prominenten Stellen“ sehe sowie Blöcke, die in einer nicht standardmäßigen Schriftart oder einfach geschrieben sind in Großbuchstaben. Manchmal ist es lächerlich - ich habe lange nach den Schaltflächen "Registrieren", "Herunterladen" oder "Neues Thema" gesucht, da sie groß und auffällig sind, aber ich merke sie einfach nicht. Manchmal, bis sie mir einen Screenshot mit einem eingekreisten Knopf schicken. Und es geht nicht um Verkehr oder Geschwindigkeit. Heute ist es ein Sicherheitsproblem, denn erstens ist Bannerwerbung ein ** ausführbarer ** Code, was bedeutet, dass es nicht nur ein Leck an persönlichen Daten für das sogenannte "Targeting" und Verfolgen von allem ist, sondern tatsächlich nur eine Sicherheitslücke.durch die Sie einen Sploit oder nur einen Bergmann ausfüllen können. Wenn früher gesagt werden konnte: "Gehen Sie nicht auf Pornoseiten und alles wird gut", ist jetzt "Pornoseite" in fast jede Seite auf jeder Seite integriert.

Aber die Tracker bereiten mir besondere Schmerzen, außerdem arbeiten die aktiven ständig an der Seite. Ich kann Yandex.Metrica als Beispiel für solchen Dreck nehmen, alles war unerträglich langsam. Es hat sich gelohnt, alle Yandex-Domänen zu verbieten, und mein Leben war voller Glück, da die Standorte plötzlich aufhörten zu bremsen und ich sogar nicht mehr daran dachte, Eisen aufzurüsten. Das Yandex-Domain-Verbot ist das erste, was ich mache, wenn ich ein System für jemanden einrichte. Die Menschen verlieren überhaupt nichts, aber die Geschwindigkeit beim Surfen steigt um eine Größenordnung.

Die Lösung ist sehr einfach: Die Möglichkeit, "freundliche Domänen" für die Site anzugeben und Anforderungen an alles andere zu deaktivieren. Sie können Anzeigen also mithilfe der Anforderungsrichtlinie oder einer gleichwertigen Richtlinie schneiden, die im Gegensatz zu AdBlock-förmigen Cuttern auf fast jeder Website funktioniert, keine Abonnements erfordert und auch dann hilfreich ist, wenn die Website gehackt wurde und eine Reihe von Schadcode darauf platziert wurde.

Ich höre dort Schreie, dass das Schneiden von Werbung das Einkommen von Autoren verringert? Vergessen Sie nicht, dass lange Zeit niemand dafür bezahlt, Banner anzuzeigen. Es ist sinnlos, _me_-Anzeigen zu schalten, es gibt nur meinen Datenverkehr und den Serververkehr aus, aber es bringt den Autoren keinen Cent. Aber es kann mich nur wütend machen. Zu einer Zeit habe ich eine Reihe von Dienstprogrammen für besonders angesehene Websites geschrieben.

Wenn Sie sich mit der Erfassung / Weitergabe personenbezogener Daten abfinden und der Benutzer gleichzeitig verärgert ist, würde ich empfehlen, so etwas wie die wunderbare AdNauseam-Erweiterung zu installieren. Wahrscheinlich die einzige Erweiterung zum Blockieren von Anzeigen, die von Google gesperrt wurde. Das Wesentliche dieser Erweiterung ist sehr einfach: Sie klickt auf jedes Element, das im versteckten Modus blockiert werden soll, d. H. ohne dem Benutzer etwas zu zeigen. Werbetreibende erhalten ihre lang erwarteten Klicks nach Belieben. Und wenn Sie auf jedes Banner klicken, werden die durchgesickerten persönlichen Daten mit einer Menge Müll gemischt, da sie nicht den tatsächlichen Vorlieben des Benutzers entsprechen. Targeting und Tracking werden unbrauchbar. Sehr gute Erweiterung. Und eine geniale Idee.

Werbung (Zielprofil)

Verurteilen? Schlagen Sie vor! Ja, ich verurteile die Praxis des Sammelns gezielter Daten, insbesondere mithilfe von Überwachung und ähnlichen schlechten (für mich) Tricks. Warum nicht die Targeting-Daten direkt in den Browser eingeben? Ich werde alles über mich erzählen, ich brauche keine Überwachung und Viren:

Geschlecht: männlich
Alter: 55 Jahre
Ausbildung: sekundäre Spezial
Hobbys: Fisting, BDSM, Shemale, Keuschheitsgürtel, Gasmaske Atemkontrolle
Wohnort: Klyuchi (eine Siedlung) in Ust -Kamchatsky Bezirk der Region Kamtschatka
Letzter Scheck im Laden: 28 Rubel (Brot)
Finanzielle Situation: kein Geld, ich lebe von der Zulage und in meinem persönlichen Garten
Einstellung zu kostenlosen Produkten:Ich schreibe negative Bewertungen über sie, ich stelle Coke.
Profil in sozialen Netzwerken: Es gibt keine und wird keine
Kreditkarte: Es gibt keine und ich

freue mich nicht auf die Angebote, die ich unter Berücksichtigung meines Profils nutzen kann.

Ich verstehe sehr gut, dass Verlage irgendwie Geld verdienen und in unseren schwierigen Zeiten überleben müssen, indem sie ein anderes Flugzeug oder eine andere Villa kaufen, aber sie müssen auch Benutzer verstehen, die sich über Werbung ärgern, auf die sie sowieso nicht zugreifen können. Ich verstehe auch sehr gut, dass nicht jede Werbung abgeschnitten werden kann, deshalb bin ich für gezielte Werbung, deren Profil einfach bereitzustellen ist. Und keine Banner.

Ich möchte auch einen Nutzerbewertungsmechanismus für durchgesickerte Anzeigen. Zum Beispiel öffne ich ein Video auf Youtube, dem Kanal meines geliebten Creosan, und irgendwann beginnt Creosan selbst, über einige Casinos dort zu sprechen. Ich würde gerne den Bereich mit Werbung hervorheben und die Daten in diesem Bereich als "Werbung" veröffentlichen, damit andere Benutzer später eine solche Werbung leicht überspringen können. Manchmal findet sich Werbung im Text der Artikel selbst, und die Artikel als Ganzes sind getarnte Werbung. Es ist sehr unangenehm für mich, solche Artikel zu lesen, deshalb würde ich sie gerne als „Werbung“ markieren.

Integrierte Proxy / VPN-Unterstützung

Leider entscheiden einige dumme Leute für mich, ob ich diesen oder jenen Dienst nutzen kann, und sie tun dies auf der Grundlage des Landes, in dem ich geboren wurde / lebe. Und nicht nur Websites (ein trauriger Blick auf Google Play). Zum Beispiel kann ich Spotify nur verwenden, wenn ich in den USA lebe, aber ich kann den Advcash-Dienst verwenden, wenn ich NICHT in den USA lebe. Wenn Sie bei der Geburt Pech haben, ist es natürlich nicht notwendig, in einem rückständigen Land zu vegetieren. Theoretisch können Sie in das richtige Land gehen, aber ich weiß nicht, wie ich gleichzeitig in zwei Ländern leben soll.

Lösung: Integrierter VPN-Mechanismus, der für jeden Standort separat vollständig konfiguriert werden muss. Für jemanden werde ich nur Deutscher sein, für jemanden Amerikaner, und ich werde Einkäufe aus dem Land tätigen, für das niedrigere Preise angeboten werden.

Warum nicht ein normales VPN kaufen und verwenden, warum alles in den Browser ziehen? Dann kann nur der Browser eine Site von einer anderen trennen und jede Registerkarte trennen. Wenn wir den gesamten Datenverkehr über das System-VPN leiten, müssen wir ständig wechseln oder manchmal Verbindungsabbrüche und Verbote abfangen, wenn wir dies vergessen.

Plugins

Manchmal stößt der in Kacheln geschnittene Inhalt auf. Dies können beispielsweise Satellitenkarten oder Fotos sein. Im Prinzip kann es heute aus dem Browser ausgewählt werden, aber wie geht es weiter? Das Beobachten einzelner Kacheln ist unpraktisch. Zu kleben? Was und wie? Natürlich kann ich eine Brute-Force-Datei schreiben, die die Kanten von Kacheln vergleicht und nach Optionen für nahtloses Kleben sucht. Hier können Sie jedoch einen Fehler machen. Wenn der Browser zusätzlich Informationen darüber speichert, wo und welche Kacheln relativ zu anderen Kacheln waren, erfolgt das Kleben schnell und schnell einwandfrei! Sie können einen bequemen Export von Kacheln direkt aus dem Cache oder der aktuellen Seite anhängen!

Und ich möchte nicht auf jeder Site Logins / Passwörter erfinden und eingeben, sondern einen zufälligen Startwert angeben, aus dem sowohl Logins als auch Passwörter für eine bestimmte Site generiert werden. Zum Beispiel gebe ich die Zeile "soMeRanDOooo0MStr11nng" an und wenn ich zu example.com gehe, verketten diese beiden Zeilen und erstellen eine UID, auf deren Grundlage Sie alles generieren können, einschließlich Anmeldungen / Passwörtern (und noch besser, alle verbleibenden persönlichen Informationen, damit Es war möglich, sich mit einem Klick zu registrieren und nicht zu überlegen, welche anderen Namen es gibt, außer Sergey, ohne den Fakenamegenerator zu verwenden. Und die Fähigkeit, diese Passwörter auf Bugmenot zu fummeln. Ein solcher Generator ist übrigens schon in Safari!

Mit anderen Worten, der Browser sollte einen flexiblen Plugin-Mechanismus bereitstellen. Darüber hinaus sollten sich die Plugins im Browser befinden, damit Sie fast jeden Teil des Browsers einbinden können und JS-Injektionen nach dem Laden von Seiten oder Schaltflächen in der Symbolleiste nicht mögen. Natürlich möchte ich Plugins in C schreiben, Kompromisse bei der Seitenverarbeitungsgeschwindigkeit sind einfach inakzeptabel.

Browserteile als Dienste

Fast jeder Browser verfügt über ein Dienstprogramm zum Herunterladen von Dateien. Dies ist die Sache mit einer krummen Oberfläche, die Dateien in ein unverständliches Verzeichnis herunterlädt, nicht weiß, wie sie fortgesetzt werden sollen, und dann sagt sie auch, dass Viren in der Datei erkannt wurden. Aber dieses Ding ist und vor allem Teil des Browsers, was bedeutet, dass es Cookies und andere Sitzungsattribute verwendet. Dies bedeutet, dass wir durch das Anmelden auf einer Website keine Cookies mehr auswählen müssen, um sie in wget oder curl zu setzen. Der Browser selbst kann als solches Dienstprogramm fungieren und die aktuelle Sitzung vollständig unterstützen. Dies bedeutet, dass wir zunächst sowohl das Netzwerksubsystem als auch eine solche provisorische Locke mit einer einzigen Codebasis und einer schlechten Konnektivität mit dem Hauptbrowsercode entwickeln können, aber dazu später mehr.

Fast jeder Browser verfügt über einen primitiven Dateilister, der den Inhalt lokaler Verzeichnisverzeichnisse anzeigen kann. Es macht es schief, aber es ist oft viel besser als gar nichts. Aber die alte Oper war in der Lage, Dateien zwischen Benutzern zu fummeln und hatte sogar eine Anwendung mit einem Kühlschrank, auf den man zeichnen konnte. Ja, die Jungs haben wirklich die Zukunft gemacht. Und sie überholten ihn ein wenig.

Der Browser verfügt möglicherweise über einen E-Mail-Client, der über die Befehlszeile mit einem detaillierten Verlauf verwendet werden kann. Dies würde es ermöglichen, viele Aufgaben zu automatisieren, vom Sammeln von Spam bis zum Versenden von Erinnerungen. Erinnerungen können aus dem integrierten RSS-Dienst entnommen werden.

Browser für Teile

Das Schreiben eines gesamten Browsers ist eine ziemlich komplizierte Aufgabe. Darüber hinaus fallen viele Dinge, wie das Herunterladen von Dateien, ein RSS-Reader oder ein E-Mail-Client, nicht einmal ein, wenn sie das Wort „Browser“ hören. Zumindest können diese Anwendungen separat geschrieben werden, in Form von vollwertigen Anwendungen, in Form von Bindungen über vorhandene Anwendungen oder sogar als temporäre Lösungen von ein paar hundert Zeilen in einer Skriptsprache.

Das Netzwerk kann auch auf einen separaten Daemon verschoben werden. In der Nähe können Sie einen DNS-Resolver mit einer integrierten Blacklist von Domänen und einer automatischen Aktualisierung von Blacklist-Listen, einem Subsystem zum Zwischenspeichern von Inhalten und einer Reihe anderer Dinge herausnehmen. Sogar das Rendern kann wie in Opera Mini in einen separaten Prozess verschoben werden (und was mit zusammengeführten Quellen gemacht werden kann, da dieser Code nicht einmal direkt in das Projekt gelangt, sondern ein „Plug-In“ eines Drittanbieters ist, bleibt auch die Lizenzsauberkeit erhalten). github.com/browsh-org/browsh - hier wird die Furefox-Engine irgendwo in vpsk gerendert und die bereits gerenderte wird Ihnen in Form von Text und Textpseudografiken zugesandt - es sieht sehr cool aus, Sie können sogar das Video ansehen

All dies kann zunächst als unabhängiger Mikrodienst implementiert werden, wobei ein Entwickler in Java, ein anderer in Python und der dritte in Ruby schreibt und sich nicht streiten muss, um einen Technologie-Stack auszuwählen. Schließlich ist jeder mit der Situation vertraut, dass sich jemand wegen der Bremsen keinen Java-Browser vorstellen kann, jemand aus Angst vor Schwachstellen Angst vor Sishku hat und jemand das modische Go ausprobieren und sich dafür aufregen möchte? Hier kann jeder ein kleines Teil für sich auswählen und streng dafür antworten, es muss nur ein Kommunikationsprotokoll vereinbart werden. Und wenn einige Teile schlecht funktionieren, können sie am Ende einfach ausgetauscht werden. Oder nehmen Sie vorhandene Lösungen für eine engere Integration und passen Sie sie an, wie dies im Arachne-Browser geschehen ist.

Sogar der Renderer kann in einem separaten Prozess ausgeführt werden und nur Informationen zur Anzeige übertragen. Zuerst können Sie einfach den vorhandenen Code von w3m / links / netsurf übernehmen, dann können diejenigen, die dies wünschen, umschaltbare Modi von Gecko / Servo / Blink hinzufügen.

Natürlich soll es eine Vielzahl von Plugins schreiben. Lesezeichen, einschließlich solcher, die über die Clouds oder Empfehlungsdienste synchronisiert werden, mehrstufige Registerkarten mit Vorschau und die automatische Vervollständigung von Formularen, die auf neuronalen Netzen basieren, sind alles, was Sie möchten. Vielleicht hat jemand die Quelle für das Herunterladen von Dateien mit mehreren Threads zur Hand (oder jemand hat so etwas auf einem Github gesehen), der diesen Code jetzt auf eine neue Plattform portieren kann?

Und natürlich können Sie hier dem alten Prinzip folgen: Lassen Sie jedes Programm eine Sache tun, aber machen Sie es gut. Der Browser ist eine sehr komplexe Reihe von Programmen, die mit dem Netzwerk und damit der Komplexität des gesamten Systems zusammenarbeiten. Kann es also einfach sein, unseren Browser in die maximale Anzahl von Teilen aufzuteilen, um die Qualität und Zuverlässigkeit der einzelnen Teile sicherzustellen?

Plugins als garantierte Funktionen

Einige Plugins können in der Installation als Standard festgelegt werden. Zum Beispiel Plugins zum Bereitstellen von Registerkarten, Herunterladen von Dateien, ein Plugin für die Adressleiste mit automatischer Vervollständigung, Pompons und Drachen und dergleichen, das sich bereits in jedem Browser befindet. Aber ich schlage vor, etwas weiter zu gehen und etwas mehr in die Standardlieferung aufzunehmen. Natürlich ist dies ein rutschiger Weg, der uns zu Bloatware führen kann, aber meiner Meinung nach sollten Sie keine Angst vor Experimenten haben (natürlich nicht, wie Mozilla es macht, was löchrige Erweiterungen von verschiedenen Partnerprogrammen ohne die Möglichkeit einer Trennung beinhaltet).

Erinnern Sie sich zum Beispiel in IE6 an eine so dunkle Schaltfläche wie "Diskutieren"? Es erschien nach der Installation von MS-Office, funktionierte fast nie, da es serverseitiges SharePoint für seine Arbeit benötigte. Aber die Sache war großartig: Als Sie darauf geklickt haben, wurde eine Symbolleiste geöffnet, über die Sie Kommentare zur Seite hinzufügen konnten. Es gab immer noch einen baumartigen Chatroom (obwohl ich mich bereits schlecht an alles erinnere, aber ich konnte es nicht googeln), und es funktionierte mit jeder Seite. Stellen Sie sich vor: Kommentare auf jeder Website, ohne Moderation der Autoren, wo Sie alles ausdrücken können, was Sie kühn und direkt persönlich über eine Website denken. Ich glaube, dass ein solches Plugin einfach ein Muss im Bundle unseres Browsers war.

Ein weiteres Beispiel: Viele Websites öffnen die Google Maps- oder Yandex-Karten auf der Seite mit den Wegbeschreibungen. Dies wird als bewährte Methode angesehen. Niemand stellt Fragen zum Datenschutz und fragt den Benutzer nicht, ob eine Drittanbieterorganisation wissen soll, welche Objekte vorhanden sind Interessieren Sie sich für die Stadt? Solche Elemente können geschnitten und durch OSM-Karten oder sogar lokale Repository-Karten ersetzt werden. Niemand stört sich daran, den vollständigen OSM-Speicherauszug herunterzuladen und lokale Karten zu erstellen. Ein oder zwei Gigabyte auf der Festplatte bedeuten heute fast nichts mehr.

Zusammenfassung

Hier ist meine Vision eines perfekten Browsers. Natürlich wurde bei weitem nicht alles geschrieben: Die Themen Replikation, mehrstufige Formulare und Benutzerdatenschutz werden nicht behandelt, es gibt nichts über das Geschäftsmodell oder Möglichkeiten, Sponsoren für das Projekt zu gewinnen. Und Sponsoren werden benötigt, weil nur wenige Leute etwas mitbringen, das nutzbar ist, um ein solches Arbeitsvolumen kostenlos zu erledigen. Es gibt keine Beschreibung, wie Sie sich vor den Interessen des Sponsors schützen können, da wir am Ausgang einen weiteren Firefox mit Telemetrie-Plugins erhalten können, der über die Trennung der Telemetrie informiert.

In dieser Phase sind die Menschen das Wichtigste bei der Erstellung des perfekten Browsers. Schreiben Sie Ihre Ideen, Gedanken und wenn Sie dem Projekt mit Code oder Layouts helfen können, können Sie gerne Ihre Hilfe anbieten. Von besonderem Interesse ist die Kritik an den oben genannten Ideen und Gedanken. Wenn ich nicht persönlich bin, kann vielleicht jemand, der diesen Text gelesen hat, einen guten Browser schreiben. Ich habe vor einem Jahr angefangen, diesen Artikel zu schreiben, als Antwort auf einige andere Themen wollte ich Crowdfunding arrangieren, aber die Hektik des Lebens war ablenkend, weil ich ihn so veröffentliche, wie er ist, damit andere Leute darüber nachdenken können.

Dieser Text ist unter der Public Domain-Lizenz verfügbar und kann überall frei verbreitet werden. Vielleicht können wir (Menschen im Allgemeinen) auf diese Weise einen Browser erhalten, der zumindest ein wenig bequemer zu bedienen ist.

Source: https://habr.com/ru/post/de426295/


All Articles