タグ

ブックマーク / unageanu.hatenablog.com (8)

  • JDIでスレッドダンプを取得する。 - うなの日記

    JDI(Java Debug Interface)でスレッドダンプをとります。 JDIは、その名の通り、仮想マシンのデバッガや類似システムに有用な情報を提供するJava API です。 リモートからのデバッグを標準でサポートしています。 JDK添付ですが、実装はtools.jar内にあります。利用するにはtools.jarをクラスパスに通す必要があります。(/lib以下にあります。) プログラム import java.io.IOException; import java.io.PrintStream; import java.util.Iterator; import java.util.List; import java.util.Map; import com.sun.jdi.Bootstrap; import com.sun.jdi.IncompatibleThreadState

    JDIでスレッドダンプを取得する。 - うなの日記
    voidy21
    voidy21 2012/08/29
  • 型パラメータで指定されたクラスを取得する。 - うなの日記

    クラス定義の段階で型パラメータが決まっている場合(以下のようなクラスが該当)、Classから型パラメータで指定された型を得ることができます。(↓のクラスだと、HogeSet.classからSetの型パラメータであるString.classがとれる。) // クラス定義の段階でSetのパラメータを決めているSetの実装。 class HogeSet implements Set<String> { ... 手順 Class#getGenericInterfaces(),Class#getGenericSuperclass()で親クラスのTypeを取得できます。 戻り値は親クラスやインターフェイスがパラメータ化されている場合ParameterizedTypeになります。 そうでない場合は、Classが返されます。 ParameterizedTypeの場合、ParameterizedType#g

    型パラメータで指定されたクラスを取得する。 - うなの日記
    voidy21
    voidy21 2011/06/14
  • XSSの攻撃手法いろいろ - うなの日記

    html5securityのサイトに、XSSの各種攻撃手法がまとめられているのを発見せり!ということで、個人的に「お!」と思った攻撃をサンプルつきでご紹介します。 1. CSS Expression IE7以前には「CSS Expressions」という拡張機能があり、CSS内でJavaScriptを実行できたりします。 <div style="color:expression(alert('XSS'));">a</div> 確認 @IT -[柔軟すぎる]IEのCSS解釈で起こるXSS で詳しく解説されていますが、CSSの解釈が柔軟なことともあいまって自前で無害化するのはなかなか困難。以下のようなコードでもスクリプトが実行されてしまいます。 <div style="color:expr/* コメントの挿入 */ession(alert('XSS'));">a</div> 確認 <div s

    XSSの攻撃手法いろいろ - うなの日記
    voidy21
    voidy21 2010/06/21
  • データストアの単体テストを書く手順 for 1.3.3 - うなの日記

    GAEのSDKを1.3.3にバージョンアップしたら、データストアの単体テストがコンパイルエラーに! ドキュメントを見ると、どうやらテストケースの書き方が変わったらしい。(1.3.1 - 1.3.2はスルーしていたので、実はずっと前からかもですが) ということで、SDK1.3.0の頃に書いたテストケース作成手順を1.3.3での手順に更新しておきます。ユーティリティクラスが用意されて、以前より少ないコードで済むようになってますよ。 単体テストとは? 単体テストでは、 ローカルでGoogle App Engineのサーバーを起動することなしに、 データストアにアクセスするモジュールのテストを記述できます。 公式なドキュメントはこちら。日語のドキュメントはまだ更新されていない(2010-05-01 現在)ようなのでご注意。 概要 必要なモジュールをプロジェクトに追加 テストケース内でLocalS

    データストアの単体テストを書く手順 for 1.3.3 - うなの日記
    voidy21
    voidy21 2010/05/02
  • Javaメソッドの呼び出し元をツリー表示するスクリプト - うなの日記

    JavaClassを使って指定メソッドの呼び出し元を探索しツリー表示するスクリプトを書いてみました。 引数で指定されたパス以下の*.class,および*.jarに含まれるクラスファイルを解析し、 メソッドの呼び出しコードを収集。 収集した情報を再帰的に探索し、呼び出し元メソッドをツリー形式で出力します。 使い方 $ ./caller.rb <クラスが置かれたディレクトリorJarファイル> <呼び出し元を探すメソッド> 呼び出し元を探すメソッドは「<メソッドが定義されたクラスのFQCN>#<メソッドのディスクリプタ表記>」で指定します。具体的には以下のような形になります。 java.Util.ArrayList#indexOf(Ljava/lang/Object;)I クラスが置かれたディレクトリ or Jarファイルは、「;」区切りで複数指定可能です。 具体例 ↓のようなクラスがあったと

    Javaメソッドの呼び出し元をツリー表示するスクリプト - うなの日記
  • Java変態?コード最速マスター - うなの日記

    Java変態文法最速マスター - プログラマーの脳みそが面白かった && 参考になったので便乗してリスペクト。変態世間であまり見かけない(かも知れない)Javaコードを、過去のエントリからまとめてみました。 nullでなければループ 「配列がnullでなければループ」というシーンはまれにありますが、nullチェックのためにインデントが深くなるのが我慢ならん、というときにこういう記述はどうでしょう。 String[] strs = // 略 // 配列がnullでなければ各要素に対して処理を実行 if ( strs != null ) for ( String str : strs ) { // 処理 } if文の「{}」を省略してforを繋げているだけですが、インデントをさりげなく削れます。 似たような例で、「例外を無視して次へ」とかも。 // 例外が発生しても無視して次へ for ( S

    Java変態?コード最速マスター - うなの日記
    voidy21
    voidy21 2010/02/04
  • jquery-jsonでJSONを安全にパーズする。 - うなの日記

    jQueryのgetJSON()ではJSONの解析がwindow.eval()で行なわれてしまいますが、プラグインとして別途提供されているjquery-jsonを使うとJSONを安全に解析できます。 プラグインをインポートすると、「$.evalJSON」と「$.secureEvalJSON」の2つのJSON解析APIが追加されます。 「$.evalJSON」は安全性チェックなしに「window.eval()」してJSONを解析します。 「$.secureEvalJSON」は安全性を事前にチェックしてから「window.eval()」します。 チェックでエラーになった場合は、例外をスローします。 なお、どちらの関数も「JSON.parse」が使用可能であればそちらを優先して使用します。 なのでFireFox3だとどちらの関数を使っても安全な解析が可能だったりします。 以下は各解析メソッドで普

    jquery-jsonでJSONを安全にパーズする。 - うなの日記
  • URLフェッチ機能でBasic認証を使う - うなの日記

    Google App EngineのURLフェッチ機能では、HttpURLConnectionが普通に使える訳ですが、Basic認証が必要なサイトにアクセスしたいと思って以下のように書いてデプロイしたら実行時エラーに。 static { Authenticator.setDefault( new Authenticator(){ @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( USER, PASS.toCharArray() ); } }); } 発生したエラーは次の通り。 Caused by: java.security.AccessControlException: access denied (java.net.Net

    URLフェッチ機能でBasic認証を使う - うなの日記
  • 1