何者にもなれていない5年目のエンジニアブログ

Linuxコマンドを制するものは障害対応を制す。# 毎分のアクセス数を数えたい。

(´-`).。oO(22時は毎分どれくらいアクセスきたのかな)

そう。そんな時は、

Linuxコマンドを使おうっ!

例えば、access_logには、

2014:22:01 user_id = 1
2014:22:02 user_id = 3
2014:22:02 user_id = 5
2014:22:03 user_id = 2
2014:22:03 user_id = 6
2014:22:10 user_id = 7
2014:22:11 user_id = 8
2014:22:12 user_id = 9

などと管理されてるとしましょう。 そんな時はこれでok

for i in seq -w 00 59; do echo "2014:22:$i";grep 2014:22:$i access_log| wc -l; done

結果:

2014:22:01 1
2014:22:02 2
2014:22:03 2
2014:22:04 0
...省略
2014:22:10 1
2014:22:11 1

のように出力されます。

まず、

1. for i in seq -w 00 59 で、00 59 まで変数iに入れてfor文で回す。

2. do echo "2014:22:$i"; で時間を表示させる。

3 grep 2014:22:$i access_log| wc -l; その時間の数を数えます wc -lは数を数える。

となります。参考まで

URLにCALLBACK_URLを入れる時はアスキーコードで書かないといけない。

例えば、

(´-`).。oO(gonyogonyo1では、user_id=1で処理を行い、callback_urlにgonyogonyo2として、user_id=5でcall_backするような処理をしたい)

と思った時、普通に考えると次のようなurlになると思います。

http://example/gonyogonyo1?user_id=1&callback_url=gonyogonyo2?user_id=5&callback=1

合ってそうですが、これだと問題が起きます。 CPUは、user_id=5やcallback=1がgonyonyo2の引数なのか、gonyogonyo1の引数なのかわからないのです。要するに、

http://example/gonyogonyo1?user_id=1&callback_url=gonyogonyo2?user_id=5&callback=1

http://example.com/gonyogonyo1?user_id=1&callback=1&user_id=5&callback_url=gonyogonyo2

なのかわからないです。

そのため、二個目のcallback_urlの引数以降は、gonyogonyo2の引数であるということを明示してやるために、

アスキーコードで書く必要があります。

アスキーコードでは、

= ➡ %3D

?  ➡ %3F

& ➡ %26

となります。

なので、 http://example/gonyogonyo1?user_id=1&callback_url=gonyogonyo2?user_id=5&callback=1

http://example/gonyogonyo1?user_id=1&callback_url=gonyogonyo2%3Fuser_id%3D5%26callback%3D1

と書きましょう。こうすれば、CPUは間違いません。

参考まで

git でmergeした時、conflictが発生。それを解消してcommitしてpushしたんだけど、やっぱり無かったことにしたい。

はい。 git でmergeした時、conflictが発生。それを解消してcommitしてpushしたんだけど、やっぱり無かったことにしたい。

こんな時、

(´-`).。oO(まじでやっちまったー。もうどうしたらいいかわからないよー。dふぉdふぉdんfdsf;)

と思うのですが、まずは落ち着きましょう。

実際、merge commitはgit revert -m 1 コミット名で消せます。

ですが、困ったことに再度mergeが出来なくなります。 要するに同じコミット名であるため、mergeを受け付けなくなるのです。

一番簡単な方法ですが、

もし、mergeしたbranchが、自分しか使ってないブランチであった場合は、git reset --hard HEAD^ で一個前に戻して上げましょう。

そして禁断のコマンド git push -f origin ブランチ名 をすれば解決します。 ですが、他にそのブランチを使っている人がいたらただじゃ済まないので、周りをよくみてからよく相談してからgit push -fは使いましょう。

コミット名が被っているから再度mergeできない訳で、git revert -m 1でなかったことにした後、rebaseするなりなんなりしてコミット名を変えて再度mergeするのが一番じゃないでしょうか。

Linuxコマンドを使いこなす。該当件数を数える ( Linuxコマンドを制するものは障害対応を制す)

タイトル通りです。

wc -l の初歩的な使い方です。

簡単な例ですが、大抵アクセスログって下記のような形ですよね

test.txt

2014/01/07 20:34 Aさんがアクセス
2014/01/07 20:35 Bさんがアクセス
2014/01/07 21:43 Bさんがアクセス
2014/01/07 21:50 Cさんがアクセス
2014/01/07 22:20 Dさんがアクセス
2014/01/07 22:21 Eさんがアクセス
2014/01/07 23:22 Fさんがアクセス
2014/01/07 23:23 Gさんがアクセス
2014/01/07 24:01 Hさんがアクセス
2014/01/07 24:02 Iさんがアクセス
2014/01/07 24:03 Jさんがアクセス

(´-`).。oO(22時には何アクセスあったのかな)

ものすごい簡単な例ですが、件数を数えるには、wc -l を使うといいです。

この答えですが、

grep "2014/01/07 22:*" ~/test.txt |wc -l

となります。 分解すると、

  1. grep "2014/01/07 22:*" ~/test.txt で、22時〜の行の抽出を行い、
  2. wc -l で行数を数えてます

wc -l は行数が何行あるのか数えるコマンドで、パイプを使って色々やった後に該当件数を調べる時などによく使われます。

参考まで

続:マンガボックスが面白い件について

引き続き、マンガボックスいいなと思ってる件です。

アプリがリリースされてから、日が経ち、ランキングというものが乗ってました。

http://fukurouapp.com/調べてみた/これがマンガボックスの人気マンガベスト30だ!ソ/

⬆のサイトに漫画のランキングが乗ってるんですが、ちょっと自分の想像していたのと違うかなという印象です。

自分は1番はビリオンドッグズかなと思っており、2番3番に穴殺人や、初恋心中などが入ると思っていたのですが、

1 奴隷区
2 穴殺人
3 天空侵犯
4 GREEN WORLDZ
5 高遠少年の事件簿
6 寸劇の巨人
7 ビリオンドッグズ
8 初恋心中
9 僕のおじいちゃんが変な話する!
10 セーラー服、ときどきエプロン

となってます。

1位と5位と6位は事前に認知フィルターがあり、購読者がその分増えるので、除外すると、

1 穴殺人
2 天空侵犯
3 GREEN WORLDZ
4 ビリオンドッグズ
5 初恋心中
6 僕のおじいちゃんが変な話する!
7 セーラー服、ときどきエプロン

となります。

やっぱり女性が主人公系の漫画多いですね!!

useとrequireの違い

useはモジュールを先にインクルードしてrequireはその処理が来たときにincludeします。 先に処理するか後に処理するかの違いです。

requireは処理がきてからでないとわかりません。ただメモリ量はその分、少ないです。 useはその処理がこなくてもインクルードするので、include先にエラーがあればわかります。