yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/01 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
カテゴリ表示
 カテゴリ お知らせ に当てはまるもののみを表示します。

 存在する記事 11 件の中から 6-10 件を表示しています。
最終ブログ 2005
2005/12/30(Fri)05:42:09
 今日がブログ納めです。今年はご愛顧ありがとうございました。とりあえず三日坊主にならなくて良かったです。来年もよろしくお願いします。
 となると、これが技術者集会前の最後のブログですか。段取りも書いておかなければ。一応「12月31日の夜から1月1日までのチャット企画」ということで、31日の夜ごろにホームページにリンクを作ります。参加される際は、そちらからアクセスしてください。この「夜ごろ」が何時かは不明ですが、早ければ夕方になりますし、遅くても21時ごろまでには作ります。
 一応参加表明は受け付けていましたが、飛び入り参加も大歓迎ですので、参加したい方は遠慮なく飛び入ってみてください。ただ、早い段階では人が集まっていない場合がありますので、人が集まるまで最新版Tactical Revolutionで遊んでいただいたり、コンテンツの新作発表会、ということになるかもしれません。
 チャットは私のPCを貸し切りサーバーにして行いますので、速度の面ではそこらのレンタルやページスペースのCGIより相当快適でしょう。年越しチャットが他のサイトでも企画されていれば、どのサーバーも重くなってしまいますが、技術者集会ではそういうことはありません。他のチャット企画に参加してはみたが、重くてやっていられない、という方は、技術者集会に集団移民するのも良いでしょう。皆様お誘い合わせの上どうぞ。
 さて、ブログもサーラさんが格好良い2006年バージョンです。ごちゃごちゃになっていたCSS構造も整理し、バグをいくらか修正し、コメントやトラックバックの表示を見やすくしてみました。この色づかいならサーラさんも映えます。新機能としては、

・コメントのみをすべて表示する「コメントリスト」機能の実装(サイドメニュー「Comment List」より使用可能。Recent Comments欄にコメントが存在する場合には、「more comments...」リンクが表示されるため、そちらからも移動可能)
・トラックバックをすべて表示する「トラックバック」機能の実装(同「Trackback List」。トラックバックが存在していれば、同じく「more trackbacks...」リンクが表示されるため、そちらからも移動可能)
・おすすめブログ及び資料へのリンクを表示できるようにした
・Recent Comment及びTrackbackのフォーマットを見やすく改良
・記事へのコメント及びトラックバックを見やすく改良
・コードの見直しと調整。一部ループ処理を簡素化
・今まで「次」と「前」しかなかったページ移動に、数字による移動インターフェイスを導入。ブログ内共通インターフェイスなので、通常の記事表示、記事リスト表示、コメントリスト、トラックバックリストのどれでも使用できます
・デザインを詳細に変更できるように改良。これで色調を変更し、ブルーベースの落ち着いたデザインに。操作性も改良(前のデザインとどちらが良いかは技術者集会でお聞きする可能性があります。一応前のデザインのカラー設定も手元に残しています)

 メジャーバージョンアップといえるほど色々調整しましたので、機能性やインターフェイスは以前よりもかなり洗練されているでしょう。ご活用ください。トラックバックやRSSなどのおなじみの機能も引き続き有効です。

・本年の戦果
開発魔法(245)
社会問題(235)
魔道士イリアス(200)
ゲーム開発(165)
合計 259件(ブログ導入の2/28からの日数 : 307日 / 本日分含む)
本日分除き 1,929,846 Byte / 2バイト1文字として 作文用紙2,413枚分

 画像ならともかく、テキストとしては結構な量になっています。データにはタグ修飾や改行コードも含みますから、文字だけで見ればいくらか少ないですが、100バイトに1回改行すると仮定すれば、これだけで2万行ほどあるわけですか。来年はせめて半分程度にしたいです。読むのもやたら疲れるとのことですから。

 さて、今年も色々あったものですが、ブログを片手に社会事象を振り返ってみましょう。
 3月初頭、「南セントレア市」の合併がご破算となる。「南遷都麗空」なるゾクまがいの名前もあって、とんだお笑い種でした。そういえば「南アルプス中学校はヤダ」(南アルプス中学校 -> アル中)ということで、名前が変わった中学校もありましたか。
 そしてニッポン放送・ライブドア問題。既得権益とぬるま湯にまみれた報道連中と、性根の腐りきった金の亡者が醜いケンカを始めた問題です。私はライブドアを批判しつつ、現在の日本にジャーナリズムはないと提言しました。しかし、騒ぎが終わった今になっても、どちらの体質も全く変わっていません。腐ったままなのです。結局、ライブドアがリーマン・ブラザーズに良いように操られていただけでした。
 その次、キルギス政変です。あのチューリップ革命魔道士です(分かりやすい覚え方)。国際的には非常に大きなニュースなのですが、いまや関心はイマイチです。かなり重要なはずなのですが。国際問題としては、ヨハネ・パウロ2世が死去してベネディクト16世が即位しました。私と来たら、どうして法王の名前まで覚えているのでしょう。
 反日で中国が荒れた次は、イタリアの特殊部隊員が米軍に射殺された事件。イタリアでも毅然たる態度が取れるのに、どうして日本は毅然とした態度が取れないのでしょうか。中国に対しても、米国に対しても、日米同盟があろうがなかろうが、人をひき逃げしたり強姦した奴を無罪で済ませるというのは別問題というものでしょう。
 くだらない「昭和の日」議論に続き、尼崎脱線事故。ボウリングを批判したり、「社長を出せ!」と叫んでみたり、マスコミの暴挙が目立ちました。私はそれをきっちり記事に残しています。報道といえば、プロジェクトXで美談のねつ造があったことも明らかに。子どもに見せたい番組でないことだけは明らかです。
 その次は郵政熱が盛り上がり、そんな中で共謀罪。東証が笑えないヘマをやらかした後、郵政解散が行われました。日赤の偽装献血が明らかとなったり、カトリーナが甚大な被害をもたらしたり。私が危惧した「低IQ層」問題は、全く危惧した通りに運んでしまいました。そしてNHKの振り込め詐欺プラン。実に愚かです。
 お次は天皇家の結婚で国庫から1億5000万円が横領されることが決まり(しかも非課税)、頭の悪い文部科学省が「ゼロトレランス教育」を言い出しました。小学校からやり直してはいかがですか、あなた方。その後、頭の悪い人間が「中国が沖縄侵略」などというニセ記事を作り、マスコミにネット批判の材料を与えてしまいました。
 タミフルをめぐる騒動も発生。米ソニーBMGがウィルス入り音楽CDを発売しましたが、タミフルがこれに効いて欲しいほどです。そして、広島女児殺害事件とメディアスクラム。そして姉歯建築士。既定路線の米国牛輸入も決まりましたが、レストラン経営者は「輸入再開はありがたい。でも自分たちでは食べない」と言っています。危険極まりないのです。
 栃木の女児殺害、塾殺人。殺伐とした世の中でしたが、最後にようやく被害者に朗報、「匿名発表の原則化」が決まりました。今年の漢字は「愛」でした。

 開発では、何と言っても格好良すぎるサーラさんのフェイスをいただいたのが本年最上のできごとです。BLOB格納Servletの実験などにも使わせていただきました。透明部分がはっきりしていて分かりやすいので、大抵の場合はフェイスの方を使っていますが、個人的見解としては絵(Tactical Revolutionタイトル画面のサーラさん)の方がお気に入りです。特に表情が。
 いつの間にか超巨大プロジェクト化していたTactical Revolution。言うまでもなくクラスは100個以上、とんでもないことになっています。ここでもサーラさんは強い強い言われていました。そして主役の魔道士イリアス。そもそもこの人は、相手が誰であろうと流し目で動きを止めてしまえる絶世の美人のはずなのに、どうもその点では影が薄いような。
 サーラさんはもう「yamicha.com Developer Soul」(当サイトの開発企画)のロゴですから。Apacheは羽飾りのマーク、Apache Tomcatはネコのロゴ、MySQLはイルカのSakila君、そしてDeveloper Soulは騎士サーラです。

 先日はTomcatのカスタマイズのためにXMLを使いましたが、XMLはどうしてこうも非効率的なのでしょう。Javaのクラス階層に似たツリーを提供するのですが、他の記述方法に比べてサイズも巨大化し、可読性も良いとは言いがたく、パースに手間がかかるため、汎用性も高いわけではありません。
 それだというのに、Javaにはなぜか「org.w3c.dom」というXMLパースパッケージが付属しています。DOMとは「Document Object Model」だそうで。どうせAjaxのように「周囲ですごいすごい言っているから見てみたら、Excelでグラフを作っていただけだった」程度の、技術のうちに入らないような技術でしょうよ。
 トランザクションが「ACID」などとすごい名で呼ばれていても、実は単に「MRだけ減って魔法が発動しないリスクをなくそう」というのと同義であったり、Ajaxなどと大げさに言われていても、単にJavaScriptが他のURLにリクエストを送るだけだったり。色々やっただけに、「ハズレくじ」な技術も多かったですから。  こんなもの使うモノズキの顔が見てみたいですよ、ええ。DOMなどという名前負けなものなど使いません、使いませんとも。

 というわけで参ります。Document Object Model、Java + XMLです。題して「管理者の1夜で習得 DOM」。もう危ない橋を渡ってばかりです。以前にも「1日習得 Ajax」や「1夜で習得 トランザクション」「1夜で習得 JDBC + BLOB」など、滅茶苦茶なことをしてばかりですが。このパッケージを使えばXMLを作ることもできるようですが、作るのはどうせ読み込むのとさほど手順は変わりませんから、とりあえず「既存のXMLを読み込む」ものを作ってみます。
 といっても、私にXMLの知識はゼロです。もちろんDOMのJava版パーサなど使ったことは1度たりともありません。以前のAjaxにしても、他の調べもの中にふと見かけて興味を持って翌日に作っただけの話でしたが、DOMも経緯はほとんど同じです。予備知識なんざあるわけがありません。そういえば、トランザクションもストアドもトリガも「MySQLでは○○が使えるらしい -> 即決行」という計画性ゼロのチャレンジでした。よくもまあ成功したものです。
 さて、まずはorg.w3c.domパッケージを見てみたのですが、どうやらXML解析はDocumentから開始するという話。すみません、Documentってインタフェースなのですが。これでは、コンストラクタにXML文を渡して作る、といった芸当は不可能です。それどころか、クラスとして存在するのは例外のみ。私にどうしろと言うのでしょう。
 途方にくれつつしばしAPIを探索。ほとんど当てずっぽうでしたが、ついに見つけました。「javax.xml.parsers」パッケージです。曰く、org.w3c.dom用のオブジェクトを作るにはDocumentBuilderを使うとのこと。すみません。DocumentBuilderってabstractなのですが。同じパッケージ内のクラスを眺めてみた結果、以下のような結論にたどりつきました。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse(arg);

// arg : XMLファイルの場所を表すString型
// または XMLファイルの場所を表すFile型
// または XMLを記録したInputStream
// などいくつかの型を使用可能
 まずは読ませるXMLがなければ始まりませんから、次のようなファイルを準備しました。いくら私でも「XMLが階層構造になったタグの集まり」であることは分かりますから、難なく次のようなXMLを作ることができました。
// 作成した dom.xml の内容
<Base name="Characters">
	<Section name="Sara">
		<Class class="Dual Knight" />
	</Section>
	<Section name="Harden">
		<Class class="Sword Master" />
	</Section>
	<!-- Comment Test -->
</Base>
 さて、ここからが本番です。とにかく試行錯誤でパースの方法を見つけなければなりません。資料をGoogleで調べて丸写し、という手段もなくはありませんが、それでは技術開拓になりませんし、この前のように「バージョン変更で記述方法が変わっていた」のような場合には余計に迷うことになりますから、Java APIドキュメント一本で。
 まず最初にDocumentのオブジェクトが渡されているわけですから、これをどうにかして解釈しなければいけません。さて、一体どうやって解釈しろというのでしょう。分かりません。さっぱり分かりません。それらしいものをいくつか使ってみた結果、
Node base = d.getElementsByTagName("Base").item(0);
 とすれば一応何とかなりますが、そもそもこの記述は「その名前がつけられた全要素を拾い出す」ためのメソッドです(ワイルドカードも使用できるとか)。もう1つ試してみたのですが、こちらが正解でした。
Element base = d.getDocumentElement();
 Javaの全クラスがObjectから派生しているように、XMLでは「基底クラス」に当たるものを2つ以上作るとエラーが出るようです。ですから、Objectクラスに当たるもの(今回は「Base」)は1つしか存在することができず、それはgetDocumentElement()で得られるらしいのです。
 これで首尾よくBaseのElementが得られたわけですが、この方法だと基底の名前が「Base」でなくても通ってしまいます。別に今回はそれでも構わないのですが、
base.getNodeName();
 これで名前が得られますので、equals("Base") とすれば名前チェックも可能です。
 さて次、Baseには「name="Characters"」と記述してありますが、これはどうすれば取得できるのでしょうか。Elementインタフェースをざっと見回してみたところ、所望のメソッドはすぐに見つかりました。
Attr a = e.getAttributeNode("name");
String value = a.getValue();
// または
String value = e.getAttribute("name");
 というわけで、今回は
out.println(base.getAttribute("name"));

// Result
Characters
 が有効です。何だ、簡単ではありませんか。しかし、現状ではまだBaseまでしか読めていません。中身まで読むにはどうすれば良いのでしょう。Nodeインタフェースをざっと探してみたところ、ピッタリなメソッドが見つかりました。
 しかし、中身を読むのに使うらしいメソッドは、どれを用いても返ってくるのはNode型。Element型でなければ、name="value"といったデータを読むことができません。どうしろと言うのでしょうか。半ばヤケクソで以下のように書いてみました。
Element e = (Element)base.getFirstChild();
out.println(e.getAttribute("name"));

// Result
Sara
 動いてしまうものです。なるほど、こうすれば良いのですか。全部のノードをNodeListとして取得するメソッドがありましたから、使ってみましょう。NodeListインタフェースのAPIをしばし読み込み、早速作成開始です。
// 全部の子ノードを走査し、nameの値を返すプログラム

NodeList nl = base.getChildNodes();
for(int i = 0; i < nl.getLength(); i++){
	Element e = (Element)nl.item(i);
	out.println(e.getAttribute("name"));
}
 が、甘かったのです。例外が出てしまいます。なぜでしょうか。キャストせずNode型に入れた場合には大丈夫でしたが、キャストでエラーが出ています。非常に困りました。getNodeName()で名前を出力してみたり、toString()で情報を出させたり、色々やってみた結果、とんでもないことが分かりました。
 何と、タグに関係ない部分(タグとタグの間の空白とか改行とか)までもをノードとして返していたのです。そんなもの、一体どうしろと。これはTextと呼ばれるノードらしく、Elementにキャストできないことも分かりました。全く、何のことやら。そういえば、Nodeインタフェースの頭の部分に色々とフィールドが定義してありました。きっとこれです。これを使うのに違いありません。
 タイプを調べるらしい getNodeType() というメソッドを見つけたため、テストとして数値をそのまま吐かせてみると、要素に対しては1、Textノードには3、コメントには8が返っていることが分かりました。ということは、
for(int i = 0; i < nl.getLength(); i++){
	if(nl.item(i).getNodeType() != Document.ELEMENT_NODE)
		continue;
	Element e = (Element)nl.item(i);
	out.println(e.getAttribute("name"));
}

// Result
Sara
Harden
 これで作れてしまいました。なるほど、例えばコメントを取得したければ Document.COMMENT_NODE に一致するもののみを拾ってComment型にキャスト、Textを得たければDocument.TEXT_NODEに一致するものをText型にキャストするわけですか。
 ここまで来れば、最後はさらに「Section」の中身(つまり「Class」)を取得するのみです。といっても、本来のXMLなら、おそらくSectionの中にはクラスだけでなくLAやMRといったステータスもドカドカ入るでしょうし、そもそもBaseの中にもSection以外のものが色々入るでしょうから、これをフィルタする機構もつけてみます。
Document d = db.parse("webapps\\ROOT\\dom.xml");

Element base = d.getDocumentElement();
out.println(base.getAttribute("name"));
NodeList nl = base.getChildNodes();
for(int i = 0; i < nl.getLength(); i++){
	if(nl.item(i).getNodeName().equals("Section")){
		Element e = (Element)nl.item(i);
		out.print(e.getAttribute("name") + " - ");

		NodeList childs = e.getChildNodes();
		for(int c = 0; c < childs.getLength(); c++){
			if(childs.item(c).getNodeName().equals("Class")){
				Element child = (Element)childs.item(c);
				out.println(child.getAttribute("class"));
			}
		}
	}
}

// Result
Sara - Dual Knight
Harden - Sword Master
 少しばかり構造を変えていますが、基本的には先ほどの応用です。先ほどのコードではNode.getNodeType()を用いていましたが、これもNode.getNodeName()で代用しています。というのも、例えばTextデータではgetNodeName()の返り値は「#text」となり、コメントの場合も「#comment」とされるため、上の名前に該当するのはElement型だけというわけです。といっても、念のためにgetNodeType()による確認を入れても、もちろん動作に支障はありません。今回はサンプルですから簡素にしただけです。
 今回のサンプルではしっかり名前をチェックしていますから、XMLにダミーデータを差し込んでも正しく動作します(以下がダミーの例。太字が新しく追加した部分。いずれも名前チェックなしならパーサを混乱させます)。
<Base name="Characters">
	<Section name="Sara">
		<LA value="1384" />
		<Class class="Dual Knight" />
	</Section>
	<Section name="Harden">
		<Class class="Sword Master" />
		<Weapon name="Whiteswia" />
	</Section>
	<Field name="central freeway" />
	<!-- Comment Test -->
</Base>
 サーラさんのLAが1384であろうが、ハードゥンさんがホワイスウィアを装備していようが、フィールドが「中央フリーウェイ」であろうが、左にビール工場があろうが何だろうがしっかり名前とクラスを返してくれます
 XML自体の仕様として、ネームスペースやら何やら他にもいくつかあるようですが、ともかくこれで「管理者の1夜で習得 DOM」は終わりです。面白いには面白いのですが、これにわざわざ「Document Object Model」なる大仰な名前をつけるなど、Wordのルビ機能を「宝石の女王の名にふさわしい機能だ」などと大絶賛するのと似たようなものなのでは。
 ServletやPHP、MySQLにストアド、トリガなど色々扱ってみたこのブログではありますが、年末のブログは「名前が高等そうで大騒ぎされているが、技術の難しさとしては早い話がExcelのグラフ機能とあまり変わらないAjax」、今年最後のブログは「先進的な名前だが、技術の難しさとしては早い話がWordのフリガナ機能とあまり変わらないDOM」でありました。
カテゴリ [開発魔法][社会問題][お知らせ] [トラックバック 0][コメント 0]

トラックバックの仕様変更
2005/12/12(Mon)10:33:27
 ブログといえばトラックバック、トラックバックといえばブログ。
 当ブログの以前までのトラックバックはPOSTメソッドとGETメソッドを組み合わせて行っていたのですが、MTなど標準的なトラックバック実装スクリプトでは拡張パス(PATH_INFO)を用いて制御を行っています。
 また、MTの旧バージョンにはGETメソッドでトラックバックを送るものもあるとのこと(MT含め最近のブログはほとんどPOSTです)。それでも最悪、全く動かないということはないはずなのですが、GETメソッドでも情報を渡している現状では、引数が正しく認識されずに誤動作してしまう危険があります。
 そこで、当ブログでも拡張パス情報を用いて認識を行うことにしました。具体的には、新旧で

・旧トラックバックアドレス
http://void.yamicha.com/blog/blog.cgi?mode=tb&id=16384

・新トラックバックアドレス
http://void.yamicha.com/blog/blog.cgi/trackback/16384

 このように変わります。
 それぞれの回のブログについて、「トラックバック」欄をオープンすればトラックバック用URLが表示されますが、このURLも新しいものに修正されていますから、トラックバック手順は全く変わりません。
 また、当ブログのトラックバックの仕様はブログの生みの親であるMTに準拠していますから、本家MovableType、レンタルブログ、MTの仕様に準拠した配布ブログなどのすべてから、(理論上は)トラックバックを受け取る(または送信する)ことができます。
 それでは、ブログをお持ちの皆様からのトラックバックをお待ちしております。近くにブログ執筆者が少ないため、今のところあまり使ってはいませんが、トラックバックをサポートするブログに対しては、こちらからも送信させていただくことがあるかもしれません。
カテゴリ [お知らせ] [トラックバック 0][コメント 0]

技術者集会2006
2005/11/07(Mon)16:43:05
 さて、年末には「今年のメインニュース」でも書いておきたいのですが(後で読み返すのにも便利)、今回は「株式問題及び知的財産とマスコミの反応」でいきましょう。まずは私が覚えている限りの問題を表にした、以下の資料をご覧ください。
発生した問題 マスコミの対応
ライブドアとフジ問題 ひたすら大騒ぎ、見苦しい自己肯定
ニレコが毒薬条項作成失敗 ほとんどスルー
夢真HDが日本技術開発にTOB ほとんどスルー
ポッカが自社株を買い取って上場廃止 少し触れる程度でほとんどスルー
アルゼ特許無効判決 ほとんどスルー
一太郎訴訟で松下の特許が認められず 毎日が社説にした程度でほぼスルー
村上ファンドが阪神買占め 多少問題にするだけ
スクウェア・エニックスがタイトーに友好的TOB ほとんどスルー
楽天がTBS株取得 見ての通り大騒ぎ
 もうすさまじいですね、このご都合主義。マスコミ内には「次は自分」の考えでもあるのか、メディアに手を出す「部外者」に対してはとことんうるさいのです。それで、仮に買収者が優れた相手であったとしても、マスコミが世論を形成してしまい、世論がその人を批判するようになってしまいます。ライブドアは論外としても。
 ライブドアと楽天以外にも少しだけ(社説などで)取り扱われたニュースはありましたが、例えば毎日新聞。この2つの問題のみ、社説以外にも様々なコラムで徹底的に取り上げて相手批判をしています。ニレコや日本技術開発問題ではこういうことはありませんでした。さすがはマスコミ、何と素晴らしい取り上げ方でしょう。
 特に毎日新聞、この新聞社はライブドア問題の時も散々ライブドアを批判するばかりか自己正当化、到底あきれ果てたのですが、体質は今回も変わりません。「新聞が百三十年、テレビが五十年、苦心して手がけてきた情報入手のノウハウが、ネットという道具に取って代われると考えているのなら、笑止千万というより、恐るべき無知だ」(サンデー時評 2005/10/26)とのこと。
 つまりは「新聞130年、テレビで50年もかけているのに、時間ばかりかけてネットにあっさり負ける程度の質しかなかった。それほどに新聞もテレビもレベルが低い」ということでしょう。まったく笑止千万。情報入手といっても大本営発表を流すのが大半、果てはマスコミの独自スクープとして「オウム事件の犯人」などを決め付けたり、果ては「夫婦を自殺させる」ことがノウハウですか。そういうノウハウはインターネットに引き継いで欲しくありません。
 放送の公共性や年季を自慢するなら、例えば上の株式・特許問題のうち、いくらなんでも「ライブドアと楽天だけ騒ぎまわって他は全然見ないふり」というのはおかしいのではないですか?これをジャーナリズムなどと主張するのでは、「笑止」どころか笑えます。他にも笑えないような問題は山ほどありますが、長くなりすぎるためここでは省略。
 結局、新聞も他のマスコミも、自己保身だけは議員や役人並みにすさまじく、しかも国民を扇動するための武器を持っているのだからいい加減始末におえない、といったところでしょう。そういう連中が「報道は公共財だ」「買収連中は間違っている」と主張しても本来は説得力がないのですが、これに同調する人間も存在する(主にネットを使えない人)のです。
 やり方がやり方ですから、私は楽天のTBS買収には反対しておきますが、もうどの報道社も誰かに買収された方が良くはないですか?マスコミ買収者のみを批判するなどとはみっともないことこの上なし。もし敵対的買収が問題であれば、日本技術開発問題はもっと騒がれていなければならないのです。それをなぜライブドアと楽天だけ騒ぐのか。見ての通りです。
 それから、NHK放火問題の報道の仕方も見てください。これが仮に朝日、読売、産経など、そういう新聞記者が起こした問題であったりしたら、全社総出で社説など総動員してリンチともいえる批判を繰り広げたことでしょう。しかしNHKはこれ以上追い詰めれば民営化しかねません。民営化されると民間マスコミがダメージを受けます。だから報道できません。しかも、報道したとしても、本気で追及はできません。
 日本にジャーナリズムが現れるのはいつの日か。

 少しばかりテスト動作を行ってみた結果、何とJavaチャットにバグが。といっても、発生条件はかなり厳しいですし、もう修正しましたので気にすることはないのですが。具体的には、スレッドAのメインループからスレッドBのメソッドを呼び出し、そのメソッドがスレッドAの閉鎖処理を呼び出し、そこでスレッドAがメインループの変数をfalseにし、さらにjoinして終了するのを待機していたのが原因でした。
 本来、この閉鎖処理メソッドは他のスレッドから呼び出すためのもので、他から呼び出した場合にはメインスレッドのループ変数をfalseにすれば近いうちにスレッドが停止するため、joinで同期を取っても何ら問題はなかったのです。ところが、それを(間接的にでも)メインループ内から呼び出せば、メインループ内でjoinを呼び出すのと同じことになってしまうわけです。私としては痛恨の初歩的ミス。
 そんなこんなで、サーバーにファイル保存機構を持たせてみました。サーバー側で操作をすると、発言ログを記録したテキストファイルが生成されます。早い話がクライアント側でログを全部コピーして保存すれば良いには良いのですが、クライアント側のログは「クリア」や「再入室」で消失します。その点サーバー側で持っているログは、サーバー使用者(私)が明示的にクリアするか、さもなくばサーバーを落とさない限り消えません。これを使えば、チャット後に会話ログを参加者に送ったりすることも可能というわけです。使う機会があるかは甚だ疑問ですが。
 それから、とあるチャットで「チャットの色はセレクトではなく16進指定(#0000FFなど)できた方が良い」とのお言葉が。これだと自由度は高いのですが、素人さんには優しくありません(ちなみに実装は簡単です。実はセレクトボックスの方が難易度が高いのです)。ちなみにServlet Chatでは、以下のような実装になっています。
<%!
final static String colors[][] = {
	{"Red" , "#FF0000"} ,
	{"Green" , "#00FF00"}
};
%>

<%
String color = request.getParameter("color");
%>

※ここからセレクト処理
<select name="color">

<%
	for(int i = 0; i < colors.length; i++){
		String sel = "";
		if(colors[i][1].equals(color))
			sel = " selected";
%>
<option value="<%=colors[i][1]%>"<%=sel>><%=colors[i][0]%>
<%
}
%>

</select>
 分かりづらいのなんの。これがテキストボックスでユーザーに指数を指定してもらう方式なら、これだけのコードで
<input type="text" name="color" value="<%=color%>">
 実装できるのですから、とてつもなく簡単です。あえてセレクト制を用いたのは、16進のカラー指定が分からない人のためでしたが、テキストボックスの方が良いようなら別にそちらでも。その方が簡単ですから。しかし、JSPもServletも面白いには面白いですが、これで難しいプログラム(私のサイトではブログなど)を組もうとすると、普通に発狂ものです、絶対。
 型は厳密に区別されており、スカラー変数のようにはいきません。さらに文字リテラルの中に変数を突っ込めば勝手に文字列に変換してくれたりもしません。ヒアドキュメントもありません(あったとしても変数を展開してくれないのでは使いどころが限られますが)。しかも渡されていない引数を使おうとするとNullPointerExceptionで飛びます
 サーブレットの場合、web.xmlの「servlet-mapping」をガンガン増やしていくことで、1つのサーブレットからいくらでもディレクトリURLを派生させて生成することができますから、データベースと組み合わせれば便利なのは認めますが、これはこれでなかなか辛いものがあります。
 このような具合で、あまり作成者にやさしくない言語です。どうしてServletにしたのか、IFilmの担当者を問い詰めたいほどに(あれがJSPかServletかは知りませんが。AtomFilmsはどうなのでしょう。ちなみに毎日新聞はSSIを使っているようです)。しかしながら、JSPチャットの軽さは特筆に値します。

 さて、最後になりましたが、このチャットを使いまして12月31日の夜から「yamicha.com 技術者集会 2006」(仮題)でも行おうと考えています(「技術者」と名がついているのは深い意味はありません。ただ語感がいいからです。ゆえに誰でも参加歓迎。そもそも仮題ですし)。とりあえず内定ということで。期日が近づき、正式に決まりましたらアナウンスしますが、とりあえずブログを見てくださる方への先行宣言です。
 まだ期日などは変更が利きますので、もし参加してみたい方は、参加表明や期日など早めに連絡していただけると助かります(こちらはメールが良いでしょう)。
カテゴリ [開発魔法][社会問題][お知らせ] [トラックバック 0][コメント 0]

トラックバック導入
2005/07/04(Mon)20:49:02
 私ときたら、一体何をしているのでしょうか。RSSに続いてトラックバックも実装してしまいました。
 一部の会員制ブログサービスとは違い、トラックバックは誰でも送ることができます。ただし、無意味なトラックバックは削除することがあります。片道では話の流れが分かりづらくなるため、トラックバックはできるだけ相互リンクでお願いします。
 なお、拡張仕様というほど大げさなものではありませんが、このブログがPINGを受けると、独自仕様として

<extends_version>1</extends_version>
<extends_generator>Ilias Wind Blog</extends_generator>
<extends_blog_name>管理者の戦記</extends_blog_name>
<extends_blog_url>http://void.yamicha.com/blog/blog.cgi</extends_blog_url>

 というデータをくっつけて返すようになっています。一方通行を避ける試み、といえば聞こえは良いですが、将来の自分の拡張のためです。
 で、肝心の操作方法ですが、

・トラックバックしたい場合
1.ビュー下の「トラックバック」をクリックします
2.URLをコピーします
3.自分のブログサービスなりMTなりを用いてトラックバックを送ってください

 関連する話題の場合、トラックバックがあるだけで読者は2倍楽しめます。ぜひお試しあれ。
カテゴリ [お知らせ] [トラックバック 1][コメント 0]

RSS導入
2005/07/03(Sun)20:50:08
 とりあえず簡単に。
 遅ればせながら、ブログにRSSを導入してみました。例によって自動生成で、HTMLと同じタイミングで出力するようになっています。
 概要(description)には必要最小限の情報しか出ませんが、これは全部の内容を入れるとサイズが巨大になるのと、出力の重さによってサーバーに迷惑をかけてしまいかねないためです。ご了承くださいませ。
 それではMT風に参りましょう。

Syndicate This Site

 ただ、文法や記述はあやしいです(サンプルは文法チェックサイトに合格しましたが)。仮に当RSSのご利用によって不利益を負うなどしても、例によって責任は取れません。

P.S
 Yahoo! RSSリーダー(ベータ版)では正しく表示されました。一応バイト制限も守っていますし、標準的なRSSリーダーであれば、大抵は大丈夫なのではないでしょうか。
カテゴリ [お知らせ] [トラックバック 1][コメント 0]

<-前のページ [1] [2] [3] 次のページ->
- Blog by yamicha.com -