[JavaScript + Cookie] 空文字を使うときのブラウザ間差異
最近JavaScript + Cookieの検索ワードでこのブログにアクセスしてくれる人が多いので、JavaScript + Cookieについてもう少し勉強しなおしてみようと思った。
実は、前々から
document.cookie = 'foo';
と書いたときの動作が未検証だったので、さっそくコードを書いて動作を見てみることにした。
最近JavaScript + Cookieの検索ワードでこのブログにアクセスしてくれる人が多いので、JavaScript + Cookieについてもう少し勉強しなおしてみようと思った。
実は、前々から
document.cookie = 'foo';
と書いたときの動作が未検証だったので、さっそくコードを書いて動作を見てみることにした。
正規表現を使ったCSVパーサの続き。
トークン化したCSVを解釈するコードをJavaScriptとPerlで書いた。二つのロジックはほぼ同じ。
それぞれ、第一引数には解釈するCSVテキストを渡し、第二引数ではfield間の区切り文字を指定する。デフォルトはコンマ(,)。戻り値は、CSVを解釈した2次元配列(Perlの場合はリファレンス)。
ちょっとした理由から、CSVファイルをJavaScriptで読み込むためのパーサを書きたいと思って、先ほどからがんばってみた。
CSVはいろいろな実装があって正式な仕様がなかなかないらしいけど、考えるのが面倒なのと、Excelが吐くCSVを一応処理できるという理由から、Wikipediaで紹介されていたRFC 4180の形式を採用することに決定。
パーサとかレキサみたいなのは書いたことがないからいびつな仕上がりかも。
前回までで、一応XMLファイルをXSLを使ってPDFに変換できる環境まではできたと思う。だから今日は、DocBook文書をXSLを使ってPDFに変換してみる。
ということで、やるべきことは以下の2点
ということで、順番に説明していく。
[追記]404 Blog Not Found:javascript - \uXXXXを使わない理由を受けて追記
dankogaiさんはあまりJavaScriptのリテラルに詳しくないのかな?
404 Blog Not Found:regexp - 全角英数字を半角に
var fascii2ascii = (function(){
var cclass
= '['+String.fromCharCode(0xff01)+'-'+String.fromCharCode(0xff5e)+']';
var re_fullwidth = new RegExp(cclass, 'g');
return function(s){
return s.replace(re_fullwidth, function(m){
return String.fromCharCode(m.charCodeAt(0) - 0xfee0); // 0xff00 - 0x20
});
}
})();前回は、Apache FOPを入れて、簡単なXML文書をPDFにするところまでで終わった。今日は日本語フォントを導入してみようと思う。
日本語ではここのサイトが非常に参考になるが、情報がやや古い。フォントに関しては、Apache FOPのサイトの「Apache FOP: Fonts」に詳しい情報が載っているので、これを参考にした。
FOPでは、XML形式のFont Metricsファイルというものを用意しないといけない。FOPにはフォントファイルからFont Metricsファイルを生成するツールが同梱されているので、それを使ってfont metricsファイルを作成する。フォント形式はType1とTrueTypeに対応しているとのこと。
twitterで何を使って卒論を書こうかと考えていたときに、DocBookが候補にあがった。そこで、DocBookについてはほとんど何も知らないし、DocBookをPDF化する環境も整っていないけど、DocBookに挑戦してみることにした。
日本語でDocBookを使うのは相当面倒らしいけど、途中で心が折れないようにがんばろう。仮に、DocBookが駄目だったとしても、XML → XSL → PDFの変換環境を作ったり、本格的にXSLを勉強しておくのは悪いことではないと思うし。
ということで、がんばってみる。
MyMiniCityで工場とか道路とか環境とかがいじれるようになるための条件を探ってみた。っていってもランキングを上から見ていっただけだけど。
ランキングを見る限り、条件は人口だけっぽい。調べた感じだと、↓のような条件になるっぽい。
| 人口 | レベル | TODO |
|---|---|---|
| 0- | 1 | Increase population |
| 50- | 2 | Increase industry |
| 100- | 3 | Improve the transport network |
| 300- | 4 | Increase security |
| 500- | 5 | Improve environment |
| 1000- | 6 | Increase business |
49/50, 99/100, 299/300の境界はチェックしているから、レベル4まではたぶん間違いない。もちろん、人口だけで決まるのだとしたらの話だけど。
これを使えば、前回書いた自動振り分けスクリプトをもう少し賢く出来るんじゃないかと考え中。
それと、MyMiniCity部 - はてなグループ::ついったー部に載っている街全部にリクエストを投げるスクリプトを書いてる人が結構いるようなので、最適なURLに振り分けつつ街全部にリクエストを投げるようなスクリプトを作ってみようと画策していたりいなかったり。
MyMiniCityで、街の状況に応じて自動的に必要なURLにリダイレクトするPHPスクリプトを書いてみた。既に同じことはいろんな人がやってるけど。
http://tools.liosk.net/MyMiniCity.php?city=liosk
?city=lioskの部分を書き換えれば別の都市にアクセスできます。