レースクイーン情報
レースクイーンを各種ブログ(Blog)から一括検索します。
トップ > 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 へアクセスしてダウンロード、インストールです。クリックだけで終わります。
- ダウンロード
- 「WiiMouse-0.1」というファイルがダウンロードされます
- ダブルクリックしてインストーラ起動
インストーラに従いインストールします。
WiiMouse 起動
- WiiMouse 起動
ターミナルで 「/Library/Frameworks/WiiRemote.framework/」へ移動する。
$ cd /Library/Frameworks/WiiRemote.framework/
WiiMouse と入力してEnterを押すと起動します。
$ WiiMouse
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
45 - Caistrano(デプロイ)
- god(mongrelの再起動)
- nagios(監視)
- munin(モニタリング)
- FiveRuns Manage(モニタリング)
- Railsの理由(2006年リニューアル時に検討した結果。ほかにあまりアジャイルを意識したフレームワークがなかったから)
パフォーマンス
キャッシュ
- ページキャッシュをメインに実施(Apacheから返すようにしてアプリケーション以下の負荷を下げる)
- キャッシュできない部分3つ
- ユーザ毎に異なる表示
- アクセスログ
- 広告
- キャッシュできない部分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
- 全てのコントローラ名を検索
- 一致しない倍に専用コントローラに渡す
- 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カードに付属のユーティリティがあるのか。
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
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の状態を表示するには、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>
参考:
mdadm
◇RAIDの再構築(mdadm)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆
WBEL4 、 CentOS4 及びCentOS5の インストール を行うときに RAID の構築を行うと、自動的に mdadm が用いられてRAIDが構築されます。
mdadmの設定ファイルは、 デフォルト では "/etc/mdadm.conf" となっています。
感想
ハードウエアレイドでのRAID状態の把握は、RAIDカード付属のユーティリティを利用するのが一般的な感じがしました。
ソフトウエアRAIDについては、構築したソフトやOSに管理コマンドがあるので、それを利用する感じでしょうか。
また、ネットワーク経由だと、RAIDカードが何なのかわからず、困りました・・・。
RAIDについては、ほんと初心者なので、つっこみ大歓迎でございますm(_ _)m
参考URL
作者: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
作者:japanrock_pg
更新日:2008年11月18日 16時45分
[ソフトウエア]簡単なアンケートフォームをGoogle Spreadsheets (グーグル スプレッドシート)で作ってみる
what
Google Spreadsheets (グーグル スプレッドシート)を使って、簡単なアンケートフォームを作ってみました。
- 利点
超簡単に作成できる
サーバを用意しなくて良い
プログラミングがかけなくても設置できる
ブログなどからリンクして集計などが可能になり、ブログの幅が広がる
Googleのインフラなので大量アクセスにも耐えられる?負荷に強い?
スプレッドシートのもともとの機能エクセルで投稿データを連携して管理できる
無料で使える
iframeが利用できるブログサービスなら、ブログパーツみたいに気軽にformが使える
- 欠点
デザインが変えられない
広告が入る
-formにある広告
-もちろん完了画面にも入る
Google Spreadsheets (グーグル スプレッドシート)へログイン
Googleアカウントをもっていれば、上記からログインできます。
Spreadsheetの作成
左上の New から「Form」を選択
formの作成
タイトルと、内容を入れて、「Done」を入れます。
右上にある、「Save」をクリックします。
これで、フォームが完成です。
フォームのURL
画面の下を見ると「You can view the published form here」とあり、URLがあります
http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA
formを使ってみる
http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA
↑こちらへアクセスすると、すでにフォームができていて、使えます。
実際に投稿してみると、ちゃんと投稿できます。
投稿された内容を確認する
管理画面から、「Show analysis」をクリックします。
しかも、Spreadsheets に戻ると、データがあります。
Embed form で iframe のソースが作成できる
<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/
ちゃんと、サイズを合わせれば、ブログパーツの完成ですね。
アンケートなどもろもろ使えそうですねー。
デザインを変更する
デフォルトは、そっけないデザインなので、デザインを変更してみましょう。
・・・・・・・と思ったら、できない・・?・・orz
変更できる画面が見当たらない・・・。
できるといいのになー。
完了画面に「ありがとー!」のテキストを表示する
「More actions」jから「Edit confirmation」を選択
以下のような画面が出るので、「ありがとー!」を入力
「Save」をクリックして保存する。
で、実際に投稿して試してみる。
こうなりました。
うーん。便利だなー。個人でアンケート取りたい時なんて、これで十分すぎる。これから使っていこーっと。
作者: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 へアクセスしてダウンロード、インストールです。クリックだけで終わります。
- ダウンロード
- 「WiiMouse-0.1」というファイルがダウンロードされます
- ダブルクリックしてインストーラ起動
インストーラに従いインストールします。
WiiMouse 起動
- WiiMouse 起動
ターミナルで 「/Library/Frameworks/WiiRemote.framework/」へ移動する。
$ cd /Library/Frameworks/WiiRemote.framework/
WiiMouse と入力してEnterを押すと起動します。
$ WiiMouse
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
45 - Caistrano(デプロイ)
- god(mongrelの再起動)
- nagios(監視)
- munin(モニタリング)
- FiveRuns Manage(モニタリング)
- Railsの理由(2006年リニューアル時に検討した結果。ほかにあまりアジャイルを意識したフレームワークがなかったから)
パフォーマンス
キャッシュ
- ページキャッシュをメインに実施(Apacheから返すようにしてアプリケーション以下の負荷を下げる)
- キャッシュできない部分3つ
- ユーザ毎に異なる表示
- アクセスログ
- 広告
- キャッシュできない部分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
- 全てのコントローラ名を検索
- 一致しない倍に専用コントローラに渡す
- 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カードに付属のユーティリティがあるのか。
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
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の状態を表示するには、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>
参考:
mdadm
◇RAIDの再構築(mdadm)◇初心者のためのLinuxサーバー構築講座☆お便利.com☆
WBEL4 、 CentOS4 及びCentOS5の インストール を行うときに RAID の構築を行うと、自動的に mdadm が用いられてRAIDが構築されます。
mdadmの設定ファイルは、 デフォルト では "/etc/mdadm.conf" となっています。
感想
ハードウエアレイドでのRAID状態の把握は、RAIDカード付属のユーティリティを利用するのが一般的な感じがしました。
ソフトウエアRAIDについては、構築したソフトやOSに管理コマンドがあるので、それを利用する感じでしょうか。
また、ネットワーク経由だと、RAIDカードが何なのかわからず、困りました・・・。
RAIDについては、ほんと初心者なので、つっこみ大歓迎でございますm(_ _)m
参考URL
作者: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
作者:japanrock_pg
更新日:2008年11月18日 7時45分
[ソフトウエア]簡単なアンケートフォームをGoogle Spreadsheets (グーグル スプレッドシート)で作ってみる
what
Google Spreadsheets (グーグル スプレッドシート)を使って、簡単なアンケートフォームを作ってみました。
- 利点
超簡単に作成できる
サーバを用意しなくて良い
プログラミングがかけなくても設置できる
ブログなどからリンクして集計などが可能になり、ブログの幅が広がる
Googleのインフラなので大量アクセスにも耐えられる?負荷に強い?
スプレッドシートのもともとの機能エクセルで投稿データを連携して管理できる
無料で使える
iframeが利用できるブログサービスなら、ブログパーツみたいに気軽にformが使える
- 欠点
デザインが変えられない
広告が入る
-formにある広告
-もちろん完了画面にも入る
Google Spreadsheets (グーグル スプレッドシート)へログイン
Googleアカウントをもっていれば、上記からログインできます。
Spreadsheetの作成
左上の New から「Form」を選択
formの作成
タイトルと、内容を入れて、「Done」を入れます。
右上にある、「Save」をクリックします。
これで、フォームが完成です。
フォームのURL
画面の下を見ると「You can view the published form here」とあり、URLがあります
http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA
formを使ってみる
http://spreadsheets.google.com/viewform?key=pYE2BCFD3gONqwEjUOnUceA
↑こちらへアクセスすると、すでにフォームができていて、使えます。
実際に投稿してみると、ちゃんと投稿できます。
投稿された内容を確認する
管理画面から、「Show analysis」をクリックします。
しかも、Spreadsheets に戻ると、データがあります。
Embed form で iframe のソースが作成できる
<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/
ちゃんと、サイズを合わせれば、ブログパーツの完成ですね。
アンケートなどもろもろ使えそうですねー。
デザインを変更する
デフォルトは、そっけないデザインなので、デザインを変更してみましょう。
・・・・・・・と思ったら、できない・・?・・orz
変更できる画面が見当たらない・・・。
できるといいのになー。
完了画面に「ありがとー!」のテキストを表示する
「More actions」jから「Edit confirmation」を選択
以下のような画面が出るので、「ありがとー!」を入力
「Save」をクリックして保存する。
で、実際に投稿して試してみる。
こうなりました。
うーん。便利だなー。個人でアンケート取りたい時なんて、これで十分すぎる。これから使っていこーっと。
作者:japanrock_pg
更新日:2008年11月14日 11時56分



















