キモブロ

Please spy check please, Fucking retard

LU分解練習問題ジェネレーター作った

LU分解を手計算するときの練習問題作りたかったので作った。

練習問題を作る、というと実は正確ではなくて、ランダムな行列作ってwolfram alphaで解をカンタンに確認できるようにした、と書くとかなり正確な表現だ、というやつを作りました。
http://kymt.me/src/lu_decomp.html

Heroku Buttonのテスト

やってみた
https://github.com/kimoto/nopaste

とりあえずハマったことをメモ。このアプリはpostgresql addonを使っているんだけど
app.json

    "addons": ["heroku-postgresql:dev"]

って書くと、heroku上ではちゃんと動いてるんだけど heroku buttonがなぜかちゃんと動かない。

    "addons": ["heroku-postgresql:hobby-dev"]

としたらどっちでもちゃんと動いた。謎いけどなんとかなったのでよかった。

Apache Bench (ab) の Failed Requests (length) について

なんかabってそれぞれのリクエストでレスポンスの長さが違うとエラーとして扱うよねっていう話。今更感高い記事だけど検証したらスッキリした!

以下のような検証用のコードを書きます。/ にGETリクエストがきたときに、ランダムな数値を文字列化し、HTTP Bodyでレスポンスしているだけのコードです。

test_serv.rb

require 'sinatra'
get '/' do
  rand().to_s + "\n"
end

試しに実行し、挙動の確認を行います

$ ruby test_serv.rb -p 4649
== Sinatra/1.4.4 has taken the stage on 4649 for development with backup from Thin
Thin web server (v1.6.1 codename Death Proof)
Maximum connections set to 1024
Listening on localhost:4649, CTRL+C to stop

別の端末からcurlにより試してみます

$ curl http://127.0.0.1:4649/
0.860648458247631
$ curl http://127.0.0.1:4649/
0.7143947518258901

どうやら毎回ランダムな値が返却されているようです。さて、本題であるこのようなAPIに対しapache bench(ab)を実行してみます
先ほどcurlを実行した端末から以下のようなコマンドで確認を行います

$ ab -n 100 -c 10 http://127.0.0.1:4649/
...(省略)...
Complete requests:      100
Failed requests:        35
   (Connect: 0, Receive: 0, Length: 35, Exceptions: 0)
...(省略)...

出ました。Failed Requests 35。35件失敗として認識されていて、すべて Length Failed であるようです。本当に「それぞれのレスポンスの長さが違うことによりLengthエラーが起きてること」を確認する術の一つとして、この状態で ab のリクエスト数を1件に 変えて実行してみました。

$ ab -n 1 -c 1 http://127.0.0.1:4649/
Complete requests:      1
Failed requests:        0

無事成功しました。Failed requests 0。こちらのコマンドを3回ぐらい試行しましたがすべて問題なくFailed数は0。

そういえば先程の例で毎回ランダムな数値を返却しているはずなのに、Failed Requestが100ではなく、35だけであるのはなんだかおかしい気がしてきます。
やはり Length Failed という言葉通り、レスポンスの長さだけを見ていて内容の変化を見ていないのではないかと思いテストしてみることに。

今度はきっちりとレスポンスの長さが固定で内容だけがランダムになるようにしてみます。

require 'sinatra'
get '/' do
  random_value = (rand() * 100).round # 0 - 99 の値になるはず
  random_value_s = sprintf("%02d", random_value) # 0パディングします
  "#{random_value_s}\n"
end

こちらのAPIに対してcurlを実行してみた結果が以下です

$ curl http://127.0.0.1:4649/
81
$ curl http://127.0.0.1:4649/
79
$ curl http://127.0.0.1:4649/
60

数値はゼロパディングされているはずなので常に二桁の数値になるはずです。

これに対し、abを実行してみた結果が以下です。

$ ab -n 100 -c 10 http://127.0.0.1:4649/
...(省略)...
Complete requests:      100
Failed requests:        0
Write errors:           0
...(省略)...

うまくいきました。Failed requests 0。というわけでやはりレスポンスのlengthしか見ていないようです。
lengthではなく中身が違っていることを確認するオプションはないのかマニュアルを見てみたけどなさそう?
普通、HTMLのコンテンツは日付情報を含むことも多いだろうからこの仕組みは仕方ないかなとは思います。

ノートの取り方について

さて1年半ぐらい数学の勉強してるけどまだまだ先はながい。
最近ノートの取り方が安定してきたのでまとめてみる。
ちなみにルーズリーフを使ってますが3冊めに突入。STAP細胞の実験ノートみたいにしていきたい。

要点を書くと以下のようになる。
・そのページを書いた時の日付を書く
・そのページに対応する教科書のページ数、節、項を書く (たとえば p107 練習問題 4-3 みたいな感じで)
・ページには見出しをちゃんと書く (たとえば "連鎖律" "LU分解" とか簡単に)
・できるだけ小さい文字で書く (重要)

とりあえずこんだけ。まだ完全にできてるわけじゃないけど(特に最後の)
最近はだいぶ習慣になってきてて、これしとくと後で読みなおして解き方を思い出すとかも出来るようになってきてる。あとノートをさらっとページめくりすることでこういう概念あったなーと思い出して感動し、自分の記憶力の低さに驚愕することも出来て便利。
もう忘れたのかよみたいな。

学校の授業とかみたいな受け身に教わるタイプのノートの取り方と独学で練習問題解きまくるタイプのノートの取り方だとまた違ってくるだろうからとりあえずこれは独学による数学ノートの取り方ということでメモしておきます。

会社で使ってるiMacで定期的にアクティブウインドウのフォーカスが外れる現象があったので調べた

フォーカスが失われるということは誰かがフォーカス持ってるんじゃないかと思って、1秒おきにアクティブウインドウの名前を表示するツールを書いてみた。

結局のところ犯人はSymantecアンチウイルス系のサービスだった。SymUIAgent.appってやつ。
この名前でググったら、まさに俺と同じような問題で同じことしてる人に遭遇。
https://discussions.apple.com/thread/5470393?start=15&tstart=0

決してこれを見てパクったわけではない!!んだけどマジで全く同じことしててビビる。


さていずれにせよ問題の根源はわかったのだが、さすがにこいつをKillするわけにはいかんのでどうしたものかと悩む。何か良い解決策を知っている方はご享受ください。


感想:
なんかくっそ短いコードだけどココに辿り着くまでに結構時間かかってしまった。よくよく考えるとMacアーキテクチャよくわかってなかったし、上部のメニューバーに表示されてるのがアクティブウインドウなのかとかいまいちよくわからない。あとなんか [NSAppplication mainWindow] だとダメだった。フォーカスがあるのはメインウインドウというわけではないのか。難しい。

色判別テストやった

http://www.xrite.com/online-color-test-challenge

スコア3だった。スコア低いほどよくて0がパーフェクトみたい。なんか前やった時もこのスコアだった気がするので特に老化はまだしてないっぽい。


追記:
あかん。キャプチャ撮ろうと思ってもっかいやったらパーフェクトとってしまった。たぶんあれなんだろなー、些細な違いでわかりにくい奴がたまたま合ってたみたいな感じなんだと思う。逆に1回目はたたたま違ってた、みたいな感じだこれ。

あとさー、これモニタの"色彩"設定とかにもよって難易度相当変わるだろうし、逆にこのテストのスコア悪かったとしても色弱かどう断定するにも早すぎるよなー。なんかこのテスト鮮やかな色がない気がするんだけど。RGBでいう255,0,0とかみたいなの。こういうテストには不要なんかな?