知人のサイトでLinuxの記事をみるうちに触発され、ひさしぶりにOSを導入してみた。
あまっている検証機は、PentiumPro200MHzが2個載っている古いタワー型PCだ。電源を入れてみたら、まだなんとか動くらしい。SCSIの4GBのHDDが1個、2GBが1個、ATAPIのCDROMドライブが1台、ビデオに初代1MBのMilleniumがささっている。
インストールに2時間半、ネットごしのアップデートに2時間かかった。XGAサイズのGNOMEのデスクトップの上を、マウスカーソルが飛び飛びにワープしている。重い…はげしく重い。あげくに最初繋いでみたマウスが寿命でいかれてしまったらしい。カーソルがはげしくランダムワープする上にでたらめにあちこちクリックしまくってしまう。カールさんの壊れたPCを修理したものを弟が使っているのだが、それのマウスを借りてようやく導入が完了した。自分のマウスは壊れたものをのぞいて全てUSBなので使えなかったからだ。
日本語入力モードにはいる方法がわからない。しばらくgoogleで調べてみつけた。RHL系はshift+spaceでしたか。そういえばそうだった気もするが、すっかり忘れていた。
OpenOfficeのWordが縦書きに対応しているかが気になった。以前(RHL7.3の頃)は、横書きしかなかったが、調べてみるとページ設定で設定できるようになっていたので感動した。これで脚本が書けるようになったじゃないか…と、ためしに用紙横置き縦書きに設定して、日本語で「これはテストです。」と打ってみたら、文字が化けて表示された。横書きに設定変更すると正常に表示される。縦書き時のフォント処理にまだ問題があるらしい。残念だ。縦書きで遜色なく文章が打てるようになるまでに何年かかるのだろうか。
…それはさておき、OS自体に関しては安定して動作しているようだ。知人サイトの記事を参考にWebDAVとSVNを試してみようと思っている。それと、blogのローカルテスト環境もつくろうと思う。そのために入れてみた。
ちなみに、この記事はPentiumPro機で入力されたものだ。
関東在住の友人から夜間電話があり、彼がホームページを作りかけていて、萌えるカウンターなるものの設置を試みていることがわかった。
自宅にサーバーを立てているそうで、そのサーバーを用いて、ホームページにカウンターを設置しようとしているそうで、動作確認でお手伝いしたが、カウンタ値が更新されない。プログラマー畑というよりサーバー系の人なので、今回 CGI を動作させる部分でうまくいかないようだった。
彼が、明日の仕事にそなえて就寝した頃にふと、この blog に設置してみようかと思い立ってとりつけてみた。
画像には、日下こかげさんの「OSたんカウンタ」をkurageさんが縁取り、透過処理されたものを使わせて頂いた。
カウンターのコードは実は、 rinn さんの rnote 用サンプルプラグインそのままだ。文字列を出力している箇所をちょっと変えただけだ。(笑)
ひさしぶりにプログラミング(というほどのもんじゃないが…)をしてみて、書き方を忘れかけていたことと、rnote のカスタマイズのしやすさを感じた。思った処理が実現しやすい。C でも PASCAL でも、 Algol 系の言語経験が少しあれば、RAD 的はやさでサイトを構築できるんではないだろうか? MOVABLETYPE などの大がかりな blog ツールでこんな軽快さが得られるかどうか…。素晴らしいツールだ。
ちなみに、深い意味なく設置してしまった画像カウンターだが、このような画像になじめば自分も「萌え」というものが理解できるようになってくるのだろうか…。
なんとなくだが、なにかが音を立てて崩れていった気がするのは気のせいだろうか。
- 1: 冬星 (04/04 12:53)
- moonfishさんの「ねこみみカウンター改」の画像も出てくるようにしてみました。クライアント側にスクリプトを用意していないのでとりあえず出るだけです。ランダムに画像が選ばれるので何度か更新すると出てくるでしょう。
また小学校への乱入・無差別殺傷事件が起きた。また大阪府だ。また17歳だ。
池田小の事件を思い出した。今回は、犯人の少年は母校の職員室と教師を標的にした。池田小の事件では、児童が標的になった。
共通するのは、「他者への恨み」ではないか。
池田小の犯人は、社会全体に対する恨みを募らせていた。今回の少年は、学校という場に恨みを抱いていたと直感できる。少年は応対した教師に「職員室はどこですか」と質問し、実際そこに向かった。
背景に、他者とうまくコミュニケーションをとる能力が何らかの要因により欠如したため孤立が続き、うまくいかないことで苛立ち、他者を恨み、周囲に対してささくれ立った精神状態となり、ますますトラブルとなったり自閉してしまう、…そんな負の循環があったのではないか。そして終に爆発したのではないか。
今では誰でも知っている「不登校」なる言葉も、かつては無かった。この言葉が一般化したのには、当然ながら登校を拒絶する児童生徒が増え続けていった結果、社会も認知を余儀なくされ、「不登校である」なる現象が徐々に社会に受け入れられていったからだ。それだけ、学校という場には、無理があるのだ。
日本の学校空間は、言うまでもなく硬直している。強制等質化マスプロダクションであり、自然発生した仲間集団ではない人工的集団の中に、強制的に拘束される。その中でそれなりにやっていけるならよいのだが、前述のコミュニケーション能力の問題など様々な要因により、その社会に適応が難しい者にとっては、まさに生き地獄となる。自我の形成やコミュニケーション能力のトラブルを抱える子どもは、今日非常に多く存在するようになっている。
そんな子どもには、硬直した学校しか行くところがないのだろうか。いや、フリースクールや在宅での学習、学校復帰に向けた短期入所施設など、場所や方法はある。しかし体制は十分でないし、そういった場所に通わせるということへの子どもの家族や教師や社会の側の積極的でプラスのイメージ、それらを選択することは当たり前なのだ、それでよいのだ、という認識こそ十分でないのだと思う。精神的問題の治療のために精神科に通うことに、いまだに非常にマイナスのイメージがもたれて続けているようなものだ。
自分の講師赴任先の小学校でも、いじめが原因で不登校になった児童を毎日強制的に登校させ続けた。その児童は最終的に復帰したが、教室に入れず朝から孤立して泣く状態が数ヶ月続いた。硬直の典型だと感じた。いたたまれなかった。この国の認識レベルの進歩など、その程度なのだ。
今のままでは、不幸な殺傷事件がこれからも増加続発する。そんな気がする。学校は、そんな子ども達に世界を恨む負の循環を学習させる役をもちつづけていてはいけない。学校以外の場の確立連携を通して、不幸な循環の芽に気づき、心の正の循環を教えられる場の一つとなることが求められている。
PI.さんのところで、XM6のソースが公開されたので、これはありがたい、ぜひ参考にとビルドしてみた。
ドキュメントによると「コンパイラとして、Microsoft Visual C++ .NET 2003が必要、アセンブラとして、NASM(Netwide Assembler)が必要」とあるが、VC6しかもっていないので少し作業が必要だった。以下メモ。
---
#2005-1-29加筆修正。
[VC]
・「WIN32アプリケーション」を選んで空のプロジェクトを作り、ファイルを追加。
・プロジェクトの設定を開いて、一般タブの"Microsoft Foundaiton Class"のところを、"共有DLLでMFCを使用"にする。(初期値では"MFCを使用しない"になっている。)
・プロジェクトの設定を開いて、"プリプロセッサの定義"に、"_WIN32"を追加する:VC6で自動追加される定義は、"WIN32,_WINDOWS,_MBCS,_AFXDLL"(共通)、"NDEBUG"(リリース版)、"_DEBUG"(デバッグ版)。
・プロジェクトの設定を開いて、XM6.vcprojの中身を参考に、リンクするlib に"imm32.lib winmm.lib version.lib dinput.lib dsound.lib dxguid.lib obj/core_asm.obj obj/mfc_asm.obj obj/rend_asm.obj obj/star.obj"を追加。
・VCメニューの、"ツール/オプション/ディレクトリ/インクルード"のところで、"C:/DXSDK/INCLUDE"など環境に応じてDirectXのインクルードファイルの場所を追加。
・mfc_tkey.cpppのテーブルCTKey::KeyTable[KeyMax]で"VK_OEM_ほにゃらら~"などが未定義といわれるので、VCメニューの、"ツール/オプション/ディレクトリ/インクルード"で、新しげなプラットフォームSDKのインクルードディレクトリ"C:PROGRAM FILES/MICROSOFT PLATFORM SDK FOR WINDOWS XP SP2/Include"をVCのINCLUDEより上に追加:VC6のwinuer.hで"VK_OEM_"ではじまる定義は"VK_OEM_CLEAR"1つしかないので他は全て未定義エラーが出る。SDKのwinuser.hで追加されたもののようだ。
・fdd.cppの、クラスメソッドFDD::WriteP(),FDD::GetName(),FDD::GetPath()は、戻り値をもたない(void)のに戻り値を返すよう記述されておりエラーになる。return foo(); -> foo(); のように処理だけ行って値は捨てるように変更。
・mfc_sub.cppで、クラスメソッドCSubWnd::OnActivate()が、同様に戻り値をもたないはずなので、ベースクラスCWnd::OnActivate()の呼び出し結果を return しているのを、ベースクラスを呼び出すだけに変更。
・filepath.cppの、::GetFileTime()の第一引数を(LPVOID)にキャスト。
・memory.cppの、Memory::ReadOnly()のif文の式、"if (mem.table[index] != this)"がエラー(C2446)になるので、"((Memory*)mem.table[index] != this)"と明示してやる。
・mfc.hの、先頭で WINVER を #define している直後で、_WIN32_WINNT を(WINVER) と同じ値に定義。
[NASM]
・ドキュメントによると、nasmの版は0.98推奨とあるが、本家サイトでは入手不可能。本家では 0.98bf-win32(一番古い)~0.98.39(最新)までが入手可能。
・yosirin-hello さんのサイトで、「うるり」さんがオリジナルの0.98に対してSSE2対応の改良をおこなった版も紹介されており、入手可能。
・しかし、いずれの版でも、star.cから生成したstar.asmでエラーが出る。
・うるりさんの版を用いた場合、107行目がエラーになりnasmが通らない。"TEST [__BUSERR_STAT],00008000h" と出力されているところがそうで、オペレーションサイズを指定してやる必要があるので、"TEST long[__BUSERR_STAT],00008000h" と修正してnasmを通すことでオブジェクトが無事に出来る。
以上の修正で、動作を確認。今のところ色々触ってみているが問題はない。
- 1: PI. (01/28 19:35)
- 詳しい情報ありがとうございます。参考にさせて頂きます。
読んでいて少しわからないのが
・_WIN32を追加(自動で追加されるのでは?)
・VK_OEM_ほにゃらら~などが未定義(具体的には?)
・mfc.hに、#includeを追加 (何をincludeしてたらよくなったのか?)
あたりです。このあたりを解説いただければ助かります。
それとNASMのアセンブルですが、手元の0.98でもアセンブルできませんでした(笑)
Star.cが古かったようです。次回のバージョンでは差し替えておきます。 - 2: 冬星 (01/29 16:36)
- ソース公開ありがとうございます。参考になります。CPU内部の動作から表現されているのに関心しました。ハードウェアの知識が生半可じゃあ作れないですね…。
ご質問の件(+memory.cppの件など漏れ)上に加筆しました。mfc.hのinclude云々はゴミ消し忘れです。
今年もよろしくおねがいいたします。
2005年元旦