インストーラで Windows イベントログのソースを作成

初めて Windows サービスを作ってみたのですが、イベントログを出力しようとすると SecurityException とかが出て、うまく書き込めませんでした。

いろいろ調べてみて、以下のようなことがわかりました。

  • イベントソースを新規作成するには管理者権限が必要
  • イベントログに書き込むのに管理者権限は必要ない

私の場合、存在しないイベントソースを指定して書き込もうとしていたため、イベントソースを新規作成しようとして、権限が足りなくてエラーになっていたようです。

で、どうすれば良いかというと、イベントログに出力するアプリケーションの場合、インストール時にイベントログのソースを作成してしまうと良いとのことでした。

Visual Studio のセットアッププロジェクトを使ってみたところ、ノンコーディングで全部行うことができましたので、その手順を紹介します。

続きを読む…

MyBatis + Groovy でマッパーを実装

MyBatis は、SQLをアノテーションで書く方法と、XMLで書く方法の2つをサポートしています。どちらが良いかは好みが分かれるところでしょう。

ただ少なくとも、アノテーションは記述の自由度が低い(特に改行しにくい)ため、SQLが複雑になると悲惨なことになります。

Java アノテーション版

もうちょっと見やすくかければ…と考えていて、Groovy を思い出しました。

続きを読む…

Eclipse Installer (Windows版) を試してみた

Eclipse は zip でダウンロードして解凍して入れるのが普通なのですが、Eclipse Installer というインストーラが最近できたようです。ちょっと試してみました。

Eclipse Downloads (Eclipse Installer のページ)

上記ページから Windows(32bit or 64bit) をダウンロードします。私は64bit版でしたが、ダウンロードサイズは約45MBでした。通常の Eclipse と比べるとかなり小さいので、おそらくインストール中にダウンロードが行われるのでしょう。

続きを読む…

[TypeScript] noconflict モードの jQuery を $ で使用する

noconflict モードの場合、いちいち「jQuery」と書かなければなりませんが、自分のスコープ内で $ を定義すれば、$ として使うことができます。

[C#] char から int に変換

全く大した話ではないのですが、数字が入った char を、その数字を表す int にするお話。当然標準クラスのメソッドにあると思ったら、意外になかったというお話。

普通に思いつくのはこれ

1回 string にしちゃうのは面白くない。でも、Int32.Parse には char を取るオーバーロードはありません。

何かないかと思ってMSDNを眺めていたら、Char.GetNumericValue メソッドというそのまんまっぽいのを発見しましたが…

続きを読む…

[PHP] Google App Engine (PHP) でメール送信

Google App Engine (PHP) でメールを送信するときは、PHP標準の mail 関数は使えません。代わりに、GAEが用意するクラスを使う必要があります。以下のようなコードになります。

とてもシンプルでわかりやすいですね。日本語のメール送信というと、文字化けに悩まされることが多いイメージがありますが、このクラスに関しては、特別な処理をしなくても、普通に文字化けせずに送ることができました。ソースはUTF-8で書いています。

ただし、送信者メールアドレスに関しては、セキュリティ上の理由から、以下のような制限があるようです。(「Unauthorized sender」というメッセージの例外が発生します)

続きを読む…