2013年2月28日木曜日

CentOS 6 に apache maven を入れてみる

いまさら感のある方も多いかもですが、表題のとおりです。仕事で少し使ってみていまいち使い方がわかりきらなかったので、自宅に導入してみます。どうせ yum でちょちょいだろうと思ったのですが、これがそうもいかなかったのでここに手順を記載。jpackage とかで入れるのもできそうな感じですが、きれいにはいかなそうなので。

さてそもそも apache maven とは何者か。
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
とあります。つまりざっくり言ってしまえば ant とかで書いてたビルドスクリプトをより便利にできるツールって感じでいいんですかね。まだそれほど使ってないので間違ってる可能性は大ですが。

ではインストールします。公式に飛んでバイナリを落としてきます。今回はこの時点で最新の apache-maven-3.0.5.bin.tar.gz をとりました。Java が必要だそうですが、もちろん既に入っています。公式にあるように /usr/local/apache-maven に展開します。
# mkdir /usr/local/apache-maven
# tar zxf apache-maven-3.0.5.bin.tar.gz
環境変数を指定します。
export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.5
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
これで・・・
$ mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 22:51:28+0900)
Maven home: /usr/local/apache-maven/apache-maven-3.0.5
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-279.22.1.el6.x86_64", arch: "amd64", family: "unix"
おおお!動きましたね!w

2013年2月16日土曜日

開発機を壊しましたw

えー、文字通りですw

発端はそろそろデュアルディスプレイにしたいなーと思ったことでした。もともとマザボにはデジタル出力2つ(DVI+HDMI)があるんですが、このうちHDMI入力は画面にはつないでないんですが利用してまして(詳細は伏せますw)、 ディスプレイをつなぐとしたらもう1つ出力が必要になるわけです。で、マザボによるとオンボードの出力とビデオカードの同時出力もできそうだったので、安いビデオカードを買ってきて試してみたのです。すると、
まったく映らねぇぇぇ
な状態でした。いろいろ試行錯誤したんですがまったく見える気配もなく。そしてビデオカードを抜いたり戻したりしていたら、急に青画面を出すようになり、その後ははずしても起動せず・・・。

というわけでマザーボードを壊してしまったようです。しかたなく新しいのを買ってきました。サーバーのほうを ASRock にしたせいで両方とも ASRock になってたので、今度は開発機のほうは ASUS の P8H77-V というのを選びました。そして再インストールから行い、無事デュアルディスプレイも完成。今回はせっかく入れなおすので、 UEFI に挑戦。おおお、快適に・・・なった気はしませんが、とりあえず気分でw

これで問題ないと思い少しずつ復旧していたところ、1つだけ問題が。このマシンには GV-D4VR というキャプチャがついてるんですが、これがまったく動いてない。インストール等は普通に終わるんですが、プレビューでも真っ暗、録画押しても0バイトのファイルを作るだけ。これは困りました。心当たりは特にありません。

とかれこれ3時間ぐらい断線を疑ったり出力側を疑ったり実験したんですが問題はなさそうでした。カードがささっているスロットを変えたりしても変化はない。前のパソコンとそうそう変化はないはず・・・と思ったとき1つ思いつきました。もしや UEFI

ググったところ同じ症状を書き込んでる方を見つけました。あー、これはだめだきっと。UEFI をオフにして泣く泣くまた1から入れなおしたところ無事キャプチャできるようになりました。やれやれ。

というわけで、あとはのんびりアプリケーション等を復旧するだけです。マザボが壊れて引きずられてOSもやられただけなので、データは問題なく、インストーラーを必要とするアプリケーションだけ1つ1つ戻すだけです。これはゆっくり進めていきます。

2013年2月10日日曜日

824年に一度

ご無沙汰しております。ツイッター等で既にご存知かもしれませんが、出張からは無事帰ってきました。体調的にはかなり悪くて楽しめたとはいえない出張でしたけどね・・・。出張で土日つぶしてるのに代休とかも取れないとか労 (ry

そんなわけで(?)あまり遊ぶ時間もなく書くネタもなかったのですが、少しだけ。今日ツイッターでこんなツイートが回ってきました。(以下の内容のため一応元は伏せます。)
今月は土曜日、日曜日、月曜日が5日ずつある、824年に一度しかない風水で言う金袋という椿事で・・・(以下略)
ほほう、そんなめでたい月なのですか、と1秒ぐらい思いましたが、今月って2月ですよね。週の連続した3つの曜日が5日ずつあるためには、少なくとも31日ある月じゃないと成り立たない。 しかも土、日、月であるためには当然1日は土曜日である必要がある。今月は1日は金曜日だし、2月なので31日なわけもなく、どちらも満たしてないでしょうよ。

と思って基本スルーなのですが、そもそも感覚的に「1日が土曜日で始まる31日まである月」が824年に一度なわけないのでは?と思いますよね。長い期間で計測したとして、ざっと1日が土曜になる確率は1/7として、そのうち31日である月は1,3,5,7,8,10,12月で7月あるので7/12です。掛け合わせると7/84になり、月のうち実に8.3%の確率で起きます。年単位に直すならば12を掛けて100%、つまりほぼ毎年起きます!?(実際には1/7のとことかがぶれるので起きない年もあるはずです。)

なのでベタに今年から100年前まで数えてみました。もちろん手・・・ではなくコンピューターでw
import java.util.Calendar;


public class CalendarTest {
 public static void main(String[] args) {
  Calendar cal = Calendar.getInstance();
  cal.set(Calendar.MONTH, Calendar.DECEMBER);
  cal.set(Calendar.DATE, 1);
  final int end = cal.get(Calendar.YEAR)-100;
  int count = 0, satisfied = 0;
  int year;
  while ((year = cal.get(Calendar.YEAR)) > end) {
   count++;
   do {
    if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY &&
      cal.getActualMaximum(Calendar.DAY_OF_MONTH) == 31) {
     satisfied++;
     cal.set(Calendar.MONTH, Calendar.JANUARY);
    }
    cal.add(Calendar.MONTH, -1);
   } while (year == cal.get(Calendar.YEAR));
  } 
  System.out.println(satisfied + " years satisfied in " + count + " years");
 }
}
答えは
86 years satisfied in 100 years
という感じでした。つまりそんな月が起きない年は100年中14年、むしろない年のほうがはるかに珍しいですね、といいつつ14%じゃそれほど珍しくもないw

しかし何をどうすると824年なる数字が出てくるんですかね。むしろその数字の原因を探したかったんですが、特にそんなヒントは得られず。適当に選ばれたのかな。