ぬるすぺいす遍在

仕事がらみや物書きの勉強したことや、日々雑感

VB2013で「署名中にエラーが発生しました」エラー発生し、ビルドに失敗する場合の対処法

これはClickOnceアプリをビルドした際に、証明書の有効期限が切れているために起こるエラー。

 

解消法は、

  1. プロジェクトのプロパティを開く

    f:id:tevasaki:20170223152636p:plain

  2. 「署名」を選択

    f:id:tevasaki:20170223152514p:plain

  3. 「証明書」欄の右にあるボタンのうち「ストアから選択」を押す

    f:id:tevasaki:20170223153249p:plain

  4. 証明書の選択のダイアログが出るので、「OK」ボタンを押す

    f:id:tevasaki:20170223153016p:plain

以上で有効期限が更新され、ビルドが通るようになる。

(やれやれ)リンク先が別ウインドウで開くようにブログを修正しました

タイトルのとおりです。

修正のためにわざわざHEADタグを編集しなきゃならんという。

(参考)はてなブログ記事内にあるリンクを別ウィンドウ(target=_blank)表示に設定する方法 - (ホ)ライムライン

 

このくらい標準にしておいてくれよ、はてなブログェ……。

Javaバッチ処理 フレームワーク(OSS)ざっくりまとめ

仕事メモ記事が続きますが。

 

Javaバッチの学習手始めに情報収集しましたが、Javaはバッチ開発でもフレームワークを使用するのが主流のようです。

ざっと調べた限り、以下のフレームワークがメジャーのようです。

TERASOLUNA Batch Framework for Java
 NTTデータが開発し、オープンソースで提供している国産フレームワーク
 日本語資料が多く、初心者の学習・利用には向いていそう。 

公式資料では、以下の特徴を挙げています。 

①オンラインの開発者は、すぐにでもバッチ開発を習得可能です。
②バッチ開発に必要な機能を、コンポーネント化して提供しています。 
③構造化プログラミングでビジネスロジックを実装可能であるため、以下の特徴があります。
• Pro*C、COBOLからのマイグレーションが容易です
• 処理設計書との親和性が高いです

http://www.terasoluna.jp/product/framework/batch_framework.html

●Spring Batch
 世界的に利用実績が多く、事実上の標準。
 だが意外とまとまった日本語情報がネットになく、書籍に当たる必要がありそう。

http://projects.spring.io/spring-batch/ (英語)

●JSR-352 Batch Applications for the Java Platform(通称:Java Batch)
 Spring Batchの仕様をJavaが標準仕様として取り入れたもの。
 つまりJava公式のバッチフレームワーク
 まだ新しいフレームワークで、こちらも情報が少ないが、Spring Batchと使い勝手はほぼ同じらしい。

http://www.oracle.com/technetwork/articles/java/batch-1965499.html (英語)

 

TERASOLUNAは内部的にSpring Frameworkを使っているし……本格的にSpringの勉強しとくいい機会かも。

ツールの概要調査 雑記

仕事でざっくり調べたことを記録しておきます。

断定口調になってますが、実際にすべてを試したわけじゃないので、実際は「調べてみたところ~らしいですよ」ってところ。

 

■Entity Framework

.NET Frameworkに含まれる、データアクセスに関わるフレームワークです。

 https://msdn.microsoft.com/ja-jp/library/bb399567(v=vs.110).aspx

 データベースを.NET上で扱いやすいようモデル(EDM)化します。
モデルを元に、データベースのテーブルを抽象化したクラスがフレームワークによってつくられます。
そのため、プログラマはクラスのプロパティやメソッドを操作する感覚でデータベースに格納したデータの検索や更新が行えます。

さらに、モデルはデータベースのテーブルそのものではなく、データベースの都合上でどうしても必要になってくる中間テーブルなどを意識する必要がない形で構築できるため、プログラマが直感的なデータ操作ができるようになっています。
具体的な例を挙げると、「店舗」テーブルと「商品」テーブルを関連づける「在庫」テーブルをプログラマが意識する必要がなくなります。
SQLでJOINを行うといったことが不要になる)
プログラマは「店舗」クラスのオブジェクトが複数持っている「商品」クラスのオブジェクトを直接操作でき、その結果をSQLを使用せずにデータベースに反映できます。

 


ClickOnce

Windowsアプリケーションのインストール・アップデートに関する仕組みです。

 https://msdn.microsoft.com/ja-jp/library/t71a733d.aspx

 Visual Studioからアプリケーションの発行を行う際にClickOnceが使われています。

Windowsインストーラーと比べてシンプルで柔軟なインストールが可能で、アプリケーションのアップデートも簡単に行えるようになります。

・シンプル:インストール時にウィザードであれこれユーザに問わない
・柔軟:CDなどからのインストール、Webからダウンロードしてインストールなど、複数の形式に対応

また、ユーザがアプリを起動した時に、アプリが自動でアップデートがあるかを探しにいきます。
ベンダーはサーバー(ユーザーのイントラネット上でも、外部のWeb上でも可)の指定場所に最新バージョンを配置するだけでよく、ユーザー、ベンダーともにアップデートの手間が軽くなります。

 


■Flyway

データベースのバージョン管理や移行をサポートするツールです。
(DBマイグレーションツール)
海外産のオープンソースのツールです。

 https://flywaydb.org/

 データベースへの変更(変更するSQLファイル)を都度バージョン記録して
います。データベースの変更によって不都合が生じた場合に、DBを過去のバージョンの状態に簡単に戻すことができます。

別環境に、指定したバージョンの状態のDBを簡単に再構築できます。

Java動作環境(JVM)で動作するようで、同じ環境で動作するビルドツールなどと連携させて使用することが多いようです。
Flywayの操作をビルドツールのスクリプトで自動化したり、Javaコードで作りこむことができるようです。

JNDIについて(とおまけ)

ものっそいひさびさにJavaの話。

それもいまさら聞けない系の。

JDBC利用時に定番のjava.naming.Context.lookupによるDataSourceの取得で、"java:comp/env/[データソース定義名]"とか決め事のように書いていたけど、その"java:comp/env/"ってなんやねん、と。

 

java:comp/env/"で始まる記述のしかたは、JNDI「ENC (Environment Naming Context:環境ネーミング・コンテキスト) 名」と呼ばれ、lookup する側の Web アプリケーション (*.war) や EJB-JAR (*.jar) 内でのみ有効なネームスペースに定義されます。

今さら人に訊けない JNDI: 第 2 回 「リソース参照って何ですか?」

 

へえ~。

 

あーほんじゃ昔よく見たClass.forNameでJDBCドライバ指定するあれは?

 

ベンダJDBC Driver は java.sql.Driver を実装している必要があり、その実装クラスは static initializer で java.sql.DriverManager.registerDriver(java.sql.Driver) を使って登録している。

 

Class.forName -> static initializer -> DriverManager.registerDriver って流れ。あとは DriverManager を経由して各 Driver にアクセスして使用する。

Class.forName で DB アクセスできるようになる理由 - すぱいだー日記。

 

ほーほー!

 

何でも決め事だからと思わずに調べるのは大事ですな。