2013-01-01から1ヶ月間の記事一覧

Makefileの書き方②

マクロの利用 前回では、すべて省略せずにMakefileを書きました。一応これでMakefileとしての必要最低限の機能はみたしています。ですが実際のオープンソースでは、一般的にマクロが利用されています。そのほうが、Makefileの修正等が容易になります。 ソー…

プロキシサーバを超えてのgitコマンドの実行

プロキシサーバを超えてgitコマンドを実行する方法の紹介です。 yumコマンドやwgetコマンドと同様に、gitコマンドもプロキシサーバを超えるのには設定が必要になります。以下のコマンドをコンソール上から入力します。 # git config --global http.proxy プ…

Makefileの書き方①

Makefileを使う理由 分割コンパイルのページのように、複数のソースコードから実行ファイルを作成する場合、gccコマンドですべてのファイルを指定する必要があります。 ソースファイルが100個なら、コンパイルの度に100個のファイル名をミスなく入力すること…

エコーサーバの実装

前回の知識を用いてサーバを実装してみます。サーバといってもウェブサーバ・メールサーバ・ファイルサーバ・DNSサーバとさまざまありますが、エコーサーバとは、クライアントからの入力をそのまま出力するという最も単純(であまり有用でない)なサーバです。…

分割コンパイル

前回にエコーサーバを実装しましたが、今後ウェブサーバ等のもう少し実用的なサーバの実装にも挑戦してみます。 方針としてはエコーサーバを骨組みとして、そこから機能を逐次追加していく方針です。エコーサーバのプログラムに直接加筆修正を加えてもよいの…

C言語でのソケットプログラミングの基礎

ネットワークプログラミングの難しさとは C言語のネットワークプログラミングは、システムコールや構造体が複雑でやや苦手意識があります。勉強の意味をこめてまとめてみました。 しかし、ネットワークプログラミングの基本で本当に難しいのは、そうした複雑…

良いコードの哲学

良いコードを書きたいけれど、そもそも何が良いコードなのかがわからない。 また具体的な方法論がわからない。 良いコードを書くためには経験に裏付けされた哲学を学ぶ必要がある。 以下にリーダブルコードを読んで自分なりに良いコードに関してまとめてみた…

ライフゲーム

class Table def initialize(x,y) @board = Array.new(x).map!{Array.new(y)} @x_size = x @y_size = y end def update (0 ... @x_size).each do |i| (0 ... @y_size).each do |j| @board[i][j] = rand(3) end end self.show end def show print "\33c" (0 .…