From postmaster на softsearch.ru Wed Jan 5 07:17:44 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Wed, 5 Jan 2011 18:17:44 +0300 Subject: [Moscow.pm] =?koi8-r?b?8sHT0M/azsHXwc7JxSDNxczLz9zL0sHOzs/T1Mkg?= =?koi8-r?b?wtLB1drF0sE=?= In-Reply-To: References: <8510334548.20101229224054@softsearch.ru> Message-ID: <107755175.20110105181744@softsearch.ru> Здравствуйте, Руслан. RZ> http://cpansearch.perl.org/src/OALDERS/HTTP-BrowserDetect-1.21/Changes RZ> Регулярно обновляется. Там есть метод mobile. Не знаю что он делает с iPad'ами. Спасибо. Это то что нужно. -- С уважением, Михаил Монашёв mailto:postmaster на softsearch.ru http://talxy.com - p2p-based online broadcasting and file sharing. Без бэкапа по жизни. From worldmind на mail.ru Tue Jan 11 05:12:13 2011 From: worldmind на mail.ru (worldmind) Date: Tue, 11 Jan 2011 16:12:13 +0300 Subject: [Moscow.pm] =?koi8-r?b?7c/E1czYzs/FINTF09TJ0s/Xwc7JxTogxM/Qz8zO?= =?koi8-r?b?xc7JxQ==?= Message-ID: <1294751533.2045.31.camel@host> Небольшое дополнение http://habrahabr.ru/blogs/perl/111655/ почему на хабре отписал там же, спасибо добавившим карму From dmarsentev на gmail.com Tue Jan 11 06:21:28 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Tue, 11 Jan 2011 17:21:28 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQ?= =?koi8-r?b?z8zV3snU2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= Message-ID: Здравствуйте. Может кто-нибудь подсказать, каким образом, используя модуль Net::FTP, из transfer status-а в виде строки с решётками получить количество эттих решёток. ОС WinXP SP3. Пользуясь вот этим советом http://www.perlmonks.org/index.pl?node_id=242130 запускаю аналог этого кода m $BYTES_PER_HASH = 1024; my $ftp = Net::FTP->new("ftp.microsoft.com", Debug => 0); $ftp->login("anonymous","-anonymous\@"); $ftp->cwd("MISC"); $ftp->hash(\*STDOUT, $BYTES_PER_HASH); $ftp->get("NBFCP.TXT"); $ftp->quit; и получаю на экране много решёток, которые возвращает метод hash. Вопрос: как отфильтровать STDOUT, чтобы вместо строки из решёток на экране получалось, например, число, равное количеству этих решёток? Вообще, если у кого-то есть опыт визуализации _не_ _решётками_ transfer status-а при использовании Net::FTP, поделитесь пожалуйста. Спасибо. PS Полный рецепт http://www.perlmonks.org/index.pl?node_id=242130 - см. код ниже - не работает, ругается на -| , говорит, что нет такой переменной "-". #!/usr/bin/perl use strict; use Net::FTP; my $BYTES_PER_HASH = 1024; # Fork a child process for Net::FTP # and capture its output one char at # a time if (open(FTP, "-|")) { # parent my $count = 1; while (getc(FTP)) { print $BYTES_PER_HASH * $count, " bytes received\n"; $count++; } print "Done\n"; } else { # child my $ftp = Net::FTP->new("ftp.microsoft.com", Debug => 0); $ftp->login("anonymous","-anonymous\@"); $ftp->cwd("MISC"); $ftp->hash(\*STDOUT, $BYTES_PER_HASH); $ftp->get("NBFCP.TXT"); $ftp->quit; } From evgeniy на kosov.su Tue Jan 11 06:44:03 2011 From: evgeniy на kosov.su (Evgeniy Kosov) Date: Tue, 11 Jan 2011 17:44:03 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQz8zV3snU?= =?koi8-r?b?2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: References: Message-ID: <4D2C6CB3.3060306@kosov.su> On 11.01.2011 17:21, Dmitry Arsentiev wrote: > PS > Полный рецепт http://www.perlmonks.org/index.pl?node_id=242130 > - см. код ниже - не работает, ругается на -| , говорит, что нет такой > переменной "-". http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork А тут есть примерчик того, как можно эмулировать open('-|'): http://perldoc.perl.org/perlfork.html -- С уважением, Евгений Косов From dmarsentev на gmail.com Wed Jan 12 04:27:08 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 12 Jan 2011 15:27:08 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQ?= =?koi8-r?b?z8zV3snU2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: <4D2C6CB3.3060306@kosov.su> References: <4D2C6CB3.3060306@kosov.su> Message-ID: > http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork > > А тут есть примерчик того, как можно эмулировать open('-|'): > http://perldoc.perl.org/perlfork.html Спасибо, Евгений. Я попробовал сделать, как там написано. Действительно, замена -| работает. Но то, чего я хотел добиться, а именно: чтобы вместо решёток ##### , выдаваемых методом $ftp->hash , получать количество этих решёток (или какое-то пропорциональное количеству решёток число), - этого сделать у меня не получилось. Код, приведённый ниже, работает под WinXP и выдаёт: parent count = 1 child Done Но если <\*BAR> заменить на getc( \*BAR ) , то не печатает Done. sub pipe_from_fork ($) { my $parent = shift; pipe( $parent, my $child ) or die "sub pipe_from_fork - can not pipe $!\n"; my $pid = fork(); die "fork() failed: $!" unless defined $pid; if ( $pid ) { print "parent\n"; close $child; } else { print "child\n"; close $parent; open( STDOUT, ">&=" . fileno($child) ) or die "sub pipe_from_fork - can not open STDOUT $!\n"; }# fi $pid; }#bus pipe_from_fork local *BAR; if ( pipe_from_fork( \*BAR ) ){ # parent my $count = 1; print "count = $count\n"; while ( <\*BAR> ){ print $BYTES_PER_HASH * $count, " bytes received\n"; $count++; }# elihw print "Done\n"; close \*BAR; }else{ # child $ftp->hash(\*STDOUT, $BYTES_PER_HASH); $ftp->get( $zip_archive_name ) or warn "failed getting ftp-archive $zip_archive_name $? $!\n"; $ftp->quit; exit(0); }#fi 11 января 2011 г. 17:44 пользователь Evgeniy Kosov написал: > On 11.01.2011 17:21, Dmitry Arsentiev wrote: >> >> PS >> Полный рецепт http://www.perlmonks.org/index.pl?node_id=242130 >> - см.  код ниже - не работает, ругается на -| , говорит, что нет такой >> переменной "-". > > http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork > > А тут есть примерчик того, как можно эмулировать open('-|'): >  http://perldoc.perl.org/perlfork.html > > -- > С уважением, > Евгений Косов > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From ali на ali.org.ua Wed Jan 12 04:49:07 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Wed, 12 Jan 2011 14:49:07 +0200 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQz8zV3snU?= =?koi8-r?b?2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: References: <4D2C6CB3.3060306@kosov.su> Message-ID: <4D2DA343.4040303@ali.org.ua> On 12.01.2011 14:27, Dmitry Arsentiev wrote: >> http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork >> >> А тут есть примерчик того, как можно эмулировать open('-|'): >> http://perldoc.perl.org/perlfork.html Есть еще core модули IPC::Open2, IPC::Open3. Как оно работает, в том числе для виндовса, можно глянуть, например, в TAP::Parser::Iterator::Process. Не буду углубляться в проблему парсенья решеток %) но ведь TAP::Parser решает подобную задачу. Так что я бы пристально его изучил. -- Олег Алистратов From dmarsentev на gmail.com Wed Jan 12 06:28:08 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 12 Jan 2011 17:28:08 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQ?= =?koi8-r?b?z8zV3snU2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: <4D2DA343.4040303@ali.org.ua> References: <4D2C6CB3.3060306@kosov.su> <4D2DA343.4040303@ali.org.ua> Message-ID: Олег, спасибо за реакцию > Как оно работает, в том числе для виндовса, можно глянуть, > например, в TAP::Parser::Iterator::Process. Проблема не в том, чтобы пропарсить, а в том, чтобы пропустить STDOUT через фильтр, считающий решёток. Вот этот вот STDOUT хотел бы отфильтровать: $ftp->hash(\*STDOUT, $BYTES_PER_HASH); > Есть еще core модули IPC::Open2, IPC::Open3. Да, но они предназначены для работы c внешними командами: $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'some cmd and args'); Наверное можно как-то fork-нутый процесс ему просунуть вместо 'some cmd and args', но не могу сообразить, как это сделать и, честно говоря, устал голову ломать. Мне изначально надо было строку статуса ftp-загрузки файла получить. Модуль Net::FTP красиво решить этот вопрос под windows не позволяет. Под unix-ом, наверное, можно сделать строку статуса сравнительно просто. Вобщем, спасибо всем, я сдался, решил обойтись без статуса загрузки. 12 января 2011 г. 15:49 пользователь Oleg Alistratov написал: > > > On 12.01.2011 14:27, Dmitry Arsentiev wrote: > >>> http://www.google.ru/search?hl=ru&q=windows+perl+pipe+fork >>> >>> А тут есть примерчик того, как можно эмулировать open('-|'): >>>  http://perldoc.perl.org/perlfork.html > > Есть еще core модули IPC::Open2, IPC::Open3. > > Как оно работает, в том числе для виндовса, можно глянуть, > например, в TAP::Parser::Iterator::Process. > > Не буду углубляться в проблему парсенья решеток %) > но ведь TAP::Parser решает подобную задачу. > Так что я бы пристально его изучил. > > -- > Олег Алистратов > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From ali на ali.org.ua Wed Jan 12 06:46:35 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Wed, 12 Jan 2011 16:46:35 +0200 Subject: [Moscow.pm] =?utf-8?q?Net=3A=3AFTP=2C_FTP_Transfer_Status=2C_=24f?= =?utf-8?b?dHAtPmhhc2ggLCDRhNC40LvRjNGC0YDQsNGG0LjRjyBTVERPVVQgLSDQutCw?= =?utf-8?b?0Log0L/QvtC70YPRh9C40YLRjCDRh9C40YHQu9C+INCy0LzQtdGB0YLQviA=?= =?utf-8?b?0YDQtdGI0ZHRgtC+0Lo/?= In-Reply-To: References: <4D2C6CB3.3060306@kosov.su> <4D2DA343.4040303@ali.org.ua> Message-ID: <4D2DBECB.2070504@ali.org.ua> On 12.01.2011 16:28, Dmitry Arsentiev wrote: >> Как оно работает, в том числе для виндовса, можно глянуть, >> например, в TAP::Parser::Iterator::Process. > > Проблема не в том, чтобы пропарсить, а в том, > чтобы пропустить STDOUT через фильтр, > считающий решёток. Словом ?парсить? я именно это и хотел сказать %) TAP::Harness как раз выдает цифирки вместо длинного списка океев от исполняемого теста. > Вобщем, спасибо всем, я сдался, решил обойтись без статуса загрузки. Я хотел еще perldoc Expect посоветовать. Но готового решения ? чего нет, того нет. -- Олег Алистратов From evgeniy на kosov.su Wed Jan 12 06:49:53 2011 From: evgeniy на kosov.su (Evgeniy Kosov) Date: Wed, 12 Jan 2011 17:49:53 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQz8zV3snU?= =?koi8-r?b?2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: References: <4D2C6CB3.3060306@kosov.su> <4D2DA343.4040303@ali.org.ua> Message-ID: <4D2DBF91.6080805@kosov.su> On 12.01.2011 17:28, Dmitry Arsentiev wrote: > Проблема не в том, чтобы пропарсить, а в том, > чтобы пропустить STDOUT через фильтр, > считающий решёток. > > Вот этот вот STDOUT хотел бы отфильтровать: > $ftp->hash(\*STDOUT, $BYTES_PER_HASH); Мм.. Подсунуть вместо STDOUT свой хэндл, которые считает решётки, вместо того, чтобы их выводить? -- С уважением, Евгений Косов From dmarsentev на gmail.com Wed Jan 12 07:21:27 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 12 Jan 2011 18:21:27 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQ?= =?koi8-r?b?z8zV3snU2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: <4D2DBF91.6080805@kosov.su> References: <4D2C6CB3.3060306@kosov.su> <4D2DA343.4040303@ali.org.ua> <4D2DBF91.6080805@kosov.su> Message-ID: > Мм.. Подсунуть вместо STDOUT свой хэндл, которые считает решётки, вместо > того, чтобы их выводить? Евгений, вот этот код выводит решётки: $ftp->hash(\*STDOUT, $BYTES_PER_HASH); $ftp->get( $zip_archive_name ) or warn "failed getting ftp-archive $zip_archive_name $? $!\n"; $ftp->quit; А вот этот код не выводит решётки: local *FOO; $ftp->hash(\*FOO, $BYTES_PER_HASH); print <\*FOO>; $ftp->get( $zip_archive_name ) or warn "failed getting ftp-archive $zip_archive_name $? $!\n"; $ftp->quit; Вывод: не всё так просто. Не зря же люди невяный форк делают: http://www.perlmonks.org/index.pl?node_id=242130 12 января 2011 г. 17:49 пользователь Evgeniy Kosov написал: > On 12.01.2011 17:28, Dmitry Arsentiev wrote: >> >> Проблема не в том, чтобы пропарсить, а в том, >> чтобы пропустить STDOUT через фильтр, >> считающий решёток. >> >> Вот этот вот STDOUT хотел бы отфильтровать: >> $ftp->hash(\*STDOUT, $BYTES_PER_HASH); > > > Мм.. Подсунуть вместо STDOUT свой хэндл, которые считает решётки, вместо > того, чтобы их выводить? > > -- > С уважением, > Евгений Косов > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From evgeniy на kosov.su Wed Jan 12 08:02:07 2011 From: evgeniy на kosov.su (Evgeniy Kosov) Date: Wed, 12 Jan 2011 19:02:07 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQz8zV3snU?= =?koi8-r?b?2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: References: <4D2C6CB3.3060306@kosov.su> <4D2DA343.4040303@ali.org.ua> <4D2DBF91.6080805@kosov.su> Message-ID: <4D2DD07F.7050405@kosov.su> On 12.01.2011 18:21, Dmitry Arsentiev wrote: >> Мм.. Подсунуть вместо STDOUT свой хэндл, которые считает решётки, вместо >> того, чтобы их выводить? > > Евгений, вот этот код выводит решётки: > $ftp->hash(\*STDOUT, $BYTES_PER_HASH); > $ftp->get( $zip_archive_name ) or warn "failed getting > ftp-archive $zip_archive_name $? $!\n"; > $ftp->quit; > > А вот этот код не выводит решётки: > local *FOO; > $ftp->hash(\*FOO, $BYTES_PER_HASH); > print<\*FOO>; > $ftp->get( $zip_archive_name ) or warn "failed getting > ftp-archive $zip_archive_name $? $!\n"; > $ftp->quit; Да, не выводит :) > Вывод: не всё так просто. Ещё раз ммм... package My::ProgressBar; sub TIEHANDLE { my $class = shift; bless {}, $class; } sub PRINT { my $self = shift; $self->{count} ||= 1; print 1024 * $self->{count}++ . " bytes received\n" } package main; use Net::FTP; tie *bar, 'My::ProgressBar'; my $ftp = Net::FTP->new("ftp.microsoft.com", Debug => 0); $ftp->login("anonymous","-anonymous\@"); $ftp->cwd("MISC"); $ftp->hash(\*bar); $ftp->get("NBFCP.TXT"); $ftp->quit; -- С уважением, Евгений Косов From dmarsentev на gmail.com Wed Jan 12 08:28:13 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 12 Jan 2011 19:28:13 +0300 Subject: [Moscow.pm] =?koi8-r?b?TmV0OjpGVFAsIEZUUCBUcmFuc2ZlciBTdGF0dXMs?= =?koi8-r?b?ICRmdHAtPmhhc2ggLCDGyczY1NLBw8nRIFNURE9VVCAtIMvByyDQ?= =?koi8-r?b?z8zV3snU2CDeydPMzyDXzcXT1M8g0sXbo9TPyz8=?= In-Reply-To: <4D2DD07F.7050405@kosov.su> References: <4D2C6CB3.3060306@kosov.su> <4D2DA343.4040303@ali.org.ua> <4D2DBF91.6080805@kosov.su> <4D2DD07F.7050405@kosov.su> Message-ID: > Ещё раз ммм... > > > package My::ProgressBar; > > sub TIEHANDLE { > my $class = shift; > bless {}, $class; > } > > sub PRINT { > my $self = shift; > $self->{count} ||= 1; > print 1024 * $self->{count}++ . " bytes received\n" > } > > package main; > > use Net::FTP; > > tie *bar, 'My::ProgressBar'; > > my $ftp = Net::FTP->new("ftp.microsoft.com", Debug => 0); > $ftp->login("anonymous","-anonymous\@"); > $ftp->cwd("MISC"); > $ftp->hash(\*bar); > $ftp->get("NBFCP.TXT"); > $ftp->quit; Спасибо, Евгений, заработало!!! :) Как у вас хорошо получается говорить м-м-м.. ;) Заодно я вспомнил, за что я ненавижу perl. ;) 12 января 2011 г. 19:02 пользователь Evgeniy Kosov написал: > On 12.01.2011 18:21, Dmitry Arsentiev wrote: >>> >>> Мм.. Подсунуть вместо STDOUT свой хэндл, которые считает решётки, вместо >>> того, чтобы их выводить? >> >> Евгений, вот этот код выводит решётки: >>      $ftp->hash(\*STDOUT, $BYTES_PER_HASH); >>      $ftp->get( $zip_archive_name ) or warn "failed getting >> ftp-archive $zip_archive_name $? $!\n"; >>      $ftp->quit; >> >> А вот этот код не выводит решётки: >>      local *FOO; >>      $ftp->hash(\*FOO, $BYTES_PER_HASH); >>      print<\*FOO>; >>      $ftp->get( $zip_archive_name ) or warn "failed getting >> ftp-archive $zip_archive_name $? $!\n"; >>      $ftp->quit; > > Да, не выводит :) > >> Вывод: не всё так просто. > > Ещё раз ммм... > > > package My::ProgressBar; > > sub TIEHANDLE { >    my $class = shift; >    bless {}, $class; > } > > sub PRINT { >    my $self = shift; >    $self->{count} ||= 1; >    print 1024 * $self->{count}++ . " bytes received\n" > } > > package main; > > use Net::FTP; > > tie *bar, 'My::ProgressBar'; > > my $ftp = Net::FTP->new("ftp.microsoft.com", Debug => 0); > $ftp->login("anonymous","-anonymous\@"); > $ftp->cwd("MISC"); > $ftp->hash(\*bar); > $ftp->get("NBFCP.TXT"); > $ftp->quit; > > -- > С уважением, > Евгений Косов > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From i.petro.77.00 на gmail.com Wed Jan 12 23:01:43 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Thu, 13 Jan 2011 10:01:43 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= Message-ID: Есть хорошая технология AnyEvent (на самом деле их множество разных). Когда ваяем какой-либо сервер с использованием этой технологии, то под нее довольно хорошо ложится только простая передача контента из сокета в сокет. А вот если сюда надо добавить обработку данных, то в зависимости от того насколько эта обработка сложная технология может начать хромать на обе ноги. схема: 1. взяли данные из одного места (AE::io $place, 0 sub {}) 2. сделали над данными преобразование (тот самый sub) 3. отдали их клиенту (AE::io, $client, 1, sub {}) все работает красиво и быстро, пока пункт 2 выполняется быстро. Когда в пункте 2 мы делаем например какую-то текстовую обработку данных, то вся система понижает время отклика. хочется спросить у аудитории кто какие пути борьбы с этим знает? наиболее очевидный - запуск N параллельных процессов, которые работают по этой схеме. Получается что это работает сильно лучше форковой схемы (один процесс на одного клиента), но в целом тоже может страдать отклик. появляется проблема что если один процесс "схватил" несколько клиентов, а один из них требует выполнения ресурсоемкого задания, то другой клиент будет ждать, хотя мог бы быть обработан и менее очевидный - вынесение пункта 2 в отдельный (отдельные) процесс и тогда обычным AE::io сплавлять ему данные и получать ответ. но тут встает задача быстрой передачи данных задания в другой процесс. сериализация/десериализация сама по себе может оказаться довольно накладной вещью и возвращаемся к тому с чего мы начали. А есть ли способ (может на базе mmap кто-то делал решение?) быстрой передачи объекта perl между двумя процессами? И вообще, кто решал подобные проблемы, поделитесь соображениями? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dmitry на karasik.eu.org Thu Jan 13 00:52:41 2011 From: dmitry на karasik.eu.org (Dmitry Karasik) Date: Thu, 13 Jan 2011 09:52:41 +0100 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: References: Message-ID: <20110113085241.GA91595@tetsuo.karasik.eu.org> > появляется проблема что если один процесс "схватил" несколько клиентов, а > один из них требует выполнения ресурсоемкого задания, то другой клиент будет > ждать, хотя мог бы быть обработан а пусть не хватает несколько, каждый пусть берет по одной задаче, а главный процесс распределяет по необходимости, возможно форкая новые или убивая бездеятельные > но тут встает задача быстрой передачи данных задания в другой процесс. > сериализация/десериализация сама по себе может оказаться довольно накладной > вещью и возвращаемся к тому с чего мы начали. > А есть ли способ (может на > базе mmap кто-то делал решение?) быстрой передачи объекта perl между двумя > процессами? И вообще, кто решал подобные проблемы, поделитесь соображениями? я не знаю таких способов, но по идее, если есть нужда между главным процессом и обработчиками гонять страшные гигабайты, но может тогда просто исключить из цепочки главный процесс? пусть обработчики сами вычитывают большие данные. -- Sincerely, Dmitry Karasik From i.petro.77.00 на gmail.com Thu Jan 13 01:02:33 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Thu, 13 Jan 2011 12:02:33 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <20110113085241.GA91595@tetsuo.karasik.eu.org> References: <20110113085241.GA91595@tetsuo.karasik.eu.org> Message-ID: 13 января 2011 г. 11:52 пользователь Dmitry Karasik написал: > > появляется проблема что если один процесс "схватил" несколько клиентов, а > > один из них требует выполнения ресурсоемкого задания, то другой клиент > будет > > ждать, хотя мог бы быть обработан > > а пусть не хватает несколько, каждый пусть берет по одной задаче, а главный > процесс > распределяет по необходимости, возможно форкая новые или убивая > бездеятельные ну да, что-то такое примерно и рисуется. > > но тут встает задача быстрой передачи данных задания в другой процесс. > > сериализация/десериализация сама по себе может оказаться довольно > накладной > > вещью и возвращаемся к тому с чего мы начали. > А есть ли способ (может > на > > базе mmap кто-то делал решение?) быстрой передачи объекта perl между > двумя > > процессами? И вообще, кто решал подобные проблемы, поделитесь > соображениями? > > я не знаю таких способов, но по идее, если есть нужда между главным > процессом и обработчиками > гонять страшные гигабайты, но может тогда просто исключить из цепочки > главный процесс? > пусть обработчики сами вычитывают большие данные. > это по сути возврат к форковой модели. гигабайты не страшные, но простая сериализация объекта о сотне К может уже давать ощутимый оверхед. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From postmaster на softsearch.ru Thu Jan 13 01:15:41 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Thu, 13 Jan 2011 12:15:41 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: References: Message-ID: <1739193977.20110113121541@softsearch.ru> Здравствуйте, Иван. Поделите обработку на несколько очень мелких по времени работы фаз и после обработки каждой фазы возвращайте управление в AnyEvent. Так решает подобную задачу тот же nginx. С уважением, Михаил Монашёв mailto:postmaster на softsearch.ru http://talxy.com - p2p-based online broadcasting and file sharing. Без бэкапа по жизни. From i.petro.77.00 на gmail.com Thu Jan 13 01:52:49 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Thu, 13 Jan 2011 12:52:49 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <1739193977.20110113121541@softsearch.ru> References: <1739193977.20110113121541@softsearch.ru> Message-ID: > Поделите обработку на несколько очень мелких по времени работы фаз и > после обработки каждой фазы возвращайте управление в AnyEvent. Так > решает подобную задачу тот же nginx. > Хороший путь но не всегда рабочий. я отдаю вебстранички. как в любой системе получается несколько стадий: выборка направления движения-обработки (контроллер), выборка данных (модель), выдача данных (отображение). На более мелкие фазы как-то не бъется. то есть если например идет сборка html из темплейта то ее уже сложно побить, разве что свой темплейтный адаптер ваять. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From postmaster на softsearch.ru Thu Jan 13 01:58:07 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Thu, 13 Jan 2011 12:58:07 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: References: <1739193977.20110113121541@softsearch.ru> Message-ID: <1749638501.20110113125807@softsearch.ru> Здравствуйте, Иван. >> Поделите  обработку  на несколько очень мелких по времени работы >> фаз и после  обработки  каждой  фазы  возвращайте управление в >> AnyEvent. Так решает подобную задачу тот же nginx. IP> Хороший путь но не всегда рабочий. IP> я отдаю вебстранички. как в любой системе получается несколько IP> стадий: выборка направления движения-обработки (контроллер), IP> выборка данных (модель),  выдача данных (отображение). На более IP> мелкие фазы как-то не бъется. IP> то есть если например идет сборка html из темплейта то ее уже IP> сложно побить, разве что свой темплейтный адаптер ваять. Всё бьётся. Да и бить надо на ещё более мелкие фазы. А вообще текстомолотилкам не место в веб-сервере. -- С уважением, Михаил Монашёв mailto:postmaster на softsearch.ru ICQ# 166233339 http://michael.mindmix.ru/ Без бэкапа по жизни. From dmitry на karasik.eu.org Thu Jan 13 02:51:20 2011 From: dmitry на karasik.eu.org (Dmitry Karasik) Date: Thu, 13 Jan 2011 11:51:20 +0100 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: References: <20110113085241.GA91595@tetsuo.karasik.eu.org> Message-ID: <20110113105119.GA30574@tetsuo.karasik.eu.org> > > > но тут встает задача быстрой передачи данных задания в другой процесс. > > > сериализация/десериализация сама по себе может оказаться довольно > > накладной > > > вещью и возвращаемся к тому с чего мы начали. > А есть ли способ (может > > на > > > базе mmap кто-то делал решение?) быстрой передачи объекта perl между > > двумя > > > процессами? И вообще, кто решал подобные проблемы, поделитесь > > соображениями? > > > > я не знаю таких способов, но по идее, если есть нужда между главным > > процессом и обработчиками > > гонять страшные гигабайты, но может тогда просто исключить из цепочки > > главный процесс? > > пусть обработчики сами вычитывают большие данные. > > > это по сути возврат к форковой модели. гигабайты не страшные, но простая > сериализация объекта о сотне К может уже давать ощутимый оверхед. значит, надо каким-то образом уйти от сериализации и передачи данных вообще. Я не совсем понимаю для каких задач это надо, но если например главный процесс (предположим) читает из сокета мегабайт, а потом передает его еще раз через сериализацию обработчику, то путь тогда лучше главный процесс передает обработчику сам сокет, и тот уже и вычитывает. -- Sincerely, Dmitry Karasik From i.petro.77.00 на gmail.com Thu Jan 13 04:20:24 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Thu, 13 Jan 2011 15:20:24 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <20110113105119.GA30574@tetsuo.karasik.eu.org> References: <20110113085241.GA91595@tetsuo.karasik.eu.org> <20110113105119.GA30574@tetsuo.karasik.eu.org> Message-ID: > значит, надо каким-то образом уйти от сериализации и передачи данных > вообще. > Я не совсем понимаю для каких задач это надо, но если например главный > процесс > (предположим) читает из сокета мегабайт, а потом передает его еще раз через > сериализацию обработчику, то путь тогда лучше главный процесс передает > обработчику > сам сокет, и тот уже и вычитывает. > > а как можно передать между двумя работающими процессами сокет? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dmitry на karasik.eu.org Thu Jan 13 04:35:02 2011 From: dmitry на karasik.eu.org (Dmitry Karasik) Date: Thu, 13 Jan 2011 13:35:02 +0100 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: References: <20110113085241.GA91595@tetsuo.karasik.eu.org> <20110113105119.GA30574@tetsuo.karasik.eu.org> Message-ID: <20110113123502.GA13156@tetsuo.karasik.eu.org> > > а как можно передать между двумя работающими процессами сокет? Никак конечно - но можно сделать так чтобы этот сокет был уже доступен перед форком, и тогда порожденный процесс сможет из него сам читать. -- Sincerely, Dmitry Karasik From i.petro.77.00 на gmail.com Thu Jan 13 05:00:51 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Thu, 13 Jan 2011 16:00:51 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <20110113123502.GA13156@tetsuo.karasik.eu.org> References: <20110113085241.GA91595@tetsuo.karasik.eu.org> <20110113105119.GA30574@tetsuo.karasik.eu.org> <20110113123502.GA13156@tetsuo.karasik.eu.org> Message-ID: > Никак конечно - но можно сделать так чтобы этот сокет был уже доступен > перед форком, > и тогда порожденный процесс сможет из него сам читать. > > сокеты порождает функция accept. Соответственно либо делаем форк после accept, либо заранее только пайп создать и можно. тогда уж лучше вернуться к тому с чего начали - какие методы быстрой передачи объектов perl между процессами можно заюзать? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From ali на ali.org.ua Thu Jan 13 05:15:59 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Thu, 13 Jan 2011 15:15:59 +0200 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: References: <20110113085241.GA91595@tetsuo.karasik.eu.org> <20110113105119.GA30574@tetsuo.karasik.eu.org> <20110113123502.GA13156@tetsuo.karasik.eu.org> Message-ID: <4D2EFB0F.7090801@ali.org.ua> On 13.01.2011 15:00, Ivan Petrov wrote: > тогда уж лучше вернуться к тому с чего начали - какие методы быстрой > передачи объектов perl между процессами можно заюзать? Не припомню ни одного IPC, который бы позволял шарить перловые объекты без сериализации. Тогда, видимо, лучше поискать сериализатор пошустрее ? а это, будто бы, JSON::XS. -- Олег Алистратов From jt на aaanet.ru Thu Jan 13 05:17:22 2011 From: jt на aaanet.ru (=?utf-8?B?0JXQstCz0LXQvdC40Lkg0KLQvtGA0L7Qv9C+0LI=?=) Date: Thu, 13 Jan 2011 16:17:22 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: References: <20110113085241.GA91595@tetsuo.karasik.eu.org> <20110113105119.GA30574@tetsuo.karasik.eu.org> <20110113123502.GA13156@tetsuo.karasik.eu.org> Message-ID: <8B773F61-16C9-424D-B440-0F80040597B2@aaanet.ru> Не надо ничего никуда передавать. Вы же сами согласились уже, что вам нужен грамотный диспетчер. Тогда задачи будут равномерно распределены между процессами. Ресурсоемкие задачи старайтесь выполнять в отдельных процессах. Евгений jt на aaanet.ru On Jan 13, 2011, at 4:00 PM, Ivan Petrov wrote: > > Никак конечно - но можно сделать так чтобы этот сокет был уже доступен перед форком, > и тогда порожденный процесс сможет из него сам читать. > > > сокеты порождает функция accept. Соответственно либо делаем форк после accept, либо заранее только пайп создать и можно. > > тогда уж лучше вернуться к тому с чего начали - какие методы быстрой передачи объектов perl между процессами можно заюзать? > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From aml на rulezz.ru Thu Jan 13 05:18:40 2011 From: aml на rulezz.ru (Alexander Lourier) Date: Thu, 13 Jan 2011 16:18:40 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: References: <20110113123502.GA13156@tetsuo.karasik.eu.org> Message-ID: <201101131618.40887.aml@rulezz.ru> В письме Thursday 13 January 2011 16:00:51 Ivan Petrov написал: > > Никак конечно - но можно сделать так чтобы этот сокет был уже доступен > > перед форком, > > и тогда порожденный процесс сможет из него сам читать. > > сокеты порождает функция accept. Соответственно либо делаем форк после > accept, либо заранее только пайп создать и можно. > > тогда уж лучше вернуться к тому с чего начали - какие методы быстрой > передачи объектов perl между процессами можно заюзать? А чем не нравится старый добрый prefork? Наплодить форков по числу процессорных ядер и каждый пусть делает свой accept. -- Alexander Lourier, http://aml.rulezz.ru/ From i.petro.77.00 на gmail.com Thu Jan 13 05:30:40 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Thu, 13 Jan 2011 16:30:40 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <201101131618.40887.aml@rulezz.ru> References: <20110113123502.GA13156@tetsuo.karasik.eu.org> <201101131618.40887.aml@rulezz.ru> Message-ID: > > тогда уж лучше вернуться к тому с чего начали - какие методы быстрой > > передачи объектов perl между процессами можно заюзать? > > А чем не нравится старый добрый prefork? Наплодить форков по числу > процессорных ядер и каждый пусть делает свой accept. > а обработку запросов клиентов по методу событийной машины? ну да так и есть. вопрос только в том что событийная машина при наличии "тяжелых" процессов обработки тоже начинает тормозить прием запросов от клиента. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From aml на rulezz.ru Thu Jan 13 05:51:12 2011 From: aml на rulezz.ru (Alexander Lourier) Date: Thu, 13 Jan 2011 16:51:12 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: References: <201101131618.40887.aml@rulezz.ru> Message-ID: <201101131651.12498.aml@rulezz.ru> В письме Thursday 13 January 2011 16:30:40 Ivan Petrov написал: > > > тогда уж лучше вернуться к тому с чего начали - какие методы быстрой > > > передачи объектов perl между процессами можно заюзать? > > > > А чем не нравится старый добрый prefork? Наплодить форков по числу > > процессорных ядер и каждый пусть делает свой accept. > > а обработку запросов клиентов по методу событийной машины? ну да так и > есть. вопрос только в том что событийная машина при наличии "тяжелых" > процессов обработки тоже начинает тормозить прием запросов от клиента. Событийная машина хороша, когда мало вычислений, и программа большую часть времени ждёт ввода-вывода. Когда у вас большая вычислительная нагрузка, преимущества от асинхронного ввода-вывода неочевидны. Кстати, а почему у вас шаблонизатор тормозит? Может другой попробуете? -- Alexander Lourier, http://aml.rulezz.ru/ From ruz на bestpractical.com Thu Jan 13 18:00:42 2011 From: ruz на bestpractical.com (Ruslan Zakirov) Date: Fri, 14 Jan 2011 05:00:42 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL?= =?utf-8?b?0YU=?= In-Reply-To: References: <1739193977.20110113121541@softsearch.ru> Message-ID: 2011/1/13 Ivan Petrov : > >> Поделите  обработку  на несколько очень мелких по времени работы фаз и >> после  обработки  каждой  фазы  возвращайте управление в AnyEvent. Так >> решает подобную задачу тот же nginx. > > Хороший путь но не всегда рабочий. > > я отдаю вебстранички. как в любой системе получается несколько стадий: > выборка направления движения-обработки (контроллер), выборка данных > (модель),  выдача данных (отображение). На более мелкие фазы как-то не > бъется. > > то есть если например идет сборка html из темплейта то ее уже сложно побить, > разве что свой темплейтный адаптер ваять. Если идет сборка HTML из шаблона и шаблонизатор читает файлы с диска сам, то скорее всего он блокирующий, что конечно же идет в разрез event loop'ом. Делайте через fork. Как AnyEvent::DBI. Туда storable hash с данными, обратно html. Конечно же вы потеряете на сериализации, передаче, десериализации и обратном процессе, но это позволит не блокировать ваш loop. Можно переписать шаблонизатор и сделать его не блокирующим. При определенных условиях можно из блокируещего шаблонизатора сделать не блокирующий. Если шаблонизатор поддерживает передачу шаблона, а не имени файла, то можно читать через AIO предварительно шаблон и передававать его. Если в шаблонизаторе поддерживаются вкулючения других шаблонов из файлов, то можно перейти на свой синтаксис включения. Сначала парсить шаблон шаблонизатором, потом парсить самостоятельно на предмет включений и получать файлы через AIO. И т.д. и т.п. В идеальной ситуации, все опереции ввода вывода не блокирующие. Далее все упирается в CPU. Предела вы достигаете, когда у вас CPU жрется на 100%. Количество процессов c loop'ом должно соответствовать количеству CPU или быть меньше. В теории добавление процессов только замедлит работу так как шедулер ядра начнет делить один CPU между несколькими CPU интенсивными процессами, что позитивно не скажется на пропускной способности. Если речь идет о том что один запрос требует много CPU и все остальные ждут пока он вернет управление в loop. То тут можно только дробить задачу и периодически возвращаться к обработке других событий. Это только уменьшит задержки для остальных клиентов, но никак не повысит общую производительность. Если ваш CPU может подсчитать только 10 полных заданий за 1 секунду и при этом задача не нуждается в IO, то вы можете обрабатывать 10 запросов в секунду * кол-во CPU и не более. Все это теория и пока мой AnyEvent проект не ушел в продакшен, но уйдет в этом месяце и там я уд точно столкнусь с практикой и возможно пменяю свое мнение на диаметральное. > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Best regards, Ruslan. From peter на vereshagin.org Fri Jan 14 01:52:06 2011 From: peter на vereshagin.org (Peter Vereshagin) Date: Fri, 14 Jan 2011 12:52:06 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <4D2EFB0F.7090801@ali.org.ua> Message-ID: <20110114095204.GA10975@external.screwed.box> You can leave your hat on, moscow-pm! 2011/01/13 05:30:46 -0800 moscow-pm-request на pm.org => To moscow-pm на pm.org : > Не припомню ни одного IPC, который бы позволял шарить перловые > объекты без сериализации. Тогда, видимо, лучше поискать сериализатор сам не пробовал, но http://search.cpan.org/perldoc?Coro === provides a full shared address space, which makes communication between threads very easy ... multiple running interpreters that share data === может кто тут пытал это? а через IPC::MM форки шарятся сносно. 73! Peter pgp: A0E26627 (4A42 6841 2871 5EA7 52AB 12F8 0CE1 4AAC A0E2 6627) -- http://vereshagin.org From ali на ali.org.ua Fri Jan 14 02:05:27 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Fri, 14 Jan 2011 12:05:27 +0200 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: <20110114095204.GA10975@external.screwed.box> References: <20110114095204.GA10975@external.screwed.box> Message-ID: <4D301FE7.7000804@ali.org.ua> On 14.01.2011 11:52, Peter Vereshagin wrote: > сам не пробовал, но http://search.cpan.org/perldoc?Coro > === > provides a full shared address space, which makes > communication between threads very easy > ... > multiple running interpreters that share data > === > может кто тут пытал это? Это короутины. Они не параллельны на самом деле. > а через IPC::MM форки шарятся сносно. О! А вот это дельно. Надо его пощупать? -- Олег Алистратов From peter на vereshagin.org Fri Jan 14 03:03:06 2011 From: peter на vereshagin.org (Peter Vereshagin) Date: Fri, 14 Jan 2011 14:03:06 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <4D301FE7.7000804@ali.org.ua> References: <20110114095204.GA10975@external.screwed.box> <4D301FE7.7000804@ali.org.ua> Message-ID: <20110114110305.GB10975@external.screwed.box> You can leave your hat on, Oleg! 2011/01/14 12:05:27 +0200 Oleg Alistratov => To Moscow.pm group : OA> > а через IPC::MM форки шарятся сносно. OA> О! А вот это дельно. Надо его пощупать??? работают, в особые тесты хотя не впрягал. http://gitweb.vereshagin.org/FCGI-Spawn/blob/HEAD:/FCGI-Spawn/fcgi_spawn там понадобилось шарить pid_callouts чтобы висячие процессы прибивались. как понадобилось --- пошёл, поискал как следует, и нашёл. а про короутины где читать, что у них там за шедулятор? это они, наверное, interpreters multiplicity пользуют? с которой mod_perl2 несовместим. 73! Peter pgp: A0E26627 (4A42 6841 2871 5EA7 52AB 12F8 0CE1 4AAC A0E2 6627) -- http://vereshagin.org From ali на ali.org.ua Fri Jan 14 03:26:16 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Fri, 14 Jan 2011 13:26:16 +0200 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: <20110114110305.GB10975@external.screwed.box> References: <20110114095204.GA10975@external.screwed.box> <4D301FE7.7000804@ali.org.ua> <20110114110305.GB10975@external.screwed.box> Message-ID: <4D3032D8.5020307@ali.org.ua> On 14.01.2011 13:03, Peter Vereshagin wrote: > а про короутины где читать, что у них там за шедулятор? это они, наверное, > interpreters multiplicity пользуют? с которой mod_perl2 несовместим. Coroutines ? это всего лишь причесанные лонг-джампы. Time-sharing внутри процесса своими силами. Читать можно хотя бы вики: http://en.wikipedia.org/wiki/Coroutine http://search.cpan.org/perldoc?Coro/Intro.pod Когда дело доходит до сокетов и файлов, Coro задействует тот же AnyEvent, например. -- Олег Алистратов From dmitry на karasik.eu.org Fri Jan 14 04:10:29 2011 From: dmitry на karasik.eu.org (Dmitry Karasik) Date: Fri, 14 Jan 2011 13:10:29 +0100 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <20110114095204.GA10975@external.screwed.box> References: <4D2EFB0F.7090801@ali.org.ua> <20110114095204.GA10975@external.screwed.box> Message-ID: <20110114121029.GA74783@tetsuo.karasik.eu.org> > сам не пробовал, но http://search.cpan.org/perldoc?Coro > === > provides a full shared address space, which makes > communication between threads very easy это диверсия - почитайте внимательно его определение тредов, оно у него собственное ;) -- Sincerely, Dmitry Karasik From dsimonov на gmail.com Fri Jan 14 04:21:36 2011 From: dsimonov на gmail.com (Dmitry Simonov) Date: Fri, 14 Jan 2011 15:21:36 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL?= =?utf-8?b?0YU=?= In-Reply-To: References: Message-ID: А зачем тебе хорошая технология AnyEvent, которая вообще говоря не заточена под интерфейсные работы? --- С искр. ув. Д.Симонов 2011/1/13 Ivan Petrov : > Есть хорошая технология AnyEvent From mons на cpan.org Fri Jan 14 06:46:34 2011 From: mons на cpan.org (Mons Anderson) Date: Fri, 14 Jan 2011 17:46:34 +0300 Subject: [Moscow.pm] =?windows-1251?b?7/Du9uXx8fsg6CBBbnlFdmVudDog4fvx8vDg?= =?windows-1251?b?/yDv5fDl5OD34CDk4O3t+/U=?= In-Reply-To: References: <1739193977.20110113121541@softsearch.ru> Message-ID: <201101141746.34450.mons@cpan.org> On Thursday 13 January 2011 12:52:49 Ivan Petrov wrote: > Хороший путь но не всегда рабочий. > > я отдаю вебстранички. как в любой системе получается несколько стадий: > выборка направления движения-обработки (контроллер), выборка данных > (модель),  выдача данных (отображение). На более мелкие фазы как-то не > бъется. > > то есть если например идет сборка html из темплейта то ее уже сложно > побить, разве что свой темплейтный адаптер ваять. 1. Посмотрите на Text::Xslate 2. Посмотрите в Coro на т.н. timeslice через VTALARM. через него можно асинхронно прервать выполнение длинного таска и дать "немножко" поработать событийной машине. но там нужно очень аккуратно, т.к. это сигналы. -- Mons Anderson aka Vladimir Perepelitsa / #99779956 / quanth на irc.freenode.net From inthrax на gmail.com Fri Jan 14 06:54:05 2011 From: inthrax на gmail.com (Mons Anderson) Date: Fri, 14 Jan 2011 17:54:05 +0300 Subject: [Moscow.pm] =?windows-1251?b?7/Du9uXx8fsg6CBBbnlFdmVudDog4fvx8vDg?= =?windows-1251?b?/yDv5fDl5OD34CDk4O3t+/U=?= In-Reply-To: References: Message-ID: <201101141754.05288.inthrax@gmail.com> И еще скажу вот что: Если CPU-интенсивность обработки массива данных начинает превышать двойную интенсивность сериализации/десериализации, выносите в отдельные процессы тяжделую обработку через сериализацию/десериализацию. причем если, скажем у вас 4 CPU core, то 1 CORE отдать целиком под loop, 3 под workers, и задачи воркерам раздавать через очередь (внешнюю, типа beanstalk, или внутреннюю на IPC) в случае внешних очередей вы в дальнейшем можете очень легко вынести CPU-intensive tasks на другие N машин. On Thursday 13 January 2011 10:01:43 Ivan Petrov wrote: > Есть хорошая технология AnyEvent (на самом деле их множество разных). > Когда ваяем какой-либо сервер с использованием этой технологии, то под нее > довольно хорошо ложится только простая передача контента из сокета в сокет. > А вот если сюда надо добавить обработку данных, то в зависимости от того > насколько эта обработка сложная технология может начать хромать на обе > ноги. > > схема: > > 1. взяли данные из одного места (AE::io $place, 0 sub {}) > 2. сделали над данными преобразование (тот самый sub) > 3. отдали их клиенту (AE::io, $client, 1, sub {}) > > все работает красиво и быстро, пока пункт 2 выполняется быстро. Когда в > пункте 2 мы делаем например какую-то текстовую обработку данных, то вся > система понижает время отклика. > > хочется спросить у аудитории кто какие пути борьбы с этим знает? > > наиболее очевидный - запуск N параллельных процессов, которые работают по > этой схеме. Получается что это работает сильно лучше форковой схемы (один > процесс на одного клиента), но в целом тоже может страдать отклик. > появляется проблема что если один процесс "схватил" несколько клиентов, а > один из них требует выполнения ресурсоемкого задания, то другой клиент > будет ждать, хотя мог бы быть обработан > > и менее очевидный - вынесение пункта 2 в отдельный (отдельные) процесс и > тогда обычным AE::io сплавлять ему данные и получать ответ. > > но тут встает задача быстрой передачи данных задания в другой процесс. > сериализация/десериализация сама по себе может оказаться довольно накладной > вещью и возвращаемся к тому с чего мы начали. А есть ли способ (может на > базе mmap кто-то делал решение?) быстрой передачи объекта perl между двумя > процессами? И вообще, кто решал подобные проблемы, поделитесь > соображениями? -- Vladimir Perepelitsa aka Mons Anderson / #99779956 From despairr на gmail.com Fri Jan 14 23:10:25 2011 From: despairr на gmail.com (Walery Studennikov) Date: Sat, 15 Jan 2011 11:10:25 +0400 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <201101141746.34450.mons@cpan.org> References: <1739193977.20110113121541@softsearch.ru> <201101141746.34450.mons@cpan.org> Message-ID: 14 января 2011 г. 18:46 пользователь Mons Anderson написал: > 1. Посмотрите на Text::Xslate "Xslate is 100+ times faster than Template-Toolkit" Круто... Учитывая, что есть поддержка подмножества TT-синтаксиса (Text::Xslate::Syntax::TTerse) -- интересно будет посмотреть... -- Walery Studennikov http://www.reg.ru/ From pintograss на gmail.com Sat Jan 15 04:53:47 2011 From: pintograss на gmail.com (Buktor) Date: Sat, 15 Jan 2011 15:53:47 +0300 Subject: [Moscow.pm] =?koi8-r?b?8M/E0sHCz9TLwQ==?= Message-ID: <1295096027.1943.0.camel@faraday> Есть возможность подработать. Для сайта http://memekabebeka.ru/ нужен perl программист для постоянного сотрудничества. Ничего сверх сложного, - perl и mysql Нужно около 40 часов в месяц, в зависимости количества задач. По деньгам в месяц выходит примерно 8-10 тыс за хорошо выполненную работу. Сам занимался сайтом несколько месяцев. Сейчас сменил основную работу и времени для доработок не осталось. Ищу человека который мог бы продолжить. На первых порах могу что-то подсказывать. Задач для доработки сейчас много, сайт развивается. From postmaster на softsearch.ru Sat Jan 15 06:42:30 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Sat, 15 Jan 2011 17:42:30 +0300 Subject: [Moscow.pm] =?koi8-r?b?79TMwcTLwSBYUy3Nz8TVzNEu?= Message-ID: <719245840.20110115174230@softsearch.ru> Здравствуйте. Есть один древний перловый модуль, написанный на XS. После его работы возникают глюки в работе Cache::Memcached::Fast: читается ключик с одного сервера, а пишется на другой . Буду благодарен за информацию о способах поиска кривизны в нашем модуле. Желательно со ссылками на статьи и примеры. Опыта программирования на С не много. Если есть какая-нить тулза, которая покажет возможные проблемы, то было бы совсем хорошо. -- С уважением, Михаил Монашёв From ruz на bestpractical.com Sat Jan 15 09:50:56 2011 From: ruz на bestpractical.com (Ruslan Zakirov) Date: Sat, 15 Jan 2011 20:50:56 +0300 Subject: [Moscow.pm] =?utf-8?b?0J7RgtC70LDQtNC60LAgWFMt0LzQvtC00YPQu9GP?= =?utf-8?q?=2E?= In-Reply-To: <719245840.20110115174230@softsearch.ru> References: <719245840.20110115174230@softsearch.ru> Message-ID: Привет, Из тулзы можно только посоветовать valgrind. 2011/1/15 Михаил Монашёв : > Здравствуйте. > > Есть  один древний перловый модуль, написанный на XS. После его работы > возникают  глюки  в  работе  Cache::Memcached::Fast: читается ключик с > одного  сервера, а пишется на другой . Буду благодарен за информацию о > способах  поиска  кривизны  в  нашем модуле. Желательно со ссылками на > статьи  и  примеры.  Опыта  программирования  на С не много. Если есть > какая-нить  тулза,  которая  покажет  возможные  проблемы,  то было бы > совсем хорошо. > > -- > > С уважением, > Михаил Монашёв > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Best regards, Ruslan. From cub.uanic на gmail.com Sat Jan 15 11:32:48 2011 From: cub.uanic на gmail.com (Oleg Kostyuk) Date: Sat, 15 Jan 2011 21:32:48 +0200 Subject: [Moscow.pm] =?utf-8?b?0J/QvtC00YDQsNCx0L7RgtC60LA=?= In-Reply-To: <1295096027.1943.0.camel@faraday> References: <1295096027.1943.0.camel@faraday> Message-ID: То есть это примерно 6.5-8.2 USD за рабочий час, я правильно посчитал? 15 января 2011 г. 14:53 пользователь Buktor написал: > Есть возможность подработать. > > Для сайта http://memekabebeka.ru/ нужен perl программист для постоянного > сотрудничества. Ничего сверх сложного, - perl и mysql Нужно около 40 > часов в месяц, в зависимости количества задач. По деньгам в месяц > выходит примерно 8-10 тыс за хорошо выполненную работу. > > Сам занимался сайтом несколько месяцев. Сейчас сменил основную работу и > времени для доработок не осталось. Ищу человека который мог бы > продолжить. На первых порах могу что-то подсказывать. > > Задач для доработки сейчас много, сайт развивается. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Sincerely yours, Oleg Kostyuk (CUB-UANIC) From pintograss на gmail.com Sat Jan 15 12:29:12 2011 From: pintograss на gmail.com (Buktor) Date: Sat, 15 Jan 2011 23:29:12 +0300 Subject: [Moscow.pm] =?koi8-r?b?8M/E0sHCz9TLwQ==?= In-Reply-To: References: <1295096027.1943.0.camel@faraday> Message-ID: <1295123352.1975.21.camel@faraday> В Сб., 15/01/2011 в 21:32 +0200, Oleg Kostyuk пишет: > То есть это примерно 6.5-8.2 USD за рабочий час, я правильно посчитал? Да, посчитал правильно. From oleg.bunin на ontico.ru Sun Jan 16 12:26:48 2011 From: oleg.bunin на ontico.ru (Oleg Bunin) Date: Sun, 16 Jan 2011 23:26:48 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= Message-ID: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> Всем привет! Коллеги, я знаю, что у вас не в чести публикации о вакансиях. Но я попробую ;) Онтико - команда разработчиков, которая специализируется на разработках сложных проектов, высоконагруженных проектов и так далее. Мы разрабатываем такие проекты, консультируем, аудируем и проводим конференцию для разработчиков таких проектов - HighLoad++, РИТ++, надеюсь, что слышали :) Например, сейчас в работе одно интернет-телевидение, одна партнерка, уже четыре социальные сети и сложный WYSIWYG-конструктор сайтов. Команда работает над проектом 4-6 месяцев, затем выходит из него. Требования к разработчикам: + Уверенное владение языком Perl, опыт от 2 лет; + Опыт работы с операционными системами семейства Unix; + Глубокое понимание архитектуры apache 1.x или 2.x, его модулей (mod_perl, итд); + Опыт работы с базами данных (mysql, postgresql); + Понимание трехзвенной архитектуры крупных веб-сайтов; Желательно: + Опыт разработки крупных проектов, работающих в режиме 24x7; + Опыт работы в команде, SVN, трекеры; + Понимание основных принципов работы операционных систем семейства Unix; + Понимание принципов балансировки нагрузки и реальный опыт высоконагруженных проектов; + Знание стека протоколов TCP/IP (понимание модели OSI). Если Вы чего-то не знаете, мы готовы Вас научить. Место работы - Москва (офис между Соколом и Тушинской). Процесс разработки поставлен, проекты крупные, молодой, динамичный, яркий и амбициозный коллектив. Удаленная работа также возможна - пишите. График неформальный, но есть. Заработные платы высокие, ориентируемся на профессионализм и качество работы. К нам имеет смысл идти тем, кто хочет расти, кто хочет делать новое, кому интересно не только зарабатывать деньги, но постоянно увеличивать свои возможности и профессиональный уровень. Работать нужно будет над новыми сервисными проектами (социальные сети, конструкторы сайтов, баннерные сети), подробности на собеседовании. Заработная плата - 60000 - 90000 рублей и выше. В силу специфики работы, разработчики у нас не работают над одним и тем же проектом годами, это плюс для беспокойных, но минус для любящих стабильность. В общем и плюсов и минусов много - готов рассказать об этом в личку. -- С уважением, Олег Бунин +7 (916) 635-9584 http://www.ritconf.ru/ http://www.ontico.ru/ From postmaster на softsearch.ru Sun Jan 16 13:28:27 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Mon, 17 Jan 2011 00:28:27 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= In-Reply-To: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> Message-ID: <162185610.20110117002827@softsearch.ru> Здравствуйте, Олег. OB> Место работы - Москва (офис между Соколом и Тушинской) Я родился в Тушино и неплохо помню окрестности. Очень интересно, где именно у тебя там офис. На Волоколамском шоссе в описанном районе вроде в основном жилые дома и больницы разные... -- С уважением, Михаил Монашёв mailto:postmaster на softsearch.ru ICQ# 166233339 http://michael.mindmix.ru/ Без бэкапа по жизни. From oleg.bunin на ontico.ru Mon Jan 17 03:08:13 2011 From: oleg.bunin на ontico.ru (Oleg Bunin) Date: Mon, 17 Jan 2011 14:08:13 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= In-Reply-To: <162185610.20110117002827@softsearch.ru> References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> <162185610.20110117002827@softsearch.ru> Message-ID: <4d342358.ce7c0e0a.6d2d.fffff99f@mx.google.com> Улица Водников, http://www.wodniki.ru/ > OB> Место работы - Москва (офис между Соколом и Тушинской) > > Я родился в Тушино и неплохо помню окрестности. Очень интересно, где > именно у тебя там офис. На Волоколамском шоссе в описанном районе > вроде в основном жилые дома и больницы разные... -- С уважением, Олег Бунин +7 (916) 635-9584 http://www.ritconf.ru/ http://www.ontico.ru/ From i.petro.77.00 на gmail.com Mon Jan 17 03:29:20 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Mon, 17 Jan 2011 14:29:20 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: References: Message-ID: 14 января 2011 г. 15:21 пользователь Dmitry Simonov написал: > А зачем тебе хорошая технология AnyEvent, которая вообще говоря не > заточена под интерфейсные работы? > может я и правда решаю что-то не так, раз такие вопросы возникают в данный момент есть такая задача: имеем прокси сервер с поддержкой ICAP. нужно по своим правилам модифицировать/мониторить весь проходящий сквозь прокси http-траффик. сперва пошли по обычному пути: каждый ICAP-запрос - обрабатывается в префорке (Net::Serer). префорка вычитывает заголовки запроса и дергает функцию обработчик с вычитанным, которая решает что делать с запросом: менять или оставлять как есть. ну и в БД логгирует и по правилам выбранным из БД принимает решения/делает модификации. так вот, эта модель получается довольно накладной по ресурсам. тесты показывают что вариант на базе AnyEvent::Socket (tcp_server) к ресурсам сильно менее требователен выходит (особенно если учесть что 99% контента проходит сквозь это без модификации либо только с модификацией заголовков). проблемы начинаются когда надо полученный ответ сервера распарсить, модифицировать, собрать обратно в новый ответ. Блокирующих операций при этом нет (БД в AnyEvent опять же), но парсинг/обработка занимают иногда время что много клиентов скапливается в очереди на обработку. тут собственно два пути: экстенсивный - увеличение числа процессов слушающих соединения от клиентов. и интенсивный - вынос парсеров в отдельные процессы (возможно даже на отдельные хосты, в перспективе). ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From aml на rulezz.ru Mon Jan 17 03:51:01 2011 From: aml на rulezz.ru (Alexander Lourier) Date: Mon, 17 Jan 2011 14:51:01 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: References: Message-ID: <201101171451.01517.aml@rulezz.ru> В письме Monday 17 January 2011 14:29:20 Ivan Petrov написал: > имеем прокси сервер с поддержкой ICAP. > нужно по своим правилам модифицировать/мониторить весь проходящий сквозь > прокси http-траффик. Разделить задачу на две - отдельно маршрутизация трафика, отдельно тяжёлая обработка. Один сервер будет сделан на AnyEvent - он слушает HTTP-порт, считывает данные, принимает решение, требуется ли модификация, и если нет, то отдаёт данные как есть, а если да, то открывает новое соединение со вторым сервером, передаёт данные туда, ждёт ответа и пересылает ответ в браузер. То есть, основная его работа - переброска блоков данных. Блокировок не будет вообще. Второй сервер сделать как prefork нужного количества процессов, и он будет модифицировать данные так быстро, насколько способно железо. Масштабировать элементарно - просто добавлением серверов второго типа. -- Alexander Lourier, http://aml.rulezz.ru/ From jt на aaanet.ru Mon Jan 17 04:03:36 2011 From: jt на aaanet.ru (=?utf-8?B?0JXQstCz0LXQvdC40Lkg0KLQvtGA0L7Qv9C+0LI=?=) Date: Mon, 17 Jan 2011 15:03:36 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL0YU=?= In-Reply-To: <201101171451.01517.aml@rulezz.ru> References: <201101171451.01517.aml@rulezz.ru> Message-ID: Для обработки данных посмотрите в сторону Gearman - http://gearman.org/ Евгений jt на aaanet.ru On Jan 17, 2011, at 2:51 PM, Alexander Lourier wrote: > В письме Monday 17 January 2011 14:29:20 Ivan Petrov написал: > >> имеем прокси сервер с поддержкой ICAP. >> нужно по своим правилам модифицировать/мониторить весь проходящий сквозь >> прокси http-траффик. > > Разделить задачу на две - отдельно маршрутизация трафика, отдельно тяжёлая обработка. Один сервер будет сделан на > AnyEvent - он слушает HTTP-порт, считывает данные, принимает решение, требуется ли модификация, и если нет, то отдаёт > данные как есть, а если да, то открывает новое соединение со вторым сервером, передаёт данные туда, ждёт ответа и > пересылает ответ в браузер. То есть, основная его работа - переброска блоков данных. Блокировок не будет вообще. Второй > сервер сделать как prefork нужного количества процессов, и он будет модифицировать данные так быстро, насколько > способно железо. Масштабировать элементарно - просто добавлением серверов второго типа. > > -- > Alexander Lourier, http://aml.rulezz.ru/ > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dsimonov на gmail.com Mon Jan 17 04:11:47 2011 From: dsimonov на gmail.com (Dmitry Simonov) Date: Mon, 17 Jan 2011 15:11:47 +0300 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL?= =?utf-8?b?0YU=?= In-Reply-To: References: <201101171451.01517.aml@rulezz.ru> Message-ID: Жень! Это ж работа с трафиком... А Gearman - это очередь задач. Или я что-то путаю? У Вани как раз проблема в том, что он фактически работает в один поток. --- С искр. ув. Д.Симонов 2011/1/17 Евгений Торопов : > Для обработки данных посмотрите в сторону Gearman - http://gearman.org/ > Евгений > jt на aaanet.ru > On Jan 17, 2011, at 2:51 PM, Alexander Lourier wrote: > > В письме Monday 17 January 2011 14:29:20 Ivan Petrov написал: > > имеем прокси сервер с поддержкой ICAP. > > нужно по своим правилам модифицировать/мониторить весь проходящий сквозь > > прокси http-траффик. > > Разделить задачу на две - отдельно маршрутизация трафика, отдельно тяжёлая > обработка. Один сервер будет сделан на > AnyEvent - он слушает HTTP-порт, считывает данные, принимает решение, > требуется ли модификация, и если нет, то отдаёт > данные как есть, а если да, то открывает новое соединение со вторым > сервером, передаёт данные туда, ждёт ответа и > пересылает ответ в браузер. То есть, основная его работа - переброска блоков > данных. Блокировок не будет вообще. Второй > сервер сделать как prefork нужного количества процессов, и он будет > модифицировать данные так быстро, насколько > способно железо. Масштабировать элементарно - просто добавлением серверов > второго типа. > > -- > Alexander Lourier, http://aml.rulezz.ru/ > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > From sergle.ua на gmail.com Mon Jan 17 07:58:51 2011 From: sergle.ua на gmail.com (Sergey Leschenko) Date: Mon, 17 Jan 2011 17:58:51 +0200 Subject: [Moscow.pm] =?utf-8?b?0L/RgNC+0YbQtdGB0YHRiyDQuCBBbnlFdmVudDog?= =?utf-8?b?0LHRi9GB0YLRgNCw0Y8g0L/QtdGA0LXQtNCw0YfQsCDQtNCw0L3QvdGL?= =?utf-8?b?0YU=?= In-Reply-To: References: <201101171451.01517.aml@rulezz.ru> Message-ID: 2011/1/17 Dmitry Simonov : > Жень! Это ж работа с трафиком... А Gearman - это очередь задач. Или я > что-то путаю? > У Вани как раз проблема в том, что он фактически работает в один поток. Gearman - в качестве управления серверами второго типа, насколько я понял. -- Sergey From postmaster на softsearch.ru Mon Jan 17 09:49:59 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Mon, 17 Jan 2011 20:49:59 +0300 Subject: [Moscow.pm] =?koi8-r?b?79TMwcTLwSBYUy3Nz8TVzNEu?= In-Reply-To: References: <719245840.20110115174230@softsearch.ru> Message-ID: <781244931.20110117204959@softsearch.ru> Здравствуйте, Руслан. RZ> Из тулзы можно только посоветовать valgrind. Ага, спасибо. А есть вообще идеи, как один XS-модуль может влиять на другой? -- С уважением, Михаил Монашёв mailto:postmaster на softsearch.ru ICQ# 166233339 http://michael.mindmix.ru/ Без бэкапа по жизни. From evgeniy на kosov.su Mon Jan 17 10:02:56 2011 From: evgeniy на kosov.su (Evgeniy Kosov) Date: Mon, 17 Jan 2011 21:02:56 +0300 Subject: [Moscow.pm] =?koi8-r?b?79TMwcTLwSBYUy3Nz8TVzNEu?= In-Reply-To: <781244931.20110117204959@softsearch.ru> References: <719245840.20110115174230@softsearch.ru> <781244931.20110117204959@softsearch.ru> Message-ID: <4D348450.5000005@kosov.su> On 17.01.2011 20:49, Михаил Монашёв wrote: > А есть вообще идеи, как один XS-модуль может влиять на другой? Как угодно. Они же в одном адресном пространстве живут и никак не изолированы. -- С уважением, Евгений Косов. From peter на vereshagin.org Tue Jan 18 06:15:36 2011 From: peter на vereshagin.org (Peter Vereshagin) Date: Tue, 18 Jan 2011 17:15:36 +0300 Subject: [Moscow.pm] =?koi8-r?b?0NLPw8XT09kgySBBbnlFdmVudDogwtnT1NLB0SDQ?= =?koi8-r?b?xdLFxMHewSDEwc7O2cg=?= In-Reply-To: <1749638501.20110113125807@softsearch.ru> Message-ID: <20110118141536.GA5164@external.screwed.box> Happiness lies in your own hell, moscow-pm! 2011/01/13 02:51:28 -0800 moscow-pm-request на pm.org => To moscow-pm на pm.org : > А вообще текстомолотилкам не место в веб-сервере. Какой стремительный домкрат. Хочется подробнее: имеется в виду вынесение задачи по представлению содержимого на сторону клиента? Какие есть реализации? из того, что я знаю, ни одно не milky way: - xsl на стороне клиента: нестабилен ( был ). - js ( ajax,json,rpc, etc. ) : проблемен для индексации публичной части в основных источниках посетителей. Или это что-то совсем другое? 73! Peter pgp: A0E26627 (4A42 6841 2871 5EA7 52AB 12F8 0CE1 4AAC A0E2 6627) -- http://vereshagin.org From andy на shitov.ru Wed Jan 19 00:25:03 2011 From: andy на shitov.ru (Andrew Shitov) Date: Wed, 19 Jan 2011 09:25:03 +0100 Subject: [Moscow.pm] =?utf-8?q?Fwd=3A_YAPC=3A=3AEurope_2011_=E2=80=9CModer?= =?utf-8?b?biBQZXJs4oCd?= In-Reply-To: References: Message-ID: ---------- Forwarded message ---------- From: Yuri Pats Date: 2011/1/19 Subject: [Minsk-pm] YAPC::Europe 2011 ?Modern Perl? To: "Minsk.pm group" Привет всем. Началась регистрация на крупнейшую Perl конференцию в Европе, которая в этом году, стараниями Андрея Шитова и его товарищей по цеху, пройдет очень близко к нам.  В Риге. Регистрируемся тут http://yapceurope.lv/ye2011/ -- WBR, Yuri Pats skype: yuripats cellular: +375 (29) 5870723 _______________________________________________ Minsk-pm mailing list Minsk-pm на pm.org http://mail.pm.org/mailman/listinfo/minsk-pm -- Andrew Shitov ______________________________________________________________________ andy на shitov.ru | http://shitov.ru From timur.ivanov на gmail.com Sat Jan 22 02:46:08 2011 From: timur.ivanov на gmail.com (Timur Ivanov) Date: Sat, 22 Jan 2011 13:46:08 +0300 Subject: [Moscow.pm] =?utf-8?b?UGVybC3RgNCw0LfRgNCw0LHQvtGC0YfQuNC6LCA=?= =?utf-8?b?0LrRgNGD0L/QvdGL0LUg0L/RgNC+0LXQutGC0YssINCe0L3RgtC40Lo=?= =?utf-8?b?0L4=?= In-Reply-To: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> Message-ID: 2011/1/16 Oleg Bunin : > Всем привет! > > Коллеги, я знаю, что у вас не в чести публикации о вакансиях. Но я попробую > ;) > > Онтико - команда разработчиков, которая специализируется на разработках > сложных проектов, высоконагруженных проектов и так далее. Мы разрабатываем > такие проекты, консультируем, аудируем и проводим конференцию для > разработчиков таких проектов - HighLoad++, РИТ++, надеюсь, что слышали :) > > Например, сейчас в работе одно интернет-телевидение, одна партнерка, уже > четыре социальные сети и сложный WYSIWYG-конструктор сайтов. Команда > работает над проектом 4-6 месяцев, затем выходит из него. > > Требования к разработчикам: >  + Уверенное владение языком Perl, опыт от 2 лет; >  + Опыт работы с операционными системами семейства Unix; >  + Глубокое понимание архитектуры apache 1.x или 2.x, его модулей (mod_perl, > итд); >  + Опыт работы с базами данных (mysql, postgresql); >  + Понимание трехзвенной архитектуры крупных веб-сайтов; > > Желательно: >  + Опыт разработки крупных проектов, работающих в режиме 24x7; >  + Опыт работы в команде, SVN, трекеры; >  + Понимание основных принципов работы операционных систем семейства Unix; >  + Понимание принципов балансировки нагрузки и реальный опыт > высоконагруженных проектов; >  + Знание стека протоколов TCP/IP (понимание модели OSI). > > Если Вы чего-то не знаете, мы готовы Вас научить. > > Место работы - Москва (офис между Соколом и Тушинской). Процесс разработки > поставлен, проекты крупные, молодой, динамичный, яркий и амбициозный > коллектив. Удаленная работа также возможна - пишите. > > График неформальный, но есть. Заработные платы высокие, ориентируемся на > профессионализм и качество работы. К нам имеет смысл идти тем, кто хочет > расти, кто хочет делать новое, кому интересно не только зарабатывать деньги, > но постоянно увеличивать свои возможности и профессиональный уровень. > > Работать нужно будет над новыми сервисными проектами (социальные сети, > конструкторы сайтов, баннерные сети), подробности на собеседовании. > Заработная плата - 60000 - 90000 рублей и выше. > > В силу специфики работы, разработчики у нас не работают над одним и тем же > проектом годами, это плюс для беспокойных, но минус для любящих > стабильность. В общем и плюсов и минусов много - готов рассказать об этом в > личку. > > Олег, а зарплату вы уже стали платить (вовремя) ? А то про вас тут люди, работавшие с вами, рассказывают всякое... From dmitry на eremeev.ru Sat Jan 22 04:39:56 2011 From: dmitry на eremeev.ru (Dmitry Eremeev) Date: Sat, 22 Jan 2011 15:39:56 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= In-Reply-To: References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> Message-ID: <4D3AD01C.3020802@eremeev.ru> "Орлы, птицам деньги нужны?!" :-)))))) On 22.01.11 13:46, Timur Ivanov wrote: > Олег, а зарплату вы уже стали платить (вовремя) ? А то про вас тут > люди, работавшие с вами, рассказывают всякое... > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From oleg.bunin на ontico.ru Sun Jan 23 02:04:48 2011 From: oleg.bunin на ontico.ru (Oleg Bunin) Date: Sun, 23 Jan 2011 13:04:48 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= In-Reply-To: References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> Message-ID: <4d3bfd47.857a0e0a.6841.ffffaa87@mx.google.com> > > конструкторы сайтов, баннерные сети), подробности на собеседовании. > > Заработная плата - 60000 - 90000 рублей и выше. > > > > Олег, а зарплату вы уже стали платить (вовремя) ? А то про вас тут > люди, работавшие с вами, рассказывают всякое... Да, кризис закончился и мы его, слава Богу, выдержали. -- С уважением, Олег Бунин +7 (916) 635-9584 http://www.ritconf.ru/ http://www.ontico.ru/ From i.petro.77.00 на gmail.com Sun Jan 23 02:39:14 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 10:39:14 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= Message-ID: У Ларри Уолла есть пример когда используя tie перехватывают все обращения к $_. В перле есть старый баг, который видимо никогда уже не поправят: переменная $! всегда кривая, если используется use utf8 =пример #!/usr/bin/perl use warnings; use strict; use utf8; use open qw(:std :utf8); open my $file, '<', 'abrakadabra/not-found' or die "Ошибка открытия файла: $!"; =конец примера соответственно выведет этот пример такую строку: = Ошибка открытия файла: ???? ??°???????? ??°?????° ?????? ???°??°???????° at test_e.pl line 9. Хочется иметь в логах правильные коды ошибок. Поэтому я попробовал поиграться со связыванием чтобы пофиксить этот баг целиком на проекте но не ходя по коду и не делая decode utf8 => $! на каждое место где встречается $!. соответственно вышеприведенный тест переписал к виду: =второй пример #!/usr/bin/perl use warnings; use strict; use utf8; use open qw(:std :utf8); package FixErrno; use base qw(Tie::Scalar); use Encode qw(decode); sub TIESCALAR { return bless \my $dummy; } sub FETCH { print "FETCH\n"; return decode utf8 => ${ $_[0] }; } sub STORE { print "STORE\n"; ${ $_[0] } = $_[1]; } tie $! => 'FixErrno'; package main; use Encode qw(decode); open my $file, '<', 'abrakadabra/not-found' or die "Ошибка открытия файла: $!"; =конец второго примера соответственно результат работы такой: =начало perl test_e.pl FETCH Ошибка открытия файла: ???? ??°???????? ? ?°?????° ?????? ???°??°???????° at test_e.pl line 38. =конец то есть FETCH вызывается, а STORE не вызывается. А поскольку STORE не вызывается, то и все это не работает. Есть идеи что можно простого сделать с проектом у которого много $! но не хочется расставлять decode повсюду? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dim0xff на gmail.com Sun Jan 23 02:53:51 2011 From: dim0xff на gmail.com (Dmitry L.) Date: Sun, 23 Jan 2011 13:53:51 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: <201101231353.52049.dim0xff@gmail.com> Здравствуйте! > Есть идеи что можно простого сделать с проектом у которого много $! но не > хочется расставлять decode повсюду? > А если use encoding 'utf8'; ? -- //wbr, Dmitry L. From i.petro.77.00 на gmail.com Sun Jan 23 02:59:42 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 10:59:42 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: <201101231353.52049.dim0xff@gmail.com> References: <201101231353.52049.dim0xff@gmail.com> Message-ID: > А если use encoding 'utf8'; ? а при чем тут encoding? в него еще искусственный интеллект вроде не встроили чтобы отличать строки с багами от остальных ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From meettya на gmail.com Sun Jan 23 02:59:35 2011 From: meettya на gmail.com (Dmitry Karpich) Date: Sun, 23 Jan 2011 13:59:35 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> On Jan 23, 2011, at 1:39 PM, Ivan Petrov wrote: > В перле есть старый баг, который видимо никогда уже не поправят: переменная $! всегда кривая, если используется use utf8 > > =пример > > #!/usr/bin/perl > > use warnings; > use strict; > > use utf8; > use open qw(:std :utf8); > > open my $file, '<', 'abrakadabra/not-found' > or die "Ошибка открытия файла: $!"; > > =конец примера > > соответственно выведет этот пример такую строку: > > = > Ошибка открытия файла: ???? ??°???????? ??°?????° ?????? ???°??°???????° at test_e.pl line 9. Не могу воспроизвести проблему. bash-3.2$ uname -a Darwin TravelMate.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 bash-3.2$ perl -v This is perl 5, version 12, subversion 2 (v5.12.2) built for darwin-multi-2level bash-3.2$ ./01-test.pl Ошибка открытия файла:No such file or directory at ./01-test.pl line 9. Что я делаю не так ? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From victor на methodlab.info Sun Jan 23 03:10:40 2011 From: victor на methodlab.info (victor на methodlab.info) Date: Sun, 23 Jan 2011 14:10:40 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: Message-ID: <1295781040.2281.8.camel@victor> В Вс., 23/01/2011 в 10:39 +0000, Ivan Petrov пишет: > В перле есть старый баг, который видимо никогда уже не поправят: > переменная $! всегда кривая, если используется use ut Если ошибка всегда называется "Ошибка открытия файла", то поможет такой вариант: my $err = Encode::encode_utf8('Ошибка открытия файла'); open my $file, '<', 'abrakadabra/not-found' or die qq{$err $!}; -- С уважением, Виктор Метод Лаб +7 (495) 228-0992 www.methodlab.ru From i.petro.77.00 на gmail.com Sun Jan 23 03:37:55 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 11:37:55 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: > > > Что я делаю не так ? > > используете нелокализованный перл (либс) или английскую локаль? включите русский языки в сообщениях об ошибке и баг воспроизведется. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 23 03:39:22 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 11:39:22 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: <1295781040.2281.8.camel@victor> References: <1295781040.2281.8.camel@victor> Message-ID: > > > В перле есть старый баг, который видимо никогда уже не поправят: > > переменная $! всегда кривая, если используется use ut > Если ошибка всегда называется "Ошибка открытия файла", то поможет такой > вариант: > my $err = Encode::encode_utf8('Ошибка открытия файла'); > open my $file, '<', 'abrakadabra/not-found' or die qq{$err $!}; > > я в первом письме написал, что можно конечно пройтись по проекту и расставить decode (или encode, как кому нравится), но хочется централизованного решения ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From q на cono.org.ua Sun Jan 23 03:42:47 2011 From: q на cono.org.ua (Alex Varyanick) Date: Sun, 23 Jan 2011 13:42:47 +0200 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: 2011/1/23 Ivan Petrov : >> >> Что я делаю не так ? > > используете нелокализованный перл (либс) или английскую локаль? включите > русский языки в сообщениях об ошибке и баг воспроизведется. Тоже не воспроизводится, включал локаль русскую: % cat test.pl #!/usr/bin/perl use strict; use warnings; use utf8; use open qw(:std :utf8); use POSIX qw(setlocale LC_ALL); print setlocale(LC_ALL, "ru_RU.UTF-8"), "\n"; open(my $fh, '<', 'abrakadabra/not-found') or die "Ошибка открытия файла: $!"; % ./test.pl ru_RU.UTF-8 Ошибка открытия файла: No such file or directory at ./test.pl line 11. -- Varyanick I. Alex icq: 102 575 440 skype: cono.. q на cono.org.ua From i.petro.77.00 на gmail.com Sun Jan 23 04:07:36 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 12:07:36 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: > Тоже не воспроизводится, включал локаль русскую: > % cat test.pl > #!/usr/bin/perl > > use strict; > use warnings; > use utf8; > use open qw(:std :utf8); > use POSIX qw(setlocale LC_ALL); > > print setlocale(LC_ALL, "ru_RU.UTF-8"), "\n"; > > open(my $fh, '<', 'abrakadabra/not-found') or die "Ошибка открытия файла: > $!"; > > % ./test.pl > ru_RU.UTF-8 > Ошибка открытия файла: No such file or directory at ./test.pl line 11. > > мне лениво флеймить. а это уже чистой воды флейм пошел :( ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From q на cono.org.ua Sun Jan 23 05:52:54 2011 From: q на cono.org.ua (Alex Varyanick) Date: Sun, 23 Jan 2011 15:52:54 +0200 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: 2011/1/23 Ivan Petrov : > >> Тоже не воспроизводится, включал локаль русскую: >> % cat test.pl >> #!/usr/bin/perl >> >> use strict; >> use warnings; >> use utf8; >> use open qw(:std :utf8); >> use POSIX qw(setlocale LC_ALL); >> >> print setlocale(LC_ALL, "ru_RU.UTF-8"), "\n"; >> >> open(my $fh, '<', 'abrakadabra/not-found') or die "Ошибка открытия файла: >> $!"; >> >> % ./test.pl >> ru_RU.UTF-8 >> Ошибка открытия файла: No such file or directory at ./test.pl line 11. >> > мне лениво флеймить. а это уже чистой воды флейм пошел :( Почему Флейм? Мне допустим интересно как научить перл говорить по русски, я если честно первый раз вижу, что ошибки у перл бывают локализированными (мне очень стыдно :). -- Varyanick I. Alex icq: 102 575 440 skype: cono.. q на cono.org.ua From i.petro.77.00 на gmail.com Sun Jan 23 06:21:20 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 14:21:20 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: > Почему Флейм? потому что это уход от обсуждения проблемы к обсуждению деталей. > Мне допустим интересно как научить перл говорить по > русски, я если честно первый раз вижу, что ошибки у перл бывают > локализированными (мне очень стыдно :). > > полагаю надо установить libc, который поддерживает локализованные сообщения об ошибке. Потому что чтобы увидеть этот русский текст об ошибке не обязательно использовать perl, например программа на C делает то же что делает указанный пример на перле: #include #include #include #include #include #include #include int main(int argc, char **argv) { setlocale(LC_ALL, ""); int res = open("abrakadabra/not-found", O_RDONLY); if (res == -1) { printf("Ошибка открытия файла: %s\n", strerror(errno)); return -1; } return 0; } как видно, сообщение об ошибке локализовано "где-то вне" программы. Думаю что в моем перле где-то тоже скомпилено использовать локали из енвиронмента и он их использует. А в Вашем это либо отключено опциями компиляции, либо в /usr/share/locale/ru у Вас какой-то файлик отсутствует либо не знаю почему оно у Вас по русски не говорит. Какой-то очень древний libc? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 23 06:22:34 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 14:22:34 +0000 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: > int main(int argc, char **argv) { > setlocale(LC_ALL, ""); > int res = open("abrakadabra/not-found", O_RDONLY); > if (res == -1) { > printf("Ошибка открытия файла: %s\n", strerror(errno)); > return -1; > } > return 0; > } > > Да, забыл показать что оно работает по русски: $ ./test Ошибка открытия файла: Нет такого файла или каталога ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From vovkasm на gmail.com Sun Jan 23 07:40:31 2011 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Sun, 23 Jan 2011 18:40:31 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: 2011/1/23 Alex Varyanick : > 2011/1/23 Ivan Petrov : >> >>> Тоже не воспроизводится, включал локаль русскую: >>> % cat test.pl >>> #!/usr/bin/perl >>> >>> use strict; >>> use warnings; >>> use utf8; >>> use open qw(:std :utf8); >>> use POSIX qw(setlocale LC_ALL); >>> >>> print setlocale(LC_ALL, "ru_RU.UTF-8"), "\n"; >>> >>> open(my $fh, '<', 'abrakadabra/not-found') or die "Ошибка открытия файла: >>> $!"; >>> >>> % ./test.pl >>> ru_RU.UTF-8 >>> Ошибка открытия файла: No such file or directory at ./test.pl line 11. >>> >> мне лениво флеймить. а это уже чистой воды флейм пошел :( > > Почему Флейм? Мне допустим интересно как научить перл говорить по > русски, я если честно первый раз вижу, что ошибки у перл бывают > локализированными (мне очень стыдно :). Потому что это не у Perl, это у libc в вашей системе сообщения об ошибках могут быть локализованными или нет. Вот у меня в Ubuntu (): $ LANG=ru_RU.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' Нет такого файла или каталога $ LANG=en_US.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' No such file or directory А вот во FreeBSD (FreeBSD 8.2-RC2): $ LANG=ru_RU.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' No such file or directory $ LANG=en_US.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' No such file or directory За то вот так: $ LANG=ru_RU.KOI8-R perl -E 'open my $fh,"<","not-existing-file"; say $!' | iconv -f koi8-r -t utf-8 Нет такого файла или каталога > > -- > Varyanick I. Alex > icq: 102 575 440 > skype: cono.. > q на cono.org.ua > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Vladimir Timofeev From andrei.protasovitski на gmail.com Sun Jan 23 08:24:50 2011 From: andrei.protasovitski на gmail.com (Andrei) Date: Sun, 23 Jan 2011 17:24:50 +0100 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: Доброго здоровья! 23 января 2011 г. 11:39 пользователь Ivan Petrov написал: > У Ларри Уолла есть пример когда используя tie перехватывают все обращения к > $_. > > В перле есть старый баг, который видимо никогда уже не поправят: переменная > $! всегда кривая, если используется use utf8 > Это не в перле баг, это попытка сконкатенировать строку с utf-8 on со строкой с utf-8 off. Декодировать ничего не надо, надо просто флаг установить: Encode::_utf8_on($!); Но в этом случае я бы сделал какой-нить my_die, который бы всё это дело разруливал. -- Andrei Protasovitski < andrei[dot]protasovitski[at]gmail[dot]com > Diemen, Netherlands ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 23 08:40:02 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 19:40:02 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: Message-ID: > Это не в перле баг, это попытка сконкатенировать строку с utf-8 on со > строкой с utf-8 off. > дык в том и баг, что строка utf8-off. Когда должна быть utf8-on. это именно баг, никак по другому это не назвать. > Декодировать ничего не надо, надо просто флаг установить: > > Encode::_utf8_on($!); > > это то же самое что идти по всему проекту и искать $! и заменять их на decode. Делать так не хочется ибо вдруг в следующих версиях перла это изменится и придется опять по всему проекту идти и править все назад. ищется централизованное решение, которое желательно привести к виду use "решение" и далее остальной код не править. > Но в этом случае я бы сделал какой-нить my_die, который бы всё это дело > разруливал. > > тут проблема не только в die. die это в конкретном *примере* демонстрирующем проблему. а так $! используется много где, в частности и в записи информации в лог-файлы. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From meettya на gmail.com Sun Jan 23 08:45:02 2011 From: meettya на gmail.com (Dmitry Karpich) Date: Sun, 23 Jan 2011 19:45:02 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: <3ADB13CF-A70A-41F8-84AE-072313E93F2C@gmail.com> Офф-топик, но реально не усну иначе. On Jan 23, 2011, at 6:40 PM, Vladimir Timofeev wrote: > За то вот так: > $ LANG=ru_RU.KOI8-R perl -E 'open my $fh,"<","not-existing-file"; say > $!' | iconv -f koi8-r -t utf-8 > Нет такого файла или каталога Эммм... А на какой системе и с какими настройками это может сработать? DESCRIPTION The iconv program converts text from one encoding to another encoding. More precisely, it converts from the encoding given for the -f option to the encoding given for the -t option. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 23 08:54:46 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 19:54:46 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: > Darwin TravelMate.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386 дык неудивительно. Apple всегда было плевать на пользователей, вот они локализации повыпилили ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From vovkasm на gmail.com Sun Jan 23 08:57:28 2011 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Sun, 23 Jan 2011 19:57:28 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: <3ADB13CF-A70A-41F8-84AE-072313E93F2C@gmail.com> References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> <3ADB13CF-A70A-41F8-84AE-072313E93F2C@gmail.com> Message-ID: 2011/1/23 Dmitry Karpich : > Офф-топик, но реально не усну иначе. > On Jan 23, 2011, at 6:40 PM, Vladimir Timofeev wrote: > > За то вот так: > $ LANG=ru_RU.KOI8-R perl -E 'open my $fh,"<","not-existing-file"; say > $!' | iconv -f koi8-r -t utf-8 > Нет такого файла или каталога > > Эммм... А на какой системе и с какими настройками это может сработать? iconv там только потому, что ломало консоль из режима utf-8 переключать в koi8-r. А показать я хотел, то что во freebsd ф-ция strerror(3) для ru_RU.KOI8-R локализованна, а для ru_RU.UTF-8 локали "из коробки" не установленны. > > DESCRIPTION > The iconv program converts text from one encoding to another > encoding. More precisely, it converts from the encoding given for the -f > option to the encoding given for the -t option. > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Vladimir Timofeev From meettya на gmail.com Sun Jan 23 10:07:35 2011 From: meettya на gmail.com (Dmitry Karpich) Date: Sun, 23 Jan 2011 21:07:35 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <201101231353.52049.dim0xff@gmail.com> Message-ID: <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> On Jan 23, 2011, at 1:59 PM, Ivan Petrov wrote: > > А если use encoding 'utf8'; ? > > а при чем тут encoding? в него еще искусственный интеллект вроде не встроили чтобы отличать строки с багами от остальных > Кстати, да. Проверил на Ubuntu #!/usr/bin/perl use strict; use warnings; use encoding 'utf8'; open qw(:std :utf8); use locale; use POSIX qw(locale_h strtod); setlocale(LC_ALL, "ru_RU.UTF-8"); my $a = qq(п р и в е т); print 'yes'."\n" if ( $a =~ /\w+/ ) ; print uc($a),"\n"; open(my $fh, '<', 'decodeabrakadabra/not-found') or die "Ошибка открытия файла: ".$!; дает нам $ ./01-test.pl yes П Р И В Е Т Ошибка открытия файла: Нет такого файла или каталога at ./01-test.pl line 18. т.е. оно верно интерпретирует русский и нормально печатает локализованную ошибку. Или я опять чего-то не учел? > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org From vovkasm на gmail.com Sun Jan 23 10:27:58 2011 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Sun, 23 Jan 2011 21:27:58 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> References: <201101231353.52049.dim0xff@gmail.com> <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> Message-ID: 2011/1/23 Dmitry Karpich : > > On Jan 23, 2011, at 1:59 PM, Ivan Petrov wrote: > >> > А если use encoding 'utf8'; ? >> >> а при чем тут encoding? в него еще искусственный интеллект вроде не встроили чтобы отличать строки с багами от остальных >> > > Кстати, да. > Проверил на Ubuntu > > #!/usr/bin/perl > > use strict; > use warnings; > use encoding 'utf8'; > open qw(:std :utf8); > > use locale; > use POSIX qw(locale_h strtod); > > setlocale(LC_ALL, "ru_RU.UTF-8"); > > my $a = qq(п р и в е т); > print 'yes'."\n" if ( $a =~ /\w+/ ) ; > print uc($a),"\n"; > > open(my $fh, '<', 'decodeabrakadabra/not-found') or die "Ошибка открытия файла: ".$!; > > дает нам > > $ ./01-test.pl > yes > П Р И В Е Т > Ошибка открытия файла: Нет такого файла или каталога at ./01-test.pl line 18. > > т.е. оно верно интерпретирует русский и нормально печатает локализованную ошибку. > > Или я опять чего-то не учел? В принципе в таком виде действительно все как будто должно работать... но... encoding - стремная фича... в частности: 1. Меняет семантику конкатенации строк, что собственно и лечит "строка с русским текстом"."байты с русским текстом в utf-8" 2. Глобальная (но именно это и надо) 3. Есть/были баги, но насколько я понимаю если не мешать несколько разных кодировок, то все должно быть ок 4. Вроде в доках говорят, что НЕ thread safe... ЗЫ. Я бы постарался запускать приложения в локали C и не парился ;-) А use encoding использовал только в том случае, если есть тесты и можно с высокой вероятностью убедиться что все работает после внедрения. > >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Vladimir Timofeev From vovkasm на gmail.com Sun Jan 23 10:44:33 2011 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Sun, 23 Jan 2011 21:44:33 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: 2011/1/23 Ivan Petrov : > У Ларри Уолла есть пример когда используя tie перехватывают все обращения к > $_. > > В перле есть старый баг, который видимо никогда уже не поправят: переменная > $! всегда кривая, если используется use utf8 > > =пример > > #!/usr/bin/perl > > use warnings; > use strict; > > use utf8; > use open qw(:std :utf8); > > open my $file, '<', 'abrakadabra/not-found' >     or die "Ошибка открытия файла: $!"; > > =конец примера > > соответственно выведет этот пример такую строку: > > = > Ошибка открытия файла: ???? ??°???????? ??°?????° ?????? ???°??°???????° at > test_e.pl line 9. > > Хочется иметь в логах правильные коды ошибок. Поэтому я попробовал > поиграться со связыванием чтобы пофиксить этот баг целиком на проекте но не > ходя по коду и не делая decode utf8 => $! на каждое место где встречается > $!. > > соответственно вышеприведенный тест переписал к виду: > > =второй пример > > #!/usr/bin/perl > > use warnings; > use strict; > > use utf8; > use open qw(:std :utf8); > > package FixErrno; > > use base qw(Tie::Scalar); > use Encode qw(decode); > > sub TIESCALAR > { >     return bless \my $dummy; > } > > sub FETCH > { >     print "FETCH\n"; >     return decode utf8 => ${ $_[0] }; > } > > sub STORE > { >     print "STORE\n"; >     ${ $_[0] } = $_[1]; > } > > > tie $! => 'FixErrno'; > > package main; > use Encode qw(decode); > > > open my $file, '<', 'abrakadabra/not-found' >     or die "Ошибка открытия файла: $!"; > > =конец второго примера > > соответственно  результат работы такой: > > =начало > > perl test_e.pl > FETCH > Ошибка открытия файла: ???? ??°???????? ? >                                          ?°?????° ?????? ???°??°???????° at > test_e.pl line 38. > =конец > > то есть FETCH вызывается, а STORE не вызывается. А поскольку STORE не > вызывается, то и все это не работает. > Есть идеи что можно простого сделать с проектом у которого много $! но не > хочется расставлять decode повсюду? И собственно в тему топика: $! - магическая переменная... у нее просто нет значения, а значит нечего устанавливать, значит не вызывается STORE. Можно проверить так: perl -E '$! = "test"; say $!' Когда из нее читают значение, вызывается magic get, который устанавливает два слота в возвращаемом значении, код из errno в IV (для числового контекста) и результат strerror(errno) в PV (для строкового). Она уже магическая и юзерская магия tie (или напрямую через Variable::Magic) применяется до и изменить ничего не может уже. Поэтому по ходу менять придется каждую строку с $! в коде (благо обнаружить их достаточно просто... ;-) Либо глобально менять семантику конкатенации через use locale 'utf8';, как показал Дмитрий. Только вот боюсь других багов с этим можно огрести. Врядли что-то еще здесь можно придумать, имхо. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Vladimir Timofeev From i.petro.77.00 на gmail.com Sun Jan 23 10:52:50 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 21:52:50 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> References: <201101231353.52049.dim0xff@gmail.com> <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> Message-ID: > Кстати, да. > Проверил на Ubuntu > > #!/usr/bin/perl > > use strict; > use warnings; > use encoding 'utf8'; > хм. работает. надо будет серьезно потестить. баги utf8 то в общем-то все известны. а с encoding я пока ни разу не работал ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 23 11:00:35 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 23 Jan 2011 22:00:35 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: Message-ID: > Поэтому по ходу менять придется каждую строку с $! в коде (благо > обнаружить их достаточно просто... ;-) > Либо глобально менять семантику конкатенации через use locale 'utf8';, > как показал Дмитрий. Только вот боюсь других багов с этим можно > огрести. > Врядли что-то еще здесь можно придумать, имхо. > > менять все подряд использования $! на что-то довольно плохая идея. несмотря на то что этому багу уж лет сто, то его когда-нибудь могут всеж таки пофиксить и придется опять бегать по всему коду, только с обратной задачей. разве что сваять связанную переменную $ERRNO, которая всегда будет возвращать енкоденый $!. чтобы потом если понадобится только убрать decode в модуле с ним. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dim0xff на gmail.com Sun Jan 23 11:25:50 2011 From: dim0xff на gmail.com (Dmitry L.) Date: Sun, 23 Jan 2011 22:25:50 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: Message-ID: <201101232225.51278.dim0xff@gmail.com> Здравствуйте! > Вот у меня в Ubuntu (): > $ LANG=ru_RU.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' > Нет такого файла или каталога > $ LANG=en_US.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' > No such file or directory > > А вот во FreeBSD (FreeBSD 8.2-RC2): > $ LANG=ru_RU.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' > No such file or directory > $ LANG=en_US.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' > No such file or directory > За то вот так: > $ LANG=ru_RU.KOI8-R perl -E 'open my $fh,"<","not-existing-file"; say > $!' | iconv -f koi8-r -t utf-8 > Нет такого файла или каталога > %> locale LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL=ru_RU.UTF-8 %> LC_ALL=C LANG=C locale LANG=C LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL=C %> perl -E 'open my $fh,"<","not-existing-file"; say $!' Нет такого файла или каталога %> LC_ALL=C LANG=C perl -E 'open my $fh,"<","not-existing-file"; say $!' No such file or directory -- //wbr, Dmitry L. From andrei.protasovitski на gmail.com Sun Jan 23 13:53:29 2011 From: andrei.protasovitski на gmail.com (Andrei) Date: Sun, 23 Jan 2011 22:53:29 +0100 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: 23 января 2011 г. 17:40 пользователь Ivan Petrov написал: > > Это не в перле баг, это попытка сконкатенировать строку с utf-8 on со >> строкой с utf-8 off. >> > > дык в том и баг, что строка utf8-off. Когда должна быть utf8-on. > это именно баг, никак по другому это не назвать. > Почему данные от системы (или библиотеки) должны приходить с utf-8 on? -- Andrei Protasovitski < andrei[dot]protasovitski[at]gmail[dot]com > Diemen, Netherlands ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From q на cono.org.ua Sun Jan 23 13:58:08 2011 From: q на cono.org.ua (Alex Varyanick) Date: Sun, 23 Jan 2011 23:58:08 +0200 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: 2011/1/23 Vladimir Timofeev : > Вот у меня в Ubuntu (): > $ LANG=ru_RU.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' > Нет такого файла или каталога > $ LANG=en_US.UTF-8 perl -E 'open my $fh,"<","not-existing-file"; say $!' > No such file or directory Пробовал и в убунту и в генту. Freebsd нет под рукой. -- Varyanick I. Alex icq: 102 575 440 skype: cono.. q на cono.org.ua From i.petro.77.00 на gmail.com Sun Jan 23 23:52:12 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Mon, 24 Jan 2011 10:52:12 +0300 Subject: [Moscow.pm] =?koi8-r?b?dGllIM7BINPUwc7EwdLUztnFINDF0sXNxc7O2cU=?= In-Reply-To: References: Message-ID: > Почему данные от системы (или библиотеки) должны приходить с utf-8 on? > > данные от системы могут приходить в любой кодировке. а вот в самой программе они должны быть в той кодировке в которой заявлено. а заявлено use utf8; если скажем ява заявлено что работает в юникоде, то выдача текста ошибки в отличной от этой кодировки будет считаться багом. так и тут. хотя конечно понятно, что базар и все такое. но это именно бага ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From andrei.protasovitski на gmail.com Mon Jan 24 00:02:56 2011 From: andrei.protasovitski на gmail.com (Andrei) Date: Mon, 24 Jan 2011 09:02:56 +0100 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: perldoc utf8 Оно совсем не для этого. Это инструкция для парсера. On 24 Jan 2011 08:52, "Ivan Petrov" wrote: >> Почему данные от системы (или библиотеки) должны приходить с utf-8 on? >> >> данные от системы могут приходить в любой кодировке. а вот в самой > программе они должны быть в той кодировке в которой заявлено. > а заявлено use utf8; > > если скажем ява заявлено что работает в юникоде, то выдача текста ошибки в > отличной от этой кодировки будет считаться багом. так и тут. > > хотя конечно понятно, что базар и все такое. но это именно бага ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From aml на rulezz.ru Mon Jan 24 00:03:29 2011 From: aml на rulezz.ru (Alexander Lourier) Date: Mon, 24 Jan 2011 11:03:29 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: <201101241103.30021.aml@rulezz.ru> В письме Monday 24 January 2011 10:52:12 Ivan Petrov написал: > > Почему данные от системы (или библиотеки) должны приходить с utf-8 on? > > > > данные от системы могут приходить в любой кодировке. а вот в самой > > программе они должны быть в той кодировке в которой заявлено. > а заявлено use utf8; use utf8 заявляет только о том, в какой кодировке написан данный конкретный исходник. Что не-ascii символы, встречающиеся в исходнике, должны конвертироваться во внутренний utf-8 по правилам utf-8. Сообщения от операционной системы приходят в кодировке локали. Было бы вполне логично, чтобы $! лез смотреть в локаль и преобразовывал к нормальному внутреннему utf-8. В общем случае, у вас скрипт может быть написан в одной кодировке (вы это указываете через use encoding), операционная система выдаёт ошибки в другой (это указывается через локаль), а вы хотите, чтобы всё это нормально работало и обрабатывалось в человеческом utf-8 с поддержкой всего набора символов. > если скажем ява заявлено что работает в юникоде, то выдача текста ошибки в > отличной от этой кодировки будет считаться багом. так и тут. > > хотя конечно понятно, что базар и все такое. но это именно бага -- Alexander Lourier, http://aml.rulezz.ru/ From postmaster на softsearch.ru Mon Jan 24 02:05:03 2011 From: postmaster на softsearch.ru (=?koi8-r?B?7cnIwcnMIO3PzsHbo9c=?=) Date: Mon, 24 Jan 2011 13:05:03 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= In-Reply-To: <4d3bfd47.857a0e0a.6841.ffffaa87@mx.google.com> References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> <4d3bfd47.857a0e0a.6841.ffffaa87@mx.google.com> Message-ID: <942161137.20110124130503@softsearch.ru> Здравствуйте, Олег. >> > конструкторы сайтов, баннерные сети), подробности на собеседовании. >> > Заработная плата - 60000 - 90000 рублей и выше. >> > >> >> Олег, а зарплату вы уже стали платить (вовремя) ? А то про вас тут >> люди, работавшие с вами, рассказывают всякое... OB> Да, кризис закончился и мы его, слава Богу, выдержали. Не хочу ничего сказать про проблемы с ЗП. Это твой бизнес и твои решения. Просто основной кризис ещё впереди, что как мне кажется, начинает осознавать всё больше и больше людей. А потому, так писать - себе вреднее, ибо становится очевидным в очередной кризис вы загнётесь, да ещё с долгами по ЗП. ИМХО, ЗП - это святое и платить её надо всегда, даже если из своего кармана доставать приходится. Лучше б написал, что кризис многому научил и больше мы не попадём впросак с ЗП из-за него. -- С уважением, Михаил Монашёв mailto:postmaster на softsearch.ru ICQ# 166233339 http://michael.mindmix.ru/ Без бэкапа по жизни. From oleg.bunin на ontico.ru Mon Jan 24 03:23:23 2011 From: oleg.bunin на ontico.ru (Oleg Bunin) Date: Mon, 24 Jan 2011 14:23:23 +0300 Subject: [Moscow.pm] =?koi8-r?b?UGVybC3SwdrSwcLP1N7Jyywgy9LV0M7ZxSDQ0s/F?= =?koi8-r?b?y9TZLCDvztTJy88=?= In-Reply-To: <942161137.20110124130503@softsearch.ru> References: <4d3356a0.0690d80a.7009.ffffa7a9@mx.google.com> <4d3bfd47.857a0e0a.6841.ffffaa87@mx.google.com> <942161137.20110124130503@softsearch.ru> Message-ID: <4d3d613b.ca7a0e0a.121c.ffffeb96@mx.google.com> > ИМХО, ЗП - это святое и платить её надо всегда, даже если из своего > кармана доставать приходится. > > Лучше б написал, что кризис многому научил и больше мы не попадём > впросак с ЗП из-за него. Миш, ну это я и имел ввиду. Теперь приходится держать хороший банк на черный день ;) -- С уважением, Олег Бунин +7 (916) 635-9584 http://www.ritconf.ru/ http://www.ontico.ru/ From ruz на bestpractical.com Mon Jan 24 03:29:14 2011 From: ruz на bestpractical.com (Ruslan Zakirov) Date: Mon, 24 Jan 2011 14:29:14 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <201101231353.52049.dim0xff@gmail.com> <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> Message-ID: 2011/1/23 Ivan Petrov : > >> Кстати, да. >> Проверил на Ubuntu >> >> #!/usr/bin/perl >> >> use strict; >> use warnings; >> use encoding 'utf8'; > > хм. работает. > > надо будет серьезно потестить. баги utf8 то в общем-то все известны. а с > encoding я пока ни разу не работал И не надо этой магии. Правильно как-то так: use utf8; use open ':locale'; print "Бла-бла". Encode::decode( (split '.', $ENV{'LC_ALL'} || $ENV{'LC_MESSAGES'} || $ENV{'LC_LANG'}, 2)[1], "$!" ); Правильно будет написать новую прагму или расширить utf8 или open, которая ставит GET MAGIC на $! и делает это за вас. Что-то типа: use open OS_ERROR => ':locale'; Выбран open, потому что он уже поддерживает такой синтаксис для STD потоков ввода/вывода. -- Best regards, Ruslan. From ali на ali.org.ua Mon Jan 24 03:36:38 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Mon, 24 Jan 2011 13:36:38 +0200 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <94321522-8AE8-4B49-B8E7-FBF4CB4E3D88@gmail.com> Message-ID: <4D3D6446.5020701@ali.org.ua> Привет, On 23.01.2011 16:22, Ivan Petrov wrote: я предлагаю вообще не пытаться локализовать сообщения об ошибках, по крайней мере, на уровне die, и особенно в большом проекте. Потому как где-то далеко ваш код может быть обернут во что-то вроде: eval { your_test(); }; if ($@ =~ /no such file/i) { ... } В таком случае лучше оставить как есть, и накидывать локализацию непосредственно перед выводом. Еще лучше использовать собственные формализованные exception'ы, с кодами, сообщениями и т.п. ? модули для этого дела известны. Конечно, для небольших задач так заморачиваться не надо :) > Да, забыл показать что оно работает по русски: > > $ ./test > Ошибка открытия файла: Нет такого файла или каталога -- Олег Алистратов From vovkasm на gmail.com Tue Jan 25 01:11:47 2011 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Tue, 25 Jan 2011 12:11:47 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: <201101231353.52049.dim0xff@gmail.com> <95885D8D-4FD3-4A8C-B236-6D299CFA0348@gmail.com> Message-ID: 2011/1/24 Ruslan Zakirov : > 2011/1/23 Ivan Petrov : >> >>> Кстати, да. >>> Проверил на Ubuntu >>> >>> #!/usr/bin/perl >>> >>> use strict; >>> use warnings; >>> use encoding 'utf8'; >> >> хм. работает. >> >> надо будет серьезно потестить. баги utf8 то в общем-то все известны. а с >> encoding я пока ни разу не работал > > И не надо этой магии. Правильно как-то так: > > use utf8; > use open ':locale'; > > print "Бла-бла". Encode::decode( (split '.', $ENV{'LC_ALL'} || > $ENV{'LC_MESSAGES'} || $ENV{'LC_LANG'}, 2)[1], "$!" ); > > Правильно будет написать новую прагму или расширить utf8 или open, > которая ставит GET MAGIC на $! и делает это за вас. А вот это и не получается. Собственно возвращаясь к изначальной теме топика... В аттаче тест (нужен Variable::Magic)... насколько я себе сейчас это представляю навесить магию на $! не получится: 1. Магия навешивается 2. Юзерская магия срабатывает до системной 3. Системный "get" возвращает dualvar с errno и strerror(errno) (в районе mg.c:1037 для perl-5.12.2) Но может знатоки перла способны сделать невозможное? ;-) > Что-то типа: > > use open OS_ERROR => ':locale'; > > Выбран open, потому что он уже поддерживает такой синтаксис для STD > потоков ввода/вывода. > > -- > Best regards, Ruslan. > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Vladimir Timofeev ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: special_variable_with_magic.t Type: application/x-troff Size: 449 bytes Desc: отсутствует URL: From inthrax на gmail.com Tue Jan 25 03:53:29 2011 From: inthrax на gmail.com (Mons Anderson) Date: Tue, 25 Jan 2011 14:53:29 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: References: Message-ID: <201101251453.30223.inthrax@gmail.com> вариант, позволяющий избежать данной проблемы: setlocale POSIX::LC_MESSAGES => 'en_US.UTF-8'; (Я нахожу его правильным, т.к.считаю локализацию ошибок таким путем - злом. для локализации нужен I18N) "правильный вариант" --- mg.c +++ mg.c if (SvPOKp(sv)) SvPOK_on(sv); /* may have got removed during taint processing */ + if( PL_hints & HINT_UTF8 ) + SvUTF8_on(sv); RESTORE_ERRNO; On Sunday 23 January 2011 13:39:14 Ivan Petrov wrote: > У Ларри Уолла есть пример когда используя tie перехватывают все обращения к > $_. > > В перле есть старый баг, который видимо никогда уже не поправят: переменная > $! всегда кривая, если используется use utf8 > > =пример > > #!/usr/bin/perl > > use warnings; > use strict; > > use utf8; > use open qw(:std :utf8); > > open my $file, '<', 'abrakadabra/not-found' > or die "Ошибка открытия файла: $!"; > > =конец примера > > соответственно выведет этот пример такую строку: > > = > Ошибка открытия файла: ???? ??°???????? ??°?????° ?????? ???°??°???????° at > test_e.pl line 9. > > Хочется иметь в логах правильные коды ошибок. Поэтому я попробовал > поиграться со связыванием чтобы пофиксить этот баг целиком на проекте но не > ходя по коду и не делая decode utf8 => $! на каждое место где встречается > $!. > > соответственно вышеприведенный тест переписал к виду: > > =второй пример > > #!/usr/bin/perl > > use warnings; > use strict; > > use utf8; > use open qw(:std :utf8); > > package FixErrno; > > use base qw(Tie::Scalar); > use Encode qw(decode); > > sub TIESCALAR > { > return bless \my $dummy; > } > > sub FETCH > { > print "FETCH\n"; > return decode utf8 => ${ $_[0] }; > } > > sub STORE > { > print "STORE\n"; > ${ $_[0] } = $_[1]; > } > > > tie $! => 'FixErrno'; > > package main; > use Encode qw(decode); > > > open my $file, '<', 'abrakadabra/not-found' > or die "Ошибка открытия файла: $!"; > > =конец второго примера > > соответственно результат работы такой: > > =начало > > perl test_e.pl > FETCH > Ошибка открытия файла: ???? ??°???????? ? > ?°?????° ?????? ???°??°???????° at > test_e.pl line 38. > =конец > > то есть FETCH вызывается, а STORE не вызывается. А поскольку STORE не > вызывается, то и все это не работает. > Есть идеи что можно простого сделать с проектом у которого много $! но не > хочется расставлять decode повсюду? -- Vladimir Perepelitsa aka Mons Anderson / #99779956 From vovkasm на gmail.com Wed Jan 26 02:37:11 2011 From: vovkasm на gmail.com (Vladimir Timofeev) Date: Wed, 26 Jan 2011 13:37:11 +0300 Subject: [Moscow.pm] =?utf-8?b?dGllINC90LAg0YHRgtCw0L3QtNCw0YDRgtC90Ys=?= =?utf-8?b?0LUg0L/QtdGA0LXQvNC10L3QvdGL0LU=?= In-Reply-To: <201101251453.30223.inthrax@gmail.com> References: <201101251453.30223.inthrax@gmail.com> Message-ID: 2011/1/25 Mons Anderson : > вариант, позволяющий избежать данной проблемы: > > setlocale POSIX::LC_MESSAGES => 'en_US.UTF-8'; > > (Я нахожу его правильным, т.к.считаю локализацию ошибок таким путем - злом. > для локализации нужен I18N) Да, именно так. > > "правильный вариант" > > --- mg.c > +++ mg.c >  if (SvPOKp(sv)) >      SvPOK_on(sv);    /* may have got removed during taint processing */ > + if( PL_hints & HINT_UTF8 ) > +     SvUTF8_on(sv); >  RESTORE_ERRNO; > А вот это не очень хорошо. Т.к. не будет работать для чего-то кроме UTF-8... т.е. случайно LANG=ru_RU.KOI8-R и любой модуль с "use utf8" окажется сломанным. > > On Sunday 23 January 2011 13:39:14 Ivan Petrov wrote: >> У Ларри Уолла есть пример когда используя tie перехватывают все обращения к >> $_. >> >> В перле есть старый баг, который видимо никогда уже не поправят: переменная >> $! всегда кривая, если используется use utf8 >> >> =пример >> >> #!/usr/bin/perl >> >> use warnings; >> use strict; >> >> use utf8; >> use open qw(:std :utf8); >> >> open my $file, '<', 'abrakadabra/not-found' >>     or die "Ошибка открытия файла: $!"; >> >> =конец примера >> >> соответственно выведет этот пример такую строку: >> >> = >> Ошибка открытия файла: ???? ??°???????? ??°?????° ?????? ???°??°???????° at >> test_e.pl line 9. >> >> Хочется иметь в логах правильные коды ошибок. Поэтому я попробовал >> поиграться со связыванием чтобы пофиксить этот баг целиком на проекте но не >> ходя по коду и не делая decode utf8 => $! на каждое место где встречается >> $!. >> >> соответственно вышеприведенный тест переписал к виду: >> >> =второй пример >> >> #!/usr/bin/perl >> >> use warnings; >> use strict; >> >> use utf8; >> use open qw(:std :utf8); >> >> package FixErrno; >> >> use base qw(Tie::Scalar); >> use Encode qw(decode); >> >> sub TIESCALAR >> { >>     return bless \my $dummy; >> } >> >> sub FETCH >> { >>     print "FETCH\n"; >>     return decode utf8 => ${ $_[0] }; >> } >> >> sub STORE >> { >>     print "STORE\n"; >>     ${ $_[0] } = $_[1]; >> } >> >> >> tie $! => 'FixErrno'; >> >> package main; >> use Encode qw(decode); >> >> >> open my $file, '<', 'abrakadabra/not-found' >>     or die "Ошибка открытия файла: $!"; >> >> =конец второго примера >> >> соответственно  результат работы такой: >> >> =начало >> >> perl test_e.pl >> FETCH >> Ошибка открытия файла: ???? ??°???????? ? >>                                          ?°?????° ?????? ???°??°???????° at >> test_e.pl line 38. >> =конец >> >> то есть FETCH вызывается, а STORE не вызывается. А поскольку STORE не >> вызывается, то и все это не работает. >> Есть идеи что можно простого сделать с проектом у которого много $! но не >> хочется расставлять decode повсюду? > > > > -- > Vladimir Perepelitsa aka Mons Anderson > / #99779956 > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > -- Vladimir Timofeev From dmarsentev на gmail.com Wed Jan 26 04:46:10 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 26 Jan 2011 15:46:10 +0300 Subject: [Moscow.pm] =?koi8-r?b?z8bUz9A6IMvUzyDJ09DPzNja1cXUIG1lcmN1cmlh?= =?koi8-r?b?bCwgzc/WxdTFINDPzc/e2D8g08TFzMHMIGhnIC11cGRhdGUgY2xl?= =?koi8-r?b?YW4gLSDF09TYIMzJINPQz9PPwiDXz9PT1MHOz9fJ1Ng/?= Message-ID: Здравствуйте. Если кто-то использует hg, может быть знаете, помогите пожалуйста. сделал hg update -c Удалилась директория. Можно ли её восстановить? From dmarsentev на gmail.com Wed Jan 26 04:58:28 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 26 Jan 2011 15:58:28 +0300 Subject: [Moscow.pm] =?koi8-r?b?z8bUz9A6IMvUzyDJ09DPzNja1cXUIG1lcmN1cmlh?= =?koi8-r?b?bCwgzc/WxdTFINDPzc/e2D8g08TFzMHMIGhnIC11cGRhdGUgY2xl?= =?koi8-r?b?YW4gLSDF09TYIMzJINPQz9PPwiDXz9PT1MHOz9fJ1Ng/?= In-Reply-To: References: Message-ID: Восстановил файлы с флэшки, сделал merge и commit, а затем и push. Вопрос уже не горячий, интерес чисто теоретический. Можно ли восстановить файлы после hg update -c средствами самого меркуриала. 26 января 2011 г. 15:46 пользователь Dmitry Arsentiev написал: > Здравствуйте. > > Если кто-то использует hg, может быть знаете, помогите пожалуйста. > сделал > hg update -c > > Удалилась директория. > Можно ли её восстановить? > From maxim.vuets на gmail.com Wed Jan 26 05:47:56 2011 From: maxim.vuets на gmail.com (Maxim Vuets) Date: Wed, 26 Jan 2011 15:47:56 +0200 Subject: [Moscow.pm] =?koi8-r?b?z8bUz9A6IMvUzyDJ09DPzNja1cXUIG1lcmN1cmlh?= =?koi8-r?b?bCwgzc/WxdTFINDPzc/e2D8g08TFzMHMIGhnIC11cGRhdGUgY2xl?= =?koi8-r?b?YW4gLSDF09TYIMzJINPQz9PPwiDXz9PT1MHOz9fJ1Ng/?= In-Reply-To: References: Message-ID: 2011/1/26 Dmitry Arsentiev : > Вопрос уже не горячий, интерес чисто теоретический. > Можно ли восстановить файлы после > hg update -c > средствами самого меркуриала. Должны быть, -C, а не -c? Нельзя. -C, --clean discard uncommitted changes (no backup) -c, --check update across branches if no uncommitted changes -- maxim.vuets.name From dmarsentev на gmail.com Wed Jan 26 07:38:41 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Wed, 26 Jan 2011 18:38:41 +0300 Subject: [Moscow.pm] =?koi8-r?b?z8bUz9A6IMvUzyDJ09DPzNja1cXUIG1lcmN1cmlh?= =?koi8-r?b?bCwgzc/WxdTFINDPzc/e2D8g08TFzMHMIGhnIC11cGRhdGUgY2xl?= =?koi8-r?b?YW4gLSDF09TYIMzJINPQz9PPwiDXz9PT1MHOz9fJ1Ng/?= In-Reply-To: References: Message-ID: > Должны быть, -C, а не -c? Нельзя. ДА! > -C, --clean discard uncommitted changes (no backup) > -c, --check update across branches if no uncommitted changes Спасибо, Максим! Впредь постараюсь быть аккуратнее и осмотрительнее. 26 января 2011 г. 16:47 пользователь Maxim Vuets написал: > 2011/1/26 Dmitry Arsentiev : > >> Вопрос уже не горячий, интерес чисто теоретический. >> Можно ли восстановить файлы после >> hg update -c >> средствами самого меркуриала. > > Должны быть, -C, а не -c? Нельзя. > > -C, --clean     discard uncommitted changes (no backup) > -c, --check     update across branches if no uncommitted changes > > -- > maxim.vuets.name > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From i.petro.77.00 на gmail.com Thu Jan 27 22:55:28 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Fri, 28 Jan 2011 09:55:28 +0300 Subject: [Moscow.pm] =?koi8-r?b?08XSycHMydrBw8nRINLFx9XM0dLO2cgg19nSwdbF?= =?koi8-r?b?zsnK?= Message-ID: толи лыжи не едут толи не пойму: $ perl -MData::Dumper -e 'print Dumper(qr/^(abc|def)$/)' $VAR1 = qr/(?-xism:^(abc|def)$)/; $ perl -MData::Dumper -e 'print Dumper(eval q{qr/(?-xism:^(abc|def)$)/})' $VAR1 = qr/(?-xism:(?-xism:^(abc|def)$))/; причем это по ходу дела не Data::Dumper виноват, а перловый eval так делает: $ perl -e 'print eval q{qr/(?-xism:^(abc|def)$)/}' (?-xism:(?-xism:^(abc|def)$)) и соответственно если взять некий объект, который содержит регулярное выражение, сериализовать его, затем десериализовать и потом опять сериализовать, то соответствия двух сериализованных значений мы не получим. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From chesnokov.ilya на gmail.com Fri Jan 28 04:08:54 2011 From: chesnokov.ilya на gmail.com (Ilya Chesnokov) Date: Fri, 28 Jan 2011 15:08:54 +0300 Subject: [Moscow.pm] =?utf-8?b?0YHQtdGA0LjQsNC70LjQt9Cw0YbQuNGPINGA0LU=?= =?utf-8?b?0LPRg9C70Y/RgNC90YvRhSDQstGL0YDQsNC20LXQvdC40Lk=?= In-Reply-To: References: Message-ID: 28 января 2011 г. 9:55 пользователь Ivan Petrov написал: > толи лыжи не едут толи не пойму: > > $ perl -MData::Dumper -e 'print Dumper(qr/^(abc|def)$/)' > $VAR1 = qr/(?-xism:^(abc|def)$)/; > > $ perl -MData::Dumper -e 'print Dumper(eval q{qr/(?-xism:^(abc|def)$)/})' > $VAR1 = qr/(?-xism:(?-xism:^(abc|def)$))/; > > причем это по ходу дела не Data::Dumper виноват, а перловый eval так делает: > > $ perl  -e 'print eval q{qr/(?-xism:^(abc|def)$)/}' > (?-xism:(?-xism:^(abc|def)$)) > > и соответственно если взять некий объект, который содержит регулярное > выражение, сериализовать его, затем десериализовать и потом опять > сериализовать, то соответствия двух сериализованных значений мы не получим. Да, в результате преобразования регулярного выражения в строку и обратно не всегда получается исходная регулярка. Об этом в Perl Best Practices вроде бы упоминалось, наверняка и в документации где-то есть. > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Ilya Chesnokov From evdokimov.denis на gmail.com Fri Jan 28 04:40:08 2011 From: evdokimov.denis на gmail.com (Denis Evdokimov) Date: Fri, 28 Jan 2011 15:40:08 +0300 Subject: [Moscow.pm] =?koi8-r?b?08XSycHMydrBw8nRINLFx9XM0dLO2cgg19nSwdbF?= =?koi8-r?b?zsnK?= In-Reply-To: References: Message-ID: Это не eval, а qr my $re = qr/^(abc|def)$/; my $re_str = $re.''; my $re2 = qr/$re_str/; my $re2_str = $re2.''; print "$re_str\n$re2_str\n"; И именно так он и должен поступать. From i.petro.77.00 на gmail.com Sat Jan 29 15:34:02 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sat, 29 Jan 2011 23:34:02 +0000 Subject: [Moscow.pm] =?koi8-r?b?z8LSwdTJ1NjT0SDLIGV2YWwgydogWFM=?= Message-ID: есть необходимость выполнить код в строке (то есть десериализовать ее). написал свою функцию вида sub _my_eval ($) { return eval $_[0] } и ее из XS вызываю. а вот пробовал вызвать непосредственно eval, но ни в CORE:: ни в CORE::GLOBAL ни в MAIN perl ее найти не может, выпадает с сообщением что нет такой функции. Для вызова пытаюсь использовать call_pv. может я что делаю не так? как вызвать eval из XS без вышеприведенного враппера? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From ruz на bestpractical.com Sat Jan 29 16:32:15 2011 From: ruz на bestpractical.com (Ruslan Zakirov) Date: Sun, 30 Jan 2011 03:32:15 +0300 Subject: [Moscow.pm] =?utf-8?b?0L7QsdGA0LDRgtC40YLRjNGB0Y8g0LogZXZhbCA=?= =?utf-8?b?0LjQtyBYUw==?= In-Reply-To: References: Message-ID: perldoc perlapi eval_sv Tells Perl to "eval" the string in the SV. NOTE: the perl_ form of this function is deprecated. I32 eval_sv(SV* sv, I32 flags) 2011/1/30 Ivan Petrov : > есть необходимость выполнить код в строке (то есть десериализовать ее). > > написал свою функцию вида > > sub _my_eval ($) { return eval $_[0] } > > и ее из XS вызываю. > > а вот пробовал вызвать непосредственно eval, но ни в CORE:: ни в > CORE::GLOBAL ни в MAIN perl ее найти не может, выпадает с сообщением что нет > такой функции. > > Для вызова пытаюсь использовать call_pv. > > может я что делаю не так? как вызвать eval из XS без вышеприведенного > враппера? > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Best regards, Ruslan. From i.petro.77.00 на gmail.com Sat Jan 29 17:10:43 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 30 Jan 2011 01:10:43 +0000 Subject: [Moscow.pm] =?koi8-r?b?z8LSwdTJ1NjT0SDLIGV2YWwgydogWFM=?= In-Reply-To: References: Message-ID: perldoc perlapi > > eval_sv Tells Perl to "eval" the string in the SV. > > NOTE: the perl_ form of this function is deprecated. > > I32 eval_sv(SV* sv, I32 flags) > > > спасибо ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 30 12:10:14 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 30 Jan 2011 23:10:14 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= Message-ID: слишком много документации и сразу все не объять. с XS только начал разбираться, поэтому позадаю еще ламерских вопросов :) создал с помощью h2xs каталог с проектом h2xs -n MyModule затем написал в MyModule/MyModule.xs две функции на C, которые я вызваю из тестов и make test делает все тесты. то есть в тесте написано use_ok 'MyModule'; my $result = MyModule::my_foo(); ok что-то с $result и так далее. из теста - работает. теперь дошел до того что нужно над вызовом этих функций perl-обертку написать соответственно полез редактировать файл lib/MyModule.pm. там вроде все просто написан автолоад констант (я их не использую) и сумарно следующее: package MyModule; use 5.010001; use strict; use warnings; use Carp; require Exporter; use AutoLoader; our @ISA = qw(Exporter); ... require XSLoader; XSLoader::load('MyModule', $VERSION); теперь я тут хочу вставить функцию, которая будет вызывать мою XS-ную функцию, пишу: sub my_cool_foo { $result = my_foo(); ... } и вот тут при компиляции модуля ругается, что этой функции нет: Bareword "my_foo" not allowed while "strict subs" in use at ... и если даже указать полное имя пакета то все равно ругается. и как обращаться к XS'ным функциям изнутри модуля? решил я вынести все XS'ы в сабмодуль то есть сделать чтобы MyModule - был чистый перл, а он уже говорил use MyModule::XS; и дергал из него функцию, но не пойму по документации что надо изменить в Makefile.PL чтобы тот мог собирать это. а переименование MyModule.xs в XS.xs и правка имен названий на добавление суффиксов ::XS приводит к какой-то ахинее. где бы посмотреть примерчик проектика где бы было основной модуль на перле и дополнительный с суффиксом ::что-то на XS? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From andy на shitov.ru Sun Jan 30 12:14:26 2011 From: andy на shitov.ru (Andrew Shitov) Date: Sun, 30 Jan 2011 21:14:26 +0100 Subject: [Moscow.pm] =?utf-8?b?WFMg0LrQsNC6INC/0LXRgNC10LjQvNC10L3QvtCy?= =?utf-8?b?0LDRgtGMINC80L7QtNGD0LvRjD8=?= In-Reply-To: References: Message-ID: > слишком много документации и сразу все не объять. с XS только начал > разбираться, поэтому позадаю еще ламерских вопросов :) Иван, а вам действительно нужен чистый XS? Быстрый старт можно сделать с Inline::C/CPP. > где бы посмотреть примерчик проектика где бы было основной модуль на перле и > дополнительный с суффиксом ::что-то на XS? YAML::XS? -- Andrew Shitov ______________________________________________________________________ andy на shitov.ru | http://shitov.ru From i.petro.77.00 на gmail.com Sun Jan 30 12:21:59 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 30 Jan 2011 23:21:59 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: > слишком много документации и сразу все не объять. с XS только начал > > разбираться, поэтому позадаю еще ламерских вопросов :) > > Иван, а вам действительно нужен чистый XS? > ну да, сперва задачу решили на перле, потом поняли что обход большого количества данных на нем слишком медленно, а на C (тот же алгоритм 1:1) получается в более чем 100 раз (по тестам) быстрее. ну и выбора вроде нет > > Быстрый старт можно сделать с Inline::C/CPP. > > да уж поздно коней менять :) > > где бы посмотреть примерчик проектика где бы было основной модуль на > перле и > > дополнительный с суффиксом ::что-то на XS? > > YAML::XS? > спасибо, сейчас погляжу ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 30 12:29:29 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 30 Jan 2011 23:29:29 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: > YAML::XS? > ох, поглядел я на их Makefile.PL а потом заглянул в то что там внутри.. они целую пачку модулей там понаписали. неужели только ради того чтобы XS'ный сабмодуль сделать к перловому модулю? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From i.petro.77.00 на gmail.com Sun Jan 30 12:32:07 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Sun, 30 Jan 2011 23:32:07 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: > теперь я тут хочу вставить функцию, которая будет вызывать мою XS-ную > функцию, пишу: > > sub my_cool_foo > { > $result = my_foo(); > ... > } > > и вот тут при компиляции модуля ругается, что этой функции нет: > > Bareword "my_foo" not allowed while "strict subs" in use at ... > > а вот если написать use subs qw(my_foo); то до функции достукивается таки. вопрос: насколько это корректно? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From ruz на bestpractical.com Mon Jan 31 03:13:15 2011 From: ruz на bestpractical.com (Ruslan Zakirov) Date: Mon, 31 Jan 2011 14:13:15 +0300 Subject: [Moscow.pm] =?utf-8?b?WFMg0LrQsNC6INC/0LXRgNC10LjQvNC10L3QvtCy?= =?utf-8?b?0LDRgtGMINC80L7QtNGD0LvRjD8=?= In-Reply-To: References: Message-ID: Привет, Я пердполагаю, что нужно работы с XSLoader в BEGIN завернуть. Пакет куда они попадают: MODULE = XXX PACKAGE = XXX Первое файл в который попадет функция, а второе пространство имен. 2011/1/30 Ivan Petrov : > >> теперь я тут хочу вставить функцию, которая будет вызывать мою XS-ную >> функцию, пишу: >> >> sub my_cool_foo >> { >>    $result = my_foo(); >>    ... >> } >> >> и вот тут при компиляции модуля ругается, что этой функции нет: >> >> Bareword "my_foo" not allowed while "strict subs" in use at ... >> > > а вот если написать use subs qw(my_foo); > > то до функции достукивается таки. > > вопрос: насколько это корректно? > > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Best regards, Ruslan. From i.petro.77.00 на gmail.com Mon Jan 31 03:14:59 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Mon, 31 Jan 2011 14:14:59 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: Кстати поковырявшись с XS понял почему некоторые алгоритмы на перле работали очень медленно. например есть куча алгоритмов которые накапливают данные в скаляре sub что-то { $scalar .= какие-то данные'; } на уровне создания скаляров из C-шного кода можно скаляру заранее выделить определенное количество памяти и он не будет ее переаллоцировать на каждую итерацию цикла/каллбека. вопрос, а есть ли какой стандартный модуль, которым бы можно было потюнить используемое данным скаляром количество памяти? или скажем данным массивом? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From ruz на bestpractical.com Mon Jan 31 03:41:48 2011 From: ruz на bestpractical.com (Ruslan Zakirov) Date: Mon, 31 Jan 2011 14:41:48 +0300 Subject: [Moscow.pm] =?utf-8?b?WFMg0LrQsNC6INC/0LXRgNC10LjQvNC10L3QvtCy?= =?utf-8?b?0LDRgtGMINC80L7QtNGD0LvRjD8=?= In-Reply-To: References: Message-ID: 2011/1/31 Ivan Petrov : > Кстати поковырявшись с XS понял почему некоторые алгоритмы на перле работали > очень медленно. > > например есть куча алгоритмов которые накапливают данные в скаляре > > sub что-то { >    $scalar .= какие-то данные'; > } > > на уровне создания скаляров из C-шного кода можно скаляру заранее выделить > определенное количество памяти и он не будет ее переаллоцировать на каждую > итерацию цикла/каллбека. > > вопрос, а есть ли какой стандартный модуль, которым бы можно было потюнить > используемое данным скаляром количество памяти? > или скажем данным массивом? $#array = 100; Пример: perl -MDevel::Peek -e 'my @a; Dump(\@a); push @a, (1)x100; Dump(\@a); $#a = 1000; Dump(\@a);' .... REFCNT = 2 FLAGS = (PADBUSY,PADMY) ... ARRAY = 0x0 FILL = -1 MAX = -1 ARYLEN = 0x0 FLAGS = (REAL) ... ARRAY = 0x100207930 FILL = 99 MAX = 125 .... ARRAY = 0x100841e00 FILL = 1000 MAX = 2045 Обращаем внимание на FILL и MAX. Из неприятного массив заполняется undef'ами до указаной длинны. $str = 0x1000; $str = ''; perl -MDevel::Peek -e 'my $str; Dump($str); $str = 1x1000; $str = ""; Dump($str); $str.=1x99; Dump($str)' SV = NULL(0x0) at 0x100801500 REFCNT = 1 FLAGS = (PADBUSY,PADMY) ... CUR = 0 LEN = 1008 ... CUR = 99 LEN = 1008 Как-то так. > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > -- Best regards, Ruslan. From sergey.aleynikov на gmail.com Mon Jan 31 03:42:57 2011 From: sergey.aleynikov на gmail.com (Sergey Aleynikov) Date: Mon, 31 Jan 2011 14:42:57 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: Добрый день, > вопрос, а есть ли какой стандартный модуль, которым бы можно было потюнить > используемое данным скаляром количество памяти? > или скажем данным массивом? @array[$last_idx] = undef; - выделит под массив память $str=" "x$len; - заполнит строку пробелами (или чем захотите), работать потом с ней через substr Best regards, Sergey Aleynikov From ali на ali.org.ua Mon Jan 31 04:20:20 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Mon, 31 Jan 2011 14:20:20 +0200 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: <4D46A904.9080904@ali.org.ua> On 31.01.2011 13:41, Ruslan Zakirov wrote: > $str = 0x1000; $str = ''; Порвал шаблон :) Это все-таки 4096. $str = 0 x 1000; Даже, чтобы не смущать нежных программистов, $str = '0' x 1000; -- Олег Алистратов From dmarsentev на gmail.com Mon Jan 31 09:15:43 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Mon, 31 Jan 2011 20:15:43 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= Message-ID: Здравствуйте. Не встречалась ли кому-нибудь из вас похожая задача. Есть много текстовых файлов. Надо каждый из них открыть в текстовом редакторе (например, NotePad++), сделать скриншот и сохранить этот скриншот как jpg. Есть ли решение более простое, чем скриптование на AutoIt ? http://www.autoitscript.com/autoit3/index.shtml Найм аутсорсера под задачу пока что не рассматривается. Спасибо! From dmitry на eremeev.ru Mon Jan 31 09:18:06 2011 From: dmitry на eremeev.ru (Dmitry Eremeev) Date: Mon, 31 Jan 2011 20:18:06 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: References: Message-ID: <4D46EECE.2090808@eremeev.ru> On 31.01.11 20:15, Dmitry Arsentiev wrote: > Здравствуйте. > > Не встречалась ли кому-нибудь из вас похожая задача. > Есть много текстовых файлов. > Надо каждый из них открыть в текстовом редакторе (например, NotePad++), > сделать скриншот и сохранить этот скриншот как jpg. > > Есть ли решение более простое, чем скриптование на AutoIt ? > http://www.autoitscript.com/autoit3/index.shtml > > Найм аутсорсера под задачу пока что не рассматривается. > > Спасибо! > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org На Delphi за час (с одновременным просмотром порно и хабром) максимум. :-) From dmarsentev на gmail.com Mon Jan 31 09:23:25 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Mon, 31 Jan 2011 20:23:25 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: <4D46EECE.2090808@eremeev.ru> References: <4D46EECE.2090808@eremeev.ru> Message-ID: > На Delphi за час (с одновременным просмотром порно и хабром) максимум. :-) Зависит от качества порно, насколько я понимаю. Дельфи не знаю, подумаю про C#, спасибо! 31 января 2011 г. 20:18 пользователь Dmitry Eremeev написал: > On 31.01.11 20:15, Dmitry Arsentiev wrote: >> >> Здравствуйте. >> >> Не встречалась ли кому-нибудь из вас похожая задача. >> Есть много текстовых файлов. >> Надо каждый из них открыть в текстовом редакторе (например, NotePad++), >> сделать скриншот и сохранить этот скриншот как jpg. >> >> Есть ли решение более простое, чем скриптование на AutoIt ? >> http://www.autoitscript.com/autoit3/index.shtml >> >> Найм аутсорсера под задачу пока что  не рассматривается. >> >> Спасибо! >> -- >> Moscow.pm mailing list >> moscow-pm на pm.org | http://moscow.pm.org > > На Delphi за час (с одновременным просмотром порно и хабром) максимум. :-) > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From ali на ali.org.ua Mon Jan 31 09:27:53 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Mon, 31 Jan 2011 19:27:53 +0200 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: References: Message-ID: <4D46F119.7000909@ali.org.ua> On 31.01.2011 19:15, Dmitry Arsentiev wrote: > Не встречалась ли кому-нибудь из вас похожая задача. > Есть много текстовых файлов. > Надо каждый из них открыть в текстовом редакторе (например, NotePad++), > сделать скриншот и сохранить этот скриншот как jpg. Именно в текстовом редакторе? Браузер не катит? Если катит, то perldoc WWW::Mechanize::Firefox, see Example screenshot.pl perldoc MozRepl > Есть ли решение более простое, чем скриптование на AutoIt ? > http://www.autoitscript.com/autoit3/index.shtml -- Олег From ali на ali.org.ua Mon Jan 31 09:31:04 2011 From: ali на ali.org.ua (Oleg Alistratov) Date: Mon, 31 Jan 2011 19:31:04 +0200 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: <4D46F119.7000909@ali.org.ua> References: <4D46F119.7000909@ali.org.ua> Message-ID: <4D46F1D8.2060609@ali.org.ua> On 31.01.2011 19:27, Oleg Alistratov wrote: > On 31.01.2011 19:15, Dmitry Arsentiev wrote: > >> Не встречалась ли кому-нибудь из вас похожая задача. >> Есть много текстовых файлов. >> Надо каждый из них открыть в текстовом редакторе (например, NotePad++), >> сделать скриншот и сохранить этот скриншот как jpg. > > Именно в текстовом редакторе? Браузер не катит? > Если катит, то Впрочем, подозреваю, что дело именно в текстовом редакторе. Или еще какой интерфейсной шняге. Иначе можно было бы просто отрендерить текст, хоть в GD. -- Олег From onokonem на gmail.com Mon Jan 31 10:06:42 2011 From: onokonem на gmail.com (Daniel Podolsky) Date: Mon, 31 Jan 2011 21:06:42 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: References: Message-ID: 2011/1/31 Dmitry Arsentiev > Надо каждый из них открыть в текстовом редакторе (например, NotePad++), Win32::OLE ? ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: From dmarsentev на gmail.com Mon Jan 31 10:43:34 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Mon, 31 Jan 2011 21:43:34 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: References: Message-ID: > Win32::OLE ? Спасибо, Даниэль! Если с браузером не получится, то будем так, хотя, наверное, это сравнимо с Delphi или C#. 31 января 2011 г. 21:06 пользователь Daniel Podolsky написал: > > > 2011/1/31 Dmitry Arsentiev >> >> Надо каждый из них открыть в текстовом редакторе (например, NotePad++), > > Win32::OLE ? > > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > > From meettya на gmail.com Mon Jan 31 10:51:39 2011 From: meettya на gmail.com (Dmitry Karpich) Date: Mon, 31 Jan 2011 21:51:39 +0300 Subject: [Moscow.pm] =?utf-8?b?MS8yINC+0YTRhNGC0L7Qvzog0LzQsNC70LDRjyA=?= =?utf-8?b?0LDQstGC0L7QvNCw0YLQuNC30LDRhtC40Y8sIHdpbmRvd3MsINGB0LrRgNC4?= =?utf-8?b?0L3RiNC+0YLRiyDRgtC10LrRgdGC0L7QstGL0YUg0YTQsNC50LvQvtCy?= In-Reply-To: References: Message-ID: <62136979-C02F-4045-9066-76289D5426EA@gmail.com> On Jan 31, 2011, at 9:43 PM, Dmitry Arsentiev wrote: > Если с браузером не получится, то будем так, > хотя, наверное, это сравнимо с Delphi или C#. А если задача далека от основного бизнес-процесса, чего не взять коробочное решение типа http://www.coolutils.com/Convert-TXT-JPEG ну или сонма похожих? From dmarsentev на gmail.com Mon Jan 31 10:56:48 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Mon, 31 Jan 2011 21:56:48 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: <62136979-C02F-4045-9066-76289D5426EA@gmail.com> References: <62136979-C02F-4045-9066-76289D5426EA@gmail.com> Message-ID: > А если задача далека от основного бизнес-процесса, чего не взять коробочное решение типа > http://www.coolutils.com/Convert-TXT-JPEG > ну или сонма похожих? Дмитрий, спасибо! Буду иметь в виду. 50$ - ну ... да, можно. Да. Спасибо! 31 января 2011 г. 21:51 пользователь Dmitry Karpich написал: > > On Jan 31, 2011, at 9:43 PM, Dmitry Arsentiev wrote: > >> Если с браузером не получится, то будем так, >> хотя, наверное, это сравнимо с Delphi или C#. > > А если задача далека от основного бизнес-процесса, чего не взять коробочное решение типа > http://www.coolutils.com/Convert-TXT-JPEG > ну или сонма похожих? > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From evdokimov.denis на gmail.com Mon Jan 31 11:04:09 2011 From: evdokimov.denis на gmail.com (Denis Evdokimov) Date: Mon, 31 Jan 2011 22:04:09 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: References: <62136979-C02F-4045-9066-76289D5426EA@gmail.com> Message-ID: Есть ещё вариант. Взять тот же NotePad++ и добавить в него нужный функционал, благо код свободен From dmarsentev на gmail.com Mon Jan 31 11:10:43 2011 From: dmarsentev на gmail.com (Dmitry Arsentiev) Date: Mon, 31 Jan 2011 22:10:43 +0300 Subject: [Moscow.pm] =?koi8-r?b?MS8yIM/GxtTP0DogzcHMwdEgwdfUz83B1MnawcPJ?= =?koi8-r?b?0Swgd2luZG93cywg08vSyc7bz9TZINTFy9PUz9fZyCDGwcrMz9c=?= In-Reply-To: References: <62136979-C02F-4045-9066-76289D5426EA@gmail.com> Message-ID: > Есть ещё вариант. > Взять тот же NotePad++ и добавить в него нужный функционал, благо код свободен Спасибо, Денис. Да, точно, там можно расширения делать свои. Но. Во-первых, эта задача мне не по силам. Во-вторых, слишком пушечное решение для воробьёв. Спасибо всё равно. Может, на аутсорс отдадим, но это вряд ли. 31 января 2011 г. 22:04 пользователь Denis Evdokimov написал: > Есть ещё вариант. > Взять тот же NotePad++ и добавить в него нужный функционал, благо код свободен > -- > Moscow.pm mailing list > moscow-pm на pm.org | http://moscow.pm.org > From q на cono.org.ua Mon Jan 31 17:00:18 2011 From: q на cono.org.ua (Alex Varyanick) Date: Tue, 1 Feb 2011 03:00:18 +0200 Subject: [Moscow.pm] =?utf-8?b?MS8yINC+0YTRhNGC0L7Qvzog0LzQsNC70LDRjyA=?= =?utf-8?b?0LDQstGC0L7QvNCw0YLQuNC30LDRhtC40Y8sIHdpbmRvd3MsINGB0Lo=?= =?utf-8?b?0YDQuNC90YjQvtGC0Ysg0YLQtdC60YHRgtC+0LLRi9GFINGE0LDQudC7?= =?utf-8?b?0L7Qsg==?= In-Reply-To: References: Message-ID: 2011/1/31 Dmitry Arsentiev : > Здравствуйте. > > Не встречалась ли кому-нибудь из вас похожая задача. > Есть много текстовых файлов. > Надо каждый из них открыть в текстовом редакторе (например, NotePad++), > сделать скриншот и сохранить этот скриншот как jpg. > > Есть ли решение более простое, чем скриптование на AutoIt ? > http://www.autoitscript.com/autoit3/index.shtml > > Найм аутсорсера под задачу пока что  не рассматривается. Можно заскриншотить руками рабочую область Notepad++, рендерить текст перлом и накладывать на картинку nodepad++ :D gd/imager/image-magic/... -- Varyanick I. Alex icq: 102 575 440 skype: cono.. q на cono.org.ua From i.petro.77.00 на gmail.com Mon Jan 31 23:01:18 2011 From: i.petro.77.00 на gmail.com (Ivan Petrov) Date: Tue, 1 Feb 2011 10:01:18 +0300 Subject: [Moscow.pm] =?koi8-r?b?WFMgy8HLINDF0sXJzcXOz9fB1Nggzc/E1czYPw==?= In-Reply-To: References: Message-ID: > $str = 0x1000; $str = ''; а вот это не совсем то, вернее совсем не то. одно дело при создании скаляра - выделить заранее память, а совсем другое дело - выделить память *и заполнить ее значением*. используя XS можно сделать первое, а вот данная конструкция делает второе. то же самое и с массивами. когда мы пишем $#a = 1000; реально создается 1000 скаляров и если затем сказать push @a => $b; то $b запишется по 1001 индексу, а вот если мы в C скажем av_extend(a, 1000), а затем следом av_push(a, b), то в результате у нас будет массив из одного элемента, но не требующий переаллокации до тех пор пока не допушимся до 1000-го элемента ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: