2009年12月1日火曜日

Puppy Linux にFirefox 3.5 をインストールする方法

このスレッドは、 [Puppy Linux Discussion Forum]を勝手に翻訳したものです。
[Install Firefox 3.5.* in Puppy 4.2*, 4.3.* Instructions here]
http://www.murga-linux.com/puppy/viewtopic.php?t=46390



Puppy linux に Firefox(3.5)をインストールする方法

Puppy 4.2シリーズ(JWM版のみですが)に Firefox 3.5.* をインストールしたいなら、以下のようにやることですな。(puppy 4.3.* でもOKなようです)
注意点として、Seamonkeyのライブラリは他のプログラムでも利用されているので、Seamonkeyを削除してはいけません。

1) http://mozilla.jp/からFirefoxファイルをダウンロードしてください。当然のことですが Linux version を選択。
’Firefox-3.5.*.tar.bz2’という感じのファイルをダウンロードできればいいのです。どこからダウンロードするかはあまり気にする必要はありません。
(ここでは 'firefox-3.5.5.tar.bz2' で説明します)

2) インストールには dbus.pet と dbus-glib.pet が必要になります(これらの入手先は下記示します)。
これらをダウンロードして、ディスクに保存してください。後日また必要になるかもしれないので、私は直接パッケージマネージャからインストールするよりも、いったんハードディスクにダウンロードするほうが好みです。
いったん、これらのファイルをダウンロードしておけば、こいつらをクリックするだけでパッケージマネージャーがインストールしてくれます。ライブラリが足りないとかなんたらでエラーになったときは無視するだけです。

dbus-glib.pet
Description
Download
Filenamedbus-glib.pet
Filesize140.01 KB
Downloaded3298 Time(s)

dbus.pet
Description
Download
Filenamedbus.pet
Filesize385.58 KB
Downloaded2988 Time(s)


次に、ダウンロードした Firefox.3.5.2.tar.bz2 をクリックしてインストールをおこなう。
そうすると、アーカイブマネージャーが開いて、パネルにファイル一覧が表示される。マウスで /firefox ディレクトリを選択して「展開」アイコンをクリックする。そうしたら、下のようなウインドウがポップアップされ、どこに展開するのか尋ねられます。デフォルトは /root になっているが,そのままそこに展開していいでしょう。だけども、たぶん extract ALL files including paths のラジオボタンを選択する必要があるとおもいます。(下図参照)
(日本語版puppy 4.3.0 ではこの様なパネルは表示されずに、ファイルが展開されます。)



'Extract'をクリックします。

これで、/root ディレクトリにFirefoxがインストールされます。

OK、もう少しで完了です。


最後に、 Firefoxdesktop.pet をインストールします。
これは、メニューエントリを自動生成するための小さな
'desktop'ファイルを /usr/share/applications にインストールします。そして、 command line/menu/terminal などからfirefoxが呼ばれたときにfirefoxを起動するための小さなスクリプトファイルを /root/my-applications/bin にインストールします。

最後の最後に、'refresh menus'( menu>refresh menus )を実行して, 再起動を行えば、「 menu>internet>Firefox-web browser 」からfirefoxが起動するようになります。


firefoxdesktop.pet
Description
pet
Download
Filename firefoxdesktop.pet
Filesize 593 Bytes
Downloaded 2428 Time(s)

_________________


Fonts
You can fudge around with the font settings in Firefox and get pretty good results as is, but there is no denying the web and much else runs on True Type fonts. There are licensing implications to having True Type fonts installed on you system, but if you are happy with this, and want to really improve the way Firefox displays web sites, install the font pack ttcorefonts from the link below. Just download it to disk, click on the file, and let package manager do the rest. re-boot.


http://www.murga-linux.com/puppy/viewtopic.php?t=43286&sid=1527eb0b2bce47f1449c197937119e8a

Themes
Themes are a very personal matter, but one of the most exciting is the Foxdie theme that can be downloaded from here
http://www.foxdie.us/download/

What excites me about this theme is, not only does it display brilliantly, but you have a menu option to change sub-themes, menu font size etc, so you can not only change to the core Foxdie theme, but further customise it using simple menu options, no messing abou with config files. Here are a couple of screen shots showing two different button configurations. This theme is still in active development, and improving all the time





Note how sharp the icons, text, and images are.

Simplemail

Probably my favourite add-on for Firefox is Simplemail from the Firefox site https://addons.mozilla.org/en-US/firefox/addon/5593
This gives you an email client within your browser much like Opera. It supports folders, drag and drop between folders, auto-completion, built in address books, and multiple accounts. it is basic, but probably all the home user needs.



Enjoy Firefox!



2009年5月10日日曜日

Puppy linux にJava(JDK)をインストールする方法

このスレッドは、本家puppyのマニュアルを勝手に翻訳したものです。
[How To Install Java In Puppy]
http://www.puppylinux.org/wiki/how-tos/general/guesttoojavainstaller



Puppy linux にJava(JDK)をインストールする方法

JavaにはJDKとJREの2種類のモジュールがあります。
JDKとはJava開発者用のキットです、JDKにはJavaプログラムをコンパイルするのに必要となる全てのツールが含まれています。
たいていの人はJREだけあればいいはずです、JREとはJava実行環境のことです。
JREによって、Javaプログラムを実行できるようになります。

注意:JREをインストールするならこの <.pup> を試してみてください。これには約100MBのディスクスペースが必要です。詳細は<このページ>で'java'の項目を参照してください。



'GuestToo'のインストーラーを使ってJDKをインストールする(開発者のみ)
http://puppylinux.org/wiki/archives/old-wikka-wikki/categoryusers/guesttoo

JavaプログラムをコンパイルするならJDKが必要となります。Javaプログラムを実行させたいだけならJREだけで十分です、JREの方が小さいよ。

puppyにJDKをインストールしてみたので、そのときの記録を以下に示します。

1) Slackwareのサイトから「jdk-6u11-i586-1.tgz」をダウンロードする。
2009/5/10時点で[slackware-12.2]-[package]-[jdk] として「search」すると、「jdk-6u11-i586-1」がヒットします。
ところが[download]へ進むとなぜか日本のサイトからダウンロードできません。
わたしは[Canada - Gulus - 100Mbit]からダウンロードしました。

2) ダウンロードしたファイルを解凍するのですが、puppyをハードディスクにFULLインストールしていない環境では解凍処理の途中で空きスペースがなくなって解凍に失敗してしまいます。ハードディスクに適当な作業ディレクトリを作成してそこに「jdk-6u11-i586-1.tgz」を移動させてください。
例:
HDD:'sda1' に「puppyTemp」ディレクトリを作成(/initrd/mnt/dev_ro2/puppyTemp)
ダウンロードしたファイルをpuppyTempに移動

「端末」を使ってファイルを解凍します。


# cd /initrd/mnt/dev_ro2/puppyTemp
# tar -xvzf jdk-6u11-i586-1.tgz
:
:
#

3) 解凍された ./usr/lib/java/ (/initrd/mnt/dev_ro2/puppyTemp/usr/lib/java/) ディレクトリを /usr/lib/に移動させてください。
(ROXのドラッグ&ドロップでの移動でOKです)

4) 解凍された ./install/doinst.sh (/initrd/mnt/dev_ro2/puppyTemp/install/doinst.sh) ファイルを / に移動させる。そして、 /doinst.sh を実行する。

# cd /
# sh doinst.sh
#

5) /tmp/java/etc/profile.d/jdk.sh ファイルの内容を /etc/profile.local の末尾に書き加えます。

export JAVA_HOME=/usr/lib/java
export MANPATH="${MANPATH}:${JAVA_HOME}/man"
export PATH="${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin"




もし、ブラウザにjava-pluginをインストールしたいなら、このサイトの説明を読め。
http://plugindoc.mozdev.org/faqs/java.html∞

2009年4月15日水曜日

'テスト用の「人名」をランダムに生成するプログラム'があったらいいな

テスト用の「人名」をランダムに生成するプログラム
 があればいいな・・・
プログラムを検証するために、できるだけ実環境に近いデータでテストしたいというのは誰もが熱望するところです。もちろん、
実データを使うのが一番手っ取り早いと思われますが、昨今の個人情報ブームのせいで単純な名前すら入手できなくなってしまいました。

プログラムテスト用にいろいろなパターンの人名データを生成してくれるプログラム/サービスがあると便利なんだけど・・・
誰か作って~

・指定の件数の人名をランダムに生成する。
・実際にありそうな名前を生成する
・男性名/女性名、年代別、帰化人、など生成パターンを指定できる
・同姓同名を含めるかどうか
・「渡辺/渡邊」「斉藤/斎藤」など同じ読みで漢字が違うパターン
・「小谷=こたに/おだに」など同じ漢字で読みが違うパターン
・(現実的な)長い名前
・(現実的な)短い名前
・外国人(漢字表記なし/長い/ミドルネーム/逆姓名表記)
・外字を必要とする名前
・「江戸川乱歩/雪舟/ビートたけし」などの芸名、ペンネームへの対応

などなど、ちょっと考えただけでも意外と奥が深いものです。

2009年4月9日木曜日

フォルダのサイズを求めるJavaプログラム

今回はシンプルにJavaのプログラムサンプルです。
指定したディレクトリの論理的なファイルサイズを算出します。
ディレクトリ内にある全てのファイルのファイルサイズを合計します。
サブフォルダーがある場合には、サブフォルダー内のファイルサイズも加算します。
階層がいくら深くなってもどんどん加算します。


コマンドラインコール例

C:\> java  DirSize
2315491 .
C:\>
コマンドラインコール例

# java  DirSize  /home/root
328530000 /home/root
C:\>


DirSize.java
/**
* ディレクトリのサイズを求める
*
*/
public class DirSize {
/**
* @param args the command line arguments
*/
public static void main (String args[]) {
String checkdir;

if (args.length < 1) {
checkdir= ".";
}
else {
checkdir= args[0];
}

try {
System.out.println(DirSize.size(new File(checkdir)) +"\t"+ checkdir);
}
catch(Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}
}

static long size(File file) throws IOException {
long size = 0L;
if (file == null) {
System.out.println("ERR: ディレクトリが見つかりませんでした。");
return size;
}

if (file.isDirectory()) {
File files[] = file.listFiles();
if (files != null) {
for (int i=0; i < files.length; i++) {
size += size(files[i]);
}
}
}
else {
size = file.length();
}
return size;
}
}

2009年4月8日水曜日

ApacheTomcatの設定をCGI確認用に変更する

1.$CATALINA_HOME/conf/server.xmlを変更する
  ・ポート番号を「8080」から「80」へ変更
   94行目: 
  ・

2. コンテンツを入れる
 $CATALINA_HOME/webapps/ROOT/ ディレクトリの中身を全て削除する。

 $CATALINA_HOME/webapps/ROOT/ にコンテンツをアップロードする。

3.httpファイルの確認
 http://localhost/
  ・静的なコンテンツの確認ができます。
  ・デザインや外部リンク/内部リンクの確認
  ・文字化け等の確認


-------------------

CGI部分の確認

まず、「%CATALINA_HOME%\server\lib」フォルダ以下のservlet-cgi.renametojarファイルを、servlet-cgi.jarに名前を変更します。

1.$CATALINA_HOME/conf/web.xmlを変更する

PuppyLinuxにApacheTomcatをインストールする

1.ApacheTomcatをダウンロードする。
 http://tomcat.apache.org/ から[Download] => [Tomcat5.5]を選ぶ。
 ([Tomcat6.x]もありますが、不必要に最新版を求める必要はありません。ここでは使い慣れたTomcat5.5を採用します。)
 
 [5.5.27] => [Binary Distributions] => [Core] => [tar.gz]
をダウンロードします。
  apache-tomcat-5.5.27.tar.gz

2.Tomcatを解凍する。
 '/opt'に解凍することにしました。
Tomcatを解凍
# cd /opt
# tar -xvzf /root/apache-tomcat-5.5.27.tar.gz
/apache-tomcat-5.5.27/......
/apache-tomcat-5.5.27/......
:
:
#
'/opt/apache-tomcat-5.5.27/'ディレクトリが作成されます。

3.環境変数「CATALINA_HOME」を設定する。
環境変数の設定('/root/.bashrc'に追記する)

export CATALINA_HOME=/opt/apache-tomcat-5.5.27

いったん、ターミナルを閉じる。

4.TOMCATを起動する。
Tomcatを起動
# $CATALINA_HOME/bin/startup.sh
Using CATALINA_BASE: /opt/apache-tomcat-5.5.27
Using CATALINA_HOME: /opt/apache-tomcat-5.5.27
Using CATALINA_TMPDIR: /opt/apache-tomcat-5.5.27/temp
Using JRE_HOME: /opt/jdk1.6.0_10
#
5. TOMCATの動作を確認する
Webブラウザ
http://localhost:8080/
かわいくないトラ?ネコ?のマークが表示されれば成功です!

(補足)TOMCATを停止する。
Tomcatを停止
# $CATALINA_HOME/bin/shutdown.sh
Using CATALINA_BASE: /opt/apache-tomcat-5.5.27
Using CATALINA_HOME: /opt/apache-tomcat-5.5.27
Using CATALINA_TMPDIR: /opt/apache-tomcat-5.5.27/temp
Using JRE_HOME: /opt/jdk1.6.0_10
#

2009年4月6日月曜日

PuppyLinuxにsunのJavaSE(JDK/SDK)をインストールする

CGI動作確認環境を作成するために、PuppyにWebサーバーをインストールする。
Webサーバーには「Jakarta-Tomcat」をインストールすることにしました。

”CGIの動作確認に なぜ? 「Apache HTTPD」を使わないのか?”
という疑問をお持ちになる方が居るかと思いますが、説明が長くなるので"いろいろ検討した結果「Tomcat」がベスト!"との結論に達した。とだけ答えておきます。
選択理由に興味がある方はコメントください。

Tomcatの動作にはJavaが必要です。それも、普通のJavaRE(ランタイム)ではなく、JavaSE(開発キット)版が必要になります。こいつをインストールした時点でPuppyは「かわいい子犬」から「獰猛な大型犬」へ変身してしまいます。USBブートだの1CDだのという贅沢はとは決別して「FULLインストール」してください。
以降、「FULLインストール」でのやり方。
  OS: PuppyLinux 4.1.2.1 日本語版 (Full install)
  H/W: Virtual PC (128MB) - Windows XP


* PuppyLinuxにsunの純正JavaSE(JavaDevelopmentKit / Sdk)をインストールする。

1.JavaSEのSTSをダウンロードする。
PuppyのPET置き場から「jdk_netbeans-1.6u10_6.1.sfs」をダウンロードする。
http://www.puppylinux.ca/tpp/bugs/

2.ダウンロードしたファイルをpuppyのファイルマネージャでクリックすると、ファイル内に「root / opt / usr」の3つのディレクトリが見えます。この3つのディレクトリをまるごと「/」ルートディレクトリに上書きコピーします。

3. puppyを再起動させてください。

Javaの起動確認
# java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode)
#
'/opt/jdk1.6.0_10'にインストールされます。
リンク:'/usr/java'は、
'/opt/jdk1.6.0_10/jre'を指し示しています。


環境変数の設定('/root/.bashrc'に追記する)

export JAVA_HOME=/opt/jdk1.6.0_10

2009年4月3日金曜日

Apache2.2 のPETパッケージを作成してみた

PuppyLinux 4.1.2.1用のPetパッケージをソースからコンパイルして作成してみました。


[httpd-2.2.11-i686.pet] - Apache 2.2.11

インストールすると、「/usr/local/apache2」ディレクトリ配下に展開されます。
自動起動はしません。

Apache2の起動
#  /usr/local/apache2/apachectl start
httpd (pid 3916) already running
#
Apache2の停止
#  /usr/local/apache2/apachectl stop
#

Webコンテンツは、「/usr/local/apache2/htdocs」ディレクトリ配下に配置してください。


再度PETパッケージを作成するには(パッケージ作成者のみ)
Petの再作成
#  cd /root/mypet
# tar -c -f httpd-2.2.11-i686.tar httpd-2.2.11-i686/
# gzip httpd-2.2.11-i686.tar
# tgz2pet httpd-2.2.11-i686.tar.gz
#

2009年3月31日火曜日

JavaMailで日本語のメールを送信する

メールを送信するというとても基本的なプログラムのサンプルです。
このプログラムは、10年以上も前に書いたものですが、基幹システムの運用状況をレポートするためのツールとして今でも良く利用されています。

あまりにも基本的な機能のためかどうか知りませんが、メールを送信するサンプルプログラムは意外と少ないようです。
たまにサンプルが在っても、JavaMailの簡単な使い方だったり英語圏のサンプルだったりするわけです。
若いプログラマーや外人プログラマーが日本語のメール送信機能をプログラミングすると、必ずといっていいほど文字化けします。
これは、日本語の文字コードが'JIS'/'shift JIS'/'EUC'/'UniCode' と複数のコード体系があることに起因しているからでしょう。
他の国では、中国なら中国語の文字コード、韓国ならハンブル文字コードというようにたいていは国毎にひとつの文字コードとなっているようで、外国人のプログラマーに日本の文字コードのことを説明してもなかなか理解してもらえません。
外国人のプログラマーはたいてい、ロケール情報を取得して取得した文字コードでエンコードしてメールを送ってしまいます。(上の画像を参照)
たいていは送信者がWindowsXPから送信しますので'ShiftJIS'で送信することになります。
ほとんどのメーラーは「JIS」コードしか扱えませんので、受け取り側は文字化けして読めなくなります。
ところが、最近はメーラーも賢くなってきて、文字コードを自動判別してしまうものがあります。このようなメーラーの出現によってプログラマーのミスが顕在化しなくなってしまいました。
 「テストではちゃんと動きましたよ。お客様がお使いのメーラーのバグじゃないですか」
などとほざく若いプログラマーも出現しはじめて、事態をいっそう混乱させています。

いまどきの日本のプログラマーよ、メールはこうやって送ればいいのだよ!

JapaneseMailSample.java

package jp.co.areaweb.tools.common;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class JapaneseMailSample {
static String to = "yuu.hayashi@gmail.com"; // あて先(To)
static String from = "hayashi.yuu@gmail.com"; // from
static String subject = "Java mail 日本語題名テスト"; // subject
static String content = "漢字本文\nカタカナ\nハンカク"; // content
static String mailHost = "smtp.gmail.com"; // SMTP(mailHost)

public static void main(java.lang.String[] args) {
try {
Transport.send(createMessage());
} catch (Exception e) {}
}

static MimeMessage createMessage() throws Exception {
Properties props = new Properties();
props.put("mail.smtp.host", mailHost);
Session session = Session.getDefaultInstance(props, null);
MimeMessage msg = new MimeMessage(session);

InternetAddress[] toList = new InternetAddress[1];
toList[0] = new InternetAddress(to);

// あて先(To)
msg.setRecipients(Message.RecipientType.TO, toList);

// 発信元(From)
msg.setFrom(new InternetAddress(from));

// 題名(Subject)
msg.setSubject(MimeUtility.encodeText(subject, "iso-2022-jp", "B"));

// 本文(Content)
MimeMultipart naiyou = new MimeMultipart();
msg.setContent(naiyou);
MimeBodyPart honbun = new MimeBodyPart();
honbun.setContent(content, "text/plain; charset=\"iso-2022-jp\"");
naiyou.addBodyPart(honbun);

return msg;
}
}

【ポイント】
題名と本文は、’JIS(ISO-2022-JP)’でエンコードしてから送ること!

実行には「mail-1.4.jar」と「activation-1.1.jar」が必要です。

2009年3月27日金曜日

PuppyLinux を自動起動させる

超初心者ねた

最近、PuppyLinuxにはまっている・・・
WindowsXPを入れると使い物にならないPC(Pen3-450MHz,128MB)にPuppyを入れると見事に現役に復帰した。
WindowsではできなかったネットラジオからのMP3もいとも簡単に実現したうえに、YouTUBEやらDivXまでこの非力なマシンでこなしてしまったのには驚いた。
昨日まで産業廃棄物だったものがいまや、Core2Duoマシンを押しのけてメインホームサーバーとしての地位を確立してしまいました。

さて、PuppyをインストしてHDDにFULLインストールしたところまではいいのだが、電源を入れると(リブートでも同様)GRUBの画面でEnterキーの入力待ちになってしまう。
ホームサーバーとしては、リモートで再起動させることが多いので、自動で起動してほしいのだが・・・

GRUBの設定ファイルをいじればよいのは判っているが、なんせ、GRUBなんぞ5年前にいじって以来そのままだからかな・・・また、GRUBの調査から始めるとなると気が重いな~

ということで、同じような問題に直面した人のためにPuppyLinuxが自動起動するように設定変更する手順を示します。


PuppyLinux をHDDにFULLインストールするとGRUB画面でEnterキー入力待ちになって自動起動しない問題の修正

(1) 「エディタ」を使って /boot/grub/menu.lst ファイルを開く
(2) 9行目の「#timeout 30」の1文字目の「#」を削除します。
  ついでに、30秒は長すぎるので5秒待ちに変更します。


7: #
8: # Start GRUB global section
9: timeout 5



(3) 保存しておわり

2009年2月10日火曜日

GoogleCalenderから予定を取り込んでみる

とあるシステムに「予約」機能を追加したいともくろんでいるのだが、そのシステムでは既に基本的な予約機能は実装されている。「予約時間」と「貸出先ユーザー」と「予約対象物」さえパラメーターで渡してあげればOKなのだ。
しかし、問題はこの3つのパラメータを利用者に入力してもらうためのユーザーインターフェイス部分を作らなければならないのが大変なのだ。理想としては「Googleカレンダー」のようにWebからでも予約でき、タイムチャート表示、説明書無しでも使える直感的なインターフェイス。なのだが・・・
ということで、「Googleカレンダー」に記入した予約データをJavaプログラムで読み込んでみよう!

まずは、「Google Calender API」に関する先人の苦労をパクッてみようと、ググッてみたが日本語のサイトを見つけることが出来ない。しぶしぶ、本家の「Google Calender API」ページを読むことにした。

Google Calendar APIs and Tools - API Developer's Guide: Java


対象読者
この文書は、Googleカレンダーと相互作用することができるGoogleデータAPI Javaクライアントライブラリを使って、クライアントアプリケーションを書きたいプログラマーのために意図されています。

はじめに
クライアントライブラリを設定については、"Getting Started Guide."を見てください。
Javaクライアントライブラリを使うためには,Java1.5実行環境が必要です。
クライアントライブラリをダウンロードすると、「java/lib/gdata-calendar-1.0.jar」と「java/lib/gdataclient-1.0.jar」の二つの jar ファイルが入っています。

1.クライアントライブラリの開発環境をセットアップする
   http://code.google.com/support/bin/answer.py?answer=78455

1.1 依存関係
  • JDK (Java Development Kit) version 1.5+
  • Apache Ant version 1.7+
  • mail.jar in Sun's JavaMail API 1.4+
  • activation.jar in Sun's JavaBeansActivationFramewrok.
    (This is only required for media specific APIs including Document List Data API, Picasa Web Album API, and YouTube Data API.)
  • servlet.jar in Sun's Servlet API version 2.3+.
    (This is required only if executing code samples in 'sample.authsub' or 'sample.gbase.recipe' packages.)
(本家のページにこれらの依存ファイルの入手方法がOSの種類別に解説されています。)

1.2 ’Google Data Client Library’のインストール

  1. このサイトに行け! http://code.google.com/p/gdata-java-client/downloads/list

  2. Click on the featured download.(どれをダウンロードすればよいか良くわからないが、とりあえず「gdata-samples.java-1.29.0.java.zip」をダウンロードしてみた

  3. あんたのPCに解凍しなさい.

  4. Navigate to gdata/java/build/build.properties and open the file.

  5. Edit the external dependencies to point to the locations of the .jar files on your local machine.

注意! バックスラッシュは次の例のように2個書いてね
servlet.jar=C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\lib\\servlet-api.jar

1.3 サンプルを走らせる
「gdata/java/sample」フォルダに実行できるサンプルがあります。「gdata/java/build/build.properties」ファイルにサンプルの実行に必要なパラメータが定義されています
[sample.credentials.username] と [sample.credentials.password]に適当な値を設定しなさい。
サンプルをビルドするのに Ant を利用できますよ。

ちゃんとインストールされたかどうかテストするために、コマンドプロンプトを開いて、「gdata/java」に移動して、下記のコマンドを打ってみな:
ant sample.calendar.run
たぶん [info]やら[warning] などのわけのわからんメッセージが出るけども、最終的に[BUILD SUCCESSFUL]と表示されればOKです。成功メッセージが出なければ、 troubleshooting section 」を参照してね。

もっとインタラクティブなサンプルも試してください:
ant sample.spreadsheet.guidemo.run

どうやって特定のサンプルを動かすかを知りたければ、[gdata/java/build]ディレクトリに行き、そのサンプルについてBuildファイルをチェックしてください。
samples runセクションを捜してください。

1.4 自作アプリを作る
次の問題はどうすれば自作アプリケーションを作れるかです。カレンダーサービスを利用した "Hello, World!" みたいなプログラムを通じて基本的な機能を見てみましょう。
More detailed information can be found in the Java Client Library's developer guide, as well as the individual product developer guides.

「CalendarTest.java」というファイルを作りなさい。以下のimport文から始めてください。
import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import com.google.gdata.data.acl.*;
import com.google.gdata.data.calendar.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;

import java.net.*;
import java.io.*;

import sample.util.*;


プログラムはこれです。
public class CalendarTest {

public static void main(String[] args) throws Exception {
CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
myService.setUserCredentials("root@gmail.com", "fortytwo");

URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

System.out.println("Your calendars:");
System.out.println();

for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEntry entry = resultFeed.getEntries().get(i);
System.out.println("\t" + entry.getTitle().getPlainText());
}
}

}


この小さなプログラムは、あなたのカレンダーにあるすべての「予定」のタイトルを表示します。
これは本物の "Hello, World!" よりもちょっと長いけれど、冗談抜きにとてもシンプルです。

最初の2、3行はサービスオブジェクトを作成し、ユーザー認証をしています。
CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
myService.setUserCredentials("root@gmail.com", "fortytwo");

次に、Googleカレンダー・リソースへのURLを設定します。この例では、認証を許可されたすべてのカレンダーのリストを示しています。
URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");

次の行では、指定されたURLへ実際にGETコマンドを実行し、返信された結果はオブジェクトに格納されます。
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

下記のループで、カレンダーのタイトルが表示されます。
タイトルは TextConstruct として表現されます。従って、 プレーンテキストを得るためには特別なファンクションコールが必要です。
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEntry entry = resultFeed.getEntries().get(i);
System.out.println("\t" + entry.getTitle().getPlainText());
}

この例はちょっと基本的すぎましたね — もうちょっと実際的な例をやってみましょう。
以下では、オブジェクトの作成と追加の例を示しています。要するに、カレンダーに「新しい予定」を追加する例です。
URL postURL = new URL("http://www.google.com/calendar/feeds/gdata.ops.demo@gmail.com/private/full");
CalendarEventEntry myEvent = new CalendarEventEntry();

//Set the title and description
myEvent.setTitle(new PlainTextConstruct("Pi Day Party"));
myEvent.setContent(new PlainTextConstruct("I am throwing a Pi Day Party!"));

//Create DateTime events and create a When object to hold them, then add
//the When event to the event
DateTime startTime = DateTime.parseDateTime("2007-03-14T15:00:00-08:00");
DateTime endTime = DateTime.parseDateTime("2007-03-14T17:00:00-08:00");
When eventTimes = new When();
eventTimes.setStartTime(startTime);
eventTimes.setEndTime(endTime);
myEvent.addTime(eventTimes);

// POST the request and receive the response:
CalendarEventEntry insertedEntry = myService.insert(postURL, myEvent);

この例では、問い合わせを行います。
//Create a new query object and set the parameters
Query myQuery = new Query(feedURL);
myQuery.setFullTextQuery("Pi");

//Send the request with the built query URL
CalendarEventFeed myResultsFeed = myService.query(myQuery, CalendarEventFeed.class);

//Take the first match and print the title
if (myResultsFeed.getEntries().size() > 0) {
CalendarEventEntry firstMatchEntry = new CalendarEventEntry();
myResultsFeed.getEntries().get(0);
System.out.println(firstMatchEntry.getTitle().getPlainText());
}

While debugging, another useful operation is dumping out the raw XML. There's a handy utility that you can use to do this in the library. Make sure samples.util.* is imported. Then, dump the feed or entry.
CommonUtils.dump(resultFeed, System.out);

For even deeper debugging tools, check out this article about how to turn on logging from within the client library.

This should give you a feel for what building apps using the client library is like. For more detailed information, see the developer guides.





2009年1月30日金曜日

'PaSoRi'を使用して、FeliCaカード内の'IDm'を読み取る

このプログラムは、SONY製の PaSoRi を使用して、FeliCaカード内の'IDm'を読み取るプログラムです。(PMmも読み取ります。)



 近年、FeliCaカードが普及するに従って(SUICA,PASMO,Edyなどなど)FeliCaカードを利用した事務機器が増えてきました。鍵管理BOX/ロッカー/キャビネット/コピー機/入退室管理システム などなど。
 どの機器も既に使用しているFeliCaカードを機器に登録するだけで使えるようになると謳っているのですが、オフィスのマネージャ(管理)からすると勝手に登録されてはせっかくの認証機能の意味がありません。当然これらの登録操作はマネージャが行うのですが、登録しなければならないカードの数が多いと管理するのが大変ですし、カード対応の事務機器もだんだん増えてきて機器毎にいちいちカード登録をしなければならないのでマネージャの管理業務は増大するばかりです。
 そこで、ちょっと気の利いた事務機器ではカードをかざして登録する代わりにカードコードが登録されたCSVファイルを取り込んでカード登録の手間を省いてくれるものがあります。しかし、このCSVに”記入しなければならないカードコードがわからない!”というのが新たな悩みではないでしょうか?
 このプログラムを使えば、悩みも解決です。ほとんどの事務機器ではFeliCaカード内部に記録されている「IDm」と呼ばれるコードをカード識別コード(IDコード)として利用しています。IDmは非常に安価(約2600円)なリーダー「PaSoRi」でも読み取ることが出来ます。

なぜこのプログラムが必要なの?
残念なことに「PaSoRi」に付属するソフトウェアでは「IDm」を見ることが出来ないのです。このプログラムを使えば「IDm」を確認することが出来ます。

このプログラムを作成するに当たり [亜細亜大学であがたが行う授業に関するサイトです。]を参照させていただきました。


[PaSoRiReader.jar] - コンパイル済み実行モジュール

[Felica.java] - Javaプログラムソースファイル

[FelicaIdReader.java] - Javaプログラムソースファイル

[build.xml] - antビルドファイル(おまけ)


【動作チェック環境】

  • OS: Windows XP sp3 / Windows Vista

  • リーダー: SONY PaSoRi RC-S330

  • JRE: JavaRE 1.6

* Windows以外では動作しません。
* Java実行環境が必要です。JRE1.5以降


【必須ライブラリ】

  • 'felicalib.dll'
    http://felicalib.tmurakam.org/
    felicalib は、USB接続の FeliCa(フェリカ) リーダ PaSoRi(パソリ) を使って、FeliCa にアクセスするためのライブラリです。Suica, Edy, nanaco などの電子マネーへのアクセスなどに使用できます。
    フリーソフト (BSD ライセンス)

  • 'PaSoRi'の接続と'FeliCaポートソフトウェア'のインストール
    http://www.sony.co.jp/Products/felica/pcrw/

  • 'JNA.jar'ファイル
    https://jna.dev.java.net/
    Java Native Access



【インストールと起動方法】
  1. PaSoRiを接続して、'FeliCaポートソフトウェア'をインストールする。
  2. 適当なディレクトリを作成して、下記の3ファイルを置く。
    • PaSoRiReader.jar
         本プログラム本体
    • jna.jar
         Java Native Access
    • felicalib.dll
         felicalib
  3. 'PaSoRiReader.jar'をダブルクリックすると起動します。


【制限事項】
  • お財布ケータイのFeliCaは読めません。
  • 'FeliCaポートソフトウェア'がインストールされていても、「PaSoRi」が接続されていなければエラーになります。