«Проводник тратит 700 мс на то, чтобы открыть контекстное меню панели задач. 75% этого времени он выполняет 114 801 операцию считывания из одного файла, средний объём считываемых данных 68 байт.

Мне стоит написать пост об этом, или достаточно саркастичного твита?»


За компьютером я работаю быстро, и поэтому меня раздражает, когда приходится ждать завершения операции, которая должна выполняться мгновенно. Постоянной помехой на моём сверхмощном домашнем ноутбуке стало медленное закрывание окон на панели задач. Я нажимаю правой клавишей на значок, жду, пока откроется меню, а затем выбираю «Закрыть окно». Самым медленным в этом процессе должны быть перемещения мыши, но выясняется, что наиболее долгим компонентом оказывается задержка перед появлением меню.

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

Этот пост написан как проверка скоростного блогинга. От момента нахождения проблемы и саркастичного твита о ней до публикации поста прошло примерно 90 минут.

Трассировщик ETW фиксировал, как я нажимаю правой клавишей мыши на панели задач и закрываю два окна «Проводника». Я использовал функцию UIforETW Tracing to file с опциями по умолчанию, получив в результате лог диагностики на 20,9 МБ.

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

Первым сигналом были события ввода. UIforETW содержит интегрированный логгер ввода (достаточно анонимизированный, чтобы я случайно не украл пароли или личную информацию), поэтому мне достаточно было подробно изучить события MouseUp и Button Type со значением 2, соответствующим правой клавише мыши. При этом на временной шкале WPA появляются отметки моментов, когда происходят эти события — см. вертикальные линии на скриншоте:


Это дало мне понять, что когда я отпускаю правую клавишу мыши, то спустя 600 мс происходит смена фокуса окна, что, по моей догадке, соответствует моменту отображения меню. Кроме того, в RuntimeBroker.exe присутствует чёткий блок активности ЦП между событиями отпускания клавиши мыши и смены фокуса окна.

Не доказано, что смена фокуса окна и активность ЦП связаны, но сделав измерения при помощи приложения записи экрана, я увидел, что на отображение меню тратится примерно 660 мс, поэтому я склонен этому доверять.

Следующим шагом будет изучение того, чем занят RuntimeBroker.exe. Хотя CPU Usage (Precise) отлично помогает увидеть, сколько времени ЦП использует процесс, и почему он простаивает, подходящим инструментом для выяснения того, на что тратится время ЦП, является таблица CPU Usage (Sampled). Я внимательно её изучил и быстро обнаружил, что 264 сэмпла приходится на KernelBase.dll!ReadFile:


Поискав ещё немного, я нашёл другие стеки вызовов, которые тоже затрагивали эту функцию, поэтому я нажал правой клавишей мыши и выбрал View Callers-> By Function. Включившийся при этом режим (с инвертированными стеками) показал, что из 899 сэмплов этого процесса 628 сэмплов, или 70%, из разных стеков вызовов проходили через эту функцию:


271 сэмпла в этом потоке не проходили через функцию, а оставшиеся сэмплы (не показаны) находились в других потоках.

Заметьте, что 899 сэмплов в потоке 10 252 обозначают два щелчка мыши, то есть примерно 450 сэмплов или 450 мс (при стандартной частоте сэмплирования 1 кГц) на один щелчок мыши.

Иногда файловый ввод-вывод — это время ЦП


CPU Usage (Sampled) показывает время ЦП, поэтому дисковый ввод-вывод здесь обычно не отображается, ведь в эти моменты поток засыпает и ждёт диск. То, что операции ввода-вывода отображаются как время ЦП, означает, что все считывания пришлись на кэш системы и время ЦП было лишними ресурсами ядра (см. ntoskrnl.exe в первом сэмплированном стеке вызовов), потраченными на получение данных из кэша.

Теперь, когда под подозрение попал файловый ввод-вывод, нам необходимо перейти в Graph Explorer-> Storage-> File I/O. Немного настроив внешний вид столбцов, мы получили следующий впечатляющий результат:


Он сообщает нам, что в потоке 10 252 за два щелчка мыши RuntimeBroker.exe создал 229 604 вызова ReadFile, считав в сумме 15 686 586 байт. То есть в среднем каждый раз считывалось по 68 байт.

Задумайтесь об этом на секунду.

Не забывайте, что это вызовы к операционной системе — вызовы ядра. Это значит, что между RuntimeBroker.exe и этим файлом отсутствует кэширование. На самом деле сам файл имеет длину всего 4 027 904 байт, то есть каждый раз, когда я нажимаю на значок проводника в панели задач, файл считывается 1,9 раза самым медленным из возможных способов.

Подстрекаемый своими читателями, я решил удалить этот файл и теперь меню списка переходов проводника появляются почти мгновенно. Я не рекомендую этого делать, но удаление файла может помочь и вам (ценой потери истории проводника):

%appdata%\Microsoft\Windows\Recent\AutomaticDestinations\f01b4d95cf55d32a.automaticDestinations-ms

Выигрыш от удаления файла показан на этом скриншоте WPA. Тонкие вертикальные линии — это нажатия правой клавиши мыши, а прямоугольники в нижней строке обозначают момент отображения меню. Я удалил файл после первых двух кликов и при последних двух кликах задержка значительно снизилась:

Image

Или же «можно воспользоваться официальным прибамбасом из „Параметров“, чтобы очистить (нажать дважды) или отключить (нажать один раз) списки переходов в меню „Пуск“/панели задач. Чтобы ещё больше повысить скорость, отключите также анимации». Спасибо, Рафаэль!

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

Подведём итог


  • Не вызывайте ReadFile, чтобы прочитать 68 байт. Или, по крайней мере, не делайте это сотню тысяч раз. Меня бесит, когда базы данных выполняют считывание по 4 кибибайта, но этот случай просто удивителен.
  • Надеюсь, кто-нибудь устранит эту проблему, но пока у меня есть обходное решение — удаление проблемного файла.
  • Надеюсь, кто-нибудь возьмётся за исследование и выяснит, почему вообще тормозят контекстные меню. Эй, я ведь даже поделился трассировкой ETW и всем остальным!
  • Отчёт по официальным каналам передан в https://aka.ms/AA60dfg
  • Если вы хотите научиться проводить подобный анализ, тогда скачайте мой инструмент UIforETW и прочитайте туториалы, ссылки на которые выложены здесь
  • Не забывайте, что можно открыть контекстное меню гораздо быстрее (это проще, чем стандартное меню списка переходов), нажав shift+правой клавишей мыши на значки. Я буду пользоваться этим трюком, когда нужно будет закрывать много окон.
  • Обсуждение на Hacker news находится здесь
  • Обсуждение на Reddit находится здесь
  • Темы в Twitter находятся здесь и здесь

Комментарии (456)


  1. datacompboy
    10.09.2019 23:01
    +2

    Ответа на вопрос поста нет =))
    Может, всё же в данном случае это «почему» а скорее в формате «Ну зачем?»


    1. viklequick
      11.09.2019 13:35
      -1

      Пост — вообще скрытая реклама far manager / total commander :-)


      1. vis_inet
        11.09.2019 14:11

        Да ну — кроме них есть ещё куча разных файловых менеджеров )


        1. drWhy
          11.09.2019 14:35
          +1

          Но от других Far отличается отсутствием графики, т.е. быстрее отображает большое количество файлов, потребляя при этом меньше ресурсов. Работает в Nano Server.


          1. vis_inet
            11.09.2019 15:12

            Ещё ZTreeWin, например, тоже не графический и быстрый и ресурсосберегающий.


          1. Arris
            12.09.2019 15:53

            Вы шутите, наверное?
            В полноэкранном режиме — возможно, а в окне — оно под капотом всё равно графика, хоть и выглядит как эмуляция консольного режима.

            Я чего-то не понимаю в сортах винд, наверное? :(


            1. drWhy
              12.09.2019 16:43

              Отнюдь. Скопировано из оконного фара. К сожалению, выбрать шрифт Courier нельзя.
              г====== D:\temp =====¬
              ¦x Name ¦ Name ¦
              ¦… ¦ ¦
              ¦---------+----------¦
              ¦. Up 12.09.19 16¦
              L 0 (0/0) === 147 G =-


              1. Whuthering
                12.09.2019 19:44
                +1

                Комментатор выше говорит о том, что в полноэкранном режиме (по крайней мере в старых виндах, в NT-ветке наверное уже нет, не проверял) оно работает в чисто-текстовом режиме (80x25 или 80x40 например), то есть видеоадаптер переключается реально в text mode и картинка рисуется символами знакогенератора, а если даже консольное приложение типа Far запущено в окне, то текстовый режим _эмулируется_, и по факту идет рисование символов операционной системой (эмулятором терминала) в графическом буфере.


                1. drWhy
                  12.09.2019 20:01

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


                1. Arris
                  12.09.2019 21:35

                  Именно так, спасибо за формулировку.


            1. vlivyur
              12.09.2019 17:50

              Это ж консоль, один в один cmd. Оно и выводит туда обычные символы. Оно, конечно, не текстовый режим монитора, но и не совсем графический.

              г=============== C:\Program Files\Git ===============¬
              ¦x         Name           ¦           Name           ¦
              ¦..                       ¦                          ¦
              ¦bin                      ¦                          ¦
              ¦cmd                      ¦                          ¦
              ¦dev                      ¦                          ¦
              ¦etc                      ¦                          ¦
              ¦mingw64                  ¦                          ¦
              ¦tmp                      ¦                          ¦
              ¦usr                      ¦                          ¦
              ¦unins000.dat             ¦                          ¦
              ¦git-bash.exe             ¦                          ¦
              ¦git-cmd.exe              ¦                          ¦
              ¦unins000.exe             ¦                          ¦
              ¦ReleaseNotes.html        ¦                          ¦
              ¦unins000.msg             ¦                          ¦
              ¦LICENSE.txt              ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦                         ¦                          ¦
              ¦-------------------------+--------------------------¦
              ¦..                               Up   21.01.19 12:06¦
              L========= 2 920 402 (7/7) === 772 771 840 ==========-
              C:\Program Files\Git>                                 
              1Help    2UserMn  3View    4Edit    5Copy    6RenMov  


              1. Arris
                12.09.2019 21:44

                Если не текстовый и не графический — то какой? :)

                Под капотом оно все равно же выводит в графику.


                1. EvgeniyNuAfanasievich
                  13.09.2019 09:31

                  Гипертекстовый же!


    1. iingvaar
      11.09.2019 14:30

      Богат русский язык! В английском оба вопроса звучали бы как «Why?»


      1. Mana_Banana
        11.09.2019 15:25
        +2

        А «For what?», «What's the point?» и как минимум еще 2 вопроса вертящихся на языке.


        1. aakolov
          11.09.2019 19:55
          +1

          Я бы даже сказал 'what for' — так экспрессии больше.


          1. HardWrMan
            11.09.2019 20:19

            И, скорее всего, правильнее, если понаблюдать за использованием данной конструкции носителями языка в соответствующих ситуациях. Например, тот же «good for» — аналогичен по конструкции.


      1. site6893
        11.09.2019 15:49

        … это он незнания английского.


    1. x67
      11.09.2019 14:38

      Вопрос риторический, потому и нет ответа)


    1. maxzhurkin
      11.09.2019 22:40

      Почему — корректный вопрос, зачем — нет, IMHO


  1. TargetSan
    10.09.2019 23:02

    Прекрасно. Напомнило про алгоритм Шлемиэля в Windows Update. Ссылку уже, к сожалению, не найду.


    1. kwardakov
      10.09.2019 23:13

      1. domix32
        11.09.2019 11:09

        Это маленько не про Windows Update


  1. fingoldo
    11.09.2019 00:20
    -1

    Хотелось бы узнать национальность разработчика MS, написавшего подобный говнокод.
    Ещё сильнее хотелось бы подвесить кое-за что разработчиков, тетсировщиков и менеджеров, ответственных за разработку оснастки просмотра логов. Почему она ВСЕГДА тормозит, даже на мощнейших машинах? Примеров много можно привести, кстати. Гнилая система контроля качества, такая же система обратной связи. Баги, несуразности, тормоза в продуктах MS не чинятся ДЕСЯТИЛЕТИЯМИ, проблемы есть у многих, что отражено на официальных форумах компании — но MS класть хотела. И ведь, что характерно, процветают! Ну, а зачем тогда напрягаться.


    1. Barbaresk
      11.09.2019 01:29

      Проблема по проявлению похожа на типичную ошибку новичка в вебе с N+1 запросом. Нужно выбрать 100 продуктов из б/д — вываливаем 100 запросов на получение цены, 100 запросов на получение кол-ва в корзине покупателя, 100 запросов на получение информации о товаре и т.д. Причиной этому обычно служат неудачные абстракции, когда возвращает некий объект класса, который на каждый свой метод дёргает соединение с бд. Не удивлюсь если здесь нечто подобное, только дёргается не бд, а файл с логами.


      1. RH215
        11.09.2019 14:00

        Причиной этому обычно служат неудачные абстракции, когда возвращает некий объект класса, который на каждый свой метод дёргает соединение с бд.

        Скорее непонимание какие действия происходят за этими абстракциями.


        1. Barbaresk
          12.09.2019 18:17
          +3

          Если раскрутить всю цепочку, то получаем примерно следующее:
          1) Непонимание того, что происходит за абстракциями;
          2) Кривые абстракции;
          3) Отсутсвие кеширования;
          Что в свою очередь возможно при:
          4) Отсутствие код-ревью;
          5) Отсутствие опытного архитектора;
          6) Отсутствие профилирования приложения;
          7) Плохо проработанный этап тестирования;
          Что в свою очередь растёт из:
          8) Плохой менеджмент;
          9) Недостаток финансирования.
          Ну а это всё уже похоже на типичные проблемы крупных корпораций, которые в каком-то смысле «впадают в детство» из-за необходимости оптимизации расходов времени и денег. И вот тогда появляются такие «детские ошибки», характерные для маленьких проектов.


        1. Wesha
          12.09.2019 18:39
          +1

          Скорее немонимание того, почему не надо нанимать самого дешёвого разработчика.


    1. tankistua
      11.09.2019 07:27

      Так стандарт — индус :)


    1. AllexIn
      11.09.2019 08:07
      +4

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


      1. justboris
        11.09.2019 11:13

        Да уж, есть программисты, которым еще не приходилось коммитить говнокод в продакшен, и тем, кому уже пришлось.


        1. Kanut
          11.09.2019 11:17
          +2

          Да по моему покажи любому(ок, скажем почти любому) программисту его собственный код пяти, ну или максимум десятилетней давности и первая реакция будет "это кто наговнокодил? " или что-то в этом роде :)


          1. justboris
            11.09.2019 11:18
            +6

            И это хорошо, это говорит о том что разработчик растёт


          1. mayorovp
            11.09.2019 12:33

            Ну почему сразу же "кто"? Как будто я не помню автора...


            1. Kanut
              11.09.2019 12:38

              Ок, скажем у меня в такой ситуации обычно первая реакция "кто это наговнокодил?" и уже вторая "зачем я это наговнокодил?" :)


              1. toxicdream
                11.09.2019 14:28

                третья реакция — ну и дебил же я был тогда


              1. aakolov
                11.09.2019 19:57

                И кто же это сделал?

                image


            1. oleg_go
              11.09.2019 20:06

              Программист, который помнит свой код через 10 лет, вызывает подозрение…
              Можно посчитать, пусть 100 строк кода в день, в месяце в среднем 22 рабочих дня за год будет 26 тыс 400 строк кода. За 10 лет 264 тыс. строк — и как такое можно запомнить.

              Хотя может человек уникум и помнит каждый день своего существования начиная с возраста 1 мес…


              1. sumanai
                12.09.2019 02:16

                Может он узнал смешной комментарий или имя переменной?


              1. justboris
                12.09.2019 03:55

                Я обычно узнаю о том, что это мой код, через git blame. В системе контроля версий все ходы записаны


      1. vics001
        11.09.2019 12:55

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


        1. x67
          11.09.2019 14:51

          Легаси код, пронесенный сквозь десятилетия еще со времен вин для мс дос прямо в вин10, которая обновляется раз в 2 дня) звучит очень романтично. Это как вскрыть капсулу времени эпохи Гагарина) Только это остается говнокодом. Именно рациональное и обдуманное использование последовательностей символов превращает их в хороший код. Вы же не скажете, что айфон 3 — хорошая альтернатива топовым смартфонам. Так было когда-то, но сейчас это просто устаревший кирпичик)


        1. kluwert
          12.09.2019 10:39

          Это — вряд ли. Как раз раньше в «тёплые ламповые времена», программеры прекрасно в большинстве своём владели основными алгоритмами ускорения вычислений. Даже школьники (вспоминаю своё детство)! Сейчас поразвелось восторженных мальчиков-программистов-мажоров, к-рые считают, что если они написали несколько тысяч строк говно-кода на каком-нибудь Питоне, то они уже супер-пупер-программеры. На вопрос о «методе пузырька» в большинстве случаев слышишь: «чаво?». А на вопрос об оптимальности кода, получаешь совершенно идиотский ответ типа «а для чего тогда оптимизирующие компиляторы существуют, ты мне ещё предложи на асме писать». В рез-те критерий кач-ва работы программера является исключительно кол-во натоптанных за день на клавиатуре строк как бы работающего кода, а мы, в рез-те, только и успеваем засылать горы денег производителям железа :(


          1. Arris
            12.09.2019 16:05
            +1

            Хуже. Количеством скопипащенных строк со стековерфлоу. И хорошо если стековерфлоу, а то разные бывают источники говнокода…


    1. GoldJee
      11.09.2019 08:23
      +4

      Неразумность не имеет ничего общего с национальностью.


      1. rexen
        11.09.2019 13:29
        +1

        Напрямую — нет. Опосредованно — через культуру.
        Нравится вам это или нет.


        1. KvanTTT
          11.09.2019 13:46

          Тогда в исходном комменте автору надо было хотеть узнать культуру, а не национальность.


        1. DarkGenius
          11.09.2019 15:30
          -1

          Пруфы будут?


          1. rexen
            11.09.2019 20:04
            +6

            Видимо, в качестве пруфов нужна какая-то статистика. Я такой не знаю. Боюсь, что и подобные исследования — независимо от результата — будут затруднительны по причине нетолерантности.

            Но вообще тут всё очевидно. Если в некоей культуре не принято научное мировоззрение, а принято мракобесие — получите результат в виде дремучего народа. Ну и отсюда уже один шаг до национальности. Просто потому что определённым национальностям свойственна определённая культура.

            Это НЕ причинно-следственная связь. Это грустная констатация нашей жизни — рождаясь в конкретной стране, в окружении определённой культуры, вы и будете ей воспитаны — независимо от вашей ДНК. Родитесь в каком-нибудь Сомали — не надейтесь на Нобелевку.

            Может когда-нибудь — в светлом будущем — рождающиеся люди будут реально равны, независимо от географии, пола, расы, родителей. А пока — увы.


            1. ardraeiss
              13.09.2019 15:53

              Тогда первое же следствие из «очевидного» — это тот факт, что оная «культура» неравномерна. Сильно неравномерна. В глубинке где угодно она будет иной, нежели в культурно-научной столице этого же где угодно. При том, что самоучный самородок(как и непонимающий тупка) и там, и там вполне может появиться.


      1. Fenzales
        11.09.2019 15:57

        По своему опыту нанимания индусов на upwork, причем далеко не с минимальными ценниками, всё-таки у них есть неприятные особенности, связанные с работой. Не столько неразумность, сколько постоянное желание срезать несрезаемые углы, причем даже на почасовой оплате.


    1. sumanai
      11.09.2019 12:50
      +4

      Баги, несуразности, тормоза в продуктах MS не чинятся ДЕСЯТИЛЕТИЯМИ

      Значки в трее убитых программ до сих пор исчезают только после наведения на них. А ведь этот баг тянется ещё с Windows XP!


      1. Whuthering
        11.09.2019 13:01
        +1

        Раньше, с Windows 2000, а возможно даже с NT или с классической ветки 95/98.


      1. NetBUG
        11.09.2019 15:18
        +1

        Вы что, хотите, чтобы MS перестал заниматься постоянными улучшениями UX в своих OS и выпускать обновления каждые три месяца?)


      1. perfect_genius
        11.09.2019 20:53

        На семёрке всплывающая подсказка остаётся на экране, пока снова не наведёшь на его значок.


        1. quwy
          11.09.2019 22:23
          -1

          Значки в трее убитых программ до сих пор исчезают только после наведения на них. А ведь этот баг тянется ещё с Windows XP!

          Такое поведение тянется с самой первой версии Windows с панелью задач и треем. Но это не ошибка, а банальная оптимизация, которая сделана намерено. Как раз для того, чтобы поменьше было такого, как то, что описано в данной статье. Слишком накладно на каждый вызов TerminateProcess() и других причастных функций шерстить все иконки в треях всех сессий.

          Вообще, как показывает опыт чтения блогов разработчиков, 99% случаев того «странного» поведения Windows, которое диванные оналитеги считают ошибками, на самом деле являются осознанными решениями, которые продиктованы объективными обстоятельствами.


          1. deseven
            11.09.2019 23:43

            Неубедительно. Держать в памяти короткий массив из соответствий «pid — хэндл иконки» и пробегаться по нему при завершении процесса было бы очень быстро, вряд ли даже измеримо в мс на современных машинах. А вы это сравниваете с чтением файла 100 000 раз.


            1. quwy
              12.09.2019 04:19

              Вы хоть понимаете, что explorer.exe — обычное приложение юзерспейса, а процессы прибиваются в ядре? Тут нужен фундаментальный механизм уведомления пользовательских приложений о рождении и смерти процессов, без которого ваш массив будет требовать непрерывного опроса. А о непрерывных опросах разработчики MS сто раз уже написали в духе «сами не делаем и никому делать не рекомендуем».


              1. khim
                12.09.2019 12:34

                Тут нужен фундаментальный механизм уведомления пользовательских приложений о рождении и смерти процессов, без которого ваш массив будет требовать непрерывного опроса
                И за 20 лет такой механизм сделать не удосужились? Притом что ядро современных версий Windows — раз в 10 увеличилось?


                1. Arris
                  12.09.2019 16:10

                  А зачем? Это фундаментальное улучшение не принесет прибыли, а пипл схавает и так.


                  1. khim
                    12.09.2019 16:17

                    Но ведь перестал хавать. Если с Windows 3.0 на Windows 3.1 пересаживались добровольно, то всё, что после XP — приходится «всучивать» разными способами. На Windows 10 — даже при всех сверхусилиях, удалось пересадить половину пользователей только через 4 года после релиза!

                    P.S. На 95/XP тоже переходили долго, на самом деле, но там всё понятно: требовалось обновить железо, приходилось копить на апгрейд. Но вы видели сейчас хотя бы одного человека, который не пользуется Windows 10, но собирается и копит на неё деньги? Я — ни разу, ни одного. А вот людей, которые держатся за Windows 7 — полно (есть ещё и такие, кто Windows XP использует)


                    1. Kanut
                      12.09.2019 16:29

                      Но ведь перестал хавать

                      Я думаю если посмотреть на продажи и прибыли, то мы увидим что если что-то и изменилось, то скорее в другую сторону. Во всяком случае оборот у Microsoft'а растёт из года в год.


                      1. khim
                        12.09.2019 16:40

                        Вот только этот оборот уже давным-давно не от продаж Windows. И даже офис оказался никому не нужным вне PC (Windows Phone и планшеты на Windows должны были покупать как раз из-за офиса… Но не покупали).

                        Продавать же людям, которые покупают Windows только и исключительно из-за отсутствия альтернативы можно вообще что угодно — зачем при этом регулярно портить то, что было раньше сделано?


                        1. Kanut
                          12.09.2019 16:54

                          То что оборот такой может и не из-за самой винды я спорить не буду. Но даже если винда сама по себе там не основной фактор, то всё равно её приходится покупать чтобы нормально работать.


                          А на тему "портить"… Я сам не особый фанат постоянных изменений, но часть из них всё-таки просто необходима и тут никуда не денешься. А часть продиктована рынком и "средним пользователем", который например хочет вещи вроде Lenovo Yoga с тачдисплеем и планшет-модом.


                          И таких "хотелок" куча и всем надо угодить. И конечно в теории можно выпускать разные версии операционок под разные запросы, но Microsoft решил пойти другим путём. И тут я честно признаюсь что моих знаний/умений однозначно не хватает чтобы оценить правы они были или нет.


                          П.С. А учитывая вот такие ситуации (прошу прощения что на немецком) и цены я уже и смирился с тем что получаю...


                          1. popov654
                            12.09.2019 21:29

                            randomascii.wordpress.com/2018/08/16/24-core-cpu-and-i-cant-type-an-email-part-one
                            Сегодня вот прочитал, нашёл в этом треде по одной из ссылок.

                            Серьёзно, всей этой проблемы попросту не было бы — как не понадобилось бы и десятков человекочасов, затраченных на решение отдельных недоработок, приведших к её появлению — если бы в MS лет 5 назад не сделали такую вещь, как CFG (а ещё раньше не сделали бы ASLR, без которой всем и так прекрасно жилось).


                    1. Arris
                      12.09.2019 21:28

                      Так ведь вопрос же еще в долях рынка.

                      Сколько таких, критичных, как вы среди частных лиц? А какую долю в рынке имеют корпоративные закупки?


                      1. khim
                        13.09.2019 00:24

                        А какую долю в рынке имеют корпоративные закупки?
                        Корпоративные закупки — как раз отличный показатель. Многие компании вот только вот-вот сейчас сползли с Windows 7. Тянули до последнего. Думаете это происходит из-за того, что им очень нужны пердосвистелки из Windows 10?

                        Воспрос риторический.


                        1. Kanut
                          13.09.2019 10:19

                          Многие компании вот только вот-вот сейчас сползли с Windows 7.

                          А вот тут мне бы интересно было посмотреть на цифры и сколько процентов составляют эти "многие". Все известные мне фирмы/конторы на win10 уже давно перешли и не то чтобы с каким-то огромными проблемами.


                          П.С. А учитывая что в Европе многие фирмы берут компы в лизинг и/или просто меняют их где-то раз в пять лет, то они с новыми компами автоматом получали и win10. Так что надо ещё и по странам отдельно смотреть где как дела обстоят.


                          1. khim
                            13.09.2019 12:49

                            П.С. А учитывая что в Европе многие фирмы берут компы в лизинг и/или просто меняют их где-то раз в пять лет, то они с новыми компами автоматом получали и win10.
                            Если мы говорим про достаточно большие фирмы, то они ставят, обычно, свою сборку Windows Enterprise Edition. Которую, сюрприз-сюрприз, обновлять не любят — это затраты на переобучение и прочее.

                            А вот тут мне бы интересно было посмотреть на цифры и сколько процентов составляют эти «многие».
                            Тот факт, что Windows 10 только в этом году обогнала Windows 7 по популярности, по моему, говорит о многом.

                            Даже если считать, что компьютеры обновляются раз в пять лет, и пользователи используют то, что получают от продавца — это должно было бы случиться раньше. А если ещё вспомнить, как Windows 10 пихали бесплатно всем пользователям Windows 7… то вывод очевиден: все добавленные после Windows 7 пердосвистелки не приводят к росту популярности. Скорее ситуацию можно охарактизовать как «пользователи ненавидят Windows 10, но используют из-за отсуствия альтернативы».


                            1. Kanut
                              13.09.2019 14:28

                              Общую статистику по win10 я видел и не оспариваю. Интересно посмотреть как оно выглядит по сегментам и странам.


                              Ну и как бы у нашей фирмы переход на win10 каких-то особых проблем не вызвал. Во всяком случае не больше чем на предыдущие версии. У нас например скорее проблемы с тенденций Microsoft'а переносить всё в онлайн-сервисы и cloud.


                1. red75prim
                  12.09.2019 22:10

                  Есть такие механизмы. Для отслеживания старта процессов посложнее: свой драйвер использующий PsSetCreateProcessNotifyRoutine. Для отслеживания завершения: EnumProcesses, OpenProcess, WaitForMultipleObjects.


                  Почему эксплорер иконки не удаляет после смерти процесса — фиг знает. Скорее всего для обратной совместимости с какими-то древними приложениями, которые выводили иконку с оповещением и завершали процесс.


                  1. quwy
                    13.09.2019 18:23

                    Для отслеживания завершения: EnumProcesses, OpenProcess, WaitForMultipleObjects.

                    Я ждал это решение. Долговато :)

                    А теперь расскажу такую историю. На заре проектирования оконного интерфейса, в MS встал вопрос о том, как лучше всего организовать разделение окна на клиентскую и неклиентскую области. Нужно было сделать так, чтобы ограничить случайное влияние программиста на служебные области окна, типа заголовка и бордера. Самым очевидным и архитектурно правильным решением было сделать «матрешку», когда вся клиентская область является дочерним окном внутри основного окна GUI. Через вызовы API разработчику всегда отдавать дескриптор именно дочернего окна, а служебные кнопки управления разместить на материнском окне уровнем выше. Но это решение было отклонено из-за того, что оно требовало двух дескрипторов на каждое пустяковое окно. Вместо этого наворотили костыль с уменьшенным в размере device context окна, который не затрагивает служебные области. Все из-за одного лишнего дескриптора.

                    А ваше решение предполагает держать открытыми неопределенное количество дескрипторов ради отслеживания того, что по-хорошему отслеживать вообще нет надобности.

                    В майкрософте долгое время работали довольно жесткие требования к оптимизации работы системы. Это и принцип «не жди в цикле, используй блокирующую ф-цию», и «не сохраняй в память мелочь, которую можно быстро пересчитать», и «вероятное на 1/1000000 событие произойдет через минуту», и много другого. Сегодня, похоже от этой практики отказались, к сожалению.


                    1. khim
                      13.09.2019 18:57

                      В майкрософте долгое время работали довольно жесткие требования к оптимизации работы системы. Это и принцип «не жди в цикле, используй блокирующую ф-цию», и «не сохраняй в память мелочь, которую можно быстро пересчитать», и «вероятное на 1/1000000 событие произойдет через минуту», и много другого. Сегодня, похоже от этой практики отказались, к сожалению.
                      Но ошибку, в результате, так и не исправили.

                      В результате имеем систему которая одновременно и жрёт ресурсы, как не в себя, и глючит. Отличное сочетание.


                      1. quwy
                        13.09.2019 19:11

                        Это не ошибка. Ошибка — это не соответствующее ТЗ поведение программы вследствие неправильно написанного кода. Тут все работает как и было задумано.

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


                        1. khim
                          13.09.2019 19:23

                          Ошибка — это не соответствующее ТЗ поведение программы вследствие неправильно написанного кода.
                          С точки зрения пользователя ошибка — это несоотствие поведения программы ожидаемому. Пользователи ТЗ не читают.

                          Конечно все пользователи разные, так что что для одного ошибка — для друого может быть фичей… но вот конкретно в случае с треем я не видел никого и никогда, кому бы существующее состояние нравилось.


                          1. quwy
                            13.09.2019 19:30

                            С точки зрения пользователя ошибка — это несоотствие поведения программы ожидаемому

                            Нуууууу, так мы можем договориться до того, что даже стандартный «калькулятор» насквозь глюкавый, потому что некий юзер ожидает от него поведение как у MathCAD.

                            я не видел никого и никогда, кому бы существующее состояние нравилось

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


                          1. drWhy
                            13.09.2019 19:40

                            Пользователи ТЗ не читают.
                            И не пишут, т.е. не участвуют в формулировании. Даже корпоративные. Но продукт оплачивают именно пользователи. А на спецификации повлиять не могут. Своеобразная ситуация.


                            1. quwy
                              13.09.2019 21:57

                              И не пишут, т.е. не участвуют в формулировании. Даже корпоративные.

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


              1. popov654
                12.09.2019 21:24

                Спорно. taskmgr.exe — тоже приложение юзерспейса. И ничего, опрашивает все процессы раз в секунду, обновляет столбцы, и даже позволяет прибивать процессы по команде. И что самое главное, CPU почти не грузит и лагов вообще не создаёт (и раньше не создавал во времена выхода Windows 2000/XP).


                1. quwy
                  12.09.2019 21:56

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

                  Что касается нагрузки на процессор, то помню, как открытие таскменеджера на первопне/NT4 замедляло mp3-енкодинг сходу процентов на 20.


            1. viklequick
              12.09.2019 13:17
              +2

              С учетом того что и так все объекты как ядра, так и Win32, отслеживаются в таблицах процесса ядром системы, то еще один объект USER хранить и обрабатывать — вообще бесплатно.

              Тут дело не в этом.

              А именно, есть нотификации «окно закрыто» / «окно появилось», чтобы эксплорер свой таск бар отрисовал. Причем неважно — по какой причине окно изчезло. Оно ведь убирается когда прога падает? Вооот!

              Вообще, микрософт очень долго требовала наличие невидимых окон в обязательном порядке. Для DDE, для сокетов (кто помнит первую версию WinSock — оценит).

              NOTIFYICONDATA nid;
               
              nid.cbSize = sizeof(NOTIFYICONDATA);
              nid.hWnd = hWnd;
              nid.uID = 100;
              nid.uVersion = NOTIFYICON_VERSION;
              nid.uCallbackMessage = WM_MYMESSAGE;
              nid.hIcon = LoadIcon(NULL, IDI_APPLICATION);
              wcscpy_s(nid.szTip, L"Tray Icon");
              nid.uFlags = NIF_MESSAGE NIF_ICON NIF_TIP;
               
              Shell_NotifyIcon(NIM_ADD, &nid);
              


              И для трея оно тоже — есть. То есть чтобы я добавил что-то в трей — мне надо не забыть RegisterClass/CreateWindow. Ну, чтобы банально получать клики по иконке. Кто-то же должен получать WM_TASKBAR_NOTIFY…

              А теперь внимание, черный ящик!!! Если эксплорер и так знает все окна в трее, если он и так получает сообщения об их закрытии, то почему он трей при этом не перерисовывает?

              Великая тайна, ага.


              1. popov654
                12.09.2019 21:36

                Я кажется понял. Потому что «окно» для трея не закрывается при аварийном падении основного процесса — его закрыть просто некому.


                1. viklequick
                  12.09.2019 22:16

                  Если окно закрыть некому — то мы получаем leakage of USER32 resources. Так что вряд ли, это еще в NT4 решили.


          1. sumanai
            12.09.2019 02:18

            То есть по наведению норм, а по завершению процесса нет?


            1. DrPass
              12.09.2019 02:48
              +1

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


            1. quwy
              12.09.2019 04:30

              То есть по наведению норм

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

              а по завершению процесса нет?

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

              У процесса explorer.exe нет способа узнать, что superpuperapp.exe только что аварийно завершился, кроме опроса. А опрос во-первых слишком дорог сам по себе, а во-вторых противоречит политике кодирования MS (никаких циклов ожидания/опроса, только блокирующие функции).


              1. qw1
                12.09.2019 07:21

                Как вариант — user32 для каждой иконки в трее регистрирует mutex и берёт его во владение, при завершении процесса процесс теряет владение mutex-ом, а Explorer ждёт изменение любого mutex-а через WaitForMultipleObjects.


                1. quwy
                  12.09.2019 16:42

                  Много можно придумать вариантов, но уж как есть. Обратная совместимость — это ключевое преимущество Windows, благодаря которому она и завоевала львиную долю рынка десктопов.


                  1. qw1
                    12.09.2019 17:42

                    Предложенное решение не рушит обратную совместимость, т.к. mutex-ы создаются в пользовательском процессе не пользовательским кодом, а кодом USER32, при добавлении иконки в трее.


                    1. quwy
                      12.09.2019 21:49

                      Так у user32 те же проблемы. Не факт что такое событие, как смерть процесса, заведено в него нужным образом из kernel32. Сами понимаете, что каждый новый мост между такими модулями — это большое событие, которого стараются избегать до последнего.


                      1. qw1
                        13.09.2019 15:54

                        В user32 не надо заводить событие смерти процесса. Достаточно в внутри NotifyIcon создать mutex (который окажется в контексте пользовательского процесса) и передать его в Explorer.exe вместе с другими параметрами треевой иконки. В момент смерти процесса mutex автоматчески отпустит, эта логика уже в ядре и никаких новых мостов не надо.


                        1. red75prim
                          13.09.2019 16:42
                          +1

                          Зачем mutex, когда есть process? В NotifyIcon GetCurrrentProcessId(), в эксплорере OpenProcess(), и добавить его в WaitForMultipleObjects().


                          1. qw1
                            13.09.2019 16:46

                            Согласен.


                          1. quwy
                            13.09.2019 18:27

                            Здесь ответил.


                            1. qw1
                              13.09.2019 21:22

                              В трее не больше 10 иконок у среднего юзера. Экономия 10 хендлов имела смысл на 386-х (и то, сомнительно), но сейчас-то никто не мешает сделать отслеживание умирающих приложений с сокрытием его иконки.


                              1. quwy
                                13.09.2019 21:43

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


                              1. quwy
                                13.09.2019 21:53

                                Более того, такой софт уже существует.

                                When a program is forcefully terminated it is not able to cleanup any of its resources, as a result dead icons are left in the system tray until you hover your mouse over them. Explorer does not perform house keeping and remove any dead icons automatically. SysTray Refresh will keep the system tray area clean.


              1. drWhy
                12.09.2019 09:26
                +1

                А опрос во-первых слишком дорог сам по себе, а во-вторых противоречит политике кодирования MS (никаких циклов ожидания/опроса, только блокирующие функции).
                В итоге имеем контекстное меню, вызванное на рабочем столе, которое вернётся после таймаута опроса порта выключенного сетевого принтера на предмет присутствия в нём бумаги. Весь Explorer при этом висит.
                А вот прибить иконку в трее накладно. А там приложение мониторинга температур, бодро докладывающее, что всё ок, температура в норме, но это не точно.


                1. quwy
                  12.09.2019 16:50

                  В итоге имеем контекстное меню, вызванное на рабочем столе, которое вернётся после таймаута опроса порта выключенного сетевого принтера на предмет присутствия в нём бумаги. Весь Explorer при этом висит.

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

                  А там приложение мониторинга температур, бодро докладывающее, что всё ок, температура в норме, но это не точно

                  А если это приложение не вылетело, а зависло? Температура будет точно так же «в норме», но повода убивать иконку у експлорера вообще никакого.

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

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


                  1. drWhy
                    12.09.2019 17:07
                    +1

                    … за отрисовку пункта меню отвечает стороннее приложение, которое тупит. Что делать?
                    Свой таймаут добавлять. 500 мс должно хватать всем. Разослали приглашения всем желающим, собрали ответы, подождали 500 мс, кто не успел — тот не успел.

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

                    А если это приложение не вылетело, а зависло? Температура будет точно так же «в норме», но повода убивать иконку у експлорера вообще никакого.
                    Вот ни разу у меня hwinfo не вылетало.

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


                    1. quwy
                      12.09.2019 17:47

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

                      То есть, другими словами, если сторонний код написан на каком-нибудь .NET и тупо не успел стартануть за это время, пункт меню мы не увидим? А во второй раз, когда виртуальная машина уже «разогрета» — то уже увидим? Зашибись. И, кстати, почему 500 мс? Почему не 100 или не 1500?

                      Вот ни разу у меня hwinfo не вылетало.

                      Тогда зачем вы этот пример выше привели?


                      1. drWhy
                        12.09.2019 20:08

                        За 1500 мс я откушу себе мышку. Или перестану пользоваться контекстным меню. На маках как-то обходились одной кнопкой мышки.

                        Речь, если правильно понимаю, исходно шла о том, что приложение, зарегистрировавшее иконку в трее, прибили, а иконка осталась. Если падает само, значит, можно обойтись и без него.


                        1. quwy
                          12.09.2019 21:40

                          Тут уже разговор пошел шире.

                          Что делать в ситуациях, когда поведение шелла зависит от сторонних приложений, ведущих себя неподобающим образом. И, как видите, однозначного ответа тут нет, все решения компромиссны. Или ждем процесс-тормоз, или игнорируем его, хотя в принципе, он выйдет на готовность через 10 мс после истечения таймаута и готов без проблем выполнять свою функцию.

                          Если воспринимать трей как каталог, в котором приложения создают некие файлы-маячки и сами должны их удалять, то такое поведение оказывается вполне логичным.


                          1. drWhy
                            13.09.2019 10:26

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

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


                            1. quwy
                              13.09.2019 17:50

                              Предложенный вами вариант нарушает детерменированность поведения системы. В зависимости от не очевидных факторов некоторые пункты будут оказываться то в основном меню, то в подменю «тормозов». После такого набежит еще больше диванных ыкспертов с криками «ааааа! глюкавая венда!!!11111».


                              1. drWhy
                                13.09.2019 19:49

                                Действительно, непорядок.
                                Тогда предлагаю вместо загрузки системы вывести сообщение «Подождите, идёт улучшение», так система приобретёт окончательную детерминированность.


                          1. qw1
                            13.09.2019 16:19

                            Если воспринимать трей как каталог, в котором приложения создают некие файлы-маячки и сами должны их удалять, то такое поведение оказывается вполне логичным.
                            Такое мнение имеет право на жизнь. Но в этом случае, значок мёртвого процесса не должен пропадать при наведении на него мыши. Ведь именно это вызывает недоумение пользователя.


                            1. quwy
                              13.09.2019 18:01

                              Все правильно! В ранних альфах win95 при попытке интерактивного взаимодействия с таким значком выдавался месседжбокс, что приложение, создавшее значек, было неожиданно закрыто. И знаете что? Это раздражало пользователей. Юзера, блин, не читают месседжбоксы, они поскорее нажимают OK чтобы вообще не видеть их. И получалось, что вместо ожидаемого окна иконка начинала выводить что-то «непонятное». Как будто программа все еще запущена, но работает как-то не так как нужно.

                              Вы не представляете, сколько полезных и уже реализованных функций было в итоге пущено в корзину из-за неадекватности потенциальных юзеров/разработчиков/производителей. Сколько шлака и нелогичностей добавлено в систему, чтобы говнокод, которому место на помойке, продолжал работать. Сколько ненужной работы сделано, чтобы тупому юзеру система казалась стильнее, моднее и молодежнее.


                              1. khim
                                13.09.2019 18:18

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

                                Ну хорошо, к релизу Windows 95 проблему исправить не успели. Бывает. Почему за прошедшие 25 лет не исправили???

                                Сколько ненужной работы сделано, чтобы тупому юзеру система казалась стильнее, моднее и молодежнее.
                                Вот только «тупой юзер» этого не ценит и предпочитает старые версии… странно, правда?


                                1. quwy
                                  13.09.2019 18:37

                                  иконки от «умерших» приложений должны были бы из трея пропадать

                                  Они и пропадают. Но триггером для этого является какое-нибудь действие пользователя. Исключительно с позиции оптимизации.

                                  Почему за прошедшие 25 лет не исправили???

                                  Давайте добавим сюда еще и то, что %temp% загаживается. Явления одной природы ведь.

                                  А, кстати, знаете, почему винда не чистит темпы при перезагрузке, как линукс?


                                  1. Wesha
                                    13.09.2019 19:22

                                    Они и пропадают. Но триггером для этого является какое-нибудь действие пользователя.

                                    Угу. То есть работал я и работал, иконка тихо пропала — я бы и не заметил. Но как только я потянуля мышкой, чтобы нажать именно на ту иконку (которая отлично видна) — а она прямо из-под курсора бац, и пропала! Не раздражает совершенно! (сарказм)


                                    1. quwy
                                      13.09.2019 19:34

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


                                      1. qw1
                                        13.09.2019 20:53

                                        Это уже натягивание совы на глобус.


                                      1. Wesha
                                        13.09.2019 21:02
                                        +1

                                        Напоминает


                                        тот анекдот

                                        — Рабинович, как Вы могли — говорят, Вам вчера в автобусе дали оплеуху, а вы даже не отреагировали!
                                        — Я?!? Не отреагировал?! А кто же тогда упал?


                                1. quwy
                                  13.09.2019 18:46

                                  Вот только «тупой юзер» этого не ценит и предпочитает старые версии… странно, правда?

                                  То, о чем я написал, отнюдь не новое веяние.

                                  Как пример, история времен Windows 95. При отображении каталога в проводнике, имена файлов, содержащие только буквы верхнего регистра, целиком приводятся к нижнему (EXPLORER.EXE -> explorer.exe). Мультирегистровые и полностью нижнерегистровые имена не изменяюся. Нахрена это сделано? В момент перехода на Win95 у каждого пользователя имелся солидный багаж файлов, созданных в DOS на FAT-диске без vFAT (т.е. без информации о регистре букв имени). Эти файлы в самой DOS при выполнении команды DIR выводились в верхнем регистре. И вот, чтобы список файлов в проводнике выглядел не так архаично, как листинг каталога на экране DOS, эти файлы были заловеркейсены. И юзера, кстати, оценили, ибо список из сотни верхнерегистровых файлов действительно выглядит как-то тяжелее для психики.


                                  1. khim
                                    13.09.2019 19:02

                                    Это всё прекрасно, но не объясняет того факта, что на то, чтобы изгадить интерфейс и вызвать ненависть пользовалей — ресурсы находятся, а на то, чтобы исправить ошибки — нет.


                                    1. quwy
                                      13.09.2019 19:16

                                      Это проблемы менеджмента любой современной конторы. Свистелки и перделки вперед всего. В гугле, например, это вообще перешло в эпидемию: «двигаем кнопки просто чтобы что-то поменять, отрапортовать о новой версии, получить премию». Совок напоминает.


                                      1. khim
                                        13.09.2019 19:25

                                        Совок напоминает.
                                        Совок плохо кончил. Во многом именно поэтому. Ждём краха ИТ-индустрии? Или?


                                        1. quwy
                                          13.09.2019 19:35

                                          Или. Это теперь навсегда :(


                                          1. khim
                                            14.09.2019 00:07

                                            В СССР тоже многие думали, что «это теперь навсегда».

                                            То что крах «чего-то», в таких условиях, неизбежен — это 100%.

                                            А вот что именно крякнет — это можно обсуждать…


                              1. qw1
                                13.09.2019 20:55

                                Все правильно! В ранних альфах win95 при попытке интерактивного взаимодействия с таким значком выдавался месседжбокс, что приложение, создавшее значек, было неожиданно закрыто
                                А нахрена? Кто-то просил выводить это сообщение?
                                Если воспринимать трей как каталог, в котором приложения создают некие файлы-маячки и сами должны их удалять,
                                То и нефиг что-то делать без ведома программы, пусть даже уже покойной.


                                1. quwy
                                  13.09.2019 22:03

                                  То и нефиг что-то делать без ведома программы, пусть даже уже покойной.

                                  Так вы же сами топите за немедленное удаление!


                                  1. khim
                                    14.09.2019 00:08
                                    +1

                                    Понимаете, все пользователи «топят» за вменяемое поведение: либо иконка есть и работает, либо её нет. Иконка, которая вроде как есть, но которую использовать нельзя — это бардак.


                                  1. qw1
                                    14.09.2019 09:14

                                    Так вы же сами топите за немедленное удаление!
                                    Я обсуждаю предложенную модель «воспринимать трей как каталог, в котором приложения создают некие файлы-маячки». Если иконка может жить без приложения, то пусть так и будет. Если иконка должна жить только вместе с приложением — тоже принимается. Но текущее поведение — это ни та модель, ни другая.


              1. Naves
                12.09.2019 13:13

                Как это нет способа узнать?
                Большой taskbar успешно может, а маленький iconbar не может?


                1. drWhy
                  12.09.2019 13:20

                  Большой таскбар отображает все окна определённого типа.
                  А чтобы попасть в трей, приложение должно зарегистрировать значок отдельным вызовом. Соответственно, потом разрегистрировать другим вызовом.
                  Что, впрочем, не мешает некоторым приложениям отображать беглую анимацию в трее.
                  Просто нужно либо обязать приложение перед закрытием разрегистрировать значок, либо самому трею периодически проверять все зарегистрированные значки на актуальность, что действительно на фоне темы статьи не так уже и напряжно.


              1. viklequick
                12.09.2019 13:33
                +1

                Открываем SetWindowsHookEx, ставим WH_SHELL hook, и ловим HSHELL_WINDOWDESTROYED event.

                Появилось с W2k.

                Используется explorer, а затем и dwm чтобы перерисовывать таск бар.

                Во дела, прошло 20 лет и уже «нет способа» :-)


                1. quwy
                  12.09.2019 17:44

                  Даже если не обращать внимание на то, что хуки сами по себе тяжеленная штука, что хук для другой архитектуры требует отдельного процесса, что глобальный хук может требовать эскалации привилегий, то все равно выясняется, что некоторые приложения (антивирусы и фаерволлы в первую очередь) активно противятся инжекции сторонней DLL, и что, внезапно, при принудительном прихлопывании процесса, HSHELL_WINDOWDESTROYED просто не приходит.


                  1. viklequick
                    12.09.2019 20:39

                    Это для WH_CBT или WH_CALLWNDPROC требуется внедрение DLL в процессы, и это действительно тяжелая штука.

                    А я речь веду о вот таком. Специально нашел вам пример на дотнете.

                    public class SystemProcessHookForm : Form
                    {
                    ...
                        public SystemProcessHookForm()
                        {
                            // Hook on to the shell
                            msgNotify = Interop.RegisterWindowMessage("SHELLHOOK");
                            Interop.RegisterShellHookWindow(this.Handle);
                        }
                    
                        protected override void WndProc(ref Message m)
                        {
                            if (m.Msg == msgNotify)
                            {
                                // Receive shell messages
                                switch ((Interop.ShellEvents)m.WParam.ToInt32())
                                {
                                    case Interop.ShellEvents.HSHELL_WINDOWCREATED:
                                    case Interop.ShellEvents.HSHELL_WINDOWDESTROYED:
                                    case Interop.ShellEvents.HSHELL_WINDOWACTIVATED:
                                        string wName = GetWindowName(m.LParam);
                                        var action = (Interop.ShellEvents)m.WParam.ToInt32();
                                        OnWindowEvent(string.Format("{0} - {1}: {2}", action, m.LParam, wName));
                                        break;
                                }
                            }
                            base.WndProc(ref m);
                        }
                    ...
                    }
                    


                    Как видите, реализация очень проста, не требует никаких инъекций кода и отдельных DLL (хотя и это тоже достаточно простая штука, закинул свою DLL-ку в реестр и все), и вполне себе работает.

                    И да, ядро много чего делает для Win32 контекста, в том числе — освобождая ресурсы user/gdi. И в том числе — рассылает и нотификации для top-level windows.

                    Я даже лет 15 назад пытался делать нечто похожее, чтобы без сервиса и агента в трее, но выглядело это трюкачеством :-)


                    1. quwy
                      13.09.2019 19:23

                      Отвечу одной цитатой из MSDN:

                      This function is not intended for general use. It may be altered or unavailable in subsequent versions of Windows.

                      Ну и в догонку:
                      HSHELL_WINDOWDESTROYED :: A handle to the top-level window being destroyed.

                      Сомневаюсь, что это вообще применимо к невидимым служебным окнам.


                      1. viklequick
                        13.09.2019 20:46

                        handle to the top-level window

                        Ваша контр-аргументация должна бы выглядеть как-то так: вот пример (код) того что в трей можно поместить не только top level window, это работает, и это ломает всю красоту схемы. Нашелся кейс для которого… и т. д.

                        А раз можно туда подсунуть окно со стилем WS_CHILD — то и смысл отслеживать только top levels пропадает. Так?

                        А то мы скоро дойдем до цитирования Windows 95 internals в попытках выяснить — какой же из нескольких способов отслеживания закрытия top-level window будет настолько симпатичен, что вы все-таки согласитесь — все-таки могла микрософт им воспользоваться :-)

                        Или наоборот — забракуете все предложенные, и перейдем к гаданию на кофейной гуще в стиле «что же помешало микрософту за 25 лет сделать еще один способ» :-)


                        1. quwy
                          13.09.2019 21:37

                          вот пример (код) того что в трей можно поместить не только top level window, это работает, и это ломает всю красоту схемы

                          Каюсь, кода не дам, нет времени и возможности сейчас. Но вообще-то в NOTIFYICONDATA.hWnd очень даже можно передать дескриптор невидимого окна нулевого размера. Более того, чаще всего именно так и делают.

                          Или наоборот — забракуете все предложенные, и перейдем к гаданию на кофейной гуще в стиле «что же помешало микрософту за 25 лет сделать еще один способ» :-)

                          Сделать-то они могли все что угодно, но ресурсы у них были ограничены, время поджимало, было не до таких красивостей. А потом включился режим «если как-то работает, то не трогаем».


                          1. viklequick
                            13.09.2019 23:05

                            Каюсь, кода не дам, нет времени и возможности сейчас. Но вообще-то в NOTIFYICONDATA.hWnd очень даже можно передать дескриптор невидимого окна нулевого размера.

                            Да. И как правило (и как в примерах микрософта) — это топ-левел полученный через RegisterClass()/CreateWindow() :-)

                            Оттого что оно невидимое и оттого что у него размер (кстати неважно какой) — оно ведь не перестает быть top level.

                            Итого — вся правка должна была содержать три строчки в таск баре
                            case HSHELL_WINDOWDESTROYED:
                                SendMessage(трей, WM_USER + NNN, 0, lParam);
                                break;
                            и небольшой кусочек кода в обработке трея

                            case WM_USER + NNN:
                                for(int i=0; i <  m_cIconsCount; ++i) {
                                    if (IsDead(m_Icons[i])) {
                                        ReleaseIconContext(m_Icons[i]);
                                        MoveMemory(&m_Icons[i], &m_Icons[i+1], sizeof(m_Icons[0]) * (m_сIconsCount - i - 1));
                                        --i;
                                        --m_cIconsCount;
                                        InvalidateRect(m_hWnd, NULL);
                                    }
                                }
                                break;

                            И в общем-то все, остальное и так есть и используется. Кстати заметьте, если «внутри» там список а не массив, то код будет чище и короче. Массив просто вероятнее.

                            И кстати, если бы это работало для топ-левелов, то все тут же бы стали использовать топ-левелы, это и сейчас так происходит, но стихийно.


                1. qw1
                  12.09.2019 17:46
                  +1

                  HSHELL_WINDOWDESTROYED приходит при вызове DestroyWindow, не уверен, что он придёт при аварийном завершении процесса.


                  1. viklequick
                    12.09.2019 20:12

                    DestroyWindow function

                    Destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it…

                    Это по очевидным причинам — не то :-)


        1. prishelec
          11.09.2019 23:41

          Это фича.


      1. K10
        12.09.2019 09:48

        Это не баг, а логика работы иконок в трее.
        Приложение, желая создать в трее иконку, вызывает соответствующую функцию.
        Когда нужно иконку удалить, оно вызывает функцию удаления.
        Если процесс приложения прибит, то функция удаления не вызвана и иконка не удалена.
        В противном случае, процессу проводника нужно было бы следить за всеми процессами, создавшими иконки в трее, что имхо оверхед.


        1. Halt
          12.09.2019 10:11
          +1

          Вы еще скажите, что за окнами, открытыми файлами и выделенной памятью тоже следить не надо, по той же логике. Это именно что корявый дизайн, сделанный на скорую руку.


          1. quwy
            12.09.2019 17:52

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


            1. vlivyur
              12.09.2019 18:48

              А таскбару кто-то же сообщает о смерти процесса?


              1. qw1
                12.09.2019 19:43

                Таскбар не знает о процессах, а отображает top-level windows.
                Хотя, как выше заметили, каждая иконка в трее связана с каким-либо окном, поэтому замечание в принципе верное.


            1. popov654
              12.09.2019 22:13

              А таскменеджер — не в пространстве пользователя работает? У него же есть окно, в котором данные выводятся.


      1. popov654
        12.09.2019 21:06

        Ну а что, зато такты процессора не тратятся зря на ерунду, ведь убирать значки надо очень редко, а вот дёргать проверки — постоянно
        Я думаю, какая-то такая причина за этим стоит :)


        1. viklequick
          12.09.2019 22:10
          +1

          Причем очень несложная причина :-)

          Невидимые окна можно создавать и удалять со скоростью во много раз большей чем сможет на них реагировать трей. Всего лишь.

          Причем таскбару это не грозит — он отслеживает события активации / деактивации, это достаточно медленный процесс с переводом и обработкой смены фокуса, ввода клавиатуры, обработкой тонны событий в окнах и их содержимом, все эти erasebgnd, перерисовки, вычисления всего и вся (повторить для своих чайлдов рекурсивно), все то что реально происходит при смене активных окон.

          Уж обвести рамочку вокруг плашки с иконкой (и опционально текстом) показывающим состояние — оно точно успеет. Более того — оно успевает и thumbnail снять и еще покурить и выпить чашечку кофе :-)

          А вот трею надо как-то успевать реагировать (и быстро) на кипящий поток удаляемых окон, и проверять каждое — а оно вообще живо? А оно события от трея ловит? Ну и высчитать в связи с этим что показываем / не показываем, все эти хинты и подсказки, и прочая и прочая. В коде решили упростить (как оно обычно бывает):

              ...
          else 
              InvalidateRect(весь трей целиком)
          

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

          Потому и решили — вообще убрать, черт-те что получилось. Будем считать это фичей! А вызов кода перенесли на события от мыши.

          Прошло двадцать пять лет…

          Я полагаю что мой рассказик — весьма похож на реальные события, хотя конечно это только красивая гипотеза.


          1. popov654
            12.09.2019 22:24

            Я первое своё предложение хотел выделить тегом <sarcasm>, но он увы съелся… Да, гипотеза верная скорее всего.

            Правда, по времена, когда писался этот код, thumbnail никакой ещё не снимался от окна (вы ведь про отображение миниатюр в Aero?). И чтобы снять такую миниатюру, надо таки сначала дождаться полной отрисовки содержимого окна, так что тут всё сложнее…

            А вот трею надо как-то успевать реагировать (и быстро) на кипящий поток удаляемых окон, и проверять каждое — а оно вообще живо? А оно события от трея ловит?
            Это вы всерьёз или тоже как часть шутки? Какой там поток, мы что, окна в повседневной работе десятками в секунду открываем и закрываем? Или вы про фиктивные, которые «невидимые», и о которых знает только ОС? Но даже их наверное не столько. А уж тех, которые уже через вызов процедуры зарегали себя «в трей», вообще не больше 2-3 за раз обычно. Так неужели правда так сложно по этому списку проходиться линейно хотя бы раз в секунду, чекая их состояние (точнее, состояние процесса, привязанного к ним)? Мне кажется, даже для железа тех лет это совершенно тривиальная задача.

            Да и фликерить тут нечему. Фликерить могло или на стресс-тестах, когда и правда десятки окон в секунду, или из-за криво написанного ПО, которое по нескольку раз пытается зарегать иконку, или из-за каких-то хитрых внутренних таймингов. Например, сначала в клиентском коде идёт регистрация иконки в трей, потом уже создаётся основное окно, и пока оно не создано, explorer считает, что иконки нет, а перед этим она как бы есть, а потом окно открылось, и она снова есть, и в итоге происходит скачок туда-сюда, что смотрится для пользователя безобразно. И в итоге вместо того, чтобы переписать код работы с иконками трея, пошли более простым путём, выпилив вообще мониторинг :)

            В общем, почти как вы сказали, только скорее всего не в мерцании всего трея было дело (перерисовка раз в полсекунды с нормальной двойной буферизацией мерцать ну никак не должна).


            1. viklequick
              13.09.2019 00:00

              Больше в шутку конечно. По факту — просто не сделали, потом никто не завел тикет на этот минорный баг, потом уже и легенды подтянулись, а там и окаменело. Но сделать — вполне могли, этому ничто не мешало.


            1. drWhy
              13.09.2019 10:42

              Фликерить могло или на стресс-тестах, когда и правда десятки окон в секунду, или из-за криво написанного ПО, которое по нескольку раз пытается зарегать иконку, или из-за каких-то хитрых внутренних таймингов.
              А возможно дело было в debug сборке Windows, событий там происходит явно больше.

              Из приколов в трее наблюдал скачущего жеребца, состоящего из нескольких соседних иконок, спектр-анализатор и миниатюру танцовщицы, двигающуюся в такт музыке. Всё живенькое и без глюков.


      1. VioletGiraffe
        13.09.2019 14:46

        Зато в десятке починили препротивнейший баг, выражавшийся в том, что запущенные программы иногда не получали значок в трее, хотя доллжны были :)


    1. ProstoTyoma
      13.09.2019 16:08

      Баги, несуразности, тормоза в продуктах MS не чинятся ДЕСЯТИЛЕТИЯМИ


      По моим ощущениям, в десятке еще и насыпали неприличное количество новых.


  1. Dmitri-D
    11.09.2019 01:32

    Повезло. А могли бы еще и писать по 68 байт сотни тысяч вызовов. С синком. Каждый. Вот тогда было бы веселье.
    Впрочем, 68 или не 68 — всё равно есть кеш диска и всё равно есть кеш системы. Проблема не в файле, а в количестве системных вызовов на один щелчек мыши. 100К — это слишком много.


    1. AllexIn
      11.09.2019 08:07

      Тогда не было бы веселья, потому что это быстро бы нашли и пофиксили.


      1. Dmitri-D
        11.09.2019 16:16

        Конечно пофиксили бы, поставив более производительную железку


  1. ALF_Zetas
    11.09.2019 01:33

    этот файл это список Quick access и поскольку я этой фичей Єксплорера не пользуюсь, то он у меня маленький и никаких тормозов не создает


  1. Yastreb1332
    11.09.2019 01:42

    после удаления файла f01b4d95cf55d32a.automaticDestinations-ms этот файл создается автоматически после запуска проводника


    1. sumanai
      11.09.2019 12:51

      У меня создался прямо сразу после удаления.


      1. EvgeniyNuAfanasievich
        12.09.2019 14:21

        значит делаем назначенное задание :-)


        1. drWhy
          12.09.2019 14:35

          Или переименовываем/удаляем папку %appdata%\Microsoft\Windows\Recent целиком, создаём одноимённый файл и ставим ему атрибут «только для чтения».
          Мне вполне хватает истории файлов в приложениях, общесистемная не нужна.


          1. EvgeniyNuAfanasievich
            13.09.2019 16:35

            Надо у system права отбирать и наследование выключать. надежнее.


            1. drWhy
              13.09.2019 16:40

              Конечно. Но пока хватает ;)
              Как ни странно, простая вещь, а действует пока безотказно, приложения обычно не пытаются понять, что не так. Когда-то во времена разгула вирусов под xp помогало избавляться от особо назойливых.


              1. sumanai
                13.09.2019 17:36

                приложения обычно не пытаются понять, что не так

                Ага. У меня так Firefox после запрета на запись в каталог системных дополнений, где валяются всякие pocketы, тупо жрал одно ядро в цикле в попытках туда записать. Сейчас же лепит к остальным ((


  1. aik
    11.09.2019 06:51

    По идее, такой файл истории должен у каждой программы быть, которая на панели задач побывала — там же у многих история какая-никакая отображается по правой кнопке.


  1. vis_inet
    11.09.2019 07:23

    Интересно, можно ли безболезненно удалять все файлы в %appdata%\Microsoft\Windows\Recent\AutomaticDestinations?
    У меня их там 44 штуки.
    Размером от 4 Кб до 3 Мб.

    Но, почему-то файла с именем f01b4d95cf55d32a.automaticDestinations-ms среди них нет.


  1. HardWrMan
    11.09.2019 07:32

    А в Windows XP многократный вызов контекстного меню в папке приводил к 100% загрузке процессора. Работает вплоть до SP3 и даже в виртуалке (скриншот ниже). Нагрузка спадает с закрытием контекстного меню.

    Нотариально заверенный скриншот
    image


    1. popov654
      12.09.2019 22:31

      Как вы это сделали?) У меня не воспроизводится. Win XP SP3, не виртуалка. Кликал правой кнопкой много раз, нагрузка около нуля.


      1. HardWrMan
        13.09.2019 07:56
        +1

        Выделяешь объект (на скрине я выделил диск) и права кнопка.

        А вот, например, на папке
        image


  1. nerudo
    11.09.2019 08:15
    +1

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


    1. chnav
      11.09.2019 08:39

      Возможно есть ярлык на удалённую программу (пытается найти её в других папках) или на недоступный сетевой ресурс. У меня такое было в Windows 7.


      1. nerudo
        11.09.2019 08:41

        Я предполагал такой вариант, но найти ничего не смог. Видимо I must try harder…


      1. balamutang
        11.09.2019 10:24

        У меня кстати было подобное в одной конторе когда-то. В контекстном меню была ссылка на сетевой ресурс компьютера, который демонтировали. Соответственно каждый вызов контекстного меню в проводнике занимал 2 минуты, на время которых эксплорер-рабочий стол повисал полностью, тот еще квест был.
        Хорошо что я тогда докопался до истины и получил опыт, тк обычно такое лечат переустановкой винды.


        1. drWhy
          11.09.2019 10:49

          Или ссылка на сетевой принтер в пункте «Печать», проверяющая наличие бумаги в недоступном принтере.


      1. Dvlbug
        11.09.2019 13:02
        +1

        Проверьте еще обои на рабочий стол. Был случай, 16 мегайбайтный BMP лежащий на недоступном сетевом диске.


        1. SandroSmith
          11.09.2019 14:18

          ЕМНИП, это был случай с просто 16MB bmp-шкой при общей ОЗУ в 32MB. Когда просто сворачивание окна (с отрисовкой обоины) вешало машинку на минуту.


      1. Kwisatz
        11.09.2019 15:49

        По поводу сетевого ресурс: а есть простой способ удалить его при помощи интерфейса? Ждать таймаута очень утомительно и не всегда срабатывает.


        1. site6893
          11.09.2019 16:01
          -1

          через консоль, "net use /?" в помощь


          1. Kwisatz
            11.09.2019 16:12
            -3

            Даж не знаю что ответить.
            Во 1 сам по себе ответ уровня «пошел на хрен»
            Во 2 я говорю о способе для пользователей, это же винда, нужен мышевозильный способ
            В 3 как ваш рецепт поможет удалить ярлык я не понимаю


            1. firedragon
              11.09.2019 21:08

              ПКМ на «сетевом окружении»
              Отключить сетевой диск.

              ЗЫ все же лучше повесить в логон скрипт авто детач.


              1. Kwisatz
                11.09.2019 22:17

                А причем тут сетевой диск если в закладках висит ярлык на сетевую шару?

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


            1. site6893
              12.09.2019 15:54

              1) я ж не няничка в детском садике чтобы тебя с ложечки кормить, хоть бы попробовал выполнить предложенную команду в консоли и посмотреть на вывод перед тем как писать глупости.

              2) как-то определись, тебе простой способ или все же утомительно ждать таймаута.

              3) что тебе мешает ярлык «просто удалить»? А лучше внимательнее перечитай свой коментарий на который я отвечал и покажи где там идеть речь о ярлыках.


              1. Wesha
                12.09.2019 17:06
                +1

                Прежде всего — не "няничка", а вовсе даже "нянечка". (Тут граммар-наци отпустило).


                хоть бы попробовал выполнить предложенную команду в консоли

                А Вы все-все советы из интернета сразу в консоли пробуете? Качельки лизнуть rm -rf / тоже пробовали?


                1. site6893
                  13.09.2019 16:45
                  +1

                  хоспаде (грама-наци выхади). Там же ключ "/?" стоит. Если ты не в курсе что для видндовых команд этот ключ означате то о чем с тобой говорить, живи в своем мышевозном мире и не задавай глупых вопросов.

                  Сим бестолковую дискуссию заканчиваю.


  1. chnav
    11.09.2019 08:37
    +1

    Я не помню, когда появилось отображение в проводнике иконок у файлов в соответствии с заданной программой по-умолчанию, кажется в Windows XP. Добавило огромных тормозов при открытии папок, визуально видно как прорисовываются иконки последовательно для каждого файла. Когда после этого если запускаешь Windows 98 — кажется что проводник летает.
    Меня вполне устраивали единообразные иконки для папок и отсутствие иконок для файлов. Я всегда включаю отображение расширения файлов, этого вполне достаточно.
    Может кто-нибудь знает, как отключить иконки? Windows 7/10.


    1. ZUZ
      11.09.2019 09:04
      +1

      Включить галку: "Всегда отображать знпчки, а не эскизы"?
      https://winnote.ru/uploads/posts/2019-01/1548775263_disable_thumbnail_previews_file_explorer_5.png


      1. chnav
        11.09.2019 09:27

        Спасибо, попробовал — не помогло.
        Выключал оба пункта:
        — Always show icons, not thumbnails
        — Display file icon on thumbnail

        Я так понял первый пункт служит для отключения превьюшек (например, картинок), а второй показывает иконку типа файла на превьюшке.


        1. HardWrMan
          11.09.2019 10:37

          А я просто делаю вид как список. Причем с самой Win95. Что со мной не так?


          1. chnav
            11.09.2019 10:52

            Вы всё делаете правильно, это я неправильно объяснил. Я тоже всегда включаю List View для всех папок.

            Тем не менее слева от каждого имени файла всё-равно отображается иконка. Так вот в ранних версиях Windows (кажется ещё до Windows 95) этой иконки не было вообще. В следующих версиях она стала отображаться, но их было небольшое количество и они выбирались исходя из расширения файла (ОДНА иконка на каждое расширение), на этом этапе интерфейс стал тормознутее, но ещё приемлемо.

            А далее пошло по нарастающей — у каждого расширения файла появилось по нескольку ассоциаций с программами, одна из которых — по-умолчанию. И на этом этапе появились тормоза.

            Примерный сегодняшний алгоритм действий Винды, как я его понимаю.
            1. Мы открываем папку в проводнике.
            2. Берётся первый файл в списке, смотрится его расширение.
            3. Лезем в реестр, посмотреть что там ему соответствует, какая программа.
            4. Лезем в эту программу, чтобы взять от неё иконку.
            5. Рисуем иконку рядом с именем файла.
            GOTO 2 для следующего файла в списке.

            Если их тысяча, да ещё на HDD — очень времязатратное мероприятие, невзирая на кеширование и пр. Для того чтобы просто показать мне список файлов производится куча ненужных действий.

            Кроме того, для запускаемых файлов, файлов ресурсов и т.д. проводник лезет внутрь этого файла, чтобы вытащить иконку из него. Т.е. для того, чтобы показать мне имя файл в списке, этот файл нужно открыть и прочитать из него данные!!! Я понимаю заботу о простых юзерах — им предложено по-умолчанию показать красивую иконку и обязательно убрать расширение файла — но почему не сделать иконки отключаемыми? Слава богу расширение пока ещё можно включить…

            Откройте папку с сотней файлов в любой виртуалке Windows 95 или Windows 3.1, NT — вы поймёте о чем я говорю, там список фалов любых размеров открывается мгновенно.


            1. HardWrMan
              11.09.2019 11:13

              Это всё понятно. Для этого уже в Win98 точно был кеш иконок (который у меня на компьютерах с nForce2 постоянно слетал и показывал кашу). Не уверен за Win95.


            1. CaptainFlint
              11.09.2019 11:32

              Возможно, стоит посмотреть в сторону альтернативных файловых менеджеров. Скажем, Far Manager консольный, там значков нет по определению. А Total Commander поддерживает четыре разных режим для отображения значков, не считая дополнительных настроек.


            1. ALF_Zetas
              11.09.2019 12:04

              Примерный сегодняшний алгоритм действий Винды, как я его понимаю.

              неправильно понимаешь — все иконки хранятся в кеше c:\Users\имяюзверя\AppData\Local\Microsoft\Windows\Explorer\


              1. chnav
                11.09.2019 13:15

                Да всё-равно где они хранятся, их нужно прочитать и нарисовать, а ещё небось добавилось — проверить сам кеш на протухлость и обновить иконку в нем… Сделать тысячи системных вызовов, сто тысяч раз обратиться к реестру. Даже если всё это хранится в RAM это требует времени и ресурсов CPU.


                1. Kanut
                  11.09.2019 13:24

                  На самом деле лично у меня отношение к Windows Explorer уже давно такое же как к Internet Explorer. То есть использую его на свежеустановленной системе чтобы поcтавить нормальный File Manager.


                  Выше упомянутый Total Commander вполне себе прилично работает. Это если из бесплатных.


                  А уж если не жалко деньги на это дело потратить, то выбор ещё больше.
                  У нас на работе например Directory Opus по корпоративной лицензии и я им дико доволен. Даже иногда подумываю домой прикупить.


                  1. mayorovp
                    11.09.2019 14:14

                    А панель задач Far Manager тоже заменяет?


                    1. Kanut
                      11.09.2019 14:30

                      Это я не в курсе. Именно Far Manager я не пользуюсь и панель задач меня более-менее устраивает в том виде как она есть. Но предположу что для этого тоже какие-то варианты найти можно.


                    1. drWhy
                      11.09.2019 14:41

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


                      1. mayorovp
                        11.09.2019 14:50

                        Тут проблема в другом: чтобы воспользоваться фаром, надо на него сначала как-то переключиться. А без панели задач это сделать не так просто.


                        1. drWhy
                          11.09.2019 15:05

                          shell=far.exe )


                          1. mayorovp
                            11.09.2019 15:13

                            Это способ запустить FAR. А дальше-то что?


                            Вот у вас открыто 10 окон, из них — пять развёрнуты на весь экран. где-то под ними — FAR. Как быстро и просто добраться до него чтобы что-то там сделать?


                            Ещё интересный вопрос — что будет если его случайно закрыть. Современные винды вроде как упавший шелл перезапускают — а вот в XP после этого пользователь оставался с голым экраном, где не работало ничего кроме Ctrl+Alt+Del. Тоже так себе удобство.


                            1. drWhy
                              11.09.2019 15:40

                              Не агитирую за замену проводника Far'ом, но это возможно. Кто пользуется только проводником, тому, видимо, не мешают его аппетиты, кто не пользуется — тому он (почти) не мешает.
                              Alt+Tab, кстати, продолжает работать после закрытия проводника.

                              Закрытие активного shell'а можно бы и запретить (хотя explorer.exe этого не делает). Но если уж закрыли, то да, Ctrl+Shift+Esc -> Файл -> Новая задача.

                              Современный Explorer.exe в Windows PE не запускается, Far вполне функционален.


                            1. Whuthering
                              11.09.2019 15:40

                              Из Ctrl-Alt-Del можно стартануть произвольный процесс.


                              1. mayorovp
                                11.09.2019 15:50

                                Спасибо, я знаю. Но заменой панели задач FAR это не делает.


                                1. drWhy
                                  11.09.2019 16:34

                                  Чего именно не хватает? Списка запущенных приложений, миниатюр, контекстного меню, системного трея?
                                  Существуют оконные менеджеры с заменой панели задач.


                                  1. mayorovp
                                    11.09.2019 16:37
                                    +1

                                    Чего именно не хватает? Списка запущенных приложений, миниатюр, контекстного меню, системного трея?

                                    Способа быстро и удобно переключиться на нужную задачу.


                                    Существуют оконные менеджеры с заменой панели задач.

                                    … не являющиеся Far Manager :-)


                            1. HardWrMan
                              11.09.2019 20:21

                              Определённые горячие клавиши всё равно работают, даже если шелл прописан как far. И речь не только за Ctrl+Alt+Del


                            1. aleksandy
                              11.09.2019 20:59

                              Как быстро и просто добраться до него чтобы что-то там сделать?

                              Запускаю FarManager в ConEmu, который по Ctrl+` доступен из любого места без проблем.


                            1. CrazysAlien
                              12.09.2019 09:48

                              CTRL+Shift+ESC работало и работает — ещё до запуска шелла или при падении оного вызывает ДиспетчерЗадач из которого можно запустить его снова (и не только).


                    1. qw1
                      11.09.2019 21:09

                      А панель задач Far Manager тоже заменяет?
                      Работающие в Far обычно пользуются клавиатурой. Панель задач больше заточена под мышь и она не особо используется. Для переключения задач удобнее нажимать Alt+Tab — это не функция проводника. Её улучшили в Win10 и она удобна.


                  1. MTyrz
                    11.09.2019 14:16
                    +1

                    Total Commander вполне себе прилично работает. Это если из бесплатных.
                    Я очень извиняюсь, но вообще-то Тотал не бесплатный. Он всю жизнь шароварный был. Тридцать евро стоит, если мне память не изменяет.


                    1. Kanut
                      11.09.2019 14:25

                      У нас 32-bit для частников идёт как бесплатная версия и платить надо только за 64. Да и то часто ключи бесплатно раздают.
                      Так что он может официально и не совсем бесплатный, но на практике частники за него не платят.


                      1. CaptainFlint
                        11.09.2019 14:47

                        Тотал разной битности никогда не лицензировался отдельно. Лицензия покупается единожды и действует на все версии и все битности, никакой специальной лицензии на 32-битку для частников не существует.

                        Имеется неофициальная позиция разработчика Тотала, что для домашних компьютеров он лично не возражает против бесплатного использования дольше, чем официальный триальный срок в 30 дней, при условии что пользователь при запуске честно нажимает 1-2-3 в стартовом диалоге, а не обходит этот момент тем или иным способом. Но даже с учётом этого называть программу «бесплатной» неверно.


                        1. Kanut
                          11.09.2019 14:54

                          Опять же возможно что "региональные особенности", но сейчас глянул и везде можно скачать "бесплатную версию" с возможным апгрейдом до полной за 30-40€.
                          Ну и у меня есть ключи, которые я в своё время получил "в нагрузку" при покупках компов и железа.


                          П.С. Да и пусть Total Commander глобально не бесплатный, но наверняка можно найти адекватную бесплатную замену эксплореру :)


                          1. MTyrz
                            11.09.2019 15:21

                            Multi Commander довольно хорошо справляется с ролью бесплатной замены Тоталу. А эксплорер… да, «Мерседес» тоже адекватная замена «Жигулям» :)


                            1. oldschoolgeek
                              11.09.2019 17:40

                              Или Unreal Commander: https://x-diesel.com/


                              1. MTyrz
                                11.09.2019 20:38

                                О, не знал раньше. Спасибо, пощупаю.


                            1. algot
                              13.09.2019 01:37
                              +1

                              Я Double Commander использую как замену Total, если стоит вопрос в лицензии.
                              Он даже на Linux есть


                              1. MTyrz
                                13.09.2019 02:27

                                Под Linux'ом и я его использую.
                                Под виндой он у меня как-то не прижился.


                          1. CaptainFlint
                            11.09.2019 15:35

                            Если на каком-то сайте предлагают скачать «бесплатную версию» Тотала, то скачивать с такого сайта обычно не рекомендуется. На официальном же сайте предлагается стандартный дистрибутив шароварной программы, каковой Тотал и является. Несмотря на то, что он не накладывает каких-либо ограничений на свою функциональность при отсутствии ключа — хоть в пределах триального срока, хоть по его истечении (не считая диалога 1-2-3) — это не даёт права называть программу бесплатной, поскольку это понятие регулируется текстом лицензии, а не наличием/отсутствием блокировок в программным коде.


                            1. Kanut
                              11.09.2019 15:50

                              Ну всё-таки странички вроде chip, netzwelt, heise и иже с ними я бы к "таким сайтам" относить не стал. С них наверное пол Германии софт качает. Так что там вряд ли что-то нелегальное распространяется.


                              П.С. Но не суть важно. Забываем про Total commander(или покупаем его) и качаем какой-нибудь Multi или Free Commander, которые тут упоминали другие люди:)


                              1. karabas_b
                                11.09.2019 18:07

                                Ну всё-таки странички вроде chip, netzwelt, heise и иже с ними я бы к «таким сайтам» относить не стал. С них наверное пол Германии софт качает. Так что там вряд ли что-то нелегальное распространяется.


                                На всех этих сайтах лежит обычная шароварная версия тотала плюс адварь от самого сайта.


                          1. Osnovjansky
                            11.09.2019 15:56

                            Да.
                            Double Commander
                            Пару лет не использовал, но раньше работал


                      1. MTyrz
                        11.09.2019 15:17

                        Видать, я выпал из контекста.
                        Никогда про такое не слышал: хотя «у нас» может обозначать довольно разные места планеты, это правда.


                        1. Kanut
                          11.09.2019 15:25

                          Ну в данном конкретном случае "у нас" это как минимум Германия, а скорее всего и остальные немецкоговорящие страны. Потому что сейчас ради проверки скачал по быстрому такую бесплатную версию и там можно выбрать только немецкий язык. Но никаких предупреждений что версия только на 30 дней мне не выскочило.


                          1. MTyrz
                            11.09.2019 15:33

                            Понял.
                            Мне оно даже не выгуглилось, ну да ладно. Не Германия :)


                          1. CaptainFlint
                            11.09.2019 15:42

                            И вот такого не выскочило?

                            Скрин
                            image


                            1. Kanut
                              11.09.2019 15:56

                              Неа. Но теперь самому стало интересно. Домой приду, накачаю отовсюду и буду проверять :)


                            1. Kanut
                              11.09.2019 18:47
                              +1

                              Так, извиняюсь, был неправ. Похоже везде шареварные версии лежат.


                              Один и тот же установщик на "чистом компе" выдаёт предупреждение, а на компе с уже установленным TC просто ставит его и всё.


                    1. drWhy
                      11.09.2019 14:42

                      Far manager тоже был не бесплатным. Бесплатность ему явно пошла на пользу.


                      1. Whuthering
                        11.09.2019 14:50
                        +1

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


                        1. mayorovp
                          11.09.2019 14:56

                          Но большинство моих знакомых на такие мелочи внимания не обращали и использовали крякнутую версию :-)


                      1. HardWrMan
                        11.09.2019 14:51

                        xUSSR / текущий_день_недели_на_момент_регистрации


                        1. vlivyur
                          11.09.2019 19:12

                          У одногруппника как-то обнаружил кряк к Far'у. Оказалось он не читал readme.


                  1. HardWrMan
                    11.09.2019 14:50

                    shell=far.exe?


                  1. oldschoolgeek
                    11.09.2019 17:37
                    +1

                    У нас на работе например Directory Opus по корпоративной лицензии и я им дико доволен.


                    Ничего себе… Windows версия ещё живёт и развивается?

                    Помню, в середине 90х этот файловый менеджер очень любили владельцы Amiga, а на Windows он мне тогда не очень зашёл после Far.


            1. viklequick
              11.09.2019 14:19

              Примерный сегодняшний алгоритм действий Винды, как я его понимаю.
              1. Мы открываем папку в проводнике.
              2. Берётся первый файл в списке, смотрится его расширение.
              3. Лезем в реестр, посмотреть что там ему соответствует, какая программа.
              4. Лезем в эту программу, чтобы взять от неё иконку.
              5. Рисуем иконку рядом с именем файла.
              GOTO 2 для следующего файла в списке.


              Вы забыли еще несколько таких пунктов…

              Еще например есть такое
              • мы читаем КАЖДЫЙ файл в папке чтобы определить что это.
              • Если это EXE то мы вытаскиваем иконку из его ресурсов.
              • Если это линк или пиф — то достаем то на что оно ссылается.
              • Если это картинка — то мы читаем ей заголовок, чтобы показать размеры (превью — отдельный шаг!).
              • Если это неизвестный нам файл — то лезем в реестр с проверкой по расширению, и т. д.


              А еще есть Icon Overlay extensions. На каждую уже построенную иконку вызывается толпа внешних хэндлеров — вдруг один из них нарисует значок. К слову стрелочка поверх иконы, показывающая что это шорткат — именно так и реализована.

              Ну и там еще много чего есть, кастомные column views и т. д. Так что там реально есть чему тормозить.

              И это еще выносим за скобки тот факт, что напрямую к файлам эксплорер не ходит, потому что файлы могут быть виртуальными (ага, поддержка зипов, или фтп с вебдавом, или даже обмен файлами из ремот десктопа — именно вот таким провайдером). А еще не забываем что в список «файлов» попадают фавориты, закладки, «последнее», все эти «мое видео» и даже программы из контрол-панели.

              Ну и не забываем, что все это тройным слоем обмазано через COM.

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

              Вот просто малюсенький примерчик. Смотрим в наш любимый (ну как любимый — был таким до co-signing drivers) IFS Kit, IRP_MJ_CREATE.

              The IrpSp->FileObject parameter contains a pointer to the RelatedFileObject field, which is also a FILE_OBECT structure. The RelatedFileObject field of a FILE_OBJECT structure is used to indicate that a given file has been opened relative to an already open file object. This usually indicates that the relative file is a directory


              Так вот в обычном конвенциональном file i/o этот самый RelatedFileObject присылал мне в драйвер только этот самый Windows NT Explorer и именно для получения этих самых иконок. Представьте, как надо было (в хорошем смысле) упороться, чтобы даже тут сэкономить пару байтиков и тактиков.

              Кстати, задать этот самый каталог отдельным параметром можно исключительно через Native API.


              1. drWhy
                11.09.2019 15:00
                +2

                читаем КАЖДЫЙ файл в папке
                Проверяем прочитанное антивирусом.
                Так что там реально есть чему тормозить.
                … провели поистине гигантскую работу по оптимизации
                Действительно, работа титаническая. К сожалению, система всё больше забывает о пользователе, уходя в себя надолго даже на мощных конфигурациях.
                Неплохо бы ставить приоритеты, например, сначала отображаем список файлов, потом подтягиваем подробности (если они к тому времени будут актуальны).
                И чтобы Диспетчер задач можно было вызвать в любой момент, а не по окончании перерисовки всех страниц в Хроме.


                1. viklequick
                  11.09.2019 15:29
                  +1

                  читаем КАЖДЫЙ файл в папке

                  Проверяем прочитанное антивирусом.

                  Ух, антивирусы это отдельная печаль, причем как раз на открытие файла и ураганят в основном :-)

                  К сожалению, система всё больше забывает о пользователе, уходя в себя надолго даже на мощных конфигурациях.

                  С тех пор парадигма сменилась, лагерь Раймонда Чена с его вниманием к оптимизациям и совместимости давно отодвинут от руля, вперед идут молодые и горячие. Которые выросли в другую эпоху, для них те вещи которые еще 10-20 лет назад были «долго и дорого» — не стоят ничего.

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


                  (смеется) а все эти асинхронные и реактивные программирования, весь этот второй рассвет функциональщины, монад и чистых функций — они для чего нужны? Вот именно для этого. Чтобы «само» по очереди, не тормозя остальных.

                  (в раздумье — ставить тег sarcasm или нет, а то шутка получилась не совсем шуткой)

                  Async/Await-изация головного мозга (С). Вместо того чтобы делать алгоритм эффективным — его размазывают тонким слоем, и пусть тормозит :-)

                  Впрочем и ООП (OOA/OOD по Г. Бучу) тоже не для блоатвари придумывалось, а «получилось как всегда» (С).

                  И чтобы Диспетчер задач можно было вызвать в любой момент, а не по окончании перерисовки всех страниц в Хроме.


                  Кстати тут вообще элементарно должно было быть, при старте — залочить от свопа пару регионов ОЗУ с кодом и данными, поставить приоритет повыше, и будет всегда мгновенно переключать, тьфу и растереть. Почему нету за столько лет — непонятно.


                  1. drWhy
                    11.09.2019 15:56

                    С тех пор парадигма сменилась, лагерь Раймонда Чена с его вниманием к оптимизациям и совместимости давно отодвинут от руля, вперед идут молодые и горячие.
                    Но выход, конечно, есть! Молодых и горячих, не терпящих оптимизаций, усадить за $100 OLPC, и да пребудет с ними Сила (оптимизации).
                    Или указывать в системных требованиях коммерческого продукта честный актуальный конфиг машин разработчиков.


                    1. viklequick
                      11.09.2019 19:13

                      Чтобы смайлики в BSOD стали еще и анимированными? :-)

                      Увы, BYOD — и это будет топовый мак про, а ужастик- будет пыль собирать. Раньше на маках сидели только топы, а так — сядут еще и разработчики с тестировщиками.

                      Зато будет вероятен порт вижуалстудии под мак :-)


                1. sumanai
                  11.09.2019 15:35
                  +1

                  Неплохо бы ставить приоритеты, например, сначала отображаем список файлов, потом подтягиваем подробности (если они к тому времени будут актуальны).

                  Вроде же так и есть. Не замечали зелёную полоску в адресной строке проводника, показывающую прогресс получения изображений вместо иконок?


                  1. DrPass
                    11.09.2019 15:56

                    Зеленая полоска в адресной строке проводника, это просто новая форма песочных часиков. Она прогресс не показывает, просто дает понять пользователю, что система там что-то делает.
                    Что касается прогресса получения изображений, это хорошо заметно на медленном диске, например, сетевом. Он прочитал несколько имен файлов, начал тянуть их для получения превью. Потом ещё несколько имен, снова тянет превью. Очевидно, это два параллельных потока, но сделано откровенно не продуманно, т.к. быстрая задача, после которой пользователь мог бы продолжить работу (получение списка файлов) затормаживается до окончания самой медленной и к тому же необязательной операции (вытянуть все файлы на предмет формирования превьюшек).


                  1. drWhy
                    11.09.2019 16:07
                    +2

                    Замечал, Far тоже сигнализирует проводнику прогресс.
                    Вообще, прогресс-бары в современных Windows — отдельная грустная песня. Раньше у данного компонента был один входной параметр — Progress, в %. Что там сейчас — не знаю, но именно к степени близости процесса к окончанию оно отношения не имеет. Обычно получаем бессмысленную анимацию, отражающую только факты, что, скажем данная инсталляция ещё не зависла и не закончилась.


                    1. mayorovp
                      11.09.2019 16:36

                      Теперь там два параметра. Первый как раньше, а второй означает режим: либо %, либо анимация.


                      1. drWhy
                        11.09.2019 17:00

                        Довольно неожиданно.


                    1. sumanai
                      11.09.2019 16:57

                      Раньше и процент считался намного точнее. Сейчас, со всеми аналитиками, лучшее, что делают в МС, это прогресс бар, который прыгает сразу до 90% и дальше еле шевелится. Зато небось какой-нибудь менеджер получил прибавку за визуальное ускорение интерфейса.


                      1. mayorovp
                        11.09.2019 17:10
                        +2

                        Что-то вы путаете, это раньше прогресс-бар прыгал до 90%, а потом еле шевелился...


                        1. Fly3110
                          11.09.2019 23:48

                          Раньше он (иногда) мог и больше 100% показать


                          1. drWhy
                            12.09.2019 09:27

                            Всё логично, проводник иногда при копировании показывает отрицательное время.


                    1. Goodkat
                      11.09.2019 18:30
                      +1

                      Обычно получаем бессмысленную анимацию, отражающую только факты, что, скажем данная инсталляция ещё не зависла и не закончилась.
                      На самом деле инсталляция давно уже зависла и упала, анимация — это гифка загруженная в отдельной инстанции браузера (тоже зависшей, анимация отображается средствами ОС), который занимает 70 мб (на 64-битных системах — 110 мб) из 72 мб (на 64-битных системах — 250 мб) размера инсталлятора.


                1. dartraiden
                  11.09.2019 17:34

                  Проверяем прочитанное антивирусом.
                  Современные антивирусы сохраняют контрольные суммы проверенных файлов, а также используют возможности файловой системы NTFS, чтобы не проверять один и тот же файл слишком часто.


  1. Naves
    11.09.2019 09:45

    Все чаще посещает мысль, что если на современный комп поставить win98 и какой-нибудь офис 97, то получившееся простое рабочее место — печатная машинка, будет работать значительно быстрее и комфортнее, чем вот эти современные офисы 365 со всякими кортанами.
    Я один такой ретроград, который не видит всех этих новых удивительных возможностей современных операционных систем для десктопов?
    Если не рассматривать проблему браузеров, то слушать музыку и смотреть фильмы успешно можно было уже в 98 году. Для HD-видео в то время не хватало процессора, сейчас с этим проблем нет.
    Ещё отдельной проблемой идет 3D, когда для новых графических функций, шейдеров, нужен был новый directX, который требовал новую версию ОС.
    В целом революционных изменений на десктопах нет, поддержка тачскрина и жестов там не нужна, но мы все равно забабахали вам плитку на весь экран на серверной версии…


    1. Kanut
      11.09.2019 10:16

      Я как-то пробовал установить win95 на более-менее актуальный комп. Началось с того что он не понимал NTFS, и пришлось форматировать в FAT. Потом пришли проблемы с драйверами, а точнее их отсутствием. Из-за отсутствия драйверов винда "не понимала" ни нормального разрешения экрана, ни вещей вроде USB (как впрочем и половину других разъёмов материнки).


      В общем я поигрался и бросил эту затею :)


      1. burzooom
        11.09.2019 10:23

        так usb win95 стала понимать в каком-то сервис паке только, чо сразу Гейтс-то


        1. Kanut
          11.09.2019 10:26

          Это не претензия к Win95. Я скорее о том что поставить какую-нибудь "старую добрую версию" винды и работать на ней тоже скорее всего не особо получится. К сожалению :)


          1. domix32
            11.09.2019 11:15
            -2

            Неудивительно, учитывая, что с 95 мы уже пришли к пределу закона Мура.


          1. burzooom
            11.09.2019 13:52

            Как и собрать заново ракету лунной экспедиции Сатурн. Вроде делали их, и не одну. А снова сделать точно такую же или с минимальными доработками — зась. Нет смысла.


      1. questor
        11.09.2019 11:44

        Для таких вещей можно было бы использовать виртуальную машину.


    1. aik
      11.09.2019 11:07

      На современном компьютере вы упрётесь в драйвера. Уже даже семёрку иногда становится не так просто поставить.

      На счёт 97 офиса — некоторых интерфейсных плюшек от более поздних версий всё же не хватает.


      1. Naves
        11.09.2019 12:00

        Год назад ставил, даже смог выйти в интернет. Звук только не заработал.
        habr.com/en/post/423339/#comment_19122437


        1. aik
          11.09.2019 13:03

          А видео? Ну и «мышь сходит с ума», «только в режиме DOS-драйвера» и т.п. я бы не стал считать нормальной работой.


      1. LevOrdabesov
        11.09.2019 16:57
        +1

        Было бы очень интересно почитать хорошую статью на тему «что там технически (а не маркетологически) такого особенного в драйверах, что их нельзя производить под все распространённые ОС».
        Где бы реквест разместить.

        Вангую ответ
        «человекочасы, больше ничего»


        1. drWhy
          11.09.2019 17:16

          Есть энтузиасты, неторопливо пилящие универсальные драйвера. В случае, если новые функции или структуры данных отсутствуют в старой оси, например xp, описывают структуры, добавляют функции или заменяют заглушками.
          Есть программы, чаще бесплатные, имеющие драйвера, работающие в практически любой версии Windows, например HWiNFO. У неё даже версия для DOS есть.


          1. LevOrdabesov
            11.09.2019 18:41

            Забавный факт о hwinfo: кидает в синий экран сервер на supermicro с raid-контроллером Adaptec (всё старое), под плиточками (Windows 2012). Тот же сервер в той же ситуации под 2003 вёл себя прилично.
            Очень полезное обновление ОС, что и говорить.


        1. dartraiden
          11.09.2019 17:38

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

          У Windows 98 менее 0.01% рынка, это считается «распространённой операционной системой»?


        1. aik
          11.09.2019 18:08

          Я бы не назвал 98 распространенной ОС. ;)


          1. LevOrdabesov
            11.09.2019 18:49

            Ну да, стараниями корпорации-производителя.
            Но производительность труда во временной период с Windows 98 до Windows 10 выросла (и то не факт, кстати) не благодаря якобы современным и чрезвычайно полезным технологиям в более новых ОС. Многие пользователи до сих пор впадают в шок при предложении воспользоваться поиском на локальном диске, никакие плиточки это не исправили.


    1. realspinner
      11.09.2019 11:41
      +1

      Недавно мне подарили живой 286-й дектопчик Olivetti. Там был DOS, Norton Commander и Windows 3.1. В это трудно поверить, но я был буквально шокирован тем, насколько мгновенно эта антикварная машинка откликается на действия пользователя. Без всяких SSD, многоядерности и гигабайтов RAM: загрузка программ, работа меню — всё очень быстро, никаких раздражающих лагов. Это удивительно, учитывая, что в 90-е я такой техникой вовсю пользовался. Вроде должен помнить…

      Выходит, за последние 30 лет подо всеми визуальными красотами мы напрочь забыли, как должен работать UI здорового человека. Да, я понимаю бездну, отделяющую однозадачный DOS от Win10, но чёрт возьми, никогда не поверю, что все эти лаги современных OS абсолютно неизбежны.


      1. balamutang
        11.09.2019 12:07

        Вот-вот. Я помню как мне принесли 486 с 12мб памяти чтоли в 2006 году.
        Это был просто зверь, 95 там летала, как не летала XP на современных тогда Атлонах и P4 с гигом оперативки. Ворд открывался почти моментально, без шуршания на диске.


        1. vis_inet
          11.09.2019 13:09

          Сейчас остаётся только с сожалением вспоминать те времена.


        1. memba
          11.09.2019 14:17

          У меня в 97 году был 486й с 8мб и Windows 95 отлично работал.
          Потом у меня долго время был Pentium II с 32мб и Windows 2000 и все было хорошо.
          Сейчас у меня mac и он съел 16гб и хочет еще.


          1. Goodkat
            11.09.2019 18:41

            Эти 16 гб съел, наверное, хром.


            1. extempl
              12.09.2019 08:04

              Я вот всё смотрю на эти бесконечные посты о прожорстве хрома и не понимаю о чём речь (точнее, понимаю, конечно). Мне моих 16 хватает всегда с головой, сейчас хром "стабильно" резервирует 3.65 и больше не просит.
              Осмелюсь предположить, что дело в кол-ве вкладок. У меня их сейчас всего 12 + где-то столько же расширений разного рода. А не 150. ЧЯДНТ? Может, всё-таки, проблема не в Хроме? Может надо, наконец, научиться пользоваться закладками read-later-ами и прочими инструментами, которые просто наводят порядок, речь даже не об оптимизации использования памяти (об этом я как-то мало думаю, оно само).
              Может показаться что 3.65 это дофига на всего 12 вкладок, но это ± константное значение и в моменты рабочей нагрузки в виде ?30 вкладок, которые закрываются в течении получаса (ибо нефиг). И Хром по природе использования макбука перезапускается только при обновлении. То есть живёт неделю-две.
              Простите, вырвалось.


              1. drWhy
                12.09.2019 09:36

                Сопоставьте ваши 16 с минимально требуемым 1 ГБ.
                Реальный минимум сейчас 8. И при 8 же можно отключить свап, всё зашевелится заметно быстрее и перестанут протираться дырки в hdd/ssd (офис без фотошопов).
                Ещё весной можно было работать без свапа на 4 ГБ, сейчас стал любой браузер на четырёх вкладках вылетать, а со свапом половина времени уходит на него.


                1. extempl
                  12.09.2019 11:04

                  Не, это-то я понимаю (есть рациональное зерно, да).
                  Но ведь все вокруг говорят, что у них 16 выжираются в ноль и переходят на 32 и 64. И их, якобы, не хватает.
                  Так мне 16 хватает и на хром и на IDEA, которая тоже не закрываясь живёт неделями.


              1. F0iL
                12.09.2019 11:13

                Тут есть две проблемы. Первая проблема в том, что независимо от браузера, современный Web стал очень жирным, и этот процесс идет с каждым годом и даже с каждым месяцем. Увеличиваются объемы контента (пара десятков мегабайт графики при заходе на какой-нибудь лендинг в наше время не такое уж редкое явление), увеличивается обскриптованность сайтов и растут объемы фреймворков (у того же фейсбука реально загружается чуть ли не несколько мегабайт JS-кода), расширяются веб-стандарты, включая в себя уже далеко не только веб-фичи, но и кучи всего остального, сам по себе DOM штука тоже жирная и жручая, а ведь он основа современной веб-разработки, и т.д.
                А вторая проблема, на самом деле, в Хроме, а еще на самом деле это не проблема, а фича.
                У Хрома сознательная политика — все, что можно кэшировать, будем кэшировать, все что можно буферизовать, будем буферизовать. Поэтому, соответственно, он постепенно использует всю доступную ему в системе память.
                Плюс там есть механизм обработки Memory Pressure, который определяет, что памяти в системе осталось маловато, или же система начинает своппится, и этот механизм посылает разным компонентам хрома сигнал о том, что надо бы подчистить кэши-буферы и вообще ужаться. Если памяти совсем-совсем не хватает (уровень critical), то хром начинает выгружать открытые фоновые вкладки и отключать некоторый функционал.
                Другое дело, что эта самая «определялка memory pressure» иногда работает не очень хорошо, а под Linux так разработчики Хрома ее вообще сломали и выпилили несколько лет назад, и не хотят мержить обратно мои патчи её возвращающие. Но это уже совсем другая история :)


                1. extempl
                  12.09.2019 11:17

                  У Хрома сознательная политика — все, что можно кэшировать, будем кэшировать, все что можно буферизовать, будем буферизовать. Поэтому, соответственно, он постепенно использует всю доступную ему в системе память.

                  Да, об этом я слышал, но, честно говоря, никогда не наблюдал.


                  а под Linux так разработчики Хрома ее вообще сломали и выпилили несколько лет назад, и не хотят мержить обратно мои патчи её возвращающие

                  А как дела с Chromium? Используете свой билд с патчем?


                  Я полагаю, билд для OSX больше схож с билдом для линуксов, чем для Win. Или есть различие в этой самой "определялке memory pressure"? Праздный интерес.


                  1. F0iL
                    12.09.2019 11:29

                    Я полагаю, билд для OSX больше схож с билдом для линуксов, чем для Win. Или есть различие в этой самой «определялке memory pressure»?
                    Есть. В OS X используется другой механизм для определения, не такой как в Linux (благо, там в макоси есть отдельный sysctl для определения состояния потребления памяти, в отличие от Linux, где приходится танцевать с бубном для этого), поэтому при сборке под Мак компилится другой код, и, судя по всему, вполне должен работать.


                1. drWhy
                  12.09.2019 12:34

                  Интересно, Memory Pressure как-то различает физическую и виртуальную память? Т.е. в системе с малым объёмом физической памяти и большим свапом он убережёт Хром от чрезмерного аппетита?


                  1. F0iL
                    12.09.2019 14:11

                    На OS X оно целиком и полностью полагается на системный параметр, а как именно ОС считает-оценивает надо смотреть.
                    Под Windows анализируется именно доступная _физическая_ память (поле ullAvailPhys из результата вызова GlobalMemoryStatusEx), как оно себя ведет в реальных условиях я не знаю (подозреваю, что винда как и Linux с установленным vm_swappiness начинает скидывать страницы памяти в своп задолго до исчерпания всего объема физической памяти).
                    Под Linux тоже использовался параметр MemAvailable (свободная физическая память плюс системные кэши-буферы которые могут быть легко освобождены) из /proc/meminfo, как дополнительный источник проводился анализ интенсивности page faults (быстрый рост этого параметра говорит о том что система активнос своппится), правда, там в коде был один WTF, поэтому я не уверен, что оно действительно работало :)


                    1. drWhy
                      12.09.2019 14:21

                      Спасибо. А есть ли доступные настройки? Нагуглил:
                      chrome://flags #memory-pressure-thresholds
                      но, похоже, убрали как из Хрома, так и из Канарейки.


                      1. F0iL
                        12.09.2019 15:52

                        Раньше точно были, сейчас, судя по всему, выпилили.


              1. sumanai
                12.09.2019 14:09

                Осмелюсь предположить, что дело в кол-ве вкладок.

                Firefox держит сотни вкладок, так что проблема в хроме.


                1. extempl
                  12.09.2019 14:40

                  Скорее так — Firefox лучше справляется с ненормальным пользованием браузером и полным хаосом в виде бесконечного числа вкладок выкидывая из памяти неактивные или те, которые давно не открывались.
                  Проблема самого факта сотни вкладок при этом никуда не девается.


                  1. khim
                    12.09.2019 15:10
                    +5

                    А давайте вы не будете за меня решать как мне вкладками пользоваться?

                    Лет 10 назад во время распродажи на одном сайте я делал следующее: брал список товаров (250-300 наименований) и открывал все в соответствующем количестве вкладок. Тупо скриптом. Потом брал ноут под мышку и в метро (тогда в метро WiFi не было) отбирал интересное мне — просто нажимая Ctrl-Tab и Ctrl-W.

                    Сейчас, ради интереса, попробовал то же самое сделать. И вы, знаете, получилось! Правда есть одно маленькое отличие: 10 лет назад я это на ноуте делал и он не перегревался от этого. Сегодня моя рабочая станция вошла «в режим турбореактивного двигателя» (в который она обычно входит, когда я что-то компилирую), Chrome занял несколько десятков ядер и больше 100GB памяти.

                    А что я в обмен получил? Кучу дизайнерских изысков? А нельзя ли их того, в попу? И вернуть мгновенный отклик? Мне он гораздо больше нравится, чем всё эти, нафиг мне не нужные, дизайнерские изыски…


                    1. extempl
                      12.09.2019 15:18
                      +1

                      А что я в обмен получил? Кучу дизайнерских изысков? А нельзя ли их того, в попу? И вернуть мгновенный отклик?

                      Ну это, понимаете ли, решает спрос. Всё-равно что требовать интересные текстовые квесты вместо этих чертовски красивых игр с тупым бездумным сюжетом.
                      Люди хотят красиво, люди хотят интерактивно со всеми этими новомодными свистоперделками. Маркетинг он же тупой, что деньги приносит, то и требуют от девелоперов. Унылые магазины без капли js нынче, очевидно, не приносят прибыли.
                      ЗЫ А ещё дешевле разрабатывать, конечно.


                      1. DrPass
                        12.09.2019 21:58

                        Люди хотят красиво, люди хотят интерактивно со всеми этими новомодными свистоперделками.

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

                        Компании неплохо оценивают потребности людей в товаре, но что касается пользовательского дизайна интернет-магазинов и т.д. никто толком не погружается в потребности пользователей. Сайты разрабатываются так, чтобы картинка нравилась кому-то из боссов, только и всего. В лучшем случае ещё SEOшника послушают.
                        Чтобы в этом убедиться, понаблюдайте как-нибудь, например, за процессом разработки логотипа компании. Там обычно будет на пару месяцев обсуждение между боссами, маркетологами и дизайн-студией цветов, закорючек, о том, какой посыл для пользователей несёт какой завиток, штырёк и финтифлюшка.
                        Потом ради интереса можете у любого участника дискуссии спросить, например, какие марки одежды они носят или какое кофе предпочитают. А потом попросить нарисовать их логотипы. Никто ничего не вспомнит, кроме может быть лого ЛаКоста, ещё помнят Кока-колу, Пепси, МакДональдс и лого автомобилей. Они даже логотипы своих партнеров хрена с два нарисуют (ну, дизайнерское агентство нарисует, да). А так, они в здравом уме и сознании будут тратить кучу денег и времени на разработку штуки, на которую по факту будет глубочайше наплевать всем их клиентам/партнёрам. Так же и с дизайном магазина. Многие уделяют кучу времени на разработку вторичных, никому не нужных вещей, в ущерб основному и востребованному функционалу.


                      1. khim
                        13.09.2019 00:19

                        Унылые магазины без капли js нынче, очевидно, не приносят прибыли.
                        Ага. И если страница в Юлмарте занимает 10 мегабайт, а в НИКСе 1 мегабайт, то НИКС будет в 10 раз более популярен. Ага-ага.

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

                        Лучше посмотреть на вещи, для которых дизайн действительно важен: Skype там или Digg. Я не знаю ни одного случая, когда пердосвистелки приводили что-либо к успеху — зато полно случаев, когда они приводят к тому, что пользователи тупо сбегают. Да, блин, посмотрите на Windows 8 и 10: если бы людям действительно были интересны пердосвистелки, то не пришлось бы их варивать чуть не под дулом пистолета.

                        Просто на всю эту муть, как правило, находятся деньги, когда дело и так идёт на лад — ну и при должном обхаживании ушей начальства можно убедить его что это всё от пердосвистелок.

                        ЗЫ А ещё дешевле разрабатывать, конечно.
                        Нет, главное — марекетологи могут «осваивать бюджет».


                        1. extempl
                          13.09.2019 08:33

                          Всё не так просто. Кажется, что оно действительно не нужно, не важно и лучше б открывались статические страницы по 200кб. Но небольшой нюанс в том, что при прочих равных (а на ценах играть ой как не просто), для конечного потребителя будет играть привлекательность и простота в использовании. Например, лет с 10 назад у нас (в Украине) была куча однообразных магазинов. Но выстрелил тот, у которого интерфейс был поприятнее, и у которого фильтр удобный. Это потом он уже стал де-факто основным (сейчас продаёт не только свой товар, типа яндекс маркет, чтоли). Магазин при этом не является самым дешёвым, и доставка сейчас в нём удобнее только по той причине, что он основной (раньше не было особо разницы). При всём при этом, можно пойти в соседний и взять там дешевле. Но вот, зараза, к этому (как к основному), вроде и доверия больше. Такие дела.
                          А потому что — удобный фильтр. Потому что список желаемых товаров. Отслеживание поступления. Потому что ± нормальное заполнений характеристик и сравнение по характеристикам. И динамическая подгрузка списка. И много ещё всяких удобных штук, реализованных на клиенте.
                          И потому что можно было не делать так:


                          Лет 10 назад во время распродажи на одном сайте я делал следующее: брал список товаров (250-300 наименований)

                          Это можно было делать сильно проще и удобнее.


                          Основной вопрос не как быть привлекательным для клиента. А как выделиться перед тем магазином, который уже привлекательным является. Просто упростив интерфейс до минимума сегодня уже не сработает. Почему — это другой вопрос. Это, наверное, может сделать только условный монополист, уже состоявшийся магазин с именем и потоком клиентов.


                          cc DrPass логотип не самый удачный пример. Логотип это чистое ЧСВ. Как крутой логин себе придумать или аватарку нарисовать.


                          1. CaptainFlint
                            13.09.2019 12:27

                            Просто упростив интерфейс до минимума сегодня уже не сработает.
                            Есть разница между «упростить интерфейс» и «оптимизировать производительность». Некоторые упрощают так, что остаётся две кнопки, а тормозит на порядок-два сильнее из-за десятков слоёв всяких реактов, вью и прочих ангуляров.


                          1. DrPass
                            13.09.2019 13:04

                            Например, лет с 10 назад у нас (в Украине) была куча однообразных магазинов. Но выстрелил тот, у которого интерфейс был поприятнее, и у которого фильтр удобный.

                            Ну не совсем так. Розетка выстрелила тем, что едва не единственная из всех вложилась в рекламу, причем на ТВ. И в итоге получила огромный бонус в виде тех клиентов, которые раньше вообще ничего не покупали в интернет-магазинах. А тут о-па, цены оказались заметно ниже, гарантия, сервис — всё присутствует. В общем, тут тупо победил тот, кто на старте инвестировал в раскрутку больше денег.
                            Основной вопрос не как быть привлекательным для клиента. А как выделиться перед тем магазином, который уже привлекательным является.

                            Знаете, как среднестатистический клиент интернет-магазина выбирает между ними?
                            Есть три основных пути:
                            1. Заходит на сайт того магазина, где брал что-то в прошлый и понравилось, и сразу покупает там.
                            2. Кто попродвинутее — открывает агрегатор цен вроде Яндекс.Маркета, или Хотлайна в случае Украины, ищет там самое выгодное предложение, покупает по нему.
                            3. Кто про агрегаторы не в курсе, гуглит «купить такую-то штуку», и выбирает самый дешевый вариант из того, что предложил поисковик.
                            При этом во втором и третьем кейсе клиент может уйти из интернет-магазина без покупки, если там кривой/глючный/непонятный интерфейс или он просто сильно тормозит, и перейти к следующему по списку.
                            При этом на дизайнерские изыски клиент вообще никакого внимания не обратит, он даже и не запомнит там ничего. Наоборот, чем интерфейс будет стандартнее (слева категории товаров и фильтр, в карточке товара слева фото, справа кнопка «купить», ниже табы с описанием/характеристиками/отзывами, вверху корзина и т.д.), тем больше вероятность, что он его купит. Соответственно, чем больше сайт магазина вложился в разработку уникального дизайна UI, тем меньше у него будет конверсия :)


                        1. extempl
                          13.09.2019 08:39

                          Касательно мессенджеров достаточно посмотреть на модные ныне стикеры. Это не просто свистоперделки, это свистоперделки в вакууме. Скайп просто сильно устарел, как в своё время icq.


                          1. drWhy
                            13.09.2019 11:08

                            icq не закрывал протокол, хотя был его разработчиком. Была куча совместимых клиентов, Miranda, например. И мессенджер долго пользовался популярностью даже после того, как родным клиентом стало пользоваться совершенно невозможно. Скайп же давно топчется у этого порога.


                            1. khim
                              13.09.2019 12:52

                              icq не закрывал протокол, хотя был его разработчиком
                              Он его как раз закрывал и регулярно менял. В попылках извести сторонние клиенты.

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

                              Убили сами себя, по большому счёту.


                              1. drWhy
                                13.09.2019 13:12

                                Закрывал, менял, но года три назад ещё можно было читать аську клиентом на асме весом в 2 КБ, отсылать правда давно нет. Миранды исправно апдейтили протокол.
                                А сколько есть альтернативных клиентов для Skype?


                                1. khim
                                  13.09.2019 14:01

                                  А сколько есть альтернативных клиентов для Skype?
                                  Для Skype есть только альтернативные мессенджеры. Так что ситауции, когда оффициальным клиентом пользоваться уже нельзя, но народ пересаживается на неоффициальные и продолжает пользоваться у Skype не будет.

                                  В результате народ уходит. Просто уходит.


                        1. extempl
                          13.09.2019 08:41

                          А ещё дешевле разрабатывать, конечно.

                          Скорее имелось в виду, что для того, чтоб сделать быстрый, функциональный и не жрущий ресурсы сайт, нужно влить в него дополнительно денег и времени (то есть, ещё больше денег, уже недополученных от несвоевременного запуска). Или изначально нанять синьоров, которые без потери времени (но естественно, с потерей денег) сделают.


                    1. drWhy
                      12.09.2019 15:57

                      Ещё вы получили уйму шифрования и прорву кликов по кому-то нужным ссылкам.
                      Зато теперь ноут можно с собой не носить — в метро есть 4G, а rdp на домашний сервер можно и с телефона ходить.
                      Можно добавлять в системные требования профиль «Оптимум»: 32 ядра, 128 ГБ ОЗУ.


          1. Eldhenn
            12.09.2019 13:17

            Не надо сказки рассказывать. На 8Мб Чикага _запускалась_. Что-либо серьёзное запустить в ней уже не всегда удавалось.


            1. viklequick
              12.09.2019 13:37

              Я на четырех в оной «чигаге» на спор запускал ворд, а в нем вставлял по OLE эксель. Диском шуршало минут пять, но справилось. Причем весь «тюненх» был в том что я убрал нескучную обоину размером 800 на 600 16-бит, и поставил однотонную заливку.


            1. DrPass
              12.09.2019 13:46

              Не надо сказки рассказывать. На 8Мб Чикага _запускалась_.

              Не надо сказки рассказывать (с). В 1996-м году эти 8Мб были самым обычным объемом памяти для компьютеров. На них Чикага абслютно нормально работала, а OSR2 было тесновато, но тоже работало. По крайней мере, Word 95, Excel 95, Delphi 2 — всё это там достаточно комфортно вертелось.


              1. Ogra
                12.09.2019 20:48

                Ну ни разу не комфортно. Помню я редактирование монографии в Word 95 на 486DX4-100, это было весьма неторопливое занятие.
                TurboPascal вот отлично работал, было дело… ;)


                1. DrPass
                  12.09.2019 22:03

                  До монографии я тогда не дорос, но курсовую на 120 страниц (плюс картинки, таблицы) в Win95 на Pentium-150 с 8 метрами памяти я набирал. 120 страницЭ естественно, вышло за счет того, что мне нужно было исходный текст программы включить в пояснительную записку. Вполне годно было. Хотя уверен, монографией с кучей формул/объектов его было бы несложно ушатать.


                  1. Ogra
                    13.09.2019 04:12

                    Я тогда еще в школе учился, а после школы к маме на работу ходил, ведь там был комп(!). И с версткой монографий помогал, и на паскале учился писать, и в Героев играл…


      1. Fedorkov
        11.09.2019 13:18
        +1

        Линукс даёт очень большой простор для урезания/неустановки ненужных фич. Не DOS, конечно, но всегда можно сделать так, чтобы он летал на самом дохлом железе.


        1. alexkmbkdr1
          12.09.2019 09:49

          Ага, только если не открывать веб браузер, да что там, даже gedit довольно тормозной.


          1. Fedorkov
            12.09.2019 12:21

            Если всё настолько плохо, можете использовать vim/emacs/nano и lynx.
            И это — не предел. Линукс даёт очень большой простор для урезания/неустановки ненужных фич.


      1. WinPooh73
        11.09.2019 13:30
        +1

        Десктопные UI это ещё ничего. Вот кто бы объяснил мне, о чём задумывается компьютер в терминале Макдональдса. Когда тычешь пальцем в кнопку с гамбургерами, а новый экран открывается не быстрее, чем через 2-3 секунды.


        1. mapron
          11.09.2019 14:40

          Мак по 5 сек это еще нормально, бургеркинговский может минут на 5 зависнуть запросто. я однажды решил воспользоваться, он завис, спросил кассира «ну подождите, он у нас несколько минут думает. ну или я могу ваш заказ принять» на мой закономерный вопрос «а что тогда должен экономить этот терминал?» кассир ответа не нашла)


        1. Paskin
          11.09.2019 14:48

          Там КМК просто браузер, скорее всего с выключенным кэшированием. Ждет контента от центрального сервера по какой-нибудь мобильной GPRS связи…


          1. MTyrz
            11.09.2019 15:30

            Который скорее всего еще и крутится на неттопе с первым Атомом, или чем вроде.


        1. LevOrdabesov
          11.09.2019 17:00

          Ну как: идентифицирует вас через фейсрекогнишн на сервере в китае, потом лезет через облако в штатах на ваш банковский счёт на арендованном сервере в нидерландах, и пытается нейросетью (на серваке в грендандии, там дешевле, потому что холодно) выяснить, какой бутер вам ещё предложить, чтобы с вероятностью более 50% вы его таки взяли.
          Надеюсь, что сарказм.


      1. khim
        12.09.2019 00:06

        Выходит, за последние 30 лет подо всеми визуальными красотами мы напрочь забыли, как должен работать UI здорового человека.
        Нет, всё произошло, во-первых, не за 30 лет, а всего лишь за 10-15, а во-вторых «в действительности всё совсем не так, как на самом деле».

        Вот возьмите этот самый Windows 3.1 — под какое железо его разрабатывали? Ну известно, под какое: IBM PC AT, 80286, 6MHz. А DOS и Norton Commander (у вас ведь там на 4я-5я версия, да?) — так и вообще под IBM PC, 8086, 4.77MHz. Кстати даже Windows 3.1 Beta на IBM PC, 8086, 4.77MHz встаёт — поддержку этой железяки выкинули буквально перед самым релизом, когда стало уже понятно, что там оно всё работает как-то неприлично медленно.

        А ваш Olivetty имел проц на 20-25MHz, плюс быструю память, наверняка — то есть как минимум раза в 3-4, чем то, подо что всё это разрабатывалось. И в 10 раз быстрее, чем то, подо что планировалось.

        А в 90е — так разница могла в 10 раз реально быть (80386DX 25MHz vs 486DX4 100MHz — соответственно подо что Windows 95 разрабатывалось и на чём она, обычно, работала).

        Разумеется при такой разнице между ожиданиями и реальностью всё «летало».

        Я кстати не зря про Norton Commander 4-5 вспомнил. Olivetty у меня нет, но есть PCem, он неплохо эмулирует старое железо — вплоть до скорости работы (хотя жёсткий диск там бесконечно быстрый, конечно). Так вот попробуйте запустить Norton Commander 5.5 под эмуляцией IBM PC XT… И вы офигеете от его томознутости. А ведь он, как бы, под это железо, теоретически, «заточен»…

        Так что… Разучились делать нормальные интерфейсы люди где-то в середине 80х (когда железо начало резко ускоряться и лёгкие программы с треском вылетали с рынка, а на их место приходили тормоза… которые пользователи не ощущали как тормоза из-за резкого буквально «взлёта» производительности железа).

        Ну а дальше, когда вся индустрия за десятилетия оказалась заточена строго и исключительно под выпуск тормозных монстров… случилось страшное: где-то с 2005го года скорость однопотока, вдруг, резко «встала» (современный процессор в однопотоке быстрее Pentium 4 на 3.8GHz десятилетней давности раза в 3, от силы… это за 10 с лишним лет!). UI это, в основном, однопоток (даже сегодня), всё сериализовано, ваши 8-10-20 ядер могут отдыхать… Ну и… имеем то, что имеем.

        С точки зрения-то разработчиков почти ничего не произошло: на топовом железа всё это и 20-30 лет назад и сегодня работает «сносно», а вот у пользователей — беда: раньше они задёшево покупали железо, в несколько раз быстрее, чем те «монстры» на которых это всё разрабатывалось… а теперь они и то, что видел разработчик (и подо что всё и «заточил») — не могут себе позволить.


    1. Nalivai
      11.09.2019 15:03

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


      1. balamutang
        11.09.2019 15:26
        +1

        Но мс офис 97 был вполне съедобен. Офисные пакеты вообще обычно средним пользователем используются на 5% от возможностей, что тогда что сейчас. Может в экселе можно было упереться в 16384 строк ограничения против нынешних бесконечных, а так я наверно больше не знаю чем нынешние пакеты лучше чем те.


        1. Whuthering
          11.09.2019 15:42

          Офисные пакеты вообще обычно средним пользователем используются на 5% от возможностей
          Я бы сказал, что на 10%, из которых 5% для всех общие, а вот остальные 5% — для каждого разные :)


        1. wyfinger
          11.09.2019 16:04

          Не повторяйте эту ерунду про 5%. Кто это посчитал, откуда цифры?
          Не знаю как там «средний пользователь», но моя контора, не имеющая отношения к IT постоянно использует в MS Office:
          1. VBA макросы, без него жизни нет;
          2. Поля вроде как здесь;
          3. Условное форматирование в Excel;.
          4. Формулы в последних Office стали нормальными, с ужасом теперь вспоминаю MathType.
          5. Inquire в Excel.

          5% и «средний пользователь», это если 95% пользователей только просматривают документ и им достаточно одной функции — просмотр, но это не работа с документом.


          1. drWhy
            11.09.2019 16:22
            +1

            VBA, поля, автонумерация, условное форматирование были давно.
            Другое дело, что VBA несколько раз с тех пор ломали меняли.
            Inquire не использовал.
            Проблемы с формулами MathType были связаны с интеграцией в офис чужого платного продукта, с перекладыванием лицензионных тонкостей на плечи пользователей. Зато сейчас формулы написаны на Java.

            К ограничению количества строк в Excel, упомянутому balamutang добавлю малое количество доступных для отображения цветов (недавно пришлось делать градиентные заливки в старом Excel).


            1. wyfinger
              11.09.2019 16:46

              Я про использование функций, а не про «давно было».
              А не знаете есть у них нормальный багтрекер? а то давно подрывает на реддине начать сабреддит «What a fuck Microsoft?».


              1. drWhy
                11.09.2019 17:34

                Багтрекер не подскажу, извините.

                А добавить про «давно было» могу.
                Обращался когда-то в техподдержку. Пользователь нечаянно удалил в общей папке подпапку с кучей файлов. Восстановили из архива. Руководство спросило, можно ли запретить удаление. Конечно можно, есть отдельный атрибут NTFS, запрещающий удаление файла!
                Ставлю. Пользователи жалуются, что не могут нормально редактировать файлы офиса. Разбираюсь — при записи отредактированного файла сначала создаётся новый временный файл с уникальным именем, в него сохраняется новое содержимое, затем удаляется старый файл, а новому присваивается его имя. Т.е. присутствует операция удаления файла, которая запрещена. Предыдущая версия офиса позволяла настраивать путь к временным файлам, новая (на тот момент) писала их строго в папку, откуда открывала редактируемый файл (т.е. сетевую).
                Запрашиваю техподдержку, как быть. Есть два оплаченных продукта (офис и ос), в них есть нужная функциональность, но из-за изменений в одном из продуктов корректное совместное функционирование невозможно. После недели переписок ответили, что мой запрос выходит за рамки пользователькой поддержки


                1. popov654
                  12.09.2019 22:48

                  Извините, я вот не очень понял в этой истории — каким образом к проблеме удаления и переименования затем временного файла (я знаю про этот момент, т.к. у меня включен показ скрытых файлов, и я часто редактирую файлы прямо с рабочего стола) относится возможность задавать путь ко временным файлам?.. Потом после закрытия программы офису ведь всё равно придётся удалить и перезаписать оригинальный файл, где бы он ни был.


                  1. drWhy
                    13.09.2019 11:16

                    В сетевой папке появляется ещё один файл (временный), который потом нужно удалить.
                    А исходный файл удалять необязательно, достаточно усечь его до нулевого размера и записать новое содержимое. Противоречия с установленными атрибутами при этом не возникает.
                    А временные файлы вообще странно держать на сетевом диске.


                    1. khim
                      13.09.2019 13:00

                      А временные файлы вообще странно держать на сетевом диске.
                      Поведение, которое описано выше (создать новый файл, записать туда, атомарно переименовать временный файл в файл под старым именем) — это единственный способ атомарно заменить содержимое файла на другое. Потому редакторы так и делают. Разумеется для реализации этой схемы временный файл должен создваться на том же диске, куда записывается документ.

                      А исходный файл удалять необязательно, достаточно усечь его до нулевого размера и записать новое содержимое.
                      Только тогда есть шанс, что вы, в какой-то момент, потеряете свой файл вообще, если сеть отвалится в неподходящий момент. Если вы его усечёте, а новое содержимое записать не успеете. Или вам места не хватит, чтобы это сделать. Или ещё чего-нибудь в этом же духе.

                      P.S. В Linux, кстати, этой проблемы нет. Ибо там всё сделано правильно: файл, который нельзя удалять нельзя ещё, при этом, и менять. Что разумно. А вот не давать возможность файл удалять, но давать возможность его менять… это бред.


                      1. drWhy
                        13.09.2019 13:34

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

                        Потерять один/несколько файлов обидно, но потерять соседнюю невиновную папку с проектом в тысячи файлов чуть обиднее. Конечно, бэкапы никто не отменял.

                        Получить желаемую функциональность всё же было возможно. Если не наследовать права для вновь созданных файлов, временный файл благополучно выполнил бы свою функцию и был бы удалён, а старый файл был бы усечён и переписан новым содержимым, не потеряв атрибутов. И с новым автором, которому можно было бы адресовать вопросы по правомочности замены старого документа. Но не в случае удаления старого файла.


                        1. khim
                          13.09.2019 14:13

                          Получить желаемую функциональность всё же было возможно.
                          Нет.

                          Если не наследовать права для вновь созданных файлов, временный файл благополучно выполнил бы свою функцию и был бы удалён, а старый файл был бы усечён и переписан новым содержимым, не потеряв атрибутов.
                          Ещё раз: нельзя атомарно «усечь и переписать новым содержимым, не потеряв аттрибутив» файл. В принципе. Никак. Microsoft аж даже целую новую файловую систему пытался учудить, чтобы решить эту проблему.

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

                          А вот заменить метаданные (заменить один файл на другой) атомарно — вполне возможно, NTFS это умеет, как и большинство других современных файловых систем.

                          Потерять один/несколько файлов обидно, но потерять соседнюю невиновную папку с проектом в тысячи файлов чуть обиднее.
                          И то и другое прекрасно осуществляется даже после ваших изменений с помощью чудесной программу WipeFile (из комплекта Norton Utilities). Так что я понимаю обе стороны — и вас, пытающихся из имеющися средств накостылять что-то, и разработчиков, которые не хотят тратить время и силы на поддержку странной и редкой комбинации опций, которые реальной безопасности не дают всё равно.


                          1. drWhy
                            13.09.2019 14:46

                            Ну защита делалась не от целенаправленных действий, а от неосторожных действий коллег.
                            За ликбез спасибо.


                      1. sumanai
                        13.09.2019 17:42

                        В Linux, кстати, этой проблемы нет. Ибо там всё сделано правильно: файл, который нельзя удалять нельзя ещё, при этом, и менять.

                        Там просто более бедная система прав.
                        А вот не давать возможность файл удалять, но давать возможность его менять… это бред.

                        Это просто дополнительная возможность.


                        1. khim
                          13.09.2019 18:22

                          В Linux, кстати, этой проблемы нет. Ибо там всё сделано правильно: файл, который нельзя удалять нельзя ещё, при этом, и менять.
                          Там просто более бедная система прав.
                          Что является не недостатоком, а достоинством. Потому что система прав — она, как бы, о безопасности. А безопасность — штука странная. Иногда лучше не иметь возможность вообще, чем иметь её и порождать странные последствия.

                          А вот не давать возможность файл удалять, но давать возможность его менять… это бред.
                          Это просто дополнительная возможность.
                          Вот только эта «дополнительная возможность» порождает проблемы, как мы видим.

                          P.S. Собственно именно это стоит в основе решения разработчиков Chrome регулярно удалять фичи — несмотря на недовольство определённой части пользователей. Потому что бесконечная гибкость ведёт к бесконечному же количеству багов…


                          1. sumanai
                            13.09.2019 19:09

                            Иногда лучше не иметь возможность вообще, чем иметь её и порождать странные последствия.

                            Так может иногда?
                            Вот только эта «дополнительная возможность» порождает проблемы, как мы видим.

                            Не возможность сама по себе, а неверное её толкование и использование.
                            Собственно именно это стоит в основе решения разработчиков Chrome регулярно удалять фичи

                            Собственно потому я им и не пользуюсь. К сожалению, FF идёт туда же.


            1. staticlab
              13.09.2019 01:30

              Зато сейчас формулы написаны на Java

              на Java

              ?


              1. drWhy
                13.09.2019 11:29

                Недавно помогал редактировать формулы в чужой диссертации, сведённой из нескольких документов разных лет, написанных в разных версиях офиса. Для возможности редактирования формул старого MS Equations офис любезно предложил загрузить пакет, который оказался на основе Java. Триальная версия на 30 дней позволила отредактировать документ, но работала на двухъядерном ноутбуке с ssd и 8 ГБ ОЗУ ожидаемо неторопливо.


    1. river-fall
      12.09.2019 23:57
      +1

      win98 сваливалась в синий экран в любой удобный момент и было крайне желательно её переустанавливать время от времени. J3QQ4, ага


      1. DrPass
        13.09.2019 00:02
        +1

        J3QQ4

        … прошло 20 лет, а я помню этот долбаный 25-символьный код наизусть


      1. tundrawolf_kiba
        13.09.2019 14:47

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


  1. dayofadmin
    11.09.2019 09:46

    согласен с автором.
    в winXP есть простая ветка «запретить создание очередности меню»
    отключить «задержку появления меню»
    и в принципе изменить приоритет отклика между приложениями.

    я за Чистый простой быстрый стабильно работающий код.
    Сама концепция накопления «кода от предыдущих операционных систем» навсякий случай играет в новых ОС — жуткую роль.
    а если добавить СОФТ который ещё и «следит за пользователей и сливает данные» то комп какой бы он ни был мощный очень жутко лагает, что бесит


  1. chnav
    11.09.2019 09:54
    +1

    Погуглил AutomaticDestinations и первой же ссылкой
    www.online-tech-tips.com/computer-tips/clear-recent-items-windows-jumplists

    Чтобы избавиться от файлов истории для всех приложений в таскбаре одновременно (а не для конкретного приложения) и запретить их создание в будущем, нужно снять галочку в настройках таскбара. У меня было 73 файла, осталось два (возможно для проводника или ещё чего-то). Перезагрузка не потребовалась. В любом случае я никогда не пользовался этой историей плюс полезно для privacy.

    Спасибо автору и переводчику за наводку!


    1. vis_inet
      11.09.2019 11:44

      Спасибо за ссылку!


  1. tbl
    11.09.2019 10:02

    Вспомнил похожую историю с утилитой grep на GNU/Linux, когда вызов с ключом -i/--ignore-case выполнялся в 50 раз медленнее, чем без этой опции на системах с UTF-8 локалью: для каждого токена из потока входных символов подсистемой gconv из библиотеки glibc выполнялось постоянное чтение файлов /usr/lib/locale/locale-archive и /usr/lib/gconv/gconv-modules.cache. Лечилось c помощью выставления локали в «C»:

    LC_ALL=C grep -i ...


    1. mayorovp
      11.09.2019 10:45

      Так себе "лечилось". Результаты-то в разных локалях могут быть разными...


      1. tbl
        11.09.2019 11:34

        Ну да, но для грепа по латинским идентификаторам/числам/датам в логах этого обычно достаточно.


  1. denisshabr
    11.09.2019 10:28
    +1

    Кто-нибудь скажите тоже, почему простейшее приложение MagicTuneLite для управления яркостью Samsung мониторов, но написанное на .NET, запускается 5 секунд, на мощнейшем компьютере с SSD? Ну и та же претензия к nVidia panel.


    1. VBKesha
      11.09.2019 11:43

      Объяснение просто. Программисты пишут то что им скажут, так как им скажут. А те кто им говорят об этом далеко не всегда понимают что не так и почему.
      И поэтому если сказали возьмешь код вот от того приложения и переделаешь его в управление яркостью, то так программист и сделает не заморачиваясь.
      В итоге имеем монструозные приложения суть которых поменять 1-2 записи в реестре, и сделать стандартный вызов одной двух API функций.


    1. JamboJet
      11.09.2019 12:24

      Такая же претензия и к большинству «железных» приложений от gigabyte, msi, asus и так далее. Какой нибудь простейший монитор размером в 10 мегабайт запускается 5 секунд.


      1. denisshabr
        11.09.2019 14:21

        Это проблема вообще всех .NET приложений? Или бывают быстрозагружаемые .NET приложения?
        Есть какие-то способы ускорить их загрузку, сделать прекомпиляцию с кэшем для уже готового приложения?


        1. Whuthering
          11.09.2019 14:51

          Есть какие-то способы ускорить их загрузку, сделать прекомпиляцию с кэшем для уже готового приложения?
          Есть Ngen.


          1. denisshabr
            13.09.2019 11:46

            Не получается с помощью ngen 4 сделать что-то с MagicTuneLite.exe
            Uninstalling assembly c:\Program Files\MagicTuneLite\MagicTuneLite.exe because of an error during compilation: Failed to load the runtime. (Exception from HRESULT: 0x80131700).
            Failed to load the runtime. (Exception from HRESULT: 0x80131700)


            1. sumanai
              13.09.2019 17:44

              Это автору ПО писать нужно.


        1. oldschoolgeek
          11.09.2019 17:53

          Или бывают быстрозагружаемые .NET приложения?


          Бывают — тот же KeePass. Как верно написали ниже, существенное ускорение старта достигается при помощи штатной для .NET утилиты Ngen.


        1. Goodkat
          11.09.2019 18:54

          Это, скорее, общая проблема железячных контор (добавлю к списку JamboJet ещё Sony и Logitech), которые отдают свой софт на аутсорс кому попало.


          И на .NET и Java можно писать быстрые удобные приложения. Если умеешь.


    1. rdifb0
      11.09.2019 17:59

      Скорей всего там тормозят вызовы API DDC/CI, а не .NET.


  1. staticmain
    11.09.2019 10:34

    Сегодня после обновления на 10ке перестал открываться пуск и панель справа экрана. Попробовал несколько рецептов, ничего не помогло. Благо хоть что-то можно сделать с ПКМ+пуск. А вы говорите файл читать.


    1. Kanut
      11.09.2019 10:38

      Возможно дело в KB4512941


      1. staticmain
        11.09.2019 10:40

        Возможно. Косвенно подтверждается тем, что он стал включаться раз в 10 дольше (с 10-15 секунд теперь минут 6).


        1. ogost
          11.09.2019 12:25

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


          1. balamutang
            11.09.2019 15:31

            Издержки распространения интернета. Раньше с вышедшим кривым софтом надо было бы снова напечатать партию дисков и разослать клиентам (и так с каждым фиксом), поэтому тестировали обычно до упора.
            А сейчас тяп-ляп и в продакшн, потом обновления выкатим если надо. Все стало быстрее, но сырее.


          1. AlxDr
            11.09.2019 18:53

            Гиганты и не скрывают вовсе.

            Зайдите в настройки обновления стандартной Винды и вчитайтесь в то, что там написано. По-умолчанию там стоит пункт «получать непросохшие свежайшие обновки», опционально можно вообще в бета-программу войти. И есть типа «стабильная ветка» для организаций.

            И штатно заморозить обновы на неопределённый срок нельзя.

            По той же причине там неотключаемая телеметрия (по-умолчанию ещё и расширенная) — для тестировочных машин это абсолютно логично.


          1. Loggus66
            11.09.2019 21:27
            +1

            Continuous Delivery же.


            1. ogost
              12.09.2019 04:06

              Больше похоже на Continuous Nightly Build Delivery.


  1. kasiopei
    11.09.2019 13:03

    Это все мелочи. Вот то что драйвера стали весить сотни мегабайт…
    А еще выключение. Я никаких программ не открывал, не обновлял. Система свежая. Почему выключение идет 20 секунд? Почему нельзя просто выключить питание? Почему у линукса так получается?


    1. andreymal
      11.09.2019 13:08
      +1

      Почему у линукса так получается?

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


      1. AnarchyMob
        11.09.2019 23:23

        Почему выключение идет 20 секунд? Почему нельзя просто выключить питание? Почему у линукса так получается?

        Это потому что на Windows, по дефолту, включена опция "быстрая загрузка", если её отключить, в дополнительных настройках электропиоания, компьютер будет выключаться мгновенно, но запуск, соответственно, будет происходить несколько дольше...


    1. drWhy
      11.09.2019 13:29
      +1

      Попробуйте отключить свап файл, и выключение станет заметно быстрее.


      1. sumanai
        11.09.2019 15:41

        Такое ощущение, что у него для безопасности включено зануливание этого файла подкачки.


        1. AlxDr
          12.09.2019 10:40

          Скорее, это работа т.н. «быстрой загрузки», когда система перед выключением скидывает на диск основную часть системной памяти, а при следующем включении загружает её оттуда обратно. Получается такая неполная гибернация (восстанавливается с диска только система, без пользовательского сеанса) и старт получается быстрее.

          Ещё из-за этого бывают разные неожиданности и баги из серии «надо перезагрузить компьютер для завершения установки, но зачем, если вечером я его и так выключу», а на утро после включения оказывается, что система так и не перезагрузилась.

          Ещё Винда куда нежнее сносит приложения, если они запущены на момент завершения работы. Тот же Дебиан, например, настолько быстро сносит их, что при выключении с открытым браузером Firefox там всегда (почти) будет упавшая сессия из-за того, что браузер не успел корректно завершиться.


          1. balamutang
            12.09.2019 15:38

            помнится в ХР был один из твиков который как раз сокращал таймаут завершения приложений, с одной стороны ускорение работы, с другой — всякие подобные артефакты если при выходе из приложения что-то сохраняется


            1. AlxDr
              12.09.2019 15:55

              Да и сейчас можно допилить.

              Штатно:
              — Выключить «быструю загрузку» — не будет скидывать часть памяти на диск.
              — Создать ярлык на «shutdown -t 00 -f» и выключать им, это ещё и помогает пропустить установку обновлений на выходе :)

              Твики:
              Computer\HKEY_CURRENT_USER\Control Panel\Desktop и там подкрутить WaitToKillAppTimeout и ещё кое-что, будет быстрее вышибать приложения.

              Как по мне, польза всего этого сомнительна. Если приложение тормозит на выходе — оно что-то пытается сделать, на его взгляд нужное. Дело конкретно здесь не в «неправильной Винде», а в тормозящих приложениях, которые не могут нормально завершиться. Наверное тоже заняты открыванием какого-то файла сто тысяч раз подряд :)


      1. Ackbar
        12.09.2019 09:49

        Вы проверяли как себя ведет система если отключить файл подкачки? Наблюдал у себя такую картину: i7-8700k и 32 гб оперативной памяти. Приложения стабильно вылетали (особенно игры) из за того что система думала что всю оперативную память заняли (выделили под использование) но фактически было занята половина или меньше. Как это вылечить так и не понял.


        1. drWhy
          12.09.2019 10:16

          Игры играм рознь, конечно. Но да, проверял. Как-то даже на 16ГБ создал ramdisk в 8ГБ, куда копировал игрушку целиком. В итоге на уровень вываливался первым с заметным опережением (ssd были ещё не распространены).
          Конечно, не в любой конфигурации отключение свапа приемлемо, но наблюдаемые варианты (включая довольно прожорливые CAD'ы) работают на ура годами.
          Браузеры в последнее время стали аккуратнее в выделении памяти — раньше система с отключенным свапом могла просто перезагрузиться, не успев даже вывести сообщение о нехватке ОЗУ, сейчас просто вылетает браузер. Возможно, это заслуга менеджера памяти ОС.

          И мониторить выделение памяти никто не запрещает (например, с помощью HWiNFO). Кое-что поддаётся настройке (политика выделения памяти), кое-что можно отключить (Prefetch, Superfetch), сэкономив ценную память от разбазаривания.
          В целом свап — вынужденная мера, позволяющая впихнуть невпихуемое ценой дикой потери производительности и, особенно, отзывчивости.


        1. AlxDr
          12.09.2019 16:02

          Зависит от приложений.
          Если отключить файл подкачки, некоторые вылетают и это не связано с реальным использованием памяти. С другими работает стабильно и быстро.

          Никогда не видел смысла в отключении файла подкачки. Если в системе достаточно памяти, то его наличие ни на что не влияет, но позволяет избегать вот таких косяков. Жалко места на диске? Ну поставьте фиксированный размер в гиг.


          1. drWhy
            12.09.2019 16:07

            Не в месте дело (кроме случаев с 32GB eMMC). Хотя ресурса ssd да, жалко.
            При включённом файле подкачки реактивность системы резко теряется, система начинает напоминать старый москвич с плавным ходом из анекдота.


            1. AlxDr
              12.09.2019 16:27

              При включённом файле подкачки реактивность системы резко теряется

              Я такого по себе не замечал. Экспериментировал в прошлом, но разница была минимальна. Причём чем слабее компьютер, тем меньше заметно (при условии, что дефицита памяти нет).

              Вообще, можете попробовать такой хитрый трюк.

              У меня есть старенький нетбук с XP, 2ГБ оперативки и очень тормозным флеш-накопителем. Так вот я на нём создал RAM-диск на 500МБ оперативки и положил маленький файл подкачки туда — сугубо для совместимости с некоторыми такими капризными программами. Ну и кэши браузеров и ещё кое-какие временные папки туда перенаправил. С внутреннего накопителя подкачку убрал. Вот уж много лет полёт нормальный и работает ощутимо шустрее.

              За применимость этого решения к 10-ке и играм не поручусь.


              1. drWhy
                12.09.2019 16:36

                Ну свап то оказался в ОЗУ. Разница в производительности с hdd не один порядок.


                1. AlxDr
                  12.09.2019 16:47

                  Это единственный случай в моей практике, так как устройство больно уж специфическое :)

                  Что в офисных условиях, что на своих домашних машинках (правда, все они средненькие были по характеристикам, даже когда играл) я не замечал никакой практической разницы между отсутствием свопа и его наличием. А вот на стабильность это влияло. Когда памяти было заведомо достаточно, просто ставил его в 1ГБ, фиксированного размера и на самом быстром диске.

                  Может, в околотоповых конфигурациях это не так, но это странно.


                1. sumanai
                  13.09.2019 03:04

                  Только вот разница между ОЗУ и свопом в ОЗУ тоже есть, и не в пользу свопа.


    1. uaggster
      11.09.2019 16:12
      +1

      Да ладно вам, драйвера.
      Тут уже вирусы по гигабайту весят!
      … почти не утрирую:

      FaTh3R: Trojan.Win32.Chifrax.d – 388 MB
      БЕс слёз aka LazyFao: троянский слон

      bash.im/quote/404875



  1. prishelec
    11.09.2019 13:18

    Была довольно странная ситуация с контекстным меню на wind 10 и у меня.
    Я в свое время заметил, что при выборе пункта меню new (именно на рабочем столе), до отображения субменю проходило до 2-х секунд.
    image
    Также значительно дольше начали открываться приложения.
    К примеру, для IDE Delphi вместо 11-12 секунд требовалось до 24.
    Идентичная ситуация была и с eclipse.
    В итоге моему терпению наступил предел, а любопытство начало «зашкаливать» и захотелось попытаться установить причину происхождения этой «беды».
    Но самое загадочное было то, что весь этот «полтергейст» начинался после прохождения 80-85 секунд после загрузки ОС.
    Сравнивал я и запущенные процессы/службы с двух компов «близнецов», но так и не «победил».
    Все решилось, новой установкой ОС.


    1. SandroSmith
      11.09.2019 14:25

      Все решилось, новой установкой ОС.

      Ну вот, на самом интересном месте (


    1. HardWrMan
      11.09.2019 14:56

      А у меня Win98 часто делала вот так:

      Создать? - Создать!
      image


    1. MTonly
      11.09.2019 19:01

      Страдаю от этой проблемы Windows 10. В установленной на том же компьютере Windows 7 подменю «Создать» открывается мгновенно. В Windows 10 — через несколько секунд, причём, если это подменю единожды открыть, то в следующие разы может открываться уже быстро, хотя не всегда. Переустанавливать не хочется, да и нет гарантии, что внезапно не начнётся снова, особенно учитывая следующую проблему.

      Другая проблема — после обновления Windows 10 до 1809 перестал срабатывать пункт «Открыть» контекстного меню ярлыков файлов и папок.

      P.S. Core i7-3770T + 32 ГБ + SSD + GTX 650 Ti Boost.


      1. prishelec
        11.09.2019 19:34

        Да, иногда после первого открытия, открывалось быстрее.
        Core i7+ 8 ГБ + SSD + GTX 560.
        Я переустановил, вот уже 9 месяцев – полет нормальный.
        Забыл отметить: меню тормозило при открытии мышью. С помощью клавиатуры все было ГУД.


        1. MTonly
          11.09.2019 19:42

          На всякий случай проверил: в моём случае тормозит и при открытии с помощью клавиатуры.


    1. Oplkill
      11.09.2019 23:01
      +1

      Подменю «New» прежде чем отобразиться, опрашивает все программы которые были установлены, которые добавляют свой подпункт. И некоторые из них либо не правильно удаляются(оставляя запись о том, что их пункт меню ещё активен) либо так плохо сделаны, что винда ждёт таймаута и после чего отображает уже это меню. Вот почему это лечится переустановкой виндой или чисткой реестра той ветки отвечающая за программы пункта New


      1. prishelec
        11.09.2019 23:39

        Так-то оно так, только вместе с этим совпали тормоза при открытии приложений.

        Что меня и удивило, так это то, что все идентичное: ПО и ОС были на другом ПК.

        Перед сносом ОС, удалил все обновления и установленное ПО, но баг остался. Самое интересно это что все проявлялось через 80-85 секунд после загрузки ОС. Все как по часам.

        Причем новые процессы/службы в этот период времени не запускались и не завершались. Делал разные логи.

        В итоге «природа» бага оказалась не выясненной.


      1. MTonly
        12.09.2019 03:45

        В Windows 7 этой проблемы нет при таком же наборе установленных программ (одному и тому же человеку закономерно нужны одни и те же программы вне зависимости от версии Windows).


  1. ua30
    11.09.2019 13:19
    -5

    Критиковать чужие, большие проекты всегда очень просто. Сделайте лучше.


    1. Whuthering
      11.09.2019 13:42
      +4

      А вот и бессмертный аргумент «Сперва добейся!» подъехал.


      1. ua30
        11.09.2019 17:07

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

        Очевидный вопрос: почему не собрать десяток таких профи, да не сделать непробиваемую систему? Очевидный ответ: в любой системе можно найти слабые места и недочеты.

        Так что не такие профи делают новые системы лучше. А общий рост доступности технических средств для взлома. И простой маркетинг: «мы лучше конкурентов».

        Как для меня, есть более критичные вещи, чем обработка клика вызова контекстного меню в панели задач Проводника. Это может быть общая стабильность ОС. Скорость выполнения прикладных программ под ее управлением. Удобство разработки самих этих программ. Совместимость между версиями ПО. Хорошая поддержка разного железа.

        Вот честно, для меня написанное совсем не убедительно. Нашли к чему придраться.


    1. mapron
      11.09.2019 14:42
      +2

      Так уже сделали. Причем MS же. Только 2 десятилетиями раньше :)


    1. OnelaW
      11.09.2019 15:02
      -1

      И? Да, критики не смогут создать аналогичное, не будут пробовать, не умеют (нужное подчеркнуть). Но разработчики же может как-то обрисовать для чего это было нужно?
      Даже простой вопрос про перезагрузку после установки обновлений практически ни один разработчик не написал языком приближенным к пониманию рядовому обывателю зачем нужна перезагрузка? Про айтишников речи не идет.
      Про обновления. зачем нужно пихать в единый пакет? И заплатки для критичных узлов и красивости.


      Просто объяснить обычным человеческим языком зачем были нужны подобные действия.
      Может это так трудно? И подобных вопросов куча. Например почему при огромных возможностях которые были заложены в длинный рог и в мелениум, майки превратили продукты в говно.


    1. devpony
      12.09.2019 13:20

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


      1. ua30
        12.09.2019 13:37

        имеет право просить
        Это в лицензионном соглашении указано?


        1. drWhy
          12.09.2019 13:42

          Будьте снисходительны. Конечно не указано, но просить можно.


  1. onground
    11.09.2019 14:40

    За компьютером я работаю быстро, <...> Постоянной помехой на моём сверхмощном домашнем ноутбуке стало медленное закрывание окон на панели задач. <...> Я нажимаю правой клавишей на значок, жду, пока откроется меню, а затем выбираю «Закрыть окно».

    Мамо!

    Похоже автор вообще не осознает, что такое работать быстро. Иначе бы он не пользовался проводником. И мышкой старался бы пользоваться как можно реже.

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


    1. mayorovp
      11.09.2019 15:00
      -1

      На ноутбуке не так-то просто нажимать Alt+F4, если вы имели в виду именно этот способ. Хотя бы потому что в "аккорд" приходится добавлять клавишу Fn, которая ещё и находится чёрт знает где...


      1. sumanai
        11.09.2019 15:46
        +1

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


      1. MTyrz
        11.09.2019 15:47
        +1

        *Верно не для всех ноутбуков.


        1. RH215
          11.09.2019 17:25

          Ещё ни разу не видел ноутбука, где поведение функциональных клавиш бы не настраивалось.


          1. MTyrz
            11.09.2019 20:54

            Тоже верно, просто не все заморачиваются.


          1. DaemonGloom
            12.09.2019 06:17

            Acer Aspire S7. Чтобы нажать F4 — вам надо нажать кнопки Fn и 4. Дополнительного ряда функциональных кнопок на нём просто нет.


            1. K0styan
              12.09.2019 18:19

              А у него нет режима Fn-lock, в котором функциональный ряд переключается в режим Fn1-Fn12 по умолчанию, а регулировки громкости-яркости начинают работать через Fn?



      1. kudryavy
        11.09.2019 15:54

        В Win10 работает Ctrl+W
        А еще для любителей хоткеев есть vi и linux :)
        Правда хоткеи и в средах разработки полезны.
        Да и про IDDQD не стоит забывать
        Что-то меня совсем на оффтоп потянуло


        1. Gryphon88
          11.09.2019 18:38

          В Win10 ещё работает закрытие по двойному клику на миниатюре в левом верхнем углу?


          1. sumanai
            12.09.2019 02:23

            Да.
            Блин, не знал о такой фиче.


            1. vladkorotnev
              12.09.2019 05:43

              Она тянется ещё с Win3.1, а то и раньше, когда отдельной кнопки для закрывания не было.


              1. Fedorkov
                12.09.2019 12:16

                В Хроме тоже долгое время была невидимая миниатюра, но относительно недавно её убрали.


      1. andreyons
        11.09.2019 15:56

        > добавлять клавишу Fn
        Это всё настраивается. Или мультимедиа кнопки по Fn, или без неё.


        1. splitfire
          12.09.2019 09:49

          Не всегда.
          Через 3 дня после покупки пришлось унести в магазин ноутбук Леново, потому что перенастроить поведение Fn клавиш, оказалось невозможно. Это явно было сделано специально, потому что в более дорогих моделях в БИОСе опция была, а в дешевых не было.
          Никаких объективных причин для такой ситуации нет, кроме той, что, по мнению Леново, нищеброды должны страдать.


          1. balamutang
            12.09.2019 15:47

            Аналогично было с нeтбуком Packard Bell, захардкожено в биосе.
            Только он был служебный и в магазин его уже никто не понес. Я проклял тот день когда сел за баранку этого пылесоса (жмешь Alt+F4, а у тебя выключается экран, ведь надо было жать Alt+F4+Fn).


      1. onground
        11.09.2019 16:19

        Если мы говорим про работать быстро, то все неудобные сочетания клавиш (если они «постоянная помеха») следует переназначить на удобные (а то и вообще не заменить скриптом). В винде с этим проблем почти нет. Autohotkey — великая вещь. Если вместо этого мы берем мышку, правую кнопку, ждем контекстное меню и тп — это уже не про быстро, это про не спеша. Попивая чай и почитывая Хабр.


    1. kudryavy
      11.09.2019 18:11

      А какую альтернативу вы можете предложить вместо панели задач? Переключиться на окно при помощи ALT+Tab*n и только потом закрыть?
      Правда, интересно. Ведь насколько я понял, автор закрывает фоновые окна, а не текущее.


  1. Andrey_Rogovsky
    11.09.2019 15:48

    Подозреваю что код написан методом копипаста-стайл одним из индусов, который не шарит в айти, но был вывезен в США своим родственником.
    Впрочем, мы ничего не можем сделать MS за его навоз, который оно скармливает под видом ОС, по этому такой код будет продолжаться.
    Вот если бы какой-то айтишный суд оштрафовал MS на 25% капитала за такие мансы — то MS сразу бы перестала аутсорсить кодерам, которые работают по пять баксов в час.


  1. Akon32
    11.09.2019 16:39
    -2

    Почему?
    1) Всем пофиг. 750мс — не так уж и медленно. Чтобы спозиционировать мышь на кнопке и сделать щелчок, согласно методике GOMS, уходит около 1 секунды. Секундой меньше, секундой больше. Можно показать пользователю весёленькую (на самом деле нет) анимацию отображения меню.
    2) Этого не было в ТЗ. Функции в коде были написаны с лучшими намерениями и, возможно, даже оптимизированы, но затем (лет через 5) появился код, вызывающий эти функции, а еще лет через 5 код оброс тысячами вызовов, и получилось то, что есть. Вместе с пунктом 1, не факт, что ТЗ на оптимизацию появится. Возможно, даже никому не приходило в голову это оптимизировать.


    При оптимизации кода в большинстве случаев целесообразно применять правило "преждевременная оптимизация — корень всех зол", а также имеет смысл оптимизировать то, что больше всего тормозит. Вероятно, находились более приоритетные задачи. Невозможно оптимизировать всё.


    1. DrPass
      11.09.2019 16:53
      +5

      Под «преждевременной оптимизацией» подразумевается «пытаться оптимизировать то, что и так нормально работает». А исправить откровенно дурной код, это вообще не «оптимизация», а «нормальный подход к работе».


      1. Akon32
        11.09.2019 22:07

        Я описал один из вариантов, как при "нормальном подходе к работе" может получиться ужасный в целом результат. Многолетние наслоения кода творят "чудеса", и приходится их переписывать по-нормальному, когда эти "чудеса" начинают всем мешать. И мешать они могут лишь в специфическом окружении, а не у команды разработчиков/тестировщиков, которая может всё сделать правильно (судя по имеющейся у них информации), и вообще остаться в неведении насчёт бага, который проявился лишь через N лет после написания кода.
        В каком-то смысле, это даже прекрасно, что 100000 чтений из файла заняли всего 750мс, а не, скажем, 1000 секунд (это значит, ReadFile() неплохо оптимизирован!). Но именно поэтому баг некритичен и его не исправляют.


        1. DrPass
          11.09.2019 23:58
          +1

          Но именно поэтому баг некритичен и его не исправляют.

          Нет, не поэтому. Просто потому, что в той команде разработчиков предпочитают выкатывать на продакшен сырой код, а потом платить за весь цикл разработки фикса, тестирования фикса, доставки фикса, вместо того, чтобы сразу чуть больше внимания уделить его качеству. Всякие там сложные схемы, как такое могло произойти в результате многолетнего стечения обстоятельств надуманы. Это не единичные случаи, там сейчас везде подобные «стечения обстоятельств».


          1. Wesha
            12.09.2019 08:10
            +1

            Для таких разработчиков даже фирменное лого есть

            image


          1. Akon32
            12.09.2019 11:30
            +2

            чуть больше внимания уделить его качеству.

            Мне кажется, вы путаете качество с идеалом. Насколько я помню, в определениях качества нет требования мгновенной работы, а есть требования к выполнению задач пользователя в определённый срок и с определённой вероятностью успеха. Идеального ПО не бывает. Мне трудно представить компанию, занимающуюся коммерческой разработкой и выпускающую идеальный код. Все останавливаются на "Работает (выполняет задачи пользователя в срок) — и ладно. Не работает — перепишем". И я не вижу причин поступать иначе, кроме как самоцели написания идеального кода.
            А вы видите другие причины?


            1. DrPass
              12.09.2019 12:45

              а есть требования к выполнению задач пользователя в определённый срок и с определённой вероятностью успеха.

              Нет, как раз наоборот. Уложиться формально в норматив спецификации, не заморачиваясь другими вопросами, это не качество, а как раз вышеупомянутый «хуяк-хуяк, и в продакшен». Качество — это соблюдение общепринятых правил оформления кода и построения архитектуры, это когда дизайнеры придерживаются единой концепции построения UI, и когда тестировщики не выпускают наружу релизы с критичными багами, просто потому, что менеджер назначил символическую дату релиза, которую ну никак нельзя сдвинуть, т.к. система мотивации в компании такая, что премию не дадут.
              Вот это — качество. И что самое интересное, это в среднем +10% к срокам разработки, которые решают 90% её проблем.
              А вы видите другие причины?

              Например, удержание доли рынка. Майкрософт сейчас такое может себе позволить. В Windows NT 4 не было заметных невооруженному взгляду багов, хотя там было огромное количество изменений после NT 3.5, да и в каждом сервис-паке их было куда больше, чем в нынешних полугодовых релизах десятки. А разработчиков было в разы меньше. Но тогда им в спину вовсю дышали Unix'ы, и надо было поддерживать культуру разработки. А сейчас этого нет.


            1. drWhy
              12.09.2019 12:50

              Идеального не бывает ничего. По почти идеальное ПО бывает. Дональд Кнут, например, стремится к созданию именно такого ПО, старательно отлаживая свои продукты, привлекая к процессу всех желающих и оплачивая их труд.
              Способ нумерации версий ПО как бы намекает на конечность и сходимость процесса отладки: в качестве номеров версий выбраны константы, в частности, pi и e, версии уточняются в последних знаках. Т.е. функциональность и стабильность ПО достигла зрелости и не предполагает появления мажорных версий.

              Конечно, ожидать от грандов индустрии подобной дотошности в производстве ПО опрометчиво.


              1. Akon32
                12.09.2019 13:14

                Т.е. функциональность и стабильность ПО достигла зрелости и не предполагает появления мажорных версий.

                Странный подход. По-моему, любое ПО когда-нибудь придётся переписывать, т.к. на протяжении лет меняется окружение, пользователи хотят решения новых задач, и рано или поздно и вся архитектура, и весь UI оказываются неудобными, устаревшими и неповоротливыми.


                1. drWhy
                  12.09.2019 13:28

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

                  Неповоротлива в контексте статьи ОС, отвлекающая ресурсы оборудования на действия, о которых её даже не просили.


    1. j_wayne
      11.09.2019 18:32

      Фраза про оптимизацию, к сожалению, часто вырывается из контекста.
      Полная фраза: «We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.»
      Сколько проблем с производительностью получили индульгенцию из-за этой фразы? (ритор. вопрос)
      Критический ли лаг 750мс? Зависит от. Я бы лично предпочел, чтобы UI не лагал так, если это несложно исправить.


      1. Akon32
        11.09.2019 22:42

        Естественно, я тоже предпочитаю, чтобы всё летало, а не лагало. Но считать лаг 750мс критическим, когда только на позиционирование мыши требуется около 1000мс, — это всё-таки ближе к перфекционизму. Вряд ли работа сколь-либо существенно ускорится, если отклик будет мгновенным (это мои предположения, конечно).


        We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%

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

        Разве моя фраза противоречит вашей цитате?
        Сам не очень-то люблю это высказывание, но в контексте статьи речь идёт о том, что разработчики должны были оптимизировать код, как-то предугадав, что у автора он начнёт тормозить (что могло быть совершенно неочевидно!) Полагаю, на момент разработки всё работало быстро (либо достаточно быстро), поэтому никто не стал заранее оптимизировать именно этот участок.


        1. MTyrz
          12.09.2019 19:21

          только на позиционирование мыши требуется около 1000мс
          Одна секунда — это чертова дохренища времени.
          Произнесите медленно слово «четырнадцать» — вот это примерно одна секунда. Я, считая себя очень медленным (и в частности по этой причине не любящий играть в экшны) за это время успеваю позиционировать мышь на вашем нике, открыть ваш профиль в новой вкладке и перейти на нее.

          Я не знаю, какую методику и на какой выборке использовала эта самая помянутая вами GOMS — да честно говоря, и знать не хочу. Подозреваю, что в выборку попали либо новички, которые мышку держат двумя руками для большей уверенности, либо люди с выраженными нарушениями функциональности опорно-двигательного аппарата. И те и другие, впрочем, от ускорения отрисовки контекстного меню страдать не будут.

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


          1. Akon32
            13.09.2019 10:57

            Возможно, эти данные из 80х-90х, когда оптических мышек не было. И там что-то вроде 1.1с даже, но это среднее время на разных пользователях. Для сравнения, кнопка на клавиатуре там оценивается в 0.1с.
            Попробуйте замерить время 10 кликов по произвольным кнопкам в разных частях экрана. У меня получается 12-15 секунд.


            Кстати, при выборе пункта меню, согласно той методике, пользователь только на обдумывание тратит примерно логарифмическое от числа пунктов время (там какая-то более сложная формула, типа "логарифм + константа").


    1. kudryavy
      11.09.2019 19:38

      Вы как-то странно представляете процесс ожидания.
      Процесс ожидания начинается не с позиционирования курсора мышки, а с клика клавишей мыши. Клик — ждем реакции — интерфейс отреагировал. И на мощных машинах отклик интерфейса обычно заметно короче 750 мс. Раздражает именно это отличие в отклике. Везде быстро, а тут медленно.


      1. Akon32
        11.09.2019 22:18

        В моём представлении, пользователь запускает задачи гораздо более долговременные, чем требуется на тормоза интерфейса в данном случае, поэтому 750мс здесь — относительно небольшая задержка. Если бы пользователь только и делал, что кликал мышью по разным кнопкам, он бы тратил 1000мс на позиционирование и клик, и 750мс на тормоза, т.е. около 40% на тормоза максимум. Если кроме кликов и тормозов время тратится на что-то полезное (да хотя бы набор текста или копирование файлов), на тормоза будет тратиться ещё меньший процент времени.


        1. drWhy
          12.09.2019 09:49

          Речь всё же о ста тысячах лишних непродуктивных вызовов.


          1. Akon32
            12.09.2019 11:50

            Уверяю вас, компьютер, способный выполнять миллиарды инструкций в секунду, делает на порядки больше непродуктивных вещей. Процессор офисного компьютера обычно спит 99% времени! Для ряда задач пользователя не нужна ни многозадачность, ни механизм виртуальной памяти, ни хитрые кэши, но они есть и отъедают свои микросекунды и ватты, даже если в конкретной задаче не нужны. Вклад тех 100000 вызовов в общую непродуктивность невелик. В идеале, конечно, такого быть не должно, но на практике — чаще всего проблема некритична.


            1. drWhy
              12.09.2019 13:09

              И пусть процессор спит, на то ему и разработали различные состояния сна. Это пользователя процессор, и его же ssd, и контроллер sata в чипсете тоже, и не нужно их насиловать операциями, которые пользователю не нужны. Ватты, кстати, тоже пользователя. Про отвал моста слышали? Кто виноват, котики пользователя с ютуба или те самые лишние непродуктивные дисковые операции, не позволяющие мосту спать/остывать?

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


              1. Akon32
                12.09.2019 13:37

                И пусть процессор спит, на то ему и разработали различные состояния сна.

                Но тогда пусть и ReadFile() вызывается 100500 раз в секунду, на то её и оптимизировали. Доступ к диску кэширован, а DRAM стерпит. Да, потраченное впустую время и потраченная впустую энергия, но их доля в данном случае мала, чтобы существенно мешать работе. Примерно как доля затрат на виртуальную память, когда она есть, но не нужна.


                Про отвал моста слышали?

                Первый раз слышу. Но это аппаратная проблема. Нормальные системы проектируют так, что никакой говнокод не способен их убить. Иначе система умрёт и от хорошего кода, если ему вдруг потребуется считать 100500 файлов.


                1. drWhy
                  12.09.2019 13:59

                  Дисковый кеш это хорошо, но, как и любой — если им не злоупотреблять. Если одновременно несколько приложений и ОС конкурируют за право использовать кеш, от него будет скорее вред, т.к. на его заполнение тоже нужно время. Тогда нужно вводить приоритеты — это приложение работает с важной (для пользователя БД), ему приоритет. А это ОС хочет своей статистикой позаниматься — пусть подождёт.

                  ОЗУ много не бывает.
                  А вот затраты на свап огромны. Это лишние время, энергия, нагрев, износ.

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


        1. kudryavy
          12.09.2019 11:39

          Разве речь о том, насколько эта задержка мешает работе в реальности?
          Речь о том, насколько эта задержка раздражает на фоне мгновенного отклика интерфейса в других случаях. И о том, насколько оправдана эта задержка: очень похоже на точку зрения "проще купить мощное железо, чем оптимизировать работу софта". Только тормоза видны на мощном железе


          1. sumanai
            12.09.2019 14:15

            мгновенного отклика интерфейса в других случаях

            Это в случае KolibriOS в виртуалке? Ибо у десятки в принципе нет мгновенных реакций.


        1. popov654
          13.09.2019 01:40

          То есть 40 процентов времени в среднем сверху при работе — для вас ерунда?.. Ничего себе.

          У меня, кстати, на свежеустановленной Windows 10 главное меню открывается 900-1000 мс, и это ещё дольше, чем у автора статьи контекстное. Тоже очень раздражает. Да, у меня кастомная сборка, там отключена часть служб — но даже отключение служб не должно по идее приводить к таким лагам базового интерфейса. Да и на официальных сборках это же меню открывалось не сильно быстрее, кажется.


          1. Akon32
            13.09.2019 11:11

            40% не в среднем, а максимум. Если работа заключается не в чистом кликании мышью, процент будет гораздо меньше, может, процентов 5 (это если пользователь вызывает меню каждые 14 секунд). Не думаю, что эти потери больше потерь времени на мелкие отвлечения от работы, чтобы, например, оторвать взгляд от экрана. Сколько раз пользователь вызывает это меню за день? Чаепития или перекуры, если вдруг случатся, наверно переплюнут эти потери от тормозов.


            1. khim
              13.09.2019 13:03

              Чаепития или перекуры, если вдруг случатся, наверно переплюнут эти потери от тормозов.
              А причём тут чаевития и перекуры? Они учитываются работодателем, когда он график работ рассчитывает.

              А 5% рабочего времени — это много. Даже если зарплата $1000 в месяц — это $50 на человека. За год набегает $600. Вполне себе неплохая сумма, которую можно попробовать стрясти через суд.


              1. Akon32
                13.09.2019 13:35

                5% — моя неточная оценка. Можете попробовать более точно подсчитать время, подсчитав число открытий того меню за день и умножив количество на 700мс.
                Стрясти через суд не получится, ибо "software is provided as is". Без этой фразы в стоимость ПО была бы включена стоимость страховки от постоянных косяков, которые неизбежны.


                1. khim
                  13.09.2019 14:22

                  Стрясти через суд не получится, ибо «software is provided as is».
                  Ну понятно, что вначале нужно изменить законы, чтобы эта фраза потеряла силу. Ну или хотя бы не распространялась на платные программы. Если программа ничего не стоит, то я, в общем, понимаю, почему страховка может не быть включена в стоимость. Но почему пакет молока за доллар включает такую страховку, а программа во многие тысячи долларов — нет, я лично понять не могу.

                  Без этой фразы в стоимость ПО была бы включена стоимость страховки от постоянных косяков, которые неизбежны.
                  Ну и было бы неплохо. Потому как если цена — это компенсация за разработку, то непонятно с какого перепугу один и тот же код может продаваться за $20 (Windows Home) и за $6000 (Windows Server).


                  1. Akon32
                    13.09.2019 15:34
                    +1

                    Ну понятно, что вначале нужно изменить законы, чтобы эта фраза потеряла силу. Ну или хотя бы не распространялась на платные программы.

                    Вы когда-нибудь создавали программы, в которых надёжно (математически) доказано отсутствие багов? Создание такого ПО стоит на порядки больше, чем того, что есть. А в том, что есть, всегда есть баги. Это следствие сложности ПО, а не особого разгильдяйства разработчиков.


                    Но почему пакет молока за доллар включает такую страховку

                    Потому, что не каждый пакет молока несёт в себе опасность. Пастеризация гораздо более проста и эффективна, чем отладка кода. Если в молоке осталось небольшое количество бактерий, ваш иммунитет с ними справится или они сами погибнут и вам не навредят. Синтез молока отлажен миллионами лет эволюции, как и ваш иммунитет. Но на разработку и тестирование ПО нет столько времени. Если в ПО есть баги (а они есть, ибо разрабатывать сложно), они не могут сами исчезнуть. ПО запускается много раз, и за тысячи или миллионы запусков кода в разных условиях вы столкнётесь с ошибками.


                    (про страховку)
                    Ну и было бы неплохо.

                    А считать не пробовали? Допустим, разработка ПО стоит М долларов, и вы можете потерять из-за косяков в ПО N долларов, поэтому хотите страховую сумму N. ПО без багов не бывает, поэтому вы найдёте косяк с вероятностью в 100%, и потребуете свои N долларов. Поэтому страховка будет стоить как минимум N долларов (плюс издержки страховой фирмы), а в сумме вы заплатите минимум M+N.
                    Кстати, обсуждаемый косяк багом не является, т.к., скорее всего, никак не влияет на решение задач пользователя, но вы, наверно, истребовали бы страховку или засудили бы производителя ПО. Поэтому никто вам программу не продаст, будете считать на счётах и звонить через телефонисток.


                    за $20 (Windows Home) и за $6000 (Windows Server)

                    В них есть различные компоненты, что очевидно всем, кто использовал Windows Server.


                    1. tundrawolf_kiba
                      13.09.2019 17:24

                      Вы когда-нибудь создавали программы, в которых надёжно (математически) доказано отсутствие багов? Создание такого ПО стоит на порядки больше, чем того, что есть.

                      Ну и более того — такой тип статического тестирования далеко не всегда применим.


                    1. khim
                      13.09.2019 18:10

                      Вы когда-нибудь создавали программы, в которых надёжно (математически) доказано отсутствие багов?
                      Создавал.

                      Создание такого ПО стоит на порядки больше, чем того, что есть
                      Может и на два, да.

                      А в том, что есть, всегда есть баги. Это следствие сложности ПО, а не особого разгильдяйства разработчиков.
                      Причём тут всё это? Да, и в процессорах и в программах и во всех других вещах есть баги. Пока они не вызывают финансового ущерба — от них ни горячо, ни холодно.

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

                      Но на разработку и тестирование ПО нет столько времени.
                      Ну миллионов лет на разратоку и тестирование действительно нет, но потратить на это дело в 2-3-10 раз больше, чем тратится сейчас никто, в сущности, не мешает.

                      Потому что большая часть ПО, которое создаётся сегодня никаких реальных проблем не решает, а, в лучшем случае, удовлетворяет чьи-то амбиции.

                      ПО запускается много раз, и за тысячи или миллионы запусков кода в разных условиях вы столкнётесь с ошибками.
                      И пока их немного — страховая компания их вполне оплатит.

                      ПО без багов не бывает, поэтому вы найдёте косяк с вероятностью в 100%, и потребуете свои N долларов.
                      А вот это — вряд ли. Никого не волнуют абстрактные баги. Так же как и никого не волнует наличие бактерий в молоке если вас не «несёт», так и наличие багов, которые никак не проявляются — вас тоже не волнует.

                      за $20 (Windows Home) и за $6000 (Windows Server)
                      В них есть различные компоненты, что очевидно всем, кто использовал Windows Server.
                      И сложность этих компонентов отличается на два с лишним порядка? Не смешите мои тапочки.

                      Разница в цене, очевидно, исходит из того, что с помощью одного из этих продуктов я буду писать письмо любимой бабушке, а с помощью другого — зарабатывать деньги… вот только почему при этом туда не включена страховка за то, что я этих денег, возможно, заработать и не смогу? Из-за недоработок вот в этом вот пакете ПО ценой в неплохую месячную зарплату работника?

                      Поэтому никто вам программу не продаст, будете считать на счётах и звонить через телефонисток.
                      Вот только не надо FUD разводить. Конечно если выбор у производителей ПО будет — «развод лохов на деньги» или «честное выполнение своих обещаний», то «развод лохов» всегда выигрывает. Но для того и существуют законы, чтобы этого не происходило.

                      Если производителям запретить брать деньги за своё ПО без соотвествующего страхования — то они предпримут все необходимые действия для того, чтобы ошибок не было.

                      Это, в общем, не так и сложно: 99% кода в создаваемом сегодня ПО — это пердосвистелки, которые, по большому счёту, для функционирования ПО не нужны вообще. Если они будут выпилены и создающие их разработчики займутся поиском и исправлением ошибок — то всем будет лучше.

                      Почему? Да потому что чем дальше в лес, тем больше ошибки в ПО — это не о потерянных деньгах, а человеческих жизнях.

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

                      Ну вот так же, как с порядком в Интернете: не захотели обеспечить порядок «по хорошему» — получите решение «по плохому» (и не надо думать, что «законом Яровой» всё ограничится).


                      1. qw1
                        13.09.2019 21:06

                        Хотите ПО с гарантиями — никто лично вам не мешает профинансировать такую разработку. А текущие пользователи даже в 2 раз дороже не захотят платить, не говоря уже о 10-100. Зачем решать за всех.

                        Ну вот так же, как с порядком в Интернете: не захотели обеспечить порядок «по хорошему» — получите решение «по плохому» (и не надо думать, что «законом Яровой» всё ограничится).
                        Наглядно видно, что вся эта ерунда не работает. Террористы так же спокойно координируют свои действия хоть через СМС, обычные юзеры качают с заблокированного рутрекера и т.п. Зачем реально были приняты регулирующие интернет законы — чтобы попилить бюджет (у нас) и пощипать заокеанские корпорации (в Европе).


                        1. khim
                          14.09.2019 00:21

                          Зачем решать за всех.
                          По той же причине, по которой «за всех» решают что можно называть молоком (а что — «молочным продуктом»), заставляют писать цену за килограмм (в Европе, по крайней мере) и прочее.

                          А текущие пользователи даже в 2 раз дороже не захотят платить, не говоря уже о 10-100.
                          Дык они и дома будут покупать из песка, если им волю дать. А потом плакать, когда они развалятся и родственники только нос и большой палец из-под руин смогут вытащить.

                          Террористы так же спокойно координируют свои действия хоть через СМС, обычные юзеры качают с заблокированного рутрекера и т.п.
                          Насчёт террористов не знаю, а рутрекер властям зачем? Сделать так, чтобы можно было сказать «мы сделали всё возможное», когда зарубежные праообладатели будут их «доставать» — это одно, а пытаться тратить время и силы на то, на что им, в принципе, наплевать — совсем другое.

                          Наглядно видно, что вся эта ерунда не работает.
                          Когда надо — работает. И Telegram не спасает.


                          1. qw1
                            14.09.2019 09:23

                            У ограничительных законодательных инициатив большая низовая поддержка.

                            С трудом можно представить, что вы соберёте критичную массу пользователей, требующих ответственный подход к разработке программ. Но этого мало. Нужно, чтобы к движению присоединялись ещё и программисты. Типа такие «Я написал тетрис без багов. Но вы можете подать на меня в суд и отсудить последнюю квартиру, если моя программа вам причинит ущерб, я ведь активист движения ответственного программирования, поэтому буду только `за`».


  1. MTonly
    11.09.2019 19:41
    -1

    Это фиаско, братан


  1. DonArmaturo
    11.09.2019 20:53

    Как-то добросовестный сотрудник "отдела техподдержки" при замене мышки установил для неё ПО с дискетки, шедшей вместе с мышкой. Там какие-то красивости были обещаны. Комп стал очень задумчивым: мышиный софт по каждому клику поднимал мышиную возню с запуском своих dll etc. Вычислили файловым монитором и отправили мышиное "файло" в небытие.
    А ещё забава с удалённым доступом/управлением через спутник. Независимо от скорости пинги очень большие (380-600 миллисекунд). А на каждую операцию по открытию файла или запуска/останова службы через оконные интерфейсы Винда делает множество запросов по безопасности и прочее. Для каждого своя сессия. А ее надо открыть-закрыть. Все просто слетает по тайм-ауту.


  1. MacIn
    11.09.2019 21:47
    +1

    750мс еще ладно.
    Меня в 10 раздражает невнятное переключение фокуса приложений. Открыто 5 приложений, жмешь WinD — ноль на массу. Переключился мышкой на другое приложение — WinD работает. Или есть приложение с несколькими плавающими окнами; переключаешься с него на второе — а пара окон первого приложения остаются на экране, поверх второго, которое в фокусе. Отодвигаешь это плавающее окно — фокус переключается, разумеется, на первое приложение.
    Те же самые приложения в Win7 работали без нареканий.


  1. seven_hh
    12.09.2019 07:44

    Хорошо что кто-то про это написал. Теперь я спокоен что долгие годы также страдал и не сделал подобный анализ.


  1. perfect_genius
    13.09.2019 00:40

    Интересно, а что происходит в ReactOS?
    Неужели её разработчикам приходится хвататься за голову и как-то заставлять себя сознательно повторять все эти решения создателей Микрософт?


    1. sumanai
      13.09.2019 03:08

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


  1. drWhy
    13.09.2019 14:39

    Вопрос в контексте контекстного меню.
    Есть определённое ПО, запускающееся с DVD диска и открывающее с него же данные. На диске присутствует файл «autorun.inf», в секции [autorun] которого присутствует команда
    «OPEN=autorun.exe /autorun». Причём при запуске autorun.exe без ключа /autorun происходит ненужная установка ПО в систему, а с ключом — искомый запуск ПО и загрузка данных для просмотра.

    Ранее присутствие файла «autorun.inf» на CD/DVD дисках всячески приветствовалось, что не только привело к его распространённости, но и сделало возможным писать программу таким образом, что действие по умолчанию, без указания ключей, будет не соответствовать необходимому в большинстве случаев.
    При этом в актуальных версиях Windows файл «autorun.inf» стал изгоем, ибо потенциально небезопасен, а определить опасность конкретного экземпляра файла ОС не берёт на себя труда, легче просто запретить.

    При этом расширение файла «inf» исходно было выбрано неудачно, ибо обычно присуще конфигурационным файлам установщиков драйверов и программ. Стандартным действием для данного расширения является «Установить», естественно, не подходящее для данного случая. Есть в контекстном меню ещё действие «Открыть», по которому файл открывается в блокноте, что также для обычного пользователя не приближает запуск нужной программы с нужным ключом.
    Раньше в контекстном меню были пункты «Проводник» (открывавший список файлов) и «Открыть» (запускавший действия, описанные в «autorun.inf»).

    Вопрос:
    1. Кто виноват. Понятно, всё удобное обычно небезопасно и наоборот. Но всё же, если казавшуюся удобной, но оказавшуюся небезопасной фичу пришлось удалить, но есть база ПО, нуждающегося в этой фиче, то не является ли необходимым предоставить пользователю какой-то разумный способ всё же запустить добропорядочную программу с правильным ключом?
    2. Что делать. Предложите, пожалуйста, способ, как объяснить пользователю, как всё же запустить, и почему в прошлый раз было всё хорошо, и почему в этот раз иначе.
    И главное, как не избежать неудачных выборов, способных в дальнейшем привести к подобным неудобствам.


    1. DrPass
      13.09.2019 15:37

      1. Кто виноват. Понятно, всё удобное обычно небезопасно и наоборот. Но всё же, если казавшуюся удобной, но оказавшуюся небезопасной фичу пришлось удалить, но есть база ПО, нуждающегося в этой фиче

      Вторая половина 2019-го года. Где вы вообще актуальный софт с DVD сейчас найдёте, равно и привод для его чтения, кроме как на барахолке?
      2. Что делать. Предложите, пожалуйста, способ, как объяснить пользователю, как всё же запустить

      Сделайте на рабочем столе ярлык для запуска с правильными параметрами. Или перезапишите сам диск, внеся изменения в его образ, сделав там в корне ярлык для запуска с правильными параметрами.


      1. drWhy
        13.09.2019 16:31

        Вы удивитесь, но в некоторых отраслях DVD актуален и заменить пока нечем, стоимость болванки остаётся заметно ниже стоимости флешек.
        Ну и лицензионный контент. У одного знакомого есть коллекция узкоспецифичных видеоуроков, выпускавшихся совсем небольшим тиражом.

        Сделать ярлык можно, но пользователю нужно будет объяснить, что такое путь к файлу. Быстрее, конечно создать ярлык за него. Но если пользователь перейдёт на другой компьютер, операцию придётся повторить.
        Нужна инструкция типа «Делай раз».

        Всё же, DVD/BD не совсем дремучий legacy, как скажем сканер на lpt порту или факс-бумага; оборудование и расходники всё ещё производятся, продаются и потребляются. И просто взять и запретить автозапуск как-то неправильно.
        Если рассматривать компьютер с ОС как законченное бытовое устройство, то запрет автозапуска диска ведёт к коренному изменению потребительских свойств.


        1. DrPass
          13.09.2019 17:06

          Вы удивитесь, но в некоторых отраслях DVD актуален и заменить пока нечем, стоимость болванки остаётся заметно ниже стоимости флешек.

          А что за отрасли, если не секрет? Раньше DVD активно использовались, например, в издательской деятельности, в рекламной и т.д., где шёл активный обмен крупными файлами макетов, фото, печатки, видео и т.д. Ну а сейчас-то их там уже нет и в помине. Флешка на 8Гб стоит столько же, сколько десяток одноразовых болванок, к тому же несколько гигабайт можно спокойно через файлообменник перебросить.
          то запрет автозапуска диска ведёт к коренному изменению потребительских свойств.

          Я бы сказал, является дополнительным стимулом отправить эту технологию на свалку легаси :)


          1. drWhy
            13.09.2019 17:18

            Медицина, например. Пациентам во многих случаях результаты выдаются на болванках. А пациент может передать диск лечащему врачу, при этом сам не быть пользователем ПК вообще.
            Да, любые данные можно передать, скажем, по электронной почте. Но это может стоить дополнительных телодвижений.


            1. DrPass
              14.09.2019 03:08

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

              Честно, я в медицине не специалист, а пользователь. Но в силу возраста уже достаточно активный пользователь, к сожалению. Но вот я ничего не знаю про существование клиник, где какие-то результаты чего либо пишут на болванки. Лаборатории сбрасывают анализы на почту, и в онлайне выкладывают. Клиники — точно так же, плюс на флешку пишут при желании. МРТ — на флешку. Даже в старой доброй районной больничке, там где ещё бумажные карточки в регистратуре в шкафах стоят, и то есть онлайновая система.
              Да, любые данные можно передать, скажем, по электронной почте. Но это может стоить дополнительных телодвижений.

              По сравнению с вознёй с записью на болванку? Да ну.
              А пациент может передать диск лечащему врачу, при этом сам не быть пользователем ПК вообще.

              Ну а флешка чем плоха? Это же в тысячу раз удобнее, да и дешевле в итоге.


  1. transcengopher
    13.09.2019 15:29

    На моём компьютере с Windows 10 два монитора, и основным выбран левый. Как результат, модный трей уведомлений (как на Android, да) находится на левом мониторе, в правом нижнем углу. Так вот, если быстро кликать по трею, можно наблюдать, как шторка уведомлений, не сворачиваясь и не уменьшаясь в размерах, уезжает на правый монитор, и только потом что-то "просыпается", и шторка пропадает.
    Асинхронный код /s