【CentOS】xselをインストールする
$ sudo yum groupinstall "X Window System" $ sudo yum install -y libX11-devel libXt-devel $ wget http://www.vergenet.net/~conrad/software/xsel/download/xsel-1.2.0.tar.gz $ cd xsel-1.2.0 $ ./configure $ make $ make install
【Linux Mint, vim】日本語のtexをvimで書く環境を整える
$ sudo apt-get install ptex-bin $ sudo apt-get install texlive texlive-math-extra ptex-bin xdvik-ja $ sudo apt-get install dvipdfmx cmap-adobe-japan1 ptex-jisfonts okumura-clsfiles jmpost jbibtex-base jbibtex-bin mendexk $ sudo jisftconfig add $ wget http://www35.tok2.com/home/hashimotolab/LaTeX/dvipdfm-w32.tar.bz2 $ tar jxvf dvipdfm-w32.tar.bz2 $ cd ./share/texmf/fonts/map/agl/ $ sudo cp -v pdfglyphlist.txt glyphlist.txt /etc/texmf/dvipdfmx $ sudo vim /etc/texmf/texmf.cnf CMAPFONTS = .;$TEXMF/fonts/cmap// を CMAPFONTS = .;$TEXMF/fonts/cmap//;/usr/share/fonts/cmap// に書き換え $ sudo update-texmf $ sudo apt-get install zathura $ sudo apt-get install poppler-data
vimrcにquickrunの設定を追記(quickrunのインストールは省略)
let g:quickrun_config['tex'] = { \ 'command' : 'platex', \ 'exec': ['%c %s', 'dvipdfmx -o %s:r.pdf %s:r.dvi'] \}
毎回pdfの結果を見たいなら
let g:quickrun_config['tex'] = { \ 'command' : 'platex', \ 'exec': ['%c %s', 'dvipdfmx -o %s:r.pdf %s:r.dvi', 'zathura %s:r.pdf'] \}
zathuraは自動更新してくれるので、一回立ち上げといてquickrunはコンパイルだけの方が良いと思います。
texファイルでLeader+rでコンパイルできます。
【Vim】vim-quickrunでコマンドライン引数を入力で指定する
gccの設定
let g:quickrun_config['c'] = {
\ 'type': 'c/gcc',
\ 'command': 'gcc',
\ 'exec': ['%c %o %s -o %s:p:r', '%s:p:r %a'],
\ 'tempfile': '%{tempname()}.c',
\ 'hook/sweep/files': '%S:p:r',
\ 'cmdopt': '-std=c99 -Wall',
\ 'args': '%{input("argv> ")}',
\ }
【Linux Mint, vim】vim-powerlineにフォントRictyのパッチをあてる
$ cd $ apt-get install fontforge $ apt-get install libxml2 $ apt-get install libpng12 $ mkdir .fonts $ git clone git@github.com:yascentur/Ricty.git $ cd Ricty $ wget http://levien.com/type/myfonts/Inconsolata.otf $ wget -O mig1m.zip 'http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fmix-mplus-ipa%2F57240%2Fmigu-1m-20121030.zip' $ unzip mig1m.zip $ rm mig1m.zip $ sh ricty_generator.sh auto $ cp Ricty-Regular.ttf Ricty-Bold.ttf ~/.vim/bundle/vim-powerline/fontpatcher/ $ cd ~/.vim/bundle/vim-powerline/fontpatcher $ fontforge -lang=py -script fontpatcher Ricty-Regular.ttf $ fontforge -lang=py -script fontpatcher Ricty-Bold.ttf $ cp -f Ricty* ~/.fonts $ fc-cache -vf terminal>編集>プロファイルの設定>全般 フォントをRicty .vimrcに以下を追記 let g:Powerline_symbols = 'fancy' set t_Co=256 矢印が文字化けしている場合は let g:Powerline_symbols = 'compatible'
【C言語 MPI】MPIUnitのsampleを動かすまで
環境:MPICH2, CentOS 5.7
$ wget 'http://sourceforge.jp/frs/redir.php?m=keihanna&f=%2Fmpiunit%2F29902%2FMPIUnit-1.6.1.tar.gz' $ tar xzvf MPIUnit-1.6.1.tar.gz $ cd MPIUnit-1.6.1 $ ./configure $ make $ make install makeで 'all に対して行うべき事はありません' と言われても無視 $ vim /etc/ld.so.conf /usr/local/lib を追記 $ cd sample $ make mpiut ubuntuなどでundefined referenceがでる場合は $ apt-get install binutils-gold
参考:本家(http://sourceforge.jp/projects/mpiunit/wiki/FrontPage)
【Ruby on Rails】Backbone.jsにinclude先の情報を渡す方法と注意点
次のような中間テーブルを挟むhas_manyなDB構造の場合
users table
id | |
1 | test1@gmail.com |
2 | test2@gmail.com |
3 | test3@gmail.com |
4 | test4@gmail.com |
5 | test5@gmail.com |
users_services table
id | user_id | service_id | role |
1 | 3 | 2 | role1 |
2 | 2 | 1 | role2 |
3 | 3 | 3 | role2 |
4 | 1 | 1 | role2 |
5 | 1 | 2 | role1 |
services table
id | name |
1 | service1 |
2 | service2 |
3 | service3 |
railsのコントローラで以下のように書いてもinclude先の情報はbackboneに渡されません。
index_controller.rb
def index @users = User.find( :all, :include => :services, ) end
index.html.erb
<script type="text/javascript"> $(function() { window.router = new Blog.Routers.UsersRouter({users: <%= @users.to_json.html_safe -%>}); Backbone.history.start(); }); </script>
to_json時にincludeしなければなりません。
index_controller.rb
def index @users = User.find( :all, :include => :services, ).to_json( :include => :services, ).html_safe end
index.html.erb
<script type="text/javascript"> $(function() { window.router = new Blog.Routers.UsersRouter({users: <%= @users -%>}); Backbone.history.start(); }); </script>
中間テーブルのデータをとってくるときの注意点
以下のように中間テーブルのデータを取ってこようとすると
User.find( :all, :include => :services, :conditions => ["services.id = ?", 1], )).to_json( :only => [:email,:id], :include => {:users_services => {:only => [:service_id, :role]}}, )
次のようなjsonがかえってきます。
'[{"email":"test2@gmail.com","id":2,"users_services":[{"role":"role2","service_id":1}]},{"email":"test1@gmail.com","id":1,"users_services":[{"role":"role2","service_id":1},{"role":"role1","service_id":2}]]'
最後を見てもらえればわかる通りconditionsでservice_idが1のものを指定しているのに2のものがくっついてきています。
to_jsonのinclude時のsql文を見てみると
SELECT `users_services`.* FROM `users_services` WHERE `users_services`.`user_id` = 1 SELECT `users_services`.* FROM `users_services` WHERE `users_services`.`user_id` = 2
なぜかuser_idで絞ってます。
この問題を回避するにはto_json時にmethodsを定義します。
index_controller.rb
def index @users = User.find( :all, )).to_json( :only => [:email,:id], :methods => :fetch_service_id_one ) end
user.rb
def fetch_service_id_one users_services.where("service_id = ?", 1).select("service_id, role") end
SELECT service_id, role FROM `users_services` WHERE `users_services`.`user_id` = 1 AND (service_id = 1) SELECT service_id, role FROM `users_services` WHERE `users_services`.`user_id` = 2 AND (service_id = 1)
返ってくるjson
'[{"email":"test2@gmail.com","id":2,"fetch_service_id_one":[{"role":"role2","service_id":1}]},{"email":"test1@gmail.com","id":1,"fetch_service_id_one":[{"role":"role2","service_id":1}]]'
service_idが1のものだけ返ってくるようになりました。
もしこうしたほうが楽にできる、ここ間違ってるなどあれば教えてくださいm(_ _)m
【C言語 MPI】MPIをgdbでデバッグする方法
コードのに無限ループを挿入して止める。(場所は適当に)
int debugwait = 1; while ( debugwait );
コンパイル時にgdbのオプション(-g)をつける
$ mpicc -g -o progname progname.c
実行
$ mpirun -np 4 ./progname &
実行中のプロセスを調べる
$ ps ax | grep progname
調べたプロセスidのノードでgdbを実行
$ gdb progname process_id
無限ループ解除
(gdb) set debugwait = 0
recvで止まる?もうちょい検証が必要。