Ошибки из-за ужесточения проверки UTF-8 в строках

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by John Doe »

Latest post of the previous page:

citRiks wrote: Mon 22 Feb, 2021 11:47 Хорошо когда оно просто падает,
и когда видно что падает на новом УТФ8.
Хужее когда может быть какое непредсказуемое поведение.
Вы правы, но с точностью до наоборот: раньше поведение на некорректных данных было неопределено, а теперь гарантированно падает.
citRiks wrote: Mon 22 Feb, 2021 11:47 взять чей-то какой-то код, посмотреть как работает, приспособить.
Я вовсе не возражаю против любых изменений вашей системы в любых целях.
Я против распространения кода, безусловно (и неявно) переписывающего юникодные функции для всей среды.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by John Doe »

buniak_a_h wrote: Mon 22 Feb, 2021 14:32 Откуда взялась строка - вы знать не можете.
Чаще всего могу, а внешние данные да, надо валидизировать.
buniak_a_h wrote: Mon 22 Feb, 2021 14:32 Вы предлагаете перед всеми вызовами функций из utf8, критичных к корректности строки, вставлять проверку валидности?
Конечно же не перед всеми.
buniak_a_h wrote: Mon 22 Feb, 2021 14:32 Вот как искать (и исправлять) причину (кстати, я до сих пор не пойму её)?
Не можете - значит не ваше это. Беспокоиться тем более не о чем - все скрипты на форуме были оперативно исправлены (при этом заодно вскрылись и неявные баги, ради чего собственно всё именно так и работает).
buniak_a_h wrote: Mon 22 Feb, 2021 14:32 (б) предотвращает падение и возвращает единственно возможный результат для невалидных строк;
А вот надо чтобы падало. Это и есть ожидаемое поведение, которое и должно автора побудить к исправлению (потенциального) бага.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by buniak_a_h »

John Doe wrote: Mon 22 Feb, 2021 16:16 А вот надо чтобы падало. Это и есть ожидаемое поведение, которое и должно автора побудить к исправлению (потенциального) бага.
Автора - ЧЕГО? Файла, который скрипт читает? Я же в самом начале писал, что источник невалидных строк может быть абсолютно не имеющим отношения к скрипту. Просто читается откуда-то или выдаётся ДЛЛ, автора которой уже не найти.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by John Doe »

buniak_a_h wrote: Mon 22 Feb, 2021 16:37 может быть абсолютно не имеющим отношения[...]
Какая-то очень абстрактная ситуация.

Но я верю что вы действительно столкнулись с подобным, и рад что вы нашли подходящее (для вас) решение.

Но это вовсе не универсальное решения, и я лично возражаю против того чтобы продвигать его как таковое.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by citRiks »

John Doe wrote: Mon 22 Feb, 2021 16:09 Вы правы, но с точностью до наоборот: раньше поведение на некорректных данных было неопределено, а теперь гарантированно падает.
Ну так получается что ничей код никода не брать?
потому что там может быть неправильная работа с UTF8.
Ну вот есть mobdebugger.lua Павла Кульченко.
Судя по-вашему, мне надо:
1.) Или его переписать, если явно изза UTF8 ошибка
2.) Или вообще его не брать при первом же сомнении
3.) Или недоумевать то ли это глючит, то ли лыжи не едут,
и код или бесполезен, или пункт (2.)

Еще варианты:
4.) Забить на это все, используя враппер везде
5.) Придумать способ ограничить область действия враппера
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by John Doe »

citRiks wrote: Mon 22 Feb, 2021 17:27 Ну так получается что ничей код никода не брать?
Вы уж извините, но пока что в этой теме никакой конкретики не было, поэтому складывается впечатление что всё нытьё на пустом месте.
О том чтобы "ничей код никогда" речи не было, и наоборот, я вполне себе допускаю существование таких кейсов где самым прямым решением и будет использовать обсуждаемый в данной теме "враппер".
citRiks wrote: Mon 22 Feb, 2021 17:27 Судя по-вашему
Судя по-моему нужно для начала сообщить о проблеме (со всеми необходимыми данными).

И если проблему другим способом не решится, то в соответствующей теме сделать примечание.
citRiks wrote: Mon 22 Feb, 2021 17:27 4.) Забить на это все, используя враппер везде
Лично вы можете использовать его везде, если это вам (по любым причинам) удобно.
Но не надо призывать к этому всех как стредство профилактики мифических ошибок.
citRiks wrote: Mon 22 Feb, 2021 17:27 5.) Придумать способ ограничить область действия враппера
Тут пока нечего обсуждать.
https://t.me/FarManager — Telegram чат
LAT
Posts: 343
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 22 times
Been thanked: 39 times

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by LAT »

citRiks wrote: Mon 22 Feb, 2021 17:27Ну так получается что ничей код никода не брать?
потому что там может быть неправильная работа с UTF8.
Лично у меня получается: нельзя брать код разработчиков скриптов, которые сделали себе враппер. Потому что там может быть вылет в самый неожиданный момент.
LAT
Posts: 343
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 22 times
Been thanked: 39 times

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by LAT »

Например, Find&Go (viewtopic.php?f=15&t=11747), включая последнюю верию 1_1_3, при поиске с
(•) Простая строка (Plain text)
(•) Все(All)
валится на файле c кодировкой OEM или ANSI, например:
any1.hlf
(4 Bytes) Downloaded 43 times
Сразу говорю: мне причина понятна, способы решения – тоже.
Но если пользователь из каких-то соображений, скажем, религиозных (Xerox одобрит ;) ) или от незнания не хочет/не догадался заделать враппер в макроините, он будет регулярно сталкиваться с неудобствами. Подход «не нравится – сделай сам», конечно, никто не отменял. Но это потери времени на пустом месте – как для автора, который вынужден объяснять каждому новому участнику, что нужно делать, а особо любопытным – почему, так и для пользователей, которые решат допилить скрипт без использования враппера, не говоря уже о потере времени на этот враппервар. Плюс риск бардака в среде скриптописателей, когда одни будут создавать скрипты, работающие искаропки, а другие – скрипты, рассчитанные на наличие враппера, и при любой ошибке или странном поведении будет не понятно, это враппер как-то повлиял, или его отсутствие, или проблема враппера совершенно ни при чём.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by citRiks »

LAT,
надо уважать чувства верующих конечно :)
1.) ну по крайней мере негативных эффектов на что-либо другое не замечено,
кроме падения самого скрипта, я так понимаю
2.) автор может (но не хочет что-ли?) положить в сам свой этот поиск,
вот эту проверку на враппер, и делание враппера если его нет,
т.e. в макросе самого поиска это сделать а не в _макроините
3.) запилить модуль общий,который везде вызывается,
хоть в макроините, хоть еще где надо.
у меня так, полет нормальный
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by buniak_a_h »

citRiks wrote: Wed 24 Feb, 2021 16:59 автор может (но не хочет что-ли?)
Логика «автора»:
Работало. Потом где-то что-то поменяли (исправили чётную ошибку?), и работать перестало. При том, что в скрипте ничего не менялось. Обычно в таких случаях ждут, когда исправят "нечётную ошибку" (ну, или сделают какую-то компенсацию). Ну вот введу я код, учитывающий эту4 "особенность", а авторы ФАРа через полгодика введут новые правила - мне всё время скрипт корректировать? Я сделал (для себя!) чтоб работало. А так-то каждый выбирает сам - кому шашечки, а кому ехать.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by buniak_a_h »

LAT wrote: Wed 24 Feb, 2021 14:12 Например, Find&Go, включая последнюю верию 1_1_3, при поиске с
Это - замечательный пример на:
John Doe wrote: Mon 22 Feb, 2021 16:51
buniak_a_h wrote: Mon 22 Feb, 2021 16:37 может быть абсолютно не имеющим отношения[...]
Какая-то очень абстрактная ситуация.

Но я верю что вы действительно столкнулись с подобным, и рад что вы нашли подходящее (для вас) решение.
(а) Не совсем абстрактная.
(б) столкнулся не только я.
(в) Вы же не сможете отрицать, что читаемый с диска файл может «абсолютно не иметь никакого отношения к скрипту», при выполнении которого произошёл вылет.
Выходов в такой ситуации только два: либо
(а) проверку, которую я забил во "враппер", делать в каждом вновь написанном скрипте
либо
(б) запилить один раз и забыть о проблеме.
Я - ленив. Пошёл по второму пути. Да и безопаснее так - не забудешь.
Last edited by buniak_a_h on Wed 24 Feb, 2021 17:46, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by buniak_a_h »

LAT, на самом деле хотелось бы пример не вылета (у меня есть их©), а именно отрицательных последствий такого подхода. А то все возражения ограничиваются "чистотой стиля".
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by John Doe »

buniak_a_h wrote: Wed 24 Feb, 2021 17:45 проверку, которую я забил во "враппер", делать в каждом вновь написанном скрипте
Почему в каждом. Только в том, который обращается к непроверенным данным.
И достаточно произвести её однократно, а не при каждом вызове юникодной функции.

Главный бонус: своевременный отлов ошибок, который иначе было бы заметить и локализовать с трудом.
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by buniak_a_h »

John Doe wrote: Wed 24 Feb, 2021 18:28 Главный бонус: своевременный отлов ошибок, который иначе было бы заметить и локализовать с трудом.
Про этот "бонус" я писал: без всяких вылетов запись в журнал.
Самое обидное, если на этапе программирования такую ситуацию не предусмотришь, на собственных тестовых данных не проявится, а у юзера, который скачает - вылетит. Так лучше, что ли?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Ошибки из-за ужесточения проверки UTF-8 в строках

Post by citRiks »

buniak_a_h wrote: Wed 24 Feb, 2021 17:36 Ну вот введу я код, учитывающий эту4 "особенность", а авторы ФАРа через полгодика введут новые правила - мне всё время скрипт корректировать? Я сделал (для себя!) чтоб работало. А так-то каждый выбирает сам - кому шашечки, а кому ехать.
ну любой софт предполагает что его надо поддерживать,
Да, есть такое понятие "поддерживать код", уж вам-то должно быть известно? :)
buniak_a_h wrote: Wed 24 Feb, 2021 17:36 введут новые правила - мне всё время скрипт корректировать? Я сделал (для себя!) чтоб работало.
ну ладно, если вы решили что в макроините вам удобнее,
то ваше право конечно :) а со стороны глядя, и не зная вашу ответственность,
можно подумать что вы решли ничего никогда не чинить,
ничего никому не давать, и пожизнено сидеть на какой-то устаревшей версии ФАРа
Post Reply

Return to “Обсуждение макросов”