Main Page

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/hyakuren-soft/www/diary/includes/dateLink.php on line 19

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/hyakuren-soft/www/diary/includes/dateLink.php on line 20


2005年 1月 1日 ()  
祖母宅へ。
まだまだ元気そうで、なによりだった。

夕方にトランプをやったり、何気なく竹取物語を読んだ以外は、基本的に寝て過ごす。


2005年 1月 2日 ()  
夕方、ヒレ肉とモモブロックとで、豚カツを作る。
私のいない間に台所が近代化されていた。
コンロに揚げ物の油の温度を知る機能が付いて、びっくりだった。

ハイテクな台所にキドキするあたり、私、だめ。


2005年 1月 3日 (月)  
昼、豚バラのブロック肉でもって角煮を作る。
鍋で煮込んだあと、黒砂糖でもって仕上。味付けはよかったと思うが、
ちょっと固かったかも。
圧力鍋でやわらかく調理し直され、夕食に出されたとのこと。

私は同窓会に行っていて食べてないんだが...。



んで、高校柔道部の新年会。なんか再開するのは、7年ぶりくらい。
待ち合わせ場所の駅に着いて

「見て分かるかな〜」

などと思っていたが、分かるものらしい。
駅について同学年を見かけたとき、互いに

「あ〜〜〜」

などと言って、片足を上げて同じポーズを取ったりした。



変わってない。なんか、いい感じだ。

ぼちぼちと人数が集まる中、私たちの代の主将はばっちりとスーツを着込んでの参加。
スーツで来るかどうかは、家族会議を開いて決定してきたらしい。
あぁ、妙な所で真面目なあたりは相変わらずだな...。

んで、数も揃ったので会場へ。



会場の小料理屋では、ふぐ、かも鍋などで、一人 ○千円が徴収された。
社会人はともかく、学生にはちと高い代金だった。

参加者としては、定年退職済みの顧問の先生、いい年の先輩方、
ほぼ同期の代、って感じだった。むしろ年輩の方が多く、昔の話も聞けたりした。
顧問の先生はその昔、試合の宿泊先でもって生徒の部屋に入るなり

「おい、酒はないか?」

と聞いたことがあったらしい。豪傑ですね。
そういえば私達の最後の試合でも、主将が千鳥足で試合をしていたのが思い出された。
いつの時代もそういうものらしい。



正直、同期と会うのは久しぶりだったが、気が合う仲間ってのは良いものだ。
んで、以下はその気の合い具合を象徴するかのような会話。
「いや〜、もう二度と会うことはないと思ってたよ」

「おぅ、実は私もそう思ってた」

「だよねーー、はははは」

「はははは」
ちょっと妙な盛り上がり方かも。
そして、そんな同期からも変な人扱いされる私。ショックだった。
まぁ、いい感じ。
ほとんど会わないにせよ、元気で頑張っているのであればそれでよい。
私もかくありたし。



帰り道、9時過ぎなのに終電がなくなっていて悲しかった。
ちなみに、明日の早朝に帰省。


2005年 1月 4日 (火)  
早朝に起床し、新幹線で帰省。
つくばに戻ってきた。


2005年 1月 5日 (水)  
倒立制御のプログラムを見直したり、
気分も新たに、IEEE1394ドライバ作成を再開してみた。
IEEE1394ドライバの作成は、しばらく放置していた課題で、割と面倒。
少しずつでも作成し、「今年はやる」という目標の結果の一つにしたいものだ。
と、思った。

思うだけなら簡単なんだが...。


2005年 1月 6日 (木)  
IEEE1394のドライバを真面目に作り出す。
自分で言うのも何だが、かつてない張り切り具合。

皮肉な話だが、地元のみんなに会って、それぞれが活躍しているのを
見せつけられたせい。

変なあたりで負けず嫌いだな、私...。

目標がはっきりしたし、頑張りたい。



取り雑炊を作って食す。
雑炊に対する鶏肉の割合が少なめだったが、いい感じ。
けちりすぎだと思った。



IEEE1394ドライバの作成は、Asynchronous Quadret Read (write transaction) と
バスリセット時に Self-ID が届く当たりを理解し、テストプログラムを作ってみた。
至極、いい感じ。

あと、ロボットの倒立実験を少し行う。
ゲインかプログラムがおかしいらしく、相変わらず振動しまくり。
ロボットの上には開発環境を含んだノートパソコンが搭載されているんだが、

「ノートパソコンが振動に耐えられるかの実験ですか?」

などと言われて、ショックだった。
がんばれ、私...。
/そりゃそうだ


2005年 1月 7日 (金)  
昼過ぎに起床して、だらだら。

ロボットの倒立制御のプログラム中に、どう考えてもシフト演算の方向が逆な箇所が
あるんだが、実機ではちゃんと動作している。

私の理解とプログラムの実際とが異なる模様。
「動いているソースは触るな!」との格言に従うべきか、
自分自信の「ちょっと気持ち悪いなぁ...」って気持ちに従うべきか。

むぅ。


理解できないまま、徹夜で「Diablo II」をやったりした。


2005年 1月 8日 ()  
「Diablo II」の話。朝方に バールを倒して Hell レベルをクリア!
タイガーアサシンと、ソーサレス、呪いネクロの3人がかりだった。
また一つ、目標が減った。

徹夜明けなので朝から昼まで睡眠。
我ながら、ただれていると思った。

今日は、こんな感じだった。


2005年 1月 9日 ()  
早朝に起床。
モータ制御の実験をしていて、制御プログラムにバグがあるのを見つける。
今まで動作していたのが不思議になるくらいのレベル。

何事も、基本部分は大事です。


2005年 1月 10日 (月)  
本日は教官宅にて、少し遅めの七草粥な日。
今までは教官宅で催しがあって伺う度に、裏庭の竹を切りまくっていた。
なつかしい。

...んで、今回も切りまくるつもりで参加してみたんだが、

切ってもよい竹には、紙テープが巻いてあった...

やりよる。確かに以前「切ってもよい竹には印でもあると助かります」などと言ったが、
本当に実行されるとは思ってなかった。

私の指導教官はこのように、ある意味すごい人です。
あぁ、もちろんいい意味で。

んで、七草粥は適当に料理を頂いてから夕方に帰宅。



夕方、「きょうの料理」を見る。
今日の講師は、ほのぼの系のおばあちゃんだった。つか、萌え。
ほのぼの系で、妙齢の感じの女性を想像してみる。

...いかん。
最高すぎて、私的にメガヒット♪

我ながら、上の表現は日本語として変だと思った。



夕食として、お好み焼きを作る。
いつもながら、賞味期限の過ぎた肉をパックから取り出すときは、指が震えます。
まぁ、調理は普通にできた。

が、

いざ食べようという段になって、お好み焼きソースがないのに気付く。
冷蔵庫、棚にあったのは、

味噌、焼き肉ソース、つゆ、しょうゆ、バター

くらい。
お好み焼きを野菜の入ったホットケーキとみなして「バター」でもよさそうだったが、
何事もチャレンジなので「味噌」を塗ってたべてみた。微妙だった。

...いつも、あたり前だと思っているものこそ(この場合ソース)、大事なんだと思った。
まぁ、そんな感じ。


2005年 1月 11日 (火)  
文系の Java講義に TA(ティーチング・アシスタント)として出席。
で、例題として先生がスライドに映したプログラムを見て頭を抱える。
ダメ過ぎ。
色まわりで 0〜255 を増分 5 で計算している箇所で、

blue += 5;
if (blue == 255) {
  ...
}


になっているあたりとか、特に...。 == でなく、>= にして欲しいです。
私、プログラムに関しては

「ダメなものはダメ」

と言える人間であると思っていたが、年上のまったりした先生が、
微笑みを混ぜつつ説明しているのに

「そのプログラムは、ダメ!」

って感じで割り込むことはできなかった。
私は今日、自分の哲学を曲げた...。



「きょうの料理」、今日の講師もおばちゃんだったが、あまり萌えなかった。
年食ってりゃ、萌えるってもんでもないらしい。
つか、やっぱり自分と同じくらいの年齢の方が、ぐっとくるしな。



んで、晩ごはんとして、鶏肉のパリっと焼き。
鶏肉を焼くときに皮を下にしてフライパンに敷き、上から肉に重みをかけて焼く方法。

焼きあがったら確かに皮がパリパリしてた。
控えめに言っておいしかった。
いい感じ。


2005年 1月 12日 (水)  
今日は、来年度の学生に対する研究室紹介の日。ちなみに2回目。
早朝に就寝して、昼に起床。夕方から発表の準備を始める。
倒立制御のデモプログラム、発表に間に合ってよかった。



「サムネイル」って変換したら、「サム寝入る」になった。
誰か助けて下さい。


2005年 1月 13日 (木)  
久しぶりに郵便物を取りに言ったところ、日系BPから少し厚めの封筒が届いていた。
「デバッグルール、9つの原則、54のヒント」っていう本の抽選に当たったらしい。
そういえば「抽選でデバッグの9原則の紙を入れたお守りをプレゼント♪」って
アンケートに答えた気がする。

まぁ「紙が入ったお守りが届いただけだよな〜」と思ったのですが、

そんなんじゃありませんでした!

まず、この封筒に注目。



拡大してみましょう。



感無量!

日系BPは本気だと思いました。

引き続き、封筒の中身にあったお守りの表と裏。


例によって、拡大してみましょう。


いやもう、何がなんだか、って感じです。
あと、最後にあいさつの紙。



まぁ、追伸部分を抜粋すると、以下の通りです。
追伸: 御祓いの模様は下記 URL でご覧いただけます。

http://bpstore.nikkeibp.co.jp/sp/bestpractice/

...すごいっす。
たかが抽選の御守りに、お払いをしてもらったらしい。

ちなみに URL先には、御祓いの様子を納めたムービーが置いてありました。
神社でもって、神主さんが御祓いしまくっている様子が、数分に渡って見放題です。
真面目な話、日系BPには感動させられました。



そして私の所に届いたお守りは、今、自宅PCのモニタ前に鎮座しておわします。
よくあるような雑誌の裏の紹介風に書くと、
「あのお守りを飾って以来、プログラム中のバグの数が激減しました。
  おかげてプログラミングがすいすい進み、寝不足も解消されて人生バラ色です!
                                                              (2X歳、学生) 」
って感じですかね。
本当に人生がバラ色に見えるとよいのだが...。

とまれ、日系BPやりよる。


2005年 1月 14日 (金)  
ちゃんとした時刻に起床してプログラミング。
プログラムのコメント部分に間違いがあったのに気付く。

/* 固定小数点演算の定数 */
enum {
  VELOCITY_AVERAGE_SHIFT = 8, /* 移動平均のバッファサイズのシフト幅 */
  SMALL_OFFSET_SHIFT = 7,  /* 2^(この値) 毎に微笑オフセット値を加算 */
};

「微笑オフセット」か...、文字通り微笑ましいな。
我ながら、ぐっときた。

が、修正しておいた。


2005年 1月 15日 ()  
いろいろとあった。頑張ろうと思った。
Java講義の TA で頼まれたプログラム、サムネイル付きの画像ビューアーを作成した。
TA を引き受けておいて何だが、私は Java の GUI プログラムを真面目に作成する
のは初めてなので、よい経験になった。

以下、ソース。
プログラムに興味のない人は、この日記の日付の ▽ のリンクを押して下さい。
/*
  サムネイル付き画像ビューアー
  $Id$
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;


class ThumbViewer {
  private static Icon folder;	// フォルダアイコン
  private static JSplitPane splitPane; // サムネイル、画像の表示用
  private static String path = "./";	      // 表示中のディレクトリ位置
  private static ActionListener buttonListener; // サムネイルボタンイベント
  private static JFrame frame;	      // ダイアログ操作用
  private static boolean isResizeImage;
  private static MouseWheelListener wheelListener; // 画像閲覧のイベント
  private static MouseListener clickListener; // 画像閲覧のイベント
  private static ImageList imageList; // サムネイル表示中の画像名を確保
  
  private static final String APPLICATION_TITLE = "ThumbViewer";
  private static final double THUMB_IMAGE_HEIGHT = 40.0; // サムネイル画像高さ
  private static final int SPLIT_BAR_WIDTH = 8;
  private static final int PREV = -1;
  private static final int NEXT = +1;


  /* 表示中の画像リストを保持。表示画像を変更するために利用 */
  static class ImageList {
    private String[] images;
    private int index;

    public ImageList(String[] list) {
      index = -1;
      images = list;
    }
    
    public void changeImage(int direction) {
      if (index == -1) {
	return;
      }
      
      index += direction;
      if (index >= images.length) {
	index = 0;
      } else if (index < 0) {
	index = images.length - 1;
      }
      setImageComponent(images[index]);
    }

    public void setCurrentImage(String name) {
      index = Arrays.binarySearch(images, name);
    }
  }


  /* サムネイルと画像のセパレータを再設定 */
  private static void adjustSplitPane() {
    int prePosition = splitPane.getLastDividerLocation();
    splitPane.setDividerLocation(prePosition);
    splitPane.setLastDividerLocation(prePosition);
  }


  /* 拡張子が画像ファイルのものかどうかのフィルター */
  static class IsImageFile implements FilenameFilter {
    public boolean accept(File dir, String name) {
      String suffix[] = { "jpg", "gif", "xbm", "png" };
      for (int i = suffix.length -1; i >= 0; --i) {
	if (name.toLowerCase().endsWith(suffix[i])) {
	  return true;
	}
      }
      return false;
    }
  }


  /* サムネイルボタンの追加 */
  private static void addImageButton(Container content, String name,
				     Icon icon) {
    JButton b = new JButton(name, icon);
    b.addActionListener(buttonListener);
    b.setActionCommand(name);
    content.add(b);
  }

  
  /* サムネイル画像の表示 */
  private static void setThumComponent() {

    /* ディレクトリかどうかのフィルター */
    class IsDirectory implements FilenameFilter {
      public boolean accept(File dir, String name) {
	File file = new File(dir.getAbsolutePath(), name);
	return file.isDirectory();
      }
    }
    
    File dir = new File(path);

    Container content = new Container();
    content.setLayout(new GridLayout(0, 1));
    
    /* ディレクトリ名、画像ファイル名を取得して配置 */
    Box box = Box.createVerticalBox();
    addImageButton(box, "..", folder);

    String dirs[] = dir.list(new IsDirectory());
    Arrays.sort(dirs);
    for (int i = 0; i < dirs.length; ++i) {
      addImageButton(box, dirs[i], folder);
    }

    /* 画像のサムネイルを作成して配置 */
    String[] imgs = dir.list(new IsImageFile());
    imageList = new ImageList(imgs);
    Arrays.sort(imgs);
    for (int i = 0; i < imgs.length; ++i) {
      ImageIcon icon = new ImageIcon(new File(path + imgs[i]).getPath());
      int width = (int)(icon.getIconWidth()
			* (THUMB_IMAGE_HEIGHT / icon.getIconHeight()));
      Image image = icon.getImage().getScaledInstance(width,
						      (int)THUMB_IMAGE_HEIGHT,
						      Image.SCALE_SMOOTH);
      addImageButton(box, imgs[i], new ImageIcon(image));
    }
    
    JScrollPane scrollPane = new JScrollPane(box);
    splitPane.setLeftComponent(scrollPane);
    adjustSplitPane();
  }


  /* 画像の表示 */
  private static void setImageComponent(String fname) {
    File file = new File(path + fname);
    Container content;

    if (!file.isFile()) {
      content = new JLabel(fname, JLabel.CENTER);
    } else {
      frame.setTitle(APPLICATION_TITLE + ":  " + fname);

      if (isResizeImage) {
	// 表示画像をウィンドウ幅に合わせる場合
	ImageIcon icon = new ImageIcon(file.getPath());
	Dimension size = splitPane.getRightComponent().getSize();

	// なんで 3 なのかは不明
	int winWidth = size.width - 3;
	int winHeight = size.height - 3;

	double imageAspect = 1.0 * icon.getIconWidth() / icon.getIconHeight();
	double windowAspect = 1.0 * winWidth / winHeight;

	int width = winWidth;
	int height = winHeight;
	if (imageAspect > windowAspect) {
	  // 画像の横幅を最大化する
	  height = (int)(winWidth * icon.getIconHeight() /icon.getIconWidth());
	} else {
	  // 画像の縦幅を最大化する
	  width = (int)(winHeight * icon.getIconWidth() /icon.getIconHeight());
	}
	
	Image image = icon.getImage().getScaledInstance(width, height,
							Image.SCALE_DEFAULT);
	content = new JLabel(new ImageIcon(image));
      } else {
	// 画像をそのままの大きさで表示
	content = new JLabel(new ImageIcon(file.getPath()));
      }
    }

    content.addMouseWheelListener(wheelListener);
    content.addMouseListener(clickListener);

    JScrollPane scrollPane = new JScrollPane(content);
    splitPane.setRightComponent(scrollPane);
    adjustSplitPane();
  }


  // メニューを作成
  private static void setMenuBar(JFrame f) {

    ActionListener menuListener = new ActionListener() {
      public void actionPerformed(ActionEvent e) {

	String command = e.getActionCommand();
	if (command.equals("Exit")) {
	  System.exit(0);

	} else if (command.equals("Open")) {
	  // ダイアログを開く
	  FileDialog fileDialog = new FileDialog(frame);
	  fileDialog.setDirectory(path);
	  fileDialog.setFilenameFilter(new IsImageFile());
	  fileDialog.show();

	  path = fileDialog.getDirectory();
	  setThumComponent();
	  setImageComponent(fileDialog.getFile());
	  imageList.setCurrentImage(fileDialog.getFile());
	}
      }
    };

    ItemListener itemListener = new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
	// resize to window
	if (e.getStateChange() == ItemEvent.SELECTED) {
	  isResizeImage = true;
	} else {
	  isResizeImage = false;
	}
      }
    };

    JMenu fileMenu = new JMenu("File");
    JMenuBar mb = new JMenuBar();
    
    JMenuItem item = new JMenuItem("Open");
    item.addActionListener(menuListener);
    fileMenu.add(item);

    item = new JMenuItem("Exit");
    item.addActionListener(menuListener);
    fileMenu.add(item);
    mb.add(fileMenu);

    JMenu viewMenu = new JMenu("View");
    item = new JCheckBoxMenuItem("Resize Image");
    item.addItemListener(itemListener);
    viewMenu.add(item);
    mb.add(viewMenu);

    f.setJMenuBar(mb);
  }

  
  /* レイアウトを設定 */
  private static void setComponents(JFrame f) {
    Container content = f.getContentPane();

    // メニュー
    setMenuBar(f);

    // サムネイル表示、画像表示
    splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
    splitPane.setDividerSize(8);
    
    splitPane.setDividerLocation(130);
    splitPane.setLastDividerLocation(splitPane.getDividerLocation());
    content.add(splitPane, BorderLayout.CENTER);
  }


  /* ディレクトリのパスを評価 */
  private static void setDirectoryPath(String testdir) {

    File dir = new File(testdir);
    if (!dir.isDirectory()) {
      // ディレクトリでなければ、エラーメッセージ
      System.out.println(testdir + " is not directory.");
      System.exit(1);
    }
    // ディレクトリの場合、最後に '/' をつける
    path = dir.getPath() + "/";
  }


  /* リスナーの作成 */
  private static void createListener() {

    // サムネイル画像のボタンが押されたときの処理
    buttonListener = new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	String name = e.getActionCommand();
	File file = new File(path + "/" + name);
	if (file.isFile()) {
	  imageList.setCurrentImage(name);
	  setImageComponent(file.getName());
	} else {
	  path += name + "/";
	  setImageComponent("");
	  setThumComponent();
	}
      }
    };


    // ホイール操作で次の画像を閲覧するための処理
    wheelListener = new MouseWheelListener() {
      public void mouseWheelMoved(MouseWheelEvent e) {
	int count = e.getWheelRotation();
	int direction = (Math.abs(count) > 0) ? NEXT : PREV;
	// 表示画像を変更
	imageList.changeImage(direction);
      }
    };

    // クリック操作で次の画像を閲覧するための処理
    clickListener = new MouseListener() {
      public void mousePressed(MouseEvent e) {
	int button = e.getButton();
	if (button == MouseEvent.BUTTON1) {
	  imageList.changeImage(NEXT);
	} else if (button == MouseEvent.BUTTON3) {
	  imageList.changeImage(PREV);
	}
      }
      public void mouseReleased(MouseEvent e) {}
      public void mouseExited(MouseEvent e) {}
      public void mouseEntered(MouseEvent e) {}
      public void mouseClicked(MouseEvent e) {}
    };
  }


  public static void main(String args[]) {

    frame = new JFrame(APPLICATION_TITLE);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 600);

    if (args.length > 0) {
      setDirectoryPath(args[0]);
    }
    createListener();
    folder = new ImageIcon("folder.png");
    setComponents(frame);
    frame.show();

    setThumComponent();
    setImageComponent("");
  }
}


実行画面は、こんな感じ。


ちょっと自信付いた。
私、頑張ればできる子なのかもしれない。
頑張れ、私...。


2005年 1月 16日 ()  
昨日作った Javaプログラムを見直していた。
コンポーネントを再配置しているあたりが、なんか変だと思った。
まぁ、いっか。

ガベージコレクタ万歳!

ぶっちゃけ面倒だし、まぁ、よかろ。


2005年 1月 17日 (月)  
お腹が空いた、けど頑張った。


2005年 1月 18日 (火)  
mixi の紹介文で忍者あつかいされていて悲しかった。

あと、Java講義の TA が暇すぎて辛かった。


2005年 1月 19日 (水)  
今日は、韓国(中国だっけか?)から教授の方々が研究室見学に来る日。
私は研究室内デモのアレンジ係。
デモのお願いは既にしてあり、別に参加しなくてよいのだが、一応、登校して待機。

見学に来る人は、早く到着することもあるし、遅く到着することもある。
気の弱い私としては、デモしてくれる人を待たせている手前、どちらにしても
ドキドキである。
あと、自分で「気が弱い」とか書いたが、なんか嘘臭いと思った。
まぁ、いいや。

今回、見学に来た人達は到着が予定通りで、いい感じだった。



午後、IEEE1394評価ボードが自宅にあるので、帰宅してドライバ作成。
Linux で IEEE1394を操作するライブラリ、libraw1394 の仕組みが分からずに詰まる。

結局ライブラリのソースを見ることに...。
ソースが公開されていて実装が分かる、ということは、

「ライブラリが意味不明で使えません!」

て言い訳ができないので、つらい。
いや、でもそこが良い。

まぁ、ゆっくりでもよいので、少しずつ進める予定。
やればよい。


2005年 1月 20日 (木)  
朝に起床した瞬間、

「あ、そういえば倒立制御の前後移動の実装が変じゃねぇ?」

って感じがしたので、起きて修正した。
私も、夢の中で小人さんがプログラムを手伝ってくれるような人になったらしい。

やべぇ。


2005年 1月 21日 (金)  
韓国からのお客さんが来るというので、デモのアレンジを行う。
まぁ、他の人に

「デモをやってくれませんか?」

ってお願いして回るお仕事。
自分がデモ発表しないのに、他人にデモを頼まなければならないあたり

非常に心が痛みます!


私の研究がデモに向かない、ってのもあるが、デモできる程に進んでいないのも事実。
なので、デモを引き受けてくれた人にはいつも感謝です。

私は顔も態度も怖い方なので、お願いしているつもりが威圧していないか心配です。
今思えば、威圧しちゃったこともあった気がするし...。むぅ。

まぁ、よかろ。
そんな感じです。


2005年 1月 22日 ()  
私、日記はその日の出来事を箇条書きにしておいて、後で清書してる。
たいていの場合、箇条書きの内容を見れば、たとえ数週間経った後でも
そのときに何があったか、どんな気持ちだったかを思い出せるので問題ない。

が、

今日の日付のところにあった箇条書きの内容はこれ。
2005-01-22
========================================
ドライバ作成
ディアブロ
これだけかよ!?
補足するような内容が思い出せないっす。
う〜〜ん、IEEE1394ドライバの作成を行ったり、「Diablo II」で遊んだりってことか?

まぁ、こんな日もあるかな? と思った。


2005年 1月 23日 ()  
朝からず〜〜っと IEEE1394のドライバ作成。
正直だるい。

先日、海外からのお客さんが来訪するときのデモアレンジをしたとき、
研究室内の人が貰ったものを、アレンジのお礼ということでさらに私が貰ったもの。
賄賂ではない。

開けてみたら時計だった。しかも目覚まし機能付き。
今、自宅には目覚まし時計が存在しなかったので、いい感じ。


2005年 1月 24日 (月)  
今日はミーティングの日。学内バスに乗って研究室へ。が、
ミーティング中も頭の中では IEEE1394ドライバの実装が渦巻いている状態。
心、ここにあらず。

む〜〜ん

って感じ。
ミーティングと掃除の終了後、即座に帰宅して実装の続き。

ちなみに、帰りも学内バス。
来年度から廃止されると思うと、感無量だ...。



IEEE1394の IEEE1313空間にユーザが登録するコールバック関数のあたり。
リンクリストを実装したが、ちゃんと動作しない。

なんで?

まぁ、バグなんだがな。しばらくしてリンクの解放まわりが違うのに気付く。
「組み込み系でも STL とか使いたい!」とか思った。

が、そう思いつつも「組み込み系では malloc、嫌」とも思った。
いろいろと難しいです。開発環境も、私も。



久しぶりに木刀を持ち出して素振り。
以前に比べ、足の踏ん張りが効かなくなっていて悲しかった。


2005年 1月 25日 (火)  
IEEE1394ドライバを作成中。
プログラムが動作しないとき、キーボードは親の敵(かたき)になります。

うおぉぉぉ!!

打つべし! 打つべし! 打つべし! (カタタタ...)

まぁ、力強く打ち込んでもプログラムは動作しないので、程々にしておいてやる。

「安心せい、峰打ちじゃ」

って感じ。



昼。Java講義の TA があるので出席。が、計算機にログインできなかった。
どうりで教室に人がほとんどいないと思った。

このままでは講義が中止になりそう♪
IEEE1394ドライバの実装をしたい私の願が、神に届いたのかと思った。

ナイス、神!



が、先生が到着し、管理室に電話して「ごにょごにょ」とか言っていたら、
ログインできるようになった。

ち、余計なことを...。



んで、講義はいつも通りに始まった。
と思ったが、文字を入力しても反応がとても遅い状態だった。

よし!



いや、ネットワーク障害なんだけどね...。
暇なので、先生のPCのモニタを写しているプロジェクタの前で影絵。

「ワンワン!」

って感じ。
...よく考えてみたら、学生の前なので恥ずかしいこと限りなし。
無駄に恥をかいた。

いい感じに疲れてる模様。

あと、先生が再度「ごにょごにょ」と電話したら、その症状も
直ってしまった。

あぁ、もう! 余計なことを...。


まぁ、よかろ。
その後はあきらめて TA っぽく巡回したりしてた。
動作しない状況を改善すべき TA が授業の中止を願っているあたり、なんか妙な感じ。

「敵の組織に潜入しているスパイって、こんな気持ちかなぁ?」

と思った。



帰宅してプログラミングの続き。
今日は、いろいろと疲れたけど、頑張った。


2005年 1月 26日 (水)  
夜、指導教官が市庁舎でもって、講演をするというのでロボットを持って
デモ要員として参加。

ただ、そのロボットの走行制御コントローラ(SH7045F)の ROM には
テスト用プログラムが書き込んであったので、デモ用プログラムへの変更を
車内で行う。
うぷ、ちょっと気持ち悪かった。

んで、無事に到着。
講演が始まる前に、廊下で動作確認を行う。こんな風に走るはずだった。



曲がり角では一旦停止し、直角に向きを変えて再出発って感じ。
が、実際の走行経路はこれ。



ん? なんで?

呆然としてその様子を見ていたところ、後ろから見ていた人の

「ほぅ、走る走る」

という悪意のないコメントをしたのが痛かった。
勘弁してほしいです。

つか、やばい。



頭を抱えながら席に戻り、教官に対して

「では、講演の終わりぐらいには適当に経路追従できるようにしておきます」

と言っておいた。ただし、心の中では

(最悪、さっきので勘弁ね♪)

とつぶやいておく。いわゆる「本音と建前」というやつだ。
んで、教官が講演している間に、ひたすらプログラムをデバッグ!
ソースを眺めたり、シミュレータを動作させたりしてた。

そして、デバッグ開始から5分、さわやかにあきらめる。
無理なものは、無理!

仕方がないので、二世代前の走行制御システムを ROM に焼き込み、正常走行を確認。
昔のソースを取り出せるようにしておくのは、割に大事だと思った。
あと、教官の話が長くて助かった。

準備終了後は、IEEE1394の通信ライブラリを作りながら、講演を聴く。
いまさらだが巧みな話術だった。



今日は、いろいろと疲れた。


2005年 1月 27日 (木)  
プログラミングしてたら、いつの間にか朝になっていた。
またもや昼夜が逆転した模様。朝日を浴びながら就寝。



「きょうの料理」では、「きんめの煮付け」「マグロのづけ」を紹介していた。
司会者はおじさんで、講師は快活な感じのおやじだった。

今日の雰囲気としては、

おやじギャグ x おやじギャグ → 超、おやじギャグ

って感じ。司会と講師が

「1本でもゴボウ」

「ショウガがないから、しょうがないとは言わないで...」


と互いに言ったりしてた。
中でも、マグロのづけを作っているときに司会者が

「赤くてもマグロ(黒)」

とかました所、講師が

「いや、本マグロは黒いから、あながち間違っていないですよ〜〜」

とフォローしていたのが印象的だった...。

テレビの前で「いや、それは違うだろ」とツッコミを入れつつ、
「でも、イイ」と思った。

ある意味、あういうおやじは私の理想かもしれない。
がんばろうと思った。


2005年 1月 28日 (金)  
昼前に起床、食堂で食事。
プログラミングを少しするも、疲れがたまってきたらしく、やる気がしない。
だるだる〜〜。


2005年 1月 29日 ()  
WORD 部屋で、だらだらと過ごした。


2005年 1月 30日 ()  
IEEE1394の通信周りを実装をほぼ終えた。
夜、「Diablo II」で殴りソーサレスを始めてみた。マゾい。


2005年 1月 31日 (月)  
この日記のコメントとして、赤面もののメッセージが届いていた。
真っ正面から心配してもらうと、なんか、妙な感じ。
恥ずかしいです。


本人へのコメント送信



Main Page