Gitのカラー表示メモ

Gitをmsysgitとかubuntuからとか使っているんですが

なぜかubuntuでgit log --statとかした時に文字化け?してしまう。

こんな感じ。


^[[32m+++++++++++++++++++^[[m^[[31m--^[[m

多分color設定が読めてないなと。

$HOME/.gitconfigに下記の一行追加でcolor表示される様になった。


[core]
pager = less -r


[参考URL]
http://d.hatena.ne.jp/sugyan/20100507/1273209155
http://d.hatena.ne.jp/yuroyoro/20101008/1286531851

Erlang勉強会に向けて予習的な

Erlang 分散システム勉強会に参加するので予習

とりあえずproject euler 10を書いてみた。

 -module(project_euler).
 -export([is_prime/1, is_prime/2]).
 -export([add/2]).
 -export([loop/2, loop/3]).

%% check the prime number method.
%% arg: <integer> N
is_prime(N) ->
    M = 3,
    if
        N < 2 -> false;
        N == 2 -> true;
        N == 3 -> true;
        N rem 2 =:= 0 -> false;
        true -> is_prime(N, M)
    end.
is_prime(N, M) ->
    if
        N rem M =:= 0 -> false;
        M * M =< N -> is_prime(N, M+2);
        true -> true
    end.

add(N, M) -> N + M.

loop(N, M) -> loop(N, M, 0).
loop(N, M, Sum) when N > M -> Sum;
loop(N, M, Sum) ->
    case is_prime(N) of
        true  -> loop(N+1, M, add(N, Sum));
        false -> loop(N+1, M, add(0, Sum))
    end.

コンパイルコマンドラインから実行。

$ erlc project_euler.erl
$ ls
project_euler.erl project_euler.beam
$ erl -eval 'io:format("~s", [project_euler:loop(1,2000000)])' -noshell -s init stop
{"init terminating in do_boot",{badarg,[{io,format,[<0.23.0>,"~s",[142913828922]]},{erl_eval,do_apply,5},{init,start_it,1},{init,start_em,1}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()

あれー。結果は取り出せたのにエラーが。。。

しかもおっそいし!

c++のが全然早いじゃん。。。

書き方が悪いんだろうけどよくわかんないなー。

erlシェルからも実行してみる

$ erl
Erlang R13B03 (erts-5.7.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
1> project_euler:loop(1,2000000).
142913828922

エラーは出ないけどおっそい!!!

絶対書き方だよなぁ。。。

あと-noshellで実行したときにエラー出る原因がわからん。

  • [追記]

io:formatに結果渡す時にintegerからlistに変換しないといけなかったみたい。

$ erl -eval 'X=project_euler:loop(1,2000000),io:format("~s~n", [integer_to_list(X)])' -noshell -s init stop
142913828922

PHPからthriftでcassandraに接続してみた - その1

以下メモ


$ tar zxvf thrift-0.2.0-incubating.tar.gz
$ cd thrift-0.2.0
$ ./configure
$ make
$ sudo make install
$ ll /usr/local/include/thrift/

  • PHPからthrift_protocolを利用する


$ cd lib/php/src/ext/thrift_protocol
$ phpize
$ ./configure --enable-thrift_protocol
$ make
$ sudo make install
$ ll $PHP_EXT/no-debug-non-zts-20060613/
$ sudo vi /usr/local/lib/php.ini

extension=thrift_protocol.so
[thrift]


$ sudo mkdir -p /usr/share/php/Thrift
$ cd lib/php/src
$ sudo cp -R ./* /usr/share/php/Thrift/


$ tar zxvf apache-cassandra-0.6.3-bin.tar.gz
$ cd apache-cassandra-0.6.3
$ cd interface
$ thrift --gen php:server cassandra.thrift
$ sudo mkdir /usr/share/php/Thrift/packages
$ sudo cp -R cassandra /usr/share/php/Thrift/packages/
$ ll /usr/share/php/Thrift/


  • PHPからライブラリの読み込みのテスト

※まだCassandraは立ち上げてないのでconnectはしない


$ vi cassandra_example.php
$GLOBALS['THRIFT_ROOT'] = '/usr/share/php/Thrift';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/Cassandra.php';
require_once $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/cassandra_types.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php';
require_once $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php';

try {
$socket = new TSocket('127.0.0.1', 9160);
var_dump($socket);
$transport = new TBufferedTransport($socket, 1024, 1024);
$protocol = new TBinaryProtocolAccelerated($transport);
$keyspace = 'Keyspace1';

//Cassandraクライアントの作成
$client = new CassandraClient($protocol);
var_dump($client);

} catch (Exception $e) {
var_dump($e);
}

今回はここまで

Gitのメモ

central <-> clone

で運用しているとき。

central側でbranchを削除してしまった場合

clone側にcentralのbranch情報が残ってしまう。

[central]


central$ git branch
 * master
test
test2
central$ git branch -d test2
central$ git branch
 * master
test

[clone]


clone$ git branch -a
 * master
test
remotes/origin/master
remotes/origin/test
remotes/origin/test2

clone側に情報が残ってしまったので下記のコマンドで削除して確認する。


clone$ git branch -d -r origin/test2
clone$ git branch -a
 * master
test
remotes/origin/master
remotes/origin/test

remote/origin/test2が表示されない事を確認して終了。

nodetoolでcassandraが落ちた

Cassandraの試験をやっているのですが

クラスター全体で3000万件程データを貯めこんでました。

クラスターと言ってますが2台構成です。

で、

$ nodetool -h localhost -p 9160 tpstats
って打ったらノード全部(2台)とも落ちました。

・・・

はい。

片方のノードはそのままで起動出来たのですが

もう片方が上がらない。。。

多分メモリだろうなーって事で起動時のオプションと設定ファイルを修正。

[ cassandra.in.sh ]


-Xms512M -Xmx2G
デフォルトは256Mの1G

[ storage-conf.xml ]
1024
512

で起動できました。

ただこれでもnodetool使うにはメモリが足りない様で

エラー出まくってます。

引き続き調査。

突っ込み大歓迎です。

[追記]
なんかどうにもならなかったので全ノードをKILL -9 XXXして各ノードを一旦停止。その後
/var/lib/cassandra/data/Keyspace1/***
を削除。で、再起動してリストアしました。
こんなんでいいの?

PHP5.3でcactiを使う

PHP5.2から5.3にアップデートしたらcactiの画面でwarning出まくり。

原因は主にereg系の関数使っているから。

warningを抑制してもいいかもだけど、それは何か違うなーって思ったのでコードを修正した。

具体的には
ereg("***", $***)をpreg_match("/***/", $***)に変更
eregi("***", $***)をpreg_match("/***/i",$***)に変更
ereg_replace("***", "", $***)をpreg_replace("/***/", "", $***)に変更
eregi_replace("***", $***)をpreg_replace("/***/i", "", $***)に変更
split()をexplode()に変更

で。

とりあえず下記のファイルの修正でグラフ見れるようにはなった。


cacti/site/scripts/query_host_cpu.php
cacti/site/scripts/ss_host_disk.php
cacti/site/scripts/ss_sql.php
cacti/site/include/global.php
cacti/site/include/global_form.php
cacti/site/host_templates.php
cacti/site/lib/html_validate.php
cacti/site/lib/utility.php
cacti/site/lib/template.php
cacti/site/lib/graph_variables.php
cacti/site/lib/html_utility.php
cacti/site/lib/snmp.php
cacti/site/lib/data_query.php
cacti/site/lib/html_form_template.php
cacti/site/lib/rrd.php
cacti/site/lib/html.php
cacti/site/lib/variables.php
cacti/site/lib/functions.php
cacti/site/utilities.php
cacti/site/graphs_new.php
cacti/site/graphs.php
cacti/site/graph_view.php
cacti/site/data_templates.php
cacti/site/cdef.php
cacti/site/graph_image.php

The mod_python project is now officially dead.

@atsさんが言及されていましたがmod_pythonはcloseとなる様です。

http://coreblog.org/ats/mod_python-has-no-future

自宅のサーバでapache+mod_pythonDjango動かしているので

apacheのバージョンアップの際には移行しないとですね。

多分mod_wsgiにします。