<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ミネルヴァの梟は黄昏とともに飛び始める &#187; Java</title>
	<atom:link href="http://blog.daisukeyamashita.com/post/category/%e3%82%bd%e3%83%95%e3%83%88%e3%82%a6%e3%82%a7%e3%82%a2%e9%96%8b%e7%99%ba/java/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.daisukeyamashita.com</link>
	<description>Follow me on Twitter: http://www.twitter.com/dddaisuke</description>
	<lastBuildDate>Mon, 30 Jan 2012 04:18:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JavaとObjective-C間で正しくAES暗号をやり取りする方法</title>
		<link>http://blog.daisukeyamashita.com/post/1692.html</link>
		<comments>http://blog.daisukeyamashita.com/post/1692.html#comments</comments>
		<pubDate>Wed, 20 Apr 2011 03:56:24 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Xcode/Interface Builder]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/?p=1692</guid>
		<description><![CDATA[Objective-CでAES暗号化をする方法を調べると、以下のように書かれている事が多いが、これだとJavaと互換性がない。 最初、Java（サーバー）側で暗号がデコードできなくて、色々調べてみたらAES暗号のBlock cipher modeが違うという事が分かった。 解決方法はJava側でObjective-C標準のCipher Block Chaining (CBC)モードに合わせてやるか、Objective-C側の実装を切り替えてやる必要がある。 このブログにObjective-C側の実装を切り替える方法が記載されていたので、参考にして欲しい。 以下のコードを保存して、プログラム中からimportすると上の書き方でJavaで復号できるAES暗号処理が行える。]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/1692.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javaの勉強</title>
		<link>http://blog.daisukeyamashita.com/post/711.html</link>
		<comments>http://blog.daisukeyamashita.com/post/711.html#comments</comments>
		<pubDate>Fri, 19 Jun 2009 05:54:03 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/?p=711</guid>
		<description><![CDATA[すぎゃーんさんの記事からたどりつきました。 勉強がんばってください！ 新入社員にこういうのやらせるのは面白いかも。]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/711.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SunがOracleに買収される！</title>
		<link>http://blog.daisukeyamashita.com/post/659.html</link>
		<comments>http://blog.daisukeyamashita.com/post/659.html#comments</comments>
		<pubDate>Tue, 21 Apr 2009 01:13:34 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/?p=659</guid>
		<description><![CDATA[　しかし、Oracleは買収がめっちゃうまいね。うちの会社にもIBMでDB2周りをやっていた人がいるんだけど、DB業界の人に言わせると、（DB業界の）かなりいい会社を買収して、うまいこと立ちまわっていると言う。 　たしかに、IBMのDB2やMicrosoftのSQL Serverはどちらも、大企業の一事業でしかないので、両社が他の事業の収益を回して、Oracleを叩きつぶすために格安でDBを提供する戦略をとれる（やっている？）にも関わらず、OracleはDB事業を会社の中核に据え、しかも超高収益企業としてIBMやMicrosoftに打ち勝っている。 　日本でも高配当企業として有名ですが、今までソフトウェアしかやってなかった会社だけに、世界第４位のサーバー企業を手に入れたのは面白いですが、ハードウェア事業は一歩間違うと不採算事業になりかねないので、ぜひともハードウェアに走りすぎずに、高収益体制を守ってほしいと思います。 　とりあえず、うちとしては、MySQLとJavaの行方が心配です。。。当面は、Sunを子会社としてブランドを残すんですかね？]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/659.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipseで素早い開発をする方法</title>
		<link>http://blog.daisukeyamashita.com/post/589.html</link>
		<comments>http://blog.daisukeyamashita.com/post/589.html#comments</comments>
		<pubDate>Mon, 12 Jan 2009 10:03:53 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ソフトウェア開発]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/?p=589</guid>
		<description><![CDATA[　ご存知の方も多いと思いますが、現在主流の32bit OSでは4Gbyte以上のメモリを認識させることができません。正確には3GちょっとしかOSに認識させることができません。 　つまり、4Gbyte以上のメモリを搭載させてもすべてを利用する事ができないのです。しかし、Gavotte Ramdiskというツールを使うと、普通にはOSで利用できない領域のメモリをラムディスクとして利用できるようになります。 　ラムディスクはハードディスクよりも高速に動作する上に、フラグメンテーションによる速度低下も発生しないので、この領域をEclipseのコンパイル先に指定すると高速に開発を進めることができます。 　ここで、注意しないといけないのが、コンパイル先はワークスペース以下にしか設置できないので、シンボリックリンクでラムディスクに指定する必要があります。 　Windows Vistaでのシンボリックリンク作成方法は以下のとおりです。 &#62; mklink /D [シンボリックリンク名] [リンク先]]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/589.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javaでproxy.pacを処理させる簡単な方法　その２</title>
		<link>http://blog.daisukeyamashita.com/post/366.html</link>
		<comments>http://blog.daisukeyamashita.com/post/366.html#comments</comments>
		<pubDate>Wed, 28 May 2008 11:46:32 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/?p=366</guid>
		<description><![CDATA[　その１では、ブラウザからプロキシ設定を取得するコードを掲載しましたが、今回はJavaのコントロールパネルの設定を完全に読み取るコードです。 　これで、プロキシの対応もバッチリ！（実は、認証付きのプロキシという、高いハードルがあるのですが、そちらはそのうち記事にしたいと思います。。。） ソースコードはこちらから ProxyInfoManager.java ProxyInfo.java]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/366.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javaでproxy.pacを処理させる簡単な方法　その１</title>
		<link>http://blog.daisukeyamashita.com/post/365.html</link>
		<comments>http://blog.daisukeyamashita.com/post/365.html#comments</comments>
		<pubDate>Wed, 28 May 2008 11:40:26 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/?p=365</guid>
		<description><![CDATA[　ネットワークプログラミングをする場合、ローカルアプリケーションでは考えられないような問題が発生します。 　企業での利用を想定したビジネスアプリで最初に問題になるのが、プロキシやファイアーウォールだと思います。特に大企業になると、拠点毎にプロキシが分れており、proxy.pacと呼ばれるJavaScriptで記述されたファイルをブラウザに設定し、動的にプロキシを切り替える運用が行われております。 　JavaにもWindowsのコントロールパネルに設定パネルがあり、プロキシの設定ができるのですが、普通の手順ではJavaプログラムからこの設定を呼び出す事ができません。また、Sunの公式サイトも情報がありませんでした。 　Java Appletでは、この情報が使われているのは明らかなので、JDKのソースコードを読めば分かると思いがんばって読んでみる事に。。。 　その結果、どうやらJRE_HOME/libにあるdeploy.jarを利用すると良いという事が分りました。以下のコードでブラウザからプロキシの設定を取得する事ができます。当然、proxy.pacもパースすることができ、「ローカル（file:///）」や「ネットワーク（http://）」にファイルが設置されていても読み込めます。 ソースコードはこちらから つづく。]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/365.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EJB（CMP）でBlobデータを扱う方法</title>
		<link>http://blog.daisukeyamashita.com/post/327.html</link>
		<comments>http://blog.daisukeyamashita.com/post/327.html#comments</comments>
		<pubDate>Tue, 22 Apr 2008 11:43:17 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ソフトウェア開発]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/post/327.html</guid>
		<description><![CDATA[　久しぶりにハマりました。 　今まで、SOBA CITYやSOBA mierukaで利用するバイナリデータはディスクスペース（Apacheアクセス領域）で管理していたのですが、データ自体をデータベースで取り扱うようにした方が、管理が楽になるのと、あまり難しい事を考えずにクラスタリングできるようになるとの理由から、バイナリデータをデータベースに押し込む事にしました。 　まず、データをDBに押し込む事は難なくテーブルにBLOB型のカラムを用意してやり、JDBC経由でDBに押し込む。サンプルは、SOBAフレームワークで利用するキーストアをDBに押し込むコード片です。 String sql = &#8220;INSERT INTO keystore2s (id, sessionKsr, sessionTks, userKsr, userTks) &#8221; + &#8220;VALUES (?, ?, ?, ?, ?)&#8221;; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1, strId); ps.setBinaryStream(2, sessionKsr, sessionKsr.available()); ps.setBinaryStream(3, sessionTks, sessionTks.available()); ps.setBinaryStream(4, userKsr, userKsr.available()); ps.setBinaryStream(5, userTks, userTks.available()); ps.executeUpdate(); 　昔、hibernateが出たての頃にプリミティブ型で表現できないような型はすべてObjectにしかマッピングできなかったという嫌な記憶があり、EJBでもBlob型はObject型にマッピングするのだと勝手に思い込み、実行時に以下のようなマッピングエラーに遭遇し調査に時間がかかりました。 java.sql.SQLException: Unable to load to deserialize result: java.io.StreamCorruptedException: invalid stream header [...]]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/327.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java の URLEncoder / URLDecoder で文字化けする問題</title>
		<link>http://blog.daisukeyamashita.com/post/227.html</link>
		<comments>http://blog.daisukeyamashita.com/post/227.html#comments</comments>
		<pubDate>Mon, 12 Nov 2007 13:31:34 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/post/227.html</guid>
		<description><![CDATA[　最近、バタバタしていてあまり記事を投稿できていませんでしたが久し振りの投稿です。 CGIでURLエンコードした文字列をJavaでURLデコードするとなぜか日本語の一部が文字化けする問題が発生していました。色々と調べていると、Perlでは２バイトコードかどうかに関係なく、１バイトずつ文字列をURLエンコードするのに対し、Javaは２バイトコードのみをURLエンコードしていることが分かりました。 ただ、どちらが間違いという事は無く、両方ともエンコーダーの実装としては正しいみたいです。ただし、Javaのデコーダーの実装が良くないみたいで、PerlでURLエンコードした文字列を正確に文字列に戻せない不具合があるようです。 しょうがないので、以下のように自前で正常に動作するURLDecoderを作成しました。 package com.tezukaosamumagazineclub.invoice.epsilon; import java.io.UnsupportedEncodingException; public class URLDecoder { public static String decode(String s, String enc) throws UnsupportedEncodingException { boolean needToChange = false; int numChars = s.length(); StringBuffer sb = new StringBuffer(numChars &#62; 500 ? numChars / 2 : numChars); int i = 0; if (enc.length() == 0) { throw new UnsupportedEncodingException("URLDecoder: [...]]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/227.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Javaでクラスパスを動的に追加する方法　２</title>
		<link>http://blog.daisukeyamashita.com/post/207.html</link>
		<comments>http://blog.daisukeyamashita.com/post/207.html#comments</comments>
		<pubDate>Wed, 24 Oct 2007 06:30:37 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/post/207.html</guid>
		<description><![CDATA[この実行結果を見る限り、&#8221;java.class.path&#8221;に必要なパスを追加してやればイイじゃん！と安易に思ってしまうのですが、これが失敗の始まりです。 Javaのクラスローダは起動時にクラスパスを確定してしまうので、安直に『System.setProperty』ではクラスパスを改変する事ができません。（クラスローダの詳しい仕組みについてはこちらをご覧下さい） で、結局リフレクションで無理やりパスを追加する事になります。 package com.daisukeyamashita.util; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; @SuppressWarnings("unchecked") public class ClassPathModifier { private static final Class[] parameters = new Class[] { URL.class }; public static void addFile(String s) throws IOException { File f = new File(s); addFile(f); } public static void addFile(File f) throws IOException { addURL(f.toURL()); [...]]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/207.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javaでクラスパスを動的に追加する方法　１</title>
		<link>http://blog.daisukeyamashita.com/post/206.html</link>
		<comments>http://blog.daisukeyamashita.com/post/206.html#comments</comments>
		<pubDate>Wed, 24 Oct 2007 06:19:37 +0000</pubDate>
		<dc:creator>daisuke</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.daisukeyamashita.com/post/206.html</guid>
		<description><![CDATA[JavaがOSから受け取る情報はSystem.getProperties()で取得する事ができます。 public class Test { public static void main(String[] args) { System.getProperties().list(System.out); } } 上記のコードを実行すると、下記のような表示結果になります。 -- listing properties -- java.runtime.name=Java(TM) 2 Runtime Environment, Stand... sun.boot.library.path=C:Program FilesJavajre1.5.0_12bin java.vm.version=1.5.0_12-b04 java.vm.vendor=Sun Microsystems Inc. java.vendor.url=http://java.sun.com/ path.separator=; java.vm.name=Java HotSpot(TM) Client VM file.encoding.pkg=sun.io user.country=JP sun.java.launcher=SUN_STANDARD sun.os.patch.level=Service Pack 2 java.vm.specification.name=Java Virtual Machine Specification user.dir=C:Documents and Settingsdaisukewor... java.runtime.version=1.5.0_12-b04 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment java.endorsed.dirs=C:Program FilesJavajre1.5.0_12lib... os.arch=x86 java.io.tmpdir=C:DOCUME~1daisukeLOCALS~1Temp [...]]]></description>
		<wfw:commentRss>http://blog.daisukeyamashita.com/post/206.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

