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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Main {
      public static void main(String[] args) {
    	System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(new Date(2022 - 1900, 0, 1, 20, 30)));
    	System.out.println(new SimpleDateFormat("YYYY-MM-dd").format(new Date(2022 - 1900, 0, 1, 20, 30)));
      }
    }

    А что там у Jawa-блядей за отсос должен был случиться 1 января? Я что-то не могу воспроизвести:
    https://www.programmersought.com/article/47096700076/

    Запостил: 3_dar, 07 Января 2022

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

    • Что может сподвигнуть вас начать новый проект на Jawa?

      Разве что мне дадут армию джавистов, которые скажут «мы хотим писать на Jawa кококо у нас уже написаны functions.jawa, нам что, всё переписывать?»
      Или приставят дуло пистолета и заставят.
      Ответить
      • Я бы всё равно начал на котлине, у него интероп с жавой
        Ответить
        • Cotlin туда же
          Ответить
          • нет, тут всё таки есть нюанс

            То есть котлин разумеется тоже говно (потому что JVM говно) но всё таки он меньшее говно, вернее говоря он говно с сахаром.

            Тебя конечно тоже ждут GC, Closable, и медленный запуск, но всё таки он чуть менее вербозный. Правда компилироваться он будет примерно вечность
            Ответить
            • И нахуй ты его выбираешь? Ты же не второй чувак отсюда https://govnokod.xyz/_27932/?comment=791018#comment-791018
              Ответить
              • Дык ты поставь задачу, и я выберу под неё язык.
                Я думал, у нас уже куча кода в "funcii.jazha", и я не могу отказаться от интеропа с жавой
                Ответить
            • я если случайно замечал коммиты котлина то блевать хотел. перл и то лучше, хз как это нравится может
              Ответить
              • Перл лучше, но к сожалению задач для перла у меня нет. А для JVM, увы, есть.
                Ответить
      • Не совсем "новый проект на Jawa", но у нас есть плагин к Jira Cloud, который мы решили приспособить к Jira Data Center. С гуглом пополам осилили.
        Ответить
        • Jira, как и любой другой продукт компании Отсоссиан (кроме, пожалуй, битбакета) не является нужным
          Ответить
      • в наше время только безумец будет писать на чем-то другом чем NodeJS
        Ответить
        • Если высоконагруженная параша, то будешь на C++ писать, иначе объяснять руководству зачем тебе 10 миллионов долларов нужно на сервера для NodeJS.
          Ответить
          • очень легко объснить: без такого сервера у меня вебпак не соберет проект до тепловой смерти вселенной
            Ответить
        • NodeJS нужен если у тебя есть группа смузихлёбов, которые закончили курсы "JavaScript за пять недель" и больше ничего не знают. Других причин вроде нет
          Ответить
    • Что, никто не знает?
      Ответить
    • > что там у Jawa-блядей за отсос должен случиться
      > Я что-то не могу воспроизвести

      Сделай static DateFormat DF = new SimpleDateFormat("yyyy-MM-dd");
      И запусти DF.format в много потоков.

      > YYYY-MM-dd
      А так никто не пишет.
      Ответить
      • > А так никто не пишет

        О чём и речь. Можешь привести пример код как можно обосраться?
        Ответить
        • jshell> new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date(2020 - 1900,  11, 30));
          $20 ==> "2020-12-30"
          
          jshell> new java.text.SimpleDateFormat("YYYY-MM-dd").format(new Date(2020 - 1900,  11, 30));
          $21 ==> "2021-12-30"

          Ну это я так предполагаю. На самом деле я не в курсе что там за отсос.
          Ответить
          • Спасибо.
            Я оказываецца даты неправильно подобрал: https://ideone.com/lcQvDF
            Ответить
        • Извращенцы
          Ответить
      • > И запусти DF.format в много потоков.

        Лень проверять, и мне противно к Jawa притрагиваться.
        А что будет?
        Ответить
        • Говно рандомное вместо правильных дат.
          Ответить
        • Будет то, что этот класс не потокобезопасный
          Ответить
    • У меня случился буквально позавчера, потому что yyyy-MM-dd ты можешь распарсить в Instant/LocalDate/etc., а YYYY-MM-dd нет. Хотя вся необходимая информация в промежуточном объекте есть.
      Ответить
      • А зачем вообще YYYY нужен? Я думал так никто никогда не пишет.
        Ответить
        • я хуй знает, я почему-то был уверен, что нужно этот формат использовать, и что y для чего-то другого. сжег пару часов на выяснение что не так (((
          Ответить
          • В проде хоть выстрелило?
            Тут багор в том, чтобы 1го января в новогоднюю ночь всё наебнулось, когда ты оливьешечку наяриваешь и шампусиком запиваешь
            Ответить
            • Не, я парсить-то это формат начал пробовать пару-тройку дней назад
              Ответить
              • > пробовать

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

                    Хотя иногда приходится (((
                    Ответить
                • Та ладно. Те же Сишка или *nix тоже приучают сперва читать мануал к функции или комманде, а не вызывать их без разбора.
                  Ответить
                  • Тоже норм.
                    Ответить
                  • Согласен. Прыщи, Si/Si++ своими ебанутыми именованиями заставляют читать что это за хуета, потому что из названия нихуя не понятно.
                    А вот в C# тупо сделали, там слишком понятные именования, что в доку никто не заглядывает.
                    Ответить
                    • PHP тоже заставляет, потому что без доки хуй вспомнишь, в каком порядке конкретно эта функция жрёт аргументы. В шарпе попроще, можно запихать в каком придётся, а потом по ошибке понимать, в каком надо было.
                      Ответить
                    • Реальные примеры:
                      dd - хуй вообще знает что это такое, без чтения Мана не догадаешься. Ибо нехуй.

                      atoi/itoa - почему нельзя было нормально назвать? Наверное, для обратной совместимости с DOS, где нельзя использовать идентификаторы длиной более 8 символов.
                      Ответить
                      • Это было ещё до DOS. В «Юниксе» вроде было ограничение на длину имени файла 14 символов (включая точки и расширения), в объектных файлах лимит длины идентификатора был больше.

                        Думаю, идентификаторы резали, чтобы типичный код помещался без переносов на мониторе шириной 40 или 80 колонок символов.
                        Ответить
                      • >DOS
                        Чувак, когда atoi пилили DOS был примерно так же интересен разработчикам, как тебе интересен чупа-чупс
                        Ответить
                      • А чего непонятного?

                        atoi — это ascii to int. Это очевидно.

                        А dd — это double dragon
                        Ответить
                        • disk destroyer
                          Ответить
                          • ебать ты олд ))

                            я про ndd лет двадцать не слышал
                            Ответить
                            • Win Me, Norton System works, HDD - WD800BB
                              При проверке Диск Доктору не понравился размер диска С: (4Г), попросил исправить, а я разрешил. В результате диски Е: и F: исчезли. С кучей нужной информации. Powerquest Partition Magic PRO 7.0, Paragon Partition Manager 5.0, V-Com Partition Commander v.6.05 ничего не видят. У кого-нибудь было такое? Реально ли восстановить информацию?


                              https://forum.ixbt.com/topic.cgi?id=11:24576
                              Ответить
                              • «Люди делятся на тех, кто ещё не делает бэкапы, и кто уже делает.»
                                Ответить
                              • > У кого-нибудь было такое?

                                Было. Полный раздел музыки и полный раздел фильмов ушли в /dev/null. Только не от ndd, а от какой-то другой подобной гуйни. С тех пор я делаю с разделами только простые операции: "создать" и "удалить", которые не ковыряются в файлухе.
                                Ответить
                                • а в чем была драма, кстати?

                                  я так понял, ndd запорол MBR (по идее его можно восстановить, если найти начало файлухи) но почему он так сделал?
                                  Ответить
                                • А больше и не нужно. Если хочешь сделать что-то сложное, на всякий случай всю инфу нужно скопировать. Если у тебя есть копия, то проще будет снести всё и разбить как надо, без пердолинга.
                                  Ответить
                                  • > Если у тебя есть копия, то проще будет снести всё и разбить как надо, без пердолинга.

                                    This.
                                    Ответить
                                  • ну вообще можно ресайзить. Это отлично делают и diskpart/disk manager в пинде, и parted / resize2fs

                                    Правда parted как раз дает слишком много свободы, и можно случайно налажать
                                    Ответить
                                    • > можно ресайзить
                                      > resize2fs

                                      Ну такое... Если в единицах измерения нигде не запутаешься. Т.е. всё равно надо копию. А если есть копия, то нафиг пердолинг?

                                      Тем более после ресайза, если это не последний раздел, как правило нужно ещё какие-то разделы подвинуть. А вот это уже НИХУЯ не атомарная операция в отличие от resize2fs.

                                      З.Ы. Хотя даже копия не спасёт т.к. отрубленный хвост ты заметишь через год после того как забудешь про ресайз...
                                      Ответить
                                      • Ммм, какая FS! Спасибо, отресайзил.
                                        Ответить
                                      • хз, я расширял вообще без проблем

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

                                        По-хорошему 99.9% ресайза должно происходить в онлайне через основной драйвер.

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

                                        А если ты начнёшь писать утилиту снуля -- придётся все эти механики изобретать заново. И по-любому будет больше багов, чем в выдроченном за десятилетия драйвере.
                                        Ответить
                                        • Ммм, какой драйвер! Спасибо, выдрочил.
                                          Ответить
                                        • Раньше это делали через ДОС, где программа работала монопольно. Правда, оставалась лазейка для распидорашивания файловой системы — TSR, которые во время процесса могли что-то попытаться записать.
                                          Ответить
                                        • Драйвер чего? Напомню, что у разделов (MBR/GPT) и у файловых систем свои драйверы. И это я еще не гыгыкал на тему LVM/динамических дисков.
                                          Ответить
                                          • Драйвер файлухи. Файлы к началу диска лучше и аккуратнее него никто не подвинет.
                                            Ответить
                                            • мм, да.. так и работает дефрагментатор в впинде.

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

                                              Я даже как-то не задумывался как это работает в юниксе. Там resize2fs это делает?
                                              Ответить
                              • Некоторые программы отвергали разделы FAT16 больше двух гигов. Четырёхгиговые разделы официально поддерживались только Windows NT, на них размер кластера был 64 килобайта.

                                NDD не только подрезал размер до двух гигов, он ещё мог поменять размер кластера на 32 килобайта, тогда будут потеряны вообще все файлы.

                                С FAT32 же NDD вообще не работал.
                                Ответить
                                • Скорее всего ты прав: у несчастного питуза из 2003-го года (хочу туда, кстати) нортон диск дестроер пидорнул 4Г раздел именно по этому
                                  Ответить
                                  • Это примерно как пойти с fdisk'ом на GPT.
                                    Ответить
                                    • fdisk скажет, что диск не размечен, и услужливо предложит его разметить?
                                      Ответить
                                      • Да не, специально от этого там защитный раздел на весь диск описан в MBR.
                                        Ответить
                                        • тогда он увидит один раздел всего?:)
                                          Ответить
                                          • Один, причём с хитрым кодом ФС, так что ни одна ОС (не поддерживающая GPT) его не смонтирует.
                                            Ответить
                                      • Он может сказать, что MBR запорота и предложить его запустить с ключом /MBR, чтобы переписать в MBR правильный код.
                                        Ответить
                                  • Весёлое тогда время было: ДОС с кластерами по 64К по факту работал (ибо ему было плевать, на какую константу делить, чтобы перевести seek в номер кластера), а утилиты работать отказывались (у того же дефрагментатора кластер мог не влезть в буфер, потому что документированы были кластеры до 32К включительно, под них и писали утилиты).
                                    Ответить
                                    • зачем нужны были такие большие кластеры? чтобы поддержать очен большие разделы и не вылезти за пределы какого-то типа, которым описывалось максимальное количество кластеров?
                                      Ответить
                                      • В FAT16 ты принципиально не мог создать более 64К штук кластеров. Тупо потому что номер кластера ограничивался 16 битами.

                                        Если у тебя раздел на 32М, то всё круто: 1 кластер = 1 сектор (512 байт). Ну а для других размеров раздела сам догадаешься, как получался размер кластера.

                                        На разделах до 32М (в том числе и на флопиках) применяли FAT12. Там вообще можно было создать не более 4080 кластеров (4096 минус зарезервированные значения).
                                        Ответить
                                        • То есть просто нехуй было использовтаь FAT16 для больших разделов, иначе NDD заругает
                                          Ответить
                                          • А другой и не было поди?
                                            Ответить
                                            • FAT32 появилась в Win95 OSR2. Она не поддерживалась в OSR1 и в оригинальной Чикаге, в NT 4.0, в NT 3.x и во всех ДОС'ах (кроме встроенного в OSR2/98/Me).

                                              IBM PC DOS 7.1, поддерживающий FAT32 все видели только в виде демки. Free DOS с поддержкой FAT32 вышел, когда он уже был не очень нужен.
                                              Ответить
                                              • в nt 4.0sp5 был fat32
                                                Ответить
                                                • > nt 4.0sp5

                                                  Ну это как 98-ю SE называть 98-й... Этот сервиспак уже поди времён двухтысячной?
                                                  Ответить
                                                  • я напиздел кстати
                                                    с последним sp она стала понимать ntfs5, а вроде для fat32 все равно нужен был сторонний драйвер

                                                    ну sp вышел конечно уже когда была w2k, но nt4-то всё равно использовали, я еще ее в 2003-м году видел
                                                    Ответить
                              • > ничего не видят

                                Сейчас уже есть программы, которые пытаются в неразмеченной области или в хвосте раздела найти что-то похожее на корневую директорию, бутсектор и восстановить потерянные разделы. Тогда с этим было хуже, потеряшек нужно было искать вручную дискэдитором.
                                Ответить
                        • Про atoi Джо Дассен что-то пел.
                          Ответить
                    • >А вот в C# тупо сделали, там слишком понятные именования, что в доку никто не заглядывает.


                      И очень зря. Потом у нас хуёвый код и дыры. Что вообще за привычка пользоваться говном не почитав мануал?
                      Ответить
      • Не знал, что ты джавист. А я тебя пить звал..
        Ответить
        • Ну ты сам виноват. Если бы я знал, что ты на самом деле Кучма, я может быть и пришел бы.
          Ответить
          • «Кучма» это «хуйло»

            https://images.novyny.live/images/thumbnail/original/615e9775afba0-putyn-1.jpg
            Ответить
    • Ахахах, оказывается YYYY дебилы реально существуют

      Они даже баги заводят:
      https://bugs.openjdk.java.net/browse/JDK-8279383
      Пачинити!!!! Йажа сламалась!111
      Ответить
      • Ахах, а разработчики Jawa не дебилы, что добавили такую хуету?
        Ответить
        • До сегодняшнего дня даже не знал о такой проблеме.

          yyyyMMdd просто идиоматичная конструкция, которую я видел десятки раз.
          И как-то запомнил что MM — исключение и его надо писать большими, потому что mm это минуты.
          А yy и dd маленькими. Даже не думал что есть YYYY

          > а разработчики Jawa не дебилы, что добавили такую хуету?

          Нет. Общеизвестно что даже самая полоумная хуета — это фича, если её задокументировали.
          Ответить
          • А что делает YYYY в двух словах для тех кто не читал ман?

            З.Ы. Week year... Блядь, что это за хуита? Выровненный на недели год?
            Ответить
            • Y (uppercase) is 'week-based-year'.

              По-моему, эти кретины десятилетиями бегают по одним и тем же граблям

              https://stackoverflow.com/questions/8686331/y-returns-2012-while-y-returns-2011-in-simpledateformat
              Ответить
            • Week-based year. Грубо говоря, в этом случае год всегда начинается с воскресенья. Используется разными питкухами, у которых понедельная отчетность и всю неделю нужно относить в какой-то один год.
              Ответить
          • Кресты тоже задокументированы в десяти томах, что не мешает им быть говном.
            Ответить
          • PHP тоже задокументирован, но почему-то вы его обсираете
            Ответить
            • Кто обсирает?

              Да тут только «PHP» и форсят.
              https://govnokod.ru/27932#comment756227
              Ответить
      • > 8279383

        Ого сколько в этом дерьме багов.
        И это всё умножить на 3 биллиона устройств.
        Ненавижу JAWA.
        Ответить
        • Леонід Данилович. Це ж було вже 10 років назад!
          https://www.youtube.com/watch?v=csmOuJFOeVw

          https://stackoverflow.com/questions/8686331/y-returns-2012-while-y-returns-2011-in-simpledateformat
          Ответить
    • Не понимаю иронии на предмет джавы.
      Джава -- язык будущего.

      Джава кросс-платформенна, что позволяет программисту один раз написать код, и запустить его везде. По исследованиям независимой ассоциации JavaFanGroup кроссплатформенность снижает стоимость разработки на 22.6%.

      Джава поддерживает ООП, а по исследованиям независимой ассоциации ObjectFanGroup использование объектно-ориентированного подхода позволяет сократить стоимость разработки на 12.6% по сравнению с устаревшим процедурным подходом.

      Наконец джава управляет памятью сама в отличие от устаревшего языка C/C++, где такое управление делается вручную, и по исследованиям независимой GCFanGroup это позволяет сократить стоимость разработки на 16.78%.

      Более трех миллонов устройств в мире уже поддерживают Java. Присоединяйтесь!
      Ответить
      • > По исследованиям независимой ассоциации JavaFanGroup
        > независимой
        > JavaFan

        upd: а ты хорош, я даже поверил пока до третьего параграфа не дошел
        Ответить
      • > Более трех миллонов устройств

        Ну миллиардов же...
        Ответить
        • Ну биллионов же.
          Ответить
          • Блядь, ну вот опять слово, которое означает хуй пойми что... И 10**9 (сейчас) и 10**12 (изначально).

            Но в применении к джаве это всё-таки миллиарды а не триллионы, очевидно.
            Ответить
      • > поддерживают

        Всего лишь поддерживают? Я думаю реально запускают..


        Фу, какой грязный маркетинг
        Ответить
        • Смартфоны, планшеты и другие устройства на базе Google Android доступны практически каждому.

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

          Высокая окупаемость вложенных в разработку мобильного приложения инвестиций – ещё одна важная причина популярности Java.
          Ответить
      • Поддерживаю!

        Основным преимуществом Java является поддержка концепции объектно-ориентированного программирования (ООП). Это позволяет писать разделённые и повторно используемые программные компоненты, строя строгую иерархию приложений.

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

        Другие языки программирования в той или иной степени привязаны к функциям программно-аппаратных платформ, но слоган Java гласит: «Напиши один раз, запускай где угодно». Кроссплатформенность способствует распространению языка.

        С 1990 года Java используется как платформа для разработки мобильных приложений и до сих пор остаётся одним из наиболее востребованных языков программирования в этой сфере.
        Ответить
      • > трех миллонов
        > миллонов
        У меня от этого два охлобыстина
        Ответить
    • Я против JAWA.
      Ответить
      • > против JAWA

        Чего? Отличные же мотоциклы были в своё время.
        Ответить
      • > Я против JAWA.

        JlEOHuD_Ky4Ma — мой президент!
        Ответить
        • Кучма - унылое говно уровня Примакова. Нам нужен кто-то из знатоков.
          Кстати, Влад Листьев (царствие небесное, безвременно убиенному) был бы очень неплохим презиком. Оппозиционный еврей - большая редкость.
          Ответить
          • >Кстати, Влад Листьев (царствие небесное, безвременно убиенному) был бы очень неплохим презиком

            https://youtu.be/U3dZwFPu890?t=1216
            Ответить
    • лучше бы новые плюсы создал
      Ответить

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