AJAX�����[�g�E���O�E�G�[�W�F���g�Z�@
Ajax�Ńf�o�b�O���悤



�t�B�b�V���{�[��
��؁@�ۍs
2007/3/6

�@�T�[�o���T�[�r�X�E�v���O����

�@ �����[�g�E���O�E�G�[�W�F���g�E�v���O�������瑗���Ă���3�‚̃��b�Z�[�W�����O�Ƃ��ċL�^����JSP�܂���CGI�v���O�����ł��BURI�ŃA�N�Z�X�ł���΂ǂ̂悤�Ȍ���ɂĎ������Ă���肠��܂���B

�@���̎d���̌���ł�Java���J������Ƃ��Ďg�p���邱�Ƃ������̂ŁAJSP��Servlet�Ƃ��Ď������Ă��܂����A����̓����^���T�[�o�ł����p���₷���悤��Perl�ō쐬���܂����B�ȉ��̃\�[�X���Q�l�ɂ��Ă��������B

local %params;

# �G�[�W�F���g��GET���\�b�h�������g�p����̂�POST�͍l�����Ȃ�
# �����[�g���O�G�[�W�F���g���瑗���Ă����O�����‹��ϐ�����擾����B
@params = split('&', $ENV{'QUERY_STRING'});

# ���O����URL�G���R�[�h����Ă���̂Ńf�R�[�h�i�G���R�[�h�O�̏��Ɂj����B
foreach $param (@params) {
    # ���b�Z�[�W����'='���g�p����Ă���ꍇ������̂ŁA�ŏ���'='��':='�ɕϊ�����
    $param =~ s/=/:=/;

    # ':='�ɂăp�����[�^���ƒl�𕪗�����
    ($name, $val) = split(':=', $param);
    $name =~ tr/+/ /;
    $val  =~ tr/+/ /;
    $name =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;
    $val  =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg;

    $params{$name} = $val;
}

# �������[�U�ɂē����g�p���邽�߁A���p���[�U����ʂ��邽�߂�
# ���p�҂̃A�h���X���擾����B
$remote_addr = $ENV{'REMOTE_ADDR'};

�\�[�X4�FRemote Log �T�[�r�X�@�| ����������

# �������[�U�ɂē����g�p���邽�߁A���p���[�U����ʂ��邽�߂�
# ���p�҂̃A�h���X���擾����B
$remote_addr = $ENV{'REMOTE_ADDR'};

#
# ���O�L�^���t���Ԃ��V�X�e������擾����B
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, 
$isdst) = localtime(time);�i�{����1�s�j

# ���O�t�@�C�������쐬����B���t���Ƀt�@�C�����ʂɂȂ�悤����B
$logfilename = sprintf "logfile%4.4d%2.2d%2.2d.log",
($year+1900),($mon+1),$mday;�i�{����1�s�j

# ���O�L�^��������^�C���X�^���v����������B
$logtime = sprintf "%4.4d/%2.2d/%2.2d %2.2d:%2.2d:%2.2d", 
($year+1900),($mon+1),$mday,$hour,$min,$sec;�i�{����1�s�j

# �t�@�C�������݂��Ȃ��ꍇ�͐V�K�ɍ쐬����B
# �t�@�C��������ꍇ�́A�NjL���[�h�ɂăI�[�v������B
open logfile, ">>${logfilename}" or die "Can not open
 logfile\n";�i�{����1�s�j

# �擾�����������Ƀ��O���t�@�C���ɋL�^����B
print logfile "${logtime} C ${remote_addr} ";
print logfile "${params{'module'}} ${params{'func'}} 
\"${params{'message'}}\"\n";�i�{����1�s�j

�@
�\�[�X5�FRemote Log �T�[�r�X�@�| ���O�L�^������

�@�����ł̃|�C���g�́A�����[�g�E���O�E�G�[�W�F���g���瑗���Ă���3�‚̕�����ȊO�ɁA�L�^�������t�⎞���Ƒ��M���A�h���X�Ƃ��Ċ‹��ϐ�REMOTE_ADDR�̒l���ꏏ�ɋL�^���Ă��܂��B

�@���ɑ��M���A�h���X�̋L�^�́A�������[�U�[�������Ɏg�p���邱�Ƃ�����Web�V�X�e���ł́A�������[�U�[�̃��O������t�@�C���ɍ��݂��Ă��܂����Ƃ��ɁAgrep�Ȃǂ̃e�L�X�g���o�c�[���ő��M���A�h���X�l����|����Ɏ����̃��O�𒊏o���邽�߂Ɏg�p���܂��B

# �������[�U�[�ɂē����g�p���邽�߁A���p���[�U�[����ʂ��邽�߂�
# ���p�҂̃A�h���X���擾����B
$remote_addr = $ENV{'REMOTE_ADDR'};


# �擾�����������Ƀ��O���t�@�C���ɋL�^����B
print logfile "${logtime} C ${remote_addr} ";
�@
�\�[�X6�F�T�[�o���T�[�r�X�E�v���O�����̃|�C���g

2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "Start Log"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=0"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=1"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=2"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=3"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=4"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=5"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=6"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=7"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=8"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "ii=9"
2007/01/26 22:07:13 C 192.168.1.10 sample.html startlog() "End Log"
2007/01/26 22:07:13 C 192.168.1.10 ���{�� �g���܂� "�֗��ł�"
�\�[�X7�F���O�Ƃ��ċL�^���ꂽ���e

�@sample.html��startlog()�֐����ɂ�for���ɂ�郋�[�v���񂵂Ă��܂��B���̃��[�v���ł�remotelog()�֐��̌Ăяo�����s���Ă��܂��B���O������Ă��������ƕ�����܂����A���ꎞ���ɍ����Ƀ��[�v���̏��������s����Ă��邱�Ƃ��L�^����Ă��܂��B�܂��A���{��̃��b�Z�[�W�������������Ă��邱�Ƃ��L�^����Ă��܂��B

�@�������@

�@���ۂɊJ���̌���ŗ��p����ꍇ�́A���ꂼ��̃v���W�F�N�g�ŊJ������HTML��JavaScript�Ȃǂ̃t�@�C���ɑg�ݍ���Ŏg�p���邱�ƂɂȂ�܂��B

1�j�ݒ�|�C���g

Perl�ɂĎ������܂����̂� Web�T�[�o��Apache���g���T�C�g��Perl�����p�ł���‹��ł���΂قƂ�ǏC�������ɗ��p���”\���Ǝv���܂��B�����ł́ACGI�̊i�[�t�H���_�Ƃ���/cgi-bin���g�p���Ă��܂����A�قȂ�t�H���_�𗘗p����Ă�����́A���p�‹��ɍ��킹�Ď��̌����C�����ė��p���Ă��������B

 // ���L��JSP�����‹��ɉ����ďC�����Ă�������
 var remoteJsp = "/cgi-bin/remotelog.pl"
�ݒ�|�C���g

�@�ϐ����̖�����Jsp�ɂȂ��Ă���̂́A���i�g�p���Ă���V�X�e���ł�JSP�ł��g�p���Ă��邽�߂ł��B���ɈӖ��������ĕt�����킯�ł͂���܂���B

2�j�������@

�@�f�o�b�O������HTML�܂���JSP�t�@�C���ɁA�����[�g�E���O�E�G�[�W�F���g�@�\��ǂݍ��ސݒ��1�s�lj����܂��B

�@����̃T���v��HTML�ł́A<HTML>�^�O�̂�����ɁA�����[�g�E���O�E�G�[�W�F���g�@�\�𗘗p���邽�߂̃t�@�C����ǂݍ��ދL�q�����Ă��܂��B�f�o�b�O�Ώۃv���O�������痘�p����̂ŁA�������ɓǂݍ��܂��K�v�����邱�Ƃ𒍈ӂ��Ă��������B

�@���p���@

�@�g�p���郁�\�b�h�́A�ȉ��̂悤�Ƀ��O���T�[�o�֏o�͂���1�‚����ł��B

�@remotelog()�֐��ɂ�3�‚̈���������܂����A�f�o�b�O���ɕ֗��ȏ��Ƃ��āA�t�@�C�����A���W���[�����A���b�Z�[�W����3�‚̕�����������Ƃ��ēn���Ă��܂��B�����ł͈����Ƃ��ēn����������g�������Ă��܂����A�����Ƃ��Ă�3�‚̕�������T�[�o�֑��M���Ă��邾���ł��̂ŁA���ꂼ��K���ȕ������n���Ă��������B

�@��������Ajax�ȃf�o�b�N�‹��������Ă݂悤

�@����Љ�܂��������[�g�E���O�E�G�[�W�F���g�Z�@�́A�@�\���V���v���ʼn�ʑ�����v��Ȃ��̂Ŏd�l�ɗ^����e��������܂���B�f�o�b�O�‹��̉��P�⓮�쌟�؋L�^�擾��ړI�Ƃ����Z�@�ł��B�]���ăv���O���}�[��Ajax������֓������Ď����ɂ͍œK���Ǝv���܂��B

�@Ajax�Ƃ����Ă��A�\�[�X�R�[�h������ƈӊO�ƊȒP�Ȃ��Ƃ�������Ǝv���܂��B��������XML��DOM����Ȃǂɔ��W����΁A����܂ł�Web�A�v���P�[�V�����\�z�Ƃ͈�������E�������Ă���ł��傤�B

�@�Ō�ɁA�T���v�����܂ރ\�[�X�R�[�h�ꎮ�������炩��_�E�����[�h���Ă��������B��������p���ăv���W�F�N�g�̊J���‹��̉��P�ɖ𗧂ĂĂ��������B

3/3  

�@INDEX
Ajax�Ńf�o�b�O���悤
  Page1
�������J���̌��ꄠ�[������J���‹������O���c���Ȃ����n��ȃN���C�A���g�J���‹���Ajax�g���Ă��܂����H��Ajax��GUI����Ȃ�
  Page2
�J���‹��̉��P����ՋZ�p������T�v���\���t�@�C��������m�F�p�T���v��HTML�������[�g�E���O�E�G�[�W�F���g�E�v���O����
Page3
�T�[�o���T�[�r�X�E�v���O�������������@�����p���@����������Ajax�ȃf�o�b�N�‹��������Ă݂悤




HTML5 + UX �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

HTML5�{UX �L�������L���O

�{�� ����