1. Java / Говнокод #16791

    +89

    1. 1
    2. 2
    3. 3
    String os = System.getProperty("os.name");
    if (os.startsWith("Windows 9") || os.equals("Windows Me")) {
    throw new RuntimeException(

    https://searchcode.com/?q=if%28version%2Cstartswith%28%22window s+9%22%29
    Очевидно Windows 10 спасёт ситуацию.

    Запостил: Говногость, 03 Октября 2014

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

    • SEO-comment
      Ответить
    • Жаль, что пошли на поводу у говнокодеров.
      Ответить
    • if (osName.startsWith("Windows")) {
          if (osName.indexOf("9") != -1) {
              jvm = WINDOWS_9x;
      Windows 19 и 29 тоже придется пропустить...
      Ответить
      • Придётся все последующие нумеровать японскими цифрами или вернуться к именам собственным.
        Ответить
        • Дык такими темпами все цифры зашкварят, и настанет вендекапец.
          Ответить
          • показать все, что скрытоЗашкварят? Это должно значить что винда пидарастическая ось. Но также это значит чтО и ты зашквареный - ведь 100% польЗовался ею.
            ps не хотелось бы никого
            обидеть, просто слово бросилось в глаза.
            Ответить
      • // For Windows 95, 98... Would these platforms actually work?
        private static final String WINDOWS_9X = "windows 9";
        Ответить
    • Да сами виноваты, дебилы, меняют по сто раз схемы именования. Долбаный бессмысленный и беспощадный маркетинг.
      Ответить
      • Ну так есть же надежная числовая версия... Зачем парсят маркетингово-строковую?
        Ответить
        • ну мы же говорим про жабу. или уже как-то можно штатными методама из реджистри читать?

          http://stackoverflow.com/questions/6109679/how-to-check-windows-edition-in-java
          http://stackoverflow.com/questions/2272972/how-to-test-for-windows-7-platform
          http://stackoverflow.com/questions/228477/how-do-i-programmatically-determine-operating-system-in-java

          судя по количеству вопросов - и качеству ответов - в заабстрагированой переаабстрагированой жабе правильного ответа на этот вопрос нету.
          Ответить
          • >ну мы же говорим про жабу. или уже как-то можно штатными методама из реджистри читать?
            В enviromente еще всякое интересное попадается.
            Ответить
          • >заабстрагированой переаабстрагированой жабе правильного ответа на этот вопрос нету.
            System.getProperty("os.version")
            Кстати в первой же ссылке написано.
            Ответить
            • все таки есть.

              http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions

              но похоже что Win9x от NT4 отличить это не позволит.
              Ответить
              • >но похоже что Win9x от NT4 отличить это не позволит.
                Я ж говорю в enviroment неплохо бы поглядеть. Там OS - Windows_NT
                Ответить
      • P.S. С проверкой версий вечно костыли и баги...

        В Qt в своё время упоролись, и проверяли версию постгреса свичом. Причем в дефолтной ветке было написано "ваш слоник слишком стар". Забавно было видеть эту надпись при подключении к свежей девятой версии.
        Ответить
        • > С проверкой версий вечно костыли и баги...

          Явная проверка версий - это вообще костыли и last resort. Кмк, запрос возможностей - гораздо более правильное и стабильное решение.

          Только вот мало где учат апишки нормально проектировать, а совместимость версий людей как правило начинает волновать тогда, когда из выходов остаются только костыли.
          Ответить
          • У динамических языков тут больше возможностей для манёвра.
            Показателен vim с его has('feature'), емакс с boundp и прочие жуквери.
            Вот когда приходится баги обходить или несовместимости апи, тогда уж и версии потестить можно...
            Ответить
        • > в дефолтной ветке было написано "ваш слоник слишком стар"
          И с другим софтом приходилось такое наблюдать.
          Ответить
      • А еще находятся идиоты, которые сравнивают версии как строки... Жопа в том, что это какое-то время работает. Пока какой-нибудь 1.10 не становится меньше, чем 1.2.
        Ответить
        • Идиоты, идиоты везде.
          Ответить
        • А как насчёт такого варианта:
          public static object OSVersion
              {
                get
                {
                  return (object) double.Parse(Conversions.ToString(Environment.OSVersion.Version.Major) + ((NumberFormatInfo) NumberFormatInfo.CurrentInfo.Clone()).CurrencyDecimalSeparator + Conversions.ToString(Environment.OSVersion.Version.Minor));
                }
              }

          Код декомпилированииый, так что смотрим только на double и на баг из-за соединения double.Parse с CurrencyDecimalSeparator.
          Ответить
          • > double
            1.2 > 1.15

            В общем достойно отдельного ГК... Неужели автору было так трудно покомпонентно сравнить? :)
            Ответить
            • При том, что она используется только в таком выражении
              if (!Operators.ConditionalCompareObjectGreaterEqual(MyGlobal.OSVersion, (object) 5.1, false))
                return;
              вероятно, десятые подверсии не проблема.

              А вот факт использования денежного разделителя вместо обычного - это баг. И у меня оно замечательно при каждом запуске выдавало сообщение об ошибке парсинга, из-за чего я и стал его декомпилировать :)
              Кстати.. надо будет новую версию глянуть - остался в ней этот косяк или нет...
              Ответить
        • >Пока какой-нибудь 1.10 не становится меньше, чем 1.2.
          ШИНДОШС 98 > ШИНДОШС 2000 > ШИНДОШС 10
          Ответить
          • windows xp > windows 2000
            windows xp > windows 95
            windows 8 > windows 7

            Всё нормально.
            Ответить
            • ШINDOШС 7< ШINDOШС VISTA < ШINDOШС ХР
              >Всё нормально.
              Угу. Наглядный показатель деградации ОС от мелкософт.
              Ответить
    • А всего-навсего надо было продолжать называть систему: NT 4, NT 5(2K),NT 5.1(XP),NT 5.2(2K3), NT 6(Vista), NT 6.1(7), NT 6.2(8) итд
      Ответить
      • Ну и сам тогда объясняй хомячкам, почему их Шиндошс 6.2.5.32 - морально устаревшее говно мамонта, и нужно срочно купить новую ультрасовременную Шиндошс 6.2.5.33.
        Ответить
        • Вы всё ещё используете TeX версии 3.141592? Да вы, батенька, некромант!
          Ответить
        • Вы так говорите, как будто вместо 4, 5.2, 6.1 и 6.2 нельзя использовать 4, 5, 6, 7 или 4, 9, 16, 25, или 4, 12, 36, 108. Вон яблофоны номерные же продают. Каждый год - новое устаревшее говно.

          Главное - прогрессию выбрать верную. Чтоб не слишком медленно (6.2.5.32 vs 6.2.5.33) росла и не слишком быстро (Chrome 34 - морально устаревшее говно!).
          Ответить
    • Назвали бы "Windows\t9"
      Ответить
      • http://govnokod.ru/16791#comment250383
        И такой вариант учли...
        Ответить
        • Интересно: обновил сток, а там высветилась эта версия [последняя] комментария, хотя ранее была предыдущая, но после этого никто не запостил ни единого говнокода и не написал ни единого комментария.
          Ответить
          • А он один раз обновляется после редактирования, если успеть уложиться в какой-то интервал... Если долго тупить - уже не обновляется.
            Ответить
            • Так тут сначала долго висела первая версия (несколько часов, а не 5 минут; я обновлял и надеялся, что кто-то начнёт флудить и троллить, и мне можно будет флудить и троллить в ответ, но ничего нового не было), а потом ещё раз обновил - и последняя версия вылезла.
              Ответить
              • Разве для флуда и троллинга нужен повод? Их же можно развести на пустом месте!
                Ответить
                • На ГК - нужен. По-моему, все обычно ждут новый комментарий, чтобы найти зацепку.
                  Ответить
                  • Не к чему. Если нет годных комментов, за всегда можно самому вкинуть.
                    Какой багор
                    Ответить
                    • > Какой багор
                      Воистину багор ))
                      Ответить
                      • Видел я такие багры, по сравнению с которыми этот почти не багор!
                        Ответить
                        • Да тыж еретик!
                          Слава Багору!
                          Ответить
                          • Пожарным слава!

                            Кто не тушит, тот пожар.
                            Ответить
                            • http://storage7.static.itmages.ru/i/14/1007/h_1412670129_6443561_7937948fe6.png

                              Что интересно, на hostingkartinok.com уже кончились ID для картинок:
                              1Неверный запрос: Duplicate entry '3762793764073432240' for key 'PRIMARY'
                              Ответить
                              • интересно, какой рандомный генератор они использовали и какой надо выбирать, чтобы сократить до минимума число коллизий на uint64 для неких заданных расчетных параметров (например, число коллизий за первый миллион, за первый миллиард итераций)
                                Ответить
                                • Какой, какой багор?
                                  Ответить
                                • > какой надо выбирать, чтобы сократить до минимума число коллизий
                                  Если seed общий на все ядра - то практически любой с периодом 2^64. Коллизий за весь период вообще не будет.

                                  А если вместо ГПСЧ взять ГСЧ, то вероятность одной коллизии за 2^32 вставок будет всего 1/2.
                                  Ответить
    • Почему бы виндузятникам не использовать позиционную алфавитно-цифровую систему счисления с основанием, например, в 36. На их век хватит, а там уж, если не вендекапец, то второе пришествие Мошиаха уж точно.
      Ответить
    • Назвали бы "Windows nine" и проблем нет.
      Ответить

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