PostgreSQL Study (5)

今回はディレクトリ編の最後、ログなどのデータが格納されるディレクトリについて。
とはいえパッケージでインストールしているので 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 で使える便利な Like 演算子

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 になる

PostgreSQL Study (4)

今回はテーブルなどのデータが格納されるディレクトリについて。
とはいえパッケージでインストールしているので 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/

PostgreSQL Study (3)

今回はコマンド(実行ファイル)が格納されるディレクトリについて。
とはいえパッケージでインストールしているので 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が免除』とのことでした。

PostgreSQL Study (2)

今回は設定ファイルが格納されるディレクトリについて。
とはいえパッケージでインストールしているので 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

Raspberry Pi と LuaJIT で 3D してみる (1)

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 が表示されます。

WRITE_0709_01

[Q]キーで終了します。 [Ctrl]+[C]で終了した場合、コンソールの設定が変更されたままになります。 そのときは、エコーされませんが、次のように term.lua を実行すると元に戻ります。

$ ./term.lua

今回はここまで。

PostgreSQL Study (1)

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 パッケージのインストール時に 追加されたファイルとディレクトリの一覧は こちらを参照してください。

次回は、主なディレクトリについて見ていきます。

Google サイト内検索

Amazonアソシエイト