Emacsことはじめ

Homebrew

こないだOpenJDKをMacportsでいれたらめっっちゃ時間かかったので
Homebrewをいれてみる

http://mxcl.github.com/homebrew/
https://github.com/mxcl/homebrew/wiki/installation

XCodeもうはいってたら

ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

ってやるだけ。

Emacsをいれる

$ brew search emacs  //検索
$ brew info emacs      //指定Formulaの詳細情報
$ brew options emacs //オプション表示

よくわからんけど、いまはcocoaってのをいれるっぽい。

$ brew install emacs --cocoa

Emacsの初期設定

brewでインストールがおわると、
/usr/local/Cellar/emacs/23.3/Emacs.app
ができてるので、それをアプリケーションディレクトリにうつす。
したら普通にGUIから起動。したら一旦終了する。
と、ホームディレクトリにこんなのができている。

$ pwd
/Users/gulibow/.emacs.d

ここに、初期設定としてinit.elというファイルをつくる。Emacsまだよくわからんのでviで書くw

(set-language-environment 'Japanese)
(prefer-coding-system 'utf-8)

日本語設定と、文字コードの設定らしい。
あとは普通に起動する。

とりあえず

チュートリアルを読んで操作をおぼえます。。。

Hello, Jenkins!

Jenkinsさんと出会ってみよう。

JDKをいれる

これからはOpenJDKの時代だよね、ということでOpenJDKにする。
CentOSだとyumで入る。

# yum install -y java-1.6.0-openjdk
# yum install -y java-1.6.0-openjdk-devel
# yum install -y java-1.6.0-openjdk-src
# yum install -y java-1.6.0-openjdk-javadoc

一番上だけいれればJREは入るけど、JDKとしていれるのであればdevelも必要。
srcとjavadocはなんとなくいれた。

mavenをいれる

Jenkinsでmavenビルドしたいので、Jenkinsを動かすサーバー上にmavenを入れる。
一旦2系の最新版を落としていれることにする。

# cd /usr/local/src
# wget http://ftp.riken.jp/net/apache//maven/binaries/apache-maven-2.2.1-bin.tar.gz
# tar xvzf apache-maven-2.2.1-bin.tar.gz
# mv apache-maven-2.2.1 ../
# cd ..
# ln -s apache-maven-2.2.1 mvn

これでOK. ディレクトリ名はなんとなく。
動作確認は、

# /usr/local/mvn/bin/mvn --version

たぶんJAVA_HOMEとか指定してないんで怒られたりするけどバージョンが表示されたらOK

Jenkinsをいれる

# cd /usr/local
# mkdir jenkins
# cd jenkins
# wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
# java -jar jenkins.war 

この起動だとコンソールにエラーとか出ちゃうけど一旦これで。

アクセスしてみる

http://centos01:8080/

はいアクセスできませんでした、と。

# /sbin/iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    ACCEPT     icmp --  anywhere             anywhere            icmp any 
3    ACCEPT     esp  --  anywhere             anywhere            
4    ACCEPT     ah   --  anywhere             anywhere            
5    ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns 
6    ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp 
7    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp 
8    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
10   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
11   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
12   REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

ですよね。8080ポートあけなきゃね。

8080ポートをあける

# /sbin/iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 8080 -j ACCEPT
# /sbin/iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    ACCEPT     icmp --  anywhere             anywhere            icmp any 
3    ACCEPT     esp  --  anywhere             anywhere            
4    ACCEPT     ah   --  anywhere             anywhere            
5    ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns 
6    ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp 
7    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp 
8    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
10   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:webcache 
11   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
12   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
13   REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

# /sbin/service iptables save
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]

Hello! Jenkins

http://centos01:8080/
今度こそ。

Jenkinsにmavenの情報などを伝える

Jenkinsのトップから、Jenkinsの管理>システムの設定 を開く。

JDKの設定

さっきいれたJDKを指定する。
名前は適当。
JAVA_HOMEは自分の環境のやつをwhich javaから辿れ。
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
とかかな。

mavenの設定

名前は適当。
MAVEN_HOMEは/usr/local/mvn

ジョブを作成する

メニューから、新規ジョブを作成。
名前は適当に、Mavenプロジェクトのビルドを指定。

リポジトリの指定

svnを指定しよう。
今回実はsvnと同じサーバーにたててるのでリポジトリURLは
http://localhost/svn/repos/maven-sample02/trunk
本当はJenkinsのユーザーつくってsshがいいんだろうね。

ビルド

ルートPOM ->pom.xml
ゴール -> package
を指定。

ビルドしてみる

作ったジョブのページから、ビルド実行。
青くなれば成功。赤くなったらなんか間違ってるのでログとかみて頑張れ。

ビルド履歴をみてみる

成功したビルド履歴をクリックすると詳細にとぶ。
さらにモジュールビルドをクリックして表示したページにwarとかでてる。

おわり。

とりあえず動きました。
実際のデプロイだったりきり戻しだったりテストだったりそういうのをこれからやってきましょうかね。

svnをsshで。

なんか昨日作ったプロジェクトをこないだ作ったsvnにコミットしたらauthorが出ないのであれ?って思ったら
httpのDAVに直接ぶちこんでた。

なんかsshでやりたいときは、

http://host01/svn/repos
リポジトリつなげていたのを
svn+ssh://[ユーザー名]@host01/[リポジトリのパス]
にすればよい。
だから、
svn+ssh://gulibow@host01/usr/local/svn/repos
みたいな。

sshになったからね。当然ですね。
ちなみにsshだとdaemon不要らしい。ちゃんとたしかめてない。
あと、linuxでのパーミッションもろに影響くうんで、
ちゃんとグループ管理とかしないとですな。

つかDAVいれた意味なくね?これ。

Eclipseでmavenでwebプロジェクトをつくりtomcatと連携してみる

かなり時間がたってしまった。。。
が、やってみるよ。

やりたいこと

情報だけはいっぱいあるけどなんかまとまってない、でもわりとあるパターン、
Eclipseでwebプロジェクトをmavenでつくって動かす。

下ごしらえ

tomcatのインストール

まあこれはどうやってもいいけど。。
http://tomcat.apache.org/
から適当に落としてきて、
Macだと/usr/local とかどっか適当なとこに解凍する。だけ。
本当は起動スクリプトとかちゃんと用意したらいいんだろうけど。

起動して、managerページとか見れるのを確認しとくといいかも。

sysdeo-tomcat-pluginをEclipseにいれる

なんかEclipse純正のだとうまくtomcatと連携できなかった。
もしかしたらやりようがあるのかもしれないけど、結構みんな使ってるっぽいのでこっちに。
http://www.eclipsetotale.com/tomcatPlugin.html
どうやらfeatureサイトないっぽい?のでここからダウンロードしてくる。
インストール方法も上記サイトに書いてあるが、落としたzipを解凍したら
eclipseのホームディレクトリ配下のdropinsというディレクトリにいれて、eclipseを再起動するだけ。

mavenプロジェクトを作る

地道に作ってもよいが、archetypeという便利なものがあるのでそれを使う。
m2eclipseが入ってると、file->new->mavenから新規mavenプロジェクトを作成する。
archetypeは、maven-archetype-webappを選ぶ。

tomcatの設定をする

作ったプロジェクトを右クリックして、プロパティからTomcatを選択。
Tomcatプロジェクトにチェックをいれる。
webアプリケーションルートは/target/[プロジェクト名]みたいな感じで。

warを作る

Run->Maven packageを実行すると、target配下にwarができる

tomcat起動!

簡単ですね!

SubversionをWebDAVで。

ApacheもはいったことだしSubversionWebDAVで見れるようにしてみよう。

mod_dav_svn をいれる。

# yum install mod_dav_svn

subversion.conf をいじる。

# cd /etc/httpd/conf.d/
# cp -p subversion.conf subversion.conf.org
# vi subversion.conf
# diff subversion.conf subversion.conf.org 
39,43d38
< 
< <Location /svn/repos>
<     DAV svn
<     SVNPath /usr/local/svn/repos
< </Location>

とりあえずこれだけ追加して反映させてみる。

パーミッションを変更

# chown -R apache.apache /usr/local/svn

反映

# /etc/init.d/httpd reload

みてみる

http://centos01/svn/repos/
と、コミット済みのがみれてるはず。

【追記】CommitしようとするとPermission Deniedになる場合。

権限がちゃんと変更できてるのにできない場合、
SELinuxがEnforcingの可能性がある。

# /usr/sbin/getenforce 

を打ってEnforcingと表示されたら

# chcon -R -h -t httpd_sys_content_t /usr/local/svn/repos

をやっておかないと、参照はできるがCommitしようとするとPermission Deniedになってできない。

Subversiveを入れてみる

SVNたてたのでEclipseから使ってみるよ。

Subversiveをいれる

Install New Software...
>Helios - http://download.eclipse.org/releases/helios を選択
>Collaboration
から

をいれる。

SVN Connectorをいれる

http://community.polarion.com/projects/subversive/download/eclipse/2.0/helios-site
をupdate-siteに追加。
Subversive SVN Connectorsと、SVN Kitの最新版をいれる。

使ってみる。

Window>Open Perspective>SVN Repository Exploring
Perspective上で右クリック>New>New Repository Location
してリポジトリを追加。
今回はこないだ作ったWebDAVリポジトリ
http://centos01/svn/repos

おおー
中身をみて、trunkを選択してCheckout。

適当にコミットしたり比較したりして遊んでみたら、
新しくプロジェクトを追加してみる。
追加するのはこないだ作ったmavenプロジェクト

右クリックメニューからTeam>Share Project...>
SVNを選んでリポジトリを選択したら
Specify Project Location で Advanced Modeにして、Project Repository LayoutをUse Simple Project Layoutにして、Use Subversion Recommended LayoutにチェックをいれてFinish。

おおー

MacのChromeをためしてみる

ふと思い立ったので。
ずっとvimpChromeロクに使ってない。

インストール

Googleからdmgをダウンロードしてダブルクリックしてアプリケーションにコピー。

Vimlike Smooziee

なにはともあれvi化しないとはじまらない気がする。
http://code.google.com/p/vimlike-smooziee/

Chrome Keyconfig

https://chrome.google.com/extensions/detail/okneonigbfnolfkmfgjmaeniipdjkgkl
これちょうべんりだなー

{
  "name": "Chrome Keyconfig",
  "version": "1.10.5",
  "normal_actions": {
    "l": {
      "name": "select right tab",
      "args": []
    },
    "M-j": {
      "name": "scroll down half page",
      "args": []
    },
    "M-k": {
      "name": "scroll up half page",
      "args": []
    },
    "M-J": {
      "name": "scroll to bottom",
      "args": []
    },
    "M-K": {
      "name": "scroll to top",
      "args": []
    },
    "C-d": {
      "name": "navigate form elements forward",
      "args": []
    },
    "C-u": {
      "name": "navigate form elements backward",
      "args": []
    },
    "Esc": {
      "name": "limited mode",
      "args": []
    },
    "k e y c o n f i g": {
      "name": "Keyconfig",
      "args": []
    },
    "H": {
      "name": "scroll left",
      "args": []
    },
    "J": {
      "name": "scroll down",
      "args": []
    },
    "h": {
      "name": "select left tab",
      "args": []
    },
    ": t": {
      "name": "open new tab",
      "args": []
    },
    ": q": {
      "name": "close this tab",
      "args": []
    },
    ": o": {
      "name": "go to #1",
      "args": [
        "http://www.google.co.jp/",
        "google"
      ]
    },
    "g o": {
      "name": "lunch quickmark (open this tab)",
      "args": []
    },
    "g a": {
      "name": "add quickmark",
      "args": []
    },
    "g n": {
      "name": "lunch quickmark (open background tab)",
      "args": []
    },
    ": w": {
      "name": "Taberareloo.link",
      "args": []
    },
    "C-f": {
      "name": "scroll down half page",
      "args": []
    },
    "C-b": {
      "name": "scroll up half page",
      "args": []
    }
  },
  "limited_actions": {
    "Esc": {
      "name": "normal mode",
      "args": []
    }
  },
  "useTabTitle": false,
  "smooth_scroll": true,
  "ldrize": true,
  "chrome_vim": true,
  "antiAutoFocus": true,
  "vim_normal_actions": {
    "j": {
      "name": "Down",
      "args": []
    },
    "k": {
      "name": "Up",
      "args": []
    },
    "h": {
      "name": "no action",
      "args": []
    },
    "l": {
      "name": "no action",
      "args": []
    },
    "^": {
      "name": "Line head",
      "args": []
    },
    "$": {
      "name": "Line foot",
      "args": []
    },
    "Esc": {
      "name": "normal mode",
      "args": []
    },
    "i": {
      "name": "insert mode",
      "args": []
    }
  },
  "vim_insert_actions": {
    "Esc": {
      "name": "normal mode",
      "args": []
    }
  },
  "vim_default_mode": "insert",
  "vim_color_config": {
    "normal": {
      "background": "gray",
      "text": "black"
    },
    "insert": {
      "background": "white",
      "text": "black"
    }
  }
}

はてな

http://b.hatena.ne.jp/guide/chrome_extentions
ブクマコメみたいだけw

最低限これだけいれれば結構動く。
まだイマイチつかめてない感じもあるけど、普通に使う分にはいいのではないだろうか。