HeavyBommer@blog
時事ネタ、コンピュータ、家電、プログラミング等々、思ったこと/考えたこと/提案/使用レポ/Tipsなどを思いついたときに書いてゆきます
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
IPアドレス帯域→正規表現変換
ケータイ向けのWebページを作っている場合、前に書いたように、IPアドレス帯を正規表現で書かないとならなくなる場合が出てきます。
これがけっこう厄介で、手動で作っているといろいろミスも出てきますし、第一入念なテストができないのでぶっつけ本番になってしまいがちです。

そこで、自動生成の手段を模索していたのですが、GoogleアナリティクスのヘルプページにIPアドレス範囲→正規表現の自動生成をしてくれるページがあることを知りました。

ただ、このページだと
・手動で入力しないとならない→バッチ処理で大量の変換ができない
・通常IPアドレス帯はxxx.xxx.xxx.xxx/nnという感じで、ネットアドレス+マスクビット数という形で書かれており、そのままではこのページに入力できない
という欠点があります。

このページはJavaScriptで機能しているようなので、スクリプトをちょっと拝借して、独自の変換ツールを作ってしまいました。
コードの著作権があるので、Googleのコードの部分は掲載しませんが、独自に作った部分は以下のような感じです。


これに、googleのページから必要な関数をコピーして追加すれば機能します。
#JavaScriptが直接HTMLに埋め込まれていますので上のリンク先のページソースを表示するなり、HTMLを保存するなりすればコピペ可能です

実行はWindowsのコマンドプロンプトから
cscript //Nologo ip_addr_regex_gen.js xxx.xxx.xxx.xxx nn d
という感じです。
なお、dはデバッグレベルで、未指定or0だと正規表現だけを表示し、1以上だと開始・終了アドレスなども表示します。

ケータイ各社のアドレス帯の表をテキストエディタなどで加工してバッチファイルにでもすれば、一気に変換することもできます。

なお、ケータイ3キャリアのアドレス帯域は以下にあります。
ドコモ(i-mode)
au(ezweb)
ソフトバンク(Yahoo!ケータイ)
スポンサーサイト

テーマ:webサイト作成 - ジャンル:コンピュータ

水槽自動給水器
60cmの淡水魚水槽があるのですが、夏場の水温上昇防止のためにファンを使っています。
そうすると、1日1.5Lくらいの水が蒸発してしまいます。
家にいるときは毎日給水してやればいいのですが、夏休みに旅行に行く予定もあり、3~4日家を空けると結構厳しいことになってしまいます。
毎年、旅行の前にはむりくりペットボトルで自動給水の仕組みを構築していたのですが、それも結構大変なので、恒常的に設置できるものを作ってしまおうと思い立ちました。
冷却用の水槽用ファン(シロッコファンタイプ、水槽用)が古くなってうるさくなってきたというのもありますしね。

具体的な方法ですが、水槽セットについてきた使っていない上部濾過用の濾過槽を改造します。

下が完成形です。(ただし、実際にはプラスαしています)
自動給水器

写真を見ればわかると思いますが、まず濾過槽の底の部分に大きめの穴をあけます。
そして、その穴にペットボトルをさかさまに立てて、倒れないように針金などで支えるようにします。
写真右側にフックボルトを付けて、そこから針金で引っ張るようにして支えています。

とりあえず、写真では一番奥に1本だけ立てている状態ですね。
最大4本建つようにしていますが、手前二つの穴はファンとライトに普段は使う予定です。
長期留守にするときはライトを外し、ファンは逆向きに付けることで4本建てられる予定です。

原理としては、さかさまに立っているペットボトルの口の部分が水面下に沈んでいます。
この状態でボトルキャップを外しても、空気が入らないので中の水は出ていきません。

で、水が蒸発して水位が下がると、ボトルの口が水面に出て、空気が入って水がボトルの口より上に来るまで水が出るという仕組みですね。
まあ、常に水槽とペットボトル内の水はつながっている状態になるので、水槽の水量を増やしたのと効果は同じなんですけどね。

テーマ:熱帯魚 - ジャンル:ペット

スマフォ用ページ作成Tips
半分備忘録ですが。

・スマフォの画面サイズ
普通にページを表示させると、スマフォの場合は横方向を仮想的に900px位になるようにしているらしく、取っても小さく表示されてしまいます。
デザイン優先で、PCとスマフォを共通に扱うなら良いのですが、そうでない場合はバカみたいにフォントサイズを大きくしないと現実的な大きさにならないという欠点ができてしまいます。
そして、そういった形で解決を図ると、PCでアクセスした場合に馬鹿でかいフォントで表示されます。

というわけで、解決策ですが、metaタグでviewportを設定すると良いようです。

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

みたいな感じですね。

width=device-widthでブラウザの幅(仮想)を実際のデバイスの幅に合わせます。
initial-scaleは初期倍率ですね。

ただ、iPhoneだとどうかわかりませんが、Android(標準ブラウザ)だとWVGA(幅480px)の端末でも、幅が320pxになってしまうみたいです。
なんでかわかりませんが、これについては解決策が見いだせていません。

ご存じの方がおられたら教えてほしいのですけどね。

解決法がわかりました。
target-densitydpi=device-dpiを追加すれば良いようです。(Android2.x以降)
これは前にも試していたのですが、順番がものをいうようで、widthより前に指定しないとダメなようです。
<meta name="viewport" content="target-densitydpi=device-dpi,width=device-width,initial-scale=1.0" />
とすれば、端末の実寸で表示されるようですね。

まあ、今後スマフォの画面解像度が(物理サイズは現状のままで)SVGAとかXGAとかになってくると、逆に実寸表示にしないほうがいいのかもしれませんけどね。

・画像自動拡大
これはJavaScriptを使って、ブラウザの幅に合わせて自動的に画像を拡大するというものです。
以下のような感じですね。

<img src="1key.png" id="NumImg1" onload="resize(1);" />
<img src="2key.png" id="NumImg2" onload="resize(2);" />
<img src="3key.png" id="NumImg3" onload="resize(3);" />
<br />
 ・
 ・
 ・
<script type="text/javascript">
<!--
var scrW = getBrowserWidth();
var scrH = getBrowserHeight() - 150;

function getBrowserWidth()
{
if(window.innerWidth)
{
return window.innerWidth;
}
else if(document.documentElement && document.documentElement.clientWidth != 0)
{
return document.documentElement.clientWidth;
}
else if(document.body)
{
return document.body.clientWidth;
}
return 0;
}

function getBrowserHeight()
{
if(window.innerHeight)
{
return window.innerHeight;
}
else if(document.documentElement && document.documentElement.clientHeight != 0)
{
return document.documentElement.clientHeight;
}
else if(document.body)
{
return document.body.clientHeight;
}
return 0;
}

function resize(num)
{
img = document.getElementById("NumImg" + num);
imgW = img.width;
imgH = img.height;
scaleW = (scrW / (imgW * 3)) | 0;
scaleH = (scrH / (imgH * 4)) | 0;
scale = (scaleW < scaleH) ? scaleW : scaleH;
if(scale > 1)
{
img.width=(imgW * scale).toFixed(0);
img.height=(imgH * scale).toFixed(0);
}
}
//-->
</script>

ちなみに、getBrowserWidth/getBrowserHeightはこちらのものを使わせてもらっています。

テーマ:webサイト作成 - ジャンル:コンピュータ

mod_rewriteで相対パス的なジャンプ
Apacheのmod_rewriteでURLを書き換えて、Locationで別のディレクトリに飛ばすというような方法です。

たとえば、

DocumentRoot ─┬─ foo ─ index.php
└─ bar ─ index.php

というようなディレクトリ構造の場合に、
http://www.mydomain.jp/foo/index.php?param=FOOBAR
でアクセスすると、
http://www.mydomain.jp/bar/index.php?param=FOOBAR
に飛ばすというようなことをやりたいとします。

httpd.confやDocumentRoot直下に.htaccessを置けるのなら簡単なのですが、今回の場合はfooディレクトリに.htaccessを置かざるを得ないという場合です。

具体的に言うと、fooがケータイ(ガラケー)専用のディレクトリで、ケータイ以外(スマフォやPC)でfooディレクトリ内のファイルにアクセスしてくると、barディレクトリの同名ファイルに飛ばすというようなことをやりたい場合です。
この場合、RewriteCondでIPアドレスなどをもとに飛ばすかどうか判定してしまうので、DocumentRootに.htaccessを設置するわけにもいきません。

・解決策1
RewriteRule ^(.*)$ /bar/$1 [R=302,L]
ディレクトリが固定ならこれでOKですね。
単純です。

ただ、今回の場合は、DocumentRoot以外に複数のAliasがあって、それぞれロゴやちょっとしたローカライズを施したページを保持していて、各Alias格納先は、基本的にシンボリックリンクでDocumentRootのファイルをリンクしているのです。
.htaccessに上のように書いてしまうと、Aliasしている先でそれぞれ.htaccessを修正せねばならず、ケータイGWサーバのIPアドレス帯が追加されると、全部の.htaccessを修正しないとならないという問題が生じます。

かといって、
RewriteRule ^(.*)$ ../bar/$1 [R=302,L]
のように相対パスを使うと、実ディレクトリで解決されてしまうので、うまく動きません。

・解決策2
そこでいろいろ試行錯誤した結果、いったんREQUEST_URIで置き換えてしまえば問題ないことに気づきました。
問題なのは、RewriteRuleに入力されるURLが.htaccessの設置されているディレクトリ基準となっていることだったので、これでいくらでも弄れるわけです。
つまり
RewriteRule ^.*$ %{REQUEST_URI} [C]
RewriteRule ^(.*)/foo/(.*)$ $1/bar/$2 [R=302,L]

と二段階で変換するわけです。

これだと、
http://www.mydomain.jp/foo/index.php?param=FOOBAR → http://www.mydomain.jp/bar/index.php?param=FOOBAR
http://www.mydomain.jp/alias1/foo/index.php?param=FOOBAR → http://www.mydomain.jp/alias1/bar/index.php?param=FOOBAR
のような感じになるので、.htaccessはシンボリックリンクでうまく動いてくれます。

何か弊害がないかがちょっと心配なのですが、今のところ特に問題は出ていません。

テーマ:webサイト作成 - ジャンル:コンピュータ

2011年第3クールの深夜アニメ & 第2クールおさらい
前回に引き続いて2011年7月からの第3クールのアニメのベスト5です。

1位:神様のメモ帳
自称ニート探偵の女の子とその仲間たちのもとに半ば無理やり引き込まれて、都会の若者の心の闇とそれに伴う事件に立ち向かっていく主人公のお話ですね。
いろいろ奥も深そうですし、結構楽しめそうな感じです。
絵もきれいですしね。

ちなみに、最近のアニメで男子中高生が主人公の場合は、大抵本人は「ワトソン君」的な役割ですよね…
強力な個性と行動力を持つヒロインに振り回され、口では文句を言いながらもいつの間にか仲間になって大きな目標に向かっていく…みたいな。
もしくは、ヒロインの方にスーパーパワーがあって、主人公はそのヒロインの能力を引き出すカギだったりとかね。
最近の草食系男子の願望なのでしょうかね。

まあ、個人的にもそういう受動的に事が運ぶ、かつ「普通ではない」世界ってのに魅力を感じるのはわからないでもないですけどね。

2位:うさぎドロップ
突然親戚(爺さんの隠し子?)の子供(幼女)を引き取る結果となってしまったお兄さんのお話です。
日常系の話ですね。
前にも書いた通り、最近こういうのがツボです。

特にこの話は娘の小さかったころを思い出しますし、ヒロイン?のりんのけなげな感じがまたツボですね。
娘さんのいる人には特におすすめです。
若い人にはちょっと退屈かもしれませんが。

3位:ダンタリアンの書架
GOSICKに似た感じの雰囲気ですね。
まあ、魔力を持った本のお話なので、あくまで科学的であったGOSICKとはちょっと違いますが、雰囲気がね。
時代設定も近代ですしね。

4位:夏目友人帳 参
今までのもほのぼのとしていて、泣ける話もあって、ギャグ的要素もあってと面白かったので、これは安定して面白いだろうと思います。
ただ、ちょっと主人公の成長が無さすぎるかなって気もしないでもないですね。
まだ始まったばかりなのでアレですが、このままいくようだと少し飽きが来るかじれったくなる科かもしれません。
特に周囲への気の使い過ぎな感じがね…
今回は夏目君の(内面的)成長というか、過去のトラウマからの脱却を望みますね。

5位:神様ドォルズ
カカシと呼ばれる神器(といっても超古代文明の作ったロボットみたいな感じですが)とそれを操ることを宿命付けられた若者+少女のお話と言った感じです。
いろいろ謎要素もありそうですし、単純なバトルものには終わらないだろうという感じで期待しています。

次点:異国迷路のクロワーゼ
ほのぼの系ですね。
日曜の朝にやっていても良いような内容ですが。
なぜ深夜枠なのかはちょっと疑問です。
惜しくもランク外になってしまったのは、「このままのノリでずっと続くのか?」って言う感じがしてしまうからです。
現状では、明治維新直後or直前位の日本からフランスに来た少女と、彼女の面倒を見ることになった看板職人の日常劇的な形ですが、このまま特に山場ができないようだとちょっと退屈になりそうな感じですね。
看板屋の入っている商店街(ギャレリ)がつぶれそうだということで、その再建がおそらく鍵になってくるのでしょうが、それだけで話が続くのかって感じもしないでもないです。
ちょっと先に不安を感じるので、次点としました。

次点:輪るピングドラム
こっちは逆に今のところ先が見えないというか、謎だらけなので評価不能な感じです。
まあ、雰囲気はそこそこいい感じなんですけどね。
これはもしかしたら化けるかもしれません。

今後に期待:BLOOD-C
神刀を持って化け物と戦う女の子のお話ですが、今のところ日常と化け物との戦闘だけで、先が見えません。
原作やそれに基づいたアニメ・映画などがあるようですが、そっちも視ていないのでわからないのですが、このままバトルが進む&ちょっとしたなぞの解明があるくらいだと退屈かなという印象です。
奥の深さが出てくると面白くなるかもしれません。

今後に期待:NO.6
現在の社会秩序が崩壊したのちの、管理社会によって復旧を果たした未来都市のお話ですね。
いろいろ伏線があって…というのはわかるのですが、ちょっとチープな印象がぬぐえず、いまいち興味がわいてきません。
面白くないってことはないのですがね。
これも今後奥の深さが出てくれば…って感じですね。

今後に期待:セイクリッドセブン
正統派ヒーローものにメイドと執事を付けましたみたいな感じですね。
仮面ライダー的なのりです。
これの場合、主人公は男子高校生ですが、最初に書いたような草食系ではないですね。
まあ、積極的に事態に関わる様に引っ張ったのはやっぱり女の子ですけど^^;
これも、このままバトルが進行するだけだとちょっと…って感じですが、奥の深さが出てくればって感じですね。

第2クールのおさらいは「つづき」から。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。