平日のレコーディングワーク

最近はブログに想いというよりは何かのログを書くことが増えているので、 現時点で思っている事を書こうと思う。

2月の頭から朝に時間を作ろうと考え、飲み会を控え、朝に20分、長いときは50分くらいの
時間を設けるようにしている。

会社近くで時間を設けるのは、会社近くで時間を作る事で電車遅延の影響などを受けないようにするためだ。 この記事も朝の出社前に書いている。

なぜ朝に時間を作ろうと思ったか?

最近は週末も12時頃まで眠る事が多い。その理由は、何かしら手を動かしたい、動かさねばという衝動があり、 寝る前にいろいろ触るようにしている。その結果、夜中の2時や3時まで起きてしまい、結果として土日のお昼頃まで寝ている。 息子は大体AM11時頃に散歩に出かけるスタイルなので、一緒に散歩に行くことすら出来ていなかった。

この生活が2016/12 - 2017/1 頃まで続いていたので、自身の中でもこれではいかんと考えるようになった。 2016/12 の時点では、仕事も慣れてくるので2017/1月頃には元に戻るだろうと考えていたが。結果は何も変わらず。

そこで考えたのが、週末に行っている事を平日の内に少しでもアウトプット、インプットを継続して行える習慣を作りたいと考えたから。

実際に試した事

出退勤の時間のような感覚で、家を出る時間、家に帰って来た時間をログとして残すようにした。 0645 出発 2100 帰宅 外出時間 1415 という記録だ。 これが、現時点で3週間分溜まり、今週書けば1ヶ月のログになる。 実際にレコーディングしてみて驚いた事は、外出時間の長さだ。 8時間労働+1時間の休憩で、計9時間しか労働していないはずだが、外出時間が14時間を下回る事は稀で、 飲み会がある日などは17時間という記録もあった。

改善に向けて

15時間を超えるケースは、飲み会(送別会含む)、残業の2点だ。 例えば、定時退社してそのまま家に帰れば一体何時間になるのだろう。 この数字こそが、実際の通勤(往復) + 労働時間 となる。

飲み会に関しては、現在考えている1ヶ月に2回までというルールを継続したい。 今月は、エンジニア(パートナーとなる可能性がある人)との会食1件、月末に同期飲みがある。 残業に関しては、出来る限りしないように、早めに手を打つようにしていく。 来月頭にリリースがあるプロジェクトに関しては、フォーカスを絞り、範囲、担当を明確にする。 忙しい今だからこそ、逆に残業してしまわないように心がける週とする。

次に書きたい事

ここ2ヶ月くらいやっているポモドーロの実践結果
日々のTodo管理表見直し

とあるブロガーを真似て

(この記事は23分で書いた)

追記(ログがたまったので)

  • 意思、想いではなく、事実を事実として捉えて原因追求→次のアクションに落とし込みたい
  • start / end は意図的に描いてない
  • 出勤前に20分から50分くらいの時間を設けているので、往復通勤+勤務時間+休憩時間+朝の時間を入れると、13時間くらいが最短
曜日 時間 理由
13:45
15:40 残業
16:08 残業
14:10
16:45 残業
17:05 飲み送別会
16:40 飲み送別会
13:55
14:10
14:10
14:30
14:00
15:05 本屋に寄った
15:43 残業
16:10 残業
15:07 外食
15:35
13:50 歯医者
14:30
19:25 残業+飲み

npm run dev で cronss-env.js のError

発生タイミング

  • Laravel5.3 で Vue.js のアプリ生成時に npm run dev でタスク実行

発生したError

> node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

module.js:457
    throw err;
    ^

Error: Cannot find module '/path/to/laravel-src/node_modules/cross-env/bin/cross-env.js'
    at Function.Module._resolveFilename (module.js:455:15)
    at Function.Module._load (module.js:403:25)
    at Module.runMain (module.js:590:10)

修正箇所

  • package.json の cross-env.js のpath を変更

  • 変更後 は cross-env/bin/cross-env.js -> cross-env/dist/bin/cross-env.js

  "scripts": {
    "dev": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
 

参考URL

github.com

余談

  • Laravel を個人Pjで使いたいなーと思いながら放置していたので、触りたかったVue.js と併せて遊び中
  • あと最近はErrorを書くだけのブログになっている。想いとか、今考えている事とか書きたい。
  • 今日からモバイルルーターを使い始めるので、家 && 夜中 以外の条件でもブログ書けそう。

Rails Task で uninitialized constant Error

これが設定より規約 CoC(Convention over Configuration) というやつなのか。

Taskである処理の結果をResult モデルに入れようとしていて、
インスタンスを作る所でexception 発生。
原因はつかめてないが、class 名がぶつかったのか?
この辺りの理解(Rubyの書き方)が全く出来ていない。このあたりはこれからの課題。
今回はResult->Log に変え class Tasks::Log に変更。

class Tasks::Result
  def self.execute
      begin
        logger.info("start")
        r = Result.new <--- ここでException発生
        r. xxxx
        r.save
      rescue => e
        logger.error("#{e} : #{e.backtrace.inject(result = "") { |result, stack| result += "from:#{stack}\n" }}")
      ensure
        logger.info("end")
      end
  end 
end

で発生したエラーログは

uninitialized constant Tasks::Result::Result 

雑感

今回Railsで実装する上で作りたい機能をベースに調べながら作っている。
今までは体系的な学習を意識していたが、いつまでたっても作りたい物が作れなかったので、
今回はあえて、作る物→必要な実装を調べる。という流れで進めている。
ただ、こうやって実装で詰まる事が出てきたので、そろそろRubyのパーフェクトRubyとか 目を通しておこうと思い始めてきた。

追記予定

今後内容を理解したら原因と理由を追記

ActiveRecordを使って生sqlを書く場合

Base.connection.select_all あたりは細かく知りたい

hash = ActiveRecord::Base.connection.select_all("select sum(sub1.diff) from (select diff from differences order by created_at desc limit 5) sub1").to_hash
puts hash[0]["diff"]

Herokuでrails runner が実行されない

local の develop 環境では動いているがheroku(production)では実行されない

結論

  • Rails5 では production 環境の autoload で lib を対象としない
  • application.rb に eager_load を指定し、lib を対象とするようにした

やろうとしていた事

  • rails runner で lib/tasks/xxx.rb の実行
  • xxx.rb の中では puts “debug!” のような処理
  • heroku logs には 以下のログがあり、exit 0 にならない
2017-02-11T17:51:30.739318+00:00 heroku[run.7502]: Awaiting client
2017-02-11T17:51:30.766742+00:00 heroku[run.7502]: Starting process with command `rails runner Tasks::Batch.execute`
2017-02-11T17:51:30.959538+00:00 heroku[run.7502]: State changed from starting to up
2017-02-11T17:51:37.230180+00:00 heroku[run.7502]: Process exited with status 1
2017-02-11T17:51:37.277912+00:00 heroku[run.7502]: State changed from up to complete

試した事

  • develop では 正常に処理が走る
    • rails runner Tasks::Batch.execute
  • production では NG
    • heroku run rails runner Tasks::Batch.execute
  • app の lib ではない directory に配置したファイルであれば、実行出来る
  • puts なども叩ける
    • heroku run rails runner -e production “p\(1\)”
Please specify a valid ruby command or the path of a script to run.
Run 'bin/rails runner -h' for help.

雑感

少しずつ切り分けをしてproduction だけで発生する事から環境依存という事はつかめていたが、
application.rb や config したのファイルをキーにググる事数時間。

参照

Rails runnerを使ってファイルを実行しました - Qiita

rails runnerを使ってみた - Qiita

Railsでlib以下を読み込ませる方法とその注意点 〜名前重複の死を避けるために〜 - Qiita

Rails5: production環境でのAutoloadの廃止 - Qiita

Heroku で bin/rails: No such file or directory

こんな事にハマる人はどこにも居ないと思うが、いつかの自分の為に。

結論

  • ~/.gitignore に /bin/ の記載があり、/bin 以下のファイルがheroku に push されていなかった

HerokuでRailsを起動したら

Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.

Heroku のログを見る

$ heroku logs -t 

2017-02-04T06:51:56.618341+00:00 heroku[web.1]: State changed from crashed to starting
2017-02-04T06:51:58.524827+00:00 heroku[web.1]: Starting process with command `bin/rails server -p 29792 -e production`
2017-02-04T06:52:00.050294+00:00 app[web.1]: bash: bin/rails: No such file or directory
2017-02-04T06:52:00.122536+00:00 heroku[web.1]: State changed from starting to crashed
2017-02-04T06:52:00.116558+00:00 heroku[web.1]: Process exited with status 127

bin/rails がないようだ

なぜか.gitignore に /bin/ の記載が。。。

  • コメントには Intelli J と書いてある。
  • global にしたい気持ちはわかるが、今後はプロジェクトの.gitignore に書くようにする

気を取り直して、再度 heroku push まで

bundle install
git commit -am "xxx"
git push heroku master

雑感

さくっとrails を使おうと思ったら、まさかこんな所で。

2016振り返りと2017目標

毎年恒例になってきた。
2015振り返りと2016目標

Run

  • 目標
    • 600km ( 月50km )
  • 結果
    • 274km ( 月50km達成は1ヶ月 )
    • 昨年との差3.1km
      • もしかしたら、270kmくらいが自身の限界なのか?!
    • 4月にジムに入会し、出社前にトレッドミルのランに挑戦したが3ヶ月目で失速
      • 出社前にジムにいくという習慣を2ヶ月くらい続けられたのは楽しかった

Learn ( TOEIC )

  • 目標
    • over 600
  • 結果
    • 520どまり

Learn ( Other )

  • 目標と結果 ( 2015のブログから )
    • ハミガキ習慣の更新
      • なんだそのアプリという状態
    • Lomdの開発を進めたい
      • 特に理由はないが、進めるモチベーションがゼロだった
    • 実装方法、種類を学ぶ
      • OOP / UML
        • OOPに関してはPHPの復習とデザインパターンの理解
        • UMLについては、特に意識しては取り組んでいない。パターンの説明で確認したくらい
      • Write Code Everyday
        • 特に意識せずで、10月半ばくらいから11月にかけて少々
        • 2016 のGithubでは141Contributions(PublicRepo)
        • BitBucketにも少々
  • 目標にない部分
    • AppleWatchアプリの実装
      • Swift3 + Kanna + Alamofireを利用してWatchアプリで遊んでみた
    • Ruby関係
      • Railsチュートリアルを進めた(未完走)
        • Rails5Verになったので、今年再度試してみる
      • TokyoRubyKaigi, RubyKaigi(京都)に初参加
        • Ruby書いてないのに、結婚後初の1人旅行の言い訳?として京都に行ってきた

他に年始に考えていた事

  • 環境変化
    • 2016/7に引っ越し
    • 2016/11より新しい職場への転職
  • 家族
    • 育休は取得せずに退職し、新しい仕事までの間に意図的に多くの休みを挟んだ
    • 目的は2つ
      • 育休のような期間を作り、少しでも家族との時間を作りたかった
        • 両実家に帰省し、多くの時間と思い出を作る事が出来た
      • 前々から時間をかけて学びたかったフレームワークや、テストとCI、実装方法を理解する

2017目標

  • 追記予定

雑感

いろいろ考えながら振り返ってたら考えがまとまらず時間オーバー
続きは近日