インテル Celeron G540 2.50GHz 2M LGA1155 SandyBridge BX80623G540

新品価格
¥3,909から
(2012/11/16 11:06時点)


インテル Celeron G530 2.40GHz 2M LGA1155 SandyBridge BX80623G530

新品価格
¥4,300から
(2012/11/16 11:13時点)


インテル Atom Onboardマザーボード BOXDN2800MT 【Mini-ITX】

新品価格
¥8,770から
(2012/11/16 11:18時点)


インテル Atom Onboardマザーボード BOXD2700DC 【Mini-ITX】

新品価格
¥6,807から
(2012/11/16 11:19時点)


インテル Atom Onboardマザーボード BOXD2500HN 【Mini-ITX】

新品価格
¥5,678から
(2012/11/16 11:20時点)


ECS Mini-ITXマザーボード Atom D2700搭載 CDC-I 日本正規代理店品 (MB1848) CDC-I

新品価格
¥6,916から
(2012/11/16 11:24時点)

ASRock H61 Micro-ATX SATA3 USB3 HDMI DVI H61M/U3S3

新品価格
¥5,270から
(2012/11/16 11:33時点)


ASRock Intel H61チップセット搭載 LGA1155対応microATXマザーボード H61M-HVS

新品価格
¥3,958から
(2012/11/16 11:34時点)


GIGABYTE microATX Intel H61 GA-H61M-DS2 REV2.X

新品価格
¥3,944から
(2012/11/16 11:36時点)


ASRock マザーボード H61 Mini-ITX H61M-ITX

新品価格
¥6,587から
(2012/11/16 11:37時点)


ANTEC デザインと冷却性に優れた小型Mini-ITXケース ISK-100

新品価格
¥7,459から
(2012/11/16 11:38時点)


GIGABYTE intel H61 micro-ATX LGA1155 GA-H61M-DS2H

新品価格
¥4,480から
(2012/11/16 11:39時点)


RSSリーダーの解析(2011年7月19日)

参考ここのRSSリーダーを解析します(笑)

管理画面の変更

open(IN,"<$file");←読み込み専用でファイルを開きます。
eval{flock(IN, 2);};←書込み宣言ロック。(flock)異常終了を避ける。(eval)
@main = ;←配列に格納する。
close(IN);←閉じる。

chomp($main[0]);←行末の改行コードを削除する。
$iocl="c";$iocl=$iocl ."a";$iocl=$iocl ."n";$hawc=$iocl ."-";$njgm=$hawc ."c";$njgm=$njgm ."g";$njgm=$njgm ."i";$bgfd="<" ."!" ."-- "; $bgfd=$bgfd .$njgm ." --" .">";←「<--can-cgi-->」と入れている。著作権的なアレ?(笑)

if($ENV{'QUERY_STRING'} eq "check"){print "Content-type: text/html\n\n"; print $bgfd; exit;}←QUERY_STRINGがcheckだったら「<--can-cgi-->」と表示する。

if($log_t <= $time){&make;}←設定時間が経過していたらRSSを読み込みログを表示する。
else{&print;}←経過していなかったらログを表示する。

sub make{←RSSを読み込むルーチン
foreach $xxx (@url) {←読み込むURLの数分ループする。
$feed = "";←初期設定

eval{←エラー回避
local $SIG{ALRM} = sub {die "timeout"};←タイムアウト処理(SIGは強制中断処理で処理内容はtimeout内に指定可能。ここでは指定されていない。)
alarm 3;←タイムアウトまでの時間
$feed = XML::FeedPP->new($xxx);←タイムアウトまでにRSSを読み込む。
};
alarm 0;アラームの初期化?
if ($@) {next;}←空出なければ続行。

@list = $feed->get_item();←アイテムを格納。

foreach $item (@list) {←アイテムの回数分ループする。
my $site_t = $feed->title;←タイトル格納。
my $site_l = $feed->link;←リンク格納。

my $title = $item->title;←タイトル格納。
my $link = $item->link;←リンク格納。
my $des = $item->description;←記事格納。
my $tix = $item->pubDate;←日付格納。
$tix = str2time($tix);←時間変換

&Jcode::convert(\$site_t, "sjis", "utf8");←sjis変換。
&Jcode::convert(\$site_l, "sjis", "utf8");←sjis変換。

&Jcode::convert(\$title, "sjis", "utf8");←sjis変換。
&Jcode::convert(\$link, "sjis", "utf8");←sjis変換。
&Jcode::convert(\$des, "sjis", "utf8");←sjis変換。
&Jcode::convert(\$tix, "sjis", "utf8");←sjis変換。

&tag($site_t);←HTML表示用にタグ変換(
追加等)

&tag($site_l);←HTML表示用にタグ変換(
追加等)


&tag($title);←HTML表示用にタグ変換(
追加等)

&tag($link);←HTML表示用にタグ変換(
追加等)

&tag($des);←HTML表示用にタグ変換(
追加等)

&tag($tix);←HTML表示用にタグ変換(
追加等)


unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n";}←変数inpに<>をはさんで格納。
}

$xx = @inp;←inpの内容を格納(最初から$xxに格納でもイケる?)
if(0 < $xx){←空でなければ実行。
@sortinp = sort { (split(/<>/,$b))[0] <=> (split(/<>/,$a))[0] } @inp;←スプリットした先頭の数値逆順でソート。
if ($max ne "0"){splice @sortinp, $max;}←MAXを超える記事を削除
unshift @sortinp, "$time\n";←先頭に現在時刻追加。

open(OUT,"+< $file");←読み書き用にファイルオープン。
eval{flock(OUT, 2);};ファイルロック。
eval{truncate(OUT, 0);};←ファイルサイズを0にする。(空ファイルとする)
seek(OUT, 0, 0);←ファイルを途中から読込む。(オフセット0、先頭から)とセット。
print OUT @sortinp;←ファイル書込み実行。
eval{flock(OUT, 8);};←ファイルロック。
close(OUT);←閉じる。
}

&print;←HTML表示制御
}


sub print {←HTML表示制御
open(IN,"<$file");←ファイルオープン。
eval{flock(IN, 2);};←ファイルロック。
@log = ;←配列に格納。
close(IN);←閉じる

shift(@log);←先頭を取り出す。(しかし格納先の指定が無いので作動していない?)

print "Content-type: text/html; charset=Shift_JIS\n\n";
print "\n";
print "\n";
print "\n";
print "\n";
print "RSS\n";
print "\n";
print "\n";
print "\n";
print "\n";

foreach $data (@log) { ←logの数の回数ループする。
chomp $data;←行末の改行コードを削除する。
$next = "0";←初期化

my ($timex,$titlex,$linkx,$kijix,$s_title,$s_link) = split(/<>/, $data); ←<>でスプリットしてそれぞれの変数に格納。

foreach $tmpx1 (@dels_tit){chomp $tmpx1; if($s_title =~ /$tmpx1/i){$next="1"; last;}}←NGワード一致したら終了。
if ($next eq "1"){next;}←一致してたら先頭に戻る。

foreach $tmpx1 (@dels_lin){chomp $tmpx1; if($s_link =~ /$tmpx1/i){$next="1"; last;}}←NGワード一致したら終了。
if ($next eq "1"){next;}←一致してたら先頭に戻る。

foreach $tmpx1 (@delkiji){chomp $tmpx1; if($kijix =~ /$tmpx1/i){$next="1"; last;}}←NGワード一致したら終了。
if ($next eq "1"){next;}←一致してたら先頭に戻る。

foreach $tmpx1 (@deltit){chomp $tmpx1; if($titlex =~ /$tmpx1/i){$next="1"; last;}}←NGワード一致したら終了。
if ($next eq "1"){next;}←一致してたら先頭に戻る。

foreach $tmpx1 (@dellin){chomp $tmpx1; if($linkx =~ /$tmpx1/i){$next="1"; last;}}←NGワード一致したら終了。
if ($next eq "1"){next;}←一致してたら先頭に戻る。

if ($site_nagasa ne "0" && length($s_title) > $site_nagasa) {←文字数が指定より大きい場合の処理。(...を付ける。)
@t_x1 = Jcode->new($s_title)->jfold($site_nagasa);
$s_title = $t_x1[0];
&Jcode::convert(\$s_title, "sjis");
$s_title = "$s_title...";
}

if ($title_nagasa ne "0" && length($titlex) > $title_nagasa) {←文字数が指定より大きい場合の処理。(...を付ける。)
@t_x2 = Jcode->new($titlex)->jfold($title_nagasa);
$titlex = $t_x2[0];
&Jcode::convert(\$titlex, "sjis");
$titlex = "$titlex...";
}

if ($kiji_nagasa ne "0" && length($kijix) > $kiji_nagasa) {←文字数が指定より大きい場合の処理。(...を付ける。)
@t_x3 = Jcode->new($kijix)->jfold($kiji_nagasa);
$kijix = $t_x3[0];
&Jcode::convert(\$kijix, "sjis");
$kijix = "$kijix...";
}

($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime($timex);←時間変換。
@wdays = ('日','月','火','水','木','金','土');←数値⇒曜日に変換。
$year = $year + 1900;←2000を100とする変数⇒西暦に変換。
$year = substr($year,2,2);←下2桁とする。
my $timex_sp = sprintf("%02d/%02d/%02d(%s) %02d:%02d",$year,$mon+1,$mday,$wdays[$wno],$hour,$min);←時刻表示。

my $txp = $timex + $new_xp;←"new!!"マークをつけるために現在時刻に設定値(初期値は24*3600)を足す。

if ($new ne "0" && $time <= $txp) {←時間経過していた場合。



#========================= 新着記事にNewマークをつける場合の表示 ============================================
print < $timex_sp <\a href="$linkx" target="_blank">$titlex<\/a> <\span class="new">New!<\/span><\br>
EOM
#============================= つける場合の表示ここまで =====================================================
#
}
else {
#
#========================= 新着記事にNewマークをつけない場合の表示 ===========================================
print < $timex_sp <\a href="$linkx" target="_blank">$titlex<\/a><\br>
EOM
#============================= つけない場合の表示ここまで ====================================================
#



}
}

print "<\/body><\/html>\n";
exit;}













Copyright (C) Template002 All Rights Reserved. The template making ホームページ作成Hac Web Design.

 

カウンター by  HomePage Counter

 

inserted by FC2 system