Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru>   Artem Chuprina   11 Jul 2002 14:51:25 
 Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru>   Dmitry Koteroff   11 Jul 2002 19:14:32 
 Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru>   Artem Chuprina   11 Jul 2002 19:36:56 
 Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru>   Dmitry Koteroff   11 Jul 2002 22:23:21 
 Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru>   Vladimir Podgorny   12 Jul 2002 10:30:15 
 Re: Открытое письмо к "Dmitry Koteroff" <dk@dklab.ru>   Artem Chuprina   12 Jul 2002 15:28:39 
Архивное /ru.cgi.perl/6577387f9374.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional