今回はディレクトリ編の最後、ログなどのデータが格納されるディレクトリについて。
とはいえパッケージでインストールしているので
Ubuntu ベースの話になります。
Ubuntu では基本的にログファイルは /var/log の直下か 配下にパッケージ名のディレクトリで格納されます。 PostgreSQL の場合 /var/lib/postgresql になります。
/var/log/postgresql
設定ファイルやデータのディレクトリのように データベースクラスタのサブディレクトリはありません。 /var/log/postgresql の直下にログファイルがあります。
$ ls -F /var/log/postgresql
/var/log/postgresql/postgresql-9.1-main.log
代わりにログファイルのファイル名に "9.1-main" のようにデータベースクラスタと同じキーワードが入っています。 (ログファイル名は設定で変更できます)
VBA(VB) には文字列を比較する Like という演算子があります。 これを使用すると簡単なパターン検索なら正規表現や文字列関数を使用せずに 済ませることができます。
If "abc" Like "a??" Then ... ' ←True
[参考サイト]
Excel(エクセル)VBA入門:Findメソッド,Like演算子を使った検索
# で数字とマッチさせることができますが 全半角問わないので、厳密に半角数字をチェックする時は 次のように [] を使用します。
If "3" Like "#" Then ... ' ←True If "4" Like "#" Then ... ' ←これも True になる If "3" Like "[0-9]" Then ... ' ←True If "4" Like "[0-9]" Then ... ' ←これは False になる
今回はテーブルなどのデータが格納されるディレクトリについて。
とはいえパッケージでインストールしているので
Ubuntu ベースの話になります。
Ubuntu では、/var/lib/postgresql 以下に格納されます。
/var/lib/postgresql
Ubuntu の場合、このディレクトリの直下には 前々回の設定ファイルと同様に データベースクラスタごとのサブディレクトリがあります。
/var/lib/postgresql/9.1/main
$ ls -F /var/lib/postgresql 9.1/ $ ls -F /var/lib/postgresql/9.1 main/ $ ls -F /var/lib/postgresql/9.1/main base/ pg_stat_tmp/ postmaster.opts global/ pg_subtrans/ postmaster.pid pg_clog/ pg_tblspc/ server.crt@ pg_multixact/ pg_twophase/ server.key@ pg_notify/ PG_VERSION pg_serial/ pg_xlog/
今回はコマンド(実行ファイル)が格納されるディレクトリについて。
とはいえパッケージでインストールしているので
Ubuntu ベースの話になります。
initdb や vacuumdb、psql など PostgreSQL の主なコマンドは 以下のディレクトリに格納されます。
/usr/lib/postgresql/9.1/bin
$ ls -F /usr/lib/postgresql/9.1/bin
clusterdb* pg_basebackup* pg_upgrade*
createdb* pg_controldata* postgres*
createlang* pg_ctl* postmaster@
createuser* pg_dump* psql*
dropdb* pg_dumpall* reindexdb*
droplang* pg_resetxlog* vacuumdb*
dropuser* pg_restore*
initdb* pg_test_fsync*
複数のバージョンが 1 つのマシンで稼動することがあるため コマンドも複数のバージョンが格納できるように サブディレクトリが分かれます。
ただ、実際は /usr/lib/postgresql/9.1/bin には パスが通っておらず /usr/bin 以下にあるリンクファイルを起動することになります。
/usr/bin
$ ls -F /usr/bin (PostgreSQL 関連のみ抜粋) clusterdb@ pg_basebackup@ pg_lsclusters@ createdb@ pg_config@ pg_restore@ createlang@ pg_createcluster@ pg_upgradecluster@ createuser@ pg_ctlcluster@ psql@ dropdb@ pg_dropcluster@ reindexdb@ droplang@ pg_dump@ vacuumdb@ dropuser@ pg_dumpall@ vacuumlo@
このように /usr/bin/ 以下のコマンドはリンクになっています。
(例外として initdb はリンクがありません)
$ readlink -f /usr/bin/vacuumdb /usr/share/postgresql-common/pg_wrapper
また、各コマンドは直接 /usr/lib/postgresql/9.1/bin 以下の ファイルにリンクするのではなく 以下のファイルにリンクしています。
/usr/share/postgresql-common/pg_wrapper
pg_wrapper は Perl のスクリプトです。
$ file /usr/share/postgresql-common/pg_wrapper
/usr/share/postgresql-common/pg_wrapper: Perl script, ASCII text executable
前述したように 1つのマシン内で複数のバージョンが稼動することができるため 一旦この pg_wrapper で、コマンドを受けて、環境変数などから適切なバージョンの コマンドを起動するようになっているわけです。
もしかして参考になる人もいるかもしれないの書いておきます。
情報処理技術者試験は、高度試験に合格するか、高度試験の午前Iに通過すると その後2年間、午前Iを免除してもらえます。
『午前Iが免除の試験で合格した』場合も その試験から2年間免除されるのか気になりました。
案内には「高度試験を合格した」と書いてあるだけなので いけそうな気はしたのですが 『午前Iを受けてない試験』で次の午前Iが免除になるのも 不思議な気がしたわけです。
情報処理技術者試験センターに電話で質問です。
結果は『免除の試験とか関係なく、高度試験に合格したら 2年間午前Iが免除』とのことでした。
今回は設定ファイルが格納されるディレクトリについて。
とはいえパッケージでインストールしているので
Ubuntu ベースの話になります。
Ubuntu では基本的に /etc の直下か 配下にパッケージ名のディレクトリで格納されます。
/etc/postgresql
ただし PostgreSQL の場合 /etc/postgresql の下には (インストール時点では) 9.1 というサブディレクトリしかなく さらにその中には main というサブディレクトリしかありません。
/etc/postgresql/9.1/main
そして /etc/postgresql/9.1/main の下に 設定ファイルが格納されています。
$ ls -F /etc/postgresql/9.1/main/
environment pg_hba.conf postgresql.conf
pg_ctl.conf pg_ident.conf start.conf
この 9.1/main ですが、 これらは PostgreSQL の“データベースクラスタ”を示しています。
[参考サイト]
データベースクラスタの作成 - PostgreSQL 9.1.5文書
データベースクラスタは、ロールやテーブルスペースを共有するデータベースの塊です。 Ubuntu では、1つのサーバ内に複数のデータベースクラスタを作成できるように あらかじめ設定ファイルなどのディレクトリにデータベースクラスタの サブディレクトリを作成してくれているわけです。
パッケージのインストール時に データベースクラスタを作成してくれるため 1つしかデータベースクラスタを使用しない場合でも 最初から 9.1/main のようにデータベースクラスタを識別するディレクトリになっています。
ちなみにインストール時にデータベースクラスタを自動で作成しないディストリビューションや コンパイルしてインストールした場合や、追加でデータベースクラスタを作成する場合は 上記参考サイトに記載してあるように initdb コマンドを使用して データベースクラスタを作成します。
$ initdb -D /usr/lib/postgresql/9.1/main
jun さんが Raspberry Pi 上で動く LuaJIT の 3D ライブラリを作られたので 3D で 遊んでみたいと思います。
[参考サイト]
Raspberry Pi メモ (20) LuaJITでお手軽3D (2) LjESリリース - Jun's homepage
LuaJIT や OpenGL ES2 についても書かれてますので 詳しくは次のページなんかを参照してください。
[参考サイト]
Raspberry Pi メモ (19) LuaJITでお手軽3D (1) - Jun's homepage
Raspberry Pi メモ (7) OpenGL ES2 (1) 概要 - Jun's homepage
とりあえず動かしてみます。
まず Raspberry Pi を起動して HDMI からの出力を TV などに出しておきます。
次に LuaJIT の 3D ライブラリをダウンロードして 解凍します。
$ cd /tmp $ wget http://www.mztn.org/rpi/ljes-1.00.tar.gz $ tar zxf ljes-1.00.tar.gz
$ cd ljes-1.00 $ ls -F COPYRIGHT examples/ LjES/ README test/
examples の中にサンプルがあります。
$ cd examples $ ls *.lua axis.lua donut.lua term.lua demo_shape.lua double_cone.lua truncated_cone.lua demo_spheres.lua sphere.lua
demo_shape.lua を実行してみます。
$ luajit demo_shape.lua
HDMI の出力先に次のような 3D が表示されます。
[Q]キーで終了します。 [Ctrl]+[C]で終了した場合、コンソールの設定が変更されたままになります。 そのときは、エコーされませんが、次のように term.lua を実行すると元に戻ります。
$ ./term.lua
今回はここまで。
PostgreSQL を基本的なことから再確認していきます。
使用する環境は Ubuntu12.10 で PostgreSQL は 9.1 です。
今回はパッケージのインストールなので かなり Ubuntu 寄りの話になります。 (Ubuntu 好きなので・・・)
まず、Ubuntu12.10 で [OpenSSH Server] のみを選択して インストールした環境の場合 postgresql パッケージを apt-get すると 次のパッケージがインストールされます。
postgresql postgresql-9.1 postgresql-common postgresql-client-9.1 postgresql-client-common libpq5 sgml-base xml-core libxml2:i386 ssl-cert
sgml-base など PostgreSQL 専用じゃないパッケージ以外もあるので それらは先にインストールしてしまいます。
$ sudo apt-get install sgml-base xml-core libxml2 ssl-cert
この状態で postgresql パッケージをインストールします。
$ sudo apt-get install postgresql
すると、次のパッケージが入ります。
postgresql postgresql-9.1 postgresql-common postgresql-client-9.1 postgresql-client-common libpq5
このとき、次のディレクトリが作成されます。
/etc/postgresql /etc/postgresql-common /run/postgresql /usr/share/postgresql /usr/share/postgresql-common /var/cache/postgresql /var/lib/postgresql /var/log/postgresql
次のディレクトリにファイルやサブディレクトリが格納されます。
/usr/bin /usr/lib /usr/sbin /usr/share/doc /usr/share/man
postgresql パッケージのインストール時に 追加されたファイルとディレクトリの一覧は こちらを参照してください。
次回は、主なディレクトリについて見ていきます。