コツコツとプレイする
モンスターストライクというゲームが好きで毎日コツコツ遊んでいる。
このゲームは、極論を言えばクエストをクリアしてゲットできるモンスターを99体集めて運極にするゲームなんである。
99体集めるためには、コツコツとプレイしないといけないし、クエストにピッタリとはまる手持ちのモンスターがいるかどうかも重要な要素なので、作りたくても作れない状況はある。
また、手持ちは充実していても、プレイヤーのスキルやクリアするための知識が足りていないとクリアできない。
なので、欲しいモンスターがいたら、ゲットするために色々と事前準備をしてから挑むんである。
まぁそれでも自分に合わないクエストは途中で放り投げてしまうんだが…
最近、ふっとシステム開発や既存のシステム修正も似てるなぁと思うようになった。
コツコツとプログラムを組んだりテーブル設計を繰り返していくことで一つのシステムが出来上がる、あるいは新機能を追加できる。
でも、そのために必要な事前準備を怠ると精神的に辛いだけでゴールは達成出来ない。
それでもゴールするにはコンティニューしたり(残業だったり休日出勤だったり)ガチャ引いて人手を増やしてどうにかコツコツと実績を積み上げるんだけど…
それでも自分に合わないなぁというとき、それは使っているフレームワークが肌に合わない、あるいは使いにくいときなのではなかろうか。
何とかして手を動かせば、いつかゴールは見えるんだけど、手が全く動かない、今はそんな心境に陥っている。
ゲームだったらこのクエストはちょっとやめて(結果としてずっとやらない)他のクエストをやろう、ということが出来るんだけどお仕事はそうもいかないのが辛いところだなぁ。
Java9で意外なものが非推奨(Deprecated)になっていた
new Double(99.999)とかnew Integer(1)とかの書き方はJava9でDeprecatedになっていたことを今更ながら知った。Double.valueOf(99.999)とかInteger.valueOf(1)と書けってことらしい。
— つりーべる (@tada_suzu) 2018年7月9日
Java10を使って勉強のため、本を写経していたら
Double d = new Double(99.999);
こんな感じのプログラムの場所で取り消し線が引かれてアレ?となった。 調べてみたら、Java9でコンストラクタに値を入れる系が非推奨になっている。
これからはこう書こうね、ってことのようだ。
Double d = Double.valueOf(99.999);
Doubleを例にしたが、IntegerやFloatなども非推奨になっているので注意が必要。
下記リンク先にコンストラクタの書き方で非推奨になったものがまとまっているのでチェックしておくとよさそう。
Deprecated List (Java SE 9 & JDK 9 )
Java入門者がJava8までをベースに書かれた本やチュートリアルのサンプルプログラムを写経していると謎の取り消し線が出てアレレ?ってなりそうだなと思った。
JavaDocを見れば答えがちゃんと書いてあるんだけども、入門者はJavaDoc見ないだろうしなぁ。
というか、Java11が正式リリースされたときにJava9以降で非推奨になった一覧も改めて公開されるのだろうか?
それに、非推奨になったメソッドはいつ消えてもおかしくないってことらしいけど、いつのバージョンで消えちゃうのか…
Twitterで「forRemoval=true」じゃないから消えないぞ、と指摘を戴きました。感謝感謝。
追記
なぜ非推奨になったのか?の理由はこれかな?
[JDK-8176335] Release Note: Deprecation of Boxed Primitive Constructors - Java Bug System
メモリの使用量節約みたいなことが書いてある。
Eclipse Photonをzipでダウンロードしたいとき
Eclipse Photonがリリースされています。 www.eclipse.org
ですが、Eclipseのトップページからだと実行ファイル形式しかダウンロードできないようなので、Packagesを選んでダウンロードしたいとき用にURL直リンク。
Mavenプロジェクトをオフラインで使うときの手順メモ
お仕事で調べたのでメモしておく。
事前作業
ダウンロード
作成済のプロジェクトがあるフォルダ上で以下のコマンドを打ち、jarファイル、ソース、JavaDocをダウンロードしておく。
参考:mvnコマンドで、ソースとJavadocのJARを取得する - CLOVER
mvn dependency:sources -Dmaven.repo.local=../localrepos mvn dependency:resolve -Dclassifier=javadoc -Dmaven.repo.local=../localrepos mvn dependency:go-offline -Dmaven.repo.local=../localrepos
ファイルコピー(or移動)
ダウンロードしたファイル全てをローカルリポジトリとして設定したいフォルダに移す。
以下の記述では、C:/maven/localrepos に置くのを想定している。
作業
setteing.xmlを新規作成する
setting.xml を新規で作成し、localRepositoryとofflineの値を書き換える。
新規作成したsetting.xmlはどこに置いてもよいが、mavenフォルダの真下に置くのが他の人に指示する手順を考えるとわかりやすそう。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>C:/maven/localrepos</localRepository> <interactiveMode/> <usePluginRegistry/> <offline>true</offline> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> </settings>
eclipseの設定変更
eclipseを開き、[ウィンドウ] → [設定] → 「maven」 → 「ユーザー設定」でユーザー設定の欄に C:\maven\setting.xml と書く。
mavenプロジェクトを取り込む
ファイル→インポート→Maven→既存Mavenプロジェクト で mavenプロジェクトを取り込む。
以上。
#JavaDayTokyo 2018に参加した
JavaDayTokyo 2018に参加して今時のJavaについて触れてきた。
Javaのリリースのやり方が変わったり、Java EEがEclipseに移管されてJakarta EEになった最初のJava Day Tokyoだったからか、それ系のセッションが非常に人気があって、立ち見も出ているほど。
Javaはオワコンとか言われてるけど、それでも#JavaDayTokyo がTwitterのトレンド入りする程なので、Javaはまだまだ終わらないぞという気持ちになれた。
その一方で、Javaは今までの進め方を見直して、色々と改善しているのにそれを使う我々がいつまでも旧態依然のやり方のまま、というのはよくないなと反省もした。
出来るところから少しずつ改善していかないと…って毎年この手のイベントに参加して思うのだけど、成果を挙げられていない自分に猛省する。
今回は手話通訳なし、ソロでの参加だったのでスライドとTwitter実況を頼りに内容を理解していました。Twitter実況して下さった皆様、ありがとうございます。
社会人17年目がスタート
2002年入社組なので、働き始めて17年目。
新卒入社してからずっと同じ会社で働き続けているので、ちょっと飽きも感じてはいるわけですが…
かといって、他のところで通用する技術を持っているわけでもないので、引き続き今のところで無駄な足掻きを続ける所存であります。
とりあえず、おっさんなりに今年度も何か1つ、技術を覚えたいものです。例え、その技術が2週くらい周回遅れだったとしても。
Java10での文字列結合のパフォーマンスを測定してみた #Java10
これは何?
2018/3/21にJava10が正式にリリースされました。
Java9での比較で使ったプログラムを使ってJava10でどうなったか確認してみます。
前提
これと同じプログラムを使ってテストしました。 qiita.com
Java9での比較結果はこちらです。
githubのソースの場所はこちら。 github.com
jmhの起動方法などはこちらにまとめています。 https://github.com/suzukitadashi/jmhTest/blob/master/jmhTest/command.txt
テストした端末のスペックなどは以下の通りです。
- Windows10 64bit
- Intel(R) Core(TM) i7-2820QM CPU @ 2.30GHz
- メモリは8GM
結果
細かいログなどは下記URL先のファイルを参照してください。
ここではグラフ化したものをまとめます。
Java9の時と傾向は同じで、半角数字の時はJava8よりパフォーマンスがよくなっているのですが、それ以外の時はJava8の方がパフォーマンスがよいという結果が出ました…。
文字列結合のパフォーマンステストは難しいです…