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

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

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


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

          https://www.tutorialspoint.com/ru/html/html_marquees.htm
          Ответить
          • Иль Шатров имел удачу написать весьма приятный для мозга (не для ушей!!!) вальс, посвященный Мокшанскому полку и исполняемый на духовом альте. Но Вы его не услышите 9 мая! Парад отменилли.
            Ответить
    • Меня В Осетии пригласили на пир. Хр-рхрхрхр!
      Ответить
    • Своя трудная для того чтобы положить соединение электронной почты HTML на ваш webpage но ее может причинить ненужную проблему spamming для вашего учета электронной почты. Люди которые могут побежать программы для того чтобы сжать эти типы электронных почт и последне используйте их для spamming в различных путях.

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

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

      Примечание: Вы выучите о формах HTML в формах HTML и вы выучите о CGI в наш другой консультационный программировать CGI Perl.

      https://www.tutorialspoint.com/ru/html/html_email_links.htm
      Ответить
    • Макака приде, на «PHP» переведе.
      Ответить
    • Перевел на нормальный высокоуровневый язык, и вместо 14 строк стало 3.

      #include <stdint.h>
      #include <stdio.h>
      
      static void humanize(uint64_t size)
      {
      	char* postfix = "BKMGT";
      	for (; *(postfix + 1) && (size >> 10); size >>= 10, postfix++);
      	printf("%llu%c\n", size, *postfix);
      }
      
      int main()
      {
      	humanize(42);
      	humanize(1024 * 1024);
      	humanize(8192);
      	humanize((uint64_t)1073741824 * 4);
      	humanize(UINT64_MAX);
      }


      Мог где-нить на единичку лажануть, ну да и похуй.
      Ответить
      • 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

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

        То ли дело «Ассемблер» или стековые языки.
        Ответить
        • Мы не обязаны знать язык для школьников и козоебов.
          Ответить
        • выбирал между пельменной и двумя шифтами
          Выбрал шифты

          Перепиши на осемблер чтобы был один щит
          Ответить
        • А в форте кроме хранения промежутких результатов на стеке ещё можно городить циклы с несколькими условиями:
          : 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 + [email protected] HOLD size 0 #S #> TYPE CR ;
          
          42 humanize
          8192 humanize
          1024 1024 * humanize
          1073741824 4 * humanize
          -1 humanize

          https://tio.run/##bY9NC4JAEIbv/[email protected]@[email protected]pbFixoZUrQhfuH81D213ykLWAiSUwjOuaV6MdhOZszWr7vavBUTObLGVeL3ja8EVi48MtPGdDW0Ibgu4jCizFQFMustlQc0qvdiGFakEerDu2ObRGnoD9cJ1Wd518

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

            Да это ж просто 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)

              А в свифт форте можно ещё и отключить проверку завершения конструкций и начинать ветку в одном определении, а заканчивать в другом определении ниже. Можно сделать джамп из середины одного определения в середину другого одним ифом, без гото и без ручной сборки низкоуровневой питушни.
              Ответить
            • >Да это ж просто if (x) break;
              Мы не хочем втоурю пелеменную
              Ответить
              • Правильно мыслишь. Да собственно, тебе и первая не понадобится... Ты когда умрешь?
                Ответить
          • Лажанул, простите
            : 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 + [email protected] HOLD size 0 #S #> TYPE CR ;
            
            42 humanize
            8192 humanize
            1024 1024 * humanize
            1073741824 4 * humanize
            -1 humanize

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

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

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

                Именно поэтому я за планирование.
                Ответить
                • Всё, петух ебаный, ты скрыт.
                  Ответить
                  • Думаешь меня это волнует?

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

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

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

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

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


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

                  Завернуться в целлофан заранее?
                  Ответить

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