01:37

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
08.03.2021 в 19:49
Пишет  Stalkert:

Надкусанные эпично проговнокодились в iCloud

https://www.ixbt.com/news/2021/03/08/slozhnye-otnoshenija-apple-s-pravdoj-dev...

Жила была (и продолжает) американская девушка по фамилии True. И был у нее аккаунт эплячий, айклаудячий с разными данными. Пока она не стала обновлять аккаунт и чего-то как-то недосмотрела и ввела фамилию с маленькой буквы - true

А потом, парам-пам-пам-пам. При попытке добраться до своего пушистого облачка она получила фруктом на всю физиономию:

REPORTED ERROR TITLE
Type error: cannot set value `true` to property `lastName` on...

REPORTED ERROR TYPE
UNHANDLED_EXCEPTION

И все бы ничего, но по ее словам, часы общений с техподдержкой в течение полугода ни к чему не привели, хотя деньги исправно взимались. И если я правильно понял, проблема так и не решена.

Вот так пишут и сопровождают код в некоторых коммерческих продуктах.



URL записи


как такое могло произойти, что строка (ввод пользователя) сама собою поменяла тип на boolean без явной команды на преобразование типа со стороны программиста?

в языке есть какая-то специальная фича, позволяющая так забавно выстрелить себе в ногу?

@темы: Вопрос, Новости

Комментарии
09.03.2021 в 06:39

この世界は。。。いいですか?
В некоторых языках есть такая вещь, как автоматическое приведение типов. Javasсript из таких, php... А! Ну точно, PHP! Тупо взяли значение из $_POST , и без всяких проверок в объект и пихають, а что там скрипт тип привёл как смог, а не как надо - всем чихать.

Посему переходите на языки со строгой типизацией и будет вам счастье, не выстрелите.
09.03.2021 в 10:20

"Торжественно клянусь, что замышляю шалость и только шалость!" (c)
В php есть строгая типизация, если надо. Да и не совсем понятно, при чём здесь php и iCloud.

в языке есть какая-то специальная фича, позволяющая так забавно выстрелить себе в ногу?

В языке вряд ли, скорее, в самой логике что-то не так сделали, недовалидировали.
09.03.2021 в 14:35

この世界は。。。いいですか?
В php есть строгая типизация, если надо
И если включили мозг и стали её использовать.

Да и не совсем понятно, при чём здесь php и iCloud.
Наверное, совсем ни при чём. Я не знаю, на чём там в действительности написано. Но общий принцип, отчего такие вещи могут возникать, он такой, а php чисто как пример.
09.03.2021 в 14:52

тролль - это не только ценный жир, но и 3-4 легкоусвояемых коммента ежедневно
в самой логике что-то не так сделали, недовалидировали.

а что тут валидировать?
"true" - на 100% валидная строка, пользователь не должен получить отказ валидации если ввёл её

а вот выражение типа
Object(s)
переводящее строку s == "true" в булево значение, вполне могло быть той самой неприятной фичей языка
12.03.2021 в 21:05

Миру - мир. А Вам - пломбир!
В пхп в любой версии строка "true" это именно строка, оно не конвертируется в булевый тип true. Единственный случай, когда может такое возникнуть – валидация с помощью filter_var со специальными флагами что последние лет 10 практически не используется. В адекватных командах (-:

Сообщение больше похоже на Dart/Metal/ObjC, где такое очень вероятно по умолчанию. Там чтобы этого избежать надо специально писать что-то в духе json.decode(req.body)?.isNotEmpty == true