1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #25490

    +3

    1. 1
    2. 2
    3. 3
    //  https://stackoverflow.com/questions/313970/how-to-convert-stdstring-to-lower-case?__=1746193182#
    
    std::transform(data.begin(), data.end(), data.begin(), ::tolower);

    Какой багор )))

    BOKCEJIbHblu_nemyx, 31 Марта 2019

    Комментарии (22)
  3. PHP / Говнокод #25452

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    <?php
    error_reporting(E_ALL ^ E_NOTICE);
    include('translate.class.php');
    $x = new translator_text();
    $text = 'Al Hotel Demo si vive in armonia con se stessi, immersi nel verde di una natura rigogliosa, con i boschi di pini, querce e tamerici in un terreno a terrazze sul mare. Il Villaggio Turistico è un moderno centro di vacanze, concepito e costruito per rispondere a tutte le esigenze dei suoi ospiti.';
    echo'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
    echo $x->translate(strip_tags(trim($text)), 'it', 'ru');
    ?>

    Автоматический переводчик текста на "PHP"...
    https://xdan.ru/avtomaticheskij-perevodchik-teksta-na-php-cherez-google-translate.html

    Perevedi_na_PHP, 17 Марта 2019

    Комментарии (53)
  4. Куча / Говнокод #25434

    +3

    1. 1
    MSDN: To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll

    В Windows функции вроде GetVersion задепрекейтили (и остальные более новые функции из SDK) и теперь они всегда возвращают "Windows 8" в том числе на десятке, если приложения не манифестить или ещё чего (а манифестить не всегда возможно, если допустим, разрабатывается плагин под другой софт). В итоге в API куча непонятных правил и разных ЕСЛИ, и нет уверенности в том, реальную ли версию Винды нам возвращает функция, или это опять какой-то shim.

    С появлением rapid release cycle в Windows и автоапдейтов появляется проблема: новые апдейты постоянно ломают ранее рабочий софт. Для этого нужно делать workaround'ы: смотреть какой там у нас билд (1803? 1809?) и включать нужный костыль. Видимо, самим в Microsoft это надоело, что они на полном серьёзе предлагают смотреть file version у каких-нибудь системных файлов в системной папке, чтобы узнать версию ОС наверняка. Официальный говнокод от Майкрософт.

    KGeist, 08 Марта 2019

    Комментарии (11)
  5. Java / Говнокод #25392

    +3

    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
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    /*
     * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     *
     * This code is free software; you can redistribute it and/or modify it
     * under the terms of the GNU General Public License version 2 only, as
     * published by the Free Software Foundation.
     *
     * This code is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     * version 2 for more details (a copy is included in the LICENSE file that
     * accompanied this code).
     *
     * You should have received a copy of the GNU General Public License version
     * 2 along with this work; if not, write to the Free Software Foundation,
     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     *
     * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     * or visit www.oracle.com if you need additional information or have any
     * questions.
     */
    
    /* @test
       @bug 4890726
       @summary Check the correctness of KOI8_U by comparing to KOI8_R
     */
    
    import java.util.*;
    import static java.lang.Character.UnicodeBlock;
    
    public class UkrainianIsNotRussian {
        private static String decode(byte[] bytes, String encoding) throws Throwable {
            String s = new String(bytes, encoding);
            equal(s.length(), 1);
            check(Arrays.equals(s.getBytes(encoding), bytes));
            return s;
        }
    
        private static void realMain(String[] args) throws Throwable {
            final byte[] bytes = new byte[1];
            int differences = 0;
            for (int i = 0; i < 0xff; i++) {
                bytes[0] = (byte) i;
                final String r = decode(bytes, "KOI8_R");
                final String u = decode(bytes, "KOI8_U");
                if (! r.equals(u)) {
                    differences++;
                    final char rc = r.charAt(0);
                    final char uc = u.charAt(0);
                    final UnicodeBlock rcb = UnicodeBlock.of(rc);
                    final UnicodeBlock ucb = UnicodeBlock.of(uc);
                    System.out.printf("%02x => %04x %s, %04x %s%n",
                                      i, (int) rc, rcb, (int) uc, ucb);
                    check(rcb == UnicodeBlock.BOX_DRAWING &&
                          ucb == UnicodeBlock.CYRILLIC);
                }
            }
            equal(differences, 8);
        }
    
        //--------------------- Infrastructure ---------------------------
        static volatile int passed = 0, failed = 0;
        static void pass() {passed++;}
        static void fail() {failed++; Thread.dumpStack();}
        static void fail(String msg) {System.out.println(msg); fail();}
        static void unexpected(Throwable t) {failed++; t.printStackTrace();}
        static void check(boolean cond) {if (cond) pass(); else fail();}
        static void equal(Object x, Object y) {
            if (x == null ? y == null : x.equals(y)) pass();
            else fail(x + " not equal to " + y);}
        public static void main(String[] args) throws Throwable {
            try {realMain(args);} catch (Throwable t) {unexpected(t);}
            System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
            if (failed > 0) throw new AssertionError("Some tests failed");}
    }

    https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/test/jdk/sun/nio/cs/UkrainianIsNotRussian.java

    j123123, 21 Февраля 2019

    Комментарии (159)
  6. 1C / Говнокод #25388

    +3

    1. 1
    Мес = ?(Месяц(ДатаДок) > 9 ,Строка(Месяц(ДатаДок)) ,"0"+ Строка(Месяц(ДатаДок)));

    Формат(ДатаДок, "ДФ=MM") придуман для неудачников!

    Migelek, 19 Февраля 2019

    Комментарии (5)
  7. JavaScript / Говнокод #25377

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    changeTypeNames: function(value) {
            return value.replace(/\[|\]|\,/gi, function(excerpt) {
              if (excerpt === ',') {
                return ', '
              } else {
                return ''
              }
            })
          }

    VueJs. Преобразование JSON массива в стандартную строку.

    DKVitol, 14 Февраля 2019

    Комментарии (0)
  8. Lua / Говнокод #25346

    +3

    1. 1
    2. 2
    3. 3
    do debug.getinfo(1).func() end --рекурсия
    do debug.getinfo(2).func() end --вылет нахуй интерпретатора 5.3 версии без ошибки.
    do debug.getinfo(3).func() end --не существует с таким индексом. Ошибка.

    3oJIoTou_xyu, 01 Февраля 2019

    Комментарии (30)
  9. Java / Говнокод #25332

    +3

    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
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    // https://github.com/TigerVNC/tigervnc/blob/8c6c584377feba0e3b99eecb3ef33b28cee318cb/java/com/jcraft/jsch/Buffer.java#L65-L85
    
      public void putInt(int val) {
        tmp[0]=(byte)(val >>> 24);
        tmp[1]=(byte)(val >>> 16);
        tmp[2]=(byte)(val >>> 8);
        tmp[3]=(byte)(val);
        System.arraycopy(tmp, 0, buffer, index, 4);
        index+=4;
      }
      public void putLong(long val) {
        tmp[0]=(byte)(val >>> 56);
        tmp[1]=(byte)(val >>> 48);
        tmp[2]=(byte)(val >>> 40);
        tmp[3]=(byte)(val >>> 32);
        System.arraycopy(tmp, 0, buffer, index, 4);
        tmp[0]=(byte)(val >>> 24);
        tmp[1]=(byte)(val >>> 16);
        tmp[2]=(byte)(val >>> 8);
        tmp[3]=(byte)(val);
        System.arraycopy(tmp, 0, buffer, index+4, 4);
        index+=8;
      }

    Жабовское байтоебство (судя по всему это такой ntohl) из реализации VNC.
    Вот интересно, в жабке-то unsigned типов нет нихера, но почему-то сделали unsigned двоичный сдвиг (>>>), который работает для этих встроенных signed типов как если б это были unsigned. А как насчет unsigned умножения и деления (сложение и вычитание - то один хер, без разницы, если у нас two's complement)?

    j123123, 28 Января 2019

    Комментарии (58)
  10. C# / Говнокод #25306

    +3

    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
    15. 15
    16. 16
    private static byte shitleft(byte shiftbyte, int shiftno)
    {
        string newbyte2 = Convert.ToString(shiftbyte, 2);
        newbyte2 = newbyte2.PadLeft(8, '0');
    
        string newbyte = "";
        if (shiftno == 0) return shiftbyte;
        else if (shiftno > 7) return 0;
    
        for (int bytecount = 0 + shiftno; bytecount < shiftno + 8; bytecount++)
        {
            if (bytecount > 7) newbyte += newbyte2[bytecount - 8].ToString();
            else newbyte += newbyte2[bytecount].ToString();
        }
        return Convert.ToByte(newbyte, 2);
    }

    Циклический сдвиг. Тоже самое без проверок: (byte)((shiftbyte << shiftno) | (shiftbyte >> (8 - shiftno)))

    Nyamka, 13 Января 2019

    Комментарии (11)
  11. PHP / Говнокод #25293

    +3

    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
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    <?php
    
    $b = array(
      0x0000 => 1095,
      0x5b9d => 1797,
      0x5fa9 => 516,
      0x6273 => 1677,
      0x6572 => 807,
      0x7fb9 => 1143,
      0x7fff => 2598,
    );
    
    foreach(preg_split('#(.{28})#', '123o770n100b234r570m701a888d799l220m966v460 439y833o982e', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $kiss) {
      $kiss = preg_split('#(\d+.)#', $kiss, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
      $bits = (intval($kiss[0] <= $kiss[1])     ) | (intval($kiss[1] <= $kiss[2]) << 1) | (intval($kiss[2] <= $kiss[3]) << 2) | (intval($kiss[3] <= $kiss[4]) << 3) | (intval($kiss[4] <= $kiss[5]) << 4)
              | (intval($kiss[0] <= $kiss[2]) << 5) | (intval($kiss[1] <= $kiss[3]) << 6) | (intval($kiss[2] <= $kiss[4]) << 7) | (intval($kiss[3] <= $kiss[5]) << 8)
              | (intval($kiss[0] <= $kiss[3]) << 9) | (intval($kiss[1] <= $kiss[4]) <<10) | (intval($kiss[2] <= $kiss[5]) <<11) 
              | (intval($kiss[0] <= $kiss[4]) <<12) | (intval($kiss[1] <= $kiss[5]) <<13)
              | (intval($kiss[0] <= $kiss[5]) <<14);
      $mask = gmp_init('539414e0a5380d4e02ab811ae054b81566055c2157014ec0531294c435310aac429d10a62c29832a60c558313a0c4c531306c4c152b054741518a5460d5182ac611b1a06b8852d414b4252d0b0b4298d0a5c42b31074c419b106654198a866215c283b0a0e528386a0e1543850ae222b881ad406b421ad032b444aca11d28466a119544650b194256429591152c454871522354889d2147484e5213b084e9813a4455912a6458991546454e11533054c895a30568ca1a32b08cad03634458d1a22668519a138684cca133604cd11176045d88175405d42175031d44475181d4631518e8463a8172a21ca8b12a2e0a8b9422e540bb110ec458b1174446b111a1c4688d1b0354c0d58435290d4343508ad421d5086ac05aa216a831aa0b8a82d4a0b560654a195056540e95033540cab0346c615318561614a5850d6142e850b1542c2b190ac60a', 16);
      $mask >>= $b[$bits];
      $i5 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i4 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i3 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i2 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i1 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i0 = gmp_intval(gmp_mod($mask,8));
      $kiss = array($kiss[$i0], $kiss[$i1], $kiss[$i2], $kiss[$i3], $kiss[$i4], $kiss[$i5], $kiss[6]);
      print(preg_replace('#\d+#', '', implode($kiss)) . "\n");
    }

    Новогодней петух падал идею http://govnokod.ru/24496#comment450906
    к стати $b можно было оприделить снаруже от sort6 для быстроты

    HACTEHbKA, 07 Января 2019

    Комментарии (86)