- blogs:
- cles::blog
JDBC はいつから Class.forName() が必要なくなったのか
java 昨日書いた JDBC から MySQL への接続プログラムを読み返していて、Class.forName() を使っていないことに気づきました。少し前までは Class.forName() しないと java.lang.NoClassDefFoundError が発生していたはずなので、いつから仕様が変わっていたんだろうと思って改めて調べてみたら JDBC 4.0 ( JavaSE 6 ) からのようでした*1。JDBC 4.0 自体の新機能は Java6 を使い始めたときに調べていたはずなのですが、この部分だけ読み落としていたようです。
† DriverManager のリファレンスを調べてみる
確かに JavaSE 6 の java.sql.DriverManager には下記のような記述がありますね。
DriverManager (Java Platform SE 6)
DriverManager メソッド getConnection と getDrivers は、Java Standard Edition サービスプロバイダメカニズムをサポートするように拡張されました。JDBC 4.0 ドライバは、ファイル META-INF/services/java.sql.Driver を含める必要があります。このファイルには、java.sql.Driver の JDBC ドライバ実装の名前が含まれます。たとえば my.sql.Driver クラスをロードするために、META-INF/services/java.sql.Driver ファイルに次のエントリが含まれます。
このドキュメントのサービスプロバイダをたどってみると、下記のような記述がありました。
JAR ファイルの仕様
META-INF/services ディレクトリ内のファイルは、サービスプロバイダの構成ファイルです。サービスとは、よく使われるインタフェースとクラス (通常は abstract) のセットのことです。サービスプロバイダとは、サービスの特定の実装のことです。通常、プロバイダのクラスによって、サービス自体に定義されているクラスのインタフェースとサブクラスが実装されます。サービスプロバイダを Java プラットフォームの実装にインストールするときは、拡張機能の形式、つまり、拡張機能の通常のディレクトリに配置される jar ファイルの形式で行われます。プロバイダを利用可能にするには、アプレットまたはアプリケーションのクラスパスに追加するか、プラットフォーム固有の方法を使います。
というわけで、今回接続に使った mysql-connector-java-5.1.22-bin.jar を解凍してみると、サービスプロバイダ用のファイルがちゃんと入っていました。
\META-INF\services\java.sql.Driver
† これは JDBC だけでなく汎用的な仕掛けだった
これがどのようなメカニズムでロードされるのか調べてみたところ、 java.util.ServiceLoader<S>*2 というクラスを使えば、JDBC ドライバ以外のクラスもこんな感じで自由にロードできるようですね。
ServiceLoader (Java Platform SE 6)
このプログラム中の CodecSet.class は Interface、ServiceLoader は Iterable<S> なので、拡張 for 文などを使えばインスタンスが取り出せるようです。
これが何で Iterable<S> なのかと思ったら複数クラスを登録することができる*3からなんですね。いろいろと勉強になりました。
- *1: JDBCドライバーメモ(Hishidama's Java DriverManager Memo)
- *2: ServiceLoader (Java Platform SE 6)
- *3: Java技術最前線 - 「Java SE 6完全攻略」第11回 コンポーネントのロードを行うServiceLoader:ITpro
AWS の制限解除フォーム一覧
aws AWS には細かくいろいろと制限があったりするので、それがちょっとしたハマりポイントになっています。
このあたり、なにかまとまったサイトがないかなと思って探してみたところ、「AWSの解除できる制限と そのフォーム一覧」というエントリを見つけたのでメモ。
† SES を使ってメールを送る設定をするには
今回は SES を使ってメールを送ろうと思った*1のですが、 SES を Production にしたり、EC2 からの smtp 制限を外してもらうために下記の2つのフォームを利用して申請を行う必要がありました。
・Request for Production Access to Simple Email Service
・Request to Remove Email Sending Limitations
英語のフォームなので、ちょっと不安になりますが、なんとかなるものです(笑)
SSL 証明書がちゃんとインストールされているか確認する
ssl 僕のサーバの証明書は下記のようにクロスルート証明書を含めて4階層になっています。
1.Equifax Secure Certificate Authority (ルート証明書)
2.└GeoTrust Global CA (クロスルート用中間証明書)
3. └RapidSSL CA (中間CA証明書)
4. └sailane.cles.net (証明書)
このうち、1階層目のルート証明書はブラウザに搭載されているので、サーバには2, 3, 4階層目の証明書を設定してあります。ところが、自分が使っているブラウザ (Firefox) は新しいブラウザなので、証明書ビュアーから見るとクロスルート証明書が使われずに3階層に見えます。新しいブラウザの場合はこれで正常なのですが、旧ブラウザ向けのクロスルート用の中間証明書がちゃんとインストールされているかどうかが確認できません。
それでちょっと困っていたのですが、Verisign や GeoTrust が公開している Certificate Installation Checker をつかえばチェックできることが分かりました。実行してみると、2,3,4階層の3つの証明書がきちんと帰ってきていることがわかります。
・GeoTrust - Knowledge Center - SSL Certificates Support
・Symantec - Knowledge Center - SSL Certificates Support
Amazon RDS に SSL 接続する (JDBC編)
mysql
aws
ssl 先日、RDS に MySQL Workbench から SSL 接続をしましたが、今日は JDBC からの SSL 接続に挑戦します。
軽くググってみると、証明書を検証しない下記のような接続方法は沢山出てきます。
証明書の検証をしないと SSL の意味がないので、今回は verifyServerCertificate=true にする方法を調べてみました。
以下、作業メモ。
ヤマト、2016年に即日配達を開始
delivery 2016年とちょっと先の話ではありますが、ヤマトが東名阪間の即日配達のサービスを始めるようです。
高いサービスを使えばこれまでも当日配達は可能でしたが、料金体系は現状を維持するというのは大きいですね。
これで小売りは通販がより強くなりそうな感じがします。
ヤマト運輸、東名阪間で当日宅配へ 2016年めど - MSN産経ニュース
宅配便最大手のヤマトホールディングスが、2016年をめどに東京、大阪、名古屋の3大都市間で、宅配便の当日配達に乗り出すことが、5日わかった。料金は現在の基本的な体系を維持する予定。これまでは東京-大阪間で当日配達するには航空便などで1万円以上の費用がかかったが、通常料金の宅配便での実施は業界初となる。
ドコモの「eビリング割引」改悪へ
docomo
priceincrease ドコモがeビリング割引を 1請求あたり105円 → 1回線あたり21円 に変更すると発表しています。
ドコモからのお知らせ : 「ご利用料金のご案内」の郵送のとりやめおよびeビリング割引の提供条件の見直しについて | お知らせ | NTTドコモ
ドコモは、地球環境保全の取組みとして、2013年2月ご請求分(1月ご利用分)から、毎月のご利用料金をクレジットカードにてお支払い(以下、「定期クレジット」)のお客様に送付している「ご利用料金のご案内」の郵送をとりやめ、「eビリング」に切り替えさせていただきます。
また、「ご利用料金のご案内」の郵送のとりやめとあわせて、より多くのお客様に「eビリング」をご利用いただけるようeビリング割引の提供条件について、見直しを行います。
5回線以上契約している場合は別ですが、それ以外の人は割引幅が縮小するので実質上の値上げですね。最初からeビリングを契約しているユーザーはドコモにとっては優良なユーザーなはずで、まさかそこを値上げしてくるとは思いませんでした。正直、長期契約のユーザーへの料金制度とか・・・もうちょっと魅力あるキャリアになってほしいものです。
キャップのない万年筆というのがあるらしい
stationery 万年筆は筆圧がいらないので、書くのが楽でいいんですが、人と会話するときにメモを取ったりするとペン先が乾かないように適宜、キャップを開け閉めする必要がでてきます。それがちょっと面倒な時があるんですが、万年筆である以上、それは致し方ないものだと思っていたのですが、パイロットにキャップがない万年筆「キャップレス」というシリーズがあるのを知ったのでメモ。普段使いのペンとしては良さそうなので、折りを見て試し書きしに行こうと思います。
ノック式万年筆「キャップレス」
「キャップレス」は、パイロットが開発・製品化した世界初のノック式万年筆として、1963年の発売以来、およそ半世紀に及ぶロングセラー商品です。ノック式ボールペンのようにワンノックですばやく書くことができ、ペン先の収納時には、気密性の高いシャッター機構によりインキの漏れや乾燥を防ぎます。独創的な発想と優れた機能性から、国内はもちろん海外でも高い評価を得ています。
まさか半世紀近く前から存在していたとは。。。。。
rm -rf "/$hoge" のようなスクリプトで痛い目に遭わないために
sh 例えば下記のようなスクリプトがあったときに DELETEFILE をセットし忘れたりすると目もあてられないような状況になります*1。
こういう場合、通常はこんな感じで if を使って変数が空でないか調べることになると思います。
それでも DELETEFILE という変数に typo があったりするとやはり大惨事です。
別件で bash を調べていたら、そんなミスによる被害を軽減してくれるようなオプションを見つけたのでメモ。
- *1: こういう例えが適切なのかというのはあると思いますが。
亀居山 放光院 大願寺の火渡り式
hiroshima
shrinesandtemples ランチをすませてすこし時間調整しようとブラブラしていたら、大願寺で火渡り式をやるらしいということが分かったので、今日の締めくくりとして大願寺の火渡り式に参加してから帰ることにしました。
当たり前ですが、それほど熱くはないです。例えるならば炎天下の砂浜を歩くようなものでしょうか。足は真っ黒ですが、電車に乗り遅れそうだったので、足は洗わずそのまま靴を履いてフェリー乗り場に駆け込む羽目になりました。。。。。
牡蠣屋
hiroshima
和食 広島に来てからお好み焼きばかり食べていたので、3日目の今日はさすがに違うものを食べようということで牡蠣を食べることに。焼き牡蠣を売っているお店は沢山あるのですが、朝からずっと歩きっぱなしだったので、表参道商店街の中で座れるお店を探して歩いて牡蠣屋という所に入ってみました。
2000円の定食があるというので、注文はそれにしました。牡蠣は宮城の名産品でもあるので、宮城出身の僕にとってはなじみ深い食べ物です。本当は焼き牡蠣よりも生牡蠣で食べたかったのですが、残念ながらまだ解禁されていないとのことで泣く泣く諦めることに。それでも、焼き牡蠣は美味しかったです。焼き牡蠣に気合いが入りすぎているのか、それと比べてしまうと定食の方は普通の定食でした。
[牡蠣屋 の続きを読む]- 換気口に風よけカバーを設置 (2)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(1374)
3 . シャープの空気清浄加湿器のキュルキュル音対策は PTFE テープで(1225)
4 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(1106)
5 . 国分生協病院のランサムウェア被害は認証がない RDP が原因?(1063)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]


