Wednesday, December 31, 2008

2008 年のできごと

2008-01-01 -2008-03-31

2007-10 から参加していたプロジェクトで、別の仕事をいただいて自社で開発しはじめた。
年末年始を返上して仕事をした。(まったく手当てなし!交通費すら
何度も仕様が変更された。
自社の人間をメインに開発の作業を進めていったが、納期に間に合わせられなかった。
現場は、かなり悪い居心地となった。
かつ、この案件で思うように開発できないことが確定しつつあった。
仕事のストレスからか胃腸の調子が更に悪化し、検査するはめになった。
契約を延長せず終了した。
結局、海外で仕事できずに終了した。



2008-04-01 -2008-6-19

とりあえず、1 か月だけ自社で仕事をすることにした。
といっても、受託で開発をしているわけでもないので、まったく仕事がない。
角度が高い会社にすら連絡してくれないようだった。
1 か月の予定が 6 月中旬まで延びた。



2008-06-20 -2008-08-31

それでも、なんとか開発の現場に参加できた。
ただし、明らかに要求されているスペックに届いていなかった。
かなりお客さんに迷惑をかけてしまった。
毎日、ガスター 10 を飲んでいた。
「締切り」という言葉を聞くと、敏感に反応するようになってしまった。



2008-09-01 -2008-11-30

面接の状況からダメだと思っていたが、なぜかゲーム会社の案件に潜り込めた。
技術社が大切にされている会社だった。
お客さんの担当者に不満を感じなかったが、チームのメンバにストレスを感じていた。
自分が経験不足であることを改めて実感した。
お客さんの業績が不振でもあり、他のメンバと共に延長されず、終了してしまった。



2008-12-01 -2008-12-31

再び、自社に戻った。
新たに案件を開拓する気持ちを感じられなかった。
昔のことでグダグダ文句を言われた。
どう考えても、「不要」と主張されているようにしか受け取れなかった。
今後も開発の案件に参加できなさそうだった。
社外での活動や人脈についての大切さを理解してもらえなかった。
自分が成長するための環境として適切でない、と判断した。
月末に会社を退職し、夏の案件で知り合った技術者の会社へ転職した。

Installing And Enabling JSTL

メモ

JAR ファイルを配置する



WEB-INF/lib
に以下のファイルを保存する。

jstl.jar
standard.jar

これらの jar ファイルは、Tomcat の example に付属されている。

// アプリケーションサーバの "WEB-INF/lib" ディレクトリにも同様にファイルを配置する。



JSP ファイルに記述する



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Defining error pages in the DD


<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/errorPage.jsp</location>
</error-page>

<error-code>
    <exception-type>java.lang.NumberFormatException</exception-type>
    <location>/formattingError.jsp</location>
</error-code>

<error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
</error-page>




Note:
1. You can override these definitions in each JSP by adding a page directive with an "errorPage" attribute.

Tuesday, December 30, 2008

Making your own error pages in JSP


<%@ page errorPage="errorPage.jsp" %>

Monday, December 29, 2008

Invoking your custom function in JSP

カスタムメソッドを定義し、JSP から実行できるようにする。


Creating new project



Eclipse において、"Dynamic Web Project" を作成する。本ポストにおいて、プロジェクト名を "HOGE" とする。



Creating a class



メソッドを static に指定し、クラスを作成する。


package jp.launchpad.app;

 
public class MyClass {
    public static String getToday() {
        return (new java.util.Date()).toString();
    }
}




Creating a tld file



TLD ファイルを作成する。ファイルを "WEB-INF" に保存する。とりあえずファイル名を、"myFunctions.tld" としておく。


<?xml version="1.0" encoding="UTF-8" ?>

<taglib
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">

<tlib-version>1.2</tlib-version>
<uri>myFunctions</uri>
<function>
    <name>getDayAndTime</name>
    <function-class>jp.launchpad.app.MyClass</function-class>
    <function-signature>
        String getToday()
    </function-signature>
</function>

</taglib>




Creating a JSP file



TLD ファイルで定義したメソッドをコールする JSP ファイルを作成する。


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="mine" uri="myFunctions" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>a.jsp</title>
</head>
<body>
${mine:getDayAndTime()}
</body>
</html>




確認



http://localhost:8080/HOGE/a.jsp

Sunday, December 28, 2008

今日のスパム

わざわざ docomo.ne.jp のアカウントを使用して送信してきた。ご苦労さまでした。

((ここから))

(株)ジャパンネットの中村と申します。

お客様の携帯端末より会員制有料サイトへご登録され、無料期間中に退会処理がされておらず、登録料金未納となっております。

現在、サイト運営会社が長期延滞者に対し『少額訴訟』の準備を進めております。このまま放置致しますと、『電子消費者契約法』に基づき民事訴訟となります。

当社は料金清算・退会処理代行、訴訟差し止め等『和解業務』を行う第三者機関となります。

お支払いお忘れの方、誤ってのご登録のお客様はトラブルとなる前に早急にご連絡下さい。

ご相談窓 0332558618
営業時間 9時30~20時
担当 中村

お力となれるのは最後となりますので、お早めのお電話お待ちしております。

((ここまで))

Saturday, December 27, 2008

Setting ACL with ZFS on OpenSolaris

TODO : must be updated!!!

Trying to do...


さて、Solaris いや正確に OpenSolaris において、ZFS が提供する新しい ACL を設定してみた。簡単にログを記述しておこうと思う。主に、将来の自分が簡単に思い出せるよう記述しているため、説明が不足している部分が多々、存在すると思う。

まず、そもそも Solaris の ACL つまり Access Control List を設定してみようと思った理由は...、単に会社の上司が

Solaris ZFS が提供する ACL を使用したいので簡単にまとめてほしい

みたいに、私へ依頼したから、である。

調査したところ、Linux においても kernel 2.6 系で同様の ACL をサポート --- 一部の distribution において kernel 2.4 系へバックポート --- されているらしい。Linux の distribution で ACL を制御する場合、"setfacl" や "getfacl" コマンドを実行して ACL を設定する。パッケージをインストールしなければならないだろう。Solaris においても同様に ACL を設定できた。ただし、最新の Solaris の場合、"chmod" コマンドで ACL を設定できる。追加でパッケージのインストールを必要としない。

そもそも、これまで私は、いわゆる UNIX を経験していなかったため、正直なところインストレーションも満足に操作できないだろうと思っていた。だが、ちょうどよい機会だと考え、Solaris にチャレンジしてみることにした。

Solaris は有料だと勘違いしていた私は、OpenSolaris の存在をしっていたため、OpenSolaris をインストールすることにした。OpenSolaris の Web サイトである

http://opensolaris.org/

を表示し、右上に表示されているはずの CD アイコンをクリックすると、ダウンロードページを表示できる。

画面の右側に "Quick Download Links" という枠が表示されており、"OpenSolaris 2008.11" というリンクをクリックすると OpenSolaris の ISO image ファイルをダウンロードできる。サイズは約 700 MB だ。ダウンロードしたら MD5 値を確認しておこう。

% md5sum osol-0811.iso
23176e28d47e61777f6d246e459b795d  osol-0811.iso
%

私は、この ISO image を使用して VMware Fusion に OpenSolaris をインストールした。もしマシンにインストールするなら CD-ROM に ISO image を焼いて、その CD-ROM を使用してマシンを機動させる。




Trying to set ACL on ZFS...



Solaris ZFS が提供する ACL を摘要してみる。なお ACL の詳細を以下のページで確認できる。

Setting ACLs on ZFS Files


今回の要件を列挙してみる。

- "${USER_HOME}" をユーザのホームディレクトリとする。
- ユーザのホームディレクトリを "/rpool/USER_HOME" に作成する。
- 各ユーザは、ホームディレクトリに rwx 権限を有する。
- 各ユーザは、他ユーザのホームディレクトリに --- 権限を有する。
- 各ユーザのホームディレクトリに、ユーザが所属するグループは --- 権限を有する。
- 一般ユーザ "admin" は、各ユーザのホームディレクトリに rwx 権限を有する。
- "${SOMEWHERE}/pub" ディレクトリに、すべてのユーザは rwx 権限を有する。


以下は作業の記録なり。

% su -

# zfs create rpool/USER_HOME
# zfs set aclinherit=passthrough rpool/USER_HOME
# zfs set aclmode=passthrough rpool/USER_HOME


// 各ユーザ用のホームディレクトリを作成する。

# mkdir /rpool/USER_HOME/user00
# mkdir /rpool/USER_HOME/user01
# mkdir /rpool/USER_HOME/user02


// ユーザを作成する。

# useradd -d /rpool/USER_HOME/user00 user00
# useradd -d /rpool/USER_HOME/user01 user01
# useradd -d /rpool/USER_HOME/user02 user02


// オーナーとグループを変更する。

# chown -R user00:staff /rpool/USER_HOME/user00
# chown -R user01:staff /rpool/USER_HOME/user01
# chown -R user02:staff /rpool/USER_HOME/user02


// パーミッションを変更する。

# chmod -R 700 /rpool/USER_HOME/user00
# chmod -R 700 /rpool/USER_HOME/user01
# chmod -R 700 /rpool/USER_HOME/user02


// ACL を設定する。

# /usr/bin/chmod A+user:apache:read_data/write_data/add_subdirectory/execute:file_inherit/dir_inherit:allow /rpool/USER_HOME/user00
# /usr/bin/chmod A+user:apache:read_data/write_data/add_subdirectory/execute:file_inherit/dir_inherit:allow /rpool/USER_HOME/user01
# /usr/bin/chmod A+user:apache:read_data/write_data/add_subdirectory/execute:file_inherit/dir_inherit:allow /rpool/USER_HOME/user02


// "pub" ディレクトリを設定する。

# mkdir /rpool/USER_HOME/pub
# chmod -R 700 /rpool/USER_HOME/pub
# chown -R admin:staff /rpool/USER_HOME/pub
# /usr/bin/chmod A+group:staff:read_data/write_data/add_subdirectory/execute:file_inherit/dir_inherit:allow /rpool/USER_HOME/pub

Sunday, December 21, 2008

DESK@

外出しているとき、たまに PC を使って作業したくなる。メールを返信したり、短い時間だが集中して作業したいときとか。そんなとき、これまでだったら喫茶店に入店し、コーヒーを飲みながら作業したりする。ただし、うっかりマクドナルドとかを選択してしまうと、綺麗なテーブルを探しにくい、他の客がうるさかったりするもので、落ち着いて作業できない。

1 日いっぱいじゃなくていいので、ほんの数時間、落ち着けるスペースを確保できるようにしておきたかった。そして、そのようなサービスが提供されているのか?を検索してみた。すると、様々な業者が、様々なサービス名で提供しているようだ。それらのサービスのうち、ひとつをピックアップしてみた。

DESK@

KOKUYO が提供しているサービスのようだ。都内で利用できる場所は、日本橋と新宿と品川だ。自宅が位置する足立区からの距離は、どれも微妙に遠かったりする。

会員に登録すると、個人スペースを 490 yen / 15 minutes でレンタルできる。この料金プランの場合、完全に個室で、かつ、施錠もできるらしい。一時的に外出 - コンビにとか - するときにも安心だろう。1 時間で 1,460 円だ。あまり安くないかもしれない...。なお、会員に登録する場合、年会費を支払わねばならない。費用は、3,780 yen / year らしい。先ほど言及した個室を「非」会員がレンタルすると、790 yen / 15 minutes であるため、15 分あたり 300 円の差が発生する。年に 12.6 回以上サービスを利用する場合、会員になるべきだ。1 回あたり 1 時間を利用すると仮定すると、年に 4 回以上サービスを利用する予定なら会員になるべき、となる。

Web で会員登録の一部を済ませておくと、特典を受けられるようだ。

とりあえず、次に利用したい時期を確定していないので、事前の申し込みもしていない状態だが、ぜひ、利用してみたいサービスだと感じている。

SUMO Paint

SUMO Paint なる、画像を編集するアプリケーションを発見した。アプリケーションといっても、インストーラーをダウンロードして...、といういつもの作業を必要とせず、Web ブラウザで画像を編集できてしまう。しかも Flash で作成されているため、プラットフォームを問わず、操作できるわけだ。主に Linux OR Mac を使用している私にとって、非常にありがたい。

Thursday, December 18, 2008

2008-12-18 の記録

面接だった。

Wednesday, December 17, 2008

2008-12-17 の記録

最近、Twitter で小言を書くようになってから、めっきり blog に書き込まなくなってしまった。。。しかし、この日の出来事を、忘れず記録に残しておこう。

本日、私は上司へ退社の意志を伝えた。12 月いっぱいで退社する。実に 27 か月の間、この会社の社員として仕事をしてきたが、今月で最後となる。急に意志を表明したが、私の行動を上司は十分に予想していたと思う。そのようにして構わない、と、以前から上司が言っていたからだ。

私は開発の業務を経験するために今の会社へ転職した。前の会社で開発の業務を経験できなかったからだ。ただし、約 2 年を振り返ると、"開発" OR "他" の業務が、おおよそ 50 : 50 となっており、なかなか開発の仕事にありつけなかった。受託開発も単発であるため、主に客先で仕事をしている私は、タイミングをあわせられなかったりもした。

この約 2 年を振り返り、そして、その 2 年から数年後のプランを想像すると、とても満足できそうになかった。そして、それなら他の会社で仕事をするべきだ、と判断するに至った。案件を紹介してくれようとしていた社外の営業さんにも申し訳なく思うが、自分のキャリアを積み上げるために、better な選択をドライに決断した。

上司は、私の意志を尊重してくれた。感謝している。正直、いくつかの大きな不満も存在するが、今の会社を嫌っているわけじゃない。いつか、また一緒に仕事をするかもしれない。

今後、2, 3 年の間、初心に戻り、少し条件が悪い場合でも食らいつきながら業務を経験したいと思う。私も、もう 30 歳になってしまった。道は狭くなる一方かもしれないが、耐えてみせる。

Sunday, December 14, 2008

2008-12-13 の記録

ある会社が開催した忘年会に参加した。

Friday, December 12, 2008

"for" loop in bash

今日、新人に bash を使用してスクリプトを書かせていたが、通常 for を使用する部分で、彼女は while を使用した。bash の for ループで、意外と知られていな?い書き方が存在する。


for ((i=0; i<10; i++)) ; do
    echo "hello $i"
done

Thursday, December 11, 2008

IPv6 Configuration On Ubuntu Linux

Ubuntu Linux の IPv6 を設定するテスト



最新の Ubuntu Linux は IPv6 をサポートしているが、念のため、確認する手順を復習しておく。


1. Kernel が IPv6 をサポートしているか?

% cat /proc/net/if_net6


2. IPv6 kernel module がロードされているか?

% lsmod | grpe -w 'ipv6'


3. loopback address が機能しているか?

% ping6 -c 1 ::1


4. Pinging Link Local IPv6 Hosts

% ping6 -c2 -I ath0 fe80::205:4eff:fe4f:f574


5. 2 台の端末に IPv6 address を割り当て通信してみるテスト

"ip" コマンドを実行し、2 台のホストのそれぞれの NIC に IPv6 の Unique Local Unicast addresses を指定する。その後、互いの PC から "ping6" コマンドを実行し、それぞれ reachable であるかを確認する。

# ip -6 addr add FC01::1/64 dev eth0
# ip -6 addr add FC01::2/64 dev eth0

Monday, December 08, 2008

Invoking "sudo" Command Without Inputting Password On Ubuntu

最近、Ubuntu Linux をインストールして使用している人が多くなってきている(と個人的に感じているが証拠はない)が、過去に Linux ディストリビューションのインストールを経験している人は、インストールを完了した後、疑問に感じるだろう。そう、root のパスワードの設定が要求されなかったから、だと思う。

Ubuntu Linux の流儀として、一般的に root で実行するべきと考えられる作業 --- たとえば各種デーモンをリスタートするときなど --- を実行するとき、"sudo" コマンドを実行する。

つまり、一般的なディストリビューションにおいて、このように実行するとき

% su -
# apt-get update

Ubuntu Linux の場合、

% sudo apt-get update

と実行する。


"sudo" を実行すると、"sudo" を実行した一般ユーザのパスワード --- root のパスワードでなく --- を入力するようプロンプトが表示される。正しいパスワードを入力すると、続くコマンドが実行されるわけだ。


"sudo" コマンドを実行してパスワードを入力すると、その後、しばらくパスワードを入力せずに "sudo" コマンドを実行できるが、有効時間が expire してしまうと、改めてパスワードを入力しなければならない。人によって、これを煩わしく感じるかもしれない。


私の場合、Ubuntu Linux をインストールした直後、ターミナルを機動し、以下のコマンドを実行する。

% sudo passwd root

つまり、root のパスワードを設定し、一般的なディストリビューションと同様に root の作業を root にスイッチして作業する。ただ、これは Ubuntu Linux の流儀に反しているかもしれない。


別の方法を記載する。ただし、これはセキュリティ的なリスクを負わなければならない。内容は、"sudo" の設定ファイルを編集し、特定の一般ユーザが "sudo" コマンドを実行したときパスワードの入力を要求するプロンプトを表示させず、かつ、"sudo" に続くコマンドを実行させるよう変更する方法だ。

この仕組みを実現するために、"/etc/sudoers" を編集する。ただし、直接このファイルを編集せず、"visudo" コマンドを実行する。

% sudo visudo

"visudo" を実行すると、"/etc/sudoers" を編集できる。ちなみに、デフォルトの場合、"nano" というテキストエディタが "/etc/sudoers" をオープンするはずだ。このエディタを使用したくない場合、以下のように "EDITOR" または "VISUAL" 環境変数を設定すると、どちらかの環境変数に設定されたエディタで "/etc/sudoers" をオープンできる。

% export EDITOR="/usr/bin/vi"

または

% export VISUAL="/usr/bin/vi"


デフォルトの "/etc/sudoers" の内容は以下のとおりだ。


# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL


この内容を、以下のように編集する。


# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

you ALL=NOPASSWD:ALL


"you" の部分に、ユーザ名を記述する。このユーザが "sudo" コマンドを実行すると、パスワードを要求するプロンプトが表示されなくなる。"Uncomment..." のあたりに説明されているとおり、このファイルの末尾に記述する。記述を終了したら、エディタを exit しよう。新たにターミナルを起動し、"sudo" コマンドを実行して、どのように動作するかを確認できるだろう。

Wednesday, December 03, 2008

2008-12-03 の記録

「自宅で仕事をしてよい」と上司から許可をもらっていたため、自宅で仕事というか作業をした。いつもどおり 7 時に起床したが、最近、ちょっと寝不足だったため、8:30 から 9:30 まで寝てしまった。12:00 から 13:00 に昼寝をしつつ、午後に面談がスケジュールされるかもしれない、という連絡をもらっていたため、待機しつつ作業した。iBATIS の操作でつまづいたが、なんとかクリアした。ただ、あのような問題は、プログラミングっつーかー、フレームワークを操作しているだけであり、まったくプログラミングでない。ほとんど頭を使わないからだ。こんな作業ばかりしていて、プログラミングのスキルを上げられるわけない、と本気で感じている。

Tuesday, December 02, 2008

2008-12-02 の記録

今日も自社で仕事をした。仕事といっても、自習みたいな内容だ。せっかく時間を確保できたので、先月までの業務で経験した Struts 2 + Spring + iBATIS の組み合わせで、なんちゃって Web アプリケーションを開発してみようと、作業を開始してみた。後輩の女性に Eclipse の debug モードについて説明した。Tomcat plugin をインストールしている環境に置いて、breakpoint を指定すると自動的に debug モードが有効になるようだった。

例の会社の人から電話をもらった。「まだ判断できていない」と伝えた。正直なところ、今の会社で受託開発をしないかぎり、ほぼ確実に客先での仕事を探さなければならないが、肝心な、その案件をもってこれないので、案件を終了したとき、次の案件を決定するまで、けっこう大変だったりする。そう、今回のように間をあけてしまったりするわけだ。よろしくない状況だったりする。派遣会社の方が、よっぽど案件をもっているし、給与も安定しているだろう、と本気で考えている。

Monday, December 01, 2008

2008-12-01 の記録

久々にスーツを着た。自社の社内は、正直、キレイじゃないので、特にクリーニング戻りの服を着ていくとき、かなり気をつかう。キレイな場所で仕事をしたい。

Sunday, November 30, 2008

2008-11-30 の記録

12:45 ごろに自宅を出発し、お台場へ向かった。ランチを食べるために。14:30 からのランチを予約していた。ふたりで 20,000 円ちょっと。帰り道で有楽町に立ち寄ってから自宅へ戻った。

Yahoo! オークションに、ThinkPad X32 が 42,000 円の即決価格で出品されていた。2 GB のメモリと US キーボードなスペックだったので、かなり迷っていたが、入札する前に落札されてしまった!予定していなかった出費をせずに済ませられたが、ちょっと悔しい。

Saturday, November 29, 2008

2008-11-29 の記録

10 時に目覚めて、大井町から自宅へ移動した。自宅に戻ってからシャワーを浴びた。13:30 ごろに池袋へ移動した。17:00 ごろに池袋を出発し自宅へ向かった。体調を考えて、飲み会に参加しなかった。タバコ部屋で打ち合わせをしたせいで、さらにノドを痛めてしまった。タバコ部屋に居座るだけで、どれほど非喫煙者が苦しむかを理解できないのかもしれない。たとえ誰もタバコを吸っていないとしても。

Friday, November 28, 2008

2008-11-28 の記録

最終日だった。

Thursday, November 27, 2008

2008-11-26 の記録

今日も引き続き Java のソースコードを修正した。プロパな人にレビューしてもらった。貴重な機会だった。18:30 で仕事を終え帰宅した。I さんからの電話を受けられず、折り返したが留守電だった。明日のことだろう。寝不足なはずだが、あまり眠気を感じていないような。来月からの現場は、いまだ未定だったりする。

Wednesday, November 26, 2008

2008-11-25 の記録

私は、「自分に足りない部分」について客観的に判断できるほど自分を理解しておらず、そのため、何をしていいのか、何をするべきなのかを決断できないでいる。正直なところ、「お手上げ」な状態であったりする。まさにこういうとき、相談できる人が近くに存在すれば相談したいが、そういう人は...。

5 歳くらい年下の人間に、あんな質問をされてしまう自分を腹立たしく思いつつ、なんというか、そういうことに慣れつつある自分に危機感を感じなくもない。

I have just became an Associate Member of the Free Software Foundation

私は、フリー(自由な)ソフトウェアの可能性を信じる一人の人間として、Free Software Foundation を支援することを決意し、Free Software Foundation の Associate Member となった。

Tuesday, November 25, 2008

2008-11-24 の記録

自宅から近い場所に位置する焼肉屋で夕飯を食べた。

来月からの仕事を確定していないが、深く考えないようにしよう。自社に戻ったって仕事ないわけだし、結局、客先で仕事をすることになるだろう。状況により、決断するかもしれない。

Pidgin で Google Apps のアカウントを利用する方法を、やっと特定できた。Google の help ページの内容に従っても、正常に利用できないっぽい。

小さなことを twitter に書き込むようにしているが、いまいち、twitter の使い方を理解していない。

Monday, November 24, 2008

Installing RealPlayer On Ubuntu Linux

To install RealPlayer for Linux, visit RealPlayer for Linux, then download the installer.

% su -
# chmod +x ./RealPlayer11GOLD.bin
# ./RealPlayer11GOLD.bin

That's all.

How To Configure Pidgin To Connect To Google Talk For Your Domain?

Pidgin can handle multiple instant messaging clients. If you use Ubuntu Linux, it may be already installed. To use your Google Apps account with Pidgin, following images may help you to configure your Pidgin.



Adium for Mac OS X

Adium is a free instant messaging client for Mac OS X that supports multiple protocols.

Adium

2008-11-23 の記録

iPhone 2.2 Software Update を適用してみた。

Saturday, November 22, 2008

2008-11-22 の記録

Vim 勉強会に参加してきた。正直なところ、普段、私より Vi を使いこなしている人は私の周囲にいないので、ちょっと有頂天になっていたらしい。ほとんどの参加者が交換する情報を、私は知らなかった。もっと Vi について知りたいという衝動にかられている。

ところで、現地に T42 を持っていった。現地で無線 LAN 環境が提供されたが、うまく接続できない人もいた。http | https のみだけが許可されていたため、自分は S11HT を経由してインターネットに接続していた。

ところで、久々に T42 を使用したが、この T42 を JIS キーボードのままで使用している。やっぱり JIS キーボードだとイマイチなので、US キーボードを購入しようと思った。Yahoo! Japan のオークションに出品されるかと待っていたが、なかなか ( 15 インチということもあり ) 出品されないので、もう注文してしまうことに。国内で注文するなら、IBM の部品センターに注文すればいいかもしれないが、あそこは電話しなきゃならないし、銀行振込しなきゃならないし、FAX もしなきゃならないので、かなり面倒だ。Google で検索していたら、Yahoo! Shopping にて、US キーボードを注文した人が存在するようだった。検索してみると、確かに販売しているショップが存在した。最安値のショップから吟味していると、International Shipping に対応しているショップを発見できたので、そこで注文した。P/N は、93P4780 だ。金額は、USD $ 79.99 だった。支払いは PayPal で。送料の支払いは着払いになるだろう。

所有するいくつかのドメインのうち、2 つを更新した。USD $ 7.95 / domain であるため、合計 $ 15.90 だった。

2008-11-21 の記録

明日、筋肉痛になるだろう。仕事を終えてから、大崎の体育館でバスケをしてきた。もともと見学のみする予定で、まったく準備していなかったが、他の参加者がプレイしている姿を見ていたら自分もプレイしたくなってしまい、ジーンズのまま試合に参加した。ほとんど走れず、イージーなミスもしてしまった。悔しすぎる。30 歳になったら運動を再開しようと思っていたが、この機会をトリガーにしようかと考えている。

参加を希望する人が定員をオーバーしていたので、てっきり参加できないと思っていた Vim 勉強会の件、キャンセルが発生したようで、どうやら参加できそうだ。

チームの定例会議の話。来週で業務を終了するので、みんなの前で「ひとこと」を発表した。その後、韓国で販売されている Web カメラをもらた。誰かが帰省したときに購入してきた、とか。この現場の人たちは、本当に暖かい人たちだった。

Friday, November 21, 2008

2008-11-20 の記録

結合テストの 2 日目だった。お客さんが作成したプログラムが正常な処理コードを戻してくれず、半分くらいしか消化できなかった。明日の午前中に、今日の続きを対応する予定だ。

Amazon Web Services のサイトにおいて、サインアップしてみた。もともと Amazon.com にてアカウントを取得してあったため、ほとんど入力せずにサインアップを完了できた。とりあえずアカウントを enable してみたが、どのサービスを利用できそうか調査してみようと思う。

Lisp の勉強を、ほとんど進められていない。英文を読んでいるため、極端に理解のスピードが遅い。

Thursday, November 20, 2008

TwitterFox

TwitterFox is a useful Firefox Extension.

Abstract Syntax Tree

Search for Abstract Syntax Tree

Using getline from a file in AWK

% awk 'BEGIN { while(getline < ARGV[1]) { print $0 ; print "*****" } }' /etc/passwd

Android Cell Phones In Japan Will Be Released By NTT docomo

Android ベースの携帯電話が、NTT docomo からリリースされるらしい。複数のソースを確認できる。スケジュールを前倒し、2009 年のリリースを予定しているそうだ。古い携帯電話の機種変更を検討していたが、待ちか?

2008-11-19 の記録

連携テストの日。目標のポイントまで進められたと自分は思っていたが、再び小さなミスをツンツンされてしまった。

予防接種で注射した部分が、はれてるんですけど?

韓国人の社員 ( この人は来年 5 月に韓国へ戻ってしまうらしい ) の人の連絡先をおしえてもらった。

目黒にて、P 社の人と飲み会だった。

Wednesday, November 19, 2008

Installing Twitux On Ubuntu Linux

Twitux is a Twitter client for the Gnome desktop. To install Twitux, open a Terminal, then enter a command below:

$ sudo apt-get install Twitux

2008-11-18 の記録

客先において、私(たち)は外部スタッフだが、社員と同様にインフルエンザの予防接種を無料で受けさせてもらえた。久々に注射したような。事前に体温計で体温を測定したら 37.0 度だった。若干、高め?

Tuesday, November 18, 2008

QCAM-E3500

QCAM-E3500 を購入した。Ubuntu Linux に接続し、Skype と一緒に利用できるか確認してみた。QCAM-E3500 を接続したとき、dmesg に出力された内容は、以下のとおりだ。


Nov 18 23:36:16 apple kernel: [ 7366.968082] usb 4-3: new high speed USB device using ehci_hcd and address 3
Nov 18 23:36:17 apple kernel: [ 7367.262459] usb 4-3: configuration #1 chosen from 1 choice
Nov 18 23:36:17 apple kernel: [ 7367.267118] uvcvideo: Found UVC 1.00 device <unnamed> (046d:09a4)
Nov 18 23:36:17 apple kernel: [ 7367.298792] input: UVC Camera (046d:09a4) as /devices/pci0000:00/0000:00:1d.7/usb4/4-3/4-3:1.0/input/input10
Nov 18 23:36:19 apple pulseaudio[5369]: alsa-util.c: Device hw:1 doesn't support 44100 Hz, changed to 16000 Hz.
Nov 18 23:36:19 apple pulseaudio[5369]: alsa-util.c: Device hw:1 doesn't support 2 channels, changed to 1.



以下の画像のように Skype を設定し、Skype Test Call を成功できた。

Learning Vim In Akihabara!

久々に IT 勉強会カレンダー を確認してみたら、次の土曜日、つまり 22 日に、秋葉原にて Vim の勉強会が開催されるようだ。定員をオーバーしているようで参加できなさそうだが、一応、エントリしておいた。Vim スキスキな人?なんて滅多に会えないので、もし参加できるなら非常に楽しみだ。

use FileHandle in Perl

"open or die..." しか知らなかった、私は。


#!/usr/bin/env perl

use warnings;
use strict;

use FileHandle;

my $fh = new FileHandle;
if ($fh->open("/etc/passwd")) {
    while (<$fh>) {
        print $_;
    }
    $fh->close;
}

2008-11-17 の記録

久々に Perl でスクリプトを記述してみたが、ほとんど忘れてしまっていて、思うように記述できなかった。Perl 5.10 のドキュメントをチラチラしつつ、Perl を復習したいと願った今日、みたいな。

Sunday, November 16, 2008

2008-11-16 の記録

自宅でまったりと。

少しずつ Lisp の勉強を進めている、みたいな?ただ、Emacs じゃなくて vi を使用して Lisp を勉強していることを、後ろめたく感じている。

Could Not Login To My Ekiga Account

まぁ、私の知り合いでそれを利用している人は皆無だが、久々に Ekiga のアカウントにログインしてみようと考えた、Ubuntu Linux 8.10 にて。だが、まったくログインできなかった。最初、設定する内容を忘れているだけだろうと考えていたが、ログインできず。しかたなく Windows 版の Ekiga をインストールし、ログインを試みたら、あっさりとログインできた。つまり、やはり正しく設定していないだけの可能性が高まった。改めて Ubuntu Linux にてログインを試みたら、これまた、あっさりとログインできた...。原因は、かなり不明だ。

Creating A TalkShoe Account

TalkShoe のアカウントを取得してみた。正確にサービスを理解していないが、どうやらカンファレンスコールを実現できるようだ、Web ベースで。つまり、Skype のようにクライアントを必要とせず、Web ブラウザさえ実行できれば、サービスを利用できるようだ。とりあえず、トップページに表示されていた Linux Cranks Podcast に参加してみた。自分を含め 19 名が参加している。音声は、比較的クリアだ。相手の声を、はっきりと認識できる。ちなみに、環境は、光の VDSL タイプだが、そのうち、emobile でも確認してみようと思う。

Saturday, November 15, 2008

2008-11-15 の記録

出かける予定だったが、面倒になってしまい、結局、自宅で掃除とかしつつ、まったり過ごした。

Friday, November 14, 2008

2008-11-13 の記録

d のリリース日だった。無事?にリリースできた(はず)。

久々に、Shell Scripting の勉強会に参加した。

Thursday, November 13, 2008

Extraction Using SED

$ echo "01234567890123456789" | sed 's!^\(.\{10\}\)..*!\1!'



いつも忘れるので...

Generating Random Strings Using Python

明日の勉強会にて、私は発表する(かもしれない)回答を bash でなく Python で作成してみた。だって、bash なら、コマンドラインだけで実行できちゃうから、スクリプトを作成する必要すらなかった。適当に書いてみたけど、とりあえず書き留めておく。

#!/usr/bin/env python

import random
import sys

if __name__ == "__main__":

    #importingFile = sys.argv[1]
    #digit = sys.argv[2]
    importingFile = "user.list"
    digit = 10
    tableName = "tableName"
    seed = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

    def generateRandomString(s, d):
        return ''.join(random.Random().sample(s, d))

    try:
        fp = open(importingFile, 'r')
        for userName in fp:
            newPassword = generateRandomString(seed, digit)
            print "UPDATE %s SET password='%s' WHERE user='%s'" % (tableName, newPassword, userName.split('\n')[0])

    except IOError:
        print "IOErro occured..."

    except:
        print "exception occured..."

    finally:
        try:
            fp.close()
        except AttributeError:
            print "hoge"

2008-11-12 の記録

眠い...。あるタイトルのリリース前日だった。トラブルを完全に解決できず、けっこう時間を必要とした。最終的に、社員さんとリーダが対応するとのことで、自分は 20:30 ごろに終業した。

Wednesday, November 12, 2008

Gmail voice and video chat is not yet available for Linux

Voice and video chat is not yet available for Linux.

2008-11-11 の記録

自分が生成したバグ --- それはそれは非常に easy な --- だった...。ちゃんとテストしないから、と痛感した日だった。

Tuesday, November 11, 2008

Heartbeat Of Skype

Skype にログインできないので障害情報を検索していたら、このページで情報が提供されているようで。

Heartbeat - check the life signs on Skype products

Monday, November 10, 2008

Connecting To The Internet Through S11HT

Here is useful information, you can connect to the internet through S11HT with your Ubuntu Box.

Ubuntu Weekly Recipe : 第 43 回 イー・モバイルによるネットワーク接続

Sunday, November 09, 2008

2008-11-08 の記録

6:30 に起床して、本を捨てた。約 50 冊。先週の分と合計すると、約 100 冊ほど捨てたわけだ。

9:15 ごろに池袋へ出発した。例の会社で開催される会に参加するため。

17:00 ごろから、ビルの 2 F に位置する飲み屋で宴会が開催された。20:00 ごろに終了した。私を含む数名のメンバが、近くの BAGUS へ移動して、2 時間のビリヤードを楽しんだ。

Friday, November 07, 2008

2008-11-06 の記録

バタバタした午後だった。コーディングで活躍していない自分が、コーディング以外の仕事(トラブルシュート)で活躍してしまった。まぁ、活躍したというか、なんというか...。つーか、昔の職場の担当者なら、誰でも対応できるようなネットワークがらみのトラブルだった。

Thursday, November 06, 2008

A US keyboard for ThinkPad T42

ThinkPad T42 (15 inch) に取り付けられる US キーボードを購入したい。中古のマシンに取り付けるため、キーボードも中古で気にしない。Yahoo! オークションに出品されている商品を検索してみたが、どうも出品されていないようだ。誰か譲ってくれないかなぁ...。

New Cell Phones Released By NTT docomo

私にとっては、微妙にハズレでしたね...。機種を変更したかったけどなぁ。

A SSH client on iPhone

SSH client on iPhone

Installing JD on Ubuntu

% sudo apt-get install jd



--
JD for Linux

Wednesday, November 05, 2008

2008-11-04 の記録

腹の調子が...。

Monday, November 03, 2008

2008-11-03 の記録

出かける予定だったが、どこへも出かけなかった。唯一、近くの藍屋でディナーしたくらいか。X31 のキーボードを US キーボードに変更したため、快適にタイプしている。Emacs の勉強を再開してみた。けっこう忘れている。現場で Emacs の出番が増えているため、この機会にできるだけ操作を覚えたいところ。BoA の USA デビュー?な曲の PV を発見、かっこいいですねぇ。そうだ、久々に CD を購入しよう。BoA じゃないけど...。

Lenovo Shopping Site is Back!!

Lenovo Japan のオンラインショップがリニューアルして稼働を開始したようだ。気にしていた ThinkPad X200 にて US キーボードを選択できるようだし、資金を調達できしだい購入しようと思う。

2008-11-02 の記録

メインマシンが、旧世代の ThinkPad X31 に戻りました、と。

お散歩してみた。千駄木で降車し、上野まで歩いてみた。主なお目当ては、猫であった。

Sunday, November 02, 2008

Ubuntu Linux 8.10 Installation Notes

Ubuntu Linux 8.10 をインストールしたので、作業をメモしておく。

といっても、いつもどおり ISO イメージをダウンロード --- ダウンロードした ISO イメージは、日本のローカルコミュニティチームがリリースした ISO イメージでなく、本家がリリースした ISO イメージだ。 --- し、Ubuntu Linux をインストールしただけだった。マシンは ThinkPad X31 --- 2672-11I --- だ。ちなみに、メモリを最大の 2 GB に増設してある。



インストールした後にインストールした主なパッケージは、以下のとおり。

ntp
ssh
some packages to input japanese



続いて、Firefox に add-on をインストールしたり、他に必要なパッケージをインストールして終了だった。ちなみに、追加でインストールしたパッケージは、以下のとおり。

build-essential
openjdk-6-jdk
Emacs
Skype
Opera

2008-11-01 の記録

ThinkPad X31 のキーボードを、US キーボードに変更した。続いて、Ubuntu Linux 8.10 をインストールした。ついでに、いくつかのアプリケーションをインストールしておいた。

廃棄する本をピックアップした。50 冊くらいか?主に O'Reilly の書籍か。Safari Books Online で読めるタイトルで、かつ翻訳版のタイトルは、積極的に廃棄の対象となった。本棚がスッキリしてきた。

Saturday, November 01, 2008

Added "Solaris Internals" To My Favarit At Safari Bools Online

Solaris Internals を Safari Books Online で発見したので、ブックマークしておく。

Downloading and Installing OpenSolaris 2008.05

現在の客先のミッションは Java を使用してのアプリケーション開発(の手伝い)だ。ところで、主に時間外に、有志の社員が任意で集まり様々な勉強をしている。インフラ系でない社員の仕事は、ほぼ Windows のみで仕事をするようだが、Java アプリケーションを実行しているホスト OS は Linux distribution がインストールされているらしく、その Linux distribution でバッチとか実行するときもあるそうで。こういう状況であるため、自然な流れかもしれない。社員が、shell scripting について勉強しよう、と考えた理由は。これまで、私は仕事的にも個人的にも shell でスクリプトを書いてきたが、「書ける」と伝えると、「Unix の業務経験ありますもんね」とか言われる。ただし、私の経験は、主に Linux distribution であり、ほとんど Unix を知らない。だから、「Unix を使用した業務を経験している」と自分が主張することに抵抗をもっていた。

だから、手軽に試せる OpenSolaris を自宅で使用したいと思った。まず、ISO イメージをスピードと利便性を考慮し BitTorrent でダウンロードした。だいたい 3 MB/s でダウンロードできたので、それほど時間を必要としなかった。この ISO イメージを CD-ROM に burn して、ThinkPad のどれかにインストールする予定だ。

Installed Google Earth On iPhone

Google Earth を iPhone にインストールしてみたんですけど。ちょう楽しい系?みたいな。

With Twitter?

今更ながら Twitter の話題なんだが。実のところ、私はアカウントを取得しただけて、使っていない。つか、使い方を知らない。会社の人で Twitter を使っている人も知らない。これって、どうやって効果的に使うんだろうか...。

Web ブラウザで操作を完結できるようだが、専用のクライアントが提供されてるんじゃ?と思い、検索してみた。Mac OS X 用に Twitterrific というアプリケーションが提供(販売)されている --- ちなみに価格は USD $14.95 らしく便利なら購入しようと思う。支払い方法は、Credit Card または PayPal らしい。 --- ようで、とりあえずダウンロードしてみた。zip ファイルを展開すると実行ファイルが存在する。そのファイルをダブルクリックして Twitterrific を実行し、自動的に表示されるログイン画面にアカウントとパスワードを入力して完了だ。自分がテストで入力したコメントが表示されていた。

iPhone 用の Twitterrific の存在するようで、無料バージョンをインストールしておいた。

仲良くさせてもらっている知人が Twitter のアカウントを所持しているか連絡してみた。あっちは 時差が UTC -5 であるため、明日ごろ連絡をもらえるだろう。他の知人にも連絡してみようかと思う。

2008-10-31 の記録

バタバタして疲れた...。

ひとりで帰りたい帰りの電車。勉強できないじゃん?

明日の予定は、Ubuntu Linux 8.10 を X31 にインストールして環境を整理する。

Thursday, October 30, 2008

Lenovo Shopping Site In Japan Will Be Back Soon

Lenovo Japan のショッピングサイトが、リニューアルするため、10/31/2008 2:00 AM から機能を停止するようだ。

2008-10-29 の記録

神田で開催された送別会に参加した。前の会社のときに業務していた客先のメンバ(も外部スタッフ)が、北海道の企業へ転職するんだそうだ。また一緒に仕事をしたかったな、なんて。

Philadelphia へ引っ越ししてしまった知人へ、送別会の件を伝えた。彼女も参加できたらよかったのに。って無理だけど。住所をおしえてもらって、Google Map で閲覧してみた。まだ工事中 --- 新築っぽい --- だったが、どこに住んでいるのかわかったし、Google Map の street view の楽しい使い方を発見できた。

Wednesday, October 29, 2008

2008-10-28 の記録

10:30 から、取引先と一緒にテストを実施した。本日のメインは、異常系のテストだった。正しいエラーコードが戻されてくるか、また、戻されたエラーコードに適切な動作が実行されるか、などを担当した。終了した時刻は 15:00 ごろだったか?な。やはり、経験のなさを痛感した。19:00 ごろに終業した。気分の悪さを感じていた。寒気も感じていたようで。風邪だろうか。

Tuesday, October 28, 2008

いかん

人の悪口を言う人間は、心の貧しい人間かもしれない。そんな人間にならないように...。

2008-10-27 の記録

午後に別の場所でイベントが開催されることを認識していず、午前中しか仕事をできなかった。昼食にラーメンを食べた。いろいろな要因で、気分を悪くした。なかなかイベントが終了せず、急いで帰宅しようと思ったら雨で...。幸い、小雨で助かった。

Monday, October 27, 2008

$RANDOM variable in bash

% echo $SHELL
/bin/bash
% /bin/bash -version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
%
% echo $RANDOM
16574
% echo $RANDOM
23744
% echo $RANDOM
6099
% echo $RANDOM
17166
% echo $RANDOM
6956
% echo $RANDOM
20127
% echo $RANDOM
16568
% echo $RANDOM
24417

Ubunut Linux 8.10 RC Released

Ubuntu Linux 8.10 RC がリリースされています。もうすぐっすね。8.10 がリリースされたら、X31 ( 注文した US キーボードを装着して ) にインストールしよう。

co-worker からの、粘着度の高い「かまってくれよ攻撃」に悩まされている。直球で「うぜー」と言えれば終わりかもしれないが、それをやっちゃうと周囲に注目されてしまう。つか客先だし...。空気を乱せないでしょ、外部スタッフが。ここで思う、

    自分が思っている以上に、自分は相手に嫌がられている可能性がある。

という点に注意しておきたい。たとえ相手が笑っていたとしても...。

給料

振り込まれてねーし。何も連絡ねーし。

2008-10-26 の記録

Amazon Prime を契約している(まだ無料期間だが)せいか、あまり価格を気にせず、ちょこちょこ注文しているせいで、今日、Amazon からの荷物が 3 つも配送された。ちなみに明日、荷物が 2 つ配送される予定だ。ティッシュやトイレットペーパーなどのような消耗品も販売されているようで、ちと価格は高いが、自宅まで持ってきてくれるなら満足だな。

Sunday, October 26, 2008

Scrolling One Line At A Time In Emacs

vi 畑で育った私は、Emacs を実行してテキストを編集しているとき、非常に

    気持ち悪い

と感じている動作を認識していた。それは、画面をスクロールするとき、数行分まとめてスクロールしてしまう、という動作だ。C-n などで画面したまでカーソルを移動し、次に C-n 実行すると理解できるだろう。この動作により何度もカーソルの位置を見失い、苦痛を感じていた。そこで、やはり Google 様に質問してみたところ、あっさり対策を発見してしまった。

M-x set-variable [RET] scroll-step [RET] 1 [RET]

で OK だ。

過去に購入して読まない本を捨てようと思った。主に技術的な本だ。本棚から取り出し、内容を確認し、廃棄を決定する。という流れを淡々を実行した。とりあえず、次回の資源ゴミの日(つまり土曜日だ)に廃棄する本、約 50 冊を決定した。この数だと、当日かなり大変だろう、ゴミ捨て場まで持って行く作業は。だが、まだ本棚にたくさんの(読まないであろう)本が陳列されている。まぁ、次の引っ越しまでに処分できたら合格だから焦らずに作業しよう。オライリーの本など、コレクション的な意味合いをもっていたように思えたが、やはり内容が古くなると読まなくなる。加えて、Safari Books Online で最新の内容にアクセスできるとなると、本に物理的なスペースを与える意味は、確かになくなってしまった。

最近、稀に感じている。現在、私は客先で Java な仕事をしていて、前の案件においても客先で Java による開発に携わってきたが...、なんというか、ほんの少ししかスキルアップできてない、のだ。本当に深刻 - 自分はそう思っているが上司は理解してくれない - で、どう対処していいのかわからず困っている。ひたすらコーディングしまくればいいのか?バイブルを読めばいいのか?おそらく、いくつかの策を平行して実行すべきだが、それを確信をもって実行できずにいる。幸い、興味というか好奇心は消え去っていず、現在、Head First Design Patterns と(ただし原書を読んでいるためペースが悪い)、 Java 言語で学ぶリファクタリング入門 を読んでいるが、いまいち理解していないというか、なんというかで。たとえば、これから 1 年が経過したとして、私はどれほどスキルアップできるだろうか。まったく自信をもてない。まぁ、でも、私は Java 屋さんになるつもりなんて毛頭なく、OSS と関わりをもちつつ仕事を続けられたらいいな、なんて安易に考えている面もあり、この楽観的な部分が致命的か?なんて思ったりもしている。

Saturday, October 25, 2008

ThinkPad Hardware Maintenance Manual


Hardware Maintenance Manual index - ThinkPad

Safari Bookbag On iPhone

Safari Books OnlineiPhone アプリがリリーズされていた。iPhone から Safari Books Online のドキュメントにアクセスできるかと思っていたが、どうやら PDF のみ閲覧できるようだ。実際、まだ試していない。なぜなら、Token を必要とするからだ、PDF をダウンロードするために。さっき確認したら、私のアカウントは 25 Token を所有しているようだ。ためしに Head First Design Patterns を PDF でダウンロードしようとしてみたら 18 Token を要求された。ちなみに第 1 章だけなら 1 Token のみでダウンロードできる。この Token が不足しているなら追加で購入できる。価格を確認してみた。


5 Tokens:
USD $10.00

10 Tokens:
USD $20.00

15 Tokens:
USD $30.00

20 Tokens:
USD $40.00


現時点において、PDF をダウンロードせず、Safari Bookbag の iPhone アプリをインスールしたところで終了している。いずれにしても、PC を起動できない状態でも、Safari が提供する情報にアクセスできるようになった点で歓迎している。

Installed "Microsoft Messenger for Mac"

客先にて、Microsoft の IM を使用して外部とやり取りしていたりする。念のため自分もアカウントを取得しておこうと考えた。自宅に Windows の環境を用意できないため、Mac 環境で利用できなければならない。まず、新たに Hotmail のアカウントを取得した。続いて、

Office for Mac - Easy Access to Downloads and Updates | Mactopia

から、"Microsoft Messenger for Mac" の dmg ファイルをダウンロード - いくつかの言語のパッケージが提供されていて、英語バージョンを選択した。選択できるだけ助かった。日本語バージョンの利用を強制されたら嫌だし。 - し、Mac OS X にインストールした。簡単なインストレーションを終了した後、正常な起動を確認できた。

2008-10-24 の記録

客先にての飲み会だった。仕事を終了して、18:30 に出発した。小雨だったが、ビルの野外で開催されていた "ThinkPark Plaza の 1st アニバーサリー" をチラ見しつつ五反田へ徒歩で移動した。19:30 ごろ?から開始して、22:00 ごろまで飲み食いした。眞露を中心に飲んでいた(飲まされた)が、これって、飲みやすい割にアルコール度が高く、うっかり飲み過ぎないように気をつけていた。だが、どうも飲み過ぎてしまったようで、帰りの電車で爆睡してしまったようだ。帰宅してシャワーを浴びて寝た。あれほど飲んだせいか、あっさり眠ってしまったようで。D さんに、「もっと自分を出していきましょうよ」的な意見をいただいたが、なんつーか、出せるほど自分をもってません、みたいな。

Friday, October 24, 2008

あきらめた

寝れない...。私は、薬を飲まないと寝れないのか、と。

Thursday, October 23, 2008

Ordering A Keyboard For ThinkPad X31

IBM 部品センタに電話して、X31 に適切な US キーボードの見積もりをもらった。10,400 円/個なり。x 2 注文する予定であるため、20,800 円に送料 1,000 円で、合計、21,800 円だ。明日、振り込んで FAX を送信する。早ければ、この週末に配送されるだろう。

Wednesday, October 22, 2008

2008-10-22 の記録

ここ数日、まともに睡眠できていない。昨夜、睡眠導入剤を服用してみたが、まったく効果を感じられなかった。寝不足のせいだろう、頭痛もヒドい。今夜も寝られないとマズいので、睡眠薬を服用する予定だ。一応、この薬は実績ありだから、少し安心している...。

Tuesday, October 21, 2008

使えないサービス

あー、こういうサービスを提供されるとガックリくるよね。って、どのサービスかというと


imode.net


だ。まぁ、月額 210 円を支払って、面倒な携帯電話によるメール作成でなく、パソコンでメールを作成できるんだが、これが、このサービスの推奨環境が、いまどき

推奨環境

(抜粋ここから)
Microsoft® Windows® XP 日本語版(ServicePack 2)
Microsoft® Windows Vista® 日本語版
Microsoft® Internet Explorer® 6.0(ServicePack 2)
Microsoft® Internet Explorer® 7.0
(抜粋ここまで)


なんだわ。さっき、MacBook にて

Firefox
Opera
Safari

で確認してみたが、どれも利用できなかった。大手のキャリアがこの程度のサービスしか開発できないなんて悲しすぎる。Windows かつ Internet Explorer のみ想定してる、って狂ってるでしょ?ドコモさん。まともなサービスを開発できないなら、au みたいに Gmail を利用させてください、マジお願いします。



(追記)
Web を検索してみたたら、いろんな人からボロクソ言われていた、このサービス...。

Refactoring: Introduce Assertion

みっつめの Refactoring だ。今回のお題は、これ。


Introduce Assertion


ページに記載されているとおりだが、


Make the assumption explicit with an assertion.


だ。assertion を使用して明白に仮定しましょう って、それ直訳すぎ。



public class DuckSimulator {

    public int multipleQuantities(int a, int b) {
        return a * b;
    }

}



class UseDuckSimulator {

    private static final int a = 10;
    private static final int b = 20;

    public static void main(String [] args) {

        // a and b are greater than zero!!!
        if (UseDuckSimulator.a > 0 && UseDuckSimulator.b > 0) {
            DuckSimulator duckSimulator = new DuckSimulator();
            System.out.println(duckSimulator.multipleQuantities(UseDuckSimulator.a, UseDuckSimulator.b));
        }

    }

}



以下のように変更する。



class UseDuckSimulator {

    private static final int a = 10;
    private static final int b = 20;

    public static void main(String [] args) {

//        //a and b are greater than zero!!!
//        if (UseDuckSimulator.a > 0 && UseDuckSimulator.b > 0) {
//            DuckSimulator duckSimulator = new DuckSimulator();
//             System.out.println(duckSimulator.multiplyinQuantities(UseDuckSimulator.a, UseDuckSimulator.b));
//        }

        assert (UseDuckSimulator.a > 0 && UseDuckSimulator.b > 0);
        DuckSimulator duckSimulator = new DuckSimulator();
        System.out.println(duckSimulator.multipleQuantities(UseDuckSimulator.a, UseDuckSimulator.b));


    }

}




"VM arguments" に "-ea" を指定し、Java アプリケーションを実行する。assertion は、デフォルトで無効にされているため。もし、a または b の変数が 0 以下の値を保持し、Java アプリケーションが実行された場合、以下の Exception が発生する。


java.lang.AssertionError


この Exception を catch するコードを記述しない。java.lang.AssertionError は、java.lang.Error のサブクラスであり、致命的なエラーを意味する。

Monday, October 20, 2008

2008-10-20 の記録

あー、もう今日はムカつくことばかりだった。通勤している途中、隣で立っているスーツ男は、新聞を読みながらガツガツぶつかってくるし、加えて鞄をぶつけておいて謝罪なしかよ、お前、社会人か?死ね!西日暮里で乗り換えたら、おばちゃんの大群が乗車してきては、静かな車内かつ自分の隣でクチャクチャうるせーし。席が空いたとたん我れ先に座るし。座ってもうるせーし。つかさ、自分を優先してほしいなら、シルバーシートの近くに乗車しろよ、と。まぁ、もっと常識ある行動をしてくれるなら、こっちも席を譲ってあげようと思いますけれど、あれだけ非常識だと、席も譲りたくないわ。って、俺は席を奪い取られたんだけど。会社じゃー、空気を読んでない行動にダメージを食らいまくり。帰る途中で北千住の無印に立ち寄ったわけだが、お目当ての商品は品切れで「明日、入荷する予定です。」なんて、何のために立ち寄ったんだ俺は。気の利かないメール(つか日本語を書け!)に返信しようとして S11HT を操作していたら、使いにくいつーの、Windows Mobile は!せめてもの救いは、Windows Mobile と比較して、iPhone はめちゃめちゃ操作しやすいって改めて感じたこと。iPhone で利用できる Softbank のデータ通信にかかる費用が段階制の従量制になってから、ほとんど自宅でのみ利用してきたが、こりゃー、外出してるときに使いまくりたいと思えた。データ通信にだけ利用しよう、S11HT を。HTC には悪いが、Windows Mobile が糞すぎる。iPhone マンセー。

Friday, October 17, 2008

2008-10-16 の記録

今日 - 現在の客先にて最初に担当したタイトルをリリースする日 - の作業は、他の担当者の作業も含めて、ほぼ予定どおり完了されたようだ。プレスリリースにも掲載され、それなりのビックタイトルらしい雰囲気だ。まぁ、次のタイトルは、より有名なタイトルだが。

Thursday, October 16, 2008

2008-10-15 の記録

明日リリースされる予定のタイトル - 自分が初めて担当した - が、本日、本番の環境にてテストされる予定だった。そしてテストされる段階になったら、不可解な事象が発生し、結局、自分が退社する時間までテストできなかった。大丈夫だろうか、そこそこ大きなタイトルらしいが...。

私服で通勤するようになってから以前と比較して楽になったが、あの時間帯の車内の混雑にムカつきまくっている。

Registered Amazon Prime

1 年間の "お急ぎ便" を 3,900 円なら支払っていいかも、と考え、Amazon Prime 申し込みしてみた。時間を金で、って感じ。

Wednesday, October 15, 2008

2008-10-14 の記録

目覚ましがセットされていなく、目覚めた時刻は、いつも起床する時刻の 30 分も後だった。少し焦ったが、いつも余裕のある時刻に目覚ましをセットしているため、それほど焦らずに済ませられた。結局、いつもどおりの時刻に発車する電車に間に合った。

Sunday, October 12, 2008

あたし彼女

あたし彼女



あたし

ちょっと

涙した

みたいな

bash Cookbook

bash Cookbook | O'Reilly MediaDan Kogai 氏が言及していたのでメモ。もちろん、私は Safari Books Online で読みますよ!

Upgraded My Subscription To Safari Library From Safari Bookshelf At Safari Books Online

いまや Safari Books Online は、私にとって必須のツールとなった。提供されるサービスを、今後、最大限に利用しようと考えた。そこで、Safari Books Online の Subscription Level を、"Safari Bookshelf" から "Safari Library" へ upgrade することを決定した。費用は、USD $22.99/Month から USD $42.99/Month へ拡大するが、制限(アクセスできる書籍の数)や期限(ブックマークしている書籍)が解除され、かつ他のサービスも享受できる。このサービスを利用するようになってから、O'Reilly の書籍を購入しなくなった。ただし、以前より効率的に情報を入手できている。

Fearless - Taylor Swift

Taylor Swiftニューアルバムが 11/11/2008 にリリースされます!

Saturday, October 11, 2008

2008-10-11 の記録

久々に風邪をひいてしまった。

2008-10-10 の記録

勉強会に参加できなかった。18 時ちょうどに会社を出れないわ、山の手の電車が遅延するわ、渋谷から用賀へ田園都市線の車内が殺人的に混雑しているわ、体調も悪いわ、だった。

Friday, October 10, 2008

Refactoring: Replace Magic Number with Symbolic Constant

さて、ついに私も Refactoring の本を読みはじめたので、学習した内容を書き残しておく。



今日のお題は、これだ。

Refactoring: Replace Magic Number with Symbolic Constant

あえて訳すほどの英語でもないが、それでも訳すなら「マジックナンバーを定数に置き換えよう」という意味で大丈夫だろう。



つまり「マジックナンバーを使用したソースコードの場合、理解しにくいし、その理解しにくいソースコードのおかげで bug も発生しちゃうわけですよ。そこで、マジックナンバーを理解しやすい名前の定数に置換すると、意味を理解しやすいだけでなく、他にも幸せになれますよ。」と理解している。



例となる Java クラスを用意する。某 Head First シリーズの、Design Patterns 本の真似をする。まず Joe が所属している会社が提供している - 様々な Duck の動作を提供できるすばらしい - サービス、Duck Simulator だ。このサービスは、competitors の追随を許さない!メインの DuckSimulator クラスにおいて、Duck の行動が method として実装されている。



public class DuckSimulator {

    private void flyHigh() {
        System.out.println("Flying high...");
    }
    private void runFast() {
        System.out.println("Running fast...");
    }
    private void eatSomething() {
        System.out.println("Eathing something!?");
    }

    public void performDuck(int x) {
        if (x == 0) {
            flyHigh();
        } else if (x == 1) {
            runFast();
        } else if (x == 2) {
            eatSomething();
        } else {
            System.out.println("Unknown");
        }
    }
}



public class UseDuckSimulator {

    public static void main(String [] args) {

        DuckSimulator ds = new DuckSimulator();

        ds.performDuck(0);
        ds.performDuck(1);
        ds.performDuck(2);

    }

}



上のクラスの問題は何だろうか?すぐに理解できる問題は、"UseDuckSimulator" クラスにおいてメソッドを実行していて、メソッドに 0, 1, 2 という引数を与えているが、引数の値から、実行されるメソッドの内容を把握できない点だ。

そこで、定数を使用したクラスに置き換えてみよう。




public class DuckSimulator {

    private void flyHigh() {
        System.out.println("Flying high...");
    }
    private void runFast() {
        System.out.println("Running fast...");
    }
    private void eatSomething() {
        System.out.println("Eathing something!?");
    }

    public void performDuck(int x) {
        if (x == 0) {
            flyHigh();
        } else if (x == 1) {
            runFast();
        } else if (x == 2) {
            eatSomething();
        } else {
            System.out.println("Unknown");
        }
    }

    public static final int FLYING_HIGH = 0;
    public static final int RUNNING_FAST = 1;
    public static final int EATING_SOMETHING = 2;

}



public class UseDuckSimulator {

    public static void main(String [] args) {

        DuckSimulator ds = new DuckSimulator();

//        ds.performDuck(0);
//        ds.performDuck(1);
//        ds.performDuck(2);

        ds.performDuck(DuckSimulator.FLYING_HIGH);
        ds.performDuck(DuckSimulator.RUNNING_FAST);
        ds.performDuck(DuckSimulator.EATING_SOMETHING);

    }

}




定数を使用したため、より理解しやすいはずだ。ただし、まだ問題が残されている。

        ds.performDuck(9);

というコードを追加できる。せっかく定数を使用するように改善したが、もう少し改善するべきだ。



public class DuckSimulator {

    private void flyHigh() {
        System.out.println("Flying high...");
    }
    private void runFast() {
        System.out.println("Running fast...");
    }
    private void eatSomething() {
        System.out.println("Eathing something!?");
    }

//    public void performDuck(int x) {
//        if (x == 0) {
//            flyHigh();
//        } else if (x == 1) {
//            runFast();
//        } else if (x == 2) {
//            eatSomething();
//        } else {
//            System.out.println("Unknown");
//        }
//    }

//    public static final int FLYING_HIGH = 0;
//    public static final int RUNNING_FAST = 1;
//    public static final int EATING_SOMETHING = 2;

    public void performDuck(DuckBehavior x) {
        if (x == FLYING_HIGH) {
            flyHigh();
        } else if (x == RUNNING_FAST) {
            runFast();
        } else if (x == EATING_SOMETHING) {
            eatSomething();
        } else {
            System.out.println("Unknown");
        }
    }

    public static final DuckBehavior FLYING_HIGH = new DuckBehavior("flyingHigh");
    public static final DuckBehavior RUNNING_FAST = new DuckBehavior("runningFast");
    public static final DuckBehavior EATING_SOMETHING = new DuckBehavior("eatingSomething");


}



public class UseDuckSimulator {

    public static void main(String [] args) {

        DuckSimulator ds = new DuckSimulator();

//        ds.performDuck(0);
//        ds.performDuck(1);
//        ds.performDuck(2);

        ds.performDuck(DuckSimulator.FLYING_HIGH);
        ds.performDuck(DuckSimulator.RUNNING_FAST);
        ds.performDuck(DuckSimulator.EATING_SOMETHING);

    }

}



class DuckBehavior {

    String behavior;

    public DuckBehavior (String behavior) {

        this.behavior = behavior;

    }
}




最終的に、"DuckBehavior" というクラスを新たに作成した。また、"performDuck()" が受け取る引数の型を "DuckBehavior" とした。この修正の場合、

        ds.performDuck(9);

というコードを記述できない。メソッドがタイプセーフだからだ。最終的に、プログラマの「うっかりミス」をも回避できるコードとなった。

2008-10-09 の記録

Release Candidate 扱いになるリポジトリ(実際は branch だけど)にソースコードをマージしようとしたら conflict しまくりで面倒な作業だった。

Thursday, October 09, 2008

なんだか

寝なくてもいいんじゃないか?と思えてきた、この時間帯...。ただし、体調不良も影響してクラクラしている。座っているが座ってる感じがしないし、変な感じだ...。

I Will Attend The Python Code Reading

SATOSHI ABE ON BLOG: Python Code Reading 05


正直なところ、私は Shell Script レベルな Python スクリプトを作成するスキルのみ有している。自社や客先においても Python でスクリプトを作成している人を、なかなか発見できない。できれば、自分のような技術者と知り合いになり互いに情報を共有できたら、と願っている。

2008-10-08 の記録

やっと Wizard の Plug-in のサンプルを動作させられた。

Wednesday, October 08, 2008

2008-10-07 の記録

昨夜、十分に睡眠するために市販の睡眠導入剤を飲んでみたが...、眠れなかった。で...、あきらめた。本当に限界が近づいたら自ずと目を閉じ眠れるだろうと思い、本を読んだりしている。購入したままだったリファクタリングの本を読み始めたが、けっこう面白いかも。

仕事の話だが、与えられた仕事を予定より早く完了させてしまって、逆にマズい状態になりそう。少しペースを落とさないと...。

Eclipse の plugin を開発する目的の勉強会を休んだ。体調も悪かったし。

帰りの電車が混雑していて大変だった。やっぱり西日暮里での乗り換えを避けるべきか...。明治神宮前と原宿の間を徒歩で移動したら、明治神宮前と綾瀬で座って移動できそう。

Tuesday, October 07, 2008

ごちゃごちゃした

Windows Mobile の画面:

OMNIA


買う気が失せる

Trying Eclipse Plugin Development

Eclipse プラグイン開発 徹底攻略 を参考に作業する。localized された Eclipse の画像がウザいが我慢する。Eclipse 3.2 を対象としているが、自分は、Eclipse 3.4 をベースに作業する。

とりあえずプラグインを追加するようだが、

Callisto Discovery Site

ほとんど?、already installed な感じ。もしかして不要かも。インストールせずに作業してみる。





続く...

fring on your iPhone

ついに fring が、iPhone の公式アプリケーションとして公開されたようだ。つまり、fring を起動して Skype にログインすれば、Skype 同士で無料チャットおよび無料コールでき、かつ、Skype Out を利用して landline な固定電話にも発信できる。

Monday, October 06, 2008

2008-10-06 の記録

寝不足からか、具合の悪い状態だった。今も悪いし。

雨の影響か、始発なのに激しく混雑して最寄り駅を出発した。最悪。始発の意味なし。

マスクと、数日前に Amazon.co.jp にて購入した Timbuk2 Bags - Classic Messenger - Ballistic Fabric を装着して出社した。

新しいタイトルを順調に処理していて、いい感じ。年末にも BIG なタイトルを担当しそうなスケジュールだ。

定時で退社した。

注文していた新型の iPod が配送された。MacBook の Software Update を実行してから iPod を接続したら、iTunes が iPod を認識せず、iPhone も認識しない状態だった。Apple のサポート情報を参考に、iPod をリセットしたり、いろいろ試したがダメで、結局、OS を再起動して iTunes を起動したら、あっさりと認識された。まるで Windows みたい...。

昨夜、十分に眠れなかったので、今夜、確実に寝ておきたい。さきほど市販の睡眠導入剤を飲んでみた。たまーに服用している睡眠薬より弱いはずだから、あまり効果を期待していないが、どのくらい効果を発揮してくれるか楽しみだ。

Sunday, October 05, 2008

2008-10-05 の記録

音信不通になってしまった California の知人へ、メールを送信してみた。

2008-10-04 の記録

特に何もしませんでした、と。

Saturday, October 04, 2008

Making A Call With Google Talk

I noticed that we can make a call with Google Talk like Skype!

How do I make a call?

Installing FindBugs In Eclipse

FindBugs をインストールしてみた。

Ordered iPod nano

Apple - iPod nano

Ubuntu Linux 8.10 beta

今月 30 日にリリースされる予定の Ubuntu Linux 8.10 の beta 版が公開されたようす。

8.10 Technical Overview | Ubuntu

日本においても、やっと知名度が上がってきたと感じている Ubuntu Linux だが、自分の周囲の人たちを話を聞いてみると、自宅で何かしらの Linux distribution をインストールして使用している人を発見できない。ぎりぎり、VMware にインストールしているくらいだ。これほどインストールしやすくなった今でも。

2008-10-03 の記録

同じチームに所属する社員さんのほぼすべてが、泊まりで勉強会みたいな行事に参加するらしく、自分と他の数名は、仕事を休んだ。

Friday, October 03, 2008

Python Code Reading 05

Python Code Reading 05

2008/10/10 (Fri) らしいです。

2008-10-02 の記録

Linux の、というか Shell Script の勉強会に参加した。自由参加の勉強会だ。7 名のメンバが参加した。説明した人は、詳しそう人でよかった。

Wednesday, October 01, 2008

2008-10-01 の記録

体調を崩してしまったのか。体力の限界...。

Tuesday, September 30, 2008

2008-09-30 の記録

いつも、通勤のとき山手線の内回りに乗車している。今朝、ためしに外回りに乗車してみた。運良く 3 駅目のあたりで座れたが、池袋や新宿や渋谷あたりで激しく混んでいた。これなら内回りに乗車すべきだろうと思った。

Renewed ヒアリングマラソン

正直なところ、まともに勉強できなかった...。だが、先ほど更新の手続きを完了したし、心を新たにして勉強するぞっ!

Can Not Run Eclipse 3.4 On Mac OS X

Eclipse のプラグインをアップデートし、Eclipse を再起動した。すると、以下のメッセージが表示され、Eclipse を起動できなくなってしまった。

"""The eclipse executable launcher was unable to locate its companion shared library."""


解決する手順は、まず、以下のファイルを

${ECLIPSE_HOME}/Eclipse.app/Contents/MacOS/eclipse.ini

テキストエディタでオープンし、以下のように編集する。


(編集前)

--launcher.library
../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.100.v20080509-1800


(編集後)

--launcher.library
#../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.100.v20080509-1800
../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.101.R34x_v20080731



テキストエディタを終了すれば、Eclipse を起動できるはずだ。

2008-09-29 の記録

Sunday, September 28, 2008

2008-09-28 の記録

SiteMesh を使用していてハマった。というか、正確に理解していなかった。たぶん、動作をまだ理解できていないはず。加えて、struts.xml の記述でハマった。どう記述していいのかわからないので、明日、会社でファイルを確認してみる予定だ。

Shibuya.lisp

出遅れてしまったようです。キャンセル待ちかぁー...。

Shibuya.lisp テクニカルトーク #1 定員に達しました

2008-09-27 の記録

久々に A さんとチャットした、Skype で。Brno にて financial analyst をしているらしい。

Friday, September 26, 2008

2008-09-25 の記録

本日も、ふたつめのタイトルをリリースするための作業を実施した。大きな問題もなく、淡々と作業できた。鼻炎の薬を服用していたせいか、眠気を感じながらの作業だった。

Thursday, September 25, 2008

Getting Started With iBATIS

iBATIS を動作させてみた。手順を簡単に記述する。


環境は、Mac OS X Leopard ( MacBook White ) と、その MacBook にインストールされた VMware Fusion を使用する。VMware に Ubuntu Linux 8.04 Server ( 64 bit ) がインストールされており、その Ubuntu に PostgreSQL 8.3.x がインストールされている。このデータベースを使用する。



1. プロジェクトを作成する


プロジェクトネーム : ALICE

パッケージ : jp.launchpad.app

データベース : PostgreSQL 8.3.x


Eclipse を起動し、プロジェクトを作成する。

[File] ---> [New] ---> [Java Project]





2. iBATIS の jar をダウンロードする


http://ibatis.apache.org/ から iBATIS のファイルを対象の jar ファイルは、以下のとおり:


ibatis2-common-2.1.6.589.jar
ibatis2-dao-2.1.6.589.jar
ibatis2-sqlmap-2.1.6.589.jar



Eclipse にて、"ALICE/lib" ディレクトリを作成し、これらの jar ファイルを保存する。プロジェクトの Build Path に iBATIS の jar ファイルを追加する。





3. データベースを用意する


今回の例で使用するデータベースとテーブル、およびデータを用意する。MacBook にて Terminal にて SSH を実行し、MacBook に接続して作業する。


% su -
% su - postgres
% createuser you
% createdb yourdb -O you
% psql -d yourdb
yourdb=# ALTER USER you WITH PASSWORD 'yourpassword';
yourdb=#
yourdb=# CREATE TABLE Person (
id varchar(10) primary key not null,
firstname varchar(30) not null,
lastname varchar(30),
phonenumber varchar(20)
);
yourdb=#
yourdb=# INSERT INTO Person VALUES('0001', 'AAA', 'aaa', '00-0000-0000');
yourdb=# INSERT INTO Person VALUES('0002', 'BBB', 'bbb', '01-1111-1111');
yourdb=# INSERT INTO Person VALUES('0003', 'CCC', 'ccc', '02-2222-2222');
yourdb=#
yourdb=# SELECT * FROM Person;
yourdb=# \q



Eclipse にて、PostgreSQL の JDBC Driver を Build Path に追加する。Java アプリケーションからデータベースに接続できることを確認しておくこと。私は、以下の Java アプリケーションを使用した。


package jp.launchpad.app;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class GetConnection {

 private static Connection con = null;
 private static Statement stmt = null;
 private static ResultSet rs = null;
 private static final String dbhost = "172.16.240.128";
 private static final String dbname = "yourdb";
 private static final String dbuser = "you";
 private static final String dbpasswd = "yourpassword";
 private static final String driverURL = "jdbc:postgresql://" + dbhost + ":5432/" + dbname;

 public static void main(String [] args) {
  try {
   Class.forName("org.postgresql.Driver");
   con = DriverManager.getConnection(driverURL, dbuser, dbpasswd );
   String sql = "SELECT * FROM Person";
   stmt = con.createStatement();
   rs = stmt.executeQuery(sql);
   while(rs.next()) {
    System.out.println(rs.getString("id"));
    System.out.println(rs.getString("firstname"));
    System.out.println(rs.getString("lastname"));
    System.out.println(rs.getString("phonenumber"));
    System.out.println("");
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}






4. ファイルを作成する


データベースと接続するための情報、および、sqlMap ファイルまでの PATH を記述して、ファイルを作成する。

ファイル:
ALICE/src/conf/SqlMapConfig.xml



<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
 <transactionManager type="JDBC">
  <dataSource type="SIMPLE">
   <property name="JDBC.Driver"
      value="org.postgresql.Driver"/>
   <property name="JDBC.ConnectionURL"
      value="jdbc:postgresql://172.16.240.128:5432/yourdb"/>
   <property name="JDBC.Username" value="you"/>
   <property name="JDBC.Password" value="yourpassword"/>
  </dataSource>
 </transactionManager>
 <sqlMap resource="conf/SqlMap-Person.xml"/>
</sqlMapConfig>



続いて、"SqlMapConfig.xml" ファイルにて記載したファイルを作成する。このファイルに、実行する SQL を記述する。

ALICE/conf/SqlMap-Person.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
 <select id="getPerson" resultClass="jp.launchpad.app.dto.Person">
  SELECT
   id, firstname, lastname, phonenumber
  FROM
   Person
 </select>
</sqlMap>






5. SqlMapConfig を読み込む


作成した SqlMapConfig を読み込む Java アプリケーションを作成する。


package jp.launchpad.app.common;

import java.io.Reader;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class AliceSqlConfig {

 private static SqlMapClient sqlMap;

 static {
  try {
   String resource = "conf/SqlMapConfig.xml";
   Reader reader = Resources.getResourceAsReader(resource);
   sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public static SqlMapClient getSqlMapInstance() {
  return sqlMap;
 }

}



検索した結果を格納するクラスを作成する。


package jp.launchpad.app.dto;

public class Person {

 private String id;
 private String firstname;
 private String lastname;
 private String phonenumber;

 public String getId() {
  return this.id;
 }
 public void setId(String id) {
  this.id = id;
 }

 public String getFirstname() {
  return this.firstname;
 }
 public void setFirstname(String firstname) {
  this.firstname = firstname;
 }

 public String getLastname() {
  return this.lastname;
 }
 public void setLastname(String lastname) {
  this.lastname = lastname;
 }

 public String getPhonenumber() {
  return this.phonenumber;
 }
 public void setPhonenumber(String phonenumber) {
  this.phonenumber = phonenumber;
 }
}






6. 実行ファイルを作成する


最後に、これまで作成した xml ファイルや Java アプリケーションを実行する Java アプリケーションを作成する。


package jp.launchpad.app.action;

import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;

import jp.launchpad.app.common.AliceSqlConfig;
import jp.launchpad.app.dto.Person;

public class DoIt {

@SuppressWarnings("unchecked")
 public static void main(String args[])throws Exception {
  SqlMapClient sqlMap = AliceSqlConfig.getSqlMapInstance();
  List <Person> list = (List <Person>) sqlMap.queryForList("getPerson", null);
  for (Person p : list) {
   System.out.println(p.getId());
   System.out.println(p.getFirstname());
   System.out.println(p.getLastname());
   System.out.println(p.getPhonenumber());
   System.out.println("");
  }
 }
}



実行してみて、表示される内容を確認する。

2008-09-24 の記録

今日も鼻炎の薬を飲んだ。

出社して新着メールを確認してみたら、飲み会のメールを受信していた。今週の金曜日だそうだ。場所は恵比寿。うーむ.....。

HTML + CSS のワナ?にハマってしまって、けっこう時間を消費してしまった。

勉強会を開催する時間が調整された。

10 月のワークショップに参加できないらしい。

19 時まで仕事をして、休憩を 2 時間という調整をして勤務表を確認してもらった。

昨日さんざんハマって解決できずに終了してしまった iBATIS の ClassNotFound の件は、特に何もせず解決してしまった。いったい何が悪さをしていたのか...。

職場の人が iBATIS の制御について悩んでいた。その現象を解決する方法は、オフィシャルマニュアルにて説明されているようなんですけれど。

Wednesday, September 24, 2008

The Finder Can Show Hidden Files In Mac OS X

Open a new terminal, then type commands below:

% defaults write com.apple.finder AppleShowAllFiles TRUE
% killall Finder

Tuesday, September 23, 2008

2008-09-23 の記録

大量の鼻水が、絶え間なく出まくった。たまらず鼻炎の薬を飲んで、やっとおちついてきた...。iBATIS のサンプルを正常に動作させて、Apache Tomcat にて Web アプリケーションを動作させようとすると、iBATIS の class を見つけられなくて ClassNotFoundException が発生しちゃうんですけど、これいかに?FAQ くさいな、これ。

うるさいハエたち

あー、どうして二輪車を乗りまわしている人たちは、あんなふうに爆音を発するのだろうか。無駄な自己主張だなぁ。自動車も同様だけど、公道を走行するだけの車の場合、いっそマフラーを変更できないように規制してほしい。たくさんの人たちが騒音から解放されるだろうに。

Upgraded VMware Fusion To 2.0

1.1.3 (94249) を 2.0 (116369) へ upgrade した。

2008-09-22 の記録

先週まで担当していた作業をいったん中断し、新しいタイトルの作業を開始した。途中までチームのメンバが担当していたタイトルを引き継いだ。ゲームに詳しくない自分でも知っているようなビッグタイトルだ。こんなビッグタイトルを担当して問題ないんだろうか...。

Monday, September 22, 2008

Specifying iBATIS In pom.xml

<dependency>
    <groupId>com.ibatis</groupId>
    <artifactId>ibatis2-common</artifactId>
    <version>2.1.6.589</version>
</dependency>
<dependency>
    <groupId>com.ibatis</groupId>
    <artifactId>ibatis2-dao</artifactId>
    <version>2.1.6.589</version>
</dependency>
<dependency>
    <groupId>com.ibatis</groupId>
    <artifactId>ibatis2-sqlmap</artifactId>
    <version>2.1.6.589</version>
</dependency>

Sunday, September 21, 2008

2008-09-21 の記録

7 時の予定だったが、12 時くらいに起床してしまった。注文していた PHS が配送された。気に入らない電話番号の文字列...。気にし過ぎかなぁ...。070-1234-5678 という場合、「1 は 0 じゃない数字で、かつ、4 と 5 は別の数字」という番号を希望していたが、4 と 5 が同一の番号だった。ちなみに、その番号は 2 なんだが。まぁ、いまどき電話番号の数字なんて、アドレス帳に登録しまったら、二度と意識しないかもしれないような存在だったりするので、気にし過ぎといえば気にし過ぎか...。今日も風邪のような症状であります。Session を使用して認証する部分を簡単に動作させるまで作業した。「戻るボタン」の制御をどのように実現するんだろうか...。データベースにテーブルを作成し、試験に使用するデータをインサートしておいた。データベースは PostgreSQL を選択してあり、かつ VMware が管理する、ひとつの VM に PostgreSQL を動作させている。distribution は Ubuntu Linux 8.04 Server x64 だ。利用している Google Apps の Google Sites にドキュメントを記載している。ドキュメントを残さない人と比較して、ひとりで作業しているときもドキュメントを作成する自分って、マジメなのかもしれない。いや、忘れやすいから備忘録として記述していだけさ、本当は。

Saturday, September 20, 2008

2008-09-20 の記録

7:15 に起床した。8:00 ごろから PC を起動し、いつものアプリケーションたちを起動し、当然ながら Eclipse も起動し、開発を開始した。まぁ、開発ちゅーか、勉強ちゅーか。単に操作や動作を確認しているだけで、まだ何も具体的にできあがっていないが。微妙というか、かなり JSTL の記述にハマってしまっているような雰囲気...。あぁ、何も知らない状態でドキュメントを確認しながら、あれこれ考えながら作業しているわけです。風邪だろうか?たまに鼻水とクシャミをしてしまう。Youtube で Michael Jordan の動画を検索し、すばらしいプレーに改めて感動した。

perlintro

たとえば、これから新人に Perl を勉強させようとしたときに参照してもらうと便利かも、的な文書。

perlintro - perldoc.perl.org

Enable The Caching Feature Of iBATIS

How can I enable the caching feature of iBATIS?

How To Display My Own Data On A Page With Apache Struts 2

/* SampleAction.java */
package jp.launchpad.app;

public class SampleAction {

    private String myMessage;

    public String getMyMessage() {
        return myMessage;
    }

    public String execute() {
        myMessage = "What time is it now? it's " + new java.util.Date().toString();
        return "success";
    }

}


/* Sample.jsp */

<html>
    <body>
        <p>
            ${myMessage}
        </p>
    </body>
</html>

2008-09-19 の記録

予定どおり、通信テストが実施された。ローカル環境からサーバ(先方が管理している)へ通信し、正常に処理が実行されるか、などを確認するため。ミスが発見されたが、通信に限定すると正常に動作した。ただし、それ以外の部分で修正を要求された。自分が作業していなかったり、勘違いしていたり、間違っていたりしたり、などしていた。どのくらいのレベルでテストするのか、だいたい理解できた。

Thursday, September 18, 2008

2008-09-18 の記録

客先の会社の場合、内線に WILLCOM の PHS を利用している。なぜか iPhone も利用しているようだが。限定された期間で自分の Java の知識を増幅させたいなら、社員の人から積極的に情報を共有してもらうべきだ、と判断した。そこで、より円滑にコミュニケーションすべく、現在の仕事のためだけに PHS を用意することに決定した。そして注文した。これを内線のように活用してみる予定だ。暴走ぎみな行動だと理解しているが、これくらい投資しなくちゃ、自分にね。30 歳になり、なんというか、「守り」的な考えに、無意識のうちに蝕まれていそうで怖い。そうだ、自社にも WILLCOM ユーザが所属しているため、彼とも情報を共有しやすくなるだろう。と、自分の行動を前向きに評価してみるテスト。

今日、長袖の服をチョイスして出社した。風邪ぎみっぽい。マスクな従業員もチラホラ見かける。このごろ涼しくなっているしねぇ。

明日の 14 時から、リリースするタイトルの最初のテストを実施する。テストする担当は、私じゃないが。

Enable JSTL In Eclipse With Maven

正しくないかもしれないがメモ


1. eclipse に、m2eclipse をインストールする。


2. mvn コマンドでプロジェクトを作成し、eclipse にインポートする。


3. pom.xml に以下の行を追加する。

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.2</version>
</dependency>
<dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
</dependency>


4. Build Path に追加する

"M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar"/>
"M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar"/>


5. building with maven

Ordered WX331K

I ordered a WX331K ( blue ).

2008-09-17 の記録

「うまく対応しておいてよ」

と、ご指示いただいてもー、その「うまく」に定義されている内容も提示してくれないと、判断しようないんですがぁ。

Wednesday, September 17, 2008

おかしな日本語:「が・は」と「を」

目的語と動詞を接続するとき、「が」と「を」の使い分けが明確じゃないと思う。



「が」の例:
私は、スポーツが好きだ。

「を」の例:
私は、スポーツを好きだ。



前者は、よく耳にするし、目にもする。ただし、私は、日本語でドキュメントを作成するとき、後者つまり、「を」を意識しながら記述していく。このような使い分けが意識された日本語のドキュメントを、いまだかつて発見していない。これを意識して文章を記述すると、容易に主語と目的語を明確にでき、読み手が理解しやすいはずなんだけれど...。

2008-09-16 の記録

1 時間ほど早く仕事を終了し、続いて水道橋へ移動した。AVRIL LAVIGNE のコンサートを見るため。S 席だったが、めちゃめちゃ遠くて、ステージの両脇に位置する巨大な液晶を双眼鏡でのぞいて、やっと表情を確認できるくらい。ただし、ずっと双眼鏡でのぞくと疲れてしまうので、双眼鏡と肉眼を交互させつつの鑑賞だった。やっぱり、ちゃんとした双眼鏡を購入すべきだ、と思った。とりあえず、あぶ様は、かわゆすぎる。最後に旦那も飛び入りで歌っていた。うらやましす...。コンサートの後、叙々苑で食事をした。うまかった...。

Monday, September 15, 2008

2008-09-15 の記録

30 歳の誕生日だった。

散らかっていた部屋を整理した。

2008-09-14 の記録

江東運転免許試験場へ出向き、免許を更新した。8:45 から手続きを開始したが、終了した時刻は 10:20 だった。やはり休日に更新しようと考える人は多いらしい。

Sunday, September 14, 2008

Comparison of issue tracking systems

Comparison of issue tracking systems

Updated iPhone Firmware To 2.1

購入した後、ずっとアップデートしていなかった iPhone の firmware のバージョンを、2.1 へアップグレードした。特に問題は発生しなかった。

2008-09-13 の記録

8 時くらに目覚めたが、再び寝てしまい、次に目覚めた時刻は 13 時を過ぎてしまった。

Saturday, September 13, 2008

XPath

XPath is a language for selecting nodes from an XML document.

XPath Tutorial

I Don't Want To Quit An Application In Mac OS X

Mac OS X にて、

command key + q

で、アプリケーションを終了しないように設定を変更する方法をおしえてください...。

Generics In Java 1.5

Java 1.5 から導入されたはずの Generics について備忘録


Hashtable <String, String> ht = new Hashtable <String, String> ();

ht.put( "AAA", "aaa" );
ht.put( "BBB", "bbb");
ht.put( "CCC", "ccc");

if (ht.containsKey("AAA") && ht.containsValue("aaa")) {
        return true;
}
return false;

Apache Struts 2 Tutorials

advertisement がうっとおしいけれど、そこそこの情報を閲覧できるため、メモメモ。

Apache Struts 2 Tutorials

2008-09-12 の記録

Tomcat 5.5.26 において、Cookie を処理する機能に bug が存在するそうな。私は、このバージョンの Tomcat を使用していた。そのため、私の開発環境においてのみ現象が発生し、原因を特定するまで時間を必要としてしまった。

Gypsy Girl by ARIA AIZAWA

CD を購入できるようです。

Gypsy Girl


--
ARIA AIZAWA

Friday, September 12, 2008

2008-09-11 の記録

風邪っぽい症状だったので、22:00 ごろにベッドに横たわり、そのまま眠ってしまった。ゆえに早起き。

Thursday, September 11, 2008

2008-09-10 の記録

18 時で仕事を終了し、大崎で待ち合わせした後、品川へ移動した。例の人たちとの飲み。

Wednesday, September 10, 2008

2008-09-09 の記録

プロジェクトに参加した人が受講する説明会のラストだった。別の韓国人の技術者(偉い人)に説明してもらった。19:00 で仕事を終了。

帰りの電車で座っていたら、いつの間にか隣にオジサンが座っていた。このオジサンがガムを食べていたが、クチャクチャさせながら食べていた。気持ち悪いんだよ!以前から気になっていることを思い出した。何も食べていないのにクチャクチャさせているオジサンっているでしょ?あれって、マジ最悪。汚すぎる。なぜ、クチャクチャって音を出すんだろうか?理解できない。

Tuesday, September 09, 2008

EMOBILE Will Release Touch Diamond

emobile ユーザとして、新しい端末が発売されることを嬉しく思う。ただし、S11HT ユーザとして感想を述べると、Windows Mobile に過度な期待をしたくない、という気持ちが正直なところ。いくら """独自 UI を搭載""" と主張しても、S11HT から飛躍的に使いやすくなるわけない。Windows Mobile をリリースしている人たちは、もっとユーザの立場で考えてほしい。つか、まったく見えていないんだろうなぁ。ほんと使いづらいんですよ、Windows Mobile って。悲しくなるほどに...。ここ

ITmedia +D モバイル

で、Microsoft の人が、Windows モバイルについて熱く語っていたりするが、「本気でおっしゃってます?」って感じです、はい。

2008-09-08 の記録

ランチしている最中、蚊にさされてしまった。店の外 ( テラス? ) で食べていたから。蚊にさされると、妙にムカついてしまう...。ゲーム会社においての仕事は、ゲームを好きな人が仕事をしている場合が多いので、ゲームの話題になると確実に盛り上がる。そして、自分は、当然ついていけない。自宅で試そうとメモしていた用紙を忘れてしまい、再び公式ドキュメントを参考に作業したみた。やはり自分は、まだ IDE に慣れていないのだろうか。水曜日の件で、先方からのメールを受信した。場所は、品川ですって。

Monday, September 08, 2008

Getting Started With Eclipse And Struts 2 And Maven

Ready, Set, Go! を参考に、Eclipse + Struts 2 + Maven の環境を構築してみる。


Installing JDK

JDK をインストールし、環境変数 JAVA_HOME を有効にする。



Installing the Maven

Apache Maven をインストールする。



Installing the Maven Integration for Eclipse

m2eclipse をインストールする。



Running the Maven Archetype

ドキュメントにて解説されているとおり、以下のように実行する。

% mvn archetype:create \
    -DgroupId=jp.launchpad.app \
    -DartifactId=myProject \
    -DarchetypeGroupId=org.apache.struts \
    -DarchetypeArtifactId=struts2-archetype-starter \
    -DarchetypeVersion=2.0.11.2-SNAPSHOT \
    -DremoteRepositories=http://people.apache.org/repo/m2-snapshot-repository

% cd myProject

% mvn eclipse:eclipse -Dwtpversion=2.0



Creating A New Project in Eclipse

Eclipse にて、新たにプロジェクトを作成する。



Importing the project

作成した tutorial ディレクトリをインポートする。

File ---> Import ---> General ---> File System



That's all!

2008-09-07 の記録

Struts 2 を採用してアプリケーションを開発してみようとして苦戦している...。

Sunday, September 07, 2008

Manning Books At Safari Books Online

Manning が出版している書籍も Safari Books Online で閲覧できるが、(一部の書籍?は)テキストじゃないので使いづらい。Google Toolbar の translation 機能を活用している場合、イメージに含まれる単語を翻訳できない、というわけ。

Struts 2 + Spring 2 + JPA + AJAX

Struts 2 + Spring 2 + JPA + AJAX

2008-09-06 の記録

特に何もしない日だった...。

Saturday, September 06, 2008

2008-09-05 の記録

韓国の社員が来日しているらしく、社内でワークショップが開催された。自分は、お留守番だったが...。資料のみを参考にし、新しいサービスを設定してみたが、予想していたより簡単な部分を解決できず困った。そして、いつもどおり助けてもらった。そういえば、韓国製?のノベルティをもらった。以前からプロジェクトに参加しているメンバーは、18 時を過ぎたころに浜松町へ移動した。屋形船で宴会だそうで。先方の社長から電話をいただき、「来週の水曜日に会いましょう」とのこと。

Friday, September 05, 2008

How To Setup A Basic Struts2 Project

現場の Web アプリケーションに採用しているフレームワークが Apache Struts 2 であるため、自分も環境を構築できるように練習したメモと画像を記録しておく。


Installing JDK 1.6

JDK 1.6 をインストールする。JAVA_HOME も設定しておくこと。

Java SE Downloads





Installing Eclipse 3.4

現時点で最新バージョンを選択する。

Eclipse Downloads

Eclipse IDE for Java EE Developers
filename : eclipse-jee-ganymede-macosx-carbon.tar.gz





Installing WTP in Eclipse

Eclipse の Software Update 機能を実行し、WTP を適用する。

[Help] ---> [Software Updates...] ---> [WTP] ---> [3.0.1]







Installing Apache Tomcat 6.0.x

Apache Tomcat の最新バージョンを選択する。展開と配置の手順を省略する。

Apache Tomcat





Downloading Apache Struts 2

Apache Struts の Official Web サイトから、Struts 2 のファイルをダウンロードする。`Full Distribution' を選択する。

Apache Struts 2





Importing Struts2 war file

Struts のアーカイブを展開し、生成されたディレクトリに存在する WAR ファイル /* struts-2.0.11.2-all.zip */ を、Eclipse にインポートする。

In Eclipse, [File] ---> [Import] ---> [Web] ---> [War file]







Setting up Apache Tomcat

Apache Tomcat を設定する。

[New] ---> [Server] ---> [Finish]
Double click the server name, then select the [modules] tab, click [Add Web Module...], select your module and click OK button.


アプリケーションサーバの種類とバージョンを選択する。




追加されたアプリケーションの名前 ( 下の画像の場合 `SAMPLE' ) をダブルクリックする。




`Modules' タブをクリックし、




`Add Web Module' ボタンをクリックし、




追加する Module、つまり今回の場合 `SAMPLE' をクリックし、OK ボタンをクリックする。




`Ctrl + S' で変更を保存する。




追加された。







Staring your Struts 2 project

右へ向かっている矢印のアイコン ( 緑 ) をクリックすると、アプリケーションサーバを起動できる。




Web ブラウザを起動し、以下の URL を表示する。

http://localhost:8080/SAMPLE







以上

--
Struts 2 -Eclipse (Struts forum at JavaRanch)

2008-09-04 の記録

仕事の帰り、考え事をしていたら降りる駅を過ぎてしまっていた...。

Wednesday, September 03, 2008

S11HT Does Not Respond

朝、出社して S11HT を鞄から取り出し、本体の右側に位置する電源スイッチをクリックした。いつも出社した後に Gmail を確認しつつ、Skype にログインしておくためだ。だが、何度クリックしても、画面が表示されない。3 G で接続しているときに点滅するランプが点滅しているため、電源が ON されていると確認できる。もしかして液晶が故障してしまったかと思った。とりあえず、同様の症状を発見できるか Web を検索してみたら、発見した。

Mobile Fan blog EMONSTER (S11HT) の電源が入らなかった・・・。

まさに同様の症状のようで。SIM を引き抜いて電源を OFF し、改めて電源を ON したら起動した。かなり焦った。本体の問題か、または Windows Mobile の問題か特定できていないが、無事に起動してよかった。

2008-09-03 の記録

韓国人の技術者が、これからの業務に必要な情報を提供してくれた。2 時間、まったりと。

Trying JUnit

JUnit.org

今更な感じもしているが、現場で JUnit を使用するらしいので、自宅の環境で試験してみた。手順を書き残しておこうかと思ったが、面倒であるため、とりあえず省略しておく。

2008-09-02 の記録

今日から私服でした...。Eclipse のプラグインを開発しよう!と考える、有志が集合し、開催している勉強会に参加させてもらった。

Tuesday, September 02, 2008

Ordered "Eclipse プラグイン開発 徹底攻略"

Eclipse プラグイン開発 徹底攻略

2008-09-01 の記録

今日から新しい現場だった。

間違った改札を出てしまい少し迷ったが、目立つビルで助かった。ただし、汗だく...。

やっぱり靴ズレ...。

自分だけスーツだし...。

ビルが新しすぎ。

社員の人の人柄がよすぎ。

開発の環境もよすぎ。自分ごときの開発者が、アーロンチェアとは...。

社員が自由に仕事をできるように配慮しすぎ。すてきすぎる。

外国人も多すぎ。ただし韓国人だけど。

Generation Warnings Occured

意味を理解できない!






解決:

schema を誤って指定していました...。

Sunday, August 31, 2008

2008-08-31 の記録

8:00 過ぎに起床した。15:00 ごろに北千住へ出発した、皮靴を購入するために。最終的に、ブランドを意識せず安価な商品を購入してしまった。ただし、それなりにカッコいいので、個人的に満足している。注文した時計は、今日、配送されなかった。明日だろうか。かなり眠いので、早めに寝るとしよう。明日から新しい現場だ...。

Ordered GW-M5600-1JF

来月からの現場は、私服 OK らしい。ラフな服装でも似合う時計を購入しようと思った。安価に販売されているというポイントも大きいが、G-SHOCK の原点に近いスタイルらしい、GW-M5600-1JF を注文した。

2008-08-30 の記録

13:30 ごろ起床し、T 氏に電話したが応答なかった。間もなく彼が電話してきた。私たちの体調を考慮し、会わないことにした。寝まくりな日だった。

Saturday, August 30, 2008

2008-08-29 の記録

この日は、恵比寿の現場の最終日だった。この日を最後に、20 名に近い外部スタッフが、このプロジェクトから離脱する。聞いたところ、来月、人員を補充しないそうで、空席の目立つフロアになるだろう。

19:00 に業務を完全に終了させる、と午前中の定例会議でアナウンスされた。そのため、15:00 を過ぎたあたりから、マシンのデータを削除したり、不要なドキュメントを廃棄したり、私物を持ち帰る準備をするなど、最終日にありがちな光景を目にした。

18:00 になり、マシンの電源を OFF した。どこの現場においても、最終日の電源 OFF は、何か特別な感情をもたらしてくれる。19:30 から、さくら水産にて送別会を予定していた。気の合う人たちと共にビルを出て、近くの公園らしきスペースにて時間をつぶした。

19:15 ごろに移動を開始した。奥の端の席を確保した。宴会の席において、ポジションの確保は最初の重要だ。偉い人が挨拶をした後、各自が飲み食いしはじめた。間もなく、外の天候が悪化していることを認識した。また雷雨だった。客先で業務をしている人たちも順次、合流していたようだった。挨拶をしたいと思っていた人と会えてよかった。アルコールは強力だった。あまり会話しなかった人、やや避けていた人たちとも、気持ちよく会話できた。

23:00 で、一次会を終了した。雷と雨を避けるため、とりあえず向かいの中華店で二次会を。24:00 過ぎの終電で帰宅する人もいるが、自分は朝までの残ろうと思った。N 市と電話番号を交換した。彼は、私を支えてくれた人だった。年下だが、技術もあり、人柄もよく、誰からも好かれ、尊敬できる人だった。このプロジェクトにて、私は彼の力になれなかったことは、非常に悔しかった。

三次会は庄屋で。このこのろ時間を正確に覚えていない。タクシー待ちの人が長蛇の列を生成していた。店長の態度にムカついた。狭すぎる店内だった。今回のプロジェクトを現場で支える Y 氏から、ありがたい説教をいただいた。この人が上司だったら、もっと多くの技術を習得できただろうと思う。

四次会は、おしゃれな店だったが、すぐにラストオーダーになってしまった。三次会の説教もあり、私は次の会社へ転職することに疑問を感じていた。なぜなら、私を評価してくれている人たちが評価しているほど、私は優秀な人材でないからだ。と、私をスカウトしようとしている人へ伝えたら、また説教というか、それに近い内容のトークをしてくれた。おそらく 1 時間ほどで店を出ただろうか。もう朝だった。

5:00 過ぎの電車に乗車したはず。自宅に到着した時間は、6:30 ごろだったと思う。眠くて眠くてしかたなかった。

Friday, August 29, 2008

2008-08-28 の記録

22:30 まで残業し、いつもどおり?、さくら水産へ...。担当していた結合テストのシナリオを、やっと消化できた...。明日、19:00 にて、このプロジェクトの業務を完全に終了し、続いて、プロジェクトに参加したメンバが飲み会をする予定だ。場所は...、



さくら水産



なんだな...。

Thursday, August 28, 2008

Signing Up For Google Apps

取得したドメインを、Google Apps で利用できるよう手続きした。

2008-08-27 の記録

22:30 まで残業...。

昨日、面接を受けさせていただいた大崎の企業にて、来月から 3 months ほど業務することで決定した。面接の内容から、完全にダメだと思っていたが...。

注目の記事

レポート:「長く使える技術力を自分に蓄えていく」―はてな伊藤直也氏がジュンク堂書店大阪本店トークセッションに登場|gihyo.jp … 技術評論社

Wednesday, August 27, 2008

2008-08-26 の記録

新しい会社で仕事をしようと考えるなら、採用を担当する人が、「この人なら採用したい」と思うような人材であるべきだ、と思った。つまり、転職を実行するとき、そう思われるくらい自己を高めておくべきであって、そうでないなら転職なんてするな、くらいの気合いで、日々、自己を高める努力をすべきだ、と思った。

午後の面接は、ダメダメだった。

19 時から、恵比寿の店で打ち合わせ。やっぱ会社を経営している人の話は、勉強になりますよ、マジで。自分なんかウンコみたいな存在に思えてしかたない。

Tuesday, August 26, 2008

2008-08-25 の記録

23:00 まで残業...。定時で退社する予定だったのに。明日の午後、クライアントの技術者と面接する予定だ。大崎にて。今週までの業務であるため、仲良くしていただいた人たちと名刺を交換しはじめたところで気づいたが、残り 6 枚しか手元に残っていない...。明日の業務を終了した後、現場で知り合った技術者が所属する会社の取締役と会ってみる予定だ。

Monday, August 25, 2008

Registered A JP Domain

新しくドメインを取得してみた。

launchpad.jp

Sunday, August 24, 2008

2008-08-24 の記録

午後から自社に出社して、上司と相談してきた。

2008-08-23 の記録

寝まくりな日だった。

Working Condition

本当に転職するかもしれないので、今一度、ここで自分の考えを整理してみる。

必須の条件
・業務でプログラミングできること。
・業務による開発の経験が不足しているため、広い範囲の開発の業務を経験したい。
・C, C++, Java などの言語による開発を経験したい。
・オープン系の技術を活用していること、

望ましい条件
・社員さん、OSS に関連するニュースや技術に興味をもっているといいな。

給与
・給与は UP しなくてよい

場所
・都内が望ましいが、近ければ千葉や埼玉でも問題なし。


・外国人が所属していると better
・会社の規模を気にしない。

こんな感じ。かなりモヤっとしているような。

Looking For Jobs

転職を考えると、いつものように Google を活用して人材募集の情報を検索してみるわけで。やはり Python をキーワードにして検索すると、情報を絞り込みやすい。先ほど見つけた会社の人材募集:

Cerevo » 人材募集

魅力的だが、私の実力じゃぁ無理だなぁ...。

Saturday, August 23, 2008

My Subscription Extended

Extending My Subscription にて記載したとおり、契約が自動的に更新された。

2008-08-22 の記録

23:30 まで残業した。

Friday, August 22, 2008

Extending My Subscription

3 日前に、Skype から以下の件名でメールを受信していた。

Skype: your online number expires in 7 days

確認してみたところ、Subscription を更新しなければならないようだった。自分のアカウントのページに表示されている Subscription の情報を表示しても、Subscription を更新するようなメニューは表示されていなかった。Skype の Online Help を検索し以下の情報を入手した。

How can I pay for a subscription?

要するに、私は PayPal で Subscription の料金を支払っている。かつ Auto-recharge を有効に設定しているため、自動的に Subscription が更新されるようだ。おそらく...。

--
How does Auto-recharge work?

2008-08-21 の記録

23:40 まで残業し、最寄り駅までダッシュして間に合った。明日の夕方、案件を紹介してもらえる予定だ。

Wednesday, August 20, 2008

2008-08-20 の記録

二日酔いだったのか、特に午前中、体調は最悪だった。

Tuesday, August 19, 2008

2008-08-19 の記録

21 時を過ぎたあたりで仕事を終了した。その後、いつものように、さくら水産へ。

Monday, August 18, 2008

2008-08-18 の記録

意識的に仕事を処理してみたが...。

20:30 まで残業した。

新しい案件を紹介してもらったが、またミスマッチじゃね?

寝不足か?

Sunday, August 17, 2008

2008-08-17 の記録

デニーズにて夕飯を。

マツキヨにて買い物を。

Emacs の勉強を再開す。

Installing Talkonaut On S11HT

Talkonaut

Configuring iChat To Connect To Google Talk

How do I configure iChat for Google Talk? - Google Talk Help

を参考にし、iChat にて、Google Apps のアカウントを使用できた。


--
Client Choice with Google Talk

Installing Coccinella On Mac OS X

Coccinella

ActiveSync On S11HT

S11HT が起動した後、または何かのタイミングで、ActiveSync というプログラムが自動的に起動してしまう。気づいたら手動でプロセスを kill しているが、非常に面倒だ。このアプリケーションが自動的、いや勝手に起動しないように設定できるだろうか...。

2008-08-16 の記録

クリーニング

雷雨

ずぶ濡れ

散髪

Applying For A Credit Card

JCB の Web サイトにて、JCB のクレジットカードを申し込んでみた。私は、メインのクレジットカードとして、三井住友 VISA カード、加えて、保険的に American Express を所有しているが、まれに American Express のカードを使用できない状況に遭遇するため、もうひとつ所有しておこうと考えた。無難に JCB を選択した。

Ordered TF-PM11

TF-PM11

Saturday, August 16, 2008

Ordered AT3A35T

AT3A35T

2008-08-15 の記録

またも、恵比寿ガーデンプレイスにてランチをす。39 階からの眺めを楽しみながら、900 円のハンバーグ定食を食べた...。

22:30 まで残業した。厳しいなぁ...。

その後、プロパな人たちと、いつものさくら水産で乾杯。帰宅した時刻は 1 時くらいだったろうか。

途中経過

2007-12-16 - 2008-08-15










現在¥ 2,000,002
ランクV2 確定
V3 まで残り¥ 999,998

Thursday, August 14, 2008

2008-08-14 の記録

18:00 ちょうどに退社した。

PHS が配送された。WX331K かわゆす。

Wednesday, August 13, 2008

2008-08-13 の記録

恵比寿ガーデンプレイスにて、ランチした。

注文した PHS が配送されたが不在だったため、明日に配送してもらうように手配した。

来月からの案件を紹介してもらったが、どちらも微妙なため、お断りすることに...。

Tuesday, August 12, 2008

WALKINGHOTSPOT

WALKINGHOTSPOT

明日にでもインストールしてみよう、っと。

2008-08-12 の記録

20:00 まで残業。朝の会議の前、「顔色が悪いよ」と指摘された。18 時を過ぎたあたりから、風邪っぽい症状に。早めに寝る予定だ。

2008-08-11 の記録

強烈、というほどでもなかったが、体内時計が狂っていたため、少々、寝不足な 1 日だった。21:30 まで残業してから帰宅した。時期的に出社しているメンバが少数であるため、まったり仕事をしようかと思っていたが...。

Sunday, August 10, 2008

2008-08-10 の記録

PHS を契約した。鼻水がとまらないため、鼻炎の薬を飲んだ。

Getting Started With Emacs

// TODO : must be updated

私が忘れやすい Emacs の情報をメモしておく。誰かにおしえるときにも役立つ、かもしれない。同一の操作を実現する複数の手段が存在する場合が多い ----- まるで Perl のよう? ----- が、今回、できるだけ限定し、かつ、簡単な操作のみを記載する。



Installing GNU Emacs
----------------------------------------------------------------------------------------------------

プラットフォームに適切なファイルをダウンロードし、インストールする。本家の Web サイト ----- GNU Emacs ----- からファイルを入手するか、distributor が提供しているパッケージをインストールすれば簡単だ。

Ubuntu Linux の場合 :

% sudo apt-get install emacs



Mac OS X の場合 :

Carbon Emacs Package





Setting Emacs
----------------------------------------------------------------------------------------------------

vi を例に挙げると、"~/.exrc" の役割をするファイルが Emacs にも存在する。ユーザごとの設定ファイルだ。ホームディレクトリにファイルを作成すると、Emacs を起動するたびに読み込まれる。

~/.emacs





Understanding Emacs Commands
--------------------------------------------------------------------------------------------------------------

Emacs において、vi のように mode ----- command モードと insert モード ----- は存在しないが、コマンドは存在する。主に Control キーまたは Alt キーを押下してコマンドを入力する。


C-x

と記載されていたら、

Ctrl キーを押下しつつ x キーを押下する。


M-x

と記載されていたら、

Alt キーを押下しつつ x キーを押下する。


コマンドを入力している途中、または、単純に入力している途中で誤ってコマンドを入力してしまったら、C-x g を押下して、コマンドの入力をキャンセルできる。





Emacs Basic Commands
----------------------------------------------------------------------------------------------------

Invoking Emacs

どこかに生成されているアイコンをダブルクリックし、Emacs を起動する。または、コマンドを実行する。

% emacs




Opening a existing file

既存のファイルをオープンする。

C-x C-f




Saving your modification

バッファを保存する。

C-x C-s




Writing a buffer to a file

C-x C-w




Emacs を終了する

C-x C-c





Moving
----------------------------------------------------------------------------------------------------

基本的なカーソルの移動のみをメモする。


カーソルを前方へ移動する

C-f




カーソルを後方へ移動する

C-b




カーソルを下方へ移動する

C-n




カーソルを上方へ移動する

C-p





Searching And Substitution
----------------------------------------------------------------------------------------------------

Starting incremental search forward

C-s




Starting incremental search backward

C-r




文字列を置換する

まず、置換する対象の文字列を決定し、その後、ヒットした文字列ごとに置換するか置換しないかを決定する。

M-< M-%





Editing Commands
----------------------------------------------------------------------------------------------------

テキスト文書を編集していると、当然のことながら実行したくなる操作:カット、ペースト、デリート、など。これらの操作を実行するために必要な Emacs の概念、region が存在する。実行する操作の対象となる範囲 (TODO)を意味する。

C-Space

を押下し、region の開始を宣言する。続いて、操作の対象となる範囲を設定するため、カーソルを移動する。




To cut the region

カーソルを移動し、以下のコマンドを実行すると、選択した region を cut できる。

C-w




copy

カーソルを移動し、以下のコマンドを実行すると、選択した region を copy できる。

M-w




delete one word

cut と同一の操作で実現する。




delete one line

C-k




paste

C-y




編集をもみ消す

編集を undo する。

C-x u





Working with buffers
----------------------------------------------------------------------------------------------------

Emacs においてファイルを編集するとき、実際にファイルは編集されない、保存コマンドを実行しないかぎり。編集されたファイルは、実際、buffer という概念的な場所に保存れている。


Showing buffers

buffer を表示する。いくつか、デフォルトの buffer が存在する。表示された buffer を tab で移動し、選択できる。

C-x b




Opening a buffer

C-x C-f




Closing a buffer

C-x k





Working with windows
----------------------------------------------------------------------------------------------------

Finding a file in another window

C-x 4 f




Selecting a different buffer in another window

C-x 4 b




Moving from one window to another

C-x o




Deleting the current window

C-x 0




Making this my one and only window

C-x 1





Working with frames
----------------------------------------------------------------------------------------------------

Opening a frame

C-x 5 f




Opening a buffer

C-x 5 b




Moving another frame

C-x 5 o




Deleting a frame

C-x 5 0





Shell in Emacs
----------------------------------------------------------------------------------------------------

Invoking a Shell command

M-!




Putting the output directly into the current buffer

C-u M-!




Using shell mode

M-x shell Enter




Terminating the current job

C-c のみの場合、Emacs のコマンドと誤解されるかもしれないため、C-c に続けて実行する。

C-c C-c





Chapter.11 Dired
----------------------------------------------------------------------------------------------------

Using Dired

Invoking Emacs with a directory name as an argument.

% emacs $directoryName

OR

% C-x C-f $directoryName




Deleting files and directories

press `d', then press `x'.





Chapter.12 Macros
----------------------------------------------------------------------------------------------------

Starting defining a macro

C-x (



Ending the macro

C-x )



Executing the macro

C-x e



Executing the macro four times

M-4 C-x e



Editing the macro

C-x C-k e
C-x e
C-c C-c




Naming the macro

C-x C-k n




Executing the macro

M-x name




Saving macros permanently

~/.emacs ファイルに、保存したい macro を記述する。別のファイルに macro を記述し、.emacs ファイルがそのファイルを読むよう設定してもよい。





Chapter.13 Text Formatting And Editing
----------------------------------------------------------------------------------------------------

Changing tab stops

M-x edit-tab-stops




others

Install changes and exiting:
C-c C-c




Killing the buffer

C-x k Enter




Changing

If you want to set your tab default to four columns, insert this line into ~/.emacs

(setq-default tab-width 4)




Outline mode

M-x outline-mode ENTER





Others
----------------------------------------------------------------------------------------------------

Setting a bookmark

C-x r m




Moving to a bookmark

C-x r b