P: A programming language designed for asynchrony, fault-tolerance and uncertainty という記事が公開されていた。 OSS化についてはだいぶ前から行われていた けど拾えていませんでした。

この記事でモデル検査を勉強してみたくなったもののP-langのビルドは失敗しました。

(今のところの)P-langのイメージ

P-lang は非同期処理のモデル化が可能な言語でモデル検査器のサポートを受けられる。 また、イベントとして故障をモデル化する事でfault-injectionをサポートしている。 故障モデルを投入できる非同期処理のモデル検査が可能なので分散アルゴリズムの検証を行えるということになる(?)。 そして更に実行可能コードを生成できる。

これらの特徴から、P-lang を用いた開発ではプロトコルの設計時にモデル検査器のサポートを受けられコード自動生成によりバグ混入のない実装を利用することが可能になる。

P-lang は複数の決定性オートマトンを定義してメッセージパッシング(Actor Modelに近そう)でプロトコルを記述する。 メモリ管理はlinear type system を採用しているらしい。

続きを読む

GoRTPのサンプルコードを使って中身に目を通しつつ仕様を勉強していた。

とある会社に興味を持ったためにRTPに興味がでた直接のきっかけ。 もともと負荷分散とか低レイテンシ化を目指した脱TCPに興味があったので少し追ってみた。

続きを読む

OAuth 2.0で認証してみた。

まずOAuth 2.0は認可フレームワークで認証は直接サポートされない。 だけどユーザー属性参照への認可(アクセストークン)で似たことができる。

実装が簡単なためOAuth 2.0で定義されているAuthorization Code Grantを利用して認証をする人が増えた。 これは野良ハックであって認証として合意は取られていない。 なので認証としての機能拡充や仕様として整理するためにOAuth 2.0上の認証機構OpenID Connect 1.0が定められた(と思われる)。

OpenID Connect 1.0のクライアントは利用するだけなら簡単との事だけど仕様を理解するのにだいぶ時間が掛かりそうだったので OAuth 2.0のハック版の認証を試してみた。

Authorization Code GrantにはセキュリティリスクがありRFC7636で対策が策定されている。 だけどgithubのドキュメントで対応を見つけられず今回は実装していない。

続きを読む

tty をブラウザ経由で利用できるツールはいくつか存在する。 Go実装のyudai/gottyを試してみた。 とてもシンプルで簡易で何かするのに使うくらいだと思われる。

あとからfork版のyubo/gottyを見つけた。 こっちは機能が豊富でパッケージ化も進んでいて扱いやすそう。

続きを読む

GoにExample functionテストがあるの知らなかった。

とりあえずExampleXXXX() って関数名で使える。 キーワードはOutput:, Unordered output: って2つのコメントになる。

ドキュメントによるとExampleテストの関数名で対応する関数やメソッドを解決してGodocのExampleに掲載してくれるらしい。

続きを読む

プロフィール画像

Masumi Kanai

quantum mechanism and exact-WKB
news site
distributed storage
stream processing

software engineer

Japan