Ian Lewis
Ian Lewis is a web developer living in Tokyo Japan. His current interests are in Django, python, alternative databases and rapid web application development. About Me...
  • javascript "var"

    javascript で変数を定義する時に、var を付ける場合があります。var を付けないと、変数がグローバル名前空間に入ってしまう。

    >>> test = function() { test = "blah" };
    function()
    >>> test();
    >>> test();
    TypeError: test is not a function source=with(_FirebugCommandLine){test();\n};

    この場合だと、testがtestを文字列に変えてしまう。

    >>> test = function() { blah = "blah" };
    function()
    >>> test();
    >>> blah
    "blah"

    ...ということです。

    知らなくて恥ずかしいんですけど、今まで書いたjavascriptで一再付けなくて、あまりよくない。でも、逆に var を付けるのがあまりにも面倒くさいので、凹んでjavascriptを書く気がちょっと減ってしまった。orz

    Send feedback   このエントリーを含むはてなブックマーク はてなブックマーク - javascript "var"
  • Javascript インタープリター

    JSON schema proposalの実装した典型的javascript validatorを試してみとうと思って、Pythonのインタラクティブシェルみたいなjavascriptインタラクティブ インタープリターを使いたいとさらに思って、以前に使ってたBobさんのMochikit インタープリターをまた取り出した。

    このインタープリターは Mochikitのいじりにすごくよかったけど、一般的なjavascriptをいろいろ試してみたいから、一般urlからインポートできるように、簡単な関数を作った。importjs(url)でどこからでも、javascriptをインポートして、インタラクティブシェルで直接触るようになった。コードは以下のよう

    function (jssource) {
      importdiv = DIV();
      importdiv.innerHTML = "Importing " + jssource + " <script type='text/javascript' src='" + jssource + "'></script>";
      writeln(importdiv);
    }

    僕の修正したバージョンはこちら

    結局、json schema validatorを試してみたら、うまく動かなかった。

    test = "blah";
    schema={"type": "integer"};
    JSONSchema.validate(test,schema).valid

    という風に入力しても、true が出た。orz

    Send feedback   このエントリーを含むはてなブックマーク はてなブックマーク - Javascript インタープリター
  • モバイルサイトで Google Analytics

    会社のモバイルサイトで、Google Analyticsのトラッキングを導入した。Google Analyticsはブラウザーでいろな情報を集めてGoogleサーバに送るものなので、トラッキングをするには Javascriptが必要な部分がある。しかし、モバイルや、携帯は Javascriptに徐々に対応しようとしてると思うけど、現在はほとんど対応してない。なので、サーバ側でトラッキングするほうが標準。他の携帯向けのサイトもあるけども、そのサイトは大体、そのサイトのurlをお客さんに渡して、それで、お客さんがそのサイトに行ってトラッキングデータを記載して、それから、自分のサイトにリダイレクトするやつだから、嫌な部分がたくさんある。

    一つははお客さんに自分のサイトじゃなくて、別のサイトの変なurlを渡すから、お客さんに嫌な気分をかける。二つ目はサイトに入る後にサイトの中にどんなページを見に行ってるかがトラッキングできない。もっとあるけど、結局はGoogle Analyticsにした。

    具体的に、Peter van der Graffっていう人のブログから、PHPコードを写したけど、Peterさんの目的は僕の目的と違うらしい。彼は RSS とか、ファイルダウンロードのトラッキングをする前提で、コードを書きましたから、携帯機種や、セッションや、ユーザ変数を記載してなかった。なので、Peterさんのコードを以下のコードに書き直した。セッションを渡して、USER_AGENTというHTTPヘーダを送る携帯の機種とかもちゃんと転送するようにした。

    $var_utmac=MOBILE_GOOGLE_ANALYTICS_CODE; //enter the new urchin code
    $var_utmhn=WEB_DOMAIN; //enter your domain
    $var_utmn=rand(1000000000,9999999999);//random request number
    $var_cookie=$session; //cookie number
    $var_random=rand(1000000000,2147483647); //number under 2147483647
    $var_today=time(); //today
    $var_referer=$_SERVER['HTTP_REFERER']; //referer url
    $var_uservar=$storeinfo['storeid']; //enter your own user defined variable
    $var_utmp=$_SERVER['REQUEST_URI']; // request uri

    $urchinUrl='http://www.google-analytics.com/__utm.gif?utmwv=1&utmn='.$var_utmn.'&utmsr=-&utmsc=-&utmul=-&utmje=0&utmfl=-&utmdt=-&utmhn='.$var_utmhn.'&utmr='.$var_referer.'&utmp='.$var_utmp.'&utmac='.$var_utmac.'&utmcc=__utma%3D'.$var_cookie.'.'.$var_random.'.'.$var_today.'.'.$var_today.'.'.$var_today.'.2%3B%2B__utmb%3D'.$var_cookie.'%3B%2B__utmc%3D'.$var_cookie.'%3B%2B__utmz%3D'.$var_cookie.'.'.$var_today.'.2.2.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)%3B%2B__utmv%3D'.$var_cookie.'.'.$var_uservar.'%3B';

    $header = '';

    //Set the language to that of the client so analytics can track it.
    if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
      $header = 'Accept-language: '.$_SERVER['HTTP_ACCEPT_LANGUAGE'].'\r\n';
    }
    //Set the user agent to that of the client so analytics can track it.
    if (!empty($_SERVER['HTTP_USER_AGENT'])) {
      $header = 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'].'\r\n';
    }

    $opts = array(
      'http'=>array(
        'method'=>'GET',
        'header'=>$header
      )
    );

    $handle = fopen($urchinUrl, 'r', false, stream_context_create($opts));
    $test = fgets($handle);
    fclose($handle);
    Send feedback   このエントリーを含むはてなブックマーク はてなブックマーク - モバイルサイトで Google Analytics