Redo "内部リンクを相対リンクで生成する機能 with settings.USE_RELATIVE_LINK = True"#81
Conversation
|
改めまして
これ改めて考えるとrepoの肥大化を防ごうとした説ないですかね で、今となってはsubmoduleとして画像置けばいいのではないかって思います。 |
|
コメントありがとうございます。
そう。その説は私も頭を過ったのですが、実際のところ画像は一回追加したら基本的に変更されないし、それよりはキャッシュ防止の為の URL hash (cachebust) の方が断然サイズを食っている (例えば cpprefjp/cpprefjp.github.io@b06298b を見て下さい! (フリーズ注意。スマホでは開かない方が良いかも)) ので、画像サイズ程度は気にすることではないなぁと思いました。
うーん。今の話は生成結果に images のデータを含めるということであって、site などのリポジトリの中に画像を含めるという話ではない…と思うのですがそういうことではない? 別の言い方をすれば、現状ではユーザーがページを閲覧した時に https://cpprefjp.github.io/ のサイト外から画像を読み込む形になっているが、画像も https://cpprefjp.github.io/ の下に配置したいという話です。 追記 あぁ。なるほど。GitHub Pages で submodule を使うことができるんですね。。 でも今回はローカルで生成した時にも反映させたいので gh-pages 特有の効果には頼りたくないというのと、GitHub のリポジトリの内容が含まれる .zip のリンク (例 https://github.com/akinomyoga/cpprefjp-site/archive/refs/heads/gh-pages.zip) からダウンロードしたものを直接閲覧できたらいいな、というのもあるのでやはり cpprefjp.github.io に含めたいなぁと思っています。 |
f0106e8 to
0a5d099
Compare
|
だいぶ塩漬けにしてしまいました。これなんだっけと思い出すところから・・・
そもそもWebさーばーごとき、立ち上げればいいし、リモートのものをっていうならssh portforwardingないしはVSCode Serverのport forwardで間に合ってるのでうーんってなったんですが、
これ言われてなるほどなと思いました。 cpprefjp/site#917 でそういう需要は言われてましたもんね・・・。とかいたところで、そもそもこの話が cpprefjp/site#917 から来ていたことを思い出しました。 モチベーションについては理解しました。同時に
に対する懸念点もなくなりました。 |
|
@akinomyoga あと課題点ってなんでしたっけ |
特に個人的に残っている課題点はなくもう満足してます。 |
|
それでは自分は基本設計としては異論ないので実装を眺めることにします |
|
ありがとうございます |
|
@akinomyoga 説明欄のdiffのリンク先にキーワード自動リンクの差分が混ざっていたり、レビュー記録が残し辛いので各repoでPRを切っていただきたいです。 |
|
OK. これは diff のリンクが昔の commit との比較になっているからですね。元々完全に棄却されるかもしれないと思ってPRを無駄に開かないようにしてましたが、それぞれ PR にします |
|
手元にDockerがいなかったので適当なLinux VPS環境で実施しました。 この後デグレがないか、boostjpの動作確認など検査することになります。 確認した観点は以下です。他の検証観点があれば教えてください。
|
御指摘ありがとうございます。これは対応いたします。ただ、今忙しいので2週間程待っていただくことになるかもしれません。 |
@yumetodo 2週間ではなく2年間経ちましたが (すみません)… akinomyoga/cpprefjp-kunai@5fc7bab と akinomyoga/cpprefjp-crsearch@91b3583 で対応しました。 追記: もし手元に以前の環境を未だお持ちでしたら差分更新は "たぶん" ↓で行けます (駄目だったらすみません)。もし以前の環境がなければ $ cd /path/to/crsearch
$ npm pack
$ cd /path/to/site_generator/kunai
$ npm install <path/to/cresarch-3.0.23.tar.gz generated by the above npm pack>
$ cd /path/to/site_generator
$ ./kunai/docker.sh install
$ ./kunai/docker.sh dist
$ ./crsearch.json/docker.sh run
$ ./docker.sh run settings.cpprefjp_relative
$ ls cpprefjp/cpprefjp.relative追記: 一から構築する時は README に追記している追加手順 が必要でした。 |
|
テストする側で生成環境を整えるのも大変だと思いますので、生成結果を以下に添付します。Zip を使う場合はローカルで展開して
留意事項上で既に言及していますが今来た人のために。
|
|
ありがとうございます。いい感じですね。 |
|
取り敢えず一区切りはついています! ただし、 @yumetodo さんが今週末に見たいということを Twitter で言及されていました。 あと、この機能は機能として実装しただけで、既存の cpprefjp/site#917 にあるような物を提供するには、更に CI の生成を |
|
Google 検索の |
|
とくに不都合がなければ |
|
yumetodoさんの確認待ちです。 |
|
うーん、なぜか手元で動かすと↓になってしまう・・・。 |
|
わからないですが、直接 [site_generator]$ (cd cpprefjp/site; git log -m -r --name-only --format='---- %ai' > a.tmp); echo $?関係あるかわからないですが exit status 128 で検索したら以下のような記事がありました。 |
|
というわけでレビューに時間が割けず大変長らくおまたせしましたが、approveしました。関連MRも改めて目を通しましたが問題ないと思います(全部approveつけたはず)。 自分にはマージ権限がないので、権限お持ちの方にマージをお任せしたいです。 |
あれ。すみません。お待ち下さい。意図した通りに動いていませんね…。 |
|
意図としてはローカルで実行した場合には |
|
あれっ、自分の仕様理解が足りてなかったですか・・・(そもそも仕様どれというのはおいておいて) |
|
やっぱり初めにテストしていた時は動いていて、その後の変更で壊してました。 $ cd /path/to/crsearch
$ git checkout relative_link # ※手元に変更があればコミットしてタグか別ブランチでバックアップする
$ git fetch
$ git reset --hard <akinomyoga>/relative_link # ※<akinomyoga> は git@github.com:akinomyoga/cpprefjp-crsearch.git のリモート名
$ npm pack
$ cd /path/to/site_generator/kunai
$ npm install <path/to/cresarch-3.0.23.tar.gz generated by the above npm pack>
$ cd /path/to/site_generator
$ ./kunai/docker.sh install
$ ./kunai/docker.sh dist
$ ./crsearch.json/docker.sh run
$ ./docker.sh run settings.cpprefjp |
|
それじゃマージしていきますね |
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
内部リンクを相対リンクで生成する機能 (cpprefjp/site_generator#81)
|
全部マージしました。 |
|
ありがとうございます! |
|
デプロイ完了しました。問題なく動作してるようです! |
|
cpprefjpとboostjpのトップページ (index.md) に、HTMLのダウンロードリンクを記載しました |
|
ありがとうございます! こちらの手元でも .zip をダウンロードして確認しようとしたのですが、差分ビルドになっていてフルビルドになっていませんね、と思ったら新しい commit が入ったのに今気づきました。(Windows で見ようとすると Microsoft Defender が 100% になってしまってダウンロード+展開で 10 分もかかりました…今からまたダウンロード+展開して確認します。) |
|
.zip でダウンロードしたものはローカルで動いていないみたいです。自分で生成したものは動くのですが…。 |
|
動くようになりましたね!対応ありがとうございます! |
|
ありがとうございます! こちらの手元でも確認しました。 @yumetodo @faithandbrave 色々とありがとうございました! (そして長らく PR を放置してすみませんでした…) |




#80 で一旦 revert された #78 をやり直し。
cpprefjp/site#917 (comment) で言及されたものです。これも複数のリポジトリに変更があります。cpprefjp/site#977 のデモとして御覧頂いた https://akinomyoga.github.io/cpprefjp-site/ はこの PR の実証も兼ねていました (従来だとそもそも cpprefjp はサイトのトップレベル以外に配置できなかったことに注意)。取り敢えずのところ私的に一通り気になるところは対応しました。
背景
現状では
site_generatorで生成されるコンテンツはトップレベル/に置かれるという想定でリンクが生成されています。このためローカルで閲覧しようとすると毎回新しいWebサーバーを立ち上げる必要が出てきます (特にリモートのマシン上で変換しているとファイヤーウォールやSELinuxやプロキシなどの設定もしなければならずとても面倒)。内部のリンクを相対リンクにすればローカルで単にブラウザで開いて閲覧することができるので便利。また、単に設定済みの Web サーバーのサブディレクトリに配置すれば閲覧できるようになることを期待。未だ簡単なテストのみしかしていません。
変更 (2022-10-10 更新)
settings.USE_RELATIVE_LINK = True" #81 (このPR)現状の課題
対応済:
navbar.cssのbackground-image: url(.../cpprefjp-icon-v1.1-transparent.png)→ data スキームによる埋込に対応しました。cpprefjp/static/static/original-icons/cpprefjp-icon-v1.1.svgにSVGがあったので、それを data スキームで埋め込んでみました。
対応済: ローカルで閲覧しようとすると crsearch.json の読み込みで CORS (Cross-origin resource sharing) エラー
今は
file://の時に (JSON through XHR の代わりに) JSONP through<script>を使うようにしています。対応済:
crsearch.json/run.pyにハードコードされているbase_urlを何とかする→現状は取り敢えずハードコートされている
base_urlはデフォルトのbase_urlと思うことにして、それとは別に CRSearch の初期化オプションで base_url を動的に指定できるように拡張しています (d1eb6a47 @ crsearch, 852c5074 @ kunai)。対応済: raw.githubusercontent.com/cpprefjp/image にあるデータもサイトの中に含めるべきでは
これでインターネットに繋がっていない環境でもローカルの cpprefjp で図が見られます。
あと、images の中の図に対するリンクの指定も標準化しています。
対応済: manifest.json の位置指定が変
これは元々あった問題ですがリンク関係ということでこのPRに含めてしまっています b99a8c2