2012-04-22

Sid Meier's Civilization V 買った

Steam で買った。39.99 USD (Team Pasra 基金による補助ありで)。日本円で 3200 円くらい。

チュートリアルをやらずにとりあえず @chihirow と、同じタイミングで購入した @akazora とプレイ。

チュートリアルやらないと何をやればいいのか途中で詰まるね。 ブラウザ三国志みたいに領地獲得とかあって面白い。あと蛮族ウザい。

というわけでしばらく Team Pasra ではこのゲームで遊べそうです。

見つかった情報サイト類

Team Pasra でのプレイの様子

Team Pasra のメンバーとわいわいやっております。

Published at 2012-04-22 08:28:04 +0900 | Permalink
2012-04-21

sorah の開発環境まとめ 2012 年春号

dev

自分の開発環境等についてまとめておきます。あまりすごくない。

目次

  • エディタ
  • シェル
  • ホームディレクトリの構造
  • アプリケーション類
  • 構築方法

ふろく

github - sorah/config に sorah の使っている dotfiles などが置いてあります。

エディタ

Vim を使っています。OS X だと MacVim.

プラグイン

NeoBundle.vim を使って管理しています。

.vimrc を見ると、主に以下のプラグインを使っているようです。 全部書くのは面倒なので一部だけ。

  • metarw-simplenote.vim - Simplenote を metarw インターフェースで読み書きするプラグイン (拙作)
  • rails.vim - Vim is forever. Rails 周りの補助。
  • sudo.vim - sudo でファイルを保存したり読み込んだり。
  • quickrun.vim - <leader>r でそのファイルを即座に vim 上で実行できます。TopCoder でテストコードも入れてくれるプラグインとかと組み合わせてよく使います。
  • neocomplcache - 強力な自動補完を提供してくれます。
  • metarw - ファイルを編集するような感じでプラグインが提供する文字列などを編集できるようにできるようにするライブラリ。
  • vimproc - 非同期実行のサポートをするライブラリ。quickrun や vimshell 等で無いと困る。
  • vimshell - vim 上で vim script で実装されたシェル。たまにつかう。

vimrc

.vimrc にある。戦闘力は 505 程度だしまだまだですね。

シェル

zsh を使っています。

zshrc はこれ: .zshrc

~/.zshrc_global_env~/.zshrc_env を読み込むようにしていて、前者はそのプラットフォーム向けの固有設定、後者は端末毎の固有設定という扱いで global_env は適当に config リポジトリからシンボリックリンクを貼ったりします。

.zshrc がやっていることは簡単で、$PATH をあちこちに通して、~/git/*/*/bin にも $PATH を通したりし、

alias をいろいろ設定して (ホスト名の入力で tmux で新規ウィンドウ開いて ssh 接続しにいったりできるようにしたりとか)

precmd 等で tmux 側のウィンドウタイトルにコマンド名やカレントディレクトリなどを表示するフックなどを設定しています。

あと、ssh の agent forwarding を tmux 内でもうまいこと使えるようにする hack 等もいれています。

そして最後に tmux を起動。

ホームディレクトリの構造

こんな感じです:

  • ~/git - git リポジトリの working copy を入れるところ。さらに一階層言語毎におおまかにディレクトリを掘って入れています。実態は Dropbox 内のディレクトリへのシンボリックリンクで、全て Dropbox に同期されるようにしています。

    • 言語名 (ruby とか) - ruby 等の場合は zshrc の方で lib ディレクトリを RUBYLIB 環境変数に入れたりしています。
    • リポジトリ名
  • ~/work - 仕事関係のリポジトリの working copy を入れる。 Dropbox に同期されないようにするため。

  • ~/sandbox - リポジトリにするまでもない単発のコードを入れる。~/git と同じように下にさらに一階層言語毎にディレクトリを掘ってある。最近あまり使わなくなった。

アプリケーション類

YoruFukurou, Limechat, Chrome (dev) があれば生きていける。

環境構築方法

OS X の場合。

  1. iTunes ライブラリを外付け HDD 等から引っ張ってくる。
  2. USB メモリ等に ~/Library/Preferences/com.apple.Terminal.plist を入れておいてそれをコピーしてくる。
  3. USB メモリに ~/Library/Application\ Support/YoruFukurou~/Library/Preferences/com.YoruFukurouProject.YoruFukurou.plist を入れてそれをコピーしてくる。
  4. USB メモリに ~/Library/Preferences/net.limechat.LimeChat.plist を入れておいてそれをコピーしてくる。
  5. YoruFukurou, Limechat, Chrome (dev) をいれる。
  6. XCode を入れる。
  7. Dropbox を入れて同期が終わるのを待つ。
  8. ln -s $HOME/Dropbox/.../git $HOME/git; ln -s $HOME/Dropbox/.../sandbox $HOME/sandbox を実行する。
  9. cd ~/git/config && source memo する。これで dotfiles がホームディレクトリにシンボリックリンクされる。
  10. chsh で zsh をログインシェルにする
  11. MacVim を入れて、:NeoBundleInstall をした後に cd ~/.bundle/vimproc && make -f make_mac.mak する。

おわり。

Published at 2012-04-21 14:11:58 +0900 | Permalink
2012-04-06

Sakura

IMG_1455

お昼に桜を見る機会があって見たのだけれど、白金台周辺は満開でした。綺麗。

iPhone で写真を撮ったのでとりあえず上げておいた: 2012 Sakura

今年は Flickr Pro も更新なんだよな。

ちなみに入社して6日、出社も3回目でした。徐々に慣れてきつつある。自炊力向上も頑張っています。

Published at 2012-04-06 23:59:27 +0900 | Permalink
2012-04-02

Joining COOKPAD

(English is at the last)

クックパッド株式会社 にアルバイトとして入社して、初出社してきました!

昨日書いた「就職します」記事 は社名の部分の UTF-8 バイト列だけピンポイントにおかしくなっていました。ごめんなさい! でもコードポイントが 0x7000 ズレているだけだからいいよね!

もともときっかけとしては、

こんな事に。

この後話を進ませてもらって何度か足を運びアルバイトとして週 3 日、朝から夕方まで働く事になりました。

(こないだも目黒あたりにfoursquareチェックインしてtweetが流れたりとか、その前は at クックパッド というタグ付きでご飯写真を2回ほど上げたりとかで一部の人には察されていたかと思われるが)

ちなみに高校は行かないということは FAQ にも書いていたのですが、まあ高校は行かず、残りの週 4 日で勉強して 高認 を取得して大学には行こうとは思っています。その辺はもう自分で考えている のでほっといてほしい... (答えるのがだるい)

で、実際に初出社してですが早速 @takai さんにプレッシャーかけられるなど とてもこわ...楽しい職場になっております。

あと @mrkn 等には「中卒」と紹介される事が多いですね。まあ、そうですね。仕方がないですね。 (訂正: 呼ぶのではなく紹介される時にだけでした)

現状不安な事は明日朝起きたら仕事用のマシン等のパスワードと仕事用 SSH 鍵のパスフレーズを忘れていないかという点だな。忘れそうで本当に怖いですね。

なお、会社の雰囲気などは 941 さんのブログ を見る事をおすすめします。(他力本願)

というわけで週 3 日は東京にいるとおもいます。

English

I'm joining COOKPAD Inc. today and started working at COOKPAD as a part-time developer. :-)

The company, COOKPAD is the largest recipe sharing website in Japan. (here's about the company in English.) I'm excited to work here because there are many brilliant co-workers in the company!

And also today I become not a student. But you know I'm just 15. I'll continue studying without going school in remaining days of a week.

This year will be exciting year for me, (repeating) I'm excited to work!

Published at 2012-04-02 21:26:00 +0900 | Permalink
2012-03-26

BF-01D ファーストインプレッション

P3264335.JPG

BF-01D を買ったのでとりあえずファーストインプレッションを。

まずそもそも BF-01D は去年の夏頃に出る予定だった Xi の Wi-Fi ルータで (その時の型番は BF-01C とかだった気がする)、 突然延期が発表され 2012 年春モデルとして BF-01D と型番を変更し仕様が一部変更されて先日 3/22 に発売された。

  • なんか重量が...
  • なんかサイズが...
  • 連続通信時間が...
  • FOMA ハイスピードの下り速度向上
  • 無駄に 16GB の内蔵ストレージ搭載

まぁ、人柱だな。

よくわからない製品だがだが、これはバッファローの光ポータブルこと BF-01B の Xi 版のような存在であるため割と安定するんじゃないかと思って購入。

料金プラン

ヨドバシマルチメディア宇都宮で購入。細かい価格はうろ覚え。

  • 24回払い: 35910/24 = 1365 (/ 月)
  • Xi データプラン フラット にねん: 4010 円 (〜 4 月), 4935 円 (5 月 〜 9 月), 5935 円 (10 月〜)
  • mopera U: 525
  • 月々サポート: -840
  • ユニバーサルサービス料: 5

つまり、月額 5065円 (〜 4 月), 5990円 (5 月 〜 9 月), 7040 (10 月〜)

データプランの金額が違うのはキャンペーンとかその辺。詳しくは自分で調べて。

ハードウェア

  • 3G, HSUPA, LTE (Xi) 対応
  • あまり電池持たない?
  • なんかデカくて重い?

みたいな噂が。

実際はどうだったかというと、

  • 大きいけどまぁ大きさは良いとしてもちょっと分厚いかな
  • 裏フタ開けるとバッテリーがすごい小さいかな、バッテリーどれくらい持つのかなあ。
  • クレードルが付属してきてイーサネット端子があり、イーサネットコンバータもしくはイーサネットにつないだ回線で親機として作動させる事ができる。面白い。
  • デザインについては悪くないと思う。

ソフトウェア

  • b-mobile wifi とは違ってまともな感じなので扱いやすくて良い。ログインしなくても電池状況・電波状況等は見れる。
  • しかし、ソフトウェア側から Xi なのか FOMA なのかわからないのは辛い。いや、実際には管理画面にログインして ステータス→ログ を見て、 "LTE connected" 的なログを探しそれが最新か確かめればいいんだけど、面倒だな。

    • 後述するが、XML で詳細情報を取ることに成功したのでそれだと LTE かどうかのフラグっぽいのがあった。
    • ちなみに、LTE かどうかはハードウェア側、つまり本体LEDの色で分かる。水か青でFOMAかXiらしい、けどぱっと遠くから見てわからないよなあ。
  • Personal Media eXchange とかいうよくわかんないサービスに対応していて、Android アプリダウンロードしてみたけど管理画面のパスワードがデフォルトの空のままである事を想定していて何もできなかった。

    • Android 向けの shark でパケット読み取った結果、電池情報等を XML で取得する方法がわかりました。どうもありがとうございます。感謝いたします。

通信速度

  • 明日ちゃんと確認するけど、LTE か確認してないけど speedtest.net の Seoul サーバに iOS アプリから確認した所以下のような結果だった

  • なんか speedtest.net よくないきがする。。。

詳細なステータスが乗った XML を見る方法

Android 向けの Personal Media eXchange アプリ をダウンロード、 Android 版 wireshark でパケットキャプチャした結果以下の方法で電池情報、ネットワーク状態などが取得できた。

URL

http://<ルータのIPアドレス>:8888/status
例: http://192.168.1.13:8888/status

にアクセスすると BASIC 認証を求められるので、ルータの管理画面にログインする時と同じようにユーザー名 root, パスワードにルータに設定した管理画面パスワードを 入力すれば見れるはず。

取得できる情報と意味

こんな XML が手に入ります。項目の意味などは一部推測です。

<?xml version="1.0" encoding="utf-8"?>
<pwrStatus>
  <model>BF-01D</model>
  <vender>DOCOMO.</vender>
  <fwVersion>1.83</fwVersion>
  <apiVersion>1.0</apiVersion>
  <routeInterface>0</routeInterface>
  <power>
    <battery>35</battery>
    <standby>0</standby>
    <autoOff>0</autoOff>
  </power>
  <interface id="0">
    <connected>true</connected>
    <route>true</route>
    <rssi>-44</rssi>
    <ssid>atebadf00d</ssid>
    <bssid>de:ad:be:ef:fe:ed</bssid>
  </interface>
  <interface id="1">
    <connected>true</connected>
    <route>false</route>
    <rssi>-71</rssi>
    <lte>false</lte>
  </interface>
  <interface id="2">
    <connected>false</connected>
    <route>false</route>
  </interface>
</pwrStatus>
  • pwrStatusmodel: モデル名
  • pwrStatusvender: ベンダ名? ドコモで売ってるから DOCOMO なのかな。
  • pwrStatusfwVersion: ファームウェアのバージョンだと思われる。
  • pwrStatusapiVersion: これもよくわからないが API のバージョン。8888 ポートは API なんだろうね。今後もパケットキャプチャして挙動を把握したい。

ここまでは割とどうでもいい情報。

  • pwrStatusrouteInterface: 後に続く <interface>id 属性を指す物とみられる。現在どの <interface> を利用してインターネットに接続しているか、という意味ではないか (<interface> はそれぞれ Wi-Fi, 3G/LTE, Ethernet を指している)
  • pwrStatuspower

    • battery: バッテリーの残量 (たぶんパーセンテージ)
    • standby: よくわからない。
    • autoOff: よくわからない。
  • pwrStatusinterface

    • id="0" - Wi-Fi
    • connected (bool): Wi-Fi につながっているかどうか。
    • route (bool): 現在 Wi-Fi を利用してインターネットに接続されているかどうか。
    • rssi: RSSI. 値が大きい方が電波強度が強い。
    • ssid: 接続している Wi-Fi の SSID
    • bssid: 接続している Wi-Fi の BSSID
    • id="1" - 3G, LTE (Xi)
    • connected (bool): 3G, LTE 回線に繋がっているかどうか。
    • route (bool): 現在 Wi-Fi を利用してインターネットに接続されているかどうか。
    • rssi: RSSI
    • lte (bool): true なら LTE (Xi) で繋がっている、っていう意味だと思われる。
    • id="2" Ethernet
    • connected (bool): Ethernet に繋がっているかどうか。
    • route (bool): 現在 Ethernet を利用してインターネットに接続されているかどうか。

こんな所かなあ。一部推測が含まれてるけど。

これで端末見なくても LTE かどうか確認できるね! やったね!

BF-01D のステータスを出力するスクリプト

Ruby で。要 Ruby 1.9, nokogiri (gem install nokogiri)

とりあえずこんな感じで使える。

$ ruby bf01d_status.rb 192.168.13.1 ぱすわーど
BF-01D 75% -  Wi-Fi: --SSID-- (-49)

↑Geektools に設定してデスクトップに表示させた例

Published at 2012-03-26 22:37:37 +0900 | Permalink
2012-03-19

"さくらのクラウド" のストレージ障害

http://support.sakura.ad.jp/mainte/newsentry.php?id=6994

発生日時 : 2012年03月19日9時55分~
影響範囲 : さくらのクラウド
障害内容 : 断続的にストレージに書き込めない状態になっております。

巻き込まれた………

起きてからずっと落ちていて tiarra は死んでるわ IRC bot は死んでるわ サイトは落ちてるわで生活に結構影響を与えてくれた。

今はなんか安定してる感じがする。よかった。

とりあえず長期的に落ちそうだったから手元にあった rackhub に nginx を入れてお知らせページを表示 させたりするようにしたりした。

Rackhub, いいけど環境整備されすぎてわかりにくい感じがした。 ドキュメント見ないといけないのならけっきょく自分で環境構築するのと コストそんなに変わらないしメリット相殺されるんじゃない? /rhb/etc とか わかんないし!

それはそうと、まあさくらのクラウド様お疲れ様です頑張ってください。

Published at 2012-03-19 11:17:17 +0900 | Permalink
2012-03-14

rails/strong_parameter

dev

https://github.com/rails/strong_parameters

Action Controller parameter attributes are now tainted by default and Active Model has been extended to check for tainted on mass assignment. This means you’ll have to make a conscious choice about which attributes to allow for mass updating and this prevent accidentally exposing that which shouldn’t be exposed.

先日の mass assignment 脆弱性の件 への対応策と見られるレポジトリが github の rails organization に push されたようです。

params を保護する方向らしい。この方がコントローラ毎に設定できて確かに良いなあ。

params.required[:person].permit(:name, :age)

params に :person パラメータを必須としてそこの中で :name, :age パラメータも安全とするという感じなのかな。

https://github.com/rails/strong_parameters/blob/master/lib/action_controller/parameters.rb

主な実装はこの辺だな。

Published at 2012-03-14 12:39:29 +0900 | Permalink
2012-03-13

日本 OSS 奨励賞を受賞しました

日本 OSS 奨励賞を自分個人と sinsai.info のボランティアとして実質両方で受賞しました。はたして自分が受賞してしまっていいんだろうか。

さてそれ関係で オープンソースカンファレンス2012 Tokyo/Spring 1 日目の懇親会で授賞式に出席する他 LT をする事になっています。

(LT の持ち時間は5分程度らしいので頑張ってスライドを書きます)

あ、hiromu, 日本 Ruby の会様: おめでとうございます。

追記

  • そもそも模範にしてくれる人が身近に居ない (ひろむは NPCA があるけど)
  • 彼の生活リズムのておくれ感は模範になるのか

    • 自分の生活リズムもびみょーだし人のこと言えない
  • ひろむこわい

Published at 2012-03-13 11:26:49 +0900 | Permalink
2012-03-12

卒業

実は本日卒業式だったらしいです (出席はしてない)。

中学生という肩書きでもなし価値が半減しますが今後ともよろしくお願いします。

Published at 2012-03-12 20:10:30 +0900 | Permalink
2012-03-05

github の mass assignment 脆弱性が突かれた件

dev

気になって調べたのでメモ。自分も気をつけないとなー。

github に脆弱性があってそれが突かれたらしい。 Rails アプリにありがちな脆弱性の一つ、Mass assignment とかいうタイプの脆弱性である。

mass assignment 脆弱性とは

mass assignment 脆弱性とは何か、というのは以下の記事が詳しい:

Rails 3.1 の新機能解説の記事だが、機能拡張の解説であって attr_accessible などは 3.1 より前からある。 要するに、モデルのメソッド update_attributesnewHash でデータを渡した時 attr_accessible (attr_protected) で指定した カラムについては無視されるようにするという機能である。

update_attributes とは: ActiveRecord のモデルで、カラム名がキーとなった Hash を渡す事でデータを更新できるメソッド。foo.update_attributes(:title => "New Title") のように使います。 scaffold で生成されたコントローラの update アクションなどで使われていて、scaffold では update_attributes(params[:foo]) のようにパラメータが直接渡されています。

そして、update_attributes に HTTP のパラメータ params (Hash) を特にチェックせず直接渡して、 その params に本来更新されるべきではないカラムのパラメータが含まれていても更新されないようにするために attr_accessible, attr_protected をモデルで定義しておく事によって、update_attributes 等のメソッドにパラメータを渡しても、attr_accessible (attr_protected) で保護指定したカラムについては渡した Hash で指定されていても無視されるようになります。

上記のこの記事での例を引用すると、

attr_accessible :name とした事によって, ホワイトリスト方式で :name カラム以外は無視されるようになるため、 User.new:group_id を指定していてもそれは無視されている事がわかるかと思います。

さて、この機能を使っておらず保護されていないカラムがあると何故脆弱性になるかはもう分かると思いますが、

たとえば実際にこのモデルを用いた Web アプリケーションがある時に、Web のインターフェースでは更新時に update_attributes を特にパラメータをチェックせず直接 params を渡していて、 ユーザー (Web インターフェース) からは group_id を変更できないという事にします。

すると、 もし attr_accessible :name が無い場合 、Web インターフェースの update_attributes を呼んでいる所が、 Web インターフェースでは更新できるべきではない group_id を含んだパラメータを受け取ると 更新できるべきではない group_id が更新できてしまいます。

しかし attr_accessible :name がある事によって、update_attributes:group_id を含んだ Hash (パラメータ) が来ても無視されるので変更される事は無いのです。

そのため、attr_accessible で明示的に「変更可能なカラム」を指定しておくのは重要で、これを指定していない事によって 更新されるべきではないカラムも更新することができる 脆弱性が mass assignment 脆弱性です。

しっかりホワイトリスト方式の attr_accessible で指定する事が一番安全でしょう。

update_attributes はいちいち user.name = params[:user][:name] 等としなくても Hash のキー・値でデータ (レコード)を更新できる 機能で便利なため、

update_attributes 以外にも new, create でもその保護は働くという事もあり、attr_accessible, attr_protected で保護するのが安全だと思います。

これは ActiveRecord を使ったアプリケーション (大半の Rails アプリケーション) は多く存在する可能性がありますが、 Mongoid でも同様の脆弱性が発生することがある そうです。

重要: これは Rails の脆弱性 ではなく Rails の問題 である。mass assignment 脆弱性に関しては Rails アプリケーション (もしくは ActiveRecord を使ったアプリケーション) において開発者が作りやすい脆弱性であるから。すぐ後述する Issue #5228 についたコメント (2段落目) にも書いてある。__Rails の問題__ というのは、現在の scaffold generator や ActiveRecord がこの問題を発生させやすいため、Issue 5228 では発生しにくくなるような対策を検討している。

今回の発端

さて、そこでこの github/rails/rails に登録された issue を見てみよう。今回の問題の発端である。

この issue で問題に上げているのは、現在の Rails は、開発者が mass assignment 脆弱性を発生させやすい (attr_accessible 等の存在とこのような脆弱性を知らないと) ということ。

そのため、attr_accessible 等の指定を開発者に強制したりする等して、発生しにくくする案を探している。

(その後、いくつかの案が複数人によって挙げられているが今の議論、何が提案されているかまではこの記事では取り扱わない為、 issue ページを参照してください (それを見て、コメントするのも良いでしょう))

はじめは速攻で reject された。既にデフォルトで有効にする pull request があり (Pull Request #4062) それが reject されているからだ。

もちろん homakov さんは反論している。「ホワイトリストを必須にするのではなく、たとえばデフォルトで foreign_key, primary_key をブラックリスト入りさせておくのはどうか」 と。

(メモ: 一度は reject されましたが、現在は議論が再開されています)

脆弱性の問題を例示

そして、reject が繰り返されるとこのような issue が open される:

what?

作成日時を示す部分を見て欲しい。"in 1001 years" とある。未来ですね。おそらく github が抱えている mass assignment 脆弱性をつついたのだろう。GitHub を使って例示してしまった。

たぶん created_at 等をパラメータに含ませて自分の指定した値に created_at を変更したのだろう。

そして彼はさらに別の所にある脆弱性もつつく:

hacked

一番最初に上げた github の blog の記事でメインに言及されている脆弱性がこれである。

At 8:49am Pacific Time this morning a GitHub user exploited a security vulnerability in the public key update form in order to add his public key to the rails organization. He was then able to push a new file to the project as a demonstration of this vulnerability.

(日本語訳: 8:49am (Pacific Time) に GitHub ユーザーは SSH 公開鍵の更新フォームに存在する脆弱性を攻撃し、彼の公開鍵は rails organization に登録された。そして彼は rails/rails プロジェクトに新しいファイルをコミットする事ができた、この脆弱性のデモとして。)

organization account も実は SSH 公開鍵を登録する事ができるので、たぶん SSH 公開鍵の更新のフォームで SSH 公開鍵のモデルにある user_id といったカラムを推測してパラメータに含ませ、pubkey を update したのだろう。どうやって account 側の primary key を取得したんだろう?

このように GitHub 等もうっかり mass assignment 脆弱性を抱えてしまう事から、デフォルトでいくつかの key をブラックリスト入りさせようと提案した訳である。まだこの issue は議論が続けられている: Issue #5228: Mass assignment vulnerability - how to force dev. define attr_accesible? · rails/rails

どのようにしてこの脆弱性の発生を防ぐか。現状だとユーザーが attr_accessible 等を手動で定義しないと、ユーザーがこの脆弱性の存在を知らない限り容易に発生させてしまうからね。rails だと。

GitHub のアクション

ちなみに今は解除されたが 彼の github アカウント は一時的に suspend された様である。何をしたかの調査、その間は害を及ぼした疑いがあるための suspend と見える。最初のアナウンス では単に suspend したとしか書いてないから誤解が多かったんだなぁ。Github, もちろん当初から疑いが晴れたら解除するつもりだったんだよね?

ちなみに誤解が多いと思われるのは そのアナウンス についたコメントでは「suspend を解除してやるべき」との声が多く上がっていた。

その suspend は実際に解除されたが、まぁ、解除すべきだよね。何か重大な損害を起こすような事はしてないものね。ただ、素直に報告せずに rails の所で実例を示してしまうというのはどうかと思うがw

まとめ

これだから rails は(キリッ, はやくなんとかしろ(キリッ

今後の動向が注目されますね。

追記 8: コントローラでみえる params に保護機能 ($SAFE な時の taint 的な感じで) をつける方向というのが DHH の考える一応の対応策? 別記事に詳細を書いた: rails/strong_parameters

あわせてよみたい: GitHub and Rails: You have let us all down. - Code Space

ところで、PHP は?

"register_globals?そんなのデフォルトでオフですよ" という記事より。

何年も前に指摘されていた脆弱性に今頃慌てふためいている愚かでコンピュータサイエンスを学ぶには無能すぎてRailsくらいしか使えないくせにPHPerだなんだと他人の尻馬に乗って調子こいてたボケナス共は、土下座してmodelの修正に取りかかるがよい。わっはっは。

だそうです。

PHP: グローバル変数の登録機能の使用法 - Manual」… これはひどい。

あと、PHP の Web フレームワークの一つ Symfony にも似たような問題があるっぽい: Security must be taken seriously - Symfony (はてブコメントより)

はてブコメントを見て思ったこと

  • attr_accessible はバリデータの一種なのかなぁ。
  • 自動生成で中身を把握してないというのも問題だが、これは自動生成じゃなくても update_attributes とか普通に使うメソッドだし自動生成関係無くないかなあ。自分は今回この記事で自動生成 (=scaffold) を取り上げたけど。

追記メモ

追記: suspend は解除されていたようだ (実害を及ぼしたかどうかの疑惑が解けたから?) https://github.com/blog/1069-responsible-disclosure-policy ので、文章を一部修正

追記2: これは Rails の脆弱性と言うよりは Rails の問題点である事を追記。 (重要: 〜 の段落を追加)

追記3: セクションごとに見出しをつけました

追記4: register_globals の事を言及

追記5: 前提知識が必要だとの言葉を受けて若干追記。まだ分からない部分があれば twitter 等で指摘ください。

追記6: mass assignment 脆弱性の説明を大幅に書き換え。わかりやすくなったと思う。

追記7: PHP の Symfony にあった似たような脆弱性のつくりを紹介

追記8: strong_parameters の事を追記

Published at 2012-03-05 09:35:58 +0900 | Permalink
2012-03-04

Windows 8 Consumer Preview 感想

Consumer Preview を KVM-QEMU と ideapad にいれてみてとりあえず感想を書いておく。 Twitter にも流したけどそれのまとめでもある。

よくない点

諸々

  • Microsoft Account (sorah@… というアカウント) で最初にログインすると勝手にローカルなアカウントも作成されるわけだが、コマンドプロンプト開いたら %USERPROFILEC:\Users\sor.000 で吹いた。せめて sorah にしろよ、と。 (もしくは指定できるようにしてほしい); Local Account で作っても後で Microsoft Account とヒモ付は可能なようなのでユーザー名指定したいならそれをオススメしておく。

Appearance 周りの UI デザイン

  • やっぱり Metro UI ダサいわ。まぁ、慣れなのかなって感じはするけど。
  • ウィンドウの枠は割とダサい。これは割と慣れでしばらく使ってたら慣れてきた。
  • ただ、全てにおいて Windows 7 で再評価できた点が見事にぶち壊されてる。せっかくセンス見直したのに………
  • 後述する左上と左下のホットコーナーにマウスをあてたとき余白が広すぎてマウスを少し戻してしまう。おかげでもう一度戻さないといけない。余白は無いか 2px 程度でいいよ。余白広すぎ。

操作周りの UI デザイン

  • マウスでもタッチパネルでもどちらにせよ操作が非直感的すぎる。特にマウス。酷いぞ。左下、左上、右下、右上の画面4つの角をホットコーナーとしてメインの操作方法として採用したようだが、これはひどいとしか言えない。
  • まず、ホットコーナーの当たり判定シビアすぎ。たぶん1pxくらいしかない。ギリギリまでマウスを持っていくの辛いんだよ。
  • 全てにおいて Metro UI もそれを後押ししているがポインティングデバイスだと移動距離が長すぎて辛い。
  • おそらく製品版になるとチュートリアルはつくんだろうが (もちろんつけるよね???)、左下がスタートのホットコーナー、アプリ切り替えは左上、右上もしくは左下を触ることで設定やShareボタンなどへアクセスできるメニューが表示される、なんて直感で分かるわけが無い。
  • ついでにいうとアプリ一覧出すのはアプリ切り替えの左上にマウスを持って行って、クリックした後すこしドラッグしてすぐに左側に持ってリリースすることで表示されるなんて説明されないと分からないだろ絶対。
  • まだアプリケーションの終了は画面上から下に向けてドラッグとかのほうが分かりやすい。これもわかりにくいが。
  • というわけで操作は全然直感的ではないのでココらへんは製品版出すまでに改善すべき点。タッチパネルでも分かりやすい直感的な操作方法だとは到底思えないね。どういうセンスしてるんだ。
  • ちなみにチュートリアルがあればいいわけではなく、長いチュートリアルを用意しないと行けない時点でオワコンだろう、どう考えても。

評価できる点

  • Explorer のリボン UI. あれは割と良いと思う。現行の Explorer よりは好きだな。
  • 起動が速い。
  • グラフィック周り軽い。

まとめ

技術的には割と起動早かったりグラフィック周り軽くなってたりで評価点があるのにデザイン周りが完全に残念だよね。

このままで行くとしたら残念ですね。もともと期待してはいなかったけど。

おまけ

ideapad S10-2 に頑張って USB メモリ作って入れたのに解像度足りずで Metro アプリは一切起動できなかった。残念…

OS X だけで Windows 8 のインストール用 USB メモリを作る

最近の Boot Camp Assistant って USB メモリ作れたんだね。モデル制限かかってるから Info.plist に手を入れたけど。

モデル制限を取り外すのはここを参考にした: BootCamp: USBメモリブータブルなMacにする方法 私のiMacはmid... - Firela.bi

順番重要だったらしい。末尾に挿入したらダメだった。

時間はかかるが普通に Windows 8 でも USB メモリに焼けたよ。Mac 以外でも普通に起動したし。

Published at 2012-03-04 15:56:53 +0900 | Permalink
2012-03-04

セキュリティ&プログラミングキャンプの方向転換について

キュリティ&ログラミングキャンプ、セプキャン。

ちょっと話題になってから時間立っちゃったけど言及しておく:

いろいろ twitter 等で嫌な噂は流れていたけど、ちょっと気になる公式発表があった。

見るにほとんどのセキュリティ&プログラミングキャンプ 2011 までの実行委員が居なくなってる感。

この情報でも確定とは言えないけどおそらくプログラミングコースは無くなる、現行のセキュリティコースの構成も大幅に変わるかもなぁ。

セキュリティ・キャンプ実施協議会 設⽴趣意書 (PDF) によると、

2012 年度から上記のキャンプをセキュリティ⼈材育成にフォーカスすることとし

たぶん、セプキャンの「プ」が消えるのかな。これで。「プ」、つまりプログラミング関係のクラスがあっても 今までの言語組 (セプキャン2011までのプログラミングコースのプログラミング言語クラス) のような感じではないんだろうな。

あと、セキュリティの方も今まで通りとは行かない気がする。どうなるんだろうなー。

いつかチューター参加できたらいいな、と思ってたけどたぶんその夢(?)は早くも崩れることになりそう。

おそらく、まぁたぶん最後の言語組に参加できてとても良かった。ありがとうございました。

今年の言語組に参加したいと思っていた人は残念。続報を待たないとなんとも言えないが無い可能性高いかも…

でも、セキュリティなクラスに参加する人は希望はまだあるから大丈夫だと思うよ。

よくある教訓としてはいつか続いてる物に終わりは来る (特に IPA は役所だという事を考えるともっと) ので、参加できる環境にあるなら なるべく早くこういう物には参加すべき。という事。例としては IPA の未踏ユース とかもいつ終わるかわからないのでお早めに、という。

Disclaimer: 個人の見解・推測を大幅に含んでいます。まだ推測に過ぎないので今後の公式続報でこの記事中の内容は変わる可能性があります。

Published at 2012-03-04 15:49:19 +0900 | Permalink