10月 03

Java Path Download
をダウンロードして展開してください。

展開したフォルダの中のset.batを実行してください。
Java Development Kitのバージョンと
Java Development Kitのインストールされたフォルダ
現在の環境変数と
設定後の環境変数が表示されるので
[ OK ]を選択してください。

になったら完了です。

※この作業後、必ず再起動もしくは、ログアウトしてください。

Tagged with:
9月 22

最近Twitterを始めました。

利用目的は2つあって、一つはMixiのように利用する
http://twitter.com/fedoran
とVPNの更新向けに
http://twitter.com/fedoranet
を用意しました。

で、偶然Net::Twitterを見つけたので、
POSTまたはGETしたデータを垂れ流しするスプリクトを作り、

#!/usr/bin/perl
use Net::Twitter;
use Jcode;

# 環境変数取得
if ($ENV{'REQUEST_METHOD'} eq "POST"){
	read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
	$query = $ENV{'QUERY_STRING'};
}

# デコード
@args = split(/&/, $query);
foreach $i (@args) {
	($name, $val) = split(/=/, $i);
	$val =~ tr/+/ /;
	$val =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack('C', hex($1))/eg;
	$cgi{$name} = $val;
}

$user = $cgi{'user'};
$pass = '*******';
$msg = Jcode::convert($cgi{'message'}, 'utf8');
my $tw = Net::Twitter -> new (username => $user, password => $pass);
$tw->update($msg);
print "Content-type: text/html<html><body>";
print "message:".$msg."";
print "</body></html>";

サーバ側の準備完了。
で、今度はクライアントサイドで、
Qtを使って、Twitter Message Senderをガリガリ。。。。
で、今完成

とりあえず、更新関係はこれで書き込みます

Tagged with:
5月 15

Wiresharkでダンプしたパケット(cap,pcap)ファイルをPerlを使って解析するツール

事前にNet::Pcap(要libpcap),NetPacketをCpanからインストールしておいてください。

#/usr/bin/perl --
# 環境に合わせてperlのパスをあわせてください。
use strict;                         
use Net::Pcap;                      # .capおよび.pcapを開くためのライブラリ
use NetPacket::Ethernet qw(:ALL);   # Ethernet(データリンク層)からの解析
use NetPacket::IP;                  # IPフレームからの解析
use NetPacket::ICMP;        # ICMPフレームからの解析
use NetPacket::TCP;         # TCPフレームからの解析
use NetPacket::UDP;           # UDPフレームからの解析

my $input_file;   # ファイルが格納される変数
my $pcap;         # Net::Pcapのオブジェクト格納関数
my %header;       # ヘッダを格納するハッシュ変数
my $packet;       # パケットを格納する変数
my $err;          # エラーオブジェクト
my $pkt_cnt = 0;  # パケットカウント

$input_file = $ARGV[0]; #引数からファイルパスを格納
if(! -f $input_file){                      #input_fileが存在するか確認
   print "Can not exist ".$input_file."
";
   exit(1);
}

$pcap = Net::Pcap::open_offline($input_file, $err) or die "Can not open ".$input_file." using Pcap";
#open_onlineを利用した場合,イーサネットのデバイスを指定するとイーサネットから開きます。

while($packet = Net::Pcap::next($pcap, \%header)){ #pcapのライブラリから1行づつ読み込み
       &parse_packet($packet,\%header);             #parse_packet関数を利用
}
Net::Pcap::close($pcap);  #pcapオブジェを閉じる
# Main部分はここまで。
sub parse_packet {
   my($packet, $header) = @_;   #引数から格納
   $eth_obj = NetPacket::Ethernet->decode($packet); #パケットからデータリンク層にデコード

  $ip_obj = NetPacket::IP->decode($eth_obj->{data}); #データリンク層からIPフレームにデコード
   $src_ip = $ip_obj->{src_ip};
   $dest_ip = $ip_obj->{dest_ip};

   $time = $header->{tv_sec};
   $len = $header->{len};

   $proto = $ip_obj->{proto};

   print "From :".$src_ip." To:".$dest_ip."
";
   print $time."
";
   print "Length :".$len;

   if($proto == 1){ 
      #ICMPフレーム;
      $icmp_obj = NetPacket::ICMP->decode($ip_obj->{data});
   }
   elsif($proto == 4){ 
      #IPフレーム
   }
   elsif($proto == 6){
   #TCPフレーム
      $tcp_obj   = NetPacket::TCP->decode($ip_obj->{data});
      $src_port  = $tcp_obj->{src_port};
      $dest_port = $tcp_obj->{dest_port};
      $flags     = $tcp_obj->{flags};
   }
   elsif($proto == 17){
      #UDPフレーム
      $udp_obj   = NetPacket::UDP->decode($ip_obj->{data});
      $src_port  = $udp_obj->{src_port};
      $dest_port = $udp_obj->{dest_port};
      $flags     = $udp_obj->{flags};
   }
   else{
      print "Proto: ".$ip_obj->{proto}."
";
   }
}

詳細は
http://search.cpan.org/~saper/Net-Pcap-0.16/Pcap.pm
http://search.cpan.org/~yanick/NetPacket-0.41.1/

Tagged with:
4月 20

C言語の表示(出力)がprintf()なら
もちろん入力のscanf()が存在する

これはキーボードの入力キーを変数に代入することができる
ちなみにscanf()は改行されるまでを一時的に記憶して変数に代入するので
&を使う

ではnumという数字の変数を宣言してください
そして使う人(ユーザー)がわかりやすいように

printf("数字を入力してください:"); 

などと入れてあげよう

この後キーボードから値を得るのに
scanf()を使うと

scanf("%d",&num); 

になる
ここでもprintf()と同じように
scanf(&num);
とするとエラーが出るのだが
理由は同じで&numはただの変数である
なので%dを使って数字を得てnumに入れる必要がある

一番いい覚え方としては
oooof()とfがついたらフォーマット文(ここでは%d)と覚えよう!

scanf(“%d”,&num);
としてうけとったら
numに代入されてあるので
表示をしてみよう

Tagged with:
4月 20

プログラミングなんで計算ができて当たり前
変数を数字であると宣言し(ここでは変数名をnumにして宣言する)
変数に10を代入する
このあと四則演算を一通り表示させたいので
変数を4つ数字であると宣言する(ここではtasu,hiku,kakeru,waruにして宣言する)

今変数を宣言したのは全部で5つになる
ここでは num,tasu,kakeru,waru
これを数字で宣言するのだから

int num;
int tasu;
int hiku;
int kakeru;
int waru;

と書いているのではないだろうか?
別に問題はないのだが
同じ数字であるのをいちいち書くのは面倒だという方もいるのではないだろうか
C言語ではいっぺんに宣言することもできる

int num,tasu,hiku,kakeru,waru;

このように,で区切るってもおなじことなのである

さてnumに10でも代入してみよう
そして表示させるプログラムを作ってください

そこから
numに3を足したもの
numに4を引いたもの
numに6をかけたもの
numに5で割ったもの
を作りましょう

数学では左辺が計算式で右辺が答えだったが
プログラミングでは逆になる

tasu = num + 3; //numに3を足したもの
hiku = num - 4; //numに4を引いたもの
kakeru = num * 6; //numに6をかけたもの
waru = num / 5; //numに5を割ったもの

このときに使った
+ – * / をC言語では四則演算子という

それでは結果を表示させる
このときも
printf(tasu);
などにするとエラーがおきたり
printf(“tasu”);
だとtasuしか表示されません
なぜなら前章に書いてあります

答えをいうと
%dです

printf("%d",tasu);
printf("%d",hiku);
printf("%d",kakeru);
printf("%d",waru);

と4つ書くのだが
これも宣言と一緒で1行で書くこともできる
それが

 printf("%d %d %d %d",tasu,hiku,kakeru,waru);

この場合前から順番に代入されていく
この使用例の一番有名なのは
プログラムで時計を表示させるときに
前のやつより後ろの方を書くことが多い

Tagged with:
4月 20

プログラミングといえば変数つまり数が変わる
これによっていろいろな条件分岐ができるのだ

まず変数には定義が必要である
そのためここでは[数字である]という定義のintを使う

ここでどっかで見たという人も出てくるはず
int main(void){
ここで使われている
これも数字であるという定義をしているのだ
なんでreturn (0);として0を返している

ただなぜ0が表示されないのかというと
返しても受け取るプログラムを書いていないだけのことである

次に変数の名前を決めよう
実は変数の名前でもいくつか例外がある
ただほとんどのほとんど使えるのでそれほど気にしなくてよい

ここではnumという名前の変数を数字であるとして定義してみる
int num;
これで定義はされた。よってこれからはnumは数字の変数に変わる

ただ変数を定義しても中身は空なので値を入れてやる
num = 10;
numという変数の10とい数字を代入した
これは数学とほとんど変わりなく
一次方程式の
x=10;
といっているような感覚です
もしここでx=10;と書いたらエラーが起こるのだが
その理由がわかっていなければもう一度この変数を最初から読んでほしい

最後にprintf()を使って表示してみよう
表示の際気を付けなければいけないことは
受け取りするということを示さなければならない
文字列の中に変数を表示させる場合
文字列にいきなり変数を入れても
C言語の場合はただの文字としか認識しない
そこで
%d
をつかう
これは文字列に数字の変数だけを表示させることができる
先ほどのnumという数字の変数を表示させるには

printf("%d",num);

とすればprintf()はnumという変数から値をとり
%dのところを置換して表示させ

Tagged with:
4月 19

これは後のほうの関数というセクションで出てくるので
簡単に触れておく

returnとは前に戻すとかいう意味があるが
ここでは変数に0つまり何もないということを定義している

Tagged with:
4月 19
定義はされていても
プログラムがどこから始まるか書いていなければはじまらない
そこで
int main(void){

}
と書くのである
intとは数字のintegerに由来するが
とりあえずそのくらいの知識で十分
またvoidとは代入する変数がないということ

この辺はなくても動くが
main(){

}
は忘れてはならない
mainはここから始まります
という意味そしてそれは
{ }で囲まれた部分を動作してくれという意味である

Tagged with:
4月 01

とりあえず 間に合った(AM3:00)

すべてリニューアルしました
ちなみにFedoraXは決してProject X のパクリではありません
ただFedora がこれからどんどんヴァージョンが新しくなっても
変えなくていいように変数としてXを要いただけです

これで2006/04/01もスタート!! 

Tagged with:
preload preload preload