1. Kotlin / Говнокод #26591

    0

    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
    enum class Measures {
        B, KB, MB, GB;
    
        private val size = BigDecimal.valueOf(1024L).pow(ordinal)
    
        companion object {
            fun toHumanSize(value: Long): String {
                val decValue = value.toBigDecimal()
                val measure = values().reversed().find { it.size < decValue } ?: B
                return "${decValue.divide(measure.size, 3, RoundingMode.UP)} $measure"
    
            }
        }
    }

    Запостил: MAKAKA, 20 Апреля 2020

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

    • seo: макака и представление байтов в человекочитаемом формате
      Ответить
    • код ушел на ревью
      https://lh3.googleusercontent.com/proxy/yMJJSJpPHdsALgkPSR1Ojmty6UuM6nmodHMXC-8SoNhmMIkjoAfQiKwhkQQRYnKuCRMOpBqb9sdBMi XcAGPOe5ytcwb6_GB-SztfAEm2Rdfau2bdymdd
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • https://youtu.be/OdKkU-JgcA8?t=1m20s
        Ответить
        • Шатёр HTML перечисляя часть текста показало или горизонтально поперек или вертикально вниз с вашего webpage в зависимости от установок. Это создано путем использование бирки <marquees> HTML.


          Примечание: Бирка <marquee> HTML не может быть поддержана различными браузерами поэтому своим не порекомендованные, что положилась на этой бирке, вместо вы можете использовать яваскрипт и CSS для того чтобы создать такие влияния.

          https://www.tutorialspoint.com/ru/html/html_marquees.htm
          Ответить
          • Иль Шатров имел удачу написать весьма приятный для мозга (не для ушей!!!) вальс, посвященный Мокшанскому полку и исполняемый на духовом альте. Но Вы его не услышите 9 мая! Парад отменилли.
            Ответить
          • показать все, что скрытоvanished
            Ответить
            • Далее жертву заставляют смешать «поток» в смысле «stream» и «поток» в смысле «thread».
              Ответить
              • Далее жертву заставляют смешать VC в смысле Volkov Commander и VC в смысле Visual C
                Ответить
                • Тебе смешно, а я видел, как на одном форуме чуваки обсуждали «DN». Один был уверен, что «DN» — это «Duke Nukem»; другой был уверен, что «DN» — это «Dos Navigator». Несколько страниц обсуждения... Они так и не заподозрили неладного.
                  Ответить
                  • А вот они обсуждали ТП
                    Один думал, что это турбо паскаль, а второй, что это тупая пизда
                    Ответить
                    • А что было дальше?
                      Ответить
                    • Далее жертву заставляют смешать сокет CPU и TCP-сокет.
                      После этого заставляют смешать порты I/O и TCP-порты.
                      Ответить
                      • Далее жертву заставляют смешать еще и COM порты.
                        Далее смешать порты софта на различные архитектуры
                        Далее -- порты из FreeBSD
                        И конечно клуб Порт (что-то такое всплыло из 90-х)

                        А у сокетов хоть этимология очень близкая: и то, и сё розетка


                        Кстати, про порты: у всех бздей так называется портированный на них софт вкупе с обёрточкой для его сборки

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

                                  «Портупея» происходит от франц. роrtе-épée, от porter «носить» + épée «шпага».

                                  Латинское слово «portare» («носить»): «From Proto-Indo-European *per- (“go, traverse”), either as *pr̥-to- or *por-to-, perhaps from a noun having the sense of "way" or "passage". Related to Ancient Greek πείρω (peírō, “I pierce, traverse”)».

                                  В конечном итоге грязные портки восходят к тому же глаголу, что и водный порт, а именно «portare». Портки — потому что их носят, водный порт — потому что в него входят (вносят судно).
                                  Ответить
    • Меня В Осетии пригласили на пир. Хр-рхрхрхр!
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Макака приде, на «PHP» переведе.
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • procedure humanize(size: QWord);
        var
            c: char;
        begin
            for c in 'BKMGT' do
              begin
                if (size shr 10 = 0) or (c = 'T') then break;
                size := size shr 10
              end;
            Writeln(size, c)
        end;
        
        begin
        	humanize(42);
        	humanize(1024 * 1024);
        	humanize(8192);
        	humanize(QWord(1073741824) * 4);
        	humanize(High(QWord))
        end.
        https://ideone.com/qgBgEX

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

        То ли дело «Ассемблер» или стековые языки.
        Ответить
        • Мы не обязаны знать язык для школьников и козоебов.
          Ответить
        • показать все, что скрытоvanished
          Ответить
        • А в форте кроме хранения промежутких результатов на стеке ещё можно городить циклы с несколькими условиями:
          : humanize  ( u -- )
              1 { size c }
              BEGIN
                  size 10 RSHIFT DUP
              WHILE
                  c 5 <
              WHILE
                  TO size
                  c 1+ TO c
              REPEAT
                  DROP
              THEN
              <# C" BKMGT" c + C@ HOLD size 0 #S #> TYPE CR ;
          
          42 humanize
          8192 humanize
          1024 1024 * humanize
          1073741824 4 * humanize
          -1 humanize

          https://tio.run/##bY9NC4JAEIbv/ooXvfSB4JqhlUSlWyt9KLYRHUOyOlRQeSn67eauIAbNYWf2ed@Z3Ulv9@dJP6Yi5Xkfp@yyv55fB6CBDLqOpoIiCN54CJzgI8GEzoKVrERIiRiI1yyYcvibSEpbFixoZUrQhfuH81D213ykLWAiSUwjOuaV6MdhOZszWr7vavBUTObLGVeL3ja8EVi48MtPGdDW0Ibgu4jCizFQFMustlQc0qvdiGFakEerDu2ObRGnoD9cJ1Wd518

          Кстати, итерация по строке здесь совершенно не нужна.
          Ответить
          • > циклы с несколькими условиями

            Да это ж просто if (x) break;
            Ответить
            • Не совсем. Лень объяснять, перевёл на "Си":
              void humanize(unskilled int size)
              {
                  int c = 0;
                  BEGIN:
                  if (size >> 10) { // первый WHILE
                      if (c < 4) {  // второй WHILE
                          size >>=10;
                          ++c;
                          goto BEGIN; // REPEAT
                      }
                      // если я бы использовал стек здесь был бы DROP
                  } // THEN
                  printf("%u%c\n", size, "BKMGT"[c]);
              }
              Ответить
            • Вообще в форте управляющие слова интересно устроены, они просто высерают джампы в код и/или адреса для переходов на стек, можно нагородить не только классические инструкции управления, но и всякого говна запутанного:
              https://forth-standard.org/standard/rationale (См. A.3.2.3.2 Control-flow stack)

              А в свифт форте можно ещё и отключить проверку завершения конструкций и начинать ветку в одном определении, а заканчивать в другом определении ниже. Можно сделать джамп из середины одного определения в середину другого одним ифом, без гото и без ручной сборки низкоуровневой питушни.
              Ответить
            • показать все, что скрытоvanished
              Ответить
              • Правильно мыслишь. Да собственно, тебе и первая не понадобится... Ты когда умрешь?
                Ответить
          • Лажанул, простите
            : humanize  ( u -- )
                1 { size c }
                BEGIN
                    size 10 RSHIFT ?DUP
                WHILE
                    c 5 <
                WHILE
                    TO size
                    c 1+ TO c
                REPEAT
                    DROP
                THEN
                <# C" BKMGT" c + C@ HOLD size 0 #S #> TYPE CR ;
            
            42 humanize
            8192 humanize
            1024 1024 * humanize
            1073741824 4 * humanize
            -1 humanize

            Накакал на стек лишнего.
            Ответить
            • Тебя завернут в целлофан вместе с твоим говном. Приятное соседство.
              Ответить
              • Что уж тут поделаешш, так устроене аргонизмус:

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

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

                Именно поэтому я за планирование.
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • Думаешь меня это волнует?

                    15 июля 1974 года Кристин Чаббак вела собственное ток-шоу на канале WXLT-TV. На восьмой минуте в эфире случилась накладка — анонсированный сюжет о стрельбе в ресторане не мог быть показан по техническим причинам. Узнав об этом, Кристин Чаббак произнесла:

                    «Поддерживая проводимую „Каналом 40“ политику, подразумевающую демонстрацию самой свежей крови и кишок в прямом эфире в полном цвете, вы станете первыми телезрителями, которым будет продемонстрирована попытка суицида в прямом эфире».

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

                    Кристин Чаббак была экстренно госпитализирована в мемориальный госпиталь Сарасоты. Спустя 14 часов женщина скончалась.

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


                    Какая быстрая смерть.
                    Ответить
                • > за планирование

                  Завернуться в целлофан заранее?
                  Ответить
        • >for~in
          Всё-таки новодел.
          А у гостя изящно использованы null-terminated строки старой-доброй Сишечки.
          Ответить
        • >То ли дело «Ассемблер» или стековые языки.

          В «Ассемблере» есть lzcnt и bsr. Они же кроссплатформенный интринсик __builtin_clz.
          Правда там ещё div придётся заюзать.
          Зато без циклов.

          Перевёл на Лажу для пущей читабельности.
          https://ideone.com/X1BxBP
          static void humanize(long size)
          {
          	int x = (Long.SIZE-Long.numberOfLeadingZeros(size))/10;
          	System.out.println((size>>(x*10))+""+"BKMGTPE".charAt(x));
          }
          Ответить
      • >Перевел на нормальный высокоуровневый язык
        Спасибо!
        Ответить
      • Только назвал функцию неправильно. Это явно dehumanise.
        Ответить
      • > BKMGT

        Хм, я один про аниме подумал читая эти буквы?
        Ответить
    • Котлин - параша.
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • ВЪЕББАЛ МИНУС
        Ответить
      • Абсолютно согласен.
        "PHP" - няша.
        "Котлин" - параша.
        Ответить
        • показать все, что скрытоАплодирую стоя.
          Ответить
        • >"Котлин" - параша
          Подтверждаю.
          «ПХП» начианет работать почти мгновенно, «Котлин» конпелируется вечность.

          Причём конпелируется в тормозной жвм байткод.

          В языках, созданных для белых людей не нужно ждать тепловой смерти Вселенной, прежде чем запустить код.
          Ответить
          • показать все, что скрытоМне интересно, почему до сих пор не создали операционную систему на динамическом языке? Это было бы просто охуенно - в каком-нибудь "Проводнике" видеть все файлы операционной системы, свободно менять исходный код любого компонента и сразу видеть результат, безо всяких компиляций.

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

              Вот кстати, в те годы люди реально экспериментировали, пробовали что-то новое. А сейчас за такую идею над тобой просто посмеются: "ко-ко-ко, оно же тормозить будет".
              Ответить
            • показать все, что скрытоВот говорят: "Linux" - ОС с открытым исходным кодом. Все программы под него - тоже "с открытым кодом".
              Где он открытый-то? Хотел внести небольшой патч в "nginx" для своих нужд, нашёл в директории "/usr/sbin" файл "nginx", открываю - а там какая-то поеботня: вначале "ELF" (при чём тут это?), а потом куча "NUL"-ов и какой-то абракадабры. Это, я так понял, на самом деле бинарный файл, скомпилированный (зачем-то) из исходников. Почитал - там несколько часов надо пердолиться, чтобы пару строк изменить или расширение установить. Ну и к чему этот наёб про "open source"?
              Ответить
              • Даже Уёб, в котором извечно был только открытый клиентский код, катится в ту же пропасть с обфускаторами, уёб-паками, asm.jsами и wasmами.
                Ответить
                • показать все, что скрытоДай расцелую.
                  Недавно надо было написать к веб-версии популярного мессенджера ("Instagram Direct") "Chrome"-расширение, которое бы все входящие сообщения автоматически отправляло во внутреннюю базу проекта. При этом, по некоторым причинам, тупо AJAX-запрос не подходил, и надо было перехватывать то, что приходило в веб-сокетах.
                  Раньше, в эпоху нормального, необфусцированного кода, не засранного "WebPack"-ом и каким-то ещё мусором, я бы просто нашёл переменную типа "var ws=...", и прописал бы там "onmessage" со своим кодом. Но теперь, когда "круто" засирать клиентскую сторону десятками мегабай лишнего, просто нахуй не нужного мусора, и где нет прямого доступа ко всем переменным (они, по всей видимости, "заперты" внутри обфусцированных функций) , приходится лезть в "prototype" класса "WebSocket" и топорно переписывать "нативную" функцию.
                  Ответить
                  • однаждый rotoeb решил подрочить

                    но не разобрался как и пришлось снова писать на PHP
                    Ответить
                    • показать все, что скрытоА чё так много лайков и дизлайков? Крутишь небось?
                      Ответить
                      • Ага. Какие-то войны ботов.
                        Ответить
                        • Опа, вторая сторона тоже подключила артиллерию. Пока что видно около 20-ти ботов у стороны A и 15-ти у стороны B. У обоих либо ненадёжное ПО, либо они атакуют вручную.
                          Ответить
                          • Мне ПО писать лень, а аккаунтов как грязи

                            У ноулайфера ожидаемо бомбануло)
                            Ответить
                            • > а аккаунтов как грязи
                              Так, что мы ещё о тебе не знаем?
                              Ответить
                              • Расчехляй свою нейросеть.
                                Ответить
                              • Так это не мои аккаунты

                                Но и не нынешнего уёбка, иначе он бы с них минусил тоже
                                Ответить
                            • показать все, что скрыто>Мне ПО писать лень, а аккаунтов как грязи

                              И мы опять возвращаемся к началу спора.
                              Адепты «PHP» доказали его превосходство на практике.

                              С точки зрения автоматизации практических задач (массового минусования постов) «PHP» оказывается более эффективным инструментом.

                              EDIT: О, боже, буквально через пару секунд на комменте 45 плюсов.
                              Ответить
                              • показать все, что скрытоПолностью согласен.
                                Несколько строчушечек на "PHP" - и твёрдая пипка обеспечена.
                                Ответить
                              • Штош, пусть порадуются сегодня, а то вряд ли у пыхера много поводов для радости в жизни
                                Ответить
                                • Дело не в этом.

                                  А в наглядном примере преимущества «PHP» над языками для лалок.

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

                                    Ты щас троллишь унылее рака, не надо так
                                    Ответить
                                    • >Ты щас троллишь

                                      В том-то и проблема что я говорю абсолютно серьёзно.

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

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

                                        Санитары леса прямо
                                        Ответить
                                        • Ещё раз. Наглядный пример.

                                          Пхпшник Страйкер написал ГК. Ещё один пхпшник иньо написал хуз.

                                          А ещё был супер навороченный ГК от Романа и rat4, написанный на Скале. Где он?

                                          Вот именно поэтому я за «PHP».

                                          Там люди мешки ворочают, а не пиздят. Нужно отдать им должное.
                                          Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • показать все, что скрытоОчень жалко программистов из "Google" и "Яндекса". Каково им всю свою карьеру писать код на компилируемом говне, пытаться понравиться компилятору и завидовать адептам "PHP", у которых всё просто?
                                          Ответить
                                          • Открою секрет: «PHP» тоже компилируется, но только не в нативный код, а в байткод (фактически интерпретатор «PHP» является виртуальной машиной, умеющей исполнять этот код). Пока твой скрипт на «PHP» полностью не скомпилируется, он не запустится. Так что пэхапэшникам тоже приходится «пытаться понравиться компилятору».

                                            Без предварительной компиляции работают bat-файлы, sh-файлы, «TCL» и ещё какое-то древнее скриптовое говно.
                                            Ответить
                                            • я даже не удивлён, что пыхобосота не в курсе тонкостей собственного инструмента
                                              Ответить
                                              • Сейчас интерпретируемых языков в первоначальном смысле этого слова осталось мало.

                                                «Javascript» компилируется в байткод, но только, в отличие от «Java», он не стандартизирован, и у каждого браузера свой (даже между версиями движка опкоды могут меняться).

                                                «Perl», «Python», «Ruby» тоже исполняются виртуальной машиной после компиляции в байткод.

                                                Такая схема появилась в далёких 80-х в «Куикк Бейсике» (он, кстати, может выполняться и без виртуальной машины, потому что можно получить нативный код). С подачи «Микрософта» даже «Бейсик» стали компилировать.

                                                И даже неимперативные языки научились компилировать.

                                                *****

                                                Что же касается «PHP», то хорошие админы знают, что сайт будет работать быстрее, если загрузить расширение «XCache» или «APC» или «OpCache», которые кэшируют скомпилированный байткод, чтобы не компилировать скрипт на каждом запуске. Но «ротоёб», вероятно, просто покупает самый дорогой сервер и считает, что дальше ускорить выполнение нельзя.
                                                Ответить
                                                • > Такая схема появилась в далёких 80-х в «Куикк Бейсике»
                                                  - а лишпы не умели этого ещё раньше?
                                                  Ответить
                                                  • Да, кажется, с лишпов всё и началось. Тогда машины были слабыми и приходилось оттачивать пирфоманс.
                                                    Ответить
                                              • показать все, что скрытоvanished
                                                Ответить
                                                • показать все, что скрытоДа, хорошее было предложение...
                                                  Ответить
                                                • показать все, что скрытоvanished
                                                  Ответить
                                                  • показать все, что скрыто>Ротоёб <...> троллит

                                                    Я действительно придерживаюсь идеи о том, что компиляция не нужна, ООП не нужно и что "PHP" - один из лучших языков. Я неоднократно приводил здесь примеры своего кода. Почему здесь уверены, что абсолютно каждый уважающий себя программист обязан теребить отросток на "Java", "Ruby", "Go", ООП, "Linux", и не имеет права высказать мнение, отличающееся от мнения большинства (в частности, планктона с копрохабра)?
                                                    Ответить
                                                    • > и не имеет права высказать мнение, отличающееся от мнения большинства (в частности, планктона с копрохабра)?

                                                      Именно поэтому я за «Царя» и отечество.
                                                      Ответить
                                                      • всего лишь пересказывает плоские шутки, которые с перерывами гастролируют по говнокоду уже семь лет

                                                        настолько тупое, что свои не может придумать

                                                        с царём не сравнить. царь - величина. а это скрипткидди анскильное
                                                        Ответить
                                                    • Удивлю тебя: активные пользователи «Говнокода» не любят «Хабрахабр».
                                                      Ответить
                                                  • покажи, где я реагировал эмоционально
                                                    Ответить
                                                    • ну ты его как-то так обсираешь в комментах, не?

                                                      хотя конардо вон за минусатор схватился, у него видимо жопа заболела правда
                                                      Ответить
                                                      • показать все, что скрыто>"хотя конардо вон за минусатор схватился, у него видимо жопа заболела правда"

                                                        Всего лишь профилактика беспочвенного исчезновения моих комментариев и кляп в жопе "Desktop"-а. Как только он проспится, я прекращу использование минусатора.
                                                        Ответить
                                                        • болит жопа у птушника, болит

                                                          реально думает, что щас 2013-й год и его минусатор кого-то ебёт
                                                          Ответить
                                                • не понял

                                                  если у кого и бомбануло, то точно не у меня

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

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

                                                  и у кого здесь в итоге бомбануло? :-)
                                                  Ответить
                                            • показать все, что скрытоvanished
                                              Ответить
                                • > а то вряд ли у пыхера много поводов для радости в жизни

                                  Наоборот же. Пыхер — самый счастливый программер.

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

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

                                  Ответить
                          • >Пока что видно около 20-ти ботов у стороны A и 15-ти у стороны B

                            В данный момент одна из сторон перешла в активную контратаку, достигнув почти двухкратного превосходства над противником (29 против 16).

                            Видимо командование дало приказ: Ботов не жалеть, скрипты ещё нарегают.
                            Ответить
                          • 26 ботов у стороны B, порядка трёх запросов в секунду.

                            A — за «Desktop», B — за «rotoeb».
                            Ответить
                      • Я? Нет.

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

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