アルゴリズムとかオーダーとか

仕事で勉強したことなどをまとめてます

lk-test-helpersの導入方法20180417版/truffleでimportを使う

github.com
をtruffle testで使うための導入方法20180417版です。

y-nakajo.hatenablog.com
こちらの以前の記事で紹介していた手順が最新のbabelでは使えなくなっていたので、最新版のbabelに対応した導入手順をまとめ直しました。

続きを読む

Hi-Ether Meetup - Block #2レポート

2018/04/13に開催されたHi-Ether Meetup - Block #2に参加してきましたのでそのレポート記事です。

会場はすごく綺麗なDMM.com様のイベントスペースでした。

東京タワーが綺麗で完全におのぼりさん状態で写真撮ったりしてましたw

また、今回から@kazush-mさんがLive配信と動画の撮影もされていますので、動画でもイベントの様子や各スピーチをご覧いただけます。みんなが自発的に行動しており、どんどん内容もパワーアップされていってて本当にすごいコミュニティーだなーと感じました。

続きを読む

python3.6.4の開発環境構築

なんだかんだでpythonで提供されているライブラリを使う頻度が多くなったので、とあるモジュールを作成するにあたり勉強がてらpythonで作成することにしました。

今回は開発環境を構築した時のメモを残しておきます。
自分用のメモなので雑にまとめてます。

  • IntelliJ ideaでプロジェクトを作成。python pluginはインストール済みだったので最初は~/.pyenv/いかにインストールしてるpythonSDKとして指定して作成
  • ちょろっと調べてみたところpythonではプロジェクトテンプレートとかproject manager tool的なものでメジャーなのはないようで、とりあえずここ(github kennethreitz/samplemod)のテンプレートを使うことにした。
  • virtualenv使いたいのでIntelliJ ideaのfile -> project structure -> Project SDK -> new からpython選択してvenvの名前でプロジェクト直下にvirtualenvの環境を作成
  • requirement.txtを見てpluginがlibraryのインストールを進めてきたのでインストール(venv作る前にやるとglobalのsite-packagesにインストールされてややこしいことになると思うので注意)
  • requirement.txtに最初から書かれてるlibraryは次の2つだった。
    • nose: unit testのためのライブラリ
    • sphinx: ドキュメント作成ためのライブラリ
  • コンソールから source venv/bin/activate でvirtual環境にスイッチ
  • コンソールでnosetestsを実行してunit testを走らせる
  • unit testの各ファイルが sampleをimportしてエラーになったので該当部分を変更した名前に修正
  • nosetestsが成功したらとりあえずのセットアップは終了

IntelliJ IDEA 2018-01でpython3のsyntaxを使う方法

  • default のままだとpython2 syntax鹿許可されてなくて type hintとかつけるとエラーになっちゃう
  • Preference->Console->Python Console->Use specified interpreterを変えればOK(なんでConsoleの設定なのか激しくなぞ)

pythonはパッケージ管理系あんまり成熟してないぽいのが意外だった。java -> rubyって触ってきたのでpackage managerがないとなんか落ち着かない。。。

EthereumのTransactionHashの計算方法

EthereumはBitcoinと同様にTransactionHashをTransactionのrawデータから求めることができます。
今回はEthereumのTransactionHashの求め方について調べたことをまとめました。

続きを読む

truffle consoleで終了処理を追加する方法

truffle consoleを終了するときに追加で何らかの処理を実行したいときはconsole(=REPL)起動中でも次のようにして追加できます。

> repl.repl.on("exit", () => {~~なんか自前の終了処理~~})

これで.exitしたときに追加の終了処理を走らせてREPLを正常に終了させることができます。
replServerをいじれるってことなので多分コマンドの追加とかとかいろいろできそう。

ganache-cli@beta+web3.eth.subscribeを試してみた

y-nakajo.hatenablog.com
前回の記事の続きになります。
タイトルの通りweb3.eth.subscribeを試してみました。
が、テストのためだけにGethのノードを準備するのはめんどくさいのでtestRPCあらため、ganache-cliでWebSocketサーバ起動できないのかなぁ?と思い調べてみました。
そしたらこんなIssueを発見!
github.com

ということでganache-cli@betaを使ってweb3.eth.subscribe(= event filter)を利用してみます。

続きを読む

web3.eth.filterとweb3.eth.subscribe

web3.jsは現状2つのバージョンが開発されています。1つはweb3@0.x.x(現行は0.20.5)とweb3@1.0.0です。truffleが利用しているのが0.x.x系で、npm install web3 するとインストールされるのがweb3@1.0.0系です。
0.x.xがstableバージョンであり、1.0.0はまだβバージョンです。
両者の大きな違いは、0.x.x系はcontractのfunction呼び出し等にcallbackが必須となっていますが、1.0.0系ではpromisefyされているのでコールバックは必要なく、Promiseを返してくれるため簡単に同期/非同期処理が書けます。
また、もう一つ大きな違いが、タイトルにあるようにイベントフィルタの仕組みです。1.0.0ではイベントの監視処理がリニューアルされています。

今回はこのイベントフィルタの仕組みについて調べたことをまとめます。

続きを読む