Yub.js est une ligne de commande Web extensible côté client qui comprend de nombreux moteurs de recherche et raccourcis utiles, des commandes réutilisables et de nombreux autres avantages cachés comme des chronomètres et des vidéos YouTube en ligne. Il dispose également d'une API flexible qui vous permet d'appeler des commandes yub.js de n'importe où : par exemple, vous pouvez créer un lien direct vers des commandes ou y accéder directement depuis la barre d'adresse de votre navigateur (il suffit de configurer un seul raccourci de recherche pointant vers yub.js). API et obtenez gratuitement des centaines d'autres raccourcis de recherche).
L'ensemble a été conçu dès le départ pour être un document HTML autonome d'une seule page contenant tout le nécessaire pour fonctionner immédiatement. Il peut être installé localement et exécuté directement depuis votre ordinateur sans avoir besoin d'un serveur ou d'un hébergement Web. Depuis lors, il s'est considérablement développé et le développement a été divisé en fichiers distincts, plus faciles à gérer. La version autonome de la page HTML est toujours disponible, bien qu'elle soit désormais générée automatiquement par un script Ruby et soit disponible en versions minifiée et source. Enregistrez simplement la page directement sur votre ordinateur ou déposez-la sur votre serveur et vous êtes prêt à partir !
La liste des moteurs de recherche disponibles est entièrement modulaire : vous pouvez ajouter votre propre liste de sites Web fréquemment visités en modifiant ou en remplaçant le fichier mods.js (json). Créer vos propres nouvelles commandes est simple : utilisez simplement la commande create
(avec le nom de la nouvelle commande comme argument facultatif). N'hésitez pas à ajouter vos propres nouvelles fonctions ou à étendre celles existantes en éditant functions.js
. Oh, et les expressions régulières sont prises en charge partout par défaut.
La meilleure façon de comprendre le fonctionnement de yub.js est de vous lancer et de commencer à essayer des commandes. Donc, avant d'entrer dans des choses ennuyeuses comme l'historique ou les composants internes, jetons un coup d'œil à quelques-unes des commandes intéressantes que vous pouvez essayer immédiatement.
list
ou ls
http://commandlinefu.com/
ou ftp://ftp.mozilla.org/
!
devant n'importe quelle URL nue pour accéder directement au site, par exemple : !smh.com.au pour accéder au Sydney Morning Heraldg [searchterm]
pour une recherche Google simple. Ou vous préférerez peut-être utiliser y
, b
, ix
ou sp
à la placehelp
ou man
(en incluant éventuellement la commande pour laquelle vous souhaitez obtenir de l'aide comme argument, par exemple help shuffle
)calc 857*2^3
: résoudre des formules mathématiques simplescalc (25+2)==(28-1)
: test d'équivalencecalc ~32.56
: nombres rondsrand 550
: renvoie un nombre aléatoire entre 0 et 550rand site
: aller sur un site Web aléatoirerand img
: afficher une image aléatoirerand git
: visitez un projet GitHub aléatoirewatch ninja cat
: regardez une playlist intégrée de résultats vidéo YouTube pour le terme de recherche "chat ninja"link flint tigers
: obtenez un lien permanent vers la commande tigres de silex (qui recherche sur flickr des photos de tigres triées par "intérêt")fspell sometext
: écrivez du texte avec des images flickrascii sometext
: écrivez _sometext dans l'art asciiwhere gn
: affiche le mot-clé et les adresses de recherche par défaut pour la commande gn> am Alice in Wonderland
: accédez directement au premier résultat de recherche Google pour le terme "Alice au Pays des Merveilles" sur Amazon.com> wpde Turing complete
: lire l'article sur "Complétude de Turing" dans Wikipédia allemandcat engadget.com
: affiche une version texte uniquement de la page Web sur engadget.compop bbc gn yn bn
: affichez des onglets individuels avec BBC News, Google News, Yahoo News et Bing News, le tout en une seule commandepop gim yim bim -t horses
: de nouveaux onglets contextuels affichant les résultats d'une recherche d'images de chevaux sur Google, Yahoo et Bing Remarque : pour utiliser la commande pop
, vous devrez probablement configurer une exception dans le bloqueur de pop-up de votre navigateur pour yub.js.
Les moteurs de recherche par défaut sont stockés dans le fichier moteurs.js. Celui-ci contient une grande variété de raccourcis Web à usage général, de moteurs de recherche, de sources d'actualités et d'autres éléments intéressants qui démontrent les fonctionnalités de base de yub.js et devraient vous donner une idée des types de raccourcis qui pourraient être utiles pour vos propres besoins.
Les éléments que vous pouvez vous attendre à trouver dans moteurs.js sont : les principaux moteurs de recherche (Google, Yahoo, Bing... etc) et leurs différents produits associés (images, vidéos, cartes, actualités, météo, traduction automatique), Wikipédia et ses différents Des sites sœurs de Wikimédia (Wiktionary, Wikiquote, Wikinews... etc), une sélection d'organismes de presse majeurs (BBC, Deutsche Welle, France 24... etc), des fournisseurs de webmail majeurs (Gmail, Yahoo, Hotmail... etc), documentation pour plusieurs langages de script populaires (Bash, JS, PHP, Python, Ruby), et un tas d'autres sites et outils utiles (Down For Everyone Or Just Me ?, Whois, What Is My Ip ?... etc). Un guide plus détaillé peut être trouvé dans le wiki.
Un avantage intéressant de l'utilisation des raccourcis yub.js est que https est utilisé par défaut autant que possible (c'est-à-dire partout où il est pris en charge).
Tous les liens et raccourcis personnalisés sont placés dans mods.js pour plus de commodité. Ce fichier est entièrement facultatif, vous pouvez donc y ajouter et en retirer des éléments à votre guise. Vous n'avez pas besoin du fichier mods.js pour utiliser yub.js .
Le gigantesque fichier mods.js trouvé dans le référentiel est purement un exemple dans le but de démontrer diverses fonctionnalités de yub.js, telles que les recherches d'expressions régulières Unicode, ainsi que divers sites de recherche locaux et d'autres éléments intéressants que vous pouvez sélectionner. vos propres usages. Avec 106 Ko / 870+ entrées (au moment d'écrire ces lignes), cela démontre également que même avec une énorme liste de raccourcis personnalisés, yub.js fonctionne correctement sans aucune diminution notable de la vitesse.
Quelques exemples de choses qui ont été vidées sans discernement dans l'exemple de fichier mods.js :
ebin
pour eBay Inde ou amuk
pour Amazon UK)enes
pour le dictionnaire anglais-espagnol et esen
pour espagnol-anglais ; enko
et koen
pour le coréen, enfr
et fren
pour le français, etc.Une chose à noter est que certains sites vraiment intéressants ont été exclus de moteurs.js et même de mods.js afin de conserver les raccourcis par défaut aussi utiles que possible. Mais n’ayez crainte, vous pouvez toujours les ajouter à votre fichier mods.js ! Voici quelques éléments que vous pourriez envisager d'ajouter pour personnaliser mods.js :
cl
ou kj
pour l'emplacement souhaité et déposez-la dans mods.js.http://www.xe.com/ucc/convert.cgi?Amount=%s&From=[CURRENCY1]&To=[CURRENCY2]
(remplacez [CURRENCY1]
et [CURRENCY2]
par les codes à trois lettres des devises de votre choix ) La prise en charge des thèmes est disponible sous la forme de fichiers CSS personnalisés chargés via la commande skin
. Les skins ne sont essentiellement que des fichiers CSS (situés dans le dossier /css
) et peuvent être chargés en entrant la commande skin
et le nom du skin (il n'est pas nécessaire d'ajouter l'extension .css
).
Pour revenir au skin par défaut, tapez simplement skin default
. Pour supprimer tous les CSS, utilisez skin none
.
Les skins ne persistent actuellement pas d'une session Yub à l'autre (cela nécessiterait de définir un cookie, ce que nous avons réussi à éviter jusqu'à présent), mais vous pouvez modifier le lien/signet vers votre instance yub.js en quelque chose comme https://dohliam.github.io/yub/?skin%20terminal
pour toujours démarrer yub.js avec un skin particulier chargé. Alternativement, une fois que vous avez choisi un skin que vous souhaitez définir par défaut pour votre installation locale, renommez-le simplement en default.css
(vous pouvez renommer le fichier default.css
d'origine en old.css
ou similaire si vous ne souhaitez pas écraser il). Votre nouveau fichier sera chargé par défaut la prochaine fois que vous ouvrirez yub.js.
Pour créer un nouveau skin, copiez simplement l'un des fichiers de skin existants dans un nouveau fichier, par exemple mynewskin.css
et personnalisez-le à votre guise ! (Et n'oubliez pas d'ajouter vos skins personnalisés à la galerie de skins du wiki pour que d'autres puissent en profiter !)
Voici quelques captures d'écran des skins fournis avec yub.js :
défaut :
Terminal :
lac de montagne :
rayons :
horizon :
nocs :
Bien sûr, vous n'avez pas besoin d'installer yub.js pour commencer à l'utiliser. Pour des recherches ponctuelles, vous pouvez facilement utiliser la dernière version de yub.js hébergée ici sur GitHub. Tout est entièrement fait côté client, donc aucune de vos requêtes n'est envoyée sur le réseau.
Vous pouvez même utiliser l'API pour faire de la version GitHub la recherche par défaut de votre navigateur. Cependant, si vous utilisez l'API, toutes les commandes que vous saisissez seront visibles (par exemple, dans les journaux du serveur GitHub), vous préférerez donc peut-être configurer une version locale de yub.js et l'exécuter entièrement hors ligne (ou sur votre propre site). ).
Il existe un guide détaillé dans le wiki sur la façon de faire de yub.js votre moteur de recherche par défaut. Vous pouvez trouver des instructions étape par étape sur la façon de configurer yub.js pour Chrome/Chromium et Firefox (si vous utilisez un autre navigateur et que vous parvenez à installer yub.js, pensez à ajouter les étapes que vous avez suivies au guide) .
Une chose à considérer lors de l'installation de yub.js, si vous souhaitez le configurer comme recherche par mot clé ou l'utiliser comme moteur de recherche par défaut. L'avantage de le configurer par défaut est qu'il transforme essentiellement la barre d'URL de votre navigateur en une ligne de commande Web.
L'une des fonctionnalités les plus utiles de yub.js est son API facile à utiliser, qui fonctionne aussi bien sur un ordinateur portable que sur un serveur. Pointez simplement un lien, un signet ou une recherche par mot clé sur votre URL yub.js et ajoutez ?
plus vos commandes ou termes de recherche pour accéder directement au résultat.
Exemple 1 :
http://example.com/yub
http://example.com/yub?weather tokyo
Exemple 2 :
file:///home/user/yub/index.html?rand site
Vous pouvez intégrer yub.js sur n'importe quelle page Web et obtenir une ligne de commande Web fonctionnelle qui ressemble à ceci :
Copiez simplement le code suivant et incluez-le n'importe où sur la page :
<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="" />
Il existe probablement une manière plus élégante de procéder, mais après quelques tests, cela semble être la seule méthode qui fonctionne à la fois dans Firefox et Chrome. N'hésitez pas à expérimenter et à ouvrir une pull request si vous trouvez quelque chose de mieux !
De nombreuses fonctionnalités doivent encore être implémentées. Dans la mesure du possible, les nouvelles fonctionnalités planifiées et les fonctionnalités demandées sont suivies dans le suivi des problèmes. Si vous avez une idée, allez-y et ajoutez-la (ou lancez le projet et lancez une pull request) !
Ce serait génial de voir les fichiers mods.js personnalisés de chacun - les liens vers ceux-ci peuvent être partagés dans le wiki, bien qu'un référentiel séparé soit une autre possibilité dans le futur si la liste devient suffisamment grande. En attendant, faites-moi savoir si vous avez un fichier mods.js que vous aimeriez partager, en particulier s'il est organisé autour d'un thème spécifique (par exemple, des collections de sites de médias sociaux, des journaux suédois, des bases de données de recherche, des outils pour les historiens ou biologistes marins... etc).
Quelques fonctionnalités prévues et encore en chantier :
watch
, mais pour la musique)Si vous souhaitez contribuer à l'ajout de l'une de ces fonctionnalités (ou d'autres auxquelles je n'ai pas pensé), n'hésitez pas à soumettre une pull request.
Il y a longtemps (2005 pour être exact), un site Web révolutionnaire appelé YubNub a été dévoilé. Il permettait aux utilisateurs d'écrire leurs propres commandes et raccourcis pour divers services Web. L'idée d'accéder à des sites Web avec de courtes commandes de type bash était assez convaincante et réellement addictive, et a rapidement conduit à toutes sortes d'outils créatifs comme split et gimyim . Avec bien d’autres, j’ai créé un tas de commandes et j’ai beaucoup utilisé le site pendant un certain temps.
Cependant, il y avait une chose qui n'avait jamais vraiment de sens : pourquoi quelqu'un voudrait-il filtrer chaque recherche effectuée sur un site Web tiers ? Quoi qu'il en soit, dès que la fonctionnalité de recherche par mot-clé de Firefox est devenue largement connue, l'attrait de l'utilisation des raccourcis YubNub a commencé à s'estomper : il était plus facile de simplement configurer des mots-clés Firefox locaux pour les recherches les plus courantes, puis de les utiliser à la place. Ainsi, un fichier de signets contenant des dizaines d'anciennes commandes YubNub sous la forme de mots-clés de recherche a voyagé d'ordinateur en ordinateur, survivant pendant près d'une décennie avant qu'il ne devienne évident que ce système, lui aussi, était tout à fait trop maladroit, lent et peu pratique (par exemple, l'accès depuis un autre ordinateur était pénible, et maintenir la liste à jour sur tous les ordinateurs n'était pas non plus agréable). Pire encore, cette méthode manquait également une grande partie des fonctionnalités intéressantes de commande sans recherche offertes par YubNub.
Neuf ans plus tard, une visite sur YubNub a révélé que le service est toujours en cours d'exécution et, selon Wikipédia, il comptait même plus de 22 000 commandes fournies par les utilisateurs... en 2008. L'examen de la liste des commandes conduit à la conclusion décourageante que le Un service autrefois génial a été submergé par des milliers et des milliers d'entrées de spam, étouffant tout sentiment de communauté restant (la ligne de commande sociale ) qui était autrefois l'une des choses les plus attachantes du site.
Encore plus décevant, la plupart des commandes les plus intéressantes (par exemple, split , gimyim ) ne sont même plus fonctionnelles. Bien sûr, cela ne devrait pas vraiment être surprenant : l'architecture du Web a beaucoup changé depuis 2005. (Dans le cas du fractionnement, à la fois parce que le chargement de sites Web dans des frames n'est plus une chose normale et acceptable à faire, et aussi, comme l'a démontré gimyim , parce que Google et Yahoo -- ainsi que pratiquement tous les autres sites Web majeurs -- découragent désormais activement les tentatives de chargement de leur contenu à partir de sites externes). Déception.
Yub.js a commencé comme une tentative de récupérer certaines fonctionnalités de l'ancienne ligne de commande YubNub dans une application entièrement côté client que n'importe qui pouvait modifier ou ajuster en fonction de ses besoins, puis exécuter sur sa machine locale - ou supprimer dans le cloud ou sur un serveur privé et accédez-y de n'importe où.
Même si j'avais lancé cette idée sans rien faire pendant des années, elle est toujours restée une chimère, car je n'étais même pas sûr qu'il était possible de faire la plupart des choses que je voulais faire avec JavaScript. Finalement, j'ai créé une petite page HTML pour rediriger les requêtes vers quelques moteurs de recherche courants et "yubSearch" est né.
Cependant, il est vite devenu évident que les raccourcis de recherche ne suffisaient pas. Une simple commande permettant de rechercher dans la liste des raccourcis a été suivie d'autres commandes permettant d'imprimer la date et l'heure, d'afficher les descriptions de chaque raccourci et de trier le texte. Une calculatrice a été ajoutée, puis un chronomètre. À mesure que de nouvelles commandes évoluaient à partir de morceaux et d'extraits de code et de solutions de contournement provenant de partout, il devenait presque un défi de voir ce qui pouvait être bricolé uniquement avec du JavaScript pur. Il ne s’agissait plus seulement de raccourcis de recherche – et c’est ainsi que yubSearch est devenu yub.js.
Le développement s'est déroulé sur une base strictement gratifiante, de nouvelles fonctionnalités étant ajoutées lorsque et selon les besoins réels. Dès le début, yub.js est devenu quelque chose à part entière environnement de développement, et il existe des outils de référence intégrés pour JavaScript (ainsi que d'autres langages de script populaires), des linters et une syntaxe de création de commandes interne qui ont contribué à rendre le développement commun. -tâches liées beaucoup plus faciles.
À un moment donné, yub.js a pris sa propre vie. Bien que Turing ne soit pas exactement terminé, il est devenu dangereusement proche lorsqu'un correctif a été envisagé pour ajouter Eliza comme moteur pour répondre aux invites conversationnelles...
Yub.js continue d'être développé en JS pur sans utiliser de frameworks ou de bibliothèques externes. Bien que de nombreuses fonctions intéressantes puissent être ajoutées à l'aide de scripts côté serveur, de frameworks et d'autres éléments d'artillerie lourde de codage, les principaux objectifs ont toujours été la portabilité et la réactivité - vous pouvez déposer yub.js pratiquement n'importe où : un ordinateur de bureau, un serveur, un ChromeBook, voire un téléphone mobile, et cela fonctionnera à peu près exactement de la même manière. Cela s'est avéré être une bouée de sauvetage particulière sur les appareils mobiles où même les recherches simples (sans parler de tout ce qui est plus sophistiqué) peuvent parfois être incroyablement maladroites et frustrantes à utiliser - et où les sites Web mobiles cachent ou simplifient souvent les fonctionnalités de base comme la recherche.
Cependant, comme mentionné ci-dessus, le code a été littéralement bricolé à partir de pièces de rechange sans (jusqu'à très récemment) aucune pensée pour le rendre joli , et encore moins standardisé ou efficace . Néanmoins, tout avance à une vitesse incroyable, grâce à des tailles de fichiers relativement petites et aux avantages de fonctionner entièrement côté client.
Cela pourrait-il être encore plus rapide ? Absolument! Il reste sans aucun doute beaucoup de travail à faire pour optimiser et embellir la base de code existante (certes assez moche). L’utilisateur moyen remarquera-t-il ces améliorations ? C'est plus difficile à dire – après tout, la différence entre les temps de réponse instantanés et ceux qui sont deux fois moins rapides peut être assez difficile à discerner. La plupart des tâches individuelles que JavaScript gère à un moment donné sont incroyablement triviales (création de listes, redirection vers des URL), de sorte que la vitesse a rarement, voire jamais, été un problème lors de l'utilisation réelle.
D’un autre côté, si les choses qui sont plus lentes que nécessaire vous dérangent en principe , vous voudrez peut-être jeter un œil à la section suivante.
Amateurs de synchronisation cloud : Si vous vous demandez toujours à quoi sert tout cela lorsque vous pouvez simplement utiliser Firefox Sync ou vous connecter à Chrome avec votre compte Google, alors yub.js n'est peut-être pas pour vous.
Gestionnaires de favoris : les options de synchronisation dans le cloud pour presque tous les principaux navigateurs sont désormais omniprésentes, et si ce n'est pas l'un de ces services, vous pouvez toujours sauvegarder votre fichier de favoris sur un serveur quelque part et en finir avec lui. Si cela fonctionne pour vous, tant mieux, mais la frustration suscitée par ces approches est ce qui a conduit à yub.js en premier lieu.
Adeptes du code élégant : comme mentionné précédemment, le code est plutôt moche pour le moment -- pas volontairement, bien sûr, mais puisque chaque nouvelle fonctionnalité a été ajoutée en raison d'un besoin immédiatement pressant, de bidouilles et de toutes sortes de boucles inefficaces par force brute. abonder. Nous espérons que cela changera avec le temps à mesure que le code sera (lentement) refactorisé. Mais si un code laid vous offense, vous voudrez peut-être détourner les yeux.
Ceux qui détestent eval : Si vous pensez qu'eval est mauvais en toutes circonstances (même en analysant des expressions mathématiques aseptisées)... alors vous souhaiterez peut-être simplement supprimer la fonction de calculatrice de votre version de yub.js.
Chercheurs de bash.js : Yub.js n'est pas un portage de bash en JavaScript. Si vous vous demandez pourquoi yub.js n'offre pas de commande mount
, ou n'a pas de moyen de kill
des processus, ou modprobe
le pilote de votre souris... vous n'êtes probablement pas au bon endroit (vous recherchez peut-être unixkcd). D'un autre côté, si vous pouvez penser à une métaphore appropriée pour mount
, kill
ou modprobe
qui aurait du sens sur une ligne de commande Web , j'aimerais avoir de vos nouvelles ! ?
Un grand merci à Jon Aquino et à tous ceux qui ont contribué à YubNub à son apogée, pour la métaphore du Web en ligne de commande qui a été l'inspiration originale de yub.js.
Version réduite d'une seule page réalisée à l'aide d'Uglifier pour Ruby.
Table des matières générée par https://github.com/dohliam/tocdown.
Le dépôt aléatoire GitHub est basé sur RandomRepo de RyanDavison.
Fonds d'écran pour différents skins :
MIT -- voir le fichier LICENSE pour plus de détails.