パーサジェネレータでパーサを出力してみる
BNFを読み込んでパーサを出力し、実際にパースしASTの出力が確認できました。
パーサを出力するものはパーサジェネレータというと思うのですが、こちらはパーサコンビネータを使っています。パーサコンビネータはパーサのパーツを組み合わせてより複雑なパーサを出力できるもので、今回はパーサコンビネータの出力がParser[Parser[BnfParseResult]]
のようになっています。これはBNFを読み込んだ結果としてParser[BnfParseResult]
を出力し、さらにこれに対して文字列を読み込ませることでBnfParseResult
を出力するというものになっています。
パーサコンビネータのライブラリとして以下を使用しました。
続きを読むSpringCacheを試してみた
SpringBootではSpringCacheというものがあり、内部的にはCaffineが利用されているということで確認してみました。baeldungの説明を参考に進めています。
続きを読むNFTオークションを実装してみた
以下のドキュメントを元にNFTの鋳造と、鋳造時に発行したトークンに対してオークションを行えるようにしました。流れを把握しやすいようコンテンツのアップロードとコントラクトのデプロイ、書き込みをすべてクライアント側のJavascriptで行っていますが、実際にオークションシステムとして利用されるためにはゲートウェイを用意してそこでコントラクトの書き込み等を行うべきかと思います。 docs.ipfs.io solidity-jp.readthedocs.io
続きを読むNFTを鋳造してみた
IPFS Desktop で立ち上げたノードに対して JS でアップロード
IPFS とは
IPFS とは P2P ネットワーク上でハイパーメディアプロトコルで、コンテンツのハッシュがアドレスとして使われるのでアップロード内容が変化したら参照するアドレスにも変更が必要といったものになります。ブロックチェーンのストレージとしての相性が良いようでブロックチェーンの台帳側には IPFS のアドレス(CID)を書き込むことで、その時点のコンテンツの履歴を残せるようになっています。
また、IPFS で使われる p2p のプロトコルはlibp2p
になっていまして IPFS のために作られたもののようです。
今回は IPFS 学習のため IPFS Desktop で立ち上げたノードに対して JS でアップロードしてみました。 IPFS Desktop は以下で取得できます。
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の設定を行い認証が出来るところまで確認できました。
続きを読む