villagerHの日記

勉強したことや苦労した事などを書き綴ります

ゼロ秒思考

お仕事が微妙に忙しかったりでなかなか作業の時間が取れてませんがとりあえず本だけは読んでます。

今回はこの本を買って読み始めました。

ゼロ秒思考 頭がよくなる世界一シンプルなトレーニング

ゼロ秒思考 頭がよくなる世界一シンプルなトレーニング

タイトルにある0秒で考えるというのは究極系なので難しいかもしれませんが
それに近い形で考えられるようになるためのトレーニングの本です。

前半は思考が早くなるとどういったメリットがあるのかということが書かれています。

デスクワークの人は手を動かしているようでいて実際は思考している時間が長いということが書かれており、確かにと思いました。
そこの思考時間が短くなれば作業効率が上がり、時間にも余裕ができるのでいいことだらけだよといったことすね。

中盤から後半にかけては実際にどのようにすればそういった思考力が身に付くかといったことが書かれています。

レーニング方法としましてはA4サイズの紙にタイトルとそれについて思ったことを4~6行程度1分間メモとして書き綴るだけという非常にシンプルなものです。

これを1日10ページほど繰り返すことで思考力が鍛えられるらしいです。


最近は技術系の本だけでなくこういった自己啓発系の本を読むのが楽しくて読み漁っているのですが、
読んだものについては実践していかないと意味がないと思うので実際にも行っています。(全部とはいきませんが…)


早速昨日からメモ書きトレーニングはし始めました。
文中にも書いてありましたがやってみると案外難しいです!

まだ2日目ではありますが最初の方は文章が書けずに単語を羅列するだけな感じだったのが少しずつ文章が出てくるようになって早くも効果を実感できている気がします!

ゲーム感覚でできるのでやっていて面白くもあるのでこれからも続けていきたいと思います。


やってみて改めて思いましたが私は漢字が苦手でパッと出てこないです…
最近書くことも少なくなってしまいましたしそこも含めて勉強したいですね…

嫌われる勇気

嫌われる勇気―――自己啓発の源流「アドラー」の教え

嫌われる勇気―――自己啓発の源流「アドラー」の教え

面白いと教えてもらったので嫌われる勇気を読みました。

タイトルだけは見たことがあったのですが中身を知らなかったのでタイトルから推測するにマネジメント関連の本なのかな?と思っていたのですが心理学の本だったんですね。

まず簡単に本の感想ですが対話形式なので小説を読んでいる感覚で読めるので非常に読みやすかったです。

本の中身に関してですが非常に深く考えさせられるな…と感じました。

以下個人的に特に印象に残った部分です。

お前の顔を気にしているのはお前だけ

人は他人のことなんてほとんど気にしていないよ。ということですね。

自由とは他社から嫌われることである

タイトルの嫌われる勇気にも絡みます。
人は誰しも他人から嫌われたくはないです。
でもだからといってすべての人から嫌われないように振る舞っていては自由に、幸せにはなれません。
人に嫌われる勇気を持って行動することで初めて自由になり幸せと感じることができます。

「いま、ここ」に強烈なスポットライトをあてよ

大切なのは過去でも未来でもなく「いま」。
今を必死に生きることで結果としてより良い未来に繋がる。



全てを本の教えの通りに、とはいきませんが上に挙げたことなどは心打たれました。
こういったことを意識しつつより成長していきたいですね。

Python web3

Pythonでのコントラクトへのアクセスプロジェクトを少しずつですが作成し始めました。

軽く調べたりしましたがJavaScriptからアクセスする形よりも資料が少ないので非常に苦戦しそうです!

簡単にですが現時点でなんとなく理解したこととかをまとめてみます。

Pythonにもweb3のライブラリがあるのでそれを用いることでアクセスすることが可能です。

インストール

pip3 install web3

実際に使用するための準備

from web3 import Web3,HTTPProvider

web3 = Web3(HTTPProvider("http://127.0.0.1:7545")) # Ganacheなどで動かしているアドレスとポート

これだけでローカルで動作させているブロックチェーンには接続できます。
blockNumber = web3.eth.blockNumber
とかやれば情報が取得できるので確認できます。


これだけだとコントラクトのメソッドを呼び出せないので自作したコントラクトのインスタンスを取得する必要があります。

JavaScriptの時は以下の感じでした。

import artifacts from '../build/contracts/UnitFactory.json'
const UnitFactory = contract(artifacts)

大変今更なのですが今回Pythonを触ったことでここの処理が何をしているのかようやく把握しました。

  • Truffleでmigrateを行うとbuild以下のフォルダにjsonが吐き出される
  • 吐き出されたjsonにはアップロードしたコントラクトのアドレス等の必要な情報がjson形式で保存される
  • そのjsonをweb3に渡すことでインスタンスが取得できる

というような形になっているようです。

Python版も流れは一緒のようです。

ドキュメントを見ると

# get bytecode
>>> bytecode = compiled_sol['contracts']['Greeter.sol']['Greeter']['evm']['bytecode']['object']

# get abi
>>> abi = json.loads(compiled_sol['contracts']['Greeter.sol']['Greeter']['metadata'])['output']['abi']

>>> Greeter = w3.eth.contract(abi=abi, bytecode=bytecode)

abiとbytecodeを生成してますがtruffleの吐き出したjsonを覗くとその辺りの情報はありそうなのでjsonをそのまま読み込めば使えそうです。

json読み込み処理

import json

f = open("UnitFactory.json", 'r')
json_data = json.load(f) 

読み込んだjson_dataを投げてインスタンスを生成してみます!

UnitFactory = web3.eth.contract(json_data) 

実行してみたらエラーが出ました!

    UnitFactory = web3.eth.contract(json_data)
  File "/usr/local/lib/python3.7/site-packages/web3/eth.py", line 438, in contract
    return ContractFactory(address)
  File "/usr/local/lib/python3.7/site-packages/web3/contract.py", line 286, in __init__
    self.address = normalize_address(self.web3.ens, address)
  File "/usr/local/lib/python3.7/site-packages/web3/_utils/normalizers.py", line 212, in normalize_address
    validate_address(address)
  File "/usr/local/lib/python3.7/site-packages/web3/_utils/validation.py", line 152, in validate_address
    raise TypeError('Address {} must be provided as a string'.format(value))

アドレス周りが原因っぽい感じですが…?

もやっとしてますが時間が無くなってしまったので今日はここまで><

音楽サービス

ブロックチェーンを用いた音楽サービスが開始されたそうで。

japanese.engadget.com

少しずつではありますがこうった実際に技術を使用したサービスが出てくるとワクワクして期待が持てますね!

息抜き

今日は作業をお休みして息抜きというか気分転換という感じで本を読んでました。

「すぐやる人」と「やれない人」の習慣 (アスカビジネス)

「すぐやる人」と「やれない人」の習慣 (アスカビジネス)

何か面白そうな本はないかなと本屋に立ち寄ったところこちらの本を見かけ、手に取ってみたところ面白そうだったのでその場で購入しました。

すぐやる人が行っているパターンについて色々書かれています。

おそらく他のビジネス書にも似たことは書かれているのかなと思うのでビジネス書をよく読む方にはあまり面白みがないかもしれませんが
私みたいな今まであまり読んでこなかった人間からすると面白いです。

1つの項目が4ページほどでまとめられているので非常に読みやすい点が良かったです。

ただ読めばよいというものでもないので書かれていたものの中から1つでも多く取り入れていけたらなと!

今後について

solidityでコントラクトを作成してフロントエンドから直接呼び出す処理はできました。

なので今度はバックエンドからの呼び出しを作ってみようかなと思ってます。

おそらくサービスレベルでスマートコントラクトを用いる場合はものにもよるんでしょうがまだまだRDBとの併用になるのかなとも思いますし。


いい機会なので趣味レベルでちょっと触った程度しかないpythonの勉強も兼ねてpythonで使って作ってみようかと思って少し調べてみました。
web3のpython向けライブラリがあるようなのでそれを使えば割と簡単にできそうな気が!

一区切り

一旦作っていたスマートコントラクトの作業が一区切りしました。

フロントエンドはさっぱりなのもあって見た目は残念ですがとりあえず最低限の形にはなったかなと。

リリースするためのアプリとかを作っているわけではないので1つのものにこだわるよりもまた新しいことをやった方が勉強になるのかなと思うので今回のプロジェクトはひとまず一旦終了とします!
気になったりしたこととかがあれば手を入れはするかもしれませんが!