2015年8月4日火曜日

[Ruby][Linux] 同名のジョブが複数走っている時、区別の手助けになるスクリプト lsrun

研究で、PC に大量のジョブを流すことがあります。
で、どのジョブが終わっている(落ちている)か、走行中かを確認することがあります。

もし、同名のジョブを複数実行している場合、top や ps では区別が付きません。
たとえば、top したときに一番右のカラムが全部 ./a.out とかになってしまいます。

バイナリの名前や引数をジョブごとに変更すれば
区別が付くようになりますが、いちいちやってられません。

で、どうするかというと、ここでは
ファイル /proc/(pid)/cwd がプロセス番号 pid のジョブが走っているディレクトリへの
シンボリックリンクになっていることを利用します。

少なくとも私の場合、同じディレクトリ内で同時並行にジョブを
走らせることはなく、実行ディレクトリのパスは必ず違うからです。

シンボリックリンクの中身を ls -l などでいちいり覗くのは面倒くさいので、
「自分が実行している」「CPU 利用率の高い」ジョブの
実行ディレクトリの一覧を出すようにしたのが以下の Ruby スクリプトです。
勝手に lsrun と名付けました。

#!/usr/bin/env ruby

# これより CPU 使用率が高いプロセスだけ表示
THRE_CPU_USAGE = 10.0
username = ENV['USER']

myprocs = `ps aux | grep #{username}`.split("\n").map{|line| line.split(" ")}

myprocs.each{|proc|
  cpu_usage = proc[2].to_f
  if cpu_usage > THRE_CPU_USAGE then
    pid = proc[1].to_s
    command = proc[10..-1].join(" ").to_s
    cwd = File.readlink("/proc/#{pid}/cwd")
#    puts [pid, cpu_usage.to_s, command, cwd].join(" ")  # 1 行で表示したいとき
    pid = sprintf("%5i", pid.to_i)
    puts [pid+" "+cpu_usage.to_s, "  "+command, "  "+cwd].join("\n")
  end
}

実行結果はこのようになります。

12345 99.9
  ./a.out
  /home/username/work/exp01
23456 99.8
  ./a.out
  /home/username/work/exp02

前から順に、pid、CPU 使用率、実行コマンド(引数がある場合はそれも含む)、実行ディレクトリ、です。

私は見やすさのためにこういう出力形式にしましたが、
1ジョブを1行で出力したい場合は
if ~ end の中にあるコメントアウトを外して、
その後ろ2行を削除してください。

2015年7月14日火曜日

[travel] プラハのプリペイド SIM で利用停止に遭った?

前回、チェコのプラハ市内の Vodafone で
プリペイド SIM を購入し、Nexus5 で動作確認するまでを行いました。

速度が良好だったので、いろいろな用途に使っていたところ、
ある日、使えなくなってしまいました。

状況をちゃんと理解していないのですが、
利用停止にされた可能性が高いです。

Vodafone から送られた SMS の内容とその訳は、
前回同様、ブログの末尾に付録として示します。

どれくらい使ったらこうなったか?


使えなくなって少し時間が経った時の
モバイルネットワーク通信の累計のグラフです。

ちなみに 1.5 GB、2 GB の警告、制限は
私が使い過ぎないようにと勝手に設定したもので、
SIM とは無関係です。


6/23 に使用開始して、
7/1 の未明に Vodafone からいくつか SMS を受け取りました。

その後、速度計測(なぜかこのときだけ数十 Mbps 出た)をしたので、
最後に跳ね上がっています。

6/23-30 の 8 日間で 1.2 GB くらいとすると、
1 日に 150 MB くらい使っていたことになります。

利用上限の規定はどうなっているのか、
この SIM の場合は分からないのですが、
別途借りていたモバイルルーターが
3 日で 400 MB 使うと利用停止にされうると聞いたので、
それ、もしくはそれに近い制限が適用されていると推測されます。

ただ、最初の方がよりたくさん使っていたのですが、何もありませんでした。
制限を越えたら必ず適用される、というわけではないのかもしれません。
月をまたいだのも関係しているかもしれません。

いつ解除されるか?


帯域制限を受けたと仮定した場合、
最初の SMS を受け取ったのが 7/1 の 0:32、
2 時間くらい後に来た SMS は
ちょうど 24 時間後の
7/2 の 2:50 に「アクティブなサービス」と言っていました。

制限は 24 時間、あるいは次の日の未明まで、
ということなのかもしれません。

私の場合は速度計測で消費したのが祟ったのか、
翌日 (7/2) になって、今度は 7/3 に解除されるという SMS を受け取り、
そのまま帰国の日になったので
解除された状態は確認していません。

Vodafone の web で状況を調べてみた


帰国してから、
先方からの帯域制限を告げる SMS の中に、
詳細についての URL http://tam.je/objednavky が書いてあったので
アクセスしてみました。

するとチェコの Vodafone のログインページ
https://muj.vodafone.cz/en/login (これは英語版)
に飛びました。

パスワードは設定した覚えはないのですが、
購入したショップの店員が SIM のケースに
何やら書いてくれていたのを
思い出して入力したら、正解でした。

ログインしたところ、こんな画面になりました。


私の理解が正しければ、
  • この電話番号は 2016 年 4 月 28 日まで有効
  • 現在、330.18 コルナチャージされている
  • 今月 (7/1-31) は現時点で 50.42 コルナ使っている
という状況のようです。

より詳しい情報を得るため、Messages from Vodafone を見てみます。
使えなくなった 7/1 に来たメッセージがあったので、
それを選択した状態のものが以下です。


"cancelled" になっていました。

当初、SMS を翻訳にかけると「キャンセルしました」と出たのですが、
これは帯域制限で、翻訳が間違っているのでは、と考えていました。
が、本当にキャンセル(利用停止)されたのでした。

結局、4 GB のデータ通信のコースは利用停止になったけど、
残っているデータの分はチャージとして残っている、ということのようです。

というのも、519 コルナ、4 GB のコースの残り通信量をコルナに換算した

    519 コルナ × (4 GB - 1.31 GB) / 4 GB ≒ 350 コルナ

が残額の 330 コルナに近いからです。

何らかのコースを契約すれば、この電話番号は使い続けられるのでしょう。

次回への教訓


そういえば、ショップの店員は、
10 GB のコースを "unlimited" って言ってたな、と思い出しました。
おそらく通信量制限なしだと言っていたのだと思います。

仕事などで本気で使いたい場合は、
高くても通信量制限なしの SIM を購入するのが無難だと思います。

付録:Vodafone から送られた SMS とその翻訳


各 SMS の着信は時間がけっこう空いていて、
それぞれ、7/1 の 0.32, 1:25, 2:50, 11:33(現地時間)に来ています。
最後の1通はそれまでの3通とは独立なのかもしれません。

Dobry den, prave jsme vam zrusili sluzbu Mobilni pripojeni 4 GB. Aktualni podminky sluzeb najdete ve sve samoobsluze. Hezky den

こんにちは、私達はちょうどサービスモバイル接続に4ギガバイトをキャンセルしましたあなたのスーパーマーケットで見つかったサービスの実態。良い一日を

Dobry den, na telefonnim cisle XXXXXXXXXXXX jsme aktualizovali nastaveni vasich sluzeb. Detailni nastaveni najdete na strance http://tam.je/objednavky , kde zaroven najdete i aktualni podminky sluzeb. Hezky den.

こんにちは、電話番号XXXXXXXXXXXX、私たちはあなたのサービスの設定を更新しました。詳細な設定は、彼はまた、サービスの実態を見つけるhttp://tam.je/objednavkyを、ご覧ください。良い一日を。

Dobry den, prave jste na cisle XXXXXXXXXXXX zahajili vyuzivani sluzby Pripojeni na den. Sluzba je aktivni do 02.07.2015 02:50. Hezky den

こんにちは、あなただけの数XXXXXXXXXXXXサービス日使用する接続で発表しました。 2015年7月2日2時50分にアクティブなサービス。良い一日を

Dobry den, na cisle XXXXXXXXXXXX byl vycerpan objem dat, a proto vam docasne snizujeme prenosovou rychlost. Hezky den

こんにちは、番号XXXXXXXXXXXXのデータの疲れボリュームだったため、一時的に伝送速度を低下させます。良い一日を

2015年7月13日月曜日

[travel] プラハでプリペイド SIM を購入、使用してみた

チェコのプラハでプリペイド SIM を購入し、
Nexus5 に入れて動作させてみました、というレポートです。

私自身、海外でプリペイド SIM を購入したのは初めてだったので
覚書も兼ねて、やや初心者向けに書くことにします。

「チェコ SIM」でググってみると何件か出てきますが、
私が参考にしたのは

    チェコのSIMカード - 改・おうちに帰るまでがコジマサトコです。

のページです。

ホテルの近所で偶然 Vodafone を見かけたので
上記のコジマさんに倣ってみました。

話はずれますが、Google Map で「Prague Vodafone」で検索すると
近所のショップを見つけることができます。
プラハ中央駅にもあるようです。

Vodafone ショップでのやりとり


Vodafone ショップでは英語が通じました。
「地球の歩き方」のチェコの本(正確にはスロバキア・ポーランドとの合本)には、
観光地、若い人は英語が通じる、と書いてあり、実際にそうでした。
他の店でも "Do you speak English?" と尋ねても驚かれることなく、
「ああ、はいはい」という感じで英語を話してくれました。

以下、店員と会話した内容(和訳)はこんな感じです。

「何をお求めですか?」
「プリペイド SIM カードください」

「SIM カードのサイズは?」
「microSIM です」

「インターネットのみ? それとも電話も使いますか?」
「インターネットのみです」

ここで店員は、カウンターに座るよう言って奥に消えました。
現物を探しに行ったようです。

プリペイド SIM を手にした店員がやってきて、説明を始めました。
最初、special offer と言って 10 GB コースを勧めてきたのですが、
そんなに必要ないか、と思って断りました。

後から思えば、素直にこれを買っておけば良かったのでした。
unlimited としか聞き取れなかったのですが、
10 GB のみ、1日の通信量制限がないようなのです。
これについては、詳しくは次回に書くことにします。

ちなみに料金は上記のコジマさんの場合 (2014 年 9 月) と同じだったと思います。
10 GB で 999 コルナ(約 5000 円)、
4 GB で 519 コルナ(約 2600 円)
であったことは覚えています。

私は 4 GB を選びました。

現金かクレジットカードか聞かれるので、
クレジットカード払いにしました。

最後に、SIM の PIN code を教えてくれました。
これはスマホの起動時に毎回聞かれるので覚えておく必要があります。
聞かれないようにする方法もあるのかもしれませんが、
旅行中だけのことなので結局調べませんでした。

SIM カードの交換


SIM カードを交換します。
Nexus5 の場合、SIM カードの交換には細長い棒が必要ですが、
私はいつもクリップの先でやっています。
これだと専用ツールに比べて入手が比較的容易なので、
なくしてもダメージが少なくて済みます。

スマホの動作確認


起動して PIN code を打ち込み、
うまく電波が拾えれば、
モバイルネットワークは "Vodafone CZ" になります。


電波が入らない場合は、モバイルネットワークがオフになっていないか確認してみましょう。
既存の SIM で海外ローミングしないために、空港でオフにしたりしていませんか?

また、以下のような SMS が届いていると思います。


大したことは書いていないのですが、
気になる人もいると思うので、ブログの末尾に付録として
コピペしたテキストと Google 翻訳で訳したものを貼っておきます。

通信速度


場所によりますが、速い場所では日本と大して差は感じませんでした。
下りで数十 Mbps は出ています。

4G 環境で、通信速度計測アプリで測った結果が以下のとおりです。


また、3G 環境でもこれくらい出ていました。


速い場所では速いのですが、
日本みたいにくまなく高速通信ができるわけではありませんでした、

具体的には地下鉄や市街西側の丘のところでは
2G (アンテナマークに E と表示される)しか入らないところもありました。
速度は測っていませんが、写真を送るのはほとんど不可能で、
テキストでのやりとりならなんとかなる、という環境です。

とはいえ、市街地の地上では困ることはなかったので、
地図を見たり、テザリングして PC でネット閲覧、
といった用途にガンガン使いました。

が、調子に乗りすぎて、ある日帯域制限を食らってしまいました。
これについては次回をご覧ください。

付録:開通時に Vodfone から来た SMS の内容


SMS をコピペしたテキストと、それを Google 翻訳で訳したものを貼っておきます。
"XXXXXXXXXXXX" は 12 桁の電話番号です。

Dobry den, pokryti CR nasim Turbo Internetem se zvetsuje kazdym dnem, chcete si rychla data take uzit? Vymente si zdarma SIMku za novou na prodejne nebo pres muj.vodafone.cz v sekci Nastaveni sluzeb. Mapu pokryti Turbo Internetu a dalsi informace najdete na www.vodafone.cz/turbo. (OS zruste na *77)

こんにちは、インターネットのわれわれの記事へターボは毎日増加している、あなたはまた、高速なデータを楽しむことができますか?店でまたはmuj.vodafone.czセクションサービスの設定を介して、新しいのためのあなたの自由なSimkoを交換してください。ターボインターネットカバレッジマップと詳細は、www.vodafone.cz/turboください。 (77 *にキャンセルOS)

Dobry den, vitejte v nasi siti. Prave vam na telefonnim cisle XXXXXXXXXXXX nastavujeme pozadovane sluzby. Jakmile vse dokoncime, posleme vam potvrzovaci SMS zpravu. Dekujeme za duveru.

こんにちは、私たちのネットワークへようこそ。ちょうどあなたのために呼び出すことにより、XXXXXXXXXXXXは、必要なサービスを設定します。すべてが完了すると、私たちはあなたに確認のSMSを送信します。あなたの自信をありがとうございました。

Dobry den, na telefonnim cisle XXXXXXXXXXXX jsme aktualizovali nastaveni vasich sluzeb. Detailni nastaveni najdete na strance http://tam.je/objednavky , kde zaroven najdete i aktualni podminky sluzeb. Hezky den.

こんにちは、電話番号XXXXXXXXXXXX、私たちはあなたのサービスの設定を更新しました。詳細な設定は、彼はまた、サービスの実態を見つけるhttp://tam.je/objednavkyを、ご覧ください。良い一日を。

2015年6月17日水曜日

[Ruby]ドットひとつで結果が変わってしまう例

嵌ったのでメモしておきます。
Ruby 1.9.3 で動作確認しています。

1-2+3 を計算したいとします。

普通に計算させるとこうなります。

    > p 1-2+3
    2

ところが、(何かの拍子に)1 のうしろにドットを入れてしまうとこうなります。

    > p 1.-2+3   # 1-2+3 または 1.0-2+3 を計算しているつもり
    -4             # 予想外

これは、ドットの直後の "-" が数学の演算子ではなくメソッドと解釈されたので、
後ろの演算が先に評価され、1-(2+3) の結果が返ってきたのだと思います。
もう少し分かりやすく書くとこうなります。

    1.minus(2+3)

ここで minus は a.minus(b) において a-b の結果を返すメソッドを表します。

ちなみに、ドットのうしろに 0 を入れると "1.0" が実数と解釈されるので

    > p 1.0-2+3
    2.0

となります。

2015年6月6日土曜日

「百葉箱」は「二重百葉窓の箱」の略だった

2015 年春の気象学会(つくば)のメモです。

C153 気象研究所 山本哲「東京気象台1875 (明治8)年観測開始期のメタ情報(2)」
の予稿 (PDF) には

  当時の記述から、「百葉箱」の語は "double louvre boarded box" という英語表現を直訳した「二重百葉窓の箱」が縮めて呼ばれるようになったと推察された。

とあります。

この予稿はまだネットには公開されていないので、
とりあえず、気象学会の予稿集のトップページへのリンクだけ張っておきます。
2015 年春は 107 巻です。


2017/04/19修正:予稿が公開されていたので、本文内に予稿へのリンクを張りました。

2015年5月20日水曜日

[雑感] 人生経験が豊富(老練)とはどういうことか

(このネタはいろいろ切り口があるので、
似たようなエントリを複数書くかもしれません)

たまに、人生経験が豊富(老練)とはどういうことか、
ということを考えたりします。

ひとつの例として、
交渉時などに上手いことをパッと言える(返せる)
というスキルがあると思います。

言い換えれば、
相手が首を縦に振るような説明(時には建前)や、
相手を傷つけない言い方を
瞬時にできると言いましょうか。

作文力と瞬発力が鍛えられているというのに加え、
過去の似たケースの成功例の蓄積があるゆえでしょう。

逆に言えば、経験が少ないと、
うまく言えないゆえに
相手に言いくるめられてしまったり、
無用な対人トラブルを起こしてしまったりするでしょう。

この前提のもと、別のことを考えているのですが、
きりが良いので今日はここまでにします。

2015年5月14日木曜日

つくばへ行くのに高速バスを使う3つのメリット(とデメリット)

乗換案内サービスで検索しても出てくることが少ないので
知らない方も多いと思いますが、
つくばには高速バスが乗り入れています。

時により、つくばエクスプレス (以降 TX) などの
鉄道よりも高速バスを使ったほうが良いことがあるので、
私もつくば在住の時には愛用していました。

ここでは関東鉄道バスという業者を紹介します。
たとえば東京駅、羽田空港、成田空港、茨城空港からの便があります。

以下では、私が良く使っているつくば~東京駅線のメリットを3つ挙げます。

メリット1 乗換回数を減らせる

普通に乗換案内サービスで調べると、

    東京駅→(JR)→秋葉原→(TX)→つくば→(路線バス)→目的地

という結果が出てくることが多いと思います。
ですが、つくば市内の場所によっては

    東京駅→(高速バス)→目的地

と、直通で行けます。
つくばセンターに行く前(またはその帰り)に
何ヶ所かに停まるからです。
大きな荷物を持っている時には楽です。

具体的には JAXA や産総研の東側の建物、筑波大学(一部の便のみ)といった、
学園東大通りという通りに面している場所です。

ちなみに、つくば国際会議場に行く場合も「竹園二丁目」で降りれば
つくば駅から歩くよりも歩く距離が短くて済みます
(が、1000 m が 500 m になるくらいなので、元気な人には大差はないです)。

メリット2 交通費が安くなる

先述の通り、高速バスで途中下車できる場合は
路線バスに乗り換える必要がないのでその分節約できます。

肝心の高速バスの料金は 1180 円で
TX (秋葉原~つくばは IC カード使用で 1183 円) とほとんど差がないですが、
つくば~東京駅線は3枚綴りの回数券 (3200 円) があるので、
それを使えば片道 1067 円で行けます。

さらに、東京トク割回数券 (3枚 2000 円) というのがあり、
東京行き限定ながらも片道 667 円で行けます。

自分で何度も行き来する場合はもちろん、
1回しか行かない場合でも2人以上の場合は回数券がおすすめです。

回数券はバスの運転手から、または東京駅の券売機で買えます。

メリット3 必ず座れる

高速バスに一般的な話ですが、
鉄道と違って立って乗ることがありません。
逆に言えば、乗れれば必ず座れます。

立ちっぱなしで疲れてしまうことが防げます。

デメリット

メリットばかり書いてきましたが、
デメリットも書いておきます。
高速バスに一般的なことです。
  • 渋滞に捕まると遅れる
  • 本数が限られる(つくば~東京駅線は 20-30 分に1本ありますが、なかには1日数本という路線もあります)
  • バス酔いする人には向かない(ただし高速道路の区間は比較的快適)
ちなみに、「渋滞に捕まるとトイレはどうなる?」と気にするかもしれませんが、
つくば~東京駅線はトイレ付き車両なのでその点は安心です。

さいごに

これまで述べたように、高速バスゆえのデメリットもあるので、
完全に鉄道の置き換えにはならないのですが、
以下のような条件にいくつも当てはまる場合は
高速バスを検討する余地があると思います。

  • 荷物が多い(乗り換えが少ないし、必ず座れるので疲れない)
  • 前泊の日など、時間に余裕がある(渋滞に巻き込まれても大丈夫)
  • 乗り換えの待ち時間が少ない
  • 交通費を節約したい(回数券を利用)
  • バス酔いしない、または酔い止めを飲んでいる

ご参考までに。