この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
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
全般ランキング
【このカテゴリーの最新記事】
- no image
- no image
- no image
- no image
- no image
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
全般ランキング
2019年09月30日
【6日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 45%(+10%)
よく進んだ、というか必死に進めた。
そろそろ、折り返し地点なので、早期にさ50%のところまで行きたいという思いだ。
写したコードにいくつかバグがあり、その対処に時間がかかった。
■コード整理
Blockchain関連のものをサブディレクトリにまとめコードを整理する。
これから作成するWallet関連は別フォルダ下でスタートする。
■ウォレットのテストスクリプト作成
もういつものことだが、TDDのため、テストコードを作成して、失敗させることからスタートする。
Walletのクラスが持つ、プロパティの確認やメソッドの確認のコードを追加する。
■ウォレットのコード追加
電子署名のモジュールであるellipticを導入する。
署名の際の暗号化アルゴリズムはビットコインと同じもの(secp256k1)を使用する。
電子署名のVerifyや、サイン実行の機能実装を行う。
■トランザクションの実装
テストがなかなかパスできず長時間、デバッグに時間を使ってしまった。
console.logを使いながら、変数の内容を可視化して、バグの特定を行った。
バグのポイントは下記の2点。
- コンストラクタの{}が抜けていて、値がうまく初期化されていなかった。
- config内の定数定義のexportが抜けていて、変数の内容がundefinedのままになっていた。
動画を見ながら、すぐにコードを書いているつもりだが、書き忘れなどが発生して、以外に時間かかる。
コードの答えを見てしまうのでもいいのだが。。。
まあ、デバッグをするとNode JS自体の勉強にはなる。違う切り口からポイントを理解できる。
■次は?
ウォレット自体の生成と複数に対するトランザクションの実装などを行う。
この後は平日5%、土日10%進捗を目標に進めたい。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
タグ: Node.js
2019年09月29日
【5日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 35%(+8%)
苦労しなかった割には思いのほかよく進んだ。
■API & Network
使用するモジュールの導入方法を以下の2つのうちから決める。- Redis
- PubNub
・OSSソフト
・メモリにデータを保持する方式のデータベース
・データベース、キャッシュ、メッセージブローカーとして使用可能
・文字列、ハッシュ、リスト、セット、ソート済のセットを取り扱い可能
・レプリケーションの仕組みもあり
・Mac, Linux, Windowsなど様々なOSに対応している
・オンラインサービス
・オンラインチャット、ライブ通知、IOTデバイスのコントロールなどに使用可能
・スタータープランなら100万トランザクション、1GBのデータ保持の範囲なら無料で使用可能
・JavaScript,.Net,Obj-C,Swift,Javaなどの言語で使用可能
今回は、Redisを用いることにして、Windows版をインストール。
このセクションは単体テストなかったため、コーディング量も少なく、順調に進む。
index.jsにHTTP通信のコマンドのGET/POSTの実装を入れていく。
テストの際は、コースの始めにインストールしたPOSTMANが活躍した。
1対1での通信を確認後、マルチ通信ができるようにポートを動的に設定できるように修正を行う。
思ったよりも、早くAPI & Networkのセクションは完了した。
ただ1点になる点が見つかった。
自分のテスト結果を見るとハッシュ値の出力がバイナリ形式での出力になっている。講義動画とは違う。。。
これを修正するには自分のコードを見直すか、Githubのこのコースの実装完了の”答え”を見るか、だ。
最終的には修正するが、今、勉強を進める上では支障がなさそうなのでほっておくことにする。
■次は?
ウォレットの作成を進める。
説明を聞くとどうやら今までがブロックチェーンの話で、これからが仮想通貨に関する内容になってくるようだ。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
タグ: Redis
2019年09月28日
【4日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 27%(+4%)
昨日は夜、早い時間に爆睡してしまったため、進みが少ない。
ま、しょうがないか。
■プルーフオブワークの続き
最後に、ブロックチェーンのdifficultyを低くすることにより、簡単に偽装できるようにする攻撃に対しての対策を施す。
いまさらだが、講義を聴く際のほとんどすべての操作をキーボードショートカットで行うようにした。
操作はこんな感じ。
(動作再生中)
→停止 [space]
→VSCodeに移動[Alt+Tab]
→編集対象のファイルに移動[Ctrl + Tab]
→編集
→ファイル保存[Ctrl + S]
→Chromeに移動[Alt+Tab]
→再生 [space]
→停止 [space]
→巻き戻し[左キー]]
→再生 [space]
→停止 [space]
→jestの出力確認
→再生 [space]
→スピードUp[
...
これで相当、作業がはかどる。
VSCodeのショートカット
Udemyの動画プレーヤーのショートカット
Chromeのショートカット
ようや、プルーフオブワークは完了した。
この後は複数のユーザーからこのブロックチェーンが使えるようにする仕組みを作っていく。
■API & Network
このセクション名を見てもあまりピンとこなかったのだが、そもそも、仮想通貨は分散管理であるので、複数のWebサーバーでブロックチェーンを分散管理する必要があるとのこと。
この分散管理のAPIやらサーバーやらを作っていくようだ。
どこまで壮大な作業になるのかわからないが、取りあえず、指示通り、WebアプリケーションのFrameworkであるExpressをインストールから始める。
ものの数分もたたないうちにPC内でWebサーバーが立ち上がり、Express経由でブロックチェーンの
jsonデータを取得できてしまった。Web Frameworkすごい。
動画では、npmでExpressやnodemonのモジュールをインストールする際にバージョンを指定しているが、セキュリティの問題があるかもしれないので、とりえず、最新版を入れておく。
■次は?
明日ぐらいまで、API & Network。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
タグ: EXPRESS
2019年09月27日
【3日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 23%(+8%)
多少の苦労はあるがおおむね順調に進んでいる。
■ブロックチェーンのバックエンドの部分の完了
テストコードが完全に成功にならなくて時間を要している。
VSCodeになれていないせいもあり、メンバー関数のつづり間違えをなかなか発見できず。
Chain Replacementで英語がほとんど飛ばされ、理解してないことに気が付く。
とにかく"chain, chain, chain..."の連呼(ブロックチェーンなのでしょうがないのだが)でこんがらがってきた。
最後までできるか不安を覚える。
だが、なんとか、この章を終えることができた。
テストを成功にするために、デバッグをしていたせいか、少しずつコードの処理がわかってきた気がする。
■プルーフオブワークスタート
前のセクションで英語のヒアリングに自信がなくなってきたので、しばらく字幕をONにして進めることにする。
また、理解を深めるため、特に理論の説明の動画を何回か繰り返し見ることにする。
思い返してみると、この講義ではコーディングの部分がかなり重めなため、
どうしても理論説明→聞くだけ→流すだけ→集中力の低下、となっていた気がする。
何度も見て理解をしたことメモにまとめることにより、自分なりにそしゃくして深い理解につなげたい。
■プルーフオブワーク
プルーフオブワークは1990年代に作られたHashCacheという、スパムメールを防ぐアルゴリズムをもとに作られたもので、ゼロの連続が出るようにnonceを使ってハッシュ値を調整する。
このゼロの連続数に応じて難易度が代わり、計算にかかる時間が代わってくる、だそうだ。
一見、このロジックを入れることでコードが複雑化しそうなものだが、それをいとも簡単に整理しながら、実装を進めてテストを完了させていく。
講義後聞きながら、コードを写していても、結構気持ちいいし、達成感も感じることができる。
あざやか!おもしろい!
■次は?
もうしばらく、プルーフオブワークを続ける。
バックエンドで地味ではあるが、ここがブロックチェーンの中枢の部分かな。
その後はウォレットやトランザクションと続く。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年09月26日
【2日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 15%
必死コーディングしている。
この講座は一貫してTDDでコードを書いてい行く。
目次を見るとわかるがまずテストコードを作り、失敗したのを確認後、中身の実装を書き、テストの成功をもって完了としていくスタイルだ。
したがって、テストコードを書く分、書かなければならないコード量が多い。
講義動画ではいとも簡単にコードを書いていくが、それを理解しながら、写していくはかなり大変な作業だ。
そもそも、コードをただ写すのは無駄な感じがあるのだが、何もしないと結局は何も理解できないまま終わってしまうので、今後のコード量にもよるが当面はコードを写しながら、受講するスタイルで進めることにする。
■ブロックチェーンのバックエンド作成
ブロックチェーンのバックエンドということでまずブロックから作成。
コード量が多いため、無駄な時間を少しでも省くため、ショートカットでこまめにウインドウを切り替えながら進める。かなり、説明が早いので、コードを写しながら説明を聞くのが難しい。
きりが良いところで動画を止めて、コード写しをして、再度、動画を再生するのを繰り返してすすめる。
単体テストのjestは非常によくできている。
ファイルを保存すると自動的にテストが走り、結果を知らせてくれるので、とても助かる。
コーディングの効率化になっていると思う。
GitBashを設定を変えずに使っているせいか、グリーン、レッドの色分けができてないのが残念。
講義動画はMacで撮影されており、その画面上ではカラフルに結果が表示されてよさそうだ。
■バックエンドでチェーンを作る
ブロックをチェーン上に管理できるようにする。
本格的にTDDで多数のテストを書きながら、進んでいる。
日中から座り仕事のためというのと季節の変わり目というところで腰のあたりに違和感を感じながら進める。
立ってみたり、椅子をどけて、床に立ちひざになったり、マッサージしたり、なんとなくごまかしながら進める。
module.exports宣言のエラーがどうしても解消できなくて、しばらく考え込んでしまった。
結局はこの宣言の前の"}" カーリーブレースの対応が良くないせいだった。
VSCodeをよく見ていればわかったはずだが、それにしても、カッコが非常に多い感じだ。
■バリデーションのコード作成
とにかくコードを写すのが忙しい。
その上で、講義動画で表示されるVSCodeの関数の説明などを表示するツールチップがうっとうしい。
今、そこ写したいのに!というときにかぎって大きなウインドウが出てコードを隠してしまう。
まあ、しようがないか。
TDDのテストの書き方が勉強になる。まず、テストのケースを全部書ききって、その後に実際のテストコードを
考えて埋めていく。うーん、ためになる。
■次は?
もうちょっと、チェーンの部分の実装を行い、その後、Proof of Workに入っていく。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年09月25日
【1日目成果】 英語版Udemy講座で学ぶ!ブロックチェーン技術
進捗 9%
順調。でももっと進めたい感じ。
■早速スタート
今回の開発環境はWindowsのみで行えそうだ。
ちなみにJavascript, Node JSは未経験。
■初めてのブロックチェーン
Blockchainの概要をサラッと説明した後、すぐに" https://repl.it/ ”を使ってブロックチェーンの骨組みを作ってみる。
いきなりつまずく。
console.logでBlockクラスの中身が見えない。
cotructor->constructorのつづり間違えでした。
コンストラクタのつづりを間違えてたから、いつまでたっても値が代入されないわけだ。
よって、だから中身も見えない。
つづりか間違っても関数名ということで文字が紫色になるし、実行してもエラーが出ないし、正しく入っていると勘違いしてしまった。
うーん、紛らわしい。
ブロックチェーンの骨組みは…ただのリストですね。
■Javascript Overview
JavascriptはC言語と書き方が似ているのでスキップするという選択肢もあったが、一応やっておく。
"==="(トリプルイコール)のあたりはC言語とは違うので要注意。
やっぱり、やっておいてよかった。この先、さらにややこしいことをやってく上でつまずきのポイントになりそう。
それと、スクリプト&C言語と似ている=>簡単の頭で、再生スピードを上げて聞いたり、他のことに気を取られているとすぐにわからなくなるので、要注意だ。
・このセクションのメモ
・for
・if
・=,==,===,true,false,undefined
・関数
・関数ポインタ
・クラス作成
■開発環境準備
今回はAWSやらVirtualBoxなどややこしい準備は特にない。つまずくところも特にない。
・VSCode, GitBash, Node JS, postman, jestのインストール
jestのバージョンは古いのでいいのか?と思ったが、jestはユニットテスト環境、とのことなのでそのままにする。
■次は?
本格的にブロックチェーンのバックエンドを作っていく。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
タグ: JavaScript
2019年09月24日
英語版Udemy講座で学ぶ!ブロックチェーン技術
はじめに
ブロックチェーンは仮想通貨の基盤技術であり、その他にもセキュリティ分野やフィンテックなど幅広い用途が見込まれている。
このブロックチェーンの基礎知識及びゼロからコーディングし、アプリケーションを作成し公開するところまで行う。
講座名:Build a Blockchain & Cryptocurrency | Full-Stack Edition
このコースの受講動機
・ブロックチェーンの仕組みとコア技術の理解
・ブロックチェーンのプログラミング経験を積みたい
・ブロックチェーンを用いたWebアプリケーションの構築を行いたい
このコース完了の際のゴールイメージ
・ブロックチェーンの仕組みとコア技術を説明できる
・ブロックチェーンのプログラム開発ができる
・ブロックチェーンを用いたWebアプリケーションの構築ができる
コース詳細の紹介
・レクチャー数と時間
・125レクチャー、15時間のビデオ
・言語
・英語(英語字幕あり)
・内容要約
・フルスクラッチでのブロックチェーンを利用した暗号通貨の開発
・ブロックチェーンと仮想通貨のコンセプト理解
・ブロックチェーンによる実際にある課題の解決とアプリケーション構築
・バックエンドシステムをNodeJSで構築
・フロントエンドシステムをReatJSで構築
・一般公開のためのプロジェクトデプロイ
・クリーンでスケーラブルなコードを書くためのベストプラクティス
・受講に際しての前提条件
・コマンドラインとOSの基本の経験
・少なくとも1つのプログラミング言語の知識
・Web開発の方法に精通していること
計画
・15日程度で完了するつもりで受講をする。
このコースへのリンク
Build a Blockchain & Cryptocurrency | Full-Stack Edition
全般ランキング
2019年09月23日
【まとめ】英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
英語版のUdemy講座、"Spark and Python for Big Data with PySpark"の受講を完了したので最初に立てた目標の達成具合、自己評価や、コースをやり終えての感想をまとめる。
目次
1、受講前のゴールイメージとスケジュールの確認2、講義に関して
3、残念なポイント
3、次回に受講に生かしたいこと。教訓とか
受講前のゴールイメージとスケジュールの確認
■受講前のゴールイメージとスケジュールの確認
・環境設定が一通り操作ができる→〇
・Spark, PySparkを用いた解析ロジックを説明できる→〇
・Spark, PySparkを用いて解析を行える→〇
・Spark, PySpark, MLibを用いて機械学習のプログラムを作成できる→〇
・Sparkでの自然言語処理を説明できる→△
おおむね、イメージした通り、マスターできたと思う。自然言語処理とStreamの処理に関してはまだ勉強の余地あり。
■スケジュール
- 10日程度で完了するつもりで受講をする。→10日で完了
大体、1日10%(動画1時間くらい)を目標に進められた。
■良かった点、難しかった点
・良かった点:
・環境準備の部分は1日にたくさんするめることができた。
・一部辛い時期もあったがおおむね計画通りに進められた。
・難しかった点:
・講義の中盤の中だるみが辛い
・講義の山場の後半は逆に目標の1日10%進めるのが難しかった。
・開発環境が不十分でVirtualboxの取り回しに時間を要してしまった。
・環境構築でつまずくとやたらと時間がかかってしまう。
1日1時間動画+コーディングは負荷的にそこそこ妥当な気がする。
■講義に関して
・英語
・全体的には特に問題なし。
・集中力が低くなっていると頭に入らないので注意。中盤、後半は何度か講義を聞きなおした。
・内容
・機械学習に関してそこそこ自信を持てるようになった気がする。sparkメインのつもりだったので想定外だが非常に良かった。
・結構高度であったが、まず初めの1つ目を丁寧にマスターしたおかげでその後も同じパターンの繰り返しが多くスムーズに進められた。
・プロジェクト演習は非常に良かった。これをやる直前にいったん知識の定着の確認をして臨んだため、結果もそれなりにできて達成感も味わえた。
・かの有名なタイタニックのデータ解析ができたのがうれしかった。
・講座のQAが充実しているのでつまずいたところを調べるのに重宝した。
■残念なポイント
・Twitterのプロジェクトが中途半端な状態
・タイタニックの解析をもっと使ってほしかった。このアルゴリズムでやればもっと良くなるとか。
・詰まった場合に自分で独自に調査をしたが、結局QAに書いてあった。
・自分のPC環境いまいち
・AWS EC2,DataBricksとか他の環境を触れられなかった。
■次回に受講に生かしたいこと。教訓とか
・VirtualBoxにあった十分な開発環境での受講→PC購入済
・完全にマスターする必要があるところでは立ち止まってでも十分、コード書きの練習もしてマスターしてから進む(深い理解のために)
・手を動かして実際にコードを書く。動画を見て頭で理解しただけでは不十分。
・コードサマリを作り、これをもとにコードの再現を行う。復習の時も使える。
・疲れているときはさっさと寝る。特に英語の講義は眠いとまったく頭に入らない。
・1日動画1時間で全体スケジュールを見積もる。受講の際は前倒しで進める。辛いときは無理しない(理解度が下がるので)。
・やり残し、心残りの部分を書き留めてリベンジをしたい。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング