From: Eugene Grosbein grosbein.net 07 May 2020 05:56 +0300
To: Gennadij Pastuhov 2:5036/26
Subject: apache utf8 uri escaping?
06 мая 2020, среда, в 23:21 NOVT, Gennadij Pastuhov написал(а): EG>> http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule EG>> Pattern is a perl compatible regular expression. On the first EG>> RewriteRule it is applied to the (%-decoded) URL-path of the request; EG>> subsequent patterns are applied to the output of the last matched EG>> RewriteRule. EG>> Ключевое слово %-decoded. То есть матчить надо уже декодированную EG>> строку. Если же у тебя реально матчятся %-кодированные данные, значит EG>> твои ссылки некорректно дважды %-кодируются при генерации. GP> Я не очень большой спец по апачу, не очень понял ответ. То, что RewriteRule GP> применяется к %-decoded, означает, что сначала строка из директивы декодируется, GP> а потом к ней применяется правило? Или что правило уже должно быть записано в GP> декодированном виде? Второе. Прежде чем mod_rewrite получит строку на обработку, она декодируется. Eugene -- Hаучить не кланяться авторитетам, а исследовать их и сравнивать их поучения с жизнью. Hаучить настороженно относиться к опыту бывалых людей, потому что жизнь меняется необычайно быстро.
From: Eugene Grosbein grosbein.net 25 Apr 2020 23:40 +0300
To: Gennadij Pastuhov 2:5036/26
Subject: Что за фигня?
25 апр. 2020, суббота, в 18:24 NOVT, Gennadij Pastuhov написал(а): GP>>>>> Дано: хэш: GP>>>>> my $PRODUCTS = { GP>>>>> ssl_dv_geotrust => 'GeoTrust Standard DV SSL Certificate', GP>>>>> ssl_dv_rapidssl => 'RapidSSL Standard DV SSL Certificate', GP>>>>> ssl_dv_thawte => 'Thawte SSL123 DV', GP>>>>> }; GP>>>>> Кусок кода: GP>>>>> for my $key (keys $result) { GP>>>>> print "\nkey:" . Dumper $key; GP>>>>> my ($product_name_id, $validity_years) = split GP>>>>> '__', $key; GP>>>>> print GP>>>>> "\nproduct_name_id:'$product_name_id'\tvalidity_years:'$validit GP>>>>> y_ EG>>>> years'"; GP>>>>> if (defined $PRODUCTS->{$product_name_id}) { GP>>>>> ... GP>>>>> } else { GP>>>>> print "\nproduct_name_id:$product_name_id -- not found"; GP>>>>> print "\nPRODUCTS:" . Dumper $PRODUCTS->{$product_name_id}; GP>>>>> В $result хранится результат разjsonивания запроса. И этот код GP>>>>> порождает такой лог: EG>> А тогда всё зависит от версии perl. Типа намёк. GP> $ perl -v GP> This is perl 5, version 14, subversion 2 (v5.14.2) built for GP> x86_64-linux-gnu-thread-multi GP> (with 89 registered patches, see perl -V for more detail) Это довольно старая версия perl и какие в ней были баги/особенности, сейчас тебе тут вряд ли кто ответит. Проще всего заменить весь твой диагностический вывод на один print Dumper($result) и поглядеть на него. Вывод в студию. Eugene -- Choose no life
From: Michael Dukelsky 2:5020/1042 27 Jun 2020 21:37 +0300
To: Eugene Grosbein grosbein.net
Subject: unlink
Привет, Eugene! 21 June 2020 14:23, Eugene Grosbein послал(а) письмо к Michael Dukelsky: MD>> Почему-то у меня unlink удаляет всё, даже файл, принадлежащий MD>> руту. Что я делаю не так? EG> Право на удаление файла по умолчанию это право записи в каталог. EG> Если ты имеешь право на запись в каталог - ты имеешь право EG> удалять в нём любые файлы независимо от их прав доступа и от EG> их владельцев. EG> Если ты хочешь, чтобы из каталога пользователь мог удалять EG> только собственные файлы, поставь на каталог sticky bit: EG> chmod +t dirname EG> И это не имеет отношения к Perl, это основы юникса. Спасибо за ответ, но почему-то он приехал только сейчас, через 6 дней. @PATH: 5006/1 5080/102 5020/1042 Судя по всему, 5080/102 проснулся. Желаю успехов, Eugene! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Stas Mishchenkov 2:460/5858 24 May 2020 15:28 +0300
To: Eugene Grosbein grosbein.net
Subject: имена файлов
Hi, Eugene! 24 май 20 07:57, Eugene Grosbein -> Stas Mishchenkov: EG> Если в таблице тупо нет символа, то ты можешь только подобрать EG> более-менее подходящий по виду символ или группу символов для замены. Ну, да. Иначе никак. EG> CP866 отличается от KOI8-R только порядком символов в таблице, EG> а сам набор символов тот же самый, поэтому тебе, может быть, EG> пригодится готовая таблица для такиз замен за авторством EG> покойного Чернова из его утилиты fromwin, правда в синтаксисе C: Спасибо. То, что нужно. EG> win2koi8[] = { EG> "Ъ", "Г", "\'", "г", "\"", "...", "+", "+", /* 80-87 Как я понял, кириллические символы я здесь вижу уже в cp866, а коментарии - это номера симфволов в cp1251? Have nice nights. Stas Mishchenkov.
From: Michael Dukelsky 2:5020/1042 03 May 2020 18:10 +0300
To: Nil Alexandrov 2:5015/46
Subject: perl, python, ..
Привет, Nil! 02 May 2020 20:17, Nil Alexandrov послал(а) письмо к Yevgeny Zolotnitsky: NA> Как у нас говорят, "horses for courses" (эх тупой гугл траслейт). Я помогу тупому гуглу: "Jedem das seine". NA> А так как питон изначально был "птичьим языком", типа нажимаешь шифт и ^^^^^ Тут ты, наверно, хотел обругать перл. NA> по всем цифиркам пальцем туда-сюда [~!@#$%^&*()(*&^%$#@!~], вот так он NA> примерно выглядит, то добавление ООП к перлу стало не читаемым от NA> слова совсем. NA> Питон изначально разрабатывался как функциональный, так и ООП. NA> Синтаксис у него без всех этих @#$->&%, и даже ; не надо ставить в NA> конце строки, и даже говно-код вынужден быть выровнен из-за блоков, NA> что придаёт читаемости. На этом месте читателю эхи ru.perl захочется посмотреть на замечательно выравненный язык питон, обошедшийся даже без точки с запятой, не говоря уже об этих ужасных выражениях, получаемых при проведении пальцем по клавишам туда-сюда. Открываем документацию к Python 3.8.3, Text Processing Services, и в "re - Regular expression operations" прямо в первой строчке читаем: "This module provides regular expression matching operations similar to those found in Perl". То есть точки с запятой нет, но пальцем проводить туда-сюда всё равно придётся. Желаю успехов, Nil! За сим откланиваюсь, Michael. ... node (at) f1042 (dot) ru
From: Eugene Grosbein grosbein.net 03 May 2020 03:51 +0300
To: Nil Alexandrov 2:5015/46
Subject: perl, python, ..
02 мая 2020, суббота, в 20:17 NOVT, Nil Alexandrov написал(а): NA> В последнее время питон, кроме написания скриптов так таковых, стал NA> использоваться как R&D тул всякими ресёрчерами (умные дядьки с магистратурами), NA> которые на нём могут что-то попрототипировать, покрутить туда-сюда и всё это с NA> минимальным количеством строк кода. Как это стало возможным? Всё благодаря NA> обёрткам вокруг C++ кода/библиотек. Получается, что ты пишешь одну/две строчки NA> взять данные по такому-то URL (пример urllib, код работает быстро со скоростью NA> C), второй строчкой парсим XML/JSON/.. тоже C библиотечным вызовом, а дальше NA> скармливаем нашей статистической модели или нейронке, библиотек для (глубокого) NA> машинного обучения (мы в шутку называет deep shit learning), и, пальцем в небо NA> (но с умным выражением лица), прогнозируем когда закончится карантин, сколько NA> будет стоить акции, когда доллару хана, и прочее прочее. Естесссно, что на перле NA> этого всего не завезли, и это хорошо. А можно тебя попросить больше никогда не рассуждать публично о том, о чём ты никакого понятия не имеешь? Я тут себе чуть всё лицо фейспалмами не разбил с одного этого параграфа. Чуток из боевого perl-кода, который вызывается из embedded perl, встроенного внутрь радиус-сервера и обрабатывающего голосовые вызовы в реальном времени параллельно с их протеканием: use HTTP::Tiny; # часть стандартного дистрибутива perl ... our @urls = ($url1, $url2); ... foreach my $baseurl (@urls) { my $http = HTTP::Tiny->new ('timeout' => TIMEOUT); my $url = $baseurl . "..."; my $response = $http->get($url); ... } Конечно, в Perl не завезли работу с URL! И в metacpan тоже ничего нету на эту тему! Ой нет, есть, навскидку: $ pkg search -x 'p5-' | egrep -i 'www|url|uri' | wc -l 172 Одних только дополнительных модулей, работающих с WWW/URL/URI больше полутора сотен, среди них p5-Net-Curl, p5-WWW-Curl, p5-libwww, p5-WWW-Telegram-BotAPI, p5-URI-ws (websockets) и т.д. Что касается парсинга XML, то в Perl конечно этого нету. Ой, тоже есть. Кусок боевого кода, который выгружает и парсит пресловутый черный список РКH, который распространяется в виде XML и сейчас весит 120160KB (то есть, 117MB), и не дай бог подобный парсер заглючит и не выполнит свою работу точно и без багов, 50 тысяч рублей штрафа. use XML::Simple; $XML::Simple::PREFERRED_PARSER = 'XML::Parser'; # Чтобы получить доступ к XML, нужно использовать SOAP sub soap_fault($$); use SOAP::Lite on_fault => sub { soap_fault($_[0], $_[1]); }; my $client = SOAP::Lite->new; $SOAP::Constants::PREFIX_ENV = 'SOAP-ENV'; ... # Парсинг XML-файла схемы WSDL $service = $client->service($endpoint); ... # SOAP-запрос zip с XML внутри: @result = $service->sendRequest($request, $signature, $dumpver); ... for(my $t = $try; $t > 0; $t--) { ... eval { $r = $service->call('getResult', SOAP::Data->name('code')->value($code))->body->{'getResultResponse'}; }; ... } # Парсинг XML-файла непосредственно из потока unzip: eval { local $SIG{'__DIE__'}; $h = XMLin('-'); }; ... my $content = $h->{'content'}; # обработка содержимого XML while (($key, $value) = each %$content) { ... } Hу уж машинного обучения в Perl не точно завезли? Ой, и это активно обновляется! Последняя версия меньше трех месяцев назад, автор Сергей Колычев из WhiteHat Security: https://metacpan.org/release/AI-MXNet Eugene -- Поэты - страшные люди. У них все святое.
From: Stas Mishchenkov 2:460/5858 25 May 2020 14:53 +0300
To: Eugene Grosbein grosbein.net
Subject: имена файлов
Hi, Eugene! 25 май 20 00:15, Eugene Grosbein -> Stas Mishchenkov: EG> В данной таблице ты видишь символы и их положение в koi8-r. SM>> а коментарии - это номера симфволов в cp1251? EG> Hет, это номера символов в koi8-r в данном случае. Между тем, я проверил свое предположение и оно оказалось верным. Всё чудесно перекодируется. Спасибо. Have nice nights. Stas Mishchenkov.
From: Eugene Grosbein grosbein.net 25 May 2020 00:15 +0300
To: Stas Mishchenkov 2:460/5858
Subject: имена файлов
24 мая 2020, воскресенье, в 15:28 NOVT, Stas Mishchenkov написал(а): EG>> win2koi8[] = { EG>> "Ъ", "Г", "\'", "г", "\"", "...", "+", "+", /* 80-87 SM> Как я понял, кириллические символы я здесь вижу уже в cp866, Символы это символы, это алфавит кодировки. Буква "Г" русского языка один и тот же символ что в cp866, что в koi8-r, что в win1251 и даже в Unicode, разница только в машинном представлении. В данной таблице ты видишь символы и их положение в koi8-r. SM> а коментарии - это номера симфволов в cp1251? Hет, это номера символов в koi8-r в данном случае. Eugene
From: Eugene Grosbein grosbein.net 28 Apr 2020 02:24 +0300
To: Gennadij Pastuhov 2:5036/26
Subject: Что за фигня?
27 апр. 2020, понедельник, в 12:55 NOVT, Gennadij Pastuhov написал(а): EG>> Думаю, что ошибка тут. Вместо defined тут необходимо использовать EG>> exists, потому что иначе срабатывает autovivification: EG>> https://perlmaven.com/autovivification GP>>> product_name_id:ssl_dv_thawte -- not found GP>>> PRODUCTS:$VAR1 = undef; GP> Спасибо, вопрос закрыт! Что было-то? Eugene -- Сердце - малочувствительный, мускулистый, грубый и жесткий орган.
From: Nil Alexandrov 2:5015/46 02 May 2020 20:17 +0300
To: Yevgeny Zolotnitsky 2:5015/147
Subject: perl, python, ..
* Originally in nino.046.local * Crossposted in ru.perl * Crossposted in ru.python Hello, Yevgeny! Saturday May 02 2020 01:06, from Yevgeny Zolotnitsky -> Nil Alexandrov: YZ> Я вот хоть не пограмист, но в какие-то скрипто-языки интересуюсь по YZ> верхам, чтобы читать код уметь. И меня натурально добивает именно YZ> мода, что сейчас "все носят двухбортный", т.е. на питоне лабают. А YZ> "однобортный", который на перле -- уже фу-фу-фу. Хотя решают одни и YZ> теже задачи. Как у нас говорят, "horses for courses" (эх тупой гугл траслейт). > An allusion to the fact that a racehorse performs best on a racecourse to > which it is specifically suited. Вера в то что, что скаковая лошадь лучше всего выступает на ипподроме, для которого она специально предназначена. Кароч, дело было так. Был типичный юникс сисадмин, тот, что с бородой, а не как виндовзный гладко выбритый [unix_vs_windows_admin.jpg], и не тот, что мышкой в виндовзе двигает MCSA (Microsoft Certified Systems Administrator), а прям натурально сидит в текстмоде, и все свои рутинные операции по максимуму автоматизирует с помощью шел скриптов. Шел скрипты - это такие комбинации из grep, sed, awk,.. через пайп прописанные. И родился тогда скриптовый язык перл, и совместил он в себе все эти grep+sed+awk и был заточен под парсенье текстовых логов, читай регекспы, и прочей сисадминской рутины, типа завести нового юзверя, прописал его в разных файлах. Но мир не стоял на месте, и стало модно-молодёжно пейсать не процедурно, а объетко-ориентировано (орфография сохранена). А так как питон изначально был "птичьим языком", типа нажимаешь шифт и по всем цифиркам пальцем туда-сюда [~!@#$%^&*()(*&^%$#@!~], вот так он примерно выглядит, то добавление ООП к перлу стало не читаемым от слова совсем. Питон изначально разрабатывался как функциональный, так и ООП. Синтаксис у него без всех этих @#$->&%, и даже ; не надо ставить в конце строки, и даже говно-код вынужден быть выровнен из-за блоков, что придаёт читаемости. На этом месте адепты ООП закидают питон тухлыми помидорами, ведь ни с того ни с сего тип объекта может меняться на ходу, но это и его плюс/минус питона, в его динамической типизации. Кстати, есть всякие рестриктыд-питон синтаксисы, читай подмножество языка, когда нельзя походу действия менять тип для одной и той же переменной, и тогда такой "кастрированный" питон легко транслируется из-языка-в-язык, например, в C++ или просто JIT на этом участке кода ускоряется в стопицот раз, если мы использует pypy. В последнее время питон, кроме написания скриптов так таковых, стал использоваться как R&D тул всякими ресёрчерами (умные дядьки с магистратурами), которые на нём могут что-то попрототипировать, покрутить туда-сюда и всё это с минимальным количеством строк кода. Как это стало возможным? Всё благодаря обёрткам вокруг C++ кода/библиотек. Получается, что ты пишешь одну/две строчки взять данные по такому-то URL (пример urllib, код работает быстро со скоростью C), второй строчкой парсим XML/JSON/.. тоже C библиотечным вызовом, а дальше скармливаем нашей статистической модели или нейронке, библиотек для (глубокого) машинного обучения (мы в шутку называет deep shit learning), и, пальцем в небо (но с умным выражением лица), прогнозируем когда закончится карантин, сколько будет стоить акции, когда доллару хана, и прочее прочее. Естесссно, что на перле этого всего не завезли, и это хорошо. Best Regards, Nil