放課後プログラミング

調べたことや考えたことなどを忘れないために書きます。

SonarQubeの上手な使い方

SonarQubeとは、コードの品質を可視化し、継続的に監視することで、抱えている技術的負債を制御可能にするためのプラットフォームのこと。*1 技術的負債を抑えて保守性を高めることは、チームの生産性を高いレベルに維持することに大きく寄与するので、継続…

spring-bootでwebsocket serverとclient

Spring Bootを使ってWebsocketサーバとクライアントを作ってみたkonohiroaki/springboot-websocket-servergithub.com konohiroaki/springboot-javafx-websocket-clientgithub.com動かすとこんな感じ サーバの動作 クライアントが接続してきたら不定期(100ms…

プロセス内で別プロセスを呼んでやり取りする

親プロセスと子プロセス間でコミュニケーションを取りたい。その方法の簡単なメモ。 1. 別プロセスの実行 String cmd = "java HelloWorld" ProcessBuilder pb = new ProcessBuilder(cmd.split(" ")); pb.start(); pb.start();を実行することでプロセスを実行…

JavaFXのAnchorPaneとかVBoxとか使うと変な隙間ができる

正しいお作法はよく知らないが、結論から言うとBorderPaneを一番上に使うことで解決した。掲題で言っている隙間とは、例えば以下のようなfxmlを書いた時(Scene Builderで作った時)

java.lang.String#trim()は全角スペースを消してくれない

java.lang.String#trim()のjavadocには(拙訳) 1. 空文字列もしくは最初と最後が\u0020より大きい文字ならそのオブジェクトをそのまま返す 2. それ以外の場合、\u0020以下の文字しか存在しない文字列なら新しい空文字列オブジェクトを返す 3. それ以外の場…

ワイルドカードの使い方 (ジェネリクスの使い方 3)

以前の投稿「ジェネリクスの使い方 1」「ジェネリクスの使い方 2」で大まかにジェネリクスについてまとめましたが、1,2の投稿だけではワイルドカードを正しく効果的に使うのは難しいと感じました。なぜならワイルドカードの利点について言及できていなかった…

知らないと混乱するJavaの変性

変性とはすなわち、共変性・反変性・非変性(不変性)のことで、 共変 (covariant): 広い型(例:double)から狭い型(例:float)へ変換すること。 反変 (contravariant) : 狭い型(例:float)から広い型(例:double)へ変換すること。 不変 (invariant):…

シェル芸勉強会にUst参加しました

会社の同期に誘われてシェルの勉強会に遠隔参加してみました。以下が勉強会で使われた資料です。 ツイッター実況 https://twitter.com/hashtag/%E3%82%B7%E3%82%A7%E3%83%AB%E8%8A%B8 前半戦 Q1 ・次のechoの出力を、echoにパイプをつなげて足し算してくださ…

Sublime Textの導入

Sublime Text Build 3059 Sublime Textを入れたので、最初に行った設定をメモしておきます。 Package Controlのインストール いろんな機能拡張パッケージを管理するパッケージをインストールする https://sublime.wbond.net/installation 1) View > Show Con…

OracleDBで任意の日付データセットを得る

SQLのクエリで日付のデータセットを得たいときは以下のようなSELECT文を発行すればいい。 SELECT SYSDATE + ROWNUM - 1 FROM ALL_CATALOG WHERE ROWNUM < 3; June, 05 2014 15:39:59+0000 June, 06 2014 15:39:59+0000 ROWNUM SELECTの結果セットの各レコー…

ヒープ領域のチューニング

前回の投稿ガベージコレクションの仕組みの続きです。GCにかかる時間はアプリケーション実行時間の10~15%以下程度に収まるのが良いと言われている。GCにそれ以上の時間がかかっていて、それがボトルネックになっている場合はチューニングを行ったほうが良い…

ガベージコレクションの仕組み

Oracleが行っている「JavaSE7 パフォーマンス・チューニング」という研修に行かせてもらえました。 コースの概要はリンク先を参照。 Java SE 7 パフォーマンス・チューニング 知らないことが多くていろいろ学ぶことができたので、このブログに書き留めておき…

Tera Termマクロで自動ログイン

sshクライアントTera Termによる自動ログインマクロが便利だったのでメモっておきます。 マクロはTTL(Tera Term Language)で記述する。 Telnet 用 ; ; TELNET LOGIN ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HOSTADDR = "" ; hostname or ipAddr USERNAME = …

IntelliJがEclipseより優れているわけ

僕は自宅ではIntelliJを使い、職場ではEclipseを使って開発を行っているため、それぞれの違いを感じることが多々ありました。 この投稿ではIntelliJとEclipseのそれぞれについて、ある作業を遂行したいときの手間を示し、それぞれについてどちらがより優れて…

equalsをオーバーライドするときに注意すること

『Effective Java 第2版』第8項目のまとめです 僕の理解のために実装を意味的に同じ範囲で書き換えたり、書籍の説明が自分には足りないと感じた部分を補完したりしています。書籍に忠実ではありません。equalsメソッドはインスタンスAとインスタンスBが等し…

JavaからWindowsAPIを使う

WindowsAPIを用いたプログラミングならC++などの言語を使うのが常識だと思いますが、jnaパッケージを利用することでJavaからでも簡単にWindowsAPIを叩くことができました。pom.xml http://mvnrepository.com/artifact/net.java.dev.jna <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId></dependency>…

ジェネリクスの使い方 2

前回(ジェネリクスの使い方 1)でジェネリクスの考え方と境界のある型パラメータについて理解できたので、この投稿ではワイルドカードについてまとめます。 class Utility { static ArrayList getArr(boolean bool){ return bool ? new ArrayList<String> : new Arr</string>…

ジェネリクスの使い方 1

最近のコードはListやMapを使う際に、ジェネリクスを使用しているものが多いと思います。 public Map<String, String> getMap() { Map<String, String> map = new HashMap<>(); map.put("a", "b"); map.put("c", "d"); return map; } みたいな調子に。この<>を使った記法について、理解が曖昧</string,></string,>…

Singletonなクラスとstaticクラスの使い分け

よくわからなかったので調べました。 http://javarevisited.blogspot.com.au/2013/03/difference-between-singleton-pattern-vs-static-class-java.htmlおさらい。 Singletonなクラス public class SingletonExample { private static SingletonExample sing…

パッケージ構成の考え方

この記事を読みました。 http://edmundkirwan.com/general/radial2.htmlいわく The more dependencies that can potentially form between packages, the greater the tendency that those dependencies will actually form, solidifying your package struc…

IPアドレスがサブネットに含まれるかどうかの計算

自分で計算しようとすると少し手間がかかりそうだけど、apacheが提供しているcommons-netに含まれるSubnetUtilsを利用すると簡単に実現できます。 http://mvnrepository.com/artifact/commons-net/commons-net/ <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3</version> </dependency> 利用方法は下…

Spring Framework 4.0によるAOP

Spring Framework 4.0によるDIで書いたコードにSpringのAOP機能を追加する方法を紹介します。 SpringのAOP機能は各メソッドにロガーなどを記述したいが、そのメソッドの本来のロジックとは関係ないからそこには書きたくないってときに役に立つ機能で、特定の…

ファイルパス文字列から拡張子を取得する

private String getExtension(String path) throws StringIndexOutOfBoundsException{ int idx = path.lastIndexOf("."); return path.substring(idx).substring(1); } ミソは path.substring(idx + 1); としないことで、文字列中にピリオドが存在せずlastIn…

Spring Framework 4.0によるDI

pom.xml Mavenを使えば必要なjarファイルをサイトからダウンロードしてclasspathの通っているディレクトリに置いたりといった作業をxmlを書くという作業で済ませられる。そのMavenの設定ファイルであるpom.xmlに必要なspring frameworkのjarをダウンロードす…