Web�T�C�g���g���b�L���O����ȒP�ȃX�N���v�g �F Leverage OSS
�R���s���[�^�ɔC�������Ƃ̓R���s���[�^�ɔC���Ă��܂��I�@����́ARSS�t�B�[�h�Ȃǂ���Ă��Ȃ��T�C�g�������Ԃ��Ȃ��V�F���X�N���v�g����邱�Ƃɂ���B
» 2007�N06��20�� 00��22�� ���J
[Leslie-P.-Polzer�COpen Tech Press ]
�@������Web�T�C�g�ɂ̓R���e���c���X�V���ꂽ���Ƃ�m�点�Ă����RSS�t�B�[�h��j���[�X���^�[�̍w�Nj@�\�����邪�A�c�O�Ȃ���A�ˑR�Ƃ��Ă��̋@�\�������Ȃ�Web�T�C�g�������Ȑ��ɂ̂ڂ�B��������Web�T�C�g�̍X�V�́A�ǂ̂悤�ɂ��Ēm��悢�̂��낤���B�����ō���́A���̃^�X�N�����������Ă����V�F���X�N���v�g����邱�Ƃɂ���B
�@�Ƃ����������Ƃ����̂͑��l�C���ɂ������Ȃ���̂ŁA�܂��́A���̖��ɂ��łɎ��g�݂l�����Ȃ����ǂ����T���Ă݂悤�BGoogle�����Œ��ׂ��Ƃ���A����ł��鐔���Ȃ��c�[���͂��ׂ�Microsoft Windows�p�ł���A�唼��Windows�p�v���O�����Ɠ��l�A�����ł͂Ȃ����R�ɗ��p�ł�����̂ł��Ȃ����Ƃ����������B
�@Linux�p�Ƃ��Ă�GPL���C�Z���X��WebMonX �����邪�A����͑�ʂ̃N���b�N���K�v�Ń|�b�v�A�b�v��T�E���h�Œʒm���s����GUI�c�[���ł���B��������GUI�c�[�����D�݂Ȃ�A���̖����Ȃ��B�����̃j�[�Y�ɍ����������̃\�����[�V���������������킯���B���������łȂ��l�̂��߂ɁA���̂悤��KISS �iKeep It Simple, Stupid�j������Ȍ��ȃX�N���v�g�������Ă݂悤�B
�T�ݐ[���F�X�V�̂��тɃ|�b�v�A�b�v���b�Z�[�W��\������Ȃǂ͂����Ă̂ق��B�X�V�ʒm�͒��J�Ƀ��[���ōs��
�R���p�N�g���F�킸�����s�̃R�[�h�Ŏ���
���W���[�������F�L������ł��ď\���Ƀe�X�g���ꂽ�R���|�[�l���g�𗘗p
�X�}�[�g���F�X�V�����m���ꂽ�Ƃ��ɗ~�����͍̂X�V��������
�@�����ł́A�y�[�W�������_�����O�����`�ŕ\������̂Ƀe�L�X�g�u���E�U�i�Ⴆ�Aw3m�j���g�p����B�������AHTML��HTTP�v���̉��������̂܂ܕ\�����Ă��\��Ȃ��̂����A����ł͂�͂茩�Â炢���낤�B�܂��A�y�[�W�̃X�i�b�v�V���b�g��ۑ�����t�@�C���������邽�߂ɁAmd5sum��sha1sum�̂悤�ȃn�b�V���v���O�����i�ǂ����GNU��Coreutils �p�b�P�[�W�ɓ����Ă���j���g�p����B����ɁA�������@�\����diff�ƁAmail�R�}���h�̎������K�v�ɂȂ�B��҂ɂ��ẮA���[�J����MTA�ɗp�ӂ���Ă���͂��ł���B���̂ق��Awc��touch�ȂǁA�ǂ�ȃV�X�e���ɂ��C���X�g�[������Ă���͂��̊�{�I�ȃ��[�e�B���e�B���g�p����B
�@�K�v�Ȃ��̂����������A�ȉ��Ɏ����V�F���X�N���v�g���g���Ė{��̃g���b�L���O�i�ǐՁj�^�X�N�����s���邱�Ƃ��ł���B���̃X�N���v�g�́Alist.txt�t�@�C�����X�L��������1�s����URL��ǂݎ���Ă����B�eURL�̌��݂̃R���e���c���擾���A�O�ɕۑ����Ă��������̂Ɣ�r���āA�ύX��������̓��e��RECIP�ϐ��Ŏw�肳��Ă��郁�[���A�h���X�ɑ��M����A�Ƃ������̂��B
#!/bin/sh
# webtrack.sh
RECIP=user@host # where notifications get sent
DUMPCMD="w3m -dump" # text browser invocation
for url in $�icat list.txt�j; do
md5=$�iecho "$url" | md5sum | cut -d\ -f 1�j
touch $md5.txt
$DUMPCMD "$url" > tmp.txt
if diff $md5.txt tmp.txt >/dev/null; then
: #echo no changes
else
: #echo "changes: "
diff -Napu $md5.txt tmp.txt > diff.txt
mv tmp.txt $md5.txt
mail -s "Changes in $url found." "$RECIP" <
Changes are below.
$�icat diff.txt�j
eof
fi
done
�@��́Alist.txt��URL��1��1�s�̌`���ŋL�q���A�X�N���v�g�����s�`���ɂ��āichmod 755 webtrack.sh�����s�j�Acronjob��ݒ�icrontab�t�@�C����0 8 * * * /path/to/webtrack.sh�̂悤�ȍs��lj��j���邾���ł���B���̂悤��cronjob��ݒ肵�Ă����Alist.txt�ɋL����Web�T�C�g��8���Ƀ`�F�b�N���Ă����B���̍s�̈Ӗ���������Ȃ���Acrontab�i1�j��man�y�[�W���Q�Ƃ��Ăق����B
�@list.txt�ɐV����URL��lj����Ă����X�N���v�g�������Ă��悢���낤�B���[�J���̃��X�g�ł���Aecho�ڎg��������URL�̒lj����ł���B�����[�g�̃��X�g�̏ꍇ�́Assh�o�R��echo�������[�g�Ŏ��s����悢�B
#!/bin/sh
# ww-add.sh
# if the list is local
echo '$1' >> /path/to/list.txt
# if the list is remote
ssh user@host "echo '$1' >> /path/to/list.txt"
�n�b�s�[�E�g���b�L���O�I
�@����̂�����Ƃ����o������A�V�F���X�N���v�g�𗘗p����A�������Ƃ����x�����ƂŌJ��Ԃ�������Ƃ������Ɗy�ɂȂ��Ď��Ԃ̐ߖ�ɂ��Ȃ邱�Ƃ��A�e�Ղɂ������肢�����������낤�B
Leslie P. Plozer�́A���X�̍�Ƃ��R���s���[�^�ɔC���邱�ƂɊւ��ĖL�x�Ȍo�������t���[�\�t�g�E�F�A�E�R���T���^���g�����C�^�[�B
�t�@�C���V�X�e�����ƈÍ���������@
�P���ȃt�@�C���P�ʂł̈Í������֗������A��ʂ̃t�@�C����ی삷��K�v������ꍇ�Ȃǂɂ́A�t�@�C���V�X�e���S�̂�f�B�X�N�S�̂��܂邲�ƈÍ������Ă��܂��������֗��Ȃ��Ƃ�����B�����ł͂����������@������Љ�悤�B
Bastille�F���w�ɂ��K�����Z�L�����e�B�]���c�[��
Bastille�̓Z�L�����e�B�̐N�Q���N����̂�҂��Ĕ�������̂ł͂Ȃ��A�V�X�e���̐Ǝ㐫����菜�����Ƃɂ���ăZ�L�����e�B�N�Q�𖢑R�ɉ������B�V�X�e���Z�L�����e�B�����コ���邽�߂̂��̃\�t�g�E�F�A���Љ��B
IRC�̏��S�Ҍ����K�C�h
�t�H�[�����A���[�����O���X�g�AGoogle�����B��������^��̉����ɖ𗧂��̂����A�{���ɂ����ɂł��������m�肽���ꍇ�ɂ�IRC �iInternet Relay Chat�j���K���Ă���B�܂���x���g�������Ƃ��Ȃ��l�́A���Ж{�e��ǂ��IRC�̐��E�ɑ��ݓ���Ăق����B
Copyright © 2010 OSDN Corporation, All Rights Reserved.
';
e_dlv.innerHTML = html;
adRequest({position:dlv_pos,dom:true});
}else if(ad_type === 'gam'){
var html = '
';
e_dlv.innerHTML = html;
refreshGam('InArtSpecialLink');
}else if(ad_type === 'logly'){
var html = '
';
e_dlv.innerHTML = html;
loglySet(g_id);
}else if(ad_type === 'google'){
var html = '
';
e_dlv.innerHTML = html;
googletag.cmd.push(function(){
var slot8 = googletag.defineSlot('/43042345/nlab_artinsert_RT',[[336,280],[300,250],'fluid'],'div-gpt-ad-1551176482959-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
googletag.display('div-gpt-ad-1551176482959-0');
googletag.pubads().refresh([slot8]);
});
}
};
var insert_ok = function(_target,_str){
var clearfix = d.createElement('div');
clearfix.className = 'colBoxClear';
if(ad_float_fix){
e_body.insertBefore(e_dlv,_target);
e_body.insertBefore(clearfix,_target.nextElementSibling);
}else{
e_body.insertBefore(e_dlv,_target);
}
set_dlv();
};
var insert_ng = function(_str){
e_dlv.style.display = 'none';
};
var main = function(){
var e_nodes = e_body.childNodes; // BODY �����q�v�f
var e_tags = []; // BODY �����^�O
var p_num = []; // BODY ���� P �^�O�ʒu
var p_target_num; // �g�}����ʒu
var o_float = {}; // ��荞�ݗv�f
var o_this = {}; // �A�N�e�B�u�^�O
var o_next = {}; // �A�N�e�B�u�^�O�̎��̃^�O
var flag_insert = 0; // �}���t���O
// ��荞�ݗv�f�`�F�b�N
var check_float = function(_e){
var e = 0;
if(_e.id.match(/^col\d{3}(l|r)$/)){
e = _e;
}
return e;
};
// �v�f�� Y ���W�ƍ����̍��v�l
var get_element_y = function(_e){
var ey = 0;
var eh = _e.offsetHeight;
while(_e){
ey += _e.offsetTop;
_e = _e.offsetParent;
}
return ey + eh;
};
var check_ptag = function(_e){
var e = 0;
if(_e.tagName && _e.tagName === 'P'){
e = _e;
}
return e;
};
var try_insert = function(){
p_target_num = Math.floor(p_num.length / 2) - 1;
if(p_target_num >= _maxrange) p_target_num = _maxrange;
if(dis_con) p_target_num = 0;
for(var i = p_num[p_target_num]; i < e_tags.length; i++){
o_this.e = check_ptag(e_tags[i]);
if(o_this.e){
o_next.e = check_ptag(e_tags[i + 1]);
if(o_next.e){
if(!o_float.e || check_float(e_tags[i - 1])){
o_float.e = check_float(e_tags[i - 1]);
o_float.n = i - 1;
}
if(o_float.e && o_float.n < i + 1){
o_float.y = get_element_y(o_float.e);
o_this.y = get_element_y(o_this.e);
set_line(o_float.y,'red');
set_line(o_this.y,'blue');
if(o_float.y < o_this.y){
flag_insert = 1;
insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂���');
break;
}
}else{
flag_insert = 1;
insert_ok(o_next.e,_threshold + ' �p���ȏ��荞�݂Ȃ�');
break;
}
}
}else{
o_float = {};
}
}
if(!flag_insert){
insert_ng('�}���ʒu�Ȃ�');
}
};
// �S�q�v�f����^�O�̂ݔz��ɓ����
for(var i = 0; i < e_nodes.length; i++){
if(e_nodes[i].tagName){
e_tags.push(e_nodes[i]);
}
}
// �S�^�O���� P �^�O�ʒu��z��ɓ����
for(var i = 0; i < e_tags.length; i++){
if(e_tags[i].tagName === 'P') p_num.push(i);
// �ŏ��̉�荞�ݗv�f���i�[
if(!o_float.e){
o_float.e = check_float(e_tags[i]);
o_float.y = get_element_y(o_float.e);
o_float.n = i;
}
}
if(p_num.length >= _threshold){
try_insert();
}else{
insert_ng('P �^�O ' + _threshold + ' �ȉ�');
}
};
if(e_body){
main();
}else{
insert_ng('�L���{���Ȃ�');
}
})(document,4,5);