Сдерживать рост само по себе ничем не поможет - мы с текущим населением выбрасываем 36 Гт в год и используем 40 млн. кв. км земель для производства мяса.
Но в целом, я согласен, - рост надо остановить, главным образом, в Африке и ЮВА.
Константа userExperience жёстко задана (содержит текст и GUID) и является неотъемлемой частью алгоритма UserChoice в Windows:
const wchar_t* userExperience =
L"User Choice set via Windows User Experience "
L"{D18B6DD5-6124-4341-9318-804003BAFA0B}";
С использованием этой константы (userExperience) в функции GenerateUserChoiceHash формируется строка (FormatUserChoiceString), которая затем хэшируется. В качестве хэша используется MD5, результат дополнительно модифицируется.
Отметка времени (см. комментарий выше о требованиях к отметке времени)
В комментариях к коду также сказано, что алгоритм подходит не для всех версий Windows, в частности, в версиях до Windows 1703 алгоритм не включал отметку времени, но включал путь к исполняемому файлу. Алгоритм должен работать в версиях, начиная со сборки Windows 1703.
Привет из 2016 года.
Свежескачанная Visual Studio Community Edition.
Абсолютно та же самая проблема и целый вечер битья головой об стену.
Нашел ответ на SO в виде ссылки на эту статью.
// обычный цикл
for(var i=0; i<items.length; i++) {
// код здесь...
}
// такой цикл работает быстрее
var size = items.length;
for(var i=0;i<size; i++){
// код здесь...
}
слабо верится. И JSPerf — не аргумент.
Вся остальная статья предельно логична. Другого и не ожидалось. Rivertrail по идее ожидается в ES7 или ES8, т.е. году в 2016 примерно. И то, не понятно, что с ним будет теперь, когда Брендан — основной пропагандист SIMD в JS — ушел из Mozilla.
Сдерживать рост само по себе ничем не поможет - мы с текущим населением выбрасываем 36 Гт в год и используем 40 млн. кв. км земель для производства мяса.
Но в целом, я согласен, - рост надо остановить, главным образом, в Африке и ЮВА.
К сожалению, в заметке не было приведено никаких технических деталей, поэтому пришлось немного поковыряться в репозитории mozilla-central.
Код, отвечающий за установку браузера по умолчанию, находится по пути ./toolkit/mozapps/defaultagent/ в файле SetDefaultBrowser.cpp.
Комментарий в файле
SetDefaultBrowser.cpp
:Хэш изменяется в конце каждой минуты, поэтому проверяем, чтобы хэш был тем же в момент, когда мы закончим запись значения.
Функция
SetDefaultBrowserUserChoice
в файлеSetDefaultBrowser.cpp
вызывает функциюSetUserChoice
, в которой и происходит вся "магия".А за магию отвечает функция
GenerateUserChoiceHash
, которая, в свою очередь, реализована в файле ./browser/components/shell/WindowsUserChoice.cpp.Ключевые функции файла
WindowsUserChoice.cpp
:CheckBrowserUserChoiceHashes
CheckUserChoiceHash
GenerateUserChoiceHash
Константа
userExperience
жёстко задана (содержит текст и GUID) и является неотъемлемой частью алгоритма UserChoice в Windows:С использованием этой константы (
userExperience
) в функцииGenerateUserChoiceHash
формируется строка (FormatUserChoiceString
), которая затем хэшируется. В качестве хэша используетсяMD5
, результат дополнительно модифицируется.Параметрами функции являются:
Протокол или расширения файлов:
https, http, .html, .htm
UserSID
— SID (security identifier) пользователяИдентификатор программы:
FirefoxURL
— для протоколовhttps
иhttp
FirefoxHTML
— для файлов.html
и.htm
Отметка времени (см. комментарий выше о требованиях к отметке времени)
В комментариях к коду также сказано, что алгоритм подходит не для всех версий Windows, в частности, в версиях до Windows 1703 алгоритм не включал отметку времени, но включал путь к исполняемому файлу. Алгоритм должен работать в версиях, начиная со сборки Windows 1703.
Как я понял из комментариев, функционал базируется на исследовании, которое выполнил Christoph Kolbicz, автор утилиты SetUserFTA (Set User File Type Associations). Подробнее об этом можно почитать в блоге Кристофа: SetUserFTA: UserChoice Hash defeated – Set File Type Associations per User or Group on Windows.
Свежескачанная Visual Studio Community Edition.
Абсолютно та же самая проблема и целый вечер битья головой об стену.
Нашел ответ на SO в виде ссылки на эту статью.
слабо верится. И JSPerf — не аргумент.
Вся остальная статья предельно логична. Другого и не ожидалось. Rivertrail по идее ожидается в ES7 или ES8, т.е. году в 2016 примерно. И то, не понятно, что с ним будет теперь, когда Брендан — основной пропагандист SIMD в JS — ушел из Mozilla.