七行プログラミング (452レス)
上下前次1-新
240(1): nobodyさん [sage] 04/02/12 06:42 ID:??? AAS
 転載 
 #!/usr/bin/perl -w  
 # 526-byte qrpff, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu>  
 # MPEG 2 PS VOB file on stdin -> descrambled output on stdout  
 # arguments: title key bytes in least to most-significant order  
 $_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;  
 $_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=  
 unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>88(2): nobodyさん [sage] 02/11/01 19:29 ID:??? AAS
 #!/usr/bin/perl 
 my $logfile = './count.log'; 
 my $addr = $ENV{'REMOTE_ADDR'}; 
 open( FILE,"+<$logfile" ) or die; 
 flock( FILE, 2 ); 
 ( $_ = <FILE> ) =~ /^(.*?):(.*)$/; 
 my ( $count, $ip ) = ( $1, $2 ); 
 $count++ if $addr ne $ip; 
 seek( FILE, 0, 0 ); 
 print FILE "$count\:$addr"; 
 truncate( FILE, tell ); 
 close FILE; 
 print "Content-type: text/plain\n\n"; 
 printf( "%.5d", $count ); 
 exit; 
  
 自作のカウンターです。元はKENTですが原型無いです。 
 一応多重カウント防止、桁そろえします。 
 これなんとか7行にできそーなんだけど、どうでそう?  
^($f=($t=255)&($d  
 >>1212(2): nobodyさん [sage] 02/11/01 21:11 ID:??? AAS
 >>11 
 でも、読みにくいね  
^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9  
 ,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t  
 ^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))  
 [$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval  
241: nobodyさん [sage] 04/02/12 06:51 ID:??? AAS
 >>240 
 それがそもそもの始まりだったりする。 
 2chスレ:tech 
242: nobodyさん [] 04/02/16 23:08 ID:j3AvJVjF(1) AAS
 保守age。ついでに、あまり役に立ちそうにないTip 
 配列と配列サイズを同時に宣言 
 my $length_of_array = my @array = (1, 2, 3, 4, 5); 
243(2): 7wiki [] 04/02/18 20:32 ID:b6u9ly2x(1) AAS
  * Added 空投稿でPage削除 
  * Diet evalの{}外してみた。-1 byte 
  
 #!/usr/bin/perl -w 
 use CGI":all";charset$c='EUC-JP';$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=( 
 );($p)=(path_info||FrontPage)=~/$w/;($m=param z)||unlink$p;if(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?$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
244(1): nobodyさん [sage] 04/02/19 09:30 ID:??? AAS
 >>243 
 eval の {} は外せないですよ。 
 eval flock F,2; だと flock() の戻り値から成る文字列を eval する事に。 
 unlink の問題はあっちでも指摘されてますが。:o) 
245: 7uploader [sage] 04/02/19 11:44 ID:??? AAS
 順番的には先に telnetd を何とかしたいけど、検証が大変なので後回し。 
  
 #!/usr/bin/perl 
 use CGI":all";sub v{open(F,pop)||die;binmode F}$CGI::POST_MAX=1024000;$/=\4096; 
 chdir D;%f=map{$_,[a({href,"?d=$_"},$_),-s,''.localtime((stat)[9])]}@f=sort{-M$ 
 a<=>-M$b}<*>;$f{$f=upload f}or$f&&do{v">$f";print F$_ while<$f>;close F};$f{$F= 
 param d}?(v($F),put header(-type=>'application/octet-stream',Content_length,-s 
 $F,attachment,$F),<F>):put(header,start_html,start_multipart_form,filefield(f), 
 submit,endform,hr,table({border,1},Tr[th([qw/name size date/]),map{td$f{$_}}@f] 
 ),end_html) 
  
 ・windows 対応。 
 ・既存ファイルへの上書きを防止。但し upload 後自力 reload が必要に。 
  
 ファイル名は連番や時刻等にする方が安心且つ楽かな。 
246(2): nobodyさん [] 04/02/19 20:30 ID:mWwpYaYp(1) AAS
 >>244  
 あ、なるほど。それではevalの意味がなくなってしまう。 
 一応、事前に実験したんですが、検証方法が間違ってました。m(_ _) 
 フォローありがとうございます。 
  
 > unlink の問題はあっちでも指摘されてますが。:o)  
 あぁ、やってしまったぁ。試してくれた方ありがとう&&すみません。 
 ひとまず >>243は無効って事で、代案考えます。 
ところで、ライセンスや掲載許可みたいな事を尋ねられたのだけど、 
 wiki, や blosxom, はオリジナルと同じ GPL って事でいいかな? 
 実際、7wikiはYukiWiki, 7blosxomは初期のblosxomを参考にしたので。
247: SevenLines の中の人 [sage] 04/02/19 21:28 ID:??? AAS
 >>246 
 ライセンスやら何やらは原作者に尋ねるのがスジですが、初出が 
 2ch だけに連絡取り辛いですな。各スレで直接呼びかけるしか無いかも。 
  
 SevenLines で保守している作品については、各原作者と配布形態等を 
 逐一取り決めてはいないので、建前上あのような断り書きの縛りにして 
 います。拙作のは全部修正 BSD ライセンスで、アーカイヴにライセンス 
 文書も同梱してます。 
  
 ニーズがあるなら専用ドメイン取って、転送メールアドレスの提供ぐらいは 
 しますよん。:) >各原作者殿 
248(1): nobodyさん [] 04/02/20 22:48 ID:g/Yl/nab(1) AAS
 # 重要な事を書き忘れました。 
 246==7wiki, 7files, 7search, 7rss, 7blosxom, 7Unit, 7uploader, 7hoo 原作です。 
 (当然だけど、オリジナルではなくこのスレの7行版の方の、です) 
  
 掲載許可に関しては、手間のかからない方法で「連絡不要」って事でいいかな? 
 連絡先作って貰っても、どれほど需要があるかは自分にもわからないので。 
  
 ライセンスについては、 
 #!/usr/bin/perl -w -- "License: 外部リンク[txt]:www.gnu.org" 
 で、どぉでしょう?GPL以外でもいいけど  
249: 246 [] 04/02/22 02:18 ID:Sgt6pnb3(1) AAS
 >ライセンスの件 ...  
 自分が叩き台を出したとは言え、成果物はこのスレで参加者皆のものなので 
 出来れば他の方の意見も伺っておきたいのですが。特に異論がなければ、 
 >>248通り連絡不要/GPLという事にしたいと思います。 
 # もしくは、保守して下さってるサイトの管理者さんにお任せ。m(_ _ 
  
 # 7vote 
 use CGI':all';$p=POST;*P=*param;charset$c='EUC-JP';chdir V;($F)=P(f)=~/^(\d+)$/ 
 ;if(open F,"+<$F"){eval{flock F,2};$t=<F>;while(<F>){if(/^(.+)\t(\d+)$/){$D{$1} 
 =$2}}if(request_method==$p){($n=P(n))?$D{$n}||=1:($v=P(v))?$D{$v}++:0;seek F,0, 
 0;print F join("\n",$t,map{"$_\t$D{$_}"}keys%D)}}for(radio_group(v,[@K=sort{$D{ 
 $b}<=>$D{$a}}keys%D])){$L{$K[$i++]}=$_}put header,start_html(title=>$t,encoding 
 ,$c,lang,ja),h1($t),startform($p),table({},Tr[map{td["$L{$_}($D{$_})",hr{width 
 =>$D{$_}}]}@K]),hr,textfield(n),hidden(f,$F,force=>1),submit,endform,end_html 
  
 設定方法 
 1) ディレクトリV を作る。 mkdir V;chdir V 
 2) 題名を書いたファイルを作る。echo "What is your native language" > 00001 # ファイル名は番号で。 
 3) chmod 0666 00001 # 必要に応じてパーミッションの設定 
 ./7vote.cgi?f=00001 # ブラウザからアクセス 
250(1): SevenLines の中の人 [sage] 04/02/22 20:17 ID:??? AAS
 とりあえず 7wiki, 7files, 7search, 7rss, 7blosxom を GPL で 
 パッケージングしときました。README やライセンス文書の 
 和訳同梱までは手が回らなかったので、その辺はご希望が 
 あれば追々。 
  
 あー、ココに載せるにゃデカ目のファイルのやり取り用に 
 7uploader 改良して設置しますかのぅ(笑)。 
  
 7Unit, 7uploader, 7hoo もその内転載させてもらいますね。 
251(1): nobodyさん [sage] 04/02/22 23:23 ID:??? AAS
 7wiki と 7uploader 。どちらも shebang 無し七行ルールじゃないと辛いですな。 
  
 use CGI":all";charset$c='EUC-JP';$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=( 
 );($p)=(path_info||FrontPage)=~/$w/;if(open F,($m=param z)?">$p":$p){eval{flock 
 F,2};print F$m||=<F>;close F}param(d)eq"D"&&unlink$p;$_=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?$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,map{submit d,$ 
 _}Write,Delete),endform,hr,$_,end_html 
  
 ・削除機能の実装案。 
  
 use CGI":all";$CGI::POST_MAX=1024000;$/=\4096;sub v{open(F,pop)||die;binmode F} 
 chdir D;if($f=upload f){$f=~/\.\w+$/;v">".time.$&;print F$_ while<$f>;close F}$ 
 i++<20?push@f,$_:unlink for sort{-M$a<=>-M$b}<*>;($_=param d)?(v($_),put header 
 (-Content_length=>-s,attachment,$_,Type,'application/octet-stream'),<F>):put( 
 header,start_html,start_multipart_form,filefield(f),submit,endform,hr,table({ 
 border,1},Tr[th([qw/name date size/]),map{td([a({href,"?d=$_"},$_),''.localtime 
 ((stat)[9]),-s])}@f]),end_html) 
  
 ・ファイル名を time に。 
 ・最大保存数を設定可能に。 
252: nobodyさん [sage] 04/02/23 22:42 ID:??? AAS
 7wikiがすこし結城さんとかにとりあげられて話題になってるんですね。 
253: nobodyさん [sage] 04/02/24 00:00 ID:??? AAS
 >>251 
 7wiki 修正。 
 s/param(d)eq"D"/param(d)=~D/; 
 s/Delete/Del/; 
254(1): nobodyさん [sage] 04/02/24 10:13 ID:??? AAS
 >>250 
 ありがとうございます。7voteもついでによろしく。 
 7hooがまだ8行なのを先に何とかしたいけど、他のドキュメント類も暇みて整理してみます。 
  
 # 7wiki 削除機能案 B ... POSTで空投稿のときページ削除 
 use CGI":all";charset$c='EUC-JP';$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=( 
 );($p)=(path_info||FrontPage)=~$w;unlink$p if!($m=param z)&&request_method=~/PO 
 ST/x;(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?$1:"?"|eg;put header,start_html(-title=>$p 
 ,encoding,$c,lang,ja),h1($p),startform(POST,"$f/$p"),p(textarea(z,$m,6,60),br, 
 submit),endform,hr,$_,end_html  
  
 後、削れそうなとこといったら、charset'utf-8'にしてencodingはデフォルトにする 
 位かな。不便になるけど。それでもShebang込7行はちょっと難しそぉ。 
255: nobodyさん [sage] 04/02/24 12:35 ID:??? AAS
 >>254 
 こっちの方がシンプルですな。微妙に縮め。 
  
 use CGI":all";charset$c="EUC-JP";$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=( 
 );($p)=(path_info||FrontPage)=~/$w/;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?$1:"?"|eg;put header,start_html(-title=>$p,lang,ja, 
 encoding,$c),h1($p),startform(0,"$f/$p"),p(textarea(z,$m,6,60),br,submit), 
 endform,hr,$_,end_html 
256: nobodyさん [sage] 04/02/24 13:06 ID:??? AAS
 charset "utf-8"; にしても XML 宣言の encoding は iso-8859-1 のままなので、 
 start_html の encoding は外せませんな…。(CGI.pm v3.04) 
 iso-8859-1 && en-US なら楽勝。 
  
 use CGI":all";$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=();($p)=(path_info|| 
 FrontPage)=~/$w/;request_method=~PO&!($m=param z)&&unlink$p;open(F,$m?">$p":$p) 
 ,eval{flockF,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?$1:"?"|eg;put header,start_html(-title=>$p),h1($p),startform(0,"$f/$p"), 
 p(textarea(z,$m,6,60),br,submit),endform,hr,$_,end_html 
257: 7Hoo [sage] 04/02/24 22:23 ID:??? AAS
 use CGI":all";charset$c="EUC-JP";($p=path_info||Home)=~s!^/+|/+$!!g;chdir("./". 
 $p)||die;$F='.7hoo';if(@p=map{param$_}U,T,D){s/\s/ /g for@p;open F,">>$F";eval{ 
 flock F,2};$"="\t";print F"@p\n"}put header,start_html(-encoding=>$c,lang,ja, 
 Title,"7Hoo"),p(join" / ",map{a{href,url.($i.="/$_")},$_}split"/",$p),hr,ul(li[ 
 map{a{href,url."/$p/$_"},$_}grep-d,<*>]),open(F)&&hr.dl(map{@N=split/\t/;dt(a{ 
 href,$N[0]},b$N[1]),dd$N[2]}<F>),hr,startform(0,url."/$p"),p((map{textfield( 
 /(.)/,$_,40),br}Url,Title),textarea(D,"",3,40,1),br,submit,),endform,end_html 
  
 ・l10n 。 
 ・Home ディレクトリをスクリプトと同階層に用意。 
 ・カテゴリの table をやめて ul 一つに。 
 ・リンクリストを dl に。 
 ・登録フォームを常に表示。 
258(2): Store7.pm [] 04/02/27 22:01 ID:xssKWf0b(1) AAS
 package Store7;sub E{$_=shift;s/\\/\\\\/g;s/'/\\'/g;$_}@ISA='Exporter';@EXPORT= 
 @EXPORT_OK=qw/store retrieve/;sub store{open my$o,">$_[1]";print$o ''.d($_[0]); 
 }sub retrieve{do$_[0]}sub d{my$f=shift;my$e=ref$f;$e eq'SCALAR'?"'".E($$f)."'": 
 $e eq'ARRAY'?'['.join(',',map{d($_)}@$f).']':$e eq'HASH'?'{'.join(',',map{my$k= 
 $_;$_="'".E($k)."'=>".d($f->{$k})}keys%$f).'}':"'".E($f)."'"};use Exporter;1 
なんとか5行でStorable.pmと同じ使い方です(storeとretrieveだけ)。 
  
 store( \%hashとか\@array, 'data.txt' ); 
 $hash_ref = retrieve('data.txt'); 
259(1): nobodyさん [] 04/02/27 23:21 ID:aqbVKltF(1) AAS
 無造作に縮めてみる。 
  
 package Store7;@ISA=Exporter;@EXPORT=@EXPORT_OK=qw/store retrieve/;use Exporter 
 ;sub E{$_=pop;s/(\\|')/\\$1/g;$_}sub d{my$e=ref(my$f=pop);$e eq 'SCALAR'?"'".E$ 
 $f."'":$e eq 'ARRAY'?'['.join(',',map{d$_}@$f).']':$e eq 'HASH'?'{'.join(',', 
 map{"'".E($_)."'=>".d($f->{$_})}keys%$f).'}':"'".E($f)."'"}sub store{open my$o, 
 ">$_[1]";print$o d($_[0])}sub retrieve{do$_[0]} 
260(1): 258 [] 04/02/28 13:00 ID:GPwfHIuc(1) AAS
 >>259 
 \->\\したあと、'->\'しなければいけないので、s/(\\|')/\\$1/g;はマズイっぽいです。 
261(1): nobodyさん [sage] 04/02/29 22:04 ID:??? AAS
 package Store7;use base Exporter;@EXPORT=qw/store retrieve/;sub retrieve{do$_[0 
 ]}sub E{$_=pop;s/\\/\\\\/g;s/'/\\'/g;"'$_'"}sub d{my$e=ref(my$f=pop);"SCALAR"eq 
 $e?E$$f:"ARRAY"eq$e?"[".join(',',map{d($_)}@$f)."]":"HASH"eq$e?"{".join(',',map 
 {E($_),d($f->{$_})}keys%$f)."}":E$f}local*F;sub store{open F,">".pop;print F d 
 pop;close F}1 
  
 ・明示的に close しないとバッファに溜まったデータが print されない為、 
  store 直後に retrieve できない。 
 ・Perl 5.005_03 では do pop が出来なかったので、do $_[0] のままに。 
262(1): nobodyさん [sage] 04/02/29 23:12 ID:??? AAS
 改行しなければいいんでねーの? 
263: nobodyさん [sage] 04/03/01 02:53 ID:??? AAS
 >>262 
   >>1 
 一応こういうルールでやってます。 
 横79文字ってのは80文字-改行1文字ね。 
264(1): nobodyさん [sage] 04/03/03 04:38 ID:??? AAS
 新しいお題目なんだけど 
  
 七行ハーボット 
  
 ってどう? 
 最低限、カウンタ・人工無能・ミニゲームつきって事で。 
上下前次1-新書関写板覧索設栞歴
あと 188 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s