Shammer's Philosophy

My private adversaria

2010-01-01から1年間の記事一覧

strstr 関数

C

strstr 関数は、文字列の中でとある文字列を検索し、最初に見つかった位置を返す関数のようだ。 URL を受取り、プロトコル部分のみを返すような関数を書きたい。この strstr が使えるのではないだろうか。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,</string.h></stdlib.h></stdio.h>…

ShellScript条件分岐ーif文-20100921

ShellScript条件分岐ーif文 - Shammerismのアップデート版。文字列の比較を追加。 #!/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…

HTTP Client ver 0.24

C

HTTP Client ver 0.23 - Shammerismの内容に、nslookup sample C version - 関数版 - Shammerismの関数を加えた。ようやく、IP アドレスでもホスト名でもアクセスできる状態になった。 #include <ctype.h> #include <err.h> #include <netdb.h> #include <regex.h> #include <stdio.h> #include <stdlib.h> #includ</stdlib.h></stdio.h></regex.h></netdb.h></err.h></ctype.h>…

nslookup sample C version - 関数版

C

nslookup sample C version - Shammerismでは、全て main の中に書いていたが、IP アドレスを取得する処理を関数に分けてみた。自分が作成する予定の HTTP Client では、IPv4 のみ使用するつもりなので IPv6 のところは一旦コメントアウト。それなら inet_nt…

関数間での文字列データのやりとり

C

文字列を返す関数 - Shammerismでは、関数間でデータをやりとりする際にヒープを使用した。これが普通と思っていたが、単純に char * test1(){ char * v = "0123456789"; return v; } で、呼出元は 0123456789 を把握できた。関数の終了と同時に v の内容も…

不満と不幸

Newsweek 日本語版で面白い記事があった。国別の成長力・幸福度ランキングというもの。こういうのがあると、当然気になるのは日本の順位。日本の幸福度はどれくらいなんだろう?とりあえず、確認する前に、だいたい80位くらいかな、と予想して見てみたとこ…

配列の空き要素は?

C

char[] のサイズ - Shammerismの内容と少し関係あるかも。 初期値を10として配列を宣言したけれども、実際には10も使用しなかった、という場合、空き領域はどうなるのか確認してみた。どうやら、0 で初期化される。さらに、文字列の場合、strlen を使用する…

HTTP Client ver 0.23

C

C 言語で HTTP クライアントを作ってみよう (2)に有用な情報を発見。Socket も FILE と同じように扱うのがよさそうだ。HTTP Client ver 0.22 - Shammerismで考えた関数化と合わせて以下のように変更。使わない関数もいくつかあるが、今後のメモとして。だい…

HTTP Client ver 0.22

C

HTTP Client ver 0.21 - Shammerismで、応答受信時に処理が停滞してしまう事象はインチキくさいが Connection: close を付与することで一時的に回避。Connection: keep-alive 時には、Content-Length をカウントして受信しきったらクローズするようにしない…

HTTP Client ver 0.21

C

HTTP Client ver 0.2 - Shammerismをちょっとだけ改良した。旧実装では、is_valid_ipaddr が条件によっては何も返さない箇所があった。そのため、コンパイルオプション次第では warning: control may reach end of non-void function [-Wreturn-type]の警告…

String.indexOf-C言語版

C

HTTP Client を書く際に、URL の判定は必須。その際、: が何文字目にあるとか、? を含んでいるかとか、そういう処理をすることになる。それをするための関数を作成。Javaでいうところのjava.lang.String.indexOfといったところか。まずは、main 関数内で直接…

open-junk-file.el

即座に *scratch* バッファと同じようなバッファを作成でき、しかもそのバッファを蓄積しておくことを可能にする elisp があることを知った。情報源はこの本。 Emacsテクニックバイブル〜作業効率をカイゼンする200の技(技術評論社) http://gihyo.jp/book/…

The key-chord.el, My Own Keybind Helper

Emacs 使っていると、キーバインドがどうしても足りなくなる。大体のキーバインドは、 Ctrl + *** (Ctrl - x) + *** (Ctrl - c) + (Ctrl - ***) (Ctrl - c) + *** (独自割り当て用に定義) という形で使用する形になっている。でも、いちいち Ctrl を押しなが…

CygwinのEmacs

仕事の都合で、Cygwinを入れてみた。当然、エディタはemacs。 試しに使ってみたが、Ctrl/X+Ctrl/Cで終了できない。 なんだ、使えないじゃないか・・・と思って調べてみたら、かなり有名な話のようで 対処法を書いたページが容易に見つかった。 http://fuu-ga…

Bash Shell Script my pocket reference - 20100812

if 文 sample 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 "You are number#2."; elif [ $1 -eq 3 ];then echo "You are number#3."; else echo "Invalid argume…

文字をテロップのように表示する

C

BohYoh.com【著書】解きながら学ぶC言語の問題の一つとして取り上げられていた。putchar('\r')を使用することで改行せずに同一行の先頭にカーソルを移動できる。そこから文字をずらして表示させていけば、テロップのように表示できる。 #include <stdio.h> #include <string.h></string.h></stdio.h>…

EOF到達まで

C

改行とEOF - Shammerismの続き。実装を以下のように変更してみて、どの程度まで getchar() を実行し続けることができるかを試してみた。 #include <stdio.h> int main(int argc, char * args[]){ int i = 0; puts("Type:"); while ( 1 ) { char c = getchar(); if ( c</stdio.h>…

改行とEOF

C

入力バッファクリア方法 - Shammerismでは、getchar() の結果が \n だったら、つまり、改行だったら getchar() を終わりにする、というようにしていたが、どうやら改行での判断は一つの手段でしかないらしい。改行以外にEOFでの判定もできるようだ。 #includ…

列挙型enum

C

あまり馴染ないけれども、C には列挙型というものがあるようだ。あらかじめいくつかの選択肢を用意しておき、それ以外は選択不可というもの。値の指定は不要だが、内部では Integer で扱われているようだ。 #include <stdio.h> enum sample { A, B, C}; int main(int </stdio.h>…

JavaScriptによるソースコード整形表示関数化

JavaScript 二重配列 - Shammerismの内容を関数にした。こんな感じ。 function src_organize(id){ var escapeChars = [ [" ","&nbsp;"], ["<","&lt;"], [">","&gt;"], ["\"","&quot;"], ["&","&amp;"] ]; var array = document.getElementById(id).innerHTML…

JavaScript 二重配列

JavaScriptによるソースコード整形表示 - Shammerismでは、エスケープ文字を一つ一つ if 文で判定していたが、エスケープ文字をまとめて二重配列として定義。 <script type="text/javascript"> var escapeChars = [ [" ","&nbsp;"], ["<","&lt;"], [">","&gt;"], ["\"","&quot;"], ["&","&am…

JavaScriptによるソースコード整形表示

JavaScript で文字列を文字単位で処理 - Shammerismの内容にテーブルによる整形部分を追記。 <script type="text/javascript"> var array = document.getElementById("sample-source").innerHTML.split("\n"); var lineLength = array.length; replaced = "<table border=\"0\">"; for( i = 0 ; i < lineLength ;</table>…

JavaScript で文字列を文字単位で処理

document.getElementById($ID).innerHTML.split("\n") した直後は 1 行単位の配列になる。 1 行ではなく文字単位で内容をチェック、必要に応じて変換が必要(たとえば、半角スペースを にする等)。 文字列から文字を取り出す、というか一文字単位で何かするに…

JavaScriptでソースコードに行番号付与

以下の記事で JavaScriptで任意のHTML要素を取得する - Shammerism JavaScriptでHTML要素の改行を置換する - Shammerism JavaScriptでHTML要素を置換する - Shammerism JavaScript を使用して特定TAGの HTML を置換する方法がわかった。 これらの次のステッ…

JavaScriptでHTML要素を置換する

document.getElementById($ID).innerHTML で HTML 内の文字列を取得できることがわかった。 今度は、これを編集して、編集した結果で置換したい。innerHTML にそのまま代入すればいいのだろうか。 <script type="text/javascript"> var array = document.getElementById("sample").innerHTML…

JavaScriptでHTML要素の改行を置換する

document.getElementById($ID).innerHTMLでHTML内の文字列を取得できることがわかった。今度は、これを編集して表示したい。ソースコードが対象とわかっているから、まずは改行タグを追記する。普通の改行を置換すればいい。 <script type="text/javascript"> var array = document.getEleme…

JavaScriptで任意のHTML要素を取得する

Lispでソースコードを整形表示HTMLにするサンプルをソースコードをHTML表示用に整形するLISPver1.0 - Shammerismで作成しているが、やっぱりJavaScriptで書きたいと調べてみた。innerHTMLというのを使用すればできそうだ。【JavaScript】 要素を取得する: や…

C言語・変数の最大値を超えた場合は?

C

以下のように、宣言した変数の最大値を超えるような計算をした場合、その変数は最小値に戻るようだ。 #include <stdio.h> #include <limits.h> int main(int argc, char * args[]){ int value = INT_MAX; printf("value = %d\n", value); printf("value = value + 1\n"); value </limits.h></stdio.h>…

変数のサイズ判定

C

変数の最大値・最小値 - Shammerismでは、各型の最大値と最小値を確認するプログラムを書いてみたが、今度は使用するメモリ領域を確認するプログラム。 #include <stdio.h> int main(int argc, char * args[]){ printf("sizeof(char) = %u\n", (unsigned)sizeof(char)</stdio.h>…

C の static 変数

C

百聞は一見に如かず。やってみるべし。 #include <stdio.h> int g = 0; void static_test(){ static int x = 0; int y = 0; printf("Global Static Normal\n"); printf("====================\n"); printf("%6d %6d %6d\n", g++, x++, y++); printf("================</stdio.h>…