著作一覧 |
For i = 1 To Worksheets.Count With WorkSheets(i).PageSetup .LeftFooter = "foo" .CenterFooter = "&Cbar" & vbCrLf & "&Cbaz" .RightFooter = "&P/&N" End With Next
が、Macだとんがんがくらいで終るのだが(1んがで、1シート)、Winだとちょっと一服、また一服くらいかかる(500んがで1シートくらいの体感速度)。
何が何でも変だと思うのだが、もし、Win32のExcelのVBAが外部プロセスからのAutomationであればそんなものかなと納得もする。
でも、PageSetupを使ってない似たような処理(たとえばインデックスページの生成とかも同様に全シートをトラバースする)には、ここまでひどい遅延は生じない。
実は。.PageSetupの取得に時間がかかるのかなという疑いもある(たとえばいちいちプリンターとネゴシエーションしているとか。さすがにそれは無いか……)。
1巻から5巻まで。6巻は置いて無かったよ残念。
なんか、意図しているわけではないのだが(つーか買うまでどんな内容か知らなかったし)頼むから娘と父親という組み合わせは身につまされるからやめれ。
とりあえず1と2を子供に読ませたら、鉄人より難しかったと言う。えー、鉄人のほうが複雑じゃん。
なんでいきなり鉄人が出てくるのか疑問だが多分鉄人を貸したらあっという間に読み終わったんで驚いて筋を理解してるか訊いたりしたのが印象的だったんだろうか。
で良く聞くと現在と過去を行き来するので筋が追いにくいとのことだ。そんなもんかな。確かに1冊が前半の高校生ものと後半の過去ものになっているからかも。というか前半もおりおりに回想が入るし。確かに映画なら色調を変えるとかできるがこれはそこまで描けてない(し、書き分ける必要性もなさそうだし)から子供にはそんなものかな。っていうかちゃんと読んでるじゃんとも思うが。
それにしてもどこまで意図的な設定なのか思いつきなのか、ライオンのマスクの意味が5巻で明らかになるのにはびっくり。って言うかなんか3巻のSが山ほど記入された図書カードとかその前の図書館の陽の当たる窓際で本を眺めているシーンとか思わずうるうるもんですな(悪人が出てこない漫画なわけだが)。
こないだのからさわぎの第1次夜の部で対面に座った人から聞いたAOPの説明例が思い出せない。良くあるログでもなければ、EJBを知っている人間以外には微妙に通じにくいトランザクションでもない説明方法にいたく感心したんだけど、いったいどういう例を出してくれたんだっけなぁ。
えっとシステムはどんどん複雑になるもんだ。
モノフォニーからポリフォニーへそしてシンフォニーへ。
でもポリフォニーからシンフォニーへの間には逆に妙に単純化された部分もある。そのかわり音はでかくなったな。
でさらにポリフォニックなシンフォニーが出てきたり(マーラーとか)。でポリフォニックが強くなっていくと最後はウェーベルンみたくなって逆に妙に質素になったり。そんな意味ではシェーンベルクの音色旋律とかが出てくる変奏曲が1番好きだったりもしたり。
単層から多層化、そして混層化(今作ったどうでも良い言葉)だ。
ということは、現在は、大体古典主義が始まりかけてるくらいのとこかな。混層化すると親亀の背中に小亀とかマトリョーシカみたく違うといえば違うんだけど結局は同じものがうじゃうじゃある。曼陀羅とかも四角の中に四角の中に四角の中にみたいなもんで、そんな世界だ。複雑なようだけど実はとてもシンプル。スクリアビンがそんな感じだ。音色が異なるから全然別物に見えるけどウェーベルンだってそんな感じだ。結局、奏鳴曲のようなかっちりとした構造が消えて変奏曲にすべてが収斂してしまうような感じ。
原子核を中心にどうしたの上に惑星を中心にどうしたがありその上に恒星を中心にしたどうしたがありというような曼陀羅を漫画で書いたのは手塚治虫だけど。
複雑化するというのは、大抵、同じような構造が大きくなったり小さくなったりして合成されるだけのことだ。たとえば官僚組織なんてそうだな。軍隊とかも。小隊、中隊、大隊。地方自治体、国家、……(まだないね)とか。
ありえないあべこべの世界というギャグをおおひなたごう(だと思うけど違うかも)がTVブロスに書いていた。信号が赤で横断し、車が歩道を走り人間が車道を走る。国境がなくて世界は平和だ。
発散してしまった。
セイサンという語はいろんなのがあるな。生産、精算、凄惨、清算、成算、青酸、正餐、聖餐。
このうち「ケリをつける」という意味を持つのが、清算、精算、青酸(カリがつかなきゃケリはつかんか)。
って書いても届くかどうかは知らんが。
コンソールで、
SET PATH="C:\progra~1\ruby-1.8\bin";%PATH%
としてから実行してください(""の中は適宜環境に応じて変更)。っていうか、実際には空白が入っていてもPATHさえ通っていれば、ruby setup.rb configは通るけど(ASRがスタートメニューに登録するruby consoleを想定)、setupのフェーズで
C:\Home\test\rjb-0.1.7>ruby setup.rb setup ---> bin <--- bin ---> ext nmake Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. NMAKE : fatal error U1071: ターゲット 'rjb.so' の依存ツリーに循環定義があります。 Stop. 'system nmake ' failed Try 'ruby setup.rb --help' for detailed usage.
となるよ...orz
#CMD.EXEは空白入りPATHをハンドルするが、nmakeはハンドルできずに(というかできなくて当然かもというか)空白入りパス名ターゲットを解釈し間違えるようだ。
良くみたら%HOME%も空白入りのDocuments and Settingsなのか……。こっちも利いてそうだなぁ。マイドキュメントはC:\HOME\Toshi……とかにしてくれると問題なさそうなのだが。setup.rbのsystem呼び出しの部分か。
VC持ってない人を前提にASR作ってんだからrjbの最新をASRに入れりゃ済む話なのかも。
フレームワークと大上段に構えたものって、製品(完成品と言おうか)であろうとするため、どうしたって汎用性を狙うことになる(なっている)と思う。
結果として、重すぎたり、あるいは痒いところを放置されたり、うるさかったり、役に立たなかったり、かえって作業負荷が増えてしまったり、独自世界(いや、提供者とその推進者はデファクトという呪文を唱えるんだろうけど)がおいでおいでしたり、いろいろなインピーダンスミスマッチ(というようにこの言葉を使うのはミスマッチでは無いと思うが実際はどうだろう?)が発見できる。
したがって、(たとえば.NET Frameworkなんて名前はフレームワークだが、環境一式なわけだからおいておくとして)、Strutsみたいな本当に何もしてくれないフレームワークが重宝するのだ、と思う。
何もしてくれないのは、もちろん、ビジネスのドメインに対してだ。リクエストの振り分けのような全体の制御構造の提供とか、タグライブラリのような便利コンポーネントの提供とかはしてくれている。
逆に使い物にならない典型例がcommons-loggingで(どこにもフレームワークとは書いていないが、Collectionフレームワークみたいな使い方をする場合のフレームワークではあると考えるのでそう呼ぶ)、それはなぜかといえば想定している情報量が、レベル、メッセージ、スローアブルの3種類だけだからだ。って言うか、こっちの勘違いなのかも知れないが。でも少なくこっちが想定するログというのは1つのログに時刻みたいなもの以外に5から6個ぐらいの要素があるしな。org.apache.commons.logging.Logインターフェイス以外にも引数として10要素くらい取るものがあるのかな?
で、無いと仮定して続けるとこれは、J2SEのLoggerについても言えることだが、結局、不足しているものをごまかすためにはメッセージを書式化して工夫するくらいしか手が無いことになる。たとえばCSVとするとか。でもそんな文字列の書式を定義するくらいなら、独自ロギングフレームワークにしてしまったほうが得(APIの学習性、コンパイル時型チェックの可能性、メンテナンス性、サポート用ソース量、将来性=ログはプログラミング言語に依存せず、製品に依存し、製品の構築は異なるプログラミング言語でも良く、しかもログは場合によっては30年後にだって読めなければならなかったりとか)なのだ。
これは実はおもしろい。ログなんてのは非機能要件だったりするからフレームワークを使って楽ができるとかデファクトで良いでしょうとか思えるにもかかわらず(実際、w/o EJBのようにそんなことを書いている本もある)、その実、全くそうはならないからだ。非機能要件だからこそ逆に既存アーキテクチャに強く依存していたりするのだ。逆に機能要件に深くかかわりかねないWebアプリケーションフレームワークのほうが容易にフレームワークを交換可能だったりする。っていうか、僕が想定しているログと世間のログが異なる可能性もあるけど。
機能要件にかかわっているにもかかわらず、このタイプのフレームワークが交換可能なのは、開発対象に入り込まないか、あるいは入り込んでも薄い層の部分ですむからだ。それは呼び出し側だからということもできる。アプリケーションは(StrutsであればActionFormとタグライブラリを除いて。といってもタグライブラリはStrutsのフレームワークそのものとは実際には独立して利用できるからちょっと別に考えた方が良いかも知れない)呼ばれるだけ(IoCですね)なので、呼び出し側が変わってもほとんど影響がない(Actionであれば、ActionFormという引数について影響が出るけど、容易に代替可能だし、ビジネスドメインはまったく影響されない)ということだ。
で、なんでそんなことを思ったかというと、結局、『何でもかんでも1つのフレームワーク自身にしてほしいわけではなくて、便利な機能をもったコンポーネント群をインタフェース経由でマネージメントだけをしてくれるだけのフレームワーク』っていうのはその通りだなと感じたからだったりする。で、そのコンポーネント群の中にこちらのアプリケーションも含めることができればそれで良いのだ。
Loggingは、下に複数のロガー実装を許すための便利なフレームワークに見えるけど上の理由から、まったく使い物にならない。それよりは直接オレサマロガーのAPIを公開して使わせた方がよろしい。しかし、モデルにそんなものは埋め込みたくはない(もっともオレサマアプリケーションであれば全然問題にならないのは、オレサマロガーは製品全体を通して利用される以上、当然バッチ的な実行ー当然ユニットテストはこの領域となる―もサポートしているからなのだが)。ならばそういう依存性がある部分はAOPで外に追い出せば良いかも知れない。
コード―フレームワーク―物理実装
ではなく、
コード ← コードー物理実装
なのだ。
で、そういうことを考えて行くと、J2SEとか.NET Frameworkのような環境そのもののフレームワークと、Strutsのような層間インターフェイスを実装したフレームワーク以外は、オレサマのほうが結局、使い心地も良く、メンテナンス性も良いのだ(だって、汎用をはなから考えていないから機能が少なくて済み、その結果コードも少なくバグもゼロ化可能だ(すべてのパターンを網羅したテストが可能となる)。拡張も自由だし)。
#視点が一定していないし、主張が交錯している。下書き未満ということで。
好きな人がいるというのにはちょっと驚いた。
合理性から考えれば、DIコンテナアプローチのほうが優れていると思うのだが。
1.設定が一箇所。ServiceLocatorはロケータ毎に設定が分かれる。
2.実装が(基本的に)1つ。ServiceLocatorはロケータ毎に1実装。
3.DIコンテナアプローチであればユニットテスト用モックは不要(ユニットテストから設定できるので)。ServiceLocatorならばモックロケータが必要。
4.ServiceLocatorは概念が不自然。ServiceLocatorはプルモデルとなる。DIコンテナアプローチはプッシュモデルなので自然。
ServiceLocatorの優位点ってどこにあるんだろう?
嫌いっていうのは大げさだが、Win32OLEが無いっていうのは致命的だなぁ。というわけで、Win32で今日(というか昨日)は仕事した。
あと、ターミナルで~をどうやればよいのかが未だわからず。
たとえばls ~とやると、~が倍幅文字になってかつ位置が左にずれて何がなんだかわからなくなる。でも、エコーバックを無視してEnter叩くとちゃんとホームのリストが出るから~はチルダとして認識しているらしい。
でも、cp ~/xxx ~/xxx みたく2つ以上チルダが出るともうわけわからなくなってしまってさあ大変。コンソールターミナルを使わないという選択もあるのだが、なんか憎めないのでつい使ってしまうのだが。
そりゃささださんだ。
今は存在しないけど、渋谷東急文化会館裏のごちゃごちゃしたところの角にレコード屋があって、そこにホンモノのメタルボックス(フィルムのリール入れる缶を模したヤツ)が4000円ちょっとくらいで売ってた。でも、紙ジャケで買っちゃってたし同じもの2つも買うほど余裕もなかったから見送ったんだけど。次の日にも通りかかったんでのぞいたらもう無くなっていた。
そのころ買ったヴィニールなんてほとんど散逸しちゃったからCDで買い直しているわけだが、紙ジャケのやつを取って置けば良かったなんてのはほとんど無い。再発される見込みがないやつ(たとえばクロームなんてあるのかな?)を除けば結局は手に入る。こないだだってリジーメルシエデクルとか買えたわけだし(パンタのクリスタルナハトはそれにしても出てこないな)。
でも、ホンモノのメタルボックスは2度とは手に出来ないだろうと思うと失敗したかな、とは思う。とは言え、実はメタルボックスはあまり好きではなく、本当に好きなのはあのどうしようもないWYSIWYGみたいな名前のやつだったり。
わかってるよう。でも直す気はそれについては無いよ(というか気はあっても直せないし。Riteというかyarvだとネイティブスレッドに対応できんのかな。というか、どちらにしろ拡張ライブラリは書き直しになるんだろうけど)。
イベントハンドラの中でThread.critical = trueして、GCが起きないように気をつけていれば(抑制することはできないけどメモリーアロケーションが起きるような処理は本スレで実行するように工夫するとか)綱渡りはできると思うけど。
とある場所にある冷蔵庫を開けたら猛烈な異臭が。
ああ、牛乳がある。こいつか!
でも封は切ってないな……しかし4面がパンパンに膨れ上がってておっかないったらありゃしない。爆発すんじゃないだろうな? とは言うもののやっぱり常識人なら封を開けて中身を捨てるべきなんだろう。いや、そんなことしたら下水を、ひいては川を汚すことになってしまうんじゃなかろうか。海は死にますか? はい死にます。この美しい大地を殺すな。だからそのまま燃えるゴミにしてしまおう。と理屈付け。というか封を切るのは怖すぎ。
じゃ、臭いのは……なっとうだ。なっとく。これはしかし白い発泡なんちゃらだから回収箱に捨てなきゃならないらしい。おそるおそる開けてみるとカラカラに乾涸びてるんですが。しかし、においの元はこいつだな。でも臭くない。ああ、そうか。匂いを放出しきった絞りカスになってるってことか。なんか食えそうな予感。でも捨てるけど。
というわけで冷蔵庫がなっとう臭いのであった。いやですね。
キムコって変な名前だな。子供の頃はノンスメルってノンス+メルだと漠然と思っていて、キムコのほうが合理的な名前だと勝手に考えていたが(しかしその理由ってのが無いのがほほえましい)が今となってはキムコに比べて死ぬほどストレートな名前だと思う。といっても、そんなものは無いので自然に消えるのを待つことにしよう。キムコって気+無効ってこたないだろうな。キムコ。変な名前だ。口に出して読みたい商品名。その名はキムコ。
自動筆記おしまい。
複合機を買うことにした。ビックで買おうと思ったけど型落ち以外は意外と高いし、アマゾンかなぁと。
ギャンブルは1点、Macから両面印刷できるかどうかだけど。
追記:どうもギャンブルには負けたような気がするのは、○がどこにもないからだが。
以前、何か(多分スーパーがつく高田馬場のほうの出版社の雑誌とか、ろくでもないやつだろうけど)を読んでたら、多分(それにしても曖昧モコモコ)赤瀬川源平(字を調べるの面倒なんでこのままだったり)と南辛抱(仮名漢字変換しなおすのが面倒なんでこのままだったり)か村松(知らない)だかの対談があって、そんなかで、「昔取った赤柄」という言葉で全員が大爆笑してるクダリがあった。確か、よど号の柴田が捕まったころじゃなかったかな。
まあ、そういうツカもあるのを思い出したのでちょっと考えてみた。
たとえば、「赤気の至り」なんてどうだろうか? 結構好きかも。
「君、以前、三里塚のあたりをうろついていたよね?」
「ええ、赤気の至りというやつですね」
とか。
で、この赤気だがツールとしては結構今でも使えなくもない。
赤気は本質的には2つの考え方からできている。
1つは、自然は矛盾を嫌うという考え方だ。したがって、矛盾があればそれを止揚するための方法が見つかるか、あるいは矛盾と見えるものがそもそも見方自体が間違っていることが原因なので見方を変えるか、のいずれかを採用するということ。
もう1つは、ある局面を下部構造と上部構造の2つに分離して考えることだ。上部構造は目立つし矛盾が明示されるのでつい本質的な解法を上部構造から見つけ出そうと考えてしまうが、そうではなく、上部構造の原因となった下部構造に本質的な問題を見つけようとすることだ。
これはツールだから赤いか黒いかは関係ない。
たとえばあるソフトウェアを開発しなければならないとする。しかも客は正しく動作するソフトウェアだけならいざ知らず詳細設計書と呼ばれる書類も欲しがっていると仮定しよう。矛盾は次の点だ。
・プログラムの実装詳細はプログラミングによって決定する。またプログラムの設計は実装によって明らかにされる。
・客はプログラムの実装前に詳細設計書と呼ばれる書類の提出を求めている。
これは正しく矛盾している。
まず考え付く正しい解決方法は、詳細設計書と呼ばれる書類がソースコードであることを客に納得させることである。しかし、多くの場合その試みは失敗するか、あるいはそれを説得させる工数を見積もるとやめておいたほうが良さそうだという結論となってしまう。したがって、これは矛盾を止揚する方法としては正しくない。
次に考えつくのは、どこかからコピペした空疎な書類を取り合えず出すことである。しかしこれは単に問題を先送りしているに過ぎず、止揚とはいえない。
ここで、構造分析に入る必要があるのは明らかである。止揚の試みがうまくいかないのは実は上部構造を見ているのが問題なのだ。
ではこの場合の下部構造とは何か? それはソフトウェアのあり方そのものである。すなわち真の矛盾は実装設計と呼ばれるものとホンモノのプログラムが異なるという点にある。
したがって、正しい止揚は、詳細設計が実装となることである。つまりコード(直接バイナリーが吐けるのであればソフトウェアそのもの)の設計からの生成。
という点からは、MDAはまさに赤い赤い考え方だということが良くわかる。
そして、歴史が証明しているように、赤いものは結構うまくいかないもので(おそらーくキューバを例外として、と思われる反面、やっぱりキューバもという説もあるが)より古い問題としての独裁というものに転化してしまうのである。そうなると最後、みんなお腹を空かせることになってしまう。これはとってもまずい結果だ。
なんでこういうまずい結果になるかと言えば、それは構造分析が間違っているからで下部構造の規定に失敗しているからだ。
では、真の矛盾は何か?
それは、ソースコードも読めない人間が実装を知りたがることにあるのだ。読めもしないのに実装を知りたがるから自分でも読めそうな自然言語で記述された妙な書類を欲しがる点にある。
これは、製造業とは異なる。車を買う人間は一部の好事家を除き車の実装詳細なんて別に知ろうとはしない。テレビを買うとき回路図がついてきても大抵は捨ててしまう。
ところが、ものがソフトウェアになると突然、首を突っ込みたくなるのである。
これは産業としてまだ消費者が未成熟だということを意味する。
というと反論が来る。といってもシステムのお守りをするのはシステム部ですから。
おいおい、車が故障したら車屋に持っていくだろ? 保守契約というビジネスをこちらはやっているのだから、ちゃんと金を払えばいいのだよ。そうすればお守りなんてしなくてもいいんだからさ。君らはユーザーの要望を吸い上げて、期待されるシステムのありようを計画立案するのが本来のミッションなんだ。
そう、今求められているのは、システム部の自己変革であり、単なるシステムのお守りから企業の情報戦略中枢への脱皮なのだ。革命なくして止揚なし。
#思いつきでヨタを飛ばすのもたいがいにしないと苦しいな。なんでこういう結論になるんだか。
絶賛放置中。というかしなきゃならないことが見えているのにもかかわらず動かざること山の如しってのは何か良からぬ状態だな。寝るか。
シングルトーン、シングルトーン、グローバル、誰でも知ってるパタンだよーぉ、
シングルトーン、シングルトーン、スタティック、クラスローダが違ってたェィ!
(ジングルベール、ジングルベール、鈴が鳴る、の節で)
家に帰ってきたらペリカンの不在通知が入ってた。こういうのもあるんだな。
いや、本当。たとえば横広のカット割で車が近づいてくるとかが代表的な例だと思うけど映画的な手法をマンガに取り入れたとか、表現としての革新者だってのはわかっていたけど(そりゃ歴史を踏まえて読めばわかるし)、だからと言ってなんで天才って呼ばれるのかはさっぱりわからなかった。赤塚不二夫がどんどんすごくなっていくのは(天才バカボン連載中の少年マガジンをリアルタイムで読んでたから)この目で見てたけど、それに比べてどうにも僕に取っては手塚治虫っていうのは、少年チャンピオンで安定した額縁スタイルのドラマ(50年代のアメリカ映画やTVドラマ―60年代にもあったなーで、最初に「スペース、ファイナルフロンティアー……」とかのナレーションが入って最後に再び教訓めいたナレーションが入るやつ、たとえばアウターリミッツやミステリーゾーンとかスタートレックもそうだと思ったし、RKOの幾つもの映画とか幾らでもある―みたいな構成のタクシードライバーモノや役者モノ)のマンガ家という印象が強いからだ(時代が前後しているが、なんとなく旬が過ぎた感じは否めなかったのだ)。
でも、それはすべて、僕が鉄腕アトムを当たり前のものとして受け取ってしまっていたからで、そこに至るまでのロボットというものの概念を根底から変えてしまった(ので、当然、こちらはそれが当たり前のものとして受け止めていると、最初に繋がるのだが)というその1点だけで、文句なく天才だったのだ、と理解した。
というか、手塚治虫もそうだが、こんな感動的な映画はひさびさに見た。わかっちゃいるけど、ASIMOが2足歩行するって事実にあらためてオレはすごい時代に生きているんだな、と実感したのだった。
それはそれとしてハップルの世界も美しいし。ブレードランナーでルトガーハウアーが壊れる前の独白に出てくる世界なわけだし。
#ユビキタス時代のユーザーインターフェイスも受講したかったが、家族と一緒だったので残念ながらパス。通り過がった時はマウスを右に移動すると大きくなる辞書(なのかな)の実演をしているところだった。
というわけで手塚治虫とかASIMOとか見て、で、一体オレは何をしたのかなぁ? とか。
で、いろいろ自省してみたり。で、考えてみるとセコイと言えばセコクはあるが、それでもそれなりの世界(というのはエコシステムがあるということなのだが)の創造主であるという自負も感じたりもするので(忸怩たるものもあったりもするわけだが)、明日からもやって行けそうだなと思ってみたりしてみたり。
なんだっけなぁ、とgoogleで検索。
おお、Seasar2関連技術か(この書き方だと関連の方向が逆でした、と追記)、と思ったら、2番手が『OGNL技術|専門の開いた出所ソフトウェア』。なんだこれ?
で、クリック。
はい? 到底正気とは思えない『OGNL技術は自分のオープン・ソースソフトウェアの周辺に基づいた、相談する会社です』という文が目に入ってくる。なんかすごく変なんですが。
で、URLを見て納得。っていうか、Google、こんなもん2番手に乗せるなよな。
に関してOGNL、OGNL立っているため、など数々の名言は素晴らしいのだが。
#かくたにさん、ありがとう。
#さて、ELにするか(JEXLは微妙に違うから、作るってのも視野に入れて)、OGNLにするか、という選択問題かな。
を見てて思い出したけど、日本未来科学館のASIMOは、「こんなこともできるようになりました」とインタプリタというか司会者の鳴り物の後で、トコットコットコットコットコトコトコトコトーヌキアーシサシアーシシノビアーシ、というリズムで歩行実演をしてくれた。というか、シノビアーシってやはり難しそうだ。あれは、でも120cmのやつだったみたいだな。今度見に行くと走ってくれるんだろうか?
というか、〜してくれるという自発性を含意する表現を使うのも奇妙だな。
ドンボックスのデベロップメンター時代の遺産のClrScriptをいじったが、.NET Framework 1.1で随分変わった(か、1.0から変わっていたかどっちか)のか、全然コンパイルが通らない。まあ、2000年9月の日付ということはPDCバージョンの.NET Framework用だからそんなもんか。
・CodeDomが、ドンのソースではCodeDOMになっている
・StringCollectionのネームスペースが移動されている
・IBatchCompilerなんていうインターフェイスは無いぞ
・っていうか、CSharpCodeGeneratorってのも無い。でもCSharpCodeProviderってのがあるからそっちならOKなのか。
・Microsoft.JScript.JScriptCodeProviderはどこにあるんだ? (これは本当にわからない。多分、Microsoft.ECMAScriptなんじゃないかという気はするが、調べるのも面倒なんでJSはパス)
・最後のcase(というかdefault)なのに、error CS0163が出るぞ。
とか文句を垂れながら、やっと動いた。っていうか、便利。Javaだとantを使えばいいんだが、こっちのほうが洗練されてるかも(というか、ASP.NETの実装に必要だったからあるんだろうけど)。
プログラマーには面倒なだけだが、パーサーを作る必要がほとんどなく(っていうかSAXあたりを利用すれば良いわけだし)、そのまま構文木が生成できるからすごく簡単というメリットがある。
と、BPEL見てて思った。
白金の茂蔵という店で食事。古い友人と。
楽譜をいくら読んで脳内音楽を奏でさせても、それは音楽じゃない。音楽は音だ。それを敷衍させてしまっているから、ヘッドフォンはあまり好きではない。周囲から入る雑音も音楽の一部(もちろん総譜には記述されていないし、記述そのものが不可能だ)だと思うからだ。もっとも、針音を受け入れざるを得ない時代に音楽と親しんだからという環境依存の側面もあるだろうけど。
どんなにコードがあっても、それはプログラムじゃない。プログラムは実行されているときがプログラムだ。瓶棚に署名して美術館に置いたらそれは瓶棚ではなく美術品になるということは、使わなければ本来の意味を容易に失うということだ。ポルシェ美術館のポルシェは車ではなく展示物だ。本棚の中の本には知識も表現も感慨もなく、開いて読んではじめて本となる。観察者がいなけりゃ観察物にはならない。
テストファーストの1番の長所は動かすことが先にある点だ、と思うのはそういうことだ。
電車に乗ると閑だからBrewアプリケーションのゲーム空っぽの洞窟をすることにしている。どうでも良さそうな愉快な4人組が地下に延々と潜っていって赤い宝箱を開けたり青い宝箱を開けたりチョウチョを叩っ斬ったりCOBOLドを殴り殺したりしながら経験を積んで行くゲームだ。地下20階を過ぎると天丼が手に入るのでそれを使うと地上に戻れる。青い宝箱の中身だけは地上に持ち帰ることができるから、どうやら何千回も往復しながら装備を整えて最後に地下99階のラスボスをやっつけることになるらしい。
で、このゲームだが、やっているとふっと意識が遠のいて熟睡してしまうということがここ数日起きている。今日も気づくと市川でちょっとびびった(というか快速に乗ったんだからあたりまえとも言えるが)。
どうやら、すっかりゲーム脳になってしまってゲームをしているとアルファ波が出まくるようになったらしい。で、仮にゲームをしなければやはり電車を昼寝に利用するんだから、状況は何も変わっていないのだが。
イテレーたんはエロかわいい。
ネタをダウンロードしてディレクトリ付きで展開するとgaveというディレクトリが作成される。
bin\debugにはビルド済み実行ファイル(gave.exe)が入っているが、gave直下のslnやcsprojをダブルクリックしてVS.NETを起動しても良い(というか、VS.NET2003を持っていればそうすべきだと思う)。VS.NET2003で作成したので、2005ベータとか2002とかでどうなるかは知らない。
実行するとボタンが1個のウィンドウが表示される。
ボタンをクリックすると、拡張子cssのファイルを読もうとするので、読ませてやる。cssと言ってもカスケーディング(カスケードだっけ?)スタイルシートじゃない。C#スクリプトの略だ。
たとえばこんなのだ。
// cv.css Pen p = new Pen(Color.Blue); for (int x = 0; x < panel.Width; x += 20) { g.DrawLine(p, x, 0, x, panel.Height); }
すると次のように画面が変わることが確認できる。
逆に次のファイルを読ませると次のように画面が表示される。 って、この表示はバグだから、左端の行番号から6を引くこと(1行目から開始したければ5を引くこと――提示しているソースは先頭行にファイル名を示すコメントが入っているがプログラム的には存在しない行として考えること。ソースを読めば理由はわかる)。
// cve.css SolidBrush b = new SolidBrush(Color.Redx); g.FillRectangle(b, 0, 0, panel.Width, panel.Heihgt);
cv.css、cve.cssのいずれもC#で記述した単なるテキストファイルだ。標準とちょっと異なるのは、クラスやメソッドが無いこと、g(Graphicsクラスのインスタンス)およびpanel(Panelクラスのインスタンス)に対しての参照が用意されている点だ。
これは何か?
C#スクリプティングホスト?
確かに、Activeスクリプティングホストに似ているとは言える。が、.NET Frameworkではこういった処理は簡単に記述できるので、似ているのは単に表れ方だけだ。実際には大したプログラムではないのでネタのgave自体の解説は不要だろう。
ちなみにASP.NETはこれをもっときちんと設計した環境だが、技術的には同じような仕組みで実装されている(はずである)。
ブラックジャックを読むと、自分で自分を手術するシーンがあって、すごくシビレル。ここで示したプログラムは、自分が読み込んだ自分の外部にあるスクリプトによって自分を操作させるという意味で、自己手術に似た感覚が味わえる。
無事届いたhp Photosmart 2710 All-in-Oneだが、現在のところ幾つか気に食わない点がある。
まず、スキャナで文字認識は英語版のみサポートだという点。とは言ってもこれはまあ、許す。そこまで期待してなかったから。
アマゾンの評者は静かだと言っているが、そうかなぁ? でもうるさくはないからそれも良い。
印字は速いと思うので、これもOK。フォト画質どうしたとかはあまり気にしてないので、これも充分。コンパクトフラッシュなどを直接挿入して内容を確認できたりするのは便利なのでこれは良かった。
802.11bはこんなもんかな。AP側でMacアドレス縛りを入れていたのを忘れて最初とまどったし、Macアドレスが有線側と無線側で共通かどうかといったことがどこにも出てないのでちょっと困ったがこれも解決すればどうってことはない。
で、問題は、やっぱりMacから両面印刷できないじゃん。でもサポートしているはずなので現在問い合わせ中。なんとなくダイレクト接続じゃなければ未サポートというようなくだらない(しかもどこにも記述されていない)回答が来るのではないかとドキドキしているが。
それから、スキャナーやコピーに対応しているということから、しょうがないのかも知れないけど、常にスキャン用のライトが点灯しっぱなしなのは家庭で使うにはいささか問題だと思う。省エネ設定の最短が1時間というのも長過ぎる。というわけで、こまめに電源オフ地獄だったり。これはどうにかならないもんか。しかもヘッドが完全にしまわれないため、蓋を開けるたびに目がやられていくように感じる(くらい印象は悪い)。
実は、ソリッドゴールドが出たときにGoFのインタビューを(Dollとかあのあたりだろうけど)読んでいたら「日本はくそったれだ。何しろエンターテインメントが500枚しか売れなかったんだからな、くそ」(うろ覚えだけど。2000枚かも)というようなことを言っていて、えーそんなもんなのか、と思ったのであった。とは言うものの、そういやオレはギターバンドにはそれほど興味はないからな、とその時は思ったし、結局これまでまったく買わずに(そして多分聴く事も無く)過ごして来たのだった。
でも、YAMDAS現更新履歴を読んだら無性に聞きたくなってこないだ買ってしまった。ちなみにこういう場合は、きちんとそのリンクをクリックすることにしているのだ。で、どうだったかと言うと、一緒に買ったXTCのブラックシーばかり聞いていたりして、全然GoFは聞いてなかったり(そのうちiPodが鳴らすだろうとか)。結局、そんなに好みではないようだ。(で、XTCが好きかと言われるとこれがコリンムールディングの曲は好きなんだがアンディパートリッジのやつは全然好きになれなくて――プールに人形がいっぱい浮かんでいるやつとかにしたって――妙な感じなのだが)
あと買ったのがママーだ。この中のワンダーランドってのはすごく好きだ。でも先行シングルとして出したのにまったく鳴きもしなければ飛びもせずにママーの発売遅延の原因になったってことらしい。本当なんだろうか? イギリスの迷宮庭園を不思議の国のアリス(とは言えフェリーニの首飾りの少女のようにもしからしたら邪悪なのかも)がさまよっているようなプロモーションビデオも印象的だったんだけど。
ところで、この下のほうのママーだが、なんでこんなに高価なんだ? DVDじゃないよね。
たて続けに想起したことの垂れ流し。確かロジャーだと思う。
やめたやめた、どうせオーディエンスは3分しか集中できないんだから、もう大作はやめた、とか言って3分ポップの詰め合わせを作り始めたんじゃなかったかなぁ。でも、僕は、ステイショントゥステイションの20分間がすごく好きなのだった(ライブバージョンだな、確か)。
カラーになってるけど、オリジナルは白黒だったような気がするんだけど。
#3分っていうのは、番組の切れ目のCMタイムのことだ。そういや、本編よりCMって時代もあったね。CMランドの作品とか。
妻マシンのWindows XPに、All in Wonder 128 Proが乗っているんだが、こいつが録画しようとするとスケジューラが最後でクラッシュする。
で、どうにもならなくてあきらめていたんだが、今日暇なもんで(というのは、HPの例のプリンターのWindows用インストールって1時間近くかかるからだ。どうなってんだ? ちなみにWindows XPからは問題なく両面印刷できる)、Googleでいろいろ追っかけていたらALL-IN-WONDER総合スレッド その2を見つけて読んでいたら
168 名前:不明なデバイスさん :02/05/14 00:29 ID:ngUXzb89
>167
スケジューラの不正処理、週間録画のときに限って起きていた。
で、それが起きるのが日本語ヘルプを入れた後だったので、それをアンインストールすると出来るようになった。
すげーよ168。ビンゴだよ。
って言うか、ATIも42年前にわかってる問題なんだから直してくれ。(AIW128ProというよりはMMCの問題みたいだし)
両面印刷できない件だが、HPから回答があった。
最初に「ファイル」メニューの「ページ設定」でHP2710を選んでA4と設定する必要があるということだ。
以前使っていた(今も使っている)プリンタと、HP2710をインストールしたら一緒に入ったFaxと都合3台のプリンタがあるわけで、「ページ設定」だと「任意のプリンタ」がA4となっているからそのままにしておいたのだが、それがまずかったらしい。
というわけで、「ページ設定」でHP2710を設定したら、「プリント」ー「両面印刷」が無事設定可能となった。レスポンスも早いし指摘も的確、HPなかなかやるなぁ、と思った。
#っていうか(と不満が無いわけではないがそれは多分HPに対してではない)、その後、「ページ設定」を「任意」に戻すとまた両面設定できなくなるんだが、プリントするたびに「ページ設定」と「プリント」の両方をいじらなければならないってのは、なんか面倒なんだが。ちなみに、Office:macだと「プリント」ダイアログから「ページ設定」も呼び出せるので多少マシではある。
Walking, they were walking
Through the rainy days looking at all the faces
But no one ever noticed them, the quite men
――ULTRAVOX! QUIET MEN
歩いている彼等を見ているのに誰からも気付かれることがないクワイエットメン。
そんな大人に私はなりたい。
地味に働いてるわけだ。実際、地味だし。しかも長女の義務感みたいなものをなんとなく感じて。
でも、そんなこたしたいわけじゃない。
それがある日、外観ががらっと変わってそれまでのワタシじゃなくなった。
その途端、(実際には体が言うことを聞かないっていう設定だから面白くもあるわけだが)急にのびのびと、しがらみから解放されて、パンを片手に旅に出てく、足どりも軽く。
この開放感に共感できたから、僕には、これまで見た宮崎アニメの中で1番楽しめたんだと思う。
だから、呪いは呪いじゃない。だから荒地の魔女のことをこれっぽちも憎んでも恨んでもいない。むしろ共感と感謝がある。だからこそ意地の張り合いみたいなこともできるし、しおしおのぱーになった魔女と仲良く暮らせたりもする。
で、ハウルなんだが、こいつも同じ穴のムジナだ。だから自分が心臓を失おうと黒い鳥になっていこうが、実は全然気にしていない。自分のことは自分が1番良く知っているからだ。そんなもの気にする必要もない。しかし、世界が本当の自分を知ることは望んでいない。そのため防御壁として、世界がハウルと認知する金髪のハウルを築いている。そしてそれが崩されると途端に見た目があやふやになってしまう。これは世界に対しての防御壁である老婆の見てくれを手に入れていきいきとするのと対をなしている。
この連中にとっては、世界はそれが世界――自分という存在の外部にある自分と対峙する存在、というだけで戦時中なのだ。
しかし、結局二人とも世界と折り合いをつけることができる。そのままの自分を受け入れてくれる相手を見つけたからだ。だから世界と戦争をする必要もないし防御壁を作る必要もない。そこで戦争も終る。めでたしめでたし。
というオタとかニートとかの恋愛話と僕は見たんだけど。
折り合いがついてくるにしたがって、極端な老婆からどんどん腰が伸びてせいぜいおばさん程度に見てくれが変わっていくのがおもしろいね。
忘れてた。動く城が素晴らしい。っていうか、ハウルの動く城だからな、題は。
僕は小学生のころ、図工の時間に紙粘土でこんな城を作った。名称は忘れたけど升目が付いた工作用の厚紙の工作の時間にも(樹木の形をした)こんな城を作った覚えがある。家でもロウソクを使っていろんなガラクタを組み合わせてこんな城を作った。城を作らない子供なんていないんじゃないか? 海辺に行けば子供は砂で城を作っているぞ。
それがへこへこ動く。そりゃ心臓くらい呉れてやるだろう。
っていうのもこの映画が気に入ったところだ。
.... Finished in 164.096424 seconds. 1) Failure: test_verify(OpenSSL::TestX509Store) [./openssl/test_x509store.rb:163]: <true> expected but was <false>. 970 tests, 10357 assertions, 1 failures, 0 errors ~/devl/ruby-1.8.2/test$ ruby -v ruby 1.8.2 (2004-12-25) [powerpc-darwin7.7.0]
opensslがなんであるか知る気も起こさないようにしてきたけどそろそろ知るべき時が来たような気がする。
#とりあえず、Macでrjb-0.1.7のtest.rbは通るな。
言語に対して、文法表現と、それを利用して文を解釈するインタプリタを一緒に定義する
確かになんだかわからん。
ミソは終端表現と非終端表現を一緒に扱えるようにするという点なのかな。
という記事を思い出したので調査。というか、インタープリタは結構使うからだが(エンジンを借りる場合もあればでっち上げる場合もある)。
Four patterns were voted off. Factory Method (due to the confusion over what it means - the pattern is different to the more common usage of the term), Bridge, Flyweight, and Interpreter.
この議論はどういう観点からなんだろうか(ファクトリメソッドパターンは名前が悪いという理由が書かれているが)? すでに言語あるいはミドルウェアで標準的に提供されている/考慮不要化されているために、デザインパターンとしての存在意義を失ったということなのかな?
Javaでフライウェイトを利用するのは参照されているかどうかを判断できないのですごく難しいが、そういう意味なのかな?
例)たくさんのレコードの繰り返しにフライウェイトを使いたい場合
RecordObject flyweight = null; while (resultSet.next()) { // 例えばCOMであれば、 // if (flyweight == null) { // flyweight = new RecordObject(); // } // if (flyweight.refCount() > 1) { // flyweight = new RecordObject(); // しょうがないな // } // と参照カウンタが1(生成時のデフォルト)であればそのまま同じインスタンスを利用できる flyweight = new RecordObject(); // フライウェイトじゃないじゃん // Javaだとconsumerが(たとえばCollectionに入れるなどで)参照を保持したかどうかは判断できないので常に作り直しが必要となる。 // これを防ぐにはResultSetやRowSetのように同一インスタンス内に次のレコードの内容をフィルする方法を取る必要がある。 flyweight.fill(resultSet); consumer.nextRecord(flyweight); }
デザインパターンのインタープリタパターンってこんな感じになるのかな(と、出先なものでGoFに当たれないのがなんとも。というか自分のためのメモですね)。
=begin 以下のプログラムのインタープリタを仮定する。 a = 0 loop: a = a + 1 if a < 5 goto loop end puts a =end class Var def initialize(name) @name = name end def interpret(c) c[@name] end attr_reader :name end class Let def initialize(lval, rval) @lval = lval @rval = rval end def interpret(c) c[@lval.name] = @rval.interpret(c) end end class Add def initialize(lval, rval) @lval = lval #これ名前が悪いな @rval = rval end def interpret(c) @lval.interpret(c) + @rval.interpret(c) end end class Lt def initialize(lval, rval) @lval = lval #同じく悪い名前 @rval = rval end def interpret(c) @lval.interpret(c) < @rval.interpret(c) end end class Num def initialize(val) @value = val end def interpret(c) @value end end class Label def initialize(name, index) @name = name @index = index end def interpret(c) nil end attr_reader :index, :name end class If def initialize(cond, clause) @cond = cond @clause = clause end def interpret(c) if @cond.interpret(c) @clause.interpret(c) end end end class Goto def initialize(label) @label = label end def interpret(c) c.next = @label.index end end class Puts def initialize(var) @var = var end def interpret(c) puts @var.interpret(c) end end class Context def initialize() @pgm = [] @var = {} @next = 0 end def interpret() while @next < @pgm.size n = @next @next += 1 @pgm[n].interpret(self) end end def add(nd) @pgm << nd end def []=(n, v) @var[n] = v end def [](n) @var[n] end def current @pgm.size end def label(name) @pgm.each do |x| return x if Label === x and x.name == name end nil end attr_accessor :next end c = Context.new() c.add(Let.new(Var.new('a'), Num.new(0))) c.add(Label.new('loop', c.current)) c.add(Let.new(Var.new('a'), Add.new(Var.new('a'), Num.new(1)))) c.add(If.new(Lt.new(Var.new('a'), Num.new(5)), Goto.new(c.label('loop')))) c.add(Puts.new(Var.new('a'))) c.interpret
ゴードンって緯度0大作戦で硫酸の池にはまって大騒ぎした大男なのかな。
轟天号は、名前がかっこいいし、先端のドリルがいかしているからそれだけでOKと。
ラドンがニューヨークをぶっちぎるシーンは良かった。ニューヨークで怪獣っていったらああであって欲しいな。バットマンは怪獣じゃないが。というわけで、地面を走り回っていたロメールじゃなくてメトロンじゃなくてなんかロとかメとかつく監督のゴジラはgodを取られて単なるジラという名称でダウンアンダーをどさまわりの刑とされていたり。
ミニラが出てくると突然画面の色調が変わるのが妙なのだがそれもそんなものかも。
つくづくGUI操作しか受け付けない見事なまでのだめっぷりにうんざり。
share\ri\1.8の下に延々と「新規フォルダ」を作っているうちに完全にイヤになってしまった。
J2SEのsrc.zipみたいな感じでri.zipを入れておいて後は勝手によろしくにしてしまおうかなぁ(追記:してしまった。share/ri/ri-1.8.zipを展開よろ)。
愚かだと仮定しておくとそんなに困らないと予測できるってことじゃないかなぁ。
Win32/VC++でopensslを作る方法:(といってもINSTALL.W32を読めば書いてあるけど)
1.Perlを準備。http://www.activestate.com/Products/ActivePerl/?_x=1
2.ActivePerlのmsiパッケージはPATHの設定をしてくれるが、システムのほうに対してなので即時有効とはならないので、コマンドプロンプトで設定しておく。ついでにvcvars32も実行しておく。
3.OpenSSLを用意する。http://www.openssl.org/
4.展開する。(以後は展開後ディレクトリのINSTALL.W32を読めば書いてある)
5.cd 展開後ディレクトリ
6.perl Configure VC-WIN32
7.perl ms\do_ms
8.nmake -f ms\ntdll.mak
9.cd out32dll
10. ..\ms\test
でテストを通るか確認する。というのか通らなければおかしい。
11. inc32\opensslをINCLUDE環境変数に設定したディレクトリにopensslディレクトリごとコピーしておく。
12. out32dll\*.libをLIB環境変数に設定したディレクトリにコピーする。
13. out32dll\*.dllをPATHが通った位置にコピーしておく。
#ただし、0.9.7eで確認した。
でけた。geoにログインできずにあせるが、yahooと一体化したのか。っていうか、あの汚いページどうにか始末するチャンスだったような気もするが、面倒だったのでそのまま移行した。
情報隠蔽というのはプログラムの堅牢性についての概念で、カプセル化というのはプログラムの構成管理の容易さについての概念で、異なるものだ。
で、どうしてごっちゃにされることがあるんだろうか?
カプセルという言葉の印象に、殻に包まれた状態を想像させる何かがあって、それが内部を見えなくしているように感じさせるからかな。
おそらくカプセル化は非常にわかりにくいのだろう。言葉がカタカナでしか表現できていない点からあまりなじみがない概念に見えるからかも知れない。
でも日本にカプセルに相当する概念が無いということはない。
幕の内弁当なんてまさにカプセル化だ。主食とおかずと付け合せが同じ容器に入っていることで、盛り付けが規則化(=単純化)され、運搬が楽になり(重ねて複数個運ぶことができる。皿にわけたらそうはできない)、食べる側は同時にすべてが供給されることで待たされずに済み(弊害もいろいろあるが)、洗浄も局所化される。
煙草盆なんてのもカプセル化の良い例だ。喫煙に関するすべての情報が集約されている(火、灰、小物、煙管など)。
むしろ、関連するものを一箇所にまとめることが、あまりに当たり前のことなのでまさかそんな自明なことを概念として提出しているとは考えることができず、別の意味をくっつけてしまったと考えるほうが自然かも知れない。
ジェズイットを見習え |
_ WR [Validationをアスペクトにやらせるといってましたね。 非アスペクト側には、純粋なビジネスロジック、フローのみ..]
_ arton [おお、どうもありがとうございます。そうでした。 実際にはやっていないと思いました。確か、AOPの効用をそういう説明で..]