Пользователь
Информация
- В рейтинге
- 4 947-й
- Откуда
- Петропавловск, Северо-Казахстанская обл., Казахстан
- Зарегистрирован
- Активность
Специализация
Software Developer, Embedded Software Engineer
Pure C
Assembler
X86 asm
Win32 API
Visual Basic
MySQL
Git
OOP
Electronics Development
Reverse development
Я про вот это:
Коммент, к которому была претензия, не правился. И сделанное там громкое заявление нигде ниже уровнем не отменялось, не опровергалось. А только дополнялось новыми мыслями. Точнее там даже не одно спорное заявление, а несколько.
Я это видел. Я не проигнорировал, а с трудом удержался увидев перечисление «Trident, ActiveX, VBScript, JScript» не процитировать древний мем из аудиозаписи лекции по информатике:
Оригинал тут
Всё намешано в кучу, но особо выделяется в этом ряду «ActiveX».
Но это дополнение с непонятным перечислением разнородных терминов не опровергает и не переиначивает изначальный посыл, а точнее их было два:
Проводник является хитро запущенным IE под Windows XP.
Под Windows XP отображение содержимого папки, то есть всё, что ниже тулбара является веб-страницей.
Во-первых, мы уже выяснили, что к XP это вообще не имеет отношения.
Во-вторых, если даже взять какую-нибудь Windows 98, где был вот этот режим (как опция, а не единственный вариант существования),а а также был Active Desktop — а они устроены немного по разному — то всё равно содержимое папки не отображалось с помощью веб-страницы.
Это решение уровня:
В итоге ради того, чтобы пользователь мог кастомизировать внешний вид папки, сделан опциональный режим, в котором используется промежуточный контейнер (способный отображать HTML-документ ради создания того самого краевого оформления), внутри в центре которого по прежнему лежит нативный контрол.
Вся суть и соль отображения содержимого папки: файлики, папочки, значки, ярлычки, выделение файлов, табличный режим с заголовками и сортировкой при кликах по заголовкам, мелкие значки, крупные значки — всё это:
а) Нативный контрол, тот же самый ListView, какой был бы если бы ради краевого оформления режим промежуточного контейнера не привлекался
б) Не состоит из DOM-элементов и не является поддеревом DOM родительского IE-фрейма (кроме самого контрола FileList — он весь целиком представлен одним единственным DOM-узлом типа <object>).
в) Не подчиняется CSS веб-страницы, в которую он встроен. Ни с помощью CSS нельзя поменять размер или начертание шрифтов в файлов (всех или выборочно), ни с помощью JScript/VBScript из родительского страницы не получится раздвинуть два значка файлов и между ними вставить элемент <marque>, или <div>, или <table> или что угодно HTML-ное.
Отображение самого содержимого папки — не веб-страница, а нативный контрол. Но сделан режим, в котором между родительским окном и нативным контролом промежуточным контейнером выступает IE-фрейм ради возможности создать краевой оформление (то есть не только боковую левую панель, но и что-то сверху, что-то справа, что-то снизу — при желании).
--------------------
C Active Desktop и рабочим столом всё обстоит по другому: если в окне проводника нативный ListView с непрозрачным фоном лежит внутри HTML-документа, то есть один child, а другой parent, то в случае с рабочим столом ListView с прозрачным фоном лежит поверх IE-фрейма, то есть в случае иерхархии окон (тех, у которых есть HWND) они сиблинги.
------------------
Тот факт, что в окне Проводника в определённом режиме работы (то есть при определённых настройках) встроен контрол, который в первую очередь является частью приложения Internet Explorer, не делает проводник хитро запущенным Internet Explorer-ом.
Тем более оно не делает его хитро запущенным Explorer-ом под XP, где такого вообще нет. Но даже в условном Windows 98 — тоже не делает, потому что с тем же успехом автокадовский документ мог быть внедрён (слава технологии OLE, которая просто стандартизирует единый «протокол» для контролов, которые хотят быть внедряемыми, — с одной стороны, и контейнеров, которые хотят в себя что-то внедрять, — с другой) в Excel-документ, а сам Excel-документ мог быть внедрён в Word-документ.
Это же не делает Excel хитро запущенным АвтоКАДом, а Word — хитро запущенной экселькой?
У меня нет установленного АвтоКАДа, но есть установленный Компас, и я легко могу воспроизвести то, о чём говорю:
Раз
Два
Три
Четыре
Пять
Является ли то, что показано на этих 5 скриншотах доказательством того, что:
Excel это просто хитро запущенный Word
Word это всего лишь хитро запущенный Excel
Excel и Word это одно и то же
Компас-3D это всего лишь хитро запущенный Excel
Excel это всего лишь хитро запущенный Компас-3D
Компас-3D является неотъемлемой частью Excel и Word?
Конечно, могу чего-то не знать. И в этом случае я беру инструменты, такие как тот же Spy++, отладчик, дизассемблер и иду смотреть, как оно устроено, а не перепощиваю мифы и байки.
Какая именно идея? Идея строить UI прикладных приложений используя HTML-документ?
А вот и нет!
Ни в XP, ни в более ранних версиях ОС авторы не использовали HTML-документы и IE-frame для того, чтобы с их помощью реализовать именно интерфейс прикладных приложений.
Можете привести ещё примеры? Единственный известный мне пример использования веб-страницы в рамках других приложений: это HTMLHelp (с .chm-файлами) пришедший на смену Win95 Help (.hlp-файлы) на базе RTF-документов. Но здесь с помощью HTML отображается контент, текст с разметкой, гипертекст (то есть именно то, для чего HTML исходно задуман), а вовсе не интерфейс приложения.
Примеров, чтобы HTML использовался для отображения именно интерфейса приложения, а не контента приложения, я не могу вспомнить.
Ну а в проводнике HTML применён для кастомизации рядовым пользователем своих папок. Хочешь кастомизировать отображение своей папке — тебе не нужно быть программистом, не нужно иметь IDE, не нужно иметь компилятор, не нужно знать глубокое устройство Windows.
Для тебя, как для рядового пользователя, сделали специальный мастер:
То есть по задумке авторов это сделано для того, чтобы любая домохозяйка могла кастомизировать себе внешний вид папки. Ну, не любая, но изучившая HTML и JS. Прямо в проводник для этого встроен пунктик меню, мастер и HTML-открывается прямо в Блокноте.
Electron, хотя я про него почти ничего не знаю, создан не из таких предпосылок. Он не сделан для того, чтобы широкий круг пользователь мог кастомизировать какую-то маленькую часть внутри нативного приложений.
Он сделан таким, каким он сделан, не для того, чтобы кто-то из рядовых пользователей лез что-то модифицировать в чужом приложении, не поднимаясь до уровня разработчика по знаниям. Он таким сделан потому, что разработки деградировали до уровня домохозяек — если не по уровню знаний, то по уровню беззаботности.
Так что это не та же идея.
Я не вижу и не помню ни в XP, ни в более ранних ОС примеров именно интерфейсов на HTML+JS/VBS.
По итогу, в двух провокационных комментах выше высказывалось сразу 3 тезиса:
Прообраз Electron-а был заложен ещё во время Win9x — не правда, потому в прикладных приложениях для реализации UI никто (в Microsoft) не использовал тогда HTML+JS, а в Проводнике это было сделано для кастомизации.
Отображение папки в Windows XP — это веб-страница. Не правда, потому что в XP никаких веб-страниц не использовалось, и даже в более ранних ОС сам контент папки отображался нативным контролом ListView, а веб-страница использовалась только для создания какого-то краевого оформления вокруг этого нативного контрола.
Проводник это хитро запущенный IE. Не правда, потому что модульная архитектура приложений и наличие стандартизированного способа встраивания объектов не делает одно приложение тщательно маскирующимся другим приложением или не делает одно приложение неотъемлемой частью другого.
То, что между разными приложениями в огромной мере есть code reuse за счёт использования одних и тех же DLL, компонентов, реализации одних и тех же COM-интерфейсов — это не ставилось под сомнение. Вам об этом и написали сразу.
Изначальное громкое утверждение:
Я написал, что ничего подобного.
На что последовало «разоблачение» меня:
Тем временем, по приведённой ссылке:
В основном в драйверах. А крайне неспреведливо называть ОС плохими словами из-за кривых драйверов.
Read-only с возможностью изменить на copy-on-write.
Вот бы на Хабре вместо бесполезного переключателя «Светлая тема»/«Тёмная тема» был переключатель «Синтаксис Intel»/«Синтаксис AT&T».
Нет, это отключаемое поведение.
Да нет, спор вполне конкретный.
Было утверждение, что то, что в окне ниже меню с тулбаром, то есть то, что отображает файлики и папочки, это, якобы, веб-страница.
Это чушь и ересь. Веб-страница — это нечто, что написано на HTML и что имеет DOM.
На самом же деле то, что Проводник использует для отображения файлов и папок, это не веб-страница, а нативный pure-WinAPI-style контрол SysListView32 из comctl32.dll
iexplore это EXE-шник с внешней оболочкой. Ядро в ieframe.dll
Точно так же explorer.exe это по большей части обёртка, а ядро в shell32.dll
При этом shell32.dll и ieframe.dll это не одно и то же. И самое главное, что отображение папок и файлов это не веб-страница, а нативный контрол, получающий оконные сообщения и отрисовывающий себя с помощью GDI.
В технологии Active Desktop использовался трюк с подкладыванием браузерного фрейма под ListView-контрол, который был сделан как бы с прозрачным фоном. Это не делает проводник и ListView-контрол хитро запущенным ишаком.
Для адекватных людей, который доберутся до этого места в дереве комментариев, сообщаю, что
то, что отображалось в самой папке ниже тулбара, было окном класса SysListView32 — самым обычным контролом из comctl32.dll с самой обычной оконной процедурой (WindowProc), живущей в comctl32.dll и обрабатывающей самые обычные оконные сообщения. При этом окно сабклассилось динамически генерируемым thunk-ом из DUSER.DLL, который делал тривиальную фильтрацию оконных сообщений и через CallWindowProc вызывал оригинальную оконную процедуру из shell32.dll.
Унификация архитектуры проводника и IE в какой-то сфере, поддержка разными COM-классами оттуда и отсюда одного и того же COM-интерфейса, а также одинаковые интерфейсы для создания модулей расширения (например, можно было написать класс, имплементирующий определённый интерфейс, для того, чтобы добавить в IE или Проводник свой кастомный тулбар — и способ создания был одинаковым, что для IE, что для Проводника) не делает одно частью другого, или не делает одно и другое одним и тем же.
Если два разных класса реализуют один и тот же интерфейс, это не значит, что это два одинаковых класса, или первый класс является хитро запущенным вторым классом.
То, что окно проводника при необходимости могло захостить внутри себя IE-контрол из ieframe.dll (не всегда, а только при необходимости), или Internet Explorer мог при необходимости захостить внутри себя shell-овское окно с фаликами, папками или апплетами Панели инструментов — не делает одно частью другого.
С таким же успехом автокадовский документ мог быть встроен в вордовский файл благодаря технологии OLE/ActiveX.
Вот как раз для этого на смену Pentium III пришёл i9, чтобы вместо 320×240 смотреть 4K.
А вовсе не для того, чтобы со скрипом выполнять в миллион раз переусложнённый код меню Пуск, написанный деградантами.
Пф... Пользуюсь ей до сих пор, брат жив, полет нормальный.
Мне НЕ НУЖНО автодополнение, если оно открывается не мгновенно, а через полсекунды. Мне не нужен редактор кода, где набирание символов на экране немного запаздывает за клавиатурой.
Не распространяйте мифы и дезу.
Воз не там, потому что 25 лет назад она была мастдаем только в больных головах, а сейчас объективно им стала.
При этом, большинство из них в код ядра и не заглядывали, наверное.
И какие клиенты требовали у Дурова угробить стену?
Какие клиенты требовали у Ютуба убрать дизлайки?
Не надо оправдывать самодурство высокопоставленных болванчиков, чей ежедневный труд превратился в руление процессом перекраивания продукта только ради того, чтобы оправдать свою нужность в компании.
Изменения ради изменений. Круглое заменить квадратным, а квадратное круглым, и сказать, что это хорошо.
Вот здесь разбирают и показывают устройство более древней версии подобного микроскопа. Можете оценить сложность воссоздания:
В другом обзоре я видел, что человеку дистрибутор (поскольку человек любит всё разбирать) заранее сказал: что если он микроскоп разберёт (ради видео), то обратно собрать его в рабочем состоянии не получится (нужна точная юстировка).
Как всегда, всё зависит от вашей коленки.
У кого-то нет ни станков, ни 3D-принтера.
А у кого-то коленка выглядит так:
Коленка
Глаза-мозг-руки образуют сервосистему, а в задержки в петле обратной связи сервосистемы и сдвиг фазы это всегда главная беда. Так что не движение рывками, а тайм-лаг сводит с ума.
Вот из-за таких же проблем я был вынужден почти отойти от паяльных дел, разработки, отладки и реверс-инжениринга электроники.