RSS

月別アーカイブ: 6月 2012

bash コマンドライン引数チェック

if [ $# -eq 0 ]
then
 echo Usage: ...
else
 ...
fi

[の直後と]の直前に空白を入れること!

 
コメントする

投稿者: : 2012/06/22 投稿先 Linux

 

タグ:

MongoDb ruby ドライバで出るメッセージ

こんなメッセージが出たらすなおにbson_extをインストールすれば次回から出なくなります。

**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance.
You can install the extension as follows:
gem install bson_ext

If you continue to receive this message after installing, make sure that the
bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version.

Ubuntuなら

$ sudo apt-get install bson_ext

でオーケー。

 
コメントする

投稿者: : 2012/06/21 投稿先 Database

 

タグ: ,

C言語ではポインターが鬼門である!

C言語は、これからプログラミングを始める人には向きませんね。
最大の鬼門が「ポインター」です。
だいたいの人はこれでつまづいてしまいます。
C言語の入門書の最初には”Hello World”というサンプルがありますが、これは文字列を表示させるだけの単純なプログラムで誰でも理解できます。
それじゃ、キーボードから文字列を入力するサンプルはというと、ここでポインタを使うことになります。

文字列を入力するための関数は、scanfですがパラメータはポインタでなければなりません。scanfは下のように定義された関数ですが、…の部分が可変数個のデータが読み込まれる変数です。これはポインタでなければなりません。

int scanf(const char *format, ...)

したがって、次のようなプログラムを書くと正しく動作しません。

 #include <stdio.h>
 int main() {
   int n;
   printf("Enter integer > ");
   scanf("%d", n);
   printf("%d\n", n);
   return 0;
 }

上のプログラムをコンパイルして実行してみるとこんな感じになります。正しく実行されると読み込んだ数がそのまま表示されるはずですが、”Segmentation fault”となってしまいます。

* それ以前にコンパイラの警告が出ています。

user@ubuntu:~/workspace/c/stdio$ vi scanf.c
user@ubuntu:~/workspace/c/stdio$ gcc -o scanf scanf.c
scanf.c: In function ‘main’:
scanf.c:6:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat]
user@ubuntu:~/workspace/c/stdio$ scanf
Enter integer > 100
Segmentation fault

user@ubuntu:~/workspace/c/stdio$

それではポインタにするにはどうするかというと、”&”をnの前に付けます。&を付けると「nのポインタ」という意味になります。

#include <stdio.h>
int main() {
  int n;
  printf("Enter integer > ");
  scanf("%d", &n);
  printf("%d\n", n);
  return 0;
}

これだと、ちゃんと入力した数値が表示されます。

user@ubuntu:~/workspace/c/stdio$ gcc -o scanf scanf.c
user@ubuntu:~/workspace/c/stdio$ scanf
Enter integer > 100
100
user@ubuntu:~/workspace/c/stdio$

 
コメントする

投稿者: : 2012/06/20 投稿先 C

 

Node.js Hello world!

(function(){ 
  var http, server, sys; 
  sys = require('sys'); 
  http = require('http'); 
  server = http.createServer(function(request, response) { 
    response.writeHead(200, { 
      'Content-Type': 'text/plain' 
    }); 
    response.write('Hello World!!\n'); 
    return response.end(); 
  }).listen(8124); 
  sys.log('Server running at http://127.0.0.1:8124/'); 
})();
 
コメントする

投稿者: : 2012/06/19 投稿先 node.js

 

タグ:

無償 C/C++ コンパイラの入手方法

 

その1

LinuxをインストールすればすぐCコンパイラ (gcc) が使えます。

C++コンパイラ (g++) はネットからインストールできます。Ubuntuなら

$ sudo apt-get install g++

と入力すればg++がインストールされます。

(Windows上でLinuxを使うにはVMWare Playerなどを先にインストールする必要があります)

 

その2

Cygwin をインストールすればCコンパイラ (gcc) が使えます。Cygwin は Windows上でUnix(Linux)コマンドを使えるようにするためのエミュレータみたいなものです。

 

その3

Microsoft Visual C++ Express (無償でダウンロード可能)をインストールすれば、C/C++コンパイラが使えます。

 

その4

bcc32 (Borland C/C++ 5.5) をダウンロードする。

http://www.embarcadero.com/jp/products/cbuilder/free-compiler

 
コメントする

投稿者: : 2012/06/19 投稿先 C