NginxでTCP接続をトンネル

備忘録用のメモNginxでTCP接続のトンネルを行う場合、nginx.confに以下のようにstreamを設定することで行えます。この場合nginxの3456ポートに対して127.0.0.1:6543にプロキシします。 ``` #user nobody; worker_processes 1;#error_log logs/error.log; #er…

RustでTCPトンネルを実装

RustでTCPトンネルを実装してみたので備忘録的にメモ

RustでRefCellとRcを組み合わせて自己参照のパーサーを実装する

Rustのパーサーコンビネータ実装中、多次元配列のパーサコンビネータにて自分自身を再起的に呼び出せる必要がありそうなので調べていたが、後から配列パーサーのインスタンス生成時に渡したパーサーのvector変更を後から変更する方法で困っていたところ以下…

JavaとgoのRabbitMQでAMQPを使ってメッセージのやり取りをしてみる

JavaとgoのRabbitMQのサンプルコードを動かして通信を確認してみます。RabbitMQはMacであればbrew install rabbitmqでインストールしたものを使うこともできますが、今回は以下のdocker-compose.ymlを起動させて使います。 version: '3' services: rabbitmq:…

Rustで関数型プログラミング

Rustで関数型プログラミング Haskellでtree型のデータ構造のfmap, foldMapを実装し、Rustでも同様のことをやってみたいと思います。 Rustで関数型プログラミング fmap Haskell Rust foldMap Haskell Rust

S3分析環境構築メモ

AWS分析環境構築メモ S3 S3の料金計算をもとに検討内容を確認 https://calculator.aws/#/addService/S3 リージョンはどうなるか? どのストレージを使う? https://aws.amazon.com/jp/s3/storage-classes/ ↑の S3 ストレージクラスのパフォーマンスを見て判断…

C++でstd::stringをスレッドセーフにする

c++を使っている時マルチスレッドで一方は文字列の更新、もう一方は更新した文字列のコピー取得をしていたのですがおかしな動きをすることがありまして、 例えば、以下の動きを確認すると #include <iostream> #include <mutex> #include <string> #include <thread> int main(int argc, char </thread></string></mutex></iostream>…

概念モデルで実装方針の認識合わせ

経緯 すでに実装済みのスケジュール適用機能を改修し、分割適用を行うという案件があったのですが、レビューを行っているとスケジュール適用のための予定と実際のスケジュールの同期がよく取れていないと言うことがありました。 なれた製品での開発だったの…

c++で関数型のパーサー作成

実用性は置いといてc++でmap, flatMapを利用したパーサーコンビネーターを作成していこうと思います。c++ではLL1パーサーを実装するのが相性が良さそうだと思うのですが、今回はパーサーコンビネータを使うのでPEGパーサーのようになるので書きやすいかどう…

開発環境構築からのReact

React基礎 開発環境構築(Webpack) プロジェクト作成 ビルドまで webpack-dev-server導入 React hello world チュートリアル statelessにして再利用性を高くする React基礎 開発環境構築(Webpack) Reactの開発をするにあたって、まずは開発環境の構築を進めて…

c++での文字列最適化

Optimized C++に載っている文字列最適化の手法をgoogle benchmarkでパフォーマンス測定してみました。 www.amazon.co.jp github.com

C++でProtocol Bufferを試してみた

Protocol Bufferとはシリアライズ、デシリアライズ対象のデータ構造を定義したインタフェース定義言語になります。言語に依存しないのでgRPCなどの通信でも使われていまして、Googleのオリジナルの実装にはC++, Java, Pythonなどがあります。 developers.goo…

JavaのNettyとC++のBoost.AsioでTCP通信してみた

JavaのNettyとC++のBoost.AsioでTCP接続を試してみたときのメモになります。 Nettyとは Netty は非同期のイベント駆動型ネットワークアプリケーションフレームワークで、FTP,SMTP,HTTPなどのレガシープロトコルから得られた経験をもとに開発の容易さ、パフォ…

Javaでサイズ付きMapを比べてみた

Javaで上限サイズ付きのMapが実装が必要でしたのでいくつか比べてみました。具体的にはLinkedHashMapとCaffeineを使ったので、その実装内容を見たうえで結果を比較していきたいと思います。

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

BNFを読み込んでパーサを出力し、実際にパースしASTの出力が確認できました。 パーサを出力するものはパーサジェネレータというと思うのですが、こちらはパーサコンビネータを使っています。パーサコンビネータはパーサのパーツを組み合わせてより複雑なパー…

SpringCacheを試してみた

SpringBootではSpringCacheというものがあり、内部的にはCaffineが利用されているということで確認してみました。baeldungの説明を参考に進めています。 www.baeldung.com github.com

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

今更ですがRustのactix-webでJWT(JSON Web Token)を試してみました。JWTとはJsonをBase64URLエンコードし、署名を付けることで改ざんを検知できるようなものになっていますす。JWTをクッキーにして渡すことでサーバサイドでセッションを保有しないということ…

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

以下のドキュメントを元にNFTの鋳造と、鋳造時に発行したトークンに対してオークションを行えるようにしました。流れを把握しやすいようコンテンツのアップロードとコントラクトのデプロイ、書き込みをすべてクライアント側のJavascriptで行っていますが、実…

NFTを鋳造してみた

以下のIPFSのページを参考にNFTの鋳造をしてみました。 docs.ipfs.io 鋳造というのはMint an NFT with IPFSのMint の訳で意味としては材料を溶かして型に流し込むやり方で製造方法のことのようで、硬貨を鋳造などに使われる単語のようです。また、そもそもの…

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

IPFS とは IPFS とは P2P ネットワーク上でハイパーメディアプロトコルで、コンテンツのハッシュがアドレスとして使われるのでアップロード内容が変化したら参照するアドレスにも変更が必要といったものになります。ブロックチェーンのストレージとしての相…

ReactAdminを試してみた

ReactAdminを少し触ってみました。 marmelab.com そもそもReactAdminとはReactでダッシュボードを作成するためのフレームワークのようで、公式のページでは"A Web Framework for B2B applications"とあるので凝ったページというよりは一般的なダッシュページ…

Solidityでオークションを実装しました

Ethereumネットワークでのコントラクト開発に使われるSolidityでオークションを実装してみました。まあSolidityのページにあるexampleをほぼそのまま写経してコンパイルして確認してみただけなのですが、実際に動かすことで理解が深まるかと思います。 solid…

Chainlinkについて調べてみた

ブロックチェーンのオラクル問題とは何か? オラクル問題とは オラクルの要件 オラクルの問題点 Chainlink での安全で信頼性の高いオラクルのスタンダード Chainlink で実現するスマートコントラクトの 77 のユースケース 分散型金融 ステーブルコイン 先物 …

圏論学習中メモ

米田の補題まで理解できるように圏論の学習を進めていまして、メモを残すことで大分整理できてきた気がします。 圏論学習中メモ 射 対象 a,b があったとき f: a -> b のように対象間の矢印を射といい、このとき a を始対象、b を終対象という。また f: a -> …

Hyperledger Tutorial のコマーシャルペーパー をやってみた

前回やった Hyperledger のチェインコードデプロイのチュートリアルに引き続ぎコマーシャルペーパーのチュートリアルもやってみました。 以下のfabric-samplesリポジトリの commercial-paper 配下を動かしていきます。 github.com ネットワーク起動 まずは d…

Hyperledgerのチュートリアルでチェインコードをデプロイしてみた

Hyperledger Tutorial をやってみた Hyperledger のチュートリアルをやってみたので、その時の内容をまとめてみたいと思います。 環境構築 まずは環境構築ですが、以下に手順がまとめられています。 hyperledger-fabric.readthedocs.io 手順の中である以下の…

Hyperledger fabric のユースケースを調べてみた

エンタープライズでのブロックチェーン 公式サイトの方に説明があります。 hyperledger-fabric.readthedocs.io ブロックチェーンを使った技術として Bitcoin や Etherenum などの暗号資産が有名ですが、エンタープライズ向けのユースケースで活用する動きが…

Blockchain 学習メモ

Blockchain および、代表的な実装である Bitcoin について学習したのでメモをまとめてみます。 Bitcoin 論文 まず Bitcoin の論文を読んでみます。 ・原文 https://bitcoin.org/bitcoin.pdf ・日本語訳 https://coincheck.blog/292 概要を読んだところ信頼の…

ファイル監視ツール開発日誌20210131

ファイル監視ツールの方をちょくちょく進めてまして、正規表現での検索は動くようになりました。 正規表現の条件を複数設定できるので、いくつかの条件でまとめて絞ってみたい場合などはこれで結構楽に管理できるかもしれないです。最初は検索だけできればよ…

ファイル監視ツール開発日誌20210102

年末年始の時間を使って開発を進めたブラウザ上で動かすファイル監視ツールで、とりあえずファイルの中身が見えるくらいには進みました。 sftp経由でのtailも動きます。