タグ

2009年10月15日のブックマーク (5件)

  • [さらに気になる]JSONの守り方

    XSSにCSRFにSQLインジェクションにディレクトリトラバーサル……Webアプリケーションのプログラマが知っておくべき脆弱性はいっぱいあります。そこで連載では、そのようなメジャーなもの“以外”も掘り下げていきます (編集部) 次は、JSONにおけるセキュリティ対策 皆さんこんにちは、はせがわようすけです。第4回「[気になる]JSONPの守り方」はJSONPについて説明しましたので、今回は「JSON」についてもセキュリティ上注意すべき点について説明します。 JSONは、XMLHttpRequestで受け取り、JavaScript上でevalするという使い方が一般的です。 まずはサーバ側から送られる情報と、クライアント側での処理、それぞれの内容を見ておきましょう。 [サーバ側] HTTP/1.1 200 OK Content-Type: application/json; charset=

    [さらに気になる]JSONの守り方
  • Scalaの総称クラスと総称メソッド-共変-

    いわゆるGenericsのメカニズムについては、ごく基的な部分についてはJavaと同じように見える。型パラメータの境界(親の型としてXXXを持ってないといけないとか、子の型としてXXXを持ってないといけないとか)についても同じ。大きく違うのは、型パラメータの継承関係と、パラメータバウンドされた総称クラス(以下、面倒なので"総称クラス"と書く)自体の継承関係との関係、すなわち共変(Co-Variant)に関する部分。 といっても、共変自体にあまり詳しくないので、しばらく共変について勉強してみる。 共変 調べても定義らしい定義が出てこなくて困った。とりあえずは関連ありそうな記事として以下のようなものがあった。 Javaの理論と実践: Generics、了解! Javaの理論と実践: Genericsのワイルドカードを使いこなす、第1回 Javaの理論と実践: Genericsのワイルドカード

  • 仕様書をTracのWikiに記載する - rabbit2goのブログ

    「仕様書をSubversionとTracで管理する」に続いて、今回は仕様書をTracのWikiで作成する話。 Tracの登場以前に、仕様をPukiwikiで書き始めたのがそもそも発端だけど、Wikiを使うメリットとして下記が挙げられると思う。 仕様同士のリンク 経験的に言って、仕様書は一つだけでは収まらないことが多い。関連する仕様として、仕方なくたくさんのファイルを作っていく事になるのだけど、数が増えると相互参照が大変な作業になる。この点、WikiならWebのリンクを辿るだけなので、情報へのアクセスが容易だ。 仕様の一意性確保 (社内サーバにて)一意のURLと仕様が紐づけられるので、仕様として意味するところを明確に指定できる。ファイルだとファイル名に整理用の数字を入れたり、最新版の資料の置き場所を常に意識しておく必要があった。 ファイルよりも更新が簡単 気分的なものが大きいかも知れないけど

    仕様書をTracのWikiに記載する - rabbit2goのブログ
  • #appengine javaのdatastore操作は #slim3 がおすすめ

    自分はdatastoreのアクセスにJDOを使わない(個人的には、という意味ですが)し、Webアプリとしてのフレームワークという意味ではWicketTester並みの単体テスト環境が無いとイヤなので、slim3は今まで見送ってました。しかし、最近slim3がlow-level APIに対応したといぅ事でちょっと触ってみたりソースを読んでみたところ…S2JDBCを触っていた自分にとってめちゃくちゃ良いフレームワークとなっていました!これはスゴイ使いやすい。モチロンS2JDBC未経験の人でも全然おk。 自分としては「GAE/JのDatastore操作としてJDOから入るとハマる、誤解した理解をしてしまう」という意見をずっと持っていたので、ちょっと触る程度の初心者の方にはLow-Level APIで説明をしていました。ちょっと触ってもらうだけなら今まで通りでもいいですが、「実際に使っていくための

  • 再帰関数には @tailrec アノテーションを - イトウ アスカ blog

    Scala東北のMLに流れてきた記事です。後で読み返し易いようにここにもメモしておきます。 非関数型言語に慣れ親しんだ身としては、「while使わないで再帰関数使えよ」という関数型言語のスタンスを見ると真っ先に思いつくのが「言いたいことはわかるが、でかいループ回したらスタックオーバーフローするべ」ということです。 しかし、Scalaをはじめとする関数型言語ではコンパイル時に再帰関数を最適化してスタックを使わないループ等にしてくれるそうでこの心配はないとのこと。ただし、これには条件があってScalaの場合 自分自身を呼ぶ末尾再帰関数であること 再帰関数が、オーバーライドされる可能性のないメソッドであること。つまりメソッドを定義するクラスが final であるかメソッド自体が final、あるいは private であること 末尾再帰関数というのは関数の最後の処理が再帰呼び出しになっているよう

    再帰関数には @tailrec アノテーションを - イトウ アスカ blog