Почему для открытия меню Windows читает один файл сто тысяч раз? +170




«Проводник тратит 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
    /#20607805 / +2

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

    • viklequick
      /#20610215 / -1

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

      • vis_inet
        /#20610445

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

        • drWhy
          /#20610589 / +1

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

          • vis_inet
            /#20610839

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

          • Arris
            /#20615665

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

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

            • drWhy
              /#20615861

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

              • Whuthering
                /#20616691 / +1

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

                • drWhy
                  /#20616735

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

                • Arris
                  /#20616957

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

            • vlivyur
              /#20616219

              Это ж консоль, один в один 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  

              • Arris
                /#20616991

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

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

    • iingvaar
      /#20610569

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

      • Mana_Banana
        /#20610941 / +2

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

        • aakolov
          /#20612113 / +1

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

          • HardWrMan
            /#20612167

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

      • site6893
        /#20611091

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

    • x67
      /#20610611

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

    • maxzhurkin
      /#20612563

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

  2. TargetSan
    /#20607807

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

  3. fingoldo
    /#20607991 / -1

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

    • Barbaresk
      /#20608155

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

      • RH215
        /#20610387

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

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

        • Barbaresk
          /#20616361 / +3

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

    • AllexIn
      /#20608631 / +4

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

      • justboris
        /#20609427

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

        • Kanut
          /#20609449 / +2

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

          • justboris
            /#20609455 / +6

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

          • mayorovp
            /#20609885

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

            • Kanut
              /#20609921

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

              • toxicdream
                /#20610563

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

            • oleg_go
              /#20612147

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

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

              • sumanai
                /#20612895

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

              • justboris
                /#20612971

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

      • vics001
        /#20610015

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

        • x67
          /#20610697

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

        • kluwert
          /#20613697

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

          • Arris
            /#20615725 / +1

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

    • GoldJee
      /#20608669 / +4

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

      • rexen
        /#20610185 / +1

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

        • KvanTTT
          /#20610277

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

        • DarkGenius
          /#20610985 / -1

          Пруфы будут?

          • rexen
            /#20612137 / +6

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

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

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

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

            • ardraeiss
              /#20620243

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

      • Fenzales
        /#20611153

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

    • sumanai
      /#20609985 / +4

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

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

      • Whuthering
        /#20610041 / +1

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

      • NetBUG
        /#20610893 / +1

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

      • perfect_genius
        /#20612249

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

        • quwy
          /#20612535 / -1

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

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

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

          • deseven
            /#20612705

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

            • quwy
              /#20612985

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

              • khim
                /#20614365

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

                • Arris
                  /#20615747

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

                  • khim
                    /#20615775

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

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

                    • Kanut
                      /#20615825

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

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

                      • khim
                        /#20615849

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

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

                        • Kanut
                          /#20615925

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


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


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


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

                          • popov654
                            /#20616935

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

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

                    • Arris
                      /#20616923

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

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

                      • khim
                        /#20617349

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

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

                        • Kanut
                          /#20618179

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

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


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

                          • khim
                            /#20619097

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

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

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

                            • Kanut
                              /#20619749

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


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

                • red75prim
                  /#20617061

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


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

                  • quwy
                    /#20621143

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

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

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

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

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

                    • khim
                      /#20621323

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

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

                      • quwy
                        /#20621389

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

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

                        • khim
                          /#20621427

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

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

                          • quwy
                            /#20621459

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

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

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

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

                          • drWhy
                            /#20621489

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

                            • quwy
                              /#20621859

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

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

              • popov654
                /#20616913

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

                • quwy
                  /#20617029

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

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

            • viklequick
              /#20614625 / +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…

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

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

              • popov654
                /#20616965

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

                • viklequick
                  /#20617079

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

          • sumanai
            /#20612897

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

            • DrPass
              /#20612919 / +1

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

            • quwy
              /#20612989

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

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

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

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

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

              • qw1
                /#20613107

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

                • quwy
                  /#20615855

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

                  • qw1
                    /#20616175

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

                    • quwy
                      /#20617009

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

                      • qw1
                        /#20620249

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

                        • red75prim
                          /#20620619 / +1

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

                          • quwy
                            /#20621175

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

                            • qw1
                              /#20621771

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

                              • quwy
                                /#20621823

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

                              • quwy
                                /#20621851

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

                                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.

              • drWhy
                /#20613397 / +1

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

                • quwy
                  /#20615913

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

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

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

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

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

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

                  • drWhy
                    /#20615985 / +1

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

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

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

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

                    • quwy
                      /#20616207

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

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

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

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

                      • drWhy
                        /#20616753

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

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

                        • quwy
                          /#20616975

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

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

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

                          • drWhy
                            /#20618221

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

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

                            • quwy
                              /#20620957

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

                              • drWhy
                                /#20621511

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

                          • qw1
                            /#20620487

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

                            • quwy
                              /#20621017

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

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

                              • khim
                                /#20621117

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

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

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

                                • quwy
                                  /#20621221

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

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

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

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

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

                                  • Wesha
                                    /#20621417

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

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

                                    • quwy
                                      /#20621473

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

                                      • qw1
                                        /#20621697

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

                                      • Wesha
                                        /#20621719 / +1

                                        Напоминает


                                        тот анекдот

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

                                • quwy
                                  /#20621261

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

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

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

                                  • khim
                                    /#20621351

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

                                    • quwy
                                      /#20621399

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

                                      • khim
                                        /#20621433

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

                                        • quwy
                                          /#20621477

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

                                          • khim
                                            /#20622129

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

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

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

                              • qw1
                                /#20621699

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

                                • quwy
                                  /#20621871

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

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

                                  • khim
                                    /#20622133 / +1

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

                                  • qw1
                                    /#20622689

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

              • Naves
                /#20614591

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

                • drWhy
                  /#20614661

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

              • viklequick
                /#20614749 / +1

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

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

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

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

                • quwy
                  /#20616187

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

                  • viklequick
                    /#20616825

                    Это для 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 назад пытался делать нечто похожее, чтобы без сервиса и агента в трее, но выглядело это трюкачеством :-)

                    • quwy
                      /#20621425

                      Отвечу одной цитатой из 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.

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

                      • viklequick
                        /#20621671

                        handle to the top-level window

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

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

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

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

                        • quwy
                          /#20621813

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

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

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

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

                          • viklequick
                            /#20621993

                            Каюсь, кода не дам, нет времени и возможности сейчас. Но вообще-то в 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;

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

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

                • qw1
                  /#20616195 / +1

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

                  • viklequick
                    /#20616775

                    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…

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

      • K10
        /#20613461

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

        • Halt
          /#20613571 / +1

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

          • quwy
            /#20616229

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

            • vlivyur
              /#20616517

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

              • qw1
                /#20616685

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

            • popov654
              /#20617073

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

      • popov654
        /#20616879

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

        • viklequick
          /#20617063 / +1

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

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

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

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

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

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

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

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

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

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

          • popov654
            /#20617101

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

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

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

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

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

            • viklequick
              /#20617309

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

            • drWhy
              /#20618355

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

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

      • VioletGiraffe
        /#20619839

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

    • ProstoTyoma
      /#20620385

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


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

  4. Dmitri-D
    /#20608159

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

    • AllexIn
      /#20608633

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

      • Dmitri-D
        /#20611253

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

  5. ALF_Zetas
    /#20608161

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

  6. Yastreb1332
    /#20608179

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

    • sumanai
      /#20609989

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

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

        • drWhy
          /#20615163

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

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

            • drWhy
              /#20620595

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

              • sumanai
                /#20620889

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

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

  7. aik
    /#20608519

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

  8. vis_inet
    /#20608547

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

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

  9. HardWrMan
    /#20608561

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

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

    • popov654
      /#20617119

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

      • HardWrMan
        /#20617767 / +1

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

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

  10. nerudo
    /#20608653 / +1

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

    • chnav
      /#20608725

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

      • nerudo
        /#20608737

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

      • balamutang
        /#20609149

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

        • drWhy
          /#20609279

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

      • Dvlbug
        /#20610045 / +1

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

        • SandroSmith
          /#20610493

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

      • Kwisatz
        /#20611089

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

        • site6893
          /#20611169 / -1

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

          • Kwisatz
            /#20611233 / -3

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

            • firedragon
              /#20612303

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

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

              • Kwisatz
                /#20612517

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

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

            • site6893
              /#20615671

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

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

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

              • Wesha
                /#20615981 / +1

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


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

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

                • site6893
                  /#20620629 / +1

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

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

  11. chnav
    /#20608719 / +1

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

    • ZUZ
      /#20608803 / +1

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

      • chnav
        /#20608897

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

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

        • HardWrMan
          /#20609215

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

          • chnav
            /#20609307

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

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

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

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

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

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

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

            • HardWrMan
              /#20609431

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

            • CaptainFlint
              /#20609529

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

            • ALF_Zetas
              /#20609735

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

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

              • chnav
                /#20610111

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

                • Kanut
                  /#20610153

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


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


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

                  • mayorovp
                    /#20610467

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

                    • Kanut
                      /#20610567

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

                    • drWhy
                      /#20610625

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

                      • mayorovp
                        /#20610687

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

                        • drWhy
                          /#20610785

                          shell=far.exe )

                          • mayorovp
                            /#20610847

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


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


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

                            • drWhy
                              /#20611041

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

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

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

                            • Whuthering
                              /#20611045

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

                              • mayorovp
                                /#20611097

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

                                • drWhy
                                  /#20611375

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

                                  • mayorovp
                                    /#20611385 / +1

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

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


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

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

                            • HardWrMan
                              /#20612171

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

                            • aleksandy
                              /#20612273

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

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

                            • CrazysAlien
                              /#20613465

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

                    • qw1
                      /#20612307

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

                  • MTyrz
                    /#20610473 / +1

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

                    • Kanut
                      /#20610539

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

                      • CaptainFlint
                        /#20610669

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

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

                        • Kanut
                          /#20610711

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


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

                          • MTyrz
                            /#20610915

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

                            • algot
                              /#20617451 / +1

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

                              • MTyrz
                                /#20617503

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

                          • CaptainFlint
                            /#20611021

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

                            • Kanut
                              /#20611099

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


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

                              • karabas_b
                                /#20611791

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


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

                      • MTyrz
                        /#20610883

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

                        • Kanut
                          /#20610943

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

                          • MTyrz
                            /#20611009

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

                          • CaptainFlint
                            /#20611053

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

                            Скрин
                            image

                            • Kanut
                              /#20611149

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

                            • Kanut
                              /#20611917 / +1

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


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

                    • drWhy
                      /#20610635

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

                      • Whuthering
                        /#20610685 / +1

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

                        • mayorovp
                          /#20610721

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

                      • HardWrMan
                        /#20610689

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

                        • vlivyur
                          /#20612003

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

                  • oldschoolgeek
                    /#20611695 / +1

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


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

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

            • viklequick
              /#20610503

              Примерный сегодняшний алгоритм действий Винды, как я его понимаю.
              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.

              • drWhy
                /#20610743 / +2

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

                • viklequick
                  /#20610977 / +1

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

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

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

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

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

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


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

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

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

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

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


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

                  • drWhy
                    /#20611141

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

                    • viklequick
                      /#20612009

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

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

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

                • sumanai
                  /#20611017 / +1

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

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

                  • DrPass
                    /#20611143

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

                  • drWhy
                    /#20611213 / +2

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

                    • mayorovp
                      /#20611381

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

                      • drWhy
                        /#20611493

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

                    • sumanai
                      /#20611485

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

                      • mayorovp
                        /#20611541 / +2

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

                        • Fly3110
                          /#20612707

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

                          • drWhy
                            /#20613401

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

                    • Goodkat
                      /#20611869 / +1

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

                • dartraiden
                  /#20611677

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

  12. Naves
    /#20608941

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

    • Kanut
      /#20609103

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


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

      • burzooom
        /#20609139

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

        • Kanut
          /#20609161

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

          • domix32
            /#20609445 / -2

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

          • burzooom
            /#20610331

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

      • questor
        /#20609607

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

    • aik
      /#20609395

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

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

      • Naves
        /#20609701

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

        • aik
          /#20610053

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

      • LevOrdabesov
        /#20611487 / +1

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

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

        • drWhy
          /#20611569

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

          • LevOrdabesov
            /#20611903

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

        • dartraiden
          /#20611697

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

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

        • aik
          /#20611793

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

          • LevOrdabesov
            /#20611923

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

    • realspinner
      /#20609587 / +1

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

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

      • balamutang
        /#20609747

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

        • vis_inet
          /#20610083

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

        • memba
          /#20610483

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

          • Goodkat
            /#20611899

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

            • extempl
              /#20613167

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

              • drWhy
                /#20613435

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

                • extempl
                  /#20613847

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

              • F0iL
                /#20613875

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

                • extempl
                  /#20613889

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

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


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

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


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

                  • F0iL
                    /#20613957

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

                • drWhy
                  /#20614369

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

                  • F0iL
                    /#20615001

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

                    • drWhy
                      /#20615071

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

                      • F0iL
                        /#20615657

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

              • sumanai
                /#20614985

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

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

                • extempl
                  /#20615201

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

                  • khim
                    /#20615467 / +5

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

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

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

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

                    • extempl
                      /#20615509 / +1

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

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

                      • DrPass
                        /#20617035

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

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

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

                      • khim
                        /#20617345

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

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

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

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

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

                        • extempl
                          /#20617827

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


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

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


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


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

                          • CaptainFlint
                            /#20618991

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

                          • DrPass
                            /#20619187

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

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

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

                        • extempl
                          /#20617835

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

                          • drWhy
                            /#20618549

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

                            • khim
                              /#20619111

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

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

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

                              • drWhy
                                /#20619231

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

                                • khim
                                  /#20619591

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

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

                        • extempl
                          /#20617839

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

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

                    • drWhy
                      /#20615689

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

          • Eldhenn
            /#20614633

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

            • viklequick
              /#20614775

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

            • DrPass
              /#20614823

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

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

              • Ogra
                /#20616849

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

                • DrPass
                  /#20617047

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

                  • Ogra
                    /#20617581

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

      • Fedorkov
        /#20610117 / +1

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

        • alexkmbkdr1
          /#20613469

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

          • Fedorkov
            /#20614297

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

      • WinPooh73
        /#20610191 / +1

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

        • mapron
          /#20610621

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

        • Paskin
          /#20610671

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

          • MTyrz
            /#20610989

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

        • LevOrdabesov
          /#20611497

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

      • khim
        /#20612731

        Выходит, за последние 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 лет назад и сегодня работает «сносно», а вот у пользователей — беда: раньше они задёшево покупали железо, в несколько раз быстрее, чем те «монстры» на которых это всё разрабатывалось… а теперь они и то, что видел разработчик (и подо что всё и «заточил») — не могут себе позволить.

    • Nalivai
      /#20610763

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

      • balamutang
        /#20610947 / +1

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

        • Whuthering
          /#20611051

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

        • wyfinger
          /#20611197

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

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

          • drWhy
            /#20611287 / +1

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

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

            • wyfinger
              /#20611427

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

              • drWhy
                /#20611673

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

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

                • popov654
                  /#20617143

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

                  • drWhy
                    /#20618619

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

                    • khim
                      /#20619161

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

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

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

                      • drWhy
                        /#20619401

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

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

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

                        • khim
                          /#20619667

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

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

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

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

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

                          • drWhy
                            /#20619833

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

                      • sumanai
                        /#20620915

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

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

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

                        • khim
                          /#20621139

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

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

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

                          • sumanai
                            /#20621375

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

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

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

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

            • staticlab
              /#20617445

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

              на Java

              ?

              • drWhy
                /#20618687

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

    • river-fall
      /#20617301 / +1

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

      • DrPass
        /#20617311 / +1

        J3QQ4

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

      • tundrawolf_kiba
        /#20619847

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

  13. dayofadmin
    /#20608943

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

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

  14. chnav
    /#20608985 / +1

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

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

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

  15. tbl
    /#20609019

    Вспомнил похожую историю с утилитой 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 ...

    • mayorovp
      /#20609257

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

      • tbl
        /#20609549

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

  16. denisshabr
    /#20609181 / +1

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

    • VBKesha
      /#20609595

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

    • JamboJet
      /#20609829

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

      • denisshabr
        /#20610521

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

        • Whuthering
          /#20610695

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

          • denisshabr
            /#20618773

            Не получается с помощью 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)

            • sumanai
              /#20620925

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

        • oldschoolgeek
          /#20611755

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


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

        • Goodkat
          /#20611941

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


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

    • rdifb0
      /#20611763

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

  17. staticmain
    /#20609205

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

    • Kanut
      /#20609221

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

      • staticmain
        /#20609229

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

        • ogost
          /#20609843

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

          • balamutang
            /#20610995

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

          • AlxDr
            /#20611933

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

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

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

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

          • Loggus66
            /#20612347 / +1

            Continuous Delivery же.

            • ogost
              /#20612977

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

  18. kasiopei
    /#20610055

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

    • andreymal
      /#20610071 / +1

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

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

      • AnarchyMob
        /#20612671

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

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

    • drWhy
      /#20610187 / +1

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

      • sumanai
        /#20611049

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

        • AlxDr
          /#20613705

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

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

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

          • balamutang
            /#20615597

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

            • AlxDr
              /#20615677

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

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

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

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

      • Ackbar
        /#20613471

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

        • drWhy
          /#20613607

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

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

        • AlxDr
          /#20615711

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

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

          • drWhy
            /#20615731

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

            • AlxDr
              /#20615821

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

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

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

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

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

              • drWhy
                /#20615841

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

                • AlxDr
                  /#20615883

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

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

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

                • sumanai
                  /#20617545

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

    • uaggster
      /#20611231 / +1

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

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

      bash.im/quote/404875

  19. prishelec
    /#20610121

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

    • SandroSmith
      /#20610545

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

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

    • HardWrMan
      /#20610719

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

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

    • MTonly
      /#20611967

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

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

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

      • prishelec
        /#20612065

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

        • MTonly
          /#20612089

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

    • Oplkill
      /#20612617 / +1

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

      • prishelec
        /#20612693

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

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

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

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

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

      • MTonly
        /#20612961

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

  20. ua30
    /#20610123 / -5

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

    • Whuthering
      /#20610249 / +4

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

      • ua30
        /#20611529

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

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

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

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

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

    • mapron
      /#20610633 / +2

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

    • OnelaW
      /#20610761 / -1

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


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

    • devpony
      /#20614655

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

      • ua30
        /#20614767

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

        • drWhy
          /#20614803

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

  21. onground
    /#20610619

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

    Мамо!

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

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

    • mayorovp
      /#20610739 / -1

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

      • sumanai
        /#20611071 / +1

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

      • MTyrz
        /#20611079 / +1

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

        • RH215
          /#20611623

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

          • MTyrz
            /#20612253

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

          • DaemonGloom
            /#20613063

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

      • kudryavy
        /#20611125

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

        • Gryphon88
          /#20611893

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

          • sumanai
            /#20612903

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

            • vladkorotnev
              /#20613035

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

              • Fedorkov
                /#20614271

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

      • andreyons
        /#20611147

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

        • splitfire
          /#20613473

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

          • balamutang
            /#20615627

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

      • onground
        /#20611265

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

    • kudryavy
      /#20611803

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

  22. Andrey_Rogovsky
    /#20611087

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

  23. Akon32
    /#20611397 / -2

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


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

    • DrPass
      /#20611469 / +5

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

      • Akon32
        /#20612489

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

        • DrPass
          /#20612721 / +1

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

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

          • Wesha
            /#20613183 / +1

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

            image

          • Akon32
            /#20613971 / +2

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

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

            • DrPass
              /#20614403

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

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

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

            • drWhy
              /#20614439

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

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

              • Akon32
                /#20614603

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

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

                • drWhy
                  /#20614709

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

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

    • j_wayne
      /#20611873

      Фраза про оптимизацию, к сожалению, часто вырывается из контекста.
      Полная фраза: «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 не лагал так, если это несложно исправить.

      • Akon32
        /#20612565

        Естественно, я тоже предпочитаю, чтобы всё летало, а не лагало. Но считать лаг 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%

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

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

        • MTyrz
          /#20616615

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

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

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

          • Akon32
            /#20618469

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


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

    • kudryavy
      /#20612077

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

      • Akon32
        /#20612523

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

        • drWhy
          /#20613467

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

          • Akon32
            /#20614105

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

            • drWhy
              /#20614559

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

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

              • Akon32
                /#20614771

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

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


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

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

                • drWhy
                  /#20614905

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

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

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

        • kudryavy
          /#20614031

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

          • sumanai
            /#20615033

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

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

        • popov654
          /#20617461

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

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

          • Akon32
            /#20618577

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

            • khim
              /#20619183

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

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

              • Akon32
                /#20619431

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

                • khim
                  /#20619723

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

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

                  • Akon32
                    /#20620117 / +1

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

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


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

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


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

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


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

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

                    • tundrawolf_kiba
                      /#20620827

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

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

                    • khim
                      /#20621063

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                      • qw1
                        /#20621731

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

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

                        • khim
                          /#20622171

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

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

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

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

                          • qw1
                            /#20622707

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

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

  24. MTonly
    /#20612081 / -1

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

  25. DonArmaturo
    /#20612245

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

  26. MacIn
    /#20612421 / +1

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

  27. seven_hh
    /#20613127

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

  28. perfect_genius
    /#20617379

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

    • sumanai
      /#20617549

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

  29. drWhy
    /#20619803

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

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

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

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

    • DrPass
      /#20620133

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

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

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

      • drWhy
        /#20620549

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

        Сделать ярлык можно, но пользователю нужно будет объяснить, что такое путь к файлу. Быстрее, конечно создать ярлык за него. Но если пользователь перейдёт на другой компьютер, операцию придётся повторить.
        Нужна инструкция типа «Делай раз».

        Всё же, DVD/BD не совсем дремучий legacy, как скажем сканер на lpt порту или факс-бумага; оборудование и расходники всё ещё производятся, продаются и потребляются. И просто взять и запретить автозапуск как-то неправильно.
        Если рассматривать компьютер с ОС как законченное бытовое устройство, то запрет автозапуска диска ведёт к коренному изменению потребительских свойств.

        • DrPass
          /#20620729

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

          А что за отрасли, если не секрет? Раньше DVD активно использовались, например, в издательской деятельности, в рекламной и т.д., где шёл активный обмен крупными файлами макетов, фото, печатки, видео и т.д. Ну а сейчас-то их там уже нет и в помине. Флешка на 8Гб стоит столько же, сколько десяток одноразовых болванок, к тому же несколько гигабайт можно спокойно через файлообменник перебросить.
          то запрет автозапуска диска ведёт к коренному изменению потребительских свойств.

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

          • drWhy
            /#20620795

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

            • DrPass
              /#20622447

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

              Честно, я в медицине не специалист, а пользователь. Но в силу возраста уже достаточно активный пользователь, к сожалению. Но вот я ничего не знаю про существование клиник, где какие-то результаты чего либо пишут на болванки. Лаборатории сбрасывают анализы на почту, и в онлайне выкладывают. Клиники — точно так же, плюс на флешку пишут при желании. МРТ — на флешку. Даже в старой доброй районной больничке, там где ещё бумажные карточки в регистратуре в шкафах стоят, и то есть онлайновая система.
              Да, любые данные можно передать, скажем, по электронной почте. Но это может стоить дополнительных телодвижений.

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

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

  30. transcengopher
    /#20620099

    На моём компьютере с Windows 10 два монитора, и основным выбран левый. Как результат, модный трей уведомлений (как на Android, да) находится на левом мониторе, в правом нижнем углу. Так вот, если быстро кликать по трею, можно наблюдать, как шторка уведомлений, не сворачиваясь и не уменьшаясь в размерах, уезжает на правый монитор, и только потом что-то "просыпается", и шторка пропадает.
    Асинхронный код /s