というわけで、Linuxのアイコンをぱくってちょっとオサレな外見に。これだ
でバイナリはkrm04.zipという事で
だんだんpChar型,Cでいう所のcharへのポインタの勘どころが分かってきた。
結局メモリ64kbyteスゲー!という1970年代のケチケチ星人のなごりなのね。今は「64MBしか使えないノ?」等という世界なのでこのケチケチ星人仕様はあんまし嬉しくない。
あー、これはライトウエィト言語、はやる訳だわ。結局可変長のデータを扱う場合はガベージコレクション必須という事だすね。バッファオーバーフロー攻撃もこいつに起因しているんだからもうCはやめようよ。
でもこの原始的な文字列のおかげでpascalでもなんとか扱える訳ですよ。Cバンザーイ<節操の無い奴
http://average.txt-nifty.comの方で進捗状況の画面を上げる事にしました。 とりあえず画面はこんな感じで、どーもドロップしたアイコンの書き直しが上手くいっていません。staticコントロールを使っている性カナー?
ううむ、OS2.jpへのリンクは上手い事いかなかった。じゃぁniftyに上げとこう。これだ!
ふんげあー!何故かmozilla系のCopy Link Locationが機能しねぇ!OS2WEBもクリップボードを使うとだんまりになるから多分firefoxやlibc06とかの性じゃないと思う・・・思いたい。うーん、何故なんだろう。
一応expire関連のデータを除いて大体動きます。average.txt-nifty.comの方を見て下さい
一応アイコンのConfigをやろうと色々手を出すと、クラッシュの嵐。ぎにゃー!。
どうもpChar型(Cでいうcharへのポインタっすね)が良くわからん。なんでこーなるの?というクラッシュ、挙動不審が多過ぎ。いや、メモリリークを気にしなければまったく問題ないんですけど・・・流石に確保したpChar型をReAllocしないでAllocするのはどうかという感じで・・・
大体今うんM位平気でメモリリークしてても誰もキにしないんだから、Cのポインタを文字列として使う設計はいまや貧民の発想といえよう。早急に撤廃を要求する<馬鹿
済みません、ワタシが間違ってました。pCh:='test';なんてやるとこの'test'という文字列へのポインタになるコードを出すんだ、VirtualPascalは。
ううううう。これってCでもそうなのカー?どう考えてもpChを新たに配列を確保して、そこに'test'って文字を入れるコードになると思うんだが・・・・
という訳で愚痴ってもショウがない。という事で(その他いろいろ嵌まったが)test2を上げておきます。keyring-mini test2だよーん。
大分形になりました。これだkrmini.zipをクリック(笑い)
外面はこんな感じ
いやー、さすがネットに繋げないいわゆる「殺伐とした環境」で作業すると捗りますねー。
という訳でまた一歩進化した。ファイルのロード、セーブ、別名でセーブ、項目の作成まではいけます。これだ。
実際には新規データベースを作るためのページの作成、ページ名の変更、を導入すればまぁ基本的なアプリとしてはいけるかなー、と。
後、XMLをデータベースとして使っているので禁則文字というのかな「/」や「<>」なんかがコラムに来た場合の作業をする必要があります。
大体これが出来たらどっかにソースをアップして原作者の方にテストしてほしいかな、と勝手に考えております。後、今作業しているのは元々のデータとは互換性が無いのですがまぁこれはしょうがない。その辺も含めて色々原作者のご意見をお伺いしたいと。
ムキー、PMRef.Infのご指示通りにCN_REALLOCPSZの戻り値を1にしても編集結果が反映されないじゃん。くそー。
Web上でもあんましOS/2のコンテナクラスの編集パターンは無い感じだしナァ。どうなってんだー!誰か教えてくれー!
hobbesで、それらしいアプリをハケーン。ソースも付いている。よーし、チェックチェック。といいつつもこれCなんだけど。読めるか俺に。ぐはぁ。
読んだ。えええええ、CN_ENDEDITメッセージ終了時に自分で書き込むんだ。おいおい、いくらなんでもそれくらいシステムでやるだろ、それは。
やはり64kのケチケチ星人だった頃の名残りがあるなー。その分自分でメモリ管理するからクラッシュしづらいってのはあるかもしれん。
大体XMLファイルから読み込んでnotebookのページにするのはまぁ出来ました。とはいってもこれから項目の新規追加、編集可能、セーブ可能にするという問題があって、特に項目の編集可能が難関っぽいです。まぁそれはそれとして・・・
ようやくKeyringの起動は諦めて、Infファイルを眺めてます。スクリーンショットが多数あって、大体機能を推測できます。うーん、多機能だー!多機能過ぎる!
とてもじゃないが、これを全部実装するのは時間がかかり過ぎる。とりあえず暗号化はおいておいて、ページ毎の設定はxmlを手で書き直せ、という線でとりあえずはリリースするしかねぇ。
作者の方も一応オープンにしたいという要望が先らしいし、と都合良く思う事にしてKeyringMiniと明示する事にしたいと思う今日このごろ。全機能のインプリメントは後1年位かかりそうだよ。ホントに。
やはりある程度動くものが出来てから、人(主に作者の方)と相談しつつ機能をちょっとづつ上げる事にしたいです。
で、フリーだけドフル実装じゃないよ、という気分を出すためにKeyRingMiniと名前を変えたい所です。
pascalで困る事といえばリソースファイルがpascal文法で記述できない事でしょう。
今まではリソースコンパイラどころか、DrDialogでおおまかなデザインしてからrcを書き直して・・・なーんてやっていたんですけど、とある事情から大量のビットマップ釦を書かねばならなくなりまして。
で、「こりゃ、当然別のディレクトリにビットマップやアイコンは放り込むか」と考えて実行した訳ですよ。こーゆー時DrDialog様は(書き方が良く分からない事もあって)あまり頼りにならず、「しゃーねー、手で書くカー」と考えた訳です。
いやー、誰、このリソースコンパイラ作った奴。生で書く時はディレクトリが「¥」なくせに""内に書く時は「/」なのね。
どっかにpascal文法を受付けてくれるリソースコンパイラ無いノカナー。最悪の場合自分で作らねばならない訳だが・・・・<馬鹿
ふんげぁ!今まで作ってたアプリ(例のnootbook,containerの複合の奴)、なんとWarp4じゃ上手く動作しねぇじゃん。Warp4.5だとちゃんと動くんだけどなー。という訳でとりあえずステステ。作り直し、作り直し。
すげぇ、すげえぜ!cellコントロールちゅうユニットがありまして、Cのそーすしか無いすがツールバー(脱着可能)とCell記述可能なユニットなんす。ソースの量は60kbyte位なんでこりゃーpascalで書替えるしか!なーんて思ってました。5年前に。つまり思っただけでなにもしてない訳ですな<【駄目じゃないか】
と軟弱に思っていたら、世の中広い。ちゃんとVirtualPascalに書替えた奴がいるんですよ! hobbesに登録されていました!すげぇ!
という訳でこのCellUnitを使って書替えたぜ!これだ!
このフローティングツールバーはフレームの近くにもってくと自動的にツールバーになるんすよ・・・って偉いのはこのワークフレームを書いた人なんですがね。
今度はちゃんとWarp4でもWarp4.5でも動きました。とりあえず、後はxml形式のデータファイルから項目を読みだして、ノートブックに表示して、新規、編集可能に持っていったらどっかのサーバーにソース付きでアップして、keyringの作者の方に暗号処理を組み込んでももらう作戦で行きたいっす。
皆さまの必読書、「銀河ヒッチハイクガイド」シリーズ、第3作「宇宙クリケット大戦争」の訳者後書きをみてたら第4作、第5作も引き続き刊行予定なんだとか。むきー、素晴らしい!こりゃー、買い直さないとなー。むふふふふふ
とりあえずノートブックコントロールにコンテナコントロールを表示する所までは出来た。イエーイ。Detail Viewにする事も出来た。更にイエーイ。
疑り深い人のために(いません、そんな人)証拠を見せるぜ!これだ!
まあ、あちこち文字列等に元のサンプルの名前が残っているが気にしないよーに。
しかし、問題があって・・・・、メニューが作れネェんだぁぁぁ【駄目じゃないか】
という訳で引き続き情報募集中でございます。
といっているそばから、できましたー。(画像も出来た奴で)という訳でとりあえずこれでKeyring2のスケルトンへと邁進する所存であります。
ぎょえー、ふぁーすとガンダムDVD化ですかー!発売は2006/12月とまだまだ余裕がある訳ですが、はたして購入するお金が貯められるだろうか・・・。多分6万程度になる訳ですよ。イデオンもあるし、正直どうすっかなー。ファーストガンダムは10年後でも買えるだろうがイデオンは正直やばい。
だいたい今ざっと検索かけたらブニュエルとかヴィクトル・エリセとかまったくDVDになってない。こりゃータルコフスキーですらやばいかも。はたしてBlue-RayとかHD-DVDとかの時代にそーゆーアーティスティックな作品ってどこまで生き延びられるか、ちょっとコワいっす。
とりあえずノートブックコントロールにコンテナコントロールを表示する所までは出来た。イエーイ。しかし、ちょっとした欠陥がありまして・・・・。Detail Viewにする事が出来ん。それじゃ意味ないじゃん【駄目じゃないか】
もうすこし悶絶してみます。ギニャー!
さて、keyring2用GUIの話
ここは基本に立ち返って、ダイアログにコンテナコントロールを表示させてみようじゃないノ。と考えて試行錯誤。ようやく分かったんですが、ダイアログの初期化ってWM_CREATEじゃなくてWM_INITDLGなんですね。ダイアログのWM_CREATEメッセージに初期化のルーチンを張り込んだらそりゃ意味無いですわ。という事で、また一歩野望に近づいた(笑い)ちなみにコの後でnotebookコントロールにコンテナコントロールを張り込まなくては。これでようやくスケルトンが出来る状態。うへー、先、長えなぁ【駄目じゃないか】
さて、Keyring/2である。作者の方がPDS化したいと考えているのですが、 いろいろあってソースはVirtualPascalなんだけど、 誰か改造して公開可能にしてくんねぇかという話しがos2.jpの方にあがってました。まぁVirtualPascalはそれなりに腕に覚えがあるんでやりますよー、と気軽に考えてました。が。(笑い)
keyring2は図のktaskmgrのよーに、ノートブックの中にコンテナコントロールを入れた形で、コンテナコントロールに暗号のリストが、ノートブックにはアプリやweb等の大分類を表示する形となってます。で、keyring2はGUIをVXREXXで作っているのですが、ここでいきなり躓いてます。バックエンドの暗号化ルーチンはコンパイル出来たので、後は作者の方にルーチンの使い方さえ教えてもらえば最小限の機能を再現することは出来るのですがGUIを作ることができねぇ!
という訳でnotebookコントロールの中にコンテナコントロールを入れ込むアプリのスケルトンを大至急私に教えて下さい(T_T)【駄目じゃないか】
ちなみに後1ヶ月色々呻吟して駄目だったら、素直に自分でノートブック類似のコントロールを作りますわ。<馬鹿
今は5年前のPCを中古で買って「おおー、早い、早イヨー!」と大感激なAverageですが、流石に苦しいナと思うことが大容量バックアップ。元々自分はUSBドライバ等持ってないからUSBストレージとか無いし。ううむ。とりあえずLinuxとのデュアルブートでWaprのドライバをマウントしてそっからLinuxから取得しようと構想してますが。問題はUSB1.0なんですよね、このマシン。そうなるとやっぱり母艦となるサーバが欲しいですな。コッチは玄人箱とかでも良いんでしょうけど。Appach+Wifkyで十分だよね、サーバは、等と考える今日このごろです。
とりあえず、evのキーマップ設定方法はちょっとは見通しが良くなった。内部のコードはかなり分離性が悪いので、そこらへんはどうにかする必要がありますが。
で、この後で休日、記念日設定をcalenderに導入したら後は地道にddpmのコマンドを移植すればなんとかなるかな。
その後で、encmapの半角カナ導入と。この辺が出来ればver0.8としてvectorにも公開したい。バグ取りはしっかりしないとだめですけどね、公開して後悔しないようにしなければ・・・・・今月はAverageはオヤジギャク練習月間となっております。【駄目じゃないか】
DVD全盛時代に困るのがLDやLPででたっきり再版されてないソフトを大量に保有しているワタシのよーな人間です。おそまきながらヴィデオキャプチャマシンを調達しているのですが、やっぱ入力は面倒だし、Recordable媒体だと10年以上持つのか不安にもなります。だからホントはストリームでありとあらゆるメディアが視聴できるといいのですが・・・・
これをオープンソースで環境構築出来るのでしょうか。今のところ無理そうな気がします。いや、オープンソース実装じゃないとOS/2で視聴できないじゃないんですか。Linuxは現在インストールしたら満足してそれっきり。Linuxは楽しいし、Emacsはなんか馴染みまくりなんですけど(^p,n,f,bが意外に苦にならなかった)、makeも出来ないタコいワタシはやっぱりLinuxは猫に小判状態という感じでしたわー。SKKとか結構使いやすかったんですけど。
まぁ奥様聞きまして?伝説巨神イデオンがDVD化ですって。前回のDVD化はLDがあったし、金も無かったっすが、近い将来LDが再生できなくなることを考えるとDVD買った方がいいのかな・・・まぁその前にLDをDVD録画すれば良いという説も・・・・
http://kotonoha.main.jp/2006/01/06trackback.html
http://kotonoha.main.jp/2006/01/08trackaback2.html
なんか、最近Web閲覧が楽しくないなー、等と感じていた。
Web閲覧自体が社会的にメジャーに
なって、流行物にはつい背を向けてしまう偏屈な性格の性かのう、と
思っていたのですが、上のリンクに言及される話を見て、
「あ、もうWebでの活動は、社会工学的対象なんだ、
だから自分にとって楽しくないんだ」
という事実に遅まきながら気が付いたのでした。
元々自分は自分の自意識過剰がうっとおしく、自意識を意識せずにすむ
個人の感情の入らない「数学」「物理」「プログラミング」が
好きだ、という側面があります。
自分のSFが好きで文学が嫌い、というのはそこから由来していると思う。
ライトノベルズ、2chがなんとなく好きじゃないのもそういう事だと思う。
(2chは仕組み由来じゃなくて、むしろ発言する精神構造の人間が
自分の鏡のよーで嫌、なのですが)
だから、自意識に微妙に繋がる社会的な物って自分にとっては 嫌悪感が強いんですよね。
似たような話で、Webでの一般的な社会工学的言説って凄い特異だと思う。
というのはWebで発言している人間は「基本的にヒマ」という特色があるからだ(笑い)。
一般的な社会人はまともに生活しているならWebでのコミットは仕事で忙しくて
出来ないし、そもそも通常の社会生活で充足しているのであえてWeb世界にコミットする必要がない筈。
だからWebで発言している人間自体が一般的な社会から考えると既にバイアスがかかっていると思うのでした。
という訳で(どういう訳だ)euc,shift-jis,jis,utf-8の相互変換はそれなりに出来るようになったが、xmlライブラリってpascalっぽいファイルリードはしてませんな。当たり前ですが。元々のCのDOMライブラリの移植だもんね。で、当然ながら自分の作った変換ライブラリはあんましそういう事を想定してないんす。うーむ、どうすっかなー。それとキー変換のフレームワークを作り込んでevに入れ込む、なんて言ってけれど、これまた結構大変そう。うーむ。また悩める訳で、いいかげんなんとかせんと。これで一年近くうーん、うーん、と唸っている事に。いや、ほんとにenbug.tdiary.netのおくじさんじゃないが、悩む前にインプリメントせよ!って感じですね。【駄目じゃないか】
という訳で(どういう訳だ)encmapライブラリをアップ。これでpascalでutf8,euc,jisとshift-jisの相互変換が可能になるライブラリです・・・・
こんなもの、誰が使うんだなんて言わないのは君と僕との約束だぞ!
結局、半角カナについては、後回しにする。とりあえずUTF8とSJISの相互変換が可能かどうか考える方が先、という結論。これを今週中に済ます。後はevのアプリ個別のキーアサイン設定方法を洗練させる。これが来週中。大体これで0.7.4として出すか。後は休日のルールがどっかにあればいいんだけどなー。
で、問題のUTFのテーブルの作り方だが、末尾の8byteは有効数が常に6bitなんだから、
UTFtoSJis:array[0..1023] of array[0..63] of string[2];
という感じの定義にすれば問題ナイジャン。で、末尾を$7Fとandをとってやれば。あとは上位バイトはかなり楽になるはず。いいじゃん、いいじゃん。こんな感じになるわけよね。
UTFtoSJis[上位10bit,下位6bit]みたいに。まぁビットシフトした方がンパイラが余計な事考えないからいいのかもしんないけど。
ところでm17nとシッタカ君になって書いたが、あってんのかいな?とおもってググってみたら合っている雰囲気すな。という余談はともかく
unicodeとshift-jisの変換コード、と考えて気が付いた。これどう考えてもShift-jisとUTF8のテーブル考えればいいだけじゃん。大体あるよ、shift-jis とutf8のテーブルって。という訳でSJISからUTF8へは問題なさげ、と思ったら入手したテーブル、半角カナがねぇ! シカトって訳にはいかないだろうなー。やっぱり。ここまで来たら。どうやって導出するかというと、やっぱ半角カナをmozilla-Seamonkeyのhtmlエディタで変換するしか!(爆笑)
問題はUTF8からShift-JISへの変換なんだよなー。UTF8の日本語コードって凄いばらけているから、3byteのテーブルを取るのはいくら何でも意味ナッシング。
・・・・バイナリツリー?正直枯れたバイナリツリーのライブラリってpascalのであるの?
・・まぁ配列が固定だから、単純に添字でソートされていれば二分木ソートの処理をするのは難しくない・・・・かな。アルゴリズム事典(pascal版)でも見てみよう
学生の頃のプログラム演習ってこんな感じなんでしょうか。かなり悶絶して参りました。【駄目じゃないか】
いろいろ考えたがm17nは自分にとっては意味がないし、表示用に保持する内部コードはshift-jis以外に有り得ないからshift-jisへの相互変換が可能なjis,euc,utf8の相互変換アルゴリズムを探せばいいのだ、と気が付いた訳ですよ。
一応Shift-jisとjis,euc-jisへの変換ルーチンは分かったし動作してます。
Unicodeとshift-jisとの変換テーブルも発見。問題はunicode と utf8の変換がよく分からない。いやいや単純にbitシフトすればいいんだけど、これの平易な表現がなんかないんですよね。大概の現代的処理系はiconvライブラリを持ってるんでアルゴリズムを記述する必要が無いらしい。えー、そんなぁ
そういえばマイコン時代はみんなコンパイラの基礎くらいは齧ってたとおもうけど、ワープロ時代になったらそういうのなくなりましたね。これが時代の進歩なら、そんな進歩はいやだ・・・・・けど、これを否定したら「OSから作れや」という事になりますからなぁ。ううむ。
さて、正月そうそう、突然突然utf8とjisコードの変換アルゴリズムを知りたくなりました。本質的にはテーブルしか有り得ないのですが、みんなiCONVライブラリを使うんでアルゴリズムはソース見てもわからんのよね。こういう時苦しいよな、Cの基礎教養のないパスカリャーは。
当然の事ながらiconvのos/2パッケージにはdllも入っているので 理論的には問題なくpascalでも使えるはず。問題はdllに渡すパラメータだけだが・・・
そういえばdllのロードコードってどうやって書くんだっけ?もう記憶がおぼろ。 自分用にメモを作るべきだな。というかそういうページはあるけれども【駄目じゃないか】
なんにせよ、Windowsで試行していた時には上手くいかなかったが、ちゃんとOS/2で実行したら使えたんで、iconvいじりを少しはやる気になりました。メモリ管理の問題があるから上手くいくかどうか微妙なんですけどね。sofiyaさんのWater用dllをインポートしようとした時には失敗したしなー。理由は未だによく分からないんですけどね。
という訳で、いろいろ考えましたが、utf8の一番手っとり早い方法は畠山さんのiconv.exeを起動させること。ま、ファイル名の扱いとか、少々トリッキーですが、一番簡単、しかもデバッグしやすい。第二段としてはiconv.dllを使う事。これはメモリ管理の方法とかがC系列と違うので(ヒープの積む方向が逆)個人的にはやりたくない。最後の手段としてiconvのソースを読んでpascalに書替える事・・・・・・・turboCからturboPascalに変更するツールとか、あるんでこれで解読するか。いや、ビット演算は難しいですよ。Cの素人なんで。