今年を振り返って・・・、というほどでもないけど

今年は大変慌ただしい一年だった。
子どもが産まれ、子育てに追われた一年だった。
家を建てることに決めたので余計に慌ただしくなった。
保育園の見学にもたくさん行ったな。

僕が十分子育てに参加出来たかは妻が評価すべきところだが、世のお父様方は出来るだけ子育てに参加してほしい。
育児を"手伝う"という発想がそもそも間違いで、自分が主となって参加する気持ちが大切だ。どっかに書いてあった。

お母様方も不慣れなお父様をあまり責め立てずに大らかに見てあげてほしい。褒めて伸ばそう。
不慣れなことはうまく出来ないものだし、不器用な人もいる。誰もが上手に出来るわけでは無いのだ。
おむつ替えが下手で文句を言いたくなるかもしれない。でもぐっと我慢してありがとうくらい伝えよう。
そうすれば次も挑戦しようという気持ちが湧いてくる。
そのうち上手になるよ。そうすれば自分も楽になる。
文句ばかり言われると、じゃあ上手に出来る君がやればいいじゃないか、と拗ねてしまうよ。
お父様方も多少ケチをつけられたくらいで拗ねずに、育児で疲れてるんだな、と堪えましょう。
ここまで主として育児を女性が担っているという前提で書いたが、本当は男性も同じだけ負担がないと不平等だ。
でも残念ながら今の日本では女性が育児を主として担うことが多い。

今の子育て世代は近所づきあいもなく、両親も遠方で孤独な人が多いらしい。
うちもまさにそうで、両親は遠方で近所づきあいもほとんどない。
幸い時々訪ねて来てくれる友人がいたので妻も適宜リフレッシュできたようだ。
しかし基本的には家で一人で子育てするわけで、大きな負担を妻にかけてしまった。
妻も一時期は大変疲れ切っていたが、最近は元気を取り戻して安心している。


さて僕の趣味の方はというと、子どもが産まれて慌ただしかったので電子工作は一切出来なかった。
部屋が狭いので子どものためのスペースを作ると電子工作をするスペースなどとてもじゃないけど作れなかった。部品の誤飲も怖いので諦めた。
引っ越したら再開出来るかな。

電子工作が出来なかったので主にプログラミングで遊んでいた。あとLinux。
Linuxを使い始めたのは数値計算のためだ。
これまで数年間基本的にはWindowsで数値計算を行ってきた。主要な数値計算ライブラリはWindowsでも利用可能なのだが、ライブラリのインストール方法が様々でかなり面倒くさい。
ものによってはWindowsだとうまく動かない場合もある。
数値計算ライブラリはLinuxをメインターゲットにしている場合が多いので、数値計算はLinuxでやるのが自然かな、ということでLinuxを使い始めた。
この選択は正しかった。有名なものはパッケージ管理システムで簡単にインストールできるし、そうでないものも大抵は端末で./configure⇒make⇒make installでインストールできる。
Windowsよりも圧倒的にシンプル。

数値計算のために使い始めたLinuxだが、使ってみるとWindowsよりも使いやすい部分が多い。

特にパッケージ管理システム。
端末でインストールしたいソフトを指定すればそのソフトを動かすのに必要な周辺ソフトも一気にインストールされる。
ソフトのアップデートも一気に出来る。
Windowsみたいに再起動しろと要求されることも少ない。

あと色々な設定が単なるテキストファイルなのもよい。テキストファイルの方が自動化との親和性が高い。

端末のコマンドも非常に強力だが、最近はWindowsでもPower Shellだか何だかというもので強化されているらしい。

一企業の思惑でどうこうならないというのもメリットか。
あとハッカーっぽくてかっこいい。


さて、今年ももう終わりだ。来年はどんな年になるのだろう。飛躍しよう。
ジャジャガッチ | その他 | 23:02 | comments(0) | trackbacks(0) |

まだまだC++で知らないことがたくさんある

昨日から冬休み。
昨日買い物ついでに新居を見に行ったら中身もすっかり出来上がっていた。
あとは外構を残すのみ。
住むのは楽しみだが引越しが面倒くさい。

今日は朝は買い物に出かけ、昼間から飲酒。
別に酒は好きではないが昼間から呑めることに幸せを感じる。
でも今年はもうお酒はいいや。

/////////////////////////////////////////
↓って
void f(T t);

int main()
{
	T t(256);
	f(t);

	return 0;
}

こう書けるんだ。
void f(T t);

int main()
{
	f(T(256));

	return 0;
}

Effective C++読んでて初めて知った。こっちの方がかっこいい。
ジャジャガッチ | C/C++ | 21:13 | comments(0) | trackbacks(0) |

小林泰三「家に棲むもの」読了

小林泰三「家に棲むもの」を読了した。
短編集。全体的に凡作が多い感じ。
そこそこ面白いけど小林泰三にしては平凡な感じ。

表題作「家に棲むもの」が一番よかったかな。
ジャジャガッチ | その他 | 21:38 | comments(0) | trackbacks(0) |

ソースコード生成 & 実行プログラム

手狭なアパートで本の収納スペースがないので一冊買ったら一冊処分する、と以前宣言した。
が、家を建てるので撤回。
これまでより厳選して購入するようにはしている。
でも小林泰三がどんどん増えていく。

本日はクリスマスなり。
今年はバタバタしていてサンタは出来ないな、と思っていたのだが、息子はまだサンタなんてわかんないし別にいいか、と思っていた。
が、妻の残念がりようが半端ない。
君は友達とクリスマスパーティーするしいいじゃないか、と思ったのだがあまりにも残念そうなので会社帰りにプレゼントを買って帰った。
喜びようも半端なかったのでよかったよかった。

サンタとしては完全に出遅れ感があり、店の売り場は既に正月ムードだった。
妻には赤いブーツに入ったお菓子を買って帰ろうと思っていたのにしめ飾りとか餅とかばっかり。
ツリー飾りも半額。
世間のサンタは用意周到らしい。

明日は仕事納め。
頑張って来ます。

////////////////////////////////
以前ソースコードを生成するプログラムを紹介したが、一歩進めてコンパイル、実行までするプログラムを作ってみた。
#include <stdlib.h>
#include <iostream>
#include <fstream>

int main()
{
	std::ofstream ofs("tmp.cpp");
	ofs << "#include <stdio.h>" << std::endl;
	ofs << "int main(){printf(¥"hello world¥¥n¥");return 0;}";
	ofs.close();
	system("g++ tmp.cpp");
	system("./a.out");

	return 0;
}
実行結果:
 hello world

実行結果はお馴染みのhello worldだが、内部でやっていることは全然違う。
色々使えそうな気もするが実用的に使ったことはない。
ジャジャガッチ | C/C++ | 22:37 | comments(2) | trackbacks(0) |

C++版拡張子変更プログラム

年賀状も出したし今年の仕事はもう片付いたかな。
今年は本当に慌ただしかったなー。

最近うちの子供はおもちゃでの遊び方に少し変化が。
これまではひたすら舐めまわすだけだったが、マラカスみたいなおもちゃは振って音を出して遊ぶ。
まあしばらくしたら舐めまわすんだけど。
たまたま振っただけかな、と思って観察しているとどうやらたまたまではないらしい。
成長しているなあ。
早く成長してほしいような今のままでいてほしいような複雑な気持ち。

子どもにパソコンを与えるのがいつになるかはわからないが、そのときにどのOSがいいかなー、などと最近妄想している。
windows?Linux?
子どもと一緒にPC組めたりしたら楽しいかなーとか。
まあ子どもが何に興味を持つかはわからないわけですが。

子どもが何に興味を持つかが今から楽しみ。
でも今の状態もめちゃめちゃかわいい。
複雑な気持ち。

/////////////////////////////
いつぞやにC言語でファイル拡張子を変更するプログラムを書いたが、C++版も書いてみた。char型を使った場合に比べてシンプル。
#include <stdio.h>
#include <string>
#include <algorithm>

int main(int argc , char **argv)
{
    int nof = argc - 1;
    for(int n=0;n<nof;n++)
    {
        std::string str(argv[n+1]);
        str.erase(str.begin()+str.find_last_of(".") , str.end());
        rename(argv[n+1] , (str+".csv").c_str());
    }
    return 0;
}

 
ジャジャガッチ | C/C++ | 22:36 | 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) |

ブログのC/C++ソースコードをかっちょよく表示する。ついでにブログデザイン変更。

子供の予防接種に行ってきた。
注射だったが泣かずにけろっとしてた。
やるな。

////////////////////////////////////////////
よくブログにソースコードを張り付けているが見づらい。
あとで見返してすこし辛いものがあるので見やすくする方法を探してみた。

ひとつめはGnu source-highlightを使う方法。
$ source-highlight -i main.cpp > test.html
でhtmlを生成できるが、色が自分の好みではなく、カスタマイズも手間がかかりそうなので断念。

次にvimのTOhtmlコマンドを使う方法。最近のvimには最初から入っている。
でも出力されるhmtlをそのままブログに張り付けると色は付かなかった。
そのまま張り付けるだけではダメらしい。色々調べたところ次のようにして出来た。
上の方にある
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #ffffff; }
body { font-family: monospace; color: #000000; background-color: #ffffff; }
* { font-size: 1em; }
.Type { color: #00ff00; }
.Statement { color: #ffff00; }
.PreProc { color: #ff40ff; }
.Constant { color: #ff6060; }
をブログのCSS編集ってとこに追記する。
(実際には僕は黒背景にしたかったので最初の#000000と#ffffffを交換して追記した)

あとは下の方の<body>〜</body>をコピーして貼り付けてやればok。
#include <iostream>
#include <set>
#include <random>
#include <vector>
#include <algorithm>

int main()
{
	std::mt19937 mt(0);
	int N = 10000000;

	std::set<unsigned int> s;
	unsigned int X;

	for(int n=0;n<N;n++)
	{
		unsigned int x  = mt();
		s.insert(x);
		if(n==N/2) X = x;
	}

	if(s.find(X)!=s.end()) std::cout << "true";
 	else std::cout << "false";
 	std::cout << std::endl;

	return 0;
}

おお!かっちょいい!vimっぽい!

ついでにブログデザインも一新した。
これまでのデザインは本文の領域が狭く、ソースコードが折り返されてしまうことがよくあったので本文領域の広いデザインから選択した。
CSSとかいじれば多分広げられると思うが僕にその技術はない。

よさそうなのを選んだはいいが、フォントが小さいとか色がわかりづらいのは嫌なので結局CSSをいじることに・・・。
CSSが何なのかも知らないが、よく見るとちゃんとコメントとかあって読めないことはない。
フォントサイズとか色とか適当に変えて見やすくした。

暇を見つけて過去記事のソースコードも修正したい。

ブログのフォントとか変えたければ設定してあげるよ! >> 妻 (にゃ☆にゃ☆にゃッチ)
ジャジャガッチ | コンピュータ | 22:13 | comments(0) | trackbacks(0) |

ストレス解消にAOJ0000-0003

先日は雪のあまり降らないここでも雪が積もった。少しだけど。
6時半ごろ会社に行くため家を出るとまさかの白銀の世界。白銀は言い過ぎか。
止める妻を振り切りゆっくり慎重に出社。
何事もなく無事でよかった。

時間帯が早かったため車も少なく、みな慎重に運転していたためそれほどの混乱は見られなかった。
8時ごろには色々なところで事故が起こっていたようだ。
車が増えると無謀な運転をする輩も増えるだろうし。

高校の頃、大雪で朝の列車が止まったことがあった。
代替のバスも出たのだが、よし、バスに気がつかなかったことにしよう、と登校しなかったことを思い出した。

//////////////////////////////////////////
AOJ0284に疲れ果てたのでストレス解消 & C++の練習に既に解いていた0000-0003を解き直した。
僕がC++を始めた当初はいわゆるbetter Cとして使っていたので、いたるところにCからの名残りが残っていた。
特に入出力関連(printfとかね)と文字列はC風を貫いていた。
C++なのに頑なにchar型を使いつづけていて、新人の子に何でstring使わないんですか?と聞かれたこともある。
でも僕は文字の配列としての文字列が透明感があって好きで、長らく離れられなかった。
でも最近C++を再勉強したことで大分C風コードを減らすことが出来た。
でも日常的にコード書かないとすぐに以前の自分に戻ってしまいそうなのでAOJを練習に使うことにした。
一応λ式も取り入れてるよ!

0000:
#include <iostream>

int main()
{
	for(int i=1;i<=9;i++)
		for(int j=1;j<=9;j++)
		{
			std::cout << i << "x" << j << "=" << i*j << std::endl;
		}
	return 0;
}

0001:
#include <iostream>
#include  <vector>
#include <algorithm>

int main()
{
	std::vector<int> heights(10);
	for(int n=0;n<10;n++) std::cin >> heights[n];

	std::sort(heights.begin() , heights.end(),std::greater<int>());//逆順にソート
	std::for_each(heights.begin() , heights.begin()+3 , [](int n){std::cout << n << std::endl;} );

	return 0;
}

0002:
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
	std::vector<std::string> vstr;
	while(1)
	{
		int a , b;
		std::cin >> a;
		if(std::cin.eof()) break;
		std::cin >> b;
		vstr.push_back(std::to_string(a+b));
	}

	std::for_each(vstr.begin() , vstr.end() , [](std::string str){std::cout << str.size() << std::endl;}) ;
	return 0;
}

0003:
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
	int N;
	std::cin >> N;

	std::vector<bool> YorN;
	for(int n=0;n<N;n++)
	{
		std::vector<int> abc(3);
		for(int i=0;i<3;i++) std::cin >> abc[i];
		std::sort(abc.begin() , abc.end());
		if(abc[2]*abc[2]==abc[1]*abc[1]+abc[0]*abc[0]) YorN.push_back(true);
		else YorN.push_back(false);
	}
	std::for_each(YorN.begin() , YorN.end() , [](bool yn){yn ? std::cout << "YES" : std::cout << "NO"; std::cout << std::endl;} );
	return 0;
}
 
ジャジャガッチ | C/C++ | 22:42 | comments(0) | trackbacks(0) |

小林泰三「海を見る人」読了

小林泰三「海を見る人」を読了した。
SF短編集。

イマイチかな、という話もあるが、そこそこ面白かったのは
「独裁者の掟」
「母と子と渦を旋る冒険」
「海を見る人」
「門」
の4つ。
母と子の〜以外は恋愛系だ。
一押しは母と子の〜かな。かなりシュールだけど少し狂気が混じっている感じが小林泰三らしい。

小林泰三は恋愛小説もいけるのか。まあ全然普通の恋愛小説ではないけど。
「門」が爽やかでいい感じ。

これは小林作品にしては色々な人におすすめできる。
暇な人は読んでみましょう。
 
ジャジャガッチ | その他 | 21:26 | 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) |
1/3PAGES | >> |

12
--
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