WPF で 共通するリソース(特に画像) を 別DLL へ切り出して共有利用する方法についてまとめました。
画像ファイルはパス設定をうまくやらないとエラーとなって動かないので、ポイントについて触れながら作成手順を記載します。
サンプルとして名前付きの BitmapImage を作成します。
目次
リソースDLL の 作成
リソースDLL の 利用
おまけ
サンプルコード
GitHub / samplecode_ResidentApplication
ダウンロード
リソースDLL の 作成
ここではまず 共通で利用したい リソースDLL の作成を行います。
プロジェクトの作成は 「WPF カスタム コントロール ライブラリ」 を利用します。
空のプロジェクトからもできると思いますが…参照設定が面倒なので前述の「WPF カス ...
2015年
WPF で ボタン に 画像 を 使用する 方法
WPF で Button 要素に画像を利用するにはどうしたら良いかについて調べたのでまとめました。
いろいろなサンプルコードを参照しながら検証したのですが…マウスオーバーやマウスプレスを利用する場合に Style と Trigger を利用した xaml の記載が必要になります。
単純に画像だけでよければ Image を利用するだけで事足ります。
画像を使うので リソース でもいくつか問題が発生しましたが…
WPF の リソース に関しては 別記事 にします。。
目次
基本の画像ボタン
画像と文字列を含むボタン
マウスオーバーで画像変更するボタン
サンプルコード
GitHub / samplecode_ResidentApplication
ダウンロード
基本の画像ボタン
ボタン背景として文字列ではなく画像を利用するような入力 ...
Akinari Tsugo
23:14
C#,
WPF
C# で AES暗号 (共通鍵暗号) を 利用 する 方法
AES暗号 を 利用して暗号化および復号を行うとき、具体的にどのようなコードを実装すればよいかをまとめてみました。
暗号技術の詳細には触れず、実装する場合にどうしたら良いか、という観点でまとめました。
目次
概要
鍵生成
暗号化
復号
[おまけ] サンプルコード
概要
"AES暗号" は 共通鍵暗号 の一種です。
学術的な詳細は分かりませんが… "DES暗号" よりは安全な暗号方法です。
AES暗号の仕様として以下のルールが決まっているので、利用する際は設定を間違えないように気を付けます。
ブロック長
128bit
鍵長
128/192/256bit
実際に実装で利用する共通鍵は「IV (Initialize Vector/初期化ベ ...
Akinari Tsugo
21:51
C#,
セキュリティ
C# で RSA暗号 (公開鍵暗号) を 利用 する 方法
ここでは 公開鍵暗号 で利用される RSA暗号 を C# で実際に利用するサンプルを掲載します。
あくまで暗号の利用に注目しての記事とするので、通信等のやり取りに関しては割愛します。
目次
鍵生成
暗号化
復号
鍵生成
RSA暗号では最初に公開鍵と秘密鍵のペアを作成します。
作成した公開鍵を利用して暗号化されたデータは秘密鍵によってのみ復号できます。
C# の RSACryptoServiceProvider を利用する場合、以下のようなパラメータが出力されます。
公開鍵
Modulus (法)
Exponent (指数)
秘密鍵
Modulus (法)
Exponent (指数)
P
Q
DP
DQ
InverseQ
D
※ 秘密鍵は公開鍵(Modulus、Exponent)を含んだものにな ...
Akinari Tsugo
23:41
C#,
セキュリティ
暗号化 と ハッシュ化 の 違い
暗号 と ハッシュ を混同して話しをする人がいて大変気になるので調査結果含めてまとめてみたいと思います。
まぁ、結局のところ暗号化とハッシュ化の違いは複合できるか復号できないかの違いなんですが…。
暗号化:決まった規則に従ってデータを可逆変換する
ハッシュ化:決まった規則に従って一定長のデータに不可逆変換する
目次
暗号化 とは
ハッシュ化 とは
暗号化 とは
特徴
暗号化とは、データを決まった規則に従って組み換えること。
暗号化されたデータは復号できることが特徴になります。
用途
通信途中で第三者に盗み見られたり改竄されたくないデータ通信に用いられます。
実装例
共通鍵、公開鍵がWEBでよく見かける実装例になると思います。
具体的には以下のようなアルゴリズムが該当します。
公開鍵暗号
RSA暗号
ECDH暗号 ...
Akinari Tsugo
23:17
セキュリティ
WebAPI + HTML + JavaScript において ファイル を ドラッグ&ドロップ で アップロード する 方法
よくある Webページ上に ファイル を ドラッグ & ドロップ して アップロード する アプリ を作ってみます。
この記事では サーバー側 と クライアント側 をまとめて掲載しています。
サーバー側は ASP.NET WebAPI、クライアント側は HTML + JavaScript で実装します。
アップロード は POST で フォームデータ として アップロード します。
目次
サーバー処理
クライアント処理
HTML
CSS
JavaScript
サンプルコード
GitHub - garafu / samplecode_FileUpload
ダウンロード zip
サーバー処理
WebAPI 用 の コントローラ を作成します。
受け取る ファイルデータ ...
Akinari Tsugo
23:41
C#,
HTML,
JavaScript,
jQuery,
Web API
PL/SQL で 大量 テストデータ を 投入 する サンプルコード
Oracle データベース に 大量のテストデータ を PL/SQL を利用して投入する サンプルコード と 関連する内容 をまとめました。
目次
データ投入 の 基本形
シーケンスの取得
ランダムな値の取得
文字列結合
データ投入 の 基本形
本来なら INSERT だけでいいところなのですが… SELECT, UPDATE, DELETE も念のため組み込んだ サンプルコード を作ってみました。
SET SERVEROUTPUT ON;
DECLARE
vUSER_ID NUMBER;
vUSER_NAME VARCHAR2(100);
vRANK_CODE NUMBER;
vMAX_COUNT NUMBER := 1000;
vCOMMIT_UNIT NUMB ...
Akinari Tsugo
23:42
Oracle,
SQL
日本語入力 確定 時に イベント を発生させる jQuery プラグイン
JavaScript で 日本語入力 ON のときの 確定イベント(日本語変換が終わって入力済みを意味する Enterキー 入力) を取得する jQuery プラグイン を作ってみました。
日本語入力中はイベントを発火せず、フォームとして入力が終わって確定する Enterキー入力 で イベント を発火する jQuery プラグイン です。
参考までにですが…日本語入力 ON と OFF のときの Enterキー の挙動については以下のようになります。
keypress があるかないかが 日本語入力中かどうか を判定するポイントになります。
IME変換中の Enterキー
keydown → keyup
IME変換しない Enterキー
keydown → keypress → keyup
目次
デモ
プラグイン
利用方法
デモ ...
Akinari Tsugo
23:05
JavaScript,
jQuery
JavaScript における 日本語入力 確定 (Enter) イベント
JavaScript で 日本語入力 ON のときと OFF のときとで 確定入力 (Enterキー入力) を判別する方法についてまとめます。
検索ボックスなどのテキスト入力ボックスにおいて確定ボタンの組み合わせた UI を設計するとき、入力を簡易にするために Enterキー で確定を意味させたいと思うことがあります。
…が、日本語入力の Enter と 確定を意味する Enter をどのように判別すると良いか材料がないので、
ここではいくつかのブラウザでイベントがどのように発生しているかを調査しました。
実際に使えるようにした jQuery プラグイン は こちら に記載しています。
目次
各ブラウザの挙動
確定入力の判別方法
各ブラウザの挙動
日本語入力ON および OFF それぞれの状態で [a] → [Enter] と入力したときの動 ...
Akinari Tsugo
23:05
JavaScript
JavaScript で クエリストリング を 生成 する 方法
JavaScript で オブジェクト を クエリ文字列 に変換(シリアライズ)する サンプルコード を作成しました。
以前書いた "JavaScript で クエリストリング を 取得 & 分解 & 整形 する 方法" に対応する コード になります。
目次
生成 する サンプルコード
サンプルコード の 使い方
対応している オブジェクト
関連記事
JavaScript で クエリストリング を 取得 & 分解 & 整形 する 方法
生成 する サンプルコード
サンプルコード
/**
* 受け取ったオブジェクトをクエリ文字列にシリアライズします。
*
* サンプル オブジェクト
* var query = {
* action: 'view',
* id: '123',
* debug: undefin ...
Akinari Tsugo
22:43
HTML,
JavaScript
C# で ローカルマシン情報 を 取得 する 方法
ローカルマシン の IPアドレス、MACアドレス、コンピューター名、ログイン中ユーザー名 を取得する サンプルコード を掲載します。
どちらかと言うと、クライアントアプリ側に対する実装での利用を想定しています。
目次
IPアドレス
MACアドレス
コンピューター名
ログインユーザー名
IPアドレス
最近は IPv4 だけでなく、 IPv6 も考慮しないといけないですし、PC 1台 に必ずしも 1つ の ネットワークカード とも限りません(ノートPC で 無線 と 有線 の2ポート等)。
また、物理的な ネットワークインターフェース 1つ に対して 複数のIPアドレス を設定することもできます。
ここでは すべての "有効な" ネットワークインターフェース に対して、 IPv4、IPv6 関わらずすべての IPアドレス を取得するようなコード ...
Akinari Tsugo
9:00
C#,
ネットワーク
C# で ブロードキャスト 送信 / 受信 する 方法
ブロードキャスト で データを送信する場合、 UDP 通信 を利用して行います。
具体的なクラス名だと Socket クラス または UdpClient クラス を利用します。
ここでは、UdpClient を利用して、ブロードキャスト にデータを送信 または ブロードキャストに送信されたデータを受信する サンプルコード を掲載します。
ここで言う ブロードキャストアドレス は リミテッド・ブロードキャストアドレス (255.255.255.255) というアドレスに送信する例としています。
結果としては ローカルブロードキャストアドレス と同じホストへ送信することになりますが、ネットワーク を超えることができない(ルーターを越えられない)点に注意してください。
目次
ブロードキャスト 送信 (クライアント)
ブロードキャスト 受信 (サーバー)
...
Akinari Tsugo
14:17
C#,
ネットワーク
C# で Socket 通信 を行う 方法 (UDP 通信 with Socket)
Socket を利用した通信で UDP 送受信 を行う サンプルコード を掲載します。
Socket 通信 でも 正統派 コード、ここでは UDP通信 でも Socket クラス を用いた 同期処理 および 非同期処理 の サンプルコード を掲載します。
目次
UDP 同期 送受信
UDP 同期 受信 (サーバー)
UDP 同期 送信 (クライアント)
UDP 非同期 送受信
UDP 非同期 受信 (サーバー)
UDP 非同期 送信 (クライアント)
UDP 同期 送受信
UDP 同期 受信 (サーバー)
正統派はこちらの実装なんでしょうか…
ただただ面倒な実装なので、個人的には UdpClient の方が好みです。
public void List ...
Akinari Tsugo
14:09
C#,
ネットワーク
C# で Socket 通信 を行う 方法 (UDP 通信 with UdpClient)
Socket を利用した通信で UDP 送受信 を行う サンプルコード を掲載します。
ここでは UDP通信 でも UdpClient クラス を用いた 同期処理 および 非同期処理 の サンプルコード を掲載します。
目次
UDP 同期 送受信
UDP 同期 受信 (サーバー)
UDP 同期 送信 (クライアント)
UDP 非同期 送受信
UDP 非同期 受信 (サーバー)
UDP 非同期 送信 (クライアント)
UDP 同期 送受信
UDP 同期 通信 は UDP 通信 の基本操作になります。
非同期化したければ、このメソッドごと Task.Factory.StartNew してしまうのも方法だと思います。
…途中で停止させる実装は別途必要ですが。 ...
Akinari Tsugo
11:49
C#,
ネットワーク
C# で enum を フラグ として 演算 & 判定 する 方法
enum を ビットフラグ として利用することはよくあると思いますが、
フラグとして利用する際、よく直面する フラグ操作(フラグ演算、判定) をまとめてみました。
目次
フラグ利用する enum の作成
フラグ 演算
フラグ 判定
フラグ利用する enum の作成
ビット演算できるよう、数値は被らないように値を設定する必要があります。
おおよそ 2進数 における 各桁 が 1 となるような設定になります。
具体的には 1 (=2^0), 2 (=2^1), 4 (=2^2), 8 (=2^3), 16 (=2^4) … といった感じです。
フラグ利用する enum の場合、 Flags 属性 をつけるのもポイントです。
[Flags]
public enum Week
{
Sunday = 0x001,
Monday ...
Akinari Tsugo
11:09
C#
C# で enum と int 、 string を 相互 に 変換 する 方法
列挙型 (enum) から 文字列 (string) または 数値 (int/long等) に変換したり、その逆で、文字列 (string) や 数値 (int/long等) を 列挙型 (enum) に変換する方法について、まとめました。
ここでは、シンプルに 型の相互変換 についてのみ記載しています。
以下のサンプルコードでは、下に示す Season 列挙型 が存在する前提で記載しています。
[Flags]
public enum Season
{
Spring = 0x01,
Summer = 0x02,
Autumn = 0x04,
Winter = 0x08
}
列挙型(enum) → 文字列(string)
var enmVal = Season.Spring;
var strVal = Enum.GetName(t ...
Akinari Tsugo
23:46
C#
SQL*Loader で フィールド を入れる 制御ファイル サンプル
SQL * Loader の 制御ファイル (コントロールファイル) において、文字や数値、日付、シーケンスといった値を挿入する場合のサンプルを記載します。
文字 (varchar)
数値 (number)
日付 (DATE)
シーケンス (SEQUENCE)
固定値
文字 (varchar)
(
NAME
)
数値 (number)
(
AMOUNT DECIMAL EXTERNAL
)
日付型 (DATE)
(
REGISTER_DATE DATE "YYYY/MM/DD HH24:MI:SS"
)
シーケンス (SEQUENCE)
(
USER_ID "USER_ID_SEQ.NEXTVAL"
)
固定値
固定値は必要に応じてデータベースの型に変換されます。
(
column_name CO ...
Akinari Tsugo
0:22
Oracle,
SQL
SQL*Loader の 使い方
SQL*Loader を用いて oracle データベース に CSVファイル を取り込む方法について調べたので、
ここでは、もっとも単純な入門編的な位置づけで記事を記載します。
SQL*Loader を利用するにあたり、準備するファイルは "CSVファイル" と "制御ファイル (コントロール・ファイル)" の 2ファイル です。
"CSVファイル" は 投入するデータそのものを記載します。
"制御ファイル (コントロール・ファイル)" は 投入元 CSVファイル と 投入先 テーブル の マッピング を定義します。
2つのファイルが準備できたら、 sqlldr コマンド で CSVファイル を テーブル にインポートします。
目次
データ投入先テーブル
CSVファイル の 準備
制御ファイル (コントロール・ファイル) の 準備
テーブル へ ...
Akinari Tsugo
0:29
Oracle,
SQL
C# WPF で タスクトレイ 常駐アプリ の 開発
C# の WPF を利用して、タスクトレイに常駐するアプリケーションのひな形を開発してみます。
チュートリアルに近い形で順を追って作成できるようにしてみました。
目次
概要
プロジェクト の 作成
常駐アプリ の 実装
アプリケーション名 の 変更
NotifyIcon クラス の ラッパー ひな型 (NotifyIconWrapper) 作成
アプリケーション の 起動処理 を 修正
NotifyIconWrapper クラス の 実装
常駐アプリ の 実行/テスト
サンプルコード
...
Akinari Tsugo
18:16
C#,
WPF