goo

DOM廃止

プログラミング言語比較のページでは、表に各プログラミング言語のキーワードを並べている。ただ、言語が多くなると横に長くなってブラウザーからはみ出して見づらくなる為、指定した言語(列)だけ表示する機能を入れていた。

しかしそれを実現するのにMicrosoftのXML DOMを使い、表のデータをXMLファイルから読み込んで特定の列だけ抽出するようにしていた為、IE(のバージョン5以降)でしか使えなかった。
自分がIEしか使ってなかった頃はそれで良かったのだが(爆)、最近ではIEを使っていないので、何とかしたいと思っていた。

で、素直にJavaScriptを使ってタグの表示・非表示を切り替えるように修正した。
XMLファイルやXSLファイルが不要になったのでファイル数が減ったw

XMLファイルを使っていた頃は htmlファイルを読み込んでXMLファイルを生成するプログラムを用意していたのだが、これは結構やっつけ仕事プログラムで(苦笑)、このファイル限定のタグ解析をしていた。
今回もテーブルの各セルにidを付けるプログラムを作ったが、これは自作のHTMLパーサーを使ったから、まだましかなー。(このパーサーは、今回の様に属性値を変えたり追加したりする為に作ったので)
ただ、久しぶりにこのパーサーを使ってみたら、メソッドが不便だったんでちょっと追加してしまった。最低限しかAPIを用意していないJDK1.5から便利メソッドが追加されたJDK1.6になったような気分w

コメント ( 0 ) | Trackback ( 0 )

MTアンセーフの状態

文字列のページから文字の部分を分離して新しいページを作った。
と言っても、移したのは改行コードに関する部分くらいか^^;

あとマルチスレッドについて思った事をちょっと追記。

C言語だと関数の呼び出し形態は1つしかないので、MT非セーフの関数の場合、「排他すれば安全」と「排他してもダメ」の2種類になるように思う。

オブジェクト指向というかクラスをインスタンス化して使う言語の場合、インスタンスメソッドがMT非セーフだったら、同一インスタンスだと複数スレッドから呼べない(安全でない)。
排他の有無によって安全になるかどうか…というのはC言語の場合と同じだけれども、もう一つ、「それぞれのスレッド毎にインスタンスを作れば排他しなくても使える」という可能性がある。(staticなフィールドを使ってデータを保持していたりしたら安全とは言えないので、スレッド毎にインスタンス化したからと言って必ず安全とは限らない)

「MT非セーフな関数・メソッドに対し、どう呼んだら安全となるか」という分類については、専門用語がありそうな気もするけど、聞いたことないなぁ…。

コメント ( 0 ) | Trackback ( 0 )

XML用語

XMLの記号を記号比較に追加。

XML(SGML?)の記号の文法上の名称はけっこうきっちり決まっているっぽいので分かり易い。

  • <? 〜 ?> … 処理命令
  • <! 〜 > … マーク宣言
  • <![ 〜 ]> … マーク区間宣言
  • [ 〜 ] … 宣言部分集合
  • <!-- 〜 --> … 注釈宣言

<?xml 〜 ?>というXML宣言は、処理命令を利用したものらしい。

CDATAセクションはマーク区間宣言と宣言部分集合の合成のような気がするが、その終端を表す記号]]>はマーク区間宣言の終了とはちょっと違って独特(]と]>が不可分)なように思える。

注釈は、途中で「--」が現れるとエラーになるらしい。だから「<!----」とか「---->」は不可なんだそうだ。そんなコメントは試そうとも思わなかったけど(苦笑)

コメント ( 0 ) | Trackback ( 0 )

接尾辞@

VBで変数名の後ろに付けるサフィックス(接尾辞)に@があると知ったので、メモに追加。
ついでに#の使い道として日付定数が抜けていたので、追加。

型宣言文字の%!#$はMSX-BASICの時代からあったので知ってたし、&はVBで文字列結合に使おうとして変数の直後に(空白抜きで)くっつけるとエラーになるから知ってたんだけど、@は知らなかったなー。

ついでに変数の直後に付けるだけでなく、数値の直後に付けて型を明示できるのは知らなかった(というか#は使ってたような気がするので、すっかり忘れていた と言うべきか)。
さすがに$は無理だったけど^^;

コメント ( 0 ) | Trackback ( 0 )

Javaでパス名/ファイル名要素取得

プログラム言語比較のファイル操作に、Javaでパス名からディレクトリ名・ファイル名を取得するメソッドを追加。

…なんで今まで書いてなかったんだろうなぁ。やっぱり拡張子を取得するメソッドとかが分からなかったからかな? Javaにそんなメソッドが無いのは、JavaはUNIXでも使う都合上、拡張子という概念には触れないようにしてるからなんだろうな〜。(当然ドライブ名も無いし)

コメント ( 1 ) | Trackback ( 0 )

外部プログラムの実行

各プログラム内から、外部のプログラム(実行ファイル)を実行する方法をメモ。

…googleで「C言語 execl」で検索すると、Excelが出てくる…。

コメント ( 0 ) | Trackback ( 1 )

ウィンドウサイズの取得設定

ウィンドウサイズを取得・設定する方法をメモ。

JavaScriptではウィンドウサイズの変更はresizeTo()で出来るくせに、どうして取得方法には統一されたやり方が無いんだ…。
IEならdocument.body.clientWidth・clientHeight、Netscapeならwindow.innerWidth・innerHeight、outerWidth・outerHeightらしい。

コメント ( 0 ) | Trackback ( 0 )

フォーカス移動

フォーム上の部品(コントロール)のフォーカスを移動させる関数についてメモ。
Javaのメソッド名は、英語力の貧弱な自分には想像もつかない名前になってるな(苦笑)

ついでに、JavaScriptをHTMLの隣に移した。
他のページだとJavaの隣にしてたんだけど、さすがにHTMLの操作に関するものだからなー。

コメント ( 0 ) | Trackback ( 0 )

配列か否か判断

オブジェクトが配列かどうかを判断する関数は、見た範囲ではどの言語もisArrayだな〜。
コメント ( 0 ) | Trackback ( 0 )

ファイル属性を知る

主にファイルの属性を取得する方法について追記。

ついでにVBAのファイル関連ダイアログについても追加。

ついでにVBAの「:=」は省略された引数について値を設定する為のものだと思い込んでいたけれど、実際はどの引数にでも使える。
そして、VBAで引数のデフォルト値を設定する方法なんか完璧忘れ去ってた…Optionalを付けるんだった、これはメモしとかなきゃ、と思ったら既に書いていた(恥)
久しぶりに見返してみると、すっかり忘れ去ってたことが結構ある(爆)

コメント ( 0 ) | Trackback ( 0 )
« 前ページ