From lavei на mail.ru Wed Sep 3 04:45:28 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Re: test from news to mail 2 In-Reply-To: References: Message-ID: <20030903144528.099dabff.krivopustovda@vdcom.ru> Здраствуйте, "Inna V. Sharkova" ! в Wed, 3 Sep 2003 14:42:57 +0600, Вы написали: IVS> subj Чо то не очень работает.;-) Данил From greg на webzavod.ru Wed Sep 3 04:50:41 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Re: test from news to mail 2 References: <20030903144528.099dabff.krivopustovda@vdcom.ru> Message-ID: > Чо то не очень работает.;-) Пытаюсь настроить. -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From caramel на samara.net Wed Sep 3 03:42:57 2003 From: caramel на samara.net (Inna V. Sharkova) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] test from news to mail 2 Message-ID: subj From lavei на mail.ru Wed Sep 3 05:18:59 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Re: test from news to mail 2 In-Reply-To: <200309031507.02559.combr@vesna.ru> References: <20030903144528.099dabff.krivopustovda@vdcom.ru> <200309031507.02559.combr@vesna.ru> Message-ID: <200309030849.h838nC93082480@gateway.vdcom.ru> Беру свои слова обратно;-) все прекрасно работает. Данил From lavei на mail.ru Wed Sep 3 05:47:11 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Text::Iconv Message-ID: <200309030917.h839HO93082876@gateway.vdcom.ru> Всем привет! Грег тут на медни предложил поюзать subj. я попробовал сравнить с обычной подменой регекспом. Бенчмарки на моей тачке меня немного ужаснули:-) Не понятно откуда такая разница в работе... Celeron 700/512 dimm perl 5.6.1 ---Экземпляр класса создается каждый раз заново Benchmark: timing 2900000 iterations of Iconv, My... Iconv: 220 wallclock secs (145.58 usr + 13.69 sys = 159.27 CPU) @ 18208.07/s (n=2900000) My: 27 wallclock secs (11.81 usr + 0.47 sys = 12.28 CPU) @ 236156.35/s (n=2900000) Rate Iconv My Iconv 18208/s -- -92% My 236156/s 1197% -- ---только конвертирование Benchmark: timing 2900000 iterations of Iconv, My... Iconv: 32 wallclock secs (28.04 usr + 1.26 sys = 29.30 CPU) @ 98976.11/s (n=2900000) My: 13 wallclock secs (11.90 usr + 0.47 sys = 12.37 CPU) @ 234438.16/s (n=2900000) Rate Iconv My Iconv 98976/s -- -58% My 234438/s 137% -- From lavei на mail.ru Wed Sep 3 05:50:18 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Meeting Message-ID: <200309030920.h839KW93082937@gateway.vdcom.ru> Есть еще предложение собраться и забух..тьфу. и обсудить что нить умное - немного попить пива;-) Данил From hrg на sama.ru Wed Sep 3 06:23:51 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Text::Iconv References: <200309030917.h839HO93082876@gateway.vdcom.ru> Message-ID: <0a7d01c3720d$e250bff0$020200c0@hrg> Hello, LaVei! You wrote to on Wed, 3 Sep 2003 15:47:11 +0500: L> Всем привет! L> Грег тут на медни предложил поюзать subj. L> я попробовал сравнить с обычной подменой регекспом. L> Бенчмарки на моей тачке меня немного ужаснули:-) L> Не понятно откуда такая разница в работе... L> Celeron 700/512 dimm perl 5.6.1 ---Экземпляр класса создается каждый L> раз заново L> Benchmark: timing 2900000 iterations of Iconv, My... L> Iconv: 220 wallclock secs (145.58 usr + 13.69 sys = 159.27 CPU) L> @ 18208.07/s (n=2900000) L> My: 27 wallclock secs (11.81 usr + 0.47 sys = 12.28 CPU) @ L> 236156.35/s (n=2900000) L> Rate Iconv My L> Iconv 18208/s -- -92% L> My 236156/s 1197% -- L> ---только конвертирование L> Benchmark: timing 2900000 iterations of Iconv, My... L> Iconv: 32 wallclock secs (28.04 usr + 1.26 sys = 29.30 CPU) @ L> 98976.11/s (n=2900000) L> My: 13 wallclock secs (11.90 usr + 0.47 sys = 12.37 CPU) @ L> 234438.16/s (n=2900000) L> Rate Iconv My L> Iconv 98976/s -- -58% L> My 234438/s 137% -- На какой машине тестировал? Всмысли оси и конфигурации компа... With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Wed Sep 3 06:26:36 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Meeting References: <200309030920.h839KW93082937@gateway.vdcom.ru> Message-ID: <0a9401c3720e$40f4cec0$020200c0@hrg> Hello, LaVei! You wrote to on Wed, 3 Sep 2003 15:50:18 +0500: L> Есть еще предложение собраться и забух..тьфу. L> и обсудить что нить умное - немного попить пива;-) Суббота? Воскресенье? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Wed Sep 3 06:31:23 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Text::Iconv In-Reply-To: <0a7d01c3720d$e250bff0$020200c0@hrg> References: <200309030917.h839HO93082876@gateway.vdcom.ru> <0a7d01c3720d$e250bff0$020200c0@hrg> Message-ID: <200309031001.h83A1a93083544@gateway.vdcom.ru> Здраствуйте, "Yury Kopyl" ! в Wed, 3 Sep 2003 16:23:51 +0500, Вы написали: YK> На какой машине тестировал? Всмысли оси и конфигурации компа... Железо: Celeron 700/512 dimm ОС: SW 8.1 libiconv 2.2.5 от поставщика. Perl: (lavei@eta ~)$ perl -V Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration: Platform: osname=linux, osvers=2.4.18, archname=i386-linux uname='linux midas 2.4.18 #4 fri may 31 01:25:31 pdt 2002 i686 unknown ' config_args='-de -Dprefix=/usr -Dcccdlflags=-fPIC -Dd_dosuid -Darchname=i386 -linux -Dprivlib=/usr/lib/perl5 -Darchlib=/usr/lib/perl5/i386-linux -Dsitelib=/u sr/lib/perl5/site_perl -Dsitearch=/usr/lib/perl5/site_perl/i386-linux' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=unde f useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef Compiler: cc='cc', ccflags ='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SO URCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-fno-strict-aliasing -I/usr/local/include' ccversion='', gccversion='2.95.3 20010315 (release)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize =8 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -ldl -lm -lc -lcrypt -lutil perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil libc=/lib/libc-2.2.5.so, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: USE_LARGE_FILES Built under linux Compiled at Jun 7 2002 11:07:25 @INC: /usr/lib/perl5/i386-linux /usr/lib/perl5 /usr/lib/perl5/site_perl/i386-linux /usr/lib/perl5/site_perl /usr/lib/perl5/site_perl Данил From lavei на mail.ru Wed Sep 3 06:33:02 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Meeting In-Reply-To: <0a9401c3720e$40f4cec0$020200c0@hrg> References: <200309030920.h839KW93082937@gateway.vdcom.ru> <0a9401c3720e$40f4cec0$020200c0@hrg> Message-ID: <200309031003.h83A3G93083566@gateway.vdcom.ru> Здраствуйте, "Yury Kopyl" ! в Wed, 3 Sep 2003 16:26:36 +0500, Вы написали: YK> Суббота? Воскресенье? Воскресение подходит?;-) Данил From greg на webzavod.ru Wed Sep 3 06:39:43 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Meeting References: <200309030920.h839KW93082937@gateway.vdcom.ru><0a9401c3720e$40f4cec0$020200c0@hrg> <200309031003.h83A3G93083566@gateway.vdcom.ru> Message-ID: <030901c37210$113e3ac0$518580c3@wishmaster> > YK> Суббота? Воскресенье? > Воскресение подходит?;-) воскресенье ;) Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Wed Sep 3 06:42:09 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] =?koi8-r?b?8NLP18XSy8Eg0M/T1MnOx8Eg1yDO2MDT2S4uLg==?= Message-ID: <030f01c37210$688d74d0$518580c3@wishmaster> 1 2 3 -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Wed Sep 3 06:53:52 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] =?koi8-r?b?Rnc6IPDSz9fF0svBINDP09TJzsfBINcgztjA09ku?= =?koi8-r?b?Li4=?= Message-ID: <033201c37212$0bddd110$518580c3@wishmaster> ----- Original Message ----- From: "Greg Belenky" To: "Samara.pm" Sent: Wednesday, September 03, 2003 4:42 PM Subject: Проверка постинга в ньюсы... > 1 2 3 > > -- > Григорий "Grishace" Беленький > http://search.cpan.org/author/GRISHACE/ > From greg на webzavod.ru Wed Sep 3 07:03:39 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] =?koi8-r?b?Rnc6IPDSz9fF0svBINDP09TJzsfBINcgztjA09ku?= =?koi8-r?b?Li4=?= Message-ID: <034a01c37213$69314e90$518580c3@wishmaster> ну почему у меня ничего не получается! ;( -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Wed Sep 3 07:09:33 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara-pm] Meeting References: <200309030920.h839KW93082937@gateway.vdcom.ru><0a9401c3720e$40f4cec0$020200c0@hrg><200309031003.h83A3G93083566@gateway.vdcom.ru> <030901c37210$113e3ac0$518580c3@wishmaster> Message-ID: <0af301c37214$415be640$020200c0@hrg> Hello, Greg! You wrote to "LaVei" ; on Wed, 3 Sep 2003 16:39:43 +0500: YK>>> Суббота? Воскресенье? >> Воскресение подходит?;-) GB> воскресенье ;) я за :)) ЗЫ Грег можно эту какашку убрать, которая к письмам дописывается? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Wed Sep 3 07:11:48 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara.pm] Re: [Samara-pm] Meeting References: <200309030920.h839KW93082937@gateway.vdcom.ru><0a9401c3720e$40f4cec0$020200c0@hrg><200309031003.h83A3G93083566@gateway.vdcom.ru><030901c37210$113e3ac0$518580c3@wishmaster> <0af301c37214$415be640$020200c0@hrg> Message-ID: <035601c37214$8cf2a350$518580c3@wishmaster> > ЗЫ Грег можно эту какашку убрать, которая к письмам дописывается? Убралась? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Wed Sep 3 07:20:20 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara.pm] Re: [Samara-pm] Meeting References: <200309030920.h839KW93082937@gateway.vdcom.ru><0a9401c3720e$40f4cec0$020200c0@hrg><200309031003.h83A3G93083566@gateway.vdcom.ru><030901c37210$113e3ac0$518580c3@wishmaster> <0af301c37214$415be640$020200c0@hrg> <035601c37214$8cf2a350$518580c3@wishmaster> Message-ID: <0b1701c37215$c6d1e530$020200c0@hrg> Hello, Greg! You wrote to "Yury Kopyl" ; on Wed, 3 Sep 2003 17:11:48 +0500: >> ЗЫ Грег можно эту какашку убрать, которая к письмам дописывается? GB> Убралась? Да. With best regards, Yury Kopyl. E-mail: hrg@sama.ru From marchenko на zr.ru Wed Sep 3 07:18:21 2003 From: marchenko на zr.ru (Jury Marchenko) Date: Mon Aug 2 21:36:06 2004 Subject: [Samara.pm] =?iso-8859-1?q?=28=C2=C5=DA_=D4=C5=CD=D9=29?= Message-ID: <015a01c37215$7773bfe0$1f01a8c0@jupiter> Господа, давайте только по делу через рассылку, а то от спама и так ящик ломится. С уважением, Марченко Юрий Иванович, редактор отдела оперативной информации, ЗАО КЖИ "За Рулём" URL: http://www.zr.ru ; http://www.za.ru ; E-mail: marchenko@zr.ru Телефоны: +7 (095) 208-00-70 +7 (926) 203-52-90 -------------- next part -------------- qс0╤╜╣╖!≥ИМа╚,r╩⌡mГTD╦m╤÷Ъ≥╗╔╕j+┐Зb╔ЙФj)╠╘ ╜╙fЩ╚miхfz{lЪm4ъOtъЩygЭs©з╤ж°├g╖╤f From greg на webzavod.ru Wed Sep 3 23:05:32 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?8NLP09jCwSDQz9TF0tDF1NguLi4=?= Message-ID: <048f01c37299$c9107e90$518580c3@wishmaster> Неожиданно сломался гейт Мэйл-лист <-> ньюсы... никаких параметров в интерфейсе администрирования листа не менял. Буду разбираться. В связи с этим иногда будут попадаться всяческие тестовые сообщения. Не обращайте внимания. Спасибо. -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Tue Sep 9 00:45:41 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?8M/Nz8XN1SDe1M8g1M8gxMHXzs8gzdkgzsUgzsnexcfPIM7FIMvV?= =?koi8-r?b?0snMyT87LSk=?= Message-ID: <200309090417.h894H693064531@gateway.vdcom.ru> Всем привет! Собственно сабж. Ни у кого не осталось травки? думаю на этот раз участников будет побольше.;-) Данил From greg на webzavod.ru Tue Sep 9 00:52:43 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:06 2004 Subject: The Perl Journal Message-ID: <02b701c37696$963c6be0$518580c3@wishmaster> Привет всем. Давным-давно, когда ЗПЖ менял хозяина, и не было известно, будет ли журнал существовать дальше, все архивы оказались в свободном доступе. http://si-81.samara.net/books/TPJ/ Журналы довольно-таки старые (последний номер - 3-х летней давности), но все равно могут оказаться полезными. --- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Fri Sep 19 06:03:34 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: Acme::EyeDrops Message-ID: <200309190937.h8J9b593018964@gateway.vdcom.ru> Всем привет! Недавно столкнулся с проблемой: надо выкладывать софт, а клиент не благонадежный..первый раз работаем. Вообщем после бесплотных поисков по нету подходящего криптующего софта, был направлен одной светлой головой(спасибо Грег;-) в сторону Acme::* Больше всего порадовало в сабже это поддержка шаблонов картинок для генерируемого кода.;-) Ну остальные приятности я думаю вы сами обнаружите. Карочи рекомендую.;-) Данил ЗЫ Acme::JAPH просто убил меня;-)) From lavei на mail.ru Thu Sep 25 06:30:07 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?9NLB18Eg0MXSzC4uLsbTxc0gy9XSydTYOy0p?= Message-ID: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Как решить в одну строку это, я себе пока не представляю... поэтому если участники не против то критерием будет Benchmark?;-) Задача : Написать программу на perl выводящую текст в виде прямоугольника с заданной шириной. До заданной ширины строку следует дополнять пробелами, начиная с левой её части. Параметр, определяющий ширину результирующего прямоугольника, гарантированно больше, чем самое длинное слово, встречающееся в тексте. Текст "A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value." Данил From hrg на sama.ru Thu Sep 25 06:50:44 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: <001501c3835b$46d9fe60$020200c0@hrg> Hello, LaVei! You wrote to on Thu, 25 Sep 2003 16:30:07 +0500: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, начиная с L> левой её части. Параметр, определяющий ширину результирующего L> прямоугольника, гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. L> Текст "A simple, easy to remember system for encoding integer L> amounts can be very useful. For example, dealers at flea markets put L> the information about an item on a card that they let potential L> buyers see. They find it advantageous to encode the amount they L> originally paid for the item on the card.\nA good system is to use a L> substitution code, in which each digit is encoded by a letter. An L> easy to remember 10-letter word or phrase, the key, is chosen. Every L> '1' in the value is replaced by the first letter of the key, every L> '2' is replaced by the second letter of the key, and so on. Every '0' L> is replaced by the last letter of the key. Letters that do not L> appear in the key can be inserted anywhere without affecting the L> value represented by the code.. This helps to make the resulting L> code much harder to break (without knowing the key).\nCreate a class L> Substitute that contains the method getValue that is given the L> Strings key and code as input and that returns the decoded value." http://search.cpan.org/search?query=wrap&mode=all - это? :)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Thu Sep 25 06:49:42 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= In-Reply-To: <001501c3835b$46d9fe60$020200c0@hrg> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <001501c3835b$46d9fe60$020200c0@hrg> Message-ID: <200309251024.h8PAOj93018419@gateway.vdcom.ru> Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 16:50:44 +0500, Вы написали: YK> Hello, LaVei! YK> You wrote to on Thu, 25 Sep 2003 16:30:07 +0500: L>> Как решить в одну строку это, я себе пока не представляю... L>> поэтому если участники не против то критерием будет Benchmark?;-) YK> http://search.cpan.org/search?query=wrap&mode=all - это? :)) Чур CPAN непользоваться!!!:-)) Данил From marchenko на zr.ru Thu Sep 25 07:09:34 2003 From: marchenko на zr.ru (Jury Marchenko) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: <006b01c3835d$e2950500$1f01a8c0@jupiter> Так, на скорую, вот вариант. Возмодна оптимизация. Длина задаётся $l. #!/usr/bin/perl use strict; my $text = "A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my @words = split(/ |\n/g, $text); my $l = 45; for (my $i=0;$i<=$#words;$i++) { my $string = $words[$i]; while (length($string)<$l) { $i++; if (!$words[$i]) { $string = &add_dot($string, $l); } if ((length($string) + length(" " . $words[$i]))<=$l) { $string.=" $words[$i]"; } else { $i--; $string = &add_dot($string, $l); last; } } print "$string\n"; } sub add_dot { my ($string, $l) = @_; while (length ($string) < $l) { $string = " $string"; } return $string; } С уважением, Марченко Юрий Иванович, редактор отдела оперативной информации, ЗАО КЖИ "За Рулём" URL: http://www.zr.ru ; http://www.za.ru ; E-mail: marchenko@zr.ru Телефоны: +7 (095) 208-00-70 +7 (926) 203-52-90 ----- Original Message ----- From: "LaVei" To: Sent: Thursday, September 25, 2003 15:30 Subject: Трава перл...фсем курить;-) > Как решить в одну строку это, я себе пока не представляю... > поэтому если участники не против то критерием будет Benchmark?;-) > > Задача : > Написать программу на perl выводящую текст в виде > прямоугольника с > заданной шириной. > До заданной ширины строку следует дополнять пробелами, > начиная с левой её > части. Параметр, определяющий ширину результирующего > прямоугольника, > гарантированно больше, чем самое длинное слово, > встречающееся в тексте. > > Текст > "A simple, easy to remember system for encoding integer > amounts can be very > useful. For example, dealers at flea markets put the > information about an item > on a card that they let potential buyers see. They find it > advantageous to > encode the amount they originally paid for the item on the > card.\nA good system > is to use a substitution code, in which each digit is > encoded by a letter. An > easy to remember 10-letter word or phrase, the key, is > chosen. Every '1' in the > value is replaced by the first letter of the key, every > '2' is replaced by the > second letter of the key, and so on. Every '0' is replaced > by the last letter of > the key. Letters that do not appear in the key can be > inserted anywhere without > affecting the value represented by the code.. This helps > to make the resulting > code much harder to break (without knowing the > key).\nCreate a class Substitute > that contains the method getValue that is given the > Strings key and code as > input and that returns the decoded value." > > Данил > From lavei на mail.ru Thu Sep 25 07:29:06 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= In-Reply-To: <200309251005.h8PA5B93018026@gateway.vdcom.ru> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: <200309251104.h8PB4A93019070@gateway.vdcom.ru> Здраствуйте, LaVei ! в Thu, 25 Sep 2003 16:30:07 +0500, Вы написали: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде L> прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, L> начиная с левой её L> части. Параметр, определяющий ширину результирующего L> прямоугольника, L> гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. Ну типа мой my $point = 20; $text=~ s/\n//g; for ($text =~ m/(.{1,$point}) /g) { my $str = $_; for (length($str)..$point) { $str = " ".$str; } } Ща буду дорабатывать;-) Данил From e_skachkov на diamond.ru Thu Sep 25 07:32:48 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= Message-ID: <1A3B236C9F925A4BA05402720A93E1E5EC1D@maildom.email.diamond.ru> #!/usr/bin/perl use strict; my $text = qq`A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value.`; my $point = $ARGV[0]; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; while ( $text =~ s/^(.{1,$point})[ |.](.*)$/$2/ ) { my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Ето мой скромный вариантик С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From hrg на sama.ru Thu Sep 25 08:05:57 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg> <200309251024.h8PAOj93018419@gateway.vdcom.ru> Message-ID: <007301c38365$c98b9710$020200c0@hrg> Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 16:49:42 +0500: L>>> Как решить в одну строку это, я себе пока не представляю... L>>> поэтому если участники не против то критерием будет Benchmark?;-) YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) L> Чур CPAN непользоваться!!!:-)) "Как же так, Федор Михайлович"(С)Сеня Лютый my $width=40; my $text="A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my $format_str='^'.'>'x ($width-1)."~~\n"; foreach my $text (split (/\n/,$text)){ $text=~s/^\s+//; $text=~s/\s+$//; formline ($format_str,$text); print $^A; }; With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Thu Sep 25 08:20:52 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= In-Reply-To: <007301c38365$c98b9710$020200c0@hrg> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg> <200309251024.h8PAOj93018419@gateway.vdcom.ru> <007301c38365$c98b9710$020200c0@hrg> Message-ID: <200309251155.h8PBtv93019797@gateway.vdcom.ru> YK> foreach my $text (split (/\n/,$text)){ А цикл для чего? Данил From lavei на mail.ru Thu Sep 25 08:26:59 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?9MnQwSDQ0s/NxdbV1M/eztnFIMnUz8fJOy0p?= In-Reply-To: <200309251005.h8PA5B93018026@gateway.vdcom.ru> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: <200309251202.h8PC2493019909@gateway.vdcom.ru> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ 406504.07/s (n=500000) LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 236966.82/s (n=500000) Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ 568181.82/s (n=500000) hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ 242718.45/s (n=500000) Rate LaVei hrg Evgen Yury LaVei 236967/s -- -2% -42% -58% hrg 242718/s 2% -- -40% -57% Evgen 406504/s 72% 67% -- -28% Yury 568182/s 140% 134% 40% -- From hrg на sama.ru Thu Sep 25 23:25:45 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg> <200309251155.h8PBtv93019797@gateway.vdcom.ru> Message-ID: <00c501c383e6$541b0700$020200c0@hrg> Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:20:52 +0500: YK>> foreach my $text (split (/\n/,$text)){ L> А цикл для чего? Для абзацев. т.е если в строке есть символы переноса, то строка начнется заново. With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Thu Sep 25 23:36:28 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <200309251202.h8PC2493019909@gateway.vdcom.ru> Message-ID: <00de01c383e7$ce8c6fa0$020200c0@hrg> Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:26:59 +0500: L> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L> 406504.07/s (n=500000) L> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L> 236966.82/s (n=500000) L> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L> 568181.82/s (n=500000) L> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L> 242718.45/s (n=500000) L> Rate LaVei hrg Evgen Yury L> LaVei 236967/s -- -2% -42% -58% L> hrg 242718/s 2% -- -40% -57% L> Evgen 406504/s 72% 67% -- -28% L> Yury 568182/s 140% 134% 40% -- Кстате, если интересует быстродействие,а не меньшее кол-во строк мона сделать еще так: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr{ s/^\s+//}; my $del_after =qr{ s/\s+$//}; my $buf; foreach my $text (split (/\n/,$text)){ $text=~$del_before; $text=~$del_after; formline ($format_str,$text); $buf.=$^A; }; print $buf; И еще - ты сравнивал при одинаковой ширине при разбиении для всех алгоритмов? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Fri Sep 26 00:08:50 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309251202.h8PC2493019909@gateway.vdcom.ru> <00de01c383e7$ce8c6fa0$020200c0@hrg> Message-ID: <018701c383ec$55007640$020200c0@hrg> Hello, Yury! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 09:36:28 +0500: YK> Hello, LaVei! YK> You wrote to "Samara (Russia) Perl Mongers" YK> on Thu, 25 Sep 2003 18:26:59 +0500: L>> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L>> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L>> 406504.07/s (n=500000) L>> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L>> 236966.82/s (n=500000) L>> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L>> 568181.82/s (n=500000) L>> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L>> 242718.45/s (n=500000) L>> Rate LaVei hrg Evgen Yury L>> LaVei 236967/s -- -2% -42% -58% L>> hrg 242718/s 2% -- -40% -57% L>> Evgen 406504/s 72% 67% -- -28% L>> Yury 568182/s 140% 134% 40% -- YK> Кстате, если интересует быстродействие,а не меньшее кол-во строк YK> мона сделать еще так: YK> my $format_str='^'.'>'x ($width-1)."~~\n"; YK> my $del_before=qr{ s/^\s+//}; YK> my $del_after =qr{ s/\s+$//}; YK> my $buf; YK> foreach my $text (split (/\n/,$text)){ YK> $text=~$del_before; YK> $text=~$del_after; YK> formline ($format_str,$text); YK> $buf.=$^A; YK> }; YK> print $buf; YK> И еще - ты сравнивал при одинаковой ширине при разбиении для всех YK> алгоритмов? Поправка к последнему варианту: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr /^\s+/o; my $del_after =qr /\s+$/o; my $buf; foreach my $text (split (/\n/,$text)){ $text=~s/$del_before//; $text=~s/$del_after//; formline ($format_str,$text); $buf.=$^A; }; print $buf; YK> With best regards, Yury Kopyl. E-mail: hrg@sama.ru With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Fri Sep 26 00:48:52 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= In-Reply-To: <00c501c383e6$541b0700$020200c0@hrg> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg> <200309251155.h8PBtv93019797@gateway.vdcom.ru> <00c501c383e6$541b0700$020200c0@hrg> Message-ID: <200309260424.h8Q4O593028808@gateway.vdcom.ru> Здраствуйте, "Yury Kopyl" ! в Fri, 26 Sep 2003 09:25:45 +0500, Вы написали: YK>>> foreach my $text (split (/\n/,$text)){ L>> А цикл для чего? YK> Для абзацев. т.е если в строке есть символы переноса, то строка начнется YK> заново. Это понятно;-) на мой взгляд в твоем варианте достаточно было бы: my $width=40; my $format_str='^'.'>'x ($width-1)."~~\n"; formline ($format_str,$text); print $^A; Поскольку вроде про абзацы там вроде ничего не было сказано. по крайней мере я так понял.;-)) Ща гляну оптимизенные варианты.;-) Данил PS а где можно почитать про форматы? perldoc -f formline слишком малоинформативен что то..;-( From lavei на mail.ru Fri Sep 26 00:56:39 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:06 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= In-Reply-To: <018701c383ec$55007640$020200c0@hrg> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309251202.h8PC2493019909@gateway.vdcom.ru> <00de01c383e7$ce8c6fa0$020200c0@hrg> <018701c383ec$55007640$020200c0@hrg> Message-ID: <200309260431.h8Q4Vq93028893@gateway.vdcom.ru> ширина 45 Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... Evgen: 1 wallclock secs ( 1.12 usr + 0.00 sys = 1.12 CPU) @ 446428.57/s (n=500000) LaVei: 3 wallclock secs ( 1.90 usr + 0.00 sys = 1.90 CPU) @ 263157.89/s (n=500000) Yury: 2 wallclock secs ( 0.94 usr + 0.00 sys = 0.94 CPU) @ 531914.89/s (n=500000) hrg: 7 wallclock secs ( 6.56 usr + 0.00 sys = 6.56 CPU) @ 76219.51/s (n=500000) Rate hrg LaVei Evgen Yury hrg 76220/s -- -71% -83% -86% LaVei 263158/s 245% -- -41% -51% Evgen 446429/s 486% 70% -- -16% Yury 531915/s 598% 102% 19% -- ширина 60 Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... Evgen: 0 wallclock secs ( 1.12 usr + 0.00 sys = 1.12 CPU) @ 446428.57/s (n=500000) LaVei: 2 wallclock secs ( 1.88 usr + 0.01 sys = 1.89 CPU) @ 264550.26/s (n=500000) Yury: 2 wallclock secs ( 0.99 usr + 0.00 sys = 0.99 CPU) @ 505050.51/s (n=500000) hrg: 7 wallclock secs ( 6.43 usr + 0.00 sys = 6.43 CPU) @ 77760.50/s (n=500000) Rate hrg LaVei Evgen Yury hrg 77760/s -- -71% -83% -85% LaVei 264550/s 240% -- -41% -48% Evgen 446429/s 474% 69% -- -12% Yury 505051/s 549% 91% 13% -- Что то хрень какая то... Данил From greg на webzavod.ru Fri Sep 26 01:02:50 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg><200309251155.h8PBtv93019797@gateway.vdcom.ru><00c501c383e6$541b0700$020200c0@hrg> <200309260424.h8Q4O593028808@gateway.vdcom.ru> Message-ID: <01b401c383f3$d4908b00$518580c3@wishmaster> мои полкилобайта: sub greg { my ($width, $str) = @_; my $i = 0; my @wrap = (); foreach (split /\s+/, $str) { unless (length( $wrap[$i] ) + length() + 1 <= $width) { while (length( $wrap[$i] ) < $width) { if ($wrap[$i] =~ /(\S)(\s)/sg) { substr($wrap[$i], (my $p = pos( $wrap[$i] ))-1, 1) = $2x2; pos( $wrap[$i] ) = $p; } else { pos( $wrap[$i] ) = 0; } } $i++; } $wrap[$i] .= ($wrap[$i] && ' ') . $_; } return join "\n", @wrap; } --- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Fri Sep 26 01:28:44 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= In-Reply-To: <200309251005.h8PA5B93018026@gateway.vdcom.ru> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: <200309260503.h8Q53v93029299@gateway.vdcom.ru> Здраствуйте, LaVei ! в Thu, 25 Sep 2003 16:30:07 +0500, Вы написали: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде L> прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, L> начиная с левой её L> части. Параметр, определяющий ширину результирующего L> прямоугольника, L> гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. В связи с возникшей неразберихой я предлагаю немного подкорректировать задание. 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у Евгена только последний символ "." куда то пропал -надо вернуть;-) в этом плане единственно верные. 2. Абзацы не считаем 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее автоматом, так что бы из текста получился квадрат;-) 4. модули с CPAN попрежнему не приветствуются:-)) Данил From hrg на sama.ru Fri Sep 26 01:37:37 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg><200309251155.h8PBtv93019797@gateway.vdcom.ru><00c501c383e6$541b0700$020200c0@hrg> <200309260424.h8Q4O593028808@gateway.vdcom.ru> Message-ID: <044001c383f8$bac5a930$020200c0@hrg> Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 10:48:52 +0500: L> PS а где можно почитать про форматы? L> perldoc -f formline слишком малоинформативен что то..;-( google :)) или пиши сюда, я одно время с ними очень хорошо с нимим (Афонина нет?) портахался With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Fri Sep 26 01:40:19 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <200309260503.h8Q53v93029299@gateway.vdcom.ru> Message-ID: <045301c383f9$1b7b0bd0$020200c0@hrg> Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L>> Как решить в одну строку это, я себе пока не представляю... L>> поэтому если участники не против то критерием будет Benchmark?;-) L>> Задача : L>> Написать программу на perl выводящую текст в виде прямоугольника с L>> заданной шириной. L>> До заданной ширины строку следует дополнять пробелами, начиная с L>> левой её части. Параметр, определяющий ширину результирующего L>> прямоугольника, гарантированно больше, чем самое длинное слово, L>> встречающееся в тексте. L> В связи с возникшей неразберихой я предлагаю немного L> подкорректировать задание. L> 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у L> Евгена только последний символ "." куда то пропал -надо вернуть;-) L> в этом плане единственно верные. т.е. симлпа добиваем пробелы? L> 2. Абзацы не считаем L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) хм.... вот изврат L> 4. модули с CPAN попрежнему не приветствуются:-)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Fri Sep 26 01:49:04 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <200309260503.h8Q53v93029299@gateway.vdcom.ru> Message-ID: <049d01c383fa$55942260$020200c0@hrg> Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L> L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) И еще: квадрат - это n строк х n столбцов или все-таки визуальный квадрат в текстовом режиме? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Fri Sep 26 01:42:24 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= In-Reply-To: <200309251005.h8PA5B93018026@gateway.vdcom.ru> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: <200309260517.h8Q5Hc93029511@gateway.vdcom.ru> Здраствуйте, LaVei ! в Thu, 25 Sep 2003 16:30:07 +0500, Вы написали: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде L> прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, L> начиная с левой её L> части. Параметр, определяющий ширину результирующего L> прямоугольника, L> гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. По предыдущей задаче: в связи с тем что наиболее верно задачи была решена Грегом и Евгеном я сделал бенчмарки ихних скриптов(предварительно исправив баг в коде Евгена с .$) вот результаты: Benchmark: timing 500000 iterations of Evgen, greg... Evgen: 0 wallclock secs ( 1.14 usr + 0.00 sys = 1.14 CPU) @ 438596.49/s (n=500000) greg: 2 wallclock secs ( 2.69 usr + 0.00 sys = 2.69 CPU) @ 185873.61/s (n=500000) Rate greg Evgen greg 185874/s -- -58% Evgen 438596/s 136% -- вот изменения в коде Евгена: while ( $text =~ s/^(.{1,$point}[ |.])(.*)$/$2/ ) { my $str = $1; $str=~ s/ $//; Данил From lavei на mail.ru Fri Sep 26 01:48:29 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= In-Reply-To: <045301c383f9$1b7b0bd0$020200c0@hrg> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <200309260503.h8Q53v93029299@gateway.vdcom.ru> <045301c383f9$1b7b0bd0$020200c0@hrg> Message-ID: <200309260523.h8Q5Nh93029601@gateway.vdcom.ru> Здраствуйте, "Yury Kopyl" ! в Fri, 26 Sep 2003 11:40:19 +0500, Вы написали: L>> 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у L>> Евгена только последний символ "." куда то пропал -надо вернуть;-) L>> в этом плане единственно верные. YK> т.е. симлпа добиваем пробелы? пробелы вставляем равномерно по всей строке. L>> 2. Абзацы не считаем L>> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L>> автоматом, так что бы из текста получился квадрат;-) YK> хм.... вот изврат Нуда:-) Думаю след предложить треугольник:-)) YK> И еще: квадрат - это n строк х n столбцов или все-таки визуальный квадрат в YK> текстовом режиме? это n строк и n столбцов. те текст визуально в форме квадрата, до этого был прфмоугольник;-)) должно быть типа asdsd ssd s s dsd sd d sd dd те 5 строк и 5 столбцов в этом случае. n расчитывается исходя из длины строки. Данил PS Геометрия блин какая то получается:-))) From greg на webzavod.ru Fri Sep 26 02:27:50 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309260503.h8Q53v93029299@gateway.vdcom.ru><045301c383f9$1b7b0bd0$020200c0@hrg> <200309260523.h8Q5Nh93029601@gateway.vdcom.ru> Message-ID: <01fb01c383ff$b43f91f0$518580c3@wishmaster> вот чего получилось: use strict; my $str = qq{A simple .... наш любимый текст поскипан: the decoded value.}; # считаем минимально возможную ширину строки sub minwidth { my ($str) = @_; my $minwidth = undef; while ($str =~ /(\S*)\s+(\S*)/sg) { my $w = length($1)+length($2)+1; $minwidth = $w if $w > $minwidth; pos( $str ) -= length($2) if $2; } return $minwidth; } # "расширение" пробелами до необходимой длины sub padline { my ($width, $line) = @_; while (length( $$line ) < $width) { if ($$line =~ /(\S)(\s)/sg) { substr($$line, (my $p = pos( $$line ))-1, 1) = $2x2; pos( $$line ) = $p; } else { pos( $$line ) = 0; } } } # это из предыдущего задания, только возвращает не одну строку, а список sub greg { my ($width, $str) = @_; my $i = 0; my @wrap = (); foreach (split /\s+/, $str) { unless (length( $wrap[$i] ) + length() + 1 <= $width) { padline( $width, \$wrap[$i] ); $i++; } $wrap[$i] .= ($wrap[$i] && ' ') . $_; } return @wrap; } # рисуем квадрат (если возможно) sub square { my ($str) = @_; my $mw = minwidth( $str ); die "Squaring is not possible..." if greg( $mw, $str ) < $mw; my @sqr; $mw++ while (do{ @sqr = greg( $mw, $str ); length( $sqr[0] ) < @sqr }); @sqr = greg( --$mw, $str ); if (length( $sqr[0] ) < @sqr) { for (my $i = 0; $i < $#sqr; $i++) { padline( scalar @sqr, \$sqr[$i] ); } } return join "\n", @sqr; } print square( $str ); __END__ Результат (33x33): A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. --- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Fri Sep 26 06:33:08 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= In-Reply-To: <200309260523.h8Q5Nh93029601@gateway.vdcom.ru> References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <200309260503.h8Q53v93029299@gateway.vdcom.ru> <045301c383f9$1b7b0bd0$020200c0@hrg> <200309260523.h8Q5Nh93029601@gateway.vdcom.ru> Message-ID: <200309261008.h8QA8O93033255@gateway.vdcom.ru> $text=~ s/\n|\r/ /g; my $len = length$text; my $width = (int(sqrt($len))+1); my @ar = ($text =~ m/(.{1,$width}[ |\.])/g); my $max = $#ar+1; for (@ar) { my $str = $_; $str =~ s/\s+$//; $str = &fill($str,$max); print $str."\n"; } sub fill { my $str = shift; my $max = shift; my $str1; my $pos=1; my $i=1; while(length($str) <=$max) { $pos = index($str, " ", $pos); if($pos != -1) { substr($str, $pos, 1, " "); $pos += 2+$i; $i++; } } return $str; } Типа родил каменную чашу;-) Данил From e_skachkov на diamond.ru Fri Sep 26 08:05:40 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= =?koi8-r?b?2S4=?= Message-ID: <1A3B236C9F925A4BA05402720A93E1E501F739@maildom.email.diamond.ru> #!/usr/bin/perl use strict; my $text = qq`A simple, decoded value.`; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; my $len = length$text; my $point = (int(sqrt($len))+1);#(c) Lavei. while ( $text =~ s/^(.{1,$point}[ |.])(.*)$/$2/ ) #Updated by Lavei { my $str = $1; #Updated by Lavei $str=~ s/ $//;#Updated by Lavei my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Вот и мое произведение тока с данилиным копирайтом С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From lavei на mail.ru Thu Sep 25 01:39:55 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: <20030925113955.1720864b.lavei@mail.ru> Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:33:55 +0500, Вы написали: ML> у меня, правда, все my стоят вначале скрипта.. А смысл? my нужен для объявления переменных в области видимости. те если тебе $line нужен в области видимости цикла то и объявляй тама. после выхода и области цикла он должен быть убит, как тебе уже написали. в твоем случае ты продолжаешь таскать за собой эту переменную по всему коду... Данил From greg на webzavod.ru Thu Sep 25 01:50:23 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: Message-ID: > дааа , блин, радикально ! > спасибо за предложения ;) > %CPU %MEM > 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl помогло? > > use strict; > > давно ;) > а как это относится к памяти? > у меня, правда, все my стоят вначале скрипта.. то, что эти переменные у тебя никогда за пределы видимости не выходят, и память, которую они занимают не отдается обратно. Когда ты так описываешь переменную внутри блока, то как только счетчик референсесов на нее обнуляется - перловый сборщик мусора должен по идее освоботить память, которая использовалась для нее. -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Thu Sep 25 01:57:33 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: %CPU %MEM >> 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > помогло? ага. надо еще что-нибудь заоптимизировать. например: в этом де скрипте используется tie %iptraf, "DB_File", 'iptraf.db'; который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет (в простом случае) 3 млн (на самом деле несколько меньше ;) Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Будет ли быстрее работать в памяти? (хотя в perldoc -q memory пишут обратное - чтобы освободить память, обращайтесь к диску ;) В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) >> > use strict; >> давно ;) >> а как это относится к памяти? >> у меня, правда, все my стоят вначале скрипта.. > > то, что эти переменные у тебя никогда за пределы видимости не выходят, Я так и подумал, поэтому и написал, что вначале скрипта стоят.. ;) -- Mike From lavei на mail.ru Thu Sep 25 02:15:54 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: <20030925121554.76ec719e.lavei@mail.ru> Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:57:33 +0500, Вы написали: ML> например: ML> в этом де скрипте используется ML> tie %iptraf, "DB_File", 'iptraf.db'; ML> который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то ML> пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет ML> (в простом случае) 3 млн (на самом деле несколько меньше ;) ML> Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Да, в этом их(db_file) плюс и есть. ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... правда не очень юзабельны...;-( ML> В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) Ну кинь суда свой код, посмотрим. Данил From greg на webzavod.ru Thu Sep 25 00:16:49 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: Message-ID: > есть файл, большой. например, в нем 2 миллиона строк и 300 метров. логи? > open(AAA, " foreach () { foreach в данном случае не канает - по одной простой причине, что _ДО_ начала цикла весь файл считывается и создается _СПИСОК_ строк, по которым потом и организуется цикл. попробуй так: while (my $line = ) { my @line = split ' ', $line; ... } по идее после конца цикла переменные $line и @line должны высвыбождаться, т.к. они вышли за пределы блока. p.s. use strict; -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 00:25:27 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Mike Lykov -> "потребление памяти." : ML> Здравствуйте, перловые монгры! ;) ML> кто присоветует? ML> есть файл, большой. например, в нем 2 миллиона строк и 300 метров. ML> я читаю его таким образом: ML> while () { ML> или open(AAA, " foreach () { ML> и затем @line=split(' '); ML> конечно, оно работает, но при работе сразу занимает метров 400 ML> памяти. ML> соответственно, если файл - 300 метров, то в памяти процесс занимает ML> (около) ML> 550 метров. ML> меня это как-то не устраивает ;) ML> Предполагаю, что на каждую новую строку в памяти заводятся новые ML> копии $_ и @line, но как этого избежать? Скажи, что ты с этим строками делаешь? Обязательно хранить в мозгах все? Yury Kopyl aka hrg | http://id.totem.ru | "Если ты плюнешь на коллектив - коллектив утрется, но если коллектив плюнет на тебя - ты утонешь" (С)Баралгин From greg на webzavod.ru Thu Sep 25 00:21:25 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: Message-ID: Кто тебя учил так квотить? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Thu Sep 25 00:31:50 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: Message-ID: perldoc -q memory -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 00:42:48 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : GB> Кто тебя учил так квотить? Ацтань, зануда :)) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From combr на vesna.ru Thu Sep 25 01:33:55 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > логи? конечно. сквида. > попробуй так: > while (my $line = ) { > my @line = split ' ', $line; > по идее после конца цикла переменные $line и @line должны высвыбождаться, > т.к. они вышли за пределы блока. дааа , блин, радикально ! спасибо за предложения ;) %CPU %MEM 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > p.s. > use strict; давно ;) а как это относится к памяти? у меня, правда, все my стоят вначале скрипта.. -- Mike From greg на webzavod.ru Thu Sep 25 02:26:19 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: > ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. > На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы нравятся... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 02:51:37 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: Greg Belenky -> "Re: потребление памяти." : >> ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не >> будет GB> засрана. >> На некоторых задачах они бывают гораздо лучшим решением нежли какой >> либо GB> sql сервер... GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) <писькамерялка> Это 10-20Мб - большие объемы то?? GB> Может быть стоит попробовать Tie::DBI если уж тебе так притайеные GB> интерфейсы нравятся... tie работает крайне медлленах... сам же читал :)) Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From combr на vesna.ru Wed Sep 24 23:24:10 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= Message-ID: Здравствуйте, перловые монгры! ;) кто присоветует? есть файл, большой. например, в нем 2 миллиона строк и 300 метров. я читаю его таким образом: while () { или open(AAA, ") { и затем @line=split(' '); конечно, оно работает, но при работе сразу занимает метров 400 памяти. соответственно, если файл - 300 метров, то в памяти процесс занимает (около) 550 метров. меня это как-то не устраивает ;) Предполагаю, что на каждую новую строку в памяти заводятся новые копии $_ и @line, но как этого избежать? -- Mike From lavei на mail.ru Thu Sep 25 02:49:08 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: <20030925124908.7dbda1f3.lavei@mail.ru> Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:26:19 +0500, Вы написали: GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) я проверял на 6-7 га текста. в записях это было 6~7 млн. те запись была в cреднем 1к может чуть больше...не вспомню уже. точные данные сейчас не впомню, но различие было на порядок это 100 пудов. >Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы >нравятся... Мне сам по себе db импонирует;-) (прочитай PERFORMANCE для Tie:DBI.;-) Данил From greg на webzavod.ru Thu Sep 25 02:49:52 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: > <писькамерялка> > Это 10-20Мб - большие объемы то?? > там же русским по белому написано ">10-20Mb" это значить "БОЛЬШЕ 10-20 Мегабайт.. а там и 100 и 300 и до гига недалеко... > tie работает крайне медлленах... сам же читал :)) Ну не медленно он работает... просто использование замещается методами объекта притайенного класса. Зато код легче читается ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Thu Sep 25 02:51:49 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: <20030925125149.06040919.lavei@mail.ru> Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 12:51:37 +0500, Вы написали: YK> <писькамерялка> YK> Это 10-20Мб - большие объемы то?? YK> Понеслась..;-)) Колись, Юр, какой у тебя объем;-))) Данил From greg на webzavod.ru Thu Sep 25 02:54:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925121554.76ec719e.lavei@mail.ru> <20030925124908.7dbda1f3.lavei@mail.ru> Message-ID: > точные данные сейчас не впомню, но различие было на порядок это 100 пудов. и в чью пользу? м.б. архитектура приложений различная была? у меня - демон ;) которому нужно было вести несколько логов... > (прочитай PERFORMANCE для Tie:DBI.;-) да уж... жопа. беру свои слова взад. з.ы. сам ни разу не использовал ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Thu Sep 25 03:02:15 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: Yury Kopyl писал: > tie работает крайне медлленах... сам же читал :)) блинблин. а кто работает не медленно? (и немедленно? ;) какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом как-то его кидать на диск для сохранения? ;) -- Mike From combr на vesna.ru Thu Sep 25 03:05:36 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= Message-ID: Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс обработки лога (в строках/сек)? Учитывая то, что скрипт может работать, например, 0.1 сек ;) использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да и наверняка можно без установки доп. модулей обойтись. например, в логе сквида есть тысячные доли секунды, а time() выдает только секунды. -- Mike From greg на webzavod.ru Thu Sep 25 03:13:02 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= =?iso-8859-1?q?=CD=C1=CE=D3=C1?= References: Message-ID: > Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс > обработки лога (в строках/сек)? выносишь обработку одной строки в процедуру. Создаешь тестовый массив из нескольких строк лога и... use Benchmark; > использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да > и наверняка можно без установки доп. модулей обойтись. почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они выполнялись... когда волосы дыбом встают от постоянно растущего времени выполнения - приходит черед оптимизации ;))) > например, в логе сквида есть тысячные доли секунды, а time() выдает только > секунды. вот здесь не понял - разобъясни... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Thu Sep 25 03:17:00 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: > какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти > (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом > как-то его кидать на диск для сохранения? ;) я так понимаю, что это статистика? ;) что есть "строки хеша". ключи, наверное? ну а что в качестве значений этих ключей? если результат настолько мал, то скорее всего наиболее оптимально хранить в памяти во время обработки, а потом сохранять. вариантов - море... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Thu Sep 25 03:27:00 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: Greg Belenky писал: > я так понимаю, что это статистика? ;) конечно. > что есть "строки хеша". ключи, наверное? конечно ;) >ну а что в качестве значений этих ключей? небольшие (по обьему) цифры ;) > если результат настолько мал, то скорее всего наиболее оптимально хранить > в памяти во время обработки, а потом сохранять. это понятно. но как сохранять? я как-то придумал такую подпрограмму, в которую передается ссылка на хеш, а она : открывает tie копирует переданный хеш в точно такой же, но затиенный закрывает tie ;)) может, можно как-то более оригинально (без доп. модулей)? -- Mike From hrg на sama.ru Thu Sep 25 03:40:43 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> и наверняка можно без установки доп. модулей обойтись. GB> почему? у меня все скриптики, которые сидят на кроне пишуть, сколько GB> они выполнялись... когда волосы дыбом встают от постоянно растущего GB> времени выполнения - приходит черед оптимизации ;))) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. GB> вот здесь не понял - разобъясни... а еще мона -d:DProf и невые... (ой не надо ногами) :) Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From hrg на sama.ru Thu Sep 25 03:48:40 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: <20030925121554.76ec719e.lavei@mail.ru> Message-ID: Greg Belenky -> "Re: потребление памяти." : >> tie работает крайне медлленах... сам же читал :)) GB> Ну не медленно он работает... просто использование замещается GB> методами объекта притайенного класса. Зато код легче читается ;) Мля... спутал с оверлоадом. Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From combr на vesna.ru Thu Sep 25 03:43:25 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= References: Message-ID: Greg Belenky писал: >> Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс >> обработки лога (в строках/сек)? > выносишь обработку одной строки в процедуру. Создаешь тестовый массив из > нескольких строк лога и... > use Benchmark; а почему не : $t0 = new Benchmark; # ... your code here ... $t1 = new Benchmark; $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n"; ? это проще вставить в готовый скрипт ;) > почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они > выполнялись... И у меня будут, раз этот Benchmark входит в поставку ;) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. > вот здесь не понял - разобъясни... perl -e 'print time;' выдает время с точностью 1 секунда - а то я хотел уже было просто time() использовать. Сквид, конечно, использует свою процедуру вычисления текущего времени ;) -- Mike From greg на webzavod.ru Thu Sep 25 03:58:55 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= =?iso-8859-1?q?=CD=C1=CE=D3=C1?= References: Message-ID: > а почему не : > ? это проще вставить в готовый скрипт ;) ну.. я использую Бенчмарк для того, чтобы выяснить, какая программная конструкция работает быстрее. обычно это маленькие кусочки кода и использую я cmpthese... > И у меня будут, раз этот Benchmark входит в поставку ;) мне не больно понравилось, в каком виде это все выдается... Time::HiRes ловчее ;) например: use strict; use Benchmark; use Time::HiRes; my $t1 = Benchmark->new(); my $h1 = time(); sleep(5); my $i = 1; $i++ for (1...100_000); my $h2 = time(); my $t2 = Benchmark->new(); print timestr(timediff($t2, $t1), 'auto', '.05f'), "\n"; printf "%.5f\n", $h2 - $h1; __END__ From greg на webzavod.ru Thu Sep 25 04:14:05 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= =?iso-8859-1?q?=CD=C1=CE=D3=C1?= References: Message-ID: > а еще мона -d:DProf и невые... (ой не надо ногами) :) а еже ли никаких процедур в коде нету? окромя, конечно CORE:: что он покажет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 04:30:36 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> а еще мона -d:DProf и невые... (ой не надо ногами) :) GB> а еже ли никаких процедур в коде нету? окромя, конечно CORE:: GB> что он покажет? Честна затраченное время на выполнение основного. :)) Yury Kopyl aka hrg | http://id.totem.ru | "бысто сп..ил и ушел - называется нашел..." From lavei на mail.ru Thu Sep 25 04:32:18 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: <20030925121554.76ec719e.lavei@mail.ru> <20030925124908.7dbda1f3.lavei@mail.ru> Message-ID: <20030925143218.332dafde.lavei@mail.ru> Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB> и в чью пользу? db_file. GB> м.б. архитектура приложений различная была? Да, немного отличалась. в мускульной табличке по ключу было неск значений, а в db hash одна большая стринга;-) ну и соотв код был не много по другоум построен. Данил From greg на webzavod.ru Thu Sep 25 04:35:06 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925121554.76ec719e.lavei@mail.ru> <20030925124908.7dbda1f3.lavei@mail.ru> <20030925143218.332dafde.lavei@mail.ru> Message-ID: > GB> и в чью пользу? > db_file. ни верю! -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 04:43:37 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: <20030925121554.76ec719e.lavei@mail.ru> <20030925124908.7dbda1f3.lavei@mail.ru> <20030925143218.332dafde.lavei@mail.ru> Message-ID: LaVei -> "Re: потребление памяти." : L> Здраствуйте, "Greg Belenky" ! L> в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB>> и в чью пользу? L> db_file. GB>> м.б. архитектура приложений различная была? L> Да, немного отличалась. L> в мускульной табличке по ключу было неск значений, а в db hash одна L> большая стринга;-) L> ну и соотв код был не много по другоум построен. а индексы юзал? а фулл текс серч? :) Yury Kopyl aka hrg | http://id.totem.ru | "мы не пьем - мы лечимся..." From lavei на mail.ru Thu Sep 25 04:49:02 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: <20030925121554.76ec719e.lavei@mail.ru> <20030925124908.7dbda1f3.lavei@mail.ru> <20030925143218.332dafde.lavei@mail.ru> Message-ID: <20030925144902.0eff6794.lavei@mail.ru> Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 14:35:06 +0500, Вы написали: GB> ни верю! Мамой клянус!;-) Если будет время я попробую воссоздать ситуацию и сделать бенчмарки..(МОЖЕТ с порядком я и погорячился;-) но разницу я думаю будет видна. Данил From lavei на mail.ru Thu Sep 25 04:52:23 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: <20030925121554.76ec719e.lavei@mail.ru> <20030925124908.7dbda1f3.lavei@mail.ru> <20030925143218.332dafde.lavei@mail.ru> Message-ID: <20030925145223.002f33aa.lavei@mail.ru> Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 14:43:37 +0500, Вы написали: YK> а индексы юзал? Угу. YK>а фулл текс серч? :) Э... это самое... я его пытался как раз реализовать;-) прикинь как раньше(3 года назад) люди мучались?;-)) Данил From greg на webzavod.ru Thu Sep 25 05:23:18 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925143218.332dafde.lavei@mail.ru> <20030925145223.002f33aa.lavei@mail.ru> <20030925101914.GC2397@least.beast> Message-ID: > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > хинт: евфрат --- оффтопик. Я понимаю, что краткость - сестра таланта... но не в этом случае. Дообъясни? Какую мысль донести-то хотел? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 06:01:42 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: <20030925143218.332dafde.lavei@mail.ru> <20030925145223.002f33aa.lavei@mail.ru> <20030925101914.GC2397@least.beast> Message-ID: Greg Belenky -> "Re: потребление памяти." : >> а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? >> хинт: евфрат --- оффтопик. GB> Я понимаю, что краткость - сестра таланта... но не в этом случае. GB> Дообъясни? Какую мысль донести-то хотел? поиск по контексут документа. Вроде такое было в MS SQL Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Пошло все на.... ] From combr на vesna.ru Thu Sep 25 05:59:54 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= Message-ID: Сегодня день вопросов, не так ли? ;) поскольку все равно никто не пишет сюда, задам и третий вопрос ;) @a=("undef"); #@a=(1); if (defined @a) { print "aaa!"; }; печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... вопрос возник в связи с таким куском: usr Net::Nslookup; @ns=nslookup(...) в цикле оно может возвратить список (вероятно, из одного элемента, но иногда и больше), или вообще ничего не возвратить. если дальше делать, допустим, split на каждое значение из @ns, то если не было ничего возвращено, то идет ругань на использование неинициализированных значений. обычно определить, инициализировано ли значение, или нет, можно с помощью if (defined ..), но на переменные действует, а на списки нет. что бы сделать? -- Mike From greg на webzavod.ru Thu Sep 25 06:15:29 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= =?iso-8859-1?q?=D3=D0=C9=D3=CB=C1_=D3=D2=C1=DA=D5?= References: Message-ID: @a в скалярном контексте интерпретируется как число элементов массива. т.к. число элементов не может быть неопределенным числом, зато может быть нулевым, то выражение defined @a _всегда_ истино. > @a=("undef"); > #@a=(1); эти 2 присваивания - примерно из одной оперы... строка "undef" это вполне определенное значение. > if (defined @a) { print "aaa!"; }; > печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... см. в начале ответа. > usr Net::Nslookup; > @ns=nslookup(...) > > в цикле оно может возвратить список (вероятно, из одного элемента, но иногда > и больше), или вообще ничего не возвратить. > если дальше делать, допустим, split на каждое значение из @ns, то если не > было ничего возвращено, то идет ругань на использование > неинициализированных значений. foreach my $name (@ns) { next unless defined $name; ... } -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Thu Sep 25 06:23:46 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Mike Lykov -> "undef насчет всего списка сразу" : ML> Сегодня день вопросов, не так ли? ;) ML> поскольку все равно никто не пишет сюда, задам и третий вопрос ;) ML> @a=("undef"); ML> #@a=(1); ML> if (defined @a) { print "aaa!"; }; ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ML> .... ML> вопрос возник в связи с таким куском: ML> usr Net::Nslookup; ML> @ns=nslookup(...) ML> в цикле оно может возвратить список (вероятно, из одного элемента, ML> но иногда и больше), или вообще ничего не возвратить. ML> если дальше делать, допустим, split на каждое значение из @ns, то ML> если не было ничего возвращено, то идет ругань на использование ML> неинициализированных значений. don't ebi mosk! :) usr Net::Nslookup; my @ns=nslookup(...) my @data=split (/?/,@ns) if (@ns); ML> обычно определить, инициализировано ли значение, или нет, можно с ML> помощью if (defined ..), но на переменные действует, а на списки ML> нет. что бы сделать? Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From greg на webzavod.ru Thu Sep 25 06:16:27 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925143218.332dafde.lavei@mail.ru> <20030925145223.002f33aa.lavei@mail.ru> <20030925101914.GC2397@least.beast> <20030925111325.GA24517@least.beast> Message-ID: > GB> > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > > контекст лови: фулл текст сёрч. а к Perl какое отношенье имеет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Thu Sep 25 06:19:28 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= =?iso-8859-1?q?=D3=D0=C9=D3=CB=C1_=D3=D2=C1=DA=D5?= References: Message-ID: > my @data=split (/?/,@ns) if (@ns); /?/ вот этим - ты что хотел сказать? ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Thu Sep 25 06:21:41 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:07 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= =?iso-8859-1?q?=D1=D4=C9=2E?= References: <20030925143218.332dafde.lavei@mail.ru> <20030925145223.002f33aa.lavei@mail.ru> <20030925101914.GC2397@least.beast> <20030925111325.GA24517@least.beast> <20030925111655.GC24517@least.beast> Message-ID: > а что --- пёрл этого НЕ МОЖЕТ? под виндами - только при наличии соответсвующих оле-автомейшенов... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Thu Sep 25 06:23:56 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: References: Message-ID: <20030925162356.47da2758.lavei@mail.ru> Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 16:15:29 +0500, Вы написали: GB> @a в скалярном контексте интерпретируется как число элементов массива. т.к. GB> число элементов не может быть неопределенным числом, зато может быть GB> нулевым, то выражение defined @a _всегда_ истино. не всегда my @a =(); print "Ok" if defined @a; ничего не выдаст. ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) . надо делать вот так undef@a; undef это функция такая ваащето;-) perldoc -f undef Данил From combr на vesna.ru Thu Sep 25 06:25:54 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:07 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: <20030925111513.GB24517@least.beast> Message-ID: Peter Vereshagin писал: > Thu, Sep 25, 2003 at 03:59:54PM +0500 Mike Lykov > ML> @a=("undef"); > @a=undef; см. внимательнее вопрос - такой вариант был. (печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ....) -- Mike From lavei на mail.ru Thu Sep 25 06:25:47 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:07 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925111513.GB24517@least.beast> References: <20030925111513.GB24517@least.beast> Message-ID: <20030925162547.26ca51ad.lavei@mail.ru> Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:16:42 +0000 (UTC), Вы написали: PV> @a=undef; присвоить массиву a значение возвращаемое функцией undef??;-) Данил From combr на vesna.ru Thu Sep 25 06:41:06 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:08 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Greg Belenky писал: > @a в скалярном контексте интерпретируется как число элементов массива. > т.к. число элементов не может быть неопределенным числом, зато может быть > нулевым, то выражение defined @a _всегда_ истино. вопщим, как обычно - получилось тупо от нечтения документации.. ;)) -- Mike From hrg на sama.ru Thu Sep 25 06:42:52 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to on Thu, 25 Sep 2003 16:30:07 +0500: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, начиная с L> левой её части. Параметр, определяющий ширину результирующего L> прямоугольника, гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. L> Текст "A simple, easy to remember system for encoding integer L> amounts can be very useful. For example, dealers at flea markets put L> the information about an item on a card that they let potential L> buyers see. They find it advantageous to encode the amount they L> originally paid for the item on the card.\nA good system is to use a L> substitution code, in which each digit is encoded by a letter. An L> easy to remember 10-letter word or phrase, the key, is chosen. Every L> '1' in the value is replaced by the first letter of the key, every L> '2' is replaced by the second letter of the key, and so on. Every '0' L> is replaced by the last letter of the key. Letters that do not L> appear in the key can be inserted anywhere without affecting the L> value represented by the code.. This helps to make the resulting L> code much harder to break (without knowing the key).\nCreate a class L> Substitute that contains the method getValue that is given the L> Strings key and code as input and that returns the decoded value." http://search.cpan.org/search?query=wrap&mode=all - это? :)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Thu Sep 25 06:43:33 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925113515.GB25088@least.beast> References: <20030925111513.GB24517@least.beast> <20030925162547.26ca51ad.lavei@mail.ru> <20030925113515.GB25088@least.beast> Message-ID: <20030925164333.0e278c98.lavei@mail.ru> Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:36:44 +0000 (UTC), Вы написали: PV> это значение не имеет права быть рассмотренным в контексте массива? Имеет;-) У нас равноправие.;-) Данил From hrg на sama.ru Thu Sep 25 06:54:09 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Greg Belenky -> "Re: undef насчет всего списка сразу" : >> my @data=split (/?/,@ns) if (@ns); GB> /?/ GB> вот этим - ты что хотел сказать? ;) типа проехали (в оригинале - выражение для сплита) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From greg на webzavod.ru Thu Sep 25 06:53:16 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= =?iso-8859-1?q?=D3=D0=C9=D3=CB=C1_=D3=D2=C1=DA=D5?= References: <20030925162356.47da2758.lavei@mail.ru> Message-ID: > print "Ok" if defined @a; упс... прогнал... позор мне... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From marchenko на zr.ru Thu Sep 25 07:12:51 2003 From: marchenko на zr.ru (Jury Marchenko) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Так, на скорую, вот вариант. Возмодна оптимизация. Длина задаётся $l. #!/usr/bin/perl use strict; my $text = "A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my @words = split(/ |\n/g, $text); my $l = 45; for (my $i=0;$i<=$#words;$i++) { my $string = $words[$i]; while (length($string)<$l) { $i++; if (!$words[$i]) { $string = &add_dot($string, $l); } if ((length($string) + length(" " . $words[$i]))<=$l) { $string.=" $words[$i]"; } else { $i--; $string = &add_dot($string, $l); last; } } print "$string\n"; } sub add_dot { my ($string, $l) = @_; while (length ($string) < $l) { $string = " $string"; } return $string; } С уважением, Марченко Юрий Иванович, редактор отдела оперативной информации, ЗАО КЖИ "За Рулём" URL: http://www.zr.ru ; http://www.za.ru ; E-mail: marchenko@zr.ru Телефоны: +7 (095) 208-00-70 +7 (926) 203-52-90 ----- Original Message ----- From: "LaVei" To: Sent: Thursday, September 25, 2003 15:30 Subject: Трава перл...фсем курить;-) > Как решить в одну строку это, я себе пока не представляю... > поэтому если участники не против то критерием будет Benchmark?;-) > > Задача : > Написать программу на perl выводящую текст в виде > прямоугольника с > заданной шириной. > До заданной ширины строку следует дополнять пробелами, > начиная с левой её > части. Параметр, определяющий ширину результирующего > прямоугольника, > гарантированно больше, чем самое длинное слово, > встречающееся в тексте. > > Текст > "A simple, easy to remember system for encoding integer > amounts can be very > useful. For example, dealers at flea markets put the > information about an item > on a card that they let potential buyers see. They find it > advantageous to > encode the amount they originally paid for the item on the > card.\nA good system > is to use a substitution code, in which each digit is > encoded by a letter. An > easy to remember 10-letter word or phrase, the key, is > chosen. Every '1' in the > value is replaced by the first letter of the key, every > '2' is replaced by the > second letter of the key, and so on. Every '0' is replaced > by the last letter of > the key. Letters that do not appear in the key can be > inserted anywhere without > affecting the value represented by the code.. This helps > to make the resulting > code much harder to break (without knowing the > key).\nCreate a class Substitute > that contains the method getValue that is given the > Strings key and code as > input and that returns the decoded value." > > Данил > From hrg на sama.ru Thu Sep 25 07:31:13 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <20030925115134.GE25088@least.beast> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 11:42:52AM +0000 "Yury Kopyl" YKL>>> Написать программу на perl выводящую текст в виде прямоугольника YKL>>> с заданной шириной. YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) PV> форматы --- причмокивают? Нет. Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From e_skachkov на diamond.ru Thu Sep 25 07:33:06 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value.`; my $point = $ARGV[0]; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; while ( $text =~ s/^(.{1,$point})[ |.](.*)$/$2/ ) { my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Ето мой скромный вариантик С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From hrg на sama.ru Thu Sep 25 07:58:07 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 16:49:42 +0500: L>>> Как решить в одну строку это, я себе пока не представляю... L>>> поэтому если участники не против то критерием будет Benchmark?;-) YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) L> Чур CPAN непользоваться!!!:-)) "Как же так, Федор Михайлович"(С)Сеня Лютый my $width=40; my $text="A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my $format_str='^'.'>'x ($width-1)."~~\n"; foreach my $text (split (/\n/,$text)){ $text=~s/^\s+//; $text=~s/\s+$//; formline ($format_str,$text); print $^A; }; With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Thu Sep 25 08:07:12 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> <20030925115134.GE25088@least.beast> <20030925122442.GJ25088@least.beast> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 05:31:13PM +0500 Yury Kopyl YKYKL>>>>> Написать программу на perl выводящую текст в виде YKYKL>>>>> прямоугольника с заданной шириной. YKYK>>>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) YKPV>>> форматы --- причмокивают? YK>> Нет. PV> а чем хуже? Хз...надо пробовать Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From hrg на sama.ru Thu Sep 25 08:09:21 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: <20030925143218.332dafde.lavei@mail.ru> <20030925145223.002f33aa.lavei@mail.ru> <20030925101914.GC2397@least.beast> <20030925122602.GK25088@least.beast> Message-ID: Peter Vereshagin -> "Re: потребление памяти." : PV> Thu, Sep 25, 2003 at 04:01:42PM +0500 Yury Kopyl YK>> поиск по контексут документа. Вроде такое было в MS SQL PV> ого. PV> а подробнее? Не помню. Чесна. Просто что-то подобное прообегало по fido7.ru.perl Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From hrg на sama.ru Thu Sep 25 23:18:13 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:20:52 +0500: YK>> foreach my $text (split (/\n/,$text)){ L> А цикл для чего? Для абзацев. т.е если в строке есть символы переноса, то строка начнется заново. With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Thu Sep 25 23:28:46 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:26:59 +0500: L> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L> 406504.07/s (n=500000) L> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L> 236966.82/s (n=500000) L> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L> 568181.82/s (n=500000) L> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L> 242718.45/s (n=500000) L> Rate LaVei hrg Evgen Yury L> LaVei 236967/s -- -2% -42% -58% L> hrg 242718/s 2% -- -40% -57% L> Evgen 406504/s 72% 67% -- -28% L> Yury 568182/s 140% 134% 40% -- Кстате, если интересует быстродействие,а не меньшее кол-во строк мона сделать еще так: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr{ s/^\s+//}; my $del_after =qr{ s/\s+$//}; my $buf; foreach my $text (split (/\n/,$text)){ $text=~$del_before; $text=~$del_after; formline ($format_str,$text); $buf.=$^A; }; print $buf; И еще - ты сравнивал при одинаковой ширине при разбиении для всех алгоритмов? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Thu Sep 25 23:52:12 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=F4=D2=C1=D7=C1_=D0=C5=D2=CC=2E=2E=2E=C6=D3?= =?iso-8859-1?q?=C5=CD_=CB=D5=D2=C9=D4=D8=3B-=29?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: sub greg { my ($width, $str) = @_; my $i = 0; my @wrap = (); foreach (split /\s+/, $str) { unless (length( $wrap[$i] ) + length() + 1 <= $width) { while (length( $wrap[$i] ) < $width) { if ($wrap[$i] =~ /(\S)(\s)/sg) { substr($wrap[$i], (my $p = pos( $wrap[$i] ))-1, 1) = $2x2; pos( $wrap[$i] ) = $p; } else { pos( $wrap[$i] ) = 0; } } $i++; } $wrap[$i] .= ($wrap[$i] && ' ') . $_; } return join "\n", @wrap; } з.ы. ну... не знаю, как Данила и что тестил и сравнивал - у меня прально работал только вариант Жени Скачкова (прально перевел с англицкого?) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Fri Sep 26 00:01:11 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309251202.h8PC2493019909@gateway.vdcom.ru> Message-ID: Hello, Yury! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 09:36:28 +0500: YK> Hello, LaVei! YK> You wrote to "Samara (Russia) Perl Mongers" YK> on Thu, 25 Sep 2003 18:26:59 +0500: L>> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L>> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L>> 406504.07/s (n=500000) L>> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L>> 236966.82/s (n=500000) L>> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L>> 568181.82/s (n=500000) L>> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L>> 242718.45/s (n=500000) L>> Rate LaVei hrg Evgen Yury L>> LaVei 236967/s -- -2% -42% -58% L>> hrg 242718/s 2% -- -40% -57% L>> Evgen 406504/s 72% 67% -- -28% L>> Yury 568182/s 140% 134% 40% -- YK> Кстате, если интересует быстродействие,а не меньшее кол-во строк YK> мона сделать еще так: YK> my $format_str='^'.'>'x ($width-1)."~~\n"; YK> my $del_before=qr{ s/^\s+//}; YK> my $del_after =qr{ s/\s+$//}; YK> my $buf; YK> foreach my $text (split (/\n/,$text)){ YK> $text=~$del_before; YK> $text=~$del_after; YK> formline ($format_str,$text); YK> $buf.=$^A; YK> }; YK> print $buf; YK> И еще - ты сравнивал при одинаковой ширине при разбиении для всех YK> алгоритмов? Поправка к последнему варианту: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr /^\s+/o; my $del_after =qr /\s+$/o; my $buf; foreach my $text (split (/\n/,$text)){ $text=~s/$del_before//; $text=~s/$del_after//; formline ($format_str,$text); $buf.=$^A; }; print $buf; YK> With best regards, Yury Kopyl. E-mail: hrg@sama.ru With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Fri Sep 26 00:13:11 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF=C7=C9_?= =?iso-8859-1?q?=D0=CF=CC=D5=DE=C9=CC=C9=D3=D8_=D5_=CD=C5=CE=D1=2E?= =?iso-8859-1?q?=2E=2E?= Message-ID: Текст идентичный. Присланный Данилом. Для чичтоты эксперимента возвращается функцией, чтобы тестируемые не могли на него повлиять. Ширина - 50 символов. Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, marchenko... eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ 878.73/s (n=5000) greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ 803.86/s (n=5000) hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ 3246.75/s (n=5000) lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ 3246.75/s (n=5000) marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ 464.25/s (n=5000) Rate marchenko greg eugene hrg lavei marchenko 464/s -- -42% -47% -86% -86% greg 804/s 73% -- -9% -75% -75% eugene 879/s 89% 9% -- -73% -73% hrg 3247/s 599% 304% 269% -- -0% lavei 3247/s 599% 304% 269% 0% -- А теперь посмотрим, что же на самом деле выдают наши алгоритмы... (следующие 2 строки я нарисовал прям в постинге, чтобы можно было оценить попадание в 50-символьную границу... 10 20 30 40 50 123456789|123456789|123456789|123456789|123456789| -------------------------------------------------- lavei--------------------------------------------- A simple, easy to remember system for encoding integer amounts can be veryuseful. For example, dealers at flea markets put the information about an itemon a card that they let potential buyers see. They find it advantageous toencode the amount they originally paid for the item on the card.A good systemis to use a substitution code, in which each digit is encoded by a letter. Aneasy to remember 10-letter word or phrase, the key, is chosen. Every '1' in thevalue is replaced by the first letter of the key, every '2' is replaced by thesecond letter of the key, and so on. Every '0' is replaced by the last letter ofthe key. Letters that do not appear in the key can be inserted anywhere withoutaffecting the value represented by the code.. This helps to make the resultingcode much harder to break (without knowing the key).Create a class Substitutethat contains the method getValue that is given the Strings key and code asinput and that returns the decoded hrg----------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. greg---------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. eugene-------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value marchenko----------------------------------------- Asimple,easytoremembersystemforencodinginteger amountscanbeveryuseful.Forexample,dealersatflea marketsputthe informationaboutanitemonacardthattheyletpotential buyerssee.Theyfindit advantageoustoencodetheamounttheyoriginallypaid fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst letterofthekey,every '2'isreplacedbythesecondletterofthekey,andsoon. Every'0'isreplaced bythelastletterofthekey.Lettersthatdonotappearin thekeycanbe insertedanywherewithoutaffectingthevalue representedbythecode..Thishelps tomaketheresultingcodemuchhardertobreak(without knowingthe key).CreateaclassSubstitutethatcontainsthemethod getValuethatisgiventhe Stringskeyandcodeasinputandthatreturnsthedecoded value. -------------------------------------------------- begin 666 wrap.pl M=7-E('-T2!L970@<&]T96YT:6%L(&)U>65R2!P86ED(&9O2P@:7,@"F-H;W-E;BX@179E2!T:&4@9FER2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,@2DN7&Y#S$L)'!O:6YT?2D@+V2 H)'=I9'1H+" D=&5X="D@/2! 7SL* M("!M>2 D9F]R;6%T7W-T" H)'=I9'1H+3$I+B)^?EQN(CL* M("!M>2 D9&5L7V)E9F]R93UQ7',K+R]].PH@(&UY("1D96Q?869T M97(@/7%R>R!S+UQS*R0O+WT["B @;7D@)&)U9CL*("!F;W)E86-H(&UY("1T M97AT("AS<&QI=" H+UQN+RPD=&5X="DI>PH@("!L;V-A;" D7D$["B @("1T M97AT/7XD9&5L7V)E9F]R93L*(" @)'1E>'0]?B1D96Q?869T97(["B @(&9O M03L*("!] M"B @2 H)'=I9'1H+" D M2! =W)A<" ]("@I.PH@(&9O M2 D<" ]('!OPH@(" @(" @(" @<&]S*" D=W)A<%LD M:5T@*2 ](# ["B @(" @(" @?0H@(" @("!]("1I*RL["B @("!]("1W'0@/7X@2! 2 DR DR DR!M87)C:&5N:V\H(#4P+"!S='(@*2!]+ I] M*3L*"G!R:6YT(")<;EQN7&XB+" G+2<@>" U,"P@(EQN(CL*"G!R:6YT(")< M;FQA=F5I(B N("" H M-3 M;&5N9W1H*"=H" H-3 M;&5N9W1H*"=E=6=E;F4G*2DL(")<;B(["G!R:6YT(&5U M9V5N92@U,"P@" H M-3 M;&5N9W1H*"=M87)C:&5N:V\G*2DL(")<;B(["G!R:6YT(&UA" U,"P@(EQN(CL*"E]? &14Y$7U\* ` end begin 666 results.dat M0F5N8VAM87)K.B!T:6UI;F<@-3 P,"!I=&5R871I;VYS(&]F(&5U9V5N92P@ M9W)E9RP@:')G+"!L879E:2P@;6%R8VAE;FMO+BXN"B @("!E=6=E;F4Z(" V M('=A;&QC;&]C:R!S96-S("@@-2XV-2!U7,@/2 @-2XV M.2!#4%4I($ @.#75S969U;"X@1F]R(&5X86UP;&4L"B @9&5A M;&5R2!F:6YD(&ET(&%D=F%N=&%G96]U7-T96UI2!A(&QE='1E2!T:&4*("!F:7)S="!L971T97(@;V8@=&AE(&ME>2P@979E0H@(" @ M=&AE(&-O9&4N+B!4:&ES(&AE;'!S('1O(&UA:V4@=&AE(')E2!A;F0*(" @(" @(" @(&-O9&4@87-I;G!U M="!A;F0@=&AA="!R971U2!T;R!R96UE;6)E7-T96T@9F]R(&5N8V]D:6YG"B @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&EN=&5G M97(*(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&%M;W5N=',@8V%N M(&)E('9E&%M<&QE+"!D96%L97)S(&%T(&9L M96$@;6%R:V5T7-T96T*:7,@=&\@=7-E(&$@2!T;R!R96UE;6)E2 G M,2<@:6X@=&AE"B!V86QU92!I2!T:&4@9FER2!T:&4*('-E8V]N9"!L971T97(@;V8@ M=&AE(&ME>2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,*(" @(" @(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @("!R97!L86-E9 H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(&)Y('1H92!L87-T(&QE='1E2!L970@<&]T M96YT:6%L(&)U>65R2 @=&AE("!F:7)S=" @;&5T=&5R("!O9B @=&AE("!K97DL(&5V M97)Y("7=H97)E('=I=&AO=70@869F96-T:6YG('1H92!V86QU90IR97!R97-E;G1E M9" @8GD@('1H92!C;V1E+BX@5&AI2DN($-R96%T92!A(&-L87-S(%-U8G-T:71U M=&4@=&AA= IC;VYT86EN2!A;F0@8V]D92!A2 @9FEN9" @:70@ M(&%D=F%N=&%G96]U2 @ M;W)I9VEN86QL>2 @<&%I9" @9F]R('1H92!I=&5M(&]N('1H90IC87)D+B @ M02!G;V]D('-Y2 @=&AE M("!S96-O;F0@;&5T=&5R(&]F('1H92!K97DL(&%N9"!S;PIO;BX@($5V97)Y M(" G,"<@(&ES("!R97!L86-E9"!B>2!T:&4@;&%S="!L971T97(@;V8*=&AE M("!K97DN($QE='1E6QE='!O=&5N=&EA; H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @("!B=7EE69I;F1I= H@ M("!A9'9A;G1A9V5O=7-T;V5N8V]D971H96%M;W5N='1H97EO7-T96UI6%L971T97(N06YE M87-Y=&]R96UE;6)E2QI22QE=F5R M>0H@(" G,B=I2QA M;F1S;V]N+@H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @($5V97)Y M)S G:7-R97!L86-E9 H@(&)Y=&AE;&%S=&QE='1E71H96-O9&4N+E1H:7-H96QP2DN0W)E871E86-L87-S4W5B Message-ID: Greg Belenky -> "А вот, какие итоги получились у меня..." : GB> Текст идентичный. Присланный Данилом. Для чичтоты эксперимента GB> возвращается функцией, чтобы тестируемые не могли на него повлиять. GB> Ширина - 50 символов. GB> Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, GB> marchenko... GB> eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ GB> 878.73/s (n=5000) GB> greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ GB> 803.86/s (n=5000) GB> hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ GB> 464.25/s (n=5000) GB> Rate marchenko greg eugene hrg lavei GB> marchenko 464/s -- -42% -47% -86% -86% GB> greg 804/s 73% -- -9% -75% -75% GB> eugene 879/s 89% 9% -- -73% -73% GB> hrg 3247/s 599% 304% 269% -- -0% GB> lavei 3247/s 599% 304% 269% 0% -- GB> А теперь посмотрим, что же на самом деле выдают наши алгоритмы... GB> (следующие 2 строки я нарисовал прям в постинге, чтобы можно было GB> оценить попадание в 50-символьную границу... GB> 10 20 30 40 50 GB> 123456789|123456789|123456789|123456789|123456789| GB> -------------------------------------------------- GB> lavei--------------------------------------------- GB> A simple, easy to remember system for encoding integer GB> amounts can be veryuseful. For example, dealers at flea markets GB> put the information about an itemon a card that they let GB> potential buyers see. They find it advantageous toencode the amount GB> they originally paid for the item on the card.A good systemis to GB> use a substitution code, in which each digit is encoded by a GB> letter. Aneasy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in thevalue is replaced by the first GB> letter of the key, every '2' is replaced by thesecond letter of GB> the key, and so on. Every '0' GB> is replaced by the last letter ofthe key. Letters that do GB> not appear in the key can be inserted anywhere withoutaffecting the GB> value represented by the code.. This helps to make the GB> resultingcode much harder to break (without knowing the GB> key).Create a class Substitutethat contains the method getValue GB> that is given the Strings key and code asinput and that GB> returns the decoded GB> hrg----------------------------------------------- GB> A simple, easy to remember system for encoding GB> integer amounts can be very useful. GB> For example, dealers at flea markets put GB> the information about an item on a card GB> that they let potential buyers see. They GB> find it advantageous to GB> encode the amount they originally paid for the GB> item on the card. GB> A good system is to use a GB> substitution code, in which each digit GB> is encoded by a letter. An easy to GB> remember 10-letter word or phrase, the GB> key, is chosen. Every '1' in the value is GB> replaced by the first letter of the key, GB> every '2' is replaced by the second GB> letter of the key, and so on. Every '0' is GB> replaced by the last letter of the key. GB> Letters that do not appear in the key can GB> be inserted anywhere without affecting the GB> value represented by the code.. This GB> helps to make the resulting code GB> much harder to break (without knowing the GB> key). GB> Create a class Substitute that contains GB> the method getValue that is given GB> the GB> Strings key and code as input GB> and that returns the decoded value. GB> greg---------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential buyers GB> see. They find it advantageous to encode the amount they GB> originally paid for the item on the card. A good system is to use a GB> substitution code, in which each digit is encoded by a letter. GB> An easy to remember 10-letter word or phrase, the key, is GB> chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that contains GB> the method getValue that is given the GB> Strings key and code as input and that returns the decoded value. GB> eugene-------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential GB> buyers see. They find it advantageous to encode the amount GB> they originally paid for the item on the card. A good system is GB> to use a substitution code, in which each digit is encoded by a GB> letter. An easy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that GB> contains the method getValue that is given the GB> Strings key and code as input and that returns the decoded GB> value marchenko----------------------------------------- GB> Asimple,easytoremembersystemforencodinginteger GB> amountscanbeveryuseful.Forexample,dealersatflea GB> marketsputthe informationaboutanitemonacardthattheyletpotential GB> buyerssee.Theyfindit GB> advantageoustoencodetheamounttheyoriginallypaid GB> fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich GB> eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor GB> phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst GB> letterofthekey,every GB> '2'isreplacedbythesecondletterofthekey,andsoon. GB> Every'0'isreplaced GB> bythelastletterofthekey.Lettersthatdonotappearin GB> thekeycanbe insertedanywherewithoutaffectingthevalue GB> representedbythecode..Thishelps GB> tomaketheresultingcodemuchhardertobreak(without GB> knowingthe key).CreateaclassSubstitutethatcontainsthemethod GB> getValuethatisgiventhe GB> Stringskeyandcodeasinputandthatreturnsthedecoded GB> value. GB> -------------------------------------------------- Насчет правильности: Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. Поробуйте потестить на реальных текстах. Yury Kopyl aka hrg | http://id.totem.ru | "Сегодня с нами ты не пьешь, а завтра Родине изменишь!" From greg на webzavod.ru Fri Sep 26 00:28:54 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF?= =?iso-8859-1?q?=C7=C9_=D0=CF=CC=D5=DE=C9=CC=C9=D3=D8_=D5_=CD=C5=CE?= =?iso-8859-1?q?=D1=2E=2E=2E?= References: Message-ID: > Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее > они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. > Поробуйте потестить на реальных текстах. Тогда нужно было оговориться, что абзацы ограничены \n а не внутренними переводами строки. Тогда, в любом случае, необходим препроцессинг текста перед передачей его алгоритму... нет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Fri Sep 26 01:19:57 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INLV09PLycogXHcg1yD19OYtOA==?= In-Reply-To: <20030925141426.GN25088@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: <20030926111957.43575be6.lavei@mail.ru> Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 14:15:56 +0000 (UTC), Вы написали: PV> или хотя бы [a-zA-Z0-9] [А-Яа-я0-9] Данил From hrg на sama.ru Fri Sep 26 01:29:57 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg><200309251155.h8PBtv93019797@gateway.vdcom.ru><00c501c383e6$541b0700$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 10:48:52 +0500: L> PS а где можно почитать про форматы? L> perldoc -f formline слишком малоинформативен что то..;-( google :)) или пиши сюда, я одно время с ними очень хорошо с нимим (Афонина нет?) портахался With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Fri Sep 26 01:38:36 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= =?koi8-r?b?0S4uLg==?= References: Message-ID: Greg Belenky -> "Re: А вот, какие итоги получились у меня..." : >> Почти все алгоритмы не учитывают переносы строк в исходном тексте, >> вернее они просто заменяют их на пробелы, склеиваяя строку. Это не >> правильно. >> Поробуйте потестить на реальных текстах. GB> Тогда нужно было оговориться, что абзацы ограничены \n а не GB> внутренними переводами строки. Тогда, в любом случае, необходим GB> препроцессинг текста перед передачей его алгоритму... нет? Да. изначально задача была поставлена не совсем корректна. Препроцессинг нужен. Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From hrg на sama.ru Fri Sep 26 01:32:40 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L>> Как решить в одну строку это, я себе пока не представляю... L>> поэтому если участники не против то критерием будет Benchmark?;-) L>> Задача : L>> Написать программу на perl выводящую текст в виде прямоугольника с L>> заданной шириной. L>> До заданной ширины строку следует дополнять пробелами, начиная с L>> левой её части. Параметр, определяющий ширину результирующего L>> прямоугольника, гарантированно больше, чем самое длинное слово, L>> встречающееся в тексте. L> В связи с возникшей неразберихой я предлагаю немного L> подкорректировать задание. L> 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у L> Евгена только последний символ "." куда то пропал -надо вернуть;-) L> в этом плане единственно верные. т.е. симлпа добиваем пробелы? L> 2. Абзацы не считаем L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) хм.... вот изврат L> 4. модули с CPAN попрежнему не приветствуются:-)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Fri Sep 26 01:41:30 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L> L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) И еще: квадрат - это n строк х n столбцов или все-таки визуальный квадрат в текстовом режиме? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From combr на vesna.ru Fri Sep 26 01:50:50 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?y9LV1MHRINTSwdfB?= Message-ID: http://www.linux.org.ru/view-message.jsp?msgid=392747 -- Mike From greg на webzavod.ru Fri Sep 26 05:44:04 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= =?iso-8859-1?q?=CB=C5=D4=C1=2C?= References: <20030925141426.GN25088@least.beast> <20030926111957.43575be6.lavei@mail.ru> <20030926063220.GJ2882@least.beast> <20030926102638.GU2882@least.beast> Message-ID: Верещагин! Пиши понятнее, а то приходится догадываться, что ты до нас хотел донести... Договорились? > text=~s/^\\\\(.+)$/$1/g; х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? з.ы. для того, чтобы отрезать от строки 2 слеша спереди, необязательно пользоваться регулярными выраженьями: undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; з.з.ы. к тому же и работает в 2 раза быстрее регвыров... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Fri Sep 26 05:45:40 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= =?iso-8859-1?q?=CB=C5=D4=C1=2C?= References: <20030925141426.GN25088@least.beast> <20030926111957.43575be6.lavei@mail.ru> <20030926063220.GJ2882@least.beast> <20030926102638.GU2882@least.beast> Message-ID: > text=~s/^\\\\(.+)$/$1/g; и модификатор /g тут особого смысла не имеет, потому как в регвыре ты описываешь всю строку ^...$ -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Fri Sep 26 07:41:19 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDSz8TPzNbFzsnFIMLBzsvF1MEs?= In-Reply-To: <20030926123709.GX2882@least.beast> References: <20030925141426.GN25088@least.beast> <20030926111957.43575be6.lavei@mail.ru> <20030926063220.GJ2882@least.beast> <20030926102638.GU2882@least.beast> <20030926123709.GX2882@least.beast> Message-ID: <20030926174119.4c6b3aa2.lavei@mail.ru> Здраствуйте, Peter Vereshagin ! в Fri, 26 Sep 2003 12:38:40 +0000 (UTC), Вы написали: PV> Fri, Sep 26, 2003 at 03:44:04PM +0500 Greg Belenky GB>> пользоваться регулярными выраженьями: GB>> undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; PV> и что --- вот такое удаление карстовых пустот: PV> $text=~s/[\n\r]//gm; $text=~s/^\s+//; $text=~s/\s+$//; PV> будет работать быстрее через pos() и substr()? Проверь Benchmark'ом а вообще имхо будет. регекспы почти всегда сосут у substr Данил From e_skachkov на diamond.ru Fri Sep 26 08:06:03 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, decoded value.`; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; my $len = length$text; my $point = (int(sqrt($len))+1);#(c) Lavei. while ( $text =~ s/^(.{1,$point}[ |.])(.*)$/$2/ ) #Updated by Lavei { my $str = $1; #Updated by Lavei $str=~ s/ $//;#Updated by Lavei my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Вот и мое произведение тока с данилиным копирайтом С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From greg на webzavod.ru Sat Sep 27 01:47:41 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= =?iso-8859-1?q?=CB=C5=D4=C1=2C?= References: <20030925141426.GN25088@least.beast> <20030926111957.43575be6.lavei@mail.ru> <20030926063220.GJ2882@least.beast> <20030926102638.GU2882@least.beast> <20030926123319.GW2882@least.beast> Message-ID: > GB> х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? > вот и я тоже подумал, а где его смотреть? perldoc Devel::Peek -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:36:55 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:33:55 +0500, Вы написали: ML> у меня, правда, все my стоят вначале скрипта.. А смысл? my нужен для объявления переменных в области видимости. те если тебе $line нужен в области видимости цикла то и объявляй тама. после выхода и области цикла он должен быть убит, как тебе уже написали. в твоем случае ты продолжаешь таскать за собой эту переменную по всему коду... Данил From greg на webzavod.ru Sat Sep 27 18:36:56 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > дааа , блин, радикально ! > спасибо за предложения ;) > %CPU %MEM > 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl помогло? > > use strict; > > давно ;) > а как это относится к памяти? > у меня, правда, все my стоят вначале скрипта.. то, что эти переменные у тебя никогда за пределы видимости не выходят, и память, которую они занимают не отдается обратно. Когда ты так описываешь переменную внутри блока, то как только счетчик референсесов на нее обнуляется - перловый сборщик мусора должен по идее освоботить память, которая использовалась для нее. -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:37:10 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Mike Lykov -> "потребление памяти." : ML> Здравствуйте, перловые монгры! ;) ML> кто присоветует? ML> есть файл, большой. например, в нем 2 миллиона строк и 300 метров. ML> я читаю его таким образом: ML> while () { ML> или open(AAA, " foreach () { ML> и затем @line=split(' '); ML> конечно, оно работает, но при работе сразу занимает метров 400 ML> памяти. ML> соответственно, если файл - 300 метров, то в памяти процесс занимает ML> (около) ML> 550 метров. ML> меня это как-то не устраивает ;) ML> Предполагаю, что на каждую новую строку в памяти заводятся новые ML> копии $_ и @line, но как этого избежать? Скажи, что ты с этим строками делаешь? Обязательно хранить в мозгах все? Yury Kopyl aka hrg | http://id.totem.ru | "Если ты плюнешь на коллектив - коллектив утрется, но если коллектив плюнет на тебя - ты утонешь" (С)Баралгин From greg на webzavod.ru Sat Sep 27 18:37:11 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: perldoc -q memory -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:37:11 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: Кто тебя учил так квотить? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:37:11 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : GB> Кто тебя учил так квотить? Ацтань, зануда :)) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From greg на webzavod.ru Sat Sep 27 18:37:12 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > есть файл, большой. например, в нем 2 миллиона строк и 300 метров. логи? > open(AAA, " foreach () { foreach в данном случае не канает - по одной простой причине, что _ДО_ начала цикла весь файл считывается и создается _СПИСОК_ строк, по которым потом и организуется цикл. попробуй так: while (my $line = ) { my @line = split ' ', $line; ... } по идее после конца цикла переменные $line и @line должны высвыбождаться, т.к. они вышли за пределы блока. p.s. use strict; -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:37:12 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. > На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы нравятся... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:37:13 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > <писькамерялка> > Это 10-20Мб - большие объемы то?? > там же русским по белому написано ">10-20Mb" это значить "БОЛЬШЕ 10-20 Мегабайт.. а там и 100 и 300 и до гига недалеко... > tie работает крайне медлленах... сам же читал :)) Ну не медленно он работает... просто использование замещается методами объекта притайенного класса. Зато код легче читается ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:37:13 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > логи? конечно. сквида. > попробуй так: > while (my $line = ) { > my @line = split ' ', $line; > по идее после конца цикла переменные $line и @line должны высвыбождаться, > т.к. они вышли за пределы блока. дааа , блин, радикально ! спасибо за предложения ;) %CPU %MEM 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > p.s. > use strict; давно ;) а как это относится к памяти? у меня, правда, все my стоят вначале скрипта.. -- Mike From lavei на mail.ru Sat Sep 27 18:37:16 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 12:51:37 +0500, Вы написали: YK> <писькамерялка> YK> Это 10-20Мб - большие объемы то?? YK> Понеслась..;-)) Колись, Юр, какой у тебя объем;-))) Данил From greg на webzavod.ru Sat Sep 27 18:37:16 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > точные данные сейчас не впомню, но различие было на порядок это 100 пудов. и в чью пользу? м.б. архитектура приложений различная была? у меня - демон ;) которому нужно было вести несколько логов... > (прочитай PERFORMANCE для Tie:DBI.;-) да уж... жопа. беру свои слова взад. з.ы. сам ни разу не использовал ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:37:16 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Yury Kopyl писал: > tie работает крайне медлленах... сам же читал :)) блинблин. а кто работает не медленно? (и немедленно? ;) какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом как-то его кидать на диск для сохранения? ;) -- Mike From combr на vesna.ru Sat Sep 27 18:37:16 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= Message-ID: Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс обработки лога (в строках/сек)? Учитывая то, что скрипт может работать, например, 0.1 сек ;) использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да и наверняка можно без установки доп. модулей обойтись. например, в логе сквида есть тысячные доли секунды, а time() выдает только секунды. -- Mike From hrg на sama.ru Sat Sep 27 18:37:16 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> и наверняка можно без установки доп. модулей обойтись. GB> почему? у меня все скриптики, которые сидят на кроне пишуть, сколько GB> они выполнялись... когда волосы дыбом встают от постоянно растущего GB> времени выполнения - приходит черед оптимизации ;))) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. GB> вот здесь не понял - разобъясни... а еще мона -d:DProf и невые... (ой не надо ногами) :) Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From hrg на sama.ru Sat Sep 27 18:37:16 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> tie работает крайне медлленах... сам же читал :)) GB> Ну не медленно он работает... просто использование замещается GB> методами объекта притайенного класса. Зато код легче читается ;) Мля... спутал с оверлоадом. Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From combr на vesna.ru Sat Sep 27 18:37:19 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= References: Message-ID: Greg Belenky писал: >> Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс >> обработки лога (в строках/сек)? > выносишь обработку одной строки в процедуру. Создаешь тестовый массив из > нескольких строк лога и... > use Benchmark; а почему не : $t0 = new Benchmark; # ... your code here ... $t1 = new Benchmark; $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n"; ? это проще вставить в готовый скрипт ;) > почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они > выполнялись... И у меня будут, раз этот Benchmark входит в поставку ;) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. > вот здесь не понял - разобъясни... perl -e 'print time;' выдает время с точностью 1 секунда - а то я хотел уже было просто time() использовать. Сквид, конечно, использует свою процедуру вычисления текущего времени ;) -- Mike From greg на webzavod.ru Sat Sep 27 18:37:19 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти > (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом > как-то его кидать на диск для сохранения? ;) я так понимаю, что это статистика? ;) что есть "строки хеша". ключи, наверное? ну а что в качестве значений этих ключей? если результат настолько мал, то скорее всего наиболее оптимально хранить в памяти во время обработки, а потом сохранять. вариантов - море... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:37:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:08 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > а почему не : > ? это проще вставить в готовый скрипт ;) ну.. я использую Бенчмарк для того, чтобы выяснить, какая программная конструкция работает быстрее. обычно это маленькие кусочки кода и использую я cmpthese... > И у меня будут, раз этот Benchmark входит в поставку ;) мне не больно понравилось, в каком виде это все выдается... Time::HiRes ловчее ;) например: use strict; use Benchmark; use Time::HiRes; my $t1 = Benchmark->new(); my $h1 = time(); sleep(5); my $i = 1; $i++ for (1...100_000); my $h2 = time(); my $t2 = Benchmark->new(); print timestr(timediff($t2, $t1), 'auto', '.05f'), "\n"; printf "%.5f\n", $h2 - $h1; __END__ From hrg на sama.ru Sat Sep 27 18:37:21 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: LaVei -> "Re: потребление памяти." : L> Здраствуйте, "Greg Belenky" ! L> в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB>> и в чью пользу? L> db_file. GB>> м.б. архитектура приложений различная была? L> Да, немного отличалась. L> в мускульной табличке по ключу было неск значений, а в db hash одна L> большая стринга;-) L> ну и соотв код был не много по другоум построен. а индексы юзал? а фулл текс серч? :) Yury Kopyl aka hrg | http://id.totem.ru | "мы не пьем - мы лечимся..." From lavei на mail.ru Sat Sep 27 18:37:23 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:08 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 14:35:06 +0500, Вы написали: GB> ни верю! Мамой клянус!;-) Если будет время я попробую воссоздать ситуацию и сделать бенчмарки..(МОЖЕТ с порядком я и погорячился;-) но разницу я думаю будет видна. Данил From lavei на mail.ru Sat Sep 27 18:37:23 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 14:43:37 +0500, Вы написали: YK> а индексы юзал? Угу. YK>а фулл текс серч? :) Э... это самое... я его пытался как раз реализовать;-) прикинь как раньше(3 года назад) люди мучались?;-)) Данил From greg на webzavod.ru Sat Sep 27 18:37:25 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > хинт: евфрат --- оффтопик. Я понимаю, что краткость - сестра таланта... но не в этом случае. Дообъясни? Какую мысль донести-то хотел? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:37:25 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? >> хинт: евфрат --- оффтопик. GB> Я понимаю, что краткость - сестра таланта... но не в этом случае. GB> Дообъясни? Какую мысль донести-то хотел? поиск по контексут документа. Вроде такое было в MS SQL Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Пошло все на.... ] From hrg на sama.ru Sat Sep 27 18:37:26 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Mike Lykov -> "undef насчет всего списка сразу" : ML> Сегодня день вопросов, не так ли? ;) ML> поскольку все равно никто не пишет сюда, задам и третий вопрос ;) ML> @a=("undef"); ML> #@a=(1); ML> if (defined @a) { print "aaa!"; }; ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ML> .... ML> вопрос возник в связи с таким куском: ML> usr Net::Nslookup; ML> @ns=nslookup(...) ML> в цикле оно может возвратить список (вероятно, из одного элемента, ML> но иногда и больше), или вообще ничего не возвратить. ML> если дальше делать, допустим, split на каждое значение из @ns, то ML> если не было ничего возвращено, то идет ругань на использование ML> неинициализированных значений. don't ebi mosk! :) usr Net::Nslookup; my @ns=nslookup(...) my @data=split (/?/,@ns) if (@ns); ML> обычно определить, инициализировано ли значение, или нет, можно с ML> помощью if (defined ..), но на переменные действует, а на списки ML> нет. что бы сделать? Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From combr на vesna.ru Sat Sep 27 18:37:28 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Peter Vereshagin писал: > Thu, Sep 25, 2003 at 03:59:54PM +0500 Mike Lykov > ML> @a=("undef"); > @a=undef; см. внимательнее вопрос - такой вариант был. (печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ....) -- Mike From greg на webzavod.ru Sat Sep 27 18:37:29 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: @a в скалярном контексте интерпретируется как число элементов массива. т.к. число элементов не может быть неопределенным числом, зато может быть нулевым, то выражение defined @a _всегда_ истино. > @a=("undef"); > #@a=(1); эти 2 присваивания - примерно из одной оперы... строка "undef" это вполне определенное значение. > if (defined @a) { print "aaa!"; }; > печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... см. в начале ответа. > usr Net::Nslookup; > @ns=nslookup(...) > > в цикле оно может возвратить список (вероятно, из одного элемента, но иногда > и больше), или вообще ничего не возвратить. > если дальше делать, допустим, split на каждое значение из @ns, то если не > было ничего возвращено, то идет ругань на использование > неинициализированных значений. foreach my $name (@ns) { next unless defined $name; ... } -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:37:29 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= Message-ID: Сегодня день вопросов, не так ли? ;) поскольку все равно никто не пишет сюда, задам и третий вопрос ;) @a=("undef"); #@a=(1); if (defined @a) { print "aaa!"; }; печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... вопрос возник в связи с таким куском: usr Net::Nslookup; @ns=nslookup(...) в цикле оно может возвратить список (вероятно, из одного элемента, но иногда и больше), или вообще ничего не возвратить. если дальше делать, допустим, split на каждое значение из @ns, то если не было ничего возвращено, то идет ругань на использование неинициализированных значений. обычно определить, инициализировано ли значение, или нет, можно с помощью if (defined ..), но на переменные действует, а на списки нет. что бы сделать? -- Mike From hrg на sama.ru Sat Sep 27 18:37:33 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to on Thu, 25 Sep 2003 16:30:07 +0500: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, начиная с L> левой её части. Параметр, определяющий ширину результирующего L> прямоугольника, гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. L> Текст "A simple, easy to remember system for encoding integer L> amounts can be very useful. For example, dealers at flea markets put L> the information about an item on a card that they let potential L> buyers see. They find it advantageous to encode the amount they L> originally paid for the item on the card.\nA good system is to use a L> substitution code, in which each digit is encoded by a letter. An L> easy to remember 10-letter word or phrase, the key, is chosen. Every L> '1' in the value is replaced by the first letter of the key, every L> '2' is replaced by the second letter of the key, and so on. Every '0' L> is replaced by the last letter of the key. Letters that do not L> appear in the key can be inserted anywhere without affecting the L> value represented by the code.. This helps to make the resulting L> code much harder to break (without knowing the key).\nCreate a class L> Substitute that contains the method getValue that is given the L> Strings key and code as input and that returns the decoded value." http://search.cpan.org/search?query=wrap&mode=all - это? :)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Sat Sep 27 18:37:33 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: > print "Ok" if defined @a; упс... прогнал... позор мне... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:37:34 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Greg Belenky -> "Re: undef насчет всего списка сразу" : >> my @data=split (/?/,@ns) if (@ns); GB> /?/ GB> вот этим - ты что хотел сказать? ;) типа проехали (в оригинале - выражение для сплита) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From lavei на mail.ru Sat Sep 27 18:37:34 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925111513.GB24517@least.beast> References: Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:16:42 +0000 (UTC), Вы написали: PV> @a=undef; присвоить массиву a значение возвращаемое функцией undef??;-) Данил From lavei на mail.ru Sat Sep 27 18:37:34 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925113515.GB25088@least.beast> References: Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:36:44 +0000 (UTC), Вы написали: PV> это значение не имеет права быть рассмотренным в контексте массива? Имеет;-) У нас равноправие.;-) Данил From hrg на sama.ru Sat Sep 27 18:37:34 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 11:42:52AM +0000 "Yury Kopyl" YKL>>> Написать программу на perl выводящую текст в виде прямоугольника YKL>>> с заданной шириной. YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) PV> форматы --- причмокивают? Нет. Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From marchenko на zr.ru Sat Sep 27 18:37:34 2003 From: marchenko на zr.ru (Jury Marchenko) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Так, на скорую, вот вариант. Возмодна оптимизация. Длина задаётся $l. #!/usr/bin/perl use strict; my $text = "A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my @words = split(/ |\n/g, $text); my $l = 45; for (my $i=0;$i<=$#words;$i++) { my $string = $words[$i]; while (length($string)<$l) { $i++; if (!$words[$i]) { $string = &add_dot($string, $l); } if ((length($string) + length(" " . $words[$i]))<=$l) { $string.=" $words[$i]"; } else { $i--; $string = &add_dot($string, $l); last; } } print "$string\n"; } sub add_dot { my ($string, $l) = @_; while (length ($string) < $l) { $string = " $string"; } return $string; } С уважением, Марченко Юрий Иванович, редактор отдела оперативной информации, ЗАО КЖИ "За Рулём" URL: http://www.zr.ru ; http://www.za.ru ; E-mail: marchenko@zr.ru Телефоны: +7 (095) 208-00-70 +7 (926) 203-52-90 ----- Original Message ----- From: "LaVei" To: Sent: Thursday, September 25, 2003 15:30 Subject: Трава перл...фсем курить;-) > Как решить в одну строку это, я себе пока не представляю... > поэтому если участники не против то критерием будет Benchmark?;-) > > Задача : > Написать программу на perl выводящую текст в виде > прямоугольника с > заданной шириной. > До заданной ширины строку следует дополнять пробелами, > начиная с левой её > части. Параметр, определяющий ширину результирующего > прямоугольника, > гарантированно больше, чем самое длинное слово, > встречающееся в тексте. > > Текст > "A simple, easy to remember system for encoding integer > amounts can be very > useful. For example, dealers at flea markets put the > information about an item > on a card that they let potential buyers see. They find it > advantageous to > encode the amount they originally paid for the item on the > card.\nA good system > is to use a substitution code, in which each digit is > encoded by a letter. An > easy to remember 10-letter word or phrase, the key, is > chosen. Every '1' in the > value is replaced by the first letter of the key, every > '2' is replaced by the > second letter of the key, and so on. Every '0' is replaced > by the last letter of > the key. Letters that do not appear in the key can be > inserted anywhere without > affecting the value represented by the code.. This helps > to make the resulting > code much harder to break (without knowing the > key).\nCreate a class Substitute > that contains the method getValue that is given the > Strings key and code as > input and that returns the decoded value." > > Данил > From hrg на sama.ru Sat Sep 27 18:37:36 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 16:49:42 +0500: L>>> Как решить в одну строку это, я себе пока не представляю... L>>> поэтому если участники не против то критерием будет Benchmark?;-) YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) L> Чур CPAN непользоваться!!!:-)) "Как же так, Федор Михайлович"(С)Сеня Лютый my $width=40; my $text="A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my $format_str='^'.'>'x ($width-1)."~~\n"; foreach my $text (split (/\n/,$text)){ $text=~s/^\s+//; $text=~s/\s+$//; formline ($format_str,$text); print $^A; }; With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:37:38 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Peter Vereshagin -> "Re: потребление памяти." : PV> Thu, Sep 25, 2003 at 04:01:42PM +0500 Yury Kopyl YK>> поиск по контексут документа. Вроде такое было в MS SQL PV> ого. PV> а подробнее? Не помню. Чесна. Просто что-то подобное прообегало по fido7.ru.perl Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From hrg на sama.ru Sat Sep 27 18:37:38 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:20:52 +0500: YK>> foreach my $text (split (/\n/,$text)){ L> А цикл для чего? Для абзацев. т.е если в строке есть символы переноса, то строка начнется заново. With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:37:38 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 05:31:13PM +0500 Yury Kopyl YKYKL>>>>> Написать программу на perl выводящую текст в виде YKYKL>>>>> прямоугольника с заданной шириной. YKYK>>>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) YKPV>>> форматы --- причмокивают? YK>> Нет. PV> а чем хуже? Хз...надо пробовать Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From combr на vesna.ru Sat Sep 27 18:37:38 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Greg Belenky писал: > @a в скалярном контексте интерпретируется как число элементов массива. > т.к. число элементов не может быть неопределенным числом, зато может быть > нулевым, то выражение defined @a _всегда_ истино. вопщим, как обычно - получилось тупо от нечтения документации.. ;)) -- Mike From hrg на sama.ru Sat Sep 27 18:37:38 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:26:59 +0500: L> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L> 406504.07/s (n=500000) L> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L> 236966.82/s (n=500000) L> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L> 568181.82/s (n=500000) L> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L> 242718.45/s (n=500000) L> Rate LaVei hrg Evgen Yury L> LaVei 236967/s -- -2% -42% -58% L> hrg 242718/s 2% -- -40% -57% L> Evgen 406504/s 72% 67% -- -28% L> Yury 568182/s 140% 134% 40% -- Кстате, если интересует быстродействие,а не меньшее кол-во строк мона сделать еще так: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr{ s/^\s+//}; my $del_after =qr{ s/\s+$//}; my $buf; foreach my $text (split (/\n/,$text)){ $text=~$del_before; $text=~$del_after; formline ($format_str,$text); $buf.=$^A; }; print $buf; И еще - ты сравнивал при одинаковой ширине при разбиении для всех алгоритмов? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:37:41 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309251202.h8PC2493019909@gateway.vdcom.ru> Message-ID: Hello, Yury! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 09:36:28 +0500: YK> Hello, LaVei! YK> You wrote to "Samara (Russia) Perl Mongers" YK> on Thu, 25 Sep 2003 18:26:59 +0500: L>> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L>> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L>> 406504.07/s (n=500000) L>> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L>> 236966.82/s (n=500000) L>> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L>> 568181.82/s (n=500000) L>> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L>> 242718.45/s (n=500000) L>> Rate LaVei hrg Evgen Yury L>> LaVei 236967/s -- -2% -42% -58% L>> hrg 242718/s 2% -- -40% -57% L>> Evgen 406504/s 72% 67% -- -28% L>> Yury 568182/s 140% 134% 40% -- YK> Кстате, если интересует быстродействие,а не меньшее кол-во строк YK> мона сделать еще так: YK> my $format_str='^'.'>'x ($width-1)."~~\n"; YK> my $del_before=qr{ s/^\s+//}; YK> my $del_after =qr{ s/\s+$//}; YK> my $buf; YK> foreach my $text (split (/\n/,$text)){ YK> $text=~$del_before; YK> $text=~$del_after; YK> formline ($format_str,$text); YK> $buf.=$^A; YK> }; YK> print $buf; YK> И еще - ты сравнивал при одинаковой ширине при разбиении для всех YK> алгоритмов? Поправка к последнему варианту: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr /^\s+/o; my $del_after =qr /\s+$/o; my $buf; foreach my $text (split (/\n/,$text)){ $text=~s/$del_before//; $text=~s/$del_after//; formline ($format_str,$text); $buf.=$^A; }; print $buf; YK> With best regards, Yury Kopyl. E-mail: hrg@sama.ru With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Sat Sep 27 18:37:41 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=F4=D2=C1=D7=C1_=D0=C5=D2=CC=2E=2E=2E=C6=D3?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: sub greg { my ($width, $str) = @_; my $i = 0; my @wrap = (); foreach (split /\s+/, $str) { unless (length( $wrap[$i] ) + length() + 1 <= $width) { while (length( $wrap[$i] ) < $width) { if ($wrap[$i] =~ /(\S)(\s)/sg) { substr($wrap[$i], (my $p = pos( $wrap[$i] ))-1, 1) = $2x2; pos( $wrap[$i] ) = $p; } else { pos( $wrap[$i] ) = 0; } } $i++; } $wrap[$i] .= ($wrap[$i] && ' ') . $_; } return join "\n", @wrap; } з.ы. ну... не знаю, как Данила и что тестил и сравнивал - у меня прально работал только вариант Жени Скачкова (прально перевел с англицкого?) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From e_skachkov на diamond.ru Sat Sep 27 18:37:41 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value.`; my $point = $ARGV[0]; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; while ( $text =~ s/^(.{1,$point})[ |.](.*)$/$2/ ) { my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Ето мой скромный вариантик С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From greg на webzavod.ru Sat Sep 27 18:37:43 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF?= References: Message-ID: > Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее > они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. > Поробуйте потестить на реальных текстах. Тогда нужно было оговориться, что абзацы ограничены \n а не внутренними переводами строки. Тогда, в любом случае, необходим препроцессинг текста перед передачей его алгоритму... нет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:36:56 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: %CPU %MEM >> 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > помогло? ага. надо еще что-нибудь заоптимизировать. например: в этом де скрипте используется tie %iptraf, "DB_File", 'iptraf.db'; который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет (в простом случае) 3 млн (на самом деле несколько меньше ;) Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Будет ли быстрее работать в памяти? (хотя в perldoc -q memory пишут обратное - чтобы освободить память, обращайтесь к диску ;) В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) >> > use strict; >> давно ;) >> а как это относится к памяти? >> у меня, правда, все my стоят вначале скрипта.. > > то, что эти переменные у тебя никогда за пределы видимости не выходят, Я так и подумал, поэтому и написал, что вначале скрипта стоят.. ;) -- Mike From lavei на mail.ru Sat Sep 27 18:36:57 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:57:33 +0500, Вы написали: ML> например: ML> в этом де скрипте используется ML> tie %iptraf, "DB_File", 'iptraf.db'; ML> который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то ML> пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет ML> (в простом случае) 3 млн (на самом деле несколько меньше ;) ML> Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Да, в этом их(db_file) плюс и есть. ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... правда не очень юзабельны...;-( ML> В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) Ну кинь суда свой код, посмотрим. Данил From combr на vesna.ru Sat Sep 27 18:37:10 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= Message-ID: Здравствуйте, перловые монгры! ;) кто присоветует? есть файл, большой. например, в нем 2 миллиона строк и 300 метров. я читаю его таким образом: while () { или open(AAA, ") { и затем @line=split(' '); конечно, оно работает, но при работе сразу занимает метров 400 памяти. соответственно, если файл - 300 метров, то в памяти процесс занимает (около) 550 метров. меня это как-то не устраивает ;) Предполагаю, что на каждую новую строку в памяти заводятся новые копии $_ и @line, но как этого избежать? -- Mike From e_skachkov на diamond.ru Sat Sep 27 18:38:03 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, decoded value.`; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; my $len = length$text; my $point = (int(sqrt($len))+1);#(c) Lavei. while ( $text =~ s/^(.{1,$point}[ |.])(.*)$/$2/ ) #Updated by Lavei { my $str = $1; #Updated by Lavei $str=~ s/ $//;#Updated by Lavei my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Вот и мое произведение тока с данилиным копирайтом С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From lavei на mail.ru Sat Sep 27 18:38:03 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDSz8TPzNbFzsnFIMLBzsvF1MEs?= In-Reply-To: <20030926123709.GX2882@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: Здраствуйте, Peter Vereshagin ! в Fri, 26 Sep 2003 12:38:40 +0000 (UTC), Вы написали: PV> Fri, Sep 26, 2003 at 03:44:04PM +0500 Greg Belenky GB>> пользоваться регулярными выраженьями: GB>> undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; PV> и что --- вот такое удаление карстовых пустот: PV> $text=~s/[\n\r]//gm; $text=~s/^\s+//; $text=~s/\s+$//; PV> будет работать быстрее через pos() и substr()? Проверь Benchmark'ом а вообще имхо будет. регекспы почти всегда сосут у substr Данил From greg на webzavod.ru Sat Sep 27 18:38:03 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: > GB> х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? > вот и я тоже подумал, а где его смотреть? perldoc Devel::Peek -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:37:15 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:26:19 +0500, Вы написали: GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) я проверял на 6-7 га текста. в записях это было 6~7 млн. те запись была в cреднем 1к может чуть больше...не вспомню уже. точные данные сейчас не впомню, но различие было на порядок это 100 пудов. >Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы >нравятся... Мне сам по себе db импонирует;-) (прочитай PERFORMANCE для Tie:DBI.;-) Данил From hrg на sama.ru Sat Sep 27 18:37:15 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не >> будет GB> засрана. >> На некоторых задачах они бывают гораздо лучшим решением нежли какой >> либо GB> sql сервер... GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) <писькамерялка> Это 10-20Мб - большие объемы то?? GB> Может быть стоит попробовать Tie::DBI если уж тебе так притайеные GB> интерфейсы нравятся... tie работает крайне медлленах... сам же читал :)) Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From greg на webzavod.ru Sat Sep 27 18:37:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс > обработки лога (в строках/сек)? выносишь обработку одной строки в процедуру. Создаешь тестовый массив из нескольких строк лога и... use Benchmark; > использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да > и наверняка можно без установки доп. модулей обойтись. почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они выполнялись... когда волосы дыбом встают от постоянно растущего времени выполнения - приходит черед оптимизации ;))) > например, в логе сквида есть тысячные доли секунды, а time() выдает только > секунды. вот здесь не понял - разобъясни... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:37:20 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > я так понимаю, что это статистика? ;) конечно. > что есть "строки хеша". ключи, наверное? конечно ;) >ну а что в качестве значений этих ключей? небольшие (по обьему) цифры ;) > если результат настолько мал, то скорее всего наиболее оптимально хранить > в памяти во время обработки, а потом сохранять. это понятно. но как сохранять? я как-то придумал такую подпрограмму, в которую передается ссылка на хеш, а она : открывает tie копирует переданный хеш в точно такой же, но затиенный закрывает tie ;)) может, можно как-то более оригинально (без доп. модулей)? -- Mike From greg на webzavod.ru Sat Sep 27 18:37:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > а еще мона -d:DProf и невые... (ой не надо ногами) :) а еже ли никаких процедур в коде нету? окромя, конечно CORE:: что он покажет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:37:21 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB> и в чью пользу? db_file. GB> м.б. архитектура приложений различная была? Да, немного отличалась. в мускульной табличке по ключу было неск значений, а в db hash одна большая стринга;-) ну и соотв код был не много по другоум построен. Данил From greg на webzavod.ru Sat Sep 27 18:37:21 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > GB> и в чью пользу? > db_file. ни верю! -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:37:21 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> а еще мона -d:DProf и невые... (ой не надо ногами) :) GB> а еже ли никаких процедур в коде нету? окромя, конечно CORE:: GB> что он покажет? Честна затраченное время на выполнение основного. :)) Yury Kopyl aka hrg | http://id.totem.ru | "бысто сп..ил и ушел - называется нашел..." From greg на webzavod.ru Sat Sep 27 18:37:27 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > GB> > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > > контекст лови: фулл текст сёрч. а к Perl какое отношенье имеет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:37:27 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: > my @data=split (/?/,@ns) if (@ns); /?/ вот этим - ты что хотел сказать? ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:37:27 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > а что --- пёрл этого НЕ МОЖЕТ? под виндами - только при наличии соответсвующих оле-автомейшенов... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:37:28 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 16:15:29 +0500, Вы написали: GB> @a в скалярном контексте интерпретируется как число элементов массива. т.к. GB> число элементов не может быть неопределенным числом, зато может быть GB> нулевым, то выражение defined @a _всегда_ истино. не всегда my @a =(); print "Ok" if defined @a; ничего не выдаст. ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) . надо делать вот так undef@a; undef это функция такая ваащето;-) perldoc -f undef Данил From hrg на sama.ru Sat Sep 27 18:37:43 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= References: Message-ID: Greg Belenky -> "А вот, какие итоги получились у меня..." : GB> Текст идентичный. Присланный Данилом. Для чичтоты эксперимента GB> возвращается функцией, чтобы тестируемые не могли на него повлиять. GB> Ширина - 50 символов. GB> Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, GB> marchenko... GB> eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ GB> 878.73/s (n=5000) GB> greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ GB> 803.86/s (n=5000) GB> hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ GB> 464.25/s (n=5000) GB> Rate marchenko greg eugene hrg lavei GB> marchenko 464/s -- -42% -47% -86% -86% GB> greg 804/s 73% -- -9% -75% -75% GB> eugene 879/s 89% 9% -- -73% -73% GB> hrg 3247/s 599% 304% 269% -- -0% GB> lavei 3247/s 599% 304% 269% 0% -- GB> А теперь посмотрим, что же на самом деле выдают наши алгоритмы... GB> (следующие 2 строки я нарисовал прям в постинге, чтобы можно было GB> оценить попадание в 50-символьную границу... GB> 10 20 30 40 50 GB> 123456789|123456789|123456789|123456789|123456789| GB> -------------------------------------------------- GB> lavei--------------------------------------------- GB> A simple, easy to remember system for encoding integer GB> amounts can be veryuseful. For example, dealers at flea markets GB> put the information about an itemon a card that they let GB> potential buyers see. They find it advantageous toencode the amount GB> they originally paid for the item on the card.A good systemis to GB> use a substitution code, in which each digit is encoded by a GB> letter. Aneasy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in thevalue is replaced by the first GB> letter of the key, every '2' is replaced by thesecond letter of GB> the key, and so on. Every '0' GB> is replaced by the last letter ofthe key. Letters that do GB> not appear in the key can be inserted anywhere withoutaffecting the GB> value represented by the code.. This helps to make the GB> resultingcode much harder to break (without knowing the GB> key).Create a class Substitutethat contains the method getValue GB> that is given the Strings key and code asinput and that GB> returns the decoded GB> hrg----------------------------------------------- GB> A simple, easy to remember system for encoding GB> integer amounts can be very useful. GB> For example, dealers at flea markets put GB> the information about an item on a card GB> that they let potential buyers see. They GB> find it advantageous to GB> encode the amount they originally paid for the GB> item on the card. GB> A good system is to use a GB> substitution code, in which each digit GB> is encoded by a letter. An easy to GB> remember 10-letter word or phrase, the GB> key, is chosen. Every '1' in the value is GB> replaced by the first letter of the key, GB> every '2' is replaced by the second GB> letter of the key, and so on. Every '0' is GB> replaced by the last letter of the key. GB> Letters that do not appear in the key can GB> be inserted anywhere without affecting the GB> value represented by the code.. This GB> helps to make the resulting code GB> much harder to break (without knowing the GB> key). GB> Create a class Substitute that contains GB> the method getValue that is given GB> the GB> Strings key and code as input GB> and that returns the decoded value. GB> greg---------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential buyers GB> see. They find it advantageous to encode the amount they GB> originally paid for the item on the card. A good system is to use a GB> substitution code, in which each digit is encoded by a letter. GB> An easy to remember 10-letter word or phrase, the key, is GB> chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that contains GB> the method getValue that is given the GB> Strings key and code as input and that returns the decoded value. GB> eugene-------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential GB> buyers see. They find it advantageous to encode the amount GB> they originally paid for the item on the card. A good system is GB> to use a substitution code, in which each digit is encoded by a GB> letter. An easy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that GB> contains the method getValue that is given the GB> Strings key and code as input and that returns the decoded GB> value marchenko----------------------------------------- GB> Asimple,easytoremembersystemforencodinginteger GB> amountscanbeveryuseful.Forexample,dealersatflea GB> marketsputthe informationaboutanitemonacardthattheyletpotential GB> buyerssee.Theyfindit GB> advantageoustoencodetheamounttheyoriginallypaid GB> fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich GB> eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor GB> phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst GB> letterofthekey,every GB> '2'isreplacedbythesecondletterofthekey,andsoon. GB> Every'0'isreplaced GB> bythelastletterofthekey.Lettersthatdonotappearin GB> thekeycanbe insertedanywherewithoutaffectingthevalue GB> representedbythecode..Thishelps GB> tomaketheresultingcodemuchhardertobreak(without GB> knowingthe key).CreateaclassSubstitutethatcontainsthemethod GB> getValuethatisgiventhe GB> Stringskeyandcodeasinputandthatreturnsthedecoded GB> value. GB> -------------------------------------------------- Насчет правильности: Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. Поробуйте потестить на реальных текстах. Yury Kopyl aka hrg | http://id.totem.ru | "Сегодня с нами ты не пьешь, а завтра Родине изменишь!" From lavei на mail.ru Sat Sep 27 18:37:58 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INLV09PLycogXHcg1yD19OYtOA==?= In-Reply-To: <20030925141426.GN25088@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 14:15:56 +0000 (UTC), Вы написали: PV> или хотя бы [a-zA-Z0-9] [А-Яа-я0-9] Данил From hrg на sama.ru Sat Sep 27 18:37:58 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= References: Message-ID: Greg Belenky -> "Re: А вот, какие итоги получились у меня..." : >> Почти все алгоритмы не учитывают переносы строк в исходном тексте, >> вернее они просто заменяют их на пробелы, склеиваяя строку. Это не >> правильно. >> Поробуйте потестить на реальных текстах. GB> Тогда нужно было оговориться, что абзацы ограничены \n а не GB> внутренними переводами строки. Тогда, в любом случае, необходим GB> препроцессинг текста перед передачей его алгоритму... нет? Да. изначально задача была поставлена не совсем корректна. Препроцессинг нужен. Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From greg на webzavod.ru Sat Sep 27 18:37:43 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF=C7=C9_?= Message-ID: Текст идентичный. Присланный Данилом. Для чичтоты эксперимента возвращается функцией, чтобы тестируемые не могли на него повлиять. Ширина - 50 символов. Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, marchenko... eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ 878.73/s (n=5000) greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ 803.86/s (n=5000) hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ 3246.75/s (n=5000) lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ 3246.75/s (n=5000) marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ 464.25/s (n=5000) Rate marchenko greg eugene hrg lavei marchenko 464/s -- -42% -47% -86% -86% greg 804/s 73% -- -9% -75% -75% eugene 879/s 89% 9% -- -73% -73% hrg 3247/s 599% 304% 269% -- -0% lavei 3247/s 599% 304% 269% 0% -- А теперь посмотрим, что же на самом деле выдают наши алгоритмы... (следующие 2 строки я нарисовал прям в постинге, чтобы можно было оценить попадание в 50-символьную границу... 10 20 30 40 50 123456789|123456789|123456789|123456789|123456789| -------------------------------------------------- lavei--------------------------------------------- A simple, easy to remember system for encoding integer amounts can be veryuseful. For example, dealers at flea markets put the information about an itemon a card that they let potential buyers see. They find it advantageous toencode the amount they originally paid for the item on the card.A good systemis to use a substitution code, in which each digit is encoded by a letter. Aneasy to remember 10-letter word or phrase, the key, is chosen. Every '1' in thevalue is replaced by the first letter of the key, every '2' is replaced by thesecond letter of the key, and so on. Every '0' is replaced by the last letter ofthe key. Letters that do not appear in the key can be inserted anywhere withoutaffecting the value represented by the code.. This helps to make the resultingcode much harder to break (without knowing the key).Create a class Substitutethat contains the method getValue that is given the Strings key and code asinput and that returns the decoded hrg----------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. greg---------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. eugene-------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value marchenko----------------------------------------- Asimple,easytoremembersystemforencodinginteger amountscanbeveryuseful.Forexample,dealersatflea marketsputthe informationaboutanitemonacardthattheyletpotential buyerssee.Theyfindit advantageoustoencodetheamounttheyoriginallypaid fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst letterofthekey,every '2'isreplacedbythesecondletterofthekey,andsoon. Every'0'isreplaced bythelastletterofthekey.Lettersthatdonotappearin thekeycanbe insertedanywherewithoutaffectingthevalue representedbythecode..Thishelps tomaketheresultingcodemuchhardertobreak(without knowingthe key).CreateaclassSubstitutethatcontainsthemethod getValuethatisgiventhe Stringskeyandcodeasinputandthatreturnsthedecoded value. -------------------------------------------------- begin 666 wrap.pl M=7-E('-T2!L970@<&]T96YT:6%L(&)U>65R2!P86ED(&9O2P@:7,@"F-H;W-E;BX@179E2!T:&4@9FER2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,@2DN7&Y#S$L)'!O:6YT?2D@+V2 H)'=I9'1H+" D=&5X="D@/2! 7SL* M("!M>2 D9F]R;6%T7W-T" H)'=I9'1H+3$I+B)^?EQN(CL* M("!M>2 D9&5L7V)E9F]R93UQ7',K+R]].PH@(&UY("1D96Q?869T M97(@/7%R>R!S+UQS*R0O+WT["B @;7D@)&)U9CL*("!F;W)E86-H(&UY("1T M97AT("AS<&QI=" H+UQN+RPD=&5X="DI>PH@("!L;V-A;" D7D$["B @("1T M97AT/7XD9&5L7V)E9F]R93L*(" @)'1E>'0]?B1D96Q?869T97(["B @(&9O M03L*("!] M"B @2 H)'=I9'1H+" D M2! =W)A<" ]("@I.PH@(&9O M2 D<" ]('!OPH@(" @(" @(" @<&]S*" D=W)A<%LD M:5T@*2 ](# ["B @(" @(" @?0H@(" @("!]("1I*RL["B @("!]("1W'0@/7X@2! 2 DR DR DR!M87)C:&5N:V\H(#4P+"!S='(@*2!]+ I] M*3L*"G!R:6YT(")<;EQN7&XB+" G+2<@>" U,"P@(EQN(CL*"G!R:6YT(")< M;FQA=F5I(B N("" H M-3 M;&5N9W1H*"=H" H-3 M;&5N9W1H*"=E=6=E;F4G*2DL(")<;B(["G!R:6YT(&5U M9V5N92@U,"P@" H M-3 M;&5N9W1H*"=M87)C:&5N:V\G*2DL(")<;B(["G!R:6YT(&UA" U,"P@(EQN(CL*"E]? &14Y$7U\* ` end begin 666 results.dat M0F5N8VAM87)K.B!T:6UI;F<@-3 P,"!I=&5R871I;VYS(&]F(&5U9V5N92P@ M9W)E9RP@:')G+"!L879E:2P@;6%R8VAE;FMO+BXN"B @("!E=6=E;F4Z(" V M('=A;&QC;&]C:R!S96-S("@@-2XV-2!U7,@/2 @-2XV M.2!#4%4I($ @.#75S969U;"X@1F]R(&5X86UP;&4L"B @9&5A M;&5R2!F:6YD(&ET(&%D=F%N=&%G96]U7-T96UI2!A(&QE='1E2!T:&4*("!F:7)S="!L971T97(@;V8@=&AE(&ME>2P@979E0H@(" @ M=&AE(&-O9&4N+B!4:&ES(&AE;'!S('1O(&UA:V4@=&AE(')E2!A;F0*(" @(" @(" @(&-O9&4@87-I;G!U M="!A;F0@=&AA="!R971U2!T;R!R96UE;6)E7-T96T@9F]R(&5N8V]D:6YG"B @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&EN=&5G M97(*(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&%M;W5N=',@8V%N M(&)E('9E&%M<&QE+"!D96%L97)S(&%T(&9L M96$@;6%R:V5T7-T96T*:7,@=&\@=7-E(&$@2!T;R!R96UE;6)E2 G M,2<@:6X@=&AE"B!V86QU92!I2!T:&4@9FER2!T:&4*('-E8V]N9"!L971T97(@;V8@ M=&AE(&ME>2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,*(" @(" @(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @("!R97!L86-E9 H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(&)Y('1H92!L87-T(&QE='1E2!L970@<&]T M96YT:6%L(&)U>65R2 @=&AE("!F:7)S=" @;&5T=&5R("!O9B @=&AE("!K97DL(&5V M97)Y("7=H97)E('=I=&AO=70@869F96-T:6YG('1H92!V86QU90IR97!R97-E;G1E M9" @8GD@('1H92!C;V1E+BX@5&AI2DN($-R96%T92!A(&-L87-S(%-U8G-T:71U M=&4@=&AA= IC;VYT86EN2!A;F0@8V]D92!A2 @9FEN9" @:70@ M(&%D=F%N=&%G96]U2 @ M;W)I9VEN86QL>2 @<&%I9" @9F]R('1H92!I=&5M(&]N('1H90IC87)D+B @ M02!G;V]D('-Y2 @=&AE M("!S96-O;F0@;&5T=&5R(&]F('1H92!K97DL(&%N9"!S;PIO;BX@($5V97)Y M(" G,"<@(&ES("!R97!L86-E9"!B>2!T:&4@;&%S="!L971T97(@;V8*=&AE M("!K97DN($QE='1E6QE='!O=&5N=&EA; H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @("!B=7EE69I;F1I= H@ M("!A9'9A;G1A9V5O=7-T;V5N8V]D971H96%M;W5N='1H97EO7-T96UI6%L971T97(N06YE M87-Y=&]R96UE;6)E2QI22QE=F5R M>0H@(" G,B=I2QA M;F1S;V]N+@H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @($5V97)Y M)S G:7-R97!L86-E9 H@(&)Y=&AE;&%S=&QE='1E71H96-O9&4N+E1H:7-H96QP2DN0W)E871E86-L87-S4W5B<001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg><200309251155.h8PBtv93019797@gateway.vdcom.ru><00c501c383e6$541b0700$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 10:48:52 +0500: L> PS а где можно почитать про форматы? L> perldoc -f formline слишком малоинформативен что то..;-( google :)) или пиши сюда, я одно время с ними очень хорошо с нимим (Афонина нет?) портахался With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:37:59 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L>> Как решить в одну строку это, я себе пока не представляю... L>> поэтому если участники не против то критерием будет Benchmark?;-) L>> Задача : L>> Написать программу на perl выводящую текст в виде прямоугольника с L>> заданной шириной. L>> До заданной ширины строку следует дополнять пробелами, начиная с L>> левой её части. Параметр, определяющий ширину результирующего L>> прямоугольника, гарантированно больше, чем самое длинное слово, L>> встречающееся в тексте. L> В связи с возникшей неразберихой я предлагаю немного L> подкорректировать задание. L> 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у L> Евгена только последний символ "." куда то пропал -надо вернуть;-) L> в этом плане единственно верные. т.е. симлпа добиваем пробелы? L> 2. Абзацы не считаем L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) хм.... вот изврат L> 4. модули с CPAN попрежнему не приветствуются:-)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Sat Sep 27 18:37:59 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: Верещагин! Пиши понятнее, а то приходится догадываться, что ты до нас хотел донести... Договорились? > text=~s/^\\\\(.+)$/$1/g; х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? з.ы. для того, чтобы отрезать от строки 2 слеша спереди, необязательно пользоваться регулярными выраженьями: undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; з.з.ы. к тому же и работает в 2 раза быстрее регвыров... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:37:59 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L> L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) И еще: квадрат - это n строк х n столбцов или все-таки визуальный квадрат в текстовом режиме? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From combr на vesna.ru Sat Sep 27 18:37:59 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?y9LV1MHRINTSwdfB?= Message-ID: http://www.linux.org.ru/view-message.jsp?msgid=392747 -- Mike From greg на webzavod.ru Sat Sep 27 18:38:03 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: > text=~s/^\\\\(.+)$/$1/g; и модификатор /g тут особого смысла не имеет, потому как в регвыре ты описываешь всю строку ^...$ -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:46:33 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > <писькамерялка> > Это 10-20Мб - большие объемы то?? > там же русским по белому написано ">10-20Mb" это значить "БОЛЬШЕ 10-20 Мегабайт.. а там и 100 и 300 и до гига недалеко... > tie работает крайне медлленах... сам же читал :)) Ну не медленно он работает... просто использование замещается методами объекта притайенного класса. Зато код легче читается ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:46:33 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. > На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы нравятся... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:46:34 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > дааа , блин, радикально ! > спасибо за предложения ;) > %CPU %MEM > 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl помогло? > > use strict; > > давно ;) > а как это относится к памяти? > у меня, правда, все my стоят вначале скрипта.. то, что эти переменные у тебя никогда за пределы видимости не выходят, и память, которую они занимают не отдается обратно. Когда ты так описываешь переменную внутри блока, то как только счетчик референсесов на нее обнуляется - перловый сборщик мусора должен по идее освоботить память, которая использовалась для нее. -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:46:34 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > логи? конечно. сквида. > попробуй так: > while (my $line = ) { > my @line = split ' ', $line; > по идее после конца цикла переменные $line и @line должны высвыбождаться, > т.к. они вышли за пределы блока. дааа , блин, радикально ! спасибо за предложения ;) %CPU %MEM 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > p.s. > use strict; давно ;) а как это относится к памяти? у меня, правда, все my стоят вначале скрипта.. -- Mike From lavei на mail.ru Sat Sep 27 18:46:40 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:33:55 +0500, Вы написали: ML> у меня, правда, все my стоят вначале скрипта.. А смысл? my нужен для объявления переменных в области видимости. те если тебе $line нужен в области видимости цикла то и объявляй тама. после выхода и области цикла он должен быть убит, как тебе уже написали. в твоем случае ты продолжаешь таскать за собой эту переменную по всему коду... Данил From lavei на mail.ru Sat Sep 27 18:47:11 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 12:51:37 +0500, Вы написали: YK> <писькамерялка> YK> Это 10-20Мб - большие объемы то?? YK> Понеслась..;-)) Колись, Юр, какой у тебя объем;-))) Данил From hrg на sama.ru Sat Sep 27 18:46:29 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:09 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Mike Lykov -> "потребление памяти." : ML> Здравствуйте, перловые монгры! ;) ML> кто присоветует? ML> есть файл, большой. например, в нем 2 миллиона строк и 300 метров. ML> я читаю его таким образом: ML> while () { ML> или open(AAA, " foreach () { ML> и затем @line=split(' '); ML> конечно, оно работает, но при работе сразу занимает метров 400 ML> памяти. ML> соответственно, если файл - 300 метров, то в памяти процесс занимает ML> (около) ML> 550 метров. ML> меня это как-то не устраивает ;) ML> Предполагаю, что на каждую новую строку в памяти заводятся новые ML> копии $_ и @line, но как этого избежать? Скажи, что ты с этим строками делаешь? Обязательно хранить в мозгах все? Yury Kopyl aka hrg | http://id.totem.ru | "Если ты плюнешь на коллектив - коллектив утрется, но если коллектив плюнет на тебя - ты утонешь" (С)Баралгин From greg на webzavod.ru Sat Sep 27 18:46:29 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: Кто тебя учил так квотить? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:46:30 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:09 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: perldoc -q memory -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:46:30 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > есть файл, большой. например, в нем 2 миллиона строк и 300 метров. логи? > open(AAA, " foreach () { foreach в данном случае не канает - по одной простой причине, что _ДО_ начала цикла весь файл считывается и создается _СПИСОК_ строк, по которым потом и организуется цикл. попробуй так: while (my $line = ) { my @line = split ' ', $line; ... } по идее после конца цикла переменные $line и @line должны высвыбождаться, т.к. они вышли за пределы блока. p.s. use strict; -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:46:30 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : GB> Кто тебя учил так квотить? Ацтань, зануда :)) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From greg на webzavod.ru Sat Sep 27 18:47:11 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > точные данные сейчас не впомню, но различие было на порядок это 100 пудов. и в чью пользу? м.б. архитектура приложений различная была? у меня - демон ;) которому нужно было вести несколько логов... > (прочитай PERFORMANCE для Tie:DBI.;-) да уж... жопа. беру свои слова взад. з.ы. сам ни разу не использовал ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:47:11 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Yury Kopyl писал: > tie работает крайне медлленах... сам же читал :)) блинблин. а кто работает не медленно? (и немедленно? ;) какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом как-то его кидать на диск для сохранения? ;) -- Mike From combr на vesna.ru Sat Sep 27 18:47:12 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= Message-ID: Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс обработки лога (в строках/сек)? Учитывая то, что скрипт может работать, например, 0.1 сек ;) использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да и наверняка можно без установки доп. модулей обойтись. например, в логе сквида есть тысячные доли секунды, а time() выдает только секунды. -- Mike From hrg на sama.ru Sat Sep 27 18:47:13 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> и наверняка можно без установки доп. модулей обойтись. GB> почему? у меня все скриптики, которые сидят на кроне пишуть, сколько GB> они выполнялись... когда волосы дыбом встают от постоянно растущего GB> времени выполнения - приходит черед оптимизации ;))) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. GB> вот здесь не понял - разобъясни... а еще мона -d:DProf и невые... (ой не надо ногами) :) Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From hrg на sama.ru Sat Sep 27 18:47:13 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> tie работает крайне медлленах... сам же читал :)) GB> Ну не медленно он работает... просто использование замещается GB> методами объекта притайенного класса. Зато код легче читается ;) Мля... спутал с оверлоадом. Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From combr на vesna.ru Sat Sep 27 18:47:14 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= References: Message-ID: Greg Belenky писал: >> Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс >> обработки лога (в строках/сек)? > выносишь обработку одной строки в процедуру. Создаешь тестовый массив из > нескольких строк лога и... > use Benchmark; а почему не : $t0 = new Benchmark; # ... your code here ... $t1 = new Benchmark; $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n"; ? это проще вставить в готовый скрипт ;) > почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они > выполнялись... И у меня будут, раз этот Benchmark входит в поставку ;) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. > вот здесь не понял - разобъясни... perl -e 'print time;' выдает время с точностью 1 секунда - а то я хотел уже было просто time() использовать. Сквид, конечно, использует свою процедуру вычисления текущего времени ;) -- Mike From greg на webzavod.ru Sat Sep 27 18:47:15 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти > (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом > как-то его кидать на диск для сохранения? ;) я так понимаю, что это статистика? ;) что есть "строки хеша". ключи, наверное? ну а что в качестве значений этих ключей? если результат настолько мал, то скорее всего наиболее оптимально хранить в памяти во время обработки, а потом сохранять. вариантов - море... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:47:16 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > а почему не : > ? это проще вставить в готовый скрипт ;) ну.. я использую Бенчмарк для того, чтобы выяснить, какая программная конструкция работает быстрее. обычно это маленькие кусочки кода и использую я cmpthese... > И у меня будут, раз этот Benchmark входит в поставку ;) мне не больно понравилось, в каком виде это все выдается... Time::HiRes ловчее ;) например: use strict; use Benchmark; use Time::HiRes; my $t1 = Benchmark->new(); my $h1 = time(); sleep(5); my $i = 1; $i++ for (1...100_000); my $h2 = time(); my $t2 = Benchmark->new(); print timestr(timediff($t2, $t1), 'auto', '.05f'), "\n"; printf "%.5f\n", $h2 - $h1; __END__ From hrg на sama.ru Sat Sep 27 18:48:33 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: LaVei -> "Re: потребление памяти." : L> Здраствуйте, "Greg Belenky" ! L> в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB>> и в чью пользу? L> db_file. GB>> м.б. архитектура приложений различная была? L> Да, немного отличалась. L> в мускульной табличке по ключу было неск значений, а в db hash одна L> большая стринга;-) L> ну и соотв код был не много по другоум построен. а индексы юзал? а фулл текс серч? :) Yury Kopyl aka hrg | http://id.totem.ru | "мы не пьем - мы лечимся..." From greg на webzavod.ru Sat Sep 27 18:48:35 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > хинт: евфрат --- оффтопик. Я понимаю, что краткость - сестра таланта... но не в этом случае. Дообъясни? Какую мысль донести-то хотел? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:48:35 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 14:35:06 +0500, Вы написали: GB> ни верю! Мамой клянус!;-) Если будет время я попробую воссоздать ситуацию и сделать бенчмарки..(МОЖЕТ с порядком я и погорячился;-) но разницу я думаю будет видна. Данил From lavei на mail.ru Sat Sep 27 18:48:35 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 14:43:37 +0500, Вы написали: YK> а индексы юзал? Угу. YK>а фулл текс серч? :) Э... это самое... я его пытался как раз реализовать;-) прикинь как раньше(3 года назад) люди мучались?;-)) Данил From hrg на sama.ru Sat Sep 27 18:48:40 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? >> хинт: евфрат --- оффтопик. GB> Я понимаю, что краткость - сестра таланта... но не в этом случае. GB> Дообъясни? Какую мысль донести-то хотел? поиск по контексут документа. Вроде такое было в MS SQL Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Пошло все на.... ] From hrg на sama.ru Sat Sep 27 18:48:40 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Mike Lykov -> "undef насчет всего списка сразу" : ML> Сегодня день вопросов, не так ли? ;) ML> поскольку все равно никто не пишет сюда, задам и третий вопрос ;) ML> @a=("undef"); ML> #@a=(1); ML> if (defined @a) { print "aaa!"; }; ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ML> .... ML> вопрос возник в связи с таким куском: ML> usr Net::Nslookup; ML> @ns=nslookup(...) ML> в цикле оно может возвратить список (вероятно, из одного элемента, ML> но иногда и больше), или вообще ничего не возвратить. ML> если дальше делать, допустим, split на каждое значение из @ns, то ML> если не было ничего возвращено, то идет ругань на использование ML> неинициализированных значений. don't ebi mosk! :) usr Net::Nslookup; my @ns=nslookup(...) my @data=split (/?/,@ns) if (@ns); ML> обычно определить, инициализировано ли значение, или нет, можно с ML> помощью if (defined ..), но на переменные действует, а на списки ML> нет. что бы сделать? Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From combr на vesna.ru Sat Sep 27 18:49:14 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Peter Vereshagin писал: > Thu, Sep 25, 2003 at 03:59:54PM +0500 Mike Lykov > ML> @a=("undef"); > @a=undef; см. внимательнее вопрос - такой вариант был. (печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ....) -- Mike From greg на webzavod.ru Sat Sep 27 18:49:14 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: @a в скалярном контексте интерпретируется как число элементов массива. т.к. число элементов не может быть неопределенным числом, зато может быть нулевым, то выражение defined @a _всегда_ истино. > @a=("undef"); > #@a=(1); эти 2 присваивания - примерно из одной оперы... строка "undef" это вполне определенное значение. > if (defined @a) { print "aaa!"; }; > печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... см. в начале ответа. > usr Net::Nslookup; > @ns=nslookup(...) > > в цикле оно может возвратить список (вероятно, из одного элемента, но иногда > и больше), или вообще ничего не возвратить. > если дальше делать, допустим, split на каждое значение из @ns, то если не > было ничего возвращено, то идет ругань на использование > неинициализированных значений. foreach my $name (@ns) { next unless defined $name; ... } -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:49:14 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= Message-ID: Сегодня день вопросов, не так ли? ;) поскольку все равно никто не пишет сюда, задам и третий вопрос ;) @a=("undef"); #@a=(1); if (defined @a) { print "aaa!"; }; печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... вопрос возник в связи с таким куском: usr Net::Nslookup; @ns=nslookup(...) в цикле оно может возвратить список (вероятно, из одного элемента, но иногда и больше), или вообще ничего не возвратить. если дальше делать, допустим, split на каждое значение из @ns, то если не было ничего возвращено, то идет ругань на использование неинициализированных значений. обычно определить, инициализировано ли значение, или нет, можно с помощью if (defined ..), но на переменные действует, а на списки нет. что бы сделать? -- Mike From greg на webzavod.ru Sat Sep 27 18:49:14 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: > print "Ok" if defined @a; упс... прогнал... позор мне... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:49:14 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to on Thu, 25 Sep 2003 16:30:07 +0500: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, начиная с L> левой её части. Параметр, определяющий ширину результирующего L> прямоугольника, гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. L> Текст "A simple, easy to remember system for encoding integer L> amounts can be very useful. For example, dealers at flea markets put L> the information about an item on a card that they let potential L> buyers see. They find it advantageous to encode the amount they L> originally paid for the item on the card.\nA good system is to use a L> substitution code, in which each digit is encoded by a letter. An L> easy to remember 10-letter word or phrase, the key, is chosen. Every L> '1' in the value is replaced by the first letter of the key, every L> '2' is replaced by the second letter of the key, and so on. Every '0' L> is replaced by the last letter of the key. Letters that do not L> appear in the key can be inserted anywhere without affecting the L> value represented by the code.. This helps to make the resulting L> code much harder to break (without knowing the key).\nCreate a class L> Substitute that contains the method getValue that is given the L> Strings key and code as input and that returns the decoded value." http://search.cpan.org/search?query=wrap&mode=all - это? :)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:49:15 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Greg Belenky -> "Re: undef насчет всего списка сразу" : >> my @data=split (/?/,@ns) if (@ns); GB> /?/ GB> вот этим - ты что хотел сказать? ;) типа проехали (в оригинале - выражение для сплита) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From lavei на mail.ru Sat Sep 27 18:49:15 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925111513.GB24517@least.beast> References: Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:16:42 +0000 (UTC), Вы написали: PV> @a=undef; присвоить массиву a значение возвращаемое функцией undef??;-) Данил From lavei на mail.ru Sat Sep 27 18:49:17 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925113515.GB25088@least.beast> References: Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:36:44 +0000 (UTC), Вы написали: PV> это значение не имеет права быть рассмотренным в контексте массива? Имеет;-) У нас равноправие.;-) Данил From e_skachkov на diamond.ru Sat Sep 27 18:49:24 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value.`; my $point = $ARGV[0]; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; while ( $text =~ s/^(.{1,$point})[ |.](.*)$/$2/ ) { my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Ето мой скромный вариантик С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From greg на webzavod.ru Sat Sep 27 18:49:25 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF?= References: Message-ID: > Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее > они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. > Поробуйте потестить на реальных текстах. Тогда нужно было оговориться, что абзацы ограничены \n а не внутренними переводами строки. Тогда, в любом случае, необходим препроцессинг текста перед передачей его алгоритму... нет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:51:13 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: > GB> х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? > вот и я тоже подумал, а где его смотреть? perldoc Devel::Peek -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:51:13 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: %CPU %MEM >> 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > помогло? ага. надо еще что-нибудь заоптимизировать. например: в этом де скрипте используется tie %iptraf, "DB_File", 'iptraf.db'; который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет (в простом случае) 3 млн (на самом деле несколько меньше ;) Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Будет ли быстрее работать в памяти? (хотя в perldoc -q memory пишут обратное - чтобы освободить память, обращайтесь к диску ;) В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) >> > use strict; >> давно ;) >> а как это относится к памяти? >> у меня, правда, все my стоят вначале скрипта.. > > то, что эти переменные у тебя никогда за пределы видимости не выходят, Я так и подумал, поэтому и написал, что вначале скрипта стоят.. ;) -- Mike From e_skachkov на diamond.ru Sat Sep 27 18:51:13 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, decoded value.`; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; my $len = length$text; my $point = (int(sqrt($len))+1);#(c) Lavei. while ( $text =~ s/^(.{1,$point}[ |.])(.*)$/$2/ ) #Updated by Lavei { my $str = $1; #Updated by Lavei $str=~ s/ $//;#Updated by Lavei my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Вот и мое произведение тока с данилиным копирайтом С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From lavei на mail.ru Sat Sep 27 18:51:13 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDSz8TPzNbFzsnFIMLBzsvF1MEs?= In-Reply-To: <20030926123709.GX2882@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: Здраствуйте, Peter Vereshagin ! в Fri, 26 Sep 2003 12:38:40 +0000 (UTC), Вы написали: PV> Fri, Sep 26, 2003 at 03:44:04PM +0500 Greg Belenky GB>> пользоваться регулярными выраженьями: GB>> undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; PV> и что --- вот такое удаление карстовых пустот: PV> $text=~s/[\n\r]//gm; $text=~s/^\s+//; $text=~s/\s+$//; PV> будет работать быстрее через pos() и substr()? Проверь Benchmark'ом а вообще имхо будет. регекспы почти всегда сосут у substr Данил From hrg на sama.ru Sat Sep 27 18:49:21 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:20:52 +0500: YK>> foreach my $text (split (/\n/,$text)){ L> А цикл для чего? Для абзацев. т.е если в строке есть символы переноса, то строка начнется заново. With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:49:21 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 05:31:13PM +0500 Yury Kopyl YKYKL>>>>> Написать программу на perl выводящую текст в виде YKYKL>>>>> прямоугольника с заданной шириной. YKYK>>>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) YKPV>>> форматы --- причмокивают? YK>> Нет. PV> а чем хуже? Хз...надо пробовать Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From combr на vesna.ru Sat Sep 27 18:49:22 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Greg Belenky писал: > @a в скалярном контексте интерпретируется как число элементов массива. > т.к. число элементов не может быть неопределенным числом, зато может быть > нулевым, то выражение defined @a _всегда_ истино. вопщим, как обычно - получилось тупо от нечтения документации.. ;)) -- Mike From hrg на sama.ru Sat Sep 27 18:49:22 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:26:59 +0500: L> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L> 406504.07/s (n=500000) L> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L> 236966.82/s (n=500000) L> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L> 568181.82/s (n=500000) L> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L> 242718.45/s (n=500000) L> Rate LaVei hrg Evgen Yury L> LaVei 236967/s -- -2% -42% -58% L> hrg 242718/s 2% -- -40% -57% L> Evgen 406504/s 72% 67% -- -28% L> Yury 568182/s 140% 134% 40% -- Кстате, если интересует быстродействие,а не меньшее кол-во строк мона сделать еще так: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr{ s/^\s+//}; my $del_after =qr{ s/\s+$//}; my $buf; foreach my $text (split (/\n/,$text)){ $text=~$del_before; $text=~$del_after; formline ($format_str,$text); $buf.=$^A; }; print $buf; И еще - ты сравнивал при одинаковой ширине при разбиении для всех алгоритмов? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:49:24 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309251202.h8PC2493019909@gateway.vdcom.ru> Message-ID: Hello, Yury! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 09:36:28 +0500: YK> Hello, LaVei! YK> You wrote to "Samara (Russia) Perl Mongers" YK> on Thu, 25 Sep 2003 18:26:59 +0500: L>> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L>> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L>> 406504.07/s (n=500000) L>> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L>> 236966.82/s (n=500000) L>> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L>> 568181.82/s (n=500000) L>> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L>> 242718.45/s (n=500000) L>> Rate LaVei hrg Evgen Yury L>> LaVei 236967/s -- -2% -42% -58% L>> hrg 242718/s 2% -- -40% -57% L>> Evgen 406504/s 72% 67% -- -28% L>> Yury 568182/s 140% 134% 40% -- YK> Кстате, если интересует быстродействие,а не меньшее кол-во строк YK> мона сделать еще так: YK> my $format_str='^'.'>'x ($width-1)."~~\n"; YK> my $del_before=qr{ s/^\s+//}; YK> my $del_after =qr{ s/\s+$//}; YK> my $buf; YK> foreach my $text (split (/\n/,$text)){ YK> $text=~$del_before; YK> $text=~$del_after; YK> formline ($format_str,$text); YK> $buf.=$^A; YK> }; YK> print $buf; YK> И еще - ты сравнивал при одинаковой ширине при разбиении для всех YK> алгоритмов? Поправка к последнему варианту: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr /^\s+/o; my $del_after =qr /\s+$/o; my $buf; foreach my $text (split (/\n/,$text)){ $text=~s/$del_before//; $text=~s/$del_after//; formline ($format_str,$text); $buf.=$^A; }; print $buf; YK> With best regards, Yury Kopyl. E-mail: hrg@sama.ru With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Sat Sep 27 18:49:24 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=F4=D2=C1=D7=C1_=D0=C5=D2=CC=2E=2E=2E=C6=D3?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: sub greg { my ($width, $str) = @_; my $i = 0; my @wrap = (); foreach (split /\s+/, $str) { unless (length( $wrap[$i] ) + length() + 1 <= $width) { while (length( $wrap[$i] ) < $width) { if ($wrap[$i] =~ /(\S)(\s)/sg) { substr($wrap[$i], (my $p = pos( $wrap[$i] ))-1, 1) = $2x2; pos( $wrap[$i] ) = $p; } else { pos( $wrap[$i] ) = 0; } } $i++; } $wrap[$i] .= ($wrap[$i] && ' ') . $_; } return join "\n", @wrap; } з.ы. ну... не знаю, как Данила и что тестил и сравнивал - у меня прально работал только вариант Жени Скачкова (прально перевел с англицкого?) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:49:18 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 11:42:52AM +0000 "Yury Kopyl" YKL>>> Написать программу на perl выводящую текст в виде прямоугольника YKL>>> с заданной шириной. YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) PV> форматы --- причмокивают? Нет. Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From marchenko на zr.ru Sat Sep 27 18:49:18 2003 From: marchenko на zr.ru (Jury Marchenko) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Так, на скорую, вот вариант. Возмодна оптимизация. Длина задаётся $l. #!/usr/bin/perl use strict; my $text = "A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my @words = split(/ |\n/g, $text); my $l = 45; for (my $i=0;$i<=$#words;$i++) { my $string = $words[$i]; while (length($string)<$l) { $i++; if (!$words[$i]) { $string = &add_dot($string, $l); } if ((length($string) + length(" " . $words[$i]))<=$l) { $string.=" $words[$i]"; } else { $i--; $string = &add_dot($string, $l); last; } } print "$string\n"; } sub add_dot { my ($string, $l) = @_; while (length ($string) < $l) { $string = " $string"; } return $string; } С уважением, Марченко Юрий Иванович, редактор отдела оперативной информации, ЗАО КЖИ "За Рулём" URL: http://www.zr.ru ; http://www.za.ru ; E-mail: marchenko@zr.ru Телефоны: +7 (095) 208-00-70 +7 (926) 203-52-90 ----- Original Message ----- From: "LaVei" To: Sent: Thursday, September 25, 2003 15:30 Subject: Трава перл...фсем курить;-) > Как решить в одну строку это, я себе пока не представляю... > поэтому если участники не против то критерием будет Benchmark?;-) > > Задача : > Написать программу на perl выводящую текст в виде > прямоугольника с > заданной шириной. > До заданной ширины строку следует дополнять пробелами, > начиная с левой её > части. Параметр, определяющий ширину результирующего > прямоугольника, > гарантированно больше, чем самое длинное слово, > встречающееся в тексте. > > Текст > "A simple, easy to remember system for encoding integer > amounts can be very > useful. For example, dealers at flea markets put the > information about an item > on a card that they let potential buyers see. They find it > advantageous to > encode the amount they originally paid for the item on the > card.\nA good system > is to use a substitution code, in which each digit is > encoded by a letter. An > easy to remember 10-letter word or phrase, the key, is > chosen. Every '1' in the > value is replaced by the first letter of the key, every > '2' is replaced by the > second letter of the key, and so on. Every '0' is replaced > by the last letter of > the key. Letters that do not appear in the key can be > inserted anywhere without > affecting the value represented by the code.. This helps > to make the resulting > code much harder to break (without knowing the > key).\nCreate a class Substitute > that contains the method getValue that is given the > Strings key and code as > input and that returns the decoded value." > > Данил > From hrg на sama.ru Sat Sep 27 18:49:19 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 16:49:42 +0500: L>>> Как решить в одну строку это, я себе пока не представляю... L>>> поэтому если участники не против то критерием будет Benchmark?;-) YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) L> Чур CPAN непользоваться!!!:-)) "Как же так, Федор Михайлович"(С)Сеня Лютый my $width=40; my $text="A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my $format_str='^'.'>'x ($width-1)."~~\n"; foreach my $text (split (/\n/,$text)){ $text=~s/^\s+//; $text=~s/\s+$//; formline ($format_str,$text); print $^A; }; With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:49:19 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Peter Vereshagin -> "Re: потребление памяти." : PV> Thu, Sep 25, 2003 at 04:01:42PM +0500 Yury Kopyl YK>> поиск по контексут документа. Вроде такое было в MS SQL PV> ого. PV> а подробнее? Не помню. Чесна. Просто что-то подобное прообегало по fido7.ru.perl Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From lavei на mail.ru Sat Sep 27 18:51:14 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:57:33 +0500, Вы написали: ML> например: ML> в этом де скрипте используется ML> tie %iptraf, "DB_File", 'iptraf.db'; ML> который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то ML> пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет ML> (в простом случае) 3 млн (на самом деле несколько меньше ;) ML> Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Да, в этом их(db_file) плюс и есть. ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... правда не очень юзабельны...;-( ML> В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) Ну кинь суда свой код, посмотрим. Данил From combr на vesna.ru Sat Sep 27 18:51:15 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= Message-ID: Здравствуйте, перловые монгры! ;) кто присоветует? есть файл, большой. например, в нем 2 миллиона строк и 300 метров. я читаю его таким образом: while () { или open(AAA, ") { и затем @line=split(' '); конечно, оно работает, но при работе сразу занимает метров 400 памяти. соответственно, если файл - 300 метров, то в памяти процесс занимает (около) 550 метров. меня это как-то не устраивает ;) Предполагаю, что на каждую новую строку в памяти заводятся новые копии $_ и @line, но как этого избежать? -- Mike From combr на vesna.ru Sat Sep 27 18:51:41 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > я так понимаю, что это статистика? ;) конечно. > что есть "строки хеша". ключи, наверное? конечно ;) >ну а что в качестве значений этих ключей? небольшие (по обьему) цифры ;) > если результат настолько мал, то скорее всего наиболее оптимально хранить > в памяти во время обработки, а потом сохранять. это понятно. но как сохранять? я как-то придумал такую подпрограмму, в которую передается ссылка на хеш, а она : открывает tie копирует переданный хеш в точно такой же, но затиенный закрывает tie ;)) может, можно как-то более оригинально (без доп. модулей)? -- Mike From greg на webzavod.ru Sat Sep 27 18:51:41 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс > обработки лога (в строках/сек)? выносишь обработку одной строки в процедуру. Создаешь тестовый массив из нескольких строк лога и... use Benchmark; > использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да > и наверняка можно без установки доп. модулей обойтись. почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они выполнялись... когда волосы дыбом встают от постоянно растущего времени выполнения - приходит черед оптимизации ;))) > например, в логе сквида есть тысячные доли секунды, а time() выдает только > секунды. вот здесь не понял - разобъясни... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:51:41 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > а еще мона -d:DProf и невые... (ой не надо ногами) :) а еже ли никаких процедур в коде нету? окромя, конечно CORE:: что он покажет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:51:41 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB> и в чью пользу? db_file. GB> м.б. архитектура приложений различная была? Да, немного отличалась. в мускульной табличке по ключу было неск значений, а в db hash одна большая стринга;-) ну и соотв код был не много по другоум построен. Данил From greg на webzavod.ru Sat Sep 27 18:51:42 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > GB> и в чью пользу? > db_file. ни верю! -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:51:46 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> а еще мона -d:DProf и невые... (ой не надо ногами) :) GB> а еже ли никаких процедур в коде нету? окромя, конечно CORE:: GB> что он покажет? Честна затраченное время на выполнение основного. :)) Yury Kopyl aka hrg | http://id.totem.ru | "бысто сп..ил и ушел - называется нашел..." From greg на webzavod.ru Sat Sep 27 18:51:46 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > GB> > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > > контекст лови: фулл текст сёрч. а к Perl какое отношенье имеет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 18:51:48 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:10 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: > my @data=split (/?/,@ns) if (@ns); /?/ вот этим - ты что хотел сказать? ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 18:51:54 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:26:19 +0500, Вы написали: GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) я проверял на 6-7 га текста. в записях это было 6~7 млн. те запись была в cреднем 1к может чуть больше...не вспомню уже. точные данные сейчас не впомню, но различие было на порядок это 100 пудов. >Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы >нравятся... Мне сам по себе db импонирует;-) (прочитай PERFORMANCE для Tie:DBI.;-) Данил From hrg на sama.ru Sat Sep 27 18:51:55 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:10 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не >> будет GB> засрана. >> На некоторых задачах они бывают гораздо лучшим решением нежли какой >> либо GB> sql сервер... GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) <писькамерялка> Это 10-20Мб - большие объемы то?? GB> Может быть стоит попробовать Tie::DBI если уж тебе так притайеные GB> интерфейсы нравятся... tie работает крайне медлленах... сам же читал :)) Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From hrg на sama.ru Sat Sep 27 18:51:56 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg><200309251155.h8PBtv93019797@gateway.vdcom.ru><00c501c383e6$541b0700$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 10:48:52 +0500: L> PS а где можно почитать про форматы? L> perldoc -f formline слишком малоинформативен что то..;-( google :)) или пиши сюда, я одно время с ними очень хорошо с нимим (Афонина нет?) портахался With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Sat Sep 27 18:51:56 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > а что --- пёрл этого НЕ МОЖЕТ? под виндами - только при наличии соответсвующих оле-автомейшенов... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 18:51:57 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L>> Как решить в одну строку это, я себе пока не представляю... L>> поэтому если участники не против то критерием будет Benchmark?;-) L>> Задача : L>> Написать программу на perl выводящую текст в виде прямоугольника с L>> заданной шириной. L>> До заданной ширины строку следует дополнять пробелами, начиная с L>> левой её части. Параметр, определяющий ширину результирующего L>> прямоугольника, гарантированно больше, чем самое длинное слово, L>> встречающееся в тексте. L> В связи с возникшей неразберихой я предлагаю немного L> подкорректировать задание. L> 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у L> Евгена только последний символ "." куда то пропал -надо вернуть;-) L> в этом плане единственно верные. т.е. симлпа добиваем пробелы? L> 2. Абзацы не считаем L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) хм.... вот изврат L> 4. модули с CPAN попрежнему не приветствуются:-)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:51:57 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= References: Message-ID: Greg Belenky -> "А вот, какие итоги получились у меня..." : GB> Текст идентичный. Присланный Данилом. Для чичтоты эксперимента GB> возвращается функцией, чтобы тестируемые не могли на него повлиять. GB> Ширина - 50 символов. GB> Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, GB> marchenko... GB> eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ GB> 878.73/s (n=5000) GB> greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ GB> 803.86/s (n=5000) GB> hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ GB> 464.25/s (n=5000) GB> Rate marchenko greg eugene hrg lavei GB> marchenko 464/s -- -42% -47% -86% -86% GB> greg 804/s 73% -- -9% -75% -75% GB> eugene 879/s 89% 9% -- -73% -73% GB> hrg 3247/s 599% 304% 269% -- -0% GB> lavei 3247/s 599% 304% 269% 0% -- GB> А теперь посмотрим, что же на самом деле выдают наши алгоритмы... GB> (следующие 2 строки я нарисовал прям в постинге, чтобы можно было GB> оценить попадание в 50-символьную границу... GB> 10 20 30 40 50 GB> 123456789|123456789|123456789|123456789|123456789| GB> -------------------------------------------------- GB> lavei--------------------------------------------- GB> A simple, easy to remember system for encoding integer GB> amounts can be veryuseful. For example, dealers at flea markets GB> put the information about an itemon a card that they let GB> potential buyers see. They find it advantageous toencode the amount GB> they originally paid for the item on the card.A good systemis to GB> use a substitution code, in which each digit is encoded by a GB> letter. Aneasy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in thevalue is replaced by the first GB> letter of the key, every '2' is replaced by thesecond letter of GB> the key, and so on. Every '0' GB> is replaced by the last letter ofthe key. Letters that do GB> not appear in the key can be inserted anywhere withoutaffecting the GB> value represented by the code.. This helps to make the GB> resultingcode much harder to break (without knowing the GB> key).Create a class Substitutethat contains the method getValue GB> that is given the Strings key and code asinput and that GB> returns the decoded GB> hrg----------------------------------------------- GB> A simple, easy to remember system for encoding GB> integer amounts can be very useful. GB> For example, dealers at flea markets put GB> the information about an item on a card GB> that they let potential buyers see. They GB> find it advantageous to GB> encode the amount they originally paid for the GB> item on the card. GB> A good system is to use a GB> substitution code, in which each digit GB> is encoded by a letter. An easy to GB> remember 10-letter word or phrase, the GB> key, is chosen. Every '1' in the value is GB> replaced by the first letter of the key, GB> every '2' is replaced by the second GB> letter of the key, and so on. Every '0' is GB> replaced by the last letter of the key. GB> Letters that do not appear in the key can GB> be inserted anywhere without affecting the GB> value represented by the code.. This GB> helps to make the resulting code GB> much harder to break (without knowing the GB> key). GB> Create a class Substitute that contains GB> the method getValue that is given GB> the GB> Strings key and code as input GB> and that returns the decoded value. GB> greg---------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential buyers GB> see. They find it advantageous to encode the amount they GB> originally paid for the item on the card. A good system is to use a GB> substitution code, in which each digit is encoded by a letter. GB> An easy to remember 10-letter word or phrase, the key, is GB> chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that contains GB> the method getValue that is given the GB> Strings key and code as input and that returns the decoded value. GB> eugene-------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential GB> buyers see. They find it advantageous to encode the amount GB> they originally paid for the item on the card. A good system is GB> to use a substitution code, in which each digit is encoded by a GB> letter. An easy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that GB> contains the method getValue that is given the GB> Strings key and code as input and that returns the decoded GB> value marchenko----------------------------------------- GB> Asimple,easytoremembersystemforencodinginteger GB> amountscanbeveryuseful.Forexample,dealersatflea GB> marketsputthe informationaboutanitemonacardthattheyletpotential GB> buyerssee.Theyfindit GB> advantageoustoencodetheamounttheyoriginallypaid GB> fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich GB> eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor GB> phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst GB> letterofthekey,every GB> '2'isreplacedbythesecondletterofthekey,andsoon. GB> Every'0'isreplaced GB> bythelastletterofthekey.Lettersthatdonotappearin GB> thekeycanbe insertedanywherewithoutaffectingthevalue GB> representedbythecode..Thishelps GB> tomaketheresultingcodemuchhardertobreak(without GB> knowingthe key).CreateaclassSubstitutethatcontainsthemethod GB> getValuethatisgiventhe GB> Stringskeyandcodeasinputandthatreturnsthedecoded GB> value. GB> -------------------------------------------------- Насчет правильности: Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. Поробуйте потестить на реальных текстах. Yury Kopyl aka hrg | http://id.totem.ru | "Сегодня с нами ты не пьешь, а завтра Родине изменишь!" From lavei на mail.ru Sat Sep 27 18:51:59 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INLV09PLycogXHcg1yD19OYtOA==?= In-Reply-To: <20030925141426.GN25088@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 14:15:56 +0000 (UTC), Вы написали: PV> или хотя бы [a-zA-Z0-9] [А-Яа-я0-9] Данил From lavei на mail.ru Sat Sep 27 18:51:59 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 16:15:29 +0500, Вы написали: GB> @a в скалярном контексте интерпретируется как число элементов массива. т.к. GB> число элементов не может быть неопределенным числом, зато может быть GB> нулевым, то выражение defined @a _всегда_ истино. не всегда my @a =(); print "Ok" if defined @a; ничего не выдаст. ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) . надо делать вот так undef@a; undef это функция такая ваащето;-) perldoc -f undef Данил From greg на webzavod.ru Sat Sep 27 18:51:59 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: Верещагин! Пиши понятнее, а то приходится догадываться, что ты до нас хотел донести... Договорились? > text=~s/^\\\\(.+)$/$1/g; х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? з.ы. для того, чтобы отрезать от строки 2 слеша спереди, необязательно пользоваться регулярными выраженьями: undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; з.з.ы. к тому же и работает в 2 раза быстрее регвыров... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 18:52:00 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?y9LV1MHRINTSwdfB?= Message-ID: http://www.linux.org.ru/view-message.jsp?msgid=392747 -- Mike From greg на webzavod.ru Sat Sep 27 18:51:57 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF=C7=C9_?= Message-ID: Текст идентичный. Присланный Данилом. Для чичтоты эксперимента возвращается функцией, чтобы тестируемые не могли на него повлиять. Ширина - 50 символов. Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, marchenko... eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ 878.73/s (n=5000) greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ 803.86/s (n=5000) hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ 3246.75/s (n=5000) lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ 3246.75/s (n=5000) marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ 464.25/s (n=5000) Rate marchenko greg eugene hrg lavei marchenko 464/s -- -42% -47% -86% -86% greg 804/s 73% -- -9% -75% -75% eugene 879/s 89% 9% -- -73% -73% hrg 3247/s 599% 304% 269% -- -0% lavei 3247/s 599% 304% 269% 0% -- А теперь посмотрим, что же на самом деле выдают наши алгоритмы... (следующие 2 строки я нарисовал прям в постинге, чтобы можно было оценить попадание в 50-символьную границу... 10 20 30 40 50 123456789|123456789|123456789|123456789|123456789| -------------------------------------------------- lavei--------------------------------------------- A simple, easy to remember system for encoding integer amounts can be veryuseful. For example, dealers at flea markets put the information about an itemon a card that they let potential buyers see. They find it advantageous toencode the amount they originally paid for the item on the card.A good systemis to use a substitution code, in which each digit is encoded by a letter. Aneasy to remember 10-letter word or phrase, the key, is chosen. Every '1' in thevalue is replaced by the first letter of the key, every '2' is replaced by thesecond letter of the key, and so on. Every '0' is replaced by the last letter ofthe key. Letters that do not appear in the key can be inserted anywhere withoutaffecting the value represented by the code.. This helps to make the resultingcode much harder to break (without knowing the key).Create a class Substitutethat contains the method getValue that is given the Strings key and code asinput and that returns the decoded hrg----------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. greg---------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. eugene-------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value marchenko----------------------------------------- Asimple,easytoremembersystemforencodinginteger amountscanbeveryuseful.Forexample,dealersatflea marketsputthe informationaboutanitemonacardthattheyletpotential buyerssee.Theyfindit advantageoustoencodetheamounttheyoriginallypaid fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst letterofthekey,every '2'isreplacedbythesecondletterofthekey,andsoon. Every'0'isreplaced bythelastletterofthekey.Lettersthatdonotappearin thekeycanbe insertedanywherewithoutaffectingthevalue representedbythecode..Thishelps tomaketheresultingcodemuchhardertobreak(without knowingthe key).CreateaclassSubstitutethatcontainsthemethod getValuethatisgiventhe Stringskeyandcodeasinputandthatreturnsthedecoded value. -------------------------------------------------- begin 666 wrap.pl M=7-E('-T2!L970@<&]T96YT:6%L(&)U>65R2!P86ED(&9O2P@:7,@"F-H;W-E;BX@179E2!T:&4@9FER2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,@2DN7&Y#S$L)'!O:6YT?2D@+V2 H)'=I9'1H+" D=&5X="D@/2! 7SL* M("!M>2 D9F]R;6%T7W-T" H)'=I9'1H+3$I+B)^?EQN(CL* M("!M>2 D9&5L7V)E9F]R93UQ7',K+R]].PH@(&UY("1D96Q?869T M97(@/7%R>R!S+UQS*R0O+WT["B @;7D@)&)U9CL*("!F;W)E86-H(&UY("1T M97AT("AS<&QI=" H+UQN+RPD=&5X="DI>PH@("!L;V-A;" D7D$["B @("1T M97AT/7XD9&5L7V)E9F]R93L*(" @)'1E>'0]?B1D96Q?869T97(["B @(&9O M03L*("!] M"B @2 H)'=I9'1H+" D M2! =W)A<" ]("@I.PH@(&9O M2 D<" ]('!OPH@(" @(" @(" @<&]S*" D=W)A<%LD M:5T@*2 ](# ["B @(" @(" @?0H@(" @("!]("1I*RL["B @("!]("1W'0@/7X@2! 2 DR DR DR!M87)C:&5N:V\H(#4P+"!S='(@*2!]+ I] M*3L*"G!R:6YT(")<;EQN7&XB+" G+2<@>" U,"P@(EQN(CL*"G!R:6YT(")< M;FQA=F5I(B N("" H M-3 M;&5N9W1H*"=H" H-3 M;&5N9W1H*"=E=6=E;F4G*2DL(")<;B(["G!R:6YT(&5U M9V5N92@U,"P@" H M-3 M;&5N9W1H*"=M87)C:&5N:V\G*2DL(")<;B(["G!R:6YT(&UA" U,"P@(EQN(CL*"E]? &14Y$7U\* ` end begin 666 results.dat M0F5N8VAM87)K.B!T:6UI;F<@-3 P,"!I=&5R871I;VYS(&]F(&5U9V5N92P@ M9W)E9RP@:')G+"!L879E:2P@;6%R8VAE;FMO+BXN"B @("!E=6=E;F4Z(" V M('=A;&QC;&]C:R!S96-S("@@-2XV-2!U7,@/2 @-2XV M.2!#4%4I($ @.#75S969U;"X@1F]R(&5X86UP;&4L"B @9&5A M;&5R2!F:6YD(&ET(&%D=F%N=&%G96]U7-T96UI2!A(&QE='1E2!T:&4*("!F:7)S="!L971T97(@;V8@=&AE(&ME>2P@979E0H@(" @ M=&AE(&-O9&4N+B!4:&ES(&AE;'!S('1O(&UA:V4@=&AE(')E2!A;F0*(" @(" @(" @(&-O9&4@87-I;G!U M="!A;F0@=&AA="!R971U2!T;R!R96UE;6)E7-T96T@9F]R(&5N8V]D:6YG"B @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&EN=&5G M97(*(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&%M;W5N=',@8V%N M(&)E('9E&%M<&QE+"!D96%L97)S(&%T(&9L M96$@;6%R:V5T7-T96T*:7,@=&\@=7-E(&$@2!T;R!R96UE;6)E2 G M,2<@:6X@=&AE"B!V86QU92!I2!T:&4@9FER2!T:&4*('-E8V]N9"!L971T97(@;V8@ M=&AE(&ME>2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,*(" @(" @(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @("!R97!L86-E9 H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(&)Y('1H92!L87-T(&QE='1E2!L970@<&]T M96YT:6%L(&)U>65R2 @=&AE("!F:7)S=" @;&5T=&5R("!O9B @=&AE("!K97DL(&5V M97)Y("7=H97)E('=I=&AO=70@869F96-T:6YG('1H92!V86QU90IR97!R97-E;G1E M9" @8GD@('1H92!C;V1E+BX@5&AI2DN($-R96%T92!A(&-L87-S(%-U8G-T:71U M=&4@=&AA= IC;VYT86EN2!A;F0@8V]D92!A2 @9FEN9" @:70@ M(&%D=F%N=&%G96]U2 @ M;W)I9VEN86QL>2 @<&%I9" @9F]R('1H92!I=&5M(&]N('1H90IC87)D+B @ M02!G;V]D('-Y2 @=&AE M("!S96-O;F0@;&5T=&5R(&]F('1H92!K97DL(&%N9"!S;PIO;BX@($5V97)Y M(" G,"<@(&ES("!R97!L86-E9"!B>2!T:&4@;&%S="!L971T97(@;V8*=&AE M("!K97DN($QE='1E6QE='!O=&5N=&EA; H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @("!B=7EE69I;F1I= H@ M("!A9'9A;G1A9V5O=7-T;V5N8V]D971H96%M;W5N='1H97EO7-T96UI6%L971T97(N06YE M87-Y=&]R96UE;6)E2QI22QE=F5R M>0H@(" G,B=I2QA M;F1S;V]N+@H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @($5V97)Y M)S G:7-R97!L86-E9 H@(&)Y=&AE;&%S=&QE='1E71H96-O9&4N+E1H:7-H96QP2DN0W)E871E86-L87-S4W5B Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L> L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) И еще: квадрат - это n строк х n столбцов или все-таки визуальный квадрат в текстовом режиме? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 18:52:00 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= References: Message-ID: Greg Belenky -> "Re: А вот, какие итоги получились у меня..." : >> Почти все алгоритмы не учитывают переносы строк в исходном тексте, >> вернее они просто заменяют их на пробелы, склеиваяя строку. Это не >> правильно. >> Поробуйте потестить на реальных текстах. GB> Тогда нужно было оговориться, что абзацы ограничены \n а не GB> внутренними переводами строки. Тогда, в любом случае, необходим GB> препроцессинг текста перед передачей его алгоритму... нет? Да. изначально задача была поставлена не совсем корректна. Препроцессинг нужен. Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From greg на webzavod.ru Sat Sep 27 18:52:02 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: > text=~s/^\\\\(.+)$/$1/g; и модификатор /g тут особого смысла не имеет, потому как в регвыре ты описываешь всю строку ^...$ -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 19:01:20 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > логи? конечно. сквида. > попробуй так: > while (my $line = ) { > my @line = split ' ', $line; > по идее после конца цикла переменные $line и @line должны высвыбождаться, > т.к. они вышли за пределы блока. дааа , блин, радикально ! спасибо за предложения ;) %CPU %MEM 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > p.s. > use strict; давно ;) а как это относится к памяти? у меня, правда, все my стоят вначале скрипта.. -- Mike From lavei на mail.ru Sat Sep 27 19:01:20 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 12:51:37 +0500, Вы написали: YK> <писькамерялка> YK> Это 10-20Мб - большие объемы то?? YK> Понеслась..;-)) Колись, Юр, какой у тебя объем;-))) Данил From hrg на sama.ru Sat Sep 27 19:01:21 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Mike Lykov -> "потребление памяти." : ML> Здравствуйте, перловые монгры! ;) ML> кто присоветует? ML> есть файл, большой. например, в нем 2 миллиона строк и 300 метров. ML> я читаю его таким образом: ML> while () { ML> или open(AAA, " foreach () { ML> и затем @line=split(' '); ML> конечно, оно работает, но при работе сразу занимает метров 400 ML> памяти. ML> соответственно, если файл - 300 метров, то в памяти процесс занимает ML> (около) ML> 550 метров. ML> меня это как-то не устраивает ;) ML> Предполагаю, что на каждую новую строку в памяти заводятся новые ML> копии $_ и @line, но как этого избежать? Скажи, что ты с этим строками делаешь? Обязательно хранить в мозгах все? Yury Kopyl aka hrg | http://id.totem.ru | "Если ты плюнешь на коллектив - коллектив утрется, но если коллектив плюнет на тебя - ты утонешь" (С)Баралгин From greg на webzavod.ru Sat Sep 27 19:01:23 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: perldoc -q memory -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:01:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. > На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы нравятся... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 19:01:20 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:33:55 +0500, Вы написали: ML> у меня, правда, все my стоят вначале скрипта.. А смысл? my нужен для объявления переменных в области видимости. те если тебе $line нужен в области видимости цикла то и объявляй тама. после выхода и области цикла он должен быть убит, как тебе уже написали. в твоем случае ты продолжаешь таскать за собой эту переменную по всему коду... Данил From greg на webzavod.ru Sat Sep 27 19:01:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > <писькамерялка> > Это 10-20Мб - большие объемы то?? > там же русским по белому написано ">10-20Mb" это значить "БОЛЬШЕ 10-20 Мегабайт.. а там и 100 и 300 и до гига недалеко... > tie работает крайне медлленах... сам же читал :)) Ну не медленно он работает... просто использование замещается методами объекта притайенного класса. Зато код легче читается ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:01:20 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > дааа , блин, радикально ! > спасибо за предложения ;) > %CPU %MEM > 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl помогло? > > use strict; > > давно ;) > а как это относится к памяти? > у меня, правда, все my стоят вначале скрипта.. то, что эти переменные у тебя никогда за пределы видимости не выходят, и память, которую они занимают не отдается обратно. Когда ты так описываешь переменную внутри блока, то как только счетчик референсесов на нее обнуляется - перловый сборщик мусора должен по идее освоботить память, которая использовалась для нее. -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:01:23 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: Кто тебя учил так квотить? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:01:23 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > есть файл, большой. например, в нем 2 миллиона строк и 300 метров. логи? > open(AAA, " foreach () { foreach в данном случае не канает - по одной простой причине, что _ДО_ начала цикла весь файл считывается и создается _СПИСОК_ строк, по которым потом и организуется цикл. попробуй так: while (my $line = ) { my @line = split ' ', $line; ... } по идее после конца цикла переменные $line и @line должны высвыбождаться, т.к. они вышли за пределы блока. p.s. use strict; -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 19:01:24 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : GB> Кто тебя учил так квотить? Ацтань, зануда :)) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From combr на vesna.ru Sat Sep 27 19:01:25 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Yury Kopyl писал: > tie работает крайне медлленах... сам же читал :)) блинблин. а кто работает не медленно? (и немедленно? ;) какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом как-то его кидать на диск для сохранения? ;) -- Mike From greg на webzavod.ru Sat Sep 27 19:01:25 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > точные данные сейчас не впомню, но различие было на порядок это 100 пудов. и в чью пользу? м.б. архитектура приложений различная была? у меня - демон ;) которому нужно было вести несколько логов... > (прочитай PERFORMANCE для Tie:DBI.;-) да уж... жопа. беру свои слова взад. з.ы. сам ни разу не использовал ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 19:01:26 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= Message-ID: Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс обработки лога (в строках/сек)? Учитывая то, что скрипт может работать, например, 0.1 сек ;) использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да и наверняка можно без установки доп. модулей обойтись. например, в логе сквида есть тысячные доли секунды, а time() выдает только секунды. -- Mike From hrg на sama.ru Sat Sep 27 19:01:28 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> и наверняка можно без установки доп. модулей обойтись. GB> почему? у меня все скриптики, которые сидят на кроне пишуть, сколько GB> они выполнялись... когда волосы дыбом встают от постоянно растущего GB> времени выполнения - приходит черед оптимизации ;))) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. GB> вот здесь не понял - разобъясни... а еще мона -d:DProf и невые... (ой не надо ногами) :) Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From hrg на sama.ru Sat Sep 27 19:01:29 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> tie работает крайне медлленах... сам же читал :)) GB> Ну не медленно он работает... просто использование замещается GB> методами объекта притайенного класса. Зато код легче читается ;) Мля... спутал с оверлоадом. Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From combr на vesna.ru Sat Sep 27 19:01:29 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?ydrNxdLFzsnFINDF0sbPzcHO08E=?= References: Message-ID: Greg Belenky писал: >> Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс >> обработки лога (в строках/сек)? > выносишь обработку одной строки в процедуру. Создаешь тестовый массив из > нескольких строк лога и... > use Benchmark; а почему не : $t0 = new Benchmark; # ... your code here ... $t1 = new Benchmark; $td = timediff($t1, $t0); print "the code took:",timestr($td),"\n"; ? это проще вставить в готовый скрипт ;) > почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они > выполнялись... И у меня будут, раз этот Benchmark входит в поставку ;) >> например, в логе сквида есть тысячные доли секунды, а time() выдает >> только секунды. > вот здесь не понял - разобъясни... perl -e 'print time;' выдает время с точностью 1 секунда - а то я хотел уже было просто time() использовать. Сквид, конечно, использует свою процедуру вычисления текущего времени ;) -- Mike From greg на webzavod.ru Sat Sep 27 19:01:30 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > а почему не : > ? это проще вставить в готовый скрипт ;) ну.. я использую Бенчмарк для того, чтобы выяснить, какая программная конструкция работает быстрее. обычно это маленькие кусочки кода и использую я cmpthese... > И у меня будут, раз этот Benchmark входит в поставку ;) мне не больно понравилось, в каком виде это все выдается... Time::HiRes ловчее ;) например: use strict; use Benchmark; use Time::HiRes; my $t1 = Benchmark->new(); my $h1 = time(); sleep(5); my $i = 1; $i++ for (1...100_000); my $h2 = time(); my $t2 = Benchmark->new(); print timestr(timediff($t2, $t1), 'auto', '.05f'), "\n"; printf "%.5f\n", $h2 - $h1; __END__ From greg на webzavod.ru Sat Sep 27 19:01:30 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > какие еще варианты, кроме как ничего не тиить сначала, держать хеш в памяти > (он небольшой - из 3 млн строк лога выходит строк 300-400 хеша), а потом > как-то его кидать на диск для сохранения? ;) я так понимаю, что это статистика? ;) что есть "строки хеша". ключи, наверное? ну а что в качестве значений этих ключей? если результат настолько мал, то скорее всего наиболее оптимально хранить в памяти во время обработки, а потом сохранять. вариантов - море... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:01:31 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > хинт: евфрат --- оффтопик. Я понимаю, что краткость - сестра таланта... но не в этом случае. Дообъясни? Какую мысль донести-то хотел? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 19:01:31 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: LaVei -> "Re: потребление памяти." : L> Здраствуйте, "Greg Belenky" ! L> в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB>> и в чью пользу? L> db_file. GB>> м.б. архитектура приложений различная была? L> Да, немного отличалась. L> в мускульной табличке по ключу было неск значений, а в db hash одна L> большая стринга;-) L> ну и соотв код был не много по другоум построен. а индексы юзал? а фулл текс серч? :) Yury Kopyl aka hrg | http://id.totem.ru | "мы не пьем - мы лечимся..." From lavei на mail.ru Sat Sep 27 19:01:31 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 14:35:06 +0500, Вы написали: GB> ни верю! Мамой клянус!;-) Если будет время я попробую воссоздать ситуацию и сделать бенчмарки..(МОЖЕТ с порядком я и погорячился;-) но разницу я думаю будет видна. Данил From lavei на mail.ru Sat Sep 27 19:01:32 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Yury Kopyl" ! в Thu, 25 Sep 2003 14:43:37 +0500, Вы написали: YK> а индексы юзал? Угу. YK>а фулл текс серч? :) Э... это самое... я его пытался как раз реализовать;-) прикинь как раньше(3 года назад) люди мучались?;-)) Данил From hrg на sama.ru Sat Sep 27 19:01:32 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? >> хинт: евфрат --- оффтопик. GB> Я понимаю, что краткость - сестра таланта... но не в этом случае. GB> Дообъясни? Какую мысль донести-то хотел? поиск по контексут документа. Вроде такое было в MS SQL Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Пошло все на.... ] From hrg на sama.ru Sat Sep 27 19:01:33 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Mike Lykov -> "undef насчет всего списка сразу" : ML> Сегодня день вопросов, не так ли? ;) ML> поскольку все равно никто не пишет сюда, задам и третий вопрос ;) ML> @a=("undef"); ML> #@a=(1); ML> if (defined @a) { print "aaa!"; }; ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ML> .... ML> вопрос возник в связи с таким куском: ML> usr Net::Nslookup; ML> @ns=nslookup(...) ML> в цикле оно может возвратить список (вероятно, из одного элемента, ML> но иногда и больше), или вообще ничего не возвратить. ML> если дальше делать, допустим, split на каждое значение из @ns, то ML> если не было ничего возвращено, то идет ругань на использование ML> неинициализированных значений. don't ebi mosk! :) usr Net::Nslookup; my @ns=nslookup(...) my @data=split (/?/,@ns) if (@ns); ML> обычно определить, инициализировано ли значение, или нет, можно с ML> помощью if (defined ..), но на переменные действует, а на списки ML> нет. что бы сделать? Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From combr на vesna.ru Sat Sep 27 19:01:33 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Peter Vereshagin писал: > Thu, Sep 25, 2003 at 03:59:54PM +0500 Mike Lykov > ML> @a=("undef"); > @a=undef; см. внимательнее вопрос - такой вариант был. (печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) ....) -- Mike From greg на webzavod.ru Sat Sep 27 19:01:34 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: @a в скалярном контексте интерпретируется как число элементов массива. т.к. число элементов не может быть неопределенным числом, зато может быть нулевым, то выражение defined @a _всегда_ истино. > @a=("undef"); > #@a=(1); эти 2 присваивания - примерно из одной оперы... строка "undef" это вполне определенное значение. > if (defined @a) { print "aaa!"; }; > печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... см. в начале ответа. > usr Net::Nslookup; > @ns=nslookup(...) > > в цикле оно может возвратить список (вероятно, из одного элемента, но иногда > и больше), или вообще ничего не возвратить. > если дальше делать, допустим, split на каждое значение из @ns, то если не > было ничего возвращено, то идет ругань на использование > неинициализированных значений. foreach my $name (@ns) { next unless defined $name; ... } -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 19:01:35 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= Message-ID: Сегодня день вопросов, не так ли? ;) поскольку все равно никто не пишет сюда, задам и третий вопрос ;) @a=("undef"); #@a=(1); if (defined @a) { print "aaa!"; }; печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) .... вопрос возник в связи с таким куском: usr Net::Nslookup; @ns=nslookup(...) в цикле оно может возвратить список (вероятно, из одного элемента, но иногда и больше), или вообще ничего не возвратить. если дальше делать, допустим, split на каждое значение из @ns, то если не было ничего возвращено, то идет ругань на использование неинициализированных значений. обычно определить, инициализировано ли значение, или нет, можно с помощью if (defined ..), но на переменные действует, а на списки нет. что бы сделать? -- Mike From greg на webzavod.ru Sat Sep 27 19:01:36 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: > print "Ok" if defined @a; упс... прогнал... позор мне... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 19:01:36 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to on Thu, 25 Sep 2003 16:30:07 +0500: L> Как решить в одну строку это, я себе пока не представляю... L> поэтому если участники не против то критерием будет Benchmark?;-) L> Задача : L> Написать программу на perl выводящую текст в виде прямоугольника с L> заданной шириной. L> До заданной ширины строку следует дополнять пробелами, начиная с L> левой её части. Параметр, определяющий ширину результирующего L> прямоугольника, гарантированно больше, чем самое длинное слово, L> встречающееся в тексте. L> Текст "A simple, easy to remember system for encoding integer L> amounts can be very useful. For example, dealers at flea markets put L> the information about an item on a card that they let potential L> buyers see. They find it advantageous to encode the amount they L> originally paid for the item on the card.\nA good system is to use a L> substitution code, in which each digit is encoded by a letter. An L> easy to remember 10-letter word or phrase, the key, is chosen. Every L> '1' in the value is replaced by the first letter of the key, every L> '2' is replaced by the second letter of the key, and so on. Every '0' L> is replaced by the last letter of the key. Letters that do not L> appear in the key can be inserted anywhere without affecting the L> value represented by the code.. This helps to make the resulting L> code much harder to break (without knowing the key).\nCreate a class L> Substitute that contains the method getValue that is given the L> Strings key and code as input and that returns the decoded value." http://search.cpan.org/search?query=wrap&mode=all - это? :)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 19:01:37 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= References: Message-ID: Greg Belenky -> "Re: undef насчет всего списка сразу" : >> my @data=split (/?/,@ns) if (@ns); GB> /?/ GB> вот этим - ты что хотел сказать? ;) типа проехали (в оригинале - выражение для сплита) Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." From lavei на mail.ru Sat Sep 27 19:01:37 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925111513.GB24517@least.beast> References: Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:16:42 +0000 (UTC), Вы написали: PV> @a=undef; присвоить массиву a значение возвращаемое функцией undef??;-) Данил From lavei на mail.ru Sat Sep 27 19:01:38 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: <20030925113515.GB25088@least.beast> References: Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 11:36:44 +0000 (UTC), Вы написали: PV> это значение не имеет права быть рассмотренным в контексте массива? Имеет;-) У нас равноправие.;-) Данил From greg на webzavod.ru Sat Sep 27 19:03:24 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:11 2004 Subject: =?iso-8859-1?q?Re=3A_=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF?= References: Message-ID: > Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее > они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. > Поробуйте потестить на реальных текстах. Тогда нужно было оговориться, что абзацы ограничены \n а не внутренними переводами строки. Тогда, в любом случае, необходим препроцессинг текста перед передачей его алгоритму... нет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From e_skachkov на diamond.ru Sat Sep 27 19:03:24 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, decoded value.`; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; my $len = length$text; my $point = (int(sqrt($len))+1);#(c) Lavei. while ( $text =~ s/^(.{1,$point}[ |.])(.*)$/$2/ ) #Updated by Lavei { my $str = $1; #Updated by Lavei $str=~ s/ $//;#Updated by Lavei my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Вот и мое произведение тока с данилиным копирайтом С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From combr на vesna.ru Sat Sep 27 19:03:24 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:11 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: %CPU %MEM >> 26134 combr 15 0 2776 2776 1824 R 91.8 0.5 0:27 sqiptraf.pl > помогло? ага. надо еще что-нибудь заоптимизировать. например: в этом де скрипте используется tie %iptraf, "DB_File", 'iptraf.db'; который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет (в простом случае) 3 млн (на самом деле несколько меньше ;) Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Будет ли быстрее работать в памяти? (хотя в perldoc -q memory пишут обратное - чтобы освободить память, обращайтесь к диску ;) В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) >> > use strict; >> давно ;) >> а как это относится к памяти? >> у меня, правда, все my стоят вначале скрипта.. > > то, что эти переменные у тебя никогда за пределы видимости не выходят, Я так и подумал, поэтому и написал, что вначале скрипта стоят.. ;) -- Mike From greg на webzavod.ru Sat Sep 27 19:03:24 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: > GB> х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? > вот и я тоже подумал, а где его смотреть? perldoc Devel::Peek -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From e_skachkov на diamond.ru Sat Sep 27 19:03:24 2003 From: e_skachkov на diamond.ru (Skachkov Eugene) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UkU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= Message-ID: #!/usr/bin/perl use strict; my $text = qq`A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value.`; my $point = $ARGV[0]; $text =~ s/\n/ /g; $text =~ s/\s+/ /g; while ( $text =~ s/^(.{1,$point})[ |.](.*)$/$2/ ) { my (@words,$length); my $remainder = $point - ( length($1) ); $length = @words = split (' ', $1); my $isidenumber = 0; for (0 .. $remainder) { $words[$isidenumber++] .= ' '; $isidenumber = 0 if ($isidenumber == $#words); } my $string = join (' ',@words); print $string . "\n"; } Ето мой скромный вариантик С уважением, программист Скачков Евгений Иванович. mailto:e_skachkov@diamond.ru ICQ: #81891536 Компания "Diamond Communications". Телефоны: (095) 956-6676 добавочный 2346 http://www.diamond.ru/ From lavei на mail.ru Sat Sep 27 19:03:24 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INDSz8TPzNbFzsnFIMLBzsvF1MEs?= In-Reply-To: <20030926123709.GX2882@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: Здраствуйте, Peter Vereshagin ! в Fri, 26 Sep 2003 12:38:40 +0000 (UTC), Вы написали: PV> Fri, Sep 26, 2003 at 03:44:04PM +0500 Greg Belenky GB>> пользоваться регулярными выраженьями: GB>> undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; PV> и что --- вот такое удаление карстовых пустот: PV> $text=~s/[\n\r]//gm; $text=~s/^\s+//; $text=~s/\s+$//; PV> будет работать быстрее через pos() и substr()? Проверь Benchmark'ом а вообще имхо будет. регекспы почти всегда сосут у substr Данил From combr на vesna.ru Sat Sep 27 19:08:25 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:12 2004 Subject: undef =?koi8-r?b?zsHT3sXUINfTxcfPINPQydPLwSDT0sHa1Q==?= References: Message-ID: Greg Belenky писал: > @a в скалярном контексте интерпретируется как число элементов массива. > т.к. число элементов не может быть неопределенным числом, зато может быть > нулевым, то выражение defined @a _всегда_ истино. вопщим, как обычно - получилось тупо от нечтения документации.. ;)) -- Mike From hrg на sama.ru Sat Sep 27 19:08:25 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:20:52 +0500: YK>> foreach my $text (split (/\n/,$text)){ L> А цикл для чего? Для абзацев. т.е если в строке есть символы переноса, то строка начнется заново. With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 19:08:25 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 18:26:59 +0500: L> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L> 406504.07/s (n=500000) L> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L> 236966.82/s (n=500000) L> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L> 568181.82/s (n=500000) L> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L> 242718.45/s (n=500000) L> Rate LaVei hrg Evgen Yury L> LaVei 236967/s -- -2% -42% -58% L> hrg 242718/s 2% -- -40% -57% L> Evgen 406504/s 72% 67% -- -28% L> Yury 568182/s 140% 134% 40% -- Кстате, если интересует быстродействие,а не меньшее кол-во строк мона сделать еще так: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr{ s/^\s+//}; my $del_after =qr{ s/\s+$//}; my $buf; foreach my $text (split (/\n/,$text)){ $text=~$del_before; $text=~$del_after; formline ($format_str,$text); $buf.=$^A; }; print $buf; И еще - ты сравнивал при одинаковой ширине при разбиении для всех алгоритмов? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 19:08:25 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 05:31:13PM +0500 Yury Kopyl YKYKL>>>>> Написать программу на perl выводящую текст в виде YKYKL>>>>> прямоугольника с заданной шириной. YKYK>>>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) YKPV>>> форматы --- причмокивают? YK>> Нет. PV> а чем хуже? Хз...надо пробовать Yury Kopyl aka hrg | http://id.totem.ru | Все вышесказанное является моим личным мнением и может быть использовано против вас From greg на webzavod.ru Sat Sep 27 19:08:29 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=F4=D2=C1=D7=C1_=D0=C5=D2=CC=2E=2E=2E=C6=D3?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: sub greg { my ($width, $str) = @_; my $i = 0; my @wrap = (); foreach (split /\s+/, $str) { unless (length( $wrap[$i] ) + length() + 1 <= $width) { while (length( $wrap[$i] ) < $width) { if ($wrap[$i] =~ /(\S)(\s)/sg) { substr($wrap[$i], (my $p = pos( $wrap[$i] ))-1, 1) = $2x2; pos( $wrap[$i] ) = $p; } else { pos( $wrap[$i] ) = 0; } } $i++; } $wrap[$i] .= ($wrap[$i] && ' ') . $_; } return join "\n", @wrap; } з.ы. ну... не знаю, как Данила и что тестил и сравнивал - у меня прально работал только вариант Жени Скачкова (прально перевел с англицкого?) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 19:08:29 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTJ0MEg0NLPzcXW1dTP3s7ZxSDJ1M/HyTstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><200309251202.h8PC2493019909@gateway.vdcom.ru> Message-ID: Hello, Yury! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 09:36:28 +0500: YK> Hello, LaVei! YK> You wrote to "Samara (Russia) Perl Mongers" YK> on Thu, 25 Sep 2003 18:26:59 +0500: L>> Benchmark: timing 500000 iterations of Evgen, LaVei, Yury, hrg... L>> Evgen: 0 wallclock secs ( 1.23 usr + 0.00 sys = 1.23 CPU) @ L>> 406504.07/s (n=500000) L>> LaVei: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ L>> 236966.82/s (n=500000) L>> Yury: 2 wallclock secs ( 0.88 usr + 0.00 sys = 0.88 CPU) @ L>> 568181.82/s (n=500000) L>> hrg: 3 wallclock secs ( 2.06 usr + 0.00 sys = 2.06 CPU) @ L>> 242718.45/s (n=500000) L>> Rate LaVei hrg Evgen Yury L>> LaVei 236967/s -- -2% -42% -58% L>> hrg 242718/s 2% -- -40% -57% L>> Evgen 406504/s 72% 67% -- -28% L>> Yury 568182/s 140% 134% 40% -- YK> Кстате, если интересует быстродействие,а не меньшее кол-во строк YK> мона сделать еще так: YK> my $format_str='^'.'>'x ($width-1)."~~\n"; YK> my $del_before=qr{ s/^\s+//}; YK> my $del_after =qr{ s/\s+$//}; YK> my $buf; YK> foreach my $text (split (/\n/,$text)){ YK> $text=~$del_before; YK> $text=~$del_after; YK> formline ($format_str,$text); YK> $buf.=$^A; YK> }; YK> print $buf; YK> И еще - ты сравнивал при одинаковой ширине при разбиении для всех YK> алгоритмов? Поправка к последнему варианту: my $format_str='^'.'>'x ($width-1)."~~\n"; my $del_before=qr /^\s+/o; my $del_after =qr /\s+$/o; my $buf; foreach my $text (split (/\n/,$text)){ $text=~s/$del_before//; $text=~s/$del_after//; formline ($format_str,$text); $buf.=$^A; }; print $buf; YK> With best regards, Yury Kopyl. E-mail: hrg@sama.ru With best regards, Yury Kopyl. E-mail: hrg@sama.ru From combr на vesna.ru Sat Sep 27 19:08:42 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= Message-ID: Здравствуйте, перловые монгры! ;) кто присоветует? есть файл, большой. например, в нем 2 миллиона строк и 300 метров. я читаю его таким образом: while () { или open(AAA, ") { и затем @line=split(' '); конечно, оно работает, но при работе сразу занимает метров 400 памяти. соответственно, если файл - 300 метров, то в памяти процесс занимает (около) 550 метров. меня это как-то не устраивает ;) Предполагаю, что на каждую новую строку в памяти заводятся новые копии $_ и @line, но как этого избежать? -- Mike From combr на vesna.ru Sat Sep 27 19:08:42 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?0M/U0sXCzMXOycUg0MHN0dTJLg==?= References: Message-ID: Greg Belenky писал: > я так понимаю, что это статистика? ;) конечно. > что есть "строки хеша". ключи, наверное? конечно ;) >ну а что в качестве значений этих ключей? небольшие (по обьему) цифры ;) > если результат настолько мал, то скорее всего наиболее оптимально хранить > в памяти во время обработки, а потом сохранять. это понятно. но как сохранять? я как-то придумал такую подпрограмму, в которую передается ссылка на хеш, а она : открывает tie копирует переданный хеш в точно такой же, но затиенный закрывает tie ;)) может, можно как-то более оригинально (без доп. модулей)? -- Mike From greg на webzavod.ru Sat Sep 27 19:08:43 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > Раз уж заговорили о мерянии, то как бы вы предложили измерять перфоманс > обработки лога (в строках/сек)? выносишь обработку одной строки в процедуру. Создаешь тестовый массив из нескольких строк лога и... use Benchmark; > использовал Time::HiRes, но кажется, оно тут как их пушки (по воробьям), да > и наверняка можно без установки доп. модулей обойтись. почему? у меня все скриптики, которые сидят на кроне пишуть, сколько они выполнялись... когда волосы дыбом встают от постоянно растущего времени выполнения - приходит черед оптимизации ;))) > например, в логе сквида есть тысячные доли секунды, а time() выдает только > секунды. вот здесь не понял - разобъясни... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:08:43 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=C9=DA=CD=C5=D2=C5=CE=C9=C5_=D0=C5=D2=C6=CF?= References: Message-ID: > а еще мона -d:DProf и невые... (ой не надо ногами) :) а еже ли никаких процедур в коде нету? окромя, конечно CORE:: что он покажет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 19:08:45 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:54:20 +0500, Вы написали: GB> и в чью пользу? db_file. GB> м.б. архитектура приложений различная была? Да, немного отличалась. в мускульной табличке по ключу было неск значений, а в db hash одна большая стринга;-) ну и соотв код был не много по другоум построен. Данил From hrg на sama.ru Sat Sep 27 19:08:45 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Peter Vereshagin -> "Re: Трава перл...фсем курить;-)" : PV> Thu, Sep 25, 2003 at 11:42:52AM +0000 "Yury Kopyl" YKL>>> Написать программу на perl выводящую текст в виде прямоугольника YKL>>> с заданной шириной. YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) PV> форматы --- причмокивают? Нет. Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From hrg на sama.ru Sat Sep 27 19:08:48 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Thu, 25 Sep 2003 16:49:42 +0500: L>>> Как решить в одну строку это, я себе пока не представляю... L>>> поэтому если участники не против то критерием будет Benchmark?;-) YK>> http://search.cpan.org/search?query=wrap&mode=all - это? :)) L> Чур CPAN непользоваться!!!:-)) "Как же так, Федор Михайлович"(С)Сеня Лютый my $width=40; my $text="A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my $format_str='^'.'>'x ($width-1)."~~\n"; foreach my $text (split (/\n/,$text)){ $text=~s/^\s+//; $text=~s/\s+$//; formline ($format_str,$text); print $^A; }; With best regards, Yury Kopyl. E-mail: hrg@sama.ru From marchenko на zr.ru Sat Sep 27 19:08:48 2003 From: marchenko на zr.ru (Jury Marchenko) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Так, на скорую, вот вариант. Возмодна оптимизация. Длина задаётся $l. #!/usr/bin/perl use strict; my $text = "A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card.\nA good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key).\nCreate a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value."; my @words = split(/ |\n/g, $text); my $l = 45; for (my $i=0;$i<=$#words;$i++) { my $string = $words[$i]; while (length($string)<$l) { $i++; if (!$words[$i]) { $string = &add_dot($string, $l); } if ((length($string) + length(" " . $words[$i]))<=$l) { $string.=" $words[$i]"; } else { $i--; $string = &add_dot($string, $l); last; } } print "$string\n"; } sub add_dot { my ($string, $l) = @_; while (length ($string) < $l) { $string = " $string"; } return $string; } С уважением, Марченко Юрий Иванович, редактор отдела оперативной информации, ЗАО КЖИ "За Рулём" URL: http://www.zr.ru ; http://www.za.ru ; E-mail: marchenko@zr.ru Телефоны: +7 (095) 208-00-70 +7 (926) 203-52-90 ----- Original Message ----- From: "LaVei" To: Sent: Thursday, September 25, 2003 15:30 Subject: Трава перл...фсем курить;-) > Как решить в одну строку это, я себе пока не представляю... > поэтому если участники не против то критерием будет Benchmark?;-) > > Задача : > Написать программу на perl выводящую текст в виде > прямоугольника с > заданной шириной. > До заданной ширины строку следует дополнять пробелами, > начиная с левой её > части. Параметр, определяющий ширину результирующего > прямоугольника, > гарантированно больше, чем самое длинное слово, > встречающееся в тексте. > > Текст > "A simple, easy to remember system for encoding integer > amounts can be very > useful. For example, dealers at flea markets put the > information about an item > on a card that they let potential buyers see. They find it > advantageous to > encode the amount they originally paid for the item on the > card.\nA good system > is to use a substitution code, in which each digit is > encoded by a letter. An > easy to remember 10-letter word or phrase, the key, is > chosen. Every '1' in the > value is replaced by the first letter of the key, every > '2' is replaced by the > second letter of the key, and so on. Every '0' is replaced > by the last letter of > the key. Letters that do not appear in the key can be > inserted anywhere without > affecting the value represented by the code.. This helps > to make the resulting > code much harder to break (without knowing the > key).\nCreate a class Substitute > that contains the method getValue that is given the > Strings key and code as > input and that returns the decoded value." > > Данил > From hrg на sama.ru Sat Sep 27 19:08:48 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Peter Vereshagin -> "Re: потребление памяти." : PV> Thu, Sep 25, 2003 at 04:01:42PM +0500 Yury Kopyl YK>> поиск по контексут документа. Вроде такое было в MS SQL PV> ого. PV> а подробнее? Не помню. Чесна. Просто что-то подобное прообегало по fido7.ru.perl Yury Kopyl aka hrg | http://id.totem.ru | Только взял боец гитару, сразу видно - гармонист... From greg на webzavod.ru Sat Sep 27 19:08:50 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > GB> и в чью пользу? > db_file. ни верю! -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 19:08:50 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, Mike Lykov ! в Thu, 25 Sep 2003 11:57:33 +0500, Вы написали: ML> например: ML> в этом де скрипте используется ML> tie %iptraf, "DB_File", 'iptraf.db'; ML> который стоит в начале скрипта, и, соответсвенно, всю дорогу в него что-то ML> пишется. То есть если в логе 3 млн строк, то и обращений к этому хешу будет ML> (в простом случае) 3 млн (на самом деле несколько меньше ;) ML> Соответственно, каждое обрвщение к хешу вызывает обращение к диску (?). Да, в этом их(db_file) плюс и есть. ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не будет засрана. На некоторых задачах они бывают гораздо лучшим решением нежли какой либо sql сервер... правда не очень юзабельны...;-( ML> В общем, конечно, хочется, чтобы и быстрее и меньше памяти ;) Ну кинь суда свой код, посмотрим. Данил From greg на webzavod.ru Sat Sep 27 19:08:51 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > GB> > а сейчас --- какое решение есть для *.(doc|xls|ppt|pdf) под винду? > > контекст лови: фулл текст сёрч. а к Perl какое отношенье имеет? -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 19:08:51 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IMnazcXSxc7JxSDQxdLGz83BztPB?= References: Message-ID: Greg Belenky -> "Re: измерение перфоманса" : >> а еще мона -d:DProf и невые... (ой не надо ногами) :) GB> а еже ли никаких процедур в коде нету? окромя, конечно CORE:: GB> что он покажет? Честна затраченное время на выполнение основного. :)) Yury Kopyl aka hrg | http://id.totem.ru | "бысто сп..ил и ушел - называется нашел..." From greg на webzavod.ru Sat Sep 27 19:08:52 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_undef_=CE=C1=D3=DE=C5=D4_=D7=D3=C5=C7=CF_?= References: Message-ID: > my @data=split (/?/,@ns) if (@ns); /?/ вот этим - ты что хотел сказать? ;) -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From lavei на mail.ru Sat Sep 27 19:08:53 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 12:26:19 +0500, Вы написали: GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) я проверял на 6-7 га текста. в записях это было 6~7 млн. те запись была в cреднем 1к может чуть больше...не вспомню уже. точные данные сейчас не впомню, но различие было на порядок это 100 пудов. >Может быть стоит попробовать Tie::DBI если уж тебе так притайеные интерфейсы >нравятся... Мне сам по себе db импонирует;-) (прочитай PERFORMANCE для Tie:DBI.;-) Данил From hrg на sama.ru Sat Sep 27 19:08:53 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INDP1NLFwszFzsnFINDBzdHUyS4=?= References: Message-ID: Greg Belenky -> "Re: потребление памяти." : >> ты можешь работать с ОГРОМНЫМ объемом данных и при этом память не >> будет GB> засрана. >> На некоторых задачах они бывают гораздо лучшим решением нежли какой >> либо GB> sql сервер... GB> Проверено, что на большом объеме данных (>10-20Mb) MySQL быстрее ;) <писькамерялка> Это 10-20Мб - большие объемы то?? GB> Может быть стоит попробовать Tie::DBI если уж тебе так притайеные GB> интерфейсы нравятся... tie работает крайне медлленах... сам же читал :)) Yury Kopyl aka hrg | http://id.totem.ru | [TEAM Nemiroff борет] From hrg на sama.ru Sat Sep 27 19:08:53 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2DstKQ==?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru><001501c3835b$46d9fe60$020200c0@hrg><200309251024.h8PAOj93018419@gateway.vdcom.ru><007301c38365$c98b9710$020200c0@hrg><200309251155.h8PBtv93019797@gateway.vdcom.ru><00c501c383e6$541b0700$020200c0@hrg> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 10:48:52 +0500: L> PS а где можно почитать про форматы? L> perldoc -f formline слишком малоинформативен что то..;-( google :)) или пиши сюда, я одно время с ними очень хорошо с нимим (Афонина нет?) портахался With best regards, Yury Kopyl. E-mail: hrg@sama.ru From greg на webzavod.ru Sat Sep 27 19:08:55 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=CF=D4=D2=C5=C2=CC=C5=CE=C9=C5_=D0=C1=CD?= References: Message-ID: > а что --- пёрл этого НЕ МОЖЕТ? под виндами - только при наличии соответсвующих оле-автомейшенов... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From hrg на sama.ru Sat Sep 27 19:08:58 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L>> Как решить в одну строку это, я себе пока не представляю... L>> поэтому если участники не против то критерием будет Benchmark?;-) L>> Задача : L>> Написать программу на perl выводящую текст в виде прямоугольника с L>> заданной шириной. L>> До заданной ширины строку следует дополнять пробелами, начиная с L>> левой её части. Параметр, определяющий ширину результирующего L>> прямоугольника, гарантированно больше, чем самое длинное слово, L>> встречающееся в тексте. L> В связи с возникшей неразберихой я предлагаю немного L> подкорректировать задание. L> 1. выравнивание идет по обеим краям, те решения Грега и Скачкова(у L> Евгена только последний символ "." куда то пропал -надо вернуть;-) L> в этом плане единственно верные. т.е. симлпа добиваем пробелы? L> 2. Абзацы не считаем L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) хм.... вот изврат L> 4. модули с CPAN попрежнему не приветствуются:-)) With best regards, Yury Kopyl. E-mail: hrg@sama.ru From lavei на mail.ru Sat Sep 27 19:08:58 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6INLV09PLycogXHcg1yD19OYtOA==?= In-Reply-To: <20030925141426.GN25088@least.beast> References: <20030925141426.GN25088@least.beast> Message-ID: Здраствуйте, Peter Vereshagin ! в Thu, 25 Sep 2003 14:15:56 +0000 (UTC), Вы написали: PV> или хотя бы [a-zA-Z0-9] [А-Яа-я0-9] Данил From lavei на mail.ru Sat Sep 27 19:08:58 2003 From: lavei на mail.ru (LaVei) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IHVuZGVmIM7B097F1CDX08XHzyDT0MnTy8Eg09LB2tU=?= In-Reply-To: References: Message-ID: Здраствуйте, "Greg Belenky" ! в Thu, 25 Sep 2003 16:15:29 +0500, Вы написали: GB> @a в скалярном контексте интерпретируется как число элементов массива. т.к. GB> число элементов не может быть неопределенным числом, зато может быть GB> нулевым, то выражение defined @a _всегда_ истино. не всегда my @a =(); print "Ok" if defined @a; ничего не выдаст. ML> печатает aaa! несмотря ни на что. хоть @a=undef, @a=(undef), @a=(1) . надо делать вот так undef@a; undef это функция такая ваащето;-) perldoc -f undef Данил From greg на webzavod.ru Sat Sep 27 19:08:59 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:12 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: Верещагин! Пиши понятнее, а то приходится догадываться, что ты до нас хотел донести... Договорились? > text=~s/^\\\\(.+)$/$1/g; х.з. может быть внутренний флаг утф-8 со скаляра сбрасывается? з.ы. для того, чтобы отрезать от строки 2 слеша спереди, необязательно пользоваться регулярными выраженьями: undef substr($text, 2) if substr($text, 0, 2) eq '\\\\'; з.з.ы. к тому же и работает в 2 раза быстрее регвыров... -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From combr на vesna.ru Sat Sep 27 19:08:59 2003 From: combr на vesna.ru (Mike Lykov) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?y9LV1MHRINTSwdfB?= Message-ID: http://www.linux.org.ru/view-message.jsp?msgid=392747 -- Mike From hrg на sama.ru Sat Sep 27 19:09:06 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:12 2004 Subject: =?koi8-r?b?UmU6IPTSwdfBINDF0swuLi7G08XNIMvV0snU2C4g68/S0sXL1MnX?= References: <200309251005.h8PA5B93018026@gateway.vdcom.ru> Message-ID: Hello, LaVei! You wrote to "Samara (Russia) Perl Mongers" on Fri, 26 Sep 2003 11:28:44 +0500: L> L> 3. Ну и апгрейд от Евгена : убираем ширину на фиг и определяем ее L> автоматом, так что бы из текста получился квадрат;-) И еще: квадрат - это n строк х n столбцов или все-таки визуальный квадрат в текстовом режиме? With best regards, Yury Kopyl. E-mail: hrg@sama.ru From hrg на sama.ru Sat Sep 27 19:09:06 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:13 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= References: Message-ID: Greg Belenky -> "Re: А вот, какие итоги получились у меня..." : >> Почти все алгоритмы не учитывают переносы строк в исходном тексте, >> вернее они просто заменяют их на пробелы, склеиваяя строку. Это не >> правильно. >> Поробуйте потестить на реальных текстах. GB> Тогда нужно было оговориться, что абзацы ограничены \n а не GB> внутренними переводами строки. Тогда, в любом случае, необходим GB> препроцессинг текста перед передачей его алгоритму... нет? Да. изначально задача была поставлена не совсем корректна. Препроцессинг нужен. Yury Kopyl aka hrg | http://id.totem.ru | "Хоббиты-маздай! Мордовия-фарева!" (С)Сарумян From hrg на sama.ru Sat Sep 27 19:08:59 2003 From: hrg на sama.ru (Yury Kopyl) Date: Mon Aug 2 21:36:13 2004 Subject: =?koi8-r?b?UmU6IOEg18/ULCDLwcvJxSDJ1M/HySDQz8zV3snMydPYINUgzcXO?= References: Message-ID: Greg Belenky -> "А вот, какие итоги получились у меня..." : GB> Текст идентичный. Присланный Данилом. Для чичтоты эксперимента GB> возвращается функцией, чтобы тестируемые не могли на него повлиять. GB> Ширина - 50 символов. GB> Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, GB> marchenko... GB> eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ GB> 878.73/s (n=5000) GB> greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ GB> 803.86/s (n=5000) GB> hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ GB> 3246.75/s (n=5000) GB> marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ GB> 464.25/s (n=5000) GB> Rate marchenko greg eugene hrg lavei GB> marchenko 464/s -- -42% -47% -86% -86% GB> greg 804/s 73% -- -9% -75% -75% GB> eugene 879/s 89% 9% -- -73% -73% GB> hrg 3247/s 599% 304% 269% -- -0% GB> lavei 3247/s 599% 304% 269% 0% -- GB> А теперь посмотрим, что же на самом деле выдают наши алгоритмы... GB> (следующие 2 строки я нарисовал прям в постинге, чтобы можно было GB> оценить попадание в 50-символьную границу... GB> 10 20 30 40 50 GB> 123456789|123456789|123456789|123456789|123456789| GB> -------------------------------------------------- GB> lavei--------------------------------------------- GB> A simple, easy to remember system for encoding integer GB> amounts can be veryuseful. For example, dealers at flea markets GB> put the information about an itemon a card that they let GB> potential buyers see. They find it advantageous toencode the amount GB> they originally paid for the item on the card.A good systemis to GB> use a substitution code, in which each digit is encoded by a GB> letter. Aneasy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in thevalue is replaced by the first GB> letter of the key, every '2' is replaced by thesecond letter of GB> the key, and so on. Every '0' GB> is replaced by the last letter ofthe key. Letters that do GB> not appear in the key can be inserted anywhere withoutaffecting the GB> value represented by the code.. This helps to make the GB> resultingcode much harder to break (without knowing the GB> key).Create a class Substitutethat contains the method getValue GB> that is given the Strings key and code asinput and that GB> returns the decoded GB> hrg----------------------------------------------- GB> A simple, easy to remember system for encoding GB> integer amounts can be very useful. GB> For example, dealers at flea markets put GB> the information about an item on a card GB> that they let potential buyers see. They GB> find it advantageous to GB> encode the amount they originally paid for the GB> item on the card. GB> A good system is to use a GB> substitution code, in which each digit GB> is encoded by a letter. An easy to GB> remember 10-letter word or phrase, the GB> key, is chosen. Every '1' in the value is GB> replaced by the first letter of the key, GB> every '2' is replaced by the second GB> letter of the key, and so on. Every '0' is GB> replaced by the last letter of the key. GB> Letters that do not appear in the key can GB> be inserted anywhere without affecting the GB> value represented by the code.. This GB> helps to make the resulting code GB> much harder to break (without knowing the GB> key). GB> Create a class Substitute that contains GB> the method getValue that is given GB> the GB> Strings key and code as input GB> and that returns the decoded value. GB> greg---------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential buyers GB> see. They find it advantageous to encode the amount they GB> originally paid for the item on the card. A good system is to use a GB> substitution code, in which each digit is encoded by a letter. GB> An easy to remember 10-letter word or phrase, the key, is GB> chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that contains GB> the method getValue that is given the GB> Strings key and code as input and that returns the decoded value. GB> eugene-------------------------------------------- GB> A simple, easy to remember system for encoding integer amounts GB> can be very useful. For example, dealers at flea markets put the GB> information about an item on a card that they let potential GB> buyers see. They find it advantageous to encode the amount GB> they originally paid for the item on the card. A good system is GB> to use a substitution code, in which each digit is encoded by a GB> letter. An easy to remember 10-letter word or phrase, the key, GB> is chosen. Every '1' in the value is replaced by the first letter GB> of the key, every '2' is replaced by the second letter of the GB> key, and so on. Every '0' is replaced by the last letter of the GB> key. Letters that do not appear in the key can be inserted GB> anywhere without affecting the value represented by the code.. GB> This helps to make the resulting code much harder to break GB> (without knowing the key). Create a class Substitute that GB> contains the method getValue that is given the GB> Strings key and code as input and that returns the decoded GB> value marchenko----------------------------------------- GB> Asimple,easytoremembersystemforencodinginteger GB> amountscanbeveryuseful.Forexample,dealersatflea GB> marketsputthe informationaboutanitemonacardthattheyletpotential GB> buyerssee.Theyfindit GB> advantageoustoencodetheamounttheyoriginallypaid GB> fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich GB> eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor GB> phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst GB> letterofthekey,every GB> '2'isreplacedbythesecondletterofthekey,andsoon. GB> Every'0'isreplaced GB> bythelastletterofthekey.Lettersthatdonotappearin GB> thekeycanbe insertedanywherewithoutaffectingthevalue GB> representedbythecode..Thishelps GB> tomaketheresultingcodemuchhardertobreak(without GB> knowingthe key).CreateaclassSubstitutethatcontainsthemethod GB> getValuethatisgiventhe GB> Stringskeyandcodeasinputandthatreturnsthedecoded GB> value. GB> -------------------------------------------------- Насчет правильности: Почти все алгоритмы не учитывают переносы строк в исходном тексте, вернее они просто заменяют их на пробелы, склеиваяя строку. Это не правильно. Поробуйте потестить на реальных текстах. Yury Kopyl aka hrg | http://id.totem.ru | "Сегодня с нами ты не пьешь, а завтра Родине изменишь!" From greg на webzavod.ru Sat Sep 27 19:09:07 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:13 2004 Subject: =?iso-8859-1?q?Re=3A_=D0=D2=CF=C4=CF=CC=D6=C5=CE=C9=C5_=C2=C1=CE?= References: <20030925141426.GN25088@least.beast> Message-ID: > text=~s/^\\\\(.+)$/$1/g; и модификатор /g тут особого смысла не имеет, потому как в регвыре ты описываешь всю строку ^...$ -- Григорий "Grishace" Беленький http://search.cpan.org/author/GRISHACE/ From greg на webzavod.ru Sat Sep 27 19:09:06 2003 From: greg на webzavod.ru (Greg Belenky) Date: Mon Aug 2 21:36:13 2004 Subject: =?iso-8859-1?q?=E1_=D7=CF=D4=2C_=CB=C1=CB=C9=C5_=C9=D4=CF=C7=C9_?= Message-ID: Текст идентичный. Присланный Данилом. Для чичтоты эксперимента возвращается функцией, чтобы тестируемые не могли на него повлиять. Ширина - 50 символов. Benchmark: timing 5000 iterations of eugene, greg, hrg, lavei, marchenko... eugene: 6 wallclock secs ( 5.65 usr + 0.04 sys = 5.69 CPU) @ 878.73/s (n=5000) greg: 6 wallclock secs ( 6.22 usr + 0.00 sys = 6.22 CPU) @ 803.86/s (n=5000) hrg: 2 wallclock secs ( 1.54 usr + 0.00 sys = 1.54 CPU) @ 3246.75/s (n=5000) lavei: 1 wallclock secs ( 1.53 usr + 0.01 sys = 1.54 CPU) @ 3246.75/s (n=5000) marchenko: 11 wallclock secs (10.74 usr + 0.03 sys = 10.77 CPU) @ 464.25/s (n=5000) Rate marchenko greg eugene hrg lavei marchenko 464/s -- -42% -47% -86% -86% greg 804/s 73% -- -9% -75% -75% eugene 879/s 89% 9% -- -73% -73% hrg 3247/s 599% 304% 269% -- -0% lavei 3247/s 599% 304% 269% 0% -- А теперь посмотрим, что же на самом деле выдают наши алгоритмы... (следующие 2 строки я нарисовал прям в постинге, чтобы можно было оценить попадание в 50-символьную границу... 10 20 30 40 50 123456789|123456789|123456789|123456789|123456789| -------------------------------------------------- lavei--------------------------------------------- A simple, easy to remember system for encoding integer amounts can be veryuseful. For example, dealers at flea markets put the information about an itemon a card that they let potential buyers see. They find it advantageous toencode the amount they originally paid for the item on the card.A good systemis to use a substitution code, in which each digit is encoded by a letter. Aneasy to remember 10-letter word or phrase, the key, is chosen. Every '1' in thevalue is replaced by the first letter of the key, every '2' is replaced by thesecond letter of the key, and so on. Every '0' is replaced by the last letter ofthe key. Letters that do not appear in the key can be inserted anywhere withoutaffecting the value represented by the code.. This helps to make the resultingcode much harder to break (without knowing the key).Create a class Substitutethat contains the method getValue that is given the Strings key and code asinput and that returns the decoded hrg----------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. greg---------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value. eugene-------------------------------------------- A simple, easy to remember system for encoding integer amounts can be very useful. For example, dealers at flea markets put the information about an item on a card that they let potential buyers see. They find it advantageous to encode the amount they originally paid for the item on the card. A good system is to use a substitution code, in which each digit is encoded by a letter. An easy to remember 10-letter word or phrase, the key, is chosen. Every '1' in the value is replaced by the first letter of the key, every '2' is replaced by the second letter of the key, and so on. Every '0' is replaced by the last letter of the key. Letters that do not appear in the key can be inserted anywhere without affecting the value represented by the code.. This helps to make the resulting code much harder to break (without knowing the key). Create a class Substitute that contains the method getValue that is given the Strings key and code as input and that returns the decoded value marchenko----------------------------------------- Asimple,easytoremembersystemforencodinginteger amountscanbeveryuseful.Forexample,dealersatflea marketsputthe informationaboutanitemonacardthattheyletpotential buyerssee.Theyfindit advantageoustoencodetheamounttheyoriginallypaid fortheitemonthe card.Agoodsystemistouseasubstitutioncode,inwhich eachdigitis encodedbyaletter.Aneasytoremember10-letterwordor phrase,thekey,is chosen.Every'1'inthevalueisreplacedbythefirst letterofthekey,every '2'isreplacedbythesecondletterofthekey,andsoon. Every'0'isreplaced bythelastletterofthekey.Lettersthatdonotappearin thekeycanbe insertedanywherewithoutaffectingthevalue representedbythecode..Thishelps tomaketheresultingcodemuchhardertobreak(without knowingthe key).CreateaclassSubstitutethatcontainsthemethod getValuethatisgiventhe Stringskeyandcodeasinputandthatreturnsthedecoded value. -------------------------------------------------- begin 666 wrap.pl M=7-E('-T2!L970@<&]T96YT:6%L(&)U>65R2!P86ED(&9O2P@:7,@"F-H;W-E;BX@179E2!T:&4@9FER2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,@2DN7&Y#S$L)'!O:6YT?2D@+V2 H)'=I9'1H+" D=&5X="D@/2! 7SL* M("!M>2 D9F]R;6%T7W-T" H)'=I9'1H+3$I+B)^?EQN(CL* M("!M>2 D9&5L7V)E9F]R93UQ7',K+R]].PH@(&UY("1D96Q?869T M97(@/7%R>R!S+UQS*R0O+WT["B @;7D@)&)U9CL*("!F;W)E86-H(&UY("1T M97AT("AS<&QI=" H+UQN+RPD=&5X="DI>PH@("!L;V-A;" D7D$["B @("1T M97AT/7XD9&5L7V)E9F]R93L*(" @)'1E>'0]?B1D96Q?869T97(["B @(&9O M03L*("!] M"B @2 H)'=I9'1H+" D M2! =W)A<" ]("@I.PH@(&9O M2 D<" ]('!OPH@(" @(" @(" @<&]S*" D=W)A<%LD M:5T@*2 ](# ["B @(" @(" @?0H@(" @("!]("1I*RL["B @("!]("1W'0@/7X@2! 2 DR DR DR!M87)C:&5N:V\H(#4P+"!S='(@*2!]+ I] M*3L*"G!R:6YT(")<;EQN7&XB+" G+2<@>" U,"P@(EQN(CL*"G!R:6YT(")< M;FQA=F5I(B N("" H M-3 M;&5N9W1H*"=H" H-3 M;&5N9W1H*"=E=6=E;F4G*2DL(")<;B(["G!R:6YT(&5U M9V5N92@U,"P@" H M-3 M;&5N9W1H*"=M87)C:&5N:V\G*2DL(")<;B(["G!R:6YT(&UA" U,"P@(EQN(CL*"E]? &14Y$7U\* ` end begin 666 results.dat M0F5N8VAM87)K.B!T:6UI;F<@-3 P,"!I=&5R871I;VYS(&]F(&5U9V5N92P@ M9W)E9RP@:')G+"!L879E:2P@;6%R8VAE;FMO+BXN"B @("!E=6=E;F4Z(" V M('=A;&QC;&]C:R!S96-S("@@-2XV-2!U7,@/2 @-2XV M.2!#4%4I($ @.#75S969U;"X@1F]R(&5X86UP;&4L"B @9&5A M;&5R2!F:6YD(&ET(&%D=F%N=&%G96]U7-T96UI2!A(&QE='1E2!T:&4*("!F:7)S="!L971T97(@;V8@=&AE(&ME>2P@979E0H@(" @ M=&AE(&-O9&4N+B!4:&ES(&AE;'!S('1O(&UA:V4@=&AE(')E2!A;F0*(" @(" @(" @(&-O9&4@87-I;G!U M="!A;F0@=&AA="!R971U2!T;R!R96UE;6)E7-T96T@9F]R(&5N8V]D:6YG"B @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&EN=&5G M97(*(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&%M;W5N=',@8V%N M(&)E('9E&%M<&QE+"!D96%L97)S(&%T(&9L M96$@;6%R:V5T7-T96T*:7,@=&\@=7-E(&$@2!T;R!R96UE;6)E2 G M,2<@:6X@=&AE"B!V86QU92!I2!T:&4@9FER2!T:&4*('-E8V]N9"!L971T97(@;V8@ M=&AE(&ME>2P@86YD('-O(&]N+B!%=F5R>2 G,"<@:7,*(" @(" @(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(" @(" @("!R97!L86-E9 H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @(&)Y('1H92!L87-T(&QE='1E2!L970@<&]T M96YT:6%L(&)U>65R2 @=&AE("!F:7)S=" @;&5T=&5R("!O9B @=&AE("!K97DL(&5V M97)Y("7=H97)E('=I=&AO=70@869F96-T:6YG('1H92!V86QU90IR97!R97-E;G1E M9" @8GD@('1H92!C;V1E+BX@5&AI2DN($-R96%T92!A(&-L87-S(%-U8G-T:71U M=&4@=&AA= IC;VYT86EN2!A;F0@8V]D92!A2 @9FEN9" @:70@ M(&%D=F%N=&%G96]U2 @ M;W)I9VEN86QL>2 @<&%I9" @9F]R('1H92!I=&5M(&]N('1H90IC87)D+B @ M02!G;V]D('-Y2 @=&AE M("!S96-O;F0@;&5T=&5R(&]F('1H92!K97DL(&%N9"!S;PIO;BX@($5V97)Y M(" G,"<@(&ES("!R97!L86-E9"!B>2!T:&4@;&%S="!L971T97(@;V8*=&AE M("!K97DN($QE='1E6QE='!O=&5N=&EA; H@(" @(" @ M(" @(" @(" @(" @(" @(" @(" @("!B=7EE69I;F1I= H@ M("!A9'9A;G1A9V5O=7-T;V5N8V]D971H96%M;W5N='1H97EO7-T96UI6%L971T97(N06YE M87-Y=&]R96UE;6)E2QI22QE=F5R M>0H@(" G,B=I2QA M;F1S;V]N+@H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @($5V97)Y M)S G:7-R97!L86-E9 H@(&)Y=&AE;&%S=&QE='1E71H96-O9&4N+E1H:7-H96QP2DN0W)E871E86-L87-S4W5B вот он -- Mike registered linux user #315334 jabber id: combr@jabber.ru