2010年12月24日金曜日

Mac OS X snow leopard + Eclipse 3.6 Helios

ご無沙汰になりました. 色々やってたんですが, どれも公に書きにくいことが多く, こちらを更新するに至れませんでした.

しばらく年末年始時間があるので補完します.


Carbon Emacs でjava書いてコンパイルってのをやってたのですが, どうも間違いなくめんどい.
JavaならやっぱEclipse. てかそれ以外の言語もばっちり!という噂を聞いたので, 早速入れてみることに.

2010/12時点でEclipse 3.6 Heliosが最新です.

早速

http://www.eclipse.org/downloads

からEclipse IDE for Java Developersをダウンロード.
解凍して/Applicationsへeclipseフォルダをぶっ込む.

まぁこれで英語版は使えますが, 日本語化するとかわいいかんじになってどうもよさげだったのでチャレンジ.
まずは,

http://mergedoc.sourceforge.jp/index.html#/pleiades.html

から
Eclipse 3.6.1 Helios SR1 Windows 32bit ベース / Pleiades All in One 3.6.1.20101025
のJREなしパッケージをダウンロード.

解凍するとpleiades-all-in-one-java_*/eclipseの中にdropinsというフォルダがあります.
これを/Applications/eclipse/内のdropinsにそのまま全部上書きしてしまいます.

続いて,
/Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini
を開いて

-javaagent:dropi....で始まる, Pleiades内のeclipse.iniファイル内最終行を追加.
そして,
-Xms128m

へ変更しておく.

以上でEclipseを立ち上げると無事Pleiadesが立ち上がり, 日本語のかわいいやつが出てきます.


pluginは取り急ぎHadoop MapReduce pluginを.


しかし実はまだあまり使っておらず, コンパイルすらしていません.
補完機能やハイライトがすごくイケてるので, 今後は手放せなくなりそうですが, 慣れるのはまだ先.

2010年11月21日日曜日

Mac os X snow leopard, javaの文字化け

今更ながらjavaを書き始めたが, javacで文字化けしてしまう.
エラーメッセージはSJISで表示されてしまうということをどこかで見たので,

% javac -J-Dfile.encoding=UTF8

としてUTFにする必要がある. めんどいのでこれはaliasとして

alias javac="javac -J-Dfile.encoding=UTF8"
として定義を上書きしておく.

同様にjavaも

alias java='java -Dfile.encoding=UTF-8'

とする.

が, しかし, 日本語をインプットすると文字化けしてしまう. やっぱJDK 1.5を使うべきか...そちらならUTF-8環境なので.
しばらく考えよう.

2010年11月19日金曜日

zsh プロンプト変更

なんとなくプロンプトを変更してみた.

書き方が分かったから今度から自分で変更しよう.

参考にできるのはここ.

zsh:Prompt Expansion

変えたのはこれ

autoload colors
colors
case ${UID} in
0)
    PROMPT="%B%{${fg[green]}%}%n@%m#%{${reset_color}%}%b "
    PROMPT2="%B%{${fg[green]}%}%_#%{${reset_color}%}%b "
 RPROMPT="%{${fg[yellow]}%}[%~]%{${reset_color}%}"
    SPROMPT="%B%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%}%b "
    [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
        PROMPT="%{${fg[cyan]}%}$(echo ${HOST%%.*} | tr '[a-z]' '[A-Z]') ${PROMPT}"
    ;;
*)
    PROMPT="%{${fg[green]}%}%n@%m %%%{${reset_color}%} "
    PROMPT2="%{${fg[green]}%}%_%%%{${reset_color}%} "
 RPROMPT="%{${fg[yellow]}%}[%~]%{${reset_color}%}"
    SPROMPT="%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%} "
    [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
        PROMPT="%{${fg[cyan]}%}$(echo ${HOST%%.*} | tr '[a-z]' '[A-Z]') ${PROMPT}"
    ;;
esac

結局RPROMPTで右っかわにカレントディレクトリ (%~)を表示させ, 左側にはユーザ名@マシン名 (%n@%m) としました.
時刻とか出してる人もいたけどあんまり必要な情報ではないし... とは言えユーザ名もマシン名も自宅PCであれば意味ないか...

今更聞けないUNIXコマンド (3) 公開鍵認証方式+ssh ログイン

職場、学校等のサーバが公開鍵認証方式を採用している場合は多いです。
その設定を昨日やったので、一応書いておきます。windowsではputtyなんかでやってましたが、macではTerminalから全部できて便利。

まずは

% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tatsuaki/.ssh/id_rsa): 
Created directory '/Users/tatsuaki/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

てなかんじでssh-keygenにより公開鍵, 秘密鍵のペアを生成します.
公開鍵は他人に見られてもオッケーですが、秘密鍵は秘密なのでこれは絶対秘密です.
-t オプションは鍵の種類を設定します. dsaとかありますがデフォルトではrsa2である-t rsaが決まっていて,
これが推奨らしいのでこれでやりましょう.

コマンドを入れるとkeyを作る場所を聞かれるのでいれます. デフォルトで~/.ssh/に入ります.

次にパスフレーズを聞かれるので, パスワードを2回いれます. (これでサーバへ認証します)

% cd .ssh
id_rsa  id_rsa.pub
と2つファイルがあり, id_rsa, id_rsa.pubがありますが, 後者が公開鍵です.
これをサーバへ転送します.

とは言え自分はつながっていないので誰かに頼みましょう. 私の場合は違うマシンで入れたのでそっちへ
メールで送り, そこから設定しました.

ここからはサーバ側の設定です.

サーバへファイルid_rsa.pubを送りましょう. sftpやらscpやら単純にftpやらありますが,
scpでやるならば

$ scp [オプション][転送したいファイル名][転送先のパス]
とします.

たとえば
$ scp test.txt USER1@remotehost.co.jp:.ssh
で手元にあるtest.txtをUSER1としてログインするremotehost.co.jpの~/.ssh/へ送ります.
パスワードを聞かれますので入力すればok. ちなみに, scpは-rオプションでディレクトリを転送します.

サーバ管理者がどうしているか分かりませんが, サーバのユーザホームディレクトリに.sshがあるはずなので,
(なければ作る)

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

でauthorized_keysへ内容を書き込みます. これにて終了.
ちなみに
$ chmod 600 ~/.ssh/authorized_keys
でパーミッションを変更して他から表示できないようにしといた方が安全です.


あとはログインするときは

$ ssh USER1@remotehost.co.jp 

あるいは

$ ssh -l USER1 remotehost.co.jp
で入れます.

あと, 普通にやっていれば公開鍵がユーザの~/.ssh/known_hostsに追加されるはずですが, エラーが出たり
古かったりすると問題です. 書式は以下の通り.

ホスト名, IP  キー種別  ホスト公開鍵
    #  コメント
   例:
    remotehost.co.jp, 192.168.1.2 ssh-rsa AAAAB3NzaC1...nXIDE=.......
改行すれば何個も指定できます.

2010年11月16日火曜日

Carbon Emacs フォント設定

また取り急ぎ

M+2VM+IPAG Circle 14ptにフォント設定しました.
なんかこのフォント好きになりました.


.emacs.elへ以下を追加

;;;;;;;;;;;;;;;;;;;;;;;
;; font
;;;;;;;;;;;;;;;;;;;;;;

 (set-face-attribute 'default nil
                     :family "M+2VM+IPAG circle"
                     :height 140)
 (set-fontset-font "fontset-default"
                   'japanese-jisx0208
                   '("M+2VM+IPAG circle" . "jisx0208.*"))

 (set-fontset-font "fontset-default"
                   'katakana-jisx0201
                   '("M+2VM+IPAG circle" . "jisx0201.*"))

友人とElispファイルを共有してともにEmacsを楽しもうという話になった.
かなり彼は分割して保存していて, 私の.emacs.elもどこにバグがあるか分からないときがある,
というので, 今度思い切って分割しよう. もうこれで設定は終わりにしたいかな...


フォントは
M+IPA合成フォント
からダウンロードさせていただきます. お世話になっております.

2010年11月15日月曜日

zshの設定

さらに取り急ぎ, .zshrcおよび.zshenvの設定


.zshenv
PATH=$PATH:$HOME/bin

export PATH

# MacPorts Installer addition on 2010-09-20_at_22:04:26: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

#Manual PATH
export MANPATH=/opt/local/share/man:$MANPATH


#Hadoop Path
export HADOOP_INSTALL=/Users/tatsuaki/workspace/hadoop-0.21.0
export PATH=$PATH:$HADOOP_INSTALL/bin

LANG=ja_JP.UTF-8
export LANG

LISTMAX=0
export LISTMAX

.zshrc
# 新規ディレクトリは755、新規ファイルは644にする
umask 022


## Default shell configuration
#
# set prompt
#
autoload colors
colors
case ${UID} in
0)
    PROMPT="%B%{${fg[green]}%}%/#%{${reset_color}%}%b "
    PROMPT2="%B%{${fg[green]}%}%_#%{${reset_color}%}%b "
    SPROMPT="%B%{${fg[green]}%}%r is correct? [n,y,a,e]:%{${reset_color}%}%b "
    [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
        PROMPT="%{${fg[cyan]}%}$(echo ${HOST%%.*} | tr '[a-z]' '[A-Z]') ${PROMPT}"
    ;;
*)
    PROMPT="%{${fg[green]}%}%/%%%{${reset_color}%} "
    PROMPT2="%{${fg[green]}%}%_%%%{${reset_color}%} "
    SPROMPT="%{${fg[green]}%}%r is correct? [n,y,a,e]:%{${reset_color}%} "
    [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && 
        PROMPT="%{${fg[cyan]}%}$(echo ${HOST%%.*} | tr '[a-z]' '[A-Z]') ${PROMPT}"
    ;;
esac



#### 補完  ####
#############

autoload -U compinit
compinit

#ディレクトリ名を入力するだけでカレントディレクトリを変更
setopt auto_cd
#タブキーを何度も押せば補完候補が出る
setopt auto_menu
#自動集積機能
setopt correct
#補完機能を詰めて表示
setopt list_packed
# =以降でも補完できるようにする
setopt magic_equal_subst
#補完候補リストの日本語を正しく表示
setopt print_eight_bit

# 補完の時に大文字小文字を区別しない(但し、大文字を打った場合は小文字に変換しない)
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'


# ビープ音を鳴らさないようにする
setopt no_beep



##history#####
# 直前と同じコマンドラインはヒストリに追加しない
setopt hist_ignore_dups

# ヒストリにhistoryコマンドを記録しない
setopt hist_no_store

# 余分なスペースを削除してヒストリに記録する
setopt hist_reduce_blanks

# 行頭がスペースで始まるコマンドラインはヒストリに記録しない
# setopt hist_ignore_spece

# 重複したヒストリは追加しない
# setopt hist_ignore_all_dups

# ヒストリを呼び出してから実行する間に一旦編集できる状態になる
setopt hist_verify

# 履歴ファイルの保存先
HISTFILE=$HOME/.zsh-history
# メモリ内の履歴の数
HISTSIZE=30000
# 保存される履歴の数
SAVEHIST=100000
# 履歴ファイルに時刻を記録する機能を有効化
setopt extended_history
# 履歴をターミナル間で共有する
setopt share_history




# ディレクトリを水色にする。
export LS_COLORS='di=01;36'

# ファイルリスト補完でもlsと同様に色をつける。
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

# cd をしたときにlsを実行する
function chpwd() { ls }

# ディレクトリ名だけで、ディレクトリの移動をする。
setopt auto_cd





# lsコマンドの補完候補にも色付き表示
#eval `dircolors`
zstyle ':completion:*:default' list-colors ${LS_COLORS}
# kill の候補にも色付き表示
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([%0-9]#)*=0=01;31'



zstyle ':completion:*' list-colors \
    'di=01;34' 'ln=01;36' 'pi=40;33' 'so=01;35' 'ex=01;32' \
    'bd=40;33;01' 'cd=40;33;01' 'su=37;41' 'sg=30;43' 'tw=30;42' 'ow=34;42'
autoload -U compinit
compinit -u

  



##


# Carbon Emacs = cemacs
alias cemacs='open -a Emacs'
alias cemacsn='open  -n Emacs'
alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs -nw'

#alias#
alias ls="ls -G"
alias rm="rm -i"
alias cp="cp -i"
alias mv="mv -i"

# application alias #
alias firefox="open -a Firefox"
alias prev="open -a Preview"
alias itunes="open -a iTunes"
alias texs="open -a  TexShop"

1時間くらいで拾い集めた情報であるため, 今後更新予定.
とりあえずプロンプトを変えたい.

vimの使い方

設定はさておき, vimの使い方を取り急ぎ列挙. PC設定だけで時間が過ぎて行く虚しさ…これは先行投資である.


各モード間の移行

大きく分けて,

  • 通常モード: カーソル移動, 削除など
  • ビジュアルモード: 文章選択用, ここで動いた分選択される
  • コマンドモード: vim制御用. ここで色んな操作ができる.
  • 挿入モード: 名の通り文書書く用
がある.

それぞれ色んな移動方法があるが, だいたいメインの使用法は

通常モードを起点として,

ビジュアルモード > v
コマンドモード > :(コマンド) /(検索)
挿入モード > a (カーソルの後ろ側へ) i (カーソルの手前側へ)

などです. また, 通常モードに戻るには, Escキーで戻ります.


基本操作(ノーマルモード)

  • 削除: x(カーソル位置1文字), *x(カーソルから指定文字分削除), X(バックスペース), dd(1行カット)
  • コピー: yy (行コピー), *yy(指定行コピー), v(選択範囲開始), y(そこまでコピー)
  • ペースト: p(下へ貼付け), P(上へ貼付け)
  • カーソルの移動:h(左), j(下), k(上), l(右), 0(行頭), $(行末),:0(ファイル先頭), :*(指定行)
  • 画面移動: C-f (画面下へ), C-b(画面上へ)

重要な操作

  • 終了: :q(終了), :wq(保存して終了), :q!(保存せず終了)
  • 保存: :w(上書き保存), :w ***(別名で保存)
  • 検索: /*** (後方検索), ?***(前方検索), n(次の候補へ), N(前の候補へ)
  • 取り消し: u(アンドゥ), U(現在行の操作を全て取り消し)
  • 置換: :%s/***1/***2/gc (***1を***2へ置換, c無ければ確認無しで実行)
  • 繰り返し: .(直前操作繰り返し)

こんなとこでしょう. そのうちvimも.vimrcをいじることで快適度をあげます.