seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

ExcelのRTDサーバをC#で作る方法

Excelでリアルタイムデータを取得するRTDサーバをC#で作る方法 概要 Excelには動的にリアルタイムデータをセルに取得・表示するための仕組みが2つある DDE(Dynamic Data Exchange, 動的データ交換) RTD(Realtime Data) どちらも、ほぼ似たようなワークシート…

Javaのジェネリック型引数をリフレクションによって取得する方法

Javaのジェネリック型引数をリフレクションによって取得する方法 概要 Javaは、Java1.5からジェネリクス(総称型)が利用可能になったが、1.4以前のコードとの互換性のためにイレージャ(Erasure)とよばれる手法をとっている。 簡単にいうと、イレージャとは、…

Excelのリンクが解除できない!!場合の問題箇所の特定方法

Excelのリンクが解除できない!!場合の問題箇所の特定方法 概要 マクロ付きExcel(*.xlsm)を作っていたら、いつのまにか開くたびにリンクエラーが発生して、しかも、それが消せない。という状況に陥った。いったら、どうしたら消せるのか? 経緯 リンクエラー…

CompletableFutureの使い方の基本形とFutureTaskとの連携例

Java8から利用可能になったCompluteableFutureとは、他言語におけるDeferredとかPromiseパターンといわれるものと同等のものであり、これにより並列処理を直列的に記述できるようになる。(つまり超便利。) 基本的な使い方 もっとも簡単な使い方としては、Com…

CDIで@Dependentなクラスを@Injectするときに引数を渡す方法(メモ)

概要 CDIで、@Dependentなクラスを定義し、利用する側のクラスのフィールドで@Injectするときに、任意のパラメータを渡したい。 @Dependent public class Foo { @Inject private AnyService srv; private String arg; public void setArg(String arg) { this…

Javaのダイレクトバッファの利用上の注意点と、各種バッファを使った読み込みパフォーマンスの比較

概要 前回では、ヒープ上に確保したByteBufferと、ダイレクトバッファとして作成したByteBufferでのデータの読み取りパフォーマンスを比較した結果、圧倒的にダイレクトバッファが速いことが分かった。 しかし上記ベンチマークは、あえてByteBuffer単体での…

jmhマイクロベンチマークツールを使ったByteBufferのバイトオーダによるパフォーマンスの違いの比較

(ヒープおよびダイレクトバッファによるByteBufferの性能差、およびUnsafeとのパフォーマンスも比較するよ!) (とりあえず計測結果を先に知りたい人は結論を見てね!) (ファイルのシーケンシャルリードを含むダイレクトバッファの使い方やパフォーマンス比較…

JavaFX8で簡単なアプリケーションを簡単に作る方法

動機、なぜJavaFXでアプリを作るのか? Javaには、Swingという、十分に成熟しておりパフォーマンスも悪くないUIライブラリがある。現状、普通に使っている分には何の不自由もない。また、Swingは今後発展することはないとはいえ、(すぐに)廃止されるわけでは…

ForkJoinPoolにおけるタスクのブロッキングの実装方法 (2014/06/03)

ForkJoinPoolにおけるタスクのブロッキングの方法 先にForkJoinPoolの特性や使い方について調べたが、「同期処理」や、単純な「待ち」を含むタスクが、どのようになるのか調べてみた。 結論からいうと、同期をとる必要があるタスクは、Java8でサポートされる…

ForkJoinPoolとForkJoinTaskの特徴と使い方

Fork/Joinとは? JavaSE7でサポートされるjava.util.concurrent.ForkJoinPoolは、ExecutorServiceの一員であり、一見するとThreadPoolExecutorに似たようなものに思えるが、実際は全く別の、異質のものである。 ForkJoinPoolは、ありていに言えばWork-steali…

Visual Studio 2013 Expressで標準サポートされるテンプレートエンジン(T4)の活用方法

コードジェネレータの有用性とT4 業務系のアプリケーションを作成していると、多かれ少なかれデータモデルのようなものをソースコード上のエンティティクラスとして表すために似たようなコードをたくさん書かなければならないことがある。もちろん手で地道に…

Java7u51以降でApache Derbyのネットワークサーバを使う場合の設定

概要 最近アップデートされたJava7u51を使用したところ、 Apache Derby 10.10のネットワークサーバを起動しようとすると、以下のような例外が発生して起動できなくなっていた。 db-derby-10.10.1.1-bin\bin>startNetworkServer Fri Feb 14 13:15:27 JST 2014…

EL式(EL3.0)をアプリケーションから活用する

概要 先の記事でEL2.2でのアプリケーションからの利用方法について調べたが、 ついでにEL3.0についても調べてみることにした。 利用方法も更に簡単になっており、便利で興味深い機能も増えている。 EL3の特徴 EL3.0では、EL2.2から文法を大幅に拡張している…

EL式(EL2.2)をアプリケーションへ組み込む方法

概要 JavaのJSP/JSFでは「EL式」という簡易な式言語を用いてオブジェクトの連鎖を評価することができる。 たとえば、"${foo[bar].baz}"というEL式では、fooという配列またはリストから、添え字を示すbarの位置のあるオブジェクトのbazというプロパティを評価…

オンメモリのResultSetとしてJDBCのCachedRowSetを使う方法と、そのリファレンス実装の注意点

CachedRowSetとは? CachedRowSetとは、データベースから取得したResultSetをメモリ上に保持する形にしてオフラインでも扱えるようにできるJDBC標準の仕組みである。 Windowsでいうところの旧ADOのRecordsetオブジェクト、あるいはADO.NETのDataTableのよう…

自作Javaアプリにサンドボックスで動くアドインの仕組みを作る方法

概要 「Javaアプリケーション内から信頼できないかもしれないアドインコードをサンドボックスで実行するための方法」について、簡単なサンプルコードとともに、まとめてみたいと思う。※ 信頼できないかもしれない、という意味は後述。*1 セキュリティマネー…

JavaアプリをExe化するLaunch4jの使い方と仕組み

Launch4jとは? Launch4jとは、JavaアプリケーションのExeラッパーを作成するツールである。以下よりダウンロードできる。http://launch4j.sourceforge.net/ このLaunch4jを使うことで、実行可能JarをExeファイルとして起動できるようにラップすることができ…

AspireS3に搭載されているハイブリッドドライブ"ExpressCache"のメモリ浪費と有用性について調べてみた。

※ パフォーマンス計測を追加し内容も少し訂正しました。(2013/4/13) ASUS Aspire S3とExpressCache ASUSのUltrabookである、Aspure S3-391を購入してもらった。スペックは以下のとおりである。 Windows7 64ビット Intel Core i5-3371U 1.7GHz 4GBメモリ(増設…

Tivoli Access Manager(TAM)のASP.NETでの使い方メモ(備忘録)

概要 一年ほど前に、IBMのTivoli Access Manager(TAM)によるシングルサインオンのユーザ認証の仕組みをASP.NETのアプリに組み込んだ。 記憶があいまいになってきているので、まだ覚えてるうちに、ASP.NET側での要点を備忘録として残す。 要点 TAMはゲートウ…

Windows8のHyper-VのOn/Offを簡単に切り替えられるようする方法

※ 急いでいる人はオチを見てね! 概要 新しくマシンを新調したら、Windows8のクライアントHyper-Vを有効にできるCPUだったので、ためしにHyper-Vを有効にしてみた。 Hyper-Vはハイパーバイザ型なので、ホストOS自身も仮想化されることになる。このため、ゲス…

JNLPのJava AppletをChromeでも使うお作法 一式メモ

JDK1.6u10以降の新しいアプレットでは、 ファイルの読み書き、クリップボードへのアクセス、ローカルマシンのファイルのアクセスが可能になっている JNLP APIを使い、Java Web Startと同じ使用方法 サンドボックスは従来どおり有効、(ファイルアクセス等はユ…

少し古いノートPCにWindows8を入れたらCPUが本気を出してくれなくなったときの対応方法

要約 少し古いノートPCにWindows8を入れたら激遅になってしまった場合、 まず、タスクマネージャかパフォーマンスモニタで現在のCPUの速度を確認する Windows Vista/7/2008/8などの最近のOSはCPUの省電力機能に対応してクロック数を可変できるようにしている…

C#5.0のasync/awaitによる非同期処理の使い方

C#

async/awaitとは async/awaitは、DotNET4.5でC#5.0(とVB)で言語仕様とフレームワークに組み込まれた"非同期処理を同期的に記述できる仕組み"である。 PLINQなどが計算処理などを複数スレッドに分散してCPUを効率よく使うことを目的としているのに対して、asy…

C#アプリケーションの起動時にシフトキーが押されているか判定する方法

Win32のアプリケーションや、MS-ExcelやAccessではシフトキーを押しながらアプリケーションを起動すると、いつもとは違う方法で起動させることができる機能がある。 これをC#のWindowsFormのアプリケーションで実現するには、どうすればいいのかなー、とおも…

MacのVMWare Fusion4で物理ディスクを使う方法

目的 VMWare Fusion 4では、仮想マシンに仮想ディスクvmdkを追加するとき、物理ディスクやパーティションを指定するオプションがない。 しかし、VMWare Fusionのウリの一つである、Boot Campパーティションからの仮想マシンの起動などの機能をみると、Fusion…

Apache Derbyで新規データベースにテーブルを自動構築する簡単な方法

新規データベース作成後の処理 Apache Derbyを埋め込みモードで使う場合、指定したパス上にデータベースが存在しない場合、接続URLのオプションとして、自動的に作成するように指示することができる。 たとえば、以下のような接続URLである。 DriverManager.…

Apache-Derbyのアプリへの組込とUDT/UDFの使い方のメモ(後編)

記事が長くなりすぎたので分割しています。前記事は、こちら。 Derbyにおける自動採番の取得方法とシーケンスオブジェクト Apache Derbyは従来は、プライマリキーとしては「generated always as identity」を指定し、自動採番とする方法と、 SQL:2003準拠、O…

Apache Derby Dbのアプリケーションへの組み込み方と、ユーザー定義型、ユーザー関数の使い方

Apache Derby 10.9.1.0のアプリケーションへの組込方法と、ユーザー定義型とユーザー定義関数の使用例について記述する。 動機 昨今、アプリケーションのバックエンドにSQLite3などの軽量・組み込み型データベースが使われる例が非常に多くなっている。 PCの…

Squirrel SQL ClientをApache Derby(JavaDB)のフロントエンドに使ってみる

Apache DerbyにはGUIの管理ツールが標準では存在しない。 コンソール画面での対話ツールである「ij」で一通りデータベースの管理はできる。 これは、OracleでいうところのSQL*Plusみたいなものである。 DDLのようなものは、たとえばERツールで生成するなどし…

C#でアプリケーション設定を取得・保存する、いくつかの方法

基本はapp.config(web.config)に集約される DotNETではアプリケーション設定の類を扱うには、ざっくりと以下の方法があげられる。 app.config (ウェブアプリケーションの場合は、web.config) appSettingsによる単純な key=value 形式の文字列データによる方…