Pull to refresh

Comments 97

UFO landed and left these words here
http://wordrive.com/~59
Способ оформления ссылки, чтобы занимала меньше места и несла информацию о номере фразы. Чем выше основа системы счисления, тем меньше знаков нужно для выражения айдишника. 59 в 62-ричной системе — 319. 1 000 000 — это «4c92» в 62-ричной. То есть на много миллионов хватит четырех знаков. Конечно, дополнительно еще можно несложно шифровать, у меня пока этого нет за ненадобностью.
UFO landed and left these words here
Используйте лушче 64-ричную. Можно получить путем base64 преобразования, и последующей замены «+» и «/» на «-» и «_».
59 в 62-ричной системе — 319

Как!? Как такое может быть!?!?
автор не совсем очевидно выразился (из-за того, что сначала с 59 в одну сторону, а с 4c92 в другую). так понятно:
319=62*5+9, то есть 59 в 62ричной
Мистика, уведомление об ответе на пришло, поэтому отвечаю с опозданием. Да, теперь понятно. Так действительно может быть :)
26 букв английского алфавита + 26 заглавных букв + 10 символов цифр = 62. С этим можно встретиться например в сервисах: tinyurl, bit.ly, t.co.
UFO landed and left these words here
вопрос — зачем? почему именно 64 должно быть?:)
64 — это 2 в 6 степени. И если символов будет 64, то самое простое преобразование будет выглядеть как «разрезание» исходных данных на порции по 6 бит.
Сплошь и рядом подобные чудеса.
Изменения в коде никак не хотели отображаться в админке. Часа два искал где косяк…
(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: антидолбоеб говоришь?
UFO landed and left these words here
Недавно: не сохранялась сессия, вот хоть убейте.
В PHP5 и поздних версиях 4-ки есть 5-й параметр set_cookie, а в ранних четверках его нет и функция просто не работает, без всяких ошибок…
А уж на что я только не грешил:)
Вчера обнаружил, что если запустить нижеследующий скрипт в Фаерфоксе или Хроме в двух вкладках последовательно, то первая вкладка замирает на цикле(как и необходимо), а вторая висит в ожидании пока отработает первая и только потом начинает работать(хотя ожидается от неё другое действие).
В Сафари всё работает правильно. В 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';
такая проверка на локи работать не будет из-за отсутствия атомарности.
Поясните пожалуйста.

ПС: Такая проверка не работает только в ФФ и Хроме. А при запуске скриптов Cron'ом — всё ок.
Как то гемороился с подобным. Использовал Shared memory в PHP
Отлаживал выгрузку по логинам пользователей из Оракла в Эксель, вводя в качестве примера фамилию коллеги. Ничего не выводило. Правили вывод, смотрели кейсы, джойны, макросы…

Много времени ушло, пока сообразили, что в качестве тестового юзера я пытался использовать единственного, наверное, человека в отделе, который работал не под доменной, а под локальной учеткой, в силу чего в логе вообще не появлялся.
Имхо, нормальный программист вместо writelog ('1')/writelog ('2') сразу напишет writelog ('Exec: '.$param) и не будет дёргать хостеров…
Ну, очевидно, что в представленном примере так, потому что больше входных данных для селектора нет. В моем случае все сложнее было — поведение блока, в котором было логгирование, зависело от состояния сессии, кук, входной строки, параметров, состояния базы данных, которое еще и при выполнении скрипта меняется. Второй рефреш там уже не то же самое, что первый на чистом браузере. В итоге я так и сделал, просто это все время занимает, надо было уже домой бежать, а хостеры ночные, да и баг был и вправду похож на чудеса RewriteEngine.
Ну и надо было в лог валить всё, что могло так повлиять.
кстати, удобнее использовать FirePhp вместо такого самопального логирования writelog.
у меня была похожая ошибка, но я сразу догадался посмотреть сначала в фаербаге какие запросы отправляются, а потом логировать request_uri.
Вы притомитесь использовать FirePhp, чтобы найти ошибку, которая проявляется только в Хроме.
в таких WTF случаях, помогает весь $_REQUEST в лог вывалить, и посмотреть что не так.
>what is fuck
Имеется в видут WTF? — An Internet slang acronym for «what the fuck».
Тьфу, тупо опечатался. Исправил, спасибо)
Меня чуть инфаркт не хватил, когда я увидел Log.wtf() в Android SDK…
Хаха, класс :) Ну, впрочем, название очень даже органично сочетается с описанием: «Report an exception that should never happen.». Ибо, после долгих поисков того, «что не должно происходить», на языке крутятся только эти три буквы :)
О чудесах. Один мой начинающий коллега любит решать проблемы в программах перестановкой строк туда сюда. Вместо того чтобы разобраться что на самом деле происходит.

Для него то что происходит при этом в программе — Магия. ИМХО настоящий программист должен всегда знать что у него происходит в программах. А если же что-то идёт не так как он рассчитывал, значит надо садится и разбираться! Магии здесь быть не должно.
Особенно радует, когда баги исправляются прибавлением к чему-нибудь единицы :)
Это краеугольный камень разработки. Помогает в 90% случаев
При работе с той же графикой — тот самый 1 пиксель, который куда-то постоянно пропадает и вылазеет где не надо. И, как бы не было стыдно признаваться, действительно +-1 в таких случаях — незаменимое средство…
Это не программирование, это верстка :)
Нет, я говорил как раз о работе с графикой в программах,
а не графических редакторах :)
А всё равно верстка :) На js тоже можно «программить» вручную выставляя размеры и позицию элементов, но эта часть работы всё равно вёрстка :)
То есть создание визуальных компонентов для десктопных приложений Вы называете версткой?
Ну ладно :)
Этап выставления размеров видимых элементов и их позиционирование относительно друг-друга и есть верстка.
Это иногда помогает, честно помогает :))
Иногда такие заковыристые проблемы вылезают, хоть вешайся. В стиле доктора хауса: несколько дней бьешься над проблемой, голова уже пухнет. А потом раз, и внезапно приходит в голову простое и элегантное решение.
Ага. Исправление ошибки должно сопровождаться выкриками вроде «ну конечно, как же я сразу не подумал!», а не «о, почему-то заработало...»
«о, почему-то заработало…
ну конечно, как же я сразу не подумал!»
более того, если «о, почему-то заработало», то сидишь потом и ищешь, почему. самые мерзкие проблемы:)
Когда находишь ошибку это пол беды, а когда всё реально правильно, начинаешь исправлять методом тыка, не помогает, откатываешься на первоначальный вариант и тут хоп всё работает. В этих случаях я считаю виноватой «зубную фею» =)
а ещё бывает, когда не тот файл правишь, а пытаешься запустить/скомпилить — ошибка не устранена
Бывает, когда я, имея открытым ssh, начинаю править код прямо на сервере, а проверяю его на локалке…
Или когда есть >=2 шаблона у сайта, правишь один, а тестируешь другой.
У нас технический лидер говорит: «В программировании нет ничего невозможного».
И вправду, чего только не бывает/бывало. Где еще может получиться отрицательный вес, или камень может полететь, или функция будет годами делить на ноль, нарушая все законы математики, а из-за какого-нибудь "/EHa" это заметят только чисто случайно, разбираясь с совершенно другой проблемой. )
сегодня дебажил отправку формы на сервер с помощью jQuery — не срабатывает обработчик и все! Смотрю файрбагом html — нету тега form)) Смотрю исходный код в файле — никуда не пропадал)) Часа два ломал голову пока не допер что выше формы есть незакрытый select и баг из за него))))
Мне как то раз надо было запоминать в сессии предыдущую страницу (точнее текущую, а при последующем вызове буду знать, какая была предыдущая)
Так вот этот favicon.ico в хроме тоже нервы потрепал, правда быстро стало ясно, почему не работает по урлу предыдущей страницы ))
UFO landed and left these words here
Давно, когда только начинал осваивать программирование, игрался с Delphi.
Создал программку с канвасом, или как там оно называлось, уже не помню, и сделал загрузчик картинки в реалтайме (запускаешь программу, тыкаешь кнопку, выбираешь в диалоге картинку — она рисуется на канвасе и сохраняется в папку программы, при следующем запуске грузится уже оттуда сразу).
После нескольких запусков надо было удалить руками картинку в папке.
Удалил.
Запускаю — она все равно подгружается.
Попробовал еще раз — всё равно.
Полностью перекомпилировал программу — не помогло.
Перезапустил Delphi, еще раз перекомпилировал…
Когда удаление кода, подгружающего картинку при запуске, тоже не помогло — впервые в жизни почти физически почувствовал как едет крыша :)
Но тут пришла спасительная мысль о том, что картинка просто осталась в той области памяти, которую использует канвас.
UFO landed and left these words here
UFO landed and left these words here
Хм, странно. У меня фавикон в подпапке, и яндекс нормально его увидел, показывается в результатах поиска. А гугл вообще ведь фавиконы не показывает в результатах. Или, может, вы не о поисковиках.
У меня один раз был случай, когда крыша почти поехала в реальности.

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

Стоит у стены дверка, замотанная в пупырчатый полиэтилен, я ее беру аккуратненько в руки, поднимаю и несу к стойке, чтобы там размотать и вставить в стойку и вдруг у меня в руках появляется непонятная легкость, а дверь ВНУТРИ почти герметичного полиэтилена… пропадает, что ли… Вот как в фильмах показывают, как волшебники исчезают, рукой махнул, только что был, пыньк! и нету. Только у меня она исчезла совершенно беззвучно (слышно было через окно, как машины едут).

Остановился, смотрю остолбенело на руки свои, которые уже ничего не сжимают, сходятся, в них только полиэтилен, двери нет. «Здравствуй, белоч… нет, ну пусть будет барсук или даже большой толстый сурок! Вроде не пил...»

Потом поглядел вниз — опаньки, а вот она! Внизу спокойненько лежит, компактной кучкой, внутри мешка. Дверь была из закаленного стекла, видимо, строители ее пинали там как-то, и маленькой нагрузки хватило, чтобы она развалилась. А каленое стекло разваливается сразу, одномоментно и на мелкие кусочки. Смотрел-то я не на нее, а куда иду, вот и не заметил движения внутри. Но «приход» был надолго…
Это что-то из разаряда ироничного детектива Дарий Донцовой для айтишников? Сразу стало понятно, что убийца дворецкий favicon.
Вы будете смеяться, но это действительно вина хрома, и вы не первый. У меня чуть крыша не съехала, когда я начала переносить свой старый сайт на фреймворк — баннеры в шапке вызывались трижды. На обычном «спагетти»-движке один раз, а на MVC — трижды. Показывались один раз, а статистика отрабатывала трижды! Я из-за этого отказалась от ZF — была уверена, что это его баг. Каково было мое удивление, когда на Yii оказалось то же самое! Тут уже я решила зарепортить баг, т.к. фреймворк очень приглянулся. И в правилах багрепорта прочла, что надо потестить во всех браузерах. И обнаружила, что «грешны» только Chrome и Chromium, а в остальных все в порядке. Я понятия не имею, как это можно объяснить, но все скрипты MVC в хроме этому подвержены. Независимо от фреймворка. А на обычной «лапше» с require_once это не проявляется, хоть 20 файлов подключи в один.
А ещё в хроме появилась ненавистная мною, как веб-разработчиком фича — подгрузка страницы ДО завершения набора адреса в строке.
Хм, а откуда ж он знает, что грузить тогда? Хотя функция прикольная для режима «просто юзер». Набираешь лента.ру, а он тебе уже ее подгрузил и готов показать. Я б на месте маркетологов такую штуку сделал.
UFO landed and left these words here
Тут живая женщина! Я нашел ее, потсаны!
> Кстати, для прототипа сервиса my.wordrive.com меня порадовала задача написания функции перевода из десятичной в 62-ричную систему и обратно. Ведь появляются же такие задачи!.. И ведь без нее никак.

И что тут сложного? Делим число на 62 до посинения, или, наоброт, складываем цифры и умножаем на 62. Единственное — в предел 32-битного числа легко упереться.
Черт, ответил не туда — в общем, вам ответ чуть ниже)
Сложного абсолютно ничего, принцип перевода из одной системы счисления в другую одинаков для всех систем счисления, а алгоритмы, для этого предназначенные, изучают на первом курсе технического ВУЗа. Я про саму постановку задачи. Не знаю, как у вас, а у меня 62-ричная система счисления вызывает улыбку :)
Как-то шутили с приятелем, что числа вроде 129, 513 и тд. обычно вызывают у программистов легкий ступор :)
Ничего себе — лёгкий… я на две минуты завис только что…
пришел как-то в проект на плюсах. Добавил новый код. Собрал, запустил — программа неверно работает ( никак не связано с патчем ). Пытаюсь сузить место ошибки, убираю весь код до тех пор пока не остается
int x=0;
когда его убираю — все хорошо, добавляю — прога выдает неверный результат.
Через три дня дебага методом «пристального взгляда» нашел ошибку. Это была неинициализированная переменная типа bool. Так как она не была инициализрованна, то значение свое получала из того что было в памяти до тех пор. А было там до этого всегда true ( любое отличное от нуля значение ). Теперь же получила значение 0 — оставшееся от новой переменной.
Да, вспоминаются лохматые прошлые, когда моя оконная библиотека для турбопаскаля 4.0 начинала глючить вместе с ростом программы, где она была (в начале не глючила вообще). Ну тогда я был вообще молодец — не знал, что такое глобальные переменные и хранил координаты окошек в памяти по прямой адресации. Вот так: mem[3A32:0232] := 32; До определенного момента даже работало)
UFO landed and left these words here
спасибо :) пиар ссылок пока бесполезен, если честно. Программа еще недели через три будет, когда о ней все уже позабывают, рекламы у меня на сайте нет, сам сайт еще сильно недоделан) но все равно хорошо, много всего насоветовали полезного)
у меня тоже сегодня мистика была… есть старая игра. к ней мы делаем аддон, луа скриптинг и все такое. среди прочего — функция которая создает хттп сервер и поступающие на него команды переадресует луа.
отлично, написал несколько функций, протестил из консоли игры — все работает, все супер.
Решил протестить через хттп сервер… wtf?? ошибка и все такое, как будто функции не существует вообще.
бился, бился… перемещал эти функции туда же где лежали работающие — ошибка оставалась. потом снова злостно жал undo… и вдруг случилось чудо! заработало!
собственно я до сих пор не знаю, почему…
Я когда создаю сайт сразу делаю ему favicon.ico и robots.txt, потому что, изучая логи доступа, понял, что это два таких файла, которые хочешь не хочешь, а запрашиваются постоянно как поисковиками, так и браузерами) Кстати, по-поводу фавиконки, Firefox, конечно, молодец, что один раз запрашивает иконку, кэширует ее в своей sqlite-базе, но во время девелопмента, хочется перескочить на хром, который добросовестно обновляет фавиконку моментально, а в лисичке я вижу фавиконку, которую уже 15 раз успел поменять)
Как я вас понимаю… У меня в программировании и в жизни часто подобное случается. Друзья привыкли. Теперь если что, говорят, что это все от того, что "карма плохая" у меня видите ли.
никогда этого не делаю, но тут почему-то ужасно захотелось насрать тебе в плохую карму. остановился. передумал. жамнул ап. :)
Более 80% проблем возникших на уже работавшей системе — это нехватка места на диске.
Кончилось место — отвалилась БД, репликация и т.д. Буквально вчера ломали голову, какого фига редис жутко грузит диск — я уже сделал запись раз в 10 минут и все равно. Оказалось просто места нет, и он снова и снова пытается начать дамп, а места нет.
Еще 15% проблем — настройки сети и фаервола, когда на одной машине работает на другой нет.
Поправьте маленько текст что ли — видимо торопились и пропустили слова:

> байка случилась лет семь со мной в Турции
и
> Давайте я все-таки полное содержание .htaccess:


И
> Кстати, для прототипа сервиса my.wordrive.com меня порадовала задача
Так и задумано?
Screenshot my.wordrive (c waca.ru)
Ну как, версию обновляли, все упало, чинил «на живом» :) это недолго продолжалось)
спасибо, поправил, действительно торопился)
> Лет семь со мной в Турции, в отеле, произошла забавная ситуация.
Всё же лучше добавить, что случай произошёл семь лет назад :) если об этом речь ;)
я однажды случайно скопировал файл 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-параметром :)

Честное слово — думал с ума схожу :)

Любить программирование за поиски ошибок в течение нескольких дней попахивает мазахизмом :)
Имхо, автор имел ввиду эмоции, которые испытываешь, когда эти ошибки находишь =)
Если вы впервые столкнулись с запросами несуществующих картинок, которые выполняются программной частью, то видимо у вас не очень и богатый опыт, потому что это история встречается часто. Правда обычно это случается так, что где-то на сайте есть:
<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 помог)
Ха, на двойную запись в лог из за Хрома натыкался буквально в этот понедельник. Правда, медитировать над причиной пришлось всего минут 20, вовремя вспомнил про favicon.ico :)
Можно было бы попробывать поанализировать access.log апача.
Хостинг логол, там все удобно, но вот лог почему-то доступен только через скачивание через веб через контрольную панель. Лог вырос уже к тому времени и стал тяжелым. Длинный и нудный путь, иначе бы с него начал, конечно. Иначе бы глянул, конечно.
Я стараюсь тестировать все локально, перед тем как закачивать на продакшен сервер, что бы потом не танцевать с бубном. Локально доступ к access.log можно получить достаточно быстро. Тоже самое можно сделать через ssh на хосте.
UFO landed and left these words here
Sign up to leave a comment.

Articles