検索
<< 2019年09月 >>
1
2 3 4 5 6 7
8
9 10 11 12 13 14
22
23 24 25 26 27 28
29
30
最新記事
タグクラウド
カテゴリーアーカイブ
月別アーカイブ
プロフィール
peter3qさんの画像
peter3q
エンジニアとして働いている40代の会社員です。 仕事でメインに使用している言語はC/C++です。 プライベートでは、大学生の息子と中学生の娘がいて、 週末、料理をし、毎年、梅シロップを付けています。

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

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

Redis とは

 ・OSSソフト
 ・メモリにデータを保持する方式のデータベース
 ・データベース、キャッシュ、メッセージブローカーとして使用可能
 ・文字列、ハッシュ、リスト、セット、ソート済のセットを取り扱い可能
 ・レプリケーションの仕組みもあり
 ・Mac, Linux, Windowsなど様々なOSに対応している

PubNub とは

 ・オンラインサービス
 ・オンラインチャット、ライブ通知、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[ 上キー 右キー+shift]
...

これで相当、作業がはかどる。

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






全般ランキング

2019年09月22日

【10日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析




進捗100%(+9%)

■ついに10日目に突入!
予定では本日完了になるはずである。
残りの講座の動画の時間は57分となっている。
最後のプロジェクト演習はTwitterのタグ解析プロジェクトだ。

■Twitterデベロッパー登録!
このプロジェクトを進めるためにはTwitterのデベロッパー登録が必要だ。
いきなり敷居が高くなって今日中の完了が危ぶまれたが、申請をすると瞬時にOKが出て何とか登録を行うことができた。

■Streaming プロジェクトの実行
最終回のプロジェクトなのでどれだけ難しいかと思いきや、以外にすんなりと進んだ。
コードが多過ぎるので、jupyter notebookの保存ファイルのコマンドを実行するだけだけであった。
ちょっと拍子抜けな感じ。
しかしながら、これだけの作業だがプログラムをいざ実行するとエラーが出てしまい、うまくいかない。
最初の数回はタイポなどのミスだったが、それを修正しても一向にうまくいかない。QAセクションを見ると類似した質問があるので、とりあえず、この質問をウォッチすることにして、何とか100%として完了とした。


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

2019年09月21日

【9日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析





進捗91%(+10%)

この講座も佳境になってきた。
NLPのより実践的なコードの学習が終わると最後のセクションのSpark Streamingの学習となる。
NLPの学習だが、週末のごたごたもあり、なかなか思い通りに進んでいない。
コードの内容は理解しているのだが、自分でコードを書くところがイマイチ集中できなくて進まない。
Token分割などたいして難しいわけでもないのだが。。。
早く、次のブロックチェーンの勉強に入りたい!

とりあえず、気晴らしに前のチャプターを見返すとAWSのEC2、Databricks,AWS EMR Clusterの部分が未完了となっていることに気づいた。
今回、VirtualBoxを使って学習を行っているので飛ばしたところだ。
これらを完了状態して、何とか進捗は91%を確保した。

蛇足だが、この講座はVirtual BoxでUbuntuを動作させ、Ubuntu上でpysparkのコードを実行して受講を進めている。
しかし、このVirtual Boxの動作が不安定で高い頻度でゲストOSのUbuntuがフリーズするため、定期的にゲストOSの電源をリセットしながら進めている。
だから、余計に時間がかかったり、集中力を下げる原因になっている。

この状態を解消するため、Windowsでも環境を作りたいところだが、Ubuntuはver.17から64bitのみのリリースになっているが、残念ながら私のPC環境ではCPUが古すぎるため、64bitOSのVirtualBox仮想環境を作ることができない、ということが分かった。

さいわい、今、消費税増税前のセールでPCが叩き売られている。
よい機会なので購入をした。
(ただし、現在在庫切れにつき、いつ納品されるかわからない状態だが)


このコースへのリンク
Spark and Python for Big Data with PySpark






全般ランキング

Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: