2018年4月13日 (金)

Exhaustive Lock Dependency Emulator その3 修正とチェック

略して ELDE。マルチプロセスの最も簡単な lock/unlock 機構において、そのロックの依存を総当たり的に調べるプログラムを書いた。その1で「虚実行」も数え上げていたのを修正し、「実実行」のみを対象とするようにした。

前回は、意図しない「虚実行」を含めていたため、他の人がやらないような実装になり、その意味では個性があったかもしれないが、今回こそ、特に工夫のない「車輪の再発明」になっていると思う。ただ、前回の怪我の功名で、違う考え方で作った二つの実装が同じ結果を出すのを確かめることで、エミュレータの正しさを多少ともチェックしているのは優位点かもしれない。「証明」がないのは相変わらずではあるが、いくつかの例で、チェックはできた。

前回も書いたとおり、これはマルチプロセス環境を Perl 上でエミュレートするという話ではまったくない。プログラム自体は、シングルプロセスで終了する形をとる。

今回のアイデアのキモは、グローバルな単一ロックのみを扱うため、ロックは重ならず、プロセスをまたいでそれぞれのロックをシーケンシャルに整列して捉えることができるという点にある。その列をロック仕様として総当りで数え上げ、それに基づくよう実行していく。処理の重なりのうち、簡単なものは省いて効率化する。

なお、「プログラム」をコンテクストに関し「関数的(functional)」でなければならない…という条件を課すのは今回も同様である。すなわち、コンテクストが同じように(同じ lock/unlock 順序で)与えられれば、常に同じ「出力」をしなければならない。

続きを読む "Exhaustive Lock Dependency Emulator その3 修正とチェック"

2018-04-13 21:00:17 (JST) in Perl, シミュレーション, 関数型言語・定理証明器 | | コメント (1) | トラックバック (0)

2018年4月11日 (水)

組み合わせと順列の数え上げのアルゴリズム

Perl で組み合わせの数え上げが欲しかったのだが、CPAN からのインストールには C が必要なようなので、できれば避けたい。これぐらいなら、Perl 自体で書けるだろうと、参考となるサイトを探すと…意外にない。

そして見つけたいくつかの日本語のサイトでは、nCr = nCr=(n-1)Cr + (n-1)C(r-1) の式を使って示していた。いや、もっと効率の良い方法があったはず…と海外のサイトを調べると、最近、私が勉強している Python でアルゴリズムを示しているサイトがあったので、それを Perl に書き換えてみた。

なお、「数え上げ」という言葉を使ったが、数を求めるのと区別するために、組み合わせや順列の「生成」と言ったり「列挙」と言ったりもするようだ。

続きを読む "組み合わせと順列の数え上げのアルゴリズム"

2018-04-11 21:48:01 (JST) in Perl | | コメント (3) | トラックバック (0)

2018年1月 6日 (土)

Tweet Sig: ウェブ上の三文判?

This is a support page of the Tweet Sig (for the Mozilla Firefox or for the Google Chrome) and the Tweet Sig for Android. This page also supports the simple social page poster which is a Facebook web app and is used in the Tweet Sig. You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the Tweet Sig.

ブラウザ拡張 Tweet Sig を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox と Google Chrome でしか動かないようだ。

Tweet Sig の説明は、専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

一応、ここでも軽く説明しておくと、Tweet Sig には、二つのモードがある。一つは、右クリックメニューで選ぶ(for PC)またはボタンを押す(for Android)ことで、セレクションの内容を投稿し、投稿した URL をクリップボードにコピーする。もう一つは、ボタンを押すことで、'#tweet-sig-in' の内容を投稿し、その URL を '#tweet-sig-out'にコピーするというものである。三文判程度の認証に使うことを想定している。

以前から私は、似た用途として、時間記録デバイスを提案している。それは、読み出しと追記のみができる USB メモリのようなデバイスで、契約文書を作ったとき、それをこのデバイスに書き込むと、その文書にデバイスメーカーによる署名が付されて、保存される…といった用途を想定している。

しかし、そのようなデバイスは今にいたるまで使われていない。それに替わるものとして、時間が記録されるもの…というと、Twitter などへの書き込みがあるな…として今回、このようなものを作ってみた。専用ページで書いたように削除ができたり非公開にできたりするのは不便だが、まったく似た用途に使えないわけではないと思う。

なお、このアドオンを作ったときの感想が [cocolog:88703123] に書いてある。

配布物


PC 用のアドオンは、AMO (Mozilla Add-ons) または Google Web Store のページから手に入る。Android 用は AMO for Android から手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

なお、tweet_sig.zip には manifest.json が含まれていない。かわりに manifest_for_firefox.json と manifest_for_chrome.json が含まれている。どちらかを manifest.json にリネーム(またはコピー)して使っていただきたい。
更新: 2018-01-06,2018-01-19
初公開: 2018年01月06日 17:12:04
最新版: 2018年01月19日 17:24:35

2018-01-06 17:12:01 (JST) in Firefox, JavaScript, JRF 作成ソフトウェア | | コメント (7) | トラックバック (0)

2017年12月27日 (水)

PP Interrupter Lite: GET をブロック

This is a support page of the PP Interrupter Lite (for the Mozilla Firefox or for the Google Chrome). You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the PP Interrupter (Original).

ブラウザ拡張 PP Interrupter Lite を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox と Google Chrome でしか動かないようだ。

PP Interrupter Lite の説明は、PP Interrupter (Original) の専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

PP Interrupter Lite は PP Interrupter (Original) の機能制限版で、PP Interrupter (Original) がすべてのメソッドをブロックできるのに対し、PP Interrupter Lite は GET メソッドしかブロックできない。

一応、Original と Lite でサポートページを分けたが、こちらのページではなく、Original のサポートページに要望等を書き込んでもよい。

ここでも軽く説明しておくと、PP Interrupter Lite は特定の URL へのアクセスを一旦ブロックし、アドレスバーに表示されるアイコンのクリックによってそのブロックを解除するという汎用のアドオンである。このアドオンにより、自動的なリダイレクトの前に一旦ストップする習慣を作ることができる。このアドオンは、他のブロッカーと違い、悪意のあるサイトではなく、健全なサイトをブロックすることを目的とする。

PP Interrupter Lite は PP Authorizer の姉妹品で、現在の PP Authorizer が一般に使えない状況で、認証の前でアドレスバーのアイコンをクリックしなければならないという点で、PP Authorizer と似た操作を PP Interrupter Lite は実現する。もし、将来、健全なサイトが自動的なリダイレクトを禁じるようになったときには PP Authorizer の出番が来る。

PP Interrupter Lite は現実への対応だが、PP Authorizer は未来への投資である。しかし、PP Interupter Lite は汎用のため、PP Authorizer がなくても、 PP Interrupter Lite は動く。

Original のサポートページでは、ストップしたときにページが表示されるようにしたかったのだが難しかったと書いたが、メソッドを GET に限定すると難しくない。そうすることで、Original ではできなかった Google Chrome や Firefox for Android への対応ができた。

なお、このアドオンを作ったときの感想が [cocolog:88646381] に書いてある。

配布物


アドオンは、AMO (Mozilla Add-ons) または Google Web Store のページから手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

なお、ZIP には manifest.json が含まれていない。かわりに manifest_for_firefox.json と manifest_for_chrome.json が含まれている。どちらかを manifest.json にリネーム(またはコピー)して使っていただきたい。
更新: 2017-12-27
初公開: 2017年12月27日 20:30:49
最新版: 2017年12月27日 22:20:22

2017-12-27 20:30:50 (JST) in Firefox, JavaScript, JRF 作成ソフトウェア | | コメント (1) | トラックバック (0)

2017年12月 8日 (金)

PP Interrupter: 健全なサイトをブロック!?

This is a support page of the PP Interrupter. You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the PP Interrupter.

ブラウザ拡張 PP Interrupter を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox でしか動かないようだ。

PP Interrupter の説明は、専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

Google Chrome 用または Firefox for Android 用に機能制限版の PP Interrupter Lite がある。そちらについてはそれ専用のサポートページがあるが、こちらに要望・質問を書き込んでもらってかまわない。

一応、ここでも軽く説明しておくと、PP Interrupter は特定の URL へのアクセスを一旦ブロックし、アドレスバーに表示されるアイコンのクリックによってそのブロックを解除するという汎用のアドオンである。このアドオンにより、自動的なリダイレクトの前に一旦ストップする習慣を作ることができる。このアドオンは、他のブロッカーと違い、悪意のあるサイトではなく、健全なサイトをブロックすることを目的とする。

PP Interrupter は PP Authorizer の姉妹品で、現在の PP Authorizer が一般に使えない状況で、認証の前でアドレスバーのアイコンをクリックしなければならないという点で、PP Authorizer と似た操作を PP Interrupter は実現する。もし、将来、健全なサイトが自動的なリダイレクトを禁じるようになったときには PP Authorizer の出番が来る。

PP Interrupter は現実への対応だが、PP Authorizer は未来への投資である。しかし、PP Interupter は汎用のため、PP Authorizer がなくても、PP Interrupter は動く。

このアドオンを作るキッカケとなったアイデアは [cocolog:88492515] に書いてある。そこでは、webRequest に関する拡張を調べていて難しそうだ…と書いていたが、よく読んでいるうちにどうもできそうなので作ってみた。当初は、ストップしたときにページが表示されるようにしたかったのだが難しく、 notifications の表示に留めた。

なお、このアドオンを作ったときの感想が [cocolog:88550595] に書いてある。

配布物


アドオンは、AMO (Mozilla Add-ons)の PP Interrupter のページから手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

更新: 2017-12-08,2017-12-27
初公開: 2017年12月08日 16:17:00
最新版: 2017年12月27日 20:52:04

2017-12-08 16:17:00 (JST) in Firefox, JavaScript, JRF 作成ソフトウェア | | コメント (6) | トラックバック (0)

2017年11月27日 (月)

PP Authorizer: 匿名的ログイン・匿名的支払いをサポートするアドオン

This is a support page of the PP Authorizer (for the Mozilla Firefox or for the Google Chrome). You can write comments on this page, even if you can't understand Japanese blow. If you need explanation of the extension in English, show the English main page of the PP Authorizer.

ブラウザ拡張 PP Authorizer を作った。Web Extension 規格に順って作ったので今後、様々なブラウザで利用できるようになるかもしれないが、今のところ Mozilla Firefox と Google Chrome でしか動かないようだ。

PP Authorizer の説明は、専用ページで行った。まずそちらを読んで欲しい。このページは「サポート」を行うのがメインである。

一応、ここでも軽く説明しておくと、PP Authorizer は、「Privacy-Protected なログインまたは支払いを実現するための構成要素の一つ」ということになっている。

「PPログイン(pplogin, Privacy-Protected login)」や「PP支払い(pppayment, Privacy-Protected payment)」という概念自体はずっと以前に私は《保証付き匿名ログインと即時銀行振込を可能にして! - プライバシープロバイダ API(仮称)》という記事で紹介し、また、《Statuses_Editor_Proxy.CGI - XMLRPC と OAuth を組み合わせた「ひとことサイト」ソリューション》で、その概念を使うためのブックマークレットを作ったりしていた。

なお、このアドオンを作ったときの感想が [cocolog:88492515] に書いてある。

配布物


アドオンは、AMO (Mozilla Add-ons) または Google Web Store のページから手に入る。このページでは、一応、提出した際のソースのアーカイブを公開しておく。次のリンクが最新のもののはずだが、より以前のものはコメント欄をご参照いただきたい。

なお、ZIP には manifest.json が含まれていない。かわりに manifest_for_firefox.json と manifest_for_chrome.json が含まれている。どちらかを manifest.json にリネーム(またはコピー)して使っていただきたい。
更新: 2017-11-27,2017-12-27
初公開: 2017年11月27日 11:54:57
最新版: 2017年12月27日 20:42:35

2017-11-27 11:55:00 (JST) in Firefox, JavaScript, JRF 作成ソフトウェア | | コメント (11) | トラックバック (0)

2017年4月20日 (木)

過剰診断論に関するシミュレーション 中間報告

「過剰診断論」にいくつか疑問を持ち、シミュレーションを書いてその疑問を明らかにしたいと考えた。その過程で、がん患者には、基礎寿命とがん寿命があって、どちらかが尽きたとき死ぬというモデルを考えることになった。

まだシミュレーション開発の途中だが、「基礎寿命論」についてある程度開発したところで、行き詰まりを感じたため、とりあえず現在の進捗を報告することにした。

続きを読む "過剰診断論に関するシミュレーション 中間報告"

2017-04-20 16:22:40 (JST) in Perl, シミュレーション | | コメント (2) | トラックバック (0)

2017年2月11日 (土)

眠り姫問題のプログラム

「眠り姫問題」は意志決定問題と人間原理という二つの分野で共通のテーマセッターとなっている有名な難問なのだそうだ。三浦俊彦『多宇宙と輪廻転生』によると、次のような問題である。

>
日曜日に、ある実験が始められる。まず、あなたは眠らされる。そのあとフェアなコインが投げられ、表か裏かによって、次の二つの措置が選ばれる。

場合A■表が出た場合 - あなたは月曜日に一度起こされ、インタビューされ、また眠らされ、ずっと眠り続ける。

場合B■裏が出た場合 - あなたは月曜日に一度起こされ、インタビューされ、また眠らされ、火曜日に一度起こされ、インタビューされ、また眠らされ、ずっと眠り続ける。眠りは記憶を消すほど深いので、目覚めたとき月曜か火曜かはわからない。

いずれの場合もあなたは、実験の手続きについてはすべてわかっているものとする。目覚めたときに自分が月曜にいるか火曜にいるか、そしてコインは表だったのか裏だったのかがわからないだけである。

ちなみにコイン投げがなされるタイミングについては融通が利く。コイン投げは、あなたが最初に起こされる前でも、月曜にあなたが目覚めた後でも、問題の論理構造は変化しない。

さて、あなたへのインタビューは次のようなものである。

問1■「いまは日曜日、実験開始直前である。場合 A である確率は?」

問2■「さあ、あなたは目覚めた。場合 A である確率は?」

問3■「さあ、あなたは目覚めた。今は月曜日である。場合 A である確率は?」

(p.235-236)


このうち問2と問3が「眠り姫問題」であるという。この答えには、二つの流派がある。問2 の答えに 1/2 と答える派と、1/3 と答える派である。

問2に 1/2 と答える派はたいてい、問3に 2/3 と答える。問2 に 1/3 と答える派はたいてい、問3 に 1/2 と答える。

それぞれの派について、その考えに基づくシミュレーションをして数え上げるプログラムを Perl で記述してみよう……というのが本稿である。

続きを読む "眠り姫問題のプログラム"

2017-02-11 19:24:07 (JST) in Perl, シミュレーション | | コメント (1) | トラックバック (0)

2017年2月 5日 (日)

コーシー分布でブラック・ショールズ・モデル?

最初に断わるが、これは失敗した実験の記録である。

実験のアイデアは単純なもの。株価等のコール・オプションを求める 2項モデルの近似式としてブラック=ショールズ式が使えるが、2項モデルの話は当然、モンテカルロ法でやってもよいはず。そのとき、2項モデルでは、上か下かのランダム二択を使うが、その替わりに正規分布の乱数を使ったり、コーシー分布 (Cauchy distribution)の乱数を使ってみたら、どうなるかやってみよう……というのが今回のアイデアである。

ブラック=ショールズ式が正規分布のブラウン運動なのだから、正規分布の乱数を使ってみるのは、元の2項モデルと同じ値になりそうだ……とまず考えた。次に、それができるなら、株価の変動は、べき分布(冪分布)だとよく言われるが、べき分布の一つであるコーシー分布の乱数を使ってみたら、ブラック=ショールズ・モデルにコーシー分布を適用したものになるのではないか……と考えた。

結論を述べれば、正規分布の乱数を使うのは確かに2項モデルと変わらないように見える。モンテカルロ法はかなり粗い結果しか出ないので、そう見えるだけかもしれないが、そう言えそうに見える。一方、コーシー分布を使うのは、分割したときの「ボラティリティ」にあたる値をどうすれば良いかがわからず、うまく適用できなかった。その点から、この実験は失敗だと言える。ただ、コーシー分布を使うと、外れ値が多くなるため、元のブラック=ショールズ式で求めるオプション価格よりかなり高い価格が必要になることは、なんとなくわかった。

続きを読む "コーシー分布でブラック・ショールズ・モデル?"

2017-02-05 23:27:08 (JST) in Perl, シミュレーション | | コメント (1) | トラックバック (0)

2016年8月27日 (土)

モンティ・ホール問題または三囚人問題の拡張とその確率操作シミュレーション

はじめに


近年、J. ローゼンハウスの『モンティ・ホール問題テレビ番組から生まれた史上最も議論を呼んだ確率問題の紹介と解説』という本が出た。この本は、モンティ・ホール問題について詳しく、この本が出る前に私が考えていた問題の拡張についても書かれてしまっていた。この本を読んで、一旦は、私がこれ以上、この問題について何か書く必要はないかと思った。が、それからしばらくして、私がやったことも少しは意味があるかと思い直し、私の思考の跡を備忘的に記録するため、ちょっとした確率モデルのシミュレーションに関する論考を足して、レポートにしておくことにした。

続きを読む "モンティ・ホール問題または三囚人問題の拡張とその確率操作シミュレーション"

2016-08-27 21:17:40 (JST) in Perl, シミュレーション | | コメント (2) | トラックバック (1)