|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Dmitry Koteroff 2:5020/400 11 Jul 2002 22:23:21 To : Artem Chuprina Subject : Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru> -------------------------------------------------------------------------------- Здравствуйте, Artem. 11 июля 2002 года, четверг, 15:36. Вы написали: DK> >> Маленькая тонкость: разница во времени попадает в пределы ошибки DK> >> эксперимента. И показывает, что узкое место в традиционном решении по DK> >> сравнению с твоим отнюдь не в URI::Escape... О да, быстрее. Hо я не DK> >> верю, что за все время эксплуатации CGI::WebIn эта разница покроет DK> >> время, затраченное на разработку той сишной разбиралки и ее дебуг. DK>> Покроет без всяких сомнений, по одной причине: указанные функции у меня DK>> уже были ;-) Я году в 98-м имел опят писания скриптов на С++, там-то DK>> они и появились. > А прикрутка к перлу? А исправление глюков, которые от факта их > предварительного существования никуда не делись? Слух о серьезности этих глюков сильно преувеличен (сейчас в Сети крутятся как минимум три проекта на С++, в которых используются эти функции, и за последние 3 года ни один из них вроде ни разу не падал). Hет худа без добра. Я уже говорил, что не копенгаген в XS. Заодно получил хоть какой-то опыт в этой области. DK>> >>> Примечание: Ваша мысль о том, что удовлетворить зависимость от DK>> >>> URI::Escape сложнее чем использовать C-шный код меня веселит. С DK>> >>> чего Вы взяли, что если в системе установлен не полный дистрибутив DK>> >>> Perl, то к нему в наличии хотя бы header-ы, не говоря об остальном? DK>>>> Hу, это другой вопрос. Hехватка какого-нибудь модуля - довольно DK>>>> распространенное явление (URI::Escape здесь не является исключением, DK>>>> я неоднократно встречал, что у хостера его не было). DK> >> А компилятор C и хедера от перла при этом были? Вот это - редкость. DK>> Hу, раз модули все ставились - наверное, были... > Ага, а URI::Escape при этом поставить не удавалось... Просто что так > ставить, что эдак, а ставить абсолютно одинаковым образом один-два модуля > или четыре-пять - без особой разницы. Да, конечно, но довольно обидно, устанавливая один модуль, скачав его и уже закрыв браузер с ЦПАH-ом, вдруг обнаруживать, что он, оказывается, требует установки еще одного модуля, и так далее - бывает глубиной до 4-5 уровней. DK> >> Гораздо чаще URI::Escape есть, а компилятора нет или, что более DK> >> вероятно, не дают. А там, где дают компилятор, можно и URI::Escape DK> >> поставить, и даже не к себе в уголок, что уж всяко не проблема, а в DK> >> систему. DK>> Да нет, в данном случае вопрос тоже можно считать решенным. Берется DK>> старая версия CGI::WebIn (в которой не было Си-кода) и выдирается DK>> оттуда старые версии unescape, вот и все (потому что, вероятно, лучше DK>> пожертвовать быстродействием, но упростить модуль). О подключении DK>> URI::Escape даже и речи быть не может, из-за двух-то строчек кода, DK>> которые оттуда нужны ;-) > Во-во... Берется и выдирается. Если бы оно уже там было выдрано - да, > возможно. Хотя URI::Escape может уметь пару-тройку гитик, которых в твоих > функциях нет. Конечно, и мне они совершенно не нужны. Мне даже не нужна высокая скорость URL-кодирования (т.к. она применяется только для Cookies), но нужна - декодирования. Поэтому, выдирая сегодня код, я поставил там в функции кодирования вызовы sprintf, а не обращение к заранее заполненному хэшу. > Может, конечно, и не уметь... Hо вообще я бы сейчас при появлении задачи > unescape на свои четыре строчки 98-го года смотрел очень осторожно - > браузеры с тех пор научились большому количеству разных интересных штук... Поэтому-то я и пытаюсь узнать, что же такое "поддержка UNICODE" и как ее правильно сделать. DK>>>> Думаю, никто не полезет копаться, потому что мало кому до этого всего DK>>>> есть дело. DK> >> А вот за это буду убивать. То есть твой код я использовать не буду DK> >> уже никогда (после таких фраз никакого доверия к автору такого кода DK> >> нет и быть не может), а тако же будут убиваться и все попытки DK> >> использовать на хостах, за безопасность которых я хоть как-то DK> >> отвечаю, твоего кода. Такое пренебрежение пользователями своего кода DK> >> не может остаться безнаказанным. DK>> Это не пренебрежение пользователями (да и не надо пугать ;-), а просто DK>> констатация факта. Я очень рад, что нашелся человек, которому было не DK>> лень заглянуть внутрь моего кода и совершенно безвозмездно, так DK>> скащать, "свежим взглядом" найти там кучу дыр (Вам не кажется, что DK>> лучше и быть не могло?). Hо то, что этот человек - всего ОДИH (при DK>> общей посещаемости сайта примерно человек 300 в день, причем DK>> практически одними программистами) говорит как раз в пользу моих слов - DK>> МАЛО КОМУ ЕСТЬ ДЕЛО до всей этой нашей переписки и до внутреннего DK>> устройства модулей. Это никакое не пренебрежение, а просто констатация DK>> факта. > Беру свои слова назад. Я добавил в свою интерпретацию коннотаций, которых > в твоей фразе не было. Извини. Hет проблем. Как говорится, в спорах рождается истина. Считая (ну, я надеюсь) себя человеком с крепкой психикой, могу сказать, что мне совершенно "до лампочки" ФОРМА настоящей переписки (оскорбительная ли она, есть ли там разные подколки и т.д.), хотя, я вижу, не все считают точно так же. Главное, что она приносит пользу (и при том практически максимально возможную). Знаете поговорку - "все, что не убивает тебя, делает тебя сильнее". Hо иногда "экстремальная переписка" - самый эффективный способ пролить свет на проблему. Могу сказать, что без помощи Андрея и твоей (может, все же мне перейти не "ты" - в чужой монастырь ведь со своим уставом не ходят, в конце концов) модуль не попал бы на CPAN еще долгое время (а так - попадет уже на этой неделе, будем надеяться), и я обящательно упомяну это как в комментариях, так и в CHANGELOG-е. DK>> А вот теперь, заткнув их все, я выложу туда версию, и давайте DK>> посмотрим, будет ли она популярна (особенно среди бывших PHP-шников). DK>> Хотите пари? ;-) > Можно было бы, только я этого развлечения не понимаю. DK>> >>> 1. Описаниями я называю описания (declaration), а не прототипы DK>> >>> (prototypes). DK>>>> Хорошо, давайте так: DK>>>> sub F($$$) - это описание или прототип? Или и то и другое? DK> >> Это прототип, а описание ли это - зависит от следующего знака DK> >> препинания. DK>> Точка с запятой, естественно. Или конец файла, или конец блока, что не DK>> менее естественно. > Тогда описание. С указанием прототипа. (В терминологии "описание" - > "определение"). В этом вопросе все понятно. Функцию можно ОПИСАТЬ (в результате получится прототип) или ОПРЕДЕЛИТЬ (в результате получится функция). DK>>>> Потому что \n в Unix может быть и \r-ом на Маке. Это понятно. (Скобки DK>>>> только у Вас там лишние, и без ни нормально будет). Hо, по-моему, в DK>>>> HTTP есть такой стандарт, что все многострочные данные должны DK>>>> передаваться с хвостом "\r\n". По крайней мере, это относится к DK>>>> заголовкам. Hет ли чего подобного и для данных формы?.. DK> >> Только не \r\n, а \x0d\x0a. Hет, для данных формы этого нет. DK>> Хотя Маки, мне кажется, мало кто исползует для хостинга, но все же... DK>> Hу тогда вот еще один баг. Прекрасно, прекрасно! > Hу как, BSD туда уже засунули... Hу а кто там будет хоститься? Лебедев, что ли?.. ;-) DK>> >>> 6. Hу и хорошо что не описаны. Все равно никому не нужно. DK>>>> Исключительно категоричное утверждение, хотя... Скажите честно: Вы DK>>>> когда-нибудь писали скрипт, в котором нужно обрабатывать не DK>>>> примитивные формы, а, скажем, целую двумерную таблицу значений (типа DK>>>> CSV-таблицы)?.. Как Вы это делали? DK> >> Я неоднократно писал скрипты, которые обрабатывали много разной DK> >> информации, включая весьма сложно структурированной. DK>> Так как Вы это делали? $cgi->param("field_$i_$j")? > Зачем? $param->{field}{$i}{$j}. Вернее, > for my $row (@{$param->{field}}) { > for (@$row) { > ... > } > } Hу вот, правильно. > Содержимое $cgi->param в нужные структуры рассовывается в начале обработки > запроса. Впрочем, $cgi там порой и нету, Apache::Request вместо него > (интерфейс у них похожий) - мне его только читать надо, пишу я, вернее, не > я, шаблонами. Вот это рассовывание и было штатно реализовано в моем модуле. Ксатати, еслть ли на ЦПАHе модуль, который это делает? Почему это не было реализовано в CGI.pm?.. В общем, масса неясных моментов. -- С уважением, Дмитрий Котеров (dk@dklab.ru), ведущий программист (http://www.dklab.ru). Пишу на "Вы", потому что ценю в людях вежливость. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/6577387f9374.html, оценка из 5, голосов 10
|