メンチカツ

ロースカツが好きです

【メモ】GraphQL触った所感

GolangベースでGraphQLのソースを生成してくれる gqlgen というライブラリを2日触ったので、感想をメモ。

github.com

チュートリアルを触って、最初は楽しくエンジョイしていたのだが、本家ではファイルアップロード仕様について言及していないことに気づいた。

GraphQLのファイルアップロードについてはデファクトのお作法が無く、みんなそれぞれの方法でmutationに詰めている様子。これは自分には厳しい。

使いどころの見極めが必要だなという印象。

blockchain.tokyo #10 に行ってきた #blockchaintokyo

今月から業務で唐突にEthereumの機運が高まったので、薄い知識で blockchain.tokyo #10 に参加してきました!

blockchain-tokyo.connpass.com

blockchain.tokyo - connpassは、月に1度、ブロックチェーンに関わる技術の普及や知識・情報の共有を目的として開催されています。

今回のテーマは「Ethereumの技術的基礎」、六本木 DMM.comさんの会場で開催されました。

会の内容は、後ほど crash.academy で公開されるそうです。


Ethereumで開発を始めるなら知っておきたいこと @ngo275 さん

speakerdeck.com

初心者でもわかりやすく、大変助かりました。 Ethereum開発に関わってくる登場人物が多すぎて混乱していたのですが、それぞれの立ち位置を整理して解説してもらえて、だいぶスッキリ。

Ethereumのデータ構造 @moonty_sal さん

speakerdeck.com

RLPエンコード、マークルパトリシア木を理解するという、独学では手に負えないタイプの敷居の高いテーマでしたが、図示してもらうとなかなか理解できる不思議。

Ethereumを支えるネットワークの話 @jkcomment さん

speakerdeck.com

Ethereumのプロトコル、ÐΞVp2p Wire Protocolのお話。うへーこれは難しいぞと思いきや、例えばwireプロトコルで使用するメッセージは意外にも少なく、ノード間のやりとりはとてもシンプル。こちらも図示がありがたかった。

LT1 Gasを誰が払うのか問題について @ゆで卵 さん

speakerdeck.com

「なぜDAppsが浸透しないのか?=>UXが悪い」に大きく頷きました。 gasの支払いを、利用者が認知しやすいルールに乗せられると多少扱いやすくなるのかな。

LT2 Ethereum fast sync @koropicot さん

speakerdeck.com

Ethereum fast sync アルゴリズムのお話。gethの初期同期に使われているのですね。ノードの同期について考えたことなかったけど、時間経過とともにブロックサイズは増えるわけだから、効率的に同期させる工夫ってとても大事。

LT3 State Channelエコシステムと実用上の課題 @RyuyaNakamura さん

speakerdeck.com

オフチェーンで状態遷移、最終結果だけオンチェーンに書き込む手法。 オフとオンの切り分けどころが想像できていなかったので、オンラインカジノの途中経過に利用出来るというのは目から鱗でした。


これからはじめる者としては、既に実務で使いこなしている人のお話はとても貴重でありがたかったです。 毎回定員オーバーの人気イベントなので、次回もがんばって参加したいです。ありがとうございました!

【メモ】Ethereumのgeth環境をDockerで立てるMakefile

二番煎じのエントリです。すみません。

こちらの記事で気軽にEthereumの環境を構築できたのが嬉しかったので

qiita.com

Makefileにしてみました。

github.com

dockerのオプション覚えられないマンです。

【メモ】Reduxチョット触ってた人がNuxt.jsチョット触った雑感

こちらを参考に触ってみました。

qiita.com

スゴイ①: 導入がかんたん

↓だけでどういうものか確認できる。

npm i -g vue-cli
vue init nuxt/starter nuxt-starter
cd nuxt-starter
npm i
npm run dev #=> http://localhost:3000

スゴイ②: チルダ ~ がドキュメントルート

pagesからcomponentsをimportするとき、reactで ../../../compornents/Hoge.js とか書いていたところが、~components/Hoge.vue と書ける。

スゴイ③: pagesに置いたvueファイルに勝手にルーティングしてくれる

~/pages/users.vue を置くと http://localhost:3000/users にアクセスできる。

スゴイ④: config.jsの見通しのよさ

webpack.config.js に当たる nuxt.config.js が、とても見やすい(気がする)。 いろいろ追加していったらちょっとわからないけども。

気になるところ:

後からチームに参加した人が触りたくない系の定義周り(applyMiddlewareとかBrowserHistoryとかのとこ)はどんな感じなんだろう。

まとめ:

これからやるなら React+Redux より Nuxt.js+vuex が良いかな。。 webpackはできれば(書かなくて良いなら)書きたくない。

【メモ】Lambda Functionはtypoに寛容だ

Alexaのスキルを作る予定があり、初めの一歩のチュートリアルとして、こちらを参考にさせていただきました。

datahotel.io

datahotel.io

Echoデバイス - Alexa - Lambda間のデータの流れが把握しやすく、非常にわかりやすいチュートリアルです。

早速取り組み、ビルドを完了させ、Alexa Skills Kit開発者コンソールでテストをしてみるも何故か動作しない。

数時間調べて、typoしていたことを発見。typoというか、チュートリアルインテント名が「siritori」となっているところを「shiritori」と定義していました。

Lambda Functionで存在しない要素を参照してもエラーにはならないということがわかりました。

期待した動作にならないときって、ついエラーログとか探してしまうのですぐに気付けませんでした。学びすなぁ。

brew install go-delve/delve/delve で「undefined method `check_for_bad_install_name_tool'」

brew install go-delve/delve/delve

で、以下のエラーが出ました。

Upgrade to delve fails https://github.com/go-delve/homebrew-delve/issues/20
/usr/local/Homebrew/Library/Homebrew/exceptions.rb:426:in `block in dump': undefined method `check_for_bad_install_name_tool' for #<Homebrew::Diagnostic::Checks:0x007fb983297950> (NoMethodError)
Did you mean?  check_for_tap_ruby_files_locations

issueへのリンクがあるので確認。

github.com

結果、以下で解決できました。

cd $HOME/Library/Caches/Homebrew
tar xf delve-*.gz
ls delve-* # ↑で解凍したフォルダを特定
#=> delve-1.0.0.tar.gz
#
#delve-1.0.0:
#CHANGELOG.md      ISSUE_TEMPLATE.md README.md         assets            glide.yaml        service
#CONTRIBUTING.md   LICENSE           _fixtures         cmd               pkg               vendor
#Documentation     Makefile          appveyor.yml      glide.lock        scripts
sh delve-1.0.0/scripts/gencert.sh # 解凍したフォルダのスクリプトを実行。パスワードを聞かれます。

CGO_ENABLED=1 brew install go-delve/delve/delve

【メモ】VSCode on Macで「Cannot find "go" binary. Update PATH or GOROOT appropriately」

GOROOT設定済みの環境で、VSCodeにgoのプラグインを入れたあと「Cannot find "go" binary. Update PATH or GOROOT appropriately」と言われることがあります。

これは、VSCodeのデフォルトshellがbashだから。 上記のメッセージが出る人は、ふだんzshなどを使っていて、bashじゃないrcにGOROOTを設定しているのだと思います。

command + , でユーザー設定を表示し、「既定の設定を上書きするには、このファイル内に設定を挿入します。」の中かっこの中の末尾に"terminal.integrated.shell.osx"の設定を追加します。

// 既定の設定を上書きするには、このファイル内に設定を挿入します。
{
     ・・・
     "terminal.integrated.shell.osx": "/usr/local/bin/zsh" //zshの場合
}

このあと、VSCodeを再起動すると問題が解消され、ターミナルも普段使っているshellになっていると思います。

--

参考にさせていただきました。

qiita.com