1. Список говнокодов пользователя j123123

    Всего: 335

  2. Си / Говнокод #23348

    +2

    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
    // https://github.com/vk-com/kphp-kdb/blob/ce6dead5b3345f4b38487cc9e45d55ced3dd7139/bayes/bayes-data.c#L569
      for (i = j = 0; v[i]; i++) {
        f[j] = i;
        if (v[i + 1] == '#' && (v[i] == '&' || v[i] == '$')) {
          int r = 0, ti = i;
          if (v[i + 2] != 'x') {
            for (i += 2; v[i] != ';' && v[i]; i++) {
              if ('0' <= v[i] && v[i] <= '9') {
                r = r * 10 + v[i] - '0';
              } else {
                break;
              }
            }
          } else {
            for (i += 3; v[i] != ';' && v[i]; i++) {
              if (('0' <= v[i] && v[i] <= '9') ||
                  ('a' <= v[i] && v[i] <= 'f') ||
                  ('A' <= v[i] && v[i] <= 'F')) {
                r = r * 16;
                if (v[i] <= '9') {
                  r += v[i] - '0';
                } else if (v[i] <= 'F') {
                  r += v[i] - 'A' + 10;
                } else {
                  r += v[i] - 'a' + 10;
                }
              } else {
                break;
              }
            }
          }
          if (r == 0) {
            bad[j] = 0;
            pv[j++] = v[i = ti];
          } else {
            bad[j] = 1;
            pv[j++] = r;
            if (v[i] != ';') {
              i--;
            }
          }
        } else if (v[i] == '%' && '0' <= v[i + 1] && v[i + 1] <= '7' &&
                                (('0' <= v[i + 2] && v[i + 2] <= '9') ||
                                 ('a' <= v[i + 2] && v[i + 2] <= 'f') ||
                                 ('A' <= v[i + 2] && v[i + 2] <= 'F'))) {
          int r = (v[i + 1] - '0') * 16;
          if (v[i + 2] <= '9') {
            r += v[i + 2] - '0';
          } else if (v[i + 2] <= 'F') {
            r += v[i + 2] - 'A' + 10;
          } else {
            r += v[i + 2] - 'a' + 10;
          }
          i += 2;
          if (r != ':' && r != '/' && r != '=' && r != '?' && r != '&' && r != '+') {
            bad[j] = 1;
          } else {
            bad[j] = 0;
          }
          pv[j++] = r;
        } else {
          bad[j] = 0;
          pv[j++] = v[i];
        }
      }
      f[j] = i;
      pv[j] = 0;
    
      for (i = 0; i < j; i++) {
        if ('A' <= pv[i] && pv[i] <= 'Z') {
          pv[i] = pv[i] - 'A' + 'a';
          bad[i] += 2;
        }
      }

    Очередной ебаный пиздец из kPHP
    В предыдущих сериях:
    http://govnokod.ru/19842
    http://govnokod.ru/15406

    j123123, 22 Сентября 2017

    Комментарии (20)
  3. C++ / Говнокод #23347

    +2

    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
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    string shifarhex(string count)
    {
    
      string take,take2;
    string getch1;
    
    
    	getch1=count;
    
        string sub1 = "0000";//2 to 3		 31
       unsigned int pos1 = getch1.find(sub1,0);
      if(pos1 != string::npos)
      {
       take2="0"; 
      }
         string sub2 = "0001";//2 to 3		 31
       unsigned int pos2 = getch1.find(sub2,0);
      if(pos2 != string::npos)
      {
       take2="1"; 
      }
       string sub3 = "0010";//2 to 3		 31
       unsigned int pos3 = getch1.find(sub3,0);
      if(pos3 != string::npos)
      {
       take2="2"; 
      }
       string sub4 = "0011";//2 to 3		 31
       unsigned int pos4 = getch1.find(sub4,0);
      if(pos4 != string::npos)
      {
       take2="3"; 
      }
       string sub5 = "0100";//2 to 3		 31
       unsigned int pos5 = getch1.find(sub5,0);
      if(pos5 != string::npos)
      {
       take2="4"; 
      }
         string sub6 = "0101";//2 to 3		 31
       unsigned int pos6 = getch1.find(sub6,0);
      if(pos6 != string::npos)
      {
       take2="5"; 
      }
          string sub7 = "0110";//2 to 3		 31
       unsigned int pos7 = getch1.find(sub7,0);
      if(pos7 != string::npos)
      {
       take2="6"; 
      }
          string sub8 = "0111";//2 to 3		 31
       unsigned int pos8 = getch1.find(sub8,0);
      if(pos8 != string::npos)
      {
       take2="7"; 
      }
        string sub9 = "1000";//2 to 3		 31
       unsigned int pos9 = getch1.find(sub9,0);
      if(pos9 != string::npos)
      {
       take2="8"; 
      }
       string sub10 = "1001";//2 to 3		 31
       unsigned int pos10 = getch1.find(sub10,0);
      if(pos10 != string::npos)
      {
       take2="9"; 
      }
    
       string sub11 = "1010";//2 to 3		 31
       unsigned int pos11 = getch1.find(sub11,0);
      if(pos11 != string::npos)
      {
       take2="A"; 
      }
        string sub12 = "1011";//2 to 3		 31
       unsigned int pos12 = getch1.find(sub12,0);
      if(pos12 != string::npos)
      {
       take2="B"; 
    
      }
       string sub13 = "1100";//2 to 3		 31
       unsigned int pos13 = getch1.find(sub13,0);
      if(pos13 != string::npos)
      {
       take2="B"; 
      }
       string sub14 = "1101";//2 to 3		 31
       unsigned int pos14 = getch1.find(sub14,0);
      if(pos14 != string::npos)
      {
       take2="D"; 
      }
        string sub15 = "1110";//2 to 3		 31
       unsigned int pos15 = getch1.find(sub15,0);
    ...

    http://www.sql.ru/forum/1269897/delaem-arhivator
    Вореционное зожатие битов

    j123123, 21 Сентября 2017

    Комментарии (1)
  4. C++ / Говнокод #23305

    +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
    void Assembler::divsd(XMMRegister dst, Address src) {
      NOT_LP64(assert(VM_Version::supports_sse2(), ""));
      InstructionMark im(this);
      simd_prefix(dst, dst, src, VEX_SIMD_F2);
      emit_byte(0x5E);
      emit_operand(dst, src);
    }
    
    void Assembler::divsd(XMMRegister dst, XMMRegister src) {
      NOT_LP64(assert(VM_Version::supports_sse2(), ""));
      int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F2);
      emit_byte(0x5E);
      emit_byte(0xC0 | encode);
    }
    
    void Assembler::divss(XMMRegister dst, Address src) {
      NOT_LP64(assert(VM_Version::supports_sse(), ""));
      InstructionMark im(this);
      simd_prefix(dst, dst, src, VEX_SIMD_F3);
      emit_byte(0x5E);
      emit_operand(dst, src);
    }
    
    void Assembler::divss(XMMRegister dst, XMMRegister src) {
      NOT_LP64(assert(VM_Version::supports_sse(), ""));
      int encode = simd_prefix_and_encode(dst, dst, src, VEX_SIMD_F3);
      emit_byte(0x5E);
      emit_byte(0xC0 | encode);
    }
    
    void Assembler::emms() {
      NOT_LP64(assert(VM_Version::supports_mmx(), ""));
      emit_byte(0x0F);
      emit_byte(0x77);
    }
    
    void Assembler::hlt() {
      emit_byte(0xF4);
    }
    
    void Assembler::idivl(Register src) {
      int encode = prefix_and_encode(src->encoding());
      emit_byte(0xF7);
      emit_byte(0xF8 | encode);
    }

    https://github.com/openjdk-mirror/jdk7u-hotspot/blob/50bdefc3afe944ca74c3093e7448d6b889cd20d1/src/cpu/x86/vm/assembler_x86.cpp

    Вот эта вот вся ерунда отвечает в Hotspot JVM за генерацию опкодов (чтоб JIT делать). Вы возможно спросите "а где тут говно, j123123?".
    Отвечаю: говно тут на фундаментальном уровне. Такой хуйни по-хорошему вообще не надо писать. Надо формально описать вообще все ебучие опкоды жабового байткода, и все машинные инструкции процессора, которые могут быть порождены жабовым JIT-ом, и потом математически доказать эквивалентность всей этой трансформации какой-нибудь логикой Хоара, системами автоматического доказательства теорем, всякими там Coq, Isabelle и прочей такой сранью, о которой вероятно слышал roman-kashitsyn, раз он там хачкель и Idris с зависимыми типами задрачивал. Ну и CHayT.

    j123123, 29 Августа 2017

    Комментарии (114)
  5. Си / Говнокод #23278

    +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
    // https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/code/c/1.1%EF%BC%9A%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.c
    
    #include <stdio.h>
    #include <string.h>
    //字符串旋转问题,例如abcdef 左旋2位 变成 cdefab
    
    //暴力移位法
    void leftShift1(char * arr, int n)
    {
        size_t tmpLen = strlen(arr);
        char tmpChar;
        int i, j;
        if (n >= 0)
        {
            for (i = 0; i < n; i++)
            {
                tmpChar = *arr;
                for (j = 0; j < tmpLen - 1; j++)
                {
                    *(arr + j) = *(arr + j + 1);
                }
                *(arr + tmpLen - 1) = tmpChar;
            }
        }
        else
        {
            for (i = 0; i < -n; i++)
            {
                tmpChar = *(arr + tmpLen - 1);
                for (j = tmpLen - 1; j > 0; j--)
                {
                    *(arr + j) = *(arr + j - 1);
                }
                *arr = tmpChar;
            }
        }
    }

    Копаясь в гитхабе, нашел я тут The Art Of Programming By July, написанный каким-то китайцем.
    https://github.com/julycoding/The-Art-Of-Programming-By-July

    j123123, 18 Августа 2017

    Комментарии (5)
  6. Си / Говнокод #23275

    +1

    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
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    static inline void set0b (const uint8_t at, uint64_t bm[static 4])
    {
      bm[at / 64] &= ~(1ULL << (at % 64));
    }
    
    static inline  void set1b (const uint8_t at, uint64_t bm[static 4])
    {
      bm[at / 64] |= 1ULL << (at % 64);
    }
    
    static inline void inv_b (const uint8_t at, uint64_t bm[static 4])
    {
      bm[at / 64] ^= 1ULL << (at % 64);
    }
    
    
    static inline uint8_t find_empt_pos (const uint64_t bm[static 4])
    {
      if (bm[0] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[0]) + 64 * 0;  // __builtin_ctzll - https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
      }
      if (bm[1] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[1]) + 64 * 1;
      }
      if (bm[2] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[2]) + 64 * 2;
      }
      if (bm[3] != UINT64_MAX)
      {
        return __builtin_ctzll(~bm[3]) + 64 * 3;
      }
      fprintf(stderr, "ERROR! No empty space!\n");
      exit (-1);
    }
    
    static inline uint8_t allocate_ll (uint64_t bm[static 4])
    {
      uint8_t tmp = find_empt_pos (bm);
      set1b (tmp, bm);
      return tmp;
    }
    
    static inline void inject(const uint8_t prev_p, const uint8_t next_p, const uint8_t at, struct ll_data a[static 256])
    {
      a[next_p].ll.prev = at;
      a[prev_p].ll.next = at;
    
      a[at].ll.prev = prev_p;
      a[at].ll.next = next_p;
    }
    
    static inline void remove_betw(const uint8_t prev_p, const uint8_t next_p, struct ll_data a[static 256])
    {
      a[prev_p].ll.next = next_p;
      a[next_p].ll.prev = prev_p;
    }
    
    static inline void remove_at(const uint8_t at, struct ll_data a[static 256], uint64_t bm[static 4])
    {
      uint8_t prev_t = a[at].ll.prev;
      uint8_t next_t = a[at].ll.next;
    
      set0b (at, bm);
    
      a[at].ll.prev = next_t;
      a[at].ll.next = prev_t;
    }
    
    
    void add_elem_next (struct ll_all *a, const uint8_t elm, const int value)
    {
      uint8_t pos = allocate_ll (a->bm);
      inject(elm, a->arr[elm].ll.next, pos, a->arr);
      set_elm (pos, value, a->arr);
    }
    
    void add_elem_prev (struct ll_all *a, const uint8_t elm, const int value)
    {
      uint8_t pos = allocate_ll (a->bm);
      inject(a->arr[elm].ll.prev, elm, pos, a->arr);
      a->arr[pos].data = value;
    }
    
    void rem_elem_next (struct ll_all *a, const uint8_t elm)
    {
      set0b (a->arr[elm].ll.next, a->bm);
      remove_betw (elm, a->arr[a->arr[elm].ll.next].ll.next, a->arr);
    }
    
    void rem_elem_prev (struct ll_all *a, const uint8_t elm)
    {
      set0b (a->arr[elm].ll.next, a->bm);
      remove_betw (a->arr[a->arr[elm].ll.prev].ll.prev, elm, a->arr);
    }

    Тру-царская неанскилльная реализация двусвязного списка внутри массива.
    К сожалению, весь код не помещается, см https://wandbox.org/permlink/Ky8fnuqyE0Ahxftm

    j123123, 18 Августа 2017

    Комментарии (37)
  7. C++ / Говнокод #23263

    +1

    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
    #if !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE)
    namespace __detail {
    
    template<typename _Tp, size_t ..._Extra> struct __repeat;
    template<typename _Tp, _Tp ..._Np, size_t ..._Extra> struct __repeat<__integer_sequence<_Tp, _Np...>, _Extra...> {
      typedef __integer_sequence<_Tp,
                               _Np...,
                               sizeof...(_Np) + _Np...,
                               2 * sizeof...(_Np) + _Np...,
                               3 * sizeof...(_Np) + _Np...,
                               4 * sizeof...(_Np) + _Np...,
                               5 * sizeof...(_Np) + _Np...,
                               6 * sizeof...(_Np) + _Np...,
                               7 * sizeof...(_Np) + _Np...,
                               _Extra...> type;
    };
    
    template<size_t _Np> struct __parity;
    template<size_t _Np> struct __make : __parity<_Np % 8>::template __pmake<_Np> {};
    
    template<> struct __make<0> { typedef __integer_sequence<size_t> type; };
    template<> struct __make<1> { typedef __integer_sequence<size_t, 0> type; };
    template<> struct __make<2> { typedef __integer_sequence<size_t, 0, 1> type; };
    template<> struct __make<3> { typedef __integer_sequence<size_t, 0, 1, 2> type; };
    template<> struct __make<4> { typedef __integer_sequence<size_t, 0, 1, 2, 3> type; };
    template<> struct __make<5> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4> type; };
    template<> struct __make<6> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5> type; };
    template<> struct __make<7> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5, 6> type; };
    
    template<> struct __parity<0> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type> {}; };
    template<> struct __parity<1> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 1> {}; };
    template<> struct __parity<2> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 2, _Np - 1> {}; };
    template<> struct __parity<3> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 3, _Np - 2, _Np - 1> {}; };
    template<> struct __parity<4> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
    template<> struct __parity<5> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
    template<> struct __parity<6> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
    template<> struct __parity<7> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 7, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; };
    
    } // namespace detail

    Накопипащенная параша из стандартной библиотеки плюсов для clang/llvm, имеющая отношение к реализации integer_sequence и tuple

    https://github.com/llvm-mirror/libcxx/blob/191f075c6fe7440659781f2603088b2df337c06a/include/__tuple#L101-L139

    https://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160627/163531.html

    j123123, 14 Августа 2017

    Комментарии (2)
  8. 1C / Говнокод #23260

    −3

    1. 1
    2. 2
    3. 3
    https://github.com/covrom/gonec
    
    1C:Enterprise-like language interpreter written in Go https://covrom.github.io/gonec/

    ГОВНЕЦ (govnec)
    Интерпретатор и платформа создания микросервисов на 1С-подобном языке

    Цели

    Интерпретатор создан для решения программистами 1С множества задач, связанных с высокопроизводительными распределенными вычислениями, создания вэб-сервисов и вэб-порталов для работы тысяч пользователей, работы с высокоэффективными базами данных с использованием синтаксиса языка, похожего, но не ограниченного возможностями языка 1С.

    Включив такой интерпретатор в свое решение, Вы можете предоставить высокий уровень сервиса для своих клиентов, который обгонит решения не только ваших конкурентов на рынке 1С, но и конкурентных платформ в enterprise.

    Интерпретатор разрабатывается “от простого к сложному”. На начальных этапах будет включена базовая функциональность многопоточных вычислений и сетевых сервисов. В перспективе планируется организация работы с различными базами данных и визуализация управляемых форм, созданных в конфигураторе.

    Еще никогда не были так просто доступны программистам 1С возможности:

    * Создать микросервис с произвольным сетевым протоколом, развернуть его на linux, в docker контейнере или кластере kubernetes
    * Выполнить сложную многопоточную вычислительную задачу для десятков тысяч подключающихся пользователей за миллисекунды
    * Взаимодействовать с пользователем через web-браузер с минимальным трафиком
    * Сохранять и получать данные с максимально доступной скоростью в key-value базах данн

    j123123, 12 Августа 2017

    Комментарии (39)
  9. Си / Говнокод #23254

    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
    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
    #include <stddef.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void *govno[300] = {NULL};
    
    size_t govnopoindex = 0;
    
    void chisti_govno(void)
    {
      do
      {
        free(govno[--govnopoindex]);
      } while (govnopoindex != 0);
    }
    
    
    char *concat(char *a, char *b)
    {
      char *ptr = malloc(strlen(a)+strlen(b)+4);
      if (ptr == NULL)
      {
        fprintf(stderr, "Huli ty obosralsya, mudak blyad? Ves' heap zasral\n");
        chisti_govno(); // иди под струю мойся
        exit(-1);
      }
      sprintf(ptr, "(%s*%s)", a, b);
      govno[govnopoindex++] = ptr;
      return ptr;
    }
    
    
    char *pow_gen(size_t n, char *a, char *p)
    {
      if (n == 0)
      {
        return a;
      }
      if (n & 1)
      {
        return pow_gen(n >> 1, concat(a, p), concat(p, p));
      }
      else
      {
        return pow_gen(n >> 1, a, concat(p, p));
      }
    }
    
    char* pow_b2(size_t n) {
      return pow_gen(n, "1", "a");
    }
    
    void printfshit(const size_t pow)
    {
      printf("double pow_%zu(double a) {return %s;}\n\n", pow, pow_b2(pow));
    }
    
    
    int main(void)
    {
      printfshit(255);
      chisti_govno();
      return 0;
    }

    http://govnokod.ru/23246#comment388959 - считаю что это заслуживает отдельного говнокода

    j123123, 10 Августа 2017

    Комментарии (107)
  10. Си / Говнокод #23246

    +2

    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
    #include <stddef.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char *concat(char *a, char *b)
    {
      char *ptr = malloc(strlen(a)+strlen(b)+6);
      if (ptr == NULL)
      {
        fprintf(stderr, "da ty ohuel!\n");
        exit(-1);
      }
      sprintf(ptr, "(%s)*(%s)", a, b);
      return ptr;
    }
    
    char *govno[255] = {"a"};
    
    void printfshit(const size_t pow, const char *mul_stuff)
    {
      printf("double pow_%zu(double a) {return %s;}\n\n", pow, mul_stuff);
    }
    
    void genshit(void)
    {
      //printfshit(0,"1");
      size_t end_ind = 1;
      size_t prev_stop = 0;
      size_t end_ind_tmp = 1;
      while (end_ind < 255)
      {
        for (size_t ind1 = 0; ind1 < end_ind_tmp; ind1++)
        {
          for (size_t ind2 = prev_stop; ind2 < end_ind_tmp; ind2++)
          {
            if ( 
                 ((ind1+1) + (ind2+1) < 256) &&
                 (govno[(ind1+1) + (ind2+1)-1] == NULL)
               )
            {
              govno[(ind1+1) + (ind2+1)-1] = concat(govno[ind1], govno[ind2]);
              end_ind++;
            }
          }
        }
        prev_stop = end_ind_tmp;
        end_ind_tmp = end_ind;
      }
      printfshit(1,govno[0]);
      for (size_t i = 1; i < 255; i++ )
      {
        printfshit(i+1,govno[i]);
        free(govno[i]);
      }
    }
    
    int main(void)
    {
      genshit();
      return 0;
    }

    Кодогенератор, написаный специально для Antervis
    http://govnokod.ru/23227#comment388895

    j123123, 08 Августа 2017

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

    +4

    1. 1
    http://blog.extremehacking.org/blog/2017/07/31/hungarian-hacker-arrested-pressing-f12/

    Вкратце: в Будапеште за миллион баксов набыдлокодили систему продажи билетов на общественный транспорт с кучей багов, как например поле с суммой было readonly, но если поправить html в браузере, то можно цену поменять, а на бэкенде никто не стал проверку суммы делать. Пацанчик этот баг нашел, написал в саппорт, а через 2 недели его мусора загребли.

    j123123, 05 Августа 2017

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