2014/05/05

MongoDB as Windows service

Windows 7 32bit環境.

Document通りにサービスに登録しても起動できなかったのでメモ.
# 別のWindows 7 64bit環境ではドキュメント通りにできた...

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB\ImagePath

を下記の通りに変更.

"c:\Program Files\mongodb-win32-i386-2.4.8\bin\mongod.exe" --logpath "c:\Program Files\mongodb-win32-i386-2.4.8\log\mongodb.log" --serviceName MongoDB --service

重要なのは,MongoDB の前に --serviceName を入れることと,logpath はディレクトリ名じゃなくてファイル名にしないとダメみたい,という点.

参考: stackoverflow: Error 1053 When Starting Windows XP Service Running Mongo DB 1.6.3

2012/06/12

Ruby on Rails on Fedora 17

Fedora 17 上で Ruby on Rails を動かしたときのメモ.簡単には動かなかったので...

# yum install ruby  -> ruby, rubygems がインストールされる

$ gem install rails

$ rails new foo
$ cd foo

ま,ここまでは普通.

[error 1]
・症状
$ rails server
/home/hanayuki/.gem/ruby/1.9.1/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
        from /home/hanayuki/.gem/ruby/1.9.1/gems/execjs-1.4.0/lib/execjs.rb:5:in `'
...(以下略)

・対処法
Gemfileに下記を追加
gem 'therubyracer'
$ bundle update

参考:http://d.hatena.ne.jp/kano4/20110708/javascript_runtime_error

[error2]
・症状
$ rails server
/home/hanayuki/.gem/ruby/1.9.1/gems/railties-3.2.5/lib/rails/railtie/configuration.rb:85:in `method_missing': undefined method `active_record' for # (NoMethodError)

        from /home/hanayuki/herokucamp/rails_project/foo/config/application.rb:54:in `'
        from /home/hanayuki/herokucamp/rails_project/foo/config/application.rb:13:in `'
        from /home/hanayuki/herokucamp/rails_project/foo/config/application.rb:12:in `'
...(以下略)

・対処法
Gemfileに以下を追加
gem 'bigdecimal'
$ bundle update


これでやっと,rails server が動くようになります.

2012/01/21

python read subprocess stdout line by line


proc = subprocess.Popen(['python','fake_utility.py'],stdout=subprocess.PIPE)
for line in iter(proc.stdout.readline,''):
    print line

でまわす.

for line in proc.stdout:

ではうまくいかない

参考:
http://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-line


追記:

hoge.sh | python foo.py

みたいな形で,パイプからの入力を標準入力で受ける場合も同じ.
CSV形式で読むならこんな感じ

csvreader = csv.reader(iter(sys.stdin.readline, ''))
for data_vals in csvreader:
    print data_vals

参考:
http://stackoverflow.com/questions/6556078/how-to-read-a-csv-file-from-a-stream-and-process-each-line-as-it-is-written

2011/12/15

gnuplot

・線種(色,点線の種類,太さ)を変えたい

set style line 1 linetype 1 linewidth 4

としておいて,

plot 'foo.dat' w l ls 1

てなかんじで指定する
(ls = linesytle, lt = linetype, lw = linewidth)

・線種の一覧

test

で見れる

・colorで出力するとき,全て実線で表示させたい

set term で solid を付け加える.

set term postscript eps color solid 24

・ラベルで改行

\n をいれる

set xlabel "first line\nsecond line"

・軸とラベルの間の空白をせまくする

set ylabel 2, 0, 0

2011/11/05

Fedora15/16 に texlive-2011 を導入

Fedora15インストール時に英語を選んだので,日本語版を入れていればいらない処理もあるかも.
2011/12/02 追記:Fedora16でもほぼ同様にインストール出来た.


最初,yum texlive-* でインストールしたのだが,yum でインストールされる texlive は texlive-2007 で,UTF-8に対応してないらしく,はまった.texlive-2010以降なら対応しているらしい.どうせなら,ということで,texlive のサイトから最新版をダウンロードしてきてインストール.

------------------------------------------
TeX Liveのサイト http://www.tug.org/texlive/ から install-tl-unx.tar.gz をダウンロード
$ tar xvzf install-tl-unx.tar.gz
$ cd install-tl-20111102   (readme.dir/README-JA に日本語READMEがあります)
$ sudo ./install-tl
デフォルト設定が出力されるので,それを確認してOKなら
Enter command: I

これで,/usr/local/texlive/2011 以下にインストールされる.色々ダウンロードしてインストールされるので,結構時間がかかります.

[MEMO]
アップデートは,tlmgr コマンドで可能
sudo tlmgr update --all
とすれば,インストール済のパッケージが更新される.

終わったら,PATH等の設定.
.bashrc: 
export PATH=/usr/local/texlive/2011/bin/i386-linux:$PATH
export MANPATH=/usr/local/texlive/2011/texmf/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2011/texmf/doc/info:$INFOPATH

.cshrc
setenv PATH /usr/local/texlive/2011/bin/i386-linux:$PATH
setenv MANPATH /usr/local/texlive/2011/texmf/doc/man:$MANPATH 
setenv INFOPATH /usr/local/texlive/2011/texmf/doc/info:$INFOPATH

(*) 2011/12/02 追記:MANPATH, INFOPATHはいらないかも.既に設定されているっぽい.manpath コマンドで確認できる.

(*) 2011/12/02 追記2:jbibtex は pbibtex に変更されている.

------------------------------------------
xdvi は日本語を表示できないので pxdviをインストール.ついでにgvも.
# yum install xdvik gv

フォントはsazanamiフォントよりきれいな,IPAフォントを使う
# yum install ipa-ex* 
# mkdir -p /usr/share/fonts/sazanami/mincho
# mkdir -p /usr/share/fonts/sazanami/gothic
# ln -s /usr/share/fonts/ipa-ex-mincho/ipaexm.ttf /usr/share/fonts/sazanami/mincho/sazanami-mincho.ttf
# ln -s /usr/share/fonts/ipa-ex-gothic/ipaexg.ttf /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf


xdviで警告を出ないようにするため (2011/1/6 Fedora13, 14 参照)
・フォントインストール
# yum install xorg-x11-fonts-ISO8859-1-75dpi
・環境変数設定 pxdvi, gv
.bashrc:
alias pxdvi='LANG=C pxdvi'
alias gv='LANG=C gv'



------------------------------------------
参考:

2011/01/06

Fedora13, 14

・pxdvi での警告 (2種類)
* Warning: Cannot convert string
"-*-helvetica-medium-r-*-*-12-*-*-*-*-*-*" to type FontStruct
Warning: Cannot convert string
"-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*" to type FontStruct
→ # yum install xorg-x11-fonts-ISO8859-1-75dpi

* Warning: Missing charsets in String to FontSet conversion
→ LANG=C という環境変数で実行。.bashrc, .cshrc でalias 設定しておけば楽
[bash] $ LANG=C pxdvi ...
[csh] $ env LANG=C pxdvi ...


・Focus follows mouse (マウスの移動のみでウィンドウにフォーカスを移動)
# yum install control-center-extra
システム→設定→ウィンドウ


on Fedora 14
・gv での警告 (gxdvi と同じ)
Warning: Cannot convert string
"-*-Helvetica-Medium-R-Normal--*-140-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Cannot convert string
"-*-Helvetica-Medium-R-Normal--*-120-*-*-P-*-ISO8859-1" to type FontStruct
Warning: Cannot convert string
"-*-Helvetica-Medium-R-Normal--*-100-*-*-P-*-ISO8859-1" to type FontStructp
Warning: Cannot convert string
"-*-Helvetica-Bold-R-Normal--*-120-*-*-P-*-ISO8859-1" to type FontStruct

# yum install xorg-x11-fonts-ISO8859-1-75dpi

2010/10/20

[Linux] PATH に重複したパスが登録される

環境は,Fedora13、csh です.

設定ファイル (.cshrc とか) でPATH に登録してパスを通すのはいいのだが,何回も読み込まれてるのか,重複して登録されている.特にそのままでも害はないのだが,さすがに長くなりすぎて嫌なので修正.

BASHでは,/etc/profile, /etc/login にある pathmunge 関数を使えばよさそう.
だが,CSHでは関数がないので,下記のようにする.

/etc/profile.d/pathmunge.csh-inc というファイルを作る.内容は下記.
foreach pathmunge_i (${path:q})
if ( "$pathmunge_i" == "$1" ) then
exit
endif
end
unset pathmunge_i

if ( "$2" == "after" ) then
set path = ( ${path:q} ${1:q} )
else
set path = ( ${1:q} ${path:q} )
endif

PATHに追加したいときは,
source /etc/profile.d/pathmunge.csh-inc /path/to/something/bin
とする.after をつければ後ろに追加される.

参考:
https://bugzilla.redhat.com/show_bug.cgi?id=544652