2024年2月19日月曜日

英語配列のノートPCで日本語配列設定にしちゃった時に、アンダースコアを入力するTips

US配列のLG gram SuperSlimを購入した。で、Windowsの初期セットアップを始めたところ、最初に選択できるキー配列はMicrosoft IME(まあ要するに日本語配列)だけ。で、その後に「追加のキー配列」を選択できるのだが、後でやればいいやと思ってスルーしてしまった。

すると1回再起動して初期セットアップが続くのだが、ここでMicrosoftアカウントでのサインインを求められる。スキップボタンは無い。ネットワークを切断するとローカルアカウントでの設定に切り替えられるはずだが、ここは真面目にサインインしてみることにした。

ところが、キーボード設定をMicrosoft IMEにしていたため、英語配列でのアンダースコア(_)を押してもイコール(=)が出てしまうのである。さて困ったどうしようと思ったところ、アクセシビリティ機能の中に「スクリーンキーボード」という機能があることに気づいた。右下にある、人が両手両足を広げたようなアイコンだ。ここでスクリーンキーボードをONにするとMicrosoft IME互換のキーボードが画面上に表示されるので、この中にあるアンダースコアキーを使って無事入力に成功した。

2023年3月1日水曜日

ランキング推移をgnuplotで書いてみる

Excelはデータの可搬性が低かったりグラフの調整がしにくかったりと問題が多いので、相変わらずグラフの作成は基本的にgnuplotを使ってる。

で、ある資料でプログラミング言語の人気ランキングがどう変化するのか、みたいのを作る必要が出てきた。具体的にはgithubのブログに貼ってある感じのやつ。ポイントは

  • 縦軸は上から下に向かって1〜10位にしたい
  • 凡例はそれぞれの線の右端に書きたい
というところで、これを実現する設定を備忘録的に書いておく。

まずCSVデータは以下のようになる。

year,JavaScript,Python,Java,TypeScript,C#,C++,PHP,Shell,C,Ruby
2014,1,4,2,10,8,6,3,9,7,5
2015,1,3,2,10,7,6,4,9,8,5
2016,1,3,2,10,6,5,4,9,8,7
2017,1,3,2,10,6,5,4,8,7,9
2018,1,3,2,7,6,5,4,9,8,10
2019,1,2,3,5,7,6,4,9,8,10
2020,1,2,3,4,5,7,6,9,8,10
2021,1,2,3,4,5,7,6,8,9,10
2022,1,2,3,4,5,6,7,8,9,10

これをプロットするために、以下のように設定する。

# 線の右側に各プロットの名称を置きたいので、2年分余白を置く
set xrange [2014:2024]
# yrangeを[10:1]とすると10位と1位が外枠に張り付くので、ここも余白
set yrange [11:0]
# 横軸目盛は2022年までしか書かない
set xtics 2014, 1, 2022
# ticsの増分をマイナスにすると目盛の向きが反転する。今回一番の発見。
# ただし上限を1にすると1が表示されず、0にすると0が表示される。バグ?
set ytics 10, -1, 0.5
# 標準の凡例は用いない
set nokey
# ラベルを最新データの右側に置く
set label 1 at first 2022.5,1 "JavaScript"
set label 2 at first 2022.5,2 "Python"
set label 3 at first 2022.5,3 "Java"
set label 9 at first 2022.5,9 "C"
︙
set label 10 at first 2022.5,10 "Ruby"
# カンマ区切りデータなのでセパレータを設定
set datafile separator ","

あとはこんな感じでプロットする。plotコマンド1つでusingを繰り返し書いてもいいのだが、1行ずつ別コマンドにしておきたかったのでreplotを使っている。

plot "githubrank.csv" using 1:2 w lp lw 3 pt 7 lc "dark-yellow"
replot "githubrank.csv" using 1:3 w lp lw 3 pt 7 lc "skyblue"
replot "githubrank.csv" using 1:4 w lp lw 3 pt 7 lc "dark-gray"
︙
replot "githubrank.csv" using 1:11 w lp lw 3 pt 7 lc "black"
set term png
set output "rankingtest.png"
replot

これで結構いい感じのグラフが描けた。


2021年4月22日木曜日

新:東武東上線の迂回経路を考える

2009年に「東武東上線の迂回経路を考える」という記事を書いたが、リンクが古くなってるなど更新の必要を感じた(というかこの記事を書き始めた時点では、ちょうど東上線が止まっていて帰る算段が立たなかった)ので新しく記事を書くことにした。

2009年の記事は感覚的に
「東上線沿線でない場所にいて、東上線のどこかの駅に帰る」
前提で書いてみたが、今回の記事は
「東上線運転見合わせの時にどこか特定の駅にいて、そこから東上線以外の近隣の路線まで迂回・脱出する」
という視点で列挙してみる。まあ単に逆の経路を考えるだけなんだけど。

なお、特に川越より奥(坂戸・東松山・小川町方面)の迂回経路はかなり時間がかかるものが多い。運転見合わせが3時間以上になると思われるケースに限って利用すべきだと考える。人身事故の場合はたいてい1時間~1時間半で運転再開するので、迂回するよりは待った方が早いことが多い。今までの経験だと、以下のようなケースは復旧までの時間が長い傾向にある。
  • 架線が切れた(クレーン車や倒木が架線を切ったなど)
  • 踏切事故で自動車や歩行者が電車の下にもぐり込んだ(救出に時間がかかる)
  • 脱線(あれ終電まで動かなかったもんね)

池袋

考える必要なし。よりどりみどり。

北池袋

JR埼京線の板橋駅まで徒歩10分ほど。少し先まで歩けば都営三田線の新板橋駅がある。池袋駅でも徒歩20分程度で着く。

下板橋

ここもJR埼京線の板橋駅まで10分かからずに着く。都営三田線の新板橋駅も同様。

大山

最寄は都営三田線の板橋区役所駅(徒歩10分ちょい)。有楽町線/副都心線の千川駅までだと徒歩20分では厳しい距離。駅南側のハッピーロード(商店街)を行った先の川越街道には国際興業バスの第六小学校バス停があり、池袋・赤羽・光が丘方面へ行ける。

中板橋

都営三田線の板橋本町駅まで徒歩20分弱。有楽町線/副都心線の千川駅か小竹向原駅はいずれも30分程度はかかる模様。バス路線は駅前にはなく、北口から石神井川を渡って環七に出る(中板橋駅入り口バス停)と赤羽・新桜台・野方・高円寺に行ける。もしくは南口から滝野川信金の道を抜けて仲町バス停を目指すと、赤羽・池袋方面に行ける。

ときわ台

中板橋同様、板橋本町まで20分程度。ここは(都内の東上線駅としては珍しく)北口側にロータリーが整備されていて、王子・赤羽・志村三丁目方面への国際興業バスが頻繁にやってくる。

上板橋

都営三田線の志村三丁目駅まで徒歩30分弱。広い道がなくそこそこアップダウンもあるのでお勧めとはいえない。志村三丁目に行くなら、駅から少し離れた教育科学館バス停か常盤台四丁目バス停から国際興業バスに乗る方がよいだろう。有楽町線/副都心線の氷川台駅も徒歩30分コースだが、こちらは川越街道を渡ったあと、城北中央公園脇のまっすぐな道を歩くのでわかりやすい。駅北口には京浜東北線の王子駅行き国際興業バスが20~30分ごとに来る(最終は20時台)ので、それに乗って板橋本町か東十条(京浜東北線)、王子神谷(南北線)あたりに抜ける手もあり、あるいは南口から川越街道沿いの桜川バス停に行けば池袋・光が丘方面のバスがある。

東武練馬

徒歩なら有楽町線/副都心線の地下鉄赤塚駅まで約20分。駅北口のイオンの前から、都営三田線高島平駅・西台駅や埼京線浮間舟渡駅への国際興業バスが頻繁に出ている。南口側のバス停は練馬区の「みどりバス」というコミュニティバス用で、迂回手段としては心もとない。川越街道沿いのドンキ近くにある練馬北町車庫まで行く方が圧倒的に選択肢が広い(池袋・光が丘・西武練馬・赤羽・石神井公園)。

下赤塚

南口から徒歩数分で川越街道直下の地下鉄赤塚駅に行ける。または川越街道の下赤塚バス停から石神井公園方面に向かう。北口側に下赤塚駅バス停もあり高島平駅にバスが出ているが、本数は少ない。

成増

下赤塚と同じく、南口から徒歩数分で川越街道直下の地下鉄成増駅がある。バスも豊富で北口側からは国際興業バスの高島平・赤羽方面が頻繁にある。南口は主に西武バスのテリトリーとなり、練馬高野台・石神井公園・大泉学園方面に行ける。川越街道の成増町バス停に行けば、上石神井・吉祥寺方面に向かうバスもある。

和光市

ここから埼玉県に入り、一気に迂回路事情が悪化する。徒歩やバスで「違う路線の駅」に向かうことが困難になる。とはいえ和光市は有楽町線/副都心線が乗り入れているためまだ何とかなる。また、南口からは西武バスで大泉学園に行ける。

朝霞

南口から西武バスで大泉学園に行ける。または北口から東武バスでJR北朝霞駅・東武東上線朝霞台駅へ向かう(名前は違うが同じ場所)。

朝霞台

上述の通り、JR北朝霞駅が目の前。東武とJRが同時に止まることは考えにくいが、西武バスがひばりが丘駅や東久留米駅へのバスをそこそこ頻繁に出している。国際バスで埼京線南与野行きの路線もあるにはあるが、本数が少なすぎて迂回には使いづらい。

志木

北朝霞駅まで徒歩(約20分)が最も確実な迂回路か。ただ西武バス(ひばりが丘・清瀬・JR新座駅など)もそこそこ本数が出ており、また国際バスの埼京線中浦和駅・京浜東北線浦和駅方面もある。

柳瀬川・みずほ台・鶴瀬

ここからはもうかなり絶望的な「東武が止まると陸の孤島」という駅が続く。柳瀬川からだと志木駅までは徒歩25分で、その後は志木からの迂回路を使うことになろう。国際興業バスも志木駅までの路線があるが、1時間に1本しかないうえに街中をクネクネ走るので、たぶん歩く方が早く着く。
これがみずほ台からだと志木駅まで45分、鶴瀬からは1時間を超え、徒歩での脱出はかなり困難となる。鶴瀬については東武バスで「ららぽーと富士見」に行って、志木行きの東武バスか大宮行きの西武バスに乗り継ぐという技もあるが、どちらも1時間に1本程度で心もとない。
なお、ここから奥の駅はおおむねバスでの迂回が期待できないため、金に糸目を付けないならばタクる(=タクシー利用)選択もあるかもしれない。しかし都心と違ってタクシーの台数が限られており、躊躇しているとあっという間に待機中の空車が消えて長いタクシー待ちとなる。判断のスピードが求められるところ。

ふじみ野

引き続き陸の孤島。鶴瀬と同じくららぽーと富士見経由の脱出路が考えられるが、鶴瀬より本数が少ないのでさらに心もとない。隣の上福岡駅まで徒歩25分なので、そこからのバス脱出を考えるのがギリギリ現実的な線か。東武バスの上福岡駅行きは1日1〜2本なので絶対に期待してはいけない。

上福岡

われらの希望の星、西武バスの路線がなぜか来ている。といっても西武線方面の所沢行きは1日数本で全く期待できず、現実的な迂回路は駅前から少し離れた上福岡駅入口バス停からの埼京/川越線南古谷駅行きである(所要時間20分程度)。なお、南古谷駅まで徒歩で行くとすると、県道を道なりに行くのでわかりやすいものの、45分ほどかかる。

新河岸

バス路線はなく、徒歩での脱出一択。川越街道に出ればほぼ街道に沿って川越駅まで40分弱。

川越・川越市

東武東上線のアノマリー。ここだけ東武東上線、JR埼京/川越線、西武新宿線という3路線が集中しており、迂回路には事欠かない。また東武バスがJR上尾・桶川・鴻巣までの路線(いずれも所要時間1時間程度)を持ち、それぞれ本数は少ないもののバスでの迂回もそれなりに期待できる。西武バスの路線もあるが新狭山・新所沢行きなので、西武新宿線が動いている状態なら特に有難みはない。
なお、川越が迂回の拠点であることに加え、川越より奥は完全に車社会なので、長時間の運転見合わせが生じた場合に「川越まで車で迎えに行く/送る」ための大渋滞が発生することがある。タクシーやバスを利用して迂回する場合、この点に注意が必要。

霞ヶ関・鶴ヶ島

霞ヶ関駅からはJR川越線の的場駅まで徒歩20分弱。川越線は1時間3本程度のローカル線だが、まあまあ使える迂回路といえる。鶴ヶ島駅からだと的場駅まで徒歩40分を超え、かなり厳しくなる。東武バスのいせはら団地行きに乗れば終点から徒歩15分程度で的場駅に着くので、まだましか。

若葉

川越に行く東武バスの路線があるが、半分くらいが途中の東坂戸団地で止まってしまい、川越まで通しで乗れるのは1時間に1本程度。坂戸まで徒歩25分程度なので、行き先次第ではそこからの展開を考える手もある。あと若葉には工業団地があるためか、他の駅より若干タクシーの台数が多いように思う(個人の感想です)。

坂戸

東武越生線(おごせせん、と読む)の接続駅。越生線は東上線とは完全に別系統なので、東上線が運転を見合わせていても涼しい顔で動いている。ただし越生線は1時間に3本程度のうえ、行き先が八高線の越生駅という辺境なので、例えば越生線経由で川越に行くには1時間半くらいかかる。東上線が3時間以上止まるような状況、または八高線沿いの駅(飯能・拝島・八王子など)に行きたい場合に限った迂回路と考えるべきだろう。小さいながらもホテルはあるので、遅い時間の場合は諦めて部屋を取る方がよいかもしれない。

北坂戸・高坂

いずれも迂回に使えそうなバス路線は無し。北坂戸からは坂戸まで25分歩いて、そこからの展開を考えるくらいしかない。
高坂に至っては東松山まで徒歩50分、坂戸まで徒歩1時間20分。どちらの駅に向かうにも渡河(もちろん橋はあるが)が必要で、特に夜は心細いことこの上ない。宿泊施設やネットカフェもなく、動くめどが立たないならとっととタクるのが妥当。

東松山

この辺りは東武グループの朝日自動車…のさらにグループ企業がバス路線を持っていて、意外にJR高崎線沿線との行き来がしやすい。川越観光自動車が鴻巣免許センター行きのバスをそこそこの本数走らせていて、これで鴻巣駅へ向かうことができる(約30分)。また国際十王交通が熊谷駅までの路線を持っている(約40分)。東松山はホテルもそこそこの数があるので、泊まってしまう手もあるだろう。

森林公園

国際十王交通が熊谷駅までの路線を運行している(約40分)。ただし途中の立正大学止まりが半分近くあるので、必ずしも本数は多くない。東松山駅まで徒歩で行くなら40分というところ。

つきのわ・武蔵嵐山

つきのわ駅は宅地分譲とセットでできた比較的新しい駅だが、車社会なのでバス路線は皆無。森林公園駅まで徒歩40分というのが、かろうじて迂回路となるか。
武蔵嵐山はさらに絶望的…と思ったら、意外や意外、近隣のときがわ町が運行する路線バスでJR八高線の明覚駅に向かうルートがある。本数的にそこまで期待はできないが、ここまで都心から離れ、乗換駅でもないのに迂回路があるのは稀有なことと言える。

小川町

東上線の実質的な終着駅。ここから寄居までの間は同じ東上線でも折り返し運転のローカル区間で、池袋~小川町の運転見合わせの影響はまず受けない。したがって、寄居まで行って秩父鉄道に乗り換え、熊谷に向かうことが可能(トータルで1時間と少々)。またこれもローカル線ではあるがJR八高線との乗り換え駅なので、高麗川経由で川越・飯能・拝島・八王子にも行ける。タイミングさえ合えば川越まで1時間、八王子へは1時間20分程度。本数は少ないとはいえ、国際十王交通の熊谷行きバスもある。

以上、参考になれば。

2019年12月9日月曜日

Thunderbirdで日本語変換がうまく動かない問題

しばらく前から、Windows版Thunderbirdで

  • メール作成ウィンドウや検索フォームなどで日本語を入力しようとしても、ローマ字→ひらがな変換された段階で確定してしまう(漢字変換できない)
  • 日本語変換モードのホットキーで切り替えても症状に変化なし
  • タスクバーのIME表示(状態に応じて「あ」とか「A」に表示が変わる部分)をクリックして切り替えると漢字変換できるようになる
  • Thunderbirdを終了して再度実行すると元の木阿弥。
という症状が出ていて、いちいちクリックしないといけないのが面倒だった。

で、とりあえずの対策(workaround)として「intl.tsfをdisableにする」というのがあったので試してみた。2つの環境で問題が解消されており、今のところ副作用が無いのでこれで様子見。

設定エディタをいじったことが無い人向けに書いておくと、手順は以下の通り。
  1. Thunderbirdメインウィンドウ右上の三本線(設定メニュー)からオプション→オプションを選択して、オプションタブを開く
  2. 左側のメニューから「詳細」を選び、右側ペインの一番下にある「設定エディタ...」を押す
  3. 「動作保証対象外になります!」と出てくるが、もともと保証なんかあった覚えがないので「危険性を承知の上で使用する」を押す
  4. 検索フォームに "intl.tsf.enable" と入力すると多分「真偽値 true」になっているはずなので、ダブルクリックして「false」に変更してウィンドウを閉じる
  5. Thunderbirdを再起動

2019年3月24日日曜日

自動車の変更登録(住所+保管場所)をオンラインでやってみる

車の車検証には所有者・使用者の住所が書かれている。リースとかローンでないので、手元の車検証は所有者住所のみだ。

引っ越すと当然これらの情報を更新する必要があるのだが、だいたい引っ越し時期は忙しい。しかも保管場所を変更するとなると、まず警察で車庫証明を取得し(申請と受け取りで2回!)、そのうえで陸運局に行って変更登録を行う必要がある。まったくもって前時代的な手続きだ。

と思っていたらさすがに電子化のご時世、車庫証明も変更登録も(少なくとも地元の県では)オンラインでできるようになったらしい。ということで、試しにやってみることにする。

必要なもの

  • マイナンバーカード+カードリーダー。オンラインの確定申告(e-Tax)をやっていれば準備してあるかも。
  • Internet Explorer 11。官公庁ならではのクソ仕様。EdgeとかChromeとかでも「動作保証外」という書き方にはなっているのだけど、結局ActiveXをインストールしないといけないのでIE11一択になる。まさにクソ。
  • 現在の車検証(に書かれている内容)。

手順

1. 申請者等に関する入力

今回は使用者の住所変更のみを選択する。住民票を動かさず、本拠だけ動かすような場合は本拠の変更になるのだろうし、他にもいくつか変更のパターンがあり得る。
最初の難関はマイナンバーカードの読み込み。e-Taxで慣れたので(あれも事前のアドオン設定で色々引っかかったが)まあ何とかなる。マイナンバーは何種類もパスワードやら暗証番号が設定されているが、ここでは「署名用パスワード」を使う点に気を付ける。

これで住所が自動で入るから楽…と思ったら、11桁の「住民票コード」を入力する欄がある。これは必須でないが、入力すると住所変更を証明するための書類(たぶん住民票だよな)の提出を省略できるらしい。それ先に言ってよ…住民票コードなんて覚えてないよ…

さらに、せっかく住所をマイナンバーカードから読み取っているのに、そのあとに「自動車登録関係コード」として都道府県・市区・町村コードを入れないといけない。検索システムへのリンクがあってそれで調べることはできるのだが、お前ら何のためにマイナンバーカード読み取ったんだよと言いたくなること請け合い。

2. 保管場所に関する入力

添付書類(JPEGファイル、1024x768程度、100KB程度にする)を事前に用意しておかないとタイムアウトするので注意。自宅と駐車場が異なる敷地の場合は、まず位置関係図を書かないといけない。そのうえで駐車場の見取り図が(同敷地内であっても)必須となる。貸し駐車場や賃貸物件内駐車場の場合、賃貸契約書が必要。

3. 自動車税に関する入力

これが一番悩んだ。自動車税と自動車取得税のそれぞれについて、課税区分を選択する必要があるのだが、「その他」しか選択肢がない。選択しないとエラーになるし、選択すると今度は「その他の場合に必ず何か記入しないといけない欄」が現れる。ところが、この項目だけはなぜかヘルプが無いのだ!
しょうがないので、「記入要領が無いので何を記入すればよいのかわからない」と記入しておいた。

さて、以上をすべて入力し終わると項目ごとに確認画面が出て、都度チェックを入れては進んでいく(面倒)。すべてを提出すると入力内容を保存することができるらしいんだが、これまたMHTMLファイルなので再度開こうと思っても開けない。
で、結局審査で必要な書類(転居履歴を確認できる住民票とか)を提出せいと書いてあるのだけど、どうやって提出するの?ていうかいつ提出するの?

(2019/06/04追記)

結局書類不足とかで却下された。多分転居履歴を確認するための住民票が提出されてない、ということなのだろうと「推測」するが、本当にそれが理由なのかも通知されないのでわからない。もう1回試してみるかなあ…

2018年12月12日水曜日

PayPayのキャンペーン、1万円×10件と10万円×1件はどちらが得か

入門編的な確率の問題。

電子決済サービスのPayPayが、2018年末に「100億円あげちゃうキャンペーン」というのをやっている。決済1回ごとに抽選を行い、当選したら決済金額相当(最大10万円まで)を丸々ポイントバックするというものだ。

たとえばこれで買い物をする場合、同じ10万円分の決済を
  • 『10万円まとめて決済する』のと
  • 『1万円ずつ10回に分けて決済する』のと
どちらが得と言えるだろうか?という話。(明日の講義でそのまま出そうかな)

当選確率は加入者のステータスによって変わるが(ワイモバやSBのユーザーだと確率が上がるとか、まあそういうことね)、とりあえず標準の「40回に1回の確率」=0.025をベースに考えよう。別にここが0.05でも0.1でも、この後の議論に本質的には影響しない。

平均で比べる

一番分かりやすいのは、「平均いくらのポイントがもらえるか」の比較だろう。

10万円まとめて決済する場合、確率$0.025$で当選した場合10万円が得られ、確率$(1-0.025)=0.975$で0円が得られる。すなわちポイントバック額の平均は
\[ 100000\times 0.025 + 0\times (1-0.025) = 2500 \]
ということで平均2500円。
これに対して、1万円ずつ10回に分けた場合は1回のポイントバック額平均が
\[ 10000\times 0.025 + 0 \times (1-0.025) = 250 \]
となり、これを10回行うので平均はやはり2500円となる。つまり平均額に違いはない。

当たる確率・外れる確率で比べる

「外れる」といっても、これは何回かの抽選を行って「一度も当たらない」という意味である。
10万円まとめての決済だと、抽選の機会は一度きりなので、当たる確率は$0.025$, 外れる確率は$(1-0.025)=0.975$。
これに対して、1万円ずつ10回決済する場合は抽選が10回行われる。これで一度も当たらない確率は
\[(1-0.025)^{10} = 0.7763\ldots\]
である。言い換えれば最低1回は当たる(場合によっては2回3回…10回当たるかも)確率は0.22程度であり、「当たった!」という喜びを得られる確率は高くなる。

当たった時のポイントバック額で比べる

確率が高いとは言え、これは当たった際のポイントバック額を犠牲にして当たる悦びを追っているとも言える。10万円まとめての決済だと、確率0.025で当たった時は当然10万円が得られる。
これに対して、1万円ずつ10回の決済だと、10回のうちちょうど1回当たる確率はおおよそ0.2だが、ポイントバックは1万円だけ。10回のうち2回当たる確率は0.023で、1回だけの抽選で当たる確率より既に低いのである。しかもその時に得られるポイントバックは2万円。10回やって10回当たる確率は小数点のうしろに0が16個も付くほどの小さな値であり、10万円が得られる可能性はほぼ無いと言える。

分散という指標

つまるところ、10万円の決済を1回でやる場合と、1万円の決済を10回やる場合の違いは

  • 確率は低いが、当たった時のポイントバックが大きい方がいいと考えるか
  • ポイントバックの額は犠牲にして、当たって欲しいと考えるか
という違いであり、平均としては変わらない。これをうまく表現するための指標が、分散である。
この例でいくと、分散とは当たった時/外れた時のポイントバック額と、平均額とのずれがどの程度大きく生じるかを表している。分散が大きければ損も得も大きく、小さい場合は損得それぞれ平均に近いところで小さく振れる。分散には2乗の計算が含まれるので、元の数値(ここでは円という通貨)に単位を合わせるため、標準偏差(分散の平方根を取った値)を用いることも多い。

具体的には、10万円の決済1回の場合の標準偏差$\sigma$は
\begin{align*}
\sigma & = \sqrt{(100000-2500)^2 \times 0.025 + (0 - 2500)^2 \times (1-0.025)} \\
& = 15612.5\end{align*}
であるのに対して、1万円の決済10回の場合は
\begin{align*}
\sigma & = \sqrt{10 \times ((10000-250)^2 \times 0.025 + (0 - 250)^2 \times (1-0.025))} \\
& = 4937.1\end{align*}
となり、決済を10回に分ける方が標準偏差が小さい(=分散も小さい)ことが分かる。これが、損得の振れ幅が小さくなっているという意味である。

2018年6月28日木曜日

CentOS7でOpenVPNを動かしてみた件

はいはい備忘録備忘録。

1. インストール

以下、全部管理者権限で。
標準ではパッケージが用意されていないが、ソースから作るのも(アップデートとかを考えた際に)めんどいのでEPELを追加する。
# yum install epel-release
続いてopenvpnと、お手軽な証明書生成スクリプトのeasyrsaをインストールする
# yum install openvpn easy-rsa

2. 証明書と鍵の生成

 この辺のページやこの辺のページを参考にしつつ作業。要するにまず認証局(CA)を作り、それをベースにサーバ側の証明書と秘密鍵の生成、という順序でやる。EPELパッケージでのeasyrsaスクリプトは/usr/share/easy-rsa//の下にある。
まず初期化。
# /usr/share/easy-rsa/3/easyrsa init-pki
続いてCAの作成。
 # /usr/share/easy-rsa/3/easyrsa build-ca
鍵を利用するためのパスフレーズを2回入力し、Common Name(適当な名前)を入力する。このとき、カレントディレクトリにpkiというディレクトリが作成され、pki/ca.crt(証明書)とpki/private/ca.key(秘密鍵)が出来る。
次にサーバ証明書と鍵のペアを生成。
# /usr/share/easy-rsa/3/easyrsa build-server-full server nopass
 pki/issued/server.crt(証明書)とpki/private/server.key(鍵)が生成される。
(これは順不同)DHパラメータの生成。ちょっと時間がかかる。
# /usr/share/easy-rsa/3/easyrsa gen-dh
pki/dh.pemが生成される。まとめると、以下のファイルがカレントディレクトリ下に出来たことになるので、これらをまとめて/etc/openvpn/にコピる(設定ファイルで絶対パスを指定できるので、適当なディレクトリに置いても構わない)。
pki/ca.crt
pki/private/ca.key
pki/issued/server.crt
pki/private/server.key
pki/dh.pem

3. OpenVPNサーバの設定

設定ファイルは標準で/etc/openvpn/server.confだが、とりあえずサンプルをコピって修正してもよい。
# cp /usr/share/doc/openvpn-/sample/sample-config-files/server.conf /etc/openvpn/
以下の設定が有効になっていることを確認する。(行頭にシャープまたはセミコロンがあるとコメントアウトされた状態なので、有効にしたい場合は外す)
proto udp #tcpだと遅くなる
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
topology subnet
push "route 192.168.0.0 255.255.255.0" #VPN経由でアクセスしたいサブネット
tls-auth /etc/openvpn/ta.key 0
user nobody
group nobody
で、tls-authで用いるta.keyを生成する。
# openvpn --genkey --secret /etc/openvpn/ta.key
標準ではポート1194を使うので、開けておく。
# firewall-cmd --add-service=openvpn --zone=public --permanent

2018年6月13日水曜日

VMware ESXiにLet's Encryptで作成した証明書をぶっこむ件

手順を忘れないように記録。たとえばVMware ESXi  6.5がvmw.example.comで動いている前提。

  1. 手元のホスト(certbotが動けば何でもいい)でDNS-01 challenge validationを使った証明書取得を行う。以下では$PWD/certにcertbotの各種生成ファイルがあると仮定する。
  2. ESXiでSSHを有効にする
    • ナビゲータ→ホスト→アクション→サービス→SSHの有効化
  3. 取得した秘密鍵(privkey.pem)、証明書(cert.pem)、中間証明書(fullchain.pem)をESXiに転送。
    • scp cert/config/live/vmw.example.com/{privkey,cert,fullchain}.pem root@vmw.example.com:
  4. SSHでESXiにリモートログインし、ファイルをコピー。一応丁寧にバックアップを取っておく。
    • cd /etc/vmware/ssl
    • cp rui.key rui.key.old && mv /privkey.pem rui.key
    • cp rui.crt rui.crt.old && mv /cert.pem rui.crt
    • cp castore.pem castore.pem.old && mv /fullchain.pem castore.pem
  5. Web UIの再起動。
    • /etc/init.d/hostd restart
    • /etc/init.d/vpxa restart
    • 一部サイトではservice.sh restartで良いとも書いてあるが、VMwareのサポートページではやってくれるな(仮想マシンが全部死ぬ)とあるので、稼働状態ではやらない。
  6. 不正な証明書などの警告が出なくなることを確認。

2017年10月22日日曜日

nasneのファイル共有領域がマウントできなくなったので設定を変えた件

Ubuntuからnasneの共有フォルダーをマウントしていたのだが、Ubuntu 17.10で同じ設定のままマウントしようとすると "mount error(112): Host is down"と出てマウントに失敗する。

ということでいろいろ調べたところ、mount.cifsが使用するSMBプロトコルがデフォルトでSMBv1では無くなった様子。man mount.cifsするとまだv1がデフォルトであるように書いてあるのだが、実際vers=1.0を指定しないと上記のエラー、vers=1.0を指定するとマウントできるようになるので、デフォルトでSMBv2以上を使うようになったのだろう。

というわけで、/etc/fstabの最下行に次のような(1行で書く)設定を追加すればOK。IPアドレスはnasneの設定済みIPアドレスに、/mntは自分の環境でのマウントポイントに、hogeは自分のアカウントに置き換える。
//192.168.0.2/share1   /mnt  cifs  guest,uid=hoge,gid=hoge,nounix,dir_mode=0755,file_mode=0644,vers=1.0
nounixを指定することで、CIFSのUnix拡張(ファイルモードや所有者)を拾わないようになる。これとdir_mode,file_modeなどを組み合わせて所定のファイルモードでの参照が可能になる。実行ファイルは置けなくなるが、まあいいんじゃないだろうか。

それよりSMBv1の脆弱性がいろいろ問題になっており、mount.cifsがSMBv1を標準にしなくなったのもそういう事情があるのだろう。Windows10もFall Creators UpdateをクリーンインストールするとSMBv1サポートが入らない(アップグレードだと残る)らしいので、できればv1を使わない方向に進みたいところ。ソニーが果たしてそこまで手間をかけてnasneのファームウェア更新をしてくるかどうか…?

2017年3月31日金曜日

日程が操作されている可能性はどの程度か?という話

「99.999%」JリーグがFC東京のために日程を操作したことが判明(鹿島アントラーズデータブログ)というブログ記事がFC東京サポーター界隈でちょっと話題になっている。
今は昔の1999年、J2参入初年度にナビスコカップ(現在のルヴァンカップ)準決勝で鹿島と対戦し国立で引き分けた時、「あの鹿島に引き分けられるとは!」と感動した身としては、この記事を見て隔世の感を覚え、東京も鹿島から妬まれるほどの立場になったのだなあと感慨にふける次第である。

が、本ブログはTech Memorandumであって科学技術の話をすべきであろう(そうだったか?)。

元記事の論旨

当該記事においては、AFCチャンピオンズリーグ(ACL)に出場するJリーグ4チームが特に他国強豪クラブと対戦する直前または直後の週末に、東京との対戦が組まれているという点に疑問を呈している。詳しく書くと、以下の日程で4チームすべてACLの直前または直後に東京との対戦がある、ということである。(当該記事で掲載された日程表に、ACLの対戦カードには引用者が[ACL]と付記し、またJリーグの部分には節を付記した)。
鹿島アントラーズ
2/21 蔚山現代[ACL]→2/25FC東京(第1節)
4/22磐田(第8節)→4/26蔚山現代[ACL] →4/30鳥栖(第9節)
浦和レッズ
3/10甲府(第3節)→3/15上海上港[ACL](→3/19G大阪(第4節))
4/7仙台(第6節)→4/11上海上港[ACL]→4/16FC東京(第7節)
川崎フロンターレ
3/10柏(第3節)→3/14広州恒大[ACL]→3/18FC東京(第4節)
4/8甲府(第6節)→4/12広州恒大[ACL]→4/16札幌(第7節)
ガンバ大阪
3/11FC東京(第3節)→3/15江蘇舜天[ACL](→3/19浦和(第4節))
4/7広島(第6節)→4/11江蘇舜天[ACL]→4/16C大阪(第7節)

さて、当該記事ではそのような日程が「たまたま」組まれる確率として
(3/14)×(3/14)×(4/14)×(3/14)=0.001%
という計算式を示している。式の導出過程は示されていないが、たとえば鹿島については強豪蔚山との対戦前後にリーグ戦が第1・8・9節の3日分あり、そこで対戦し得るACL不参加チーム14のうち東京が入る確率(=3/14)、ということを表しているのであろうと推察される。

元記事の計算における問題点

まず、左辺の計算結果は0.00281...となり、パーセント表記すると0.281%である。この辺はケアレスミスであろうが、タイトルからして違ってきてしまう(上記結果に基づけば操作された確率は99.999%ではなく99.72%である)。
第2に、浦和とG大阪の直接対決をなぜか組み合わせから除外しているが、この対戦は事前に決まっているわけではないので、ここに東京が入る可能性も考慮すべきだし、逆に他の節でも直接対決が起こる可能性を考慮すべきである(14チームでなく17チームで見る)。これであれば、例えば鹿島と東京の対戦が第1・8・9節のいずれかになる確率は3/17となり、それ自体は確率として正しいと言える。
しかし、たとえ個別の対戦について3/14でなく3/17という確率で求めたとしても、上記の計算式はそれを単純に乗じており、すなわち4チームとの対戦をすべて「独立」であるものとして扱っているのでまずい。実際には、たとえば3/11のJリーグ第3節にG大阪と対戦するのであれば、同じ第3節に浦和や川崎と対戦する可能性はなくなるので、そのようなパターンを除外する必要があるのだが、独立を仮定すると同日に対戦することを許してしまう。このように、単純な掛け算で求めた結果は正しいとは言えない。

正しい確率の求め方

ではどのように求めるべきか。ACLグループリーグはJリーグの前半戦(第1~17節)に行われるので、鹿島・浦和・川崎・G大阪のそれぞれに(重複しないよう)1~17から4つの数字を選んで割り振ることを考える。これで東京がACL出場4チームと「第何節に対戦するか」のリストができるが、これは高校で扱う順列に相当し、そのパターンは
17P4=17×16×15×14=57120通り
である。このようなパターンのうち、鹿島と1・8・9節のいずれかで対戦し、かつ浦和・川崎・G大阪の3チームすべてと3・4・8・9節のいずれかで対戦するパターンは
3×4P3=3×(4×3×2)=72通り
である。したがって、FC東京の対戦順序が全くランダムに決められる場合、「たまたま」元記事が指摘するような対戦日程になる確率は
72/57120=0.00126...(パーセント表記だと0.126%)
と考えるのが妥当ではないだろうか。

おまけ:0.126%って高いの?低いの?

さて、本稿では確率計算に関する誤りの指摘と、正しいと思われる数値の導出を行った。蛇足ではあるが、「じゃあ0.126%ってのはほとんどありえない確率なの?」という点についても書いておこう。サイコロを投げて1の目が4回続けて出る確率は0.00077...=0.077%で、これよりは大きい。コインを投げて10回連続表になる確率が0.00098...=0.098%で、これよりも大きい。つまり、「サイコロで1の目が4回も連続するなんてありえない!このサイコロは細工されている!」と考える人にとっては、大きいとは言え近い確率なのでまあ操作の可能性を疑う余地もあるのかなあ、と思うが、これはまた別項にて。

2016年9月24日土曜日

ベトナムでプリペイドSIMを使ってみた件

カンボジアを発ち、アンコールエアのプロペラ機でホーチミンへ。ベトナムでのSIMカード購入も備忘録的に書く。

事前に調べた限り、ベトナムの携帯キャリアは基本どれも国営で、2016年5月段階でLTEは試験段階、通信品質にそれほど差はないらしい。1GBあたり10万ドン(約500円)と見積もっておけば、それほどぼられた感じにはならないだろうという結論に至った。

ホーチミンのタンソンニャット国際空港には昼過ぎの到着。日本からの便は夜に着くことが多く、ネット情報によれば空港のSIM販売店が閉まっていることがままあるらしいが、今回は余裕。到着ゲートを抜けてすぐの両替店でまず最低限(SIM費用+市内までのタクシー運賃+夕食代程度)の円をベトナムドンに換金。

到着ゲートを背に左方向(タクシー乗り場に近づく向き)に進むと、観光客用SIMの販売店がいくつかある。空いている店に聞いたら3GB30万ドンの奴しかないよーんと言われたので、他の旅行客もたむろする隣の店へ。こちらは何か知らないけど「unlimitedで20万ドン」と言われ、いや無制限とかありえないでしょーと思いつつ相場的には1.5GB+超過後は速度制限だろうと想像。滞在は4日弱なので、これで十分ということでSIMを購入。カンボジアのSIMを抜いて店のお兄さんにセットアップをお願いしたら、さっくりと開通。

3Gとは言えそれほどのストレスは無く、通信が途切れたのはメコン川クルーズのときくらい。さすがにあそこは「海ですか!?」と言いたくなるくらい川幅が広く、電波が届かないところがあっても仕方があるまい。それでも中州のレストランではしっかり電波が拾えた。

これで海外プリペイドSIMの実績は3ヶ国。パッケージツアーは日程や訪問地を事前に念入りに調べないと購入やチャージが難しいが(イタリアの例)。こういう状況では、成田でWi-Fiルータを借りる方が確実ということはある。他方、フリーツアーで「英語が通じる」都市部や著名な観光地にいくのであれば、SIMロック解除された(あるいはSIMフリーの)携帯を準備して現地でプリペイドSIMを購入するのがコスト面でメリット大と言える。

カンボジアでプリペイドSIMを使ってみた件

昨年のイタリア(準備編、実践編、使用感)に続き、カンボジア・ベトナムと周る機会があったので備忘録的に。

イタリア渡航前にSIMロック解除したXperia Z2を今回も活用。イタリアの時はパッケージツアーだったために購入のタイミングが極めて限られていたのに対して、今回は飛行機・宿とも自分で確保してじっくり見て回る旅なので、選択肢はかなり多い。ということで、渡航前にいろいろ検索して調べると、どうやら今はSmartというキャリアが良いらしいという結論に。結局Smartにはならなかったのだが。

カンボジアのシェムリアップ空港ではホテルにピックアップを依頼していたため、ここでは買わずトゥクトゥクで市街地に突入。シェムリアップは世界的な観光地なので、英語は大抵の店で通じる。ナイトマーケットのドラッグストアにSmartのラベルがあったので入って聞いてみたところ、「Cellcardしかない」と言われた。Cellcardも一応4G/LTEサービスを開始しているらしいし、他の店を探すのも面倒なのでCellcardのSIMを購入。1ケ月有効のデータSIMが3.5GB分で5米ドル。ちなみにカンボジアでは米ドル紙幣が通用し、小さい釣銭だけが現地通貨リエルで返ってくる。

SIMを差し替えたところ、最初はなかなか電波を取りにいかなかったのだが、2回ほど再起動したところで電波を掴んで無事開通。シェムリアップの市街地ではLTEも来ているようで、快適な通信ができていた。尤もホテルにはWi-Fiが完備されていたので、ホテルの中ではほとんど出番無し。

アンコール遺跡群の観光においては、Cellcardの電波は少々厳しかったように思う(他のキャリアを試してないのでわからんけど)。アンコールワットやバイヨンのようなメジャースポットであれば3G通信ができるが、それでも巨岩の陰に入ると電波が途切れる。プレア・カーンやプレ・ループあたりになると2G接続中心になり速度的にもストレスが強く、またかなり場所を選ぶようになる。

アンコール遺跡群の中でも特に離れた場所にあるバンテアイ・スレイ(東洋のモナリザで有名)までは市街地からトゥクトゥクで小一時間かかるが、道のり途中では電波が途切れることが多かった。一方で、道路わきにはSmartの看板を掲げた店がしばしば見られ、やっぱり時間をかけてもSmartを買えばよかったなあとちょっと後悔。

2015年10月19日月曜日

Karpersky Internet Security blocks IMAP folder listing?

Recently I uninstalled Kaspersky Internet Security (KIS) 2014 version, because it seems to block updating Ethernet (Intel I217-LM) driver. Finally I succeeded to update the driver, and then I reinstalled KIS --- actually, upgraded KIS to 2016 version.

Suddenly after installation, Thunderbird (open-source mail client) complained some IMAP folders cannot be found, and so message filter rules associated with those folders were disabled. Indeed those folders were not listed on Thunderbird, even though they were seen when I accessed to mail service via Web interface.

Pausing KIS and restarting Thunderbird, those folders were successfully listed. So KIS must be the cause of the problem. I tried to toggle each of KIS protection functions on/off, and eventually found that the problem is solved when I disable BOTH of two functions below:

  • "Scan POP3/SMTP/NNTP/IMAP traffic" option in e-Mail protection menu
  • Anti-Spam function
I hope this article might help someone who have similar problem. 

2015年10月10日土曜日

カスペルスキー先生にやられた件

For those who don't read Japanese:

This blog entry describes my experience as follows:
- Network devices are not seen in network connection window or ipconfig output, even though they are listed in device manager.
- Uninstalling Kaspersky anti-virus suite solved problem. Similar problem and solution is discussed in this page.

ノートン先生は重すぎる、トレンドマイクロは方針が合わない…ということで最近お仕事向けPCの保護にはカスペルスキーを使っている。

で、昨日から今日にかけてそのカスペルスキー先生にがっつりネットワークを切られてしまった顛末。ちなみにPCはDELL Precision T5810で、Windows10にアップグレード済み。

【2015年10月9日12:30】

そこまでメールのやり取りやらNASでの操作やら、全く問題なくネットワークを使っていたのだが、VirtualBoxを起動してUbuntuで作業…というあたりで妙にデスクトップ表示が遅く、ネットワークを確認したところアクセスできない状態に陥る。

ネットワークとインターネットの設定項目で「アダプタのオプションを変更する」を選択してネットワーク接続の一覧を表示すると、インストールされているVirtualBox用の仮想インタフェースは有効なのだが、肝心の物理Ethernet(Intel(R) Ethernet Connection I217-LM)が無効のままで、有効にしようとしても変更できない。

(ほとんど解決したためしがない)トラブルシューティングを動かしてみると、デバイスドライバに問題ありということなので、他のPCでドライバをダウンロードしUSBで持ってきてインストールするが、相変わらず変化なし。デバイスマネージャを動かすとなぜかリストアップされているので、ハードウェア的には認識できていると思われる。

Windows Updateを見ると、Intel I217-LM(内蔵Ethernet用のコントローラ)に関するドライバアップデートが失敗していたようで、当初はこれが原因ではないかと疑う。先のネットワーク接続一覧からアイコンを削除すると、アタプタは復活せず。デバイスマネージャで削除するとちゃんとすぐ復活する(まあハードウェアを外してないのだから当然だが)ものの、やはりネットワーク接続一覧に現れないまま。デバイスマネージャ側でドライバーの更新をやると

「タイムアウト期間が経過したため、この操作は終了しました」

と表示されるので、Windows Updateが途中で異常終了したままデバイスの更新をブロックしてるのではないか?とこの時点で考える。実験授業の時間が近づいているため、準備を優先して(いやネットワーク接続できてる前提で普段作業してるので、この準備がまた面倒で…)しばらく放置する。

【同日 20:00】

長い長い実験授業が終了。とりあえず他の業務も含めて常用PCがネットワーク接続できていないと大変困るので、USB Ethernetアダプタを接続して急場をしのごう…としたところ、なぜかUSB Ethernetすら有効にならない。というかやっぱり「ネットワーク接続」の一覧に出てこない。デバイス自体はデバイスマネージャに(ネットワークアダプタとして)表示されるのだが、たとえばデバイスドライバ更新などを行うと先ほどのタイムアウトが生じて不明なデバイス送りになる。
連休明けの火曜が出張、水曜が実験なので、何とか仕込みをしておきたかったのだが諦めて帰宅する。

【10月10日 14:00】

デバイスの削除と再認識、ドライバのインストールを何度か続けるも、認識せず。UbuntuをUSB起動してハードウェア的な動作を確認しようかとも思ったが、USB Ethernetまで認識しない時点で原因がドライバファイルのインストールや認識といった、ローカルなシステムであるところまでは絞り込めているので回避する(4Kディスプレイなので、Ubuntuのインストール画面がうまく表示されないというのも理由)。

諸々検索しつつも、やれnetshでネットワーク設定の情報をリセットしろだとか(そこじゃないと思うんだよなあ)今一つ解決につながりそうなネタがない。本来の業務こそが今日来た理由であり、こうなったら回復オプションで全部OS入れ直すか…いやサイトライセンスのアプリケーションがあるから面倒だな…と逡巡。

そこでふとコマンドプロンプトを動かしてipconfigを実行したところ、デバイスが全く表示されないことに気づき、

"ipconfig no devices"

というキーワードで検索。するとこんなやり取りを発見。

Network Adapters in Network Connections but not in ipconfig

これによると類似の現象に悩まされていた質問者に対し、Symantec Endpoint Protection (SEP) をアンインストールしてみ?というコメントが寄せられ、これで解決したとのこと。要するにアンチウイルスソフトか、その内部のファイアウォール機能が何かの理由でネットワークデバイスの操作をブロックしており、デバイスが正しく認識されていなかったようである。

で、製品は違うもののやってることは似たり寄ったりなので、「よもやカスペルスキー先生が…」と思いながらもアンインストールしてみると、その瞬間からもうネットワーク開通。何事もなかったかのように回復してしまったのだった!うぎゃー!

2015年9月18日金曜日

イタリアでプリペイドSIMを使ってみた件

買ったので使ってみた…という話。

パレルモでWindのSIMを入手後、2日目午後のカルタジローネまではチャージができず、再起動後にようやく利用開始できた。行き帰りの日程を除くとイタリア滞在は都合7日間だったのだが、初日はSIM入手が間に合わないと考えドコモの海外1dayを利用した。また、旅行日程のうち約半日ほどマルタ共和国に滞在したので、この時もドコモ海外1day。したがって、WindのSIMを利用した期間はおおよそ5日というところだろう。これを踏まえて利用雑感。

【エリア的な話】

観光地の中心部ではほぼ問題なし。シチリア島、本土ともおおよそH+表示(HSPA+らしい)で時々3Gという状況だった。一方、高速道路や一般道では郊外に出るとE表示(2Gのデータ通信)がしばしば見られた。アルベロベッロ近郊の地域はWindのエリア表示でも空白地帯になっているが、実際圏外だった。Vodafoneについてしばしば言われるアマルフィ周辺エリアは通信可能だったが、ソレントから山を越えてポジターノに至るクネクネ道ではさすがに圏外のところがあった。

また日本の高速道路ではトンネル内でも電波が届く箇所が多いが、今回通ったシチリアや南イタリアではトンネル内ほぼアウト。この辺はテレマティクスの普及状況とも関連するのだろうか。

船については、マルタに向かう船上で「ああシチリア島がかなり遠くなったな…」というあたりで圏外。メッシーナから本土に渡るフェリーではほぼ全行程で使用可能。ナポリからカプリ島に向かう船はやはり途中で圏外になった。

【スピード的な話】

H+表示のエリアでは、Google Mapや各種検索がかなり快適に動作する。特にベンチマークなどは行っていないが、Facebookへの動画アップロード等も特に引っかかることなく完了した。イタリアのネットワーク環境はあまりよくないという事前情報もあったので、これはうれしい誤算。

2Gに落ちるとさすがにストレス全開な遅さになるので、スマホを実用的に使うとなるとHSPA+か3Gのエリアということになるだろうか。

【データ量的な話】

こればかりは用途によって変わるので何とも言えないが、移動中マップを参照したり観光地ごとに写真を数枚ピックアップしてアップロードしたり、といった利用ではおそらく1日200MBもいかないだろう。3GBプランを購入したものの、5日の利用で29%しか消費しなかった(これはWindのアプリで確認可能)。

【テザリング】

結論からいうとダメ。あまりにデータ消費しないので連れにも使ってもらおうかとテザリングを有効にすると、インターネット接続できなくなる。事前にそこまでは調べていなかったので不覚をとったが、どうやらテザリングの場合に強制的にAPNが切り替わるという(SIMロックとは別の)制限がかけられているらしい。adb経由でこの制限を無効化できるような話もあるがかなりしつこい制限らしいので、今後キャリアとは手を切ってMVNO向けのSIMフリー機を検討した方がいろいろよいのかも知れない。

以上、乱文乱筆ご容赦。

2015年9月17日木曜日

イタリアでプリペイドSIMを買ってみた件(実践編)

準備編より続く。

【SIMカード購入:パレルモの玩具屋にて】

9月初旬、カターニア空港に降り立つ。事前情報通り、小さな空港で携帯ショップのようなものは見当たらない。そもそもツアーなので、機内預け荷物を回収したらすぐバスで移動だ。パレルモの前に(世界遺産に登録されたばかりの)モンレアーレに立ち寄ったところ、Windの看板を見つけたのだがシャッターが下りていて、購入は断念。

パレルモ市街では案の定駆け足の団体見学が続き、SIMを買いに行くような時間は無し。夕方5時半頃ホテルに到着し、夕食まで2時間あったのでここで行くしかない!ということで、スーパーやらジェラート屋がちらほらある海沿いの道を東へ向かう。

Windの店舗検索で見つかったD'Alia Eugenio(店舗の看板はD'alia Centerとなっている)は玩具屋で、支店ではなく認定ディーラー(Rivenditore Autorizzato)という位置づけのようである。店舗に入って英語で
"I would like to purchase prepaid SIM of Vodafone or Wind."
というと、どうやら1人2人は英語を分かってくれるらしく、
"Wind only."
との回答。じゃあ店の看板横のVodafoneは何なんだよ。SIMはサイズが重要なので、Xperia Z2用に「マイクロシム、OK?」と聞くと女性店員が首をかしげる。隣の男性店員が「マイクロ、ミクロ」と笑っていうと女性店員がああなるほどという顔をし、「ミクロシム」と言い返す。イタリア語は極めて日本のヘボン式ローマ字読みに近い発音をするので、microSIMは「ミクロシム」なのだ。

女性店員は親切で、"internet only?" (これも発音はインテルネットオンリーだ)などと用途を聞いてくれて、それなら3GBのプランがいいだろうというお薦め。しかし残念なことに、この店ではSIMを売ることができるがチャージ(イタリア語でricarica)ができないと言う。SIM代金は10ユーロ(彼女はエウロと発音した)で、3GBプランを使うには9ユーロ分のチャージを使うことになるので、近所のタバコ屋(タバッキ)に行ってチャージしてくれとのこと。で、SIMが有効になる(アクティベート)のは多分夜8時頃だということで、10ユーロ払ってSIMカードを買って店を後にした。

(追記:女性店員は「APNはinternet.windだからね」とか、設定についてもしっかり教えてくれた)

【チャージ失敗その1:パレルモのタバッキにて】

玩具屋の女性店員が教えてくれたのは、教会の角を左に曲がったところだというのだが、ちょっと見つからない。通りがかりの女性に "Tabacchi, where?" みたいに聞くと最初は東洋人相手にビビりまくり、さらに英語が分からない様子ではあったが、Tabacchiという単語に反応してくれたらしく手振りで場所を説明してくれる。予想よりかなり歩かないといけなかったようだ。

着いたのはこのSplendoreという店。タバコ屋と言っても、実際には軽食喫茶と宝くじ売り場がくっついたような店内だ。SIMカードを見せ、"ricarica?" と聞くと窓口を指さされる。窓口で10ユーロ札を見せて "ricarica" というと若いお兄ちゃんがふんふんとSIMカードを見ながら処理を始めるが、突然カードと札を返して何かまくしたてる。 "English?" と言っても全員 "No."なので何だかわからない。隣の客が "Morgen."と説明?してはくれたのだが、ドイツ語で「朝」だよなあ。どういう意味だ?

全く意味が分からないままタバッキを後にしたが、どうも想像するにまだアクティベートされていないのでチャージできないということのようである。"Morgen."は、朝になったらまた来いということか。だが夜の外出はさすがにリスクがあるし、朝にはバスで次の場所へ移動だ。ここでのチャージは諦める。

【チャージ失敗その2:Androidアプリにて】

事前情報では、携帯会社が提供するアプリやWebサイトを通じてチャージすることも可能らしい。そこでホテルに戻り、Wi-Fi経由でWindのアプリをスマホにインストール。携帯番号を使ってログインすると確認SMSが届くので、アクティベートはできているようだ。しかし金額表示は0.00ユーロ。
そこでアプリの"Ricarica"タブを選択しカード情報を入れてみるが、「チャージできませんでした」旨のSMSが返されておしまい。どうやら、日本のクレジットカードではオンラインチャージができないという話に見事にぶち当たったようだ。

【チャージ失敗その3:自動販売機にて】

パレルモからアグリジェントへの移動中、立ち寄ったサービスエリアに煙草の自動販売機。よく見ると15番のボタンに、"Wind ricarica"と書いてあるではないか!慌てて10ユーロを入れてテンキーで15と打つが反応なし。さらによく見ると、10.90ユーロと書いてある。90セント手数料か。改めて15と打つと緑ランプが点滅するが、また反応なし。おいおいと思っているうちにバスの発車時間となり、哀れ10ユーロ90セントが自販機に飲み込まれたのであった。

【チャージ成功:カルタジローネにて】

アグリジェントからさらにカルタジローネに移動して観光。ここでは散策時間が40分ほどあったので、再びタバッキに挑戦。店内にいる、いかにもイタリアの田舎町にいそうなおばあちゃんに向かい "Wind, ricarica, dieci euro, per favore." (Windのチャージ、10ユーロお願い)と言うと無言でSIMカードと10ユーロ札を受け取り、レジをぱちぱちと打ってレシートを差し出し、おしまい。

さて…と再びWindのアプリを動かしても、インターネット接続はできない。なんじゃこれと思って再起動してみたら、無事インターネット接続ができるようになった。再起動が必要とは…

ちなみにこの時に来ているSMSを翻訳にかけてみると

  • 10ユーロのチャージに成功した。カードには4ユーロ分のボーナスがある。
  • インターネット接続用のプランをアクティベートするために5ユーロ請求する
  • 3GBプランの契約に8ユーロ請求する(あれ?9ユーロでは?)
てな感じで、結局(自販機に吸われた10.90ユーロを除けば)トータル20ユーロの支払いで28日間3GBというプランが使える状態になった。アプリで残高を見ると(10+4)-(5+8)で差し引き1ユーロ残っているのだが、まあこれは仕方ないだろうなあ…

使ってみたに続く。

イタリアでプリペイドSIMを買ってみた件(準備編)

えー、ブログに書くのが2年ぶりと…

2015年夏、私的事情により南イタリア・シチリア・マルタを巡る9日間のツアーに参加した。
一応本来は仕事をやってる期間なので最低限の連絡手段は確保したいし、できればFacebookなどへの投稿、現地での調べもの、翻訳などでスマホを活用したい。
しかし国内携帯各社の国際ローミング料金は高く、1日あたり20~30MB利用で1,000円オーバー課金され、使い放題だと1日2,980円が相場。1週間使ったら2万円か。

成田でWi-Fiルータを借りる手もあり、ローミングよりは割安だが意外に値が張る様子。

てなわけで、現地携帯電話会社のプリペイドSIMを利用する方向で準備を開始。

【準備1】手持ちスマホのSIMロック解除

まず、現地SIMを挿して動作する機械が必要。手持ちのXperia Z2(DoCoMo SO-03F)は当然SIMロックされているので、店舗に持ち込み3,000円払ってロック解除(見ていると、単に解除用の特殊なSIMを挿してパスコード打ち込むだけみたいなので、これで3,000円ねえ…と感嘆)。

なお、研究室にSIMロックフリーのASUS MeMO Padがあるものの、日本のいわゆる「技適」マークしかプリントされておらず、欧州の技術認定を示すCEマークが筐体にも電磁表示でも見当たらなかったのでEU域内での利用を躊躇した次第。SO-03Fの場合、microSDカードスロットの上に入っているプラ板に米国FCCと欧州CEのマークが記載されている。

【準備2】プリペイドSIMを買えそうな場所の下調べ

こちらが大変。スタンダードなイタリア旅行としてミラノやローマから入るならば、空港や観光地そばで買えたという報告が多い。しかし今回はシチリア島のカターニア(Catania)空港への到着。TripAdvisorでは現地の方が繰り返し「空港では買えん!街に行け!」と指摘している場所。実際、空港ホームページでもSIMを取り扱っていそうな店は記載なく、現地携帯会社の店舗検索でも空港内には店舗無し(おかげさまで "Trova Negozio" が店舗検索であることを覚えた)。

ツアーの行程ではカターニアの街中には行かずパレルモ(Palermo)で観光・宿泊なので、パレルモ市内の店舗を検索。しかしいずれも主要観光スポットからは5~10分程度歩かねばならず、自由時間の少ないツアー観光での購入は困難と判断。

ではホテル着後に買いに行く方針に変更し、宿泊施設情報が届いたところで場所を調べてみると、中心部から外れたSan Paolo Palace。困った。しかしどうやら10分強歩くとWindの代理店があるらしいことが判明し、Google ストリートビューで確認すると確かにある!

旅程にマルタを含むこともあり、本当は巷で話題のVodafone Smart Passport(欧州域内各国で1日3ユーロ払うと500MBまで使える)を買いたいところであり、代理店にはVodafoneの看板もついていることから、一縷の望みを託して機上の人となるのであった――実践編に続く。

2013年7月5日金曜日

Windows8+UEFIなPCでUbuntuをデュアルブートした(2)

Windows8+UEFIなPCにUbuntuを入れる苦闘の続き。

前述の方法では、grub画面が表示されずそのままWindows8の起動シーケンスに進んでしまう例が見られた(2013春モデルのVAIO E, VAIO Tで確認)。

grubメニューでUbuntuを選んでいる限りはgrubが有効になっているが、いったん有効なWindowsエントリを選択するとそれ以降はgrubメニューを経ることなく、常にWindowsが起動してしまう。

まずgrubを復活する(見える状態に戻す)方法。BIOS設定でUEFIモードをOFFに(VAIOの場合は "Legacy" を選択)して再起動すると、"Operating System not Found"と言われるが、ここで電源ボタン長押しで強制終了する。次にASSISTボタンでBIOS設定を開いて設定をUEFI ONに戻すと、次の再起動時にはなぜかgrubメニューが再び表示される。面倒。

そこでBoot-Repairを導入して試してみた。 ここではBoot-Repair導入の説明のうち、リポジトリを追加してapt-getする方法を採用。
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)
これで起動したBoot-Repairで "高度なオプション" を選択し、"バックアップを取ってファイル名を変更" にチェックが入っていることを確認して適用すると、必要なEFIイメージファイルをEFIパーティション上に適切な名前でコピーしてくれるっぽい。再起動すれば、「消えない」grubメニューが動く。
 
なお、この状態ではgrubメニューにやたらとリストが並ぶので、grub customizerを導入して整理するとよいかも知れない。

なお、以上の方法は基本的にUbuntu 13.04 amd64に入っているEFI対応grub2を使ってブートする話であり、rEFIndで対応する方法は模索中。rEFIndの作者はBoot-Repairが若干おかしい挙動をしている旨を指摘しているので、そこも検討する必要がある。

Windows8+UEFIなPCでUbuntuをデュアルブートした

職場内部的にはまとめを書いておいたのだけど、もうちょっと世の中的に見える場所に書いておいた方がよさげなのでブログに書く。

目標は「タッチパネル搭載のWindows8マシンにUbuntuを入れる」。対象機種は2012年10月発売のSony VAIO T (SVT1312AJ)。いわゆるUEFI対応の機種で、ディスクもGPTで管理されている。Secure bootはenabledのままで実施。

2013年4月段階で、Canonicalは公式に「UEFIマシンに対してWubiは使うな、12.04.2か12.10の64ビット版を使ってインストールせよ」と指定。 32ビット版はUEFIを認識しないらしい。ここではUbuntu 13.04 (raring)のLiveUSBを使用する。
  1. まずWindows8上のディスクパーティションツールで、Cドライブを減少させて20GB程度の未使用領域を作成。リカバリ領域やツールなどが個別のパーティションに入っていて既に5つくらいあるが気にしない(もしディスクがMBR方式で管理されている場合、当然こんなにパーティションが分かれてたらUbuntuが入らない)。 
  2. Windows8のデスクトップでマウス右上端に移動→設定→コントロールパネル→ハードウェアとサウンド→電源オプション→電源ボタンの動作の変更→「現在利用可能ではない設定を変更します」→高速スタートアップを有効にするのチェックを外す。
  3. USBから起動し、LiveUSBのgrubメニューから「Try Ubuntu」を選択(ここではInstallを選ばない)。
  4. Liveデスクトップ上のInstall Ubuntuアイコンをクリックし、インストール開始。
  5. Windows 8 とは別に Ubuntuをインストール、という項目を選択。
  6. 未使用領域があれば、そこに勝手にパーティションを作ってインストールが続行される。無い場合はパーティションエディタが起動する…と思う(未確認)。
インストールが完了すると、再起動時にgrubの選択画面が表示され、Ubuntuを選択した場合は普通に起動する。 しかしWindows 8を選択しても起動しない(VAIO以外の機種では、そもそもgrubが表示されない事例がある)。

Windows 8 搭載のVAIOの場合、電源OFFからASSISTボタンを押すことでEFIメニューが表示され、そこで強制的にWindows 8を起動できる。ただしこの方法をやると、今度はgrubが見えなくなる。

grubからUbuntuを起動できた場合、以下の方法でUbuntu/Windows 8を選択可能なgrub.cfgを作成する(基本的にはここの情報に基づく)。

  1. EFIシステムパーティション(ESP)のUUIDを以下のように取得する。
    $ sudo grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
    5678-9ABC (←この出力を記録)
    $
  2. EFIのsearchコマンドで必要なヒント情報を取得する。
    $ sudo grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
    --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 (←記録)
    $
  3. 上記1.2.の結果に基づいて、/etc/grub.d/40_customに以下の設定を追記する。 (/boot/grub/grub.cfgに同じ記述を書いてテストすることが可能だが、カーネルのアップデートがあるとgrub.cfgが書き換えられるので、最終的には上記設定ファイルに書いておくべき。)
    menuentry "Windows UEFI-GPT"
       {
         insmod part_gpt
         insmod fat
         insmod search_fs_uuid
         insmod chain
         search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 5678-9abc chainloader /efi/Microsoft/Boot/bootmgfw.efi
       }
  4. 以下のコマンドでgrub.cfgを更新する。
    $ sudo update-grub
ただしこれではうまく行かない事例も散見される(BIOS設定を変えるなど、ちょっと前提条件が違ってるケース)。

2012年2月13日月曜日

続・モゲマスのSレアゲットと確率の関係

この手のネタはやはり学生には食いつきがいいのか何かわからないが、いくつかフィードバックをもらったので問題を組みなおしてみよう。

どうやら、ガチャを1回やった場合に「6種類のカードのどれかが必ず得られる」のではなく、その他のカードも含まれているらしい。確率については非公開(これで本当に良いのかという気もするが、いろいろ調べても景品表示法等には抵触しないようだ)。

とりあえず試算のために、twitterでもらった「1回の試行で6種類のどれかが得られる確率は12%くらい」というデータに基づいて話を進める。もし12%=0.12の中で6種類が均等であれば、目的のカードが得られる確率はそれぞれ2%=0.02となる。
  • 6種類のうち、最初の1種類が得られるまでの試行回数は、パラメータ0.12の幾何分布に従い、その平均回数は1/0.12≒8.3回である。
  • 1種類めのカードが得られた後、2種類めの未所持カードが得られるまでの試行回数は、パラメータ0.10の幾何分布に従い、その平均回数は1/0.10=10回である。
  • 以下同文で、6種類すべてを最低1枚ずつ得るまでの平均試行回数は、1/0.12+1/0.10+1/0.08+1/0.06+1/0.04+1.0.02=122.5回。
1回300円ならば、6種類すべてを得るまでの平均費用は122.5×300=36750円である。なるほど、ねとらぼの元記事ではこの値を超えるのは1回だけで、後はこれより短い(が著しく短いわけでもない)。12%という予測はなかなか妥当な数値と言えそうだ。

英語配列のノートPCで日本語配列設定にしちゃった時に、アンダースコアを入力するTips

US配列のLG gram SuperSlimを購入した。で、Windowsの初期セットアップを始めたところ、最初に選択できるキー配列はMicrosoft IME(まあ要するに日本語配列)だけ。で、その後に「追加のキー配列」を選択できるのだが、後でやればいいやと思ってスルーしてしま...