メニュー

関連ページリンク

トップ > remote > remote - 人気ブログ(Blog)検索結果詳細 (2008年12月3日 7時)

[Mac]WiiリモコンでMacを操作する『WiiMouse』を使ってみた

what

WiiリモコンでMacを操作する『WiiMouse』 | Macの手書き説明書

「Wiiリモコンを持っている方は是非試していただきたい!!(僕持っていないので)」

ということで、やってみました。



WiiMouse のインストール

こちらは簡単

WiiMouse, Control your mac with your WiiMote へアクセスしてダウンロード、インストールです。クリックだけで終わります。


  • ダウンロード

f:id:japanrock_pg:20081124220028p:image



  • 「WiiMouse-0.1」というファイルがダウンロードされます

f:id:japanrock_pg:20081124220140p:image



  • ダブルクリックしてインストーラ起動

インストーラに従いインストールします。

f:id:japanrock_pg:20081124220219p:image

f:id:japanrock_pg:20081124220218p:image

f:id:japanrock_pg:20081124220217p:image



WiiMouse 起動

  • WiiMouse 起動

ターミナルで 「/Library/Frameworks/WiiRemote.framework/」へ移動する。

$ cd /Library/Frameworks/WiiRemote.framework/

WiiMouse と入力してEnterを押すと起動します。

$ WiiMouse

f:id:japanrock_pg:20081124220504p:image



WiiリモコンのA Bボタンを同時に押す

WiiMouse が起動したら、Macに向けてWiiリモコンを向け、A Bボタンを同時に押します。(2、3秒ほど押し続けているのがポイントかも)

そうすると、WiiMouseがWiiリモコンを認識しようとします。

成功すると、Wiiで操作できるようになります。


成功すると、以下のようなコンソールになります。

Last login: Mon Nov 24 22:13:43 on ttys000
EM114-48-158-121:~ japanrock$ cd /Library/Frameworks/WiiRemote.framework/
EM114-48-158-121:WiiRemote.framework japanrock$ WiiMouse 
2008-11-24 22:15:35.908 WiiMouse[1473:10b] Press 1 and 2 button simultaneously
2008-11-24 22:15:35.933 WiiMouse[1473:10b] Controller <Controller: 0x20a830>
Running runloop
2008-11-24 22:15:49.317 WiiMouse[1473:10b] WiiMote has been discovered.
2008-11-24 22:15:50.224 WiiMouse[1473:10b] could not open L2CAP channel ichan
2008-11-24 22:15:50.958 WiiMouse[1473:10b] could not open L2CAP channel cchan (-536870195)



ちなみに失敗すると以下のようなコンソールになります。

Last login: Mon Nov 24 20:22:42 on ttys000
EM114-48-158-121:~ japanrock$ cd /Library/Frameworks/WiiRemote.framework/
EM114-48-158-121:WiiRemote.framework japanrock$ WiiMouse 
2008-11-24 22:13:48.860 WiiMouse[1431:10b] Press 1 and 2 button simultaneously
2008-11-24 22:13:48.863 WiiMouse[1431:10b] Controller <Controller: 0x20a830>
Running runloop
2008-11-24 22:14:02.229 WiiMouse[1431:10b] WiiMote has been discovered.
2008-11-24 22:14:03.082 WiiMouse[1431:10b] could not open L2CAP channel ichan
2008-11-24 22:14:03.417 WiiMouse[1431:10b] WiiMote has been discovered.
2008-11-24 22:14:03.709 WiiMouse[1431:10b] WiiMote disconnected
2008-11-24 22:14:03.710 WiiMouse[1431:10b] Resetting preferences.
2008-11-24 22:14:03.712 WiiMouse[1431:10b] Press 1 and 2 buttons simultaneously to reconnect...



実際に動かしてみた映像

動画・無料動画はAskビデオ | WiiMouseを使ってみた


  • Wiiを左に傾けると左へ動く
  • Wiiを右に傾けると右へ動く
  • Wiiを上に向けると上へ動く
  • Wiiを上に向けると下へ動く
  • Bボタン(裏にあるボタン)を押すとクリック
  • Aボタンは右クリック(Controlを押しながらクリック)
  • 選択しているソフトによっては十字キーも動く
  • +, -, HOME, 1, 2 ボタンはどこのキーがバインドされているのかよくわからなかった




使ってみた感想

ゲームしたりすると楽しいかも!keynoteなどのスライドを進めることができるので、こちらも使えそうです。

作者:japanrock_pg

更新日:2008年11月24日 22時8分

このブログのホーム

[日記][アジャイル開発][ソフトウエア]Ruby on Rails セミナー(クックパッド)へ行ってきたメモ


what

Ruby on Rails セミナー(クックパッド)へ行ってきた。スライドのタイトルは、【524万人が利用する食のインフラ「クックパッド」のものづくり】

そこでのメモ。

※スライドの移動が少し早くてメモが追いつかなかった部分があります。




クックパッド概要

  • 1998年オープン
  • 目的:「毎日の料理を楽しみにする事で、心からの笑顔を増やす」
  • 45万品のレシピ(レシピへのアクセスの仕方はロングテール。けっこうばらばらとアクセスされている。)
  • 月間ユーザ524万人
  • Railsの中で世界第8位
  • 月間2.8億View
  • 16時〜18時がアクセスのピーク
  • 秋からバレンタインに向けてトラフィックが伸びる


サーバネットワーク

  • フロントサーバ(Apache2.2)8台
  • アプリケーションサーバ44台(?だったかな・・・22台だったかな・・・?)
  • データベースサーバ44台
  • Ruby 1.8.6
  • Rails2.0
  • モバイル部分はjpmobile
  • PCとモバイルのコントローラは分けている
  • Mongrel1.1.5
  • Mysql 4 5
  • Caistrano(デプロイ)
  • god(mongrelの再起動)
  • nagios(監視)
  • munin(モニタリング)
  • FiveRuns Manage(モニタリング)
  • Railsの理由(2006年リニューアル時に検討した結果。ほかにあまりアジャイルを意識したフレームワークがなかったから)


パフォーマンス

キャッシュ
  • ページキャッシュをメインに実施(Apacheから返すようにしてアプリケーション以下の負荷を下げる)
    • キャッシュできない部分3つ
      • ユーザ毎に異なる表示
      • アクセスログ
      • 広告

Ajaxの1つのリクエストでカバーしている。


クエリチューニング
スロークエリログ
デバックツール
  • FiveRuns TuneUp


DB分割

  • アクセス数よりもデータ量がパフォーマンスを低下させる


環境

  • プログラマは全員Mac
  • emacs (rails.el)
  • Subversion、Trac連携
  • Shinjiko
  • Mondorin クローンのコードレビューシステム


DBレプリケーション

  • acts_as_readonlyable
  • データ更新後のセレクトはマスタから行う


全文検索

  • Trittonを利用(mySQLを拡張しているのでテーブルをジョインできる)
    • 2インデックス(絞り込んだ上での全文検索)


専用URL

  • 一部のユーザーは自分専用のURLを持ってる(http://kookpad.com/kem
    • routes.rb
      • 全てのコントローラ名を検索
      • 一致しない倍に専用コントローラに渡す


全ページプレビュー機能

  • すべてのページで、任意の日付を指定して、プレビューできる。
    • Time.now を上書き


「クックパッドのものづくり」

1. つくるものを決める

重要なことは2つ。

  • Bestなことをみつける3つの輪
  • ユーザの欲求に基づいたゴール設定

Bestなことに集中する。Betterなこと、やったほうがよいことはやらない。



Bestなことをみつける3つの輪
  • やりたい(例:情熱を持って取り組める?)
  • できる(例:世界で一番になれる。得意か?)
  • やるべき(例:儲かること)

3つをすべて実現することをやる。



ユーザの欲求に基づいたゴール設定
  • eogs(emotion oriented goal setting)
    • そのサービスにかかわるキャストを立てる
    • キャスト毎の疑いようのない欲求を理解する
    • シートがクックパッド内にある
    • 欲求はかなり研究してやっている。
      • 欲求
      • なにをやれば
      • How to do
      • 成功イメージ


2. 計画する
  • スケジュールの3分割の法則
    • 設計
    • 開発
    • 質を高める

例:3週間

設計、開発、質を高める(それぞれ1週間j:同じくらい重要)

1週間で開発できるように設計する

不必要なものは削り、Bestに集中する。



  • クックパッドものづくり3分割
    • 実行
      • 例:公開前に、サービスやリニューアル日について説明しない(メリットがない)
      • サービスは言葉で説明できない(ユーザがしなくてよいような不安感がでる場合がある)


    • 無言語化
      • 機能を言葉で説明しない。
      • 一瞬で理解できるインターフェースじゃないと、使われない。
      • 最大2秒。2秒で理解できなかったらユーザは使わない。
      • 言葉で説明するのも無理。
      • ヘルプやFAQを見せるのはユーザに負担
      • そもそも読まれない


    • サービスには値段をつける
      • どんなサービスでもいくらかの価値があるか値段をつけて考える
      • 「無料だから大丈夫」という考えでは負ける
      • これは3000円だしても使うなどをちゃんと考える。
      • 無料だという理由では使わない
      • お金を払ってでも使いたいサービスが無料だと使われる
      • ウェブ以外のサービスやものは価値に対して値段がついている。
      • クックパッドは当初有料サイト(月500円)


3. 設計する(2つ)
  • サイトの設計の順番
    • 高域な設計から詳細へ
      • 用件定義、サイトマップ、繊維、ページ詳細、DB構造
      • 詳細から設計すると、機能にとらわれてしまう。
    • 設計に最低限必要なもの
      • アジャイル宣言の一節

「包括的なドキュメントよりも動くソフトウエアを重視する」

 これは、ドキュメントがないほうがいいという概念とはまったっく違う



  • 設計に最低限必要なもの(3つ)
    • 繊維(ページ繊維がおかしいとユーザがたどり着けない)
    • ページ詳細(紙。最低限のページ詳細)
    • DB構造
    • (大きくなれば、サイトマップも)


4. 開発する
  • 開発の3原則
    • Railに乗る

    • リファクタリングし続けるコードを書く

明日の自分は他人。コードが読みにくくなる。

早いRailsのバージョンアップへの対応が困難。

Railを外れそうになったらRailsの機能でできないか探す、代替がないか探す。

リファクタリングしつづけられる状態を意識する。=> テスト駆動により可能になる。現在クックパッドではここが課題。

リファクタリングを意識しないと2年が限界


    • DRY
      • 同じことを2度しない
      • railsの基本概念
      • YAGN(いずれ必要にならない)に注意



5. 質を高める
  • ユーザテスト
    • バグ発見も重要
    • ユーザにゴールを伝えて行動してもらう(実際にユーザにやってもらう)

質問などには答えない

質問が出るインターフェースは失敗

ユーザに何を考えているのか操作してもらう

  • 顔マーケティング

    • 「かうき」の法則

ウリを伝える「顔」

ライバルに勝てる「ウリ」

売りが実感できる「効き」



開発人員

6人(デザインが出来るプログラマ・広告担当、元JAVAプログラマ、インフラ担当、UNIXユーザ会幹事、キャッシュ周り担当、スーパーインターン)



感想

ユーザが欲しいものをいかにして提供するかというところを、すごく考えている。ユーザへ提供する機能への質に妥協がない。

使っているツールも参考になる物が多く、試してみたいものがたくさんあった。解説が少し早口でスライドがどんどん進むので、メモが追いつかなかった部分があるのが少し気になった・・・。

「お金を払ってでも使いたいサービスが無料だと使われる」というのは意識していきたい。

「最大2秒。2秒で理解できなかったらユーザは使わない。」こちらも意識したい項目だった。日々の忙しさに謀殺され、どんどん機能は追加するのは良いが、これが本当にユーザが欲しい物なのか、というのをちゃんと検討しないとだめかもと思った。

「設計、開発、質を高める(同じくらい重要)」ここの意識も僕は低いので改めたい。とくに設計と質を高めるの部分。

僕も設計は開発しながらやるもの見たいな意識があったけど、「詳細を作り始めると、それがほんとにユーザが欲しい物なのか」という部分を見失いがちになる。ちゃんと設計段階でユーザの疑いようのない欲求を理解する必要があると思った。

開発体制については、再構築したいなー。

作者:japanrock_pg

更新日:2008年11月21日 0時2分

このブログのホーム

[ネットワーク]RAID状態のをネットワーク経由で調べる方法

what

各サーバのRAID状態をネットワーク経由で調べたいのだが、調べ方が分からないので知る。



調べるポイント

  • ソフトウエアRAID or ハードウエアRAID?
  • RAID1 or RAID5 ro その他?



ハードウエアRAID

RAID の状態を調べる方法

RAID の状態を調べるユーティリティはいくつかあります。 ハートウェア ベース RAID には通常 RAID 構成ユーティリティが付いています。

なるほど、通常はRAIDカードに付属のユーティリティがあるのか。


RAID コントローラ

4.1 RAID コントローラのソフトウェア

RAID コントローラを用いてRAID システムを構築するには、各RAID コントローラに対応したソフトウェアを使用する必要があ

ります。RAID コントローラを制御するソフトウェアは、BIOS ユーティリティとRAID システム管理ユーティリティに大別されます。


4.2 BIOS ユーティリティ

BIOS ユーティリティはRAID コントローラ本体のBIOS ROM 内に格納されており、本体装置のPOST 画面上でホットキーを

押すことで起動します。オペレーティングシステムを起動せずにRAID コントローラの操作を行うことができます。


4.3 RAID システム管理ユーティリティ

RAID システム管理ユーティリティは、オペレーティングシステムが起動した状態で、RAID システムの構築、RAID システムの監視を行うことができます。



3wareのRAIDカードのユーティリティ

tw_cli


tw_cliの使い方

3wareのRAIDカードを使用する場合、tw_cliというコマンドラインペースのツールが利用できます。

とあり、3ware のRAIDカードである場合、状態を調べるのに使える。


$ sudo /usr/sbin/tw_cli info c0
Controller: c0
-------------
Driver:   1.02.00.032
Model:    8006-2LP
FW:       FE8S 1.05.00.068
BIOS:     BE7X 1.08.00.048
Monitor:  ME7X 1.01.00.040
Serial #: L18501A1321894
PCB:      Rev5
PCHIP:    1.30-66
ACHIP:    3.20


# of units: 1
       Unit 0: RAID 1 74.53 GB ( 156310528 blocks): OK

# of ports: 2
       Port 0: Maxtor 6Y080M0 Y20C7HLC 74.53 GB (156312576 blocks): OK(unit 0)
       Port 1: Maxtor 6Y080M0 Y20FS0GC 74.53 GB (156312576 blocks): OK(unit 0)

RAID( RAID1 ) で ちゃんとHDが2台確認されているのがわかる。



LSI1030 HW RAID コントローラ

raidctl

raidctl(1M) – RAID ハードウェアユーティリティー (SunOS リファレンスマニュアル 1M : シス

raidctl ユーティリティーは、LSI1030 HW RAID コントローラの RAID ボリュームを作成、削除、または表示します。


N8103-118 RAIDコントローラ

http://support.express.nec.co.jp/teci/tecbook-pdf/tb080714/option/RaidController.pdf#page=76 の 108ページ

http://www.express.nec.co.jp/dload/main-dl2.html

http://www.express.nec.co.jp/linux/dload/drivers/index.html

http://support.express.nec.co.jp/dload/str/2220000555/index.html




ソフトウエアRAID

ソフトウエアRAIDは、RAIDを構築するソフトによってまちまちのようだ。



/proc/mdstat

RAIDの状態を表示するには − @IT

RAIDの状態を表示するには、catコマンドで/proc/mdstatを表示すればいい(「インストール時にRAIDを構成するには」参照)。


  • cat /proc/mdstat
# cat /proc/mdstat

Personalities : [raid1]
md1 : active raid1 sdb2[1] sda2[0]
     1020032 blocks [2/2] [UU]

md2 : active raid1 sdb3[1] sda3[0]
     76589760 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
     513984 blocks [2/2] [UU]

unused devices: <none>


参考:

RAID [ FedoraCore3 Linux ]

複眼中心 : RAID1の動作確認

RAID1の構築メモ




mdadm

◇RAIDの再構築(mdadm)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆

WBEL4 、 CentOS4 及びCentOS5の インストール を行うときに RAID の構築を行うと、自動的に mdadm が用いられてRAIDが構築されます。

mdadmの設定ファイルは、 デフォルト では "/etc/mdadm.conf" となっています。




感想

ハードウエアレイドでのRAID状態の把握は、RAIDカード付属のユーティリティを利用するのが一般的な感じがしました。

ソフトウエアRAIDについては、構築したソフトやOSに管理コマンドがあるので、それを利用する感じでしょうか。

また、ネットワーク経由だと、RAIDカードが何なのかわからず、困りました・・・。


RAIDについては、ほんと初心者なので、つっこみ大歓迎でございますm(_ _)m





参考URL

RAID - Wikipedia

作者:japanrock_pg

更新日:2008年11月19日 21時13分

このブログのホーム

[セキュリティ]セッションID付きURLが Bot にインデックスされる等で、セッションID漏えい問題に対応したい


what

携帯サイトで、セッションID付きURLを利用して、セッションIDを引き回すと、セッションIDが漏えいするケースが多いため、セッションハイジャックにつながりやすいので、なるべくセッションIDを漏えいしにくい作りにしたい。

ちょっとググればたくさんこの話題は出てくるが、自分なりにまとめる。



結論

セッション付きURLを利用している限り、セッションIDの漏えいの可能性を0にすることは難しい。ただしセッションIDの漏えいとセッションハイジャックの可能性を下げることは可能なので、可能性を下げる努力をする。

一番良いのは、「ログインごとに新しいセッションIDを発行する」だと思う。

ただし、携帯サイトとPCサイトで同じセッションを利用している場合、PC側で「次回から入力を省略する」ということができなくなる。諸刃の剣ですなぁ・・・。



セッションIDが漏えいするケース

セッションID付きURLをGoogle-Botなどがインデックスして、検索結果に出てセッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 (*1) というURLがGoogle-BotなどのBotにインデックスされると、 *1 のURLがGoogleなどの検索結果に出るので、複数人が同じセッションIDを持つ可能性があり、セッションハイジャックが成立してしまう可能性がある。



リファラで他のサイトにセッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 というURLにいて、http://hogehoge.com/ というリンクがあり、アクセスした場合、リファラを出力していると、http://hogehoge.com/ のWebサーバログにセッションIDが残り、それを悪意のある人が見つけたら、セッションIDを悪用する可能性があり、セッションハイジャックしてしまう可能性がある。



セッションID付きURLをユーザーが他のユーザーへ送信してしまい、セッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 というURLを友人にメールや赤外線などで送信してしまい、友人がアクセスすると、セッションIDが漏えいしてしまう。



セッションID付きURLをソーシャルブックマークやブログ、掲示板などに登録して、セッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 をソーシャルブックマークしたり、ブログや掲示板に登録したりすると、第三者にセッションIDが漏れ悪用される可能性がある。また、そこからBotがURLをインデックスして、検索結果に出てセッションIDが漏えいするケースにつながる。



4パターンほど書いたが、もっとあると思う。



セッションIDの漏えいの可能性を下げる対策

セッションID付きURLを利用している限り、セッションIDが漏えいする可能性を0にするには大変難しい。

しかし、出来るだけの対応はしたいので、セッションIDの漏えい、セッションハイジャックの確率を下げる方法をまとめてみる。



Botがサイトを訪問した際に、セッションID付きURLを発行しない

そのサイトに訪問してくる代表的なBotを探し出し、Botのアクセス時にセッションID付きURLを発行しなければ、Botが訪問時にセッションIDをインデックスすることはなくなる。




検索エンジンにセッションID付きURLの削除申請をする

Googleなどの検索結果にセッションID付きURLが出ている場合、そのURLを削除申請して、検索結果から消してしまう。GoogleはGoogleウェブマスターツールから削除申請ができる。



セッションIDを悪用され、セッションハイジャックの可能性を下げる対策

漏えいする可能性は0にはできないので、悪用(セッションハイジャック)されることを考えて、セッションハイジャックの可能性を下げる。



携帯サイトであれば、ユーザーエージェントを確認して認証する

例えば、http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 (*2) というURLにはAさんのユーザ情報が保存されていて、Bさんが *2 を悪用して、携帯でサイトにアクセスしたときBさんはAさんに成りすませてしまう。

そこで、携帯が発行するユーザエージェントを使う。例えば、Aさんのユーザエージェントは「DoCoMo/2.0 N900i(c100;TB;W24H12)」で、Bさんのユーザエージェントは「KDDI-SA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0」だとする。

そのセッションIDを利用する際は、ユーザエージェントが「DoCoMo/2.0 N900i(c100;TB;W24H12)」であるかどうかを確認すれば、Bさんの携帯ではアクセスできない。ただし、ユーザエージェントの偽装や、同じ携帯利用していた場合は効果はないが、友人にURLを送信してしまった、検索でたまたま出てきたなど、故意でないセッションハイジャックの可能性はぐっと下がると思う。



セッションIDの有効期限を短くする

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 というURLが漏えいしても、aaed736ac56a13d24d8r40a50ea8cde4 というセッションIDが有効でなければ、他のセッションIDを発行する。そのため、セッションハイジャックされる可能性はぐっと下がる。

セッションファイル(もしくはDBにあるセッション情報)自体を削除する場合、すべてのセッションを削除すると、操作中のユーザが急にログアウト状態になってしまうため、すべてではなく、数日間以上使われていないセッションを削除するなどしたほうが良いと思う。



「セッションにIP情報を保存する」、「ログインごとに新しいセッションを発行する」

RailsによるアジャイルWebアプリケーション開発 第2版 P567より


「セッション固定攻撃の回避」


 誰かのセッションidがわかれば、そのidを使ってHTTPリクエストを作成することができます。Railsは、そのようなリクエストを受け取ると、そのリクエストが本物のユーザのものだと判断します。リクエストをしたユーザは、本物のユーザが実行できる操作をすべて許可されることになります。

 Railsはセキュアなハッシュ関数を使ってセッションidを生成するので、ユーザのセッションidが他のユーザによって推測されるための対策は十分になされているといえます。この方法で生成されるidは、実質的には乱数だとみなせる非常に大きな数です。ところが、ほとんどのセッションidを奪うのと同じ結果を得る方法が存在するのです。

 セッション固定攻撃では、攻撃者は、まずアプリケーションから有効なセッションidを何かしら取得します。そして第三者がそのセッションidを使ってアプリケーションにログインするように仕向けます。第三者がそのセッションを使ってアプリケーションにログインすれば、そのセッションidにアクセスできる攻撃者にとってもログインしたのと同様の状態になります。

 セッション固定攻撃の阻止には2つのテックにックが役に立ちます。まず、セションを作成したリクエストのIPアドレスをセッションデータ内に保持しておくことが有効な場合があります。こうすれば、IPアドレスが変化した時点でそのセッションを無効にすることにより攻撃を回避できます。ただし、この方法を使うと、ラップトップで移動先のさまざまなネットワークから接続する必要があるユーザや、自宅からPPPoE接続を使っていて割り当てられるIPアドレスの有効期限が切れるたびにアドレスが変化するユーザは、不都合を強いられることになります。

 もう1つの対策は、ユーザがログインするたびに新しいセッションを作成するようにするというものです。こうすれば、正当なユーザはアプリケーションを問題なく使い続けることができますが、攻撃者の手元には対応するセッションが存在しない無効なセッションidが残るだけです。



  • 「セッションにIP情報を保存する」

こちらについては、接続中にIPが変わるユーザや、移動が多いユーザには不都合が強いられてしまうので、そのようなユーザが見込まれるサイトには不向きですが、セキュアです。



  • 「ログインごとに新しいセッションを発行する」

こちらは、セッション情報を保持できないので、毎回ログインすることになります。「次回から入力を省略する」ということができなくなりますが、かなりセキュアになります。



PCサイトと携帯サイトがある場合、アプリケーションを分けて、セッション自体を分ける

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 (*3) が携帯のアプリケーションのセッションであるとします。PCのGoogle検索で、*3 が発見されて、アクセスされると *3 のセッションIDは有効なので使えてしまします。しかし、PCと携帯のアプリケーション自体がちがければ、*3 でアクセスしても、そのセッションIDは無効ということになります。

 ただし、携帯から携帯、PCからPCのセッションIDは従来と変わらないです。携帯のセッションIDがGoogle-botに拾われ、PCで *3 をクリックして同じセッションがセットされるということはなくなります。




おまけ - キャリアごとのCookie対応について

DoCoMo

DoCoMoの携帯ブラウザは基本的にCookie機能が利用できない。

ex.

http://www.nttdocomo.co.jp/service/data/mzone/faq/login/#p16

http://www.google.co.jp/search?hl=ja&q=docomo+cookie&lr=lang_ja



au

http://www.au.kddi.com/ezfactory/tec/spec/cookie.html

基本的に全機種Cookie対応。

しかし、SSL(端末に保管) と 非SSL(EZサーバに保管) をまたぐと、クッキーを引き継げないため、工夫が必要である。

さらに、端末に保管できるのは「WAP2.0ブラウザ搭載端末のみ」である。WAP2.0ブラウザ搭載端末以外は、セッションID付きURLなどで対応する必要がある。



SoftBank

http://creation.mb.softbank.jp/web/web_doc.html の HTTP編から抜粋。

3GC 型端末では、Cookie を用いてstatefull なセッションを実現できる。

ただし、SSL と非SSL 間でCookie の引き継ぎができない。




参考URL

ユーザエージェント(DoCoMo)

ユーザエージェント(au)

ユーザエージェント(SoftBank)

ユーザエージェント(Google)

作者:japanrock_pg

更新日:2008年11月18日 16時45分

このブログのホーム

[ソフトウエア]簡単なアンケートフォームをGoogle Spreadsheets (グーグル スプレッドシート)で作ってみる

what

Google Spreadsheets (グーグル スプレッドシート)を使って、簡単なアンケートフォームを作ってみました。


  • 利点

超簡単に作成できる

サーバを用意しなくて良い

プログラミングがかけなくても設置できる

ブログなどからリンクして集計などが可能になり、ブログの幅が広がる

Googleのインフラなので大量アクセスにも耐えられる?負荷に強い?

スプレッドシートのもともとの機能エクセルで投稿データを連携して管理できる

無料で使える

iframeが利用できるブログサービスなら、ブログパーツみたいに気軽にformが使える



  • 欠点

デザインが変えられない

広告が入る

 -formにある広告

f:id:japanrock_pg:20081114204500p:image

 -もちろん完了画面にも入る

f:id:japanrock_pg:20081114204501p:image



Google Spreadsheets (グーグル スプレッドシート)へログイン

http://docs.google.com/

Googleアカウントをもっていれば、上記からログインできます。



Spreadsheetの作成

左上の New から「Form」を選択

f:id:japanrock_pg:20081114204502p:image




formの作成

タイトルと、内容を入れて、「Done」を入れます。

f:id:japanrock_pg:20081114204503p:image



右上にある、「Save」をクリックします。

f:id:japanrock_pg:20081114204504p:image


これで、フォームが完成です。


フォームのURL

画面の下を見ると「You can view the published form here」とあり、URLがあります

f:id:japanrock_pg:20081114204505p:image


http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA



formを使ってみる

http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA

↑こちらへアクセスすると、すでにフォームができていて、使えます。


f:id:japanrock_pg:20081114204506p:image


実際に投稿してみると、ちゃんと投稿できます。




投稿された内容を確認する

管理画面から、「Show analysis」をクリックします。

f:id:japanrock_pg:20081114204507p:image


しかも、Spreadsheets に戻ると、データがあります。

f:id:japanrock_pg:20081114204508p:image



Embed form で iframe のソースが作成できる

f:id:japanrock_pg:20081114204509p:image


<iframe src="http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA" width="310" height="298" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>

iframe を使えるブログサービスなら、ブログパーツにもなりますね。



Google Spreadsheets × livedoor Blog

Google Spreadsheets の iframe を livedoor Blog に張り付けてみました。

http://blog.livedoor.jp/japanrock_test/


f:id:japanrock_pg:20081114204510p:image



ちゃんと、サイズを合わせれば、ブログパーツの完成ですね。

アンケートなどもろもろ使えそうですねー。



デザインを変更する

デフォルトは、そっけないデザインなので、デザインを変更してみましょう。

・・・・・・・と思ったら、できない・・?・・orz

変更できる画面が見当たらない・・・。

できるといいのになー。



完了画面に「ありがとー!」のテキストを表示する

「More actions」jから「Edit confirmation」を選択

f:id:japanrock_pg:20081114204511p:image


以下のような画面が出るので、「ありがとー!」を入力

f:id:japanrock_pg:20081114204512p:image


「Save」をクリックして保存する。


で、実際に投稿して試してみる。

f:id:japanrock_pg:20081114204513p:image


こうなりました。



うーん。便利だなー。個人でアンケート取りたい時なんて、これで十分すぎる。これから使っていこーっと。

作者:japanrock_pg

更新日:2008年11月14日 20時56分

このブログのホーム

[Mac]WiiリモコンでMacを操作する『WiiMouse』を使ってみた

what

WiiリモコンでMacを操作する『WiiMouse』 | Macの手書き説明書

「Wiiリモコンを持っている方は是非試していただきたい!!(僕持っていないので)」

ということで、やってみました。



WiiMouse のインストール

こちらは簡単

WiiMouse, Control your mac with your WiiMote へアクセスしてダウンロード、インストールです。クリックだけで終わります。


  • ダウンロード

f:id:japanrock_pg:20081124220028p:image



  • 「WiiMouse-0.1」というファイルがダウンロードされます

f:id:japanrock_pg:20081124220140p:image



  • ダブルクリックしてインストーラ起動

インストーラに従いインストールします。

f:id:japanrock_pg:20081124220219p:image

f:id:japanrock_pg:20081124220218p:image

f:id:japanrock_pg:20081124220217p:image



WiiMouse 起動

  • WiiMouse 起動

ターミナルで 「/Library/Frameworks/WiiRemote.framework/」へ移動する。

$ cd /Library/Frameworks/WiiRemote.framework/

WiiMouse と入力してEnterを押すと起動します。

$ WiiMouse

f:id:japanrock_pg:20081124220504p:image



WiiリモコンのA Bボタンを同時に押す

WiiMouse が起動したら、Macに向けてWiiリモコンを向け、A Bボタンを同時に押します。(2、3秒ほど押し続けているのがポイントかも)

そうすると、WiiMouseがWiiリモコンを認識しようとします。

成功すると、Wiiで操作できるようになります。


成功すると、以下のようなコンソールになります。

Last login: Mon Nov 24 22:13:43 on ttys000
EM114-48-158-121:~ japanrock$ cd /Library/Frameworks/WiiRemote.framework/
EM114-48-158-121:WiiRemote.framework japanrock$ WiiMouse 
2008-11-24 22:15:35.908 WiiMouse[1473:10b] Press 1 and 2 button simultaneously
2008-11-24 22:15:35.933 WiiMouse[1473:10b] Controller <Controller: 0x20a830>
Running runloop
2008-11-24 22:15:49.317 WiiMouse[1473:10b] WiiMote has been discovered.
2008-11-24 22:15:50.224 WiiMouse[1473:10b] could not open L2CAP channel ichan
2008-11-24 22:15:50.958 WiiMouse[1473:10b] could not open L2CAP channel cchan (-536870195)



ちなみに失敗すると以下のようなコンソールになります。

Last login: Mon Nov 24 20:22:42 on ttys000
EM114-48-158-121:~ japanrock$ cd /Library/Frameworks/WiiRemote.framework/
EM114-48-158-121:WiiRemote.framework japanrock$ WiiMouse 
2008-11-24 22:13:48.860 WiiMouse[1431:10b] Press 1 and 2 button simultaneously
2008-11-24 22:13:48.863 WiiMouse[1431:10b] Controller <Controller: 0x20a830>
Running runloop
2008-11-24 22:14:02.229 WiiMouse[1431:10b] WiiMote has been discovered.
2008-11-24 22:14:03.082 WiiMouse[1431:10b] could not open L2CAP channel ichan
2008-11-24 22:14:03.417 WiiMouse[1431:10b] WiiMote has been discovered.
2008-11-24 22:14:03.709 WiiMouse[1431:10b] WiiMote disconnected
2008-11-24 22:14:03.710 WiiMouse[1431:10b] Resetting preferences.
2008-11-24 22:14:03.712 WiiMouse[1431:10b] Press 1 and 2 buttons simultaneously to reconnect...



実際に動かしてみた映像

動画・無料動画はAskビデオ | WiiMouseを使ってみた


  • Wiiを左に傾けると左へ動く
  • Wiiを右に傾けると右へ動く
  • Wiiを上に向けると上へ動く
  • Wiiを上に向けると下へ動く
  • Bボタン(裏にあるボタン)を押すとクリック
  • Aボタンは右クリック(Controlを押しながらクリック)
  • 選択しているソフトによっては十字キーも動く
  • +, -, HOME, 1, 2 ボタンはどこのキーがバインドされているのかよくわからなかった




使ってみた感想

ゲームしたりすると楽しいかも!keynoteなどのスライドを進めることができるので、こちらも使えそうです。

作者:japanrock_pg

更新日:2008年11月24日 13時8分

このブログのホーム

[日記][アジャイル開発][ソフトウエア]Ruby on Rails セミナー(クックパッド)へ行ってきたメモ


what

Ruby on Rails セミナー(クックパッド)へ行ってきた。スライドのタイトルは、【524万人が利用する食のインフラ「クックパッド」のものづくり】

そこでのメモ。

※スライドの移動が少し早くてメモが追いつかなかった部分があります。




クックパッド概要

  • 1998年オープン
  • 目的:「毎日の料理を楽しみにする事で、心からの笑顔を増やす」
  • 45万品のレシピ(レシピへのアクセスの仕方はロングテール。けっこうばらばらとアクセスされている。)
  • 月間ユーザ524万人
  • Railsの中で世界第8位
  • 月間2.8億View
  • 16時〜18時がアクセスのピーク
  • 秋からバレンタインに向けてトラフィックが伸びる


サーバネットワーク

  • フロントサーバ(Apache2.2)8台
  • アプリケーションサーバ44台(?だったかな・・・22台だったかな・・・?)
  • データベースサーバ44台
  • Ruby 1.8.6
  • Rails2.0
  • モバイル部分はjpmobile
  • PCとモバイルのコントローラは分けている
  • Mongrel1.1.5
  • Mysql 4 5
  • Caistrano(デプロイ)
  • god(mongrelの再起動)
  • nagios(監視)
  • munin(モニタリング)
  • FiveRuns Manage(モニタリング)
  • Railsの理由(2006年リニューアル時に検討した結果。ほかにあまりアジャイルを意識したフレームワークがなかったから)


パフォーマンス

キャッシュ
  • ページキャッシュをメインに実施(Apacheから返すようにしてアプリケーション以下の負荷を下げる)
    • キャッシュできない部分3つ
      • ユーザ毎に異なる表示
      • アクセスログ
      • 広告

Ajaxの1つのリクエストでカバーしている。


クエリチューニング
スロークエリログ
デバックツール
  • FiveRuns TuneUp


DB分割

  • アクセス数よりもデータ量がパフォーマンスを低下させる


環境

  • プログラマは全員Mac
  • emacs (rails.el)
  • Subversion、Trac連携
  • Shinjiko
  • Mondorin クローンのコードレビューシステム


DBレプリケーション

  • acts_as_readonlyable
  • データ更新後のセレクトはマスタから行う


全文検索

  • Trittonを利用(mySQLを拡張しているのでテーブルをジョインできる)
    • 2インデックス(絞り込んだ上での全文検索)


専用URL

  • 一部のユーザーは自分専用のURLを持ってる(http://kookpad.com/kem
    • routes.rb
      • 全てのコントローラ名を検索
      • 一致しない倍に専用コントローラに渡す


全ページプレビュー機能

  • すべてのページで、任意の日付を指定して、プレビューできる。
    • Time.now を上書き


「クックパッドのものづくり」

1. つくるものを決める

重要なことは2つ。

  • Bestなことをみつける3つの輪
  • ユーザの欲求に基づいたゴール設定

Bestなことに集中する。Betterなこと、やったほうがよいことはやらない。



Bestなことをみつける3つの輪
  • やりたい(例:情熱を持って取り組める?)
  • できる(例:世界で一番になれる。得意か?)
  • やるべき(例:儲かること)

3つをすべて実現することをやる。



ユーザの欲求に基づいたゴール設定
  • eogs(emotion oriented goal setting)
    • そのサービスにかかわるキャストを立てる
    • キャスト毎の疑いようのない欲求を理解する
    • シートがクックパッド内にある
    • 欲求はかなり研究してやっている。
      • 欲求
      • なにをやれば
      • How to do
      • 成功イメージ


2. 計画する
  • スケジュールの3分割の法則
    • 設計
    • 開発
    • 質を高める

例:3週間

設計、開発、質を高める(それぞれ1週間j:同じくらい重要)

1週間で開発できるように設計する

不必要なものは削り、Bestに集中する。



  • クックパッドものづくり3分割
    • 実行
      • 例:公開前に、サービスやリニューアル日について説明しない(メリットがない)
      • サービスは言葉で説明できない(ユーザがしなくてよいような不安感がでる場合がある)


    • 無言語化
      • 機能を言葉で説明しない。
      • 一瞬で理解できるインターフェースじゃないと、使われない。
      • 最大2秒。2秒で理解できなかったらユーザは使わない。
      • 言葉で説明するのも無理。
      • ヘルプやFAQを見せるのはユーザに負担
      • そもそも読まれない


    • サービスには値段をつける
      • どんなサービスでもいくらかの価値があるか値段をつけて考える
      • 「無料だから大丈夫」という考えでは負ける
      • これは3000円だしても使うなどをちゃんと考える。
      • 無料だという理由では使わない
      • お金を払ってでも使いたいサービスが無料だと使われる
      • ウェブ以外のサービスやものは価値に対して値段がついている。
      • クックパッドは当初有料サイト(月500円)


3. 設計する(2つ)
  • サイトの設計の順番
    • 高域な設計から詳細へ
      • 用件定義、サイトマップ、繊維、ページ詳細、DB構造
      • 詳細から設計すると、機能にとらわれてしまう。
    • 設計に最低限必要なもの
      • アジャイル宣言の一節

「包括的なドキュメントよりも動くソフトウエアを重視する」

 これは、ドキュメントがないほうがいいという概念とはまったっく違う



  • 設計に最低限必要なもの(3つ)
    • 繊維(ページ繊維がおかしいとユーザがたどり着けない)
    • ページ詳細(紙。最低限のページ詳細)
    • DB構造
    • (大きくなれば、サイトマップも)


4. 開発する
  • 開発の3原則
    • Railに乗る

    • リファクタリングし続けるコードを書く

明日の自分は他人。コードが読みにくくなる。

早いRailsのバージョンアップへの対応が困難。

Railを外れそうになったらRailsの機能でできないか探す、代替がないか探す。

リファクタリングしつづけられる状態を意識する。=> テスト駆動により可能になる。現在クックパッドではここが課題。

リファクタリングを意識しないと2年が限界


    • DRY
      • 同じことを2度しない
      • railsの基本概念
      • YAGN(いずれ必要にならない)に注意



5. 質を高める
  • ユーザテスト
    • バグ発見も重要
    • ユーザにゴールを伝えて行動してもらう(実際にユーザにやってもらう)

質問などには答えない

質問が出るインターフェースは失敗

ユーザに何を考えているのか操作してもらう

  • 顔マーケティング

    • 「かうき」の法則

ウリを伝える「顔」

ライバルに勝てる「ウリ」

売りが実感できる「効き」



開発人員

6人(デザインが出来るプログラマ・広告担当、元JAVAプログラマ、インフラ担当、UNIXユーザ会幹事、キャッシュ周り担当、スーパーインターン)



感想

ユーザが欲しいものをいかにして提供するかというところを、すごく考えている。ユーザへ提供する機能への質に妥協がない。

使っているツールも参考になる物が多く、試してみたいものがたくさんあった。解説が少し早口でスライドがどんどん進むので、メモが追いつかなかった部分があるのが少し気になった・・・。

「お金を払ってでも使いたいサービスが無料だと使われる」というのは意識していきたい。

「最大2秒。2秒で理解できなかったらユーザは使わない。」こちらも意識したい項目だった。日々の忙しさに謀殺され、どんどん機能は追加するのは良いが、これが本当にユーザが欲しい物なのか、というのをちゃんと検討しないとだめかもと思った。

「設計、開発、質を高める(同じくらい重要)」ここの意識も僕は低いので改めたい。とくに設計と質を高めるの部分。

僕も設計は開発しながらやるもの見たいな意識があったけど、「詳細を作り始めると、それがほんとにユーザが欲しい物なのか」という部分を見失いがちになる。ちゃんと設計段階でユーザの疑いようのない欲求を理解する必要があると思った。

開発体制については、再構築したいなー。

作者:japanrock_pg

更新日:2008年11月20日 15時2分

このブログのホーム

[ネットワーク]RAID状態のをネットワーク経由で調べる方法

what

各サーバのRAID状態をネットワーク経由で調べたいのだが、調べ方が分からないので知る。



調べるポイント

  • ソフトウエアRAID or ハードウエアRAID?
  • RAID1 or RAID5 ro その他?



ハードウエアRAID

RAID の状態を調べる方法

RAID の状態を調べるユーティリティはいくつかあります。 ハートウェア ベース RAID には通常 RAID 構成ユーティリティが付いています。

なるほど、通常はRAIDカードに付属のユーティリティがあるのか。


RAID コントローラ

4.1 RAID コントローラのソフトウェア

RAID コントローラを用いてRAID システムを構築するには、各RAID コントローラに対応したソフトウェアを使用する必要があ

ります。RAID コントローラを制御するソフトウェアは、BIOS ユーティリティとRAID システム管理ユーティリティに大別されます。


4.2 BIOS ユーティリティ

BIOS ユーティリティはRAID コントローラ本体のBIOS ROM 内に格納されており、本体装置のPOST 画面上でホットキーを

押すことで起動します。オペレーティングシステムを起動せずにRAID コントローラの操作を行うことができます。


4.3 RAID システム管理ユーティリティ

RAID システム管理ユーティリティは、オペレーティングシステムが起動した状態で、RAID システムの構築、RAID システムの監視を行うことができます。



3wareのRAIDカードのユーティリティ

tw_cli


tw_cliの使い方

3wareのRAIDカードを使用する場合、tw_cliというコマンドラインペースのツールが利用できます。

とあり、3ware のRAIDカードである場合、状態を調べるのに使える。


$ sudo /usr/sbin/tw_cli info c0
Controller: c0
-------------
Driver:   1.02.00.032
Model:    8006-2LP
FW:       FE8S 1.05.00.068
BIOS:     BE7X 1.08.00.048
Monitor:  ME7X 1.01.00.040
Serial #: L18501A1321894
PCB:      Rev5
PCHIP:    1.30-66
ACHIP:    3.20


# of units: 1
       Unit 0: RAID 1 74.53 GB ( 156310528 blocks): OK

# of ports: 2
       Port 0: Maxtor 6Y080M0 Y20C7HLC 74.53 GB (156312576 blocks): OK(unit 0)
       Port 1: Maxtor 6Y080M0 Y20FS0GC 74.53 GB (156312576 blocks): OK(unit 0)

RAID( RAID1 ) で ちゃんとHDが2台確認されているのがわかる。



LSI1030 HW RAID コントローラ

raidctl

raidctl(1M) – RAID ハードウェアユーティリティー (SunOS リファレンスマニュアル 1M : シス

raidctl ユーティリティーは、LSI1030 HW RAID コントローラの RAID ボリュームを作成、削除、または表示します。


N8103-118 RAIDコントローラ

http://support.express.nec.co.jp/teci/tecbook-pdf/tb080714/option/RaidController.pdf#page=76 の 108ページ

http://www.express.nec.co.jp/dload/main-dl2.html

http://www.express.nec.co.jp/linux/dload/drivers/index.html

http://support.express.nec.co.jp/dload/str/2220000555/index.html




ソフトウエアRAID

ソフトウエアRAIDは、RAIDを構築するソフトによってまちまちのようだ。



/proc/mdstat

RAIDの状態を表示するには − @IT

RAIDの状態を表示するには、catコマンドで/proc/mdstatを表示すればいい(「インストール時にRAIDを構成するには」参照)。


  • cat /proc/mdstat
# cat /proc/mdstat

Personalities : [raid1]
md1 : active raid1 sdb2[1] sda2[0]
     1020032 blocks [2/2] [UU]

md2 : active raid1 sdb3[1] sda3[0]
     76589760 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
     513984 blocks [2/2] [UU]

unused devices: <none>


参考:

RAID [ FedoraCore3 Linux ]

複眼中心 : RAID1の動作確認

RAID1の構築メモ




mdadm

◇RAIDの再構築(mdadm)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆

WBEL4 、 CentOS4 及びCentOS5の インストール を行うときに RAID の構築を行うと、自動的に mdadm が用いられてRAIDが構築されます。

mdadmの設定ファイルは、 デフォルト では "/etc/mdadm.conf" となっています。




感想

ハードウエアレイドでのRAID状態の把握は、RAIDカード付属のユーティリティを利用するのが一般的な感じがしました。

ソフトウエアRAIDについては、構築したソフトやOSに管理コマンドがあるので、それを利用する感じでしょうか。

また、ネットワーク経由だと、RAIDカードが何なのかわからず、困りました・・・。


RAIDについては、ほんと初心者なので、つっこみ大歓迎でございますm(_ _)m





参考URL

RAID - Wikipedia

作者:japanrock_pg

更新日:2008年11月19日 12時13分

このブログのホーム

[セキュリティ]セッションID付きURLが Bot にインデックスされる等で、セッションID漏えい問題に対応したい


what

携帯サイトで、セッションID付きURLを利用して、セッションIDを引き回すと、セッションIDが漏えいするケースが多いため、セッションハイジャックにつながりやすいので、なるべくセッションIDを漏えいしにくい作りにしたい。

ちょっとググればたくさんこの話題は出てくるが、自分なりにまとめる。



結論

セッション付きURLを利用している限り、セッションIDの漏えいの可能性を0にすることは難しい。ただしセッションIDの漏えいとセッションハイジャックの可能性を下げることは可能なので、可能性を下げる努力をする。

一番良いのは、「ログインごとに新しいセッションIDを発行する」だと思う。

ただし、携帯サイトとPCサイトで同じセッションを利用している場合、PC側で「次回から入力を省略する」ということができなくなる。諸刃の剣ですなぁ・・・。



セッションIDが漏えいするケース

セッションID付きURLをGoogle-Botなどがインデックスして、検索結果に出てセッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 (*1) というURLがGoogle-BotなどのBotにインデックスされると、 *1 のURLがGoogleなどの検索結果に出るので、複数人が同じセッションIDを持つ可能性があり、セッションハイジャックが成立してしまう可能性がある。



リファラで他のサイトにセッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 というURLにいて、http://hogehoge.com/ というリンクがあり、アクセスした場合、リファラを出力していると、http://hogehoge.com/ のWebサーバログにセッションIDが残り、それを悪意のある人が見つけたら、セッションIDを悪用する可能性があり、セッションハイジャックしてしまう可能性がある。



セッションID付きURLをユーザーが他のユーザーへ送信してしまい、セッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 というURLを友人にメールや赤外線などで送信してしまい、友人がアクセスすると、セッションIDが漏えいしてしまう。



セッションID付きURLをソーシャルブックマークやブログ、掲示板などに登録して、セッションIDが漏えいするケース

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 をソーシャルブックマークしたり、ブログや掲示板に登録したりすると、第三者にセッションIDが漏れ悪用される可能性がある。また、そこからBotがURLをインデックスして、検索結果に出てセッションIDが漏えいするケースにつながる。



4パターンほど書いたが、もっとあると思う。



セッションIDの漏えいの可能性を下げる対策

セッションID付きURLを利用している限り、セッションIDが漏えいする可能性を0にするには大変難しい。

しかし、出来るだけの対応はしたいので、セッションIDの漏えい、セッションハイジャックの確率を下げる方法をまとめてみる。



Botがサイトを訪問した際に、セッションID付きURLを発行しない

そのサイトに訪問してくる代表的なBotを探し出し、Botのアクセス時にセッションID付きURLを発行しなければ、Botが訪問時にセッションIDをインデックスすることはなくなる。




検索エンジンにセッションID付きURLの削除申請をする

Googleなどの検索結果にセッションID付きURLが出ている場合、そのURLを削除申請して、検索結果から消してしまう。GoogleはGoogleウェブマスターツールから削除申請ができる。



セッションIDを悪用され、セッションハイジャックの可能性を下げる対策

漏えいする可能性は0にはできないので、悪用(セッションハイジャック)されることを考えて、セッションハイジャックの可能性を下げる。



携帯サイトであれば、ユーザーエージェントを確認して認証する

例えば、http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 (*2) というURLにはAさんのユーザ情報が保存されていて、Bさんが *2 を悪用して、携帯でサイトにアクセスしたときBさんはAさんに成りすませてしまう。

そこで、携帯が発行するユーザエージェントを使う。例えば、Aさんのユーザエージェントは「DoCoMo/2.0 N900i(c100;TB;W24H12)」で、Bさんのユーザエージェントは「KDDI-SA31 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0」だとする。

そのセッションIDを利用する際は、ユーザエージェントが「DoCoMo/2.0 N900i(c100;TB;W24H12)」であるかどうかを確認すれば、Bさんの携帯ではアクセスできない。ただし、ユーザエージェントの偽装や、同じ携帯利用していた場合は効果はないが、友人にURLを送信してしまった、検索でたまたま出てきたなど、故意でないセッションハイジャックの可能性はぐっと下がると思う。



セッションIDの有効期限を短くする

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 というURLが漏えいしても、aaed736ac56a13d24d8r40a50ea8cde4 というセッションIDが有効でなければ、他のセッションIDを発行する。そのため、セッションハイジャックされる可能性はぐっと下がる。

セッションファイル(もしくはDBにあるセッション情報)自体を削除する場合、すべてのセッションを削除すると、操作中のユーザが急にログアウト状態になってしまうため、すべてではなく、数日間以上使われていないセッションを削除するなどしたほうが良いと思う。



「セッションにIP情報を保存する」、「ログインごとに新しいセッションを発行する」

RailsによるアジャイルWebアプリケーション開発 第2版 P567より


「セッション固定攻撃の回避」


 誰かのセッションidがわかれば、そのidを使ってHTTPリクエストを作成することができます。Railsは、そのようなリクエストを受け取ると、そのリクエストが本物のユーザのものだと判断します。リクエストをしたユーザは、本物のユーザが実行できる操作をすべて許可されることになります。

 Railsはセキュアなハッシュ関数を使ってセッションidを生成するので、ユーザのセッションidが他のユーザによって推測されるための対策は十分になされているといえます。この方法で生成されるidは、実質的には乱数だとみなせる非常に大きな数です。ところが、ほとんどのセッションidを奪うのと同じ結果を得る方法が存在するのです。

 セッション固定攻撃では、攻撃者は、まずアプリケーションから有効なセッションidを何かしら取得します。そして第三者がそのセッションidを使ってアプリケーションにログインするように仕向けます。第三者がそのセッションを使ってアプリケーションにログインすれば、そのセッションidにアクセスできる攻撃者にとってもログインしたのと同様の状態になります。

 セッション固定攻撃の阻止には2つのテックにックが役に立ちます。まず、セションを作成したリクエストのIPアドレスをセッションデータ内に保持しておくことが有効な場合があります。こうすれば、IPアドレスが変化した時点でそのセッションを無効にすることにより攻撃を回避できます。ただし、この方法を使うと、ラップトップで移動先のさまざまなネットワークから接続する必要があるユーザや、自宅からPPPoE接続を使っていて割り当てられるIPアドレスの有効期限が切れるたびにアドレスが変化するユーザは、不都合を強いられることになります。

 もう1つの対策は、ユーザがログインするたびに新しいセッションを作成するようにするというものです。こうすれば、正当なユーザはアプリケーションを問題なく使い続けることができますが、攻撃者の手元には対応するセッションが存在しない無効なセッションidが残るだけです。



  • 「セッションにIP情報を保存する」

こちらについては、接続中にIPが変わるユーザや、移動が多いユーザには不都合が強いられてしまうので、そのようなユーザが見込まれるサイトには不向きですが、セキュアです。



  • 「ログインごとに新しいセッションを発行する」

こちらは、セッション情報を保持できないので、毎回ログインすることになります。「次回から入力を省略する」ということができなくなりますが、かなりセキュアになります。



PCサイトと携帯サイトがある場合、アプリケーションを分けて、セッション自体を分ける

http://example.com/mobile?_session_id=aaed736ac56a13d24d8r40a50ea8cde4 (*3) が携帯のアプリケーションのセッションであるとします。PCのGoogle検索で、*3 が発見されて、アクセスされると *3 のセッションIDは有効なので使えてしまします。しかし、PCと携帯のアプリケーション自体がちがければ、*3 でアクセスしても、そのセッションIDは無効ということになります。

 ただし、携帯から携帯、PCからPCのセッションIDは従来と変わらないです。携帯のセッションIDがGoogle-botに拾われ、PCで *3 をクリックして同じセッションがセットされるということはなくなります。




おまけ - キャリアごとのCookie対応について

DoCoMo

DoCoMoの携帯ブラウザは基本的にCookie機能が利用できない。

ex.

http://www.nttdocomo.co.jp/service/data/mzone/faq/login/#p16

http://www.google.co.jp/search?hl=ja&q=docomo+cookie&lr=lang_ja



au

http://www.au.kddi.com/ezfactory/tec/spec/cookie.html

基本的に全機種Cookie対応。

しかし、SSL(端末に保管) と 非SSL(EZサーバに保管) をまたぐと、クッキーを引き継げないため、工夫が必要である。

さらに、端末に保管できるのは「WAP2.0ブラウザ搭載端末のみ」である。WAP2.0ブラウザ搭載端末以外は、セッションID付きURLなどで対応する必要がある。



SoftBank

http://creation.mb.softbank.jp/web/web_doc.html の HTTP編から抜粋。

3GC 型端末では、Cookie を用いてstatefull なセッションを実現できる。

ただし、SSL と非SSL 間でCookie の引き継ぎができない。




参考URL

ユーザエージェント(DoCoMo)

ユーザエージェント(au)

ユーザエージェント(SoftBank)

ユーザエージェント(Google)

作者:japanrock_pg

更新日:2008年11月18日 7時45分

このブログのホーム

[ソフトウエア]簡単なアンケートフォームをGoogle Spreadsheets (グーグル スプレッドシート)で作ってみる

what

Google Spreadsheets (グーグル スプレッドシート)を使って、簡単なアンケートフォームを作ってみました。


  • 利点

超簡単に作成できる

サーバを用意しなくて良い

プログラミングがかけなくても設置できる

ブログなどからリンクして集計などが可能になり、ブログの幅が広がる

Googleのインフラなので大量アクセスにも耐えられる?負荷に強い?

スプレッドシートのもともとの機能エクセルで投稿データを連携して管理できる

無料で使える

iframeが利用できるブログサービスなら、ブログパーツみたいに気軽にformが使える



  • 欠点

デザインが変えられない

広告が入る

 -formにある広告

f:id:japanrock_pg:20081114204500p:image

 -もちろん完了画面にも入る

f:id:japanrock_pg:20081114204501p:image



Google Spreadsheets (グーグル スプレッドシート)へログイン

http://docs.google.com/

Googleアカウントをもっていれば、上記からログインできます。



Spreadsheetの作成

左上の New から「Form」を選択

f:id:japanrock_pg:20081114204502p:image




formの作成

タイトルと、内容を入れて、「Done」を入れます。

f:id:japanrock_pg:20081114204503p:image



右上にある、「Save」をクリックします。

f:id:japanrock_pg:20081114204504p:image


これで、フォームが完成です。


フォームのURL

画面の下を見ると「You can view the published form here」とあり、URLがあります

f:id:japanrock_pg:20081114204505p:image


http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA



formを使ってみる

http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA

↑こちらへアクセスすると、すでにフォームができていて、使えます。


f:id:japanrock_pg:20081114204506p:image


実際に投稿してみると、ちゃんと投稿できます。




投稿された内容を確認する

管理画面から、「Show analysis」をクリックします。

f:id:japanrock_pg:20081114204507p:image


しかも、Spreadsheets に戻ると、データがあります。

f:id:japanrock_pg:20081114204508p:image



Embed form で iframe のソースが作成できる

f:id:japanrock_pg:20081114204509p:image


<iframe src="http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA" width="310" height="298" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>

iframe を使えるブログサービスなら、ブログパーツにもなりますね。



Google Spreadsheets × livedoor Blog

Google Spreadsheets の iframe を livedoor Blog に張り付けてみました。

http://blog.livedoor.jp/japanrock_test/


f:id:japanrock_pg:20081114204510p:image



ちゃんと、サイズを合わせれば、ブログパーツの完成ですね。

アンケートなどもろもろ使えそうですねー。



デザインを変更する

デフォルトは、そっけないデザインなので、デザインを変更してみましょう。

・・・・・・・と思ったら、できない・・?・・orz

変更できる画面が見当たらない・・・。

できるといいのになー。



完了画面に「ありがとー!」のテキストを表示する

「More actions」jから「Edit confirmation」を選択

f:id:japanrock_pg:20081114204511p:image


以下のような画面が出るので、「ありがとー!」を入力

f:id:japanrock_pg:20081114204512p:image


「Save」をクリックして保存する。


で、実際に投稿して試してみる。

f:id:japanrock_pg:20081114204513p:image


こうなりました。



うーん。便利だなー。個人でアンケート取りたい時なんて、これで十分すぎる。これから使っていこーっと。

作者:japanrock_pg

更新日:2008年11月14日 11時56分

このブログのホーム