これは、ニーモニック URL データベース、リダイレクター、および検索エンジンです。
このツールの主な機能は、アクセスしていたキーワードに関連付けられた URL にユーザーを直接 HTTP リダイレクトすることです。 URL は覚えたり入力したりするのが難しくなりますが、名前を簡潔にすると使いやすくなります。リンクには名前が付けられるかタグが付けられ、キーワードで識別されるリストに配置されます。これらのキーワードは、ユーザーが思いつく、探しているリストまたはリンクを説明するよく知られた直感的な文字列です。
2 番目の機能は、特定の主題への最新のリンクのリストを厳選する場所を提供することです。
ユーザーが火星に関する情報を検索したい場合は、ブラウザの URL/検索バーにgo2 mars
と入力します。これにより、地球に関するリンクまたはリンクのリストに直接リダイレクトされる可能性があります。このリストには火星に関する複数のリンクや記事が存在すると想像してください。ユーザーは 1 回の検索で衛星フォボスに直接アクセスし、どうすれば衛星フォボスに関する詳細情報を入手できるでしょうか?リストの管理者は、リスト内のリンクの 1 つにphobos
のタグを付けることができます。ユーザーは URL/検索バーにgo2 mars/phobos
と入力できるようになりました。そのリンクは現在、この火星の衛星に関する詳細情報を探している人にとっての正規のリダイレクトになっています。
go2 リダイレクターは、コミュニティ主導のデータの追加、削除、キュレーションの Wikipedia に似たモデルに従います。ユーザーがキーワードの意味について集合的に同意し、そのキーワードのリストがどのようなものであるべきかについて同意した場合、その結果、そのグループはいつでもこれらの記憶用キーワードを最も正確に理解することができます。リダイレクターを使用する人が増えれば増えるほど、最新の状態に保つ編集者も増えます。
アプリケーションをセットアップするには、初期構成と空のリンク データベースを作成する必要があります。これを行うには、コマンド ラインからインストール スクリプトを実行します。
./install.sh
これにより、 godb.json
ファイルがプロジェクトのルート ディレクトリのディスクに配置され、同じディレクトリに汎用構成ファイルgo2config.json
が書き込まれます。開始するには構成ファイルのデフォルト設定で十分ですが、利用可能な設定を理解するには構成ファイルをよく見てください。
リダイレクタは、セットアップの 2 番目で最後の手順としてコンパイルする必要があります。プロジェクトのルートで単純にgo build
だけで、実行可能ファイルが生成されます。引数を指定せずにその実行可能ファイルを実行すると、リダイレクターが起動し、一時ポートでリッスンすることが確認されます。
ここには、バイナリを構築して実行可能なコンテナを提供するプロセスを容易にするために、複数段階のDockerfile
が含まれています。最初の構築コンテナは巨大なので、より小さな alpine linux ベースのランタイム コンテナを優先して破棄されます。コンテナの構築と実行には、構築、リンク データベースの永続化、コンテナの実行という 3 つの要素があります。
コンテナーのビルドはdocker build -t go2redirector .
ビルド環境をチェックアウト/デバッグするためにビルド コンテナ自体を検査したい場合は、ビルド コンテナを名前でターゲットにすることでアクセスできます。
docker build --target builder -t go2build .
godb.json
のコンテナー外の永続スペース用のボリュームをローカルに作成できます。これにより、コンテナは実行するたびに同じ godb を使用できるようになります。コンテナーの実行間でデータベースを保存したくない場合は、この手順を省略してください。
docker volume create go2
使用してローカル ストレージ ボリュームを作成します。docker volume inspect go2
次に、ボリュームを使用してコンテナーを実行します。これにより、コンテナーがデーモン モードで実行され、停止時にコンテナーが削除されます。
docker run --rm -p 8080:8080 -d -v go2:/home/gouser/data go2redirector
このようなボリュームは使用できないことに注意してください。別の既存のディレクトリへのバインド マウントも同様に機能します。
リダイレクターは、go2config.json のデフォルトの127.0.0.1
(デフォルト) ではなく、コンテナー内の0.0.0.0:8080
で listen します。
コンテナーからのログを確認するには、ログはすべて stdout にリダイレクトされるため、 docker logs <name of running container>
を実行できます。
go2redirector は現在localhost:8080
で実行されているはずです。これを直接実行することも、作業を簡単にするために、 go2
のような新しい検索キーワードを使用してブラウザを設定することもできます。
キーワード検索エンジンを有効にするための設定手順は、ブラウザごとに若干異なります。
localhost:8080
(またはリダイレクターを実行する任意の URL) を開きます。go2
のキーワードを設定しますgo2
使用します。http://localhost:8080/?keyword=%s
と入力します。これで、ブラウザを使用して、検索エンジンのように go2redirector にアクセスできるようになります。キーワードをgo2
に設定し、検索ボックスを使用します。
go2 wiki/es
ブラウザがスペイン語版の Wikipedia にリダイレクトされれば、準備は完了です。
.
キーワードの接頭辞。/
の間の要素です。たとえば、 go2 planets/mars/weather
は、フィールド「planets」(キーワード)、「mars」(タグ)、およびパラメータ「weather」が含まれます。リンク リストのキュレーションは、直感的なキーワードを選択することから始まります。これは、人々がこのリンクのリストを記憶する名前です。キーワードとそれがどの程度一般的であるかを考えてください。他の潜在的なリストにも適用されますか?その場合は、より具体的なキーワード名を考え出すか、2 つのリストを組み合わせてください。
タグは、リンクのリスト内のリンクの名前です。タグは、ユーザーが go2 リダイレクトで入力する 2 番目の (オプションの) フィールドです。火星の衛星のリストがある場合は、1 つを「フォボス」でタグ付けし、もう 1 つを「デイモス」でタグ付けすると、その月を説明するリンクに直接移動するgo2 mars/phobos
のようなリダイレクトが行われます。タグはオプションです。ユーザーが 2 番目のフィールドを指定した場合、リダイレクターはその名前でリスト内のタグを検索しようとします。見つからなかった場合、2 番目のフィールドはリンクの置換パラメータとして扱われます。
他のキーワードの下にすでにリンクがある URL を使用してリンクが追加される場合、別のタイトルや異なるキーワードの関連付けがある可能性があるため、完全に新しいリンクを作成できます。重複したリンクを追加しようとすると、ドットページを見るときにそのリンクをすでに使用している他のキーワードが表示されます。
インデックス ページの左上にある入力フィールドは、アプリケーションのメイン エントリ ポイントです。これは、ユーザーがキーワード/タグ/パラメータの組み合わせを入力して、リダイレクトにアクセスしたり、新しいリダイレクトを作成したりできるフィールドです。
リンクには、リンク データベース内でのリンクの有効期間を指定する日付セットを含めることができます。デフォルトでは、リンクは期限切れになりません。ユーザーはさまざまなリンクの有効期間を入力できます。選択されたすべてのリンクの有効期間の中で最もユニークなものは、「読み取り後の書き込み」です。これはまさにその名前の通りです。 1 人がリンクをリダイレクトとして使用した後、アプリケーションはそのリンクを破棄します。これは、一度だけ使用または共有するリンクに便利です。リンクが永久ではない場合は、適切な存続期間を選択する必要があります。これはアプリケーション内でのキュレーションの受動的な形式であり、有効期限が近づくとリンクを削除します。
(リストの動作に関係なく) キーワードのリスト ページに強制的にアクセスするには、そのキーワードの先頭にピリオドを付けるか、末尾にスラッシュを付けるだけです。これにより、リンクを変更したりタグ付けしたりできるリスト ページがレンダリングされます。
リスト内のリンクには、ユーザーが指定した単一の位置パラメータの置換文字列として機能するために、URL 内の任意の場所に{1}
を配置できます。現時点では 1 つのパラメータのみをサポートしていますが、2 つ以上のパラメータにやむを得ない理由がある場合は変更される可能性があります。リダイレクタの以前のバージョンでは、置換を含むこのタイプのリンクは「特殊」リンクと呼ばれ、置換文字列として{*}
を使用していました。たとえば、キーワードgo2 planets
は、さまざまな惑星名がタグ付けされたリンクがいくつか含まれている場合があります。各リンク URL には置換文字列 {1} を含めることができます。
go2 planets/mars/weather
というユーザー入力の場合、 go2redirector はplanets
キーワードを見つけて、 mars
でタグ付けされたリンクを検索し、その URL www.nasa.gov/planets/mars/{1}.php
を取得して、 www.nasa.gov/planets/mars/weather.php
に置き換えます。最終的に、ユーザーはその URL にリダイレクトされます。
私の初心者レベルの Golang の見栄えを良くするために、できる限りの助けが必要です。追加したい新機能がありますが、それを行うには人員が足りません。貢献したい場合は、リポジトリをフォークして PR を送信してください。機能拡張のリクエストやバグがある場合は、go2redirector プロジェクトの問題トラッカーに提出してください。
詳細については、 CONTRIBUTING.md
参照してください。
オリジナルのリダイレクター f5go は、Bryce Bockman と Treebird(tm) の支援を受けて、Saul Pwanson によって設計されました。