七行プログラミング (452レス)
上下前次1-新
296: 04/03/24 11:46 ID:/Yo7kiNa(1) AAS
#! perl
use CGI":all";charset$c='EUC-JP';opendir H,".".($d=path_info);while($_=readdir
H){if(!/^\.+$/){$l.=li a{href,script_name."$d".(-d".$d/$_"?"/":"?").$_},$_}}if(
request_method=~/P/){open H,">.$d/".($n=param F);$_=param T;s/\r\n|\r[^\n]/\n/g
;print H}if(open H,".$d/".($q=$ARGV[0])){$f.=$_ while<H>}put header,start_html(
-title=>"7editor",encoding,$c,lang,ja),h1($d||"/"),ul($l),startform(-onSubmit=>
"return confirm('OK?')"),p(textfield(F,$q),br,textarea(T,$f,9,82),br,submit),endform,end_html
ディレクトリを移動できるように
「.」「..」は非表示
h1要素は現在位置を表示
スクリプト名は自由(7editorじゃなくても可)に
でも14文字ほどハミ出た。
297: 04/03/24 14:15 ID:??? AAS
use CGI":all";charset$c='EUC-JP';($d=path_info)=~s|/*$|/|;if(request_method=~PO
){open H,">.$d".($n=param F);$_=param T;s/\x0D\x0A/\n/g;tr/\r/\n/;print H}$/=()
,$f=<H>if open H,".$d".($q=pop);opendir H,".$d";$l.=li a{href,url.$d.(-d".$d$_"
?$_:"?$_")},$_ for grep!/^\.+$/,readdir H;put header,start_html(-encoding=>$c,
lang,ja,Title,"7editor"),h1($d),ul($l),startform(-onSubmit=>"return confirm(
'OK?')"),p(textfield(F,$q),br,textarea(T,$f,9,82),br,submit),endform,end_html
298: 04/03/24 15:33 ID:??? AAS
・.で画面リロード、..で親DIRへ移動
・ディレクトリはお尻に「/」
use CGI":all";charset$c='EUC-JP';($d=path_info)=~s|/*$|/|;if(request_method=~PO
){open H,">.$d".($n=param F);$_=param T;s/\x0D\x0A/\n/g;tr/\r/\n/;print H}$/=()
,$f=<H>if open H,".$d".($q=pop);opendir H,".$d";$l.=li a{href,url.$d.(($h=-d".$
d$_")?$_:"?$_")},($_.($h&&"/"))for readdir H;put header,start_html(-encoding=>$
c,lang,ja,Title,"7editor"),h1($d),ul($l),startform(-onSubmit=>"return confirm(
'OK?')"),p(textfield(F,$q),br,textarea(T,$f,9,82),br,submit),endform,end_html
299: 04/03/24 20:28 ID:??? AAS
#!/usr/bin/perl
use IO::Socket;$S=new IO::Socket::INET(Listen,1,LocalPort,1029,Reuse,1);sub p{
print@_}sub g($){($_=getc$C)eq pop}$n="\x0D\x0A";sub o{$c=pop;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]),
$_}{binmode($C=$S->accept);select$C;$e=1;$b='';p$p='$ ';{g"\xFF"?g"\xF7"?chop$b
:/\xF8/?($b=''):/\xFB/?o 0:/\xFC/?o 1:/\xFD/?o 2:/\xFE/?o 3:0:/\x00/?do{$b=~s/[
$n]+\z//x;"exit"eq$b&&last;s/\s+\z/$n/for@o=`$b`;p$n,@o,$p;$b=''}:(/\x08/?chop$
b:($b.=$_),/[$n]/||$e&&p$_);redo}close$C;redo}
外部リンク[html]:www5e.biglobe.ne.jp を読みながら色々
実装してみるも、>>207 に負けてる telnetd 。;)
動作確認:
TeraTermPro → Win98SE (command.com + KI-Shell)
TeraTermPro → FreeBSD 4-STABLE (tcsh)
telnet(1) (line mode) → Win98SE (command.com + KI-Shell)
telnet(1) (line mode) → FreeBSD 4-STABLE (tcsh)
TODO: cd
300(3): 7telnetd 04/03/25 10:13 ID:??? AAS
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}
301: クダランけど 04/03/25 11:06 ID:??? AAS
■ 7jump.cgi(ime.nuクローン)
外部リンク:hoge.com スキーマ指定可能
外部リンク:hoge.com 省略時は外部リンク:
#! perl
use CGI":all";charset$c='EUC-JP';$_=path_info;s|^/||;s/\"/"/g;s/\'/?/g
;s/</</g;s/>/>/g;s/&(?![\#0-9a-zA-Z]+;?)/&/g;$_="http://$_"if!/:/;($m
,$a)=<DATA>;put header,start_html(-title=>"7jump",encoding,$c,lang,ja),p(strong
(a{href,$_},$_).br.$m),hr,address($a),end_html;
__DATA__
別のサイトにジャンプしようとしています。宜しければ上記のリンクをクリックしてください
Powered by WebProg
302: 実体参照忘れてたスマソ 04/03/25 11:08 ID:??? AAS
#! perl
use CGI":all";charset$c='EUC-JP';$_=path_info;s|^/||;s/\"/"/g;s/\'/'/g
;s/</</g;s/>/>/g;s/&(?![\#0-9a-zA-Z]+;?)/&/g;$_="http://$_"if!/:/;($m
,$a)=<DATA>;put header,start_html(-title=>"7jump",encoding,$c,lang,ja),p(strong
(a{href,$_},$_).br.$m),hr,address($a),end_html;
__DATA__
別のサイトにジャンプしようとしています。宜しければ上記のリンクをクリックしてください
Powered by WebProg
303: 04/03/25 11:55 ID:??? AAS
use CGI":all";charset$c='EUC-JP';$_=path_info;/:/?s|^/||:($_="http:/$_");put
header,start_html(-Title,"7jump",encoding,$c,lang,ja),p(strong(a{href,$_},
escapeHTML$_).br.<DATA>),hr,address(<DATA>),end_html
304: 04/03/29 10:25 ID:??? AAS
巻き戻り分。
304 :7uploader :04/03/25 21:16 ID:???
use CGI":all";$CGI::POST_MAX=1<<20;$/=\4096;chdir D;sub v{open(F,pop)?binmode F
:die}if(($f=upload f)=~/\.\w+$/){v">".time.$&;print F while<$f>;close F}++$i<51
?push@f,$_:unlink for sort{$b<=>$a}<*>;($_=param d)?(v($_),put header(-type,
'application/octet-stream',Content_length,-s,attachment,$_),<F>):put(header,
start_html,start_multipart_form,filefield(f),submit,endform,table({border,1},Tr
[map{td[a({href,"?d=$_"},$_),''.localtime+(stat)[9],(-s>>10).KB]}@f]),end_html)
・ファイルサイズを KB で表示。
305(1): Unit7.pm 04/03/29 10:31 ID:??? AAS
#!perl
if(!caller){my$p=pop;eval"use $p;1"?new$p->run:die$@}package Unit7;sub p{print"
@_\n"}sub new{bless{},shift}sub run{$N=$O=0;for(grep/^test/,keys%{ref($s=shift)
."::"}){$T=$n=$o=0;$N++;set_up$s;$s->$_();tear_down$s;$n-$o||$O++;$T||p"$N) $S"
;print"$o/$n ok\n"}p$N-$O?("Run: $N, Failures:",$N-$O):"OK ($N tests)"}*set_up=
*tear_down=sub{};sub assert{($s,$f,$m)=@_;($S)=(caller 1)[3]=~/\w+$/g;$n++;$o++
,return if$f;$T++||p"$N) $S";print"\t$m\n"}$VERSION=1.00
・出力フォーマットの変更
・簡易 TestRunner.pl を内包 (> perl ./Unit7.pm My::TestCase::Class)
306: Store7.pm 04/03/29 14:12 ID:??? AAS
package Store7;use Symbol;sub E{$_=pop;s/['\\]/\\$&/g;"'$_'"}sub D{local$_=ref(
my$f=pop);/SCALAR/?E$$f:/ARRAY/?"[".join(',',map{D($_)}@$f)."]":/HASH/?"{".join
(',',map{E($_),D($f->{$_})}keys%$f)."}":E$f}$O='{open($f=gensym,$m.pop)||die if
$m="';$E='local$/;(eval<$f>';$P='print$f D pop;1';$F='eval{flock$f';$L='lock_';
use base Exporter;$C=',close$f';$G='{$f=pop;';$M='}sub ';@EXPORT=($S='store',$R
='retrieve');@EXPORT_OK=($S.'_fd',"fd_$R",$L.$S,$L.$R);eval qq/sub $R$O<";$E$C
)[0]$M$L$R$O<";$F,1};$E$C)[0]$M\fd_$R$G$E)[0]$M$S$O>";$P$C$M$L$S$O>";$F,2};$P$C
$M$S\_fd$G$P}/;$VERSION=1.00
・store_fd 、lock_store 、fd_retrieve 、lock_retrieve 実装
>>260
s/['\\]/\\$&/g でマズい例ってどんなのでしょう?
308: SevenLines の中の人 04/04/16 12:18 ID:??? AAS
ダメ出しが無いようなので 7telnetd (>>300) と Unit7 (>>305) を載せました。
(個人的な)TODO: 7ch と 7thread の転載体裁整え > Store7 > 7vote
128 氏もライセンス GPL にしちゃっていいんでしょか?
ご自身のサイトをお持ちでそちらで公開されるなら、SevenLines から
リンクさせてもらいますよと言ってみるテスト。
309: Store7.pm 04/04/19 14:35 ID:??? AAS
縮め。
package Store7;use base Exporter;use Symbol;sub E{$_=pop;s/['\\]/\\$&/g;"'$_'"}
@EXPORT=($S=store,$R=retrieve);$L=lock_;@EXPORT_OK=($S.'_fd',"fd_$R",$L.$S,$L.$
R);sub D{local($_,$")=(ref(my$f=pop),',');/^S/?E$$f:/^A/?"[@{[map{D($_)}@$f]}]"
:/^H/?"{@{[map{E($_),D($f->{$_})}keys%$f]}}":E$f}$M='}sub ';$P='print$f D pop;1
';($E,$C,$F,$G)=qw|local$/;(eval<$f> ,close$f eval{flock$f {$f=pop;|;$O='{open(
$f=gensym,$m.pop)||die if$m="';eval qq/sub $R$O<";$E$C)[0]$M$L$R$O<";$F,1};$E$C
)[0]$M fd_$R$G$E)[0]$M$S$O>";$P$C$M$L$S$O>";$F,2};$P$C$M$S\_fd$G$P}/;$VERSION=1
310: SevenLines の中の人 04/04/21 09:33 ID:??? AAS
7ch と 7thread を GPL でパッケージング & Store7 を載せました。
README の変更等ありましたら作業用 uploader の方へお願いします。
311: おうら 04/05/12 22:12 ID:3q/C0Ti+(1) AAS
リファーを残さずにリダイレクト。JavaScript Off でも動作可能なコード
#! /bin/ksh
# リダイレクト
if [ "$QUERY_STRING" ]; then echo "Pragma: no-cache
Refresh: 0; URL=QUERY_STRING\n"; exit; fi
# エラー出力
echo "Content-Type: text/html\nPragma: no-cache\n\n<html><head>
</head><body>\nリンク先を指定して下さい\n</body></html>"
リファーについて参考にしたページ
外部リンク:www.teria.com
312: おうら 04/05/12 22:16 ID:??? AAS
うぐぅ。上のコード URL=QUERY_STIRNG に $ が抜けてました。
URL=$QUERY_STRING と見て下さい。
313: 7vote 04/05/12 22:40 ID:??? AAS
仕様変更無しでザッと縮め。
use CGI":all";*P=*param;charset$c='EUC-JP';chdir V;($F)=P(f)=~/^(\d+)$/;if(open
F,"+<$F"){eval{flock F,2};$t=<F>;/\t/and$D{$`}=$'+0while<F>;($n=P(n))?$D{$n}||=
1:($v=P(v))&&$D{$v}++,seek(F,0,0),print F"$t\n",map"$_\t$D{$_}\n",keys%D if
request_method=~PO}$L{$K[$i++]}=$_ for radio_group(v,[@K=sort{$D{$b}<=>$D{$a}}
keys%D]);put header,start_html(-Title,$t,encoding,$c,lang,ja),h1($t),startform,
table({},Tr[map{td["$L{$_}($D{$_})",hr{width,$D{$_}}]}@K]),hr,p(textfield(n),
hidden(f,$F),submit),endform,end_html
・hr のグラフは微妙。
・既に存在する選択肢への投票は、選択肢自体をクリックできた方がより直感的か?
314(1): 04/05/15 10:22 ID:??? AAS
open(IN, $ARGV[0].".txt");@lines = <IN>;close(IN);
foreach $line (@lines)
{if( $line =~ / [a-z0-9]{32}/ ){$hash .= $line;}}
open(OUT, ">hash".$ARGV[0].".txt");
print OUT $hash;close(OUT);
WinnyBBS の内容を全部コピペ。テキストファイルに保存。
↓
その中からハッシュを摘出。テキストファイルに出力。
315: 04/05/15 14:15 ID:??? AAS
>>314
perl -ne "/ [0-9a-z]{32}/ && print" in.txt > out.txt
grep " [0-9a-z]\{32\}" in.txt > out.txt
316(1): 04/06/11 10:54 ID:iPrFu4uN(1) AAS
# 最近、下がり気味なので保守ついでに
package BEncode7;use base Exporter;@EXPORT=qw/bencode bdecode/;sub bencode($){
my$i=pop;ref$i eq'HASH'?"d@{[join('',map{bencode($_).bencode($i->{$_})}keys%$i)
]}e":ref$i eq'ARRAY'?"l@{[join('',map{bencode($_)}@$i)]}e":$i=~/^([+-]?\d+)$/?
"i${i}e":length($i).":$i"}sub bdecode{local$_=pop;(/^d(.+)e$/s)?{bdecode($1)}:(
/^l(.+)e$/s)?[bdecode("$1")]:(s/^i?([+-]?\d+)e//)?(int("$1"),bdecode($_)):(
/^(\d+)/&&s/\d+\:(.{$1})//s)?("$1",bdecode($_)):undef}7
Convert::BEncodeの7行版。bittorrent等で使われているフォーマット。
317: 04/06/13 17:48 ID:??? AAS
>>316
それだとテスト (001_basic.t) 通らないから、
オリジナルからザックリ縮め直してみたよ。
package Bencode7;use strict;use bytes;use base"Exporter";*bencode=*E=sub{no
locale;my$i=pop;ref$i eq"HASH"?join("","d",map(E($_).E($i->{$_}),sort keys%$i),
"e"):ref$i eq"ARRAY"?join("","l",map(E($_),@$i),"e"):$i=~/^\d+$/?"i${i}e":
length($i).":$i"};sub D{my$c=pop;my$i=shift@{$c};$i=~/d/?do{my%h;while(($i=
shift@{$c})ne"e"){unshift@{$c},$i;my$k=D($c);$h{$k}=D($c)}\%h}:$i=~/l/?do{my@l;
while(($i=shift@{$c})ne"e"){unshift@{$c},$i;push@l,D($c)}\@l}:$i=~/i/?do{my$n;
$n.=$i while($i=shift@{$c})ne"e";$n}:$i=~/\d/?do{my$n="";do{$n.=$i}while($i=
shift@{$c})=~/\d/;my$l="";$l.=shift@{$c}for 1..$n;$l}:$c}sub bdecode{D[pop=~
/./gs]}our($VERSION,@EXPORT_OK)=qw(0.01 bencode bdecode)
318(1): 04/07/14 16:53 ID:I7yo4p0b(1) AAS
お題。
外部リンク:www.webclap.com
6行くらいにはなると思う。
319(1): [age] 04/07/14 23:00 ID:??? AAS
ム板より
2chスレ:tech
こういうのはperlとかのが得意そうだったので。
320(1): 04/07/15 21:20 ID:??? AAS
while($act ne "ガッ"){
print "ぬるぽ\n";
$act = <STDIN>;
chomp($act);
}
print "撃退\n";
sleep(1);
321(1): 04/07/24 18:39 ID:??? AAS
これってphpじゃだめなん?
322: 04/07/24 18:52 ID:??? AAS
>>321
個人的には WebPlog らしいお題なら言語は何でも
いいと思うけど。てかこんなんはやった者勝ちかと。
323(2): 04/07/24 20:08 ID:??? AAS
とりあえずPHP5+SQLiteな一行掲示板。フォーム部分は分離させた。
<form action=bbs.php method=post>名前:<input type=text name=n>一言:<input type=t
ext name=t size=60><input type=submit value=送信></form>
<? $d=sqlite_open('l');$n=$_POST['n'];if(!@sqlite_query($d,'SELECT * FROM b;')){
sqlite_query($d,'CREATE TABLE b(n,t,d);');}$t=$_POST['t'];$z=date("Y/m/d H:i:s")
;if($n!=''&&$t!=''){$s="INSERT INTO b(n,t,d) VALUES(\"$n\",\"$t\",\"$z\");";sqli
te_query($d,$s);}print "<hr>";$r=sqlite_query($d,"SELECT * FROM b ORDER BY d DES
C");$c=0;while(($a=sqlite_fetch_array($r))&&$c<50){print htmlspecialchars($a['n'
]).":".htmlspecialchars($a['t'])."[".$a['d']."]<br><hr>\n";$c++;}sqlite_close($
d); ?>
DBファイルとテーブル勝手に作る方式。新着順、50件まで(ただしDBからは消してない)。
読みにくいけどSQLiteの使い方の勉強に…ならんか。
324: 04/07/24 20:14 ID:??? AAS
>>318
ちなみにそれ、アクセス解析機能もつけるのか?
325: 04/07/25 13:12 ID:??? AAS
>>323
GJ!
上下前次1-新書関写板覧索設栞歴
あと 127 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ アボンOFF
ぬこの手 ぬこTOP 0.010s