1. JavaScript / Говнокод #17148

    +154

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    if ((new Date(2014, 0, 1)).getHours() != 0 || new Date(2015, 0, 7).getHours() != 0) {
      // Переопределяем конструктор
      Date = (function (NativeDate) {
        var NewDate = function (Y, M, D, h, m, s, ms) {
          var length = arguments.length;
          var date = length === 1 && String(Y) === Y ? // isString(Y)
              new NativeDate(NewDate.parse(Y)) :
                  length >= 7 ? new NativeDate(NativeDate.UTC(Y, M, D, h, m, s, ms)) :
                  length >= 6 ? new NativeDate(NativeDate.UTC(Y, M, D, h, m, s)) :
                  length >= 5 ? new NativeDate(NativeDate.UTC(Y, M, D, h, m)) :
                  length >= 4 ? new NativeDate(NativeDate.UTC(Y, M, D, h)) :
                  length >= 3 ? new NativeDate(NativeDate.UTC(Y, M, D)) :
                  length >= 2 ? new NativeDate(NativeDate.UTC(Y, M)) :
                  length >= 1 ? new NativeDate(Y) :
              new NativeDate();
          if (length == 0) {
            date = new NativeDate(+date - date.getTimezoneOffset() * 60000);
          }
          date.constructor = NewDate;
          return this instanceof NativeDate ? date : date.toString();
        };
    
        if (NativeDate.now) {
          NewDate.now = function () {
            return new NewDate().getTime();
          };
        }
        if (NativeDate.UTC) {
          NewDate._UTC = NativeDate.UTC;
          NewDate.UTC = function (Y, M, D, h, m, s, ms) {
            var _date = new NewDate(NewDate._UTC.apply(this, arguments));
            return +_date - _date.getTimezoneOffset() * 60000;
          };
        }
        NewDate.prototype = NativeDate.prototype;
        NewDate.prototype.constructor = NewDate;

    И так далее, "фикс" для кривых таймзон в JS на винде http://habrahabr.ru/post/243685/

    Запостил: asavartsov, 21 Ноября 2014

    Комментарии (95) RSS

    • Может лучше исходники KB2998527 запостить?
      Ответить
      • Да, лучше.

        Это великолепно: http://olegon.ru/showthread.php?t=17945

        Запасаемся попкорном.
        Ответить
        • Как резонно замечают в треде, "Не надо плодить колхоз".
          Ответить
        • Сорри за ссылку на сайт, который нельзя называть. Но картинка с календариком просто прелесть: http://habrahabr.ru/post/240301/

          А ниже в комментах джва раза 26 октября...
          Ответить
          • P.S. Несколько лет назад налетал на подобный баг в календарике KDE. После января показывался март, а перед мартом был... краш и рестарт всей плазмы.
            Ответить
      • Что, любители автоапдейтов опять соснули?
        Ответить
        • Интересная штука - производная. Сосёшь постоянно - всё гладко, производная ноль, никто не придирается. А стоит только один раз чуть соснуть - так сразу куча внимания и жёлтые заголовки. Любители автоапдейтовопять соснули! Сегодня любители автоапдейтов соснули в бесконечность раз больше, чем вчера! Поразительно быстро возросла скорость сосания среди любителей автоапдейтов! Неутешительные тренды: если относительная скорость сосания будет расти так же быстро, то любители автоапдейтов уже через десять дней уменьшат давление на планете до 1E-12 атмосфер!
          Ответить
          • Дык не первый случай уже. На моей памяти была пара апдейтов на семерку, которые ломали ее до неюзабельности (вообще переставали запускаться проги). Забавно, но лицензионная семерка со включенным автообновлением почему-то от них не ломалась.

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

            И линуха не отстаёт - после апдейта Xorg'а мне несколько месяцев пришлось сидеть на опенсурсных дровах к старенькой нвидиевской карточке... Та еще боль, когда любой сайт с нетривиальным фоном скроллится чуть медленнее 1фпс.
            Ответить
            • А мне автообновления плохого не делали. Ну разве что Windows 8 надо вежливо, но настойчиво попросить не перезагружаться автоматически.
              Зато открываю я календарь, а там уже и зона новая, и предупреждение о переводе стрелок. Я ничего не трогал, а уже всё хорошо, всё работает.
              Ответить
              • Есть такой принцип - работает, не трогай без особых на то причин.
                Если в апдейтах нет фиксов критических ошибок или новых киллер-фич, то апдейтится не стоит.

                Когда человек апдейтит руками он смотрит что же нового ему предлагают, и не выступает бесплатным бета-тестером всякого софта.
                Жду не дождусь уязвимости в системе обновлений какого-то софта, чтоб ёбнуло так сильно, что новая версия спиздит банковские реквизиты у миллионов людей или наделает других гадостей.
                Ответить
                • > Когда человек апдейтит руками он смотрит что же нового ему предлагают
                  Фу, как мерзко. Одно дело, когда это делает прислуга, рабы (в случае дома) или специально обученный человек, которому за это платят (в случае какой-нибудь конторы). Другое дело - самому читать то, что можно не читать и жать на кнопки, которые сами могут нажаться.
                  Тут вокруг автоматизация и всеобщее счастье, а Вы предлагаете откатиться до старых времён.

                  > Жду не дождусь уязвимости в системе обновлений
                  Фу, как мерзко. Ждать, чтобы люди руками делали ненужную питушню.

                  А вообще, здесь голосуют рублём. Сделают пакость раз, два, а на третий раз кто-то примет предложение конкурентов.
                  Ответить
                  • > А вообще, здесь голосуют рублём. Сделают пакость раз
                    Всё. Точка. Можно одной качественной пакостью оставить полмира без штанов.
                    Ответить
                • Ну да, да, именно так они и делают. Внимательно читают список изменений в каждом из семидесяти фиксов, особенно на винде
                  Ответить
                  • >Внимательно читают список изменений в каждом из семидесяти фиксов, особенно на винде
                    Да, если обновляешься редко, то можно выделить на это время и просмотреть чего нового.
                    Ответить
                    • Обосраца можно и без автообновления.
                      Лет 10 назад у меня был сервер с пятой фрей, и на нам dante socks (sock5 proxy). И вот после очередного аптдейта из репозитория он упал в кору)

                      А ведь фря очень консервативная ось была)
                      Ответить
                      • Обосраться можно где угодно.
                        Как и завтра может сбить машина: такая вероятность есть всегда, но если допустим смотреть по сторонам, то вероятность становится на порядки ниже.
                        Я не пойму обновления они сугубо ради обновлений? Чтоб смело говорить всем в лицо, какой я молодой и успешный, и у меня самый-самый новый софт?
                        Ну вот если всё отменно работает, зачем обновляться?
                        Ответить
                        • иногда обновления как бы дыры закрывают
                          по 30 штук на месяц на одной из популярных ос
                          хорошо помню lovesan в общажной локалке
                          Ответить
                          • >иногда обновления как бы дыры закрывают
                            И ВНЕЗАПНО открывают новые, доселе неизвестные.
                            Ответить
                            • Разумеется, это печально.

                              > В том-то и суть, юзая стабильное говнецо мамонта предыдущей версии, в котором известные дыры давно залатаны, мы защищаем себя от большинства таких траблов.
                              Тут уж как повезёт или, вернее, как не повезёт.
                              Ответить
                          • В том-то и суть, юзая стабильное говнецо мамонта предыдущей версии, в котором известные дыры давно залатаны, мы защищаем себя от большинства таких траблов.

                            Насчёт "одной популярной ос" - есть еще такая штука как zero day attacks. От неё никакие автообновления не спасают.
                            Вот свежее
                            http://thehackernews.com/2014/10/microsoft-windows-zero-day_13.html
                            Если проскипать журналистскую клюкву про злобных рашен-хакерс, которые мешают строить вильную юкарыну, то можно найти забавную фразу
                            Russian hackers use 'zero-day' to hack NATO, Ukraine in cyber-spy campaign ... in every Windows operating system from Vista to 8.1 except Windows XP
                            Ответить
                            • 1) звучит как булщит. Слабо верю что кулхацкеры вдруг нашли zero day уязвимость в виндах, попали в сети NATO и там все сломали. Такие вещи надо очень внимательно проверять, потому что журналисты такие журналисты.

                              2) В MS-Dos 6.22 нет уязвимостей, которые есть в WinXp. Go use it.
                              Ответить
                              • >2) В MS-Dos 6.22 нет уязвимостей, которые есть в WinXp. Go use it.
                                Все забывают, что в старых осях есть баги, про которые все просто перестали вспоминать.
                                Ответить
                            • И какой вектор уязвимости? Открытый нетбиос?
                              Ответить
                        • На самом деле мы смешали в кучу несколько ситуаций.
                          Во-первых ставить нужно только минорные апдейты. Понятное дело что на новую версию винды я не перейду, покуда года полтора народ её не поюзает: не хочу быть бетатестером.

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

                - та херня с Xorg'ом на работе
                - выбивало драйвер nvidia дома, временно лечилось переустановкой, навсегда вылечилось установкой из репы
                - где-то в районе 11.04 удалился virtualbox, вылечилось установкой
                - слетали обои на рабочем столе (а нефиг было юзать стандартные)

                Но на серваках - security updates only. И точка.
                Ответить
                • > автообновления на декстопе (убунта)
                  Потому что в убунту суют debian unstable но еще с некоторой латенси, вон почитайте сколько АВТОАПДЕЙТА у арчеводов.
                  >Тут вокруг автоматизация и всеобщее счастье
                  Ну-ну. Где счастье-то? Вот и интернеты уже изобрели, а счастья всё нет.
                  Ответить
          • Ну дайте же ручным питушкам по радоваться что Акелла промахнулся
            Ответить
          • >>А стоит только один раз чуть соснуть - так сразу куча внимания и жёлтые заголовки. Любители автоапдейтовопять соснули!

            Последнее обновление uTorrent добавляет в систему майнер криптовалюты
            Новости

            Последнее обновление uTorrent добавляет в систему майнер криптовалюты

            Последнее обновление популярной программы uTorrent вызывает установку в систему программы-майнера криптовалюты. Таким образом, компьютеры пользователей используются для заработка денег другими лицами.

            Сообщается, что последнее обновление uTorrent включает в качестве бонуса и программу Epic Scale. Она использует вычислительные ресурсы процессора для майнинга криптовалюты Litecoin в фоновом режиме. Многие пользователи не знали, что их компьютеры теперь начали использоваться для генерации криптовалюты. Стороння программа была обнаружена лишь после существенного увеличения нагрузки на процессор и снижения производительности.

            Компания BitTorrent, которой принадлежит программа uTorrent, подтвердила, что обновление действительно включает дополнительное ПО. Вместе с тем, она отвергла обвинения в использовании вычислительных ресурсов компьютеров без ведома пользователей. Отмечается, что скрытой установки Epic Scale не происходит, вероятнее всего, в процесс установки обновления пользователи согласились с условиями и установили дополнительное ПО. При этом в BitTorrent заверяют, что, как и у других компаний, у них есть партнерские предложения в установочном пакете. И в соответствии с политикой компании, они являются опциональными. Тем пользователям, которые недовольны наличием Epic Scale в системе, рекомендуется удалить программу и удалить связанную с ней папку.

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

            Бугага.
            Ответить
            • Твой тёплый язычок нежно телебонит мои яички...
              Ответить
            • Кстати, там и до этого что-то ненужное в новых версиях предлагали.
              Или сейчас галочка "не устанавливать говно" совсем далеко скрыта?
              Ответить
              • http://www.osp.ru/news/2015/0311/13027795/
                Пользователи жалуются, что uTorrent тайно устанавливает майнер криптовалюты

                Владельцы компьютеров замечали постороннюю программу лишь по перегруженности процессора.
                Ответить
                • > лишь по перегруженности процессора
                  Ага. Тулбары, порнобаннеры, китайские антивирусы и прочее дерьмо эти самые пользователи тоже замечают только тогда, когда уже сайты не открываются или проги не пашут...
                  Ответить
            • Это была одна версия, в последних уже убрали. Но да, мю3 катится в говно.
              Ответить
    • реально дебилы хардкодят в свои приложения число 2014 чтобы исправить временную проблему в голове медведе в часом поясе?
      Ответить
      • Отож. Наличие проблем в ОС не повод писать десяток вложенных тренпрных операторов, самопальные парсеры ISO8601 и тп!
        Ответить
    • С одной стороны надо клиентам всё починить, им-то совершенно без разницы где баг (это во мне говорит суръезный программист).
      С другой стороны любители софта управляющего компом и контролируемого непонятно кем и откуда должны страдать, и потому это чинить ни не надо в коем случае, чисто из принципа.
      С третьей же стороны, кому вообще сдалась эта RTC? Необходимо ради счастья на всей Земле, раз и навсегда отменить переходы на летнее/зимнее время, и экономить энергоресурсы другими способами. Потому что баги будут появляться с таком софте еще много раз. (Это во мне говорит опыт).

      Ответить
      • > раз и навсегда отменить переходы на летнее/зимнее время
        Неистово плюсую.

        Причём если для линухи это довольно тривиальная операция (основные часы в UTC + историческая база со всеми переходами, в которую просто добавили десяток записей), то для винды это какие-то адовые костыли с реальным переводом стрелок (и 2 винды на одном компе само собой переводят джважды)... У многих знакомых после этой KB'шки сбивалось время, т.к. они по привычке снимали галку "переводить часы" (а обновление, емнип, основано как раз на разовом переводе).
        Ответить
        • Беда в том что юникс ИЗНАЧАЛЬНО строился как многопользовательская система, и потому CMOS clock там принято держать в UTC, ведь на одном сервере могут одновременно работать пользователь из Владивостока и Владикавказа.

          Винда же изначально строилась как десктопная ось (даже энтя), и потому системное время там совпадает с временем пользователя.

          Давно уже не редкость наблюдать двух пользователей из разных стран, которые по RDP сидят на каком-нить Win2008 server (например чтоб не ставить каждому 1С) но легаси-питушня осталась(((

          Вишенкой на торте идет тот факт что юникс, java и прочие юзают tz database, а у винды свое теплое и ламповое
          Ответить
          • >Винда же изначально строилась как десктопная ось (даже энтя)
            Что, простите?

            >а у винды свое теплое и ламповое
            Но есть?
            Ответить
            • >>Что, простите?
              UNIX строился как система к которой подключены терминалы с разными пользователями.

              Windows строился как система для PC на которой работает одновременно один пользователь.

              >>Но есть?
              Конечно есть. У винды есть своя tz database
              Ответить
              • > tz database
                В которой только самые свежие таймзоны, и совсем нет их истории?
                Ответить
                • Вот не знаю, надо проверить знает-ли винда какой был часовой пояс в Москве 80 лет назад
                  Ответить
                  • Да зачем 80 лет... Лет 5-10 будет вполне достаточно.

                    А вообще - не от хорошей же жизни postgres на винде с собой таскает свою tz database...
                    Ответить
                    • Постгря (да и джава) таскают её из за единообразности.

                      У винды и LDAP клиент есть, и SSL. А все равно все юниксовые клоны таскают libssl и openldap[
                      Ответить
                      • > из за единообразности
                        Ну да, вообще говоря. У винды же совсем другие названия таймзон.
                        Ответить
              • >даже энтя
                Ответить
          • проблема винды в том что она изначально строилась как оболочка над осью. Так недо осью и осталась.
            Ответить
            • Win3.11 (и прочие 16bit) -- да.
              Win9x -- нет
              WinNT -- совсем нет (она вообще строилась на основе VMS вроде и к 16ти битныс виндам вообще отношения не имеет)
              Ответить
              • WinNT строилась как пародия на OS/2, только там все имена и форматы изменили до неузнаваемости (NTFS — пародия на HPFS, ntoskrnl — пародия на ядро полуоси).

                Win95/98/Me (не люблю я название 9x, потому что это на самом деле 4.x) стартует из ДОСа, но только своего. Там ДОС допиленный, в него добавили около десятка новых функций (в частности, для чтения файла реестра). Ага, в Win95 есть консольная программа, редактирующая реестр прямо из ДОСа. Из-за этих нескольких функций Win95/98/Me нельзя запустить из ДОСа стороннего производителя.

                Является ли Win95 оболочкой? Ответ зависит от того, считаем ли мы Win3.11 оболочкой. И там, и там старт только из ДОСа. И там, и там могут задействоваться досовские драйвера. Но и там, и там есть своё ядро (WIN386.EXE в расширенном режиме Win3.11, VMM32.VXD в Win95).
                Ответить
                • >WinNT строилась как пародия на OS/2, только там все имена и форматы изменили до неузнаваемости
                  А вообще что из популярных продуктов MS не пародия на чужое?
                  >в Win95 есть консольная программа, редактирующая реестр прямо из ДОСа
                  Не помню точно в какой версии, но иногда это помогало чинить слетевшую винду.
                  Ответить
                  • А вообще что из современных популярных продуктов не пародия на чужое?
                    Ответить
                • >>WinNT строилась как пародия на OS/2
                  Не только.
                  Dave Cutler делал себе VMS, потом его MS купило, и он стал им делать WinNT на основе OS/2 конечно же, но многие идеи перекочевали туды и из VMS тоже.

                  >>стартует из ДОСа, но только своего
                  Правильнее сказать что часть кода там (загрузочного например) 16ти разрядная и опирается на DOS API (прерывания его наверное).
                  На самом деле даже в загрузчике современных ОС есть 16ти битный код (кто-то же должен переключить CPU в протектед мод) но такого кода там с гулькин нос, а в потребительских виндах -- много.

                  >>Ага, в Win95 есть консольная программа, редактирующая реестр прямо из ДОСа
                  ну так там реестр-то весь system.1st. Это в NT он сложный, и из нескольких файлов (причем часть вообще налету строица).

                  Я не считаю Win98 оболочкой потому что:
                  1) Она сама умеет делать PnP. Тоесть перехерачить настройки всего железа
                  2) Она содержит много 32х разрядного кода
                  3) Она имеет собственные драйверы и не использует прерывания ни DOS ни BIOS для части задач.

                  >>это на самом деле 4.
                  Будет конфликтовать с WinNT4 тогда.
                  Ответить
                  • > На самом деле даже в загрузчике современных ОС есть 16ти битный код
                    Благодаря EFI - уже нет. Те же линуксовые ядра сейчас могут стартовать вообще без загрузчика, тупо как EFI приложение.
                    Ответить
                    • Да. Но не везде EFI. Остался и MBR еще пока кое-где.
                      --
                      Кстати, гребаный BCD появился в винде тоже ради того чтоб крассиво поддержать EFI
                      Ответить
                      • > гребаный BCD
                        Они гуй к нему так и не прикрутили?
                        Ответить
                        • Нет. Но есть EasyBCD. Он бесплатен и кошерен.
                          А bcdedit это ад и угар, и эти люди еще смеялись над линуксоидами!
                          Ответить
                          • >А bcdedit это ад и угар, и эти люди еще смеялись над линуксоидами!
                            Сам не пойму, нахуй они это прикрутили в десктопной, блядь, винде.
                            Ответить
                  • > На самом деле даже в загрузчике современных ОС есть 16ти битный код
                    С появление БИОСов на EFI/UEFI этот код может исчезнуть.

                    Теоретически для любой WinNT можно написать загрузчик сразу из 32-битного режима, а для Win95/98/Me — нет, потому что последние опираются на API ДОСа.

                    > ну так там реестр-то весь system.1st
                    Это резервный файл реестра. Рабочих файлов там два: user.dat и system.dat.

                    > Я не считаю Win98 оболочкой потому что:
                    1) В Win 3.11 уже есть.
                    2) В Win 3.11 уже есть (файлы .386, которые в Win95 стали называться .vxd). Ага, в 16-битной системе есть 32-битный код. Кстати, формат VXD — LE — пародия на формат LX из OS/2.
                    3) См. п. 2. Таки да, vxd-драйвера уже не опираются ни на БИОС, ни на ДОС.

                    > Будет конфликтовать с WinNT4 тогда.
                    http://govnokod.ru/16791
                    Ответить
                    • >>С появление БИОСов на EFI/UEFI этот код может исчезнуть.
                      да: http://govnokod.ru/17148#comment256111

                      >>Это резервный файл реестра. Рабочих файлов там два: user.dat и system.dat.
                      на 95 тоже?))

                      >>1) В Win 3.11 уже есть.
                      Win 3.11 Pnp? Разве?

                      Сколькош я всегда упустил
                      Ответить
                      • > на 95 тоже?))
                        А в Линолеуме аж три: за каким-то интересом HKCR вынесли в classes.dat.

                        >> Win 3.11 Pnp? Разве?

                        Ну Pnp там скорее как формальность. Есть несколько драйверов, совместимых с Pnp-оборудованием.
                        Ответить
                        • >>Есть несколько драйверов, совместимых с Pnp-оборудованием.
                          Ну так умеет Win3.x опросить все оборудование, поддерживающее PNP (речь об ISA, наверное, про PCI фиг с ним), собрать его требования и распределить ресурсы?
                          Ответить
                          • Не уверен. Мне нужно уточнить в офисе.

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

                            P.S. Была для Plain DOS программка под названием ICU — ISA Configuration Utility. Так что PnP вообще никак не связано с OS.
                            Ответить
                            • В офисе компании Microsoft?

                              Шаг, да) На самом деле это всё очень тонкие и зыбкие понятия.
                              Что такое ОС Windows?
                              Кто-то скажет что ОС это только microkernel, кто-то что executive, кто-то что весь Win32API, а кто-то и notepad назовет частью ОС.

                              Ну и с линухами: кто-то скажет что ядро, кто-то что GNU bin utils тоже часть OS ну итд.
                              Ответить
                              • И мы приходим к вопросу, что же появилось в Win95, чего не было в Win3.11.

                                Запуск 32-битных программ? Да была же Win32s для Win 3.x. Да, Win32s не позволяла запускать экзешники без релокейшнов, потому что у неё было одно адресное пространство на все процессы. Но ведь из неё даже 32-битный Photoshop запускался!

                                Дайте подумать, что же такого появилось в Win95, что позволяет назвать её системой. А, вспомнил, консоль. В Win 3.x консоль была костылём, из которой можно было запустить только досовские программы. Даже у приложений Win32s вывод в консоль уходил в NUL. А в Win95 наконец-то появились свои консольные приложения.

                                Выходит, что OS определяется по наличию собственной консоли?
                                Ответить
                                • Ну ладно. Win95 -- она ведь для 32х битных приложений давала нормальный мир: вытесняющую многозадачность, пейджинг и прочие плюшки. А 3.11 не давала, как Вы сами сказали. Давайте считать её осью именно по этой причине?

                                  А вот про консоль я не понял. Разве там не обычный 16ти битный command.com запускался?

                                  Вот в Winnt -- там да, там cmd.exe, который конечно консоль
                                  Ответить
                                  • Да, в Win95 запускался обычный 16-тибитный command.com. Но из него ВНЕЗАПНО запускались приложения Win32 (и консольные, и гуёвые). Видимо, там был какой-то хак, который перенаправлял запрос на запуск приложений в WinAPI. Кстати, те самые VXD-драйвера могли для досовских приложений подменять прерывания, в том числе и функции DOS'а.

                                    Консольные функции в Win95 (в отличие от Win 3.11) были. Но только (почти) все из них были с суффиксом A, т. е. не поддерживали юникодные строки. И это при живом VFAT, который уже поддерживал юникодные имена файлов!

                                    В Win 3.11 же из command.com запустить виндовые программы было нельзя. Той самой детали, перехватывающей запуск программ, не хватало, хотя для неё уже всё было готово.

                                    P.S. В упомянутом Win32s запуск 32-битных приложений осуществлялся по перехвату аварийной ситуации о нераспознанном формате экзешника от загрузчика 16-битных приложений. По идее тем же макаром можно было реализовать загрузку и других форматов исполнимых файлов.
                                    Ответить
                                    • >>Видимо, там был какой-то хак, который перенаправлял запрос на запуск приложений в WinAP

                                      Ну а как win95 гоняла 16битки? Если через Virtual8086, то наверное она инсталлила свой обраточик прерывания 21h в котором была запускалка программ, и наверное обработчик этот был хитер.

                                      >>VXD-драйвера могли для досовских приложений подменять прерывания, в том числе и функции DOS'а.
                                      Ну наверное именно так винда и эмулировала для DOSа, например, звук или API для доступа к диску.

                                      >> И это при живом VFAT, который уже поддерживал юникодные имена файлов!

                                      А вот я почему-то думал что русские буквы в именах файлов хранились в 866, иначе как-бы я один и тот же диск с FAT32 видел и в досе и в винде? "C:\windows\мои документы" же наверное все помнят.

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

                                      Хорошо что всё это ушло в помойку. WinNT, при всех невнятностях её архитектуры, хотябы не содержит 16ти битного кода.
                                      ------------
                                      ps: Откиньтесь на спинку кресла и отдохните, пока Windows 98
                                      устанавливается на ваш компьютер.

                                      Во время установки вы узнаете о новых замечательных
                                      возможностях Windows 98 и о некоторых из наиболее
                                      важных функций системы. После завершения установки
                                      компьютер пригласит вас на более подробный курс
                                      ознакомления с Windows 98.
                                      ---
                                      J3QQ4
                                      Ответить
                                      • > "C:\windows\мои документы" же наверное все помнят.

                                        У каждого файла в VFAT было два имени: короткое формата 8.3 в восьмибитной кодировке (866 в русской локализации) и длинное в юникоде (для длинного использовались пачки фиктивных записей каталога с атрибутами скрытый+системный+ридонли+метка_тома, и этот мусор досовским программам, не поддерживающим API длинных имён, при обходе директорий приходилось фильтровать).

                                        Для "мои документы" генерировался псевдоним МОИДОК~1, который помещался в слот 8.3, и именно его выводили программы, не знающие о длинных именах. Для имён файлов же, состоящих из иероглифов, генерировался псевдоним, состоящий из знаков подчёркивания, тильды и числа.

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

                                        -----
                                        * Под юникодом здесь, по всей видимости, подразумевается UTF-16 либо UCS-2, потому что на каждый символ отводилось ровно два байта.
                                        Ответить
                                        • А, понял) И, наверное, какой-нить CreateFileW работает с уникодной версией, а CreateFileA -- с однобайтной?
                                          Ответить
                                          • Почти. Однобайтная версия использовалась только ДОСом или Виндой, если уникодная не найдена. В остальных случаях использовалась уникодная версия, но CreateFileA могла принять на входе только однобайтную кодировку, поэтому занималась тривиальным кодированием 1251->Unicode (аналогично, функции для поиска файлов с суффиксом A не могли вернуть в результате уникодную строку, поэтому заменяли незнакомые символы на что придётся).
                                            Ответить
                                    • Нераспознанного?
                                      А я думал что в заголовке файла сначала шел 16ти битный заголовок (NE или как там он) потом PE, нет?

                                      И в том заголовке было сказанао "this program requires win32" или как-то так.

                                      PS: ыыы http://www.youtube.com/watch?v=GxJZb6LNZHM
                                      Ответить
                                      • Сначала шёл заголовок MZ, который умел исполнять DOS. Потом либо NE для Win16 (и OS/2 16), либо PE для Win32 (LE для VXD, LX для OS/2 32). Итого частей могло быть только две: первая (MZ) всегда для ДОС'а, вторая (NE/LE/PE/LX) — для более продвинутой системы.

                                        При скармливании PE-файла Винде 3.x она пыталась загрузить его как NE, но обламывалась на нераспознанной сигнатуре. Эту ошибку хватала ловушка Win32s и загружала его уже как PE-файл.
                                        Ответить
                                        • Понятно. Стройность архитектуры, как всегда, поражает)
                                          MZ-то зачем оставили?
                                          Чтоб сказать "can't run in dos mode"?

                                          Я вот сейчас смотрю ImpExом на .DLLку у себя в GAC, и вижу и DOS_HEADER (MZ) и PE32 и потом уже .NET. Сколько ненужного же!
                                          Ответить
                                          • Самое интересное, что у PE64-файлов тоже есть MZ, хотя из новых 64-битных Windows виртуальную ДОС-машину выпилили и без Dosbox или аналогичных ухищрений досовские экзешники запустить невозможно.

                                            У кого же теоретически на одной машине могут оказаться досовские файлы и PE64, да ещё так, что можно случайно исполнить файл как досовский? У линуксоида с DOSEMU?
                                            Ответить
                                            • >> новых 64-битных Windows виртуальную ДОС-машину выпилили
                                              Причем выпилили её не просто так, а потому что в режиме X64 CPU не умеет Virtual8086, ЕМНИП. Всего только 25 лет прошло, а смелый интел отказался от обратной совместимости со старыми доспрограммами.

                                              >>У линуксоида с DOSEMU?
                                              Ну у виндузятника с DOSBOX тоже, но как-то мало вероятно.
                                              Ответить
                                              • > в режиме X64 CPU не умеет Virtual8086
                                                Кстати, а как DOSBOX работает?

                                                > Ну у виндузятника
                                                В DOSBOX программу нужно специально пихать, а в Линухе программу оболочка может подхватить по сигнатуре (mime magic или как там).
                                                Ответить
                                                • >>Кстати, а как DOSBOX работает?
                                                  Вика:
                                                  DOSBox is an emulator software that emulates (loosely: "simulates") an IBM PC compatible computer running the older operating system, MS-DOS.

                                                  Так что ему не важно на чем работать. Хоть на PowerPC вообще)
                                                  Ответить
                                            • > у PE64-файлов тоже есть MZ
                                              И даже у EFI файлов тоже есть MZ...
                                              Ответить
                                              • > И даже у EFI файлов тоже есть MZ...

                                                Вот это и пугает... В следующие версии EFI-биосов будет встроен DOS?
                                                Ответить
                                                • > В следующие версии EFI-биосов будет встроен DOS?
                                                  А он уже есть. EFI Shell. Правда на большинстве материнок он не прошит на флешку, и его надо поставить самому (например кинуть на EFI раздел).
                                                  Ответить
                                                  • >>А он уже есть. EFI Shell.
                                                    И это правда DOS?)))
                                                    Вот так прямо 16ти разрядный?
                                                    Ответить
                            • >>P.S. Была для Plain DOS программка под названием ICU — ISA Configuration Utility. Так что PnP вообще никак не связано с OS.


                              Именно что связано. Устройства можен настраивать:
                              1) БИОС
                              2) какая-то левая утилита
                              3) ОС

                              Современные ОС это делают сами. PnP Manager -- важная часть винды же)
                              Ответить
                          • >оборудование, поддерживающее PNP (речь об ISA
                            /0?
                            Ответить
                  • > но многие идеи перекочевали туды и из VMS тоже

                    Но он не перетащил главную идею: символ бакса в путях к файлам и в batch-файлах!!!
                    Ответить
                    • /зато /параметры /перетащил

                      --за-что --он -и --проклянаем --гну
                      Ответить
                      • Я немного наврал. Баксы в NT всё-таки есть, но конечный пользователь их не видит: $MFT, $MFTMirr, $LogFile, $Volume etc.
                        Ответить
                        • Вот и спалились! Ядро то на PHP написано.
                          Ответить
                          • А Конардо ведь твердил: "Хуйня ваш 'C++', то ли дело 'PHP'".
                            Когда он говорил о PHP как язык системного программирования с него все только смеялись.
                            Ответить
                          • /me выражает сомнение в том, что ядро виндоус знает про $MFT :)
                            Ответить
                        • И тоже замое в шарах по SMB/CIFS:
                          C$, IPC$, print$, ADMIN$ итд
                          ---
                          Любая шара, кончающаяся на $ не видна
                          Ответить
    • Въебал минус.
      Ответить

    Добавить комментарий