戸籍を本当に個籍にしてしまうのも悪くない?

ところで、酒山伸子(本籍地:姫路市本町68番地 筆頭人:酒山伸男)と水野伸郎(本籍地:大阪市中央区大阪城1番 筆頭人:水野啓子)が親子であると言うのは結構めんどくさい。
あ、ランダムに作成した名前に見栄えする町名地番or住居表示の街区符号を貼り付けただけだよ。
まず、本籍地:大阪市中央区大阪城1番 筆頭人:水野啓子の戸籍謄本or戸籍全部事項証明書を取ってくる。
それで、伸郎の欄を見ると、母に酒山伸子と書いてあった。
多分これでOKだと思うけど、同姓同名の可能性もある。
今回は違うけどなんか理由があって、氏が変わったかも知れない。悪い例だと名が変わったかも知れない。
ところで、日本人の母から日本人が生まれたとき、母の戸籍に入ることになっている。
日本人が生まれたという書き方はおかしい気がするけど、他の国籍があるときは放置すると日本国籍は消えるらしいから。
その他の根拠で日本人になる人がどこの戸籍に入るかは知らない。
帰化はともかく、外国人の母から生まれた父が日本人の日本人の子はどうするんだろうね?
とりあえず生まれたときの戸籍謄本or戸籍全部事項証明書に、母と子が一緒に載ってればOK。


しかしやたらめんどくさい。
日本人を特定できるためには、氏・名・本籍・筆頭人がわかれば多分OK。
けど本籍・筆頭人は簡単に変わってしまうし、氏もなんか変わることが多い。
だから信用できるのは名ぐらい(これも変わることあるけど)で、わかりにくい。
まぁ氏が変わるのは仕方ないとしても、本籍と筆頭人が簡単に変わるのは何かと不便だな。
なんで本籍・筆頭人が変わるかというと、1つは本籍地以外で戸籍の証明を受けるのがかったるいから。
しかし住民基本台帳ネットワークで、制限付きだけど、住民票の広域交付ができるようになった。
そこからもわかるけど、その気になればネットワーク経由で戸籍の証明ができそう。
そうなると本籍地はどこでもいい気がしてくる。
2つ目は、結婚や養子縁組で戸籍を移動する必要があるから。
水野啓子と酒山伸郎が、結婚するとき、継承する方の氏の方が筆頭人でなければ、全く新しく2人を含む戸籍を作る必要がある。
筆頭人ならもう片方その戸籍に移動するらしい。
2人は同じ戸籍にいないのは当然だから、少なくとも1人は本籍・筆頭人が変わる。
養子縁組は、養親の戸籍に移動する。だから本籍・筆頭人が変わる。
しかし、これは氏(?)単位で編成されるから、どうしようもないことだ。


ということは…解決するためには個人単位で編成すればいいわけだな。
本籍地の場所が別にどうでもいいとすれば、番号でもかまわない気がする。
グローバルな戸籍制度には土地の所在に振り回されないと。それでいいと思うよ。
人と人の関係を戸籍番号でリンクさせると。
それで、たとえば出生したという事実を書くとき、まず子の戸籍を作って、母の氏と新しい名前を書く。
母、ついでに父の戸籍にxx年xx月xx日に太郎(戸籍番号xxxxxxxxxxx)が出生とでも書く。
逆に、子の戸籍の母の欄、父の欄に、母の氏名と戸籍番号を書く。それでxx年xx月xx日に○○市で出生などと書く。
こうすれば、子の戸籍の母の欄の戸籍番号と、母の戸籍番号が一致すればすぐに親子とわかるな。
結婚だって、配偶者になる人の氏名と戸籍番号を書いて、さらに氏を変更すると書けばいいと。
ところで、現行の制度には入籍届というものがあるらしい。
使い道はいろいろあるけど、家庭裁判所の審判が必要なことが多い。けどいらない例もあるよ。
母と父が結婚してないとき生まれた子は母の戸籍に入る。母は戸籍の筆頭人だな。
その後母と父が結婚して、母の氏を継承するときは、父が母と子のいる戸籍に入るからいいのだけど、
逆に父の氏を継承するとき、母だけが父を筆頭人とする戸籍に入ってしまう。
子が同じ戸籍にいないし、母の旧の氏のままだ。なのでこの子たちを父と母のいる戸籍に入れたい。
そういうときに出す届出らしい。まぁ確かにあまり知られないわけだな。
しかし、もともと個人単位なら戸籍を統一する必要がない。
けど氏は変更する必要はあるか。ならそんな場合は簡単に氏の変更ができるようにすればいいだろう。
分籍という概念も不要だし、このあたりはシンプルになりますね。
ただ、罠だと思ったのが特別養子縁組だな。これまたマイナーな制度だけど…
母・父の欄が書き換えられる養子縁組。ということで、実の母・父の情報は一見隠匿されるということ。
ただ、一見隠匿されるといっても、母・父の欄が実の母・父になっていた除籍がどこかには存在するようになってるらしい。
だからさかのぼれば発見できるんだけど、個人単位で作成して、その戸籍を一生使い続けるならば、実の母・父の情報が消える。
こんなケースは特殊だけど、この場合は戸籍を改めて作成することにするのかね?
あと、たとえば養子縁組があって、その後離縁したとき、現行では養親の戸籍には離縁した事実と、除籍になった養子がいるはず。
それで元養子は新しい戸籍を作成することになるだろうけど、離縁したから作成されたと書かれるかも。
それでもその後、どっかに転籍でもする。すると今有効じゃない養子縁組の情報は転送されない。
その戸籍は一見養子縁組などなかったように見えるが、2つ前の戸籍に戻ればよくわかりますね。
どこかには記録が残ってるというのは大切な事です。
しかし、一生同じ戸籍を使い続けるなら、その戸籍に養子縁組がありました、離縁がありましたと書かれることになる。
だから戸籍の内容を全部コピーすると、えらくひどいことになるかもしれん。
こんなもんをことあるごとに提出とか、人権侵害じゃと言われても仕方ない。
現実には今有効なこと以外は省略した証明書を使うことになるでしょうかね。


ところで、個人単位で編成するというのは、外国人登録台帳に似てるな。
その気になれば日本に90日以上滞在するつもりの外国人は入国のとき戸籍番号が与えられて、
それで住民票を作成してということができるかもしれん。統一的に取り扱えるのは何かといいことです。
日本人と外国人が同居してる世帯の住民票は意味不明らしいからな。
とまぁ、個人単位で編成するのもありだなと思ってみたり。
最近では韓国が個人単位の編成にしたらしい。家族関係登録簿制度というらしい。
アイデアとしては結構似てる。けど証明書は5種類あって、必要に応じて選べるらしい。
結構細かく分かれてるので、いくつもの証明書を取る必要があるかもしれない。
たとえば基本証明書には父・母については書かれていない。だから家族関係証明書を取らないとだめ。
そこのとこどうなんだろうね。今までは戸籍1つで事が済んだはずだけにね。
ところで、個人で編成するのに籍ってネーミングはないわな。

磁界は電流の流れた導体の周りにあるよ

物理で磁界の問題をやってたのだが、磁束密度と磁界を逆にしてしまってた。
よく考えればわかることだが、磁束の単位はWb。面密度だからWb/m2、と書いてもいいしT(テスラ)と書いてもいい。
文字はB。ただ磁束密度はあんまり言うことはないと思う。
それに対して磁界はA/m、文字はH。電流 割る 距離っていうのはなかなか実感がわきにくいな。
磁界での電流は、電界での電圧に相当するらしい。
確かに、n回巻きのコイルに電流Iを流すと、nI[AT]の起磁力を生じるとか出てきたな。
ATはアンペアターンだけど、結局アンペアだ。
この辺は電圧も一緒だな。けど電界は導体から垂直に出る。だから電圧を導体間の距離で割り算すればよさそうだった。
けど、磁界は導体の周りにぐるぐるできる。電流をこのぐるぐるの距離で割り算すればよさそう。
実際そんな式になってるよね。


ということは電流を知ってるときはまず磁界を求めればいいわけだな。
その上で、B=μHの式に入れれば磁束密度が出てくると。まぁ実際はなんかいろいろあるらしいが。
真空中の透磁率、μ0は4π×10-7[H/m]と覚えやすい気がする。
真空中の誘電率、ε0は8.85×10-12[F/m]と一見覚えにくい。
でも実は1/(4πε0)=9×109だから、電卓さえあればここから簡単に出せる。
あんまりε0に値を代入したりはしないけど、1/(4πε0)を作れば代入も簡単だろう。
こうやってBを出すことができれば、他の電流の流れた導線に働く力も簡単に出せる。
F=BIL(B:磁束密度,I:電流,L:導線の長さ)と。だからBを出したわけ。
ちなみに1000[m]の導線を0.1[m]離して、100[A]づつ逆方向に流したとき、2つの導線がそれぞれ引き合う力は
B=μ0H=μ0×100/(2π×0.1)=2000×10-7=2×10-4[T]
F=BIL=2×10-4×100×1×103=20[N]
100[A]・1[km]ともなると迫力ありますね。
けど1[km]も100[A]電流流すと電圧降下が恐ろしい事になりそう。100[A]って…


と、考えれば磁界の話もよくわかるものです。
確かに電磁気の授業でよく電界の話を聞いていればわかる分はあるでしょう。
けどわからないこともあるでしょう。
この辺しっかり勉強することになるだろうね、電磁気で。
というわけで、急に磁界が出てきた物理の授業の話でした。
まぁこれが普通だよね。物理で出てきて、それを詳しく専門の電磁気でやるというのが。
しかし逆が普通と思ってしまってるあたり異常ではあるな。
それ言うと一番ひどいのは回路なんだけどな。コイルの誘導起電力が-Ldi/dtとか…
最近までなにを言ってるか知らんかったしね。最近-ndΦ/dtが出てきて、理解できたけど。

コンピュータは身近にあって使えると便利だ

今の時代、フロッピーというのはあまり使わないけど、安価で簡易であるという点では非常に優れている。
CD-Rは一回切りだしね。それに手間が結構かかる。CD-RWもね。どっちも前処理・後処理に時間を食う。
フラッシュメモリは非常に有用だけど、安価とは言えない。
容量は少ないものの、なくなってもいいわと思えるぐらいの安さのフロッピーは優秀。
今の時代、人にデータを渡すのにフロッピーなど使う必要はあまりないですね。
容量がそれなりに少なければe-Mailで送信すればOK。
まぁあまり効率がよい方法ではないですが…Base64に変換するからね。
あとアップローダーとそのURLの組み合わせという方法もありだ。
というわけで、結構インターネットってのは便利ですねという話です。


ところで、X01HT、最近スケジュール管理に有用に使っています。
それで前期中間試験の範囲が掲示板に貼ってあったので、キーボードで打ち込みました。
あらかじめ作成しておいた前期中間試験各日の予定のメモに打ってたわけだ。
多分5分ぐらいで打ったと思います。
結構早いです。まぁ手書きより早いかはわからないけど。
PDAで管理するといいことは、同期させればPCでもすぐにわかるということ。
もちろんポケットに入ってるときはそれを見ればいいけど、家の中ではPCの方が扱いいいですからね。
これをさらに共有カレンダーとかいう風に扱えたらさらによさそうだが、そこまではしてない。
クラスの連中は、ここに書いてあるのを紙に起こしたのを見てメモしてた。


試験時間割と持ち込み可は掲示で知らされるが、書き写す人でえらく混雑する。
今回は授業が早く終わって、次の授業が始まるまでに写したのであまり混雑してなかった。
これは非常に運がいい。
この混雑を嫌う人は誰かのを写すことが多い。それでも十分いけますけどね。
この混雑を緩和できれば便利そうです。
自動返信メールサーバーを置いて、そこにメールを送ったら試験時間割がもらえるとかすると楽でよさそうだな。
Vacationなるものに.forwardで転送すれば自動返信を作れるらしいな。なるほどおもしろい。
メールは反応速度は遅いけど、結構安定して動作するので意外といいかもしれません。
というか学内に1箇所しか掲示しないのはあまりにひどい。
そりゃ掲示板が1箇所しかないからなんだけどね。学生会は3箇所掲示してるけど、あれは別か。

テスト前だから初め2ヶ月を思い出してみた

昨日の記事で10件越えたらしい。やっと10件か。
ところで、そろそろ前期中間試験ですね。


この時期になってくるといろいろ見直しにかかるものです。
微分積分がちょっとつらいなぁと思ったりもしますけどね。
えらく難しいんだ。いや、二回微分しろだけならまぁいいんだけどさ…
歴史が難儀そうだとか。
去年は最終成績こそよかったが、テストは壊滅。今年は世界史でいろいろ変わったからいけるかもしれない。
でもいけないかもしれない。出来るだけのことはしましょうか。
さて、いろいろやってて思ったのだが、物理、今電磁気やってるんですよ。
でもね、だいたい専門科目の電磁気学でやってるんだよね。
あのとき苦労したが、物理の授業で出てきたときにはよく理解できる不思議。
なのでこの辺はよく確認するぐらいでいいかと思ってたりもするけど。
ところで、電子工学という科目があるのだが、これもまた厄介なことをやっている。
水素原子ってどんな作りですか?というのを今のところやってるのだが、まぁひどい。
E=hνなんて式が出てくるあたりなんというか…
hはプランク定数、ν(ニュー)は光の振動数、これが光のエネルギーの最小の単位。
光は粒でもあるというのはどうもここから来てるらしい。光のエネルギーは全部これの整数倍なもんで。
こんなことからいろいろ変な話にぶっ飛んでいってる気がしてならない。
ところで、この辺も物理の一部を切り取った感がありますね。
これをいちいち初めから説明するというのも難儀そうなもんだ。


とりあえず、今度のテスト、何かと難儀なことが多そうです。
完璧にってのはできないのは多いだろうけど、できるだけはやりましょう。
多分それでもかなり行けると思いますよ。
ただ、微積で滑るときついなぁ…どんな問題かで全く調子が変わってきそう。

Athlonシリーズの改革真っ最中

なんか書いてたら文章飛んでしまった、一体どうしたんだ…
さて、AMDのCPUの話。
最近モデルナンバーの規則が随分変わりました。
Phenom X4 : Phenom X4 9xxx
Phenom X3 : Phenom X3 8xxx
Athlon X2 (旧 Phemon X2) : Athlon X2 6xxx
Athlon X2 (旧 Athlon 64 X2) : Athlon X2 4xxx
Sempron X2 (旧 Athlon 64 X2) : Sempron X2 2xxx
Sempron : Sempron LE-1xxx
というわけで、どうもわかりにくい。
このうち、一番複雑なのがデュアルコアの部類だな。
キャッシュの少ないものがSempron、多いものがAthlon X2に振られて、Phenomの技術のが6000番台と、こういうことです。
Sempronの命名規則だけちょっと違うけど、もともとはBE-2xxxとかいう風に全部振るつもりだったのが変わったのが原因。
それでSempronだけなぜかこの規則のまま。
モデルナンバーに、eと修飾が付くことがあるが、低消費電力の意味だと思う。
そしてLEにはその意味を含んでいたりもする。まぁちょっと違うけど。


実は注目してるのが、Sempronの系列。
Sempronの系列はL2キャッシュが少ない程度であまり差がない。
しかもAMDのCPUはそもそもL2キャッシュが少ないので、減らされても減った気がしない。
それに、AMDのCPUは構造上、キャッシュはあまり重要ではない。
事実L2キャッシュが違う程度ならベンチマークの結果もあまり変わらんそうだ。
なのでそれなりにアリだと思う。
ただ、取り扱いがちょっと少ないな。まぁこれでもIntelに比べれば…


というのも、IntelのCPUのラインナップが偏り過ぎな気がするんだ。
Intel Core 2 Duo・Quad・Extream、Pentium Dual-Core、Celeron Dual-Core、Celeron
このうち、何も付かないCeleronだけシングルコア、あとはデュアルコアかクアッドコア。
しかも、Celeronの取り扱いって少ないんだよね。とんでもなく。
Pentium DCぐらいになると取り扱いが多い気はするのだが…
もっともCeleronはかなりL2の量が減っている。これはちょっとひどいかも。
だけど、安いね。そりゃ、Core 2 Duoまで行くとちょっと高い気がするけど。


高性能なシングルコアのCPUは最近ないですねぇ。
古いAthlon 64を取り扱ってるところならいいのが手に入るでしょうけどね。
だけど新しくは作らんらしい。
時代はデュアルコアぐらいは普通に出来ると思ってるんだろうが、そう甘くない気もする。
ましてクアッドコア、あまりにもてあますそうだ。まぁこれは仕方ないか。

モジュール使ってBlognplus

以前、有益な話があるから、また今度と言いました。
Blognplusのモジュールの話です。
Blognplusにはモジュールを追加することができるんです。
超強力とも言えないが、使えるものなのは確か。


1つ目はcmtcaptcha、コメントに画像認証を追加させる機能。
これを使うにはGDを導入する必要がある、それでPHPで使えるようにしておく。
あとはmodule/以下に配置して、指示に従ってテンプレートのHTMLに{CMTCAPTCHA}を書き足すだけ。
さて、これでいいのだが、実はPHPのお節介機能で、PHPSESSIDをCookieで食ってると確認するまでGET渡しするというのがある。
詳しい事情は調べてくれたらいいけど…
で、これの厄介なのは、相対パスで書かれてるのに全部PHPSESSIDと付けてしまう。
しかも、HTML内にも関わらず、&と書かない。なので都合が悪い。
管理者以外は実はあまり必要ないのだけど、この機能ではセッションを使ってるので生かしつつ殺す方法を考えた。
common.phpの冒頭にあるところだが、

@ini_set("session.use_trans_sid", "0");

のように1から0に変える。これで殺せた。
Validにすればいいやと思ってる人はこれでOK。
管理者はCookieを食うという条件を満たすなら、これでいい。
一方、cmtcaptcha/cmtcaptcha.phpで、

  if($_COOKIE['PHPSESSID']){
$echo_val = "<img src='./module/cmtcaptcha/captchamake.php?$dummy' alt='(Sorry,image only...)'>\r\n";
}else{
$echo_val = "<img src='./module/cmtcaptcha/captchamake.php?PHPSESSID=".session_id()."&amp;$dummy' alt='(Sorry,image only...)'>\r\n";

のように、Cookieで食ってると確認できなければ、GET渡しできるようにする。
それと、コメントの投稿先のアドレスにもPHPSESSIDを付けたいので、index.phpの表示処理と書いてある近辺に、

$blogn_skin = preg_replace ("/\{HOMELINK\}/", BLOGN_HOMELINK , $blogn_skin);
$blogn_skin = preg_replace ("/\{SITENAME\}/", BLOGN_SITENAME , $blogn_skin);
$blogn_skin = preg_replace ("/\{SITEDESC\}/", BLOGN_SITEDESC , $blogn_skin);
$blogn_skin = preg_replace ("/\{VERSION\}/", BLOGN_VERSION , $blogn_skin);
//PHPSESSIDをGET渡しするかどうか
if($_COOKIE['PHPSESSID']){
$blogn_skin = preg_replace ("/\{PHPSESSID\}/","", $blogn_skin);
}else{
$blogn_skin = preg_replace ("/\{PHPSESSID\}/",'&amp;PHPSESSID='.session_id(), $blogn_skin);
}

のように{PHPSESSID}の置換を定義。これでテンプレートの方を

<form action="index.php?mode=comment{PHPSESSID}" method="post">

のようにすればOK!
これでこのPHPSESSIDを受け取るindex.phpとcmtcaptcha/captchamake.phpのsession_start()近辺にこのように追加。

if($_GET['PHPSESSID'])  session_id($_GET['PHPSESSID']);
session_start();

まぁ簡単ですね。
これでCookieを食わない人も快適。もちろんHTML的にValidになるようにしてありますよ。


もう1つがasm4trk、導入のときtb.phpを少し編集する必要があると書いてあります。
怪しいTrackBackは保留するというのがこの基本的な考え方です。
さて、このモジュールは非常に優秀ですが、疑問点がいくつかあったのでそれを言います。
なお、僕の基本的な考えは、TrackBackは多分有益なものが送られてくるだろうということです。
TrackBackは多分SPAMだろうとは考えてません。まぁなので緩すぎるぜと言われるかもしれません。
asm4trk.phpを編集します。まず、日本語が含まれないメッセージはどうするかという処理があります。
条件の正規表現がどうも題意に合わない気がするのと、
ここである条件を満たす場合、保留せず拒否することになってるのですが都合が悪いのでそれのキャンセル。

  if ( !preg_match("/[一-龠ぁ-んァ-ヴa-zA-Z0-9 ]/u", $asm4trk_excerpt) ) {
//if ($wt_lang == 10 && $mode > 0) {
// res_xml(1,"TrackBack is not Permitted"); //自動排除
//} else {
$weight += $wt_lang;
$asm4trk_err .= "[非日本語]";
//}
}

まず、正規表現が違います。これは結構有名な正規表現なのでありでしょう。
あとコメントアウトしてある分ですが、これが保留せず拒否に相当する分です。
もう1つ、追加機能を作りました。保留したらそのことをメールで通知する機能です。
TrackBackを受け入れたら通知されるのですが、保留ではされないので。

        $fp = fopen($asm4trk_file, "a+");
flock($fp, LOCK_EX);
fwrite($fp, $asm4trk_data);
flock($fp, LOCK_UN);
fclose($fp);

//メールで連絡
$sub = "トラックバックを保留しています";
$sub = blogn_mbConv($sub, 4, 3);
$sub = "=?iso-2022-jp?B?".base64_encode($sub)."?=";
$mes = "件名:".$asm4trk_title."\n";
$mes .= "投稿サイト名:".$asm4trk_blog_name."\n";
$mes .= "URL:".$asm4trk_url."\n";
$mes .= "概要:".$asm4trk_excerpt."\n";
$mes .= "宛先URL:".BLOGN_HOMELINK."index.php?e=".$no."\n";
$mes .= "※このメールアドレスには返信しないでください。";
$mes = blogn_mbConv($mes, 4, 3);
$from = BLOGN_SITENAME;
$from = blogn_mbConv($from, 4, 3);
$from = "=?iso-2022-jp?B?".base64_encode($from)."?=";
$from = "From: $from <blognplus@localhost>\nContent-Type: text/plain; charset=\"iso-2022-jp\"";

$userlist = blogn_mod_db_user_load();
while (list($key, $val) = each($userlist)) {
if ($val["information_trackback"]) @mail($val["information_mail_address"], $sub, $mes, $from);
}

res_xml(1,"TrackBack is not Permitted");

$asm4trk_fileに書き足す行為というのはasm4trk.phpにおいては保留するということです。
これの完了から、res_xml関数までの間に、tb.phpを模して書きました。
これで保留への反応も早くなりそうです。


このような有益な変更があったからこんな風に書いたわけですね。
参考にすると便利なBlogを構築できるのではないのでしょうか?
特に保留通知はかなりありがたいと思います。気付きにくいからねー。

公民館が集会所との間で揺れてるとか

ちょっと前の話なのだが、公民館は頭が痛いという話を見たことがある。
どういうことかというと、公民館ってのは教育機関だということ。
よくある集会所ってのも似てるんだが結構違うんだよな。
公民館は教育委員会が置いてる、だから小学校と同じ。
行うことは、講座を開いたり、サークルやらの支援をしたり、なんか活動するための支援をしたりということ。
まさに教育機関だな。
それにたいして、集会所はだいたい自治会が設置するでしょう。
それで集会やらに使うと。


さて、集会所は集落ごとに置かれることが多いですね。
団地だったらn番町集会所とかそんな風に適当な単位で置かれますが。
それでそれぞれに自治会があって、それでいろいろしているでしょう。
それはかまわないのだけど、その代表者、区長やらいろいろあるけど、その人たちが集まって会議すると。
どこでするのか。
中央集会所みたいなのがあればいいんだけどね。まぁそんなもんはあまりないかな。
だから公民館でやってるらしいね。なぜか公民館だよりに書いてあるけど。あれはなんでだ。
それで社会教育法って法律があるのだが、この中に
「特定の政党の利害に関する事業を行い、または公私の選挙に関し、特定の候補者を支持すること。」
はやってはいけないと。集会所ではしょっちゅうやってるなぁ。
それと本来やることは「実際生活に即する教育、学術および文化に関する各種の事業を行う」ことだ。
まぁそんなわけで、結構頭が痛いらしいです。


その一方で、公民館の運営を地域の組織がやったりするからさらに気味が悪い。
どういうことかというと、自治会の上位組織の本部が公民館にあるということ。
まぁこの表現が厳密に正しいかはともかくとして、だいたい合ってるでしょう。
だからって摘発された公民館があるとは聞きませんけど。
一体どうするのがよいのか?頭が痛いとはまさにそのことですよ。
集会所なら気楽なのにね。けどそんなもん市が整備する理由はないだろう。勝手にしろということだ。
教育機関という大義名分があるからね。それは大きいよ。
しかし集会所とドッキングさせて、集会所の上で公民館が動くというのも悪くないかも知れない。
そう、こういう活動をするのなら公民館が建物である必要はないんだから。いや、それは厳しいかな。

Bashの上で便利なコマンドたち

現在のLinuxの標準シェルはbashですけど、使いこなせてるとは思っていない。
けど使えていないとは思わない。まぁだから便利に使えていると言うことです。
shことBourne Shellでも足りそうですけどね。ちなみにbashはBourne Again Shellね。
シェルスクリプトでいろいろやるなら知らないけど、まぁさすがにそれはしないし。
工作するだけならPerlの方が強力ですからね。実はLinuxの世界ではシェルスクリプトと共にPythonとPerlはよく使われている。
最近Pythonの力が強いですねぇ…まぁこれはどうでもいいことだけど。


bashはWindowsでもCygwin上でよく触れる。
いろいろ有用な使い方はあるけど、実はPerlの動作にはCygwinのPerlを使ってる。
そう、ActivePerlじゃないんだ。
で、Perlのスクリプトをechoコマンドで作ろうというアホな試みをしたことがある。
結論から言えば大失敗なんだけど…
なぜかというと、まず1つはダブルクオーテーションマークのこと。
もう1つは!の取り扱いのこと。
ところでechoコマンドで文書を作成するというのだけでも驚く人は多いかも知れない。
実はあまり珍しいことではない。たとえば、”foo”という文字列のmd5を取りたいときすることは

$ echo -n "foo"|md5sum

慣れればそんなもんだが、なかなか慣れないかもしれない。
echo -nは改行コードを入れないで引数をオウム返し、それで引数にはfooを指定したと。
これをパイプでわたして、md5sumを取ってると。
パイプで渡すという行為は、一旦ファイルに書き出して、それを次のコマンドで読み取る行為に一見似ている。
そういう便利な機能を使うことで、効率よく物事をできる。
非常に長い結果をlessコマンドで短く区切って読んだり、grepで物を探したり。
以前やってたのが、

# rpm -qa | grep foo | less

みたいなこと。rpm -qaはすべてのインストールされてるやつが出てくるから、grepで検索して、lessで短くして読むと。
lessの方が一般的だけど、僕はmoreの方が好きだな。moreは低機能だけど、意外といい。
あと、リダイレクトという機能は結構便利。
出てくる情報をファイルに書き出すという機能だが、自作プログラムでファイル入出力を簡略化するのにたまにやることがある。

$ grep foo < in.txt
$ echo "foo" > out.txt
$ echo "add" >> out.txt

まず、ファイルを入れるということだが、<の後にファイル名を付けるだけで標準入力から入れたことになる。
パイプの説明のときすっ飛ばしたけど、標準入出力というのがありまして、標準入力はキーボード、標準出力・標準エラー出力は画面につながってます。
それで、パイプは前のコマンドの標準出力を次のコマンドの標準入力につなげると。
で、この標準入出力はWindowsにいてもあまり意識しないけど、Linuxでは使いまくる。
grepの場合、ファイル内を検索するときには

$ grep foo in.txt

でもいい。というかそっちの方がよさげ。
けどこんな書き方も悪くない。
>も>>も標準出力をファイルに書き出すという効果は同じ。>はファイルを改めて、>>はファイルに追記するという違いがある。
実はこの機能は簡単なテキストファイルの作成にも使える。というのは頭の方で書いたな。
echoでつらつら書いて、リダイレクトでファイルを作ってしまう。意外と便利。
このリダイレクトの先はいろいろあるけど、/dev/nullに書き出すというのは使える。

$ ./foo >/dev/null 2>&1
$ dd if=/dev/random count=1 2>/dev/null | md5sum

1つ目のはcrontabでよく使われるよな。
cronの自動実行はなんか出力があればrootにメールを送ってくる。だからそれを阻止するためにこうすることがある。
で、どういうことかというと、まず標準出力を/dev/nullに捨てる。
捨てるという表現を使うのは、ここに入ってきたものは何もされずに捨てられるから。すなわち画面に出ないということ。
その次の2>&1というのは慣れない表現。2>は2番、標準エラー出力をどっかにリダイレクトするという意味。
そして&1は1番、標準出力と同じところに渡すと言うこと。だからこれも/dev/nullに捨てられる。
これの応用例というのが次ので、ddコマンドで、ランダムなデータを作成して、標準出力に出している。これをパイプでmd5sumに送る。
しかし、それではddコマンドの実行結果が標準エラー出力から画面に出てしまう。だから、標準エラー出力だけ捨てたと。


さて、初めの話に戻る。
このechoコマンドというのでいろいろ書こうと思ったのだが、都合が悪い。
それで偶然こんなものを見つけた。ヒアドキュメント。
使い方はさほど難しくない。

$ cat << EOF >foo.pl
#!/usr/bin/perl
while(<>){print;}
EOF

ヒアドキュメントというのは何かと都合の悪い複数行の標準入力の書き方。
それで行を改める。それでつらつら書いていって、最後に1行、EOFだけ書く、これだけ。
ちなみにcatは標準入力を標準出力に接続するだけのコマンド。ただのオウム返し。
あと、引数にファイルを指定すると標準出力に出してくれるので、簡易テキストビュワーになる。
そして今日簡易テキスト作成装置にもなることがわかった。
意外と便利なもんですね。

もしコンデンサの極板が動いたとすれば?

電磁気というのは結構有用なことが多いのは自明だけど、なかなか難儀なもんです。
最近電気機器の授業で、直流機ってのは…って話が出てきて、ちょっと役に立つ気がしてきたりもする。
けど今やってるのは、電界。まだまだ電界。
多くの部分で、電界の話は磁界でも通用するというのが理由らしい。だから電界でいろいろやってるわけだな。
まぁ確かにそれは一理ある。コンデンサの方がなんか実感沸きやすいきがするし。


物理の一分野を特に切り取ってやっているので、意外な話が出てきたりすることがある。
今日はまさにそんなこと。
だって、急に熱力学の第一法則が出てきたんだから。
けど、熱力学の第一法則と堅苦しい名前で言うとなかなかわからないけど、エネルギー保存の法則のことです。
ΔU=Q+W
という式で書ける。ΔUは内部エネルギーの変化。Qは外から与えた熱量、Wは外から与えた仕事。
これを使って、物理の授業ではピストンがどうなるとか言ってたな。
随分忘れてしまった。けど、今回これはあまり重要ではない。


さて、何をやりたかったのかという話をする。
コンデンサに適当に電荷をチャージしておく。すると極板間は引き合う力を持っているはず。
これを計算するためには結構な手間が必要。なので楽にやる方法を考えたらしい。
その名も仮想変位法。
コンデンサの力が外向きにF[N]で、dx[m]外に向けて仕事をしたとまず考える。
コンデンサの極板が動き出したら、それはおかしいけど突っ込んではいけない。
おかしな点ばっかりだが、仮想だから問題なし。
さて、両端にV[V]の電圧がかかってる、極板面積S[m2]、間隔x[m]の平行平板コンデンサを考える。
静電容量はC=εS/x[F]だ。まぁこんなのは覚えてることになってるな。
ちなみにεの単位は[F/m]。この式をみると納得いきますねぇ。
ガウスの法則と積分つかって求めてもいいけど、それでも慣れてれば拍子抜けするぐらい簡単。
さて、ここで、内部エネルギは、U=(1/2)CV2[J]と。
ここからが本題だ。
コンデンサの大きさがdx[m]外に大きくなると、静電容量がdC[F]増えて、内部エネルギが増える。
エネルギー保存の法則のΔUのところには(1/2)V2dCと書いておこう。
静電容量が変化すると、電流が流れて電池がエネルギを補給してくれるでしょう。
dC[F]変化すると、VdC[C]だけ電荷を補給してくれる。それで1[C]あたりV[J]のエネルギがあるんだから、V2dC[J]補給してくれたと。
外から与えられたということで、QのところにV2dCと書いておこう。
外向きにF[N]で、dx[m]外に向けて仕事をしたということは、コンデンサはFdx[J]の仕事をしたということだ。
しかしこれは逆に考えると、外は-Fdx[J]の仕事をコンデンサにしたということだ。
というわけで、Wのところに-Fdxと書いておこう。
それで (1/2)V2dC=V2dC-Fdx という式が出るので整理。
すると、 F=(1/2)V2dC/dx となる。どうも微分すれば、外向きの力の大きさがわかりそうです。
それで、さっきのCをxで微分すると、 dC/dx=-εS/x2 となるので、
F=-εSV2/2x2[N] となりました。
外向きの負の力ということは、内向きに力がかかってるらしい。
だから答えは、内向きにεSV2/2x2[N]という。


それにしてもこれでいいのかというのはあるわな。
なぜに微分と言いたくなるけど、別に微分ぐらいしてもいいかと思ってやるとそれなりの値が出る。
で、別の方法で求めても答えは同じ。だから正解ですよ。
しかし、エネルギとはねぇ…意外なアプローチだった。
どうも調べてたら、コイルの縮むエネルギも同様の方法で求められるらしい。
一体誰が考えたか知らんけど、相当狂った方法だな。
けど便利なのは確かだ。なかなかおもしろいことしますね。

数学の=で考えられないから代入は矢印で書く

レポートをTeXで書いてる人がいるがよくやるなぁと思う。
まぁ確かに融通きくから確かにいい方法だと思う。
けど、結果を見ながら編集できないので直感的じゃないよね。
だから途中でコンパイルして確認しながらするわけだけど。
僕はOOoでやってるけど、気に食わん点が出てきたりするけど、それでもスピーディーにできますね。
毎週TeXでやってると、そのあたりは鍛えられるだろうね。


さて実験レポートの話。
前のZ80の実験のレポートを書いてたのだが、その中でフローチャートを書いていた。
それで見よう見まねで書いてたのだが、単純に言えば、□が動作、◇が分岐。
で、代入はA←A+1などのように書いてあることが多かったので、それに習った。
それはいいのだけど、分岐で条件を書きますと。
そこでB=0と書いたのだが、どうも違和感あるな。
Cではb==0のように書くからね。b=0は代入だ。そんなことがあるからB←64hのように書くんだと思うけど。
まぁそんなもんかと思ってやってたけどね。
けど、a=bで代入を表すとき、右辺を左辺に代入という意味を常識と思うか思わないかというのは難しい話だ。
だって、数学では「x+1=cのようにcを定める」でも「c=x+1のようにcを定める」でも同じだから。
だからこそ、矢印で書いてたんだろうね。これなら、A+1→Aでもいいことになる。気持ち悪いけど。


Cの気持ち悪いソースコードの例にこんなのがある。

void strcpy(char* so,char* si){
while(*so++ = *si++);
}

何か考えられる人は考えたらいいけど、whileの()内をどう解するかということだな。
後置き++は実行後に考えればいい、この=は代入の=、だからまずは(*so=*si)!=0と言った方がいいでしょう。
毎度*siの値を*soに代入して、それが0(NULL文字)でないか確認して、so,siを1づつ進めて、NULL文字でなければまた代入すると。
正直センス疑うけど、これがポインタの有効活用例の1つらしい。
=と==の違いを知らない人が混乱するのでもう少し方法を考えるべきだと思う。
だから疑似言語とかでは=は数学の=だけに使って、代入は矢印なんだな。