Информация об изменениях

Сообщение Re[6]: Стив уже там от 26.06.2020 10:57

Изменено 26.06.2020 13:58 Lazytech

Re[6]: Стив уже там
Здравствуйте, Michael, Вы писали:

M>Из моей практики:

M>

    M> человек притащил в проект компонент, хотя я рекомендовал не добавлять лишние зависимости, тем более что функционал компонента копеечный.
    M>Совет *проигнорирован*

    M>Этот компонент зависит от другого компонента (да в js они любят размазывать по гитхабу даже пол-экрана).

    M>В том другом компоненте в документации написано — не работает с iPhone. Иногда это означает непредвиденное поведение особенно если компонент сидит на компоненте.
    M>

M>Результат: система висла на iPhone.


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

M>Для локализации проблемы когда девайс недоступен так как хотелось бы, например это супер-пупер телефон занятого клиента или его smartv, то я знаю только один способ — проставить логи (как тут советовали в div, и так чтобы они накапливались) и локализовать проблему. Потом отключить все сторонние компоненты и т.д., можно чтобы не дёргать клиента сделать сразу несколько вариантов страницы чтобы за один звонок всё порешать.

M>Увы — в моём случае было игнорирование этой простейшей логики. Только через несколько дней мытарств появился первый лог (и то, перетиравший предыдущие логи)
M>Кто виноват: досталось и мне, и разработчикам из Купертино, и таким проектам как svelte и babel.
M>Я для торжества справедливости сделал локализацию проблемы и просто выкинул тот компонент (заменив на свой код). Всё заработало.

К сожалению, у меня пока крайне мало опыта в отладке кода, особенно в случаях, когда нет доступа к устройству, на котором этот код должен работать. К примеру, про отладочный div я бы без подсказки и не вспомнил.

M>Уважаемые начинающие разработчики

M>- если вам советуют не увеличивать зависимости от левых проектов — то слушайте.
M>- если вам советуют не изобретать велосипед, а использовать проверенные решения типа bootstrap — не спорьте.
M>- обычно проблема сидит в полу-метре от вашего компа. начинайте сперва поиск там, а не в Купертино.

Век живи, век учись...

P.S. Напомню, в чем заключается основной посыл этой темы:

Но это же неправильно, когда для поддержки пользователей какой-то ОС веб-разработчику надо либо самому работать на этой ОС, либо платить стороннему онлайн-сервису.



P.P.S. Кстати, вспомнил, что у меня была добавлена проверка на тип ОС (конкретно iOS), которой не было в оригинальной версии веб-приложения:
 // https://stackoverflow.com/questions/9038625/detect-if-device-is-ios
  let isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||
    (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) && !window.MSStream
  // isIOS = true; // testing
  console.log('isIOS', isIOS);

Если значение переменной isIOS равнялось false, при нажатии на соответствующую кнопку вызывалась функция onToggle в «другом» компоненте (которая всякий раз отрабатывала нормально, потому что работала НЕ на iOS), а иначе должна была вызываться сделанная мною функция-заменитель onToggleIOS, НЕ задействующая функцию onToggle, а всего лишь подключающая нужный CSS-класс средствами Svelte. Как видно, моя неуклюжая попытка обойти недостаток особенность браузеров на iOS ничего не дала, поскольку проблема лежала глубже...

Оговорюсь, что вышеупомянутая проверка была добавлена мною вовсе не для решения проблемы полной нефункциональности приложения на iPhone (сути этой проблемы я, к сожалению, не понимал), а всего лишь для обеспечения большего единообразия поведения приложения на разных платформах.
Re[6]: Стив уже там
Здравствуйте, Michael, Вы писали:

M>Из моей практики:

M>

    M> человек притащил в проект компонент, хотя я рекомендовал не добавлять лишние зависимости, тем более что функционал компонента копеечный.
    M>Совет *проигнорирован*

    M>Этот компонент зависит от другого компонента (да в js они любят размазывать по гитхабу даже пол-экрана).

    M>В том другом компоненте в документации написано — не работает с iPhone. Иногда это означает непредвиденное поведение особенно если компонент сидит на компоненте.
    M>

M>Результат: система висла на iPhone.


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

M>Для локализации проблемы когда девайс недоступен так как хотелось бы, например это супер-пупер телефон занятого клиента или его smartv, то я знаю только один способ — проставить логи (как тут советовали в div, и так чтобы они накапливались) и локализовать проблему. Потом отключить все сторонние компоненты и т.д., можно чтобы не дёргать клиента сделать сразу несколько вариантов страницы чтобы за один звонок всё порешать.

M>Увы — в моём случае было игнорирование этой простейшей логики. Только через несколько дней мытарств появился первый лог (и то, перетиравший предыдущие логи)
M>Кто виноват: досталось и мне, и разработчикам из Купертино, и таким проектам как svelte и babel.
M>Я для торжества справедливости сделал локализацию проблемы и просто выкинул тот компонент (заменив на свой код). Всё заработало.

К сожалению, у меня пока крайне мало опыта в отладке кода, особенно в случаях, когда нет доступа к устройству, на котором этот код должен работать. К примеру, про отладочный div я бы без подсказки и не вспомнил.

M>Уважаемые начинающие разработчики

M>- если вам советуют не увеличивать зависимости от левых проектов — то слушайте.
M>- если вам советуют не изобретать велосипед, а использовать проверенные решения типа bootstrap — не спорьте.
M>- обычно проблема сидит в полу-метре от вашего компа. начинайте сперва поиск там, а не в Купертино.

Век живи, век учись...

P.S. Напомню, в чем заключается основной посыл этой темы:

Но это же неправильно, когда для поддержки пользователей какой-то ОС веб-разработчику надо либо самому работать на этой ОС, либо платить стороннему онлайн-сервису.



P.P.S. Кстати, вспомнил, что у меня была добавлена проверка на тип ОС (конкретно iOS), которой не было в оригинальной версии веб-приложения:
 // https://stackoverflow.com/questions/9038625/detect-if-device-is-ios
  let isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||
    (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) && !window.MSStream
  // isIOS = true; // testing
  console.log('isIOS', isIOS);

Если значение переменной isIOS равнялось false, при нажатии на соответствующую кнопку вызывалась функция onToggle в «другом» компоненте (которая всякий раз отрабатывала нормально, потому что работала НЕ на iOS), а иначе должна была вызываться сделанная мною функция-заменитель onToggleIOS, НЕ задействующая функцию onToggle, а всего лишь подключающая нужный CSS-класс средствами Svelte. Как видно, моя неуклюжая попытка обойти недостаток особенность браузеров на iOS ничего не дала, поскольку проблема лежала глубже...

Оговорюсь, что вышеупомянутая проверка была добавлена мною вовсе не для решения проблемы полной нефункциональности переделанного приложения на iPhone (сути этой проблемы я, к сожалению, не понимал), а всего лишь для обеспечения большего единообразия его поведения на разных платформах.