量子論から考察するアリエッタのパンツの種類問題

HatenaBlogが記事書けって催促するから書きました。
あ、タイトルは釣りです。ホイホイ引っかかって恥ずかしくないの?



騎士団GATE魔道杯お疲れ様でした。

さて、Twitter上ではハロウィン新イベ(以下、UHG)のリークイラストについて賛否両論となっています。
ツイートを見た限りでは、主に主要キャラクターの少女たちの胸のサイズが不自然に大きくなったり、極端にあざといポーズをとっているのが問題視されているようです。


なぜこういったことが起こるのでしょう?
興味深い分析ツイートを見かけました(無断引用ですいません)


要約すると、想像力で補っていた部分が露わになることで、想像する余地がなくなってしまったという内容です。

これに近いような話をどこかで聞いたことがあります。量子論です。

不確定性原理

www.youtube.com
ミクロの世界では、二重スリット実験のように「観測前後で結果が変わる」という奇妙な現象が起こります。
(意味わからないですよね。でも本当のことです)

上の動画で言えば、観測する前は干渉紋を作っていたのに、観測された瞬間に片方のスリットだけを通るようになってしまいました。

なぜそうなるか?意味不明ですが、実際にそうなってしまっています。

仕方がないので頭のいい人達はある仮説を立てました。


「いろんな状態が重なって存在している」

本題

難しい話をいれてしまいました。ここから本題です。


Q: アリエッタのパンツの種類について予想してください。


エリスが作ってくれたくまさん柄
昔からずっと履いてたかぼちゃパンツ
いや、案外普通の無地パンかもしれない。
もしや、背伸びして選んだ大人デザイン
下手したら下半身も自由奔放、履いてない可能性だってある。

Twitterでアンケをとったらこうなりました。


解釈は十人十色だということがアンケ結果からよくわかります。
アリエッタのパンツの情報は公式から発表されていません(当たり前)。
ですから、こういった変態どもの想像力によって様々なアリエッタが生まれていくわけです。

想像のアリエッタ1体が生み出すエロスエネルギーは微々たるものかもしれません。
ですが、無限の可能性があるわけですから、合計すれば無限のエロスです。ビバ可能性!


ここではパンツに限定して話をしましたが、実際にはブラの種類とかいろいろあるわけです。
これが想像の醍醐味です。1人に一つ自分だけのマイアリエッタイメージがあるんです。
先ほどの量子論で言えば「様々な状態が重なり合っている」わけです!


公式が実際にきわどいイラストを出すと、マイイメージというのはおぼろげな夢となっていきます。

「確かにくまさん柄履いてたら興奮するけどさ。。。 もうこれ履いてるって答え出てんじゃん。」



たしかにそれが公式解釈で、唯一の事実かもしれません。

ですが、想像というのは見えない世界を見ようとして生み出した変態どもの補完なのです。


それが「観測」された瞬間、無数にあった可能性は一箇所に収束してしまいます。

ああ、たしかにエロいよ。でも、夢がねえ!

それでも、救いはある

それじゃあ公式はなにもできないじゃないか! ごもっともな指摘です。
ですが、救いはあります。

公式は、新たな可能性を生み出せる。

例えばです。アリエッタとリルムの出会いとか色々、そういう細かい話はあまり描写されていません。
そういうところをもっと深く掘り下げていった時、この記事に釣られた変態含め色々な人が新たな可能性を見出して萌えるわけです。

「リルムとソフィが同じ宿で泊まってるとか実質セ○クスだろ…」みたいな変態によって、また無限のエネルギーが生み出される。



可能性の収縮と、新たな可能性の膨張。



ここから分かることは、つまり…


結論

UGは宇宙。


今日の復習

こんなクソ記事を見た無為な時間を無駄にしないよう、この式だけ覚えておきましょう。
不確定性原理を表す式です。

https://wikimedia.org/api/rest_v1/media/math/render/svg/67c1a887bab8770436c730db2c6ea28bfbf677fb


覚えにくかったら、「アリエッタのパンツの種類原理」と覚えればだいたいあってます。
試験には出ません。

Fiddlerを使ってiPhoneのHTTPS通信を傍受

前提

HTTP。名前は聞いたことがある方が殆どかと思います。
例えばこのブログのURLは「http://ark-n.hatenablog.com/」です。HTTP通信を使用してページの中身を頂戴!とやってるわけです。


このHTTP、いわばデータが「丸見え」です。
悪意を持った第三者がそれを傍受してちら見したり書き換えたりとかできちゃいます(ARP spoofingってやつですね)。
それだと秘密の情報をやり取りするのにまずいのは明らかです。
どうにかできないものか。頭の良い人達が一つの解決策を作りました。これがHTTPS通信です。


詳しい説明はWikipediaに譲るとして、簡単な説明を。
この手法は、送る内容を毎回暗号化して受け渡しします。
これで第三者が盗み見たりとかができなくなりました。素晴らしいですね。


でも、開発者とかには少し困ったことが出てきます。
なんたって、誰も読めない状況ですから開発者自身も何を送ってるのか見えません。
一時的に読める状況で扱いたい場合というのは出てくるわけです。
そこで、Fiddlerを使って通信を傍受、監視する手法を使うことになるわけです。
以下紹介する手法はiPhoneのものですが、基本はAndroidの場合も同じだと思われます。

必要なもの

・無線環境
iPhone
・パソコン

方法(PC側)

  1. まずFiddlerをダウンロード、導入します。http://getfiddler.com/
  2. 証明書発行に必要なプラグイン「CertMaker for iOS and Android」を導入します。http://www.telerik.com/fiddler/add-ons
  3. Fiddlerを起動、Tools→Optionsで設定を開きます。
  4. HTTPSタブで、「decrypt HTTPS traffic」にチェックを入れます。
  5. 「Trust the Fiddler Root certificate?」と聞かれるので、YESを押します。
  6. Connectionタブで、「Allow remote computers to connect」にチェックを入れます。
  7. Fiddler再起動します。
  8. Fiddlerを全画面表示にして、右上にある「Online」の上にマウスを持っていきます。
  9. するとIPアドレスが表示されるので、メモしておきます。

これでPC側の準備は完了です。Fiddlerを閉じないようにしてください。

方法(iPhone側)

  1. Wi-Fi設定を開き、HTTPプロキシを開きます。
  2. サーバ欄に先ほどメモしたIPアドレス、ポート欄に「8888」、認証をOFF(そのまま)にします。
  3. safariを開き、URL欄に「http://ipv4.fiddler:8888」と打ち込みます。
  4. 「FiddlerRoot certificate」をクリックして、証明書をダウンロードします。
  5. ダウンロードした証明書を認証、インストールします。
  6. 「一般」→「情報」→「証明書信頼設定」から、先ほど導入した「DO_NOT_TRUST_FiddlerRoot」をONにします。

以上で前準備が完了です。


これでiPhoneからの暗号化された通信がFiddler上に表示されます。
終わった後は証明書の無効化とHTTPプロキシの設定解除を忘れないようにしましょう。

FF7ゆるふわ一人旅【後編】

ラスボスはやはり難しかった(主に用意が)。

戦略としては前と同じで乱れ打ちものまねなのだが、敵の攻撃が重いので少し対策を貼る必要が出て来る。
なのでHPUPを2個MASTERさせておいた。あと、大空洞でコマンドカウンターが手に入るのでこれをMASTERにしてものまねとセット。
他にはマジカルを2個MASTERさせ魔力を255に。
火力が足りないと思ってついでにアルテマをMASTER、分裂させてMPターボとセットにしたが、結果的には火力超過で無駄だった。

あと、ラスボス戦で使うことになるかなと思い海チョコボを作ってエルメスの靴を取っておいた。が使わず…

最終決戦に用意した装備

武器: ラグナロク
アルテマ(MAS)+まほうみだれうち(Lv3)
アルテマ(Lv2)+MPブースト(Lv3)
・ものまね(MAS)+コマンドカウンター(MAS)

防具: ウィザードブレス
・フルケア(Lv2)
・しょうめつ(Lv1): 開幕ウォール対策に。持ってなくて取りに戻った…
・Wまほう(Lv1)
・MPアップ(MAS)
・HPアップ(MAS)×2
・マジカル(MAS)×2

アクセ: リボン
最初いらないと思っていたがおもっきし異常攻撃してくるので装備。

ジェノバSYNTHESIS

アルテマW魔法乱れ打ち→ものまねカウンター→ものまね。

リバースセフィロス

アルテマW魔法乱れ打ち→ものまねカウンター→ものまね。

セーファ・セフィロス

デバリア+フルケア
→(ものまねカウンターで)デバリア+フルケア
アルテマW魔法乱れ打ち×3。

やってから気づいたことだが、アルテマ+フルケアで無限ループすれば負けないよね。今までの努力(主に海チョコボ)ェ…


まあこれでひとまずクリア。
が、せっかくなのでウェポンも倒しに行こう。

VS アルテマウェポン

アルテマ乱れ打ちしてたら終わった。FA対策にリフレクトリング装備。

VS エメラルドウェポン

せんすいマテリアはまあ使わないよね。

武器: エンハンスソード
じゅうりょく(Lv3)+まほうみだれうち(Lv3)
じゅうりょく(Lv3)+HPきゅうしゅう(Lv3)
・ものまね(MAS)+コマンドカウンター(MAS)
・Wまほう(Lv1)
・フルケア(Lv2): 結果的にはいらなかった

防具: ウィザードブレス
・バリア(Lv4): 必要かと思ったがフルケアと同じく必要なかった
アルテマ(MAS)
・すべてぜんたいか(Lv1): 乱れ打ちグラビガ全体化できてないやんけ!
・MPアップ(MAS)
・HPアップ(MAS)×2
・マジカル(MAS)×2

アクセ: タフネスリング

重属性が無効でなく半減なので普通に9999が入る。が、命中しないことがあることを考えるとアルテマでよかった気はする。
グラビガで9999与えて999回復を乱れ打ちするのが基本。
ただ、これだけだと眼に攻撃を吸われて詰むので、最終的にはグラビガ4発+アルテマを連打。
残り30秒とかでギリギリ撃破した。

VS ルビーウェポン

一人プレイ強制とのことで、一人旅ならクソ雑魚やんwww と思ったのもつかの間。
わけわからない魔法防御力の前に、正攻法での攻略を諦めたのであった。
(バハ零式連打でいける気はするが、1発1分を80回もやるとかだるすぎ。却下)

武器: アポカリプス: 50000APを無駄にしないために
・稼ぎたいマテリア

防具: ウィザードブレス
・マスターまほう+まほうみだれうち
・MPアップ(MAS)
・HPアップ(MAS)×2
・Wまほう(Lv1)
・Wアイテム(Lv1)
・ものまね

アクセ: なんでもいい

HPを7677にしてボス戦突入。
開幕でしびれ針→ポーション。これでカウンターを被弾せずに7フィーバーへ。
本体へは必中だが触手への命中率はよくなかった。ていうか外れるんだ…。
その後コメテオ×8。触手の攻撃(MP攻撃。普通の攻撃なら失敗)をしのいで、ものまね。
勝ち。

全ボス撃破~。



縛りの条件がゆるすぎたので、次はもうちょっときつめにやりたい。

FF7ゆるふわ一人旅【前編】

iOSFF7がプレイできることを知り、すぐ買ってしまった。1800円也。
少し操作しにくい部分もあるが、慣れでカバー。
小学生以来のプレイということもあり色々と懐かしい。買ってよかった。どうせガチャ6~7回分の費用だしね。

で、普通にやるんじゃヌルゲーなので一人旅の縛りをいれてやることに。
といっても半分初見なので、制約は緩めに。

ナイツオブラウンドを使わない。
・極力1人

続きを読む

input[type=radio]

URLからデータを読み込んだ時とかに、特定のラジオボタンにチェックを入れたいことがある。
name属性は指定してあるとする。

$("input[name=hoge]").val(x);

これは動かない。

$("input[name=hoge][value=" + x + "]").prop("checked", true);

これでOK。属性セレクタの複数指定方法を忘れそうなのでメモ。



全然関係ないが

$("input[type=text]").text("hoge");

このミスをよくやってしまう。C#だとtextをいじると文章が変わるのでその癖が抜けない。

Linuxからプロセスの動作状況をスマホに通知する

計算機をn時間とかx日とか動かす作業をしている時に、タスクの終了状況をどうやって確認するか。
いちいちps -xとかtopとかやるのもいいけど、もっとパソコンらしいラクチンな方法があるはず。
というわけで、自分の思考と試行の備忘録をここに記す。

プロセス監視の対象同定

psで現在動いているプロセスを取得できる。これを定期的に実行してあげればよさそうである。だが、問題はどうやってプロセスを同定するか?
個人的には、以下の3つの用途が考えられた。

  1. 単純にコマンドを渡してあげて、実行すると同時に監視を開始
  2. 実行中のプロセスに対し、PIDで同定する
  3. 実行中のプロセスに対し、実行時のコマンド名で対応する

1だけだと実行し忘れた時に捕捉する手段がないし、2,3だけだと二度手間になる。
1の場合、普通に引数を合成してやって、$!でPIDを取得してやればよさそうだ。*1
上の選択肢の分岐は第1引数で指定してやる仕組みにすることで対応する。

#引数に応じて捕捉条件を変動させる
action=$1
greptx=""
tasktype=""
case "${action}" in
	"-p" )
		greptx="^\s{0,}${2} "
		tasktype="PID[${greptx}]";;
	"-c" )
		greptx=" ${2}"
		tasktype="COMMAND[${greptx}]";;
	"-d" )
		taskstr="$2 $3 $4 $5 $6 $7 $8 $9"
		${taskstr} &
		tasktype="JOB[${taskstr}]"
		greptx="^\s{0,}${!} ";;
	* )
		echo -e "\033[31m[ERROR]\033[0m Missing argument."
		exit 2;;
esac

-pならPID指定、-cならCOMMAND指定、-dなら引数を合成してバックグラウンド実行、その後PIDを取得する。


プロセス監視を定期的に行う方法

さて、これで目的のPIDないしCMDは取得できた。後はpsを定期的に実行してやるだけである。
この際、余計な項目を表示させないようps -e o pid,cmdを使ってやる。
これをgrepで条件一致させてやる。この時前述の変数greptxを使用するわけだ。
もちろん、grep自身や実行中のshell scriptの名前が引っかかってしまってはしょうもないので、これはgrep -vで除外する。*2

#ここで、ファイル名はprcliveである(grepの除外条件にファイル名を使っている)
interval=5
while true
do
	isAlive=`ps -e o pid,cmd | egrep "${greptx}" | grep -v "grep" | grep -v "prclive" | wc -l`
	if [ $isAlive -ge 1 ]; then
		# running
		echo "${tasktype} is Running…"
	else
		# dead
		echo -e "\033[32m${tasktype}\033[0m is Finished."
		break;
	fi
	sleep $interval
done

無限ループを発生させ、$intervalの間隔で実行中のタスク一覧を取得する。
grepに引っかかる=生存中なのでrunning, いないなら終了しているのでdeadという寸法だ。
とりあえず、これでタスクの定期監視は達成できた。


問題点:通知手段が貧弱

これで完成でいいかというと決してそんなことは無いであろう。
そもそもコマンドライン上にプロセスの監視状況を出すだけならtopでいい。
せっかくプログラムを書いているのだから、もっといい通知手段を使いたいものだ。
notify-sendという手もあるが、そもそも実行中のマシンにモニターをつなげてないし、遠隔操作も普通に行う。
必然的に別の方法を探さないといけないことになる。


どうやってスマホに通知するか

最初は専用のアプリを作ったりとか考えたが、明らかに苦労の割に成果が見合わないだろうということで却下。
VPN接続を維持したままとかそういうのも無しの方向で考えた結果、メール送信が一番シンプルでいいだろうということに。
GmailとかならPC/スマホ両方でお手軽に通知出せるので、余計な車輪の再発明をしなくて済むのが大きい。


CUIでメール送信

.mailrcに情報書き込み

メール送信プログラムとして、CUIで操作できてroot権限が不要(ここ大事)なmailxを使用することにした。
幸い標準でinstallされていたが、ないなら

sudo yum install mailx

してやる必要がある。
さて、初期設定のままだと引数がいっぱいになってしまうので設定ファイルに共通設定を書き込んでしまおう。
設定ファイルはvi ~/.mailrcで開く。
[]で囲った部分は適宜自分のものに読み替えて欲しい。

set smtp-use-starttls
set smtp-auth=login
set smtp=smtp://smtp.gmail.com:587
set smtp-auth-user="[your-mail-address]@gmail.com"
set smtp-auth-password="[your-password]"
set from="[your-username]"
set ssl-verify=ignore
set nss-config-dir=/home/[USER]/certs/



nss-config-dirに指定してやるための証明書確保

証明書がないと「Error in certificate: Peer's certificate issuer is not recognized.」というエラーが発生する。
ここがハマり所で、気づくのに数時間かかったので忘れないうちにメモ書きしておく。
まず、certutilがinstallされているか確認しておこう。ないなら

sudo yum install nss-tools

が必要。
firefoxがインストールされているなら、その証明書をかっぱらうと簡単に設定ができる。
~/.mozilla/firefox/[xxxxxxxx].default/フォルダ内にある、key3.db,cert8.db,secmod.db
~/certsにコピーする。
その後、ホームディレクトリに戻って以下のコマンドを順番に実行していく。*3

~]$ certutil -L -n 'Google Internet Authority G2'  -d certs -a > google.cert.asc
~]$ certutil -A -t "C,," -n 'Google Internet Authority G2'  -d certs -i google.cert.asc



テスト送信をしてみる

以上の準備が整ったら、以下のコマンドを試しに実行してみる。

echo test | mailx -s "subject: testmail" [want-sendto-address]@gmail.com

エラーが発生しなければ成功。


プロセス監視アプリに組み込む

これで準備は全て完了した。後はプログラムに組み込むだけだ。

sendto="[want-sendto-address]@gmail.com"
interval=5
while true
do
	tasktype=`ps -e o pid,cmd | egrep "${greptx}" | grep -v "grep" | grep -v "prclive"`
	isAlive=`ps -e o pid,cmd | egrep "${greptx}" | grep -v "grep" | grep -v "prclive" | wc -l`
	if [ $isAlive -ge 1 ]; then
		# running (nothing to do)
	else
		# dead
		dat=`date +"%Y/%m/%d %H:%M:%S"`
		`echo -e "${tasktype} is finished. (at: ${dat})" | mailx -s "Finished: [${tasktype}]" $sendto `
		break;
	fi
	sleep $interval
done



使った結果


定期的にVPNSSH繋いでtopして閉じるクソ面倒な所業から解放された喜びがすごい。
こうしてますますヒキニート化していくのであった。完。
(休日の最中でも容赦なく通知音が鳴って現実に引き戻されるわけでもあるが)

*1:参考: [Linux][shell] PIDを取得する方法まとめ - Qiita

*2:参考: 簡易プロセス死活監視スクリプト - Qiita

*3:参考: ssl - smtp.gmail.com from bash gives "Error in certificate: Peer's certificate issuer is not recognized." - Server Fault。 ただし、Google Internet Authorityの後ろにG2をつけてやる必要があった。 Firefoxが導入されていない場合についても記述されている。