自分の短期的なモチベーションと、隣人の必要に焦点を合わせ貢献をするという視点から、自分のなりたい像についてのぼんやりとしたビジョンと、サンプルを探すことへの決断。
あと、Rustの勉強記録。
diary
motivation
内的な理由はない。
その時その時で、神の御心に従ったことを行おうと務めているだけである。
短期的な視点で見ればこれでもいいのだろうが、 長期的な行動の理由付けや、自分のなりたい像を抱けていない。 そのため、今、何をすべきかを悩んでいる。
vision
ある程度の期間、覚えているなりたい像としては、次のようなものがある。 その時その時で私は、その場の会話で適切な振る舞いをしたく、それはまるで喫茶店のマスターのような生活を送りたいという感情がある。 (人と関わることは疲れることである一方でとても楽しいことである。)
あいまいなビジョンはあるが、これでは長期的な計画をたてられない。もっと明確なビジョンを持たねばならない。
この曖昧なビジョンをもう少し掘り下げると、以下のような深いコミットメントへの関連性が出るだろう。
- 「もしその時の会話がその後の影響を大きく及ぼすことであれば」、
- 「もしそういった会話が出てこないような環境であったならば」、
そして、自分の今の立ち位置を考える。
- 自分がエンジニアであること
- 技術やエンジニアのことを多少なりわかっていること、
- ビズ側や他者の人間とも多少話せること。
また、周囲の状況を考える。
- エンジニアを相手にすることが難しいと感じる人が多いこと。
- エンジニアとしての要望をうまく伝えることが難しい人がいること。
- 人とのコミュニケーションで心を殺せない人がいること。
上記の箇条書きは引き算的なものでしかない。 何になるべきか、何になりたいか、ではなく、何になりうるか、という視点に寄ってしまう。 特徴はあれども、明確なビジョンが抱けられない。
sample
もし上記の引き算で得られる将来の人物像としてVPoEと呼ばれる職種の人間が候補が適当であると仮定しよう。 (実際のところ、VPoEと呼ばれる人が何をやっているか知らないし、その責務も知らないのだが)
実際にVPoEをやっている人のサンプルを探し、自分のなりたい像について、なんらかのシンパシーを感じるかを考察してみようと思った。
アジャイルマスターやってるとか、採用やってるとか、そういうのじゃなくて、エンジニアのバックアップをして、チームをよりよくしようとしている本物を探そう。
routine
アドレナリンの出るような、よい生活をするために、やっていることこと
- 食事を決まった時間に取る
- そのためには決まった時間に出退勤をする
- 定期的に適度な運動をする
- 毎朝毎晩の体操はやっている(5分もない)
- 日、水、土、これらの日はもう少し筋トレなどをしようと思う
- 毎朝毎晩の体操はやっている(5分もない)
- 肉を食べる、蒸留酒を飲む、ニコチンを摂る
- 酒の量はちゃんとコントロールしなければ大変なことになる
今日の勉強
rust
TRPL pp.165-170
- エラー
- 生きている証拠
- エラーの可能性があれば、コンパイルで指摘し、対処し、それによって頑強になる
- エラーは2種類ある
- 回復可能
- 問題を報告し、処理を再試行するのが合理的なもの
Result<T, E>
- 回復不可能
- 常にバグの兆候
- この時に実行を中止する
panic!
マクロあり
- 例外はRustには存在しない
- 回復可能
panic!
マクロ- 失敗のメッセージを表示し、
- パニックメッセージと
- ソースコード中でパニックが発生した箇所を示唆する
- バックトレースを使用して自分のコードの個所を割り出せる
- スタックを巻き戻し、掃除し、
- スタックを遡り、遭遇した各関数のデータを片づける
- これはやることが多い
- だから、即座に終了させるように切り替えることができる
- スタックを遡り、遭遇した各関数のデータを片づける
- 終了
- コードに存在するバグによりライブラリでpanic!呼び出しが発生する
- e.g., 無効な添え字
- バッファー外呼び出しになり、これはセキュリティ脆弱性につながる
- そこで、Rustは実行を中止し、継続を拒む
- バックトレース
- ここに至るまで呼び出された全関数の一覧
- 読むコツ: 頭からスタートして、自分のファイルを見つけるまで読む
- どのようにパニックを引き起こす値がここにたどり着くか割り出すために、調査を開始すべき箇所が、自分のファイル
- 代わりにコードは何をなすべきか算出
- OSやRustのバージョンの情報とともに、バックトレースを得るには、デバッグシンボルを有効にしなければならない
--release
オプションなしでcargo build
やcargo run
すると標準で有効になる
- e.g., 無効な添え字
- 失敗のメッセージを表示し、
- Resultで回復可能なエラー
enum Result<T,E> {OK(T), Err(E)}
T
,E
はジェネリックな型引数- これを含むので、成功したときとエラーの時に返したい値が、異なるような様々な場面で使用できる
- (型注釈を与えて、コンパイルしたら、コンパイラが型が合わないと教えてくれる)
- これを含むので、成功したときとエラーの時に返したい値が、異なるような様々な場面で使用できる