OOoで自作テンプレートを使うと快適ですね

レポートを書こうと思ったわけですが、せっかくなのでレポートのフォーマットを見直すことにした。
当初見よう見まねで書いてたのだが、実はかなり悲惨なフォーマットでして…
今思えばおかしいのだが、なぜか章立てが番号付きの箇条書きを応用してたのね。
変ですね。と思っていたのだが、いままでそれに向き合うこともしてこなかったと。
方法がわかったので、これを改めることにした。
例によってOpenOffice.orgの話です。特にWriterね。


結局なんでそんな変なことをしてきたのかといえば、

3.実験方法
1.巻線抵抗の測定
電機子巻線(端子A-H間)と界磁巻線(端子C-D間)の抵抗をミリオームハイテスタで測定する。また、このときの周囲温度を記録しておく。

とかいう風に書きたかったから。そのためには箇条書き以外ないと思い込んでたと。
しかしそんなわけではないんですね。
見出し1、見出し2などいう段落スタイルがあるんですよ。
これってなんか意味あるのって思ってたけど、実は自動目次作成機能とかに使われるのね。
知らんかった。まぁそれぞれ意味のあるものだということです。
ちなみに表題はタイトルという段落スタイルを選ぶと良さそう。今初めて探した。
それで、 ツール>章番号付け というのがあって、これで設定できるんですよ。
ちょっと見た目が悪いので、番号後に . を入れることにした。これで1.実験方法のように表示される。
ここで総章数10とかにすると、3.1. 巻線抵抗の測定のような表示にできます。
すばらしい。
あと、スタイルと書式設定のところで、段落スタイルごとの標準を変更しました。
まぁ実は標準はIPA P明朝に変更したものを持ってたんだが、
他の部分がIPAフォントの類に統一されてなかったりしたのでいろいろ編集した。
MS Pゴシックとかはどうも縮こまってて好きじゃない。ほんの少しだけどね。
まぁそれならと、多少他の環境でも利用しやすいIPAフォントの類に変えてます。
ここで本文の書式で、インデントの自動のところにチェックを入れました。
これを入れておくと自動で段落の初めを字下げしてくれる。
このページでは全く徹底してませんね。まぁそういうものですが、レポートぐらいきちんとやりたいね。
字下げのためにスペースを入れるのはあまりよろしくないし。
本文打つときに、段落スタイルを本文にセットすればいいですね。
あと図表番号を中央揃えにしたり、いろいろした。
それとフッター付けて、<1>のように、挿入>フィールド>ページ番号を入れておいた。
そうやって作ったテンプレートを保存しておきました。


これでこのテンプレートだが、テンプレートとドキュメントで管理を選んで、
ここから自分のテンプレートを選び、コマンドよりインポートする。
これで新規作成のとき簡単に選べます。
さらに言うと、そのインポートしたのを選んで、標準テンプレートに設定とすると標準で使える。
これで便利になりました。
ちなみに他のテンプレートもこうやって作って登録して標準テンプレートにするといいかも。
CalcでM+2VM+IPAG circleを使いたいがために、そういうテンプレート用意したし。
Writerは標準フォントを定められるのですが、Calcはできないのよね。
だからこうやってやる方法が唯一です。
まぁこうやってやるときれいなレポートが日常的に書けますね。
そんなに便利なテンプレートがないので自作するしかないのよね。


さて、ページ番号のフッターというのは便利ですが、時に困ります。
というのは表紙をつけるときです。
普段の実験レポートは指定の表紙を付けないといけないし。
ただそういうのがなければ表紙も付けないといけない。
まぁどうせレポートとして印刷して提出なら表紙だけ別に作ってもいいんですけどね。
でも一番始めに置きたいですよね。ちゃんとできますよ。
まず、スタイルと書式設定を出して、ページスタイルで最初のページを選択します。
これでフッターが消えるので、表紙を適当に作成します。
それで挿入>任意区切りで改ページするけど、このとき標準を選んで、ページ番号を1とする。
ただ、こうすると、表紙の次のページに空白ページが印刷される。
これはオプションのWriterの印刷で自動的に挿入された空白ページを印刷を外せばいいはず。
だけどなぜかその状態が保存されない。おかしいなぁ…
まぁ普通はこれでずっと維持されるはずです。


まぁOOoというのは取り扱いがいいですからね。
スムーズにレポートがかけるので非常に便利です。
ただ、ちょっと複雑なことをしようとするとちょっと困ったりしますからね。
慣れておけば結構うまくいきますけどね。
というわけで慣れるためにたくさん時間を割いてみた。
まぁそんなのもいいんじゃないかな。

壊れやすい折りたたみ傘しか見えない

今日、朝、学校に行くために駅に行くと中学生がいた。
実は事前に情報を知っていたのですが、
今日は某私立高校の入学試験があるらしく、それで中学生がいたと。
それで僕の通学の方向と反対向きに行くよなぁとおもってたら、
なぜか数人の固まりが同じホームに来るから、あれ?と思ってたら、
いつものクセで間違えてしまった、とすぐ引き返していった。
まぁそれはそうと、無事学校にたどり着けて、能力が発揮できたらいいですね。


今日、折りたたみ傘が派手にぶっ壊れた。
風で傘がひっくり返って、柄の根本が曲がって…
これで駅まで歩いたのですが、傘をしまおうとすると、たためない。
というのも曲がったところがひっかかって何とも。
しゃあないので曲がった部分で折って、無理矢理たたんで持って帰ってきた。
家でゴミとして捨てました。


折りたたみ傘というのは便利です。
というのもカバンに付けておけば、雨が降ってもある程度は大丈夫。
そのため傘を忘れたと言うことにならないで便利です。
それで使っているのですが、非常に壊れやすい。
少しいいのを買っても非常に壊れやすいことに違いはない。
そこで開き直って安いのを使って、壊れても仕方ないという方針でやっている。
どうしても細い骨などの事情を考えればしょうがないことです。
確かに強くできるかも知れないけど、
そのためにかかる費用はあまりに高く、正直知らない世界の商品かなと。
ただ今回の壊れ方がおかしいですね。
普通は骨が一箇所折れて壊れてしまうことが多いけど、今回は柄ですからね。
まぁどちらにせよ細いことが原因です。


まぁなんやかんや思うところはありますが、
持ち歩きやすいということを考えると、折りたたみ傘いいですからね。
というわけで週末に買ってきます。

整理されようとする病院の下で抗議

社会保険病院なんてでかい建物が通学路にあるのだが、
しかし社会保険病院って何よって思ってしまう。
国民健康保険病院ならわかるんだけどね。
これはだいたいは市町村の病院なんですけどね。
名前似てるからそんな感じじゃないのって思ってたんですけどね。
実はそうではないらしい。


駅前でなにやら熱心に演説してる人がいて、
その人が言うには、この先社会保険病院を守っていかんといかんと。とまぁ、そういうわけである。
チラシを見るに、この社会保険病院の現在の設置者は
独立行政法人年金・健康保険福祉施設整理機構 (RFO)
になってるらしい。あれ?
実はここ、厚生年金関係の施設を売却する仕事をしてるところなのよね。
年金の保険料は全部が給付に行くわけではないのですよね。
その行かないところの1つが、こういう施設を利用していただいて健康に過ごしていただこうと。
まぁそういう意図があるのは確からしいが、あまりに儲からなさすぎるので、
これを売って金に換えて、施設はまぁなんか使っていただこうと。
実は身近なところにそういう施設がありまして、商工会議所とかが買い取ろうとしてるとか。
まぁそういう会社です。


なんでこんな会社が社会保険病院の類を保有することになったのかという話なのですが、
どうも全国健康保険協会の設立に関係があるそうです。
この社会保険病院の社会保険というのは、
政府管掌健康保険という、健康保険組合のない会社のサラリーマンの健康保険の病院ということでしょうね。
それでそれが社会保険庁から全国健康保険協会に移動するときに、
この病院を社会保険庁が手放す必要が出てきたと。
それで手放して渡したところが、この会社だったと。
ちなみに以前から国直営ではなくて、どっかに委託してたらしい。
まぁそれにしても、物騒な名前の会社に渡してしまったものだ。
そりゃ、RFOは医療体制が損なわれないがんばるとは言ってるけどね。


このRFOは2010年9月まで存在します。というかそれまでしか存在しないのよね。
それまでにこの病院たちをどっかに渡さないといけない。
まぁ市町村とかなんだろうけどね。
それが決まらなければ残念ながらなくなるのかな。
それでどうもこれについて国が維持しろとか要望してるらしいがそれはどうなのかな。
どうも市内唯一の公共医療機関とかいうぐらいなら、
市が買い取らんの?とか思うのだが、そんな余裕はないのかな?
限りなく可能性は低いけど、もしかすると厄介になるかもしれない病院ですからね。
まぁどうかこれからも公共の病院としてやってほしいとは思うのですが、
他力本願でどうにかなるものとも思いませんから、どうかがんばって欲しいと。

DIYと標語を掲げ自転車メンテナンス

今日は寒かったな。
自転車のサドルを霜が覆ってた。ここまでは初めてかも。
今日はアメダスによれば最低気温は氷点下3.5度とのこと。
アメダスの観測所は我が家からは結構遠いからなんとも言えませんけどね。
氷点下4度を切ったかも知れない。これでこそ冬ですね。
今日は非常に天気がよかった。だから寒かったのだけどね。


DIYといえば、Do It Yourself.というわけで、
日本語で言うなら日曜大工という言葉が一番よく当てはまる。
まぁホームセンターに標語としてよく挙げられてますよね。
しかし、Do it yourselfを訳せば「自分でやれ」ということですね。
というわけで前の休みに自転車の前輪ブレーキを交換しました。
前輪ブレーキはゴムでタイヤのリムを押さえるようになってます。大体そうじゃないかな。
そのためすり減ってしまうのですね。
あまりすり減るとまともにブレーキも効かない。
というわけで交換すればいいと。
ホームセンターで買ってこれば、あとは六角で外して、付け直せばOK。
ただえらいもので、タイヤの周りがえらい汚れてる。
多分これブレーキの削れたカスですね。なるほど減ったブレーキのゴムはここに来たのか。
というわけでボロいタオルを切って、これで掃除と。きれいになりました。
簡単ですね。
完成して試乗してたのですが、まぁちょっとブレーキかけるのに力がいりますね。
ゴムが多少すり減ればちょうどいいぐらいになるとは思いますけどね。
調整したほうがいいかとも思ったけど、普通に使える範囲だからいいかというわけで完成。


自分の近所のことで自分でできることはやればいいじゃないというのは、
何にでも言えることですよね。
コンピュータのトラブルに対処してみたり、
大量のデータ処理をとりあえずPerlでスクリプト作ってやったり、とかもそうですよね。
全く何も知らずにできるわけじゃないけど、
ちょっと知ってみれば、案外できるものです。
実は中学生だったころ、何度もパンクさせて、そのたびに応急修理してたのよね。
初めは説明書読みながらうまくいかんなぁとやってたわけだが、
三度目ぐらいにはスムーズに終わってしまうと。慣れですね。
専門家には叶わないにせよ、自分で使うならこれでいいじゃないということね。
そういうのは僕好きですね。これからもいろいろ実践していきたいなと思いますよ。

なぜか正弦波で表せるから積分して計算する

フーリエ級数展開とかいう非常にややこしいものが出てきた。
使い道ですが、正弦波以外の波を正弦波の足し算に分解すると。
例えば、振幅A、周期Tの方形波であれば、
(4A/π)( sin ωt +(sin 3ωt)/3 + (sin 5ωt)/5 + (sin 7ωt)/7 + …)
のように正弦波の和で表せるんですね。
なおωはω=2π/T、正弦波交流の周期と角周波数の関係と同じように定めたものですね。
これのグラフをFunctionViewを使って描いてみればいいですね。

(4a/π)(sin(ωx)+sin(3ωx)/3+sin(5ωx)/5+sin(7ωx)/7+sin(9ωx)/9+sin(11ωx)/11+sin(13ωx)/13+sin(15ωx)/15+sin(17ωx)/17+sin(19ωx)/19)

まぁ第十九調波ぐらいまで描いてみればいいんじゃないの。
適当にaとωを定めると見えます。
なんか嘘っぽいですけど、これを無限に描けば、本当に方形波になるはずです。


さて、これは何のことかという話なのだが、
どうもどんな周期関数でも三角関数の和で表せるとフーリエさんが言ったらしい。
それで、実は求め方があるんですよ。
周期Tの周期関数f(t)について、
a0=(1/T)∫f(t)dt , an=(2/T)∫f(t)cos(nωt)dt , bn=(2/T)∫f(t)sin(nωt)dt
∫と書いたが、-T/2からT/2までとか1周期だけ定積分をしてくださいね。
この3つの積分ができれば、あとはf(t)=a0+a1sin(ωt)+b1cos(ωt)+a2sin(2ωt)+b2cos(2ωt)+…と書けば完成。
さっきの方形波は計算するとa0=0 , an=0 , bn=(2A/πn)(1 – cos(πn) )とでてきたと。
むちゃくちゃめんどくさいですよ。
1 – cos(πn)というのはnが偶数ならば1-1で0、奇数ならば1-(-1)で2となるから、
奇数の場合のみbn=(4A/πn)になると書くこともできる。
なのでさっきの式になったわけ。
なんでこんなわけのわからない計算をするのかといえば、
f(t)が三角関数の和で表せたならば、
cos(nωt)をかけて1周期積分するとcos(nωt)成分以外は0になってしまうのよね。
f(t)の中にancos(nωt)という項があれば、
∫f(t)cos(nωt)dtと一周期積分することは、∫ancos2(nωt)とすることと一緒だと。
sin(nωt)をかけて1周期積分することも同様。
わけのわからない公式だが、案外簡単な仕組みでできてるんですね。
本当に三角関数というやつはよくできてますね。


しかし本当に積分は大変です。
三角波のフーリエ級数展開を計算してたんですね。
まぁめんどくさいですね。部分積分しないといけないし。
しかし、奇関数であるという性質を使えばa0とanは0になるんですけどね。
積分の公式ですよ。それでもbnの計算はかなりめんどくさい。
まぁそれでも計算できそうなだけましかも知れない。
積分というのはできないのが当然とかいう恐ろしいものです。
実際はできるものしか数学の問題にはならないけど、
変形に変形を繰り返してやっと解けるというものも多いです。
どうすればいいか、見当が付けばいいんですけど、見当が付かないと無理ですからね。
もっとも全く見当が付かないものは数学の問題にしても解けませんけど。
いろいろと定石というのがありまして、見当がついてしまうことが多いけどね。
まぁそんなに難しい問題は出さないそうだけど、うまく積分できないとなぁと思ったものです。

0と1の世界の式はかえって難しい

論理式の簡単化というやつは厄介である。
そんなこと日常的にはやらんのだが、実験があるからというわけで、
その課題を考えてたのだがすごく難しい。
さてどうしたものか。


どういうことかというと、こんな論理式が与えられたと。
f=A・!B + A・C + B・!C + !D・!B + !A・D + !A・B
本当はBの上にバーを書きたかったけど無理なので !B と書いてる。
実はこの式、簡単化すると1になります。
A、B、C、Dにどんな0と1を入れても、答えは絶対に1になると。
しかし見てもわかりませんね。
これをうまく変形して整理できるそうだ。
まぁ僕もよくわからなかったので、取り扱いに慣れてそうな情報工学科の友人に聞いた。
どうも式をばらしてくっつけるということをするそうだ。


ところで論理式というのは、0と1ばっかり取り扱う式ですね。
それでNOTとANDとORがあるわけだが、
NOTは反転させればいいと。0のNOTは1だし、1のNOTは0、
ANDはどっちも1なら1だ。1と1のANDは1だが、1と0とか0と0のANDは0、
ORはどっちかが1なら1だ。1と0のORは1だが、0と0のORは0となると。
NOTは文字の上にバーを引きますね。ANDは+、ORは・、足し算とかけ算みたいなもんですよ。
論理式というのは何のことかと言えば、計算機の中身を作るのに使うものだよね。
さっきみたいな式の結果を出すようにしたいと。
しかしこの通り作ると金がかかる。だから簡単にしたいと。
そして簡単にしたらどうも結果は1であると。本当に安上がりでいいですね。


さて、f=A・B + A・!B + !A・B などなっていれば、
まず項と項をくっつけて簡単にするということをする。
A・B + A・!B = A・(B + !B)
当然Bか!Bはどっちかが1になるのだから、これは1であると。そしてAだけになると。
これでf=A + !A+Bとなるのですが、さらに簡単にできるんですね。
1と何のORを取っても1になるのでAの項に(1 + B)のANDを取ります。
f = A + !A・B = A・(1 + B) + !A・B = A + A・B + !A・B=A + B
分解して他の式とくっつけるとさらに簡単になると。
というわけでORを1個使えば簡単に作れますねと。めでたしめでたし。
実は上の式もこの変形をひたすら実行すれば1になります。
f=A・!B + A・C + B・!C + !D・!B + !A・D + !A・B
=A・!B・(C + !C) + A・C・(B + !B) + B・!C・(1 + A) + !D・!B・(1 + !A) + !A・D・(!B + B) + !A・B・(!D + D)
=A・(!B・C + !B・!C + C・B + C・!B + B・!C) + B・!C + !D・!B + !A・(!D・!B + D・!B + D・B + B・!D + B・D)
=A・(!B + B) + B・!C + !D・!B + !A・(!D + D)
=A + !A + B・!C + !D・!B = 1 + B・!C + !D・!B = 1
バラして、1をどんどん作ってまとめていくと。
最後にA + !Aの時点で1となったから、あとは何とOR取っても1ですねと。
まぁめんどくさいことこの上ない。


4変数までなら、カルノー図という図を書いて、それでやっていけば簡単かできます。
A、B、C、Dの0・1の組み合わせが並んだ格子状の表でしてね、
ここに1のところは1を書いていくと。こんなに複雑だとそれがめんどくさい。
できたら、一定の規則で四角で囲んでいく。重なってもいい。
結果これと同様の簡単化ができると。しかし4変数までですが。
それ以上はもう手作業では大変すぎるんだとか。
ただコンピュータでやる方法はあるみたい。
だけど変数の数が増えると恐ろしい計算量になるので、まぁ難しいとか。
カルノー図書かずにさっきの簡単化したけど、正直曲芸ですね。
なんかうまく行き過ぎだと思うだろうけど、うまくいった場合を書いてるからですね。
こんなの思いつかないというのはもっともな話ですね。


まぁ3変数までなら割と簡単にできるんじゃないかなと思いますよ。
4変数だと本当に見当が付きませんからね。
今のところはそういう感想ですね。
実験までに簡単な式を作っておこうかなと思った。

年賀はがきと戯れる夕方

今日はお年玉付き年賀はがきの抽選日です。
というわけで確認しましょう。
四等を確認するだけであれば非常に簡単なのですが、現実には一等から三等まであります。
じゃあどうするのというわけで、Perlでスクリプト書きました。

# 2009年のお年玉付き年賀状専用判定スクリプト #
use strict;
use warnings;
use utf8;
binmode STDOUT,':encoding(shiftjis)';
while(<>){
if(m/^(\d{6})/){
if($1 == 345898){
print "$1\t!! 一等 !!\n";
}elsif($1 == 663829 or $1==908796 or $1==28962){
print "$1\t!! 二等 !!\n";
}elsif($1%1e4 == 5070){
print "$1\t!! 三等 !!\n";
}elsif($1%1e2 == 94 or $1%1e2 == 46){
print "$1\t!! 四等 !!\n";
}elsif($1==882347 or $1==223109){
print "$1\t?? C組なら特別賞 ??\n";
}else{
print "$1\t!! ハズレ !!\n";
}
}else{
last;
}
}

use utf8;してるけど、スクリプトがUTF-8で書いてあるからね。
端末のエンコーディングと同じならutf8関連は消してもOKですね。
これには2つの使い方があります。
1つはひたすら数字を打ち込んでいく。すればわかると。僕はこれでやった。
もう1つは数字を一行一行入れたテキストを標準入力から投げ込む。
結果としては012345 !! ハズレ !!などが並ぶわけです。
まぁこれで確かめればいいと思います。


家にある全部の年賀はがきを調べました。余り、書き損じ、還付されたもの全部。
その結果、四等が3枚当たってました。全部届いた年賀状ですね。
うち2枚は自分あての年賀状でして、運がよろしいと。
明日は多分時間が空くので、その間に学校近くの郵便局に行こうと思います。
実験がレポート回収と短い説明のみだからね。
実は学校から1kmほどの場所に郵便局があるんですよ。
今まで何度か使ってますよ。ゆうちょ銀行設立記念に定期貯金を組んだのもここ。
ただ通学路と反対方向なのでね。普段使うにはちょっと不便。
しかし、住宅地の中にあるので、そんなに混んでなくて、広いし、いいですね。


まぁ明日は時間がありそうだからというのもあるのだが、
実はこんな暇そうな郵便局を狙う理由は、切手類の交換という用事があるから。
未使用・書き損じのはがきが結構あるんですよ。
その中には過去の未使用のものもあります。
今年の未使用の一部を予備として10枚ほど保管しておき、
枚数を数える。すると24枚のはがきは交換した方がいいことがわかった。
それで手元の切手を見ると、封筒に貼り付いた80円切手が一枚余分にあった。
あと50円切手はシートであるから、足して130円で手数料を払おうと。
するとあと2枚交換すると26枚で、1枚あたり5円だから130円とちょうどいい。
というわけで予備を8枚に減らして、26枚交換することにしました。
これを袋に入れて、明日持って行くよ。


この切手類の交換という作業は非常に手間。
普通ははがきから交換することになるでしょうが、
このときはがきの枚数を数えて、端末に入れて、
交換する切手類を切手箱から出してやると。
結構めんどくさいです。今回は26枚ですが、これを100枚とかやられると…
また回収後の切手類は再利用防止のためになんかで消します。
はがきは消すという話は聞かないけど、袋に入れて厳重に保管してるのかな。
この辺は料金別納のうち切手で支払うものも同様です。
と、手間ばっかりかかると。とてもじゃないが5円ではやってられないらしい。
広告郵便物・区分郵便物の別納の切手払い廃止も同様の事情だとか。
これは特別に割り引いてるから、手間を省けるように金で払えということ。
というわけで手間をおかけしますが、交換してくれたので郵便送るからどうかよろしく。


まぁこれで年賀状関連の用事も終わりですね。
明日は郵便局混むだろうけど、多分空いてる時間帯だと思うのよね。

プログラムで美しくて見やすい命名って何さ

以前、かなり巨大なプログラムを作ったのだが、
このライブラリの命名規則がかなり悲惨なものであった。
僕はこういう表記が好きなんだけどね…


どんなものかといえば、全部小文字で書いてるんですね。
えらいもんですよ。 lastturncsvdataとかいうプロパティ名がありますし、
クラス名もほとんど小文字。
なんで小文字なのかというと、打ちやすいからですね。
とはいえ、一見すると何を書いてるかわからないのが欠点ですね。
基本的にはLastTurnCsvDataのような表記が好きです。
これはPascal形式とよばれるものらしいのですが、
一応.NET Frameworkの方針はこれのようです。
ただどちらかというと、lastTurnCsvDataのような表記の方が有力なのかな。
これはCamel形式といいます。ラクダのこぶみたいなのがあるから。
Javaのライブラリはこれですね。
どちらにしても大文字小文字で語の区切りを見えやすくすると。
複合語を無理に縮めなくても、まぁ読みやすいですし、人気がありますね。


そういえばRubyの命名規則はかなり楽しい規則だった。
Rubyではクラス名は大文字から始まらないといけないんですね。
なのでmyclassはダメ。MyClassとかにしないとね。
変数名ですが、これは小文字から始まることになってます。
そのほかにいろいろルールがあるのですが、これがかなりお茶目なんですね。
$から始まるものはグローバル変数、@から始まるものはインスタンス変数、@@から始まるのはクラス変数。
グローバル変数はPerlで作るならour使いますね。our $g; とか。
けどRubyでは$を付けると。一目瞭然ですね。
インスタンス変数は、C#とかでthis.fooと書くのを、@fooと書くと。
Perlやってた人からすると、配列みたいですがそんな意味は全くありません。
メソッド名も楽しいですね。
破壊的メソッドは!、真偽を返すメソッドは?を付けると。
MyClass#isEmpty? とか、MyClass#replace! とか。
ちなみにMyClass#myMethodのように何々クラスの何々メソッドとか書くらしいですよ。
.NET Frameworkの説明はSystem.IO.StreamReader.ReadToEndメソッドとか書かれてること多いけど。
破壊的メソッドと非破壊的メソッド両方あることもありますね。
これすばらしい仕組みだと思いますよ。そりゃ打つ文字が増えてめんどくさいけど、見た目はいい。

bar=foo()
bar.next!()
puts "Field 2 is empty." if bar.next().isEmpty?()
puts "Field 1 is #{ bar.current() }"

こんな風になるのかな。まぁ想像で書いてみました。
bar.next!()はbar+=1、bar.next()はbar+1、という風な感覚で使えます。
両方とも備えられてたら楽しいかも知れませんね。
真偽値を返すメソッド名って疑問文になってること多いですよね。
そこの雰囲気からもつかみ取れたりしますけど、まぁいいんじゃないかな。


以前、ハンガリー記法という命名法があったらしい。
Wikipediaによれば、それの本義は、変数の指す内容の種類を変数名に付けましょうということ。
例えば、carSpeedとhumanSpeedという変数があった。その足し算を計算したいと。
それで、System.Console.WriteLine(carSpeed+humanSpeed); などと書いたわけだ。
けど実はcarSpeedの単位はmph(マイル毎時)、humanSpeedの単位はkm/hだったと。
それを防ぐために考えられたのがこの方法らしい。
例えば速度のうちkm/hにはkph、mphにはmphと付けましょうと決めるわけである。
すればmphCarSpeedとkphHumanSpeedの足し算となり、どうもおかしいと。
それで気付いて、System.Console.WriteLine(mphCarSpeed*1.609+kphHumanSpeed);など書いたと。
これでOKですね。
という風に目で見ておかしいと気付ける仕組みだと思いますよ。
確かに一理あると思う。C#で書いてたらXMLDocumentationで意味とか単位とか書きますけど、
勘違いを防ぐために統一的な符号を付けておくのは場合によってはいいかも。
ただこの符号、MFCなどでは型名を表す符号だったのね。

HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,NWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);

こんなWIN32API関数があるはず。
この引数名を見て欲しいのだが、
lpClassNameはポインタであるということでlpと付けられてる。
dwStyleはDWORD型ということでdw、hInstanceはウインドウハンドルということでh。
という非常に冗長というかなんというかよくわからない記述になってる。
こんなのは見ればすぐわかると思うのだが、意義があると思ってマイクロソフトは使ってたらしい。
まぁこの辺は昔と今は環境が違うということだと思っていいと思います。
ただ.NET Frameworkでは全面的に廃止されてることになってます。
一応インターフェースの名前はIEnumerableなど、Iから始まるという習慣がありますが、この程度ですかね。
変数名とかはこんな習慣は全くないと思いますよ。


なんやら言ってきましたが、どうも普段は変数名は全部小文字であると。
でもかっこつけたいときは大文字を適当に使って見やすくしてみたり。
ソースコード見てぱっとわかるとありがたい。
というわけで多少長くとも英語で略さずきちんと命名しましょうとか、
MSDNに行けば.NET Frameworkの世界での統一ルールがわかりますよ。
団体によってルールも違うからそんなに神経質にならなくてもいいと思うけど、
どうも見てると複合語はCamel形式かPascal形式で書くとよさそうですね。
どちらを適用するかはまちまちなのでなんとも。
あとPHPはアンダースコアが好きですね。PHPらしいですね。
また必要となれば、そういうのを調べてみようかなと思いましたね。

授業のHTMLはちょっとひどいかな

プログラミングの授業でHTMLが出てきた。
ただテキストのHTMLがすごい悲惨なのね。
HTML 2.0の時代ではこれでよかったのかな。
少なくともHTML 4.01ではないですね。


HTMLを書こうと思うと、あまりに決まり文句が多く、コピペなしで書くことは困難だと思う。
その決まり文句をもってくるのに使ってるのがこのページのソースだったりする。
すごい勉強して書いたページですからね。
このページの決まり文句をコピーすれば十分なHTMLが書ける。
ただプログラミングのテストでDTD宣言とか暗記して書くなんて現実的じゃないですよね。
テキストのHTMLではDTD宣言はないように取り扱われてるけど、
ルート要素であるhtml要素より前に、DTD宣言が来ないといけない。
じゃなければHTML文書としての体裁を成していない。
となるのですが、完全に無視されてる。
決まり文句であるのでコピペしましょうと書くだけでいいんだけどね。
あと日本人にとって大切なのがmeta要素。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

これですよ。これを付けないとUTF-8だと認識してくれないと。
まぁXHTMLの場合、XML宣言を省略するとUTF-8であるとなるのでよいのですが、
確かHTMLでContent-Typeで文字コードを指定しないと、ISO-8859-1になると思うのよね。
これじゃ日本語書けませんから。なので日本語のページには欠かせないと。
もっともLibserverみたいにHTTPレスポンスヘッダーで指定すれば不要なんだけどね。
meta要素はその補助です。あと各要素のstyle属性を使うときはContent-Style-Typeでtext/cssであるとか書かないといけない。
こんなに決まり文句が多いので、コピペなしで書くのは困難だと。


DTD宣言はまぁあきらめることにしましょう。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

最低限でもこれを書かないといけませんね。
このページではこれにDTDのあるURLも書いてあるけど省略できるそうなので省略。
これでHTML 4.01 Strictを使ってることになります。
しかしこれを覚えてる人はいないんじゃないかな。
なんでこうなるか理由はあるんですが、DTD書く人でもなければ関係ないしね。
Content-Typeはサーバーがちゃんと送出してくれれば書く必要はないか。
Content-Style-Typeは省略時text/cssであるとみなされるので、不要かもしれない。
まぁ残念な文書になるけど、一応は省略できるのかな。
しかし省略しない方がいいに違いないですね。


まぁなんか決まり文句のことばっかり書いてきましたけど、
そのテキストの一番文句を言いたかったことは、
h1要素の次に急にh4要素が出てきてたりすること。
h1・h2・h3とレベル分けしていきましょうと。h1の下にh2、その下にh3と、飛ばすのはよくないと。
見出し要素は見出しとして使いましょうということね。
見出し要素は大切ですからね。うまくやっていきましょうね。
とかなんやらツッコミどころの多いテキストでした。
CSSも使ってないので、多分HTML 3.2の時代のテキストなんでしょう。
まぁうまくやっていきたいと思います。

UNIXと呼べるものと呼ぶに足りないもの

友人がOpenSolarisで遊んでた。
そんなもんがあったのかー、と驚いたもんだ。
UNIXとはなんだと言われると答えにくいが、
SolarisはUNIXですからね。Sunの作ってるUNIXね。
基本は有料だけど、コア部分はオープンソースになっていると。
これこそがOpenSolarisであると。なるほど。


LinuxとBSDはUNIX系OSではあるが、UNIXとはいえない、
という話を取り上げたことはあっただろうか。
どっちも閉鎖的になるUNIXに対抗して作ったようなもんですしね。
OpenSolarisは無償のUNIXである、と書いたけど多分これが唯一じゃないかな。
というのもUNIXであると言えるのは、商標を保有するThe Open Groupの認証を受ける必要があるから。
これには多額の費用がかかるので、フリーのプロジェクトが参加するのは困難。
OpenSolarisはSunが有償で販売するSolarisの基礎だから、通過してるとは思うけど。


とはいえ、UNIXであるかどうかなんて重要じゃないことですが。
LinuxにせよBSDにせよUNIX系OSとして認識されていますしね。
一応、UNIXと呼ぶことはできないから、特にLinuxとかBSDとか言ってるけど、
実のところUNIXですよね。特にBSDなんてね。
この辺のOSでは同じソースコードをコンパイルして動く仲間ですし。
このあたりはさすがですよね。
だからUNIXと呼べなくとも、仲間には違いないよって。


まぁいろいろ書いてきたけど、僕は未だUNIXとは何かよくわかっていないわけですね。
多分UNIXであるとされたOSの総称だと思うんですけどね。
今はUNIXなんてOSはないですから。
けどよくわからないのは、昔はUNIXはOSの名前であったはずなんだよね。
けど今はそんなのは見あたらない。うーん…どうなってるんだろ?
と、UNIXという言葉は適当に使うとえらい目にあいそうだ。
まぁ僕は専らLinuxを使ってるから、あんまりUNIXという言葉と縁はないのだけどね。