検索
カレンダー
2007年8月
« 3月   9月 »
 1234
567891011
12131415161718
19202122232425
262728293031  
ブログメニュー
Amazon検索
キーワード:

HTMLの構文チェックツール

2007年8月28日

みなさんは、正しいHTMLを書いておられるでしょうか?

静的なHTMLを書くだけならDreamwaverなどのWYSIWIGなオーサリングツールを使えば事足りるかもしれませんが、PHPなどから動的にHTMLを作成するときは、その作成したHTMLが正しいかをチェックするのは難しいと思います。

そこでオススメしたいのが構文チェックツールです。私が知っているものでは、W3Cが公開している「Markup Validation Service」と、日本の方が作成しておられる「Another HTML-lint」があります。

これらのツールにチェックしたいWebページのURLやHTMLを入力すれば、そのHTMLが構文的に正しいかを採点してくれます。間違いや修正すべき点があったときは、その場所と 修正方法を示してくれます。

特に「Another HTML-lint」はソースが公開されており、自身のサーバやPCで動作させることができます。

開発中のWebサイトやWebアプリケーションで、なぜかデザインが崩れてしまうという現象が発生したときは、HTMLの構文が間違っているのかもしれません。そんなときは、これらのツールでチェックしてみてはいかがでしょうか。

JavaScriptで作られたカラーピッカーを公開しました

2007年8月22日

かなり気まぐれで作り始めたものなんですが、JavaScriptで作ったカラーピッカーを公開しました。

公開ページは
http://www.meibinlab.jp/product/nanatsu-js/color-picker/index.html
です。

はじめはWebセーフカラーをビジュアル的に選択したい・・・と思って作り始めたのですが、結局わかりやすさを優先するためにWebセーフカラーを諦めてHSVを基準にすることにしました。

特徴としてはphotoshop風なことと、画像を使用していないということですかね。でも、prototype.jsには依存してたりします。

それにしても、すごい久しぶりに三角関数を使いました。もう一生使うことはないと思っていたのですが、意外なところで役に立ちました。もっと学校で勉強していたらよかったかも(^_^;

JSF の h:inputSecret タグで初期値を表示するには

2007年8月16日

JSF の h:inputText タグと h:inputSecret タグの違いは、type属性が”text”と”password”となる以外にもあります。

それは初期値です。

例えばユーザ名とパスワードを入力する画面をJSFで作り、ユーザ名を h:inputText タグで、パスワードを h:inputSecret タグで作ったとします。こから呼び出されたアクションメソッドでnullを返した場合、元の画面に遷移することになります。このとき、ユーザ名のフィールドには入力した文字列が入ったままになっていますが、パスワードのフィールドは空になります。

パスワードのフィールドも空にせずに値を入れたままにしたい場合は、

<h:inputSecret value="#{password}" redisplay="true" />

というように「redisplay=”true”」を定義します。

シェルスクリプトで異常が発生した場合に処理を中止する

2007年8月16日

シェルスクリプトを作っていて、一連の処理の途中でエラーが発生したら、それ以後の処理の実行を中止したいことがあります。

そんなときは、シェルスクリプトの最初に「set -e」と記述します。そうすれば、それ以後に実行したコマンドの終了ステータスが0以外になった場合、その時点で処理を中止します。

動作確認のために、次のようなシェルスクリプトを実行してみました。

シェルスクリプト(test.sh)

#!/bin/sh

set -e

echo "start"
./test2.sh
echo "end"

シェルスクリプト(test2.sh)

#!/bin/sh

echo "test2"
exit 1

この実行結果は次のようになりました。

$ ./test.sh
start
test2
$

test2.shの「exit 1」を「exit 0」にすると、「end」まで表示されます。

安倍首相の退陣の話題について

2007年8月10日

技術系のブログですが、酔った勢いで門外漢なのに政治の話題を書いてみます。

最近ニュースを見ていると、安倍首相の退陣の是非が話題の大部分を占めているようですね。前の参議選で自民党が大敗したことが原因なんでしょうが、私は違和感を覚えます。

国民が自民党に「NO」を突きつけた最大の原因は、 社会保険庁を代表する公務員や官僚の怠慢に対する不満が爆発したからだと私は思っています。確かに内閣人事も問題ですが、それは副次的な問題のように思います。

公務員や官僚をしっかり管理すべき政治家が、ちゃんと管理していないばかりか、ここまで増長させてしまった責任は長年与党であった自民党にあるということだと思います。そういう意味では総理大臣が問題なのではなく、族議員に代表される自民党のお偉方に問題があるんじゃないでしょうか?

なぜ、マスコミはこの部分より退陣の話題を取り上げるのかが不思議です。あまりニュースとしては面白くないからですかね?まぁ、どちらにしても役人の不正にメスが入るのであれば大歓迎ですが。

・・・そうそう、今回大勝した民主党ですが、支援団体の一つに例のアホな覚書を要求した「自治労」があるんですよねぇ(^_^;

Perlでファイル内容を一括して読み込むには

2007年8月9日

Perlではファイルを一括読み込みする場合、よく以下のように書かれます。

open( IN, "<$fileName" );
my @data = <IN>;
close(IN);

ただ、これだと読み込んだデータが改行で区切られて配列に入ってしまいます。PHPでいうところの file_get_contents みたいに改行も含む文字列として一括して読み込むには、次のようにします。

open( IN, "<$fileName" );
local $/ = undef;
my $data = <IN>;
close(IN);

これは、特殊変数である$/(改行区切り)を一時的に無効にしてから一行分のデータを読み込むということをしています。この改行の無効化により、「一行分のデータ=文末までのデータ」ということになります。

iframeのサイズを動的に変えるには

2007年8月8日

XHTML1.1ではiframeがなくなることもあり、将来的には使う機会は減っていくだろうと思われますが、iframeの小技を一つ。

iframeは別のHTMLを読み込める便利なものですが、サイズが固定なので同じiframe内で別ページに移動するとスクロールバーが出たりして見づらくなったりしてしまいます。

そこで、 呼び出されたページの中でJavaScriptを使って呼び出し元ページのiframeのサイズを動的に変化させれば、スクロールバーを出なくできるんじゃないかと思って試してみました。

呼び出し先ページのbodyタグのonloadで次の関数を呼び出せば、自動的にフレームサイズが変わります。

function fixFrameSize() {
	if (window.parent) {
		var body = document.body;
		var width = body.scrollWidth;
		var height = body.scrollHeight;

		var iframe = window.parent.document.getElementsByTagName("IFRAME")[0];
		iframe.style.width = width + "px";
		iframe.style.height = height + "px";
		iframe.scrolling = "no";
	}
}

呼び出し元に複数のiframeがある場合にちゃんと動かなかったり、iframeの frameborderを0にする必要があったりしますが、こんな感じでいけるかと思います。

(2013/4/18追記)

body.scrollWidth や body.scrollHeight で正確な値が取れない可能性があることがわかりました。
ブラウザによっては document.documentElement.scrollWidth や document.documentElement.scrollHeight で取得する必要があります。
クロスブラウザ対応にするなら、 両方の値を取って大きい値を使うというようなことをしないといけないかもしれません。
(すいません深くは調べてないです)

移行しました

2007年8月6日

環境も変わったことですし、新しいブログへ移行することにしました。今度は独自サーバです。暫く更新をサボっていましたが、これからは更新しますので宜しくお願いします。

それから今までの記事ですが、リファレンス的なものは移行していこうと思っています。・・・それにしてもアメブロはエクスポート機能がないんですね・・・