TestgroundのテストプランをRustで実装する
P2Pシステムをテストするフレームワークである Testground。最近、RustのSDKがリリースされたので試しにテストプランを実装してみた。
more »P2Pシステムをテストするフレームワークである Testground。最近、RustのSDKがリリースされたので試しにテストプランを実装してみた。
more »Release v0.1.0-beta.4 · sigp/discv5 · GitHub
個人的に気になった機能のソースコードを追ったのでメモ。
more »sigp/discv5のとあるテストを読み解きながら、各ノードがどんな通信をしているのか、各ノードのk-bucketの中身はどうなっているのかを確認していくことで理解を深める。
more »dhat-rsは DHAT と同等の機能を提供するクレートで、 このクレートの dhat::DhatAlloc をアロケータに設定することで、ヒープの割当を追跡・計測してくれる。
more »上記でdocker-composeを使ってサクッとダッシュボードが見れるようになっているが、Dockerの “host” ネットワークモードはLinuxのみのサポートなのでMacで試すことができない。
more »この記事は Ethereum Advent Calendar 2020 24日目の記事です。
Beacon Nodeを稼働させるためには、利用するEthereum(eth1)のエンドポイントを指定する必要があるが、ちょっと動作を検証してみたい程度のときに自前でeth1クライアントを立てておくのはやや骨が折れる。そういった場合には Infura が便利。
Ethereum API | IPFS API Gateway | ETH Nodes as a Service | Infura
※ Launch Padの手順では、ネットワークの分散のために自前でクライアントを立てることが推奨されているので、本格的な運用の場合は自前で立てる方が良いのだろう。
以下、eth1バックエンドとしてInfuraを使ってBeacon Node(lighthouse)を立てようとした時に遭遇したエラーメッセージと、それについて調べたことをメモしておく。
more »この記事では、Libraネットワーク内で合意が取れたトランザクションを保存する部分の処理を追っていくことで、Libraでアカウントのステート(アカウントに紐づく残高などの情報)をどんな感じに管理しているのかざっくり把握していきたい。
more »ゼロから創る暗号通貨という、PythonでP2Pネットワークの部分から実装を進めていって最終的にBitcoin的なものを創るというめっちゃ面白い本があって、最近これを Rustで実装 している。
本の序盤、P2Pネットワークの基盤を作っていくところで、接続してるPeerのヘルスチェックを実装する。といってもこの本ではシンプルにTCPのレイヤーで繋がるかどうか確認するだけなんだけど、なんとなくこの部分を実際のプロダクトはどんな感じに実装しているのか(何かスゴイことやってるのか?)気になってコードを眺めてみたのでブログに書いておく。
more »Ethereumのスマートコントラクト記述に使われる言語 Solidity では uint256
をサポートしていてこれがよく使われているが、一方でチェーン側を実装している言語が必ずしもそれに相当する型をネイティブでサポートしているわけではない。
最近 勉強がてら Plasma Cash の実装に手をつけだして、子チェーンを Rust で書き始めたのだけど、まさに Rust は uint128
までなのでこの壁にぶつかってしまった。とはいえ実際に Rust で実装して動いているプロジェクトはあるので、どんな実装をして uint256
に対応しているのか、Ethereumに関連するクレートを調べてみた。
OpenAPI Generatorは現在 Java8 での動作 が基本になっているが、一方で下記のPR/issueのようにJDK9以降のサポートを進めていく流れがある。
自分もこの辺に絡んでいきたい気持ちになってきたので、Java8で開発しながら、Java9(またはそれ以降のバージョン)で非推奨になった構文が手元のソースコードで使われているかチェックする方法が知りたくなった。
more »以前からSnidelというPHPで手軽にマルチプロセスで並列処理をするライブラリを作っているのだが、このお盆休みの間にその開発中にハマったことがあったのでブログに残しておく。
more »2018-05-12、OpenAPI Generator が公開されました。
https://github.com/OpenAPITools/openapi-generator
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec
これは Swagger Codegen v2.4をフォークしたプロジェクトで、OpenAPIドキュメントから様々なプログラミング言語のAPIクライアントやスタブサーバーなどのソースコードを生成するツールです。まだベータ版のような状態で、“v3.0.0”として初回リリースすることを予定しています 。
私は “元” Swagger Codegen のコアメンバーであり、現在 OpenAPI Generator のコアメンバー/創立メンバーで少し中の事情に詳しいので、なぜフォークするに至ったのかといった経緯やOpenAPI Generatorについて書いていきたいと思います。
なお、個人のブログに書いていることですので主観が入っている部分があるかもしれませんが大目に見ていただけますと幸いです。
2018-03-16、Swagger Codegenについての電子書籍が販売開始した。
REST APIのためのコード生成入門 - Swagger Codegenを利用したRESTful API開発の効率化
内容はOpanAPIやSwagger Codegenの解説、導入〜自動生成するコードをカスタマイズする方法の紹介。ご興味があるかたは1章まで無料で読めるので是非ご覧いただきたい。
more »記念エントリ。
more »なんだか辛さが滲み出るようなタイトルだ。どうしても古いPHPのサポートを継続しておきたいライブラリがあって、PHP5.3から最新までのバージョンでCIをまわすときに少しハマりどころ(といったら大げさだが)があったのでメモしておく。
more »( English version is coming soon! )
以前 Swagger Codegen + CircuitBreaker(Ganesha) でSwagger Codegenと拙作のGanesha (Circuit BreakerのPHP実装)を組み合わせる方法を書いた。
その後、Swagger CodegenとGaneshaの双方ともバージョンアップし親和性が高まり、よりシンプルな方法で組み込めるようになったので、改めてSwagger CodegenやCircuit Breakerの概要も含めてご紹介したい。
ググってみた感じだと(ソフトウェア開発以外も含めた)文脈によっていくつか微妙に異なる意味がありそうなのだが、当記事では “ある測定の対象となる時間枠” の意味で扱う。例えば、システムで発生したイベントを集めて加工を行うようなストリーム処理において、どこからどこまでのイベントを対象とするかを決定するのがTimeWindowである。
more »デザインパターン入門 マルチスレッド編 に、マルチスレッドプログラムの評価基準として 安全性
生存性
再利用性
が挙げられている。安全性とはオブジェクトのフィールドが意図した値を保っていることで、安全性が保たれているクラスをスレッドセーフなクラスという。
マルチスレッドプログラミングにおいてオブジェクトを安全に更新するには、操作が競合しないように synchronized などを使った排他制御の工夫が必要。
最近、趣味で Java 製プロダクトをいじっていたり、デザインパターン入門マルチスレッド編を読んでいることもあって Java のコードを書くようになった。
これまでほぼ PHP しかやってこなかったので java.util.concurrent パッケージ の充実っぷりに衝撃をうけた。これらのクラスを使って分散アルゴリズムの実装に挑戦してみたい。
最近仕事で Apache Kafka を使おうと思っていたり、分散処理が面白くて勉強している。そんな中いままさに知りたいことがセッション一覧に連なってたので参加してきた。
以下、聴講したセッションの概要、気になったところや質問させていただいたことのメモ。