【第96日目】42歳の金のないキモいおっさんがブロックチェーンエンジニアを目指す日記「プログラミング写経デビューしました」

こんばんは。ひろあきです。4日ぶりの更新です。

さて、前々回あたりでNode.jsの勉強をしているとお伝えしましたが、Nord.jsの勉強は一旦やめにしたいと思います。まあ、ドットインストールの学習で詰まったのですよ。レッスン13まではまあまあ順調だったんですがね…。レッスン14でMongoDBに接続することになったのですが、これがうまくいかない。

動画の通りにやればいいドットインストールで詰まるなんてバカかと言われそうですが、ドットインストールの講義で使っているNord.jsのバージョンが古すぎて、動画の通りではダメなんですよね。しかも、もう質問も受け付けていないという鬼畜ぶり。自分でももちろん調べて色々試してみたのですが、やっぱりうまくいかないんですよ。

var MongoClient = require('mongodb').MongoClient,
    settings = require('./settings');
MongoClient.connect("mongodb://127.0.0.1/"+settings.db, function (err, db) {
  if (err) { return console.dir(err); }
  console.log("connected to db");
});

上記のコードmongo.jsを動かそうとすると、以下のようなエラーが出ます…。

ubuntu@ik1-340-30401:~/node_modules$ node mongo.js
module.js:472
    throw err;
    ^

Error: Cannot find module 'mongodb'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/ubuntu/node_modules/mongo.js:1:81)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)

エラーの原因はmongo.js3行目の、("mongodb://127.0.0.1/"+settings.db,の辺りなのは間違いないのですが…。

あと、昨日DaiDaiさんから、Node.jsの次にやる予定だったMeteorは飛ばして、自分の作りたいものをガシガシ作っていきましょうと言われたことでNode.jsに対する学習意欲が落ちていたのもあり、Node.jsの学習は一旦お休みします。

で、今日からガシガシ作っていく予定だったんですが、冷静に考えるとCryptoZombiesを一通りやっただけで、Solidityのコード書けるわけ無いやんっていうことに気づき(笑)、Twitterでフォローしている方が激しくおすすめしていたプログラムの写経をして、Solidityをより深く理解することにしました。

今回写経するのは、もちろんCryptoZombies。写経のルールとしては、
・CryptoZombiesの問題を解きながら、コードをAtomに写経していく。
・コードには一行一行コメントを入れていく。
・CryptoZombiesの解説部分もOneNoteにまとめる。
・わからないところは放置せず、わかるまでググる。
といったところでしょうか。本日写経したものがこちら。

pragma solidity ^0.4.19; // solidityのバージョンを宣言する

contract ZombieFactory {

  uint dnaDigits = 16; // ゾンビのDNAの桁数
  uint dnaModulus = 10 ** 16; // 10の16乗

  struct Zombie { //構造体。複数のデータ型を持つことができるデータ型の一種
      string name;
      uint dna;
  }
}

これしか進んでないのかwって思われた方も多いかと思いますが、調べながらまとめながらだと時間かかるんですよ…。でも、何となく理解したつもりでいた部分(固定長配列と可変長配列など)をしっかり理解できたので、収穫はあったと思っています。

さて、週末ですが、土曜日は平日並みの学習時間しか確保できず、日曜日は旭川方面の野外音楽フェスに遊びに行くので、学習時間0です。おいおい…。

明日はその分集中して学習するぞ~。という訳で今日はこの辺で。おやすみなさい。

〈7月3日【第93日目】の学習内容〉
・ドットインストール『Node.js入門』8〜12
・DaiDaiさん課題(gethの機能やコントラクトをweb3.jsを利用して呼び出す)
・学習時間 約1(Solidity等)+2.25(Node.js等)+0(JavaScript等)+0(HTML・CSS)時間

〈7月4日【第94日目】の学習内容〉
・DaiDaiさん課題(gethの機能やコントラクトをweb3.jsを利用して呼び出す)
・ドットインストール『Node.js入門』13
・学習時間 約2.75(Solidity等)+0.5(Node.js等)+0(JavaScript等)+0(HTML・CSS)時間

〈7月5日【第95日目】の学習内容〉
・学習時間 約0(Solidity等)+0(Node.js等)+0(JavaScript等)+0(HTML・CSS)時間

〈今日の学習内容〉
・ドットインストール『Node.js入門』14
・CryptoZombies写経~Lesson1-6
・学習時間 約2(Solidity等)+1.25(Node.js等)+0(JavaScript等)+0(HTML・CSS)時間

この記事が気に入ったらサポートをしてみませんか?