したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

プログラムスレッド

1女傑 ◆nDpXSJz8i.:2012/03/04(日) 04:40:34
システム再起動用のプログラムを書いてみた。コンパイル&リン
クテストしてないので、ちゃんと動くかどうか心配だ。

#include <windows.h>
#include <tchar.h>

int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
SYSTEMTIME st;
GetSystemTime(&st);
if(st.wYear != 2012 || st.wMonth != 3 || st.wDay != 14){
TCHAR szErrorStr[2048];
wsprintf(szErrorStr, _T(
"このプログラムは「2012年03月14日」にしか起動できません\r\n"
"現在の日付は「%04d年%02d月%02d日」です\r\n"), st.wYear, st.wMonth, st.wDay);
MessageBox(GetActiveWindow(), szErrorStr, _T("Error"), MB_OK);
return 0;
}
{
HANDLE Mutex = CreateMutex(NULL, false, "Mutex");
if (Mutex == NULL) return 0;
if ( GetLastError() == ERROR_ALREADY_EXISTS){
return 0;
}
{
OSVERSIONINFO osinfo = {0};
osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osinfo);
if(osinfo.dwPlatformId == VER_PLATFORM_WIN32_NT) { //WinNT
HANDLE hToken;
//アクセストークンをオープンする
if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
LUID luid;
if(LookupPrivilegeValue(TEXT(""), SE_SHUTDOWN_NAME, &luid)) {
//SE_SHUTDOWN_NAME 特権を有効にする
TOKEN_PRIVILEGES tokenPrivileges = {0};
tokenPrivileges.PrivilegeCount = 1;
tokenPrivileges.Privileges[0].Luid = luid;
tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if(AdjustTokenPrivileges(hToken, FALSE, &tokenPrivileges, NULL, NULL, NULL)) {
if(GetLastError() == ERROR_SUCCESS) {
ExitWindowsEx(EWX_REBOOT, 0);
}
}
}
CloseHandle(hToken);
}
}
else { //Windows
ExitWindowsEx(EWX_REBOOT, 0);
}
CloseHandle( Mutex);
return 0;
}
}

2女傑 ◆nDpXSJz8i.:2012/03/05(月) 14:32:08 ID:hQMLjY7Y0
BIG-serverさんの携帯固有番号取得のページを参考にして、環境変数を
表示するCGI(Perl)スクリプトを作ってみました。
まだまだ開発段階であり、今のところ一般公開できるのが今回のプロト
タイプ(α版)のみになります。

#! /usr/local/bin/perl

$imode = imodechk();
if ($imode eq 'guid=on') { $refne = $imode;}
else { $refne = referer_name(); }
($i,$user) = split(/=/,$refne);

print "Location: http://xxxxxxx.com/&quot; . "ipcheck.cgi?$refne\n\n";


sub imodechk
{
local $name;

$_ = $ENV{'REMOTE_ADDR'};

if (/210.153.84.0/i) { $name = "guid=on"; }
elsif (/210.136.161.0/i) { $name = "guid=on"; }
elsif (/210.153.86.0/i) { $name = "guid=on"; }
elsif (/124.146.174.0/i) { $name = "guid=on"; }
elsif (/124.146.175.0/i) { $name = "guid=on"; }
elsif (/202.229.176.0/i) { $name = "guid=on"; }
elsif (/210.153.86.0/i) { $name = "guid=on"; }
elsif (/202.229.176.0/i) { $name = "guid=on"; }
elsif (/202.229.177.0/i) { $name = "guid=on"; }
elsif (/202.229.178.0/i) { $name = "guid=on"; }
elsif (/203.138.180.0/i) { $name = "guid=on"; }
elsif (/203.138.181.0/i) { $name = "guid=on"; }
elsif (/203.138.203.0/i) { $name = "guid=on"; }
elsif (/210.153.84.0/i) { $name = "guid=on"; }
elsif (/210.153.86.0/i) { $name = "guid=on"; }
elsif (/124.146.174.0/i) { $name = "guid=on"; }
elsif (/124.146.175.0/i) { $name = "guid=on"; }
elsif (/202.229.176.0/i) { $name = "guid=on"; }
elsif (/202.229.177.0/i) { $name = "guid=on"; }
elsif (/202.229.178.0/i) { $name = "guid=on"; }
elsif (/210.153.87.0/i) { $name = "guid=on"; }
else { $name = ""; }

return $name;
}

sub referer_name
{
local $name;

$_ = $ENV{'HTTP_REFERER'};

if (/yahoo/i) { $name = "0101"; }
elsif (/msn/i) { $name = "0202"; }
elsif (/xxxxx.com/i) { $name = "0000"; }
else { $name = ""; }

return $name;
}

3女傑 ◆nDpXSJz8i.:2012/03/05(月) 14:33:21 ID:hQMLjY7Y0
>>2
の続きです。

#!/usr/bin/perl

$act = $ENV{'QUERY_STRING'};
$act =~ s/\.//g; # 安全対策
$act =~ s/\///g;
$act =~ s/&/&/g;
$act =~ s/"/"/g;
$act =~ s/</</g;
$act =~ s/>/>/g;

$lll = referer_name();
$os = get_os_name();
$addr = $ENV{'REMOTE_ADDR'};
$addr =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.***.$3.***/g;
$host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2);
$host =~ tr/0-9/*/;
$ID = $ENV{'HTTP_X_DCMGUID'};
$ID = $ENV{'HTTP_X_UP_SUBNO'};
my $UA = $ENV{'HTTP_USER_AGENT'};
my $ID = '';
if ($UA =~ /^J-PHONE|^Vodafone|^SoftBank/) {
if ($UA =~ /\/SN([A-Za-z0-9]+)\ /) {
$ID = $1;
}
}
if ($ID eq '') { $ID = "携帯ではない";}
$makerID = "携帯の識別番号 ".$ID;

print "Content-type: text/html\n\n";
print "<html><head>\n";
print '<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">' . "\n";
print "<title>IPcheck</title></head>\n";
print "<body>\n";
print "リモートアドレス $addr<br>\n";
print "OSの名称 $os<br>\n";
print "$makerID<br>\n";
print "アクセス元分析 $lll<br>\n";
print "リモートホスト $host<br>\n";
print "</body></html>\n";

exit;

sub get_os_name
{
local $name;

$_ = $ENV{"HTTP_USER_AGENT"};

if (/Windows/i) { $name = "Windows"; }
elsif (/Mac/i) { $name = "MacOS"; }
elsif (/Linux/i) { $name = "Linux"; }
else { $name = "unknown"; }

return $name;
}

sub referer_name
{
local $name;

$_ = $ENV{'QUERY_STRING'};

if (/guid=on/i) { $name = "DOCOMO携帯"; }
elsif (/0101/i) { $name = "xxxxxx"; }
elsif (/0202/i) { $name = "xxxxxx"; }
elsif (/0000/i) { $name = "私のとこからやな。<br>ありがとー"; }
else { $name = "アクセス元不明"; }

return $name;
}

4女傑 ◆nDpXSJz8i.:2012/03/09(金) 14:37:14 ID:hQMLjY7Y0
#include <windows.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE Mutex = CreateMutex(NULL, false, "Mutex");
if (Mutex == NULL) return 0;
if ( GetLastError() == ERROR_ALREADY_EXISTS){
return 0;
}

{
HINSTANCE hInst = ShellExecute(NULL, "open", "http://www.msn.jp/&quot;, NULL, NULL, SW_SHOWNORMAL);
if(hInst<(HINSTANCE)32)
{
// 32未満の時は起動に失敗
}
{
// SNAPSHOT押下
keybd_event( VK_SNAPSHOT, 0, 0, 0 );
keybd_event( VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0 );

return 0;
}
}
MessageBox(NULL,"ダイアログ表示","ダイアログ",MB_OK);

CloseHandle( Mutex);
return 0;
}

5女傑 ◆nDpXSJz8i.:2012/03/09(金) 14:37:45 ID:hQMLjY7Y0
#include <windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE Mutex = CreateMutex(NULL, false, "Mutex");
if (Mutex == NULL) return 0;
if ( GetLastError() == ERROR_ALREADY_EXISTS){
return 0;
}
{
MessageBox(0, "Hello, World!", "Welcome", MB_OK);

CloseHandle( Mutex);
return 0;
}
}

6女傑 ◆nDpXSJz8i.:2012/03/10(土) 21:57:58 ID:hQMLjY7Y0
Perlスクリプト上で、任意の名前を付けたHTML形式のファイ
ルを出力させる方法を考えてみました。
(!open(ハンドル名の後に>を付けると上書きされ、>>を付ける
とprint out〜の項目が追記されて保存されるようです。
また、<だとファイルの読み込みを行うようです。

#重複チェック
if (-e "./data/$FORM{'id'}\.htm") { &error(); }

#新規開設
if (!open(OUT,"> ./data/$FORM{'id'}\.htm")) { &error(); }
print OUT "<html<head></head><body>\n";
print OUT "</body></html>\n";
close(OUT);
chmod(0666,"./data/$FORM{'id'}\.htm");

7女傑 ◆nDpXSJz8i.:2012/03/10(土) 23:28:20 ID:hQMLjY7Y0
>>6
の続き
読み込み・書き込みモードでファイル操作を行うパターン
と、sendmailを利用してメール送信を行うパイプ入出力の
パターンです。

読み込みモードでオープン open (FH, "file")
open (FH, "< file")
上書きモードでオープン open (FH, "> file")
追加書き込みモードでオープン open (FH, ">> file")
読み書き両用モードでオープン open (FH, "+> file")
open (FH, "+< file")
パイプ出力用でオープン open (FH, "| コマンド")
パイプ入力用でオープン open (FH, "コマンド |")

8女傑 ◆nDpXSJz8i.:2012/03/11(日) 03:51:42 ID:hQMLjY7Y0
一応、動くスクリプトを書いてみました。引数による個別表示をするスクリプト
にするにはもう一工夫しないといけませんね^^;

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &error; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/</</g;
$value =~ s/>/>/g;
}

open(IN,"log.txt");
@lines = <IN>; $pass = shift(@lines);
close(IN);
($01, $02) = split(/,/, $pass);

print "Content-type: text/html\n\n";
print <<"EOF";

<html><head><title>$01</title></head>
<body>
<h1>$02</h1>
</body></html>

EOF

exit;

sub error {

print "Content-type: text/html\n\n";
print '<html><head><title>エラー</title></head>' . "\n";
print "<body>\n";
print "<h3>エラー</h3>\n";
print '<p></body></html>' . "\n";
exit;
}

9女傑 ◆nDpXSJz8i.:2012/03/11(日) 06:42:11 ID:hQMLjY7Y0
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &error; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/</</g;
$value =~ s/>/>/g;
}

open(IN,"log.txt");
@lines = <IN>; $pass = shift(@lines);
close(IN);

($01, $02, $03) = split(/,/, $pass);
$datas{$01} = [$02, $03];

print "Content-type: text/html\n\n";
print <<"EOF";

<html><head><title>$02</title></head>
<body>
<h1>$03</h1>
</body></html>

EOF

exit;

sub error {

print "Content-type: text/html\n\n";
print '<html><head><title></title></head>' . "\n";
print "<body>\n";
print "<h3></h3>\n";
print '<p></body></html>' . "\n";
exit;
}

10女傑 ◆nDpXSJz8i.:2012/03/13(火) 15:55:01 ID:hQMLjY7Y0
文字列をindexfuncを用いてインデックス検索し、substrfuncを用い
表示させると上手くいくかな???

$0011 = "ABCDEF";
$0002 = "AB";

$mojiretsu = index ($0011, $0002);

11女傑 ◆nDpXSJz8i.:2012/03/14(水) 23:44:17 ID:hQMLjY7Y0
こんな感じで簡単な商品データベースを作りました。

//written by Jyoketsu

#!/usr/bin/perl

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &error; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/</</g;
$value =~ s/>/>/g;
}

$act = $ENV{'QUERY_STRING'};

$file = "./$act\.cgi";
if (!-e $file) { &error; }
if (!open(DB,"$file")) { &error; }
@lines = <DB>;
close(DB);
$youso = shift(@lines);
chop($youso) if $youso =~ /\n$/;
($01,$02,$03,$04,$05,$06,$07) = split(/,/,$youso);

push(@lines,"$act $01,$02,$03,$04,$05,$06,$07\n");

print "Content-type: text/html\n\n";
print <<"EOF";

<html><head><title>$01$02のページ</title></head>
<body bgcolor=#$06>
<font>メーカー:$01</font><br>
<font>商品名:$02</font><br>
<font>容量:$03</font><br>
<font>入数:$04</font><br>
<font>販売期限:$05</font><br>
<img src=./barcode.php?code=$07&encoding=EAN&scale=1&mode=jpg>
</body></html>

EOF

exit;

sub error {

print "Content-type: text/html\n\n";
print '<html><head><title>エラー</title></head>' . "\n";
print "<body>\n";
print "<h3>エラー</h3>\n";
print '<p></body></html>' . "\n";
exit;
}

データファイル
,で区切ったファイル
拡張子cgi

12女傑 ◆nDpXSJz8i.:2012/03/14(水) 23:52:16 ID:hQMLjY7Y0
キャリッジリターンやラインフィードの処理(エスケープシー
ケンス)、バッファ領域を侵害するような可能性のあるタグの
処理がきっちり出来てるかが少し心配・・・
lengthなどの関数で文字列の最大数を決めておく方が良いだろ
うか?

13女傑 ◆nDpXSJz8i.:2012/03/16(金) 05:16:37 ID:hQMLjY7Y0
#!/usr/bin/perl

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &error; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/</</g;
$value =~ s/>/>/g;
}

if ($ENV{'REQUEST_METHOD'} eq "POST") { $file = "./$value\.cgi"; }
else { $file = "./$buffer\.cgi"; }

if (!-e $file) { &error; }
if (!open(DB,"$file")) { &error; }
@lines = <DB>;
close(DB);
$youso = shift(@lines);
chop($youso) if $youso =~ /\n$/;
($01,$02,$03,$04,$05,$06,$07) = split(/,/,$youso);

push(@lines,"$act $01,$02,$03,$04,$05,$06,$07\n");

print "Content-type: text/html\n\n";
print <<"EOF";

<html><head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
<title>$01$02のページ</title></head>
<body bgcolor=#$06>
<center><caption>$01$02</caption></center><br>
<table border=5 width=250 align=center>
<tr bgcolor="#cccccc">
<th>要素</th>
<th>数値</th>
</tr>
<tr align=center>
<td>メーカー</td>
<td>$01</td>
</tr>
<tr align=center>
<td>商品名</td>
<td>$02</td>
</tr>
<tr align=center>
<td>容量</td>
<td>$03</td>
</tr>
<tr align=center>
<td>入数</td>
<td>$04</td>
</tr>
<tr align=center>
<td>販売期限</td>
<td>$05</td>
</tr>
</table>
<br>
<table align=center>
<tr align=center>
<td><img src=./barcode.php?code=$07&encoding=EAN&scale=1&mode=jpg></td>
</tr>
<tr align=center>
<td><img src=https://chart.googleapis.com/chart?cht=qr&amp;chs=128x128&amp;chl=$02+$07&amp;choe=UTF-8&amp;chld=L|2></td>
</tr>
</table>
</body></html>

EOF

exit;

sub error {

print "Content-type: text/html\n\n";
print <<"EOF";

<html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
<title>エラー</title></head>
<body>
<h3>エラー</h3>
<p></body></html>

EOF

exit;

}

14女傑 ◆nDpXSJz8i.:2012/03/18(日) 23:15:46 ID:hQMLjY7Y0
sub kazukeisan
{
local $name;

$_ = $04;
$_ =~ s/[^0-9A-Za-z ]/ /g;

if (/12/i) { $name = "(1ダース)"; }
elsif (/24/i) { $name = "(2ダース)"; }
elsif (/36/i) { $name = "(3ダース)"; }
elsif (/48/i) { $name = "(4ダース)"; }
elsif (/60/i) { $name = "(5ダース)"; }
elsif (/72/i) { $name = "(6ダース)"; }
elsif (/84/i) { $name = "(7ダース)"; }
elsif (/96/i) { $name = "(8ダース)"; }
elsif (/108/i) { $name = "(9ダース)"; }
elsif (/120/i) { $name = "(10ダース)"; }
elsif (/132/i) { $name = "(11ダース)"; }
elsif (/144/i) { $name = "(1グロス)"; }
elsif (/156/i) { $name = "(13ダース)"; }
else { $name = ""; }

return $name;
}

15女傑 ◆nDpXSJz8i.:2012/03/19(月) 01:45:46 ID:hQMLjY7Y0
#! /usr/local/bin/perl

$act = $ENV{'QUERY_STRING'};
$ENV{'QUERY_STRING'} =~ s/\.//g; # 安全対策
$ENV{'QUERY_STRING'} =~ s/\///g;
($i,$q) = split(/=/,$buffer);
print "Location: http://www.geocoding.jp/&quot; . "?$act\n\n";

if ($act eq "") { &error("引数が不正です"); }
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
# タグ処理
$q =~ s/&/&/g;
$q =~ s/"/"/g;
$q =~ s/</</g;
$q =~ s/>/>/g;

# 改行処理
$q =~ s/\r\n/<br>/g;
$q =~ s/\r/<br>/g;
$q =~ s/\n/<br>/g;



($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$time = time;
@mon_array = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@wday_array = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$date_now = sprintf("%s, %02d %s %04d %02d:%02d:%02d +0900 (JST)",$wday_array[$wday],$mday,$mon_array[$mon],$year +1900,$hour,$min,$sec);

if (length($FORM{'q'}) > 2) { &error("引数が不正です"); }
# ログファイルに記録する
$log = "./data/acclog.cgi";
$addr = $ENV{'REMOTE_ADDR'};
$useragent = $ENV{"HTTP_USER_AGENT"};

open(OUT,">> $log");
print OUT "$addr<>$act\n";
close(OUT);

16女傑 ◆nDpXSJz8i.:2012/03/19(月) 03:22:38 ID:hQMLjY7Y0
foreach $youso (@lines)
{
if ($youso =~ /$act/i) #マッチしたら以下の処理を実行
{
($01,$02,$03,$04,$05,$06,$07) = split (/,/,$youso);
}
}

17女傑 ◆nDpXSJz8i.:2012/03/19(月) 23:42:34 ID:hQMLjY7Y0
flock(DB, LOCK_EX);
if (!open(DB,"$file")) { &error; }
@lines = <DB>;
close(DB);
flock(DB, LOCK_NB);

18女傑 ◆nDpXSJz8i.:2012/03/20(火) 23:05:16 ID:hQMLjY7Y0
何とか使える?サブルーチンが出来上がりました。

sub kazukeisan
{
local $name;

$_ = $04;
$_ =~ s/[^0-9 ]/ /g;
$dasu = $_ / 12;
$gurosu = $_ / 144;

if (/144|288|432/i) { $name = "($gurosuグロス)"; }
elsif (/12|24|36|48|60|72|84|96|108|120|132|156/i) { $name = "($dasuダース)"; }
else { $name = ""; }

return $name;
}

19女傑 ◆nDpXSJz8i.:2012/03/22(木) 00:11:59 ID:hQMLjY7Y0
sub kazukeisan
{
local $name;

$_ = $04;
$_ =~ s/[^0-9 ]/ /g;
$dasu = $_ / 12;
$gurosu = $_ / 144;

if ($_ % 144 == 0) { $name = "($gurosuグロス)"; }
elsif ($_ % 12 == 0) { $name = "($dasuダース)"; }
else { $name = ""; }

return $name;
}

20女傑 ◆nDpXSJz8i.:2012/04/01(日) 14:13:15 ID:hQMLjY7Y0
住所や郵便番号のグーグルマップとの連携

http://maps.google.com/maps/api/staticmap?center=%E6%97%A5%E6%9C%AC,%20%E4%BA%AC%E9%83%BD,%20%E5%A4%A7%E5%BE%B3%E5%AF%BA&amp;markers=%E6%97%A5%E6%9C%AC,%20%E4%BA%AC%E9%83%BD,%20%E5%A4%A7%E5%BE%B3%E5%AF%BA&amp;zoom=18&amp;size=400x400&amp;sensor=false

http://maps.google.com/maps/api/staticmap?center=%E6%97%A5%E6%9C%AC,%20%E5%A4%A7%E9%98%AA,%20%E9%80%9A%E5%A4%A9%E9%96%A3&amp;markers=%E6%97%A5%E6%9C%AC,%20%E5%A4%A7%E9%98%AA,%20%E9%80%9A%E5%A4%A9%E9%96%A3&amp;zoom=17&amp;size=400x400&amp;sensor=false

21女傑 ◆nDpXSJz8i.:2012/04/01(日) 14:54:31 ID:hQMLjY7Y0
今宮神社

http://maps.google.com/maps/api/staticmap?center=%E4%BA%AC%E9%83%BD,%20%E5%8C%97%E5%8C%BA,%20%E4%BB%8A%E5%AE%AE%E7%A5%9E%E7%A4%BE&amp;markers=%E4%BA%AC%E9%83%BD,%20%E5%8C%97%E5%8C%BA,%20%E4%BB%8A%E5%AE%AE%E7%A5%9E%E7%A4%BE&amp;zoom=13&amp;size=200x200&amp;sensor=false

22女傑 ◆nDpXSJz8i.:2012/04/04(水) 23:24:40 ID:hQMLjY7Y0
Google検索用参考URI

http://maps.google.co.jp/maps?q=shop99&amp;hnear=%E4%BA%AC%E9%83%BD%E5%B8%82&amp;ie=UTF8&amp;hq=shop99&amp;output=embed

23女傑 ◆nDpXSJz8i.:2012/04/07(土) 17:42:26 ID:hQMLjY7Y0
ニューヨークブルックリン市街の静的マップ

http://maps.google.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&amp;zoom=14&amp;size=512x512&amp;maptype=roadmap
&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318
&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false

24女傑 ◆nDpXSJz8i.:2012/04/07(土) 18:44:28 ID:hQMLjY7Y0
金閣寺・衣笠方面

http://maps.google.com/maps/api/staticmap?center=%E4%BA%AC%E9%83%BD,%20%E9%87%91%E9%96%A3%E5%AF%BA&amp;markers=color:green|label:A|%E4%BA%AC%E9%83%BD,%20%E9%87%91%E9%96%A3%E5%AF%BA%7C%E4%BA%AC%E9%83%BD,%E8%A1%A3%E7%AC%A0%E5%B1%B1&zoom=12&size=500x500&sensor=false

25女傑 ◆nDpXSJz8i.:2012/04/07(土) 18:50:34 ID:hQMLjY7Y0
京都市のマップ(スクリプト不使用)

http://maps.google.com/maps/api/staticmap?center=%E4%BA%AC%E9%83%BD&amp;markers=color:green|label:D|%E5%A4%A7%E6%96%87%E5%AD%97%E5%B1%B1&markers=color:blue|label:K|%E4%BA%AC%E9%83%BD%E5%B8%82&zoom=12&size=500x500&sensor=false

26女傑 ◆nDpXSJz8i.:2012/04/07(土) 19:07:25 ID:hQMLjY7Y0
京都市の色分けマップ

http://maps.google.com/maps/api/staticmap?center=%E4%BA%AC%E9%83%BD&amp;markers=color:purple|label:D|%E5%B1%B1%E7%A7%91%7C%E4%BA%AC%E9%83%BD%E5%B8%82%E5%8C%97%E5%8C%BA%7C%E4%BA%AC%E9%83%BD%E5%B8%82%E5%8D%97%E5%8C%BA%7C%E4%BA%AC%E9%83%BD%E5%B8%82%E5%8F%B3%E4%BA%AC%E5%8C%BA%7C%E4%BA%AC%E9%83%BD%E5%B8%82%E8%A5%BF%E4%BA%AC%E5%8C%BA%7C%E4%BA%AC%E9%83%BD%E5%B8%82%E4%BC%8F%E8%A6%8B%E5%8C%BA%7C%E4%BA%AC%E9%83%BD%E5%B8%82%E6%9D%B1%E5%B1%B1%E5%8C%BA&markers=color:orange|label:M|%E4%BA%AC%E9%83%BD%E5%A4%A7%E5%AD%A6&markers=color:blue|label:K|%E4%BA%AC%E9%83%BD%E5%B8%82%7C%E4%BA%AC%E9%83%BD%E5%BA%9C&zoom=12&size=700x700&sensor=false

27女傑 ◆nDpXSJz8i.:2012/04/07(土) 23:43:10 ID:hQMLjY7Y0
http://maps.google.com/maps/api/staticmap?center=%E4%BA%AC%E9%83%BD,%20%E9%87%91%E9%96%A3%E5%AF%BA&amp;markers=color:0x00A4AC|label:1|%E4%BA%AC%E9%83%BD,%20%E9%87%91%E9%96%A3%E5%AF%BA&zoom=12&size=200x250&sensor=false

28女傑 ◆nDpXSJz8i.:2012/04/08(日) 12:47:17 ID:hQMLjY7Y0
グーグルマップ用の外部読み込みファイル(KMLファイル)
の参考資料

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2&quot;&gt;
<Document>
<name>Highlighted Icon</name>
<description>Place your mouse over the icon to see it display the new icon</description>
<Style id="highlightPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/red-stars.png&lt;/href&gt;
</Icon>
</IconStyle>
</Style>
<Style id="normalPlacemark">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/wht-blank.png&lt;/href&gt;
</Icon>
</IconStyle>
</Style>
<StyleMap id="exampleStyleMap">
<Pair>
<key>normal</key>
<styleUrl>#normalPlacemark</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#highlightPlacemark</styleUrl>
</Pair>
</StyleMap>
<Placemark>
<name>Roll over this icon</name>
<styleUrl>#exampleStyleMap</styleUrl>
<Point>
<coordinates>-122.0856545755255,37.42243077405461,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

29女傑 ◆nDpXSJz8i.:2012/04/08(日) 12:50:25 ID:hQMLjY7Y0
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2&quot;&gt;
<Placemark>
<name>Simple placemark</name>
<description>Attached to the ground. Intelligently places itself
at the height of the underlying terrain.</description>
<Point>
<coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
</Point>
</Placemark>
</kml>

30女傑 ◆nDpXSJz8i.:2012/04/08(日) 12:51:03 ID:hQMLjY7Y0
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2&quot;&gt;
<Document>
<Placemark>
<name>CDATA example</name>
<description>
<![CDATA[
<h1>CDATA Tags are useful!</h1>
<p><font color="red">Text is <i>more readable</i> and
<b>easier to write</b> when you can avoid using entity
references.</font></p>
]]>
</description>
<Point>
<coordinates>102.595626,14.996729</coordinates>
</Point>
</Placemark>
</Document>
</kml>

31女傑 ◆nDpXSJz8i.:2012/04/08(日) 12:51:34 ID:hQMLjY7Y0
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2&quot;&gt;
<Document>
<Placemark>
<name>Entity references example</name>
<description>
<h1>Entity references are hard to type!</h1>
<p><font color="green">Text is
<i>more readable</i>
and <b>easier to write</b>
when you can avoid using entity references.</font></p>
</description>
<Point>
<coordinates>102.594411,14.998518</coordinates>
</Point>
</Placemark>
</Document>
</kml>

32女傑 ◆nDpXSJz8i.:2012/04/08(日) 18:33:22 ID:hQMLjY7Y0
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0&quot;&gt;
<Placemark>
<description>New York City</description>
<name>New York City</name>
<Point>
<coordinates>-74.006393,40.714172,0</coordinates>
</Point>
</Placemark>
</kml>

33女傑 ◆nDpXSJz8i.:2012/04/09(月) 15:00:25 ID:hQMLjY7Y0
https://chart.googleapis.com/chart?cht=map&amp;chs=300x300&amp;chld=JP-26|JP&chco=330022|FF4444|44FF44|4444FF&chf=bg,s,c6eff7

34女傑 ◆nDpXSJz8i.:2012/04/09(月) 18:47:50 ID:hQMLjY7Y0
https://chart.googleapis.com/chart?cht=map&amp;chs=500x500&amp;chld=AU|AU-QLD|AU-NT|AU-NSW|AU-WA|AU-TAS&chco=330022|FF4444|44FF44|4444FF|5000CC|A2DBA8|D584E0&chf=bg,s,c6eff7

35女傑 ◆nDpXSJz8i.:2012/04/09(月) 21:55:33 ID:hQMLjY7Y0
DATファイルの読み込みURI

http://jbbs.livedoor.jp/bbs/rawmode.cgi/study/11670/

36女傑 ◆nDpXSJz8i.:2012/04/10(火) 01:52:14 ID:hQMLjY7Y0
IPアドレスの構成(IPv4の場合)

$ip = $ENV{'REMOTE_ADDR'};
$ip =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/;
IPアドレスの表示を隠したい場合は、$4の部分を***等に適宜
置き換える。

37女傑 ◆nDpXSJz8i.:2012/04/10(火) 16:52:44 ID:hQMLjY7Y0
http://ja.wikipedia.org/w/index.php?title=%E8%8A%B1%E5%B1%8B
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
http://kotobank.jp/word/%E7%8C%B6%E4%BA%88

38女傑 ◆nDpXSJz8i.:2012/04/10(火) 17:08:12 ID:hQMLjY7Y0
http://ejje.weblio.jp/content/justice

39女傑 ◆nDpXSJz8i.:2012/04/12(木) 03:18:54 ID:hQMLjY7Y0
連想配列の使い方
#!/usr/bin/perl

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {

($name,$value) = split(/=/,$pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value,'sjis');

$value =~ s/<//g;
$value =~ s/>//g;
$value =~ s/"//g;
$value =~ s/\n//g;
$value =~ s/\r//g;
$value =~ s/\,//g;
}

if ($ENV{'REQUEST_METHOD'} eq "POST") { $value = $id; }
else { $buffer = $id; }

%data = (
'1111', '1111さん',
'2222', '2222さん',
);

if (exists $data{$id}) {

print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>$data{$id}</TITLE>
</HEAD>
<BODY>
<font>$data{$id}</font>
</body>
EOF
}

else { &error; }

exit;

sub error {

print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>ERROR</TITLE>
</HEAD>
<BODY></body>
</HTML>

EOF

exit;

40女傑 ◆nDpXSJz8i.:2012/04/14(土) 02:27:18 ID:hQMLjY7Y0
ランダムURLジャンパー
その名の通り、ランダム値を発生させて振り分けたジャンプ
先のURLにジャンプさせます。

&random;

sub random {
srand;
$rd = random;

$rd = int($rd * 100);

if ($rd < 20||$rd > 0) { $youso = "$youso1"; }
elsif ($rd < 40||$rd > 21) { $youso = "$youso2"; }
elsif ($rd < 70||$rd > 41) { $youso = "$youso3"; }
elsif ($rd < 90||$rd > 71) { $youso = "$youso4"; }
else ($rd < 100||$rd > 91) { $youso = "$youso5"; }
}

$youso1 = 'http://aaa';
$youso2 = 'http://bbb';
$youso3 = 'http://ccc';
$youso4 = 'http://ddd';
$youso5 = 'http://eee';

print "Location: $youso\n\n";

41女傑 ◆nDpXSJz8i.:2012/04/14(土) 19:25:57 ID:hQMLjY7Y0
flock(DB, LOCK_EX);
%datas = ();
if (!open(DB,"$file")) { &error; }
while($lines = <DB>){
chomp($lines);
($sid, $01, $02, $03, $04, $05, $06, $07) = split(/,/, $lines, 8);
$datas{$sid} = [$01, $02, $03, $04, $05, $06, $07];
$file = $datas{$sid};
}
1;
close(DB);
flock(DB, LOCK_NB);

42女傑 ◆nDpXSJz8i.:2012/04/15(日) 14:02:00
if (!-e $file) { &error; }
%datas = ($file);
flock(DB, LOCK_EX);
if (!open(DB,"$file")) { &error; }
while(<DB>){
chomp($_);
($sid, $01, $02, $03, $04, $05, $06, $07) = split(/,/, $_, 8);
$seihin = $datas{$file};
$seihin = [$01, $02, $03, $04, $05, $06, $07];
next;
}
close(DB);
flock(DB, LOCK_NB);

$03 =~ s/(.*\d)(\d\d\d)/$1,$2/;
$04 =~ s/(.*\d)(\d\d\d)/$1,$2/;

43女傑 ◆nDpXSJz8i.:2012/04/18(水) 14:43:34
#!/usr/local/bin/perl

$basedir = './data/';
$ip = $ENV{'REMOTE_ADDR'};
$ip =~ s/([\d\.]+)\.\d+/$1\.\*/;

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &error; }
@pairs = split(/&/,$buffer);

foreach $pair (@pairs) {

($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}

$buffer = $ENV{'QUERY_STRING'};
$file = "./data/$buffer\.cgi";

if (!(-e $file)) { &error("存在しません"); }
elsif (-z $file) { &error("データ異常"); }

if (!open(IN,"$file")) { &error("ファイルが開けません"); }
@lines = <IN>;
close(IN);

print "Content-type: text/html\n\n";
print <<"EOF";
<html><head><title>ページ</title></head><BODY BGCOLOR=#FFFFFF>

<h2>$FORM{'sign'}</h2>
<font>
foreach (0..1) {

($name,$value) = split(/\:/,$lines[$_],2);
$value =~ s/</</g;
$value =~ s/>/>/g;
print "$name$value";
}
です。
</font><br>
</body></html>
EOF
exit;

sub error {

local (@msg) = @_;
local ($i);

print "Content-type: text/html\n\n";

print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD>
<TITLE>不正な動作です</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<h1>$msg[0]</h1>
EOF
if ($msg[1] ne '') {

print "<ul>\n";
foreach $i (1 .. $#msg) { print "<li>$msg[$i]\n"; }
print "</ul>\n";
}

print <<"EOF";
<h3>[<A HREF=./>戻る</A>]</h3>
</body></html>
EOF
exit;

}

44女傑 ◆nDpXSJz8i.:2012/04/18(水) 18:17:37
#!/usr/local/bin/perl

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
if ($buffer eq "") { &error; }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/\t//g;
$value =~ s/\r//g;
$value =~ s/\n//g;
$value =~ s/\.//g;
$value =~ s/\///g;
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
}
if ($ENV{'REQUEST_METHOD'} eq "POST" && $name eq "user") { $file = "./data/$value\.cgi"; }
else { $file = "./data/$buffer\.cgi"; }
if (!(-e $file)) { &error("存在しません"); }
elsif (-z $file) { &error("データ異常"); }
flock(IN, LOCK_EX);
if (!open(IN,"$file")) { &error("ファイルが開けません"); }
@lines = <IN>;
close(IN);
flock(IN, LOCK_NB);
print "Content-type: text/html\n\n";
print <<"EOF";
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
<title>ページ</title></head>
<BODY BGCOLOR=#FFFFFF>

<h2></h2>
<font>
foreach (0..1) {
($name,$value) = split(/\:/,$lines[$_],2);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\t//g;
$value =~ s/\r//g;
$value =~ s/\n//g;
$value =~ s/\.//g;
$value =~ s/\///g;
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
print "$name$value";
}
です。
</font>
</body></html>
EOF
exit;

sub error {
local (@msg) = @_;
local ($i);
print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD>
<TITLE>不正な動作です</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<h1>$msg[0]</h1>

EOF
if ($msg[1] ne '') {
print "<ul>\n";
foreach $i (1 .. $#msg) { print "<li>$msg[$i]\n"; }
print "</ul>\n";
}
print <<"EOF";
<h3><A HREF=./>戻る</A></h3>
</body></html>
EOF
exit;
}

45女傑 ◆nDpXSJz8i.:2012/04/20(金) 01:03:46
$maetime = time() - 60 * 60 * 24 * 7;
($maesec, $maemin, $maehour, $maemday, $maemon, $maeyear, $maewday, $maeyday, $maeisdst) = localtime($maetime);
@maewdays = ('日','月','火','水','木','金','土');
$maenitizi = sprintf("%04d年%02d月%02d日(%s) %02d:%02d",$maeyear+1900,$maemon+1,$maemday,$maewdays[$maewno],$maehour,$maemin);

46女傑 ◆nDpXSJz8i.:2012/04/20(金) 01:11:30
3日前の日付を書き出すルーチン

$maetime = time() - 60 * 60 * 24 * 3;
($maesec, $maemin, $maehour, $maemday, $maemon, $maeyear, $maewday, $maeyday, $maeisdst) = localtime($maetime);
@maewdays = ('日','月','火','水','木','金','土');
$maenitizi = sprintf("%04d年%02d月%02d日(%s) %02d:%02d",$maeyear+1900,$maemon+1,$maemday,$maewdays[$wno-3],$maehour,$maemin);

47女傑 ◆nDpXSJz8i.:2012/04/20(金) 01:35:26
$maetime = time() - 60 * 60 * 24 * 2;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($maetime);
@wdays = ('日','月','火','水','木','金','土');
$maenitizi = sprintf("%04d年%02d月%02d日(%s) %02d:%02d",$year+1900,$mon+1,$mday,$wdays[$wno-2],$hour,$min);

48女傑 ◆nDpXSJz8i.:2012/04/20(金) 13:14:10
読書のためのCGI(適宜、改行してください)

#!/usr/local/bin/perl
require './cgi-lib.pl';
&ReadParse(*in);
$story = $in{'story'};
$page = $in{'page'};
$story =~ tr/+/ /;
$story =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$page =~ tr/+/ /;
$page =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
if ($story =~/\W+$/) { &error("禁則文字が使われています"); }
if ($page =~/\W+$/) { &error("禁則文字が使われています"); }
if ($story eq "") { &error("ストーリーの名前の入力がありません"); }
if ($page eq "") { &error("ページ番号の入力がありません"); }
$file = "./$story/$page\.cgi";
if (!(-e $file)) { &error("存在しません"); }
elsif (-z $file) { &error("ファイルが異状です"); }
flock(IN, LOCK_EX);
if (!open(IN,"$file")) { &error("ファイルが開けません"); }
@lines = <IN>;
close(IN);
flock(IN, LOCK_NB);
print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
<title></title></head>
<BODY BGCOLOR=#FFFFFF>
<font>
EOF
foreach (0..12) {
chomp($file) if $file =~ /\n$/;
($name,$value) = split(/,/,$lines[$_],0);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\t//g;
$value =~ s/\r//g;
$value =~ s/\n//g;
$value =~ s/\.//g;
$value =~ s/\///g;
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
if ("$name$value" ne "") {
print "<p>$name$value</p>";
}
}
1;
print <<"EOF";
</font>
</body></html>
EOF
exit;
sub error {
local (@msg) = @_;
local ($i);
print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD>
<TITLE></TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<font>$msg[0]</font>
EOF
if ($msg[1] ne '') {

print "<ul>\n";
foreach $i (1 .. $#msg) { print "<li>$msg[$i]\n"; }
print "</ul>\n";
}
print <<"EOF";
<font><A HREF=./>最初に戻る</A></font>
</body></html>
EOF
exit;
}

49女傑 ◆nDpXSJz8i.:2012/04/20(金) 16:05:22
http://maps.google.com/maps/api/staticmap?size=200x200&amp;markers=icon:http://chart.apis.google.com/chart?chst=d_map_pin_icon|chld=dot:7C996600|%E4%BA%AC%E9%83%BD%E5%B8%82%E5%8C%97%E5%8C%BA%7C&sensor=false&zoom=17

50女傑 ◆nDpXSJz8i.:2012/04/20(金) 21:20:51
http://maps.google.com/maps/api/staticmap?size=480x480&amp;markers=icon:http://chart.apis.google.com/chart?chst=d_map_pin_icon%26chld=cafe%257C996600|%E6%97%A5%E6%9C%AC,%20%E4%BA%AC%E9%83%BD&sensor=false

51女傑 ◆nDpXSJz8i.:2012/04/20(金) 22:43:19
http://maps.google.com/maps/api/staticmap?size=480x480&amp;markers=icon:http://maps.google.co.jp/mapfiles/ms/icons/flag.png|%E6%97%A5%E6%9C%AC,%20%E4%BA%AC%E9%83%BD%7C%E6%97%A5%E6%9C%AC,%20%E9%87%91%E9%96%A3%E5%AF%BA&sensor=false

52女傑 ◆nDpXSJz8i.:2012/04/21(土) 12:41:22
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2&quot;&gt;
<Document>
<Placemark>
<name>金閣寺</name>
<description>金閣寺(鹿苑寺)</description>
<coordinates>135.729324,35.037991,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>銀閣寺</name>
<description>銀閣寺(慈照寺)</description>
<Point>
<coordinates>135.797318,35.026779,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

53女傑 ◆nDpXSJz8i.:2012/04/21(土) 13:12:41
maps.google.co.jp/maps?q=http://vvvf.s377.xrea.com/orig.kml&amp;ie=UTF8&amp;t=m&amp;brcurrent=3,0x601d012318c98c6b:0x25c2b4f04bf0b94,0&amp;ll=35.0116363,135.76802939999993&amp;spn=0.207462,0.151987&amp;output=embed

54女傑 ◆nDpXSJz8i.:2012/04/21(土) 22:32:40
#!/usr/local/bin/perl
require '../cgi-lib.pl';
&ReadParse(*in);
$story = $in{'story'};
$page = $in{'page'};
$story =~ tr/+/ /;
$story =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$page =~ tr/+/ /;
$page =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
if ($story =~/\W+$/) { &error("禁則文字が使われています"); }
if ($page =~/\W+$/) { &error("禁則文字が使われています"); }
if ($story eq "") { &error("ストーリーの名前の入力がありません"); }
if ($page eq "") { &error("ページ番号の入力がありません"); }
$file = "./$story/$page\.cgi";

if (!(-e $file)) { &error("存在しません"); }
elsif (-z $file) { &error("ファイルが異状です"); }

flock(IN, LOCK_EX);
if (!open(IN,"$file")) { &error("ファイルが開けません"); }
@lines = <IN>;
close(IN);
flock(IN, LOCK_NB);
print "Content-type: text/html\n\n";
print <<"EOF";

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
<title></title></head>
<BODY BGCOLOR=#FFFFFF>
<font>
EOF
foreach (0..12) {
chomp($file) if $file =~ /\n$/;
($name,$value) = split(/:/,$lines[$_],0);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$name =~ s/\t//g;
$name =~ s/\r//g;
$name =~ s/\n//g;
$name =~ s/\.//g;
$name =~ s/\///g;
$name =~ s/&/&/g;
$name =~ s/"/"/g;
$name =~ s/</</g;
$name =~ s/>/>/g;
if ("$name,$value" ne "") {
chomp($name,$value) if $name,$value =~ /\n$/;
print <<"EOF";
<p>$name$value</p>
EOF
}
}
1;
print <<"EOF";
</font>
</body></html>
EOF
exit;
sub error {
local (@msg) = @_;
local ($i);
print "Content-type: text/html\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML><HEAD>
<TITLE></TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex,nofollow,noarchive">
<meta name="Berry" content="no">
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<font>$msg[0]</font>
EOF
if ($msg[1] ne '') {
print "<ul>\n";
foreach $i (1 .. $#msg) { print "<li>$msg[$i]\n"; }
print "</ul>\n";
}
print <<"EOF";
<br><font><A HREF=./>最初に戻る</A></font>
</body></html>
EOF
exit;
}

55女傑 ◆nDpXSJz8i.:2012/04/22(日) 20:01:01
sub
{
local $name;

$_ = $ENV{""};

if (//i) { $name = "";}
elsif (//i) { $name = ""; }
elsif (//i) { $name = ""; }
else { $name = ""; }

return $name;
}

56連想配列メモ:2012/04/23(月) 03:26:24
%datalist = ('001', '01', '002', '02', '003', '03', '004', '04',
'005', '05', '006', '06', '007', '07', '008', '08',
'009', '09', '010', '10', '011', '11', '012', '12');


$data = $datalist{$data};

57女傑 ◆nDpXSJz8i.:2012/04/23(月) 12:07:09
画像などのバイナリデータを出力するためのコードです。

#!/usr/local/bin/perl

$gazou = '*****.png';

print "Content-type: image/png\n\n";
flock(FILE, LOCK_EX);
open FILE,"gazou";
binmode (FILE);
binmode ( STDOUT );
print <FILE>;
close (FILE);
flock(FILE, LOCK_NB);

exit;

58女傑 ◆nDpXSJz8i.:2012/04/23(月) 12:32:17
日時取得のルーチン
タイムゾーンは、日本国内の場合には日本(GMT+9)を指定。
time関数を用いて、サーバーからのレスポンスのlocaltimeの定義
を行う。変数をコンマ区切りのデータとして格納する。
最後は出力用に、sprintf関数で整形する。

$ENV{'TZ'} = "JST-9";
($sec, $min, $hour, $mday, $mon, $year) = localtime(time());
$date_now = sprintf("%04d/%02d/%02d", 1900 + $year, $mon + 1, $mday);
$time_now = sprintf("%02d:%02d:%02d", $hour, $min, $sec);

59女傑 ◆nDpXSJz8i.:2012/04/23(月) 12:43:57
引数データを受け取るルーチン
先ず引数を区切っている&のパラメータを分解し繰り返し
処理、更に=区切りのパラメータをname,valueの変数に分解する。
+文字をスペースに置き換えて、文字コードの16進数デコードを行って
エスケープシーケンスを含んだ文字列や、タグ文字などを読み飛ばす処
理も行う。

メソッドがpostの場合は、STDのINやファイルの長さなども読み込む。

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }

if ($buffer eq "") { &error; }

@pairs = split(/&/,$buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/\t//g;
$value =~ s/\r//g;
$value =~ s/\n//g;
$value =~ s/\.//g;
$value =~ s/\///g;
$value =~ s/&/&/g;
$value =~ s/"/"/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
}

60女傑 ◆nDpXSJz8i.:2012/04/23(月) 15:17:34
ENCODE.PMを使用して、文字コードを変換する方法
(近年では主流の、JCODE.PLでは不対応のUTF文字コード)

use Encode;

# Shift_JISをUTF-8へ変換する
Encode::from_to($_, 'Windows-31J', 'UTF-8');

61女傑 ◆nDpXSJz8i.:2012/04/23(月) 23:08:35
メモメモ^^

#!/usr/local/bin/perl -w

use strict;
use Image::Magick;

# 元画像
my $file = "http://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Iemitu.jpg/295px-Iemitu.jpg&quot;;

# 重ねる画像
my $file2 = "http://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Japanese_crest_Tokugawa_Aoi.svg/240px-Japanese_crest_Tokugawa_Aoi.svg.png&quot;;

my $file3 = ":::.png";

my $file4 = ":::.gif";

# 元画像読み込む
my $image = Image::Magick->new;
$image->Read($file);

# 重ねる画像を読み込む
my $image2 = Image::Magick->new;
$image2->Read($file2);

# 重ねる画像を読み込む
my $image3 = Image::Magick->new;
$image3->Read($file3);

my $image4 = Image::Magick->new;
$image4->Read($file4);
# 重ねる画像のサイズ変更
$image2->Resize(width=>50, height=>50, blur=>0.7);
$image3->Resize(width=>80, height=>25, blur=>0.7);
$image4->Resize(width=>60, height=>20, blur=>0.7);
# 画像を合成する

$image->Resize(width=>180, height=>230, blur=>0.7);
$image->Composite(image=>$image2, compose=>'Over', x=>10, y=>10);
$image->Composite(image=>$image3, compose=>'Over', x=>90, y=>200);
$image->Composite(image=>$image4, compose=>'Over', x=>10, y=>200);

# 出力
print "Content-type: image/png\n\n";
binmode STDOUT;
$image->Write('png:-');

undef $image;
exit;

62女傑 ◆nDpXSJz8i.:2012/04/23(月) 23:18:34
$text = 'Works like magick!';
$image->Annotate(font=>'kai.ttf', pointsize=>40, fill=>'green', text=>$text);

63女傑 ◆nDpXSJz8i.:2012/04/24(火) 14:59:42
#!/usr/local/bin/perl

$view = 'onsei.mp3';

print "Content-type: audio/mp3\n\n";
flock(FILE, LOCK_EX);
open FILE,"$onsei";
binmode (FILE);
print <FILE>;
close (FILE);
flock(FILE, LOCK_NB);

exit;

64女傑 ◆nDpXSJz8i.:2012/04/24(火) 15:17:27
#!/usr/local/bin/perl

$imagefile = 'xx.png';

print "Content-type: image/png\n\n";
flock(FILE, LOCK_EX);
open FILE,"$imagefile";
binmode (FILE);
binmode (STDOUT);
print <FILE>;
close (FILE);
flock(FILE, LOCK_NB);

65女傑 ◆nDpXSJz8i.:2012/04/25(水) 02:23:10
#!/usr/local/bin/perl

require './cgi-lib.pl';
&ReadParse(*in);

$word = $in{'word'};
$word =~ tr/+/ /;
$word =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$wl = "http://www.weblio.jp/content/$word&quot;;
$wk = "http://ja.wikipedia.org/wiki/$word&quot;;
$go = "http://www.google.co.jp/#hl=ja&output=search&q=$word";

if ($word eq "") { &error; }
if ($in{'robo'} eq "weblio") { $kensaku = $wl; }
elsif ($in{'robo'} eq "google") { $kensaku = $go; }
else { $kensaku = $wk; }
if ($kensaku eq "") { &error; }

print "Location: $kensaku\n\n";
exit;

sub error {

print "Content-type: text/html\n\n";
print <<"EOF";

<html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<title>Error</title></head>
<body>
<h3>Error</h3>
</body></html>

EOF
exit;

}

##http://〜/jump.cgi?
##q=調べたい語句
##robo=wl(weblio辞書検索)
##robo=wk(wikipedia検索)
##robo=go(google検索)
##http://〜/jump.cgi?q=語句&robo=go


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板