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...
  • モバイルサイトで 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
  • オープンソースカンファレンス

    今日、大久保にオープンソースカンファレンスに行ってきました。提出が全部面白かったけど、大体一般的な方か、始めての方向けの提出ばっかりだった。なぜかと言う話を東京エリアDEBIAN勉強会の人とした。日本人の開発者は英語がわりとできなくてとか、外国人のデベロッパーとやり取りできないとか、コミュニティに参加するのが難しいとかって言うのが多いから、ソフトウエア開発に関してはレベルが低いだろうなと言う話があった。僕は確かに多言語の対応が足りないと言うのがあると思うけど、かなり能力が高い人に会ったことがある。何でたろう? もし、日本人のデベロッパーがこれを読んだら、どう思いますか?
    Send feedback   このエントリーを含むはてなブックマーク はてなブックマーク - オープンソースカンファレンス
  • Python Unconference Tokyo 1

    PyJUG

    昨日、Python Unconference Tokyo 1 というPython勉強会に参加しました。今回は初めてでしたけど、Triax という会社の開発責任者がPylonsというウェブフレームワークについて提出してくださいました。PylonsPythonで書かれてるWSGIに対応するウェブフレームワークです。Pylonsでいろいろなライブラリを連携して、SQLAlchemySQLObject、どのデータベースエンジンを使うにかからず、開発をスムーズにできます。

    実は、僕は今年の前半にPylonsを試してみた。複数のデータベースを同時に接続するのが難しくて、会社の人の中Pythonが詳しい人は僕しかいなくて、辞めましたけど、WSGI仕様がすごく面白くて、Pylonsのメリットがよくわかった。

    勉強会の後、近い居酒屋で、宴会に参加しました。皆さんと飲食しながら、Pythonについて楽しく話すことができました。できれば、また今度、行きたいと思っています。

    PyJUGの皆さん、お疲れ様でした。

    Send feedback   このエントリーを含むはてなブックマーク はてなブックマーク - Python Unconference Tokyo 1
  • 携帯プログラミングの注意すること

    皆さんはご存知だろうが、携帯はパソコンの機能の部分集合に対応しています。メーカーや、プロバイダによって、対応する部分は変わりますけども、多くの携帯を対応するように注意しないといけないことです。携帯サイトを開発する私は注意するのをよく忘れる。ですから、今までの経験に従って、注意する部分を記録したいと思っています。

    第一: エンコーディングについて

    最近でた携帯ブラウザはUTF-8や、ShiftJISや、EUCJPや、ISO-2022-JPや、日本語の多くのエンコディングを対応するけども、ShiftJISしか対応していない携帯もあります。古い携帯はShiftJISだけを対応するものはあるけど、EUCJPや、ISO-2022-JPだけを対応する携帯はほとんどないと言います。古い携帯上で、UTF-8のサイトに行けば、文字化けになります。ですから、古い携帯も新しい携帯も対応するには、ShiftJISじゃないHTMLを出すことを注意するべし。

    HTMLではShiftJISしかサポートしていない携帯は多いけども、メールの方はISO-2022-JPを使うべし。

    第二:テーブルについて

    HTMLのテーブルを対応しな携帯もありますので、テーブルを使わないようにするべし。<br>や、<center>や、もっと基本的なレイアウトを作ったほうが良い。

    第三:Cookie(クッキー)について

    ログインや、認証するには、クッキーはよく使われてるけども、携帯ブラウザ設定によって クッキーを許可してない場合もよくあります。一般的なユーザーはクッキーに詳しくないので、ちゃんと説明を書いて、クッキーを許可するかどうかをチェックするべし。

    DOCOMO(FOMA)のI-Modeの携帯は大体クッキーを対応していません。従って、DOCOMOの携帯を対応するには、クッキーが許可しなくても、作動できる認証方法を作るべし。基本的には、二つのオプションがある。1.ログインセッションをURLに乗せる。2.携帯製造番号を使う。

    ログインセッションをURLに伸せばクッキーがなくても、別のサイトに行かない限り、セッションデータを使えます。一方、別のサイトに行ったり、ブラウザを終了したり、すれば、セッションデータが無くなります。

    製造番号の送信することを対応してない携帯がありますし、ユーザーさんに説明しないといけない部分もありますし、製造番号はクッキーと大体同じように問題が起こると思います。

    第四: 画像について

    PNGをサポートしない携帯もあります。JPG、GIF, BMPを使うべし。

    Send feedback   このエントリーを含むはてなブックマーク はてなブックマーク - 携帯プログラミングの注意すること