Skip to content

サイトをインラインフレームで表示するのを禁止するJavaScript

なんとなくtwitter.comのHTMLソースを見てみたら変なJavaScriptコードを見つけた。
なるほど。インラインフレームとかを使ってトップウィンドウ意外でtwitterを開くのを禁止しているので。
念のためローカルでiframeを使って試してみたらtwitterのホームに飛ばされた。
よく知られた方法なのかもしれないけど初めて知った。
以下ちょっと見やすくしたコード。


if (window.top !== window.self) {
  document.write = "";
  window.top.location = window.self.location;
  setTimeout(function(){document.body.innerHTML='';},1);
  window.self.onload=function(evt){document.body.innerHTML='';};
}

web sql database を使ってみる

web sql databaseを少しだけ触ってみた。
まだ日本語の情報がほとんどないのでw3cの仕様書を参考にする。
Introductionにコードサンプルがあるけど、そのままだと動かない罠。
chrome5で試しているのだけれど、changeVersion()がどうも動かないみたい。中途半端にエラーがでるけど期待通りに動かないので使わないことにする。
あと、当たり前かもしれないけど、openDatabase()は1回だけ呼ぶものみたい。なんどもopenDatabase()するとchromeの要素検証画面にあるDatabaseタブに
たくさんDBのアイコンがでてくる。内部的に複数のDBオブジェクトが作成されているっぽい。とりあえずグローバルスコープに専用の変数を用意して回避。
そんなこんなで出来上がった、ただ書いて読むだけのコードが下記。


      var g_db = null;
      function prepareDatabase() {
        if ( g_db != null ) { return g_db; }
        return g_db = openDatabase("testdb05", '1.0', "testdb", 1024*1024*5, function (db){
            db.transaction(function (t) {
            t.executeSql("CREATE TABLE mytable(id,name)");
          });
        });
      }
      function writeDb() {
        var db = prepareDatabase();
        db.transaction(function (t){
          t.executeSql("INSERT INTO mytable(id,name) values(1,2)");
        });
      }
      function readDb() {
        var db = prepareDatabase();
        db.readTransaction(function (t){
          t.executeSql("SELECT id,name FROM mytable", null, function (t,r){
          alert(r.rows.item(0).name);
        }, function (t,e) {
            alert(e.message);
          });
        });
      }

SVGで電卓

勉強がてらSVGで電卓。月並み過ぎる。chrome5で動作確認したので他のブラウザで動くかは謎。

imgタグだとなぜかうまく表示されないので直接リンク。
SVG電卓

無線LANルーター3製品の消費電力を比較

購入検討中の無線LANルータの消費電力

BUFFALO WLR300GNH  12W
NEC WR8300N 9W
corega WZR-HP-G300NH 14W

どれも凝った使い方をしない人には似たり寄ったりな機能しかないので
消費電力の一番低いWR8300Nに決定。WR8300Nはエコモードというのがあって
待機時などの消費電力はさらにぐっと低い。

Google Public DNSを使用してみる。

Googleの無料パブリックDNSサービス「Google Public DNS」を使ってネットのアクセス速度を上昇させる方法

早速設定してみる。
ルータのDNS設定をGoogle Public DNSに向けてみるも何故かあまり速度変わらず。
Googleのチュートリアルどおりに端末に設定してみると一気に速度が倍に!
60~150ms くらいだったのが 30~60msくらいになった。
ウェブも体感で若干早くなったような。。。
とりあえず常用する。

install google go to ubunt8.04

google go を Ubuntu8.04にインストール。
基本的にgoogleのインストールページ通りにインストールできた。
ただ、分散バージョン管理システムのmercurialをインストールするところで
エラーが発生。
「sudo easy_install mercurial」をする前にg++をapt-get install しておく
必要があった。
あと、環境変数のGOBINは最初はOptionalと書いてあるから無視していたが
結局インストール手順内に必要な場所があったので設定した。
なお、GOBINはPATHに含める必要がある。

僕の場合、環境変数は.bashrcに下記のように設定した
(32bitインテルCPUにUbuntuの環境)
GOROOT=$HOME/go
GOBIN=$HOME/bin
GOOS=linux
GOARCH=386
export GOROOT
export GOOS
export GOARCH
export GOBIN

PATH=$PATH:$GOBIN
export PATH

インストールが完了すると$GOBINのディレクトリにコンパイラのバイナリが
入っている。

お決まりのHello Woldでテスト。

// file name: test.go
package main

import fmt "fmt"

func main() {
fmt.Printf("Hello world\n");
}

32bitインテルCPU向けのコンパイラは 8g だけどリンクは勝ってには
してくれない。なのでコンパイルとリンクで2回コマンドを実行する。
8g test.go
8l test.8
すると実効バイナリの 8.out ができたので
./8.out してみると「Hello world」が表示された。

iphone VS wimax+ipod touch

首都圏ではwimaxが開始し、23区内では大体どこでもwimaxで通信できるようになった。
主に首都圏で活動する人でiphoneを使いたいけれど契約の2年縛りが気になる場合などは
iphoneの代わりにwimaxとipod touchという組み合わせも検討できる。
そこで、UQ WimaxとiPod Touchの組み合わせとiPhoneでホワイトプランにした場合を比較してみた。

比較項目 iPhone (8GB) UQ Wimax + iPod Touch
通信費用 ホワイトプラン 980円
パケット定額 4410円
S!ベーシックパック 315円
合計: 5705円
UQ Wimax 4480円
初期費用 なし iPod Touch 8GB 20000円
wimaxルータ 20000円
初期費用+2年間の
通信費用
136920円 145720円
その他メリット
  • 首都圏以外でも使える
  • 通話もできる
  • 契約の2年縛りがない。
  • ノートブックなどPCでも使える

2年間の費用としてはiphoneの方が1万円お得だけれども大きな差とは言えない。
iPod Touchをすでに持っている場合はwimaxを一旦試してみて駄目ならiPhoneに乗り換え
という手もあるかもしれない。wimaxルータの分は無駄になるけれど。