七行プログラミング (452レス)
1-

53
(1): 02/11/03 23:18 ID:??? AAS
7行のスレッドフロート型掲示板とかは無理?
54: ◆FruitsMIpE 02/11/03 23:44 ID:??? AAS
>>43
Winではflock 使えなくてエラーに ヽ(*`Д´)ノ ワァァン

>>44
ガ━━━━(;゚Д゚)━━━━ン !!
すいませn原因わかりませn
Windows環境でSJISならうまくいくんだけど・・

>>53
前に2ch型掲示板作ってみたけど、無理確定のような気がする。
誰か作れる人、いるかな
55
(1): 02/11/04 06:56 ID:5+umhhBG(1) AAS
7行2ch型掲示板
ただし、かちゅ〜しゃがないとだめぽ、
read.cgiがないから読めないし、書きこみフォームもないから、あとsubject.txtの新スレは一番下になる。
flockもしていない、かちゅに依存するために変数名が長い。

下記のディレクトリ構成で成功
/test
  +--/bbs.cgi
  +--/subject.txt
  +--/dat/

#!/usr/local/bin/perl
$t=time;read(STDIN,$b,$ENV{'CONTENT_LENGTH'});@p=split(/&/,$b);foreach (@p)
{($a,$v)=split "=";$v=~tr/+/ /;$v=~s/%([A-Za-z0-9]{2})/pack("C", hex($1))/eg;
$i{$a}=$v;}if(!$i{'key'}){$i{'key'}=$t;}open(F,">>./dat/$i{'key'}.dat");
print F "$i{'FROM'}<>$i{'mail'}<>$t<>$i{'MESSAGE'}<>$i{'subject'}\n";close(F);
open(S,">>./subject.txt");print S "$i{'key'}.dat<>$i{'subject'}(1)\n";
close(S);exit;

つーか激しく2ch型から離れているが。
56: 02/11/04 09:38 ID:??? AAS
>>55
それは普通掲示板といいません(w
win鯖では動いたけどな。
57
(1): 02/11/04 12:16 ID:??? AAS
やはりCGIだと、定型的な部分で多く取られてしまいますな。
58
(1): ( ´∀`)でけた〜 02/11/04 12:59 ID:??? AAS
[アクセス解析]
CGI名: a.cgi
空ファイル用意: log
そのままアクセスしてログ取り
引数に a をつけて解析結果表示

#!/usr/bin/perl
&a if $ENV{QUERY_STRING}eq'a';($s,$m,$j,$d,$g,$y)=gmtime(time+9*60*60);$i=$ENV{
REMOTE_ADDR};$h=$ENV{REMOTE_HOST}||gethostbyaddr(pack('C4',split(/\./,$i)),2)||
$i;$y=sprintf("%d/%02d/%02d/ %02d:%02d:%02d",$y+=1900,++$g,$d,$j,$m,$s);open(F,
'+<log');@d=<F>;unshift(@d,"$y,$h,$ENV{HTTP_USER_AGENT},$ENV{HTTP_REFERER}\n");
seek(F,0,0);print F @d;sub a{print"Content-type:text/html\n\n";open(F,'log');
while(<F>){($t,$h,$u,$r)=split(/,/,$_);print"$t<br>$h<br>$u<br>$r<hr>"}exit}
59: 02/11/04 14:26 ID:??? AAS
で、実用性ある奴はあるのか?
60
(2): 02/11/04 15:47 ID:CMvXGJGy(1) AAS
(・ε・)v キニシナイ!
61: 02/11/04 20:59 ID:??? AAS
HTML4.01strictとかどうよw
62: 02/11/04 23:14 ID:??? AAS
>>57
試しにHTMLを分離して作ってみたら大分縮んだ。
外部リンク[gz]:boobar.hp.infoseek.co.jp

>>58
縮めてみた。

#!/usr/bin/perl
if($ENV{QUERY_STRING}eq'a'){open F,'log';print"Content-Type: text/html\n\n",map
join('<br>',split/,/).'<hr>',<F>;exit}$i=$ENV{REMOTE_ADDR};$h=$ENV{REMOTE_HOST}
||gethostbyaddr(pack('C4',split/\./,$i),2)||$i;($s,$m,$j,$d,$g,$y)=localtime;
open F,'+<log';eval{flock F,2};@d=(sprintf('%d/%02d/%02d %02d:%02d:%02d',1900+
$y,$g+1,$d,$j,$m,$s).",$h,$ENV{HTTP_USER_AGENT},$ENV{HTTP_REFERER}\n",<F>);
truncate F,0;seek F,0,0;print F @d
63: age [age] 02/11/05 18:48 ID:??? AAS
age
64: 02/11/14 07:16 ID:M/ZRCXHw(1) AAS
あげ
65: 02/11/20 18:28 ID:707UhyRv(1) AAS
7行Wikiくれ。
66
(1): 02/11/21 07:14 ID:??? AAS
---- 7wiki.cgi
#!/usr/local/bin/perl -w
use strict; use CGI qw/:standard/; use AnyDBM_File; use Fcntl;
my$id=$ENV{'QUERY_STRING'}||'FrontPage';my$msg=param('msg')||'';
my$url='./7wiki.cgi'; tie(my%DB,'AnyDBM_File','wiki',O_CREAT|O_RDWR,0666)or die;
if ($msg){$DB{$id}=$msg} $msg=escapeHTML $DB{$id}; untie(%DB);print header;
print qq(<form action="$url?$id" method="POST"><input type="submit"><b>$id</b>
<br /><textarea name="msg" rows="6" cols="60">$msg</textarea></form><hr />);
$msg=~s/\b([A-Z][a-z]+([A-Z][a-z]+)+)\b/<a href="$url?$1">$1<\/a>/g;print $msg;
67
(1): 02/11/21 19:40 ID:??? AAS
>>66

#!/usr/local/bin/perl -w
use strict;use CGI':standard';use AnyDBM_File;use Fcntl;tie(my%D,'AnyDBM_File',
'7wiki',O_CREAT|O_RDWR,0666)||die;my$i=$ENV{QUERY_STRING}||'FrontPage';$_=
escapeHTML($D{$i}=param('m')||$D{$i});untie%D;print header(),qq(<form
action="7wiki.cgi?$i" method="post"><input type="submit" /><b>$i</b><br />
<textarea name="m" rows="6" cols="60">$_</textarea></form><hr />);
s|\b([A-Z][a-z]+([A-Z][a-z]+)+)\b|<a href="7wiki.cgi?$1">$1</a>|g;print

\b 要る?
68: 02/11/21 22:28 ID:mGPCTII6(1) AAS
>>67
thx ...

WikiName の正規表現は \b([A-Z][a-z]+){2,}\b って書けるみたいだね。
\b 要るかどうかしらないけど、個人的には欲しい。
# 外部リンク:c2.com

> s|\b([A-Z][a-z]+([A-Z][a-z]+)+)\b|<a href="7wiki.cgi?$1">$1</a>|g;
< s|\b([A-Z][a-z]+){2,}\b|a "7wiki.cgi?$1",$1|ge;

多少、汚くても良いのなら、
- use Fcntl やめて O_CREAT|O_RDWR は定数で
- s/standard/all/; tr/"//d; s/AnyDBM/DBM/g; s' /''g;
- s/use strict;/; s/\bmy\b/g;
- etc ..
・・・で、4〜5行くらいにはダイエット出来るかな。

短いwiki・・・他に、こんなのもあるよ。
外部リンク:c2.com
69: 02/11/21 22:40 ID:??? AAS
間違えた・・
s|\b([A-Z][a-z]+){2,}\b|a{href=>"7wiki.cgi?$1"},$1|ge;
70
(2): 02/11/21 22:52 ID:??? AAS
括弧わすれてた・・・ゴメン(再び修正
\b(([A-Z][a-z]+){2,})\b
71
(1): 02/11/22 07:28 ID:??? AAS
use CGI':all';use SDBM_File;$i='7wiki.cgi';$j=$ENV{QUERY_STRING}||'FrontPage';
tie%D,'SDBM_File',$i,258,438or die;$_=$D{$j}=param('m')||$D{$j};untie%D;put
header,startform('post',"$i?$j"),submit,b($j),br,textarea('m',$_,6,60),endform
,hr;$_=escapeHTML$_;s|\b(([A-Z][a-z]+){2,})\b|a{href=>"$i?$1"},$1|ge;put$_
72: 02/11/22 14:36 ID:??? AAS
Good job.
73: 02/11/22 18:30 ID:??? AAS
折角なので副産物も(ワンライナーだけど
れぎゅれーしょん ちぇっか usage: ./7rc.pl < target_script.pl

#! perl -nw
chomp;length>79||$.>7?die:print"line $. OK\n"
74
(1): 02/11/24 15:39 ID:??? AAS
>>71
use Fcntl;
はいらないのか?
75
(1): 02/11/24 17:47 ID:??? AAS
use Fcntl; O_CREAT|O_RDWR を纏めて 286(tie の引数

定数部分は環境依存するかも知れないので
/usr/include/sys/fcntl.h を参照
76: 02/11/25 00:58 ID:??? AAS
DB_File なら use した時点で O_CREAT も O_RDWR も使えるようになる罠。

use DB_File;
print join '/', O_CREAT => O_CREAT, O_RDWR => O_RDWR;

そして O_CREAT は実際 512 だったり 256 だったりする罠。
77: 02/11/25 06:28 ID:??? AAS
余った行で僅かばかり実用的にしてみる。

#!/usr/local/bin/perl -w
use CGI qw(:all escapeHTML);use DB_File;$j=$ENV{QUERY_STRING}||'FrontPage';($f)
=$0=~m|([^/]+)(\.cgi)$|;open(L,'+<&='.($d=tie%D,'DB_File',$f,O_CREAT|O_RDWR or
die)->fd)||die;eval{flock L,2};$_=escapeHTML($m=$D{$j}=param('m')||$D{$j});$d->
sync;$d=untie%D;s/\b(([A-Z][a-z]+){2,})/a{href=>"$f.cgi?$1"},$1/ge;s/\x0d\x0a|
\x0d|\x0a/<br>/gx;put header,title("$f - $j"),startform('post',"$f.cgi?$j"),
submit,b($j),br,textarea('m',$m,6,60),endform,hr,$_

陽に輸入してやらないと上のタイミングで escapeHTML 使えなかったよ。
(FreeBSD 4.7R, Perl 5.005_03, CGI.pm 2.89)
78
(1): 02/11/25 23:38 ID:??? AAS
#! perl
use CGI':all';$w='\b(([A-Z][a-z]+){2,})';($p)=($ENV{QUERY_STRING}||'FrontPage')
=~/$w/;$f='7wiki.cgi';$o=-f$p?'<':'>';open F,"+$o$p"or die;eval{flock F,2};read
F,$m,-s$p;$_=escapeHTML($m=param('m')||$m);seek F,0,0;print F $m;close F;$_.=hr
.ul map{li"".localtime time-86400*-M," $_"}sort{-M$a<=>-M$b}grep{/^$w$/}glob"*"
;s/$w/a{href=>"$f?$1"},$1/ge;put header,start_html($p),h1($p),startform('post',
"$f?$p"),textarea('m',$m,6,60),br,submit,endform,hr,pre($_),end_html

一覧を付けてみた・・・(残り:1行と10字

:all tag で全部輸入できなかった?:html2 とかでも無理かな?
79
(1): 02/11/26 00:26 ID:??? AAS
< $_=escapeHTML($m=param('m')||$m);seek F,0,0;print F $m;
> $_=escapeHTML $m=param('m')||$m;seek F,0,0;print F$m;
80
(2): 02/11/26 00:30 ID:??? AAS
< .ul map{li"".localtime time-86400*-M," $_"}sort{-M$a<=>-M$b}grep{/^$w$/}glob"*"
> .ul map{li"".localtime time-86400*-M,$_}sort{-M$a<=>-M$b}grep{/^$w$/}glob"*"
81: 74 02/11/26 00:51 ID:??? AAS
>>75
勉強になりました。
82: 02/11/26 01:21 ID:??? AAS
use CGI':all';$w='\b(([A-Z][a-z]+){2,})';($p)=($ENV{QUERY_STRING}||FrontPage)=~
/$w/;$f=script_name;open(F,'+'.(-f$p?'<':'>').$p)||die;eval{flock F,2};read F,$
m,-s$p;$_=escapeHTML$m=param(z)||$m;seek F,0,0;print F$m;close F;$_.=hr.ul map{
li"".localtime time-86400*-M,$_}sort{-M$a<=>-M$b}grep{/$w$/}glob'*';s/$w/a{href
=>"$f?$1"},$1/ge;put header,start_html($p),h1($p),startform(0,"$f?$p"),textarea
(z,$m,6,60),br,submit,endform,hr,pre($_),end_html
1-
あと 370 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.013s