TopList Яндекс цитирования
Русский переплет
Портал | Содержание | О нас | Авторам | Новости | Первая десятка | Дискуссионный клуб | Чат Научный форум
-->
Первая десятка "Русского переплета"
Темы дня:

Президенту Путину о создании Института Истории Русского Народа. |Нас посетило 40 млн. человек | Чем занимались русские 4000 лет назад?

| Кому давать гранты или сколько в России молодых ученых?
Rambler's Top100

Ординк


Тфкоефэ

Трдъфигепке цвлнрю пв хефюеф аефея юеч-хжфвпками

Двппву тфръфвоов тряюрнуеж трдъфигвжы цвлнэ пв хефюеф, ехнк apache пвхжфреп жвм, ажр пе тефемрдкфиеж двппэе POST:

#!/usr/bin/perl -w
$basedir = "/usr/home/vovka/public_html/files";
$donepage = "http://www.myserver.ru/~vovka/files";
use CGI; 
$onnum = 1;
while ($onnum != 9) {
	my $req = new CGI; 
	my $file = $req->param("FILE$onnum"); 
	if ($file ne "") {
		my $fileName = $file; 
		$fileName =~ s!^.*(\\|\/)!!; 
		$newmain = $fileName;
		open (OUTFILE, ">$basedir/$fileName"); 
		while (my $bytesread = read($file, my $buffer, 1024)) { 
			print OUTFILE $buffer; 
		} 
		close (OUTFILE); 
	}
	$onnum++;
}
print "Content-type: text/html\n";
print "Location:$donepage\n\n";
Хрржюежхжюеппр имвяэюву акхнр ю зкмне while ($onnum != 9) оргпр трдъфигвжы пигпре акнхр цвлнрю тфк рдпро POST явтфрхе. html-мрд црфоэ дну хмфктжв жвмрл:
<form method="POST" action="/cgi-bin/fup.pl"
ENCTYPE="multipart/form-data">
File 1: <input type="file" name="FILE1">
<br>File 2: <input type="file" name="FILE2">
<br>File 3: <input type="file" name="FILE3">
<br>File 4: <input type="file" name="FILE4">
<br>File 5: <input type="file" name="FILE5">
<br>File 6: <input type="file" name="FILE6">
<br>File 7: <input type="file" name="FILE7">
<br>File 8: <input type="file" name="FILE8">
<br>File 9: <input type="file" name="FILE9">
<br>
<input type="submit" value="Upload!">
</form>

Твмежэ юкдв multipart/form-data рткхэювбжху rfc1867, мржрфэл чидеж рткхвп чрнее трдфрдчпр пв тфедоеж вюжровжкаехмрл трхэнмк кярчфвгепкл аефея црфоэ, ю мржрфэй хмвявпр ENCTYPE="multipart/form-data", трокор тфрхжрър жемхжв(явмрдкфрювппрър URI). Ж.е. хмфктж, трхэнвбькл мвфжкпмк к жемхж пв идвнеппэл хефюеф.

Федкфемж трныярювжену, пвйрдуьеърху яв цвлфюрнро

Тфръфвоов кннбхжфкфиеж кхтрныярювпке тефеоеппрл HTTP_X_FORWARDED_FOR кя йшщв %ENV, мржрфву тряюрнуеж(ехнк тфрмхк пе хрюхео тфрмхк :), ияпвжы р нрмвныпро вдфехе овщкпэ, пвйрдуьелху яв чфвпдовишфро(цвлфюрнро, рп-ге тфрмхк).

#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::Common;

print "Content-type: text/html\n";
print "Location: http://www.fsb.gov.ru/\n\n" if (&is_proxy());
print "Location:http://www.udaff.com/\n\n" unless (&is_proxy());

sub is_proxy{
  return 1 if ($ENV{'HTTP_X_FORWARDED_FOR'} ne "");
  $addr = $ENV{'REMOTE_ADDR'};
  $ua = new LWP::UserAgent;
  $ua->timeout(5);
  foreach(80, 8000, 8080, 3128){
    $ua->proxy('http', "http://$addr:$_/");
    $resp = $ua->request(GET "http://www.ru/");
    $cont = $resp->content();
    return 1 if ($cont =~ /Russia on the Net/)
  }
  return 0;
}
хмфктж пвткхвп grange

Хрядвпке цвлнв Excel

Дртихжко пигпр хрядвжы ржаеж ю црфовже Excel, дну шжрър пигпр хмвавжы к ихжвпрюкжы ордины Spreadsheet.pm c хвлжв www.cpan.org. Тфкюедеппву пкге тфръфвоов тряюрнуеж ъепефкжы цвлнэ ю црфовже excel х пигпэо фвяоефро трнел, зюежро чимю к юэфвюпкювпкео хрдефгкорър уаеем тр явтфрхи трныярювжену.

#!/usr/bin/perl -w
use strict;
use Spreadsheet::WriteExcel;
use Lingua::RU::Charset qw (:CONVERT);

my $fraze="цЕИЦЛЖЙЕП ИНЖЛФЦЬ";
my $workbook = Spreadsheet::WriteExcel->new("pr.xls");
my $sheet1 = $workbook->addworksheet();
my $sheet2 = $workbook->addworksheet();
my $sheet3 = $workbook->addworksheet("Example");
my $format = $workbook->addformat();

$format->set_bold();
$format->set_size(15);
$format->set_color('blue');
$format->set_align('center');

$sheet3->set_column(0, 0, 50);
$sheet3->activate();
$sheet3->write(0, 0, koi2win($fraze), $format);
$sheet3->write(1, 0, koi2win($fraze), $format);
$sheet3->write(2, 0, koi2win($fraze));
$sheet3->write(3, 0, koi2win("дАЧ"));
$sheet3->write(4, 0, koi2win("цЖЛ"));
$sheet3->write(5, 0, 4.00001);

my $date = $workbook->addformat();
$date->set_num_format('mmmm d yyyy h:mm AM/PM');
$sheet3->write(7, 0, 36050.1875, $date);
Cрржюежхжюеппр трниавежcу ажр-жр юкдв:

Двнее тфръфвоои оргпр хрюефщеппр хюрчрдпр мифракжы мвм юядиовежху к, дртихжко, тефеюрдкжы двппэе кя dbt(memo-жкт) ю Excel. Ю двппро тфкоефе чэнв тфкоепепв чкчнкржемв дну тефемрдкфрювпку рж Внемхв Цвфчефв, ж.м. хмфктж ржнвгкювнху трд XWindows by Linux. Ю тфкпзкте юхе жр-ге хворе делхжюиеж к дну тфрхоржфв цвлнрю тфк трорьк StarOffice.

Тефекоепрювпке дкфемжрфкл

Дртихжко тфрчнеов, ехжы дкхм х ufs, пв мржрфро ехжы дкфемжрфкк, пвяювппэе тр фиххмк. Пигпр шжрж дкхм трдорпжкфрювжы пв ext2. В дкфемжрфкк ю ISO мрдкфрюме Samba пе юрхтфкпковеж, жрапее пе Samba, a трныярювженк Windows овщкп. Япвакж пигпв тфръфвоов, мржрфву чэ иоенв тефеденэювжы пвяювпку дкфемжрфкл кя iso ю win1251. Тфкюедеппву пкге тфръфвоов кхтрныяиеж жи-ге хвоиб чкчнкржеми тефемрдкфрюькм:

#!/usr/bin/perl
print "content-type: text/html\n\n";
use Lingua::RU::Charset qw (:CONVERT);
my $di="/raznoe";
&scan($di);

sub  scan {
  my $dir=$_[0];
  my (@files,$filen,$ndir,$n,$mass,@dirs);
  opendir D, $dir or warn "Cannot open $dir: $!" and next;
  @dirs=grep {!(/^\./) && -d "$dir/$_"} readdir D;
  rewinddir D;
  closedir D;
  for $n(0..$#dirs) {
    my @ma=koi2win(iso2koi($dirs[$n]));
    print "-----begindir-----\n [ ",win2koi("$dir/$dirs[$n]")," - ",
          win2koi("$dir/$ma[$#ma]")," ]";
    print " [ ",iso2koi($dirs[$n])," - NEW DIR ] " if rename
"$dir/$dirs[$n]", "$dir/$ma[$#ma]";
    $ndir="$dir/$ma[$#ma]";
    print "\n [ new scan dir - ",win2koi($ndir)," ] \n-----enddir-----\n\n";
    &scan($ndir);
  }
  return 1;
}

Тфръфвоов дрюрныпр тфрхжв, ажрчэ еЈ рчсухпужы. Тфрхжр мвм кннбхжфвзку кхтрныярювпку уяэмв perl дну пигд хкхжеопрър вдокпкхжфкфрювпку ю хниаве юряпкмпрюепку шмхжфеппэй хкживзкл. Хворе хнргпре ядехы чэнр ртфеденкжы мвмву мрдкфрюмв пв ufstype=44bsd. Фемроепдиб трныярювжыху шжрл тфръфвоорл, коеу пемржрфэл ртэж фвчржэ йржу-чэ х Linux(двчэ пе чэнр тфрчнео тфк ржнвдме х мровпдвок жктв chmod -R 777 ., мржрфву тфрхжр пвхоефжы ичкювеж sendmail). Юррчье perl дну вдокпв Linux/FreeBSD ниащву пвйрдмв. Пе хакжву shell мрпеапр(и мржрфрър пеж http://www.cpan.org :).

Жр-ге хворе, пр дну цвлнрю(оргпр чэнр чэ хнкпмрювжы ю рдпи тфръфвоои, опе непы :)

#!/usr/bin/perl
use Lingua::RU::Charset qw (:CONVERT);
my $di="/raznoe";
&scan($di);
sub  scan {
  my $dir=$_[0];
  my (@files,$filen,$ndir,$n,$mass,@dirs);
  opendir D, $dir or warn "Cannot open $dir: $!" and next;
  @dirs=grep {!(/^\./) && -d "$dir/$_"} readdir D;
  rewinddir D;
  @files=grep {!(/^\./) && -f "$dir/$_"} readdir D;
  closedir D;

  for $n(0..$#dirs) {
    $ndir="$dir/$dirs[$n]";
    &scan($ndir);
  }
  for $n(0..$#files) {
    $filen=$dir."/".$files[$n];
    my @mass=koi2win(iso2koi("$files[$n]"));
    print " [ ",iso2koi($files[$n])," => NEW FILE!!! ]\n"
      if rename "$dir/$files[$n]", "$dir/$mass[$#mass]"
      or die "Cant rename $dir/$mass[$#mass]: $!\n" and next;
  }
  return 1;
}

Rambler's Top100