2009年9月28日月曜日

Yawdba開発談(4)

今日は、Yawdba開発に関するお話をします。現在、全体を大きく5つのクラスに分割し、それぞれのクラスについて設計を開始しました。詳しくは、http://sites.google.com/site/mydbtool/shisutemu-kousei-1を見てください。このシステム構成と同じ節には、それぞれのクラスについて、順に説明を加えていますので、合わせてご覧ください。コメントあれば、お送りください。

ルールを処理するクラスでは、ロジックを記述するためにルールの構文を決める必要があるのですが、頭で考えているルールでは、ユーザが値を入力したり、OKボタンを押したタイミングで、その値が適切か判断しようと思っています。
そのためには、JavaScriptを用いてインプリメントしようと思っています。
このブログでも、JavaScriptで設計の中で分かったことなどを書きたいと思います。
よろしくお願いします。

2009年9月26日土曜日

ASP.NETでボタンなどのオブジェクト位置が指定できなくなりました。

ASP.NETを使ってWebデータベースのシステムを構築しました。このブログの「ASP.NETでWebシステムを開発してみました」をご覧ください。

このWebシステムの開発中に、突如、配置されたオブジェクトが左上に寄ってしまい、位置付けができなくなってしまいました。

調べたところ、何らかの操作でASP.NETでのオブジェクト位置づけに関する動作モードが変わってしまったようです。下の図のように、ASP.NETのメニューの中から[レイアウト]→[位置]→[自動配置オプション]を開き、[ツールボックス、貼り付け、ドラッグ アンド ドロップを使用して追加されたコントロールの配置を次の通り変更する]のチェックボックスをオンにして、その下のメニューで[絶対位置]を指定することでデフォルトのモードを変更することが可能になりました。


こららの指定は、スタイルシート(CSS)に展開されているので、実際のオブジェクト配置がどうなるかは、スタイルシートについて熟知する必要があるようです。

この他の方法としては、ツールボックスのHTMLオブジェクトの中にあるDIVを使う方法があるかと思います。DIVオブジェクトをWeb画面上に配置したのち、DIVオブジェクトのプロパティを開き、Styleを選ぶと、プロパティの右端にボタンが表示されます。このボタンをクリックすると、このDIVオブジェクトの位置を指定することができます。DIVオブジェクトが配置できれば、その中に通常のTextBoxやListBoxなどのオブジェクトを入れて位置あわせが可能です。さらに、HTMLでは、DIVタグ中に別のDIVタグを書くことも可能ですので、同じような指定をASP.NETで定義して、より複雑な位置指定も可能になるかもしれません。アイディアなどあれば、お教えいただけると助かります。

わたしも、ASP.NETの基本的な部分で十分、把握していませんでした。勉強が必要ですね。

2009年9月25日金曜日

米国Sunへの出張

20年くらい前に、SunViewの日本語化(JLE)プロジェクトのお手伝いで米国Sunへ出張に行ったことがあります。私たちは、Sun社より前からSunView日本語化を行っていましたので、米国Sunでの日本語化に関する技術支援で出張しました。右の写真は、お世話になった米国Sunインターコム部門(インターコンチネンタルの略)のビルです。私たちは、あくまでSunでのプロジェクトのお手伝いでしたので、毎日、食事のお誘いなどを受けて、歓待して頂きました。

開発では、米国Sunと日本Sunが共同で行っていましたが、プロジェクトが遅れていたので、日本Sunのメンバーが徹夜で仕事していたことに、米国Sunのメンバーが大変驚いていたことを覚えています。また、11月の感謝祭を過ぎると、ウィンターバケーションで1カ月程度休み人がいることも驚きました。アメリカ人はあまりにも仕事をしないのか、日本人はあまりにも働き過ぎなのかどちらでしょうか?

この出張でもう一つ、気が付いたことがあります。それは、当時、カルフォルニア州では、ほとんどの人がタバコを吸っておらず、人の居るところでタバコを吸わないようになっていたことです。食事をしても、タバコの吸いたい人は、食後に外でタバコを吸っていました。日本人のオジサンだけは、タバコを吸いたがるので、Sunでのタバコの吸いたい日本人のオジサンたちは、バルコニーでタバコを吸おうとして、外に出てロックアウトされてしまったと聞きました。
今の日本以上にタバコを吸わない環境になっており、ビアホールでも、煙がなくて遠くまで良く見えました。

2009年9月22日火曜日

「アキレスと亀」のパラドックスについて

「アキレスと亀」と言うと北野たけしの映画のようですが、「アキレスと亀」のパラドックスとは、ギリシャの哲学者であるゼノンが考えたパラドックスです。

あるところにアキレスと亀がいて、二人は徒競走をすることとなりました。しかしアキレスの方が足が速いのは明らかなので亀がハンデをもらって、いくらか進んだ地点(地点 A とする)からスタートすることとになりました。

スタート後、アキレスが地点 A に達した時には亀はアキレスがそこに達するまでの時間分先に進んでいます。(地点 B)。アキレスが今度は地点 B に達したときには亀はまたその時間分先へ進みます。(地点 C)。同様にアキレスが地点 C の時には亀はさらにその先にいることになります。この考えはいくらでも続けることができ、結果、いつまでたってもアキレスは亀に追いつけないことになるというのがゼノンのパラドックスです。

即ち、アキレスは永久に亀に追いつけないことになります。

でも実際には、アキレスは、亀に追いつくことは可能です。それでは、どうしてこのような結論になるのでしょうか?。これをグラフに描くと良く分かります。下の図は、横軸がアキレスが居た地点を原点とた距離を示しています。また、縦軸が時間となります。赤がアキレス、青が亀を示しています。

ゼノンが指摘したアキレスが追いつくまでに亀も先に行くという距離は、追いつくまでの時間に近づくにつれて、0に近づき、収束した時間で追いつくくとになります。ゼノンが行っていることは、追いつくまでの時間を無限回に分割して見せてるだけであり、無限回の操作であっても、時間が無限でないことを示しています。

これら無限回の操作を足した時間が追いつく時間となります。各ステージの時間を計算して、各項をΣを使って足し算することになりますが、このときの各項は、無限等比級数であることが分かります。このため、Σの時間も一定の時間が計算され、これが追いつく時間となります。

例えば、アキレスの速度が毎秒αm、亀の速度が毎秒β、最初に亀がアキレスからγは離れていたとします。

アキレスが亀が居た地点Aまでにかかる時間は、γ/αとなります。

次に、A地点からB地点までの時間は、 アキレスからA地点に付くまでに亀の歩いた距離をアキレスが歩く時間ですから、(γ/α×β) /αとなります。

次にB地点からA地点までの時間は、アキレスがA地点からB地点までに付くまでに亀が歩いた距離をアキレスが歩く時間ですから((γ/α×β) /α)×β/αとなります。

以降は、その直前の移動秒数にβ/αを掛けた値が、移動時間となります。

これらの時間を足し合わせたのが、アキレスが亀に追いつく時間Sですから

S =  γ/α +  (γ/α×β) /α  +  ((γ/α×β) /α)×β/α +  .....
  =  γ/α + γ/α×(β/α)  +  γ/α×(β/α)2  +  γ/α×(β/α)3  +  .....

となります。これは、高校の数学で習った無限等比級数列となります。

この両辺に(β/α)を掛け合わせます。

(β/α)×S = γ/α×(β/α)  + γ/α×(β/α)2 + γ/α×(β/α)3 +    .....

となります。0<(β/α)<1でnが無限の場合、(β/α)n=0であるので

上の式は、次のように変形することができます。

(β/α)×S = - γ/α + γ/α + γ/α×(β/α)  +  γ/α×(β/α)2 +   .....
               =  -γ/α  +  S

となります。

したがって、S - (β/α)×S  = γ/αとなります。

この式は次のように変形され、

        (1-(β/α))×S =((α-β)/α)×S = γ/α

S = γ / (α-β)

となり、これが、アキレスが亀に追いつく時間となります。

★ これを通常の算数を使って解くことにしてみましょう。アキレスが亀に追いつく時間とT秒とします。アキレスが追いかけ始めた原点を基点にすると、アキレスが歩いた距離は、αTmとなります。亀が歩いた距離は、βTmとなりますが、亀が先行して進んでいた距離γmを足すと、アキレスの歩いた距離となります。すなわち、

       αT = βT + γ

         T =  γ / (α-β)

となり、無限等比級数による解と合致します。

Yawdba開発談(3)

現在、Yawdbaの基本設計を行っておりますが、モジュールとなるクラスの設計を行いました。詳しくは、Yawdbaサイトのモジュール構成を見ていただけると幸いです。

モジュール構成の章には、基本となるクラス(Tableクラス、RuleTableクラス、RuleSyntaxクラス、WebPageクラス、WebPartsクラス)の説明に関する章がありますが、これは、今後、加筆する予定です。もう暫くお待ちください。

設計にあたっては、こららのクラスが、今後、別のツールとしても利用できるよう中核部分は、利用環境が変わってもそのまま利用できるように設計したつもりです。
こうしたら良いなどのご意見がありましたら、コメント頂けると助かります。

私の大学受験

今日は、私が大学で物理学科を選んだ訳をお話しましょう。
大学受験の時には、漠然と原子力発電の仕事がしたいと思った事から理学部の物理学科を選びました。あと、大学の中でも物理学科が結構難しかったので、人より上に行きたいと思ったことも一因かも知れません。なお、当時の大学受験では、学科の希望を第一志望、第二志望などと書くことができたので、ダメもとで物理学科を第一志望、電子工学部を第二志望としました。
しかし、大学に入ってみると、入学した大学が私立大学だった(私立大学はお金がない?)ことから、結構有名な大学でしたが、原子力発電の研究はありませんでした。因みに当時、私立大学で原子炉を持っているのは、立教大学だけだと聞いたことがあります。

大学の選択では、大学の名前だけで入学しても、良い就職ができるとは限りません。やりたいことが明確であれば、有名大学でなくても、学会で有名な教授の研究室に入ることが就職に一番役立つと思います。コンピューターの学会でも有名大学でなくても有名な教授がいます。このような教授の研究室にいると就職でもいろいろサポートして頂けると思うので、非常に有利だと思います。

私が居た理論物理研究室は、就職が難しくオーバードクター(博士課程が終わっても就職できない人)が沢山おり、就職を考えてプログラマーの会社に学士で入社しました。しかし、物理学科を選んだことに後悔していません。世の中のいろいろな物理学者の英知について知ることができたこと、また、量子力学の面白さが分かったことなどの他、コンピュータ科学を含むいろいろなことを物理学的な視点で考えることができることが良かったと思います。回り道であっても、いろいろなことを知ることは大切であると思います。

これから受験の方もいると思いますが、大学受験の学部・学科の選択も就職では、大きなファクターとなりますので、十分考えて受験してください。

2009年9月20日日曜日

HTMLのtableでセル幅を指定しても効かない?

HTMLのtableタグで、セル幅を指定しても正常に動作しない現象が発生します。
これは、セル幅の動作が不正であるのではなく、セル幅近辺で表示されている文字の種類によって、セル内での文字列の自動改行がされないため、セル幅を変わってしまうのが原因です。

このような場合、どんな文字の種類でも、セル幅に達した時などの条件で、自動的に改行して良いとするようにするタグや特殊文字を入れると解決できます。

IEであれば、<wbr>タグを各文字の間に入れれば、自動的に改行することができます。
例えば a<wbr>b<wbr>c<wbr>1<wbr>2<wbr>3<wbr><wbr><wbr>
などとします。

上記以外のブラウザの場合には、セル幅に達した時などの条件で、自動的に改行して、改行位置にハイフン(-)を表示しするための特殊文字(&shy;)を指定します。
例えば a&shy;b&shy;c&shy;1&shy;2&shy;3&shy;&shy;&shy;
などとします。
全世界的なHTMLの標準規格では&shy;特殊文字が採用されており、<wbr>タグは少数派のようです。

そのほかの方法としてCSSを使っても対応可能なようです。確認できたら、紹介します