投稿

8月, 2012の投稿を表示しています

OpenLDAP の DB の設定

さて、ログも見れるようになったところで。

ldap のログを見ると slapd 起動時にこんな warning が出ているはずです。
Aug 29 11:21:48 localhost slapd[1069]: bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).#012Expect poor performance for suffix "dc=example,dc=com".
要は、「slapd を快適に動かすためには DB_CONFIG というファイルを作ってね」という内容です。 ほっといてもいいんですが、 warning 出っぱなしは気持ち悪いので対処します。

OpenLDAP に含まれている DB_CONFIG のサンプルファイルを ldap の DB のディレクトリにコピーします。
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
検証目的での利用であればデフォルトの DB_CONFIG.example のデフォルトの設定に(赤字の行を)一行追記してやれば問題ないかと。
set_cachesize 0 268435456 1 set_lg_regionmax 262144 set_lg_bsize 2097152 set_flags DB_LOG_AUTOREMOVE
DB_LOG_AUTOREMOVE は Berkeley DB のログファイルを自動で削除してくれるようになります。
(例えば slapcat でバックアップを取った時に、不要となったトランザクションログファイル /var/lib/ldap/log.?????????? を自動削除してくれます)

これで DB_CONFIG ファイルもできたんで slapd 再起動後には warning は出なくなります。


さて、メモリ関連のパラメータのチューニングについて。 OpenLDAP が内部で利用している DB は Berkeley DB というものですが、これのステータスを見るコマンドがあります。
# db_stat -m
このコマンドを打つとずらずらっと…

OpenLDAP のログ周りの設定をする

OpenLDAP のログをファイルに出力するようにします。ついでにログのローテートも設定します。


【前提】
OS: Scientific Linux 6

ログ出力
rsyslog じゃなくて syslog だった頃は /etc/syslog.conf に直接設定を追記していたんですが、 rsyslog だと IncludeConfig というものがデフォルトで設定されてるんですね、知らなかった。 # Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf
というわけで、 /etc/rsyslog.d/ に設定ファイルを作ります。 # vi /etc/rsyslog.d/ldap.conf
ファイルの中身はこのようにします。 # LDAP logs local4.* -/var/log/ldap 利用頻度の高い LDAP サーバだと、ログの出力がボトルネックになる可能性があるので、ログファイル名の指定の前に - (ハイフン)をつけて非同期書き込みにするのを忘れずに。

設定が完了したら rsyslog を再起動します。 # service rsyslog restart
再起動後 /var/log/ldap というファイルができているはずです。


ログローテート
logrotate の設定を変更します。 rsyslog 経由で出力しているログファイル達のローテート設定 (/etc/logrotate.d/syslog) に ldap のログも追記するだけです。 # vi /etc/logrotate.d/syslog
赤字の部分を追記します。 /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler /var/log/ldap { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
ldap のログ出力が多い…

Apache Directory Studio を使って LDAP データを登録する

イメージ
前回でとりあえず LDAP サーバは立ち上がったので、データを流し込みたいと思います。

LDIF 作ってコマンドで流してもいいんですが、データ量が増えてくると CUI での管理が大変になるので、専用の LDAP クライアント使います。フリーで使いやすい LDAP クライアントとなると Apache Directory Studio 一択と考えてもらって問題ないです。


LDAP サーバへの接続
インストールして起動するとこんな画面が立ち上がります。
画面上部のタブから [LDAP] - [New Connection...] をクリックすると LDAP サーバへの接続の設定ウィザードが立ち上がります。
[Connection Name] [Hostname] を入力して [Next] をクリック。([Connection Name] は適当にわかりやすい名前を入れればOK)
[Bind DN or user] に slapd.conf で設定した rootdn 、 [Bind password] に同じく rootpw を入れて [Finish] をクリック。
これで完了です。接続できれば下のように画面の左下にコネクション情報、左側に LDAP ツリー情報が表示されます。

LDAP データの投入
まだデータが全く空の状態なので、とりあえず DIT (Directory Information Tree) のトップの情報 (dc=example,dc=com) を入れます。
画面左の [DIT] の部分を右クリックして、 [New] - [New Context Entry...] をクリックするとデータの作成画面が表示されますので、 [Create entry from scratch] のままで [Next] をクリック。
オブジェクトクラスを選択する画面になるので、必要なオブジェクトクラスを追加していきます。
dc=example,dc=com だと dcObject が必須です。 さらに、 dcObject だけだと「No structural objectClass」と怒られるので organization を追加しました。
選択が終わったら [Next] をクリック。
DN 入力画面になるので dc=example,dc=com と入力…

OpenLDAP で LDAP サーバを構築する

OpenLDAP を使って LDAP サーバを構築する機会があったのでメモを残しておこうかと。


【前提】
OS: Scientific Linux 6.3

パッケージの導入
openldap 構築に必要なパッケージををインストールします。 # yum install openldap-servers openldap-clients
インストールすると /etc に openldap の設定ファイルが入ったディレクトリが作成されます。 中身はこうなっています。 # cd /etc/openldap # ls -l total 16 drwxr-xr-x. 2 root root 4096 Aug 27 13:15 certs -rw-r--r--. 1 root root 280 Aug 9 04:57 ldap.conf drwxr-xr-x. 2 root root 4096 Aug 27 14:28 schema drwx------. 3 ldap ldap 4096 Aug 27 14:28 slapd.d
以下、簡単に説明。
certs/ldap.conf このマシン自身が ldap クライアントとして動作するときの設定ファイル (ldap.conf) と証明書置き場 (certs)
schema openldap にデフォルトで入っているスキーマファイル
slapd.d openldap の設定データベース

openldap は 2.3 からは slapd.d という設定データベースが使えるようになり、設定も slapd.conf ではなく slapd.d を使うよう推奨されているんですが、 slapd.d は操作が面倒くさいので今回は slapd.conf を使って構築します。


LDAP サーバの初期設定
slapd.d ディレクトリが存在すると、そちらが優先的に読み込まれてしまうので退避します。 # cd /etc/openldap # mv slapd.d slapd.d.org
設定ファイル (slapd.conf) のひな形を持ってきましょう。 # cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/ope…

最小インストールした Linux に GUI 環境を入れる

Linux をネットワークインストールするで OS の最小インストールをしたけども、やっぱり GUI 環境を使ってみたいという場合に。


【前提】
OS: Scientific Linux 6.3


yum でデスクトップのパッケージグループを指定すれば簡単に GUI 環境の導入できます。 あと、フォントも入れてあげないと文字化けするのでお忘れなく。
# yum groupinstall Desktop Fonts 「Desktop」を指定してインストールされる GUI 環境は、 OS 標準の Gnome になります。 KDE を使いたい場合は「KDE Desktop」、 Xfce の場合は「Xfce」を指定します。

ちなみに、 yum grouplist とすると、パッケージグループの一覧が表示されますので、指定するパッケージグループ名がわからない場合はこれで確認するとよいかと。


パッケージの導入が完了したら、 /etc/inittab のランレベルの設定を 3 から 5 に変更します。
id:3:initdefault: ↓
id:5:initdefault:
作業はこれで完了です。再起動すれば GUI のログイン画面が立ち上がります。

画面を分割した状態で tmux を起動する

tmux はシェルからの起動時に tmux のコマンドを渡して起動することができます。

これを利用すると画面を分割した状態で起動することができます。 例えば、左右に画面(pane)を分割した状態で起動するにはコンソールでこのように入力します。
# tmux new-session \; split-window -h -d
上の例では new-session で新規接続して、 split-window で画面を左右に分割、としています。
; で区切る(シェルから実行するときには ; を \ でエスケープする)ことで複数コマンドを渡せますので、こんな風にすると、、、
# tmux new-session \; split-window -h -d \; split-window -d \; clock-mode ・画面を左右に分割して
・左画面を上下に分割して
・左上に時計を表示
とすることができます。

よく使うようであればエイリアスに登録しておくと便利ですね。


【関連】
ターミナルマルチプレクサ tmux を使ってみるtmux のキーバインドを vi 風にするtmux.conf 編集時にシンタックスハイライトする画面を分割した状態で tmux を起動する

tmux.conf 編集時にシンタックスハイライトする

tmux のキーバインドを vi 風にする で書きましたが、 tmux のサンプルファイルには vim 用のシンタックスファイルも入っています。せっかくなので vi で tmux.conf を編集した時にハイライトされるようにしたいと思います。


【前提】
OS: Scientific Linux 6.3

tmux.conf 編集時にシンタックスハイライトされるようにする
tmux のサンプルの入っているディレクトリから tmux.vim を ~/.vim/syntax/ ディレクトリにコピーします。 ~/.vim/syntax/ ディレクトリが存在しない場合は作成します。tmux.vim ファイルを置く場所は vim の runtimepath の通っている場所にしましょう。 vi 開いて :set runtimepath で確認できます。 # mkdir -p ~/.vim/syntax # cp /usr/share/doc/tmux-1.5/examples/tmux.vim ~/.vim/syntax/
vim がファイルタイプを判別するための設定を追加します。 ~/.vim/filetype.vim ファイルを作成して以下の3行を追記して下さい。 augroup filetypedetect auBufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux augroup END
さて、 vi で ~/.tmux.conf を編集してみるとこんな感じになります。
# split windows like vim# vim's definition of a horizontal/vertical split is reversed from tmux'sbind s split-window -vbind v split-window -h# move around panes with hjkl, as one would in vim after pressing ctrl-wbind h select-pane -Lbind j select-pane -Dbind k select-pane -Ubind l select-…

tmux のキーバインドを vi 風にする

tmux の設定を弄って vi 風のキーバインドに変更します。 といっても、 rpm でインストールした tmux には設定ファイルのサンプルが入っていますんで、それをそのまま使わせてもらいます。


【前提】
OS: Scientific Linux 6.3

tmux を vi 風キーバインドにする(~/.tmux.conf)
設定ファイルのサンプルがある場所はこちらです。 # cd /usr/share/doc/tmux-1.5/examples # ls -l 合計 36 -rw-r--r-- 1 root root 2014 7月 9 18:24 2011 bash_completion_tmux.sh -rw-r--r-- 1 root root 913 7月 9 18:24 2011 h-boetes.conf -rw-r--r-- 1 root root 2338 7月 9 18:24 2011 n-marriott.conf -rw-r--r-- 1 root root 1799 7月 9 18:24 2011 screen-keys.conf -rw-r--r-- 1 root root 2789 7月 9 18:24 2011 t-williams.conf -rw-r--r-- 1 root root 5333 7月 9 18:24 2011 tmux.vim -rw-r--r-- 1 root root 2513 7月 9 18:24 2011 tmux_backup.sh -rw-r--r-- 1 root root 1088 7月 9 18:24 2011 vim-keys.conf
[ ファイルの説明 ] *.conf tmux 設定ファイルのサンプルです。 tmux.vim vim 用のシンタックスファイルです。 bash_completion_tmux.sh bash のコマンドライン上で tmux のオプションが補完されるようにするための設定ファイルです。
source bash_completion_tmux.sh として使います。 tmux_backup.sh シェルを実行すると tmux 上の各端末(pane)の出力をファイルに吐き出します。
tmux のキーバイン…

ターミナルマルチプレクサ tmux を使ってみる

イメージ
一つの端末上で複数の端末を動かすターミナルマルチプレクサ(terminal multiplexer)と呼ばれるソフトがあります。代表的なものに GNU Screen がありますが、設定ファイルを弄ろうとすると難解で挫折して使わなくなってしまって幾星霜。

最近になってまた使いたくなって色々と調べてみたところ、 screen と同等の機能を持っていて活発に開発が進んでいる tmux というものがあるらしいというので導入してみることにしました。


【前提】
OS: Scientific Linux 6.3

tmux の導入
tmux を導入するための準備をします。 Scientific Linux 標準のレポジトリには入っていないので、 epel のレポジトリを追加します。
# yum install yum-conf-epel
レポジトリの追加が終わったら tmux をインストールします。
# yum install tmux
これで準備は完了です。 tmux コマンドで起動します。こんな感じのことができます。

以下、簡単に画面の説明です。 window 画面下部緑色のラインに起動している window が表示されています。
  0:[tmux]* 1:zsh-
とありますが、 * (アスタリスク)の付いている方が現在表示している window になります。今利用しているのは window(0) ですね。 pane window(0) は画面左右に分割されていて、さらに左側は上下に分割しています。この分割されたそれぞれの領域を pane と呼びます。 pane 一つ一つが独立した端末として動作します。

tmux の操作
tmux は C-b (Ctrl-b) を入力後にコマンドキーを入力することで操作ができます。 使いそうなコマンドキーを以下にリストアップします。

コマンドキー動作c新しく window を開く0 to 9対応する番号の window を選択する"pane を上下に分割%pane を左右に分割Up, Down,Left, Right対応する方向にある pane に移動[コピーモード開始]コピーバッファにある内容をペースト:tmux のコマンドプロンプトを表示?キーバインドのリストを表示

さて小話でも。

Linux にログインし…

プロキシ経由で yum wget を使う

プロキシを経由しないとインターネットにアクセスできないような環境で yum や wget を使うときにする設定です。
まあ、 GUI 使ってる場合は GUI のネットワーク設定してパッケージの追加もダウンロードも GUI 上でやってしまえば済むんですけどね。 CUI しかない場合は、、、という前提で。

ユーザの環境変数に設定する 環境変数 http_proxy をセットすると yum も wget もプロキシ経由でアクセスできるようになります。
http_proxy="http://<user>:<password>@<host>:<port>/" 認証がない場合は <user>:<password>@ は不要です。シェルの設定ファイルに書きましょう。 zsh だと ~/.zshrc に export http_proxy=... となりますね。


アプリケーション毎にプロキシを設定する
yum の場合 /etc/yum.conf に以下の設定を追加 proxy=http://<host>:<port>/ proxy_username=<user> proxy_password=<password> proxy_username proxy_password は認証がない場合は不要です。

wget の場合 /etc/wgetrc に以下の設定を追加 use_proxy=onhttp_proxy= http://<host>:<port>/ proxy_user= <user> proxy_password= <password> こちらも proxy_user proxy_password は認証がない場合は不要です。

普通の環境では 1 の方法、ユーザが多数いて個別に設定して回るのが大変な場合は 2 の方法でよいかと。

葡萄っぽい草

イメージ
今年の春に庭に生い茂った草たちを根こそぎ引っこ抜いたのですが、根を張りすぎてどうしても抜けなかった草がありました。

結局何の草かだったのかわからないけど根元から切ったしもう生えてこないだろうと思っていたのですが、、、翌週には切った部分から芽のようなものが生え一ヶ月後には30センチほどに成長し今ではこの通り。

なにやら葡萄っぽい実まで。

見た感じおいしそうだし「搾ってジュースでも作ろうか、あははうふふ」などと相方と談笑していたのですが、「で、結局なんていう草?これ」ということで調べてみるとどうやら ヨウシュヤマゴボウ というものらしいことが判明。

ゴボウ? ブドウじゃなくて? と思いつつさらに調べると、、、

ヨウシュヤマゴボウ
ヨウシュヤマゴボウは有毒植物で、全体にわたって毒があり、果実も有毒である。毒性は、根>葉>果実の順であるが、果実中の種子は毒性が高い。果実は、ブルーベリーと間違って誤食する事故もあり、注意が必要である。特に、幼児は影響を受けやすいので、果汁が直接皮膚に触れることも避けるべきである。 (wikipedia より)

あやうく一家心中になるとこでした。。。あぶなかった (-_-;)

VMware と VirtualBox のネットワークアダプタの違い

VMware Player と VirtualBox の違いについてです。

自宅PCを Windows から Mac に移行したタイミングで VMware から VirtualBox に切り替えたのですが、 VMware で作った仮想ディスクも VirtualBox から普通に起動できるし GUI の設定でできることも似てるしほぼ問題なく移行できます。ただし、ネットワーク周りで一点だけ詰まったのでそのときのメモ。

ネットワークアダプタの挙動が VMware と VirtualBox で違います。表にすると下のような感じ。

VMware通信の方向ネットワークアダプタの種類srcdstBridgeNATHost-onlyLAN segmentguesthost○○○×internet○○××guest○○○○hostguest○○○×

VirtualBox通信の方向ネットワークアダプタの種類srcdstBridgeNATHost-onlyInternal Networkguesthost○×○×internet○○××guest○×○○hostguest○×○×

用語が微妙に異なっていますが、NAT以外は一緒ですね。

VMware 使っていたときはネットワークアダプタを NAT にしてホストから仮想マシンに ssh でリモートアクセスして使っていたのですが、 VirtualBox の NAT だとそれができません。port forwarding を使えばできるようですが、面倒くさい設定をするくらいならブリッジでいいや、ということで VirtualBox に移ってからはブリッジで使っています。

ブリッジだと外から仮想マシンにやってこられそうで気分的に嫌だという方は NAT と ホストオンリーアダプタの 2枚刺しという手もありますね。


【参考】
VirtualBox のネットワークアダプタのそれぞれの動作については、こちらが図解されていて非常にわかりやすかったです。
[VirtualBox] ネットワーキング構成



【関連】
VirtualBox で仮想マシンを作成するLinux をネットワークインストールする仮想マシンのネットワーク設定を変更するVMware と VirtualBox のネットワークアダプタの違い

仮想マシンのネットワーク設定を変更する

イメージ
VirtualBox で仮想マシンを作成した場合、ネットワークアダプタはデフォルトで NAT が選択されています。この場合、仮想マシンからインタネットへのアクセスはできますが、ホストから仮想マシンへのアクセスができません。詳細は こちら 。
というわけで、仮想マシンのネットワークアダプタを NAT からブリッジに変更します。


仮想マシンのネットワークアダプタを変更する
仮想マシンの「設定」をクリック。
「ネットワーク」をクリックするとアダプタの設定が表示されます。アダプタ1の割り当てが「NAT」になっているので「ブリッジアダプタ」に変更し「OK」で設定を保存します。
変更が完了したらホストからアクセスできるか確認しましょう。


【関連】
VirtualBox で仮想マシンを作成するLinux をネットワークインストールする仮想マシンのネットワーク設定を変更するVMware と VirtualBox のネットワークアダプタの違い

Linux をネットワークインストールする

イメージ
VirtualBox で仮想マシンを作成する の続きです。

Linux のインストールメディアってサイズが大きいんですが、検証目的で使うのであればパッケージは最小限でインストールして必要なものだけ追加で十分なんで、 OS はネットワークインストールします。


【前提】
仮想環境: VirtualBox
仮想マシンOS: Scientific Linux 6.2 (64bit)


インストールメディアをダウンロードする
ミラーサイトからインストールメディアをダウンロードします。 私は普段これらのミラーサイト使わせてもらっています。
JAISThttp://ftp.jaist.ac.jp/
RIKENhttp://ftp.jaist.ac.jp/
KDDI R&D Labshttp://ftp.kddilabs.jp/

JAIST だと Scientific Linux は pub -> Linux -> scientific -> [version] -> [arch] -> iso と辿ったところにインストール用の ISO イメージがあります。 インストーラが立ち上がれば何でもいいんで、一番サイズの小さいものをダウンロードしましょう。

今回は SL-62-x86_64-2012-02-06-boot.iso をダウンロードします。ちなみに、 Fedora の場合は ??????-netinst.iso で大丈夫です。

※ [version] は最新のもので大丈夫です。
※ [arch] は 32bit 環境を使うなら i386 、 64bit 環境を使うなら x86_64 を選んでください。


仮想マシンの設定を変更する
作成済み仮想マシンの設定を変更して、1.でダウンロードした ISO イメージからブートするようにします。 画面左上の「設定」をクリック。
仮想マシンの設定画面が表示されますので、「ストレージ」をクリック。
IDEコントローラの下の「空」をクリックして右側のCDのアイコンからダウンロードした ISO イメージを選択します。
変更が完了したら「OK」をクリックして変更を完了します。

Linux をネットワークインストールする
画面左上の「起動」をクリックします。
grub の画面が立ち上がってきますので、「Inst…

VirtualBox で仮想マシンを作成する

イメージ
Windows 使ってたころは仮想環境に VMware Player 使っていたんですが、 Mac だと VMware Fusion という有償の製品になります。仮想マシンは検証環境としてしか使わないしお金払ってまで必要ではないんで、自宅の PC を Mac に変えたタイミングでフリーで使える VirtualBox に変えました。
というわけで、Mac にインストールした VirtualBox で仮想マシンを作成する方法です。


【前提】
仮想環境: VirtualBox
仮想マシンOS: Scientific Linux 6.2 (64bit)


VirtualBox で新規仮想マシンを作成する
VirtualBox の導入自体はパッケージ落としてきてインストールするだけなんですっ飛ばすとして。。。
VirtualBox 立ち上げるとこんな画面がでてきますので左上の「新規」をクリックします。
仮想マシンの名前は好きなものを入れてください。OSタイプは「Linux」で「Red Hat」(64bit の場合はRed Hat (64bit) )を選択して「続ける」をクリック。
割り当てるメモリのサイズを聞かれますので適当にサイズを入力してクリック。
仮想マシンのディスクを作るかと聞いてきますので「続ける」をクリック。
仮想ディスクの種類を聞いてきます。デフォルトの VDI のままで「続ける」をクリック。
仮想ディスクのタイプを選択する画面になります。検証環境に無駄な容量を割り当てるのはもったいないので Dynamically allocated を選択して「続ける」をクリック。
仮想ディスクファイルの作成場所とサイズを聞いてきます。特にいじる必要はなければそのまま「続ける」をクリック。
仮想ディスクの設定の確認画面が表示されますので「Create」をクリック。
仮想マシンの設定の確認画面が表示されますので「Create」をクリックすると仮想マシンが作成されます。
次は OS をインストールします。


【関連】
VirtualBox で仮想マシンを作成するLinux をネットワークインストールする仮想マシンのネットワーク設定を変更するVMware と VirtualBox のネットワークアダプタの違い

vim 設定 - 補完 -

補完に関する設定になります。
" completionsetwildmenu" command-line completionsetwildmode=list:longest " command-line completion behavior

補完setwildmenu コマンドモードで [tab] を押して補完をした場合に、コマンドラインの上部に補完候補が表示されるようになります。

setwildmode=list:longest 補完の挙動を設定します。設定できる項目は以下になります。(vim マニュアルより)

設定値動作""Complete only the first match."full"Complete the next full match. After the last match,
the original string is used and then the first match
again."longest"Complete till longest common string. If this doesn't
result in a longer string, use the next part."longest:full"Like "longest", but also start 'wildmenu' if it is
enabled."list"When more than one match, list all matches."list:full"When more than one match, list all matches and
complete first match."list:longest"When more than one match, list all matches and
complete till longest common string.
各設定値を , (コンマ)で区切って繋げることで、 [tab] を押した回数に応じた挙動を設…

vim 設定 - 検索 -

検索に関する設定になります。
" searchsetwrapscan" search wrap around the end of the filesethlsearch" highlight all matchessetincsearch" show match for partly typed search commandsetignorecase" ignore case in search pattern"set smartcase " override 'ignorecase' " when pattern has upper case characters

検索setwrapscan この設定が on の場合は、検索キーワードの移動はファイル先頭から末尾まで行ったら先頭に戻ります。 off の場合は先頭から末尾まで行ったら終了です。

sethlsearch 検索キーワードにマッチしたものが全てハイライト表示されます。

setincsearch この設定が off だと検索キーワードを入力して [enter] キーを押すと検索結果が表示されますが、 on だと検索キーワードの入力中にマッチするものにカーソルが飛んでハイライトされます。

setignorecase 検索キーワードの英大文字小文字を区別しなくなります。

"set smartcase smartcase は ignorecase の英大文字小文字の区別無視の動作を一部変更します。 検索キーワードに英大文字が含まれる場合、 ignorecase を無視します。 私は off にしてますが、お好みでどうぞ。

ignorecase と smartcase の動作については vi マニュアルの例がわかりやすいので下表に転載します。

pattern'ignorecase''smartcase'matches ~foooff-foofooon-foo Foo FOOFooonofffoo Foo FOOFooononFoo


【関連】
vimrcvim 設定 - vi 互換 -vim 設定 - 編集 -v…

vim 設定 - 画面表示 -

画面表示に関する設定になります。
" displaysyntaxon" syntax highlighting"set ruler " show cursor positionsetlaststatus=2 " status linesetstatusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P " status line formatsetshowcmd" show (partial) command keyssetshowmode" display the current modesetshowmatch" jump to matching bracketsetwrap" long lines wrap

シンタックスハイライトsyntaxon 画面表示をカラフルにする場合はこの設定をしましょう。
ちなみに、このブログの記事のハイライトされているコードの部分は vim で編集した時のものと同じです。詳しくは 設定ファイルをハイライトしてブログに載せたい をご覧ください。


ステータス表示"set ruler カーソルのある位置の行、列、位置(ファイル先頭からのパーセント表示)を画面最下部に表示します。 設定では statusline 上に同じ項目を表示するようにしているので、 ruler は off にしています。

setlaststatus=2 ステータスラインの表示形式の指定です。設定値による表示形式は下表のようになります。

設定値表示形式0表示しない1画面が2つ以上に分割された場合に表示する2常に表示する
setstatusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P ステータスラインに表示する内容を指定します。 設定だと何やら記号が並んでいますが、この設定は vim の statusline のヘルプにある設定例をそのまま転記したものなので、意味はよくわかっていません(笑) この設定にしているとカーソル位置の文字の ASCII コードが表示されるのが便利なんで使っています。

s…

vim 設定 - 編集 -

テキストの編集に関する設定になります。
" editsetautoindent" automatically set the indent of a new line"set smartindent " do clever autoindentingsetbackspace=indent,eol,start " backspace behavior in insert mode"set textwidth=78 " maximum width of text"set formatoptions+=mB " automatic formatting 実際に有効化して使っているのは autoindent と backspace だけですね。。。他のコメントアウトしている設定は、普段は使わないけどもごく稀に使うことがあるので備忘メモ的な感じで残しています。


インデントsetautoindent"set smartindent autoindent, smartindent ともに自動インデントを利用するための設定です。 行末で [enter] キーで改行する、もしくはコマンドモードで [o] [O] で次の行を挿入した場合に、編集していた行のインデントが新しい行にコピーされます。プログラムを書いたり設定ファイルのコメント行を編集したりする場合に便利ですね。
smartindent は C でプログラムを書くときによく働いてくれるようですが、普段プログラムを書くことないのでコメントアウトして使っていません。

自動インデントは普段は便利なんですが、意図しないインデントが挿入されることも多々あります。例えばマウスを使ってコメント文をコピペしたりするとコメント開始文字が階層的に増えたりとか。
そういうときは設定ファイルの autoindent をコメントアウトしてから編集するか、コマンドモードから set noautoindent として一時的に off にするとよいかと思います。


バックスペースsetbackspace=indent,eol,start バックスペースキーを入力した時の挙動の設定で…

vim 設定 - vi 互換 -

vim を使う上でベースとなる設定です。
setnocompatible" use vim settings
vi 互換setnocompatible compatible オプションをセットすると vim ではなく vi のような動作するようになります。要するに vim の色々な便利機能が使えなくなります。わざわざ不便にする必要はないので vim の機能を利用するようにしましょう。
set {option} とすると {option} の機能を有効にする、 set no{option} とすると {option} の機能を無効にする、という意味になります。上記だと nocompatible として vi 互換モードを利用しない(= vim モードで動作する)という設定をしています。

マニュアルによると、 compatible ( nocompatible ) オプションは他のオプションの動作に影響を与えるため設定ファイルの最初に持ってくるのがよいそうです。(If you set this option in your vimrc file, you should probably put it at the very start.)


【関連】
vimrcvim 設定 - vi 互換 -vim 設定 - 編集 -vim 設定 - 画面表示 -vim 設定 - 検索 -vim 設定 - 補完 -

vi をもう少し便利に使いたい人向けのおすすめ vimrc

Linux 、というか Unix 系システムを触る方であれば vi, Emacs どちらを使うかで熱い議論を交したことが必ずあるはず(?)ですね。Emacs は立ち上げればその中で全ての作業を行えるという設計思想には強く惹かれるのですが、使ってみてもどうも馴染めませんでした。使い続ける気にならなかった一番の理由は、左手小指が疲れるから(笑)

というわけで私は普段 vi (vim) を使っているのですが、設定を少し弄れば作業が快適になりますよ、という vimrc を晒そうと思います。vi の設定に限ったことではありませんが、こういう設定ファイルは凝れば凝るほど設定自体が複雑になって何を設定したのかわかりにくくなりますので、 zshrc のときと同様コンセプトはシンプルで使いやすくです。

設定の意味についてはこれから数回に分けて書いていこうと思います。設定ファイルの " で始まる部分はコメントですが、英文についての文法的な正確性は保証しません(笑) vimrc の設定パラメータは、パラメータ名から動作を連想するのが難しい名前のものがあるので、補足説明みたいな感じであっちこっちから拾ってきた英文を切り貼りしています。設定を修正するたびにマニュアルを読み直すのは手間がかかりますからね。

参考にしているサイトはこちら。
vim マニュアル vim マニュアルです。 名無しのvim使い 基本設定からプラグインの解説まで、とにかく情報量が多く参考になります。

【関連】
vimrcvim 設定 - vi 互換 -vim 設定 - 編集 -vim 設定 - 画面表示 -vim 設定 - 検索 -vim 設定 - 補完 -

設定ファイルをハイライトしてブログに載せたい

ブログ書くときに Linux のシェルスクリプトや設定ファイルの内容をハイライト表示して綺麗に載せようとして色々調べてみたときのメモ。

ブログで利用されているものとしては SyntaxHighlighter というものが有名らしいですね。私も試してみて確かにソースコードは綺麗にハイライトされるんですがどうしても気に入らない点が一つ。それは・・・
設定ファイルだとうまいことハイライトされない! まあ当たり前なんですけどね。

というわけで、他のやり方を模索してみて結局 vi (vim) の機能を使うことにしました。ブログに載せたい設定ファイルを vim で編集して以下の手順で HTML 化します。



設定に HTML オプションを追加
vim のコマンドラインモードで HTML のオプションを設定します。 let html_use_css=1 パラメータ名の通りですが、 html_use_css を設定することで CSS と本文が分割されます。頻繁に使うようであれば .vimrc に書いておくといいですね。


HTML 変換
コマンドラインモードで TOhtml と入力してください。 TOhtml 画面が上下に分割されて、上画面に HTML 化されたコードが出力されます。

例えば、 vim でこんな感じのファイルを編集したとします。 setnocompatiblesyntaxon"set autoindentlet html_use_css=1 これを TOhtml で HTML 化するとこんなコードが出力されます。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>~/.vimrc.html</title> …

zsh 番外編 - tetris -

これから zsh 始めようとする人へのおすすめ zshrc で書きましたが、 zsh はシェルの中でテトリスができます。というわけでやり方をば。
# autoload -U tetris # [M-x] execute: tetris_ [M-x] のところは、メタキー押して x を入力してください。(私の端末だと [esc] 押してから x キーになります。)execute: と表示されたら tetris と入力するとゲームが始まります。
# | | Score: 1 | | | ** | Game parameters: 11x20, 2.5Hz | ****** | | | Keys: left: a j | | rotate: s k | | right: d l | | drop: space | | quit: q | | | | | | | | | | |() () () ()() | |()()() ()()()()()()| |()()()()()()() ()()()| |()()() ()()()()()()| |()()()() ()()()()()()| |() ()()()()()()()()()| +----------------------+ 慣れないとけっこう難しいです。ゲーム中は q でゲームから抜けてプロンプトに戻りますので仕事中にこっそりやるにはもってこいですね(笑)


【関連】
zshrczsh 設定 - プロンプト -zsh…

zsh 設定 - エイリアス -

頻繁に利用するコマンドに短縮名(別名)をつける設定です。
# aliasalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'alias vi='vim'alias -g G='| grep'alias -g L='| less'alias -g H='| head'alias -g T='| tail'alias -g S='| sort'alias -g W='| wc'alias -g X='| xargs'

エイリアスalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'alias vi='vim' まあ、この辺は特に説明することもないと思います。Linux の bash だと rm, cp, mv の設定は .bashrc にデフォルトで書いてありますね。なんとなく .zshrc にも書いています。


グローバルエイリアスalias -g G='| grep'alias -g L='| less'alias -g H='| head'alias -g T='| tail'alias -g S='| sort'alias -g W='| wc'alias -g X='| xargs' alias -g でグローバルエイリアスという特殊なエイリアス定義になります。通常のエイリアスはコマンドラインの最初のワードが解釈されるのですが、グローバルエイリアスはコマンドライン中のどこでも展開されます。

例えば、下のコマンドを入力したとします。
# grep "sshd.*session opened" /var/log/secure W -l すると、コマンドライン上の W が | wc に展開されて下のコマンドを実行することと同じになります。
# grep "sshd.*session opened"…

zsh 設定 - プロンプト -

プロンプトの見た目をカスタマイズします。人によって個性が出るところですね。
# prompt#autoload -U colors#colors PROMPT='[%n@%m]# ' RPROMPT='[%d]'

プロンプトPROMPT='[%n@%m]# ' RPROMPT='[%d]' おそらくシェルをカスタマイズしはじめたときに真っ先に設定いじるところじゃないですかね。私も昔は凝ったものに設定してましたが結局上のようなシンプルなものに落ち着きました。 PROMPT でホスト名とユーザ名、 RPROMPT でカレントディレクトリを出力しています。 PROMPT は画面左端、 RPROMPT は画面右端に出力されます。 [root@localhost]# [/root] プロンプトは他にも種類がありますが、普段あまり目にすることはないので特に設定は不要です。以下簡単に説明します。 PROMPT2, RPROMPT2 コマンドが複数行になった時に表示されるプロンプトです。 PROMPT3 selece 文を使った時に表示されるプロンプトです。 PROMPT4 よくわかりません。見たことがありません。 SPROMPT correct で訂正の候補を出すときに表示されるプロンプトです。
プロンプトに色付けたりもできます。以下のような設定に変えることで・・・ PROMPT='[%F{magenta}%B%n%b%f@%F{blue}%U%m%u%f]# ' RPROMPT='[%F{green}%d%f]' こんな感じの表示になります。 [root@localhost]# [/root] ただし、色々デコろうとすると PROMPT の設定自体が一見して理解し難くなり次に設定を変えようとするときに結構大変ですので、シンプルなものをおすすめします。

#autoload -U colors#colors この2行は色設定に凝っていた時の名残です(笑)


プロンプトで利…

zsh 設定 - 履歴 -

昔やった作業を流用することで楽をしようという設定になります。
# history HISTFILE=~/.zsh_history HISTSIZE=10000 SAVEHIST=10000setopt hist_ignore_dups setopt share_history setopt auto_pushd setopt pushd_ignore_dups

コマンド履歴HISTFILE=~/.zsh_history HISTSIZE=10000 SAVEHIST=10000setopt hist_ignore_dups setopt share_history HISTFILE 履歴を保存するファイルを指定します。 HISTSIZE メモリ上に保存される履歴の数。(history コマンドで確認できるやつ) SAVEHIST HISTFILEで指定したファイルに保存される履歴の数。 hist_ignore_dups 既に履歴にあるコマンドを重複して記録しない。 share_history 端末間の履歴を共有する。 このあたりの設定は 漢のzsh コラムの 同じことを2度するなんて…… 自分の過去は利用しましょう をそのまま拝借しております。
便利なのは share_history です。一方の端末でマニュアル確認しながらもう一方でコマンド実行するというように、複数端末を立ち上げて作業することは結構あると思いますんで是非設定しておきましょう。


移動履歴setopt auto_pushd setopt pushd_ignore_dups auto_pushd は cd で移動した場所を記録して後で呼び出せるようにするものです。 pushd_ignore_dups は重複している移動履歴を記録しないようにします。 cd - まで入力してから [tab] を押すと履歴が表示されますので番号で選択します。
# cd -[tab] 0 -- /etc 1 -- /var/log 何気なく cd を打った後に、さっきまで作業してた深いディレクトリに戻りたい・・・、といったような場合に重宝しますね。


【関連】
zshrczsh 設定 - プロンプト -zsh 設定 - 補完 -zsh 設定 - 履歴 -zsh 設定 - エイリアス -zsh 番外編 - tetris -

CSS 消してもうた・・・

Blogger のテンプレートの動的ビューでいつのまにか「HTML の編集」ができるようになっていたので色々いじっていたら、手動で追加していた CSS を消してしまっていたらしい。。。
ソースコードを載せているものは見栄えが著しく悪くなっていますがそのうち元に戻します。

※ 2012/08/17 追記 ソースコード用の CSS を追加する記事を書きました。
※ 設定ファイルをハイライトしてブログに載せたい