« 2007年9月 | トップページ | 2007年11月 »

2007年10月

2007/10/31

VMware Toolsのその後

以前インストールに成功したVMware Toolsですが、今日になって起動に失敗するようになってしまいました。解像度の変更はできるのですが、ファイル共有などはできなくなってしまいました。

この原因はどうやらカーネルのバージョンによるもののようです。(昨日カーネルのアップデートをしました)

原因が推測できたところで、前回と同じ方法でVMware Toolsを再インストールしたところ、無事にVMware Toolsが起動しました。(VMware ToolsはVMware Player ver2.02のものを使用)

アップデートしたカーネル2.6.23.1では以前の2.6.22.9のときのように、インストール中のエラーは起こりませんでした。(私の使用環境では起こらなかっただけかもしれませんが)

今後はカーネルをアップデートするときには注意が必要ですね。

| | コメント (0) | トラックバック (0)

今度こそJavaを

思えばJavaには一年ほど前に大学の講義で手を出しました。このときはJavaの文法を全く勉強せずにプログラミングしていました。教官が作った雛形をもとにEclipseのコード補完に頼り切ったそれは、全くおもしろくなく、中途半端に終わってしまいました。(数独を解くプログラムを課題にされたときは冷や汗ものでした)

この経験は私にJavaに対する悪い印象を植え付けるには十分でした。(このころC言語だけで手一杯だったので)しかし、最近、流体力学の数値シミュレーションをしてみたいと思って手にした本のサンプルコードがJavaで書かれていてJavaに対する興味が湧いてきました。

サンプルコードを解読するにも、C言語に翻訳するにもJavaをある程度知らないことにはどうしようもないので今度こそJavaをちゃんと勉強しようと思ったわけです。

簡単なコードを書くと、

class Sample1
{
   public static void main(String args[ ])
   {
      int num = 1031;
      System.out.println("Hello, Java!");
      System.out.println("整数num =  " + num + "です");
   }
}

となります。やっぱりC/C++をベースに作られただけあって似たような感じです。ただ、数値を表示するとき" + num + "とする部分はあまりなじみがないですね。(Rubyもこんなカンジですが)

勉強につかっているのはこの本です。

分かりやすくっていいですね。

| | コメント (0) | トラックバック (0)

2007/10/30

Advanced/W-ZERO3[es]のアカデミックパック

昨日発表されたウィルコムのAdvanced/W-ZERO3[es]アカデミックパックは学生の私にはとても魅力的なものです。

現在、Advanced/W-ZERO3[es]は新規契約価格が51,120円(W-VALUE SELECT)となっていますが、アカデミックパックでは27,600円(W-VALUE SELECT)と約半分まで下がった上、毎月1150円が割引されて、2年後にはユーザの端末負担が実質0円になります。

さらにアカデミックパックにだけランチャーアプリ「Quick Menu for Academic」が提供されます。(これは付属のmicroSDに収録されています)Quick Menuからは学生生活や就職活動に役立つアプリが起動できます。

アカデミックパックの対象であるうちに買いたいとは思いますが、27,600円あったらThink Pad X60用の8セルバッテリに手を出してしまうかも。

| | コメント (0) | トラックバック (0)

2007/10/29

拡張ユークリッドを用いたプログラム

以前からユークリッドのことで騒いでいましたが、プログラムを載せてみたいと思います。

問題は次のようになっています。

「正整数a, bを入力し、拡張ユークリッド互除法を用いて、gcd(a, b) = 1ならば、ax ≡1 mod bの解xを返し、gcd(a, b) ≠ 1ならば、0を返すプログラムをつくれ」

私の作ったプログラムを以下のリンク先にアップしてあります。(実は、だいぶ前にできていましたが、大学の課題なので自分が提出するまではアレかなぁと思いまして)

#include 
#include 

//拡張ユークリッドのアルゴリズム
int add_gcd(int a, int b, int *ans_x, int *ans_y, int *ans_gcd)
{
  int r_pre = a, r = b, r_next;
  int x_pre = 1, x = 0, x_next;
  int y_pre = 0, y = 1, y_next; 
  int q, k = 1;
  int ans;

  while((r_next = r_pre % r) != 0) {
    q      = r_pre / r;
    k++;
    x_next = q * x + x_pre;
    y_next = q * y + y_pre;
    //---変数を更新---
    r_pre = r;
    r     = r_next;
    x_pre = x;
    x     = x_next;
    y_pre = y;
    y     = y_next;
  }
  //不定方程式の解を求める
  *ans_x = pow(-1, k)   * x;
  *ans_y = pow(-1, k+1) * y;
  //最大公約数を計算
  *ans_gcd = (*ans_x * a) + (*ans_y * b);

  //---逆元を求める(逆元は正)---
  if(*ans_gcd == 1) {
    ans = (*ans_x + b) % b;
  } else {
    ans = 0;
  }
  //逆元もしくは0を返す
  return (ans);
}

int main(void)
{
  int n1, n2;
  int ans1, ans2, gcd;
  int output;

  puts("==============================");
  printf("整数1:");   scanf("%d", &n1);
  printf("整数2:");   scanf("%d", &n2);
  //---拡張ユークリッドアルゴリズムを計算---
  output = add_gcd(n1, n2, &ans1, &ans2, &gcd);
  puts("------------------------------");
  printf("%dx + %dy = %d\n", n1, n2, gcd);
  printf("(x, y) = (%d, %d)\n", ans1, ans2);
  //---ax懼1(mod n)を満たすx---
  puts("------------------------------");
  if(gcd == 1) {
    printf("%d * %d 懼 1 (mod %d)\n", n1, output, n2);
    printf("求める逆元:%d\n", output);
  } else {
    printf("gcd(%d,%d) 懼 1 より%d\n", n1, n2, output);
  }
  puts("==============================");

  return 0;
}

このプログラムでは変数を入れ替えて処理を進めるようにしています。(下手に配列でやるといろいろ制約ができてしまうので)

| | コメント (0) | トラックバック (0)

2007/10/28

やってしまった・・・

私のThinkPad X60にWindows Vista修正プログラム(KB929637)を適用したらキーボードの配列がアメリカ英語のものになってしまいました・・・

この修正プログラムを適用すると、どうやらキーボードのドライバを英語キーボード用のドライバに上書きしてしまうみたいです。

あぁ、困った。

私は英語キーボードを使ったことがないので、早く解決しないとタイピングが困難です。(日本語キーボードのものと記号の配置が全く違う!!)

---追記(同日23:45)---

なんとか解決することができました。私が毎日読んでいるブログ「せうの日記」のせうさんも過去に経験していたのを思い出したので、せうさんに質問したところ適切に指導していただきました。(この問答をリンクしておくので、同じ状況に陥った方はどうぞ

| | コメント (0) | トラックバック (0)

2007/10/27

やっと分かった。

”一次合同式の解x”と”拡張ユークリッドの不定方程式の解x”の扱い方がやっとわかった。

考えてた問題は、正の値で出せばよかったようだ。

この条件さえ出されれば問題は解決。拡張ユークリッドの不定方程式で求まったxの値を利用すればいいわけです。このxの値が正ならそのまま合同式の解として採用し、もしxの値が負ならこの値にb(ax ≡ 1 mod b のb)を加えることで合同式の解とすることができます。

この処理を文章どおりに書くとif文になってしまいますが、X = (x + b) % b (X:合同式の解、x:不定方程式の解)とすれば一行で求まります。

| | コメント (0) | トラックバック (0)

2007/10/26

れおぱるど

Leopardavailable_20071026

MacOS X 10.5 Leopardが今日、発売されたようです。(画像はアップルから借りてきました)秋葉原や銀座などのアップルストアでは雨にもかかわらず、行列ができたと報じられています。

私はMacを持っていませんが、一度はMacを買いたいなぁと思っています。(ThinkPad X60を買うとき、ちょうどソフマップのリニューアルオープンと重なってセール品のMac Bookを買おうか迷ったのです)

なにせキレイですから。Macは。Macのデザインの統一感はWindowsより優れていると言わざるおえません。さらに、Mac OS XはUNIXベースのOSということもあり、UNIXライクな使い方もできるわけです。

VMware上でMac OSが動作するようになれば必ず飛びつくんですがねぇ。(Mac OS上で動作するVMwareはリリースされましたが)

| | コメント (0) | トラックバック (0)

2007/10/25

情報収集はブログだが

もはや当たり前と言われるようなことかもしれませんが、ブログというものはよい情報源です。プログラミングをしている人のブログも結構存在していて、ちょっとしたテクニックだとか、便利なカスタマイズの方法など、かゆいところに手が届くような情報があったりします。

また、自分のアンテナで拾いきれないような分野の情報とか、同じ分野でも自分より深い考察とかが書かれているブログは読んでいてとても面白いです。目からウロコが落ちすぎてウロコが品切れになることも。

でも、こういう「良いブログ」はなかなか無いもので、私が見つけたのは10にも満たない数です。”一見いいことが書かれているようでも、1ヶ月に1エントリーしかないようなブログ”(実際は大したことは書かれていない)、”技術系な雰囲気なのにグルメ記事しかないブログ”(毎日何を食べたか報告してくれなくていいです)、”カテゴリーはいろいろ幅広く存在しているのにそのカテゴリー内の記事数は(0)なブログ”(じゃあ、なんでカテゴリーを作ったのだろう?)と、いろんな駄ブログがあります。

この程度ならまだいいほうで、ブログからブログへリンクを渡っていくとメガトン級の駄ブログが飛び込んでくるのです。”自称東大生が他人を見下すようなことを書いて炎上しかけているブログ”(2ちゃんねらーに目をつけられたようだ)、”自分からプログラミングやアルゴリズムの質問を受け付けているのに『そんなこともわからないのか』と切り捨てるブログ”(質問に答えるのがメインなのに?)、”漠然とプログラマーになりたいと叫んでいるブログ”(あっ、自分のだ。コレ)

ネット上にはいろんなブログがありますね。

良いブログ」をみかけたら是非教えてください。

| | コメント (0) | トラックバック (0)

2007/10/24

拡張ユークリッドと一次合同式

拡張ユークリッドというのは正整数(a, b)があるとして、不定方程式 ax + by = gcd(a, b) の(x, y)を求めるアルゴリズムであったと思います。

今私が考えている問題は、「gcd(a, b) = 1であるならば、ax ≡ 1 mod b の解x を返す」というものです。この一次合同式は「ax - 1 が b で割り切れる」というものです。単にこの解xを求めること自体は難しくもないのですが、正直なところ、よく分からないわけです。

解xは負の整数でもいいのか、不定方程式の解xとは違うものなのか(場合によっては同じ値になる)など疑問が湧いてきます。

うまく説明できる人がいたら教えてもらいたいものです。

| | コメント (0) | トラックバック (0)

2007/10/23

Adobe Reader脆弱性を修正

WindowsXP + InternetExplorer7の環境での脆弱性を修正するためのアップデートプログラムが公開されました。この環境ではAdobe Reader ver8.1以前でも脆弱性が発生するのでアップデートすることをおススメします。

なお、特定操作時の動作不具合も解消されています。

---アップデート、詳細情報はコチラ---

| | コメント (0) | トラックバック (0)

2007/10/22

プログラミングの実習

私はたまに愚痴をこぼします。

大学のプログラミングの実習で事前にVisual Studio(以下VS)を用いてプログラミングするとアナウンスされていたのですが、実際に使ったのはVSのCコンパイラだけで、エディタはMeadowでした。(MeadowはEmacsベースのソフト)

最近はEmacsをカスタマイズして使っていたので、デフォルト設定のMeadowでは使いづらいです。それに、WindowsではCtrlキーの位置を変えることが標準ではできないので小指がつりそうです。

一番アタマにくるのが、VSがあるなら統合開発環境として使えばいいし、統合開発環境ではプログラミングの勉強にならないって言うのなら、デュアルブートでFreeBSDが使えるんだし、そちらを使わせてくれ!コンパイラだけVSを使うならGCCでもいいじゃないか。ということです。

次回の実習のときは早めに行ってキーボードのレイアウトとMeadowのキーバインドをカスタマイズしようと思います。Emacs小指になる前に。

| | コメント (0) | トラックバック (0)

2007/10/21

ポインタじゃないとダメ

void add(int num)
{
  num++;
}

int main(void)
{
  int x;
  add(x);
  return 0;
}

先日、実習でこのようなコードを書いたとき、関数addに渡した変数xがプラス1されていないことに当惑している人が大勢いました。

mainのなかでadd(x)と書いたとき、関数addには変数xの一時的なコピーが渡されます。したがって、関数addのなかではxのコピーをいじくっているだけで、実際のxには反映されません。

ここでポインタが必要になってきます。コードの変更点は

void add(int num) 

→ void add(int *num)

add(x)        

→ add(&x);

このようになります。&xは変数xのアドレス、つまり番地です。そして仮引数numを「intへのポインタ型」にして宣言します。(仮引数の前に*をつければよい。ちなみに*は間接演算子という。)関数addに渡されたポインタ(アドレス)に間接演算子*を適用するとそのポインタの示すオブジェクト(実体)に変更を加えることができるようになります。

| | コメント (0) | トラックバック (0)

2007/10/20

VMware Playerバージョンアップ

VMware Playerのバージョンが2.02になりました。見かけ上は前回のバージョンアップほどの違いはありませんが、多分どこかよくなったんでしょう。

Link : VMware Player ver.2.02

| | コメント (0) | トラックバック (0)

2007/10/19

C言語からGnuplotを呼び出す

数値計算をしていると、データを出力してGnuplotでグラフを作成という作業をよくするんですが、この作業って結構面倒です。グラフをPostscriptにする作業まで終えてから間違いを発見したときなんて、まさに悲劇!!

ですが、コードの中にGunplotの操作を書いておけば、コンパイルして実行しただけでグラフまで作成されます。試しにコードを書いてみます。

/*
  プログラムからGnuplotを呼び出す
*/

#include 
#include 

int main(void)
{
  FILE   *gp;
  int    i;
  double x;

  //---Gnuplotを起動---
  gp = popen("gnuplot -persist", "w");

  //---座標の名前を入力---
  fprintf(gp, "set xlabel \"x\"\n");
  fprintf(gp, "set ylabel \"y\"\n");
  
  for(i=1 ; i<=200 ; i++) {
    x = 0.02 * i;
    //---Gnuplotのコマンドを実行---
    fprintf(gp, "plot sin(x-%f*pi)*cos(2*x-%f*pi)\n", x, x);
  }

  pclose(gp);

  return 0;
}

このコードのようにforループ内に処理を書くとグラフがアニメーションとして表示されます。また、このGnuplotの呼び出し方を応用すれば、一度にPostscriptファイルまで作成することもできます。これで悲劇ともお別れ、間違ってもコンパイル&実行で完了です。

今はいろんなグラフを表示するのがおもしろいです。

| | コメント (0) | トラックバック (1)

2007/10/18

VMware Toolsがインストールができた!

VMware Toolsがインストールできました。このサイトに書かれていたとおり私のFedora 7のカーネルではインストール中エラーが発生しましたが、エラーの対処法もしっかり書かれていたので問題ありませんでした。再起動してみると下の画像のように画面いっぱいにVMware Playerを使うことができます。(設定を1024×768にしています。Toolsなしでは800×600までしか利用できません)

Ps_3

さらにPlayerを最大化すると、Fedoraが画面いっぱいに広がります。Toolsインストール前は800×600のまま周りが黒くなるだけだったので、画面全てを使えるのは嬉しいです。

解像度の他には、WindowsでコピーしたものをFedoraにペーストできたり(逆もまたしかり)、ファイルをダイレクトにドラッグ&ドロップできたり、VMwareのファイル共有機能も利用できます。そして、今まで狂っていた時計もホストOSと同期し、VMware環境は最高に快適になりました。

以前はVMware Toolsをインストールした後、手動で実行して自動実行するように設定していたらしいですが、現在は自動でToolsが起動するようになっています。

それもこれも---先輩の手順書---のナスヌーイさんのおかげです。このサイトは非常に丁寧なつくりで、極めて分かりやすく書かれているので初心者にも安心です。

| | コメント (0) | トラックバック (0)

2007/10/17

VMware Toolsをインストールしてみよう

VMware Tools(以下、Tools)とは、仮想マシンにインストールするとVMware環境をさらに快適にすることができるようになるものです。具体的には、ホストOSとゲストOSの時計の同期、カーソルのシームレス移動、ホスト-ゲスト間でファイル共有などがあげられます。

これまでToolsをインストールしたいと思っていたのですが、自分の環境に適した情報を集められませんでした。ところが今日、キーワードを追加してググってみたら、いちばん欲しかった情報がのっているサイトが先頭にでました。(←今までの苦労はいったい・・・)

VMware PlayerにFedora 7をゲストOSとしてインストールした人にとっては、とても有益な情報があります。(この文をクリックするとそのサイトにいけます。)

私はこのサイトを参考に早速インストールしてみたいと思います。

| | コメント (0) | トラックバック (0)

1000Hit超えました!

今日でこのブログも1000Hitを超えました。このブログを読んでくれる人がさらに増えるように頑張りたいと思います。1000Hit記念に、このブログにアクセスしたOSの割合を調べてみました。

---このブログにアクセスしたOS(10月16日までの集計結果)---

OS 割合
1 Windows XP 292 57.9%
2 Windows Vista 72 14.3%
3 Windows 2000 63 12.5%
4 Linux i686 30 6.0%
5 MacPowerPC 9 1.8%
6 MacOS-X 5 1.0%
7 FreeBSD i386 4 0.8%
7 Windows 98 4 0.8%
9 Robot/Tool 3 0.6%
9 Windows Server 2003 3 0.6%
11 SunOS sun4u 2 0.4%
12 DoCoMo 1 0.2%

この結果を見るとVistaが第2位までシェアを伸ばし、Macのシェアを超えています。(このブログでMacを取り上げたことがなく、WindowsやLinuxよりの内容が原因ですが)

しかし、依然としてXPが過半数を占めています。まだ1,2年はXPが主流ですかねぇ。

| | コメント (0) | トラックバック (0)

2007/10/16

Fedora7でTeX

今までMS Wordでレポートを書いていましたが、理系学生なのでこれからはTeXで書いてみようと思いました。TeXとは組版処理ソフトウェアで数式を綺麗に描画してくれるので理系ではよく使われるソフトです。(詳しくはWikipediaのTeXのページをどうぞ)

このTeXの環境をFedora7に構築しようと思います。まずTeXをインストールします。スーパーユーザになるかsudoを使って

$ sudo yum install tetex*

と入力するとインストールできます。次に、TeXでコンパイルした文章は.dviファイルで出力されるのでビューワーをインストールします。同様にして、

$ sudo yum install xdvi

と入力してxdviをインストールします。とりあえずこれでTeXの文章を作成することができるようになりました。文章の書き方はここで置いておいて、コンパイルとプレビューの仕方について言及します。作成した文章をtest.texとすると、コンパイルは

$ platex test.tex

とします。そして組版された文章をプレビューするときは

$ pxdvi test.dvi

と入力するとxdviが起動して作成した文章を見ることができます。

FedoraでTeX文書を作成するときには文字コードに注意が必要です。Fedora標準ではUTF-8ですが、文章を書くときは日本語EUCで作成しないとコンパイルエラーとなります。よって、Emacsで作成するときは日本語EUCモードで起動する必要があります。例をあげると、

$ LANG=ja_JP.eucJP emacs test.tex &

というようにします。少し面倒ですが、Ctrl - Pで履歴をたどればそれほど面倒でもありません。

これで私のFedora7にTeX環境が整いました。

| | コメント (0) | トラックバック (0)

2007/10/15

Rubyプログラミング(1)の補足

前回、「Hello, Ruby !」と表示するプログラムを作ってみましたが、このプログラムの補足説明をしたいと思います。

printメソッドについて

print(“Hello, Ruby !\n”)

  ( )内は文字列オブジェクトであり、printメソッドの引数である。

  この文字列オブジェクト内の\nは改行を命令するものである。

  また、( )は省略することもでき、上のプログラムは

print “Hello, Ruby !\n”

  と書くこともできる。

  上の例ではアルファベットを表示しているが、

  日本語も問題なく表示することができる。 

ex) print “本日は晴天なり。\n”

prev <-

| | コメント (0) | トラックバック (0)

2007/10/14

権限委譲コマンド sudo

いままでyumでインストールする時、まずsuコマンドでスーパーユーザになってから作業していましたが、これがいちいち面倒です。そこで「sudo」というソフトを使うとログイン中のアカウントにroot権限を委譲することができます。

まずはsudoをインストールするために今までどおりsuでスーパーユーザになって

# yum install sudo

でインストールします。インストールしたらsudoの設定をしなくてはなりません。まずは

# /usr/sbin/visudo

とコマンドを実行するとsudoの設定ファイルが開きます。このとき開いたエディタはviなので、勝手が違います。次のように操作してください。

  1. 設定ファイルが開いたときはviのコマンドモードであり、「k」で上、「j」で下、「h」で左、「l」で右にカーソルを操作できる。
  2. 設定ファイルの下のほうに「root   ALL=(ALL)   ALL」と書かれた行があるのでそこまでカーソルを移動させ、その下の行に「ユーザー名   ALL=(ALL)   ALL」と追記する。文字を入力するには「i」を押してviのインサートモードに移行する。
  3. 文字を削除するには「Esc」でコマンドモードに戻り、「x」でカーソルのある文字を削除することができる。
  4. 変更した設定を保存し、viを終了させるには「:wq」と入力する。

これでsudoを使えばroot権限が委譲されるようになります。試しにインストール作業をするときは、

$ sudo yum install ruby

このようにコマンドの前にsudoをつけると指定したコマンドがroot権限で動作します。動作するとパスワードを聞かれるので、現在ログインしているユーザのパスワードを入力してください。(コマンドが実行できないときは設定ファイルの追記部分が間違っている可能性があります。)

| | コメント (0) | トラックバック (0)

Vistaの評価について

やり場のない怒りを発散したくなったので。

他人のブログをめぐって読んでいると目に付くのが「Windows Vista」への批判。「不安定」や「重い」といった単語をよく見ます。そしてセットになっている「XPは・・・」のくだり。

私が言いたいのは「VistaはXPにも負けない最高のOSだ」ということではなく、「Vistaはスペックの低いハードでは確かに重いが、XPだってリリース当時は同じことを言われていた」ということです。(Vistaが不安定なのはユーザが原因であって、これはどのOSにも言えると思う。不安定で名高いMeを安定動作させている人もいたし、安定な2000やXPをフリーズさせている人もいた。)

XPも推奨RAM容量128MBでは重く、256MBは必要で、512MBで快適というOSでした。このRAM容量は現在ではごく普通の値ですが、XPリリース当時は「大容量」でした。それでも6年の間に普遍化して当然の値になっているのです。

この事実を忘れて「Vista批判」をするのは違うのではないでしょうか。XPが快適に動作するのはXPに適したスペックをもつハードウェアで動作させているからであって、Vistaを評価するならVistaに適したスペックをもつハードウェアで動作させてから批判するなりしてほしいということです。

個人的にはVistaの評価は「良い」ですね。

| | コメント (0) | トラックバック (0)

2007/10/13

すごい人

ソフトイーサ、VPNソフト「PacketiX VPN 2.0」の英語版を発売」という記事なんですが、ソフトイーサという会社は主にVPNソフトを開発する会社なんですが、この会社の会長は、確か23か24で私より1つか2つ年上だったと記憶しています。

以前、「日経ソフトウェア」でインタビュー記事が掲載されていたのが印象に強く残っていました。このソフトイーサの会長である登大遊さんは筑波大学に在学時にソフトイーサを立ち上げた人で、小学生の頃にファミコンの変わりにBASICで遊び、日本にインターネットが登場しはじめた頃には高い通信料を稼ぐためにOCNエコノミーでプロバイダ事業を計画しようとするようなスゴイ人です。

ほとんど同じ年代を過ごしてきた私は、この人と私の住む世界の違いに圧倒されてしまいました。この記事を読んだときはちょうどプログラミングに興味を持ち始めた時期だったので、登さんはある意味、あこがれの人でもあります。

もっとプログラミングを勉強して誰かにスゴイなぁって言われるようになりたいもんです。(ただ、私の場合は知識欲が強いだけかもしれませんが)

| | コメント (0) | トラックバック (0)

2007/10/12

ユークリッドのアルゴリズム

今日の暗号理論の講義では、暗号化させる上で必ず必要になるユークリッドのアルゴリズムをやりました。これは二つの整数の最大公約数を求めるためのもので、「ユークリッドの互除法」とも呼ばれます。今回はこのアルゴリズムを再帰を使った関数で表してみます。

/* 二つの整数の最大公約数を求める */

int gcd(int x, int y)
{
   if (y == 0)
      return (x);
   else
      return ( gcd(y,  x%y) );
}

このプログラムを説明するために例を挙げると、二つの整数120と45があったとします。これの最大公約数を求めるには

  • 120 ÷ 45 = 2 あまり 30
  • 45  ÷ 30 = 1 あまり 15
  • 30  ÷ 15 = 2 あまり 0

という操作をします。この操作を上のプログラムに当てはめて考えると理解できると思います。( x % y とは「xでyを割った余りを求める」という演算子)

| | コメント (0) | トラックバック (0)

2007/10/11

Rubyプログラミング(1)

今日から少しずつRubyプログラミングを紹介していきたいと思います。RubyはC言語よりも手を出しやすいと思うので、まだRubyを始めていないようでしたら一緒にRubyを勉強していきましょう。(基本的にはFedoraの使用を前提として話を進めていこうと思います。)

Rubyをインストールしていない人はyumなどでインストールしておいてください。yumだとまずスーパーユーザになってから、

# yum install ruby

とすればRubyがインストールされます。また、GUIの「ソフトウェアの追加/削除」でもインストールできます。(本家サイトにインストールガイドがあります。)

早速、プログラミングをしてみましょう。名前をhello.rbとしてファイルを作成して下さい。(Rubyソースコードの拡張子は.rbです。)作成したファイルに次の一行を書いてください。

print("Hello, Ruby!\n")

この一行を書いたら保存して、

$ ruby hello.rb

とターミナルに入力してください。すると、「Hello, Ruby!」と表示されるはずです。

-> next

| | コメント (0) | トラックバック (0)

2007/10/10

ThinkPad生誕15周年記念

Anniversaryhero_960x110_4

10月4日に生誕15周年を迎えたThinkPadですが、日本語版の特設サイトが公開されました。このサイトでThinkPadの軌跡をたどることができます。

また、15周年を記念してThinkPadが当たるキャンペーンを実施中です。

Link : ThinkPad 特設サイト

| | コメント (0) | トラックバック (0)

2007/10/09

今、流体力学が熱い!!

最近はゲームがリアルになり、水面の表現などで高度な流体シミュレーションが必要になっているようです。この記事ではNVIDIAによる流体シミュレーションとその3D表現についての講演内容を興味深く紹介しているので、興味のある人は読んでみてはどうでしょうか。

| | コメント (0) | トラックバック (1)

2007/10/08

Fedora 8のTest3がリリース

「Fedora 8」のTest3が10月4日にリリースされました。9月に公開されたTest2よりもLive CDからのインストール時間が短縮されたり、yumの操作性が改善されているようです。最終版の公開も11月8日に予定されているので今から楽しみです。ただ、「Fedora 7」は公開が予定より若干遅れたので「Fedora 8」も遅れるんでしょうかね。

Link : Fedora Project(英語サイト)

| | コメント (0) | トラックバック (0)

VMware Server

VMwareのことを調べていましたが、いまいち分からないのでPlayerに比べていろいろなことができるServerをインストールしてみます。

ホストOSにWindows Vistaは正式対応していないようなのでXPproマシンにインストールしようと思います。(さらに言えばXP pro/homeにも正式対応しておらず、正式対応は2000/2003であるが、特に問題はないようです。)

このサイトに詳しく紹介されているので参考にしようと思います。

| | コメント (0) | トラックバック (0)

2007/10/07

モチベーション

モチベーション、つまり”やる気”です。これを維持し続けるのって実はかなり難しいのではないでしょうか。プログラマーになるために勉強すると標榜している私ですが、モチベーションの燃費がとても悪いので、しばしばモチベーションを給油しなくてはなりません。

今回はこんな記事を読んで給油できたので紹介します。

---”21世紀のプログラムを作る君たち”に伝えたかったこと---

オープンソースを作ることなんてできるような技術を持ってはいませんが、読んでいると”やる気”が出てくるんです。

| | コメント (0) | トラックバック (0)

2007/10/06

20点問題:平方採中法

今回は20点問題となり少し難しくなってきました。問題はこんなのです。

平方採中法は、生成する乱数の桁数をnとしたとき、初期値sの2乗を計算し、その数値を2n桁の数値とみて、(下の例のように2乗した桁数が足りないときは、0を補います。)その中央にあるn個の数字を最初の乱数とします。次にこの乱数を2乗して、同じ様に、中央にあるn個の数字をとって、次の乱数とします。例えば、123を初期値とすると,

123の2乗    = 00015129 → 0151
151の2乗    = 00022801 → 0228
228の2乗    = 00051984 → 0519
519の2乗    = 00269361 → 2693
2693の2乗   = 07252249 → 2522

の様になります。この方法を用いて、初期値s(10000未満の正の整数)を入力とし、n=4の場合の乱数を10個生成し出力して終了するプログラムを作成してください。

この例のように上位の桁にゼロを置くためには数値をいちど文字列に変換して扱わなければなりません。私はいちおう解けたのですが、ちょっと強引なプログラムです。

//設問3 平方採中法
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

int function(int s)
{
  int n = 4;   //桁数(取り出す桁数はn=4桁に固定)
  int length;  //文字列の長さ
  int i;       //インデックス
  int ans;     //返り値
  char string[9] = "\0\0\0\0\0\0\0\0\0";
  char temp[9]   = "\0\0\0\0\0\0\0\0\0";
  char answer[5] = "\0\0\0\0\0";
  
  //---入力値を2乗---
  s = pow(s, 2);

  //---入力値を文字列に変換---
  sprintf(temp, "%d", s);

  //---文字列の長さを調べる---
  length = strlen(temp);

  //---足りない桁に0を埋める---
  for(i=0 ; i<(8-length) ; i++){
    string[i] = '0';
  }
  //---文字列を連結---
  strcat(string, temp);

  //---真ん中の4桁を取り出す---
  answer[0] = string[2];
  answer[1] = string[3];
  answer[2] = string[4];
  answer[3] = string[5];

  //---文字列を整数に変換---
  ans = atoi(answer);

  return (ans);
}

int main(void)
{
  int s;   //初期値
  int i;   //インデックス
  int ransu;   //乱数

  printf("==========平方採中法==============================\n");

  //---初期値sを入力---
  do{
    printf("input:");
    scanf("%d", &s);
  }while(s<0 || s>=10000);

  printf("---入力---\n%d\n", s);
  printf("---出力---\n");

  //---乱数を10個生成---
  for(i=1 ; i<=10 ; i++){
    ransu = function(s);
    printf("%d\n", ransu);
    s = ransu;
  }
  
  printf("==================================================\n");

  return 0;
}

もっとスマートなプログラムにしたいですねぇ。

| | コメント (0) | トラックバック (0)

2007/10/05

暗号理論

今日は大学で暗号理論の講義をとってきました。この講義、基本的には代数学で暗号理論の基礎を教えてくれる講義なのですが、C言語を用いて実習もするというもの。

この実習目当てにこの講義をとったと言っても過言ではありません。プログラミングを独学で勉強していると暗号理論に手を出そうなんて思わないですから。

しかも、プログラミングが絡むと苦手な数学でもやる気が沸くものです。(代数学は評価C)その証拠に講義中に居眠りしませんでした!(←この教授の他の講義では100%夢の中)

これからの講義が楽しみです。

| | コメント (0) | トラックバック (0)

Vistaが遅いと感じませんか?

今日、ITproの記事を読んでいたら「Vistaが遅いと感じませんか?」という記事がありました。

これはWindows Vistaはなぜ遅いのかという疑問への考察をした記事なんですが、Vistaが遅いことを題材にした記事の中では最も的を射ているように思います。いちど読んでみてはいかがでしょうか。

私は、Windows Vistaを快適に動かすにはCPUやメインメモリばかり気にしていたのですが、この記事を読んで「HDDの回転数がこんなにも影響するものなのか~」と感心してしまいました。HDDのことを忘れて、「CPUが・・・、メモリが・・・」などと言っていたのが恥ずかしいです。

| | コメント (0) | トラックバック (0)

2007/10/04

オフィススイート

オフィススイートと言えばやっぱり、Microsoft Officeですが、値段が高いです!手が出ません。そこで無料のオフィススイート「Open Office.org」が候補にあがります。このOpen Officeは結構頻繁にアップデートをしてくれるし、一応、Microsoft Office互換でもあります。

でも、やっぱりMicrosft Officeが主流だし、Open Officeも完全に互換してないので、Microsoft Officeに軍配が上がってしまいます。

Open Office.orgがオフィスを支配するか、Microsoft Officeがオープンソース化してくれればオフィスで悩まなくてすむんですけどね。

Link : Open Office.org ver2.3 ダウンロード

| | コメント (0) | トラックバック (0)

2007/10/03

VMwareの使い方がわからない

現在は仮想マシンソフトに「VMware Player」を使っていますが、これの使い方がよくわかりません。そこで、少し調べてみることにしました。

VMwareのサイトにいくつか日本語のドキュメントをみつけました。

Links

VMware Player Guest Operating System Installation Guide (日本語 PDF)

VMware Server Administration Guide (日本語 PDF)

VMware Server Virtual Machine Guide  (日本語 PDF)

でも、初心者にはこういったドキュメントより、Google先生に聞いたほうが早いですな。

| | コメント (0) | トラックバック (0)

プログラミング

思えばC言語で”Hello, World!”を表示するプログラムを作ったのが1年半前で、真剣に取り組んだのが賞味半年くらい。最近はC言語以外の言語にも興味を持ち始めて、プログラミング三昧です。

私はプログラミングの勉強中に気になったことをノートに書き留めていたのですが、最近はこのノートの存在を忘れていました。昨日このノートに久しぶりに書き込みをしようとしたら半年前の自分が考えていたことが書いてあって、「あぁ、半年前はこんなことで悩んでいたんだ」などと思ってしまいました。

これが結構おもしろかったので、このノートに書き込みを続けていこうと思います。半年後には今現在の自分の書き込みを見てどう思うんでしょうか。

| | コメント (0) | トラックバック (0)

2007/10/02

lenovoのブログパーツがおもしろい

lenovoのブログパーツがおもしろいです。ついつい遊びすぎてしまいます。いくつかバージョンがあるみたいです。(表示されるのはランダム)

| | コメント (0) | トラックバック (0)

KNOPPIXで作成したデータを保存

簡単にLinux環境を構築できるKNOPPIXはとても重宝します。Windowsがクラッシュしても、KNOPPIXをブートさせて、Windowsパーティションのデータを救出なんてこともできますから。

でも、KNOPPIXには問題があります。

「データを保存することができない」

ということです。KNOPPIXはCD内にOSのデータがあるので、新たに作成したデータを保持することができず、電源を切れば消えてしまいます。

ですが、この問題は簡単に解決することができます。

USBメモリをPCに接続するとデスクトップ上にアイコンが出現します。このアイコンを右クリックすると「マウント」という項目があるので、これを選択します。マウントされたらまた右クリックして「Chenge Read/Wright・・・」という項目を選択します。以上の操作をするとUSBメモリにデータを書き込み可能になるので、作成したデータをUSBメモリに移動させればいいわけです。このとき、デスクトップを作業ディレクトリにしておくと便利です。

これで作成したデータを保存できるようになりました。次回は設定ファイルの保存の仕方を紹介したいと思います。

---追記---

2008年3月22日に久々にKNOPPIXネタを書きました。今回はKNOPPIXをVMware Playerを使い、Windowsと同時にKNOPPIXを起動させます。この方法のほうが断然便利です。また、設定ファイルの保存の仕方なども紹介しています。

| | コメント (0) | トラックバック (0)

2007/10/01

Rubyを始めてみる

Rubyを始めてみることにしました。

この本を使って勉強していきます。

とりあえず、EmacsのRubyモードをインストール・・・と思ったらすでにインストールされていました。

| | コメント (0) | トラックバック (0)

Amazonで生鮮食品売ってる・・・

いや、生鮮食品を売るっていうのは知っていたんですが、まだアメリカだけのことだと思っていたら、いつの間にか日本でも売っていました。「ヘルス&ビューティ」のカテゴリの中で絶賛発売中です。

| | コメント (0) | トラックバック (0)

« 2007年9月 | トップページ | 2007年11月 »