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

2007年11月

2007/11/30

コマンドライン引数

今回はコマンドライン引数について書いてみます。コマンドライン引数とはプログラム実行時に引数を与えて実行することです。例えば、

$ ./実行ファイル 引数1 引数2 ・・・

という風に入力します。

実際にこの引数を表示するプログラムを作ってみます。

#include <stdio.h>

int main(int argc, char *argv[ ])
{
  int i;

  printf("argc = %d\n", argc);
  for(i=0 ; i<argc ; i++){
    printf("argv[%d] = %s\n", i, argv[i]);
  }
  return 0;
}

このプログラムを引数を与えて動かすと次のようになります。

$ gcc -o Args args.c
$ ./Args I like programing .
argc = 5
argv[0] = ./Args
argv[1] = I
argv[2] = like
argv[3] = programing
argv[4] = .

これらのことから、main関数の引数argcには引数argvの要素数、argvには先頭にプログラム実行名が入り、以降にコマンドライン引数が順に入っています。

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

2007/11/29

JavaApplet

JavaAppletの勉強を始めてみました。

初めてのプログラムはお馴染みのコレです。(リンク先にアプレットがあります)そして、このアプレットのソースはこのようになっています。

import java.applet.*; 
import java.awt.*;

public class HelloJava extends Applet
{  
   public void paint(Graphics g)
   { 
      g.drawString("Hello, Java World!!",10,20); 
   } 
}

このソースコードをコンパイルして出来たクラスファイルと

<HTML>
<HEAD>
<TITLE>HelloJava Applet</TITLE>
</HEAD>
<BODY>
<APPLET CODE="HelloJava.class" WIDTH=150 HEIGHT=30>
</APPLET>
<HR>
</BODY>
</HTML>

このようなHTMLを用意すればアプレットの完成です。

これからアプレットを勉強して、自分の作ったプログラムをこのブログで実際にいじれるようにしたいですねぇ。

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

2007/11/28

サイボウズ新卒説明会

今日、amachangさんのブログ「IT戦記」でamachangさんがサイボウズの新卒説明会に講演に来るというので、衝動的に説明会にエントリーしてしまいました。

・・・だって、参加してみたらいーじゃーなーい!って書いてあったもので。

この説明会はIT技術者セミナーなので、どんな猛者に会えるのでしょうか。楽しみです。

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

アクセス5000超えです!!

2007年11月27日でアクセスが5000を超えました!

たま~にダラケた内容のものもありますが、今後ともよろしくお願いします!

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

2007/11/27

Makeでコンパイル

私はこれまでコマンドラインで作業するときにバッチファイルやメイクファイルを書いたことがありませんでしたが今日、本を読んでいたらこれらのことについて書いてあったのでやってみました。

バッチファイルはエディタでコマンド入力する内容をテキストファイルに書き込み、拡張子を.batのファイル名で保存すると、このファイルは「バッチ・ファイル」になります。

このバッチファイルでもコンパイルなどの作業をすることはできますが、プログラミングをしていて複数のソースをコンパイルするときに「メイクファイルが~」とは聞きますが、「バッチファイルが~」とはあまり聞かないのでメイクファイルについて書きます。

まず、次のソースがあるとします。

//(1) file1.c
#include <stdio.h>
#include "two.h"
#include "three.h"

int main(void)
{
  printf("Hop! ");
  transaction_two();
  transaction_three();

  return (0);
}

//(2) file2.c
#include <stdio.h>

void transaction_two(void)
{
  printf("Step! ");
}

//(3) file3.c
#include <stdio.h>

void transaction_three(void)
{
  printf("Jump!!\n");
}

//(4) two.h
void transaction_two(void);

//(5) three.h
void transaction_three(void);

これらを「make」コマンドを使ってコンパイルするときには拡張子.mkのメイクファイルというファイルが必要になってきます。(Windowsでは.makでUnixでは.mkらしい。.makでもmakeコマンドは認識したが、emacsは.mkしかメイクファイルと認めてくれなかった)

私が作ったメイクファイルは次のようになっています。

# メイクファイル hsj.mk

build: file1.o file2.o file3.o
   gcc -o HSJ file1.o file2.o file3.o

file1.o: file1.c two.h three.h
   gcc -c file1.c

file2.o: file2.c two.h
   gcc -c file2.c

file3.o: file3.c three.h
   gcc -c file3.c

メイクファイルの構成は、コロン(:)の前の単語は「ターゲット」といい、任意です。ターゲットのコロンの後にも何か書かれていますが、例えばbuild: file1.o file2.o file3.oの場合はbuildを行う前にfile1.o~file3.oを処理してからという意味です。そして次の行に書かれているのが、ターゲットbuildで実際に行うコマンドです。先頭の空白はTab文字1つぶんの空白で、スペースなどではエラーとなります。(先頭に#を置くとコメントになる)

file1.o~file3.oではターゲットのあとにファイル名が書かれていますが、今は詳しく説明できないので、とりあえずそのターゲットで行うコマンドに必要なファイル名ということで。(gccの-oオプションはコンパイル、アセンブリをしてリンクをしないということ)

今まではMakeを見て見ぬふりをしてきましたが、C言語のコンパイルをするためのMakeのしくみは少しわかったのでよかったかなと思っています。

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

2007/11/26

FedoraでJREの設定がうまくいかない

Fedora 7+Firefoxでネット上のJavaアプレットを見るにはJREをインストールしていくつか設定しないといけないのですが、どうもうまくいきません。

インストール&設定を説明してくれているサイトはいくつかあるのですが、説明どおりにやってもうまくいかないとはこれいかに?

ローカルでアプレットプログラムを作ってみてもエラーで表示できないです。(ウィンドウは表示されますがその中にはエラーってでる)

---追記(11/27)---

この後、いろいろやってみましたがやっぱりできませんでした。

インストールは正常に完了しているのにSUNのインストール確認ページで認識されません。

インストールした後にFirefoxのpluginsにシンボリックリンクを張ったのですが・・・

別のFedoraマシンでやってもできなかったのでJREは保留です。

---追記(12/02)---

Firefoxでのアプレット表示は解決していませんが、自作のアプレットプログラムは実行することができるようになりました。ただ、こんな風に警告がでます。

$ appletviewer Hello.html

WARNING: CURRENTLY GAPPLETVIEWER RUNS WITH NOSECURITY MANAGER.
THIS MEANS THAT APPLETS YOU LOAD CAN DO ANYTHING A JAVA APPLICATION
THAT YOU DOWNLOAD AND RUN CAN DO.  BE *VERY* CAREFUL WHICH APPLETS YOU RUN.
DO NOT USE GAPPLETVIEWER ON YOUR SYSTEM IF YOUR SYSTEM STORES IMPORTANTDATA.
THIS DATA CAN BE DESTROYED OR STOLEN IF YOU LOAD A MALICIOUS APPLET.   [press 'c' or 'C' to continue or anything else to quit]

よくわからないです。英語ができないことの弊害が・・・

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

Javaの配列の要素数

C言語では配列の要素数を任意に決めたいときにはcallocやmallocやfreeなどの関数を使わなくてはいけませんでしたが、Javaではこの処理を簡単に書くことができます。

例えばintの配列「test」があったとして、要素数numを読み込んで

int test[ ];
test = new int[num];

とするだけで任意の配列の要素数を得ることができます。

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

2007/11/25

こんな本見つけた 07/11/25

今日は本屋さんに行って、こんな本を見つけました。

1冊めの本は以前からWebアプリを勉強したいと思っていましたが、Webアプリの本を1冊も持っていなかったので買ってみました。内容も基本をしっかりおさえているようだったのでいいかなぁと思いました。

2冊めはJavaアプレットを使ってJavaを学んでいくようで、題名にゲームとついていますがどちらかといえばJavaアプレット実践入門的な内容です。ブログでアプレットを使いたいと思っていた私にはぴったりでした。

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

2007/11/24

TOEIC 2007/11/25

明日はTOEICの日です。

TOEICのスコアが大学院に必要なので受けてきます。

・・・英語苦手です。

でも英語大事ですよね。プログラマーにも。

目標は700点!!(将来の希望)

---追記---

見事、玉砕してきました。(単語が全然わかんない!)

次の1月までに単語をしこたま詰め込んでいこうと思います。

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

2007/11/23

日経ソフトウェア1月号

今月の日経ソフトウェアの特集は

  1. 「電子工作でプログラミングを楽しもう」
  2. 「コマンド環境”超”入門」

です。特集1の電子工作でプログラミングというと、マイコンボードがないと結局何もできないといったこともなく、付録CDに収録されている「CodeWarrior」にマイコンの動作をパソコン上で再現する仮想環境が搭載されているのでマイコンなしでもプログラムの動作確認ができます。(マイコンボードがあったらもっと楽しそうですけど)

特集2はWindowsのコマンドプロンプトでの操作を見直してみようじゃないかというものです。コマンド操作の基本から始まり、WSHやWindows Power ShellでExcelを操作してみるところまで説明してあります。

特集ページを見ながらサンプルプログラムを打ち込んでみたいと思います。

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

2007/11/22

タイピング

ホームページを作る人のネタ帳」というブログで英語のタイピング速度を計測するサイトが紹介されていました。

早速私も挑戦です!

・・・結果は、

You reached 162 points, so you achieved position 64361 on the ranking list
You type 216 characters per minute
You have 37 correct words and
you have 0 wrong words

でした。もうちょっといけると思ったのですが。

Link : 挑戦者はここからどうぞ

・・・2回め

You reached 178 points, so you achieved position 57169 on the ranking list
You type 230 characters per minute
You have 41 correct words and
you have 0 wrong words

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

2007/11/21

ThinkPad 15周年記念モデル

ThinkPadの15周年記念モデルが「ThinkPad X61s 15th Anniversary Edition」として12月4日より315台限定で販売されます。もちろん特別仕様です。

パームレストなどに高級質感塗装
15周年記念ロゴ
英語キーボード選択可能

OS: Windows® XP Professional
または Windows Vista® Ultimate 32
CPU: インテル® Core™2 Duo プロセッサー L7500
メモリー:2GB(2GB*1)
HDD:200GB(7200rpm)
キーボード: 日本語 または 英語 から選択
ワイヤレス: IEEE 802.11a/b/g、IEEE 802.11n ドラフト2.0、Bluetooth
ディスプレイ: 12.1V型TFT液晶(1,024×768ドット)

Anniversary Editionにふさわしいものになっています。

Link : ThinkPadの15周年記念モデル特設サイト

Thinkpad1

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

2007/11/20

Firefox ver3.0 Beta

Firefox ver3.0 Beta1が公開されました。テスト目的のリリースなので、一般ユーザーの使用は推奨されていませんが。

目玉は新レンダリングエンジンの「Gecko 1.9」でそうで、CSSへの対応強化とかAPNG(PNGのアニメーション版)に対応、長いURLの折り返し表示など機能の強化が図られています。

最近このブログにアクセスしてくるブラウザはFirefox勢が多く、IE6/7を追い抜きそうな勢いです(中にはFirefox 0.10なんていうツワモノもいる)。私は普段IE7を使っていますが、Firefoxも表示確認のために使っています。(最低限2大勢力には配慮しておこうと思いまして)

---追記(12/22)---

Firefox 3 Beta 2が発表されていました。Beta 1から約900箇所、改良されているようです。

Link : 詳細記事(Beta 1):窓の杜

Link : 詳細記事(Beta 2):窓の杜

Firefox 2 無料ダウンロードFirefox_7

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

xfy Blog Editor

ココログのトップにバナーが出ていたので、xfy Blog Editorをインストールしてみました。

使ってみた感想は「確かにココログ標準よりも高機能だけど、慣れないと使いにくい」といった感じです。ブラウザ以外にソフトを立ち上げなくてはいけないのも面倒ですし。

ローカルで編集するツールとして割り切って使ったほうが無難かと。

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

2007/11/19

アフィン暗号プログラム

昨日のプログラムを応用して早速アフィン暗号プログラムを作ってみました。

/*
  アフィン暗号プログラム
*/

#include <stdio.h>
#include <math.h>
#define  JIS   26
#define  FIRST 'A'

int add_gcd(int a, int b)
{
  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 ans_x, ans_y, ans_gcd;
  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;
  }

  /*最大公約数が1なら逆元を,1でなければ0を返す*/
  return (ans);
}

int main(void)
{
  int  key1, key2;
  int  check, e_k;
  int  input, output;
  FILE *fpi, *fpo;
  char file1[64], file2[64];

  printf("==============================\n");
  printf("平文ファイル:");   scanf("%s", file1);
  printf("暗号ファイル:");   scanf("%s", file2);
  do{
    printf("鍵1を入力   :");   scanf("%d", &key1);
    printf("鍵2を入力   :");   scanf("%d", &key2);
    //---鍵の判定---
    if( (check = add_gcd(key1, JIS)) == 0){
      printf("!!!Input Anothor Key!!!\n");
    } else {
      printf("Key ---> k = (%d, %d)\n", key1, key2);
    }
  }while(check == 0);
  
  //---入力ファイルを暗号化---
  if( (fpi = fopen(file1, "r") ) == NULL){
    printf("Failure.\n");
  } else {
    if( (fpo = fopen(file2, "w") ) == NULL){
      printf("Failure.\n");
    } else {
      while( (input = fgetc(fpi)) != EOF ){
	if(input == ' ' || input == '.' || input == ',' || input == '\n'){
	  fputc(input, fpo);
	} else {
	  //---アフィン暗号の処理---
	  e_k    = ((input - FIRST) * key1 + key2) % JIS;
	  output = FIRST + e_k;
	  fputc(output, fpo);
	}
      }
      fclose(fpo);
    }
    fclose(fpi);
  }
  printf("Encryption Success!!\n");
  printf("==============================\n");
  
  return 0;
}

アフィン暗号は鍵を2つ入力します。例えば鍵k = (a、b)というふうにします。このとき鍵bは任意の整数でかまいませんが、鍵aは使用文字数N(このプログラムの場合は26)と互いに素ではなくてはなりません。(この判定にプログラムでは拡張ユークリッドを使っていますが、別にノーマルのユークリッドでも問題ないです)

この条件を満たしたら次は暗号化関数を作ります。この関数はe_k(x) = (a*x + b) % Nとなります。(引数xは文字コード、つまり文字に割り当てられた数字です)

そして暗号化関数によって得られた値を新しい文字コードとすることで暗号化されるわけです。したがって、アフィン暗号はシーザー暗号のようにシフトした数がどの文字も同じではないので若干複雑な暗号になります。

講義で示された例題は「PAY ME NOW」を鍵k = (7, 3), N = 26で暗号化すると「EDP JF QXB」となるのですが、このプログラムでも同様の結果を得ることができました。

今回のプログラムでは使用文字数と先頭の文字をマクロにしてあるので、使いたい文字を変更することが容易になりました。

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

2007/11/18

シーザー暗号プログラム(その3)

今度は平文ファイルを読み込んで暗号化されたファイルを出力するように改造してみました。では早速ソースを

#include <stdio.h>

int main(void)
{
  int  key, code, input, output;
  FILE *fpi, *fpo;
  char file1[64], file2[64];

  printf("==============================\n");
  printf("平文ファイル:");   scanf("%s", file1);
  printf("暗号ファイル:");   scanf("%s", file2);
  printf("鍵を入力    :");   scanf("%d", &key);

  if( (fpi = fopen(file1, "r") ) == NULL){
    printf("Failure.\n");
  } else {
    if( (fpo = fopen(file2, "w") ) == NULL){
      printf("Failure.\n");
    } else {
      while( (input = fgetc(fpi)) != EOF ){
          if(input == ' '){
              fputc(input, fpo);
          } else {
              code   = (input - 'A' + key) % 58;
              output = 'A' + code;
              fputc(output, fpo);
          }
      }
      fclose(fpo);
    }
    fclose(fpi);
  }
  printf("==============================\n");
  
  return 0;
}

このプログラムは空白文字を暗号化せずにそのまま出力するようにしています。例えば、I like programingを暗号化するとM pmoi tvskveqmrkと出力されます。(ちゃんと空白をスルーしてくれていました)

シーザー暗号はこのくらいにして今度はアフィン暗号やRSA暗号に挑戦しようと思います。(これを応用すればアフィン暗号はすぐにできそう)

(追記): if(input == ' ') を if(input == ' ' || input == '.' || input == ',' || input == '\n') にすると基本的な英文と改行に耐えられるかと

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

Paint.NET

Paint.NETはワシントン州立大学とMicrosoftが共同開発しているペイントソフトです。

手軽に画像処理できるので重宝しています。

Paint

(画像は作業中のものです。-完成品-)

Link : ダウンロードLogo3

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

2007/11/17

言いたいことはこれだった

PC Watch「今、Vistaを選ぶ理由」には、私の言いたいことが書いてありました。この記事の内容こそが私の言いたいことです。

私の大学でもXPを買うことを薦められている人は多く、XPを薦める人を見るたびに苦々しく思っています。薦める人は大抵パソコンの知識がある人で、薦められる人は大抵ビギナーです。このとき薦める側の人は相手がどういうパソコンを求めているのかを考えなくてはいけません。たとえ自分は未だにXPが便利だと思っていても、相手にとっては不便かもしれません。ビギナーにやさしいOSはどちらかといえばやはりVistaに軍配があがるわけですから。(両方使えばXPとVistaの差は如実に現れる)

XPを薦める人は「Vistaは高いスペックを要求するが、XPならそんなことはないから安く済む」と言うかもしれません。ですが、ビギナーはヘビーユーザーよりもパソコンを長く使います。(私の周りでも10年使う人はいます)さらにビギナーはどんなきっかけでヘビーユーザーになるかわかりません。そんなときにスペックがボトルネックになってしまって買い換えることになるかもしれません。(これは航空自衛隊がF-4の後継にF-22ではなくF-15EやF/A-18E/Fを選んでしまうようなものです。こちらは選んでしまうと30年は変更不可ですが)

ヘビーユーザーであればこそビギナーに助言を求められたら、その人が後で後悔しないようなマシン構成を考えてあげるべきなのではないでしょうか。考えてあげられないなら軽はずみな発言は控えるべきです。

後々VistaもなかなかいいOSだったと言われるようになればいいなぁと思います。

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

Nautilusの調子が悪い

Nautilusの調子がなんだか悪いです。

一昨日からNautilusのブラウザ・ウィンドウでディレクトリを開くと、「Bug Buddy」とかいうソフトが起動して「クラッシュしたとき何してたのさ?」と聞いてくるようになってしまいました。これが起動するとホームディレクトリにバグレポートを吐き出し、指定したメールアドレスにも何やら送ってくるのですが、如何せん英語なので大雑把にしか理解できないです。

If you have any questions why you received this email, please see the text at
the end of this email. Replies to this email are NOT read, please see the text
at the end of this email. You can add comments to this bug at:
  http://bugzilla.gnome.org/show_bug.cgi?id=497066

  nautilus | general | Ver: unspecified
           Summary: crash in Home Folder:
           Product: nautilus
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: UNCONFIRMED
          Severity: critical
          Priority: High
         Component: general
        AssignedTo: nautilus-maint@gnome.bugs
        ReportedBy: mail
         QAContact: nautilus-maint@gnome.bugs
     GNOME version: 2.17/2.18
   GNOME milestone: Unspecified


What were you doing when the application crashed?



Distribution: Fedora release 7 (Moonshine)
Gnome Release: 2.18.3 2007-11-13 (Red Hat, Inc)
BugBuddy Version: 2.18.0

System: Linux 2.6.23.1-10.fc7 #1 SMP Fri Oct 19 15:39:08 EDT 2007 i686
X Vendor: The X.Org Foundation
X Vendor Release: 10300000
Selinux: Enforcing
Accessibility: Disabled
GTK+ Theme: Glossy
Icon Theme: Fedora

Memory status: size: 87392256 vsize: 87392256 resident: 32362496 share:
16289792 rss: 32362496 rss_rlim: 4294967295
CPU usage: start_time: 1195137519 rtime: 142 utime: 59 stime: 83 cutime:0
cstime: 3 timeout: 0 it_real_value: 0 frequency: 100

Backtrace was generated from '/usr/bin/nautilus'

(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1208723744 (LWP 3319)]
(no debugging symbols found)
0x00110402 in __kernel_vsyscall ()
#0  0x00110402 in __kernel_vsyscall ()
#1  0x00dc2d3b in waitpid () from /lib/libpthread.so.0
#2  0x009bea46 in ?? () from /usr/lib/libgnomeui-2.so.0
#3  <signal handler called>
#4  0x00110402 in __kernel_vsyscall ()
#5  0x00c39fa0 in raise () from /lib/libc.so.6
#6  0x00c3b8b1 in abort () from /lib/libc.so.6
#7  0x00401eca in g_logv () from /lib/libglib-2.0.so.0
#8  0x00401f09 in g_log () from /lib/libglib-2.0.so.0
#9  0x00401f86 in g_assert_warning () from /lib/libglib-2.0.so.0
#10 0x08091766 in ?? ()
#11 0x0547d409 in g_cclosure_marshal_VOID__VOID ()
   from /lib/libgobject-2.0.so.0
#12 0x0546ff83 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#13 0x0548048d in ?? () from /lib/libgobject-2.0.so.0
#14 0x05481997 in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
#15 0x05481b59 in g_signal_emit () from /lib/libgobject-2.0.so.0
#16 0x055fdf59 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#17 0x0547ca79 in g_cclosure_marshal_VOID__BOXED ()
   from /lib/libgobject-2.0.so.0
#18 0x0546ff83 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#19 0x0548048d in ?? () from /lib/libgobject-2.0.so.0
#20 0x05481997 in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
#21 0x05481b59 in g_signal_emit () from /lib/libgobject-2.0.so.0
#22 0x057ab7f5 in gtk_tree_model_row_deleted ()
   from /usr/lib/libgtk-x11-2.0.so.0
#23 0x056ac4c7 in gtk_list_store_remove () from /usr/lib/libgtk-x11-2.0.so.0
#24 0x056ac573 in gtk_list_store_clear () from /usr/lib/libgtk-x11-2.0.so.0
#25 0x08090356 in ?? ()
#26 0x080f6327 in ?? ()
#27 0x080f852a in ?? ()
#28 0x003f7491 in ?? () from /lib/libglib-2.0.so.0
#29 0x003f905c in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#30 0x003fc49f in ?? () from /lib/libglib-2.0.so.0
#31 0x003fc849 in g_main_loop_run () from /lib/libglib-2.0.so.0
#32 0x056afae4 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#33 0x0808c4dd in main ()

Thread 1 (Thread -1208723744 (LWP 3319)):
#0  0x00110402 in __kernel_vsyscall ()
No symbol table info available.
#1  0x00dc2d3b in waitpid () from /lib/libpthread.so.0
No symbol table info available.
#2  0x009bea46 in ?? () from /usr/lib/libgnomeui-2.so.0
No symbol table info available.
#3  <signal handler called>
No symbol table info available.
#4  0x00110402 in __kernel_vsyscall ()
No symbol table info available.
#5  0x00c39fa0 in raise () from /lib/libc.so.6
No symbol table info available.
#6  0x00c3b8b1 in abort () from /lib/libc.so.6
No symbol table info available.
#7  0x00401eca in g_logv () from /lib/libglib-2.0.so.0
No symbol table info available.
#8  0x00401f09 in g_log () from /lib/libglib-2.0.so.0
No symbol table info available.
#9  0x00401f86 in g_assert_warning () from /lib/libglib-2.0.so.0
No symbol table info available.
#10 0x08091766 in ?? ()
No symbol table info available.
#11 0x0547d409 in g_cclosure_marshal_VOID__VOID ()
   from /lib/libgobject-2.0.so.0
No symbol table info available.
#12 0x0546ff83 in g_closure_invoke () from /lib/libgobject-2.0.so.0
No symbol table info available.
#13 0x0548048d in ?? () from /lib/libgobject-2.0.so.0
No symbol table info available.
#14 0x05481997 in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
No symbol table info available.
#15 0x05481b59 in g_signal_emit () from /lib/libgobject-2.0.so.0
No symbol table info available.
#16 0x055fdf59 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#17 0x0547ca79 in g_cclosure_marshal_VOID__BOXED ()
   from /lib/libgobject-2.0.so.0
No symbol table info available.
#18 0x0546ff83 in g_closure_invoke () from /lib/libgobject-2.0.so.0
No symbol table info available.
#19 0x0548048d in ?? () from /lib/libgobject-2.0.so.0
No symbol table info available.
#20 0x05481997 in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
No symbol table info available.
#21 0x05481b59 in g_signal_emit () from /lib/libgobject-2.0.so.0
No symbol table info available.
#22 0x057ab7f5 in gtk_tree_model_row_deleted ()
   from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#23 0x056ac4c7 in gtk_list_store_remove () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#24 0x056ac573 in gtk_list_store_clear () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#25 0x08090356 in ?? ()
No symbol table info available.
#26 0x080f6327 in ?? ()
No symbol table info available.
#27 0x080f852a in ?? ()
No symbol table info available.
#28 0x003f7491 in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#29 0x003f905c in g_main_context_dispatch () from /lib/libglib-2.0.so.0
No symbol table info available.
#30 0x003fc49f in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#31 0x003fc849 in g_main_loop_run () from /lib/libglib-2.0.so.0
No symbol table info available.
#32 0x056afae4 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#33 0x0808c4dd in main ()
No symbol table info available.
#0  0x00110402 in __kernel_vsyscall ()
The program is running.  Quit anyway (and detach it)? (y or n) [answered Y;
input not from terminal]


----------- .xsession-errors ---------------------
** ERROR **: file nautilus-navigation-window.c: line 834
(activate_nth_short_list_item): assertion failed: (index < g_list_length
(window->details->short_list_viewers))
aborting...
(bug-buddy:3309): GLib-GObject-WARNING **: invalid uninstantiatable type
`GParamChar' in cast to `GObject'
(bug-buddy:3309): GLib-GObject-CRITICAL **: g_object_get_data: assertion
`G_IS_OBJECT (object)' failed
(bug-buddy:3309): GLib-CRITICAL **: g_hash_table_destroy: assertion
`hash_table->ref_count > 0' failed
(bug-buddy:3309): GLib-GObject-CRITICAL **: g_object_unref: assertion
`G_IS_OBJECT (object)' failed
Initializing nautilus-open-terminal extension
** ERROR **: file nautilus-navigation-window.c: line 834
(activate_nth_short_list_item): assertion failed: (index < g_list_length
(window->details->short_list_viewers))
aborting...
--------------------------------------------------


-- See http://bugzilla.gnome.org/page.cgi?id=email.html for more info about why you received this email, why you can't respond via email, how to stop receiving emails (or reduce the number you receive), and how to contact someone if you are having problems with the system. You can add comments to this bug at http://bugzilla.gnome.org/show_bug.cgi?id=497066. 

Nautilusをブラウザ・ウィンドウを使わなければ「Bug Buddy」は起動しないので慌てるほどでもないのですが、このままでは少し気持ち悪いなぁ。

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

2007/11/16

シーザー暗号プログラム(その2)

先ほどのプログラムを少し改良して大文字、小文字、プラスαを扱えるようにしました。

 while(string[i] != '\0'){
    number = (string[i] - 'a' + key) % 26;
    angou[i] = 'a' + number;
    ++i;
  }

の部分を次のように改造します。

 while(string[i] != '\0'){
    number = (string[i] - 'A' + key) % 58;
    angou[i] = 'A' + number;
    ++i;
  }

これは、'A'の値が65、'a'の値が97と表示されたので大文字A~小文字zまでが58文字あるだろうと類推しました。('A'や'a'の値は環境によって違いますが、A~zまで58文字であることは変わりません)

この改造は副作用で [ \ ] ^ _ `を扱えるので解読するには英アルファベットではなくJISコード表を見なくてはなりませんが・・・。(Zooを2文字ずらすと\qqとなる)

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

シーザー暗号プログラム

今回はシーザー暗号を作ってみました。シーザー暗号とは文字を指定した数だけずらす暗号で換字式暗号とも言われる簡単な暗号です。作ったプログラムは次のようになっています。

#include <stdio.h>

#define LEN 255

int main(void)
{
  char string[LEN];
  char angou[LEN];
  int  key, number, i;

  printf("平文を入力(英小文字のみ):");
  scanf("%s", string);
  printf("鍵を入力:");
  scanf("%d", &key);

  i = 0;
  while(string[i] != '\0'){
    number = (string[i] - 'a' + key) % 26;
    angou[i] = 'a' + number;
    ++i;
  }
  angou[i] = '\0';
  
  printf("暗号文:%s\n", angou);
  
  return 0;
}

numberの値を求めるところで行った処理は、入力した文字から'a'で引くことによって'a'との差分を求めています。(26で割るためには都合がいいので)

このプログラム英小文字しか扱えないなど欠陥だらけのプログラムでもあります。(文字を扱うのは苦手なので)

---追記---

このシーザー暗号プログラムは復号のことを考慮していないので、こちらの記事を読むことをお勧めします。

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

2007/11/15

デュアルブートはいろいろ面倒

私はデスクトップマシンにWindowsXPとVistaのデュアルブート環境を構築しているのですが、VMwareを導入してからというものの、デュアルブート環境に懐疑的になりつつあります。

というのも、デュアルブートでは同時に二つの環境を使うことはできず切り替えるには再起動が必要であるということ。また、XPに再インストールなどの処理を加えるとMBR(マスターブートレコード)を書き換えてしまい、Vistaを起動するにはVistaのディスクからMBRを修復しなくてはならないわけです。さらに、お互いWindowsならまだしもLinuxとのデュアルブートだとMBR関係の処理はさらに複雑になります。(決して楽ではないはず)

私が未熟な上にMBR関係のトラブルに頻繁に遭遇しているからかもしれませんが、MBRをいじくるのはできれば避けたいところです。実は今日もデスクトップマシンのXPを修復するために再インストールしたところMBRを上書きしてブートメニューが表示されなくなりました。(MBRは修復してVistaは起動できるようになりましたが、XPはなぜか起動できないです。セーフモードでは起動できるのですが)

今後はデュアルブートをできるだけ避け、複数のOSを運用するときはVMwareを使うことにしました。VMwareを快適に使うにはある程度のマシンパワーを要求され、ゲストOSでのグラフィック性能は制限されますが、HDDをいじくってMBRやパーティション操作のリスクを背負うことがないので精神衛生は保たれるのではないかと思います。

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

2007/11/14

VMware Server2 β版がリリース

11月13日にVMware Server2 パブリックβ版がリリースされました。現在はこのサイトでダウンロードすることができます。

VMware Server2ではWindows Vista、Windows Server2008β、RHEL5、Ubuntu7.10などがゲストOSとしてサポートされるようになりました。他にもUSB2.0への対応や、割り当てられるメモリの増加、CPUを2つ割り当てられるようになるなど機能が拡張されているようです。

なお、正式版のリリースは来年の予定だそうです。

---詳細記事:ITmedia---

Vm_logo

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

ThinkPadのキーボード

PC Watch「レノボ、ThinkPadのキーボード設計へのこだわりを開発者が語る」で、レノボ・ジャパンのThinkPadのキーボード開発者、堀内氏へのインタビューが掲載されています。

堀内氏は「ThinkPad 600」以降ほぼすべてのThinkPadでキーボード開発に携わっているそうで、記事内でThinkPadのキーボード開発へのこだわりを語っています。

Thinkpad1_4

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

2007/11/13

JavaScript

最近ではWebプログラミングにも興味を持ち始めてきました。Webページに動きをつけることは単純にスゴイなぁと思ったもので。

言語はよく目にするJavaScriptがよかろうと思っていたところ、「404 Blog Not Found」でJavaScriptを題材にした「アマグラマーのすすめ」という連載をやっているので、これを読みながら勉強しています。

JavaScriptをブラウザで動作させるにはHTMLに埋め込むようなのですが、「アマグラマーのすすめ」では流れでJavaScriptのコードを直接実行できる入力フォームを作るので、HTMLを知らなくてもJavaScriptを勉強するができます。→こんなのです。

試しに、alert("Hello!");とでも書いてみて下さい。

私はHTMLとかWeb系の技術一般に疎いので、この機会にWebに強くなりたいなぁなんて思っています。

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

2007/11/12

Intel、45nmプロセスのプロセッサを発表

これまで「Penryn」と呼ばれていた45nmプロセスのプロセッサを発表したようです。

といっても、このプロセッサはCore 2 ExtremeとかXeonなどのハイエンド/サーバ・ワークステーション向けの製品ですから手は出せないですけど。

このPenrynでCore 2 Duoは第二世代になるわけですから、お手ごろ価格のコンシューマ向け製品をはやく発表してほしいものです。

PC Watch(Intel、45nmプロセスのプロセッサを正式発表)

Hdrtxtlogo

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

雨が怖い・・・

今日は朝からヒドイ天気で、朝方には天井が揺れるほどの雷で眠りを覚まされ(マンガにでてくるような稲光だった)、それからずっーと雨が降り続いていました。

雨がポツポツ降ってきたと思ったら、ドシャー!!

「あっ、雨が弱くなってきた。」と思ったら、ドシャーーー!!

「やっと雨やんだよ~。晴れ目が見えてきた。」・・・ドシャドシャドシャーーー!!

このドシャドシャドシャーーー!!のときに車に乗っているとワイパーを一番速く動かしても前が見えない・・・。動かしてないときとそんなに変わんないし。

今日はちょうど1年前にぶつけられた日で同じところを走っていたので、「どうしても事故らせたいのかー!」なんて叫びながら走っていました。

雨が怖い・・・。

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

2007/11/11

復活!・・・・・・・?

以前、「XPもまだ必要!」で突然お亡くなりあそばされたレッツノートさんですが、今日突然復活なされました!

復活を果たされたとはいえ、いつ再びお亡くなりになるかわからないので、VMware Converterを使って仮想マシン化してしまおうと思います!(なんだ?このタイミングの良さは・・・ご都合主義的な展開になってきた)

現在はバックアップ中ですが、なんか不穏な空気が漂っています。突然HDDが逝っちゃうようなことにならなければいいですが・・・

---追記(20分後)---
もう、一回死んでブルースクリーンを拝みましが、電源を入れなおしたら無事復活!で2ラウンド開始です。このペースで作業完了までの1~2時間もつだろうか・・・

---またまた追記---
あと15%というところでまた死亡。

---さらに追記---
また失敗!意地でも今日中に仮想マシンにしてやる・・・

---結果報告---
HDDは道路工事のような音をたてて無事、お亡くなりになりました。

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

日経Linux 12月号

日経Linux 12月号を買ったので簡単にレビューを。

12月号の特集は以下の3つです。

  1. リカバリを極める
  2. openSUSE10.3でLinux入門
  3. OpenOffice.orgで年賀状作成

私が特に注目したものを取り上げてみようとおもいます。まず、「1.リカバリを極める」では、Part1でRIPLinuxというKNOPPIXとは一味違ったディストリビューションを用いたリカバリ方法を紹介しています。

このRIPLinuxとは本体のサイズが70Mバイトしかない軽量LinuxでGUIを使っても256Mバイトしか使わないので、メインメモリーがこれ以上あれば起動ディスクを取り外すこともできるという軽さです。RIPLinuxもKNOPPIXと同様にNTSF形式のファイルシステムにアクセスできるのでGUIにこだわらなければ利用価値の高いLinuxといえます。

Part2では、現在稼動しているWindowsを仮想化することができるVMware Converter(以下VMC)を紹介しています。

VMCはplayer, serverと同じく無償で使え(付録に収録されてる)、単なるデータのバックアップではなく、実際に動くマシンごと仮想マシンにしてしまうソフトですが、Windowsでしか動作しないし、Windowsしか仮想化できません。(それでもスゴイことには変わりませんが)

Linuxのバックアップも、仮想マシン化ではありませんがしっかり解説されています。

次に、「2.openSUSE10.3でLinux入門」ではFedora 8よりも一ヶ月ほど前にリリースされたopenSUSE10.3(以下SUSE)の機能を紹介しています。SUSEはUbuntuに次ぐ人気を誇るディストリビューションで、「YsST2」というWindowsのコントロールパネルに似たシステム管理ツールを搭載しています。詳しい説明はしませんが、GUIを用いた操作性はUbuntuを凌ぐのではないのかと思うほどです。(デュアルブート環境を構築するならSUSEだと思います)紙面では基本機能をひと通り説明しているので、付録DVDに収録されているLiveCDを使ってSUSEを使ってみようかと思います。

毎号付いてる付録のDVD-ROMにはSUSEのLiveCDイメージ(GNOME/KDE両方)とUbuntuのLiveCDイメージ、RIPLinuxなどが収録されています。

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

2007/11/10

ローレンツ方程式

ローレンツ方程式というのは、MITの気象学者ローレンツさんが提示した非線形方程式です。この方程式はカオス的なふるまいをすることで有名です。

なんか難しげな響きがしますが、数値計算プログラムは簡単にできます。

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

//---parameter---
int    sgm = 10;
int    r   = 28;
double b   = 8.0/3.0;

//---Lorenz Houteishiki---
double f(double x, double y)
{
	return ( sgm*(-x + y) );
}
double g(double x, double y, double z)
{
	return ( r*x - y - x*z );
}
double h(double x, double y, double z)
{
	return ( -b*z + x*y );
}

int main(void)
{
  int i, n;
  double x0, y0, z0, xn, yn, zn;
  double dt, kf[4], kg[4], kh[4];
  FILE *fp, *gp;
  
  x0 = 1.0;  y0 = 1.0;  z0 = 1.0;
  dt = 0.001;  n  = 200000;

  fp = fopen("lorenz.dat", "w");
  gp = popen("gnuplot -persist", "w");
  
  //===Runge-Kutta===
  for(i = 0 ; i <= n ; i++){
    kf[0] = dt * f(x0, y0);
    kg[0] = dt * g(x0, y0, z0);
    kh[0] = dt * h(x0, y0, z0);
    
    kf[1] = dt * f(x0+kf[0]/2.0, y0+kg[0]/2.0);
    kg[1] = dt * g(x0+kf[0]/2.0, y0+kg[0]/2.0, z0+kh[0]/2.0);
    kh[1] = dt * h(x0+kf[0]/2.0, y0+kg[0]/2.0, z0+kh[0]/2.0);
    
    kf[2] = dt * f(x0+kf[1]/2.0, y0+kg[1]/2.0);
    kg[2] = dt * g(x0+kf[1]/2.0, y0+kg[1]/2.0, z0+kh[1]/2.0);
    kh[2] = dt * h(x0+kf[1]/2.0, y0+kg[1]/2.0, z0+kh[1]/2.0);
    
    kf[3] = dt * f(x0+kf[2], y0+kg[2]);
    kg[3] = dt * g(x0+kf[2], y0+kg[2], z0+kh[2]);
    kh[3] = dt * h(x0+kf[2], y0+kg[2], z0+kh[2]);
    
    xn = x0 + (kf[0] + 2.0*(kf[1]+kf[2]) + kf[3])/6.0;
    yn = y0 + (kg[0] + 2.0*(kg[1]+kg[2]) + kg[3])/6.0;
    zn = z0 + (kh[0] + 2.0*(kh[1]+kh[2]) + kh[3])/6.0;
    
    //---OUTPUT---
    fprintf(fp, "%lf\t%lf\t%lf\t\n", xn, yn, zn);
    
    x0 = xn; y0 = yn; z0 = zn;
  }
  
  fclose(fp);
  fprintf(gp, "splot \"lorenz.dat\" w l\n");
  pclose(gp);

  return 0;
}

このプログラムは常微分方程式の近似解を求める方法としてルンゲ=クッタ法を採用しています。アルゴリズムを理解してしまえば簡単にプログラムにすることができます。(結構、精度もいい)

さらに、このプログラムは出力したファイルをGnuplotに渡してグラフを作成するようにしています。例えばこんな風にグラフが出力されます。

Screenshotgnuplot

これをローレンツアトラクタと言います。

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

2007/11/09

Fedora 8 を使って気づいたこと

Fedora 8を使ってみていくつか気づいたことがあるので書いておきます。まず、VMwareへの対応です。Fedora 7はVMware Toolsなしの状態でもマウスポインタのシームレス移動はできました。このFedora 8はこれに加えて、ホストOSとの時計の同期と解像度の変更がToolsなしでもできるようになっているようです。(ホストOSとのファイル共有などはできない)

Fedora8_5

こういった便利さはVMwareを使っていないと気づかなかったですねぇ。他には、話題のオンラインデスクトップ「bigboard」を使ってみました。

bigboardをインストールすると「アプリケーション」メニューの「インターネット」の下に「Mugshot」という項目が追加されます。これを起動すると、上のバーにMugshotアプレットが追加されるので、ここからGNOME Onlineに登録します。

Fedora8_6_2

Sign Up側の入力フォームにメールアドレスを入力して緑のボタンをクリックするとメールが送られてくるので、メール内のリンクから登録フォームに行きアカウントを登録して下さい。

Fedora8_7 

必要な記入を済ませたら、紫色の「GET STARTED」ボタンをクリックして登録完了です。これでbigboardを使う準備が整ったので、いよいよ起動と思ったらメニューにbigboardを見つけられなかったので、ターミナルに「bigboard」とコマンドを入力したら起動しました。

Fedora8_8

起動するとこんな風に画面左にbigboardが出現します。まだ日本語には対応してなくて英語表示なので詳しい使い方は分かりませんが、印象としては「メッセンジャーにアプリランチャーをくっつけたもの」といった感じです。

後は感覚的なものですが、メモリは増やしたほうがいいかもしれません。(Fedora 7で512MB)=(Fedora 8で640MB)が同じくらいの体感速度だと思いました。

-------------------------------------------------
私はまだ未熟なので、これらの説明には誤りなどがあるかもしれないのでご了承ください。もし間違いや足りないところがありましたら、コメントしていただけるとありがたいです。

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

Fedora 8 は独自機能さえ削除してカスタマイズできる

CNET Japanの「レッドハット、Fedora 8をリリース--目指すのは汎用のLinux基盤」という記事を読んでみると、

「Fedora 8はFedora独自の機能を削除することができるので、自分のカスタムディストリビューションを作ることが容易になった」らしいです。Red HatはFedoraに高い汎用性を持たせることでコミュニティの拡大を狙っているようです。
Fedora Projectではすでにカスタマイズされた特定用途向けFedora(spins)が公開されています。

  • Games         ゲーム
  • Developer     プログラミング
  • Electronics    電気回路の設計、シミュレーション

この3つは全てLiveDVDとして公開されているので、DVDからブートするだけでFedoraを使えます。(もちろんHDDにインストールすることもできます)

最近はUbuntuのほうがFedoraよりも人気があるようですから、Fedoraを活発にしようとする試みは歓迎ですね。本屋にならぶLinux関連書籍にもUbuntuの名前をよく見かけます。(UbuntuはポストWindows的な特集が多い)

私はUbuntuも一時期使っていましたが、やっぱりFedoraのほうが好みです。Ubuntuは設定を強要してくる感じがするんですよね。(インストーラとか)あと、オレンジ。これが耐えられないです。(テーマを変えるとかKDEを使う方法もある)Synapticはとても便利ではありますが、結局Ubuntuはなんとなくイヤってだけなんです。

話はそれましたが、Fedora 8はこれまでのFedoraよりも高いカスタマイズ性をもっているということです。

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

Fedora 8をインストール

早速、Fedora 8をインストールしてみました。こういうときVMwareがあると便利です。

VMwareの仮想マシンのファイルはFedora 7と同じもので大丈夫でした。

Fedora8_2

インストーラは壁紙やボタンのデザインが変わった程度です。(強いて言うなら、パーティションの削除で警告メッセージがでるようになったくらいだと思います)

インストールディスクからパッケージの情報を読み取るのに若干時間がかかりましたが、無事にインストールできました。

Fedora8_3

Fedora 8のログイン画面がこんな感じです。そしてデスクトップ画面がコレ

Fedora8_4 

Fedora 7の気球の壁紙とは打って変わって、落ち着いた印象を受けます。GNOMEのバージョンは2.20.1になっていて、テーマなど細かいところが変更されています。(まだあまりいじってないのでわかりませんが)

大きな変更点としては、GUIのパッケージマネージャに「リポジトリマネージャ」なるものが搭載されていてパッケージ情報の取得/ダウンロードをどこから行うのか指定しなくてはならなくなりました。(コレよくわからない上に面倒)
[追記]リポジトリマネージャでInstallMediaのチェックをはずしたらリポジトリを参照できました。

結構、追加/変更された部分が多そうなのでFedora 8に関する情報を集めてみようと思います。

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

Fedora 8 リリース!!

【11/09/0:15頃】
Fedora Projectは前面Fedora 8仕様にリニューアルされてFedora 8インストールDVDのisoイメージをダウンロードできるようになりました。現在はBitTorrent用のトレントファイルをダウンロードできますが、直接ダウンロードはできないようです。(10分ほど前に各国のミラーサイトを覗いてきましたがFedora 8は置いてありませんでした)また、GNOME版とKDE版それぞれのLiveCDイメージも用意されています。
[追記]10:40現在、直接ダウンロードできるようになりました。(ただし遅いです)

---BitTorrentクライアントをダウンロード---

【11/09/1:50頃】
isoイメージのダウンロードが完了しました。・・・と思ったら96%付近で接続が切れていました。

【11/09/2:13】
再接続を試みても99%でダウンロードが止まってしまいました。(99%病かな)

【11/09/2:23】
なんとかダウンロードできました。回線が混んでたのかも。

【11/09/2:30】
インストールディスク作成完了。VMwareにFedora 8をインストールしてみます。

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

2007/11/08

ちょっと嬉しいことがあったのです

今日、初めて1日のアクセス数が100を超えました!

他のブログからすれば大した数字ではないですが、このブログとしては初めてなので。

やったー\^0^/

---追記(翌日)---

今度は、重複アクセスを除いて100を超えました!

さらに嬉しいです(^0^)

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

Fedora Eclipseを日本語化できない

FedoraにはFedoraにネイティブ化されたEclipseが用意されているのですが、このEclipseを日本語化する方法が分かりません・・・。(日本語パッケージが用意されていますが、インストールしても効果がありません)

Pleiadesという強力な日本語化プラグインもありますが、設定の仕方がよくわからないんですよねぇ~

もっとも、英語を極めれば日本語化も必要ないですが・・・(極論ですねコレ)

Fedoraといえば、もう少しでFedora 8正式版がリリースされますねぇ。Fedora Project(英語)を見ると、カウントダウンが『1』となっています。

日付変更と同時にダウンロードしてきます!(別に理由はありませんが・・・)

---追記(11/09/0:02)---

意気込み勇んでダウンロードしようと思ったんですが、アップロードされていないです・・・

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

ユークリッドのアルゴリズム(Ruby版)

今度はRuby版を作ってみました。

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

print "====================\n"
print "整数を2つ入力せよ\n"

num1 = gets.to_i
num2 = gets.to_i

while (temp = num1 % num2) != 0
  num1 = num2
  num2 = temp
end

print "最大公約数:", num2,"\n"
print "====================\n"

Javaとは違ってRubyは短く書くことができるので、非常にスッキリしています。

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

2007/11/07

ユークリッドのアルゴリズム(Java版)

Javaを少しばかり勉強したので、以前書いたユークリッドのアルゴリズムをJavaで書いてみました。

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

import java.io.*;

class Gcd
{
    public static void main(String args[ ]) throws IOException
    {
      System.out.println("====================");
      System.out.println("整数を2つ入力せよ");

      BufferedReader br =
        new BufferedReader(new InputStreamReader(System.in));

      System.out.print("整数1:");
      String str1 = br.readLine();
      System.out.print("整数2:");
      String str2 = br.readLine();

      int num1 = Integer.parseInt(str1);
      int num2 = Integer.parseInt(str2);
      int temp;

      while( (temp = num1 % num2) != 0) {
        num1 = num2;
        num2 = temp;
      }

      System.out.println("最大公約数:" + num2);
      System.out.println("====================");
    }
}

アルゴリズムの部分は何の変更もなく、文字の入出力の部分がC言語と違うだけといった感じでした。Javaはコマンドラインから入力したものを文字(列)として扱うので、プログラム内で受け取った文字を数値に変換しています。

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

2007/11/06

Visual Studio 2008は11月中にリリース

Visual Studio 2008は11月中に正式リリースされるようです。

私はVisual Studio 2005は持っているのですが、未だに使いこなせていません。(機能が豊富すぎて把握できない)

まさに宝の持ち腐れです。

2008が手元に来るまでには、ある程度使えるようにしたいです。(買うことは確定)

---詳細情報---

マイコミジャーナル

---追記(11月20日)---

Visual Studio 2008と.NET Framework3.5の英語版が本日リリースされました。

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

2007/11/05

XPもまだ必要!

私はThinkPad X60を買ってからというものの、Vistaにすっかりはまってしまって最近はXPをあまり使っていませんでした。(思いのほか安定している上に使いやすいので)

ですが、全てのソフトがVistaに対応しているわけではないので、Vistaに全ての作業を任せるのは無理がありますね。この点に関してはさすがXPというところでしょう。(Vistaには互換モードがありますが、できるだけリスクを排除したいので無理はしたくありません)

これはプログラミングに関しても例外ではなく、いまだVistaに対応していないソフトは少なくないです。

そんなわけでXP環境が必要になり、予備役になっていたレッツノートを引っ張り出してきました。これをリカバリして使うわけですが、SP1の頃のXPなので2007年仕様にまでアップデートするのがとてつもなく面倒なのです。(できればやりたくない作業)

4時間ほどして2007年仕様にもってこれました。(更新の数がスゴイことになってた)

Desktop

なんか、懐かしいです。

---追記---

セットアップが全て完了したところで逝ってしまわれました。復旧しようとしてもBIOSでHDDを認識していないので、HDD交換ですかねぇ。(最近トラブルが続き過ぎ・・・)

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

2007/11/04

Fedora7でTeX・その2

いままでは、TeX文書を編集するときにいちいち文字コードを日本語EUCに変更してEmacsを立ち上げていましたが、これはとても面倒です。

そこで、「.texのファイルを開いたときにはEmacsを日本語EUCで立ち上げる」ようにEmacsを設定すればいいじゃないか!と思って、.emacsに見よう見まねでEmacs Lispを書いてみました。

;; .texを開くときには日本語EUCで立ち上げる

(modify-coding-system-alist 'file "\\.tex\\'" 'euc-jp)

これを.emacsに書いてみたところ無事に動作しました。(モードライン上に-Eと表示されていれば成功、-uとなっているとUTF-8)

emacs -nwでターミナル内で起動しても日本語EUCでちゃんと起動しました。

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

2007/11/03

Windows Shadow Copyがあったのに・・・

Fedora 7環境は無事に復旧し、以前の環境をほぼ再現できました。

今までのカスタマイズがブログに書いてあったおかげで、だいぶ早く再現することができました。(今後のために、このブログに書いていなかったカスタマイズもあとで書いておこうと思います)

これで元どおりだぁ~と喜んでいましたが、よくよく考えてみると私はWindows Vista Businessを使っているのです。Vista Businessに搭載されている機能に「Windows Shadow Copy」があったのに・・・

これは、"フォルダ内のファイル変更をモニターして復元ポイントを作成する機能"で、例えば、

Shadowcopy

フォルダを右クリックしてプロパティを選ぶとこんなように復元ポイントが示されます。特定のファイルのみを復元したいときは、任意の復元ポイントをダブルクリックして開くと

Shadowcopy2 

復元ポイント時点のフォルダを閲覧できるので、必要なファイルをドラッグ&ドロップしてくればいいわけです。

こんな便利な機能があるのに使わなかったなんて・・・

このFedora7フォルダは同名の別ファイルなのに以前のFedora7フォルダの復元ポイントが表示されています。(トラブル発生後のものなので使えませんが)

---注意---

Windows Shadow CopyはHome Basic/Home Premiumには搭載されていません

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

2007/11/02

悪いことは続くもので・・・

悪いことは続くもので、昨日以来トラブルが頻発しています。

トラブルの解決に時間を費やすのはとっても心を消耗します・・・

「・・・めんどくせぇ。」が10分に1回は口からもれます。

---追記(同日22:03)---

徐々に復旧しつつあります。

後はFedora 7 on VMware Playerを再インストールするだけです。

Fedora7でアプリケーションを下手に削除したのが悪かったみたいで、GNOMEが起動しなくなりました。この状況を打開する知識がないので、再インストールに踏み切ります。幸い、必要なデータはサルベージできたので精神へのダメージは最小限です。

今後のために一連の作業をメモしておこうと思います。(この作業をしているとGUIの便利さを痛感します)

  • $ su
  • # dmesg   ←USBメモリがどういう名前で認識されているか確認できる
  • # mkdir /media/usb   ←マウントポイントを作成
  • # mount /dev/sdb1 /media/usb   ←マウントする(sdb1は私の場合の名前)
  • # cp -R /home/Fedora /media/usb   ←必要なファイルをコピー(Fedoraはホームディレクトリ)

なんとかなりそうな雰囲気が漂ってきました。

---さらに追記(翌日13:35)---

復旧完了しました~。

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

2007/11/01

踏んだり蹴ったり

今日は散々な一日でしたぁ・・・。

外付けHDDの一台が死に、こいつを復旧しようとしてあわやもう一台も死にそうになり、X60のために買った液晶保護フィルムを貼るのに失敗して1200円ほどを無駄にしてしまいました・・・。

もう、ため息しか出ません。

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

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