Трудовые будни
Сложность окружающего мира продолжает пугать.
Переставил я тут винды, свил гнездо, утоптал, поставил нужных программ, сел в кресло, налил кофию, поерзал, вот думаю поработаю сейчас.
Проверю, например, как выглядит свежеустановленный RawDigger на свежеустановленной же системе и не надо ли поправить чего, что будет пугать нового юзера.
Запускаю инсталлятор, то, се, иконка RD на десктопе, даблкликаю на нее. И НИЧЕГО. Опаньки!
Еще кликаю. Опять ничего. Еще кликаю. Ничего.
Потом, когда я уже пригорюнился, раз и запустились три RawDigger-а. Хм. Антивирус долго проверял впервые запущенную программу? Вырубаю антивирус, кликаю, запускается сразу. Ага? Оно? Ну таки да, был 2014-й касперский, сейчас 2015-й. Сдаунгрейдил, перезагрузился.
Кликаю на иконку RD. И НИЧЕГО. Выключаю антивирус, кликаю. И НИЧЕГО.
Беру виртуальную машину со свежеустановленной Win7, кою держу для опытов, ставлю туда RD, запускается мгновенно. Опаньки!
Пока я это делал - в физической машине завелись две копии RD. Ну секунд 20 (или 40, не считал) тормозят и заводятся. После того как одна завелась - запускаются сразу.
Чукча умный, он знает что странные таймауты - это обычно DNS. Смотрю в настройки. На физической машине - ручками, на виртуальной - по DHCP, но настройки DNS одинаковы. Интересно.
Запускаю RawDigger еще раз, смотрю в список процессов, он там есть сразу (то есть не антивирус), снимаю с живого процесса дамп. Загоняю дамп в отладчик. Вижу строчку, которая тормозит:
Дальше все очевидно и понятно. Control Panel - Internet Options - Connections - LAN Settings.
Ставишь Automatically detect (умолчание у винды) - тормозит. Снимаешь - не тормозит. Понятно, в нормальной ситуации этот автомат у меня отрублен, вот я никогда такого и не видел.
Ну и в программе что делать понятно - унести инициализацию в другой thread или, как я сделал, инициализировать при первом обращении к сети (что тоже в другом thread, впрочем, но и "обращение к сети" у стандартно настроенного RD - раз в неделю). Уже унес (в FRV унесем в следующей версии).
Почитал я про Web Proxy Autodiscovery и стало понятно, отчего в виртуальной машине не тормозит: она получает все по DHCP и, вероятнее всего (проверять не стал), по DNS/http этот самый wpad.dat не пытается найти. А физическая машина живет без DHCP, со статическими адресами, а значит autodiscovery может только по DNS.
Аналогично, понятно отчего "тормозит/не тормозит". Потому что есть Negative cache и отсутствие wpad.lexa.ru запоминается на какое-то время.
Еще одно знание, которого я бы хотел не знать.
На самом деле, конечно, дело еще и в Qt. Которая ставит флаги "ходить по DNS/DHCP" для WinHttpGetProxyForUrl. Из лучших, конечно же, соображений.
В комментариях к этому коду в Qt еще написано, что винда ходит по каждому сетевому интерфейсу отдельно (для DHCP, наверное?), это тоже многое объясняет, в боевой машине интерфейсов 7 штук, в виртуальных, понятно, по одному.
Comments
> Потом, когда я уже
> Потом, когда я уже пригорюнился, раз и запустились три RawDigger-а.
Ага! Отлились кошке мышкины слезы.
> Ставишь Automatically detect (умолчание у винды) - тормозит. Снимаешь - не тормозит.
> Понятно, в нормальной ситуации этот автомат у меня отрублен
Ну он не мешает в гражданской жизни.
Ну таки да, отлились.
У меня ж есть старая формулировка: как много есть вещей, которых я бы ХОТЕЛ БЫ НЕ ЗНАТЬ!
Ну и вообще - если вы