home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

251 - 260 / 1320    [|<]  [|<]  [<]  21  22  23  24  25  26  27  28  29  30   [>]  [>|][>|]
タイトル/名前 更新者 更新日
技術 msakamoto-sf 2013-07-28 18:28:39
技術/RCS/Mercurial msakamoto-sf 2013-07-28 16:49:26
技術/HTML5/FileSystemAPI msakamoto-sf 2013-07-28 16:33:55
日記/2012/11/18/JSON.stringifyの勉強メモ。 msakamoto-sf 2013-07-28 16:30:21
Java/jarファイルの配布と実行方式 msakamoto-sf 2013-07-28 15:38:48
Java/clas3hift msakamoto-sf 2013-07-27 22:09:36
技術/TDD/Javaでstaticメソッドをmockする msakamoto-sf 2013-07-27 21:59:24
Java/XMLメモ msakamoto-sf 2013-07-27 19:17:28
技術/Security/PKI,SSL,TLS/メモ04_OpenSSLでファイルを暗号化して復号する練習 msakamoto-sf 2013-07-27 19:04:04
技術/Security/PKI,SSL,TLS/メモ03_OpenSSLと証明書の練習 msakamoto-sf 2013-07-27 18:52:36
ソート項目 / ソート順     1ページ 件ずつ表示

技術  

所有者: msakamoto-sf    作成日: 2008-12-15 08:03:07
カテゴリ:

各種設定ファイル(dot files)

単発記事

抄訳・読書メモ

自作プログラム

技術系まとめメモ

参考資料



プレーンテキスト形式でダウンロード
現在のバージョン : 15
更新者: msakamoto-sf
更新日: 2013-07-28 18:28:39
md5:f49b37da9562063335b759396cee6170
sha1:a94c347b7df6b2c31cdbb6537be292fcbb23af66

技術/RCS/Mercurial  

所有者: msakamoto-sf    作成日: 2011-09-11 15:15:09
カテゴリ: Mercurial 

GoogleCodeやCodePlex(Microsoft)でもサポートされている分散型のリビジョン管理システムのメモ。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 4
更新者: msakamoto-sf
更新日: 2013-07-28 16:49:26
md5:f8cdc3778ef56aa1a4866f682b1323fc
sha1:537b7a80d90564787010df6e817a1e4b8a26c19a

技術/HTML5/FileSystemAPI  

所有者: msakamoto-sf    作成日: 2011-12-25 22:08:53
カテゴリ: HTML 

FileSystem API のサンプルとメモ。

参考:

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2013-07-28 16:33:55
md5:ae437d688c72c800d61e9fcb94c2ba00
sha1:38d096669cba745045926816aea0d2af23819efa

日記/2012/11/18/JSON.stringifyの勉強メモ。  

所有者: msakamoto-sf    作成日: 2012-11-18 20:18:38
カテゴリ: JavaScript 

今更ながらJSON.stringify()を勉強したのでメモ。

https://github.com/msakamoto-sf/webtoys/blob/master/js/t_practices.html

大分、頭の中も"\uXXXX"の表現に慣れてきました。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-28 16:30:21
md5:62054f06650817434e262017f92670b7
sha1:bb3a675c057c6358dd7811123c7081885c0b8580

Java/jarファイルの配布と実行方式  

所有者: msakamoto-sf    作成日: 2012-11-04 17:37:03
カテゴリ: Java 

実行可能なJavaプログラムをjarファイルで配布する場合、その形態として次の2方式をよく見かけます。

  • "-jar ほげほげ.jar"で実行可能な単一jarファイルでの配布 : GUIのJavaアプリで時々見かけます。OSによってはjarファイルをダブルクリックするだけで実行できるので非常にお手軽です。
  • 依存jarと、それらをclasspathに自動的に追加して実行してくれる起動スクリプト(.bat, .sh)がzipやtar.gzで一緒に配布される : 依存jarが存在する、Tomcatなどサーバ系の配布でよく目にします。

本記事ではこれらの配布と実行方式の実現方法について調べてみました。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-28 15:38:48
md5:52dea4b7cc4a5d33ea1174ba52ddded9
sha1:93095dd11c0338b3930b949d7ac9cff8cf57b616

Java/clas3hift  

所有者: msakamoto-sf    作成日: 2009-10-12 16:03:21
カテゴリ: Java 

clas3hiftのプロジェクトはクローズします(2013-07)

バイトコードの動的な生成処理とClassLoaderを組み合わせる技法は、JVMに対する高度かつ深い知識が必要で、しかもトラブルが発生した場合に非常にデバッグや解決が難しい場合が多々あります。
OpenSourceで実際の開発で耐えうるプロジェクトが存在することもあり、clas3hiftはクローズします。

  • アプリ内でクラスローダを分割して、個別にjarファイルなどを指定してコンテナ環境を作りたい場合:
  • JUnitなどの単体テストで、staticメソッドや System ClassLoader によりロードされるJDKコアクラスをmockしたい場合:

ただし、 技術/TDD/Javaでstaticメソッドをmockする にも書きましたがClassLoader周りはひとつ間違えると、非常にデバッグや解決が難しいトラブルが発生します。可能な限り、ClassLoaderを操作する以外の妥協策を探ることを推奨します。また、まだ勉強中ですがアプリ内でクラスローダを分割してコンテナ化したい用途であればOSGiを検討してみても良いかもしれません。

万が一ClassLoaderを操作しなければならない場面に遭遇したら、BCELやJavassist, さらにobjenesisなどのシリアライズライブラリを組み合わせた非常に高度な技法を駆使する必要があります。そのような自体にならないことを切に祈念します。


clas3hiftの紹介

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 4
更新者: msakamoto-sf
更新日: 2013-07-27 22:09:36
md5:2b5b27f18a6ec04029d241125772a333
sha1:f33707bfffac2d4863c3b07bd72b1e821163f77d

技術/TDD/Javaでstaticメソッドをmockする  

所有者: msakamoto-sf    作成日: 2013-07-27 21:38:45
カテゴリ: Java TDD プログラミング 

powermockがオススメ・・・というか他に知らないんですが。ただし、staticメソッドやSystem ClassLoaderによりロードされるJDKコアクラスをmockする必要が発生する場合、それ以前の問題としてそもそもアーキテクチャが不味くてリファクタリングした方が良いような状況だったりします。後述しますが、可能な限りstaticメソッドのmockやJDKコアクラスをmockする手法は避けてください。ぶっちゃけ地雷原です。

メリットを遥かに上回る(というか実際トラブルで嵌る)デメリット群:

  • staticメソッドのmockやシステムクラスのmockを使いはじめると、JUnitなどのテストランナーを"@RunWith"を指定してpowermockが提供する専用のクラスローダ上で動かす必要があったりします。そのため、他に"@RunWith"アノテーションが必要なテストライブラリを併用する場合に不都合が出てくるかもしれません。
  • 内部的には独自クラスローダの中でバイトコードを操作してmock専用のクラスを動的に構築するなど、かなり「ゴツイ」処理を行なっています。そのため、クラスの構成や処理内容によっては、思わぬ所で副作用が発生し、非常に原因究明の難しいエラーが発生する場合があります。 というか、ありました。 (具体的な内容は忘れましたが。)
  • クラスローダ周りのトラブルはJVMのバイトコードのVerifierとか、JDKのClassLoaderの内部処理など相当低レイヤーで追うのが難しい領域で発生し、StackTraceのメッセージだけでは何が起こっているのかすら分からないことがあります。
    • → 一度トラブルになると、それを収めるのに相当な時間を費やすことになる可能性が高いです。

ということで、個人的にはstaticメソッドやJavaのシステムクラスをmockしたいような場合、powermockを使って頑張ってmockするのではなく、以下の様な妥協案を探ることをオススメします。

  1. リファクタリングでstaticメソッドを追い出したり、
  2. システムクラスの処理をラップしてmockしやすくしたり、
  3. そこまでセンシティブなコードは自動化を諦める、など。

以下の記事を読んでみると、staticメソッドやSystem ClassLoaderにより読み込まれるJDKコアクラスをmockするのがどれほどセンシティブな処理であるか理解いただけるかと。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-27 21:59:24
md5:25f9c1d01fd6fcd2ca6fc5379e041c5e
sha1:99d6e388b364f639cc6b3c68b8cd698a0452321c

Java/XMLメモ  

所有者: msakamoto-sf    作成日: 2013-07-27 19:16:18
カテゴリ: Java 

JavaでのXML関連APIの参考リンク集とメモ。
あまり詳しく調べてないので、分類とか説明が間違えてる可能性あり。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-27 19:17:28
md5:93f7d024942ae28f9fd73611561244d6
sha1:8f246b3eecc3b505b27ba9cd984395f8bcc249b7

技術/Security/PKI,SSL,TLS/メモ04_OpenSSLでファイルを暗号化して復号する練習  

所有者: msakamoto-sf    作成日: 2013-07-27 19:03:43
カテゴリ: SSL/TLS セキュリティ 

OpenSSLの enc コマンドでファイルの暗号化と復号を行うことが出来ます。

暗号化(AES256):

$ openssl enc -aes256 -e -in original.txt -out encrypted.txt
enter aes-256-cbc encryption password: (パスワード入力)
Verifying - enter aes-256-cbc encryption password: (パスワード確認入力)

復号(AES256):

$ openssl enc -aes256 -d -in encrypted.txt -out decrypted.txt
enter aes-256-cbc decryption password: (パスワード入力)

"-in"を指定しない場合は標準入力が使われます。

$ echo "abcdefg" | openssl enc -aes256 -e -out e.txt
$ cat e.txt | openssl enc -aes256 -d -out d.txt
$ cat d.txt
abcdefg

サポートされているアルゴリズムは、 enc(1) の "SUPPORTED CIPHERS" を参照してください。
("openssl enc -h" など不正なオプションを指定して enc コマンドを実行した時に表示される、"Cipher Types" からも確認出来ます。)



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-27 19:04:04
md5:0781f081887de9fff0bd0bcc1f3306fc
sha1:9b39ad77fed5a1f7349c647ad2226ad67a88b78c

技術/Security/PKI,SSL,TLS/メモ03_OpenSSLと証明書の練習  

所有者: msakamoto-sf    作成日: 2012-02-05 23:22:18
カテゴリ: SSL/TLS セキュリティ 

OpenSSLコマンドを使った「テストCA環境の準備」「証明書要求の作成」「テストCA環境で証明書の発行」を駆け足で紹介します。作業ディレクトリは特に指定がなければお好みのカレントディレクトリです。

※なお今回は秘密鍵を暗号化せずに取り扱っているため、証明書作成や署名で一切パスフレーズを訊かれません。実際は非常に危険な状態となりますので、ご注意ください。

テスト用ルート証明書の準備

テスト用ルート証明書のRSA秘密鍵を生成:

> openssl genrsa 2048 > testca_seckey.pem

テスト用ルート証明書のための設定ファイル testca_conf_req.txt を準備:

[req]
prompt = no
distinguished_name = testca_dn
x509_extensions = testca_ext

[testca_dn]
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Test Root CA
commonName = Test CA
emailAddress = ca@example.com

[testca_ext]
basicConstraints = CA:true

テスト用ルート証明書を生成:

> openssl req -config testca_conf_req.txt -new -x509 -sha1 -days 3650 -key testca_seckey.pem > testca.crt
"-new" : 新しい証明書要求を作成。"-in"オプションや標準入力は無視される。
"-x509" : 証明書要求ではなくX509証明書自体を発行する。

テスト用ルート証明書で署名する証明書要求を作成

秘密鍵を生成:

> openssl genrsa 2048 > testcert1_seckey.pem

証明書要求用の設定ファイル testcert1_conf.txt を準備:

[req]
prompt = no
distinguished_name = testcert1_dn

[testcert1_dn]
countryName = JP
stateOrProvinceName = Tokyo
organizationName = Test Cert1
commonName = localhost
emailAddress = testcert1@example.com

証明書要求を生成:

> openssl req -config testcert1_conf.txt -new -sha1 -days 3650 -key testcert1_seckey.pem > testcert1.csr

テストCA環境の準備と署名

テストCA環境用のディレクトリと初期設定ファイルを準備する。
"C:/temp" 以下に次のようなファイルを準備する。

C:/temp/
    testca.crt : テスト用ルート証明書をコピーしてくる
    testca_seckey.pem : テスト用ルート証明書の秘密鍵をコピーしてくる
    index.txt : 中身空っぽ。
    serial.txt : "01"とだけ書かれたテキストファイル
    certs/ : 空ディレクトリ

テストCA環境用の設定ファイル testca_conf_ca.txt を準備:

[ca]
default_ca = testca

[testca]
dir              = C:/temp
certificate      = $dir/testca.crt
database         = $dir/index.txt
new_certs_dir    = $dir/certs
private_key      = $dir/testca_seckey.pem
serial           = $dir/serial.txt

default_days = 3650
default_md = sha1

policy = testca_policy

[testca_policy]
countryName            = supplied
stateOrProvinceName    = supplied
organizationName       = supplied
organizationalUnitName = optional
commonName             = supplied
emailAddress           = supplied

署名:

> openssl ca -config testca_conf_ca.txt -in testcert1.csr -batch
Using configuration from testca_conf_ca.txt
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'Tokyo'
organizationName      :PRINTABLE:'Test Cert1'
commonName            :PRINTABLE:'localhost'
emailAddress          :IA5STRING:'testcert1@example.com'
Certificate is to be certified until Feb  2 13:23:42 2022 GMT (3650 days)

Write out database with 1 new entries
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=Test CA, ST=Tokyo, C=JP/emailAddress=ca@example.com, O=Test Root CA
...

"C:/temp/certs/01.pem" が生成される。これがテスト用ルート証明書で署名された証明書(PEM形式)ファイルになる。
これを "testcert1.crt" にリネームしてダブルクリックすると以下のように証明書の検証に失敗する。

証明書のパスも確認できない。

ここでtestca.crtをダブルクリックして証明書を「信頼されたルート証明機関」にインポートする。


改めてtestcert1.crtをダブルクリックすると以下のようになり、無事証明書のチェインが確認できた。



更にローカルで動作させているApache + mod_ssl環境に、testcert1.crtとtestcert1_seckey.pemを組み込んでみる。

SSLCertificateFile C:/(...)/conf/ssl/testcert1.crt
...
SSLCertificateKeyFile C:/(...)/conf/ssl/testcert1_seckey.pem

・エクスプローラからtestca.crtをインポートした状態であれば、IE9ではエラー無くlocalhostにアクセス出来る。


・Chromeでは名前について警告が出てしまった。


・Firefox9はWindowsとは別に証明書ストアを管理しているため、別途手動でtestca.crtをインポートした。


・インポートした後であれば、特にエラーや警告無くhttpsにアクセス出来た。


・Android 2.2の場合、まずtestca.crtをSDカードにコピーし、証明書をインストールする。
その後、localhostは使えないので直接IPアドレスを指定してアクセスしてみると名前の不一致で警告が表示された。

証明書を確認すると、内容自体はこちらが準備したものである。

「セキュリティ警告」に戻り「続行」をクリックすることでhttpsにアクセスできた。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-27 18:52:36
md5:ca850456e8f1f9c14a430c3f6096a806
sha1:2bbe172e0cef664930f1b1f22b046dd6852f3b7d