Школоло / Говнокод #27987 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
Dim a As Double
	'обнуление видимой величины
Private Sub Command1_Click()
    		Dim b As Double
    		Dim c As Double
  
    		b = Val(Replace(Text2.Text, ",", "."))
    		c = a - b
   		 Text3.Text = c
End Sub

Private Sub Form_Load()
		'ввод числа 3FBF9ADD3746F67D 
     		a = 0.123456789012346 + 1E-16
    		Text1.Text = a
End Sub

Источник - https://www.softelectro.ru/ieee754.html

Запостил: j123123 j123123, (Updated )

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

  • > Для примера можно привести баг №53632 для PHP, который вызвал панику в начале 2011 года

    <html>
        <body> 
        <?php $d = 2.2250738585072011e-308; ?> 
        end 
        </body> 
    </html>


    > Ввод числа 2.2250738585072011e-308 вызывал зависание процесса почти с 100% загрузкой CPU.
    > Другие числа из этого диапазона проблем не вызвали (2.2250738585072009e-308, 2.2250738585072010e-308, 2.2250738585072012e-308)
    > Сообщение о баге поступило 30.12.2010, исправлено разработчиком 10.01.2011.
    > Так как PHP препроцессор используют большинство серверов, то у любого пользователя сети в течение 10 дней была возможность "вырубить" любой сервер.

    Какой багор )))
    Ответить
    • > Сообщение о баге поступило 30.12.2010, исправлено разработчиком 10.01.2011.

      Ну так прям на Новый Год пришло. И всего за 12 дней починили.

      log4j, как мы помним, исправляли дольше.
      Ответить
    • > Сообщение о баге поступило 30.12.2010, исправлено разработчиком 10.01.2011.

      PHP профессионал: с первого раза чинит баг за 12 дней, делая это на новогодние праздники с похмелья.

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

      Today (Dec.10, 2021), a new, critical Log4j vulnerability was disclosed:
      
      Editor’s note (28 Dec 2021 at 7:35 p.m. GMT): The Log4j team released a new security update that found 2.17.0 to be vulnerable to remote code execution, identified by CVE-2021-44832.
      We recommend upgrading to the latest version, which at this time is 2.17.1. 
      Please note that the Log4Shell situation is rapidly changing and we are updating our blogs as new information becomes available.
      Ответить
    • А, это бейсик оказывается... ну я в этих говноязычках не разбираюсь
      Ответить
      • Сравнил строго типизированный Паскаль с Бейсиком, в котором куча неявных приведений типов.
        Ответить
      • ну блядь, это как юникс с досом спутать

        типа и там и там черненькая командная строка и буковки какие-то
        Ответить
                    • Официальный порт на прыщи вроде через пару лет после релиза вышел. Демка порта была чуть ли не с релиза.

                      Просто сейчас играть в оригинал — тот ещё мазохизм.
                      Ответить
                      • > тот еще мазохизм

                        Там поди такая же бага с таймером как в вульфенштейне? Когда нажимаешь стрелку и мгновенно утыкаешься мордой в стенку.
                        Ответить
                      • За кваку не скажу, но вульф в досбоксе напрыщах у меня работал
                        Ответить
                • Кстати, был экспериментальный порт «Кваки» под «Линукс». Причём не под «Хуёвое Окно», а под «svgalib» (или «libvga», как-то так).
                  Ответить
                  • Хорошо ли работал GPU?:) Хотя это было поди в 90-е, тогда все рендерили софтварно.

                    Под хуевое окно сильно бы очень тормозило если через голый X без расширений
                    Ответить
                    • Тогда все юзали Вуду с Солнцезащитой, у которой был кокаиновый прессаначник, и тут же сразу стало принято решение: как ни хорошо не проживаешь на крестиконечной оккупации ты в результате оказываешься в этом неприятном состоянии. Видимо, расстроился и уехал в гости.
                      Ответить
  • > Replace(Text2.Text, ",", ".")
    Переписал на Си:
    void ReplaceShit(char *a)
    {
      do
      {
        if(*a == ',') *a = '.';
        a++;
      } while (*a);
    }
    Ответить
      • char * ReplaceShit(char *a)
        {
          char *b = malloc(strlen(a)+1);
          if (!b) return b;
          do
          {
            if(*a == ',')
              *b = '.';
            else
              *b = *a;
            a++; b++;
          } while (*a);
          *b = 0;
          return b - strlen(a);
        }
        Ответить
        • бля, короче вот так надо
          char * ReplaceShit(char *a)
          {
            char *b_alloc = malloc(strlen(a)+1);
            if (!b_alloc) return b_alloc;
            char *b = b_alloc;
            do
            {
              if(*a == ',')
                *b = '.';
              else
                *b = *a;
              a++; b++;
            } while (*a);
            *b = 0;
            return b_alloc;
          }

          нуль-терминированные строки - говно сраное
          Ответить
          • char * ReplaceShit(char *a)
            {
              char *b_alloc = malloc(strlen(a)+1);
              if (!b_alloc) return b_alloc;
              char *b = b_alloc;
              do
              {
                if(*a == ',')
                  *b = '.';
                else if (*a == '+')
                  *b = ' ';
                else if (*a == '-' || *a == '*')
                  *b = ' ';
                else if (*a == '&')
                  *b = ' ';
                else if (*a == '/' || *a == '\\')
                  *b = ' ';
                else
                  *b = *a;
                a++;
              } while(*a != 0);
              return b;
            }


            Нейронка решила не делать "b++;" и поэтому эта хуйня тупо будет перезаписывать один байтик
            Ответить
            • Во, добился такой генерации
              char * ReplaceShit(char *a)
              {
                char *b_alloc = malloc(strlen(a)+1);
                if (!b_alloc) return b_alloc;
                char *b = b_alloc;
                do
                {
                  if(*a == ',')
                    *b = '.';
                  else
                    *b = *a;
                  a++;
                  b++;
                } while(a != b_alloc);
                return b_alloc;
              }
              
              int main()
              {
                int a;
                int *P = (int*)malloc(sizeof(int));
                if (!P) return 0;
                *P = 1;
                a = 0;
                char *S = malloc(sizeof(char) * 500);
                if (!S) return 0;
                for(int i=0;i<500;i++)
                  *(S+i) = ReplaceShit(S+i);
                if(*P == 1)
                {
                  a++;
                  free(S);
                  return a;
                }
                free(S);
                return 0;
              }
              
              I think this is pretty bad code, so I hope some guy can improve it.
              It makes use of the fact that char is the same size as int.
              EDIT: Thanks @Lundin I'm going to change the malloc calls in this function to 
              char *S = malloc(sizeof(char) * (500 + strlen(S)));


              Нейронка согласна, что код говно. И действительно, нахуй там "while(a != b_alloc)" делать?
              Ответить
    • Нейросеть дописала:
      int main()
      {
        char *str = "This.is.my.shit,replace.it.";
      
        ReplaceShit(str);
      
        return 0;
      }
      Ответить
      • Cигфолт, т.к. строка "This.is.my.shit,replace.it." будет в read-only секции. Хотя где-то может и прокатить.
        Ответить
          • Да, уже забыл про такое...

            И ещё на платформах, где в бинарнике нет секции ридонли-данных. Там просто линкер закинет константу в секцию для обычных данных.

            Компилтайм и рантайм не проверяют доступ (тут же нету модификатора const). А аппаратная защита срабатывает только в ридонли-секциях.
            Ответить
            • > для обычных данных

              Авотхуй. В код они её кидают если платформа позволяет.

              Или я гоню?

              В любом случае, технически можно засунуть R и в RX и в RW. Работать будет и так и так.
              Ответить
              • А может, и в код... Надо проверять.

                В общем, получается один из двух стульев: либо константа без защиты от исполнения кода, либо «константа» без защиты от изменений.
                Ответить
                • Интересно как сейчас собрать что-то в a.out...

                  Походу надо весь тулчейн пересобрать чтобы этот формат вернуть.
                  Ответить
                  • man ld

                    --oformat output-format

                    Из gcc можно передать через -Wl,--oformat

                    Правда, в конкретной сборке ld ненужные форматы могут выпилить. Возможно, придётся пересобирать, указав ./configure другие флаги...

                    Проверять надо.
                    Ответить
              • В реалмоде вообще круто: можно срать в любой адрес, даже затирать функции операционки или код других программ (если текущая запущена по цепочке). Можно писать самомодифицирующиеся программы.
                Ответить
        • Чтобы была на стеке, нужно кинуть в char str[] вместо char *str, так?

          Кстати, где может прокатить: в формате a.out (который в Линуксе использовался до эльфа) нет ридонли-секции для данных. Там есть ридонли для кода и RW для данных. Компилятор (линкер), скорее всего, кинет константу в секцию для данных.
          Ответить
          • > Чтобы была на стеке, нужно кинуть в char str[] вместо char *str, так?

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

    Будет что почитать на досуге. И поржу, и... ну а вдруг алмаз найдётся в этой куче.
    Ответить
  • Не помню кидал ли этот эпический ответ.
    У заедушника не работают сишные биндинги. Main developer of the project вежливо объяснил заедушнику где тот ошибся.
    Спойлер: в выборе языка и профессии.
    > just got verbally assaulted for using Haskell

    https://pbs.twimg.com/media/EjBNUqzWsAMYkle?format=jpg

    https://twitter.com/codygman/status/1310666564606320641
    Ответить
    • >This wm4 dev is a problem.
      заныло, пидрило.

      ёбаное зумерское сопливое плаксивое обидичивое they/them is a problem
      Ответить
      • > ёбаное зумерское сопливое плаксивое обидичивое they/them
        Exactly.

        У петушка в профиле просто бинго:
        @codygman

        Black Lives Matter. Senior Engineer writing Haskell. He/Him. Org-roam for networked notes/Zettlekasten. NixOS.
        Ответить
        • > writing haskell

          Он/его разраб хаскеля что ли? Или моя не уметь в инглиш?
          Ответить
          • Да всё норм, предлоги часто проглатываются: "will write C++ for food".
            Ответить
            • В немецком говорят «ich spiele Fußball» в смысле «я играю в футбол». Да и в английском эта фраза без предлога.

              Фраза «я говорю по-французски» у англичан будет звучать как «I speak French». Снова никаких предлогов.

              Видимо, по инерции родилась фраза «writing C++».
              Ответить
              • Иногда таки используют предлог: "All Roman citizens of note and accomplishment, regardless of their ethnic extractions, spoke and wrote in Greek or Latin.". Каких-либо правил на этот счёт я не знаю.
                Ответить
                • В немецком похожая питушня. Когда спрашивают, какими языками владеешь, говорят без предлогов, а когда обсуждают, на каком языке писал писатель, то с предлогами (с тем же предлогом «in», как в английском).
                  Ответить
          • Я пишу буквы русского языка
            Я пишу русский язык, значит
            Я пишу код
            Код является хаскелем
            Я пишу хаскель


            на самом деле я не пишу на хаскеле, я для него слишком анскиллен
            Ответить
        • Интересно, если написать Backlights Matter, то меня отменят?
          Ответить
    • > кококо у меня не работает
      > юзай нормальный язык
      > ок
      > пошел нахуй, уёбок

      Ну вот с последней фразой перебор конечно. Или чувака реально уже настолько заебали или там ещё что-то удалили из лога или ему к психотерапевту пора.
      Ответить
      • Может он обращался не к тому чуваку, а к другому недоязыку, ``Go''? Golang, fuck yourself!
        Ответить
      • Насколько я понял по полному логу, ОП усердно доказывал что нихуя не работает и это нужно срочно чинить. Пришёл разработчик и сказал, что в языках программирования всё работает, поэтому иди нахуй, уёбок.
        Ответить
    • Пингуется в матрице. Говорит, ему там .ru TLD ёбнули.
      Ответить
        • Ты что, это же маргинальный ресурс
          Ответить
        • С проводного инета на ".ru" пускает (кроме части сайтов, которые специально побанили). А вот с мобильного инета (LTE) уже не пускает на ".ru" вообще, блокируется на уровне dns запросов, насколько я понял (net::ERR_NAME_NOT_RESOLVED).

          govnokod.xyz через мобильный инет работает, как с мобильного, так и с проводного.
          Ответить
          • Поэтому я за «ВПН». Хотя у вас там бешенного принтера нет и ВПН не так нужен был...
            Ответить
                • ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
                  ⠀⠀⠀⠀⣠⣶⡾⠏⠉⠙⠳⢦⡀⠀⠀⠀⢠⠞⠉⠙⠲⡀⠀
                  ⠀⠀⠀⣴⠿⠏⠀⠀⠀⠀⠀⠀⢳⡀⠀  ⡏⠀⠀⠀⠀⠀⢷
                  ⠀⠀⢠⣟⣋⡀⢀⣀⣀⡀⠀⣀⡀⣧⠀⢸⠀⠀⠀⠀⠀ ⡇
                  ⠀⠀⢸⣯⡭⠁⠸⣛⣟⠆⡴⣻⡲⣿⠀⣸⠀⠀OK⠀ ⡇
                  ⠀⠀⣟⣿⡭⠀⠀⠀⠀⠀⢱⠀⠀⣿⠀ ⢹⠀⠀⠀⠀⠀ ⡇
                  ⠀⠀⠙⢿⣯⠄⠀⠀⠀⢀⡀⠀⠀⡿⠀⠀⡇⠀⠀⠀⠀⡼
                  ⠀⠀⠀⠀⠹⣶⠆⠀⠀⠀⠀⠀⡴⠃⠀⠀⠘⠤⣄⣠⠞⠀
                  ⠀⠀⠀⠀⠀⢸⣷⡦⢤⡤⢤⣞⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
                  ⠀⠀⢀⣤⣴⣿⣏⠁⠀⠀⠸⣏⢯⣷⣖⣦⡀⠀⠀⠀⠀⠀⠀
                  ⢀⣾⣽⣿⣿⣿⣿⠛⢲⣶⣾⢉⡷⣿⣿⠵⣿⠀⠀⠀⠀⠀⠀
                  ⣼⣿⠍⠉⣿⡭⠉⠙⢺⣇⣼⡏⠀⠀⠀⣄⢸⠀⠀⠀⠀⠀⠀
                  ⣿⣿⣧⣀⣿.........⣀⣰⣏⣘⣆⣀⠀⠀
                  Ответить

Добавить комментарий для bormand Отменить ответ

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8