vim

エディタは基本的にvimを使っている。
JavaやC#を書く場合はEclipseなりVisualStudioなりを使うけれども、自分の業務の多くはLAMP環境によるウェブアプリで、その場合vimを使う。
GUIでなくCUIのvimで、手元のPCから端末ソフトでリモートのサーバにアクセスし、サーバ上でvimを起動して、ソースコードを編集している。
vimは多機能で操作が効率的だけれども、vimそのものというより、リモートサーバ上のファイルを直接編集(参照)出来る事が重要だと思っている。

ウェブアプリの開発環境はウェブサーバ・DBサーバ・開発言語とそのライブラリから成る。
本番環境と同様の環境を手元のPCに再現出来ればいいけれど、LAMP環境の場合、寄せ集め的にこれらの要素が構成されている事もあって、構築に手間が掛かり、バージョンを合わせたり、ファイルを本番と同期するように管理するのは難しい。
(特にDBのデータを手元のPCに持ってくるのはセキュリティ的にマズイ場合が多い。)
本番環境のあるサーバ上に開発環境を作るのが手っ取り早く、管理しやすい。

また、IDEを使って、ソースコードはローカルで編集し、それをFTP等でリモートに転送して開発する方法もあるだろうけれど、ウェブアプリ開発で編集(参照)の対象になるファイルはソースコードだけでなく、サーバの設定ファイルやログファイルもある。
このようなファイルはサーバ上で直接編集(参照)する事になる。
さらに、DBを操作するのにIDEやphpMyAdmin等のツールが使えればいいが、そのツールを使えるようにするのに時間がかかるし、セキュリティ等の理由で外部からアクセス出来ない場合もある。

以上のような理由で、端末上ですべての作業を集約すればさまざまなケースに対応出来、自分としては効率的に思える。
そこで端末上で動作をするエディタとしてvimを使っている。

GNU Screen

昔は端末ウィンドウを何枚も開いて作業していたけど、screenを導入して、その必要はなくなった。
自分が感じる一番のメリットは、しばらく作業を休んでる間にPCがスリープモードに入った場合、PCを復帰させるとネットワークが切れてるけれども、サーバに繋ぎ直した際に以前の状態に復帰出来る所。

縦のスプリットが出来る開発版があるけれど、あれは使ってない。スプリット機能自体ほとんど使ってなくて、たまにエディタと(psqlやmysqlといった)DB操作ツールの画面を見比べたい時だけ画面分割してる。

エスケープのキーバインドはCTRL+Sにしてある。
CTRL+Sは通常は端末のロックに割り当ててあるけれど、ロックする必要はないので、.bashrcの中でsttyで殺してある。
このキーバインドはscreenを使い始めた時に標準のCTRL+Aは行頭移動に使うので他にないか?と考えて思いついたんだけれど、これってベストプラクティスじゃないだろうか。

その他、変わった使い方はしてないけれど、shelltitleとbashのPROMPT_COMMANDを使って、ウィンドウタイトルが自動的にそのウィンドウで今いるワーキングディレクトリの一部になるようにしている。
ステータスラインは白とブルーにしてる。この色の組み合わせが好きだ。

screen

.ssh/authorised_keys?

自分は10年、ウェブシステム開発の仕事をしてます。
この仕事を始めて間もない頃の、ある日、ローカルのPCのTeraTermからリモートのLinuxサーバにSSHでログインするのに鍵交換方式を使おうと思い、設定をしてました。
が、何度やっても鍵が通らない。
SSHDのmanを見てもサッパリ分からない。gooやInfoseekで検索しても、ろくな情報がヒットしない(当時Googleはまだなかった、まさにググルの禁止!)。
それで何時間も悩んだ挙げ句、やっと気づいたのが、.sshディレクトリ内に作ったファイルが、authorized_keysではなく、authorised_keysだったという事。つづりが違っただけ。

あれから10年経って、愛用のターミナルソフトはTeraTermからGuevara、そしてPuttyと変わって、今日もSSHでサーバにログインしてviでPHPのコードを書いた(29日に納品しないといけない)。
やってる仕事は大差ないかなと思うけれど・・・。
何も変わってないような、すべてが変わってしまったような!

PostgreSQLしくみ勉強会に参加

先週の土曜日、PostgreSQLしくみ勉強会に参加してきた。

会場の産業技術大学院大学
会場の産業技術大学院大学

2本立てで構成されていて、最初はチューニングの話。
ここに資料がある。
かなり高度な内容で参考になったが、遅刻してしまい、半分くらいしか話が聞けなかったのは今回の反省点。

チューニングの話の後、plploxyとpgbouncerというPostgreSQLのロードバランシング(レプリケーション)の話だった。
事前の内容説明で、タイトルが 『 plploxy + pgbouncerについて(ハンズオン) 』 となっていて、ハンズオンって何だろう?って思っていたのだが、会場には備え付けのPCにPostgreSQLを用意されており、講師の人の説明を受けながら、実際にplploxyやpgbouncerをインストール、設定してみる形式だった。
こういうのをハンズオンというのか。
会場で配布されたOpenSolarisのブータブルCDでSolarisを起動し、そこから仮想OS環境のCentOSを起動して、PostgreSQLにアクセスするという複雑な構成。
講師の人は、どこそこのファイルに実行権を与えてシェルスクリプトを実行しろとか、普通にターミナルの操作を要求してくるので、諦めて話しを聞いてるだけの参加者も結構いたような。
講師は、桑村潤さんという方で、そう言えば名前を聞いたことがあるなと思ったが、マンモス本書いてた人なのか。
桑村さんがターミナルの操作をする様子は、前面の大きなプロジェクターに映し出されてたんだけど、テキストファイルを閲覧するのに(lessやlvじゃなくて)moreを使っていた。うーん、いまどきmoreか・・・と。
伝統的なUNIX使いなんでしょうね。