Shammer's Philosophy

My private adversaria

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

EchoServer

C

そろそろ、実用的かどうかは別にして、これまでよりは大きいプログラムを書いてみようと思う。C言語で EchoServer を書く。C でSocketプログラミングする際の流れとしては、 socket を開く bind で socket が使用するリスンアドレス、ポートを指定する liste…

ShellScript条件分岐ーif文

書こうとするたびにどこかのサイトで検索することになっているので自分用にメモ。 #!/bin/bash echo "IF example!"; if [ $# -ne 1 ];then echo "Usage: $0 [123]"; exit 1; fi if [ $1 -eq 1 ];then echo "You are number#1."; elif [ $1 -eq 2 ];then echo…

ロケールを変更する

インストール時に選択した言語に応じて自動で設定されているはずだが、それを変更したい場合は以下のコマンドを root 権限で実行すればいい。 dpkg-reconfigure

sudo を有効にする

インストール時のオプション選択によるのかもしれないが、有効にならない場合があったので有効にする方法をメモ。 su - apt-get install sudo. sudo update-alternatives --config editor and select favorite editor. visudo. Add this line next to root A…

デフォルトのエディタを変更する

crontab -e 等のコマンドを実行すると、デフォルトのエディタが起動してテキスト編集が可能になる。Debian だと、デフォルトでは nano というエディタが起動するが、これを vi や Emacs に変更できる。以下のコマンドで変更可能。 update-alternatives --con…

Lisp でディレクトリを作成する

手順としては以下。 make-pathname で PATH を作成 ensure-directories-exist まずは、絶対PATHを使用した例。$HOME に xxx というディレクトリを作成する例。 (setf x (make-pathname :directory '(:absolute "Users" "me" "xxx"))) (ensure-directories-ex…

ファイル操作

Lisp でもファイルの操作ができる。rename-file と delete-file というのがあったのでメモ。 [1]> (rename-file "test.txt" "x.txt") #P"x.txt" ; #P"/private/tmp/test.txt" ; #P"/private/tmp/x.txt" [2]> (delete-file "x.txt") #P"/private/tmp/x.txt" […

入力された数を文字列として扱う

プログラムの中で入力を受け付けたいということはよくある。この入力自体は (read) で受け取ることができる。しかし、入力が数字のみの場合、そのまま文字列として扱うことはできない。 ? (progn (format t "Type number:") (setf x (read)) (format t (conc…

Shellで繰り返し回数を指定する

いくつか方法はあるかもしれないが、以下のようにすればできることがわかった。while で無限ループ+breakというような書き方はしたくないが、忘れそうなのでメモ。 for i in `seq 1 5` do echo $i done一行で書く場合はこんな感じ。 for i in `seq 1 5`;do …

Shell で引数の数を判定する

$# という変数(?)に渡された引数の数が入っているようだ。これと if 文というか test 関数を使用して引数不足とか判定できる。 if [ $# -ne 2 ];then echo "Usage: $0 $ARG1 $ARG2"; exit 1 fiこれは引数2つを想定している例。スクリプトの最初に書いて…

Shell でファイルの存在を判定する

デフォルトの .profile には、以下のようなコードが書かれていることが多い。 if [ -f ~/.bashrc ]; then . ~/.bashrc fiてっきり、この意味は「~/.bashrc というファイルがあれば、それを実行する」という趣旨だと思っていたが、~/bin というディレクトリを…

TCP Socket 状態遷移

TCP

詳しく書かれたサイトを見つけたのでメモ。 第15回 信頼性のある通信を実現するTCPプロトコル(2) (3/3):基礎から学ぶWindowsネットワーク - @IT 第16回 信頼性のある通信を実現するTCPプロトコル(3) (3/4):基礎から学ぶWindowsネットワーク - @IT詳…

改行コード変換

Windows、Mac、Linux 混在環境だと、改行コードを変換したくなるときがある。方法はいくつかあると思うけれども、とりあえず以下の方法がある(MAC OS X HACKS/O'REILLY より)。 perl -pi -e 's/\r/\r\n/g' file_with_mac_linefeeds.txt(Mac -> Linux) perl…

Lisp Package その1

ほぼすべての言語で使えるが、Lisp にもパッケージがある。要は、NameSpace だ。Clozure CL では、*package* 変数に現在のパッケージが格納されている。 ? *package* #<Package "COMMON-LISP-USER"> ? デフォルトでは COMMON-LISP-USER パッケージのようだ。 自分専用のパッケージを定義</package>…

Lisp Thread

Lisp では、標準仕様で Thread の API が定まっていないようだ。そのため、スレッドを使用するとなると 共通ライブラリを入手 処理系ごとのマニュアルを参照する のいずれかが必要。仕様として定義しないで競争力を高める、という狙いがあったようだが、これ…