All streams
Search
Write a publication
Pull to refresh
25
0

Пользователь

Send message

Если перейти по ссылке из статьи, то можно увидеть дату 02/02/2022, а это ровно год назад. Но непонятно, то ли в Microsoft ошиблись в дате в ссылке, то ли в дате в посте. То ли это всё генерила нейросетка (`prompt: пересобери скайп под m1, опубликуй новость в блоге, сделай вид, что мы ещё год назад это опубликовали`)?

Самый "дешёвый" вариант — это собрать исполняемый бинарный файл (.exe) на основе скрипта Python. На каком-то этапе всё равно придётся установить интерпретатор Python, но после сборки можно будет его удалить и оставить только результирующий бинарь.

Несколько инструментов, которые можно использовать для создания исполняемого бинарнаго файла:

  1. PyInstaller + Auto PY to EXE

  2. cx_Freeze

Когда прочитал название «Автоматическое заполнение файлами документов Word и подписей к ним с помощью Python и библиотеки docx», то предположил, что "подписи" — это криптографические подписи, а оказалось, что "файлы" — это изображения, а "подписи" — это текстовые описания под изображениями. Более однозначным было бы название «Автоматизация вставки изображений с описаниями в документы Word с помощью Python и библиотеки docx».

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

Код, отвечающий за установку браузера по умолчанию, находится по пути ./toolkit/mozapps/defaultagent/ в файле SetDefaultBrowser.cpp.

Комментарий в файле SetDefaultBrowser.cpp:

The hash changes at the end of each minute, so check that the hash should be the same by the time we're done writing.

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

Функция SetDefaultBrowserUserChoice в файле SetDefaultBrowser.cpp вызывает функцию SetUserChoice, в которой и происходит вся "магия".

А за магию отвечает функция GenerateUserChoiceHash, которая, в свою очередь, реализована в файле ./browser/components/shell/WindowsUserChoice.cpp.

Ключевые функции файла WindowsUserChoice.cpp:

  • CheckBrowserUserChoiceHashes

  • CheckUserChoiceHash

  • GenerateUserChoiceHash

Константа 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, результат дополнительно модифицируется.

UniquePtr<wchar_t[]> GenerateUserChoiceHash(const wchar_t* aExt,
        const wchar_t* aUserSid,
        const wchar_t* aProgId,
        SYSTEMTIME aTimestamp) {
    auto userChoice = FormatUserChoiceString(aExt, aUserSid, aProgId, aTimestamp);
    if (!userChoice) {
        return nullptr;
    }
    return HashString(userChoice.get());
}

Параметрами функции являются:

  • Протокол или расширения файлов:

    • 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.

Ребята из Мягкого софта написали гайд для тебя (Install WSL on Windows 10 | Microsoft Docs), но если хочешь можешь воспользоваться моими шагами.

Cтилистика журнала ксакеп *дцатилетней давности довольно странно смотрится в 2021-м.

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

После прочтения данного абзаца подумал: «Ого, неужели не очередной Electron?!»

Но несколькими абзацами ниже:

И, наконец, пользовательский интерфейс программы написан на React с использованием возможностей Neon для связи с Rust-бэкендом.

Ок, ок, бэкенд на Rust, классно. Но интерфейс на Electron — это же далеко не те самые «нативные приложения, глубоко интегрированные в операционную систему», которые «гораздо удобнее и приятнее в использовании, чем другие варианты приложений».

3 место: Невозможная сеточная типография
Daniël Maarleveld. “Impossible grid typography “. The Netherlands

Гораздо более вероятно, что корректным переводом слова «typography» является "типографика". Автор в оригинале явно подразумевал работу со шрифтами, а не типографию.
Какие остроумные надписи посоветуете нанести рядом с Assembled in China

In Mantis We Trust
В разделе «Быстрое исполнение простых выражений в PL/pgSQL» приведены результаты выполнения slow_pi() для PG12 и PG13.
Помимо разницы в скорости выполнения есть разница в результатах:

PG12:
  • 3.1415925535898497

PG13:
  • 3.1415925535897915

Код функции slow_pi не меняется, поэтому результат в обеих версиях должен совпадать.
С чем связана разница в результатах работы функции в разных версиях?
Пропустив про "художественные фильмы", но обратив внимание на то, что "за ночь было получено более 30 тысяч изображений", ожидал увидеть на следующей картинке эмоции Саши Грей. Пятница, что ж.
Величайшая актриса
На сайте разработчика табличка «GitAhead of the Competition», где в строке «Non Commercial» указано "Free" для «GitAhead».
Таблица
Таблица
У семи нянек четырнадцать титек.
Ещё как вариант — грузиться с внешнего устройства (зажать клавишу C при загрузке).
Но в этом случае необходимо заранее запастись внешним накопителем с «правильной» версией системы.

По теме:
Startup key combinations for Mac
Starting from an external USB storage device (Intel-based Macs)
How to choose a startup disk on your Mac

Все это совместимо с такими системами как: Autocad, Inverter …

Скорее всего, речь об «Inventor», а не об «Inverter»
Не хочу выводить вас на чистую воду, но концепция Autocad практически не менялась с 2000 версии, она лишь обрастала новыми функциями и планомерно обновлялась в части интерфейса.

На мой взгляд, dows именно это и сказал.

А что вы скажите по поводу Archicad, Компас, Solidworks,Tekla они существуют в другой параллельной вселенной или просто решили идти своим самобытным путём?

Могу ответить про ArchiCAD (BIM Server.) и Tekla BIM.
Эти продукты принципиально отличаются от концепции AutoCAD. В первую очередь тем, что основная идеология ArchiCAD — это BIM. И тут Graphisoft (разработчик ArchiCAD) — первопроходец, или как вы выразились «законодатель мод и первоисточник».

Как здорово, что Autodesk не Apple да?

Вот именно, что Autodesk — это не Apple.
Autodesk, несмотря на то, что это колоссального размера компания, не ведёт индустрию за собой, как это делает Apple. AutoCAD — продукт, относящийся к старому подходу к проектированию.
Если уж говорить о продуктах, которые Autodesk позиционирует как мэйнстрим, то это скорее Revit, нежели AutoCAD. Но Revit — это купленный Autodesk'ом продукт, который не является оригинальной разработкой Autodesk.

Из того, что сейчас делает Autodesk, наиболее прогрессивными выглядят, на мой взгляд, мобильные приложения, а не десктоп-версии старых продуктов.
Доступ к API — это не только наиболее значимое нововведение версии 3.5, но и огромный потенциал всей линейки 3.х в целом.
Спасибо, что не останавливаетесь!
* Контрольная сумма
* Хэш sha1, md5
Для тех, кто ищет подобную программу, но с открытым исходным кодом, советую посмотреть Process Hacker. Как вариант — того, кто хочет понимать, что к чему, могут заинтересовать исходники.
2

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity