Ответ на пост «Школьное»12

Серия ИИ и программирование

Мне выражение "не работает, переделай" сообщил компьютер. На одном и том же коде!!!


Скачал из интернета шаблон HTML+CSS+JS, внес правки и во время тестов вижу, что отваливается шапка страницы. Но я слишком много правок внес и не знаю, какая из них ломающая. Мало ли, где-то зависимость от класса следующего блока или от фазы Луны.


Решил вносить частями, чтобы определить где и что именно ломается, т.к. визуально неработающие и работающие места -- идентичны! Мало ли как в Python пробелы и табуляция из-за копипаста перемешаются, а скрипт не работает. Выглядят то идентично! Если не включать отображение подобных символов как-то иначе.


Беру исходный шаблон, копирую рядом и... Шаблон перестает работать!


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


В итоге, на HTML+CSS написал простенькую консоль внутри блока типа:

<p>Переменная А = <i id="idA"></i><p>

UPD: Копипаст наше все отсюда:

После заголовка: Pure-CSS lightbox

https://developer.mozilla.org/ru/docs/Web/CSS/:target

(с помощью CSS зафиксирован всегда сверху, всегда по центру, фон полупрозрачный, добавил z-index)


В JS добавил обновление переменных внутрь подозрительной функции:

var el = document.getElementById('idA');

el.textContent = A;

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



Открываю оба документа -- из исходного каталога и из скопированного. И произвожу манипуляции:

баг с пропаданием шапки страницы работает только когда страница загружена с шириной больше 992px, потом немного прокручиваю вниз до исчезновения шапки (она становится закрепленной сверху), после чего уменьшаю ширину браузера. При прокрутке в начало шапка остается со свойством "display:none" и не видна.


Но почему в оригинальной странице работает все нормально, а в копии этой же страницы -- нет? КОПИЯ!!! Т.е. вся разница -- это только другое название папки.


С помощью jQuery реализована нужная функция в шаблоне (не моя):

windows.on('scroll', function () {

var scroll = windows.scrollTop();

var headerHeight = header.height();

if (screenSize >= 992) {

if (scroll < headerHeight) {

header.removeClass('display-none');

} else {

header.addClass('display-none');


Перед этим и после есть код. Включая закрывающие скобки.

Оказалось -- headerHeight во второй вкладке умудряется обнулиться! Т.е. я загрузил первую оригинальную страницу, она все нормально отработала. Вторая страница из копии -- после сокрытия каким-то образом умудряется сбросить высоту элемента в ноль. Т.е. он в тот момент был скрыт и его размер реально нулевой, только вот предыдущее состояние, почему-то, не сохранено.


Соответственно, если загрузить в третьей вкладке оригинальную страницу, то и на ней баг стал воспроизводиться!


Обнаружив баг с неверной высотой элемента стал думать как порешать и тот. Чтобы правильно запоминалась высота элемента. Но потом -- а не пофиг ли? В самом верху значение scroll будет равно нулю. Значит, нужно либо второй элемент увеличить на единицу, если он занулится, либо поменять оператор сравнения < на <=

Т.е. будет:

if (scroll <= headerHeight+1)

(применил оба исправления, хуже не будет, я на это надеюсь, от JS всего можно ожидать)


Кучу времени убил на то, чтобы узнать, что нужно было добавить или знак равенства, или поставить +1.


Хуже только узнать, что Python-скрипт не работает потому, что где-то отступы отформатированы пробелами, а где-то -- табами. Например, при копипасте, в котором пробелы, когда сам используешь табы...

Пробел -- это "ноль", таб -- это "единица", вот тебе машинный код, иди ищи баги..

P.S. я JS не знаю... Просто думаю такой: ну, вроде, он похож на язык программирования, который я знаю...

IT-юмор

7.1K постов53.2K подписчиков

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Вы смотрите срез комментариев. Показать все
0
DELETED
Автор поста оценил этот комментарий
Да ваще пипец, я сам этим не занимаюсь, но блин, такие траблы вылезают иногда, хрен догадаешься.
раскрыть ветку (3)
Автор поста оценил этот комментарий

Так во всем ПО!

"Если бы архитекторы строили дома также, как программисты пишут программы, то от случайно ударившейся вороны в шестое окно на пятом этаже под отрицательным углом снесло бы весь город нахрен, потому что разработчики окна не тестировали удар вороны изнутри комнаты"

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

Эксперты уже притащили в комнату страуса с целью напугать. Зная особенность страусов прятать голову в песок, хакер может использовать страуса для пробивания пола и проникновения в защищенные квартиры. Данная процедура уже была опробована на бумажном перекрытии. Производители призывают устанавливать бетонные полы с алмазным напылением, чтобы страус стер голову, пробивая пол, но этот патч удорожает не только стоимость перекрытий, но и требует установку ж/б усилителей конструкции всего лишь за 299$ млн!


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

Пруф: https://www.cnews.ru/news/top/2022-01-10_prinadlezhashchij_m...

раскрыть ветку (2)
0
DELETED
Автор поста оценил этот комментарий
Вот совершенно точное определение, я не знаю как пользователи находят невообразимые комбинации, чтобы сломать систему, поэтому при составлении алгоритма приходится учитывать все невозможные и нелогичные действия пользователя.
раскрыть ветку (1)
Автор поста оценил этот комментарий

очень сложно работать с алгоритмами, которые допускают некоторые вольности. Например, нечеткая логика, ИИ и т.д. Или просто очень много переменных, в сложных формулах можно даже не заметить что что-то не так...

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества