パーサジェネレータでパーサを出力してみる

BNFを読み込んでパーサを出力し、実際にパースしASTの出力が確認できました。 パーサを出力するものはパーサジェネレータというと思うのですが、こちらはパーサコンビネータを使っています。パーサコンビネータはパーサのパーツを組み合わせてより複雑なパーサを出力できるもので、今回はパーサコンビネータの出力がParser[Parser[BnfParseResult]]のようになっています。これはBNFを読み込んだ結果としてParser[BnfParseResult]を出力し、さらにこれに対して文字列を読み込ませることでBnfParseResultを出力するというものになっています。

パーサコンビネータのライブラリとして以下を使用しました。

github.com

続きを読む

Rustのactix-webでJWTを試してみた

今更ですがRustのactix-webでJWT(JSON Web Token)を試してみました。JWTとはJsonをBase64URLエンコードし、署名を付けることで改ざんを検知できるようなものになっていますす。JWTをクッキーにして渡すことでサーバサイドでセッションを保有しないということもできるのですが、2017年くらいにリリースされたPlayFramework2.6でこれがデフォルトになったのがインパクトがあったので印象に残っています。JWTのクッキーを使うことでサーバ間でのセッション情報の同期は必要がなくなりスケールアウトしやすくなるという特徴があるようです。

続きを読む

NFTオークションを実装してみた

以下のドキュメントを元にNFTの鋳造と、鋳造時に発行したトークンに対してオークションを行えるようにしました。流れを把握しやすいようコンテンツのアップロードとコントラクトのデプロイ、書き込みをすべてクライアント側のJavascriptで行っていますが、実際にオークションシステムとして利用されるためにはゲートウェイを用意してそこでコントラクトの書き込み等を行うべきかと思います。 docs.ipfs.io solidity-jp.readthedocs.io

続きを読む

NFTを鋳造してみた

以下のIPFSのページを参考にNFTの鋳造をしてみました。 docs.ipfs.io

鋳造というのはMint an NFT with IPFSのMint の訳で意味としては材料を溶かして型に流し込むやり方で製造方法のことのようで、硬貨を鋳造などに使われる単語のようです。また、そもそものNFTですが非代替性トークンと訳されていまして特徴としては重複のないトークンのようで、イーサリアムネットワークですでに実装されている規格としてERC721があります。こちらはイーサリアムネットワークのコントラクト記述言語であるSolidityにて利用することが出来ます。

github.com

続きを読む

IPFS Desktop で立ち上げたノードに対して JS でアップロード

IPFS とは

IPFS とは P2P ネットワーク上でハイパーメディアプロトコルで、コンテンツのハッシュがアドレスとして使われるのでアップロード内容が変化したら参照するアドレスにも変更が必要といったものになります。ブロックチェーンのストレージとしての相性が良いようでブロックチェーンの台帳側には IPFS のアドレス(CID)を書き込むことで、その時点のコンテンツの履歴を残せるようになっています。

また、IPFS で使われる p2pプロトコルlibp2pになっていまして IPFS のために作られたもののようです。

libp2p.io

今回は IPFS 学習のため IPFS Desktop で立ち上げたノードに対して JS でアップロードしてみました。 IPFS Desktop は以下で取得できます。

github.com

IPFS Desktop で実際に立ち上がるノードは go-ipfs のもので IPFS Desktop はその UI となっています。
GitHub - ipfs/go-ipfs: IPFS implementation in Go

また、自前でノードを立ち上げてネットワーク上でコンテンツを共有ではなくブラウザからのアップロードを試したかったので js-ipfs でipfs-http-clientを利用しています。
GitHub - ipfs/js-ipfs: IPFS implementation in JavaScript

実際に確認したソースは examples にあるhttp-client-bundle-webpackになります。
js-ipfs/examples/http-client-bundle-webpack at master · ipfs/js-ipfs · GitHub

続きを読む

ReactAdminを試してみた

ReactAdminを少し触ってみました。 marmelab.com

そもそもReactAdminとはReactでダッシュボードを作成するためのフレームワークのようで、公式のページでは"A Web Framework for B2B applications"とあるので凝ったページというよりは一般的なダッシュページとかを簡単に作れるのかなと思います。

公式のドキュメントは以下になりまして、"Data Provider"と"Auth Provider"がAdminコンポーネントプロパティになっていまして、それぞれ一覧データの取得と認証の設定になります。それからResourceコンポーネントが一覧に出す項目の内容を設定するためのコンポーネントになっています。 marmelab.com

とりあえずAuth Providerの設定を行い認証が出来るところまで確認できました。

github.com

続きを読む