mozyのかきおき

mozyの読書感想文や思考置き場

サイトの死活監視には updown.io が最強&最高な件

まずはこのサイトをみて欲しい
Google のモニタリング状況のページです

updown.io

f:id:mozy_ok:20190110181350p:plain
Google のモニタリング

公式サイト

updown.io

SIMPLE & INEXPENSIVE WEBSITE MONITORING の名の通りシンプルでわかりやすく、かなり直感的なモニタリングサービスとなっています。
多言語対応もできています。

金額

ズバリ、5サイト を1分ごとに監視で 月2.93€ (370円程度)
安すぎる!!

使い勝手

サインインは、GitHub or Google でも可能です。 便利!!

f:id:mozy_ok:20190110181134p:plain
設定画面はこんな感じで直感的

まとめ

安くて、使い勝手が良くって即導入できる。
三拍子揃った死活監視サービス updown.io を使ってみるのいかがでしょうか!

Railsのテストを CIでかけた時に Capybara のエラーがでる原因

経緯

RailsのテストをCIでかけた時に以下のようなエラーが発生した

error:
UserRegistrationsTest#test_hogehoge:
Capybara::ElementNotFound: Unable to find option "piyo"

原因

システムテストはアプリのユーザー操作のテストに使えます。テストは、実際のブラウザまたはヘッドレスブラウザに対して実行されます。システムテストではそのために背後でCapybaraを使います。

Rails テスティングガイド | Rails ガイド

とな

関連する部分をGistにまとめた

https://railsguides.jp/testing.html#rails%E3%82%92%E5%8D%B3%E5%BA%A7%E3%81%AB%E3%83%86%E3%82%B9%E3%83%88%E7%94%A8%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B · GitHub

npm run watch と npm run watch-poll の違い

違い

npm run watch と npm run watch-poll の違いは、watchは ファイルの変更をみている。 (特定のシステムの場合はうまくいかない)
watch-poll は 変更を 1秒単位などで 定期的に確認をする。

watch will listen for file changes, however, on certain systems this won't always work.

watch-poll periodically checks (polls) for changes e.g. every 1000ms it will manually check to see if any files have changed.

参考

https://stackoverflow.com/questions/44127688/difference-between-npm-run-watch-and-npm-run-watch-poll

Ruby 初めのいーっぽ 【速習編】

Ruby 初めのいっーぽ

MENTAのメンティさん向けの速習メモ

全てがオブジェクト

Rubyオブジェクト指向言語のため、全てがオブジェクト

  • 文字列、配列、数値やnil、trueとかも含めてぜーんぶオブジェクト
  • オブジェクト.メソッド 引数 みたいな感じでメソッドを呼び出すことができる

例: 文字列 1.to_s, nil nil.to_s などなど

変数名は小文字のスネークケースで

例: special_price = 200 のような感じで _ で小文字を区切る

  • 変数名には、小文字アルファベットと数字、アンダースコアなどが使える
  • 数字から始まる変数名は使えない
  • 漢字とかひらがなも使えるが一般的ではない

文字列はシングル or ダブルクオーテーションで囲む

  • ダブルクオーテーションで囲むと式展開できるようになる
    • puts "hello #{name}" のようにname の内容を展開できる

数値

  • アンダースコアを含めることができて無視されるので桁区切りに便利
    • 1_0001000 と認識される
  • 他の言語でいう、インクリメントなどの ++, -- はない
    • +=, -= はあるので使える
    • 例: n += 1 など
  • 丸め誤差に注意
    • 0.1 * 0.3 == 0.3 は falseになる
    • rational クラスを使うといい
    • 例: 0.1r * 0.3r == 0.3 は true

真偽値

  • false または nil は偽
  • それ以外は全て真 となる
    • nil が偽になるメリットは条件分岐がスッキリ書けるところにある

if文

  • elseifelsif となるので注意
  • elsif や elseは省略可能
  • 後置if が便利
    • 例: 1日ならポイント五倍 point *= 5 if day == 1 てな感じ

メソッドの定義

  • 戻り値
    • return は使わない方が主流
    • 最後に評価された式がメソッドの戻り値となる
    • return はメソッドを途中で抜けたいときに使われることが多い
    • 引数がない場合は メソッド名の後に() をつけない方が主流

文字列

  • %記法を使うとシングル ダブルクオーテーションをエスケープしなくても使える
  • %q!はシングル %Q!はダブルクオーテーションで囲んだのと同じくなる
    • ! 以外でも ? とか ^ とか任意の記号を区切り文字に使える
      • かっこを区切り文字に使った時は対応する閉じ括弧になる
  • 例: puts %q! He said, "Hello."! => He said, "Hello."
  • 例: puts %Q< #{name} said, "Hello."> => Taro said, "Hello."

unless文

  • if文と反対の意味をもつ文
    • ただし、elsifに対応する elsunless は存在しない
  • 条件文が偽になった時だけ処理を実行する

例: これらは同じ意味

status = 'error'
if status != 'ok'
  '異常'
end
status = 'error'
unless status == 'ok'
  '異常'

case文

  • 複数条件を指定する時は、elsifをなんども書くよりもcase文で書いた方がシンプル
  • when節に複数の値を指定できる
    例:
name = '太郎'
case name 
when '太郎', 'Taro'
  'とっとこハム'
when '次郎', 'Jiro'
  'ラーメン'
else
  '謎だ'
end

三項演算子

  • 式 ? 真だった時の処理 : 偽だった時の処理 と書ける
  • 例: n >= 18 ? '成人やん' : '未成年やん'

requireとload

  • ライブラリなどを読み込む時に requireを使う
    • require ライブラリ名 などと使う
    • 再度 requireを しても読み込み済みのためfalseが返る
  • load を使うとそのファイルを呼ぶごとに毎回指定したファイルを読み込む
    • load ファイル名.rb などと使う
    • load は .rb を省略できない

requireに関連して

  • require_relativeを使うと、パスなどがそのファイルが存在するディレクトリ起点となる
  • requireRubyを実行しているディレクトリがパスの起点となる

海外のエンジニアとの交流の仕方

経緯

先日もブログ記事にしたけれども、ここ一年くらいは英語を使ってエンジニアリングをする試みを続けていて、TwitterとかでHackerNewsとかをシェアしているユーザをテキトーにフォローして話したりしていた。
その中で、めっちゃいい方法がわかったのでメモ

メモ

Twitterとかで見つけたエンジニアにDM送って、俺、日本のエンジニアなんやけど、Skypeとかで話そうぜって言ったら結構乗り気な人が多い。
アニメとかについてめっちゃ聞かれるから答えると、いっしょに笑えるのと、インドとかアメリカとか、世界各地のエンジニアリングの状況を知れるのはすっごく面白い。
代わりに日本の状況を教えてあげることにしている。 最近は、僕の周りではVue.jsとか流行ってるよーって言ったら、知ってたけどあんま使ってないな〜🤔って感じだった模様。
あと なでしこ(言語) を教えてあげたら爆笑していた。笑

話題が課題

んで、だいたい話をしていると話題がなくなってくるのが課題だったんだけれども、ちょうど今日、ポッドキャストを流しながら語ればええなと気付いて、
SEDaily を流しながらトピックごとにどう思った〜? って話すと、話が弾んだり、あちらの現場知識を聞けて、めっちゃ参考になって超有益でした。オススメです!

英語力

基本的に 基礎的な英単語とよくある言い回しだけ分かれば会話ができると思います。
エンジニアリング関連の単語はだいたい共通で通じるし、目の前のGoogleで検索して話せば理解できるし問題ない感じ。
向こうも僕たち日本人エンジニアが何やってるのかすっごく気になるって言っていたので、どんどん外のエンジニアとオンラインで話してみるといいと思います。それできっと英語力も向上するし、hiring につながるかもだし、一石二鳥だね。

Pythonのデコレーターとは

f:id:mozy_ok:20181111202856j:plain

経緯

プログラミングに関して教えていたところPythonのデコレーターってなんやねんって聞かれたのでメモ

デコレーターとは

ある関数があったらそれを修飾して使えるようにするって概念がデコレーターで、これを使うことで、既存の関数の処理の前後に自分の好きな処理を付け加えることができるのがメリットだと思う。
そうすると、どっかのライブラリが提供している関数を呼んだときに自動的に実行される処理を追加できるとか、そういう便利なことができる概念って感じ。

使い道

なので使い道として例をあげると、
ある適当な文字列から、記号をのぞいて、大文字の英字列が欲しいなぁって気分だとしよう。
( men:ta%:abc から MENTAABC を取得したいってこと)

んで、どっかのライブラリが文字列から記号を消して文字だけを返してくれる機能を提供しているとして、それを使うと
men:ta%:abc から mentaabc が取得できる。

それに、文字列を大文字に変換する関数デコレーターを作って
mentaabc から MENTAABC が手に入ってやったねって感じ。

こんな感じに、自分でライブラリを拡張するみたいな感覚で使ったりする

追記
開始時間と終了時間をログに出す処理のデコレータを作成して、対象の処理複数個にあてるてのも使いどころとしてあると、おしえてもらった。
めっちゃ便利や.

参考

Pythonのデコレータについて - Qiita

一人アドベントカレンダーを走り抜けたぞ

結果はっぴょー

f:id:mozy_ok:20181226222830p:plain
1日も落とさず走り抜けたぜ!

adventar.org

終えてみての感想

途中体調が悪くなったりとなかなかしんどいタイミングはあったが、とにかく書いて進めるだけだって思っていたら自然と走り抜けられましたぁ。ちょっと疲れましたぁ。

元はといえば、こんな思い立って1分で書いたようなブログ記事から始まったのでしたね。忘れていましたw

mozy-ok.hatenablog.com

この記事にあるように、翻訳とかOSSに貢献もしちゃおう ってのはできていないですけれども、OS自作入門を読んだことで低レイヤーに関しての技術や知識は間違いなくつきましたし、良い経験となりました。

途中から23時以降はブログを書く時間と決めて死守するようにしたところ、どうにかその日中に書き終えることができました。
本来なら、書く内容なども準備しながら進めなければいけないのでしょうけれども行き当たりばったりでどうにか駆け抜けられたので、来年はもっと準備をして虎視眈々とアドベントカレンダーを書いていこうかなと思います。


実は私は、去年初めてのアドベントカレンダーに参加をしたのですが、そのきっかけになった 株式会社Silbird の皆さんにもう一度こんな面白いカルチャーを教えてくれてありがとうございます! と言いたいですね。
今思い返すと、とってもいい思い出になってます。見返すと情熱的で、なんだか恥ずかしい文章ですね 笑
初心忘れるべからず、情熱的なエンジニアとして今後もがんばって行きますぞー!!

mozy-ok.hatenablog.com

上の記事から抜粋

あなたが成功したいなら、プライドを飲み込み、外に出て行って、自分がバカに見えるのを恐れないようにしなければならない。有名な俳優、ミュージシャン、プロスポーツプレイヤー、講演者でも、かつてはうまくやれていなかったのだ。それでも、ベストを尽くし続けることで、とてもうまくできるようになった。結果はいずれやってくる。何かをずっとやり続けていれば、うまくならないではいられないものである。そうなるまで、長く生き残らなければならないだけのことだ。 そして生き残るための方法は、気にしないことである。バカのように見えることを恐れてはならない。

バカにされるのを恐れるな! - mozyのかきおき

この通りだと思いました。とにかくやり続けていればきっといつか日の目をみるのでしょう。きっとね。

ベストを尽くし続けることで、とてもうまくできるようになった。結果はいずれやってくる。何かをずっとやり続けていれば、うまくならないではいられないものである

最後に

最後に、このアドベントカレンダー企画を眺めたりコメントをくれたりした、現実世界の友人の皆さん、仕事で関わっている皆さん。WBEWの皆さん。見てくれた一人ひとりのあなた、本当にありがとうございました。
やはり皆さんの反応がないと書き続けるモチベーションは保てなかったでしょうし、とにかく皆さんが反応してくれたことによってぼくは25日間駆け抜けることができました。ありがとうございました。
世界にとってはちっぽけな25日の出来事かもしれないですが、ぼくにとっては大きな25日間でした。
それではみなさま良い年末を! また来年もお会いしましょう!