Home

Yukun's Blog

タイムスタンプ署名されたデータから利用者が確認できる情報

タイムスタンプ署名の生成と検証のわかりやすいフローがあったので紹介します。
タイムスタンプ署名の生成、検証フロー
タイムスタンプサービスSecureSealの仕組み-SecureSeal:NTTデータ
タイトルのタイムスタンプ署名されたデータから利用者が確認できる情報は、データのコード署名が行われた日時です。

図の説明

利用者がタイムスタンプトークンをデータと一緒に取得した後、TSAの公開鍵を用いてタイムスタンプトークンを複合します(7)。複合するとハッシュ値(メッセージダイジェスト)+日時(コード署名が行われた日時)を取得できますので、ここで取得できたハッシュ値と、取得したデータから算出したハッシュ値を比較して改ざんやなりすましがされていないかを確認します(8)。

Android: リソースの画像ファイルの拡大・縮小描画 - drawBitmap()

画像ファイルの表示(拡大・縮小)

表示する画像はEclipse上でAndroidプロジェクト作成時に自動的に作成されるIcon画像です。
画像パス:プロジェクト名/res/drawable-hdpi/icon.png

resフォルダ以下に置かれたリソースはコンパイル時にプログラムに組み込まれます。その画像リソースを読み込む際は、

Bitmap BitmapFactory.decodeResource(Resources r, int resourcesID)

を用います。読み込んだBitmapインスタンスを描画するには、Canvasクラスのインスタンスメソッドである

void drawBitmap(Bitmap image, int x, int y, Paint p)

を使います。なお、拡大・縮小する場合も上記のdrawBitmapをオーバーロードしたものを使います。

void drawBitmap(Bitmap image, Rect src, Rect dst, Paint p)

今回のサンプルプログラムでは、元画像の幅と高さを2倍したイメージを描画しています。

ImageSp.java

package info.yukun.imagesp;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class ImageSp extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(new ImageView(this));
	}
}

ImageView.java

package info.yukun.imagesp;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
import android.view.View;

public class ImageView extends View {

	private Bitmap image;

	public ImageView(Context context) {
		super(context);
		setBackgroundColor(Color.WHITE);

		// リソースの画像ファイルの読み込み
		Resources r = context.getResources();
		image = BitmapFactory.decodeResource(r, R.drawable.icon);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// イメージ描画
		canvas.drawBitmap(image, 0, 0, null);

		int w = image.getWidth();
		int h = image.getHeight();
		// 描画元の矩形イメージ
		Rect src = new Rect(0, 0, w, h);
		// 描画先の矩形イメージ
		Rect dst = new Rect(0, 200, w*2, 200 + h*2);
		canvas.drawBitmap(image, src, dst, null);
	}
}

携帯の迷惑メールフィルタのホワイトリスト(ドメイン)設定例

携帯メールアドレスを分かりやすい文字列(短いor意味がある)すると迷惑メールが頻繁に来るので、迷惑メールフィルタのホワイトリスト設定で受信許可するドメインを絞ると良いかもしれません。

追記(2009-7): 許可アドレス以外は問答無用ではじいてしまうので、予期しないドメインからの重要なメールを取りこぼしてしまいます。ブラックリスト型に切り替えようかな。

ホワイトリストドメイン例

softbank.ne.jp
vodafone.ne.jp
ezweb.ne.jp
docomo.ne.jp
gmail.com
me.com
mac.com
i.softbank.jp
dk.pdx.ne.jp

迷惑メールのドメインをチェックするとyahoo.com、yahoo.co.jpやhotmail.comが多いので、これらはリストには入れませんでした。
その他、使用しているサービスからの連絡メールが受け取れるように別途ドメインを追加していけば良いかと思います。

SJC-Pに受かった

春先にSunがOracleに買収されて私的に気になるMySQLの形振りどうなるのかな、とか今後のOracleのロードマップ次第ではPostgreSQLのOSSとしての立場が再度見直されそう、とかSJC-P(Sun Certified Programmer for the Java Platform, Standard Edition 5.0)の名前や内容が変わるか否かが少し気になってましたが、そういった今後のことは今夏に発表らしいので(手続きや株主の訴訟が解決後?みたい)、気兼ねなくできました。

この試験はスコアが分野別にも集計してくれるので受験者の知識・技能を細かく評価するのに役立ちます。私はAPIコンテンツや並行性のセクションが100%に対してコレクション/ジェネリックスのセクションが相対的に低いという少し意外な結果が出たので、今日は自分のレベルが客観的に分かって収穫だったかも。今後の学習の指針にしよう。

Excel VBA: 指定した行、列内のテーブルのセルに乱数を格納

excel_vba_random_cells.png
今回のネタは乱数でサンプルデータを生成したいときなどに使えますかね。

ソースコード

Sub randloop()
    Randomize ' シードの設定(引数省略でシステムタイマーの値)
    Const GYO_S As Integer = 1 ' 開始行
    Const RETSU_S As Integer = 1 ' 開始列
    Const GYO_E As Integer = 10 ' 終了行
    Const RETSU_E As Integer = 5 ' 終了列
    Const UPPER As Integer = 100 ' 乱数の最大値
    Const LOWER As Integer = 0 ' 乱数の最小値

    ' 指定された行、列のテーブル内のセルに乱数を格納
    For i = GYO_S To GYO_E
        For j = RETSU_S To RETSU_E
            ' Rndは[0, 1)の範囲の値を返す
            Cells(i, j).Value = Int((UPPER - LOWER + 1) * Rnd + LOWER)
        Next j
    Next i
End Sub

実行結果は上図のように0~100の範囲の乱数(今回は整数)が格納されます。
上記のコードの要の式は

(upper - lower + 1) * Rnd + lower

です。簡単に意味を説明しますと括弧内の+1はRndの戻り値の範囲が1未満の為の補正で、式の最後の+lowerはRndの戻りが0の場合の補正、と捉えます。

参考サイト

Page 1 of 3812345...Last »

Home

バックナンバー
最近のコメント
最近のトラックバック
メタ情報

Return to page top