Информация об изменениях

Сообщение Re[27]: Windows захватили инопланетяне? от 23.01.2020 2:39

Изменено 23.01.2020 2:51 blp

Re[27]: Windows захватили инопланетяне?
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, blp, Вы писали:


S>Под "задачей" лично я понимаю изменение наблюдаемых характеристик, а не внутренних способов реализации.

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

Общепринятое понимание слов "поставленная задача" — это какой-то набор работ, который нужно сделать. "Наблюдаемые характеристики" могут в результате и не меняться, если у вас, скажем, доступа к коду нет и вести наблюдения вы не можете. "Рефакторинг" например — тоже задача. Впрочем в обсуждаемом случае наблюдаемыми изменениями является появление новых сервисов, так что под ваше кастомное определение оно тоже попадает.


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

S>Это правильный подход к реверсингу инженерных решений: смотрим на характеристики решения и пытаемся угадать, какие из них были критериями выбора. Вот только всегда стоит делать следующий шаг: ок, предположим, набор критериев был вот таким. Точно ли выбранное решение является оптимальным с т.з. этих критериев? Или были другие способы получить желаемое?
И? Какой именон вывод делаете вы? Я пока никакого анализа от собеседников на форуме не видел, кроме бития себя пяткой в грудь и предложения неработающих решений (разбивающихся о суровую реальность из того же MSDN)


S>>>Тогда ваш аргумент про лёгкость превращения существующих system-wide сервисов и драйверов в per-user сервисы нерелевантен.

blp>>Почему? Вроде бы очевидно, что отрефакторить сервис и разнести per-user функционалонсть по разным процессам-сервисам проще, чем делать из сервиса приложение (подход, как мы уже выяснили, имеющий ряд проблем с реализацией)
S>Потому что по вашему же утверждению этих сервисов ранее не существовало.
По моему собственному утрвеждению часть сервисов — результат рефакторинга. Читаем мои сообщения внимательно.
>Что именно было отрефакторено?
Блин, мне правда скучно быть капитаном очевидность, уже начинает подзадалбывать. Ну посмотрите глазами. CDPSvc / CDPUserSvc хотя бы

S>>>Ну, ок. Допустим, аргумент про изоляцию.

blp>>Ну слава богу. А чего только "допустим"?
S>Вот как раз потому, что теперь надо рассмотреть — а был ли способ обеспечить изоляцию? Ну, вот например — ставим задачу исполнять код сервиса под аккаунтом юзера по соображениям безопасности.
Еще один. Еще можно поставить задачу нарисовать лошадку и нрисовать лошадку. Надо было не "испольнять код серивса под аккантом юзера", а иметь отдельный процесс на каждого юзера. Например, для того, чтобы краш процесса не влиял на всех юзеров сразу. например для того, чтобы в памяти одного процесса не было данных разных юзеров в случае code injection и т д

S>Далее — изоляция неприятностей. Тут есть несколько аспектов. Например, почему бы не потратить инвестиции в новую архитектуру в собственно QA?

Почему "ивестиции в QA" и "разделениесервисов по юзерам" взаимоисключающие вещи?

S>Вот, например, IIS. Там как раз и пользовательский код, и изоляция. Почему-то там не стали плодить per-user сервисы, а запускают worker processes. Почему?

Потому что iis никак не привязан к пользовательским логон-сессиям. Это system-wide сервис, запускающий несколько копий w3wp.exe ниак с десктопом не взаимодействующих. Плюс для IIS в виндах есть столько внутренних костылей в ядре, что я бы не стал приводить его в пример как образец красивой архитектуры.

S>Ок, как будет себя вести при логоффе неинтерактивный процесс, который запущен из-под сервиса под токеном пользователя?

Как запущен? ну вот реально как? что вообще такое "неинтерактивный процесс"? Консольное приложение? Приложение без видимых окон? консольное? ShutdownBlockReasonCreate вызывался? Что такое "при логоффе"? Инсталл критических апдейтов вызывает логофф, но другого типа — и т. д.
попробуйте детально почитать MSDN чтобы найти дырки в вашем предложении. Мне это делать за вас уже лень, да и в некоторых местах за это платят неплохие деньги, а я тут чисто зачем-то бесплатно распинаюсь .
[url=https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms700677(v=vs.85)]вот[url] — начните отсюда


Как именно сервис поймает момент логина / логоффа, чтбы что-то там запустить? Я уж молчу про то, о чем я уже говорил — "запустить" это задача сложнее, чем она вам кажется из уютного мира с пони и единорогами.

>Будет ли для него вызван TerminateProcess; будет ли показан warning пользователю о том, что this application is preventing logoff? Может ли system-wide сервис перехватить logoff евент и попросить систему отложить logoff до удобного момента?

Опять-таки, читаем MSDN.

blp>>Обсуждать системный кризис с техдоками я в рамках этого треда не готов — это соврешенно другая тема. Мы вроде сейчас про архитектуру per-user сервисов и их необходимость, а не про техдоки?

S>Как бы взрослые люди знают, что документация — это часть продукта. Нет документации — значит, продукт сырой, недоделанный.
А мужики-то не знают! Регулярно шипают недокументированные фичи виндов уже лет 30 как. Сырой продукт, стало быть. Недоделаный!

S>У меня залипла синхронизация почты. Хочу перезапустить сервис OneSyncSvc

Зачем? кто вам сказал, что это вам поможет? Или вы если у вас телевидор не работает, разбираете его и начинаете рандомно перепаивать?
>Жду открытия истины — киньте скрипт на повершелле, который это сделает?
Не могу вам его дать

blp>>Где вы видите извивание хребтом? Я вижу пока странные запросы типа "а как мне найти сервис, запущеный в Рамадан 2019 года" и предсказуемый плач о том, что иструментов для этого нет. Ну нет, да. И раньше не было.

S>Вот прямо здесь и вижу.
У нас с вами какое-то очень разное восприятие. Ну ок, бывает, чо. У вас собственное определение того, что таое "задача", что уж там со всем остальным.

S>При том, что они были нормально продуманы, в отличие от этих новых сервисов. Например, Display name и Service name специально разведены, чтобы можно было иметь локализованные имена, и всё ещё управлять сервисом при помощи одного и того же скрипта.

Оооо. Что ни заявление — то просто огонь. Еще раз: раньше per-user сервисов, создающихся на запуске не было. Ваши красивые рассуждения по имена и прочее — не особо интересны. Ну да, есть у вас такое мнение. Я особо с ним не спорю.


>Если бы проектировать их доверили вам, имена сервисов бы запросто получали рандомные значения при каждом запуске, а на вопросы "как узнать имя сервиса" вы бы рассказывали про Рамадан и 2019.

Непонятно, как вы сделали такой вывод. Я вам многократно задаю вопрос, на который вы пока не ответили — сформулируйте какой именно сервис вы хотите перезапустить. Но вы упорно придумываете какие-то странные вещи. Если формулировать вопрос правильно истина откроется вам (возможно. неприятная, как с логоффами и изоляцией). Старайтесь, у вас получится.

>Пример про SQL Server вы проигнорировали, а зря.

Ничего я не проигнорировал. Я же ответил — это не per-user сервис. Причем он тут?

> Тоже ведь можно было генерировать имена сервисов при помощи псевдослучайных суффиксов, а на вопросы "как мне стартовать именованный инстанс"

Можно было. Но эти сервисы создаются людьми, которые указывают имя инстанса. per-user сервисы созаются и уничтожаются автоматически. Можете еще прикопаться к тому, что PID у процессов каждый раз разный и очень трудно процесс прибить, используя PID. Плохой дизайн, непродуманый!

S>Нам всегда интересно послушать мнение людей, полагающих себя более способных к чтению, чем другие.

Мне MSDN читать не надо — я и так все, на что ссылки давал, знаю. Потому что раньше читал, а потом код писал. И отлаживал.

blp>>Но если для вас это выглядит так, будто вы меня тут загнали в угол и теперь получаете эстетическое удовольствие от каких-то ваших фантазий — хорошо, почему нет. У всех разные способы развлекаться.

S>Ну что вы, в угол вы себя загнали самостоятельно. Стокгольмский синдром и позиция "в редмонде работают божественно одарённые люди; и если они сделали per-user services, то это безусловное благо, и сомневаться в этом грех" — это ваш добровольный выбор. Теперь, даже когда вы видите косяки в реализации, признать их наличие морально тяжело.
Хоспади, ну вот опять. Какой-то стокгольмский синдром, какие-то одаренные люди из редмонда. Откуда это все лезет у вас?

S>Мой выбор — сомневаться во всём.

Последуйте этому выбору!
Начните сомневаться в том, что вы лучше людей из МСа, дизайнящих ОС, знаете как это делать. Полезно. Я, кажется, дал вам достаточно поводов об этом задуматься. Но если нет — то медицина тут бессильна

>Те же самые люди в том же редмонде разработали Скрепыша; или, из более современного — CardSpace.

Неа, не те же самые. У них из общих менеджеров — только Надела. Это соврешенно разные орги с разной культурой разработки и разным подходом ко всему.

>Per-user services — это не первый kludge, который я наблюдаю в своей карьере.

Ваше экспертное мнение очень важно, продолжайте вести наблюдения!
Re[27]: Windows захватили инопланетяне?
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, blp, Вы писали:


S>Под "задачей" лично я понимаю изменение наблюдаемых характеристик, а не внутренних способов реализации.

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

Общепринятое понимание слов "поставленная задача" — это какой-то набор работ, который нужно сделать. "Наблюдаемые характеристики" могут в результате и не меняться, если у вас, скажем, доступа к коду нет и вести наблюдения вы не можете. "Рефакторинг" например — тоже задача. Впрочем в обсуждаемом случае наблюдаемыми изменениями является появление новых сервисов, так что под ваше кастомное определение оно тоже попадает.


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

S>Это правильный подход к реверсингу инженерных решений: смотрим на характеристики решения и пытаемся угадать, какие из них были критериями выбора. Вот только всегда стоит делать следующий шаг: ок, предположим, набор критериев был вот таким. Точно ли выбранное решение является оптимальным с т.з. этих критериев? Или были другие способы получить желаемое?
И? Какой именон вывод делаете вы? Я пока никакого анализа от собеседников на форуме не видел, кроме бития себя пяткой в грудь и предложения неработающих решений (разбивающихся о суровую реальность из того же MSDN)


S>>>Тогда ваш аргумент про лёгкость превращения существующих system-wide сервисов и драйверов в per-user сервисы нерелевантен.

blp>>Почему? Вроде бы очевидно, что отрефакторить сервис и разнести per-user функционалонсть по разным процессам-сервисам проще, чем делать из сервиса приложение (подход, как мы уже выяснили, имеющий ряд проблем с реализацией)
S>Потому что по вашему же утверждению этих сервисов ранее не существовало.
По моему собственному утрвеждению часть сервисов — результат рефакторинга. Читаем мои сообщения внимательно.
>Что именно было отрефакторено?
Блин, мне правда скучно быть капитаном очевидность, уже начинает подзадалбывать. Ну посмотрите глазами. CDPSvc / CDPUserSvc хотя бы

S>>>Ну, ок. Допустим, аргумент про изоляцию.

blp>>Ну слава богу. А чего только "допустим"?
S>Вот как раз потому, что теперь надо рассмотреть — а был ли способ обеспечить изоляцию? Ну, вот например — ставим задачу исполнять код сервиса под аккаунтом юзера по соображениям безопасности.
Еще один. Еще можно поставить задачу нарисовать лошадку и нрисовать лошадку. Надо было не "испольнять код серивса под аккантом юзера", а иметь отдельный процесс на каждого юзера. Например, для того, чтобы краш процесса не влиял на всех юзеров сразу. например для того, чтобы в памяти одного процесса не было данных разных юзеров в случае code injection и т д

S>Далее — изоляция неприятностей. Тут есть несколько аспектов. Например, почему бы не потратить инвестиции в новую архитектуру в собственно QA?

Почему "ивестиции в QA" и "разделениесервисов по юзерам" взаимоисключающие вещи?

S>Вот, например, IIS. Там как раз и пользовательский код, и изоляция. Почему-то там не стали плодить per-user сервисы, а запускают worker processes. Почему?

Потому что iis никак не привязан к пользовательским логон-сессиям. Это system-wide сервис, запускающий несколько копий w3wp.exe ниак с десктопом не взаимодействующих. Плюс для IIS в виндах есть столько внутренних костылей в ядре, что я бы не стал приводить его в пример как образец красивой архитектуры.

S>Ок, как будет себя вести при логоффе неинтерактивный процесс, который запущен из-под сервиса под токеном пользователя?

Как запущен? ну вот реально как? что вообще такое "неинтерактивный процесс"? Консольное приложение? Приложение без видимых окон? консольное? ShutdownBlockReasonCreate вызывался? Что такое "при логоффе"? Инсталл критических апдейтов вызывает логофф, но другого типа — и т. д.
попробуйте детально почитать MSDN чтобы найти дырки в вашем предложении. Мне это делать за вас уже лень, да и в некоторых местах за это платят неплохие деньги, а я тут чисто зачем-то бесплатно распинаюсь .
вот — начните отсюда


Как именно сервис поймает момент логина / логоффа, чтбы что-то там запустить? Я уж молчу про то, о чем я уже говорил — "запустить" это задача сложнее, чем она вам кажется из уютного мира с пони и единорогами.

>Будет ли для него вызван TerminateProcess; будет ли показан warning пользователю о том, что this application is preventing logoff? Может ли system-wide сервис перехватить logoff евент и попросить систему отложить logoff до удобного момента?

Опять-таки, читаем MSDN.

blp>>Обсуждать системный кризис с техдоками я в рамках этого треда не готов — это соврешенно другая тема. Мы вроде сейчас про архитектуру per-user сервисов и их необходимость, а не про техдоки?

S>Как бы взрослые люди знают, что документация — это часть продукта. Нет документации — значит, продукт сырой, недоделанный.
А мужики-то не знают! Регулярно шипают недокументированные фичи виндов уже лет 30 как. Сырой продукт, стало быть. Недоделаный!

S>У меня залипла синхронизация почты. Хочу перезапустить сервис OneSyncSvc

Зачем? кто вам сказал, что это вам поможет? Или вы если у вас телевидор не работает, разбираете его и начинаете рандомно перепаивать?
>Жду открытия истины — киньте скрипт на повершелле, который это сделает?
Не могу вам его дать

blp>>Где вы видите извивание хребтом? Я вижу пока странные запросы типа "а как мне найти сервис, запущеный в Рамадан 2019 года" и предсказуемый плач о том, что иструментов для этого нет. Ну нет, да. И раньше не было.

S>Вот прямо здесь и вижу.
У нас с вами какое-то очень разное восприятие. Ну ок, бывает, чо. У вас собственное определение того, что таое "задача", что уж там со всем остальным.

S>При том, что они были нормально продуманы, в отличие от этих новых сервисов. Например, Display name и Service name специально разведены, чтобы можно было иметь локализованные имена, и всё ещё управлять сервисом при помощи одного и того же скрипта.

Оооо. Что ни заявление — то просто огонь. Еще раз: раньше per-user сервисов, создающихся на запуске не было. Ваши красивые рассуждения по имена и прочее — не особо интересны. Ну да, есть у вас такое мнение. Я особо с ним не спорю.


>Если бы проектировать их доверили вам, имена сервисов бы запросто получали рандомные значения при каждом запуске, а на вопросы "как узнать имя сервиса" вы бы рассказывали про Рамадан и 2019.

Непонятно, как вы сделали такой вывод. Я вам многократно задаю вопрос, на который вы пока не ответили — сформулируйте какой именно сервис вы хотите перезапустить. Но вы упорно придумываете какие-то странные вещи. Если формулировать вопрос правильно истина откроется вам (возможно. неприятная, как с логоффами и изоляцией). Старайтесь, у вас получится.

>Пример про SQL Server вы проигнорировали, а зря.

Ничего я не проигнорировал. Я же ответил — это не per-user сервис. Причем он тут?

> Тоже ведь можно было генерировать имена сервисов при помощи псевдослучайных суффиксов, а на вопросы "как мне стартовать именованный инстанс"

Можно было. Но эти сервисы создаются людьми, которые указывают имя инстанса. per-user сервисы созаются и уничтожаются автоматически. Можете еще прикопаться к тому, что PID у процессов каждый раз разный и очень трудно процесс прибить, используя PID. Плохой дизайн, непродуманый!

S>Нам всегда интересно послушать мнение людей, полагающих себя более способных к чтению, чем другие.

Мне MSDN читать не надо — я и так все, на что ссылки давал, знаю. Потому что раньше читал, а потом код писал. И отлаживал.

blp>>Но если для вас это выглядит так, будто вы меня тут загнали в угол и теперь получаете эстетическое удовольствие от каких-то ваших фантазий — хорошо, почему нет. У всех разные способы развлекаться.

S>Ну что вы, в угол вы себя загнали самостоятельно. Стокгольмский синдром и позиция "в редмонде работают божественно одарённые люди; и если они сделали per-user services, то это безусловное благо, и сомневаться в этом грех" — это ваш добровольный выбор. Теперь, даже когда вы видите косяки в реализации, признать их наличие морально тяжело.
Хоспади, ну вот опять. Какой-то стокгольмский синдром, какие-то одаренные люди из редмонда. Откуда это все лезет у вас?

S>Мой выбор — сомневаться во всём.

Последуйте этому выбору!
Начните сомневаться в том, что вы лучше людей из МСа, дизайнящих ОС, знаете как это делать. Полезно. Я, кажется, дал вам достаточно поводов об этом задуматься. Но если нет — то медицина тут бессильна

>Те же самые люди в том же редмонде разработали Скрепыша; или, из более современного — CardSpace.

Неа, не те же самые. У них из общих менеджеров — только Надела. Это соврешенно разные орги с разной культурой разработки и разным подходом ко всему.

>Per-user services — это не первый kludge, который я наблюдаю в своей карьере.

Ваше экспертное мнение очень важно, продолжайте вести наблюдения!