2010年12月31日金曜日

2010年大晦日。叔父さんになった日

毎年恒例の地元で迎える大晦日。今年の飯田は雪が少ない。おかげで御大の館へも行きやすかった。

ちなみに御大の館は年末年始は休まず10:00から営業するみたい。帰省組にとってはありがたい。ただ2時過ぎになると混みだすので、午前中に行くのがおすすめ。

その御大の館から帰ってきたら、うちの兄貴からメールがきた

「子供が生まれました。なんかゴリラみたいやけども・・・」

私が叔父さんになった瞬間です。4人兄弟初の子供なだけにうちの親は大喜び。今後もあーだこーだと兄貴へ連絡がいきそう。・・・頑張れ兄上!

さてさて、そんなイベントがあったので当然夕食はその話題でもちきり。といっても4人兄弟のうち私しか地元の帰ってないけど。

そして紅白を聞きながら、一年を振り返ってみる。

今年は、今までの延長線上を普通に走ってきた。努力してないわけではないし、成長してないわけでもない。これでいいのか悪いのか?そんな感じ。

来年は、いろんな変化があるし、たくさんの出会いもありそうなので今から楽しみ。

そして、「走りきった」と自信を持ってブログに書ける、そんな一年にしたい。

 

<関連記事>

2008年 大晦日
2009年大晦日

2010年12月21日火曜日

「SEを極める 50の鉄則」を読んだ

@ITの記事で紹介されていたので、読んでみた。

作者がSystem Engineerを経験している方なだけあって、共感できる部分が多数あった。自分がお客様とのやりとりの中で感じたことやSEの仕事をしていく上での「大事なこと」をうまくまとめてくれているので、「やっぱり、そうだよねー」と自分の今までの考え方が肯定されているみたいで嬉しくなった。

自己分析するにも役立つし、足りない部分も気付かせてくれた。

特に

仮に60歳まで働くとすると、7~8年というのはまだ20%にすぎない。まだ80%もある。

というのは、「あ、俺まだまだピヨッコじゃん」と楽になったし、まだまだ挑戦できるんだという意欲にもなった。

システムエンジニアを目指す人も、活躍している人にもお勧めできる一冊。

 

< 2012/08/31 Modified >
今のSingaporeの会社で肩書きを「System Engineer」にしてもらいながら、ふと「System Engineer」って英語圏で通じるのか?と思って調べてみた。

一般的ではないみたいなので、聞かれても英語で答えれるようにしといた方がよさそう。

2010年12月16日木曜日

負荷分散とロードバランサ

高負荷が予想されるサービスを提供するときに、どのようなハード構成にしたらいいか悩んだときのメモ。

下記ブログを読めば一通り分かる。

【LAMPで作るソーシャルアプリの負荷対策 ~アプリとインフラの調和のテクニック~】

APCを利用して、DBへのアクセスを軽減するような対策はしたことあるけど、ロードバランサを使って複数サーバーで負荷分散をしたことはない。

Linuxの場合はLinux Virtual Server(LVS)という技術を使って、比較的簡単に実現できるみたい。次回はVMwareを利用して、実際にやってみようと思う。

 

<関連記事>

【PHPチューニング】APCをインストールしてWordpressを高速化

2010年12月14日火曜日

iTunesで曲管理(アルバムアートワークの入手)

iPod touchを使って曲を聞くようになったので、音楽ファイルの管理はiTunesに任せようとしたときのメモ。

アルバムアートワークがiTunes経由で取得できない場合は「Broadway」というソフトを使うとGoogle画像検索から取得して設定することができる。

しかも歌詞も検索してiTunesに設定できるので、iPod touchで表示できて(何となく)幸せになれる。

iTunesのお供に~ちゅねとも」でも可能みたいだけど、今のところ出番はない。

今までの曲を整理しながら、ちょっとずつ更新していく予定。

ちなみにplayerとしては「Quintessential Media Player」の方が好み。たぶんEnhanceしているのかな?QMPでAAC(m4a)ファイルを聞くようにするには、下記からプラグイン(dll)ダウンロードしてきて、pluginsフォルダに置く。

RAREWARESのMP4 input plugin for QCD Player

 

<関連記事>

MP3音楽ファイルのタグをネット経由で取得してきれいにする

2010年12月8日水曜日

【Windows】システム構成とDirectX診断のコマンドメモ

使いたいときに忘れているWindowsのユーティリティを起動するコマンドメモ。

環境はWindows XP。スタート → ファイル名を指定して実行

dxdiag DirectX診断ツール
DirectXのバージョンを確認したいときに使う。
ビデオドライバの情報やサウンドドライバの情報がまとまっているので見やすい
msconfig システム構成ユーティリティ
サービスやスタートアップに登録されているソフトの制御ができる。タスクマネージャに表示されるけど、サービスに登録されていない怪しいソフトの自動起動を停止するときに使う。

最近はゲームしないし、怪しいソフトを使うこともなくなっているので使う機会がない。

<関連記事>

スタートアップで起動するアプリを停止する方法

2010年12月1日水曜日

猫まっしぐら!?ねこ用DVD「ネコミル」

将来、猫を飼えたときに見せてみたい。

ネコが見るDVD ネコミル

レンタルで試してみるのもあり。

pg_rmanを使ってPostgreSQLを別サーバーにバックアップ

PostgreSQLのバックアップに便利な方法はないものかと、試しにpg_rmanをコンパイル、インストール、設定したときのメモ。環境はCentOS5

pg_rmanはPostgreSQLのデータを簡単なコマンドでバックアップ・リストアできるツール。ダウンロードはGoogle Codeのプロジェクトページから。

インストールの方法は公式のwikiにもあるし、ここのサイトも分かりやすい。

以下自分でやったコマンドのメモ。pg_configにパスが通ってないとダメらしいので、パスの追記から。

# vi ./.bashrc
PATH=/usr/local/pgsql/bin:$PATH
export PATH
# source ./.bashrc

もしくはPostgreSQLがインストールされた場所に書き込み権限があればいいので、postgresをownerにする。
# chown postgres. -R /usr/local/pgsql
# su postgres

コンパイルしてインストール。

# tar xzvf pg_rman-1.1.2.tar.gz
# cd pg_rman 
# make USE_PGXS=1
# make USE_PGXS=1 install

環境変数を設定

# su postgres
$ cd
$ vi ./.bashrc
export PGDATA=/usr/local/pgsql/data
export BACKUP_PATH=/mnt/backup/pgsql
$ source ./.bashrc

環境変数が設定できたかどうか確認
$ echo $BACKUP_PATH

pg_rmanを初期化
$ pg_rman init -B  $BACKUP_PATH

WARNING: ARCLOG_PATH is not set because archive_command is empty
INFO: SRVLOG_PATH is set to '/usr/local/pgsql/data/pg_log'

archive_mode=offだとWARNINGが出るみたい。postgresql.confを編集。pg_logディレクトリも作ってログの設定もする。

$ mkdir /usr/local/pgsql/data/pg_log
$ vi /usr/local/pgsql/data/postgresql.conf

archive_mode = on
archive_command = 'cp %p /usr/local/pgsql/data/pg_archive/%f'

log_destination = 'stderr'
logging_collector = on
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 10MB

再起動してもう一度やってみる。
$ exit
# /etc/rc.d/init.d/postgresql restart
# su postgres
$ pg_rman init -B  $BACKUP_PATH

INFO: ARCLOG_PATH is set to '/usr/local/pgsql/data/pg_archive'
INFO: SRVLOG_PATH is set to '/usr/local/pgsql/data/pg_log'

試しに全体バックアップをとってみる。
$ pg_rman backup --backup-mode=full --with-serverlog

INFO: database backup start
NOTICE:  pg_stop_backup complete, all required WAL segments have been archived

検証
$ pg_rman validate

INFO: validate: 2010-11-26 13:22:35

バックアップ一覧表示
$ pg_rman show

大丈夫みたい。

次にcronで定期実行するためにpg_rman設定ファイルにオプションを追記
$ vi /mnt/backup/pgsql/pg_rmain.ini

ARCLOG_PATH='/usr/local/pgsql/data/pg_archive'
SRVLOG_PATH='/usr/local/pgsql/data/pg_log'

BACKUP_MODE = F
COMPRESS_DATA = YES
KEEP_ARCLOG_FILES = 10
KEEP_ARCLOG_DAYS = 10
KEEP_DATA_GENERATIONS = 3
KEEP_DATA_DAYS = 120
KEEP_SRVLOG_FILES = 10
KEEP_SRVLOG_DAYS = 10

cronの設定
$ exit
# vi /etc/cron.d/postgresql

MAILTO=""

0 4 * * * postgres source /home/postgres/.bashrc; /usr/local/pgsql/bin/pg_rman backup; /usr/local/pgsql/bin/pg_rman validate

4:00にpostgresの環境変数を読み込んでバックアップ+検証を実行する。cronのログは/var/log/cronに出力される。

その他、ネットワーク上の別サーバーにバックアップを取りたい場合はNFSを使ってマウントするのが簡単。前の記事を参考に。

 

<関連記事>

【Linux】NFSv4を使ってサーバー間で共有フォルダをmountする
【PostgreSQL】pgpool-Ⅱでレプリケーション、インストールと設定
【Linux】PostgreSQL 8.3.3のコンパイル→インストール→設定

PostgreSQL 9.0.1でレプリケーションを設定

PostgreSQL 9.0からレプリケーションの機能がネイティブで実装されたので試しにコンパイルしてインストールしてみた。環境はCentOS

新機能については下記サイトを参考に

PostgreSQL 9.0 の新機能

ソースのダウンロードは本家のサイトから。コンパイルとインストールは前の記事を参考に。レプリケーションの設定はここのサイトを参考にした。

まずはプライマリー(マスター)側の設定。

postgresql.confを変更。各設定項目の意味は公式サイトのドキュメントを参照。
# vi /usr/local/pgsql/data/postgresql.conf

wal_level = hot_standby
archive_mode = on
archive_command = 'cp %p /usr/local/pgsql/data/pg_archive/%f'
max_wal_senders = 3

archive_commandで指定した保存ディレクトリを作成
# mkdir /usr/local/pgsql/data/pg_archive
# chown postgres. /usr/local/pgsql/data/pg_archive

pg_hba.confにレプリケーション接続許可するIPの範囲を設定
# vi /usr/local/pgsql/data/pg_hba.conf

host replication all 192.168.100.0/24 trust

これで再起動
# /etc/rc.d/init.d/postgresql restart

 

次にスタンバイ(スレイブ)側を設定

postgresql.confをプライマリーと同じように編集して無事起動することを確認。

# vi /usr/local/pgsql/data/postgresql.conf
# mkdir /usr/local/pgsql/data/pg_archive
# chown postgres. /usr/local/pgsql/data/pg_archive
# /etc/rc.d/init.d/postgresql restart

ログファイルを監視していれば何が起きているか分かりやすい
# tail -f serverlog

次はスタンバイになる設定。
# vi /usr/local/pgsql/data/postgresql.conf

host_standby = on(2011/10/03 修正)
hot_standby = on

プライマリー情報をrecovery.confに登録する
# vi /usr/local/pgsql/data/recovery.conf

standby_mode = 'on'
primary_conninfo = 'host=192.168.0.1 port=5432 user=postgres'
restore_command = 'cp /usr/local/pgsql/data/pg_archive/%f %p'
trigger_file = '/tmp/trigger_file'

これでサーバーを再起動する前にdataディレクトリをプライマリーと同期しておく必要がある。参考サイトを同じようにコピーすればできると思うけど、タイムアウトしたのでまた今度。

ちなみに8.4系以前でバックアップを取るには、pgpoolを使ったり、WAL(Write Ahead Logging)の設定をしたり、pg_rmanを使うなりする。

あとpgAdmin3にレプリケーションの項目があって、Slony-Iという仕組みを導入するとレプリケーションが構築できるみたい。また設定が複雑そう・・・。

(大分分かりやすくなったと思うけど)まだNFSで別ドライブをマウントして、スクリプトでバックアップする方がお手軽で分かりやすい。

 

<関連記事>

Related Posts Plugin for WordPress, Blogger...

Blog Archives