鱒身(Masu_mi)のブログ

知った事をメモする場所。

TLSを設定した

HTTPS対応を行った。ついでにHTTP/2にも対応しようと試みた。 結果としてはis-http2 は通過するがh2spec のテストは大半が失敗したため有効にしなかった。

Read more...

開発環境構築を再整理した

blogの整理を通してAnsibleのベストプラクティスや環境毎に変更しないと行けない項目を学べたので、 以前準備した開発環境のリポジトリも整理しなおした。

またvagrant provision ${target_vm}をすると対象VM以外も一緒にプロビジョニングされてしまう問題があったので対応した。

Read more...

blogの再構築

Vagrant + Ansibleで既存環境構築のコード化を行った。CDはしてない。 以前から放置していたのが気になっていて、気楽に改善できるようにするために実施した。

目的が環境の可搬性向上なので作成後にはPacker対応を試してみた。 しかし利用しているAnsible_のロールが動かなかったため諦めて、ここまでについて記録することにした。

利用したミドルウェアやツールに関して調べたことは個別に書く。 Vagrant, Ansible, Makefileで繋げた部分をメモする。

Read more...

Plangのお勉強

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 を採用しているらしい。

Read more...

RTPを少し調べた

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

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

Read more...

Supervisordの練習(Airflow)

daemontoolsは設定が色々あり辛いのでSupervisord を覚えることにした。 練習としてAirflowをデーモン化した。

簡単に説明するとSupervisordUNIX likeなシステム上で複数のプロセスの起動を管理を提供するserver/clientシステムで 起動停止の他にイベント検知などもサポートしている

Read more...

OAuth 2.0による認証を試してみた

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のドキュメントで対応を見つけられず今回は実装していない。

Read more...

Gottyを使ってみた

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

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

Read more...

Golang:testing Example

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

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

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

Read more...

Update to Go 1.8

先日Go1.8 がリリースされた。 ソースコードからビルドしたら失敗した。 調べてたらIssueが上がっていて対処が判明したのでメモしておく。 ついでなのでリリースノートについても目を通した。

Read more...