ふとiアプリが作りたくなったのでやってみました。
俺はAuだからiアプリ動かないんだけど・・・

開発環境はWindowsでeclipseを使います。
開発言語はJavaです。

まずはiモードのページにいって
http://www.nttdocomo.co.jp/p_s/imode/java/tool_505i.html
から iαppli Development Kit for DoJa 3.0 をダウンロードします。

あとはインストールしましょう。
インストールはカスタム設定で行い、
Eclipse用のプラグインもインストールして下さい。

↓開発画面
050714.png
電車男見ますた。
相当面白かった!
笑いが絶えませんな~
オタクの世界は全くディープなものです。
研究室の人の友人にも関係者がいらっしゃるそうですが、
話を聞いていると「カナリヒキマシタ」
そういう妄想が許されていいものでしょうかねぇ・・・
怖い怖い
Perl/Tkは日本語に対応していないことが判明したので、
Ruby/Tkを勉強することにする。
また同じ様なブラウザを作ってみた。
ソースコードは以下のようになった。

#!/usr/bin/ruby

require 'tk'
require 'socket'

class HttpConnect
def initialize(host,port)
@host = host
@port = port
@sock = TCPSocket.open(@host,@port)
@buffer = ""
end
def sndmsg(msg)
print @sock.write(msg)
end
def rcvmsg
while @sock.gets;
@buffer = @buffer + $_
end
return @buffer
end
def close
@sock.close
end
end

url = TkVariable.new("http://")
TkEntry.new(nil,'width'=>50,'textvariable'=>url).pack
t = TkText.new.pack
TkButton.new(nil,'text'=>'GET','command'=>proc{
/^http:\/\/([^\/]+)\/(.*)/ =~ url.value;
myconnect = HttpConnect.new($1,"http");
myconnect.sndmsg "GET /#{$2} HTTP/1.0\r\n\r\n";
myval = myconnect.rcvmsg;
t.insert('end', myval);
myconnect.close}).pack
Tk.mainloop
今日はPerl/Tkで実用的なアプリを作ってみようということで、
簡易ブラウザ(ソースを表示)を作ってみます。

ソースコードは以下のようになりました。

#!/usr/bin/perl

use Socket;
use Jcode;
use Tk;

$top = MainWindow->new();
$top->title('browser');
$url = "http://";

$top->Entry( -textvariable => \$url )->pack();
$t0 = $top->Scrolled('Text',-scrollbars=>'se',-wrap=>'none')->pack(-expand=>'Exit',-fill=>'both');

sub pushed {
$t0->insert('end', &readbuf($url));
}

$top->Button( -text => 'Get', -command => \&pushed )->pack();

MainLoop();

sub readbuf {

$_[0] =~ /^http:\/\/(.+)\/(.*)$/;
my $host = $1;
my $port = getservbyname('http','tcp');
my $iaddr = inet_aton($host)
or die "Not found\n";
my $sock_addr = pack_sockaddr_in($port,$iaddr);
my $buffer;

socket(SOCKET,PF_INET,SOCK_STREAM,0)
or die "Can't create socket\n";
connect(SOCKET,$sock_addr)
or die "Can't connect\n";
select(SOCKET);
$|=1;
select(STDOUT);

print SOCKET "GET /$2 HTTP/1.0\r\n";
print SOCKET "\r\n";

while(<SOCKET>){
m/^\r\n$/ and last;
}

while(<SOCKET>){
$buffer .= jcode($_)->euc;
}

return $buffer;
}



Perlのソケット通信の流れ(重要)

$port = getservbyname('http','tcp');
$iaddr = inet_aton($host) or die "Not found\n";
$sock_addr = pack_sockaddr_in($port,$iaddr);
socket(SOCKET,PF_INET,SOCK_STREAM,0) or die "Can't create socket\n";
connect(SOCKET,$sock_addr) or die "Can't connect\n";
print SOCKET 文字列

050712.png
↑スクリーンショット

しかしコードを書き終わって致命的なことが発覚!
Perl/Tkが日本語表示に対応してねぇ!
てことで残念ながらPerl/Tkシリーズは終了・・・
早かったネ
Qtシリーズもいつのまにか終わってるし。。。
Perl/Tkを使えばわずか数行でGUIアプリが書けます。
素晴しい時代ですね?
もうLinux使うしかないですネ。
スキルアップのためにしばらく使い込んでみます。

Perl/TkはPerl言語にTkモジュールを組み込んだものです。
非常に簡単なコードでGUIアプリが書けます。
以下のコードをエディタで書いてみましょう。

#!/usr/bin/perl

use Tk;

$top = MainWindow->new();
$button = $top->Button( -text => 'perl/tk' );
$button->pack();

MainLoop();


ファイルに実行権をあたえて下さい。
# chmod +x test1.pl

050711.png
↑こんなボタンが表示されましたか?