投稿者のアーカイブ

検査いってきました

3/19(金)、休みをもらって検査に行っていきました。
昨年、手術・入院がありまして退院後1年の定期検診です。

「問題なし」とのことで一安心です。

Facebooktwitterlinkedintumblrmail

FlashDevelop 3.1.0 RTM がリリースされてました

4/21にリリースされたようです。

FlashDevelop.jp の記事
http://flashdevelop.jp/FlashDevelop3.1.0_RTM

ダウンロードできる場所
http://www.flashdevelop.org/community/viewtopic.php?f=11&t=6415

なんと、日本語での解説!
馬鹿全 – FlashDevelop 3.1.0 RTM リリース

私は今日 flex_sdk_3 から flex_sdk_4 に切り替えていて、たまたまFlashDevelop の本家を見に行ったらリリースされていて大喜び!って感じだったのですが、日本のサイトでこれだけ情報が出ているのはうれしいですね。しかも、FlashDevelop自体が日本語ローカライズされている!

インストールの記事でも書こうかと思ったのですが、前のバージョンでは必要だった文字コードがらみの設定も必要なくなり(デフォルトがUTF8のBOMなしになっているのでそのままで普通に使えます)、特記するようなこともなくなっていましたのでやめときます。FlashDevelop.jp をご参照くださいってことで。

Facebooktwitterlinkedintumblrmail

yum の Proxy 設定でハマった

前回の Mac の Web 共有で Proxy で設定した Macbook 経由で CentOS 5 のサーバーで yum を使おうとして少しハマったのでメモ。

「export で proxy 設定してもダメ!」だったのでした。

http_proxy やら ftp_proxy やら設定しまくって、やっぱりだめで、ところが yum.conf を編集したらあっさり、さっくり、うまくいってしまったのでした。一時的に繋ぎたいだけなので yum.conf を触りたくなかったのですがしょうがないですね。

一般的にそうなのかはわからないのですが、そういうことがあったということで。

ちなみに、apt の場合は export で http_proxy (と必要なら ftp_proxy )環境変数を設定すれば OK。

Facebooktwitterlinkedintumblrmail

揮発性の脳

Blogに書けずにいたら書こうと思っていた内容が揮発しました。
メモしときたかったVimのコマンドとか。 困りました。

昔から記憶力がないのですが最近また悪化したような気がします。

言い訳&気分転換でした。

この前の投稿SuppAppにつづいてイロイロ進行中です。お楽しみに。

Facebooktwitterlinkedintumblrmail

私的 Vim メモ(検索編)

Vim は大抵の環境で使える上に使いこなすと強力なのですが、vi として(というか h, j, k, l, i, a, ESC, x, dd, p, :w, :q, :q!, ZZ 大体これくらいで全てを済ますという vi としてもあまりつかいこなせてないスタイルで)しか使っていなかったので悔い改めて修行中です。

ちょっと慣れてもすぐに忘れてしまうということを繰り返して今がある。そんなわけで自分用にメモるのです。

検索

  • /[検索文字列]
    下方向に、[検索文字列]を検索する。

  • ?[検索文字列]
    上方向に、[検索文字列]を検索する。

  • *
    カーソル位置の単語で下方向に検索する。

  • #
    カーソル位置の単語で上方向に検索する。

  • n
    順方向に次の検索結果に移動する。

  • N
    逆方向に次の検索結果に移動する。

  • :nohlsearch
    検索結果表示のハイライトを消す。

Facebooktwitterlinkedintumblrmail

Mac の Web 共有で Proxy

インターネットからは普段隔離しているお客様のサーバーに yum でソフトを入れたいという状況になりました。メンテナンスなどでインターネットに接続しなければならないときには別ネットワークのLANケーブルと差し替えるという運用なのですが、クライアントに影響が出るためお客様がクライアントを使用している時間帯には作業ができません。

しょうがないので「夜間に作業させてもらうようにお話しようかと思います」と弊社、峰松に相談したら「インターネットに接続したノートPCに Proxy 立ててネットワークに接続させてもらってそれ経由でインストールしたらどうかな?」と。

その手があったか!

ってなわけで、私の Macbook は3G回線でインターネットに接続できるのでコイツに Proxy を立てることします。Mac だと Web 共有で Apache2 が起動するのでこれを利用することにしました。

設定ファイル、/etc/apache2/httpd.conf を眺めるとProxy関係の module はロードされるようになっていました。

LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so

追加の必要はなさそう。

最後に他の設定ファイルを読み込む

Include /private/etc/apache2/other/*.conf

という記述がありましたので Proxy の設定、 /private/etc/apache2/other/proxy.conf を作成しました。/private/etc/apache2/ と /etc/apache2/ って同じ場所を指してるみていですね。

proxy.conf はこんな感じ。


ProxyRequests On
ProxyVia On


Order deny,allow
Deny from all
Allow from 192.168.1


192.168.1.* からフルオッケーという漢らしい設定です。「システム環境設定」→インターネットとワイヤレスの「共有」で Web 共有を起動(起動済みの場合は再起動)すると Proxy が有効になります。

漢らしすぎるので普段はこの設定が読み込まれないように proxy.conf_ とかにしておいたほうがいいですね。Web 共有自体普段は切っていますが 、念のため。

Facebooktwitterlinkedintumblrmail

IronPython Console をもっと便利に(TABによる補完とか)

IronPyhton の開発環境を構築しています。

お客様に .NET Framework 4.0 が必要な提案をしておりまして、しかも、コンパイルが必要な言語はイマイチ要件にあわない。初めは IronRuby でやろうかと思ったのですが、調べたところ日本語の扱いに不安がある。ここはそろそろ安定しているであろう IronPython かな?というわけ。

さて、本題。インタラクティブシェルを便利にする、ipy.exe おすすめの起動時オプションをご紹介。
どんなオプションがあるのかはこんな感じで確認できます。

C:\Users\murave>"C:\Program Files\IronPython 2.6 for .NET 4.0\ipy.exe" -?
Usage: ipy.exe Usage: ipy [options] [file.py|- [arguments]]

Options:
 -3                       Warn about Python 3.x incompatibilities
 -c cmd                   Program passed in as string (terminates option list)
 -D                       Enable application debugging
 -E                       Ignore environment variables
 -h                       Display usage
 -i                       Inspect interactively after running script
 -m module                run library module as a script
 -O                       generate optimized code
 -OO                      remove doc strings and apply -O optimizations
 -Q arg                   Division options: -Qold (default), -Qwarn, -Qwarnall,
-Qnew
 -s                       Don't add user site directory to sys.path
 -S                       Don't imply 'import site' on initialization
 -t                       Issue warnings about inconsistent tab usage
 -tt                      Issue errors for inconsistent tab usage
 -u                       Unbuffered stdout & stderr
 -v                       Verbose (trace import statements) (also PYTHONVERBOSE=
x)
 -V                       Print the version number and exit
 -W arg                   Warning control (arg is action:message:category:module
:lineno)
 -x                       Skip first line of the source
 -X:AutoIndent            Enable auto-indenting in the REPL loop
 -X:ColorfulConsole       Enable ColorfulConsole
 -X:CompilationThreshold  The number of iterations before the interpreter starts
 compiling
 -X:Debug                 Enable application debugging (preferred over -D)
 -X:EnableProfiler        Enables profiling support in the compiler
 -X:ExceptionDetail       Enable ExceptionDetail mode
 -X:Frames                Enable basic sys._getframe support
 -X:FullFrames            Enable sys._getframe with access to locals
 -X:GCStress              Specifies the GC stress level (the generation to colle
ct each statement)
 -X:LightweightScopes     Generate optimized scopes that can be garbage collecte
d
 -X:MaxRecursion          Set the maximum recursion level
 -X:MTA                   Run in multithreaded apartment
 -X:NoAdaptiveCompilation Disable adaptive compilation
 -X:PassExceptions        Do not catch exceptions that are unhandled by script c
ode
 -X:PrivateBinding        Enable binding to private members
 -X:Python30              Enable available Python 3.0 features
 -X:ShowClrExceptions     Display CLS Exception information
 -X:TabCompletion         Enable TabCompletion mode
 -X:Tracing               Enable support for tracing all methods even before sys
.settrace is called

Environment variables:
 IRONPYTHONPATH    Path to search for module
 IRONPYTHONSTARTUP Startup module

お勧めは、TABキーでのキーワードの補完が有効になる「-X:TabCompletion」、自動でインデントしてくれる「-X:AutoIndent」、コンソールがカラーになる「 -X:ColorfulConsole」あたり。昔はTabCompletion と AutoIndent は設定すると問題もあったのですが(TabCompletion では日本語が文字化けするとか)なおっているようです。

これらのオプション、3年前に買った『オープンソース×Windowsスクリプティング IronPythonの世界』(荒井 省三)という本で知ったのですが、いまだにこの本ぐらいしか参考書がないみたい。

私は、スタートメニューの IronPython Console のショートカットをコピーしてリンク先に上記のオプションを追加したショートカットを作ってます。便利ですよ。

切れちゃってますが、リンク先の内容は「”C:\Program Files\IronPython 2.6 for .NET 4.0\ipy.exe” -X:TabCompletion -X:AutoIndent -X:ColorfulConsole」です。ipy.exe の Path については調整してくださいね。

Facebooktwitterlinkedintumblrmail

Munin で PostgreSQL を監視する

PostgreSQL 大好きっ子なので PostgreSQL を監視するプラグインを追加するんだぜー。

PostgreSQL 監視用のプラグインはパッケージを導入した際にいくつか入ってます。

$ ls -l /usr/share/munin/plugins/postgres*
-rwxr-xr-x 1 root root 5377 2009-10-18 19:53 /usr/share/munin/plugins/postgres_block_read_
-rwxr-xr-x 1 root root 7777 2009-10-18 19:53 /usr/share/munin/plugins/postgres_commits_
-rwxr-xr-x 1 root root 2159 2009-10-18 19:53 /usr/share/munin/plugins/postgres_locks
-rwxr-xr-x 1 root root 6118 2009-10-18 19:53 /usr/share/munin/plugins/postgres_queries_
-rwxr-xr-x 1 root root 7243 2009-10-18 19:53 /usr/share/munin/plugins/postgres_space_

もちろん /usr/share/munin/plugins/ には、PostgreSQL 用だけじゃなくていろんなプラグインが入ってます。いっぱい、いっぱい。

PostgreSQL のコネクション数の監視をするプラグインは残念ながらここにはないので
http://munin-monitoring.org/wiki/plugin-pg__connections
から取ってきました。

こいつも /usr/share/munin/plugins/ に置いて、実行できるようにしておきましょう。

$ sudo chmod +x /usr/share/munin/plugins/pg__connections 

プラグインの設定方法はプラグインのファイルを開いて読むと書いてありますので、そのようにしていきます。

Munin のプラグインは /etc/munin/plugins/ ディレクトリにあるかどうかで管理されています。まずは、取ってきた pg__connections のシンボリックリンクを作成。

$ sudo ln -s /usr/share/munin/plugins/pg__connections /etc/munin/plugins/pg_5432_connections

プラグインのファイルの Usage には pg__connections ってな名前をつけるように書いてありますが、ポート番号にしてみました。このプラグインについてはこの文字列が動作に影響を及ぼすことはなさそうなので何でもいいと思います。

用意されているプラグインからも監視したい対象のプラグインをセットアップ。

$ sudo ln -s /usr/share/munin/plugins/postgres_block_read_ /etc/munin/plugins/postgres_block_read_5432
$ sudo ln -s /usr/share/munin/plugins/postgres_space_ /etc/munin/plugins/postgres_space_5432

この2つにしました。

シンボリックリンクの最後にデータベース名を付けるように書いてありましたがこれらについてもポート番号の5432にしてみました。これらのプラグインでは付けた文字列がグラフのタイトルで使用されるのでちゃんと考えて付けましょう。

ちなみに postgres_block_read_5432 だとグラフのタイトルが「:: Postgres data reads from 5432」となります。postgres_space_5432 の方は「:: Postgres database 5432」となって、データベースの容量に関するグラフのタイトルとしてはイマイチな感じになっちゃいました。

PostgreSQLのプラグインについては設定ファイルに記述がないので設定を追記する必要があります。

$ sudo vi /etc/munin/plugin-conf.d/munin-node

私の実験環境での設定ですが、次のように追記しました。

[postgres_*]
env.PGHOST 127.0.0.1
env.PGPORT 5432
env.PGDATABASE postgres
env.PGUSER postgres
env.PGPASSWORD trust

[pg_5432_connections]
env.dbhost 127.0.0.1
env.dbport 5432
env.dbname postgres
env.dbuser postgres
env.dbpass trust

[postgres_*] は postgres_ が頭に付いているプラグインの設定、すなわち、用意されているプラグインの設定です。
[pg_5432_connections] はパラメータ名なども異なりますし別途書く必要があります。

実験環境の PostgreSQL の 接続設定は 127.0.0.1 からは trust にしています。よって、データベースの接続にパスワードは不要なのですが、何か書いていないとエラーなったので仮に trust としています。

PostgreSQL 側でやらなければならない設定として「postgresql.conf の stats_start_collector = true として統計情報収集器を有効にせよ」的なことも書いてありますが、PostgreSQL 8.3 以降、この設定は削除され、UDP ソケットの作成に成功したら必ず統計情報収集器が起動するようになったようです(http://www.sraoss.co.jp/technology/postgresql/8.3/ 参照)。

あとは Munin-Node を再起動すればOK、と言いたいところですが、実はこれでは動かない場合があります。 libdbd-pg-perl が入っていない場合です。プラグインが PostgreSQL にアクセスするのに使っているのです。
Ubuntu に Munin をインストールする時には入りませんでしたので、libdbd-pg-perl が入っていない場合には別途インストールする必要があります。

$ sudo aptitude install libdbd-pg-perl

こんどこそ、準備OK。Munin-Node を再起動します。

$ sudo /etc/init.d/munin-node restart
 * Stopping Munin-Node
   ...done.
 * Starting Munin-Node
   ...done.

再起動完了。

$ tail -n 20 /var/log/munin/munin-node.log

ってな感じで、 Munin-Node のログを見てエラーが出てないか確認すると良いでしょう。データがないせいで正常動作をしていてもエラーが出ていたりする場合もあります。内容で判断するしかないですね。

しばらく待つと、こんな感じに PostgreSQL のリソースのグラフが追加されたページが生成されます。

Facebooktwitterlinkedintumblrmail

メモ:Linux::Inotify2 でディレクトリを監視して処理

Linuxサーバー上のディレクトリにファイルが作成されたら処理するってのをやりたくて、調べてたら cpan の Linux::Inotify2 が良さそうだったので試してみました。

モジュールをインストール(cpanminusを使用)。イベントループに AnyEvent を使うといいらしいので、そちらも。

$ cpanm Linux::Inotify2
$ cpanm AnyEvent

指定ディレクトリにファイルを投入したら別ディレクトリに mv するスクリプトを作成。

#!/usr/bin/env perl
use strict;
use warnings;

use Linux::Inotify2;
use AnyEvent;

my $watch_dir = $ENV{HOME} . '/inotify/queue';
my $processed_dir = $ENV{HOME} . '/inotify/processed';
my $inotify = Linux::Inotify2->new or die $!;

$inotify->watch(
    $watch_dir,
    IN_CLOSE_WRITE | IN_MOVED_TO,
    sub {
        my $e    = shift;
        my $name = $e->fullname;
        print "test!:${name}\n";
        system( 'mv', $name, "${processed_dir}/" );
    }
);

my $cv = AnyEvent->condvar;
my $inotify_w = AnyEvent->io(
    fh   => $inotify->fileno,
    poll => 'r',
    cb   => sub { $inotify->poll }
);
$cv->recv;

起動して queue ディレクトリにファイルを置いたら processed ディレクトリに移動するのを確認できました。

Facebooktwitterlinkedintumblrmail

Munin のプラグインを無効にして監視対象を減らす

Munin はデフォルトの監視対象が多くて素敵です。
ですが、entropy ってのはいらんかなぁと思ったので消しちゃいます。

Munin では /etc/munin/plugins/ にあるプラグインが読み込まれます(Ubuntu にパッケージでインストールした場合)。

$ sudo ls -l /etc/munin/plugins/
total 0
lrwxrwxrwx 1 root root 28 2010-03-30 03:35 cpu -> /usr/share/munin/plugins/cpu
lrwxrwxrwx 1 root root 27 2010-03-30 03:35 df -> /usr/share/munin/plugins/df
lrwxrwxrwx 1 root root 33 2010-03-30 03:35 df_inode -> /usr/share/munin/plugins/df_inode
lrwxrwxrwx 1 root root 27 2010-03-30 03:35 entropy -> /usr/share/munin/plugins/entropy
lrwxrwxrwx 1 root root 30 2010-03-30 03:35 forks -> /usr/share/munin/plugins/forks
lrwxrwxrwx 1 root root 32 2010-03-30 03:35 if_err_eth0 -> /usr/share/munin/plugins/if_err_
lrwxrwxrwx 1 root root 28 2010-03-30 03:35 if_eth0 -> /usr/share/munin/plugins/if_
lrwxrwxrwx 1 root root 35 2010-03-30 03:35 interrupts -> /usr/share/munin/plugins/interrupts
lrwxrwxrwx 1 root root 31 2010-03-30 03:35 iostat -> /usr/share/munin/plugins/iostat
lrwxrwxrwx 1 root root 33 2010-03-30 03:35 irqstats -> /usr/share/munin/plugins/irqstats
lrwxrwxrwx 1 root root 29 2010-03-30 03:35 load -> /usr/share/munin/plugins/load
lrwxrwxrwx 1 root root 31 2010-03-30 03:35 memory -> /usr/share/munin/plugins/memory
lrwxrwxrwx 1 root root 35 2010-03-30 03:35 open_files -> /usr/share/munin/plugins/open_files
lrwxrwxrwx 1 root root 36 2010-03-30 03:35 open_inodes -> /usr/share/munin/plugins/open_inodes
lrwxrwxrwx 1 root root 34 2010-03-30 03:35 processes -> /usr/share/munin/plugins/processes
lrwxrwxrwx 1 root root 29 2010-03-30 03:35 swap -> /usr/share/munin/plugins/swap
lrwxrwxrwx 1 root root 31 2010-03-30 03:35 vmstat -> /usr/share/munin/plugins/vmstat

このように実際はシンボリックリンクを作成・削除することでプラグインの有効・無効がコントロールされています。

ので、いらないのは消しちゃおうね。

$ sudo rm /etc/munin/plugins/entropy 

そして、Munin-Node を再起動。

$ sudo /etc/init.d/munin-node restart

これでプラグインは無効になります。

もしかすると Munin-Node の再起動は必要ないかもしれません。
でも気持ち悪いしやっとこうぜって感じ。

Facebooktwitterlinkedintumblrmail