Yub.js es una línea de comandos web extensible del lado del cliente que viene con muchos motores de búsqueda y atajos útiles, comandos reutilizables y muchas otras ventajas ocultas como cronómetros y videos de YouTube en línea. También tiene una API flexible para que pueda llamar a los comandos de yub.js desde cualquier lugar: por ejemplo, puede vincular directamente a los comandos o acceder a ellos directamente desde la barra de direcciones de su navegador (simplemente configure un acceso directo de búsqueda único que apunte a yub.js). API y obtenga cientos de otros atajos de búsqueda de forma gratuita).
Todo fue diseñado desde el principio para ser un documento HTML independiente de una sola página que contiene todo lo necesario para funcionar de inmediato. Puede instalarse localmente y ejecutarse directamente desde su computadora sin necesidad de un servidor o alojamiento web. Desde entonces ha crecido considerablemente y el desarrollo se ha dividido en archivos separados y más manejables. La versión de la página HTML independiente todavía está disponible, aunque ahora se genera automáticamente mediante un script Ruby y viene en versiones minimizadas y fuente. ¡Simplemente guarde la página directamente en su computadora o colóquela en su servidor y estará listo para comenzar!
La lista de motores de búsqueda disponibles es completamente modular: puede incluir su propia lista de sitios web visitados habitualmente editando o reemplazando el archivo mods.js (json). Crear sus propios comandos nuevos es fácil: simplemente use el comando create
(con el nombre del nuevo comando como argumento opcional). Siéntase libre de agregar sus propias funciones nuevas o ampliar las existentes editando functions.js
. Ah, y las expresiones regulares se admiten en todas partes de forma predeterminada.
La mejor manera de entender cómo funciona yub.js es comenzar y probar comandos. Entonces, antes de entrar en cosas aburridas como la historia o los aspectos internos, echemos un vistazo a algunos de los comandos interesantes que puedes probar de inmediato.
list
o ls
http://commandlinefu.com/
o ftp://ftp.mozilla.org/
!
delante de cualquier URL simple para ir directamente al sitio, por ejemplo: !smh.com.au para ir al Sydney Morning Heraldg [searchterm]
para una búsqueda simple en Google. O tal vez prefieras usar y
, b
, ix
o sp
en su lugarhelp
o man
(opcionalmente incluye el comando con el que desea ayuda como argumento, por ejemplo, help shuffle
)calc 857*2^3
: resuelve fórmulas matemáticas simplescalc (25+2)==(28-1)
: equivalencia de pruebacalc ~32.56
: números redondosrand 550
: devuelve un número aleatorio entre 0-550rand site
: ir a un sitio web aleatoriorand img
: muestra una imagen aleatoriarand git
: visita un proyecto aleatorio de GitHubwatch ninja cat
: vea una lista de reproducción incrustada de resultados de videos de YouTube para el término de búsqueda "ninja cat"link flint tigers
: obtenga un enlace permanente al comando flint tigres (que busca en flickr imágenes de tigres ordenadas por "interesante")fspell sometext
: escribe algún texto con imágenes de flickrascii sometext
: escribe _sometext en arte asciiwhere gn
: muestra la palabra clave y las direcciones de búsqueda predeterminadas para el comando gn> am Alice in Wonderland
: vaya directamente al primer resultado de búsqueda de Google para el término "Alicia en el país de las maravillas" en Amazon.com> wpde Turing complete
: lea el artículo sobre "La integridad de Turing" en la Wikipedia alemanacat engadget.com
: muestra una versión de solo texto de la página web en engadget.compop bbc gn yn bn
: pestañas emergentes individuales con BBC News, Google News, Yahoo News y Bing News, todo en un solo comandopop gim yim bim -t horses
: ventanas emergentes que muestran resultados de una búsqueda de imágenes de caballos en Google, Yahoo y Bing. Nota: para usar el comando pop
probablemente necesitarás configurar una excepción en el bloqueador de ventanas emergentes de tu navegador para yub.js.
Los motores de búsqueda predeterminados se almacenan en el archivo motores.js. Contiene una amplia variedad de atajos web de uso general, motores de búsqueda, fuentes de noticias y otras cosas interesantes que demuestran las características básicas de yub.js y deberían darle una idea de qué tipos de atajos podrían ser útiles para sus propias necesidades.
Lo que puede esperar encontrar en motores.js son: los principales motores de búsqueda (Google, Yahoo, Bing... etc.) y sus diversos productos asociados (imágenes, vídeos, mapas, noticias, clima, traducción automática), Wikipedia y sus diversos Sitios hermanos de Wikimedia (Wiktionary, Wikiquote, Wikinews... etc), una selección de las principales organizaciones de noticias (BBC, Deutsche Welle, France 24... etc), los principales proveedores de correo web (Gmail, Yahoo, Hotmail... etc), documentación para varios lenguajes de programación populares (Bash, JS, PHP, Python, Ruby) y muchos otros sitios y herramientas útiles (¿Abajo para todos o solo para mí?, Whois, ¿Cuál es mi IP?... etc.). Puede encontrar una guía más detallada en la wiki.
Una buena ventaja de utilizar atajos de yub.js es que https se utiliza de forma predeterminada siempre que sea posible (es decir, en todos los lugares donde sea compatible).
Todos los enlaces y accesos directos personalizados van en mods.js para mayor comodidad. Este archivo es completamente opcional, por lo que puede colocar y sacar elementos de él como desee. No necesita el archivo mods.js para usar yub.js.
El gigantesco archivo mods.js que se encuentra en el repositorio es puramente un ejemplo con el fin de demostrar varias características de yub.js, como búsquedas de expresiones regulares Unicode, así como varios sitios de búsqueda locales y otras cosas interesantes que puede seleccionar. tus propios usos. Con 106 Kb / 870+ entradas (al momento de escribir este artículo), también demuestra que incluso con una lista enorme de atajos personalizados, yub.js se ejecuta sin problemas sin ninguna disminución notable en la velocidad.
Algunos ejemplos de cosas que se han volcado indiscriminadamente en el archivo mods.js de muestra:
ebin
para eBay India o amuk
para Amazon Reino Unido)enes
para el diccionario inglés-español y esen
para español-inglés; enko
y koen
para coreano, enfr
y fren
para francés, etc.Una cosa a tener en cuenta es que algunos sitios realmente interesantes se han dejado fuera de motores.js e incluso mods.js para mantener los accesos directos predeterminados lo más útiles posible en general . Pero no temas, ¡aún puedes agregarlos a tu archivo mods.js! Aquí hay algunas cosas que podrías considerar agregar para personalizar mods.js:
cl
o kj
para la ubicación deseada y suéltelo en mods.js.http://www.xe.com/ucc/convert.cgi?Amount=%s&From=[CURRENCY1]&To=[CURRENCY2]
(reemplace [CURRENCY1]
y [CURRENCY2]
con los códigos de tres letras para las monedas de su elección ) La compatibilidad con temas está disponible en forma de archivos CSS personalizados cargados mediante el comando skin
. Los skins son básicamente archivos css (ubicados en la carpeta /css
) y se pueden cargar ingresando el comando skin
y el nombre del skin (no es necesario agregar la extensión .css
).
Para volver a la máscara predeterminada, simplemente escriba skin default
. Para eliminar todo CSS, use skin none
.
Actualmente, los skins no persisten en las sesiones de yub (esto requeriría configurar una cookie, lo cual hemos logrado evitar hasta ahora), pero puedes cambiar el enlace/marcador de tu instancia de yub.js a algo como https://dohliam.github.io/yub/?skin%20terminal
para iniciar siempre yub.js con un skin particular cargado. Alternativamente, una vez que decida qué máscara desea establecer como predeterminada para su instalación local, simplemente cámbiele el nombre a default.css
(puede cambiar el nombre del archivo default.css
original a old.css
o similar si no desea sobrescribir él). Su nuevo archivo se cargará de forma predeterminada la próxima vez que abra yub.js.
Para crear una nueva máscara, simplemente copie uno de los archivos de máscara existentes en un archivo nuevo, por ejemplo, mynewskin.css
¡y personalícelo a su gusto! (¡Y no olvides agregar tus máscaras personalizadas a la galería de máscaras en la wiki para que otros puedan disfrutarlas!)
Aquí hay algunas capturas de pantalla de las máscaras que vienen con yub.js:
por defecto :
Terminal :
lago de montaña :
rayos :
horizonte :
nocs :
Por supuesto, no necesita instalar yub.js para comenzar a usarlo. Para búsquedas únicas, puede utilizar fácilmente la última versión de yub.js alojada aquí en GitHub. Todo se hace completamente del lado del cliente, por lo que ninguna de sus consultas se envía a través de la red.
Incluso puedes usar la API para hacer que la versión de GitHub sea la búsqueda predeterminada para tu navegador. Sin embargo, si usa la API, todos los comandos que ingrese serán visibles (por ejemplo, en los registros del servidor GitHub), por lo que es posible que prefiera configurar una versión local de yub.js y ejecutarla completamente sin conexión (o en su propio sitio). ).
Hay una guía detallada en la wiki sobre cómo hacer que yub.js sea su motor de búsqueda predeterminado. Puede encontrar instrucciones paso a paso sobre cómo configurar yub.js para Chrome/Chromium y Firefox (si usa un navegador diferente y puede instalar yub.js, considere agregar los pasos que siguió a la guía) .
Una cosa a considerar al instalar yub.js, ya sea que desee configurarlo como búsqueda por palabra clave o utilizarlo como motor de búsqueda predeterminado. El beneficio de configurarlo como predeterminado es que básicamente convierte la barra de URL de su navegador en una línea de comandos web.
Una de las características más útiles de yub.js es su API fácil de usar, que funciona tan bien en una computadora portátil como en un servidor. Simplemente indique un enlace, marcador o búsqueda de palabras clave en su URL de yub.js y agregue ?
además de sus comandos o términos de búsqueda para ir directamente al resultado.
Ejemplo 1:
http://example.com/yub
http://example.com/yub?weather tokyo
Ejemplo 2:
file:///home/user/yub/index.html?rand site
Puede incrustar yub.js en cualquier página web y obtener una línea de comandos web funcional similar a esta:
Simplemente copie el siguiente código e inclúyalo en cualquier lugar de la página:
<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="" />
Probablemente haya una forma más elegante de hacer esto, pero después de algunas pruebas, esta parecía ser la única forma que funciona tanto en Firefox como en Chrome. ¡Siéntete libre de experimentar y abrir una solicitud de extracción si encuentras algo mejor!
Hay toneladas de funciones que aún no se han implementado. En la medida de lo posible, las nuevas funciones planificadas y las características solicitadas se rastrean en el rastreador de problemas. Si tiene una idea, ¡adelante y agréguela (o bifurque el proyecto y realice una solicitud de extracción)!
Sería fantástico ver los archivos mods.js personalizados de todos; los enlaces a estos se pueden compartir en la wiki, aunque un repositorio separado es otra posibilidad en el futuro si la lista crece lo suficiente. Mientras tanto, avíseme si tiene un archivo mods.js que le gustaría compartir, especialmente si está organizado en torno a un tema específico (por ejemplo, colecciones de sitios de redes sociales, periódicos suecos, bases de datos de investigación, herramientas para historiadores o biólogos marinos...etc).
Algunas características planificadas que aún están en proceso:
watch
, pero para música)Si desea contribuir a agregar alguna de estas funciones (u otras en las que no he pensado), no dude en enviar una solicitud de extracción.
Hace mucho tiempo (2005 para ser exactos), se presentó un sitio web innovador llamado YubNub que permitía a los usuarios escribir sus propios comandos y accesos directos para varios servicios web. La idea de acceder a sitios web con comandos cortos tipo bash era bastante convincente y realmente adictiva, y rápidamente condujo a todo tipo de herramientas creativas como split y gimyim . Junto con muchos otros, creé un montón de comandos y usé bastante el sitio durante un tiempo.
Sin embargo, hubo una cosa que nunca tuvo sentido: ¿por qué querría alguien filtrar cada búsqueda que realiza a través de un sitio web de (otro) tercero? En cualquier caso, tan pronto como la funcionalidad de búsqueda de palabras clave de Firefox se hizo ampliamente conocida, el atractivo de usar atajos de YubNub comenzó a desvanecerse: era más fácil configurar palabras clave locales de Firefox para las búsquedas más comunes y luego usarlas en su lugar. Así, un archivo de marcadores que contenía docenas de comandos antiguos de YubNub en forma de palabras clave de búsqueda viajó de computadora en computadora, sobreviviendo durante casi una década antes de que se hiciera obvio que este sistema también era demasiado torpe, lento y poco práctico (por ejemplo, acceso desde otra computadora era una molestia y mantener la lista actualizada en todas las computadoras tampoco era agradable). Lo que era peor, este método también omitía gran parte de la interesante funcionalidad de comandos no relacionados con la búsqueda que ofrecía YubNub.
Nueve años después, una visita a YubNub reveló que el servicio todavía está funcionando y, según Wikipedia, incluso contaba con más de 22.000 comandos aportados por los usuarios... en 2008. Mirar la lista de comandos lleva a la desalentadora conclusión de que el El servicio que alguna vez fue impresionante se ha visto inundado por miles y miles de entradas de spam, sofocando cualquier sentido restante de comunidad (la línea de comando social ) que alguna vez fue una de las cosas más atractivas del sitio.
Aún más decepcionante es que muchos de los comandos más interesantes (por ejemplo, split , gimyim ) ya ni siquiera funcionan. Por supuesto, esto no debería ser tan sorprendente: la arquitectura de la web ha cambiado mucho desde 2005. (En el caso de la división, tanto porque cargar sitios web en marcos ha dejado de ser algo normal y aceptable, como porque Además, como lo demuestra gimyim , porque tanto Google como Yahoo (así como prácticamente todos los demás sitios web importantes) ahora desaconsejan activamente los intentos de cargar su contenido desde sitios externos). Gorrón.
Yub.js comenzó como un intento de recuperar algunas de las funcionalidades de la antigua línea de comandos YubNub en una aplicación completamente del lado del cliente que cualquiera podía modificar o ajustar según sus necesidades y luego ejecutarla en su máquina local, o eliminarla. en la nube o en un servidor privado y accede desde cualquier lugar.
Aunque había estado dándole vueltas a esta idea durante años, siempre siguió siendo una especie de quimera, ya que ni siquiera estaba seguro de si era posible hacer la mayoría de las cosas que quería hacer con JavaScript. Finalmente, creé una pequeña página html para redirigir consultas a algunos motores de búsqueda comunes y nació "yubSearch".
Sin embargo, pronto quedó claro que los atajos de búsqueda por sí solos no eran suficientes. Un comando simple para buscar en la lista de accesos directos fue seguido por otros comandos para imprimir la fecha y la hora, mostrar descripciones de cada acceso directo y ordenar texto. Se añadió una calculadora y luego un cronómetro. A medida que evolucionaron nuevos comandos a partir de fragmentos de código y soluciones alternativas de todas partes, se convirtió casi en un desafío ver qué se podía improvisar solo con JavaScript puro. Ya no se trataba solo de atajos de búsqueda y, por lo tanto, yubSearch se convirtió en yub.js.
El desarrollo se ha realizado estrictamente de forma gradual, y se han añadido nuevas funciones cuando y como realmente se necesitaban. Desde muy temprano, yub.js se convirtió en algo así como su propio entorno de desarrollo, y hay herramientas de referencia integradas para JavaScript (así como otros lenguajes de programación populares), linters y una sintaxis de creación de comandos interna que han ayudado a hacer un desarrollo común. -Tareas relacionadas mucho más fáciles.
En algún momento, yub.js cobró vida propia. Si bien Turing no está exactamente completo, estuvo peligrosamente cerca cuando se contempló un parche para agregar a Eliza como motor para responder a indicaciones de conversación...
Yub.js continúa desarrollándose en JS puro sin el uso de frameworks o bibliotecas externas. Aunque se podrían agregar muchas funciones interesantes utilizando secuencias de comandos del lado del servidor, marcos y otras piezas de artillería de codificación pesada, los objetivos principales siempre han sido la portabilidad y la capacidad de respuesta: puede colocar yub.js prácticamente en cualquier lugar: una computadora de escritorio, un servidor, un ChromeBook, incluso un teléfono móvil, y funcionará prácticamente de la misma manera. Esto ha demostrado ser un salvavidas particular en dispositivos móviles donde incluso las búsquedas simples (y mucho menos algo más sofisticado) a veces pueden ser increíblemente torpes y frustrantes, y cuando los sitios web móviles a menudo ocultan o simplifican funciones básicas como la búsqueda.
Sin embargo, como se mencionó anteriormente, el código ha sido literalmente improvisado con piezas de repuesto sin (hasta hace muy poco) pensar en hacerlo lucir bonito , y mucho menos estandarizado o eficiente . Sin embargo, todo avanza a una velocidad increíble, gracias a los tamaños de archivos relativamente pequeños y los beneficios de ejecutarse completamente en el lado del cliente.
¿Podría ser incluso más rápido? ¡Absolutamente! Sin duda, queda mucho trabajo por hacer para optimizar y embellecer el código base existente (ciertamente bastante feo). ¿El usuario medio notará estas mejoras? Eso es más difícil de decir; después de todo, la diferencia entre los tiempos de respuesta instantáneos y aquellos que tienen la mitad de esa velocidad puede ser bastante difícil de discernir. La mayoría de las tareas individuales que JavaScript maneja en un momento dado son increíblemente triviales (hacer listas, redirigir a URL), por lo que la velocidad rara vez, o nunca, ha sido una preocupación durante el uso real.
Por otro lado, si las cosas que van más lentas de lo necesario te molestan por principio , quizás quieras echar un vistazo a la siguiente sección.
Aficionados a la sincronización en la nube : si todavía te preguntas cuál es el sentido de todo esto cuando puedes usar Firefox Sync o iniciar sesión en Chrome con tu cuenta de Google, entonces yub.js puede no ser para ti.
Administradores de marcadores : las opciones de sincronización en la nube para casi todos los principales navegadores ahora son omnipresentes y, si no es uno de esos servicios, siempre puedes hacer una copia de seguridad de tu archivo de marcadores en un servidor en algún lugar y terminar con ello. Si eso funciona para usted, genial, pero la frustración con estos enfoques es lo que llevó a yub.js en primer lugar.
Riguroso con el código elegante : Como se mencionó anteriormente, el código es bastante feo en este momento, no a propósito, por supuesto, sino porque cada característica nueva se agregó debido a alguna necesidad urgente inmediata, torpezas y todo tipo de bucles ineficientes de fuerza bruta. abundar. Es de esperar que eso cambie con el tiempo a medida que el código se refactorice (lentamente). Pero si el código feo te ofende, quizás quieras desviar la mirada.
Odiadores de eval : si cree que eval es malo bajo cualquier circunstancia (incluso analizando expresiones matemáticas desinfectadas)... entonces es posible que desee simplemente eliminar la función de calculadora de su versión de yub.js.
Buscadores de bash.js : Yub.js no es una adaptación de bash a JavaScript. Si se pregunta por qué yub.js no ofrece un comando mount
, o no tiene una forma de kill
procesos, o modprobe
el controlador de su mouse... probablemente esté en el lugar equivocado (tal vez esté buscando unixkcd). Por otro lado, si se te ocurre una metáfora apropiada para mount
, kill
o modprobe
que tenga sentido en una línea de comandos web , ¡me encantaría saber de ti! ?
Muchas gracias a Jon Aquino y a todos los que contribuyeron a YubNub en su apogeo, por la metáfora de la web como línea de comandos que fue la inspiración original para yub.js.
Versión minimizada de una sola página realizada con Uglifier para Ruby.
Tabla de contenidos generada por https://github.com/dohliam/tocdown.
El repositorio aleatorio de GitHub se basa en RandomRepo de RyanDavison.
Fondos de pantalla de fondo para varias máscaras:
MIT: consulte el archivo de LICENCIA para obtener más detalles.