October 2009 Archives
WHATWGでHTML5仕様がLast Callになった。徐々にではあるが、Web Application が普及する環境が整いつつある。(どうもW3Cは聞いていなかったらしく、ちょっと揉めそうな感じみたいだが。)
さて、以前もここで書いたとおりHTML5はそれまでの文書の構造化に加え、振る舞いの要素の追加が行われており、スクリプト言語のインターフェースも規定されている。このスクリプト言語は仕様の上では指定されているわけではないが、事実上JavaScriptだろう。ということでそろそろちゃんとJavaScriptを書けるようにならなきゃいかんのかなぁ。ということで、まずはクロージャーからやってみた。
<html lang="ja">
<head>
<title>Closure Test</title>
<meta http-equiv="Content-Type" content="text/plain;charset=UTF-8">
</head>
<body onload="onLoad()">
<script type="text/javascript">
var countUp;
function makefunc()
{
var x=0;
return function(){return x++;};
}
function onLoad()
{
countUp = makefunc();
window.setInterval(onTimer, 100);
}
function onTimer()
{
document.getElementById('count').innerHTML = countUp();
}
</script>
<div id="count"></div>
</body>
</html>
このコードは、100ms毎にカウントアップして表示するもの。makefuncがカウントアップする関数オブジェクトを作り、onloadハンドラでグローバル変数countupに保存しておく。それを100ms毎に呼び出している。実行すると下のようになる。
久しぶりにshell (bash) script。一つのデータが一行ごとに並んでいるファイルから必要な部分を取り出すスクリプト。今回はbashの組み込み関数である getopts を使ってみた。
#!/bin/bash
#
# clip.sh -f FROM -t TO FILE
#
while getopts "f:t:" i;do
case $i in
f) FROM=$OPTARG;; # Time From
t) TO=$OPTARG;; # Time To
esac
done
shift $(($OPTIND - 1))
FILE=$1
LINES=`wc --line $FILE | cut -d " " -f 1`
FLINE=`grep -n $FROM $FILE | cut -d : -f 1 | head -n 1`
TLINE=`grep -n $TO $FILE | cut -d : -f 1 | head -n 1`
if [ $FLINE -ge $TLINE ]; then
TMP=$FLINE;
FLINE=$TLINE;
TLINE=$TMP;
fi
HEAD=$(($TLINE-$FLINE))
TAIL=$(($LINES-$FLINE+1))
tail -n $TAIL $FILE | head -n $HEAD
たとえばこのようなファイルがあるとすると
11:00:17 24.93 72.9 11:00:17 24.94 72.8 11:00:17 24.94 72.7 11:00:18 24.95 72.4 11:00:19 24.96 72.1 11:00:20 24.97 71.9 11:00:21 24.97 71.8 11:00:22 24.98 71.7 11:00:23 24.99 71.4 11:00:24 25.00 71.2 ....
このファイルをdata.txtというファイル名として、この中から12:00:00から13:00:00まで取り出したいとすると、
$ clip.sh -f 12:00:00 -t 13:00:00 data.txt
とすれば標準出力に出力される。
ふ、例によって誰もついて来れまい。あ、ぴらふとCZDの二氏は除く。ってかこのくらいのコマンドは、textutilあたりにありそう。良い解法があればコメントよろ。
