yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2017/11 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
人をガク然とさせる力
2006/05/29(Mon)20:51:23
 学力論争がなされて久しいですが、今度は読売が「親の所得が学力に影響するか」という世論調査を行い、75%がYESと答えたそうです。予想範囲内ではありますが。
 しかし、さすがに今回は(集団的自衛権の時と違って)特段作為はないのでしょうが、これは聞き方が不十分です。私がもし調査問題を決める人間なら、続いての質問に次のようなものを設けたでしょう。「先の質問に出た”学力”という言葉の定義は、”頭の良さ”と同じものであるか」。
 要するに、もう「親の所得と学力(あるいは学校ランク)の因果関係」は様々な調査結果から証明されていますが、ではそうした子どもは頭が良いのかと聞いているわけです。テストで良い点が取れれば学力が高いということになりますが、テストの点を取れる人間は頭が良いかといえば、必ずしもそうではありません。
 つまり、この調査結果は「学力格差」という一元的な面では正当なものなのですが、「知能格差」を証明するには至っていません。ここまで証明できればかなり意味の大きいデータになるのですが、読売が行った今回の調査だけでは、単なる「格差追認」に過ぎません。
 例えば、日本には四則演算すらままならない人間も少なからず存在します(健常者です。念のため)。こうした人の多くはやればできるのですが、教育機会を失ってそれっきり、という場合が多いそうです。これと格差が関係あるということが立証されれば、政府は誰しもに教育機会を保証する義務を破っていることになり、これは憂うべき大問題です。
 私は幸運にも四則演算程度は可能ですが、四則演算や日本語の読み書きなどが非常に基本的な学力、いわば学力の根本であることを否定する人はいないでしょう。ただ、これができない(日本の教育制度がこれらを習得していない子を排出している)というのは明らかに問題ですが、それ以降は「学力」なる言葉が示す領域はあいまいです。
 この「学力」というのが「テストの点」だとすれば、覚えても何の役にも立たないような細かい年号やら、長々とした系譜やら、おそらく死ぬまで使わないであろう意味不明な数式やら、全く実用できない日本語英語やら、こういうのを丸暗記できれば学力が高いことになります。見ての通りではありますが、言うまでもなく「学力」と「知能」は全く別のものです。
 残念ながら、専門家と呼ばれる連中も、文部科学省も、マスコミも、全員まとめて「学力低下だ」とあおるばかり。(学力ではなく)「頭の良さ」への調査や取り組みが行われることはほとんどないのです。資料がないのでは論じるのも不可能です。

 で、今度はまた乳児のパチンコ置き去り死。つくづく言っていますが、乳幼児を置いて車から離れることは絶対にいけません。体が弱く、しかも自分では動けない乳児は熱中症の恐れが高く、幼児は時に車の装置を動かすなどして危険です。誘拐の恐れもあります。
 普通、子どもを車に置いてパチンコにかまければどうなるか、少し考えれば分かるはずなのですが。実際、こうした事件は毎年何件か目にします。だから学力ではなく頭の良さが大切だと申し上げているのです。無論「ちょっとだけ」でもいけません。ちょっとのつもりが長時間になる恐れがあるばかりか、(こちらは親御さんに過失は全くありませんが)秋田の事件などは周囲の目が届かなくなった1分程度の間に連れ去られています。
 周囲の人も、置き去りの赤ん坊に気づかなかったのでしょうか。おそらく「気づいたが素通り」という人も少なからずいたでしょう。米国でこのような現場が見つかれば、周囲の人は車を破壊して子どもを保護し、親は逮捕されます。過激も何も、これが普通です。これなら、罪のない赤ん坊が猛暑の車中に取り残されたり、下手すると命を落としたりすることもありません。
 ところが、日本で同じようなことをすれば、その結果赤ん坊が助かっても「車を破壊するとは何たること」「余計なお世話だ」と加害者扱いされた挙句、器物損壊容疑をかけられたり修理費を弁償させられるのがオチです。これでは助けようにも助けられません。こうした事件は夏になるたび相次いでいるのに、「車を破壊して救出しても一切無罪」といった法制化がなされる気配すらありません。恐るべき「かけ組」社会、日本
 繰り返しますが、乳幼児の車中置き去りは虐待です。「ちょっと」でも虐待です。こうしたことを理解する能力を「頭の良さ」といいます。

 書き直しのPHPSerialize。以前に参照が実装できずに終わったため、今度は参照も実装できるよう、DOMとJDBCをヒントにひたすら打ったところ、キモだけなのに20KBにもなってしまいました。これではブログに転載などできません。困りました。
 それにしても、PHPの直列化、とにかく意味不明です。参照の含まれたものを直列化する場合、全く無関係の参照はUndefとして扱われます(直列化後に参照を復元できないため)。これは分かりますが、同時にシリアル化する変数の参照を含むものに関しては、なぜかシリアル化することができます。
 この場合、リファレンスとして保存せずに値を展開してくれればよっぽど楽なのですが、なぜかリファレンスとして保存してしまいます。その際、参照先の変数を表す手段として、番号(先頭を1として頭から数え、実体が現れる位置)が用いられるのですが、何とUndef値も含めてほぼすべての変数はカウントされるのですが、リファレンス型は飛ばしてカウントされるのです。ですから、「オブジェクト{参照,整数,参照,文字列,参照,参照,X}」だとXは4番目になります。
 ということは、当然のごとくリファレンスの実体を探す際には、配列やオブジェクトも含めて(多次元配列、オブジェクトの中にオブジェクトなども検索)全部洗い出して探し、採番しなければなりません。これに非常な手間がかかるのはご想像の通りです。配列やオブジェクトなど何次元あるのか分かりませんし、仮に10次元でも探せるようにしておく必要があります。
 で、さらに厄介なことに、先に出てきた参照が後に出てくる実体を参照している場合、どういうわけか参照が実体に入れ替わり、後で出てくる実体がそれへの参照とみなされます。つまり、「?,?,Xへの参照,?,X」のような配列またはオブジェクトがあったら、これは「?,?,X,?,Xへの参照」のように置き換えられなければなりません。
 しかも、例えば $a = array(1 , 2 , &$a); のようにした場合、格納されるのは本来「配列X{1,2,Xへの参照}」のようになるはずですが、実際は「X{1,2,Y{1,2,Yへの参照}}」という全く意味不明の置き換えがなされます。CやJavaを使う身としては、明らかに矛盾しているようにしか見えませんので、実装が困難なのもあってこれの実装は差し控えました。
 後はだいぶ仕様が変わっていますが、シリアル化できるのは同じです。しかし、参照のせいでとにかくややこしくなっています。これでも前回よりオブジェクト指向の特性を用い、記述はまずまず効率的にしたはずなのですが、ひどいものです。PHPなる言語は困ったもので。
 ソースはもう少し検証してから出したいところですが、とりあえず使い方の部分だけ。
PHPObject po = new PHPObject("Harden");
PHPData pds = new PHPGeneralData("Sara");

PHPReference pr = new PHPReference(pds);
PHPData pda[] = {
	new PHPGeneralData(3.14159) , 
	pr , 
	new PHPReference(po)
};
PHPArray pa = new PHPArray(pda);
po.setValue(new PHPVariable("shelley") , pa);

po.setValue(new PHPVariable("ref") , pds);
po.setValue(new PHPVariable("nodef") , new PHPUndef());
po.setValue(new PHPVariable("var") , new PHPGeneralData(10));

PHPSerialize ps = new PHPSerialize("Shift_JIS");
out.println(new String(ps.serialize(po) , "Shift_JIS"));

// Result(PHP unserialize で復元できます)
O:6:"Harden":4:{s:7:"shelley";a:3:
{i:0;d:3.14159;i:1;s:4:"Sara";i:2;r:1;}
s:3:"ref";R:4;s:5:"nodef";N;s:3:"var";i:10;}
 今回、PHPArray、PHPObject、PHPReference(参照)、PHPGeneralData(整数や文字など普通型)、PHPVariable(変数)、PHPUndef(未定義値)のように型によってクラスが変わるのですが、これらはすべてPHPDataというインタフェースを実装しており、そのためあらゆるクラスがPHPDataレベルでの互換性を持っています。
 実際にはPHPDataインタフェースがserialize変換メソッドを持っており、PHPUnserializeクラスではそれを呼び出しているに過ぎないため、早い話が大本のPHPArrayあるいはPHPObjectからシリアライズメソッドを呼び出しても同じです。ただしその場合、参照の変換がなされないため、参照を含んでいると変換に失敗します。
 参照に関しては、まず参照したいオブジェクトをPHPReference型にセットします。で、それをPHPSerializeにかければ、後は勝手に変換を行ってくれます。ただし、メモリ(メモリアドレス)レベルで実体を探しますので、たとえ同じ内容のデータであっても同じとはみなされず、必ず実体となるオブジェクトをPHPReferenceにもセットしなければなりません。
 そして相変わらず、実装で体力を使い果たすのでありました。

 SQL.48。しばしばネタが出ません。

魔道士イリアス「シェリー、サーラに何か贈り物をと考えてるんだけど、いいものないかしら」
イリスのシェリー「サーラさんに?・・・サーラさんが欲しいものなど、この世に存在するのでしょうか」
魔道士イリアス「それはそうなんだけど・・・」
イリスのシェリー「イリスのものでよければ、見に行ってみますか?試作品などはお譲りできますよ」
魔道士イリアス「そうねぇ・・・」

 そうしてストリームウィンドで出かけましたはイリス製薬。出かける際には、アドバイザーとして師団の数名もかっさらってきたようです。

イリスのシェリー「こちらのブースには剣などの武具が・・・あれ?イリアスさん、どこ見ているのですか?」
魔道士イリアス「これは綺麗ね。いや、こっちがいいかしら」
イリスのシェリー「宝石・・・。サーラさんに渡しても、喜ばないのではありませんか?」
魔道士イリアス「気にしない、気にしない」

 どういうわけか宝石コーナーを物色し始めた魔道士イリアス。言うまでもなく、騎士サーラは装飾品などを身に着けることはありません。しかし、何を言っても無駄だと分かっているシェリーさん、仕方なく応じることにしました。ところで、何でまたイリスに宝石など置いてあるのでしょうか。実はこの宝石に見えるもの、イリスの技術の結晶なのです。

イリスのシェリー「イリアスさん、こちらのブースからは2コまで持ち帰って結構です。どれでもお好きなものをどうぞ」
魔道士イリアス「2コ?迷うわね・・・。目移りするわよ」
イリスのシェリー「・・・試作段階では、そうですね・・・。確か、このうち4つの宝石が高い完成度を誇っていたはずです」
魔道士イリアス「じゃあ、そのうち2コをもらうのが良さそうね。どれか分かる?」
イリスのシェリー「はい、分かるには分かるのですが・・・。実はその後、実験により2つに不具合が発生し、役に立たなくなってしまったそうです」
魔道士イリアス「ええっ!?じゃあ、良いのは2つしかないの?」
イリスのシェリー「はい、そういうことです」
魔道士イリアス「とりあえず、その4つを出してもらえる?」
イリスのシェリー「こちらになります」
宝石	概要
イリアスの瞳	深みのある緑色が美しい宝石
赤色RED	ダイオートのような淡い光を出す赤い宝石
ブルートゥース	通信機構内蔵の宝石
ヨンストーン	太陽の光のような黄色い宝石
イリスのシェリー「でも、どれが正解かお分かりになりますか?これ・・・」
魔道士イリアス「だから今回は目利きを5人も連れてきたのよ」

 そう言って魔道士イリアスが呼び出しましたは、どう考えても目利きとは見えない師団のマリー、師団のルーシー、師団のリンダ、師団のカレン、師団のサラの5人です。なお、中には本当に正しいものを当てることができる人もいますが、実際には当てることができない人も混ざっているらしく、そうした人は不本意ながら「嘘つき」ということになります。

魔道士イリアス「どう?分かった?」
師団のマリー「私の見立てじゃ、ブルートゥースが完成品かな」
師団のルーシー「待って、マリーは嘘つきよ!私はヨンストーンをおすすめするわ」
師団のリンダ「ルーシーこそ嘘つきよ!イリアスの瞳と赤色REDの中に、少なくとも1つは完成品があると見たわ」
師団のカレン「リンダこそ、いい加減なことを言っています。正しくは、ヨンストーンか赤色REDに少なくとも1つは正解があります」
師団のサラ「こんなに言い分が食い違って、イリアスさんも大変ですね。私たち5人のうち、嘘を言っているのは3人以下です。あと、私はブルートゥースが本物とみました」

魔道士イリアス「どうしてこう見事にバラけるのよ!」
イリスのシェリー「困りましたね・・・。悪気はなくても、嘘が混ざっているのですから・・・」
魔道士イリアス「もうシークェルで何とでもやるわよ!」

 こういう具合にシークェルを使うことになったイリアスさん。見事に正解の宝石を持ち帰ることができるでしょうか。なお、今回の嘘つきは完全なる嘘つきであり、発言はすべて正しくありません。また、サラが口にしている人数条項も、仮にサラが嘘つきであれば正反対ということになります。それでは、スマートに答えを求めてみてください。

模範解答
 嘘つきとは別の概念まで入ってきた今回の問題。言うまでもなく、宝石まで加味しなければ問題は解けない仕組みになっています。別に宝石はどのように処理しても構いませんが、今回は本物か偽物かの違いですから、人間同様TRUEとFALSEで区別するとします。
CREATE TABLE lie(l BOOLEAN);
INSERT INTO lie VALUES(TRUE) , (FALSE);
 それでは、SQLクエリに入りましょう。まず、宝石は4つのうち2つだけが正解であることが分かっています。それを加味すれば、パターン数は
SELECT COUNT(*) FROM lie mary , lie lucy , lie linda , lie kalen , lie sarah , 
lie green , lie red , lie blue , lie yellow 
WHERE green.l + red.l + blue.l + yellow.l = 2;

// Result
192
 192であることが分かります。まだ手動で何とかなるレベルではありますが、192パターンも洗うのは非常に大変です。やはりSQLでなければ。それでは、最初に人間だけで「不正者当て」を行ってみます。
SELECT mary.l AS 'mary' , lucy.l AS 'lucy' , linda.l AS 'linda' , 
kalen.l AS 'kalen' , sarah.l AS 'sarah' 
FROM lie mary , lie lucy , lie linda , lie kalen , lie sarah 
WHERE lucy.l != mary.l AND linda.l != lucy.l AND kalen.l != linda.l AND 
(!mary.l + !lucy.l + !linda.l + !kalen.l + !sarah.l <= 3) = sarah.l;

// Result
mary	lucy	linda	kalen	sarah
0	1	0	1	1
1	0	1	0	1
 このような具合に、正反対のパターンが出てしまいます。では宝石の概念を入れてみましょう。
SELECT mary.l AS 'mary' , lucy.l AS 'lucy' , linda.l AS 'linda' , 
kalen.l AS 'kalen' , sarah.l AS 'sarah' 
FROM lie mary , lie lucy , lie linda , lie kalen , lie sarah , 
lie green , lie red , lie blue , lie yellow 
WHERE mary.l = blue.l AND 
lucy.l != mary.l AND lucy.l = yellow.l AND 
linda.l != lucy.l AND linda.l = (green.l OR red.l) AND 
kalen.l != linda.l AND kalen.l = (yellow.l OR red.l) AND 
(!mary.l + !lucy.l + !linda.l + !kalen.l + !sarah.l <= 3) = sarah.l AND 
sarah.l = blue.l AND green.l + red.l + blue.l + yellow.l = 2;

// Result
mary	lucy	linda	kalen	sarah
1	0	1	0	1
 あっという間に答えが出てしまいました。とはいえ、今回は嘘つきを当てるのが目的ではありません。嘘はどうでも良いですから、宝石2つを選ばなければならないのです。しかし、ここまで来れば簡単でしょう。
SELECT CONCAT_WS(',' , IF(green.l , 'イリアスの瞳' , NULL) , 
IF(red.l , '赤色RED' , NULL) , IF(blue.l , 'ブルートゥース' , NULL) , 
IF(yellow.l , 'ヨンストーン' , NULL)) AS 'Answer' 
FROM lie mary , lie lucy , lie linda , lie kalen , lie sarah , 
lie green , lie red , lie blue , lie yellow 
WHERE mary.l = blue.l AND 
lucy.l != mary.l AND lucy.l = yellow.l AND 
linda.l != lucy.l AND linda.l = (green.l OR red.l) AND 
kalen.l != linda.l AND kalen.l = (yellow.l OR red.l) AND 
(!mary.l + !lucy.l + !linda.l + !kalen.l + !sarah.l <= 3) = sarah.l AND 
sarah.l = blue.l AND green.l + red.l + blue.l + yellow.l = 2;

// Result
Answer
イリアスの瞳,ブルートゥース
 すなわち、イリアスの瞳とブルートゥースが正解であることが分かります。

魔道士イリアス「あとはこれをサーラに渡すだけね」
イリスのシェリー「サーラさん、今おられるのですか?」
魔道士イリアス「修行でもしてるんじゃない?ほら、そこの部屋から声が聞こえるわ」
騎士サーラ「3446、3447、3448・・・」
魔道士イリアス「サーラ、入っていいかしら?」
騎士サーラ「はい、どうぞ。・・・素振りの練習中でしたので、少し散らかっていますが、構いませんか?」
魔道士イリアス「構わないわよ。・・・で、サーラ、これをあなたにあげたいんだけど」
騎士サーラ「このような美しい宝石を私などのために・・・。しかし、申し訳ございませんが、私は装飾品はつけませんので・・・」
魔道士イリアス「サーラが飾りっけないのは知ってるわよ。それでサーラ、あなたは闘気を飛ばしたり、剣圧を使ったりして攻撃する技を持ってるわよね」
騎士サーラ「はい。衝撃拳や波動諷詠剣などはそうですが・・・」
魔道士イリアス「でも、そういう技は生身の人間に使えるものじゃないから、MRこそ消費しないけど、基本的には魔法原理によって成り立ってるのは知ってるわね?」
騎士サーラ「はい。最近の剣は大体、そういう機能を備えています」
イリスのシェリー「サーラさん、実はこの宝石、イリスで開発した高性能小型魔法媒体のプロトタイプなのです。ぜひとも使っていただけませんか?」
騎士サーラ「良いのですか?こんなに良さそうなものを・・・」
イリスのシェリー「これらの媒体は、十分なテストを行った、ほぼ完成品と呼べるものではありますが、サーラさんほどの人にもご満足いただけるほどのものかは、まだ確認できていません。使っていただけるとありがたいのですが」
騎士サーラ「そうですか・・・。それでは早速、使わ・・・」
剣聖ハードゥン「イリアス君、サーラ君、大変だ。今から出撃が必要だ」
魔道士イリアス「ええっ!?行くわよ、サーラ」
騎士サーラ「はっ。・・・シェリーさん、申し訳ございません。これより出撃しなければなりません」
イリスのシェリー「お気をつけて」

魔道士イリアス「で、サーラ。戦闘直前にわざわざ指摘することもないとは考えたけど、どうしても気になるから・・・いいかしら」
騎士サーラ「はっ、何か」
魔道士イリアス「ブルートゥース、鎖がついてて首飾りになってるはずなのに、どうして手首なんかにかけてるのよ!」
騎士サーラ「鎖が短すぎて、首にかけられませんでしたので・・・」
魔道士イリアス「修行すると首まで太くなるわけ・・・?まあいいわ。ところで、”イリアスの瞳”って指輪になってたはずだけど・・・剣にひも付きでぶら下げてるのってどういうわけよ!」
騎士サーラ「この指輪、小指にも入らなかったのです・・・」
魔道士イリアス「どういう指してるのよ!・・・ああ、もう。どうして戦場でまでこうなるのよ・・・」

 このように、SQLで適切な贈り物を選べても、それが本当に適切かは分からないのです。
カテゴリ [開発魔法][社会問題] [トラックバック 1][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

Trackback(1)
どっち?バトン。(from ブログ@うにうに画像倉庫) - 2006/05/29(Mon)22:36:35
ゼネピックの固定PTメンバー、エク♪さんのハンゲブログから貰って来たWEBバトンです。タイトルがなかったので、勝手に名付けました。転職式以来、なかなかINしていないのですが・・・やろう!と思い立つと1時過ぎです(;;決してPTメンバーの事が嫌いになった訳では..


- Blog by yamicha.com -