七行プログラミング (452レス)
七行プログラミング http://medaka.5ch.net/test/read.cgi/php/1036141603/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: nobodyさん [] 02/11/01 18:06 ID:umVq3FGM ・7行×79文字 ・Perl どうぞ。 http://medaka.5ch.net/test/read.cgi/php/1036141603/1
2: マリモーマ ◆jbBCmetwgw [] 02/11/01 18:28 ID:HKLNcbVm 2GET 7行だけなら 何もできない罠 http://medaka.5ch.net/test/read.cgi/php/1036141603/2
4: nobodyさん [] 02/11/01 18:39 ID:oU5vKkbM とりあえず7行でカウンタを作ろう http://medaka.5ch.net/test/read.cgi/php/1036141603/4
7: nobodyさん [0] 02/11/01 18:52 ID:??? #!/usr/local/bin/perl if (>>1 = "バカ") { print "イッテヨシ"; } else { print "マターリしましょう"; } http://medaka.5ch.net/test/read.cgi/php/1036141603/7
10: nobodyさん [sage] 02/11/01 19:53 ID:??? ワーイ 3行にナッター 有難う。 まだまだperl勉強中の身ですー http://medaka.5ch.net/test/read.cgi/php/1036141603/10
43: nobodyさん [sage] 02/11/03 18:38 ID:??? >>24 を発展させてみた。一行掲示板。 --- 7bbs.cgi --- #!/usr/local/bin/perl $l='7bbs.log';if(read STDIN,$_,$ENV{'CONTENT_LENGTH'}){for(split/&/){$_=(split /=/)[1];tr/+/ /;s/%([a-f\d]{2})/pack'H2',$1/egi;push@r,$_}@r=(''.localtime,@r); open F,"+<$l";flock F,2;@l=(join(': ',@r),"<br>\n",<F>);truncate F,0;print F @l[0..49]}open F,$l;print join('><input type=',"Content-type: text/html\n\n". '<title></title><form action=7bbs.cgi method=post','text name=n','text name=w', 'submit></form>'),<F> ---------------- 新しい順に表示。50件まで保存。 >>41 ネタが被るねぇ。ゴメンね。(´・ω・`) http://medaka.5ch.net/test/read.cgi/php/1036141603/43
100: nobodyさん [sage] 02/11/29 08:04 ID:??? rename の仕方: 変更したいファイルにチェック、textfield に変更後の名前を入れて MV http://medaka.5ch.net/test/read.cgi/php/1036141603/100
128: ◆PAmX3cjLtw [] 03/04/18 15:48 ID:yrVQyLZr 俺も作ってみた。 2chモドキの掲示板です。ログファイル F が必要。 URLと、発言番号への自動リンクがありますが、使い物になるかどうか・・・。 Win98のPWSとLinuxのApacheで動作を確認しました。。。 ------------ 7ch.cgi ----------------- #!/usr/bin/perl use CGI':all';*i=*param;$n=i N;$m=i M;$t=i T;open F,'+<F';eval{flock F,2};1 for <F>;$.++;if($t){$_=$t;s/</</g;$h='<a href=';s!(https?://.+?)$!$h$1>$1</a>!mg ;s!>>(\d+)!$h#$1>>>$1</a>!g;s/\n/br/eg;seek F,0,2;print F dt("$. :".b(a{href=> $m?"mailto:$m":undef,name=>$.},$n||='名無しさん'),':'.localtime),(dd $_.br.br) ."\n"}seek F,0,0;*x=*textfield;print header(-charset=>''),start_html(-style=>' body{background:#eee}b{color:green}').startform,dl(<F>),hr,submit('書き込む'),' 名前:',x(N),' E-mail:',x(M),br,textarea(T,'',5,70,1),endform.end_html; -------------------- 結構つかれた・・・。 http://medaka.5ch.net/test/read.cgi/php/1036141603/128
135: nobodyさん [sage] 03/04/19 12:54 ID:??? ライブラリをつかってよいのなら、主要な処理はライブラリに書けば数文字でかけますね。 http://medaka.5ch.net/test/read.cgi/php/1036141603/135
174: nobodyさん [] 03/12/01 20:35 ID:lEOu0k9S モジュールありだったらいくらでも短くできるのでは? http://medaka.5ch.net/test/read.cgi/php/1036141603/174
175: nobodyさん [] 03/12/01 23:22 ID:i/vnv4B8 #!/usr/bin/perl #7blosxom.cgi use CGI':all';use File::Find;($p,$y,$m,$d)=grep/^\D+$/,(@i=split'/',path_info), grep/^\d+$/,@i;find sub{($f=$File::Find::name)=~/\.txt$/and $e{$f}=-M},"./$p"; put header,start_html;for(sort{$e{$a}<=>$e{$b}}keys%e){($c,$x,$z)=(localtime( time-86400*$e{$_}))[3..5];if(!($y&&$y!=$z+1900||$m&&$m!=$x+1||$d&&$d!=$c)&&-f&& open F,$_){s/^\.\///;chomp($t=<F>);put h2 a({href=>url."/$_"},$t),pre<F>,hr; close F}}put end_html __END__ 変更点 < shift@i はいらなかった。 < [5,4,3] をスライスに変更。 < 変数をまとめて宣言。 >174 そうだね。過去ログを読めばわかる通り、それは人によって意見がわかれる所。標準モジュールはokとか。 自分は、モジュールを使っても既存のリソースの有り合わせでおもしろいものが出来ればいいなと思ってる。 wikiもCPANのWiki::関連のモジュールを使えば制限内でも、もっと機能追加出来そうだし。 ただし、短くするためにわざわざモジュールを作る気はなし。 http://medaka.5ch.net/test/read.cgi/php/1036141603/175
182: nobodyさん [] 03/12/03 06:43 ID:4m1BwtbU >175 $p の指定に不具合あり。join忘れてた。 use CGI':all';use File::Find;$P=join'/',grep/^\D\w*$/,(@i=split'/',path_info);( $Y,$M,$D)=grep/^\d+$/,@i;find sub{($d,$m,$y)=(localtime($t=(stat)[9]))[3..5];!( !($Y&&$Y-$y-1900)&&!($M&&$M-$m-1)&&!($D&&$D-$d)&&/\.txt/&&(!$i[-1]||/^$i[-1]$/) )or$e{$File::Find::name}=$t},"./$P";put header,start_html;for(sort{$e{$b}<=>$e{ $a}}keys%e){open F,$_;s/^\.//;chomp($h=<F>);put h2(a{href,url.$_},$h),pre<F>,hr ;close F}put end_html; 若干仕様変更。 - カテゴリ名は /^\D\w*$/ - ファイルの指定は、PATH_INFO の末尾のみ有効。 - findの対象はカレントディレクトリ以下のみ。(絶対パス指定できるのは、流石にちょっと BTW,ファイルハンドルってスコープ抜けたら勝手にcloseされるんだっけ?perlって。 http://medaka.5ch.net/test/read.cgi/php/1036141603/182
186: nobodyさん [sage] 03/12/03 23:13 ID:??? 7blosxom.cgi l10n for Japanese start_html に -title=>$0 入れると7行に収まらなかった(苦)。 #!/usr/bin/perl use CGI':all';use File::Find;($Y,$M,$D)=grep/^\d+$/,@i=path_info=~m|/([^/]+)|g; $R=$i[-1]=~/\.txt$/?pop@i:'\.txt';find sub{($d,$m,$y)=(localtime($t=(stat)[9])) [3..5];$e{$File::Find::name}=$t if!($Y&&$Y-$y-1900)&!($M&&$M-$m-1)&!($D&&$D-$d) &/$R$/},$P=join('/','.',grep!/\.\.|^\d+$/,@i);put header(-charset=>$c='EUC-JP') ,start_html(-encoding=>$c,lang,ja);for(sort{$e{$b}<=>$e{$a}}keys%e){open F,$_; s/^\.//;chomp($h=<F>);put h2(a{href,url.$_},$h),pre<F>,hr}put end_html >>182 '..' さえ防いだら大丈夫な気も… 既に開かれてるファイルハンドルを open し直すと、開いていたファイルは close されてから新しいファイルを open するので、close は明示しなくても 可な筈。 http://perldoc.com/perl5.8.0/pod/func/close.html http://medaka.5ch.net/test/read.cgi/php/1036141603/186
200: nobodyさん [sage] 03/12/05 22:30 ID:??? マ板から誘導されました。 既出と承知しつつ、1行掲示板です。 一応、名前と本文両方がないとはじく機能と、投稿日付つき。 (4行目の $t[4]/$t[3] を $t[2]:$t[1] にすれば、手動リロードの 簡易チャットにもなります。名前毎回入れるの面倒だけど。笑) ファイル名は lb.cgi、パーミッション755で置けばいきなり稼動可能です。 #!/usr/bin/perl $l='log.dat';@t=localtime();$t[4]++;use CGI;$q=new CGI;$d=$q->param('n'); $e=$q->param('h');($d&&$e)and &g;&p;exit;sub g{&i;open F,">$l";flock(F,2);print F "$t[4]/$t[3]:$d<BR>$e<HR>\n",@b;close F;}sub p{&i;print"Content-Type:text/h" ,"tml\n\n一行掲示板<FORM METHOD=POST ACTION=\"lb.cgi\" NAME=1>名前<INPUT TYPE=" ,"TEXT SIZE=20 NAME=n><BR>本文<INPUT TYPE=TEXT SIZE=60 NAME=h><BR><INPUT TYPE=" ,"SUBMIT VALUE=\"送信\"></FORM><HR>",@b;}sub i{open F,"$l";@b=<F>;close F;} http://medaka.5ch.net/test/read.cgi/php/1036141603/200
234: nobodyさん [] 04/01/20 15:14 ID:F518czSp 激しく板違いなんですけど for(@LOG){ my($no,$dammy)=split(/<>/,$_); for(@LOG){ my($no2,$dammy)=split(/<>/,$_); if($no eq "$no2"){ print "LOG"; for(@LOG){ my($no3,$dammy)=split(/<>/,$_); if($no2 eq "$no3"){ print "LOG"; } } } } } を一回のforルーチンで済ますことってできますか? http://medaka.5ch.net/test/read.cgi/php/1036141603/234
266: nobody [] 04/03/04 17:41 ID:yJd59Upc accesslog.cgi - 7行アクセス解析。 SSIで埋め込むことで記録。例:<!--#exec cgi="accesslog.cgi"--> データを見るときは http://○○/accesslog.cgi?20040304&MSIE 6 みたいにパラメータ’日付 & 検索文字列(省略可))を渡して呼び出します。 正直perl歴はまだ半年で、テクニック的なものは使えないのでこの程度です。 #! /usr/bin/perl sub z{local(*z)=$_[0];$z=~s/^(\d)$/0$1/;}print"Content-Type:text/plain\n\n";%e= %ENV;$q=$e{'QUERY_STRING'};($s,$n,$h,$d,$m,$y)=localtime;$y+=1900;$m++;z(*m);z( *d);z(*h);z(*n);z(*s);if(!$q){open(F,">>$y$m$d.txt");print F "$h$n$s<>$e{'REMOTE_ADDR'}<>$e{'HTTP_USER_AGENT'}<>$e{'HTTP_REFERER'}\n";}else{ ($p,$k)=split(/&/,$q);open(F,"$p.txt");while(<F>){$c++;if($_=~/$k/){print;$t++; }}print"\n全$c件/ヒット$t件\n";}close(F); http://medaka.5ch.net/test/read.cgi/php/1036141603/266
274: 7wiki [sage] 04/03/14 15:28 ID:??? use CGI":all";charset$c="EUC-JP";$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=( );($p)=path_info=~/$w/;$p||=FrontPage;request_method=~PO&!($m=param z)&&unlink$ p;open F,$m?">$p":$p;eval{flock F,2};print F$m||=<F>;$_=pre(escapeHTML$m).hr.ul map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/^$w$/&-f,<*>;s|$w|(!-f$1 &&$1).a{href,"$f/$1"},-f _?$1:"?"|eg;put header,start_html(-title=>$p,encoding, $c,lang,ja),h1($p),startform(0,"$f/$p"),p(textarea(z,$m,6,60),br,submit), endform,hr,$_,end_html ・「〜/7wiki.cgi/」に対応。 http://medaka.5ch.net/test/read.cgi/php/1036141603/274
300: 7telnetd [sage] 04/03/25 10:13 ID:??? cd 実装。 #!/usr/bin/perl use IO::Socket;$S=new IO::Socket::INET(Listen,1,LocalPort,1029,Reuse,1);sub p{ print$C @_}sub g($){($_=getc$C)eq pop}$n="\x0D\x0A";{binmode($C=$S->accept);$e= 1;$b='';p$p='$ ';{g"\xFF"?g"\xF7"?chop$b:/\xF8/?($b=''):/[\xFB-\xFE]/?do{$c=ord ()-251;g"\x01"?($e=$c&2):/\x22/?($c&1or$e=0):($c=1);p pack(C2,255,250+(4,2,2,4, 3,2,1,4)[$c&1?$c:$c+4]),$_}:0:/\x00/?(($_,$b)=$b,s/[$n]+\z//,/^exit$/&&last,p$n ,(/^cd\s+/?chdir$':map{s/\s+\z/$n/;$_}`$_`),$p):(/\x08/?chop$b:($b.=$_),/[$n]/ ||$e&&p$_);redo}close$C;redo} http://medaka.5ch.net/test/read.cgi/php/1036141603/300
355: nobodyさん [sage] 05/02/06 00:29:37 ID:??? じゃぁ、phpで7行wiki <? require("Text/Wiki.php");require("Cache/Lite.php");$c=&new Cache_Lite(); $s=$_SERVER[PHP_SELF];$g=$_GET;$b=&$_POST[b];$n=$g[n]?$g[n]:"FrontPage";$b&& $c->save($b,$n)&&header("Location: $s?n=$n");($b=$c->get($n))||$g[c]=e; $h="<h1>$n</h1>";if($g[c]==e)$h.="<form method=post action='?n=$n'>". "<textarea name=b rows=30 cols=80>$b</textarea><input type=submit>"; else{$w=&new Text_Wiki;$w->setRenderConf(xhtml,wikilink,new_url,"?n=%s"); $h.=$w->transform($b,xhtml)."<hr><a href='?c=e&n=$n'>e";}?><html><body><?=$h?> PEAR::Text_Wikiが必要。Cache_LiteはPEARにデフォルトで入ってる気がする。 あとshort_open_tag=Onでよろしく。 整形ルールは ttp://wiki.ciaweb.net/yawiki/index.php?area=Text_Wiki&page=SamplePage 日本語のwikinameは使えなかったりする。これはText_Wikiが対応していないせい。 http://medaka.5ch.net/test/read.cgi/php/1036141603/355
365: nobodyさん [sage] 2006/01/21(土) 13:50:12 ID:??? #!/usr/bin/perl my@d=([qw/? ? ? ? ? ? ? ? ? ? ? ? ? ?/],[qw/☆ △ ■/]); my$c='Shift_JIS';my$l='ja';use CGI':standard';my@r=(0)x@d; print header(-charset=>$c),start_html(-encoding=>$c,-lang=>$l),start_form, (map{my$i=$_;ul li[(map{$r[$i]+=param($_);$_.textfield -name=>$_}@{$d[$i]}), "計 $r[$i]"]}0..$#d),ul(li"$r[1]÷$r[0]=".eval{$r[1]/$r[0]}),submit,end_form, end_html; http://medaka.5ch.net/test/read.cgi/php/1036141603/365
378: 376 [sage] 2006/01/23(月) 21:15:02 ID:??? ($f,$s,$r,@p)=qw/file 8 1 _ ● 〇/;use Storable;use CGI':all';sub f{$u=1;my($y ,$x,$c)=@_;if(0>($t=$r*$m[$y][$x])){$m[$y][$x]*=f($y+$p,$x+$n,1)}elsif($c&$t){ $u=-1;$z++}$u}$$_=param($_)%($s+1)for qw/x y/;@m=map[(0)x($s+1)],0..$s+1;map$m[ $s/2+$_/2][$s/2+$_%2]=$_%3?1:-1,0..3;($r,@m)=@{retrieve$f}if-s$f;$o=\$m[$y][$x] ;if($y&&$x&&!$$o){for(0..7){($p,$n)=map sprintf('%.f',$_),sin($i=$_*0.78),cos$i ;f$y+$p,$x+$n}$$o=$r,$r*=-1 if$z}store[$r,@m],$f;charset '';print header,$p[$r] ,table Tr[map{$i=$_;td[map a({href,"?y=$i&x=$_"},$p[$m[$i][$_]]),1..$s]}1..$s] 括弧はずしすぎでバグっていたので修正 ファイル名省略すると Lynx じゃ動かないね。 http://medaka.5ch.net/test/read.cgi/php/1036141603/378
379: nobodyさん [sage] 2006/01/23(月) 21:31:39 ID:??? >>378 パスできない仕様はどうかと。 ファイルに記録するより Cookie にでも持たせた方がいいんじゃない? 参考に C の6行オセロを Perl に移植してみた。 オリジナルより数 byte 大きい。 ;-) #!/usr/local/bin/perl sub K{$m[$p]||do{for(@m[0..7]){$v=$p+$_;$v+=$_ while$m[$v]==9-$t;if($v-$p-$_&&$ m[$v]==$t&&($a=$s=$v=$p,$d)){{$m[$v]=$t;$m[$v+=$_]-$t&&redo}}}}}@m[40,41,49,50, 0..7]=(3,6,6,3,-10..-8,-1,1,8..10);$s=$t=3;@c=(qw(・ ○ ●),$/);while($s-1){$_% 9?K$p=$_:($m[$_]=9),print$c[$m[$_]/3]for 9..81;$a?($a=$d=$p=9):$s?($s=0,print "pass\n"):++$s;K$p+=$t-6?(($p,$_)=<>=~/\d/g,$_*9):1until$a-9;$t=9-$t;$a=$d=0} http://medaka.5ch.net/test/read.cgi/php/1036141603/379
416: ◆GodofTripY [sage] 2006/08/01(火) 01:25:49 ID:??? ($name, $tripkey) = split(/\#(.+)/, $form{'name'}); if($tripkey){ $salt = substr($tripkey.'H.', 1, 2); $salt =~ tr/\x3A-\x40\x5B-\x60\x00-\x2D\x7B-\xFF/A-Ga-f./; $salt =~ s/[^\.-z]/\./g; $trip = '◆'. substr(crypt($tripkey, $salt), -10);} print "$name$trip"; 2chトリップ判定。 http://medaka.5ch.net/test/read.cgi/php/1036141603/416
438: nobodyさん [sage] 2007/12/01(土) 02:02:19 ID:??? 月次移動可能なカレンダー。c.phpで保存。 <?php $a=q("Y-m-t","$_GET[y]-1");$d=explode("-",$a);$y="<a href=?y=";$v=$d[0]; $w=$d[1];$z="</tr><tr>";$m="$v-$w";$p=q("Y-m",$w-1,1,$v);$n=q("Y-m",$w+1,1,$v) ;echo"<html>$y$p><</a>$m$y$n>></a> $y c.php>now</a><table border=1><tr>$z";$f= q("w","$m-1");for($i=-6-$f;$i<$d[2]-q("w",$a)+7;$i++){echo($i<1-$f)?"<th>".q( "D",$w,$i,$v)."</th>":(($i<1||$i>$d[2])?"<td></td>":"<td>$i</td>");if(($i+$f)% 7==0)echo$z;}echo"</tr></table></html>";function q($x,$w,$i=0,$v=0){return($i) ?date($x,mktime(0,0,0,$w,$i,$v)):date($x,strtotime($w));}?> http://medaka.5ch.net/test/read.cgi/php/1036141603/438
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s