Yub.js ist eine erweiterbare clientseitige Web-Befehlszeile, die viele nützliche Suchmaschinen und Verknüpfungen, wiederverwendbare Befehle und viele andere versteckte Extras wie Stoppuhren und Inline-YouTube-Videos enthält. Es verfügt außerdem über eine flexible API, sodass Sie yub.js-Befehle von überall aus aufrufen können: Sie können beispielsweise direkt auf Befehle verlinken oder direkt über die Adressleiste Ihres Browsers darauf zugreifen (richten Sie einfach eine einzelne Suchverknüpfung ein, die auf yub.js verweist). API und erhalten Sie Hunderte anderer Suchverknüpfungen kostenlos).
Das Ganze war von Anfang an als ein einseitiges, eigenständiges HTML-Dokument konzipiert, das alles enthält, was für eine sofortige Arbeit erforderlich ist. Es kann lokal installiert und direkt von Ihrem Computer aus ausgeführt werden, ohne dass ein Server oder Webhosting erforderlich ist. Seitdem ist es erheblich gewachsen und die Entwicklung wurde in separate, besser verwaltbare Dateien aufgeteilt. Die eigenständige HTML-Seitenversion ist weiterhin verfügbar, wird jedoch jetzt automatisch von einem Ruby-Skript generiert und ist in einer minimierten Version und einer Quellversion erhältlich. Speichern Sie die Seite einfach direkt auf Ihrem Computer oder legen Sie sie auf Ihrem Server ab und schon kann es losgehen!
Die Liste der verfügbaren Suchmaschinen ist vollständig modular: Sie können Ihre eigene Liste häufig besuchter Websites hinzufügen, indem Sie die Datei mods.js (json) bearbeiten oder ersetzen. Das Erstellen eigener neuer Befehle ist einfach – verwenden Sie einfach den Befehl create
“ (mit dem Namen des neuen Befehls als optionales Argument). Fühlen Sie sich frei, Ihre eigenen neuen Funktionen hinzuzufügen oder bestehende zu erweitern, indem Sie functions.js
bearbeiten. Oh, und reguläre Ausdrücke werden standardmäßig überall unterstützt.
Der beste Weg, die Funktionsweise von yub.js zu verstehen, besteht darin, einzusteigen und Befehle auszuprobieren. Bevor wir uns also mit langweiligen Dingen wie Geschichte oder Interna befassen, werfen wir einen Blick auf einige der coolen Befehle, die Sie sofort ausprobieren können.
list
oder ls
eingebenhttp://commandlinefu.com/
oder ftp://ftp.mozilla.org/
!
vor einer beliebigen bloßen URL, um direkt zur Website zu gelangen, z. B.: !smh.com.au, um zum Sydney Morning Herald zu gelangeng [searchterm]
für eine einfache Google-Suche. Oder Sie bevorzugen stattdessen die Verwendung y
, b
, ix
oder sp
help
oder man
(optional mit dem Befehl, zu dem Sie Hilfe benötigen, als Argument, z. B. help shuffle
).calc 857*2^3
: Einfache mathematische Formeln lösencalc (25+2)==(28-1)
: Äquivalenz testencalc ~32.56
: runde Zahlenrand 550
: Gibt eine Zufallszahl zwischen 0 und 550 zurückrand site
: Gehe zu einer zufälligen Websiterand img
: Zeigt ein zufälliges Bild anrand git
: Besuchen Sie ein zufälliges GitHub-Projektwatch ninja cat
: Sehen Sie sich eine eingebettete Playlist mit YouTube-Videoergebnissen für den Suchbegriff „Ninja Cat“ an.link flint tigers
: Holen Sie sich einen Permalink zum Befehl „Flint Tigers“ (der Flickr nach Bildern von Tigern durchsucht, sortiert nach „Interessant“).fspell sometext
: Sometext mit Flickr-Bildern schreibenascii sometext
: _Sometext in ASCII-Grafik schreibenwhere gn
: das Schlüsselwort und die Standardsuchadressen für den Befehl gn anzeigen> am Alice in Wonderland
: Gehen Sie direkt zum ersten Google-Suchergebnis für den Begriff „Alice im Wunderland“ auf Amazon.com> wpde Turing complete
: Lesen Sie den Artikel zum Thema „Turing-Vollständigkeit“ in der deutschen Wikipediacat engadget.com
: Zeigt eine Nur-Text-Version der Webseite unter engadget.com anpop bbc gn yn bn
: Öffnen Sie einzelne Registerkarten mit BBC News, Google News, Yahoo News und Bing News, alles in einem Befehlpop gim yim bim -t horses
: Neue Tabs werden angezeigt, die die Ergebnisse einer Bildersuche nach Pferden auf Google, Yahoo und Bing anzeigen Hinweis: Um den pop
-Befehl verwenden zu können, müssen Sie wahrscheinlich eine Ausnahme im Popup-Blocker Ihres Browsers für yub.js einrichten
Standardsuchmaschinen werden in der Datei „engines.js“ gespeichert. Diese enthält eine große Auswahl an allgemeinen Web-Verknüpfungen, Suchmaschinen, Nachrichtenquellen und anderen interessanten Dingen, die die grundlegenden Funktionen von yub.js demonstrieren und Ihnen eine Vorstellung davon geben sollen, welche Arten von Verknüpfungen für Ihre eigenen Bedürfnisse nützlich sein könnten.
Dinge, die Sie in „engines.js“ erwarten können, sind: große Suchmaschinen (Google, Yahoo, Bing usw.) und die verschiedenen zugehörigen Produkte (Bilder, Videos, Karten, Nachrichten, Wetter, maschinelle Übersetzung), Wikipedia und seine verschiedenen Wikimedia-Schwesterseiten (Wiktionary, Wikiquote, Wikinews usw.), eine Auswahl großer Nachrichtenorganisationen (BBC, Deutsche Welle, France 24 usw.), große Webmail-Anbieter (Gmail, Yahoo, Hotmail usw.), Dokumentation für mehrere beliebte Skriptsprachen (Bash, JS, PHP, Python, Ruby) und eine Reihe anderer nützlicher Websites und Tools (Down For Everyone Or Just Me?, Whois, What Is My Ip?... usw.). Eine ausführlichere Anleitung finden Sie im Wiki.
Ein schöner Vorteil der Verwendung von yub.js-Verknüpfungen besteht darin, dass wann immer möglich standardmäßig https verwendet wird (dh überall dort, wo es unterstützt wird).
Alle benutzerdefinierten Links und Verknüpfungen werden der Einfachheit halber in mods.js gespeichert. Diese Datei ist völlig optional, sodass Sie nach Belieben Dinge darin einfügen und daraus entfernen können. Sie benötigen die Datei mods.js nicht, um yub.js zu verwenden .
Die riesige mods.js-Datei im Repository ist lediglich ein Beispiel zur Demonstration verschiedener Funktionen von yub.js, wie z. B. Unicode-Regex-Suchen sowie verschiedene lokale Suchseiten und andere interessante Dinge, die Sie auswählen können Ihre eigenen Verwendungen. Bei 106 KB / 870+ Einträgen (zum Zeitpunkt dieses Schreibens) zeigt es auch, dass yub.js selbst mit einer riesigen Liste benutzerdefinierter Verknüpfungen reibungslos läuft, ohne dass die Geschwindigkeit merklich abnimmt.
Einige Beispiele für Dinge, die wahllos in der Beispieldatei mods.js abgelegt wurden:
ebin
für eBay Indien oder amuk
für Amazon UK)enes
für das Englisch-Spanisch-Wörterbuch und esen
für Spanisch-Englisch; enko
und koen
für Koreanisch, enfr
und fren
für Französisch usw.Zu beachten ist, dass einige wirklich interessante Websites in „engines.js“ und sogar „mods.js“ weggelassen wurden, um die Standardverknüpfungen so allgemein nützlich wie möglich zu halten. Aber keine Angst, Sie können sie trotzdem zu Ihrer mods.js-Datei hinzufügen! Hier sind einige Dinge, die Sie hinzufügen könnten, um mods.js anzupassen:
cl
oder kj
-Befehl für den gewünschten Speicherort und legen Sie ihn in mods.js abhttp://www.xe.com/ucc/convert.cgi?Amount=%s&From=[CURRENCY1]&To=[CURRENCY2]
(ersetzen Sie [CURRENCY1]
und [CURRENCY2]
durch die dreibuchstabigen Codes für die Währungen Ihrer Wahl ) Theming-Unterstützung ist in Form von benutzerdefinierten CSS-Dateien verfügbar, die über den skin
-Befehl geladen werden. Skins sind im Grunde nur CSS-Dateien (im Ordner /css
) und können durch Eingabe des Befehls skin
und des Namens des Skins geladen werden (es ist nicht erforderlich, die Erweiterung .css
hinzuzufügen).
Um zum Standard-Skin zurückzukehren, geben Sie einfach skin default
ein. Um das gesamte CSS zu entfernen, verwenden Sie skin none
.
Skins bleiben derzeit nicht über yub-Sitzungen hinweg bestehen (dies würde das Setzen eines Cookies erfordern, was wir bisher vermeiden konnten), aber Sie können den Link/das Lesezeichen zu Ihrer yub.js-Instanz in etwas wie https://dohliam.github.io/yub/?skin%20terminal
ändern https://dohliam.github.io/yub/?skin%20terminal
um yub.js immer mit einem bestimmten geladenen Skin zu starten. Alternativ können Sie, sobald Sie sich für einen Skin entschieden haben, den Sie als Standard für Ihre lokale Installation festlegen möchten, ihn einfach in default.css
umbenennen (Sie können die ursprüngliche Datei default.css
in old.css
oder ähnliches umbenennen, wenn Sie sie nicht überschreiben möchten Es). Ihre neue Datei wird standardmäßig geladen, wenn Sie yub.js das nächste Mal öffnen.
Um einen neuen Skin zu erstellen, kopieren Sie einfach eine der vorhandenen Skin-Dateien in eine neue Datei, z. B. mynewskin.css
und passen Sie sie nach Herzenslust an! (Und vergessen Sie nicht, Ihre benutzerdefinierten Skins der Skins-Galerie im Wiki hinzuzufügen, damit andere sie genießen können!)
Hier sind einige Screenshots der Skins, die mit yub.js geliefert werden:
Standard :
Terminal :
Bergsee :
Strahlen :
Skyline :
nocss :
Natürlich müssen Sie yub.js nicht installieren, um es verwenden zu können. Für einmalige Suchen können Sie ganz einfach die neueste Version von yub.js verwenden, die hier auf GitHub gehostet wird. Alles wird vollständig auf der Clientseite erledigt, sodass keine Ihrer Anfragen über das Netzwerk gesendet wird.
Sie können die API sogar verwenden, um die GitHub-Version zur Standardsuche für Ihren Browser zu machen. Wenn Sie jedoch die API verwenden, sind alle von Ihnen eingegebenen Befehle sichtbar (z. B. in den GitHub-Serverprotokollen), sodass Sie möglicherweise lieber eine lokale Version von yub.js einrichten und diese vollständig offline (oder auf Ihrer eigenen Site) ausführen möchten ).
Im Wiki gibt es eine detaillierte Anleitung, wie Sie yub.js zu Ihrer Standardsuchmaschine machen. Hier finden Sie Schritt-für-Schritt-Anleitungen zum Einrichten von yub.js für Chrome/Chromium und Firefox (wenn Sie einen anderen Browser verwenden und yub.js installieren können, sollten Sie erwägen, die Schritte, die Sie unternommen haben, in die Anleitung aufzunehmen). .
Bei der Installation von yub.js sollten Sie bedenken, ob Sie es als Stichwortsuche einrichten oder als Standardsuchmaschine verwenden möchten. Der Vorteil der Einrichtung als Standard besteht darin, dass dadurch die URL-Leiste Ihres Browsers im Grunde selbst in eine Web-Befehlszeile umgewandelt wird.
Eine der nützlichsten Funktionen von yub.js ist die benutzerfreundliche API, die auf einem Laptop genauso gut funktioniert wie auf einem Server. Richten Sie einfach einen Link, ein Lesezeichen oder eine Stichwortsuche auf Ihre yub.js-URL und fügen Sie ?
hinzu. plus Ihre Befehle oder Suchbegriffe, um direkt zum Ergebnis zu gelangen.
Beispiel 1:
http://example.com/yub
http://example.com/yub?weather tokyo
Beispiel 2:
file:///home/user/yub/index.html?rand site
Sie können yub.js in jede Webseite einbetten und erhalten eine funktionsfähige Web-Befehlszeile, die so aussieht:
Kopieren Sie einfach den folgenden Code und fügen Sie ihn an einer beliebigen Stelle auf der Seite ein:
<form method="get" action="#" onsubmit="window.location='https://dohliam.github.io/yub/?'+window.yub.value; return false"><img src="yub.gif" /> <input id="yub" type="text" size=27 value="yub.js web command-line" autocomplete="off" style="border-style: none none solid; color:gray; font-family:monospace;" onfocus="this.value=''; this.style.color='black'" onblur="if (this.value=='') {this.value='yub.js: enter commands here';this.style.color='gray'}"> <input style="visibility: hidden" type="submit" value="" />
Es gibt wahrscheinlich eine elegantere Möglichkeit, dies zu tun, aber nach einigen Tests schien dies die einzige Möglichkeit zu sein, die sowohl in Firefox als auch in Chrome funktioniert. Experimentieren Sie ruhig und öffnen Sie eine Pull-Anfrage, wenn Sie etwas Besseres finden!
Es gibt eine Menge Funktionen, die noch implementiert werden müssen. Geplante neue Funktionen und angeforderte Funktionen werden so weit wie möglich im Issue-Tracker verfolgt. Wenn Sie eine Idee haben, fügen Sie sie hinzu (oder teilen Sie das Projekt auf und schießen Sie über eine Pull-Anfrage)!
Es wäre großartig, alle benutzerdefinierten mods.js-Dateien zu sehen – Links zu diesen können im Wiki geteilt werden, obwohl ein separates Repository in Zukunft eine weitere Möglichkeit ist, wenn die Liste groß genug wird. Lassen Sie mich in der Zwischenzeit wissen, ob Sie eine mods.js-Datei haben, die Sie teilen möchten – insbesondere, wenn sie zu einem bestimmten Thema organisiert ist (z. B. Sammlungen von Social-Media-Sites, schwedischen Zeitungen, Forschungsdatenbanken, Tools für Historiker usw.). Meeresbiologen usw.).
Einige geplante Funktionen, die noch in Arbeit sind:
watch
, aber für Musik)Wenn Sie dazu beitragen möchten, eine dieser Funktionen (oder andere, an die ich noch nicht gedacht habe) hinzuzufügen, können Sie gerne eine Pull-Anfrage einreichen.
Vor langer Zeit (genauer gesagt im Jahr 2005) wurde eine bahnbrechende Website namens YubNub vorgestellt, die es Benutzern ermöglichte, ihre eigenen Befehle und Verknüpfungen für verschiedene Webdienste zu schreiben. Die Idee, mit kurzen Bash-ähnlichen Befehlen auf Websites zuzugreifen, war ziemlich verlockend und machte tatsächlich süchtig und führte schnell zu allen möglichen kreativen Tools wie Split und Gimyim . Zusammen mit vielen anderen habe ich eine Reihe von Befehlen erstellt und die Site eine Zeit lang ziemlich intensiv genutzt.
Eines ergab jedoch nie ganz Sinn: Warum sollte jemand jede einzelne Suche, die er über eine (andere) Website eines Drittanbieters durchführte, filtern wollen? Sobald die Schlüsselwortsuchfunktion von Firefox weithin bekannt wurde, begann auf jeden Fall der Reiz der Verwendung von YubNub-Verknüpfungen zu schwinden – es war einfacher, einfach lokale Firefox-Schlüsselwörter für die häufigsten Suchvorgänge einzurichten und diese dann stattdessen zu verwenden. So wanderte eine Lesezeichendatei, die Dutzende früherer YubNub-Befehle in Form von Suchbegriffen enthielt, von Computer zu Computer und überlebte fast ein Jahrzehnt, bevor sich herausstellte, dass auch dieses System völlig zu umständlich, langsam und unpraktisch war (z. B. Zugriff von Ein anderer Computer war mühsam, und es war auch nicht angenehm, die Liste auf allen Computern auf dem neuesten Stand zu halten. Was noch schlimmer war: Bei dieser Methode fehlten auch viele der aufregenden Nicht-Suchbefehlsfunktionen, die YubNub bot.
Neun Jahre später zeigte ein Besuch bei YubNub, dass der Dienst immer noch läuft und laut Wikipedia sogar über 22.000 von Benutzern eingegebene Befehle aufwies ... Stand 2008. Ein Blick auf die Liste der Befehle führt zu der entmutigenden Schlussfolgerung, dass der Der einstmals großartige Dienst wurde von Tausenden und Abertausenden von Spam-Einträgen überschwemmt, wodurch jedes verbleibende Gemeinschaftsgefühl (die soziale Befehlszeile ) erstickt wurde, das einst eines der liebenswertesten Dinge an der war Website.
Noch enttäuschender ist, dass viele der coolsten Befehle (z. B. split , gimyim ) nicht einmal mehr funktionieren. Das sollte natürlich nicht allzu überraschend sein – die Architektur des Webs hat sich seit 2005 stark verändert. (Im Fall von Split, sowohl weil das Laden von Websites in Frames nicht mehr normal und akzeptabel ist, als auch außerdem, wie gimyim zeigt, weil sowohl Google und Yahoo – als auch praktisch jede andere große Website – jetzt aktiv Versuche unterbinden, ihre Inhalte von externen Websites zu laden. Schade.
Yub.js begann als Versuch, einige der Funktionen der alten YubNub-Befehlszeile in einer vollständig clientseitigen Anwendung wiederherzustellen, die jeder an seine Bedürfnisse anpassen und dann auf seinem lokalen Computer ausführen oder löschen konnte in die Cloud oder auf einen privaten Server und Zugriff von überall.
Obwohl ich diese Idee jahrelang untätig herumgehabt hatte, blieb sie immer eine Art Wunschtraum, da ich nicht einmal sicher war, ob es möglich war, die meisten Dinge, die ich machen wollte, mit JavaScript zu machen. Schließlich erstellte ich eine kleine HTML-Seite, um Anfragen an einige gängige Suchmaschinen weiterzuleiten, und „yubSearch“ war geboren.
Es wurde jedoch schnell klar, dass Suchverknüpfungen allein nicht ausreichten. Auf einen einfachen Befehl zum Durchsuchen der Verknüpfungsliste folgten weitere Befehle zum Drucken von Datum und Uhrzeit, zum Anzeigen von Beschreibungen für jede Verknüpfung und zum Sortieren von Text. Ein Taschenrechner wurde hinzugefügt und dann eine Stoppuhr. Da sich neue Befehle aus Codefragmenten und Problemumgehungen von überall her entwickelten, wurde es fast zu einer Herausforderung herauszufinden, was allein mit reinem JavaScript zusammengeschustert werden konnte. Es ging nicht mehr nur um Suchverknüpfungen – und so wurde aus yubSearch yub.js.
Die Entwicklung verlief strikt auf Kleinigkeit, wobei neue Funktionen immer dann hinzugefügt wurden, wenn sie tatsächlich benötigt wurden. Schon sehr früh wurde yub.js zu einer Art eigener Entwicklungsumgebung, und es gibt integrierte Referenztools für JavaScript (sowie andere beliebte Skriptsprachen), Linters und eine interne Befehlserstellungssyntax, die zu einer gemeinsamen Entwicklung beigetragen haben -bezogene Aufgaben viel einfacher.
Irgendwann entwickelte yub.js ein Eigenleben. Obwohl Turing nicht ganz vollständig war, wurde es gefährlich knapp, als über einen Patch nachgedacht wurde, um Eliza als Engine hinzuzufügen, die auf Konversationsaufforderungen reagiert ...
Yub.js wird weiterhin in reinem JS ohne den Einsatz von Frameworks oder externen Bibliotheken entwickelt. Obwohl viele interessante Funktionen mithilfe von serverseitigem Scripting, Frameworks und anderen Teilen rasanter Programmierartillerie hinzugefügt werden könnten, waren die Hauptziele schon immer Portabilität und Reaktionsfähigkeit – Sie können yub.js praktisch überall ablegen: auf einem Desktop, einem … Server, ein ChromeBook, sogar ein Mobiltelefon, und es wird ziemlich genau auf die gleiche Weise funktionieren. Dies hat sich insbesondere auf Mobilgeräten als lebensrettend erwiesen, wo selbst einfache Suchvorgänge (ganz zu schweigen von anspruchsvolleren Suchvorgängen) manchmal unglaublich umständlich und frustrierend sein können – und wenn mobile Websites häufig grundlegende Funktionen wie die Suche verbergen oder verdummen.
Wie oben erwähnt, wurde der Code jedoch buchstäblich aus Ersatzteilen zusammengeschustert, ohne (bis vor Kurzem) daran gedacht zu haben, ihn hübsch aussehen zu lassen, geschweige denn standardisiert oder effizient zu gestalten. Dennoch läuft alles mit unglaublicher Geschwindigkeit ab, dank relativ kleiner Dateigrößen und den Vorteilen, dass es vollständig auf der Client-Seite läuft.
Könnte es noch schneller gehen? Absolut! Zweifellos bleibt noch viel zu tun, um die bestehende (zugegebenermaßen ziemlich hässliche) Codebasis zu optimieren und aufzuhübschen. Wird der durchschnittliche Benutzer diese Verbesserungen bemerken? Das ist schwerer zu sagen – schließlich kann der Unterschied zwischen sofortigen Reaktionszeiten und solchen, die halb so schnell sind, ziemlich schwer zu erkennen sein. Die meisten einzelnen Aufgaben, die JavaScript zu einem bestimmten Zeitpunkt erledigt, sind unglaublich trivial (Erstellen von Listen, Weiterleiten zu URLs), daher war die Geschwindigkeit bei der tatsächlichen Verwendung selten oder nie ein Problem.
Wenn Sie hingegen Dinge, die langsamer sind als nötig, aus Prinzip stören, sollten Sie einen Blick auf den nächsten Abschnitt werfen.
Fans der Cloud-Synchronisierung : Wenn Sie sich immer noch fragen, welchen Sinn das alles hat, wenn Sie einfach Firefox Sync verwenden oder sich mit Ihrem Google-Konto bei Chrome anmelden könnten, dann ist yub.js möglicherweise nicht das Richtige für Sie.
Lesezeichen-Manager : Cloud-Synchronisierungsoptionen für fast alle gängigen Browser sind mittlerweile allgegenwärtig, und wenn Sie nicht über einen dieser Dienste verfügen, können Sie Ihre Lesezeichendatei jederzeit irgendwo auf einem Server sichern und damit fertig sein. Wenn das für Sie funktioniert, großartig – aber die Frustration über diese Ansätze hat überhaupt erst zu yub.js geführt.
Verfechter von elegantem Code : Wie bereits erwähnt, ist der Code im Moment ziemlich hässlich – natürlich nicht mit Absicht, sondern da jede neue Funktion aufgrund eines dringenden Bedarfs, von Flickschustereien und allerlei ineffizienten Brute-Force-Schleifen hinzugefügt wurde gibt es im Überfluss. Das wird sich hoffentlich im Laufe der Zeit ändern, da der Code (langsam) umgestaltet wird. Aber wenn Sie hässlicher Code beleidigt, sollten Sie vielleicht den Blick abwenden.
Hasser von eval : Wenn Sie glauben, dass eval unter allen Umständen böse ist (sogar beim Parsen bereinigter mathematischer Ausdrücke) ... dann möchten Sie vielleicht einfach die Taschenrechnerfunktion aus Ihrer Version von yub.js entfernen.
Sucher von bash.js : Yub.js ist keine Portierung von Bash in JavaScript. Wenn Sie sich fragen, warum yub.js keinen mount
-Befehl anbietet oder keine Möglichkeit hat, Prozesse kill
oder Ihren Maustreiber modprobe
, sind Sie wahrscheinlich am falschen Ort (vielleicht suchen Sie nach unixkcd). Wenn Ihnen andererseits eine passende Metapher für mount
, kill
oder modprobe
einfällt, die in einer Web -Befehlszeile Sinn machen würde, würde ich mich freuen, von Ihnen zu hören! ?
Vielen Dank an Jon Aquino und alle, die in seiner Blütezeit zu YubNub beigetragen haben, für die Web-als-Befehlszeilen-Metapher, die die ursprüngliche Inspiration für yub.js war.
Verkleinerte Einzelseitenversion, erstellt mit Uglifier für Ruby.
Inhaltsverzeichnis generiert von https://github.com/dohliam/tocdown.
Das zufällige GitHub-Repo basiert auf RandomRepo von RyanDavison.
Hintergrundbilder für verschiedene Skins:
MIT – Einzelheiten finden Sie in der LICENSE-Datei.