Yub.js は拡張可能なクライアント側 Web コマンドラインで、便利な検索エンジンやショートカット、再利用可能なコマンド、ストップウォッチやインライン YouTube ビデオなどのその他の隠れた機能が多数付属しています。また、柔軟な API を備えているため、どこからでも yub.js コマンドを呼び出すことができます。たとえば、コマンドに直接リンクしたり、ブラウザのアドレス バーからコマンドに直接アクセスしたりできます (yub.js を指す 1 つの検索ショートカットを設定するだけです)。 API、その他何百もの検索ショートカットを無料で入手できます)。
全体は最初から、すぐに機能するために必要なものがすべて含まれた単一ページのスタンドアロン HTML ドキュメントになるように設計されました。ローカルにインストールして、サーバーや Web ホスティングを必要とせずにコンピューターから直接実行できます。それ以来、開発は大幅に成長し、開発はより管理しやすい個別のファイルに分割されました。スタンドアロンの HTML ページ バージョンも引き続き利用できますが、現在は Ruby スクリプトによって自動的に生成され、縮小バージョンとソース バージョンがあります。ページをコンピュータに直接保存するか、サーバーにドロップするだけで準備完了です。
利用可能な検索エンジンのリストは完全にモジュール化されており、mods.js ファイル (json) を編集または置換することで、よくアクセスする Web サイトの独自のリストを追加できます。独自の新しいコマンドを作成するのは簡単です。create コマンドを使用create
だけです (新しいコマンドの名前をオプションの引数として使用します)。自由に独自の新しい関数を追加したり、 functions.js
編集して既存の関数を拡張したりできます。ああ、正規表現はデフォルトでどこでもサポートされています。
yub.js がどのように機能するかを理解する最良の方法は、早速コマンドを試してみることです。したがって、歴史や内部のような退屈な話に入る前に、すぐに試せる素晴らしいコマンドをいくつか見てみましょう。
list
またはls
と入力して、利用可能なすべての検索ショートカットのリストを取得します。http://commandlinefu.com/
またはftp://ftp.mozilla.org/
。!
直接サイトに移動するには、裸の URL の前に追加します。例: !smh.com.au を使用すると、 Sydney Morning Heraldに移動しますg [searchterm]
を使用します。あるいは、代わりにy
、 b
、 ix
、またはsp
使用することもできます。help
またはman
と入力すると、ヘルプが表示されます (オプションでヘルプが必要なコマンドを引数として含めることもできます。例: help shuffle
)calc 857*2^3
: 簡単な数式を解くcalc (25+2)==(28-1)
: 等価性のテストcalc ~32.56
: 丸め数値rand 550
: 0 ~ 550 の乱数を返します。rand site
: ランダムなウェブサイトに移動しますrand img
: ランダムな画像を表示しますrand git
: ランダムな GitHub プロジェクトにアクセスしますwatch ninja cat
: 「忍者猫」という検索語に対する YouTube ビデオ結果の埋め込みプレイリストを視聴します。link flint tigers
: コマンドflint Tigersへのパーマリンクを取得します (「面白さ」でソートされたトラの写真を flickr で検索します)fspell sometext
: flickr 画像を使用してsometext を書き出すascii sometext
: _sometext をアスキーアートで書き出しますwhere gn
: コマンドgn のキーワードとデフォルトの検索アドレスを表示します。> am Alice in Wonderland
: Amazon.com で「不思議の国のアリス」という用語の最初の Google 検索結果に直接移動します。> wpde Turing complete
:ドイツ語版ウィキペディアの「チューリング完全性」に関する記事を読むcat engadget.com
: engadget.com の Web ページのテキストのみのバージョンを表示します。pop bbc gn yn bn
: BBC ニュース、Google ニュース、Yahoo ニュース、Bing ニュースの個別のタブを 1 つのコマンドでポップアップ表示します。pop gim yim bim -t horses
: Google、Yahoo、Bing での馬の画像検索の結果を表示する新しいタブをポップアップします。注: pop
コマンドを使用するには、おそらくブラウザの yub.js のポップアップ ブロッカーで例外を設定する必要があります。
デフォルトの検索エンジンは、engines.js ファイルに保存されます。これには、yub.js の基本機能を示すさまざまな汎用 Web ショートカット、検索エンジン、ニュース ソース、その他の興味深いものが含まれており、自分のニーズにどのような種類のショートカットが役立つかを知ることができます。
Engines.js で見つかることが期待できるものは次のとおりです: 主要な検索エンジン (Google、Yahoo、Bing... など) とそのさまざまな関連製品 (画像、ビデオ、地図、ニュース、天気、機械翻訳)、Wikipedia およびそのさまざまな製品ウィキメディアの姉妹サイト (ウィクショナリー、ウィキクォート、ウィキニュースなど)、主要な報道機関 (BBC、ドイチェ ヴェレ、フランス 24 など)、主要なウェブメール プロバイダー (Gmail、Yahoo、Hotmail など)、いくつかの一般的なスクリプト言語 (Bash、JS、PHP、Python、Ruby) のドキュメントや、その他の便利なサイトやツール (Down ForEveryone Or Just Me?、Whois、What Is My Ip?... など) が含まれています。より詳細なガイドは wiki にあります。
yub.js ショートカットを使用する優れた利点は、可能な限り (つまり、https がサポートされている場合はどこでも) デフォルトで https が使用されることです。
便宜上、すべてのカスタム リンクとショートカットは mods.js に入れられます。このファイルは完全にオプションであるため、必要に応じてファイルに項目を追加したり、ファイルから削除したりできます。 yub.js を使用するために mods.js ファイルは必要ありません。
リポジトリ内にある巨大な mods.js ファイルは、unicode 正規表現検索やさまざまなローカル検索サイト、その他の興味深いものなど、yub.js のさまざまな機能をデモンストレーションするための純粋な例です。あなた自身の用途。また、106 Kb / 870+ エントリ (この記事の執筆時点) では、カスタム ショートカットの膨大なリストがあっても、yub.js が目立った速度低下なくスムーズに動作することも示しています。
サンプル mods.js ファイルに無差別にダンプされたものの例をいくつか示します。
ebin
、Amazon UK の場合はamuk
)enes
使用し、スペイン語-英語にはesen
使用します。韓国語の場合はenko
とkoen
、フランス語の場合はenfr
とfren
などです。注意すべき点の 1 つは、デフォルトのショートカットをできるだけ一般的に役立つものにするために、いくつかの本当に興味深いサイトが Engines.js や mods.js から除外されていることです。ただし、心配する必要はありません。これらを mods.js ファイルに追加することはできます。 mods.js をカスタマイズするために追加を検討できるものがいくつかあります。
cl
またはkj
コマンドを作成し、それを mods.js にドロップするだけです。http://www.xe.com/ucc/convert.cgi?Amount=%s&From=[CURRENCY1]&To=[CURRENCY2]
( [CURRENCY1]
と[CURRENCY2]
を選択した通貨の 3 文字コードに置き換えます) )テーマのサポートは、 skin
コマンドを通じてロードされたカスタム CSS ファイルの形式で利用できます。スキンは基本的に単なる css ファイル ( /css
フォルダーにあります) であり、 skin
コマンドとスキンの名前を入力することでロードできます (拡張子.css
を追加する必要はありません)。
デフォルトのスキンに戻るには、 skin default
と入力するだけです。すべての CSS を削除するには、 skin none
使用します。
現在、スキンは yub セッション間で保持されません (これには Cookie の設定が必要ですが、これまでのところ回避できています) が、yub.js インスタンスへのリンク/ブックマークをhttps://dohliam.github.io/yub/?skin%20terminal
のようなものに変更できます。 https://dohliam.github.io/yub/?skin%20terminal
と、常に特定のスキンがロードされた状態で yub.js が起動します。あるいは、ローカル インストールのデフォルトにしたいスキンを決めたら、その名前をdefault.css
に変更するだけです (上書きしたくない場合は、元のdefault.css
ファイルの名前をold.css
などに変更できます)それ)。次回 yub.js を開いたときに、新しいファイルがデフォルトとしてロードされます。
新しいスキンを作成するには、既存のスキン ファイルの 1 つを新しいファイル (例: mynewskin.css
にコピーし、思う存分カスタマイズするだけです。 (そして、他の人が楽しめるように、カスタム スキンを Wiki のスキン ギャラリーに追加することを忘れないでください。)
yub.js に付属するスキンのスクリーンショットをいくつか示します。
デフォルト:
ターミナル:
山の湖:
光線:
スカイライン:
ノクス:
もちろん、使い始めるために yub.js をインストールする必要はありません。 1 回限りの検索の場合は、GitHub でホストされている最新バージョンの yub.js を簡単に使用できます。すべては完全にクライアント側で行われるため、クエリはネットワーク経由で送信されません。
API を使用して、GitHub バージョンをブラウザのデフォルト検索にすることもできます。ただし、API を使用する場合、入力したコマンドはすべて (GitHub サーバーのログなどに) 表示されるため、ローカル バージョンの yub.js をセットアップし、完全にオフラインで (または自分のサイトで) 実行することをお勧めします。 )。
yub.js をデフォルトの検索エンジンにする方法については、Wiki に詳細なガイドがあります。 Chrome/Chromium および Firefox 用に yub.js をセットアップする方法については、段階的な手順が記載されています (別のブラウザーを使用していて yub.js をインストールできる場合は、実行した手順をガイドに追加することを検討してください)。 。
yub.js をインストールするときに、キーワード検索として設定するか、デフォルトの検索エンジンとして使用するかを考慮する必要があります。これをデフォルトとして設定する利点は、基本的にブラウザの URL バー自体が Web コマンドラインになることです。
yub.js の最も便利な機能の 1 つは、使いやすい API であり、ラップトップでもサーバー上と同様に機能します。 yub.js URL にリンク、ブックマーク、またはキーワード検索を指定し、 ?
を追加するだけです。コマンドまたは検索語を加えて、結果に直接移動します。
例 1:
http://example.com/yub
http://example.com/yub?weather tokyo
例 2:
file:///home/user/yub/index.html?rand site
yub.js を任意の Web ページに埋め込むと、次のような機能的な Web コマンドラインを取得できます。
次のコードをコピーして、ページ上の任意の場所に含めるだけです。
<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="" />
おそらくこれを行うためのより洗練された方法があるでしょうが、いくつかのテストの後、これが Firefox と Chrome の両方で機能する唯一の方法のようでした。自由に実験して、より良いものを見つけたらプルリクエストを開いてください。
まだ実装されていない機能がたくさんあります。計画された新機能と要求された機能は、可能な限り、問題トラッカーで追跡されています。アイデアがある場合は、どんどん追加してください (またはプロジェクトをフォークしてプル リクエストを作成します)。
みんなのカスタム mods.js ファイルを見ることができたら素晴らしいでしょう -- これらへのリンクは Wiki で共有できますが、リストが十分に大きくなった場合には、将来的には別のリポジトリが作成される可能性もあります。それまでの間、共有したい mods.js ファイルがある場合はお知らせください。特にそれが特定のテーマに沿って編成されている場合 (例: ソーシャル メディア サイト、スウェーデンの新聞、研究データベース、歴史家向けのツール、海洋生物学者...など)。
現在開発中の計画済みの機能の一部は次のとおりです。
watch
と同様ですが、音楽用)これらの機能 (または私が思いつかなかった他の機能) の追加に貢献したい場合は、お気軽にプル リクエストを送信してください。
昔 (正確には 2005 年)、ユーザーがさまざまな Web サービス用の独自のコマンドやショートカットを作成できるようにする、YubNub と呼ばれる画期的な Web サイトが発表されました。 bash のような短いコマンドを使用して Web サイトにアクセスするというアイデアは非常に説得力があり、実際に中毒性があり、すぐにSplitやgimyimなどのあらゆる種類のクリエイティブ ツールにつながりました。他の多くのコマンドと同様に、私は大量のコマンドを作成し、しばらくの間このサイトを頻繁に使用しました。
しかし、まったく理解できないことが 1 つありました。なぜ、(別の) サードパーティの Web サイトを通じて行ったすべての検索をフィルタリングしたいと思うのでしょうか?いずれにせよ、Firefox のキーワード検索機能が広く知られるようになると、YubNub ショートカットを使用する魅力は薄れ始めました。最も一般的な検索用にローカル Firefox キーワードを設定し、代わりにそれらを使用する方が簡単でした。そのため、検索キーワードの形式で以前の数十の YubNub コマンドを含むブックマーク ファイルがコンピュータからコンピュータへと移動し、このシステムもまったく不格好で遅く、実用的ではないことが明らかになるまで、ほぼ 10 年間存続しました (例:別のコンピューターを使用するのは面倒ですし、複数のコンピューター間でリストを更新し続けるのも快適ではありませんでした)。さらに悪いことに、この方法には、YubNub が提供する魅力的な非検索コマンド機能の多くが欠けていました。
9 年後、YubNub を訪問すると、このサービスはまだ実行されていることがわかり、Wikipedia によると、2008 年の時点で、ユーザーが提供したコマンドの数が 22,000 を超えていたとのことです。コマンドのリストを見ると、次のような残念な結論に至ります。かつて素晴らしいサービスが何千ものスパム エントリで埋め尽くされ、かつてこのサイトの最も魅力的なものの 1 つであったコミュニティの感覚 (ソーシャル コマンドライン) が失われてしまったのです。
さらに残念なことに、最も優れたコマンドの多く (例、 split 、 gimyim ) は機能しなくなっています。もちろん、これは実際にはそれほど驚くべきことではありません。Web のアーキテクチャは 2005 年以来大きく変わりました。(分割の場合は、どちらも、Web サイトをフレームに読み込むことが通常の許容できる動作ではなくなったためです)。また、 gimyimによって実証されているように、Google と Yahoo の両方が、他のほとんどすべての主要 Web サイトと同様に、外部サイトからコンテンツをロードする試みを積極的に阻止しているためです)。残念だ。
Yub.js は、古い YubNub コマンドラインの機能の一部を完全にクライアント側のアプリケーションに取り戻し、誰でもニーズに合わせて調整したり、ローカル マシンで実行したりできるようにする試みとして始まりました。クラウドまたはプライベートサーバーに保存し、どこからでもアクセスできます。
私はこのアイデアを何年もぼんやりと検討していましたが、やりたいことのほとんどが JavaScript で実行できるかどうかさえ確信がなかったため、常に夢物語のようなものでした。最終的に、クエリをいくつかの一般的な検索エンジンにリダイレクトする小さな HTML ページを作成し、「yubSearch」が誕生しました。
しかし、検索ショートカットだけでは不十分であることがすぐに明らかになりました。ショートカット リストを検索する簡単なコマンドの後に、日付と時刻を出力し、各ショートカットの説明を表示し、テキストを並べ替えるコマンドが続きました。電卓が追加され、次にストップウォッチが追加されました。コードの断片やあちこちからの回避策から新しいコマンドが進化するにつれ、純粋な JavaScript だけで何を組み合わせられるかを知るのはほとんど困難になりました。それはもはや単なる検索ショートカットではなくなり、yubSearch は yub.js になりました。
開発は、実際に必要なときに、必要に応じて新しい機能が追加されるなど、厳密に痒いところに手が届くベースで進められてきました。非常に早い段階から、yub.js は独自の開発環境のようなものになり、共通の開発を行うのに役立つ JavaScript (および他の一般的なスクリプト言語)、リンター、および内部コマンド作成構文用の参照ツールが組み込まれています。関連のタスクがはるかに簡単になります。
ある時点で、yub.js は独立しました。チューリングが完全に完成したわけではありませんが、会話プロンプトに応答するエンジンとしてイライザを追加するパッチが検討されたとき、危険なほど完成に近づきました...
Yub.js は、フレームワークや外部ライブラリを使用せずに、純粋な JS で開発され続けます。サーバーサイドのスクリプト、フレームワーク、その他の強力なコーディング砲を使用して、多くの興味深い機能を追加できますが、主な目標は常に移植性と応答性でした。yub.js は、デスクトップ、コンピュータなど、事実上どこにでもドロップできます。サーバー、ChromeBook、さらには携帯電話でも、ほぼ同じように動作します。これは、単純な検索 (より高度な検索は言うまでもなく) でさえ、時として信じられないほど不器用で操作がイライラするモバイル デバイスにおいて、また、モバイル Web サイトで検索などの基本機能が隠されたり簡素化されたりすることが多い場合に、特に救世主となることが証明されています。
しかし、上で述べたように、このコードは、標準化や効率化はおろか、見栄えを良くすることなど(ごく最近まで)まったく考えられずに、文字通りスペアパーツから組み合わされたものでした。それにもかかわらず、ファイル サイズが比較的小さいことと、完全にクライアント側で実行される利点のおかげで、すべてが驚くべき速度で処理されます。
もっと速くできるでしょうか?絶対に!既存の (確かに非常に醜い) コードベースを最適化し、美しくするために、多くの作業がまだ残っていることは間違いありません。平均的なユーザーはこれらの改善に気づくでしょうか?これを言うのはさらに難しいのですが、結局のところ、瞬間的な応答時間とその半分の速度の違いを識別するのは非常に難しいのです。 JavaScript が常に処理する個々のタスクのほとんどは信じられないほど簡単なもの (リストの作成、URL へのリダイレクト) であるため、実際の使用中に速度が問題になることはほとんどありません。
一方、原則として、必要以上に遅いことが気になる場合は、次のセクションを参照してください。
クラウド同期愛好家: Firefox Sync を使用したり、Google アカウントで Chrome にサインインしたりできるのに、これが一体何の意味があるのかまだ疑問に思っているのであれば、yub.js は向いていないかもしれません。
ブックマーク マネージャー: ほぼすべての主要なブラウザーのクラウド同期オプションは現在どこにでもあり、これらのサービスのいずれかではない場合でも、ブックマーク ファイルをサーバーのどこかにバックアップしておけば、いつでも使用できます。それがうまくいくのであれば、それは素晴らしいことですが、これらのアプローチに対する不満が、そもそも yub.js を生み出した原因です。
エレガントなコードにこだわる人: 前に述べたように、現時点ではコードは非常に醜いです。もちろん意図的ではありませんが、差し迫った必要性のために新しい機能が追加されるたびに、手抜きやあらゆる種類の強引な非効率なループが発生しています。たくさんある。コードが(ゆっくりと)リファクタリングされるにつれて、時間の経過とともに変化することが期待されます。ただし、醜いコードに不快感を感じる場合は、目をそらした方がよいでしょう。
eval を嫌う人: eval はいかなる状況であっても (サニタイズされた数式の解析であっても) 悪であると信じる場合は、お使いのバージョンの yub.js から電卓関数を削除するだけでよいでしょう。
bash.js の探究者: Yub.js は bash を JavaScript に移植したものではありません。なぜ yub.js がmount
コマンドを提供しないのか、プロセスをkill
方法がないのか、マウス ドライバーmodprobe
方法がないのか疑問に思っている場合は、おそらく間違った場所にいるでしょう (おそらく unixkcd を探しているのでしょう)。一方、 Webコマンドラインで意味をなす、 mount
、 kill
、またはmodprobe
の適切なメタファーを思いつくことができましたら、ぜひご意見をお待ちしています。 ?
Jon Aquino と、yub.js の元のインスピレーションとなったコマンドラインとしての Web メタファーについて、全盛期に YubNub に貢献したすべての方々に多大な感謝を申し上げます。
Uglifier for Ruby を使用して作成された、単一ページの縮小版。
https://github.com/dohliam/tocdown によって生成された目次。
ランダムな GitHub リポジトリは、RyanDavison による RandomRepo に基づいています。
さまざまなスキンの背景壁紙:
MIT -- 詳細については、LICENSE ファイルを参照してください。