www.mtkn.jp

Manuscripts for my personal webpage.
git clone https://git.mtkn.jp/www.mtkn.jp
Log | Files | Refs | LICENSE

commit 9c7d3e98a08e12b465084af9601bdfa0854a5f25
parent e3f478091ade741bcbb2680c270d3cb74c21d910
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 28 Oct 2024 20:52:04 +0900

update

Diffstat:
Mman/draft/9p.html | 126++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mpub/draft/9p.html | 97++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mpub/draft/vi.html | 1+
Mpub/rss.xml | 4++--
4 files changed, 224 insertions(+), 4 deletions(-)

diff --git a/man/draft/9p.html b/man/draft/9p.html @@ -91,6 +91,130 @@ Tメッセージにはファイルにアクセスするための色々なもの <p> 次の<code>Tattach</code>で、クライアントがサーバーにルートディレクトリの\ <code>fid</code>を要求する。\ -<code>afid</code>以降は認証用の情報である。\ +<code>afid</code>以降は認証用の情報である(後述)。\ +<code>fid</code>はコネクションにおいてファイルと紐付けられる整数で、\ +Unixにおけるファイルディスクリプタのようなものである。\ +ファイルの読み書きはこの<code>fid</code>を使って行われる。\ +サーバーからの<code>Rattach</code>にはルートディレクトリの\ +<code>qid</code>が含まれる。\ +これはサーバー上でファイルを一意に識別するもので、\ +Unixにおけるinodeに相当するものである。\ +以上でサーバーに繋いでセッションを確立できた。\ +</p> +<p> +次に<code>Twalk</code>で目的のファイル(<code>hello</code>)まで\ +ファイルツリーを辿る。\ +ここでは起点として先程得られたルートディレクトリ(<code>fid = 1</code>)\ +を起点として、このディレクトリ内の<code>hello</code>ファイルを要求して\ +<code>fid = 2</code>を割り当てようとしている。\ +サーバーはルートディレクトリ内に要求されたファイルが見付かったので、\ +そのファイルの<code>qid</code>を返す。\ +</p> +<p> +目的のファイルに<code>fid</code>が割り当てられたので、\ +<code>Tstat</code>でこのファイルの属性を要求している。\ +おそらくファイルのパーミッションを調べるためである。\ +</p> +<p> +次に<code>Topen</code>を使ってこのファイルを開き、\ +<code>Tread</code>を使って内容を読む。\ +二回目の<code>Tread</code>に対して0バイトのデータが返ってきたので、\ +ファイルはこれで終りである。\ +</p> +<p> +最後に、必要なくなった<code>fid</code>は<code>Tclunk</code>で捨てる。\ +</p> + +<h3>認証</h3> + +<h3>List of all Message Types</h3> +<table> +<tr> +<th>Tメッセージ</th> +<th>Rメッセージ</th> +<th>説明</th> +</tr> +<tr> +<td>Tversion</td> +<td>Rversion</td> +<td>バージョンの交渉</td> +</tr> +<tr> +<td>Tauth</td> +<td>Rauth</td> +<td>認証ファイルの取得</td> +</tr> +<tr> +<td></td> +<td>Rerror</td> +<td>エラー(Rメッセージのみ)</td> +</tr> +<tr> +<td>Tflush</td> +<td>Rflush</td> +<td>処理中のリクエストをキャンセル</td> +</tr> +<tr> +<td>Tattach</td> +<td>Rattach</td> +<td>ルートディレクトリの取得</td> +</tr> +<tr> +<td>Twalk</td> +<td>Rwalk</td> +<td>ファイルツリーを辿る</td> +</tr> +<tr> +<td>Topen</td> +<td>Ropen</td> +<td>ファイルを開く</td> +</tr> +<tr> +<td>Tcreate</td> +<td>Rcreate</td> +<td>ファイルの作成</td> +</tr> +<tr> +<td>Tread</td> +<td>Rread</td> +<td>ファイルを読む</td> +</tr> +<tr> +<td>Twrite</td> +<td>Rwrite</td> +<td>ファイルへ書き込む</td> +</tr> +<tr> +<td>Tclunk</td> +<td>Rclunk</td> +<td>fidの削除</td> +</tr> +<tr> +<td>Tremove</td> +<td>Rremove</td> +<td>ファイルを削除</td> +</tr> +<tr> +<td>Tstat</td> +<td>Rstat</td> +<td>ファイルの属性を取得</td> +</tr> +<tr> +<td>Twstat</td> +<td>Rwstat</td> +<td>ファイルの属性を変更</td> +</tr> +</table> + +<h2><code>fid</code>と<code>qid</code></h2> +<p> +<code>fid</code>はコネクションにおいてファイルを指定するために\ +使われる整数で、Unixのファイルディスクリプタのようなものである。\ +使用する整数はクライアントが指定できる。\ +サーバーに接続する際に<code>Tattach</code>により、サーバーの\ +ルートディレクトリの<code>fid</code>が設定され、\ +<code>Twalk</code>により追加され、<code>Tclunk</code>により削除される。\ </p> + +<h2>Goによる実装</h2> diff --git a/pub/draft/9p.html b/pub/draft/9p.html @@ -68,8 +68,103 @@ Plan9というOSはネットワークを介して複数のコンピュータを <p> まず最初にクライアントがサーバーに対して<code>Tversion</code>を送り、プロトコルのバージョンと、メッセージの最大サイズを交渉する。<code>Tversion</code>のタグは<code>65535</code>と決められている。<code>msize</code>の8192はメッセージの最大サイズ(バイト)で、<code>version</code>の9P2000がプロトコルのバージョンである。サーバーから<code>Rversion</code>で同じ<code>msize</code>と<code>version</code>が返ってきたのでこのサイズとバージョンで以降の通信を行う。</p> <p> +次の<code>Tattach</code>で、クライアントがサーバーにルートディレクトリの<code>fid</code>を要求する。<code>afid</code>以降は認証用の情報である(後述)。<code>fid</code>はコネクションにおいてファイルと紐付けられる整数で、Unixにおけるファイルディスクリプタのようなものである。ファイルの読み書きはこの<code>fid</code>を使って行われる。サーバーからの<code>Rattach</code>にはルートディレクトリの<code>qid</code>が含まれる。これはサーバー上でファイルを一意に識別するもので、Unixにおけるinodeに相当するものである。以上でサーバーに繋いでセッションを確立できた。</p> +<p> +次に<code>Twalk</code>で目的のファイル(<code>hello</code>)までファイルツリーを辿る。ここでは起点として先程得られたルートディレクトリ(<code>fid = 1</code>)を起点として、このディレクトリ内の<code>hello</code>ファイルを要求して<code>fid = 2</code>を割り当てようとしている。サーバーはルートディレクトリ内に要求されたファイルが見付かったので、そのファイルの<code>qid</code>を返す。</p> +<p> +目的のファイルに<code>fid</code>が割り当てられたので、<code>Tstat</code>でこのファイルの属性を要求している。おそらくファイルのパーミッションを調べるためである。</p> +<p> +次に<code>Topen</code>を使ってこのファイルを開き、<code>Tread</code>を使って内容を読む。二回目の<code>Tread</code>に対して0バイトのデータが返ってきたので、ファイルはこれで終りである。</p> +<p> +最後に、必要なくなった<code>fid</code>は<code>Tclunk</code>で捨てる。</p> -</p> +<h3>認証</h3> + +<h3>List of all Message Types</h3> + +<table> +<tr> +<th>Tメッセージ</th> +<th>Rメッセージ</th> +<th>説明</th> +</tr> +<tr> +<td>Tversion</td> +<td>Rversion</td> +<td>バージョンの交渉</td> +</tr> +<tr> +<td>Tauth</td> +<td>Rauth</td> +<td>認証ファイルの取得</td> +</tr> +<tr> +<td></td> +<td>Rerror</td> +<td>エラー(Rメッセージのみ)</td> +</tr> +<tr> +<td>Tflush</td> +<td>Rflush</td> +<td>処理中のリクエストをキャンセル</td> +</tr> +<tr> +<td>Tattach</td> +<td>Rattach</td> +<td>ルートディレクトリの取得</td> +</tr> +<tr> +<td>Twalk</td> +<td>Rwalk</td> +<td>ファイルツリーを辿る</td> +</tr> +<tr> +<td>Topen</td> +<td>Ropen</td> +<td>ファイルを開く</td> +</tr> +<tr> +<td>Tcreate</td> +<td>Rcreate</td> +<td>ファイルの作成</td> +</tr> +<tr> +<td>Tread</td> +<td>Rread</td> +<td>ファイルを読む</td> +</tr> +<tr> +<td>Twrite</td> +<td>Rwrite</td> +<td>ファイルへ書き込む</td> +</tr> +<tr> +<td>Tclunk</td> +<td>Rclunk</td> +<td>fidの削除</td> +</tr> +<tr> +<td>Tremove</td> +<td>Rremove</td> +<td>ファイルを削除</td> +</tr> +<tr> +<td>Tstat</td> +<td>Rstat</td> +<td>ファイルの属性を取得</td> +</tr> +<tr> +<td>Twstat</td> +<td>Rwstat</td> +<td>ファイルの属性を変更</td> +</tr> +</table> + +<h2><code>fid</code>と<code>qid</code></h2> +<p> +<code>fid</code>はコネクションにおいてファイルを指定するために使われる整数で、Unixのファイルディスクリプタのようなものである。使用する整数はクライアントが指定できる。サーバーに接続する際に<code>Tattach</code>により、サーバーのルートディレクトリの<code>fid</code>が設定され、<code>Twalk</code>により追加され、<code>Tclunk</code>により削除される。</p> + +<h2>Goによる実装</h2> </article> </main> diff --git a/pub/draft/vi.html b/pub/draft/vi.html @@ -46,6 +46,7 @@ 例えば単語をhtmlの<code>code</code>タグで囲むコマンド: <pre><code>i&lt;code&gt;<u>&lt;ctrl-v&gt;&lt;esc&gt;</u>lea&lt;/code&gt;<u>&lt;ctrl-v&gt;&lt;esc&gt;</u> </code></pre> をどこかに入力し、その行でコマンドモードに移行し、<code>0"qy$</code>とすると<code>q</code>バッファに上のコマンドがコピーされるので、<code>code</code>タグで囲みたい単語の先頭に移動し、<code>@q</code>と入力するとその単語が<code>code</code>タグで囲まれる。 + </article> </main> diff --git a/pub/rss.xml b/pub/rss.xml @@ -5,8 +5,8 @@ <description>ウェブページの更新履歴</description> <language>ja-jp</language> <link>https://www.mtkn.jp</link> -<lastBuildDate>Sun, 27 Oct 2024 16:33:29 +0900</lastBuildDate> -<pubDate>Sun, 27 Oct 2024 16:33:29 +0900</pubDate> +<lastBuildDate>Mon, 28 Oct 2024 20:51:20 +0900</lastBuildDate> +<pubDate>Mon, 28 Oct 2024 20:51:20 +0900</pubDate> <docs>https://www.rssboard.org/rss-specification</docs> <item> <title>麻婆豆腐</title>