トップページ | 2007年10月 »

2007年9月

2007/09/30

時間割作成プログラム

時間割のようなデータを出してくれるプログラムです。

//時間割を作成
#include <stdio.h>
 
void output(char a[][30], char b[][30], char c[][30], char d[][30], char e[][30], char f[][30]);

int main(void)
{
  int  timetable;   //何時間目かを指定する変数
  char day[4];      //曜日を指定する配列
  int  daynum;      //曜日ナンバーを格納する変数
  char ans[2];
  //---?時限目------------月曜----火曜----水曜----木曜----金曜----
  char first[5][30]  = { "休講", "休講", "休講", "休講", "休講" };
  char second[5][30] = { "休講", "休講", "休講", "休講", "休講" };
  char third[5][30]  = { "休講", "休講", "休講", "休講", "休講" };
  char forth[5][30]  = { "休講", "休講", "休講", "休講", "休講" };
  char fifth[5][30]  = { "休講", "休講", "休講", "休講", "休講" };
  char sixth[5][30]  = { "休講", "休講", "休講", "休講", "休講" }; 

  //---曜日と時間を指定---
  printf("===時間割を作成します。===============================\n");
  printf("===まず曜日と時間を指定します。=======================\n");
  printf("===曜日の指定は次のようにして下さい。=================\n");
  printf("===月曜:mon, 火曜:tue, 水曜:wed, 木曜:thu, 金曜:fri===\n");
  printf("===時間の指定は1〜6で指定して下さい。=================\n");
 repeat:
  printf("===曜日:");   scanf("%s", day);
  printf("===時間:");   scanf("%d", &timetable);

  //---曜日ナンバーを決定---
  if(day[1] == 'o') {
    daynum = 0;
  } else if(day[1] == 'u') {
    daynum = 1;
  } else if(day[1] == 'e') {
    daynum = 2;
  } else if(day[1] == 'h') {
    daynum = 3;
  } else if(day[1] == 'r') {
    daynum = 4;
  }

  //---予定を入力---
  switch(timetable) {
  case 1   : printf("===受講する講義名:"); scanf("%s", first[daynum]);   break;
  case 2   : printf("===受講する講義名:"); scanf("%s", second[daynum]);   break;
  case 3   : printf("===受講する講義名:"); scanf("%s", third[daynum]);   break;
  case 4   : printf("===受講する講義名:"); scanf("%s", forth[daynum]);   break;
  case 5   : printf("===受講する講義名:"); scanf("%s", fifth[daynum]);   break;
  case 6   : printf("===受講する講義名:"); scanf("%s", sixth[daynum]);   break;
  }
  printf("===まだ受講しますか?[y/n]");   scanf("%s", ans);
  if (ans[0] == 'y')   goto repeat;
  
  //---結果をファイルに出力---
  output(first, second, third, forth, fifth, sixth);

  return 0;
}

void output(char a[][30], char b[][30], char c[][30], char d[][30], char e[][30], char f[][30])
{
  int i;
  FILE *fp;

  if( (fp = fopen("my-schedule.txt", "w")) == NULL) {
    printf("\a---File can not open.---\n");
  } else {
    fprintf(fp, "%-14s\t%-14s\t%-14s\t%-14s\t%-14s\t\n", "月曜", "火曜", "水曜", "木曜", "金曜");
    for(i=0 ; i<80 ; i++)   fprintf(fp, "-");
    fprintf(fp, "\n");
    //---時間割を出力---
    for(i=0 ; i<5 ; i++) {
      fprintf(fp, "%-14s\t", a[i]);
    }
    fprintf(fp, "\n\n");
    for(i=0 ; i<5 ; i++) {
      fprintf(fp, "%-14s\t", b[i]);
    }
    fprintf(fp, "\n\n");
    for(i=0 ; i<5 ; i++) {
      fprintf(fp, "%-14s\t", c[i]);
    }
    fprintf(fp, "\n\n");
    for(i=0 ; i<5 ; i++) {
      fprintf(fp, "%-14s\t", d[i]);
    }
    fprintf(fp, "\n\n");
    for(i=0 ; i<5 ; i++) {
      fprintf(fp, "%-14s\t", e[i]);
    }
    fprintf(fp, "\n\n");
    for(i=0 ; i<5 ; i++) {
      fprintf(fp, "%-14s\t", f[i]);
    }
    fprintf(fp, "\n");

    fclose(fp);
  }
}

このプログラムを実行すると、何曜日の何時間目のなんという講義なのかを聞いてきてくれるのですが、例外処理が満足ではないので、入力でミスをするとワケの分からないデータを吐き出してくれます。しかも、入力は漢字で6文字が限界っぽいです。長い講義名だと書式がくずれます。なにかとプログラムに気を使わなくてはいけないのでストレスがたまります。(そんなダメコードを書いたのは私ですけどね)

作成される時間割は以下のようになります。

月曜        	火曜        	水曜        	木曜        	金曜        	
--------------------------------------------------------------------------------
休講        	休講        	休講        	休講        	休講        	

統計力学    	休講        	憲法概説    	休講        	休講        	

相対論      	休講        	計算科学特論	休講        	休講        	

休講        	休講        	休講        	休講        	計算数理概論	

休講        	休講        	休講        	休講        	計算実験特論	

休講        	休講        	休講        	休講        	休講        	

この時間割は休講だらけですね。(実際これくらいを予定していますが)

今後の課題は、機能拡張よりも、このマジックナンバーばかりのダメコードを整理することです。

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

2007/09/29

KNOPPIX Edu

プログラミング環境や、Linux環境を手軽に構築したい人にはおススメなディストリビューション「KNOPPIX」ですが、株式会社アルファシステムズが提供している「KNOPPIX Edu」は教育用ということもあって非常に便利です。gccやgnuplotはもちろん、複数のプログラミング言語の環境や数式処理ソフトMaximaなどが標準でインストールされています。

下のリンクからisoファイルをダウンロードしてCD-Rに焼くだけで準備完了です。

Link : KNOPPIX Edu ダウンロード

CD-Rに焼いたらパソコンにディスクを入れてCDブートさせれば起動します。(事前にBIOSセットアップでブートの優先順位を変更しておいて下さい)

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

もうすぐ講義が始まるので・・・

あさってには大学の講義も始まるので、受講する講義を選んでいたら、時間割を作るプログラムを作りたくなってしまいました。

仕様はこんな感じです。

  • 月曜1限から金曜6限までの6×5マスの予定表
  • マスの初期値は”休講”としておき、何曜の何限を指定して予定を入れる
  • できた予定表はファイルに出力

とりあえずはこんな仕様で、将来的には単位の計算とかの機能も追加したいですね。

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

2007/09/28

XPのOEMライセンスが延長された

Windows XPのOEMライセンスは当初2008年の1月31日までとされていましたが、Microsoftは5ヶ月延長して6月30日までサポートするようです。

Vistaが発売されて結構たちますが、いまだにXP人気は薄れないので、この延長はよい判断ではないでしょうか。できれば2009年1月31日までにして欲しいですけど。

Link : ITmedia

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

PostScriptも扱える多機能画像ビューワー Xnview

グラフ作成ソフトgnuplotで出力される画像がPostScript形式であることが多いので、Linux環境では問題ないのですが、その画像をWindows環境で扱いたいときには結構こまりもの。今まではghostviewを使っていたのですが、使いづらいので、この「Xnview」に乗り換えました。インストールも簡単だし、日本語にも対応していることもいいです。

Link : Xnviewのダウンロード

---追記---

postscriptの表示には当然ながら「GhostScript」が必要です。また、最新版ではWindows Vistaにも対応したようです。

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

2007/09/27

10点問題:身長の度数分布

今回の問題も10点問題です。

健康診断で生徒の身長を計測しました。その身長を入力とし、度数分布を作成して出力し終了するプログラムを作成してください。度数分布の階級は5㎝刻みの6つの階級とし、度数は人数を*(半角アスタリスク)で表示します。ただし、その階級の度数(人数)が0(ゼロ)の場合、階級の見出しのみを出力してください。生徒の数は40人以下とします。

入力
1行目 生徒の数n(整数)
2行目 1人目の身長(実数:小数第1位まで)
3行目 2人目の身長(実数:小数第1位まで)

n+1行目 n人目の身長(実数:小数第1位まで)

出力
1行目 見出し「1:」につづいて165.0cm未満の人数分の*(半角)
2行目 見出し「2:」につづいて165.0cm以上~170.0cm未満の人数分の*(半角)
3行目 見出し「3:」につづいて170.0cm以上~175.0cm未満の人数分の*(半角)
4行目 見出し「4:」につづいて175.0cm以上~180.0cm未満の人数分の*(半角)
5行目 見出し「5:」につづいて180.0cm以上~185.0cm未満の人数分の*(半角)
6行目 見出し「6:」につづいて185.0cm以上の人数分の*(半角)

という問題です。私は次のように書いてみました。

//設問2 身長の度数分布

#include <stdio.h>

int main(void)
{
  int    dosu[6] = {0,0,0,0,0,0};
  int    i;
  int    people;
  double height;
  char   str[] = "*";

  printf("身長の度数分布\n");
  printf("生徒の数:");
  scanf("%d", &people);

  for(i=1 ; i<=people ; i++){
    printf("%d人目の身長(小数第1位まで):", i);
    scanf("%lg", &height);
    
    if(height < 165.0){
      dosu[0]++;
    }else if(height >= 165.0 && height < 170.0){
      dosu[1]++;
    }else if(height >= 170.0 && height < 175.0){
      dosu[2]++;
    }else if(height >= 175.0 && height < 180.0){
      dosu[3]++;
    }else if(height >= 180.0 && height < 185.0){
      dosu[4]++;
    }else if(height >= 185.0){
      dosu[5]++;
    }
  }

  printf("%d:", 1);
  for(i=1 ; i<=dosu[0] ; i++){
    printf("%s", str);
  }
  printf("\n");

  printf("%d:", 2);
  for(i=1 ; i<=dosu[1] ; i++){
    printf("%s", str);
  }
  printf("\n");

  printf("%d:", 3);
  for(i=1 ; i<=dosu[2] ; i++){
    printf("%s", str);
  }
  printf("\n");

  printf("%d:", 4);
  for(i=1 ; i<=dosu[3] ; i++){
    printf("%s", str);
  }
  printf("\n");

  printf("%d:", 5);
  for(i=1 ; i<=dosu[4] ; i++){
    printf("%s", str);
  }
  printf("\n");

  printf("%d:", 6);
  for(i=1 ; i<=dosu[5] ; i++){
    printf("%s", str);
  }
  printf("\n");
  
  return 0;
}

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

Excel 2007のバグ

Excel 2007にバグがあるそうです。詳しくはこのページを読んでください。

IT Media News

なんでも、計算結果が65535や65536になる計算をすると正しい答えが返ってこないそうです。マイクロソフトはすぐにでも解決するようですが、ユーザーからすればなんとも困ったものです。

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

配列の動的確保

配列の要素数をscanfで入力させて・・・

一度はこれをやって「セグメンテーション違反です」とコンパイラに怒られたのではないでしょうか。私も過去にこれをやって怒られたくちです。

ところが、動的確保は意外と簡単に実現できるものです。

//配列オブジェクトの生成

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int *x;
  int i, nx;

  printf("生成する要素数:");
  scanf("%d", &nx);

  //---動的確保---
  x = calloc(nx, sizeof(int));

  if(x == NULL){
    printf("確保失敗\n");
  } else {
    //---値を代入---
    for(i=0 ; i<nx ; i++) {
      x[i] = i;
    }
    //---解放---
    free(x);
  }

  return 0;
}

このプログラムで重要なのはcalloc関数です。これは、”指定した型で要素数ぶんの領域を確保する”ということです。いまはintを指定していますが、実数を扱いたければsizeof(double)とすればいいわけです。また、calloc関数は確保した領域を0で初期化します。if文は例外処理で、まぁ保険みたいなものと思ってください。最後に、使い終わった領域はかたずけましょう。かたずけは”free関数”がやってくれるので忘れずに書いてください。

動的確保も結局、「配列の要素数をscanfで入力させて・・・」でしたね。

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

2007/09/26

長時間の運転は疲れる

はい、当然のことですね。今日は関越自動車道と北陸自動車道を走っていました。

新潟の地震のあった原発付近の道路は波をうっていて、地震の威力を再認識させてくれるインパクトがあります。でも、たまにバンパーほどの高さの傾斜があるので早く修復させてほしいです。

とりあえず今日は疲れたので酒を飲みます。

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

2007/09/25

秋の夜長に思うこと

まだまだ日差しは強いですが、夜になれば結構秋っぽかったりする今日この頃。

プログラミングをしていると、しばしば思うのが「もっと数学できればなぁ~」という願望。

いちおう理系学生ですが、高校から大学2年まで真面目に勉強をしてこなかったという過去があるので、こんな願望が強く出ます。

数学ができればプログラミングがうまくなるわけではないですが、論理的思考がうまくできるようになるのは確か。

どっかで読んだ記事には、「プログラミングは”複雑な計算”を”簡単な計算の組み合わせ”にすることである」ということが書かれていて私の願望に拍車をかけるわけです。

願望だけでは数学できるようにならないのは明らかなので、ちょっとずつ勉強することにします。

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

MozBackup

「MozBackup」というのは、Mozilla FirefoxやMozilla Thunderbirdのプロファイルをバックアップするためのソフトです。私はもっぱらThunderbirdの受信メールのバックアップに使っています。バージョンが1.4.6からVistaにも対応したみたいです。(最新版は1.4.7)

日本語にも対応していて、使い方を説明してくれるサイトもあるので安心です。

---使い方を説明しているサイト(ダウンロードもできます)---

MozBackup Japanese Translations

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

X60のパームレスト

ThinkPad X60を使い始めてから2週間ほどが経ちました。使っていて、まず気づくのが、”右のパームレストが熱い”ということ。結構な熱さなので、ここにCPUがあるのか?と思うほど。Lenovoのサイトで内部写真を見ると,ここにあるのは無線LANチップでした。逆に、CPUのあるところは全然熱くありません。電源設定で電力消費を設定できるようなので、設定を省電力モードにしたところ、発熱が若干おさえられたようです。

もちろん、無線LANのハードウェアスイッチをOFFにしておけば熱くはなりません。

---追記---

スイッチをOFFにしていても、ほんのり温かくなります。電源設定では無線機器を省電力設定にしておいたほうがいいでしょう。

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

10点問題:出口調査

あるデパートで買い物金額の出口調査を行いました。買い物金額のデータを入力とし、1人あたりの平均買い物金額を計算し、出力して終了するプログラムを作成してください。調査人数は、10000人以下とし、全員の買い物金額の合計は10億円を超えないものとします。

という問題です。一番簡単だったので、早速作ってみることにしました。

#include <stdio.h>
#include <math.h>

int main(void)
{
  int    i;
  int    money;
  int    people;
  int    average;
  double sum = 0;
  
clear:printf("何人の調査をしますか?:");
  scanf("%d", &people);

  if(people>0 && people<pow(10,4)) {
    for(i=1 ; i<=people ; i++) {
      printf("%d人目の買い物金額:", i);
      scanf("%d", &money);
      sum += money;
      if(sum >= pow(10, 9)) {
      printf("ERROR!!\n");
        goto clear;
      } 
    }
    average = sum/people;
    printf("結果は%d円です。\n", (int)average);
  } else {
    printf("ERROR!!\n");
    goto clear;
  }
    
  return 0;
}


基本的には平均値を求めるプログラムですが、例外処理をいれてあるので少し複雑になっています。私はこの処理にgoto文を使ってしまいましたが、どうでしょうか?goto文は多用するべきではないですが、今回は処理がスッキリするのでよかったかなと思います。

Link : goto文について from Wikipedia (これを根拠にいいわけ)

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

2007/09/24

パソコン甲子園プログラミング部門

基本的にC言語の勉強には次の2冊を主に使っているんですが、

いつも本を読みながら例題のコードを写しているだけではおもしろくないので、パソコン甲子園プログラミング部門の2006年本選問題を見つけたので挑戦してみようと思います。

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

GNU screen

今回紹介するGNU screenは仮想端末管理ソフトというもので、端末(ターミナル)をひとつ立ち上げるだけで複数のウィンドウを切り替えて使うことができるようになります。

私の場合は、Emacsでコードを書いて、終わったらウィンドウを切り替えてコンパイル、さらに切り替えてgnuplotでグラフを作る、みたいなことをしています。($ emacs -nw ファイル名 とすると、emacsが端末内に立ち上がります)

このscreenを使うにはまずインストールしなければなりません。とりあえずsuでスーパーユーザになってから、# yum install screen でインストールします。(GUIでもインストールできます)インストールが終わったら、起動する前に設定ファイルを作りましょう。この設定ファイルは ~/.screenrc という名前にしてホームディレクトリに作ります。設定内容を記述したものを下のリンクに書いておいたので、コピペして下さい。(文字化けしてたら、文字エンコードを変更してください)

## screenのエスケープキャラクタをCtrl + Tにする
escape ^Tt

## ビジュアルベルを無効
vbell off

## ステータス行の設定
hardstatus alwayslastline " %`%-w%{=b bw}%n %t%{-}%+w"

## 文字コードの設定
defutf8 on

## Ctrl + T -> Ctrl + Kでウィンドウを閉じるようにする
bind ^k kill

設定ファイルを作ったらscreenを立ち上げて見ましょう。(コマンドもscreen)まずは、新しいウィンドウを作ります。Ctrlキーを押しながら t -> c (この操作をscreenでは ^T c と書く)と押すと2つ目のウィンドウができます。この状態で ^T t と押すと2つ目のウィンドウに移動します。(^T t は「直前の端末に切り替える」という操作です。)この他にも操作方法があります。

  • ^T 数字 : 数字で指定したウィンドウに切り替える
  • ^T n       : 次の番号のウィンドウに切り替える
  • ^T p       : 前の番号のウィンドウに切り替える
  • ^T k       : ウィンドウを閉じる

以上がscreenの基本操作です。今後、便利な機能を覚えたらまた紹介したいと思います。

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

まぁ確かにそうだけども

本屋で見かけて、題名読んだだけで買ってしまいました。

この”最高学府”というのは東大に限ったことではなく、大学全般のことを言っています。(東大、早稲田、慶応の学生のおバカエピソードも載っていますが)

前半は、主におバカな大学生について書かれています。こういうの読んでいると、なんだか安心してしまいますが、書かれているような状況になったら自分がどういう行動をとるのか怖いです。

後半は大学の運営システムについて言及しています。学生からは大学のシステムのことはあまり見えないので、今後の大学の評価にも影響しそうです。

各ページの下の余白には全国の大学の一言レビューが書かれていて、ヒマつぶしに読むにはいいんじゃないでしょうか。

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

2007/09/23

Let's noteについて

Let's noteって言えば、頑丈で電池が長持ち!! というイメージが強いんじゃないでしょうか?確かに、標準バッテリーであれだけ長持ちっていうのは驚異的です。(私のX60は3時間程度ですから)

だけど、Let's noteのスペックって、お世辞にも高いとは言えません。CPUは低電圧版だし、メモリはS.O.DIMMではなく、Micro.DIMMで徹底的な省エネ設計。

ハイスペックを追求される人にはお勧めできません。だけど裏を返せば、電源を確保できないところで長時間作業する必要がある人には断然おススメ!ということです。

私はメーカーパソコンのコンセプトを理解して買う必要があるんじゃないかな?と思うわけです。

電気量販店に行って展示パソコンを見てると、「最新モデルだからおススメですよ。」とか「これ、人気モデルなんですよ。」といった買え買えムードが正直ウザいです。客のニーズも聞かずに売るのはおかしいんじゃないのか?といつも疑問に思っています。(まぁ、買うほうも買うほうですが)

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

プログラマならEmacs(3)

今回はコピー&ペーストについてです。

==========Emacsの基本操作==========

まずは、コピーの流れを見てください。

  1. コピーしたい文字列の先頭で C - Space (C - @ の場合もアリ)で開始位置を指定。
  2. コピーしたい文字列の最後尾までカーソルを移動させる。ここまでが範囲選択。
  3. ここで、M - w を押すとコピー完了。(M はメタキーといって、Alt キーに割り当てられています)

コピーした範囲をペーストしたいときは、

C - y

とします。

このとき、設定によっては C - Space でマークして文字列を選択しても、Windowsみたいに選択範囲の色が反転しない場合があります。これではわかりにくいので、反転するように設定を変更しましょう。前回のように .emacs を開いて、

(setq-default transient-mark-mode t)

を追加して保存すれば、選択範囲の色が反転するようになります。

prev <-

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

2007/09/22

「Lhaplus」ver. 1.55にバージョンアップ

「Lhaplus」が脆弱性を修正されて、バージョン1.55がリリースされました。

RAR形式の解凍での不具合も修正されたので、早速インストールしました。

---Download---

Lhaplus ver. 1.55

---追記(07/11/26)---

Lhaplus v1.55 にも脆弱性が発見されたので早めにver1.56にバージョンアップしたほうがいいでしょう。

---Download Lhaplus v1.56---

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

そういえばEmacsが・・・

私は現在、Emacs 22.1.1 を使っているんですが、どうやら日本語入力に対応しているみたいです。さらに、C言語のソースコードを書いているときに自動で色づけをしてくれます。いままではファイルを開いた後で色を付けるように項目にチェックをいれていたので、便利だなぁと関心しました。

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

プログラマならEmacs(2)

前回はファイルの開き方、保存の仕方でしたが、今回はカーソルの操作です。

==========Emacsの基本操作==========

基本的に矢印キーは使わないそうです。確かにホームポジションから矢印キーにいくのは億劫ですね。

C-f = → : 1文字進む

C-b = ← : 1文字戻る

C-n = ↓ : 次の行

C-p = ↑ : 前の行

それから、次のようなキーバインドも便利です。

C-a : 行頭に移動

C-e : 行末に移動

C-k : その行のカーソル以降を消去

C-j : 改行

また、文字の消し方も必要です。

C-d : Deleteキーに相当

また、Backspaceキーに相当するものはシェルのキーバインドと統一する意味でC-hに割り当てるらしいのですが、Emacsの標準ではC-hはヘルプ表示なので、Emacsの設定を変更する必要があります。

というわけで、Emacsの設定ファイル「.emacs」を編集します。Emacsを立ち上げた状態で、C-x C-f と入力し、ホームディレクトリ下にある.emacsを開きます。(パスは~/.emacs とすればOKです)

.emacsを開いたら次の1行を加えて保存してください。

(define-key global-map "\C-h" 'delete-backward-char)

保存してからEmacsを終了して、もう一度立ち上げることで次の操作が有効になります。

C-h : Backspaceに相当

今回はここまでで、次回はコピー&ペーストを紹介したいと思います。

prev <-   -> next

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

ThinkPadのBIOS

ThinkPadX60はVistaがサクサク動くな~。VMwareでFedora7を動かしながらでもモッサリ感とは無縁だな~。これがIntelVTの力か~。やっぱりT7200買ってよかったなぁ。

と思っていたのですが、どうやらBIOS標準設定ではVTは無効になっているらしい。CPUの処理能力が高いからモッサリしなかっただけのようでした・・・。

これじゃVTがMOTTAINAI(国連語)ので、BIOS設定で有効にすることに。

ところがBIOSのバージョンによってはVTに対応していない可能性があるとのこと。いちいちバージョンを確認するのも面倒なので、とりあえず最新版にしてから再起動してF1キーを押してBIOSの設定変更でVTを有効にしました。

VT有効にしたら、微妙に快適になったかも。(気のせいです)

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

2007/09/21

プログラマならEmacs(1)

このタイトル、正確には”プログラマならEmacsかVim”ですが、私の周りにはEmacsを愛用している人が多いのでEmacsを選択することにしました。

なぜプログラマならEmacsかというと、便利だからでしょう。この便利というのは主に、「キーバインド」と「高い拡張性」にあると言えます。

とりあえず、高い拡張性は置いといて(初心者なので、まだよく分かりません)、キーバインドに焦点をあてることにします。

Emacsのキーバインドは、カーソルの移動やコピー&ペーストなどほとんどの機能をキーボードだけで操作できるようになります。プログラミングに集中してくるとキーボードから手を離すのさえストレスになってくるので、私はこのキーバインドに挑戦しました。

==========Emacsの基本操作==========

まずはEmacsを立ち上げましょう。とりあえずファイルを開いてみます。

$ emacs hello.txt &

立ち上がるとwelcome to GNU Emacs~と書かれたページが現れます。このページで

Ctrl + l

入力すると編集画面に移ります。まずは何も書かずに終了してみます。

Ctrl + x → Ctrl + c

(Ctrlキーを押しながらx → cです)と続けて押すとEmacsが終了します。このような操作を表記するときは一般的に

C-x C-c

と表記するらしいのでこれにならうことにします。

Ctrlキーを押しながら適当なキーボードを押してしまうと突然わけのわからないページに移ってしまうことがあります。そんなときには

C-g

を連打しましょう。いわゆるキャンセルです。

もう一度hello.txtを開いて「Hello, World!!」とでも入力してください。これを保存するには

C-x C-s

と入力します。

今回はここまでにして、次回はカーソルの操作について書こうと思います。

-> Next

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

VMware Player補足情報

VMware Playerをインストールしたわけですが、補足情報をすこし書いてみます。インストールしたのはバージョン2.0ですが、すでにバージョン2.0.1がリリースされています。私はこの新バージョンに更新することをお勧めします。主な変更点は、

  • メニューの日本語表示に対応
  • はっきりとは言えないが、使い勝手が向上

メニューが日本語になるだけで格段に使いやすくなる(英語のできる人はこの限りではない)ので、これからインストールする人もこちらのバージョンのほうがいいでしょう。

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

VMware Playerをインストールしてみる

 いままでは、Windows上でプログラミングしたり、LinuxとWindowsでデュアルブート環境を作ったりしてきましが、正直どちらも微妙でした。理由としては次のようになります。

●Windows編

  1. Windows上では環境を整えるだけでも一苦労
  2. GUIに強いWindowsだがCUIに極端に弱い(UNIXコマンドを使いたい)
  3. Windowsではemacsが使えない(Cygwinやxyzzyを使う手もあるが・・・)
  4. 開発言語はある程度UNIX前提になっていることがある。(ex.Rubyなど)

●デュアルブート編

  1. どちらか一方の環境しか使えない(環境を変える度に再起動は面倒)
  2. 1.に帰結する諸問題が多数発生

以上のことからVMwareの使用を決めました。Windows上でLinux環境をつくるならcoLinuxを使う方法もありますが、環境構築にかかる時間と移植性からVMwareにしました。さらに、coLinuxはXwindowを起動できないのでXサーバが必要です。私は単一のソフトによる環境をつくりたいのでこの点でもcoLinuxには不満が残ります。

VMware Playerのインストールに必要なものは

  • VMware Player 2.0
  • 仮想マシンイメージ(.vmxファイル)
  • 仮想HDD(.vmdkファイル)

が必要ですが、VMware Player ではvmxとvmdkを作ることはできません。VMware Serverなら作れるらしいですが、ServerはXP/2000には対応していますが、Vistaに対応しているかわからなかったので、Playerを使います。(Player、Server共に無料です)

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

ThinkPad X60

Thinkpadx60  ThinkPad X60を買いました。モデルはX60後期型の1709Q6Jです。Core2Duo T7200 2.0GHzを搭載していたのが購入の決め手でしたね。他のスペックは、メインメモリ:1GB、HDD:120GB、OS:VistaBusiness

Core2DuoはT5600以降のナンバーでIntelVTと呼ばれる仮想化支援技術をサポートしているので、その中で最も安価(価格.com)だったので買いました。これはプログラミングのための開発環境はVMware Player上でLinuxを動作させようと思っていたのでIntelVTは魅力的です。OSはVistaですが、T7200はVistaの評価で4.9をマークするので問題なし!ただし、メモリが1GB(512MB×2)なので多少モッサリ感があります。これはVMwareを動かすのに障害になるので2GBのメモリを増設して2.5GBにしました。ThinkPadの筐体については、何も言うことがありませんね。最高です!!ThinkPadを持っている玄人が多いのもうなずけます。

というわけで、これからは、このX60を主に使っていくことにします。

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

ブログを立ち上げました

 ブログを立ち上げました。このブログでは主にプログラミングや開発環境などについて取り上げたいと思っています。

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

トップページ | 2007年10月 »