わんちゅう日記

気ままにヒトリゴト

カテゴリ: 技術ノート

Visual Studioが複数インストールされている環境では、ソリューションをダブルクリックしても思っていたVisual Studioで開かれないことがあるかと思います。そんなときの対処法の一例です。

続きを読む

昨今、機械学習や画像処理でGPUが使える、使えないによって、Javaの依存関係を切り替えなきゃしゃーないってプロジェクトもあるかと思います。こんな時、ビルドする度にpom.xmlの依存関係を手で書き換えるのも凄く面倒。そこで、Mavenのプロファイル機能を使ってうまく対応できないか、検証してみました。

続きを読む

今まで仕事で使用してきたバージョン管理システムはSubversion(SVN)がほぼすべてで、現在OSSで欠かせないGitは未経験。今のプロジェクトはその辺好きにして良いとのことなので、Gitを使うことにしました。
とは言え、オンライン上にソースを置けるわけでもないため、GitHubでもBitbucketでもなく、GitBucketでローカルなGit環境を構築することにしました。

完成目標

次のような感じに使えるように環境を構築します。
  • ローカルネットワーク内のコンピューター複数台からMac miniのホスト名でアクセスする
  • Mac miniの電源さえ入っていればGitBucketが利用できるようにする
  • GitBucketのデータ一式を置く場所(ディレクトリ)は指定する
今回特別なのが後2点。通常、OS起動後、何かしらのユーザーでログインしてからアプリケーションを立ち上げると思いますが、今回用意したMac miniはサーバ専用機ではなく開発兼用機で、かつ利用ユーザーも固定されていません。なので、いわゆる「デーモン(Windowsで言えばサービス)」としてGitBucketを起動させ、利用ユーザーに依存しない環境を構築します。で、データ一式はデフォルトではユーザーのホームディレクトリに置かれるのですが、前述の理由のためユーザーに依存しない場所に置きます。

今回利用するソフトウェアのバージョンは下記の通りです。
  • macOS High Sierra
  • GitBucket 4.21.2
  • Oracle Java Development Kit 8 update 162
macOS向けのGitBucketはHomebrewでインストール可能ですが、今回は手動インストールです。また、GitBucket 4.21.2はJava 8が必要なので、Oracleからダウンロードしたものをインストールしてあります。

続きを読む

「テストをEclipse上で実行してOKが出たら、カバレッジを取るためにMavenでテストを実行」てな感じで作業を進めてるのですが、Maven実行時に下記のような例外が発生することがあります。
java.lang.UnsatisfiedLinkError: Native Library C:\Java\jdk1.8.0_144_x64\jre\bin\jpeg.dll already loaded in another classloader
  at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1907)
  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
  at java.lang.Runtime.loadLibrary0(Runtime.java:870)
  at java.lang.System.loadLibrary(System.java:1122)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriter$1.run(JPEGImageWriter.java:180)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriter$1.run(JPEGImageWriter.java:178)
  at java.security.AccessController.doPrivileged(Native Method)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriter.(JPEGImageWriter.java:177)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi.createWriterInstance(JPEGImageWriterSpi.java:96)
  at javax.imageio.spi.ImageWriterSpi.createWriterInstance(ImageWriterSpi.java:351)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:843)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:827)
  at javax.imageio.ImageIO.getWriter(ImageIO.java:1596)
  at javax.imageio.ImageIO.write(ImageIO.java:1520)
  ...
試している限りでは次のような条件で発生するようです。
  1. 複数のテストクラスでImageIOを利用するクラスが呼ばれる
  2. テスト開始後、2つ目のテストクラス実行時に上記例外が発生する
UnsatisfiedLinkErrorが発生した後、同テストクラス内の他のImageIOを利用するクラスを利用するテストケースでは、次の例外が発生します。
java.lang.NoClassDefFoundError: Could not initialize class com.sun.imageio.plugins.jpeg.JPEGImageWriter
  at com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi.createWriterInstance(JPEGImageWriterSpi.java:96)
  at javax.imageio.spi.ImageWriterSpi.createWriterInstance(ImageWriterSpi.java:351)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:843)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:827)
  at javax.imageio.ImageIO.getWriter(ImageIO.java:1596)
  at javax.imageio.ImageIO.write(ImageIO.java:1520)
  ...
目的のクラスが読み込まれてないので、NoClassDefFoundErrorが発生するのも当然ですね。
なお、環境は次の通りです。
  • Java SE Development Kit 8u144 (ImageIOを含む)
  • Apache Maven 3.5.0
  • PowerMock 1.7.3
続きを読む

単体テストのカバレッジを計測するのに当初Eclipseから利用できる「EclEmma」を利用していました。しかし、Mockito、PowerMockと必要に応じてモックフレームワークを追加していくと、PowerMockを利用したテストクラスのカバレッジが測定できない事態に。
測定できないかちょいと調べたところ、「Eclipse+EclEmmaではできないが、JaCoCoならできる」とあったので、それを試してみました。
なお、使用する主なソフトウェアのバージョンは次の通りです。
  • Apache Maven 3.5.0
  • PowerMock 1.7.3
  • JaCoCo 0.7.9
Javaは9がリリースされましたが、8を使用しています。

続きを読む

お仕事で使用する予定の「Apache Commons Imaging」。画像編集ライブラリです。
これ、Mavenで最新のスナップショットが取得できるのですが、お仕事環境上必要なリポジトリ(Maven Centralではない)にアクセスできず困っておりました。一世代前の「Sanselan」はMaven Central リポジトリに登録されており、こちらを使うのもひとつの手ですが、せっかくなのでとソースコードからビルドをしてみました。その手順メモ@Windows10です。
今回ビルドする対象は「Apache Commons Imaging 1.0 RC7」、ビルドの為に用意するソフトウェアは次の通りです。
  • Apache Maven 3.5.0
  • Java SE Development Kit 8u131
作業の手順は次の通りです。
  1. ソースコードのダウンロード
  2. Mavenでビルド
続きを読む

MavenでJavaプロジェクトを作ろうとしたら、職場のプロキシのせいでHTTPSでMaven Centralのリポジトリにアクセスできず、プロジェクトが作れないではないか!! という状況に陥りまして。
色々調べて、「正攻法ではなさそうだけど解決できたからこれでいっか」という解決方法です。

続きを読む

Twitterでちょっと話題になったハッシュタグ「#システム屋限定怪談2017」。Togetterでもまとめられております。 笑える物から笑えない物まで、これは流石にネタだろう、いやでもあり得るかもってものまで多種多様です。ITエンジニアの方々、本当お疲れさまでございます。

んで、見ていると「DBの検証環境と本番環境を間違えちゃった(∀`*ゞ)テヘッ」ってのが少なくないのかなと。だったらMySQLのプロンプトの表示を
honban_schema >
のように、今どこのスキーマに対して操作をしているか分かるようにする方法を紹介します。なお、この方法はCUIでMySQLを操作する(要はMySQL Monitorを利用する)場合のみに有効です。

今回対象のMySQLは次のバージョンです。
  • MySQL Community Server 5.6.27 (に付属のMySQL Monitor)
Windows版を使用しますが、その他プラットフォームでも利用できます。

続きを読む

このページのトップヘ