Comments 97
http://wordrive.com/~59
Способ оформления ссылки, чтобы занимала меньше места и несла информацию о номере фразы. Чем выше основа системы счисления, тем меньше знаков нужно для выражения айдишника. 59 в 62-ричной системе — 319. 1 000 000 — это «4c92» в 62-ричной. То есть на много миллионов хватит четырех знаков. Конечно, дополнительно еще можно несложно шифровать, у меня пока этого нет за ненадобностью.
Способ оформления ссылки, чтобы занимала меньше места и несла информацию о номере фразы. Чем выше основа системы счисления, тем меньше знаков нужно для выражения айдишника. 59 в 62-ричной системе — 319. 1 000 000 — это «4c92» в 62-ричной. То есть на много миллионов хватит четырех знаков. Конечно, дополнительно еще можно несложно шифровать, у меня пока этого нет за ненадобностью.
Используйте лушче 64-ричную. Можно получить путем base64 преобразования, и последующей замены «+» и «/» на «-» и «_».
59 в 62-ричной системе — 319
Как!? Как такое может быть!?!?
автор не совсем очевидно выразился (из-за того, что сначала с 59 в одну сторону, а с 4c92 в другую). так понятно:
319=62*5+9, то есть 59 в 62ричной
319=62*5+9, то есть 59 в 62ричной
Мистика, уведомление об ответе на пришло, поэтому отвечаю с опозданием. Да, теперь понятно. Так действительно может быть :)
26 букв английского алфавита + 26 заглавных букв + 10 символов цифр = 62. С этим можно встретиться например в сервисах: tinyurl, bit.ly, t.co.
Сплошь и рядом подобные чудеса.
Изменения в коде никак не хотели отображаться в админке. Часа два искал где косяк…
Изменения в коде никак не хотели отображаться в админке. Часа два искал где косяк…
(00:34:03) Neutral: кто додумался кроме папки admin сделать папку admingo?
(00:34:23) xxx: не кроме, она вместо
(00:34:31) Neutral: я оценил юмор
(00:34:33) xxx: odmingo к томуже
(00:34:39) Neutral: да, прости
(00:34:45) xxx: Эт антидолбоеб
(00:34:48) xxx: ломали часто раньше
(00:35:00) xxx: верней брутфорсили
(00:35:11) xxx: щас не актуально уже
(00:35:11) Neutral: антидолбоеб говоришь?
Недавно: не сохранялась сессия, вот хоть убейте.
В PHP5 и поздних версиях 4-ки есть 5-й параметр set_cookie, а в ранних четверках его нет и функция просто не работает, без всяких ошибок…
А уж на что я только не грешил:)
В PHP5 и поздних версиях 4-ки есть 5-й параметр set_cookie, а в ранних четверках его нет и функция просто не работает, без всяких ошибок…
А уж на что я только не грешил:)
Вчера обнаружил, что если запустить нижеследующий скрипт в Фаерфоксе или Хроме в двух вкладках последовательно, то первая вкладка замирает на цикле(как и необходимо), а вторая висит в ожидании пока отработает первая и только потом начинает работать(хотя ожидается от неё другое действие).
В Сафари всё работает правильно. В 2 разных браузерах работает правильно. Если в 1-й вкладке дописать в адресную строку например ?a=1, а во второй ?a=2, то тоже отрабатывает правильно.
Где подвох до сих пор не понял… Предполагаю, что ФФ и Хром видя что страницы имеют одинаковый адрес пытаются прогрузить первую вкладку и потом используя кэш открыть 2-ю.
В Сафари всё работает правильно. В 2 разных браузерах работает правильно. Если в 1-й вкладке дописать в адресную строку например ?a=1, а во второй ?a=2, то тоже отрабатывает правильно.
Где подвох до сих пор не понял… Предполагаю, что ФФ и Хром видя что страницы имеют одинаковый адрес пытаются прогрузить первую вкладку и потом используя кэш открыть 2-ю.
define('ROOT_PATH', dirname(__FILE__));
echo 'start <br />';
if(file_exists(ROOT_PATH . '/!!lock.txt')) {
echo 'script locked<br />';
$i = 0;
while(file_exists(ROOT_PATH . '/!all_Ok_'.++$i.'.txt')) {}
fclose(fopen(ROOT_PATH . '/!all_Ok_'.$i.'.txt', 'w'));
} else {
fclose(fopen(ROOT_PATH . '/!!lock.txt', 'w'));
// sleep 30 sec
for($i=1;$i<=30;$i++){
sleep(1);
// for break script
if(!file_exists(ROOT_PATH . '/!!lock.txt')) {
die('script stopped');
}
}
unlink(ROOT_PATH . '/!!lock.txt');
}
echo 'end';
Отлаживал выгрузку по логинам пользователей из Оракла в Эксель, вводя в качестве примера фамилию коллеги. Ничего не выводило. Правили вывод, смотрели кейсы, джойны, макросы…
Много времени ушло, пока сообразили, что в качестве тестового юзера я пытался использовать единственного, наверное, человека в отделе, который работал не под доменной, а под локальной учеткой, в силу чего в логе вообще не появлялся.
Много времени ушло, пока сообразили, что в качестве тестового юзера я пытался использовать единственного, наверное, человека в отделе, который работал не под доменной, а под локальной учеткой, в силу чего в логе вообще не появлялся.
Имхо, нормальный программист вместо writelog ('1')/writelog ('2') сразу напишет writelog ('Exec: '.$param) и не будет дёргать хостеров…
Ну, очевидно, что в представленном примере так, потому что больше входных данных для селектора нет. В моем случае все сложнее было — поведение блока, в котором было логгирование, зависело от состояния сессии, кук, входной строки, параметров, состояния базы данных, которое еще и при выполнении скрипта меняется. Второй рефреш там уже не то же самое, что первый на чистом браузере. В итоге я так и сделал, просто это все время занимает, надо было уже домой бежать, а хостеры ночные, да и баг был и вправду похож на чудеса RewriteEngine.
Ну и надо было в лог валить всё, что могло так повлиять.
кстати, удобнее использовать FirePhp вместо такого самопального логирования writelog.
у меня была похожая ошибка, но я сразу догадался посмотреть сначала в фаербаге какие запросы отправляются, а потом логировать request_uri.
у меня была похожая ошибка, но я сразу догадался посмотреть сначала в фаербаге какие запросы отправляются, а потом логировать request_uri.
в таких WTF случаях, помогает весь $_REQUEST в лог вывалить, и посмотреть что не так.
>what is fuck
Имеется в видут WTF? — An Internet slang acronym for «what the fuck».
Имеется в видут WTF? — An Internet slang acronym for «what the fuck».
О чудесах. Один мой начинающий коллега любит решать проблемы в программах перестановкой строк туда сюда. Вместо того чтобы разобраться что на самом деле происходит.
Для него то что происходит при этом в программе — Магия. ИМХО настоящий программист должен всегда знать что у него происходит в программах. А если же что-то идёт не так как он рассчитывал, значит надо садится и разбираться! Магии здесь быть не должно.
Для него то что происходит при этом в программе — Магия. ИМХО настоящий программист должен всегда знать что у него происходит в программах. А если же что-то идёт не так как он рассчитывал, значит надо садится и разбираться! Магии здесь быть не должно.
Особенно радует, когда баги исправляются прибавлением к чему-нибудь единицы :)
Это краеугольный камень разработки. Помогает в 90% случаев
При работе с той же графикой — тот самый 1 пиксель, который куда-то постоянно пропадает и вылазеет где не надо. И, как бы не было стыдно признаваться, действительно +-1 в таких случаях — незаменимое средство…
Это не программирование, это верстка :)
Нет, я говорил как раз о работе с графикой в программах,
а не графических редакторах :)
а не графических редакторах :)
А всё равно верстка :) На js тоже можно «программить» вручную выставляя размеры и позицию элементов, но эта часть работы всё равно вёрстка :)
Это иногда помогает, честно помогает :))
Иногда такие заковыристые проблемы вылезают, хоть вешайся. В стиле доктора хауса: несколько дней бьешься над проблемой, голова уже пухнет. А потом раз, и внезапно приходит в голову простое и элегантное решение.
Иногда такие заковыристые проблемы вылезают, хоть вешайся. В стиле доктора хауса: несколько дней бьешься над проблемой, голова уже пухнет. А потом раз, и внезапно приходит в голову простое и элегантное решение.
Ага. Исправление ошибки должно сопровождаться выкриками вроде «ну конечно, как же я сразу не подумал!», а не «о, почему-то заработало...»
Когда находишь ошибку это пол беды, а когда всё реально правильно, начинаешь исправлять методом тыка, не помогает, откатываешься на первоначальный вариант и тут хоп всё работает. В этих случаях я считаю виноватой «зубную фею» =)
У нас технический лидер говорит: «В программировании нет ничего невозможного».
И вправду, чего только не бывает/бывало. Где еще может получиться отрицательный вес, или камень может полететь, или функция будет годами делить на ноль, нарушая все законы математики, а из-за какого-нибудь "/EHa" это заметят только чисто случайно, разбираясь с совершенно другой проблемой. )
И вправду, чего только не бывает/бывало. Где еще может получиться отрицательный вес, или камень может полететь, или функция будет годами делить на ноль, нарушая все законы математики, а из-за какого-нибудь "/EHa" это заметят только чисто случайно, разбираясь с совершенно другой проблемой. )
сегодня дебажил отправку формы на сервер с помощью jQuery — не срабатывает обработчик и все! Смотрю файрбагом html — нету тега form)) Смотрю исходный код в файле — никуда не пропадал)) Часа два ломал голову пока не допер что выше формы есть незакрытый select и баг из за него))))
Извините, а что лежало на подносе?
Мне как то раз надо было запоминать в сессии предыдущую страницу (точнее текущую, а при последующем вызове буду знать, какая была предыдущая)
Так вот этот favicon.ico в хроме тоже нервы потрепал, правда быстро стало ясно, почему не работает по урлу предыдущей страницы ))
Так вот этот favicon.ico в хроме тоже нервы потрепал, правда быстро стало ясно, почему не работает по урлу предыдущей страницы ))
Давно, когда только начинал осваивать программирование, игрался с Delphi.
Создал программку с канвасом, или как там оно называлось, уже не помню, и сделал загрузчик картинки в реалтайме (запускаешь программу, тыкаешь кнопку, выбираешь в диалоге картинку — она рисуется на канвасе и сохраняется в папку программы, при следующем запуске грузится уже оттуда сразу).
После нескольких запусков надо было удалить руками картинку в папке.
Удалил.
Запускаю — она все равно подгружается.
Попробовал еще раз — всё равно.
Полностью перекомпилировал программу — не помогло.
Перезапустил Delphi, еще раз перекомпилировал…
Когда удаление кода, подгружающего картинку при запуске, тоже не помогло — впервые в жизни почти физически почувствовал как едет крыша :)
Но тут пришла спасительная мысль о том, что картинка просто осталась в той области памяти, которую использует канвас.
Создал программку с канвасом, или как там оно называлось, уже не помню, и сделал загрузчик картинки в реалтайме (запускаешь программу, тыкаешь кнопку, выбираешь в диалоге картинку — она рисуется на канвасе и сохраняется в папку программы, при следующем запуске грузится уже оттуда сразу).
После нескольких запусков надо было удалить руками картинку в папке.
Удалил.
Запускаю — она все равно подгружается.
Попробовал еще раз — всё равно.
Полностью перекомпилировал программу — не помогло.
Перезапустил Delphi, еще раз перекомпилировал…
Когда удаление кода, подгружающего картинку при запуске, тоже не помогло — впервые в жизни почти физически почувствовал как едет крыша :)
Но тут пришла спасительная мысль о том, что картинка просто осталась в той области памяти, которую использует канвас.
У меня один раз был случай, когда крыша почти поехала в реальности.
Ставил серверную стойку в магазин, набил, подключил, осталось только дверку поставить, а дверка была полностью стеклянная, без металлической рамки, только петли вверху и внизу и замочек, остальное — стекло.
Стоит у стены дверка, замотанная в пупырчатый полиэтилен, я ее беру аккуратненько в руки, поднимаю и несу к стойке, чтобы там размотать и вставить в стойку и вдруг у меня в руках появляется непонятная легкость, а дверь ВНУТРИ почти герметичного полиэтилена… пропадает, что ли… Вот как в фильмах показывают, как волшебники исчезают, рукой махнул, только что был, пыньк! и нету. Только у меня она исчезла совершенно беззвучно (слышно было через окно, как машины едут).
Остановился, смотрю остолбенело на руки свои, которые уже ничего не сжимают, сходятся, в них только полиэтилен, двери нет. «Здравствуй,белоч… нет, ну пусть будет барсук или даже большой толстый сурок! Вроде не пил...»
Потом поглядел вниз — опаньки, а вот она! Внизу спокойненько лежит, компактной кучкой, внутри мешка. Дверь была из закаленного стекла, видимо, строители ее пинали там как-то, и маленькой нагрузки хватило, чтобы она развалилась. А каленое стекло разваливается сразу, одномоментно и на мелкие кусочки. Смотрел-то я не на нее, а куда иду, вот и не заметил движения внутри. Но «приход» был надолго…
Ставил серверную стойку в магазин, набил, подключил, осталось только дверку поставить, а дверка была полностью стеклянная, без металлической рамки, только петли вверху и внизу и замочек, остальное — стекло.
Стоит у стены дверка, замотанная в пупырчатый полиэтилен, я ее беру аккуратненько в руки, поднимаю и несу к стойке, чтобы там размотать и вставить в стойку и вдруг у меня в руках появляется непонятная легкость, а дверь ВНУТРИ почти герметичного полиэтилена… пропадает, что ли… Вот как в фильмах показывают, как волшебники исчезают, рукой махнул, только что был, пыньк! и нету. Только у меня она исчезла совершенно беззвучно (слышно было через окно, как машины едут).
Остановился, смотрю остолбенело на руки свои, которые уже ничего не сжимают, сходятся, в них только полиэтилен, двери нет. «Здравствуй,
Потом поглядел вниз — опаньки, а вот она! Внизу спокойненько лежит, компактной кучкой, внутри мешка. Дверь была из закаленного стекла, видимо, строители ее пинали там как-то, и маленькой нагрузки хватило, чтобы она развалилась. А каленое стекло разваливается сразу, одномоментно и на мелкие кусочки. Смотрел-то я не на нее, а куда иду, вот и не заметил движения внутри. Но «приход» был надолго…
Это что-то из разаряда ироничного детектива Дарий Донцовой для айтишников? Сразу стало понятно, что убийца дворецкий favicon.
Вы будете смеяться, но это действительно вина хрома, и вы не первый. У меня чуть крыша не съехала, когда я начала переносить свой старый сайт на фреймворк — баннеры в шапке вызывались трижды. На обычном «спагетти»-движке один раз, а на MVC — трижды. Показывались один раз, а статистика отрабатывала трижды! Я из-за этого отказалась от ZF — была уверена, что это его баг. Каково было мое удивление, когда на Yii оказалось то же самое! Тут уже я решила зарепортить баг, т.к. фреймворк очень приглянулся. И в правилах багрепорта прочла, что надо потестить во всех браузерах. И обнаружила, что «грешны» только Chrome и Chromium, а в остальных все в порядке. Я понятия не имею, как это можно объяснить, но все скрипты MVC в хроме этому подвержены. Независимо от фреймворка. А на обычной «лапше» с require_once это не проявляется, хоть 20 файлов подключи в один.
А ещё в хроме появилась ненавистная мною, как веб-разработчиком фича — подгрузка страницы ДО завершения набора адреса в строке.
Тут живая женщина! Я нашел ее, потсаны!
> Кстати, для прототипа сервиса my.wordrive.com меня порадовала задача написания функции перевода из десятичной в 62-ричную систему и обратно. Ведь появляются же такие задачи!.. И ведь без нее никак.
И что тут сложного? Делим число на 62 до посинения, или, наоброт, складываем цифры и умножаем на 62. Единственное — в предел 32-битного числа легко упереться.
И что тут сложного? Делим число на 62 до посинения, или, наоброт, складываем цифры и умножаем на 62. Единственное — в предел 32-битного числа легко упереться.
Сложного абсолютно ничего, принцип перевода из одной системы счисления в другую одинаков для всех систем счисления, а алгоритмы, для этого предназначенные, изучают на первом курсе технического ВУЗа. Я про саму постановку задачи. Не знаю, как у вас, а у меня 62-ричная система счисления вызывает улыбку :)
пришел как-то в проект на плюсах. Добавил новый код. Собрал, запустил — программа неверно работает ( никак не связано с патчем ). Пытаюсь сузить место ошибки, убираю весь код до тех пор пока не остается
когда его убираю — все хорошо, добавляю — прога выдает неверный результат.
Через три дня дебага методом «пристального взгляда» нашел ошибку. Это была неинициализированная переменная типа bool. Так как она не была инициализрованна, то значение свое получала из того что было в памяти до тех пор. А было там до этого всегда true ( любое отличное от нуля значение ). Теперь же получила значение 0 — оставшееся от новой переменной.
int x=0;
когда его убираю — все хорошо, добавляю — прога выдает неверный результат.
Через три дня дебага методом «пристального взгляда» нашел ошибку. Это была неинициализированная переменная типа bool. Так как она не была инициализрованна, то значение свое получала из того что было в памяти до тех пор. А было там до этого всегда true ( любое отличное от нуля значение ). Теперь же получила значение 0 — оставшееся от новой переменной.
Да, вспоминаются лохматые прошлые, когда моя оконная библиотека для турбопаскаля 4.0 начинала глючить вместе с ростом программы, где она была (в начале не глючила вообще). Ну тогда я был вообще молодец — не знал, что такое глобальные переменные и хранил координаты окошек в памяти по прямой адресации. Вот так: mem[3A32:0232] := 32; До определенного момента даже работало)
у меня тоже сегодня мистика была… есть старая игра. к ней мы делаем аддон, луа скриптинг и все такое. среди прочего — функция которая создает хттп сервер и поступающие на него команды переадресует луа.
отлично, написал несколько функций, протестил из консоли игры — все работает, все супер.
Решил протестить через хттп сервер… wtf?? ошибка и все такое, как будто функции не существует вообще.
бился, бился… перемещал эти функции туда же где лежали работающие — ошибка оставалась. потом снова злостно жал undo… и вдруг случилось чудо! заработало!
собственно я до сих пор не знаю, почему…
отлично, написал несколько функций, протестил из консоли игры — все работает, все супер.
Решил протестить через хттп сервер… wtf?? ошибка и все такое, как будто функции не существует вообще.
бился, бился… перемещал эти функции туда же где лежали работающие — ошибка оставалась. потом снова злостно жал undo… и вдруг случилось чудо! заработало!
собственно я до сих пор не знаю, почему…
Я когда создаю сайт сразу делаю ему favicon.ico и robots.txt, потому что, изучая логи доступа, понял, что это два таких файла, которые хочешь не хочешь, а запрашиваются постоянно как поисковиками, так и браузерами) Кстати, по-поводу фавиконки, Firefox, конечно, молодец, что один раз запрашивает иконку, кэширует ее в своей sqlite-базе, но во время девелопмента, хочется перескочить на хром, который добросовестно обновляет фавиконку моментально, а в лисичке я вижу фавиконку, которую уже 15 раз успел поменять)
Как я вас понимаю… У меня в программировании и в жизни часто подобное случается. Друзья привыкли. Теперь если что, говорят, что это все от того, что "карма плохая" у меня видите ли.
Более 80% проблем возникших на уже работавшей системе — это нехватка места на диске.
Кончилось место — отвалилась БД, репликация и т.д. Буквально вчера ломали голову, какого фига редис жутко грузит диск — я уже сделал запись раз в 10 минут и все равно. Оказалось просто места нет, и он снова и снова пытается начать дамп, а места нет.
Еще 15% проблем — настройки сети и фаервола, когда на одной машине работает на другой нет.
Кончилось место — отвалилась БД, репликация и т.д. Буквально вчера ломали голову, какого фига редис жутко грузит диск — я уже сделал запись раз в 10 минут и все равно. Оказалось просто места нет, и он снова и снова пытается начать дамп, а места нет.
Еще 15% проблем — настройки сети и фаервола, когда на одной машине работает на другой нет.
я однажды случайно скопировал файл user.ini, который содержал в себе переводы для контроллера User, в корневую папку. Этот файлик переписывал php.ini и я ловил очень крутые глюки пока не понял в чем причина.
Когда впервые знакомился с web и php нечто подобное было.
Подумал что схожу с ума :)
php-скрипт — заносит данные в базу, и всё так правильно заносит, но…
в самом скрипте (на самом деле это была страничка), нечто вроде такого:
if (isset($_GET['bla-bla-bla'])) mysql_query(«INSERT INTO… ».$_GET['bla-bla-bla']);
т.е. если есть параметр — его значение заносится в базу.
И вот открываю страничку — всё нормально, появилась запись в базе.
Через минуту заглядываю в базу — а там записей почему то две…
Я сутки не мог понять — почему иногда заносится одна запись, иногда 2-3-4 (причём уже через какое-то время после того как я открывал страницу).
Оказалось, по неопытности, не знал что нельзя сохранять в базу GET параметры, а на страничке была реклама adsense.
И естественно когда я захожу на страничку — через какое-то время её посещает и бот адсенс, с тем же GET-параметром :)
Честное слово — думал с ума схожу :)
Подумал что схожу с ума :)
php-скрипт — заносит данные в базу, и всё так правильно заносит, но…
в самом скрипте (на самом деле это была страничка), нечто вроде такого:
if (isset($_GET['bla-bla-bla'])) mysql_query(«INSERT INTO… ».$_GET['bla-bla-bla']);
т.е. если есть параметр — его значение заносится в базу.
И вот открываю страничку — всё нормально, появилась запись в базе.
Через минуту заглядываю в базу — а там записей почему то две…
Я сутки не мог понять — почему иногда заносится одна запись, иногда 2-3-4 (причём уже через какое-то время после того как я открывал страницу).
Оказалось, по неопытности, не знал что нельзя сохранять в базу GET параметры, а на страничке была реклама adsense.
И естественно когда я захожу на страничку — через какое-то время её посещает и бот адсенс, с тем же GET-параметром :)
Честное слово — думал с ума схожу :)
Любить программирование за поиски ошибок в течение нескольких дней попахивает мазахизмом :)
Если вы впервые столкнулись с запросами несуществующих картинок, которые выполняются программной частью, то видимо у вас не очень и богатый опыт, потому что это история встречается часто. Правда обычно это случается так, что где-то на сайте есть:
И вот случается, что этот $some_path_from_result оказывается пустым, по каким-то причинам. В таких случаях браузер тоже посылает запрос на открытую страницу еще раз, а если «картинок» несколько — еще несколько раз. Вначале я был сильно удивлен логам и не мог понять, в чем же дело. Это было лет 6 назад.
Другое дело, что у меня был случай, опять же с веб-сайтом, когда дизайнер прислал макет, я его сверстал, написал программную часть, «прикрутил» дизайн, все отлично и готово к показу заказчику. Назначаю время, прихожу с ноутбуком (поднял на нем локально сервер) открываю сайт — стили css не работают. Я стыдливо улыбаюсь, начинаю копошиться, обещая закончить через пару секунд, так верчу, эдак — стиль есть, везде отображается, что файл подключен верно, но не работает. Я почесал голову, извинился и пообещал показать вечером сайт онлайн, а пока показал только функционал (как было возможно, без работающего css). Пришел домой, начал ковырять. Все анализаторы показывают, что с css все в порядке, но ничего не помогает. Удалял почти все стили, копировал из файла в файл. Делал что угодно — не работает и все. И media аттрибут верный, и в файле нет незакрытых классов, или других опечаток. И не работает не только у меня — выложил онлайн, дал ссылку коллегам — у всех стили не работают. Потом я заметил, что если я переписываю класс стиля вручную — он начинает работать. Заметив это, я начал смотреть, в чем же может быть дело. Оказалось, что пробелы в css заменились на какой-то пробельный UTF-8 символ, который браузер распознать не мог. Замена таких пробелов на обычные решила вопрос, однако, я уже тогда начинал думать, что свихнулся. Как там эти пробелы оказались — нераскрытая тайна.
<img src="<?php echo($some_path_from_result); ?>" width="xx" height="xx" alt="" />
И вот случается, что этот $some_path_from_result оказывается пустым, по каким-то причинам. В таких случаях браузер тоже посылает запрос на открытую страницу еще раз, а если «картинок» несколько — еще несколько раз. Вначале я был сильно удивлен логам и не мог понять, в чем же дело. Это было лет 6 назад.
Другое дело, что у меня был случай, опять же с веб-сайтом, когда дизайнер прислал макет, я его сверстал, написал программную часть, «прикрутил» дизайн, все отлично и готово к показу заказчику. Назначаю время, прихожу с ноутбуком (поднял на нем локально сервер) открываю сайт — стили css не работают. Я стыдливо улыбаюсь, начинаю копошиться, обещая закончить через пару секунд, так верчу, эдак — стиль есть, везде отображается, что файл подключен верно, но не работает. Я почесал голову, извинился и пообещал показать вечером сайт онлайн, а пока показал только функционал (как было возможно, без работающего css). Пришел домой, начал ковырять. Все анализаторы показывают, что с css все в порядке, но ничего не помогает. Удалял почти все стили, копировал из файла в файл. Делал что угодно — не работает и все. И media аттрибут верный, и в файле нет незакрытых классов, или других опечаток. И не работает не только у меня — выложил онлайн, дал ссылку коллегам — у всех стили не работают. Потом я заметил, что если я переписываю класс стиля вручную — он начинает работать. Заметив это, я начал смотреть, в чем же может быть дело. Оказалось, что пробелы в css заменились на какой-то пробельный UTF-8 символ, который браузер распознать не мог. Замена таких пробелов на обычные решила вопрос, однако, я уже тогда начинал думать, что свихнулся. Как там эти пробелы оказались — нераскрытая тайна.
Насчет первой части: когда ты досконально знаешь текст своих скриптов, вдруг вызваться картинка ими не может. Разумеется, когда какой-нибудь чужой софт копаешь, там может что угодно вылезти и подход к отладке там другой, там совсем другие предположения и гипотезы лезут :)
А с ютфными пробелами — это известная ситуация. Несколько раз уже случалось. iconv помог)
А с ютфными пробелами — это известная ситуация. Несколько раз уже случалось. iconv помог)
Ха, на двойную запись в лог из за Хрома натыкался буквально в этот понедельник. Правда, медитировать над причиной пришлось всего минут 20, вовремя вспомнил про favicon.ico :)
Можно было бы попробывать поанализировать access.log апача.
Хостинг логол, там все удобно, но вот лог почему-то доступен только через скачивание через веб через контрольную панель. Лог вырос уже к тому времени и стал тяжелым. Длинный и нудный путь, иначе бы с него начал, конечно. Иначе бы глянул, конечно.
Sign up to leave a comment.
О чудесах