都内SEのプログラミング勉強と雑記

2003年より都内でSEをしてます。業務システムをリプレイスし続けてきました。ここでは主にjavaやその周辺技術関連を紹介予定。

mavenのオプションあれこれ。

f:id:object1985:20170913103833p:plain
多くの先人達が素晴らしいまとめを記載いただいていますが
今さらながら私もmavenオプションのまとめを。
もっと整理して増やしていきたい。

  • target配下を削除
    mvn clean

  • pomファイルを明示的に指定するオプション(ゴールをpackageにしていますがどのゴールでも可能と思われます) mvn package -f hoge/pom.xml
    (親プロジェクト階層から子プロジェクトだけビルド、とかに使うかな)

  • pom.xmlに記載した個別のプロファイル(≠設定)を指定する方法(プロファイル名はorgprofileとします)
    mvn install -P orgprofile

  • パッケージングしつつテストもするけど失敗しても最後までやりとおして欲しい場合の指定。
    mvn install -Dmaven.test.failure.ignore=true

  • パッケージングしつつ、テストコードのコンパイルもテスト実行もスキップする
    mvn install -Dmaven.test.skip=true

  • パッケージングしつつ、テストコードのコンパイルはするけどテストの実行のみをスキップする
    mvn install -DskipTests=true

  • プロジェクトページの作成
    mvn site

こちらのサイト様Maven2のTipsを集めるWiki - CookBookすごい・・・現状スキルではとてもここまで把握できる気がしない。
「Jettyを起動する」とかとてもやりたい。

gitでpullできない、eclipseに反映されないとき

f:id:object1985:20170901000538p:plain
ソースレビューをgitでしていると複数のブランチを切り替えて、
時には自分で修正したりrebaseしてりすると思います。
そんなときpullできない、eclipseに反映されないときが状況によってあるかと思います。

その解決策の1つとして以下を紹介します。

例)

対象ブランチ: hoge
備考    :必要ソースはサーバ(origin)にあがっている状況とします

ケース1:

他者がrebase後に git push -f origin/hoge などしたブランチにcheckoutすると
git status時に「pullしてね」の旨が表示される。
ホイホイ信じて git pull するがエラーとなってしまう。

ケース2:

terminal(git bash)上では対象のブランチにいるのにeclipseでソースが反映されない。

対処:

git checkout master  #hoge以外に移動
git branch -D hoge   #hogeを一旦削除
git fetch            #サーバから最新取り直し
git checkout hoge    #改めて最新のhoge取得
git pull             #為念pull

eclipseで対処のプロジェクトを選択するなりで反映されるかと思います。

Mac terminal からFinder起動

f:id:object1985:20170825122313p:plain
terminal操作をしているときに
「この階層でFinderを開きたいなぁ・・」と思うときがしばしばありました。
そんなときはこれ。

open .

え?これだけでできるの!?

と最初は驚きましたがwindows コマンドプロンプト

start .

と同じか(厳密には違うけど explorer . とかも)。

ちなみに

open /Users/user/Documents/workspace などのように任意のディレクトリをFinderで開いたり
open memo.txt などのように任意のファイルを開くこともできます(関連付けられたアプリで開かれます)。

便利!

vi中のリロード

f:id:object1985:20170711235310j:plain
LinuxOSなどでviエディターでファイルを参照している場合にリロードする際のコマンド。
開きなおせばよいのですがそれすらめんどくさく感じる場合にコマンドでやります。

:e!

詳細はこちらにてまとめております。

・私のQiita投稿
勉強しよう -Vim編- - Qiita

eclipseにERMasterを入れる際はjar経由がよさそう

f:id:object1985:20170518002340j:plain
2017年5月17日執筆時点ではeclipseプラグインのERMasterはeclipse4.3 kepler で開発をされているとのこと。

そのためか「eclipseメニュー > Install New Software」から http://ermaster.sourceforge.net/update-site/ を入力しても反応がありませんでした。

当方の環境は以下です。

こちらから ERMaster jarをダウンロードし
eclipseのpluginフォルダに配置してclean起動しました。

おそらくeclipseはApplication内に移動されているかと思うのでここにjarを配置。
/Applications/Eclipse.app/Contents/Eclipse/plugins

eclipseをcleanで再起動。一度eclipseを閉じた上で以下のコマンドで起動。
/Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse -clean

起動後に任意のプロジェクト内で「右クリック > 新規 > その他」に「ERMaster」があればインストール成功です。

findコマンドの-execオプションでよく間違う記述ミス

f:id:object1985:20170514160846j:plain

findコマンドの-execオプションでよく間違う記述ミスについて。

久しぶりに find コマンドを使用して -exec オプションで詳細もみようと以下のように打つと・・・

find . -name hogehoge -exec ls -l {}¥;

動かない。

何でだ?

ググってみると「{}」は引数「-exec [command]」で指定したコマンドの引数となるため

スペースで区切らないといけないとのこと。

つまり

find . -name hogehoge -exec ls -l {} ¥;

と{}と¥;の間にスペースが必要でした。これだけで10分程は悩んでしまった。

まあxargsの方が好きだもんね。

find . -name hogehoge | xargs ls -l

こっちの方が | パイプ渡しできるし検索結果が1000件以上あっても

いい感じに繰り返し実行してくれるのでエラーとならないので

特段理由がなければxargsでやっていきます。そうします。

テストや資料で平均値だけでいいの?中央値・最大値・最小値

f:id:object1985:20170505164119j:plain

平均値だけじゃない、中央値・最大値・最小値!

IT業界でも単体テストなどをしている時によく見かける指標として 平均値 があります。
でも平均値って本当に役にたつのでしょうか?
例を出して見ていきましょう。

あるクラスの平均値

A子 B子 C子 D子 E子が英語の授業で以下の点を取りました。
70 65 60 55 50 点(合計:300点)。
平均値は60点ですね。

とくに違和感はないと思います。

では数学の授業で以下の点を取りました。
95 90 88 15 12 点(合計:300点)
平均値は60点ですね。

D子、E子が15点、12点しかないのに、これでは違和感があります。
あまりにも偏っています。

中央値もみる

では 中央値 を合わせてみます。

英語 数学
平均値 60点 60点
中央値 60点 88点

ちょっと違和感に気づきやすくなりました。
平均値がどちらも80点ですが中央値が違いますね。
中央値とは

データを順番に並べたときの真ん中の値

のことです。

このように1つの指標(平均値)だけで物事を見ても
それが正しいかは判断できない場合があります。
複数の指標を見る必要性も頭の片隅に置いていきましょう。

ちなみに最大と最小をのせるとこのようになります。

英語 数学
平均値 60点 60点
中央値 60点 88点
最大値 70点 95点
最小値 50点 12点

「英語はみんなの理解力が大体同じくらいだけど
 数学は集中的に教える必要がある奴がいるな。」とかが分かります。

まとめ

今回は資料をまとめる際の指標として
平均値だけじゃなくて 中央値・最大値・最小値 も使っていきましょう、というお話でした。
ほかにも最頻値などもありますがまた別の機会にしましょう。 ちなみにですが英語では
平均:average
中央:median
最大:max(maximum)
最小:min(minimum)
となっており、よくプログラミング言語の関数名となっています。
それではまた!

follow us in feedly