大学で講演させて頂く。タイトルに OSS という言葉が入ってたけど、OSS だから、という話は殆ど無かった。
ついでに、買っておいた 1080 を刺した。ミニタワーなので、微妙。
nvidia のドライバを入れると、なんでサーバ機なのに、X 環境ゾロゾロ入るの...。やりたいことは CUDA で計算したいだけなのに...。
ネットがつながらなくなる。
イーサのデバイス名が eth0 から enp3s0 に rename されるらしいんだが(そして、インストール時に、このデバイス名で静的 IP addr を(インストーラが)設定していたんだが)、PCIe 刺すと、このデバイス名が enp4s0 に変わって、それで設定出来ず、ということのようだった。PCIe のなんかの番号みたいなんだけど、この仕様、はまる人いないのかな? ぱっとググっても、さっぱり出てこない。
なんで eth0, ... という名前規則から変えてるんだろ。ネットワークカード追加したときにわけわからなくなるから? しかし、PCIe カードを追加する方が多そうな。
最近の Linux はわからない(過去の Linux がわかるというわけではない)。
箱崎IBM で PRO。1年ぶりの発表。
Ruby会議の資料見直したら、だいぶわかりやすくて、けっこう流用したけど、25分で学会スタイルで喋るとすると、随分難しい。全部作り直していくべきだった。
聞いている人達は、プロフェッショナルな人達だったので、だいぶ理解してもらえた感じ。議論したけど、やはり thread がいいよね、な意見が多かった気が。どうなんだろうな。
HPCな人はどうかわかりませんが,私はかなり有望な気がしました.ただ,COWがうまくできるなら移籍はなくてもいいのかな?とか,いくつかまだ設計チョイスはありそうですね.
あと,Fido とか IO-Lite とかをちょっと思い出しました.
CoW でいいところは、copy で良くて、移籍は例えば大きな破壊したい文字列を Guild で持ち回る、みたいなモデルを考えていました。
ページング使って所有権を持ち回す、というのは、OS 回りで多そうですよね。
いろんな環境で ruby のビルドをベンチマーク。
i7-6700 のマシン(4 core + HT = 8 threads)。
without -j option checkout 0.170000 0.040000 1.950000 ( 2.830169) autoconf 0.000000 0.000000 0.670000 ( 0.697942) configure 0.060000 0.010000 10.410000 ( 17.511733) build_up 0.000000 0.010000 3.210000 ( 26.080962) build_miniruby 0.000000 0.000000 48.420000 ( 48.971836) build_ruby 0.010000 0.000000 0.940000 ( 1.360748) build_exts 0.060000 0.000000 70.520000 ( 75.778432) build_all 0.020000 0.020000 18.690000 ( 19.474295) build_install 0.010000 0.000000 0.640000 ( 1.224005) test_btest 0.020000 0.000000 4.210000 ( 9.435633) test_all 0.010000 0.000000 238.020000 (337.549267) test_rubyspec 0.070000 0.040000 26.160000 ( 59.422938)
with -j16 TESTS=-j16 on 8 H/W threads machine user system total real checkout 0.120000 0.070000 1.740000 ( 2.767964) autoconf 0.000000 0.000000 0.670000 ( 0.688407) configure 0.050000 0.020000 10.420000 ( 17.778197) build_up 0.000000 0.000000 4.340000 ( 9.604833) build_miniruby 0.010000 0.000000 80.600000 ( 12.089534) build_ruby 0.000000 0.010000 1.000000 ( 1.169774) build_exts 0.060000 0.010000 70.860000 ( 76.427638) build_all 0.020000 0.010000 18.760000 ( 16.201804) build_install 0.010000 0.000000 0.730000 ( 1.250504) test_btest 0.020000 0.020000 5.090000 ( 10.368476) test_all 0.000000 0.000000 223.050000 ( 46.234256) test_rubyspec 0.060000 0.060000 26.080000 ( 59.148541)
i7-4930K (6 core x HT = 12 Threads)。
with -j12 user system total real checkout 0.220000 0.040000 2.900000 ( 3.277044) autoconf 0.000000 0.000000 1.030000 ( 1.373152) configure 0.120000 0.030000 29.750000 ( 30.475621) build_up 0.010000 0.000000 6.560000 ( 9.864262) build_miniruby 0.010000 0.000000 112.670000 ( 13.259829) build_ruby 0.010000 0.000000 1.410000 ( 1.522410) build_exts 0.080000 0.040000 116.790000 (117.814550) build_all 0.050000 0.010000 31.160000 ( 26.730176) build_install 0.010000 0.010000 1.450000 ( 1.575139) test_btest 0.020000 0.010000 10.610000 ( 12.340560) test_all 0.000000 0.000000 266.590000 ( 63.716572) test_rubyspec 0.070000 0.030000 41.730000 ( 71.875512) total: 353.83 sec
ラズパイ pi3。-j 等無し。
user system total real checkout 1.030000 0.220000 15.860000 ( 17.211054) autoconf 0.000000 0.000000 7.220000 ( 24.746618) configure 0.220000 0.030000 108.770000 (141.884384) build_up 0.010000 0.010000 22.790000 ( 57.633267) build_miniruby 0.040000 0.010000 494.610000 (504.909866) build_ruby 0.010000 0.000000 9.290000 ( 15.871061) build_exts 0.260000 0.090000 731.840000 (755.079937) build_all 0.170000 0.030000 219.480000 (223.101722) build_install 0.030000 0.010000 7.720000 ( 9.376451) test_btest 0.040000 0.020000 48.660000 ( 67.698547) test_all 0.010000 0.000000 1583.320000 (1676.438025) total: 3493.96 sec
先日(10/3 くらい)、ヨドバシカメラで Sony の RX100 M3 を買いました。良いカメラには縁がなかったので、勉強しながら使っています。
さて、RX100M5 が 10/6 くらい(だっけ?)に発表され、それに先駆け、キャッシュバックキャンペーンというのをやっているのを、そのタイミングで知りました。
http://www.sony.jp/camera/campaign/cb16autumn/
RX100 M3 は8,000円キャッシュバックだそうで、凄い額なので、申し込もうとしましたが、箱が必要になるそうです(具体的には箱についているバーコード)。買ったら箱とか捨ててしまう人なので、もう手元にありません。
そこで、Sony さんにどうにかならないか電話してみましたが、無いと駄目、とのこと。シリアル番号管理が、箱にしかない番号で行なわれているそうです。また、中古で買った奴を排除する必要があるため、とのこと。ヨドバシのレシートがあればなんとかならんか、と聞いたのですが、やはり駄目、とのこと。
ヨドバシさんに聞いてみると、Sony の営業さんと相談してくれる、とのこと。
後日、ヨドバシさんから連絡があり、「今、手元にあるものと、新品(箱付き)を交換することで、キャッシュバックに応募できるようになる。家に我々(ヨドバシスタッフが)届ける」ということでした。さすがに、交換してもらうのも(今使っているのはどうなるんだ...)、わざわざ家に来て貰うのも(出張代だけで1万円分くらいしそう)、ヨドバシさんの割に合わないので、今回は私が折れるとお伝えしました。
うーん、もうちょっとなんとかならなかったですかね。 私が情弱だった、買うならもっとググれよ、という教訓の8,000円だった、と考えるべきかもしれませんが...。
それとも、箱はとっとけよ、というところかなぁ。保証書とかレシートはちゃんと付いているので、買った証明は出来ると思うのだけれど。
ちょうど、いつも行くところでは無いヨドバシだったんで、ちょっと寄って相談する、みたいなことも出来ないし、残念。
しかし、ほんと、交換してたら手元のカメラの運命はどうなってたんだろう。中古美品として出回るんだろうか? それとも、デモ機材とかになったりするのかな。
ビデオ会議のあと、大学で発表練習を聞く。この教育支援によって、Ruby 開発機材を置かせて頂いているのです。
で、3台届いたので設置しました。東京Ruby会議11の余剰資金は、こんな感じで Ruby 開発に活かされています。i7-6700 + 64GB RAM なので、そこそこ優秀。
てきとーな script をずっと回したい、というのは、よくあるケースだと思います。例えば、ちょっとしたクローラーを作るとか。で、そういうときは、真面目にするには、デーモン化したり、デーモン化を手助けするツールを使うと思うんだけど、screen でちょっと起動、みたいなので済ましたい場合があります。コマンド覚えたり、ログファイルの場所を考えたりするのが面倒なので。
手でやるだけなら、単に screen 起動して、当該プロセス立ち上げてデタッチすればいいんだけど(実際、nadoka プロセスはそうやってデーモン可(?)している)、複数台マシンにばらまきたい時には、一々ログインして、みたいなことはやってられない。いや、やってたんだけど、5台くらいになって、音を上げて、ちゃんと調べようと思った。いや、ちゃんとデーモン化方法を調べろよ、って感じなんだけど...。みんな rails サーバのデーモン化とかどうやってんのかね。docker run -d ? foreman? serverengine? heroku 楽だよねえ、ほんと。
で、その方法を色々教えてもらった(下記は、screen session が他に居ないことを前提としています)。
screen -d -m cmd1 # cmd1 を実行する session 作って、すぐにデタッチする screen -X screen cmd2 # cmd2 を実行する window を、先ほどの session # で新しい window として作成する
うーん、これは便利。ただ、cmd1, 2 ともに、そのプロセスが終了すると、window が閉じちゃって、例えばエラーで終了していた状態とかを見ることができない。
なので、bash -c "cmd1; bash" みたいにしておけば、cmd1 が終了しても bash プロセスが残る。
が、C-c で cmd1 を強制的に終了させると、親 bash まで死ぬので(インタラクティブモードじゃないから)、結局 window は残らない。set -i でいけるよ、と聞いたけど、bash じゃ不十分らしい。ので、dash -c "cmd; bash" で行ける、とのこと。なるほど。
で、今更 screen かよ、ということで、2016 年にもなって、やっと重い腰を上げて tmux を初めて使ってみる。おお、グリーン。
tmux new-session -d cmd1 tmux new-window cmd2
とすると、上記と同じことができるようだ。で、remain-on-window on としておけば、cmd1, 2 が死んでも window は残る。おお、これが最強じゃない?
ただ、window を一々 kill-window しないといけないのは、ちょっとダルいね。
どれが一番いいかというと、dash 使って interactive shell に逃がすケースかなぁ。
Vagrantfile(というか Vagrant-cloudstack だけ?) で複数マシンを作るとき、ブロックが遅延で動くということに気づかず、
name = xxx 4.times{|i| name = "xxx-#{i}" config.vm.define name do worker.vm.provider :cloudstack do |cloudstack, override| cloudstack.name = name ...
みたいにすると、worker.vm.provider の、name の参照が、4.times が終わったあとに行なわれておかしなことになる(全部同じ名前になる)。なんでかわからず、とても悩んだ。各スコープに唯一にして解決。