どこで働いているかわからない、無名のエンジニアのわりとどうでもいい日記www

ネットデブリ予定地です。。生暖かい目で今後ともヨロシクwww 技術よりも哲学的な内容が多いですww

変わるということ、成長するということ

変わるというのは
心(精神)・頭(考え方)・体(健康)・行動(習慣)の面で
INSERT・DELETE・UPDATEすることだと思ってる

【成長する方向】
新しい良いものをINSERT
悪いものをDELETE
量・質を改善するUPDATE

【衰退する方向】
悪いものをINSERT
良いものをDELETE
量・質を悪い方向にUPDATE


成長していきたいなあ

Railsのafter_commitの無限ループの罠

Rails5がどうなってるか確認してないが、
Rails4だとafter_commitに恐ろしい罠があり、
after_commit :hoge, :on => :create でhogeメソッド内にupdate処理を行うと無限ループする。

updateじゃなくてcreateなのに無限ループする…。
直観的じゃないからハマりそうなもんなのに、あまりググっても出てこないから書いてみた。
外国人だとstackoverflowでは書いてる人がいた。
stackoverflow.com

データ作成した後で、after_commit内でステータスを変更して、メールを送信する、
みたいなコード書いたら死ぬ\(^o^)/

こんな感じ。本番にリリースすると障害発生((((;゚Д゚))))ガクガクブルブル

after_commit :hoge, :on => :create

def hoge
  self.update(status: "hoge")
  mail.deliver if Rails.env.production?
end

作業効率が0.3倍になる!絶対に入れておかないべき、Chrome拡張機能否おすすめ1選

…はこちらorz

https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%96%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF-googlechrome-%E6%8B%A1%E5%BC%B5/dnlfpnhinnjdgmjfpccajboogcjocdla?hl=ja

こちらの記事にインスパイアされて書いてみたw
http://iphone-kamisama.com/chrome-kakutyoukinou-osusume

Railsのコントローラーでインスタンス変数の一覧

pp instance_variables.reject{|var| var.to_s.include?("@_")}

これでコントローラーで人間がセットしたと思われるインスタンス変数を出力できる

rubyのfile closeで苦労ずww

誰も見てないと思うんですけど、皆さんごきげんいかがでしょうか。

突然ですが、以下のソースのどこに問題があるでしょうか?

f_name = "mogemoge.txt"

f = open(f_name, "w")
f.puts("wana")

system("gzip -f #{f_name}")

実行してみるとmogemoge.txt.gzができますが、
解凍すると書いた文字が消えております。。

答えはfile.closeが必要で、
これがないとopen時の空ファイルがgzipされてしまうようです。

すごく当たり前のことなんだけど、
fileを開いたらcloseしようという話。

こんなくだらないものにハマって時間を無駄にしましたorz

CasperJSとRubyで要javascriptのページをスクレイピング

rubyjavascriptの動作が必要なページをクロールする場合、
seleniumでやろうとしたんだけど、AWSのec2だとfirefoxのwebdriverがインストールできなくて挫折w(ローカルのmacだと簡単だったけど)

ちなみにここをみてもダメポだった

そこで代わりにCasperJSを使ってみたら何とかなった。
(capybaraとpoltergistという選択肢もあったけど…)

CasperJSはPhantomJSをもげもげするライブラリでseleniumに比べると
必要なソフトのインストールは楽。

インストール方法は下記が参考になった。

CasperJSで画面キャプチャをとる | Siguniang's Blog

CasperJsでもげもげして該当ページのHTMLをファイルに保存して
使い慣れてるrubyのNokogiriで保存したファイルをパースしてスクレイピングする感じ。

このやり方であれば大抵のページのスクレイピング
何とかなるんじゃないかな(適当)
多分スマートじゃないと思うけど、とにかく楽。

casper = require('casper').create();
var url = "https://www.facebook.com"

casper.start(url, function() {
    this.fill('#login_form', { email: 'your_email', pass: 'your_pass'}, true);
    this.wait(5000, function() {
        this.echo("ロード中");
    });
});

casper.then(function() {
    var tmp_file_path = "/tmp/body_html.txt";

    var body_html = this.evaluate(function(){
        return document.body.innerHtml;
    });

    fs = require('fs');
    fs.write(tmp_file_path, body_html, 'w');
});

casper.run();

ちなみに実行時はcasperjs --ssl-protocol=TLSv1 hoge.js
みたいに--ssl-protocol=TLSv1つけないとhttpsのページはクロールできないみたい。

自由が手に入るくらいのお金とか不労所得とか

かつて何回かそういうのに憧れて
色々怪しいことにも手を出して(Am○ay的な奴とかFXとかw)、
案の定痛い目にあったりしたけど
いわゆるラットレースを日々行っているサラリーマンになって思ったことを書く。

100万、200万程度では何も生活は変わらないけど
億を超える大金とか不労所得とかあったりすると
生活は一変するし、働く必要はなくなり
時間をお金で買うことは出来るし、
そういうのに誰もが一度は憧れたりするだろう。

でももしそうなったとしても、
結局のところ、人生などたかが80年足らずで
等しく死んでいくんだし、安定など幻に過ぎない。

まあ寿命とか金で買えたり、もっと極端に金で不老不死になれたりするなら
状況は変わるだろうけど、多分俺らが生きているうちにはそれは
来ないだろう。

真の安定など幻と思ったほうがいいと思う。
カイジで今の若者は命を大事にしすぎる、もっと命を粗末に扱わねばならない、
みたいな言葉があったが、まさにそれで
もう少しリスクに挑んだほうが面白いし、輝けると思う。

畢竟、金があっても家とか車とか買ったり、
旅行とかが出来るだけで
次元が違うものが買えるわけではないので、金で買えるものという点では
何も変わらない。

よく金があったら世界一周旅行に行きたいとかいう人がいるけれど、
本当にやりたいならバックパッカーになって今すぐやればいい。
何故、いますぐやらないのかというと
実はそれほどやりたくないからだ。

金があったら夢のためにお店を持ちたいとかいう人がいるけど、
金がなくてもお店を持とうと思えば何とか持てるはず。

起業でも旅行でも本当にやりたい情熱があるなら
金がなくてもやるのである。
そういうこという人はさして情熱はない。
本当は働きたくないだけ、現実に逃避してるだけ。

そしてやはり人間である以上、堕落せず
自分の成長を求めて生きていくべきだと思うのだが
その点において自分を含めた凡人は
仕事を通して人や組織の中で揉まれて成長したほうが効果的に
経験値が手に入ると思う。

自分一人で考えて実践して結果を出し、0を1に出来るような
起業家マインドの人達は型にはまらず
組織の上の方や枠外にいた方がいいだろうし、
そういう人は自由を手に入れるのだろうけど、
その人達はその人達で自由や大金をうまく使いつつ成長し価値を生み出すので
それでいい気がする。

つまり何が言いたいかというと
人間性の成長とか価値を生み出していくことが
人として大切なことで、それは普通の凡夫にとっては
組織や人に揉まれて働くことを意味し、

ちょっと起業家マインドの人とか何かしらの才能がある人は
自分で道を切り開きつつ、組織によらず、または組織の上のほうで
働くことを意味する。

自由や大金は基本的にはそれを手段として
本人や周囲の人にとって
有効に使える人にしか与えられないと思う。

宝くじで大金当たって不幸になる人は
そういう器の人ではなかったのだろう。

自由や大金は欲しいけど、手に入らないのは
それをもっと有効に使える人がいるからだろう。

自分がそれを他の人よりも有効に使える人物になれれば
たやすく手に入るのだろうけど、それは努力よりも
才能や資質やキャラによるところが多いので
まあ今から頑張ってもだいたい無理だw

読み返したら読みづらい
モヤモヤする文だけど……w

結論!
凡人は死ぬまで働けw
金がなかったらできないということはほとんどないので、
本当にやりたいなら今すぐやれw
(今すぐやりたい情熱がないなら金があってもやらない)

そして人生のゴールはドラクエに例えると
ラスボスを倒すこともあるけれど、
レベルが上がって色々できることが増えたり、
面白いイベントをこなしていくことにある

多分はがねの剣を手に入れて、船に乗って行けるところが
増えたあたりが人生でも一番楽しいはず