タグ

ブックマーク / x68000.q-e-d.net/~68user (9)

  • 用語集:タイムスタンプ: UNIX/Linuxの部屋

    最終更新 2019-01-02 UNIX・Linux のファイルには、一般的に 3つのタイムスタンプがある。 atime … 最終アクセス時刻 (access time) mtime … 最終変更時刻 (modify time) ctime … 最終ステータス変更時刻 (change time)

  • 用語集:ファイル制限まとめ: UNIX/Linuxの部屋

    最終更新 2017-05-19 UNIX/Linux におけるファイル・ディレクトリ名に使用可能な文字、ファイル名の最大長、最大ファイルサイズ、ファイル数の最大長などについてまとめる。

  • Xlib 編 (1)

    とりあえずウィンドウを出すぞ〜 X Window System (以下 X) はクライアント・サーバで、ネットワーク透過性を…と なんて書いてもつまらんので、略。 要は、X というのは画面にウィンドウを表示し、そのウィンドウの中で いろんな表示を行うための仕組み。 で、Xlib というのは最も低レベルなライブラリのことなのね。 低レベルだから手続きも多くてめんどくさいけど、 ウィンドウを出すために何をやっているかを把握するのは、 無駄なことではないよ。 とりあえず、ウィンドウを出してみましょ。はい、サンプル。 xlib-1.c 1: #include <X11/Xlib.h> 2: #include <X11/Xutil.h> 3: 4: int main(int argc, char *argv[]){ 5: Display *display; 6: Window window; 7:

  • *BSD で kqueue・kevent を使ってみよう

    *BSD で kqueue・kevent を使ってみよう select() の欠点 select() は複数のディスクリプタをポーリングできる便利なシステムコールです。 しかしパフォーマンスはよくありません。理由は以下の通りです。 ユーザプロセスは、監視対象のディスクリプタ一覧をユーザ領域からカーネル領域にコピーする必要がある。 カーネルがポーリング結果をユーザ領域に返す際もコピーしなければならない。 カーネルは、ポーリング対象のディスクリプタを知るために、配列の全要素を調べなければならない。 ユーザプロセスも、入出力可能なディスクリプタを知るために、配列の全要素を調べなければならない。 上記の作業は、select() を発行するたびに毎回行わなければならない。 select() のパフォーマンスが悪いことは広く知られていたので、 各 OS でいろいろな取り組みが行われてきました。 Sol

  • コマンド:xargs: UNIX/Linuxの部屋

    最終更新 2019-01-26 UNIX/Linux の xargs コマンドは、標準入力から受け取った文字列を、コマンドの引数として指定できるコマンドである。コマンドライン文字列が長すぎるエラーを回避に使用する。また、xargs の実装によっては並列実行して処理を高速化させることができる。

    コマンド:xargs: UNIX/Linuxの部屋
  • UNIXの部屋 コマンド検索:シェバング (*BSD/Linux)

    などと記述するが、この「#!」のことを「シェバング」(shebang) と呼ぶ。また、この行全体を「シェバング行」と呼ぶこともある。また、「シェバング」ではなく、英語発音により近いい「シバン」と表記する場合もある。なお、シェバングの語源は「sharp bang」「shell bang」など、いくつかあるようだ。

  • TCP/IP エラー処理 connect 編

    connect(2) のエラー TCP において connect(2) 呼出し時に発生する可能性のあるエラーは以下の通りです。 タイムアウト RST 受信 EHOSTUNREACH また ENETUNREACH シグナル受信 その他 まず、connect(2) 時の正常な流れをしっかり覚えておいてください。 (connect(2) を呼んで) SYN を送る SYN+ACK が返ってくる (ここで connect(2) から戻る) ACK を送る タイムアウト もし仮に、SYN を送ったものの、相手側から SYN+ACK が返ってこない場合は、 (ローカルの TCP スタックが) しつこく SYN を再送します。何度 SYN を送っても SYN+ACK が返ってこない場合はあきらめてタイムアウトします。 「SYN+ACK が返ってこない」というのは、例えば以下のようなケースが考えられます。

  • echo サーバを作ってみよう (4)

    ファイルディスクリプタ この項は少し難しいので、おなかいっぱいな人は先に進んで下さい。 前節では、fork を使ったマルチスレッド版 echo サーバを作りました。 一つ一つのプロセスは単純な動作しかしていないので、作るのも 理解するのも簡単なのですが、欠点は「プロセス数が増加しすぎること」です。 クライアントが接続していない状態でも 1 プロセス、 5 クライアントが接続していると 6 つものプロセスが実行されることになります。 今度は select を使って、全てを 1 つのプロセスの中で処理することにしましょう。 ここでいう select とは 4引数 select のことです。 perl には 1引数の select と 4引数の select があります。 1引数 select はデフォルトのファイルハンドルを選択する関数ですが、 4引数 select とは全く関係ありません。

  • HTTP クライアントを作ってみよう(5) - Basic 認証編 -

    Basic 認証において、ユーザ名とパスワードを送信する方法を説明します。 まずユーザ名とパスワードをコロンで結合します。 もしユーザ名「hoge」、パスワード「fuga」の場合、「hoge:fuga」という文字列を作るわけです。 それを BASE64 でエンコードします。 「hoge:fuga」を BASE64 エンコードすると「aG9nZTpmdWdh」となります。 UNIX のコマンドでは、以下のようにして確認できます。 % echo -n 'hoge:fuga' | base64 -e % echo -n 'hoge:fuga' | openssl enc -e -base64 % echo -n 'hoge:fuga' | nkf -MB % echo -n 'hoge:fuga' | perl -MMIME::Base64 -ne 'print encode_base64($_

  • 1