Mackey's Lab

博士を取るまでの備忘録

C++

GCC のバージョンを 4.9 に上げる

C++ プログラミングをしていて,C++11 の STL を利用したいときがある。 しかしながら、CentOS 6 とか Ubuntu 12 系列ではあらかじめ入っている(若しくは yum なり apt-get なりでパッケージとして簡単に導入できる)GCCのバージョンは 4.4 系である。残念…

プロキシを利用した wget にハマる

トラブル プライベートネットワーク環境にあるマシンの gcc バージョンを 4.4 から 4.9 へあげる際にプロキシ経由で wget する必要があった。http の wget は正しく動作するのだが、ftp になるとうまく動作しない。 http プロキシの設定時に /etc/profile に…

高並列性サーバプログラムの実装(サーベイ編)

より多くのクライアントからの同時アクセスを捌くためにサーバプログラムのパフォーマンス改善が必要になってきた。世に言う C10K 問題とかその話に近い。C10K 問題については下記の Web サイトを参考にすると良いが、簡単に言うと「ハードウェアの性能上は…

epoll におけるレベルトリガーとエッジトリガー

epoll を利用したプログラミングをやっていて「レベルトリガー」と「エッジトリガー」という聞き慣れない単語を目にした。 これらの言葉はどうやら電子工学や制御工学などでよく利用される言葉のようである。調べるとマイコン制御などの記事が多く出てくる。…

FUSE におけるデバッグ手法 (OSX FUSE編)

OSX FUSE を利用していてデバッグに困った。今回の実装では FUSE をダウンロードした example というディレクトリに入っている hello.c というプログラムを変更しながら実装をしているのだが、デバッグが難しい。 というのも、main 関数で呼ばれている fuse_…

FUSE を利用したインターフェース作成

クラウドベースのストレージシステムを作成していると Client インタフェースをどのように実現するのかが重要となる。 これまでは C++ の Client API を提供し、ユーザ側で自由に実装してもらう(というのは建前で実際はユーザインタフェースを作成するのが…

waf の導入

大学の研究室で Espresso というシステムを開発している。これは基本的に C++ で書かれているので最初(プログラム全体が小さいうち)は手作業で Makefile を書いていたのだが、さすがにそろそろ限界が近づいてきたのでビルドシステムを導入することを決意。…