新規記事の投稿を行うことで、非表示にすることが可能です。
2019年10月10日
【まとめ】 英語版Udemy講座で学ぶ!ブロックチェーン技術
英語版のUdemy講座、"Build a Blockchain & Cryptocurrency | Full-Stack Edition"の受講を完了したので最初に立てた目標の達成具合、自己評価や、コースをやり終えての感想をまとめる。
目次
1、受講前のゴールイメージとスケジュールの確認2、講義に関して
3、残念なポイント
3、次回に受講に生かしたいこと。教訓とか
受講前のゴールイメージとスケジュールの確認
■受講前のゴールイメージとスケジュールの確認
・ブロックチェーンの仕組みとコア技術を説明できる △
・ブロックチェーンのプログラム開発ができる △
・ブロックチェーンを用いたWebアプリケーションの構築ができる △
おおむね、イメージした通り、マスターできたとは思う。
しかし、独自にブロックチェーンのプログラムやWebアプリを作るにはまだ勉強の必要があるかな。
■スケジュール
- 15日程度で完了するつもりで受講をする。→15日で完了
大体、1日5%から10%を目標に進められた。
■良かった点、難しかった点
・良かった点
・非常にタフなコースだが、内容は非常に充実していて達成感は大きい。
・TDDで講義が進むところ。実践的でTDDの勉強にもなった
・Node.jsやReact, jestなどの充実したフレームワーク、プログラミング言語などの最新のコーディング環境に触れられた
・一部デバッグえ辛い時期もあったがおおむね計画通りに進められた。
・忍耐力が付いた気がする。また、Node.jsなどWeb Frameworkのデバッグの経験をつめた。
・難しかった点:
・デバッグが相当つからった。
→スペルチェッカーを導入することでかなり改善したが、それでもかなり時間を要した。
→オブジェクトのundefinedには結構悩まされた。
→カッコが多いのでそのネスト状態や、")"か"}"などで結構バグが出てしまった。
・コーディングが忙しくて動画をじっくり見る余裕があまりなかった。
→gitのお手本を次回からは活用して見たい。
■講義に関して
・英語
・全体的には特に問題なし。
・内容
・ブロックチェーンに関しての知識は一通りついたと思う。
・普段では絶対触れることのない、Node.jsやReactなどの最新のWebアプリケーションの開発環境に触れられ、面白かった。
・ブロックチェーンで仮想通貨を作ったことがある、と自慢できる。
・Webアプリケーションで作ったブロックチェーンをマルチホストで同期させたり、非常に高度で飽きがこない。
・何回か復習してもいい感じ。
■残念なポイント
・デバッグに時間がかかった所。Node.jsを知っていればもっとスムーズだったかも。
・講座をまとめるpdfがあると良い。これなんだっけ、をすぐ確認できると助かる。
・かなり高等な技術なので副読本を用意するともっと理解が進んだかも
■次回に受講に生かしたいこと。教訓とか
・スペルチェッカーは入れたほうがいい。ただし、頼り切らないこと。
・お手本を活用しながら勉強を進める
・高等なテーマに関しては副読本を用意(余裕があれば)
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月09日
【15日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 100%(+8%)
いろいろあったが、予定通り、受講を完了した。
■デプロイの実施
最後に、Herokuのサービスを使って今まで作った仮想通貨システムのデプロイを行う。Herokuのアカウントを作成後、Redisの設定に移ったところで、エラーが発生。
どうも、Redisの設定を行うにはクレジットカードの番号を登録することが必要とのこと。
んー、今回はやらなくていいかな。
ということで、Herokuへのサービスデプロイは今回は行わないことにした。
しかし、動画がまだ残っている!
ブロックチェーンのアドレスリストの表示とページ表示の部分だ。
これらを進め、特に大きな問題もなく完了した。
以上をもって、Build a Blockchain & Cryptocurrency | Full-Stack Editionの受講を完了した。
■感想
15日間、山谷あったが、何とか予定通り、コースの受講を完了することができた。
コース全体としては、やはり、バグの対処にかなり時間を取られたという印象だ。
コード量もかなりの量を書いたと思う。
1日の勉強量は2−3時間くらいでかなり大変だった。
■良かった点
・非常にタフなコースだが、内容は非常に充実していて達成感は大きい。
・TDDで講義が進むところ。実践的でTDDの勉強にもなる!
・Node.jsやReact, jestなどの充実したフレームワーク、プログラミング言語などの最新のコーディング環境に触れられた
■反省点
・もっと早くにスペルチェッカーを導入していれば良かった。
・コードの意味を理解しながら、コーディングを進めていくことが重要
■次は?
この講座のまとめを作成(明日)、その後、次のコースをスタート。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月08日
【14日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 92%(+7%)
追い込みをかけている。
おおむね、順調に進んだ。
■仮想通貨取引のフロントエンド開発
ブロックチェーンの取引から、マイニングまでをフロントエンドから実行できるよう、実装を進める。ブラウザにアクセスするとインスペクションで下記のエラーが出た。
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
バックエンドから戻り値のjsonデータに想定外な"<"が含まれているとのこと。
バックエンドはテスト済なので"<"は返ってくるはずがなのだが。。。
調査すると、結局、URLのつづりのミスであることに気が付いた。
スペルチェッカーを導入して安心していたが、下線部のところでは、スペルチェッカーのスペルミスの指摘の波線が消えていて気が付かない!
誤)
fetch('http://localhost:3000/api/trransaction-pool-map')
※間違い:trransaction
正)
fetch('http://localhost:3001/api/transaction-pool-map')
んー、これは盲点。
スペルチェッカーを過信してしまった。
こんなんで2時間も悩んでしまった。
だが、最終的には何とか仮想通貨取引のフロントエンド開発を完了した。
■次は?
最後の講義セクションのデプロイを行う。
残り51分。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月07日
【13日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 85%(+6%)
残念ながら、期待していたよりはるかに進みが遅い。
■ブロックチェーンのフロントエンド開発の続き
Babel導入の際にWebページがエラー表示になっている件の調査復旧ではまってしまった。
クラスのメンバー変数の記述が有効にならず、エラーになってしまう。
Babelのバージョンを6から7にあげてもまったく状況は変わらない。
朝から晩まで5,6時間調査をして、最後に.babelrcの場所がおかしいことに気付いた。
ルートに配置すべきところをWalletの下に置いていた。
これでは何をしても設定が有効にならないわけだ。
エラーの解消後は、特に問題なく進んだ。
HTMLあまり書かず、Reactのコードを書く感じで進む。
心なしか講義がスピードアップしているような気がするが。。。
フレームワークの機能のおかげで、少ないコーディングで整ったWebページが作成できているからかも。
フロントエンドということで結果がすぐビジュアルに見えるのがよい。
ブロックチェーンの可視化の部分は完了した。
■次は?
仮想通貨の部分の可視化を行う。トランザクションをWebページからできるようにしたりするらしい。
それが終ると最後の講義セクションのデプロイになる。
あと2日で何とか終わらせたいが...
現状の進みを考えると難しい状況だ。
この講座の後の受講リストの準備は大体完了。どこから手を付けるかを考え中。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月06日
【12日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 79%(+4%)
特に大きなバグもなく進めることができた。
■ブロックチェーンのフロントエンド開発
Reactを使ったフロントエンドの開発を開始。まずはReactの勉強と必要なモジュール、環境の整備からスタートする。
今までのNodeJSを使ったバックエンドとは全く違った感じで進む。
HTMLを書いて、ブラウザーでその結果を確認する、という感じだ。
当然、TDDも出てこないので、コーディング量的には激減し、楽な感じだ。
とは言っても、実はちゃんとHTMLを勉強したことがない...
いきなり、index.jsを追加したのになんか反映されない不具合に遭遇。
src="javascript"を書く場所を間違えていた。
HTMLの値ではなくて、属性のところに書くのだった。
HTMLといっても初心者なので、丁寧に勉強する必要あり。
しかも、その後、babelの導入のところでもWebページが正しく表示されていない。
バグの調査が必要だ。
■次は?
Babel導入の際にWebページがエラー表示になっている件の調査復旧を行い、
ブロックチェーンのフロントエンド開発を続ける。
予定としては、残り3日で完了なので、余裕をもって終わらせるためにも、次は大きく進めたいが。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月05日
【11日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 75%(+10%)
順調に進めることができた。
■Mine Transactions |The Blockchain and Cryptocurrency Backend
一通りの機能の実装を完了し、最後にブロック、ブロックチェーンなどの各レベルでのデータチェックを追加する。
これで、ブロックチェーンと仮想通貨システムのバックエンドは完成だ。
非常に苦労したが、考えてみるとブロックチェーンや仮想通貨のロジックというよりはNode JS,とtypoで苦労したというの感じだ。
だが、いずれにしろ、かなりの達成感を得られた。
すばらしい!
ブロックチェーンや仮想通貨の知識に関しても、difficultyや電子署名、トランザクションプール、各種validationなど、いろいろな知識を得られたと思う。
これの知識をまた、再度整理して、自分のなかで定着させたい。
■次は?
Reactを使ったフロントエンドの開発を開始する。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月04日
【10日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 65%(+5%)
順調に進めることができた。
結局、スペルチェッカーを入れてから、バグをかなり抑えられている気がする。
これに加えて、これまで経験した数々のエラー対処の中でチェックするポイントがわかってきて、早期に対処できている。
なのでバグつぶしの時間が少なくなってきている感じだ。
■Mine Transactions |The Blockchain and Cryptocurrency Backend
続きを進める。
5ステップの処理の実装を終えて、全体を合体して、マイニングの処理を完成させる。
そして、この処理をネットワーク越しに呼べるようにし、マイイングを行えるか確認をした。
問題なし!
次に、トランザクションをトランザクションプールからブロックチェーンに移動し、この結果をネットワーク全体に反映するパートを作成した。
最後にトランザクションの結果の残高の計算を追加。
■次は?
Mine Transactionsのセクションを完了させる。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月03日
【9日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 60%(+7%)
順調というわけでもないが進めることはできた。
結局、前回のエラーを解消するために2,3時間を要してしました。
結局、VSCodeのエディタはjavascriptの文法エラーを検出してはくれるがコードのtypoは検出することはできない。
このため、typoにより、値がundefinedになったり、関数が正しく認識されなかったり、が起こる。
特にこの講座はコードの記述量が多いため、typoのバグで多くの時間を要している気がする。
そこで、スペルチェックのツールを導入することにした。
https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker
導入後は何の問題もなく、コーディング、テストが進む。
今までの苦労が何だったのか?
■Mine Transactions |The Blockchain and Cryptocurrency Backend
仮想通貨のマイニングのセクションに入った。
このセクションでは、マイニング処理を有効な処理を取得したり、マイニングへの報酬など5つのステップに分けて順番に実装を進める。
面白そうだが、2時間半のセクションとなっており、このコースの山場といったとところだろう。
早速、またまた、テストが通らない。
つづりはOKだが、配列に要素が入らない。
結局、コールバック関数を{}でくくっていて中で呼んでいる関数から値が返されず、filterの結果の配列に要素が入らないことがわかった。
考えてみれば当たり前のような気もするがこれまた結構な時間を使ってしまった。
【誤】
[1,2,3].filter(f => {f === 1})
-> []
【正】
[1,2,3].filter(f => {return (f === 1)})
-> [1]
■次は?
ひたすらMine Transactionsのセクションを終わらすべく、進める。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
タグ:Node.js
2019年10月02日
【8日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 53%(+4%)
若干ノルマ(5%)にはとどかなかったが進めることはできた。
受講の際、今まではコードを書きながら視聴していた。
このようにすると内容が頭に入ってこないことがあり、再視聴しなければならず時間を要していた。
そこで、今回から、コードを書く際は動画を必ず停止するようにした。
また、逆に動画を視聴している際はコードは書かないように心掛けて受講した。
良い感じかも。
■Transaction Update Edge Cases
処理金額がWallet金額を超えてしまった場合の対処を行う。
■Create the Transaction Pool and SetTransaction
トランザクションプールのテスト作成。
■API Transactions and Main Transaction Pool
HTTPでの通信層でのTransactionの実装。
PostmanでHTTPパケットを送信して、トランザクションが生成できるかを確認した。
■Handle Invalid Transactions
エラーの場合のHTTPレスポンスの返却フォーマットの改善
■Transaction Update in the API
既存のouputMapがある場合は、それを使用してトランザクションを行う。
一通り、実装は完了したが、テストでオブジェクトがundefinedになってしまう。
原因調査中。
■次は?
まず、バグを解消する。
Transaction Poolの後半を行う。
Transactionのブロードキャストや同期を行う。
そろそろこの後の勉強するネタを準備する。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年10月01日
【7日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 49%(+4%)
若干ノルマ(5%)にはとどかなかったが進めることはできた。
進めることはできているが、とにかく、コードを一生懸命、写してデバッグをする、を繰り返している。
■Wallet Create Transaction
Walletからトランザクション処理を生成する。
コードを書くのに忙しくて、初回では何をしているの理解してなかった。
再度、動画を見直してようやく何をしているかがわかった。
また、テストケースのコメントを見ても理解が進む。
コード自体は特に問題なくテストまで完了した。
■UpdateTransaction with Multiple Outputs
トランザクション後に送り元のWalletの状態の変化などにより更新を行う必要があるのでこの機能が必要。
コード自体は特に問題なくテストまで完了した。
■Improve the CryptoHash
暗号化を行った際に、オブジェクトの参照だと想定外の結果になるため、文字列化を行う。
つづり間違えでバグは出たが特に大きな問題もなく完了。
■Transaction Pool Overview
ノルマを稼ぐため、"Transaction Update Edge Cases"の前にこっちをやってしまう。
トランザクションをためておく場所を設け、ここで保持している情報をお互いに同期するようにする。
説明のみ、コーディングはなし。
■次は?
Transaction Poolを本格的に実装していく。
また、"Transaction Update Edge Cases"も忘れずに完了する。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング