sphinxいいよ

アルゴリズムについてまとめるためsphinxを使ってwebサイトを作ったわけだが、sphinxいいよ。

書くのにそれほど覚えることはないし、数式もシンタックスハイライトもいける。

cuiで完結するのもいい。軽い。

ソースコードもドキュメント中にコピペしたわけではなく、別ディレクトリにあるcppファイル名を指定して表示している。

このおかげでcppソースを変更してもmake htmlしなおせばhtmlの方も変更が同期される。

図の挿入が面倒くさそうなので、図がいっぱいの文書には不向きかもしれないが、テキストメインの技術文書には使いやすいんじゃないかな。

ジャジャガッチ | Linux | 23:42 | comments(0) | trackbacks(0) |

アルゴリズムをまとめたwebサイトを作りたい

競技プログラミングでよく使うアルゴリズムをまとめたwebサイトを作りたい。

問題を解く時や、仕事で必要なときに適宜このブログを参照しているが、自分の知りたい情報を得るのに時間がかかる。

そこでもう少しちゃんとした技術文書として新しくwebサイトを作りたい。

シンタックスハイライトもちゃんとしてくれてlatexによる数式表示もサポートしてるようなものないかなー、と探してみたら、あった!

その名もSphinx。

 

とりあえずインストールする。

pipというツールでインストールするのが楽だ。新しめpythonには同梱されているらしいのでまずは最新のpythonをインストールする。

あ、ちなみに環境はCentOS7ね。

 

python3.6.0落としてきて、

./configure -> make -> make install

でpythonをインストール。

 

sphinxは

pip3.6 install sphinx

でok。

 

数式のため

yum install *tex*

でtex関連片っ端からインストール。

 

文書作成のためにはまず

sphinx-quichstartを実行して適当に質問に答えていけば雛形が作られる。

数式表示のためにはconf.pyで

extensions += ['sphinx.ext.mathjax']

と記述すればOK。

 

公開する手段は色々あるが、今回はお手軽そうなGitHubを利用した方法を採用する。

手順は次の通り。

まずhithubにユーザ名.github.ioというレポジトリを作成する。

次にlocalで生成したhtml群をgit addする。(htmlのあるところでgit add . でok)

.nojekyllという空ファイルを作成し、git add する。

git remote add origin ***.git

でリモートリポジトリにoriginという名前をつけて

git push origin master

でリモートにpushする。

これでhttp://ユーザ名.github.ioに公開される。

ほい===> https://jajagacchi.github.io/index.html

 

ジャジャガッチ | Linux | 22:27 | comments(0) | trackbacks(0) |

CentOS6.8でキーボード、マウスが効かない…

CentOS6.8で急にキーボード、マウスが効かなくなった。

yum updateが正常終了しなかったのでそのときに何か不具合が生じたらしい。

cuiではキーボードが効くのでどうやらX周りらしいことはわかったが、色々いじってもダメ。Xを再インストールしてもだめだったので、諦めてCentOS7を入れてみることにした。

どのみちバックアップが必要なのはいくつかのtexファイルとvimrcくらいだし。

 

無事にインストールが完了したのでどういう設定したか書いておく。

まず日本語ディレクトリ名を英語に変更。

 

LANG=C xdg-user-dirs-gtk-update

 

次に何故か日本語入力ができないので

 

アプリケーション=>システムツール=>設定=>地域と言語=>日本語(かな漢字)を追加、選択

 

他のpcからsshログインが出来なくなっていたので

 

~/.ssh/known_hostsから旧OSの設定を削除

 

vimにluaが入っていないので

 

yum remove vim-enhancedでアンインストールし、luaオプションを入れて最新版をインストール。

 

あとはバックアップしておいたvimrcを元にvimの設定を復元した。

clang-completeの代わりにvim-clangを使ってみようと思ったが、色々と最新版への入れ替えが必要そうで手間なので諦めた。

blogへのコード貼り付け用のスクリプトは要xclipなのでインストールすること。

 

gccのバージョンは4.8.5でc++11がサポートされているのでこのままでOK。

 

 

 

これでまた遊べるなり。
 

ジャジャガッチ | Linux | 06:36 | comments(0) | trackbacks(0) |

Vimスクリプト勉強したいなあ

半年ぶりに英語の勉強を再開した。

なのであまり自分が本当にやりたいことに時間を割けなくて悲しい。

 

時間がなくてなかなか取り組めないのだが、記事にしとかないと自分がしたかったことを忘れてしまうので書いておく。

Vimスクリプトで、こういうの作りたい。

f(a,b,c,d,e);

みたいなのがあったときに、a,b,c,d,eのところに次々と飛んで書き換えるスクリプト。

もうすっかりスクリプトの書き方忘れたから再勉強したい。

あと、Vimのキー操作で数値計算とか。

ジャジャガッチ | Linux | 22:11 | comments(0) | trackbacks(0) |

centos6.6でtex

昨日自宅前で女子中学生に挨拶された。
ちょっとびっくりした。
ここは都会というほど都会ではないのだが、ほとんど子供に挨拶されることがない。
気持ちがよいものだ。

前に帰省したとき、妻と息子と母校(高校)周辺を散歩したのだが、ほとんどの生徒が挨拶してくれてこれも驚いた。
男子も女子も、しかも高校生だ。8割以上は挨拶してくれただろうか。
こういうところは田舎の方がいいよな。
というか僕は田舎の方が好きだ。
書籍と電子部品くらい手に入ればよいので今はネットで済んでしまうし。

今日は机の上を片付けてとりあえずノートくらいは広げられるようにした。
ただ残念ながら椅子は脚立。尻が痛い。

にゃんちゃんは現在紙袋の中で就寝中。
さあそろそろ寝ようか、にゃんちゃん。

//////////////////
centos6.6にtex環境を構築した。

yum install texlive*
でok。
yum install nkf
でnkfをインストールして
nkf -e aaa.tex > bbb.tex
platex bbb.tex
dvipdfmx bbb.dvi

で日本語pdfも問題無し。

残念なことにadobereaderのlinux版はなくなったようだ。
仕方がないのでevinceを使うことにする。

ちなみにtexにepsファイルを挿入するためにpngをepsに変換するスクリプトも使ってたりする。
次のシェルスクリプトを使えばok。
#!/bin/bash
in_file=$1
out_file="${in_file%.*}"".eps"
pngtopnm ./$in_file | pnmtops -noturn -equalpixels > $out_file
ジャジャガッチ | Linux | 23:24 | comments(0) | trackbacks(0) |

シェルスクリプトが便利過ぎる

ここのところ寒いし、色々忙しくて夜も趣味に時間を割く余裕がなかった。
今日は天気が悪いお陰で暖かいし、妻が部屋を片付けておいてくれて容易にLinuxを立ち上げられたので少し趣味に時間を割けた。

ここのところ息子の寝かしつけは随分楽になった。
だっこして眠さが限界になっているのを確認後、ベッドに置いて添い寝してやると自然に眠ってくれる。
それでつい自分も一緒に眠ってしまう。
後追いも始まり、傍を離れると泣き出すのが嬉しい。大変だけど。

今日、今のアパートから引っ越すの少し寂しくないですか?、と聞かれたのだが、全くそんなことはないです。
愛着ほぼゼロ。
実家を出てから4つのアパートで生活したが、そのどれにも特に愛着は感じていない。
別に部屋が嫌いだったとかではなく、それなりに気に入ってはいるのだが、僕の中ではどれも借りぐらし感がなくならなかった。
いつも、とりあえずしばらくはここに住もう、という感じ。
寂しかったのは実家を出たときだけだ。
部屋に帰っても電気がついていないというのはかなり心細かった。半年もすれば慣れてしまったが。でもやっぱり実家が一番だ。

今のアパートは手狭で色々不便なので早く引っ越したい。
でも引っ越し面倒くさい。

今が一番楽しい時期だね!家具決めたり、配置考えたり!って言われたがそんな余裕ゼロだ。
色々手続きしたり電話したり電話かかってきたり打合せしたり。
日々なんとか不備が無いように生きるだけで精一杯です。
これまであまり手帳が必要になったことはないが、さすがに手帳を持ち歩いてないと覚えきれない。
早く植物の心のような平穏な生活が戻ってきますように。

////////////////////////////////////
シェルスクリプトがすげえ。

windowsでの開発歴が長かったので一応batファイルは書いたことがある。
でも自作プログラムをコマンドライン引数を変えながら実行するくらいのことなので、batファイルでforループを使うんではなく、C言語でループを回してbatファイルを生成して使っていた。
batファイルの構文覚えられなくて。

Linuxに移行して、シェルスクリプトもそういう使い方になるかな、と思っていたのだが、C言語のループでは荷が重いケースが何度かあり、少し構文を覚えて使ってみた。
ら、めっちゃ便利!
カレントディレクトリ以下を巡ってmakefileのある全ディレクトリでmakeしたりgit diffしたり簡単に出来てすげえ便利!
あ、Linuxに移行して使い始めたバージョン管理システムGitもめちゃ便利です。話がそれるからこれはまた別の機会に。

シェルスクリプト、なかなか癖もあるんだが面白い。
C言語みたいにfor(int i=0;i<5;i++)みたいに書けないのでseqコマンドで連番を生成して走査する必要があったり。
まあこれがシェルスクリプト難しそう、に繋がったのも事実だが。

でもシェルスクリプトで色々自動化すると玄人っぽくてめっちゃかっこええ!

ちょっと覚え書き。
 
#test.sh
#!/bin/bash
echo ${@:3:2}
というシェルスクリプトを用意しておき、

$ ./test.sh 0 1 2 3 4 5

と実行すると

2 3

と表示される。
0番目を./test.shとして3番目から長さ2ほど抽出して表示している。
引数の数は$#でわかるのでこれと併用すれば最後の引数を抜き出したり出来る。
ジャジャガッチ | Linux | 22:20 | comments(0) | trackbacks(0) |

ブログ用にC/C++コードをhtmlに変換するvimスクリプト

電気配線の異常が直ったのに今度は豆球しか点かない。
何でじゃ!と思ったら蛍光灯の寿命だった。
管理会社に電話しなくてよかった!

/////////////////////////
ブログ用にC/C++コードをhtmlに変換するvimスクリプトを作った。
vimのTOhtmlコマンドを使えばhtmlを生成できるのだが、ブログに貼り付けるにはTOhtmlを実行後、vimを閉じ、生成されたhtmlをgeditで開き、一部をコピーする、という手間がかかる。

これは面倒なので楽をするvimスクリプトを作った。
vimからは外部コマンドを呼べるので、まずhtmlの必要な部分を抽出して出力するプログラムを作った。
 
//_html2blog.out
#include <iostream>
#include <fstream>
#include <string>

int main(int argc , char **argv)
{
	std::ifstream ifs(argv[1]);
	std::string str;
	while(str!="<body>")//"<body>"まで読み捨て
	{
		std::getline(ifs , str);
	}

	while(1)
	{
		std::cout << str << std::endl;
		std::getline(ifs , str);
		if(str=="</body>")
		{
			std::cout << str;
			break;
		}
	}
	ifs.close();

	return 0;
}

次にデータをクリップボードに渡すためにxclipというコマンドをインストールした。
xclipにデータを渡すため次のようなシェルスクリプトを書いた。
 
#html2blog
#!/bin/bash
_html2blog.out $1 | xclip -in -sel clip

vimスクリプトではTOhtmlを実行し、上述のプログラムを呼び出す。
inoremap <F3> <C-R>=BlogF()<CR>

function! BlogF()
	TOhtml
	let fn_html = expand("%")
	write
	close
	call system('html2blog ' . fn_html)
	call system('rm ' . fn_html)
	return ''
endfunction

挿入モードでF3キーを押すだけでブログ貼り付け用htmlがクリップボードに格納できるようになった。
ジャジャガッチ | Linux | 22:58 | comments(0) | trackbacks(0) |

Vimを最新版7.4に更新した(CentOS6.5)

この前久々に半日ほど一人で子供の面倒を見た。
妻のリフレッシュに協力するためだ。

前に一人で面倒を見たときは非常に大変だったのだが今回は楽だった。
今は離乳食も結構な量食べるのでミルクを作る必要もなかった。

ぐずることもなく昼寝もきちんとし、そのあとは離乳食を余裕で完食し、妻が帰ってくるまでご機嫌で遊んでいた。
父ちゃんはほっとしたぜ!!

/////////////////////////////////////
clang_completeの不具合に悩まされVimを最新版に更新した。
結局誤動作は直らなかったのだが一応メモしておく。
ついでにいくつかプラグインを追加した。

vimの公式サイトを見るとmercurialとかいうのを使ってインストールしろと書いてあるので
yum install merc*
でインストール。
サイトにあるとおり
hg clone https://vim.googlecode.com/hg/ vim
を実行する。続いて
cd vim
hg pull
hg update
と実行。srcディレクトリに移動。
cd src
configureを実行するのだが、ここのオプションで色々機能を付加できる。clang_completeはpythonが、neocompleteはluaが必要なので
./configure --with-features=huge --enable-fail-if-missing --enable-pythoninterp --enable-luainterp
とする。すると
checking if lua.h can be found in /usr/include... no
checking if lua.h can be found in /usr/include/lua5.1... no
configure: error: could not configure lua
と怒られてしまったので
yum install lua*
でlua関係をインストール。再度configureを実行。
あとは
make
make install
でok。
一応
vim --version
で必要な機能がそろっているかチェックしておくとよい。

これまで使っていたプラグインは
プラグイン管理用のNeoBundle
c系補完clang_complete
のみ。

vim更新ついでにプラグインも追加してみた。
まずコメントアウト支援にcawを入れてみた。
cだと/*と*/で囲んだ部分はコメントアウトされるがそのなかに/**/があるとうまくいかない。
1行コメントアウト//だとそういうことがないのだが打つのが面倒。
cawは選択範囲を一気に//でコメントアウトしてくれて超便利。

あとは有名どころのneocompleteを入れた。色々補完してくれて楽。
pathの補完とか超便利。

これら4つは超おすすめ。
ジャジャガッチ | Linux | 22:50 | comments(0) | trackbacks(0) |

おや?clang_completeの様子がおかしいぞ・・・?

この前、市立図書館の催しで絵本の読み聞かせに家族3人で参加してきた。
わらべうたも教わってきた。
でもいつも家に帰ると忘れている。一本橋みつけた・・・?

ちなみに僕の子供の頃の一番のお気に入りは「パパはまほうつかい」だ。
あのワクワク感はすごい。
この前実家から持って帰って来て読んでみたが、やはり素晴らしい!
ハリー何とかだとぉ?バーロー!パパはまほうつかいを読んでみやがれ!!

・・・、いや、うん、ハリー何とかも面白かったよ。うん。
確か4巻くらいまでは読んだ。
最初の頃は、子供の憧れる魔法の世界が広がっていて大人ながらわくわくして読んだ記憶がある。
でもだんだん話が暗くなっていって(人が死んだり)重苦しい雰囲気になってしまって読まなくなってしまった。
僕がハリー何とかに求めていたものはそういう話ではなかった。
暗く重苦しい話は他の小説でもたくさん読めるが、ハリー何とかのようなわくわくする世界観の小説はなかなかないと思う。

小学校の頃は推理小説とか怪奇小説がお気に入りだった。
アルセーヌ・ルパンやシャーロック・ホームズはその頃に読んだきりだなあ。

銀河英雄伝説との出会いは中学のころだ。同級生がおすすめしてくれてめちゃくちゃはまった。

高校の頃は一般向けの科学書を読んでいることが多かった気がする。よく制服のポケットの両方に文庫サイズの本を突っ込んでいたのを憶えている。

スティーブン・キングとの出会いは大学の頃だ。この頃からホラー小説が守備範囲に入った。

現在はミステリ系とホラーが多いな。一番多いのは技術書だがこれは読書には入らないだろう。

思えば子供の頃から割と読書好きだったな。
TVゲームも好きだったけど、運動とか読書とか割とバランスよく時間配分出来ていたような気がするが、子供の頃の話なので気がするだけかも。
勉強はあまりした気がしない、というか宿題くらいしかしてなかった。田舎だったしそこまでみんな塾に行って勉強して、という雰囲気ではなかった。
両親にも勉強しろとかゲーム止めろとか言われた記憶がない。
ゲームばかりしている子供にはゲーム以外の楽しいことを教えてあげればよいだけな気がするのだが、そんなに簡単なことではないか。
僕はゲーム以外にも楽しいことが色々あったからゲームに偏らなかったんじゃないかと思ってるんだが。
結構ゲームは悪く言われることが多い気がするが、学べるところも色々あると思う。
長くなってきたし何の話かよくわからなくなってきたのでこれはまたそのうち。

さて、うちの子供はどんな本と出会っていくのだろう。

///////////////////////
最近vim用のC系言語補完プラグインclang_completeの様子がおかしい。
何度か補完を繰り返すと挿入モードでエンターで改行出来ない上変な文字列が出力される。
例えば次のような感じ。
std::cout;<SNR>19_HandlePossibleSelectionEnter()
一回こうなると再起動しないと改行出来ない。
ぐぐっても同じ症状で困っている人は見つからない。
会社のPCと併せて計3台のPC(CentOS6.5)で同じ症状。

これでは使い物にならない。
clangを入れ替えたりvim入れ替えたり色々試したけど解決せず。
設定も色々変えてみたがだめ。
仕方がないのでコードを見てみることにした。
clang_completeの最も浅いディレクトリで
find ./ -name "*" | xargs grep "Handle"
としてみると・・・。
./plugin/clang_complete.vim:      inoremap <expr> <buffer> <CR> <SID>HandlePossibleSelectionEnter()
お、あるやん!
clang_complete.vimをあたってみると・・・。

447       inoremap <expr> <buffer> <CR> <SID>HandlePossibleSelectionEnter()
function! s:HandlePossibleSelectionEnter()
464   if pumvisible()
465     let b:snippet_chosen = 1
466     return "¥<C-Y>"
467   end
468   return "¥<CR>"
469 endfunction

447行目をコメントアウトすればHandlePossibleSelectionEnter()は呼び出されなくなりそうなのでダメモトでコメントアウトしてみた。
直った!
vimスクリプト読めないので何やってるところかよくわからないけど<CR>、つまりエンターを押すとHandlePossibleSelectionEnter()が呼び出されて、補完してないときは普通に改行、補完したときは何やら他のことしてるらしい。
実際にコメントアウトした状態で補完してみると少し動作が変わった。
これまでは補完候補選ぶと選択モードに切り替わっていたのだが、それがなくなり、文字列が挿入されるだけになった。
今のところこれ以外の変化はない。いちいち選択モードに切り替わるのがうっとうしかったので一石二鳥!
ジャジャガッチ | Linux | 22:08 | comments(0) | trackbacks(0) |

vimプラグインclang_completeへの不満

最近子供に「高い高い」をしている。
今日気がついたのだが、高い高いしたあと力尽きて床に子供を置くと、手を広げたままじっとこちらを見つめている。
まさか高い高いをご要望!?
何度しても満足しないので父はもう限界です・・・。

///////////////////////////
clang_complete、かなり便利なのだがいくつか不満もある。

1.コンストラクタが補完されない。
2.デフォルト引数の値が表示されない。
3.補完候補が表示されているときに、例えば探しているメソッドがsetなのかSetなのかわからないときにsと入力した時点でSetが破棄される。
4.クラスメンバがprivateなのかpublicなのかわからない。

設定とかで何とかなんのかな?
ジャジャガッチ | Linux | 21:00 | comments(0) | trackbacks(0) |
1/4PAGES | >> |

03
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH