From: |
"Alexander N. Skovpen" 2:5020/9696 |
23 May 2020 21:07 +0300 |
To: |
Stas Mishchenkov 2:460/5858 |
|
Subject: |
имена файлов
|
Hello Stas Mishchenkov!
23 May 20 13:44:10, Stas Mishchenkov wrote to All:
SM> На ntfs имена файлов хранятся в UTF-16, в консоль при этом винда
отдает их в cp1251. Если нужно создать список файлов в cp866, то в именах файлов
иногда встречается следующее:
SM> cp1251: Ленинград - Ах уехала жена.mp3
SM> cp866: Ленинград ? Ах уехала жена.mp3
SM> Как правильно избежать такой ситуации, ну, кроме переименования файлов,
разумеется?
А как ты CP1251 в CP866 перекодируешь?
Alexander
From: |
Eugene Grosbein grosbein.net |
28 Jun 2020 03:46 +0300 |
To: |
Michael Dukelsky 2:5020/1042 |
|
Subject: |
unlink
|
27 июня 2020, суббота, в 21:37 NOVT, Michael Dukelsky написал(а):
MD>>> Почему-то у меня unlink удаляет всё, даже файл, принадлежащий
MD>>> руту. Что я делаю не так?
EG>> Право на удаление файла по умолчанию это право записи в каталог.
EG>> Если ты имеешь право на запись в каталог - ты имеешь право
EG>> удалять в нём любые файлы независимо от их прав доступа и от
EG>> их владельцев.
EG>> Если ты хочешь, чтобы из каталога пользователь мог удалять
EG>> только собственные файлы, поставь на каталог sticky bit:
EG>> chmod +t dirname
EG>> И это не имеет отношения к Perl, это основы юникса.
MD> Спасибо за ответ, но почему-то он приехал только сейчас, через 6 дней.
MD> @PATH: 5006/1 5080/102 5020/1042
MD> Судя по всему, 5080/102 проснулся.
У меня тоже считай неделю не было эхомейла никакого,
а сегодня вдруг навалило недельной давности.
Eugene
From: |
Gennadij Pastuhov 2:5036/26 |
27 Apr 2020 12:55 +0300 |
To: |
Eugene Grosbein grosbein.net |
|
Subject: |
Что за фигня?
|
Рад всех приветствовать! А особенно - Eugene!
Понедельник апреля 27 20 06:16 Eugene Grosbein писал к Gennadij Pastuhov:
GP>> if (defined $PRODUCTS->{$product_name_id}) {
EG> Думаю, что ошибка тут. Вместо defined тут необходимо использовать
EG> exists, потому что иначе срабатывает autovivification:
EG> https://perlmaven.com/autovivification
GP>> product_name_id:ssl_dv_thawte -- not found
GP>> PRODUCTS:$VAR1 = undef;
Спасибо, вопрос закрыт!
... Jonny wanna live
From: |
Stas Mishchenkov 2:460/5858 |
25 May 2020 05:35 +0300 |
To: |
Alexander N. Skovpen 2:5020/9696 |
|
Subject: |
имена файлов
|
*** Ответ на сообщение из _Carbon.Mail (Carbon.Mail).
Hi, Alexander!
24 май 20 16:12, Alexander N. Skovpen -> Stas Mishchenkov:
ANS>>> А как ты CP1251 в CP866 перекодируешь?
SM>> use Encode 'decode';
SM>> use Encode 'encode';
SM>> $fname = encode( 'cp866', decode( 'cp1251', $key ) ) if $^O eq
SM>> 'MSWin32';
ANS> а если 'use utf8;' добавить?
А зачем? В cp866 от этого совмечтимые символы не появятся же?
Have nice nights.
Stas Mishchenkov.
From: |
Gennadij Pastuhov 2:5036/26 |
25 Apr 2020 18:24 +0300 |
To: |
Eugene Grosbein grosbein.net |
|
Subject: |
Что за фигня?
|
Рад всех приветствовать! А особенно - Eugene!
Суббота апреля 25 20 21:31 Eugene Grosbein писал к 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>>>> порождает такой
GP>>>> лог:
GP>>>> key:$VAR1 = 'ssl_dv_thawte__2';
GP>>>> product_name_id:'ssl_dv_thawte' validity_years:'2'
GP>>>> product_name_id:ssl_dv_thawte -- not found
GP>>>> PRODUCTS:$VAR1 = undef;
GP>>>> Даже не представляю, куда копать. Если взять вот эти тексты и
GP>>>> выполнить в
GP>>>> скрипте, то всё работает. Т.е., как будто эти латинские буквы в
GP>>>> работе какие-то
GP>>>> не те. Или меня глючит?
EG>>> Вообще удивляюсь, что у тебя хоть что-то печатает,
EG>>> потому что вызов keys $result некорректен и ты,
EG>>> очевидно, не используешь use strict и use warnings,
EG>>> которые обязательно нужно всегда использовать.
EG>>> keys берёт аргументом хеш или список, а у тебя скаляр.
EG>>> Добавляй use strict и use warnings, исправляй все ошибки
EG>>> в коде, на которые они укажут и пробуй снова.
GP>> Hачало того скрипта:
GP>> use strict;
GP>> use warnings;
GP>> use utf8;
EG> А тогда всё зависит от версии perl. Типа намёк.
$ perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for
x86_64-linux-gnu-thread-multi
(with 89 registered patches, see perl -V for more detail)
... Jonny wanna live
From: |
Eugene Grosbein grosbein.net |
26 Apr 2020 15:44 +0300 |
To: |
Gennadij Pastuhov 2:5036/26 |
|
Subject: |
Что за фигня?
|
25 апр. 2020, суббота, в 23:07 NOVT, Gennadij Pastuhov написал(а):
GP>>>>>>> Кусок кода:
GP>>>>>>> for my $key (keys $result) {
EG>> Это довольно старая версия perl и какие в ней были баги/особенности,
EG>> сейчас тебе тут вряд ли кто ответит. Проще всего заменить
EG>> весь твой диагностический вывод на один print Dumper($result)
EG>> и поглядеть на него. Вывод в студию.
GP> Без проблем. Hо не весь, а только нужные строки, остальные аналогичные:
GP> result:$VAR1 = {
GP> 'ssl_dv_thawte__2' => 10,
GP> };
Фигурные скопбки означают, что $result это ссылка на хеш,
так что всё-таки лучше бы ты писал как положено
keys %{$result} вместо твоего keys $result.
Я удивлён, что старый perl при strict/warnings это пропустил.
Eugene
--
Кара за одно съеденное яблоко, все-таки, была несоизмеримо велика,
приступ диареи послужил бы достаточным уроком.
From: |
Gennadij Pastuhov 2:5036/26 |
27 Apr 2020 09:23 +0300 |
To: |
Eugene Grosbein grosbein.net |
|
Subject: |
Что за фигня?
|
Рад всех приветствовать! А особенно - Eugene!
Понедельник апреля 27 20 06:16 Eugene Grosbein писал к Gennadij Pastuhov:
GP>> if (defined $PRODUCTS->{$product_name_id}) {
EG> Думаю, что ошибка тут. Вместо defined тут необходимо использовать
EG> exists, потому что иначе срабатывает autovivification:
EG> https://perlmaven.com/autovivification
GP>> product_name_id:ssl_dv_thawte -- not found
GP>> PRODUCTS:$VAR1 = undef;
Не-а:
product_name_id:'ssl_dv_thawte' validity_years:'2'
product_name_id:ssl_dv_thawte -- not foundPRODUCTS:$VAR1 = undef;
... Jonny wanna live
From: |
Gennadij Pastuhov 2:5036/26 |
25 Apr 2020 07:08 +0300 |
To: |
Eugene Grosbein grosbein.net |
|
Subject: |
Что за фигня?
|
Рад всех приветствовать! А особенно - Eugene!
Суббота апреля 25 20 05:47 Eugene Grosbein писал к 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:'$validity_
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>> порождает такой
GP>> лог:
GP>> key:$VAR1 = 'ssl_dv_thawte__2';
GP>> product_name_id:'ssl_dv_thawte' validity_years:'2'
GP>> product_name_id:ssl_dv_thawte -- not found
GP>> PRODUCTS:$VAR1 = undef;
GP>> Даже не представляю, куда копать. Если взять вот эти тексты и
GP>> выполнить в
GP>> скрипте, то всё работает. Т.е., как будто эти латинские буквы в
GP>> работе какие-то
GP>> не те. Или меня глючит?
EG> Вообще удивляюсь, что у тебя хоть что-то печатает,
EG> потому что вызов keys $result некорректен и ты,
EG> очевидно, не используешь use strict и use warnings,
EG> которые обязательно нужно всегда использовать.
EG> keys берёт аргументом хеш или список, а у тебя скаляр.
EG> Добавляй use strict и use warnings, исправляй все ошибки
EG> в коде, на которые они укажут и пробуй снова.
Начало того скрипта:
use strict;
use warnings;
use utf8;
... Jonny wanna live
From: |
Gennadij Pastuhov 2:5036/26 |
24 Apr 2020 18:56 +0300 |
To: |
All |
|
Subject: |
Что за фигня?
|
Рад всех приветствовать! А особенно - All!
Дано: хэш:
my $PRODUCTS = {
ssl_dv_geotrust => 'GeoTrust Standard DV SSL Certificate',
ssl_dv_rapidssl => 'RapidSSL Standard DV SSL Certificate',
ssl_dv_thawte => 'Thawte SSL123 DV',
};
Кусок кода:
for my $key (keys $result) {
print "\nkey:" . Dumper $key;
my ($product_name_id, $validity_years) = split '__', $key;
print "\nproduct_name_id:'$product_name_id'\tvalidity_years:'$validity_years'";
if (defined $PRODUCTS->{$product_name_id}) {
...
} else {
print "\nproduct_name_id:$product_name_id -- not found";
print "\nPRODUCTS:" . Dumper $PRODUCTS->{$product_name_id};
В $result хранится результат разjsonивания запроса. И этот код порождает такой
лог:
key:$VAR1 = 'ssl_dv_thawte__2';
product_name_id:'ssl_dv_thawte' validity_years:'2'
product_name_id:ssl_dv_thawte -- not found
PRODUCTS:$VAR1 = undef;
Даже не представляю, куда копать. Если взять вот эти тексты и выполнить в
скрипте, то всё работает. Т.е., как будто эти латинские буквы в работе какие-то
не те. Или меня глючит?
... Jonny wanna live
From: |
Gennadij Pastuhov 2:5036/26 |
06 May 2020 19:08 +0300 |
To: |
All |
|
Subject: |
apache utf8 uri escaping?
|
Рад всех приветствовать! А особенно - All!
Очередная не очень понятная проблема. Есть апач, в конфиге которого есть такой
кусок:
RewriteEngine on
RewriteRule (.*) <тут поскипано>/%D0%B3%D1%83%D0%B4 [R=301,NE,L]
Т.е., предполагается, что при заходе на сервер будет перенаправление на
страницу с окончанием 'гуд'. При попытке зайти (хоть курлом) фактически отдаётся
адрес /%D0%B3%D13%D0%B4 (г3д). Возникло предположение, что движок mod_rewrite
воспринял %8, как backreference, и выбросил его. Попробовали вручную вписать в
конфиг: /\%D0\%B3\%D1\%83\%D0\%B4 - так RewriteRule заработало нормально.
Вопросы: верное ли это предположение? Если конфиг апача генерится эхотагом, то,
получается, нужно подобные строки (содержащие %), прогонять через: s/%/\\%/g ?
И риторический: долгое гугление на эту тему вообще ничего не дало, как будто
такая проблема возникла первый раз. Правда, что ли?
... Jonny wanna live