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

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

    +5

    1. 1
    2. 2
    std::string cmd = "some command";
    Socket.Write( cmd.c_str(), strlen( cmd.c_str() ) );

    сишные плюсЫ

    absolut, 02 Октября 2015

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

    +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
    <?php
    if(!isset($_GET['conn'])) { $conn = "yes";}
       else {$conn = $_GET['conn'];}
       if(!isset($_GET['kat'])) { $kat = $kateg[0];}
       else {$kat = $_GET['kat'];}
        if(!isset($_GET['start'])) $start = 0;
      else $start = $_GET['start'];
      if(isset($_GET['torgi_id'])) $torgi_id = $_GET['torgi_id']; 
     
      // Устанавливаем соединение с базой данныъ
      require_once("../config.php");
      // Формируем и выполянем SQL-запрос на удаление записи в таблице users 
      $query = "DELETE FROM torgi 
                WHERE torgi_id=".$_GET['torgi_id'];
      mysql_query($query);	
      $query = "DELETE FROM news 
                WHERE torgi_id=".$_GET['torgi_id'];
    			
      if(mysql_query($query))
      {
        // Осуществляем автоматический переход на страницу администрирования
        echo "<HTML><HEAD>
               <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?conn=$conn&kat=$kat&start=$start'>
              </HEAD>";
      }
      else puterror("Ошибка при обращении к таблице документов");
    ?>

    в целом весь проект состоит из одних Injection. На последок автор демонстриует оригинальный редирект.
    Проект очень известный и этот код до сих пор крутится в бою)

    nik757, 06 Сентября 2015

    Комментарии (94)
  4. Java / Говнокод #17695

    +84

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    int size = delete.count();
    for (int i = 1; i < (size + 1); i++) {
       deleteDelegation(i);
       i--;
       if (i == 0) break;
    }

    Задание: надо удалить все делегированные права.

    shainek, 25 Февраля 2015

    Комментарии (94)
  5. C++ / Говнокод #17512

    +141

    1. 1
    strcat(strcpy(malloc(strlen(argv[0]) + sizeof(".track")), argv[0]), ".track")

    LispGovno, 24 Января 2015

    Комментарии (94)
  6. JavaScript / Говнокод #16404

    +129

    1. 1
    if (i.toString().indexOf('.') == -1) { ... }

    Ещё один способ проверить, целое ли число.

    someone, 22 Июля 2014

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

    +163

    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
    function loading() {
         $('#close').hide(function() {
          $('#loading').show(function () {
            setTimeout(function(){
                $('#loading2').show(function() {
                setTimeout(function(){
                  $('#loading3').show(function () {
                    setTimeout(function(){
                      $('#vk').show(function() {
                        setTimeout(function(){
                         $('#odn').show(function() {
                          setTimeout(function(){
                            $('#fb').show(function() {
                              setTimeout(function(){
                               $('#tw').show(function () {
                                $('#geo').show();
                                setTimeout(function(){
                                  payment();
                                },1300);
                               });
                              },1600);
                            });
                          },1700);
                         });
                        },1400);
                      });
                    },1600);
                  });
                },1900);
              });
            },1600);
          });
         });
         }

    Из исходного кода сайта, "раскрывающего" анонимов на аск.фм

    TRANE73, 13 Мая 2014

    Комментарии (94)
  8. Си / Говнокод #14087

    +108

    1. 1
    assert(buf=malloc(BUF_SIZ));

    А в релизе мы сэкономим памяти

    crastinus, 10 Ноября 2013

    Комментарии (94)
  9. Python / Говнокод #12920

    −105

    1. 1
    2. 2
    3. 3
    Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.
    
    При решении этой задачи не стоит пользоваться инструкцией if.

    Вообще не разбираюсь в строках. Помогите пожалуйста.

    alexsid13, 19 Апреля 2013

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

    +23

    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
    99. 99
    #include <iostream>
    #include <stdlib.h>
    #include <typeinfo>
     
    using namespace std;
     
    #define ololo for(volatile register int i=0;i<10;++i);
     
    struct VB
    {
            virtual void f() const =0;
    };
     
    class V1: public VB
    {
            void f() const {ololo}
    };
     
    class V2: public VB
    {
            void f() const {ololo}
    };
     
    struct TU1
    {
            inline void f() const {ololo}
    };
     
    struct TU2
    {
            inline void f() const {ololo}
    };
     
    struct TUB
    {
            const type_info* type;
            union 
            {
                    TU1 tu1;
                    TU2 tu2;
            };
     
            template<class T>
            void ctor()
            {
                    this->type=&typeid(T);
            }
            
            template<class T>
            inline void call(const T& f)
            {
                    if(this->type==&typeid(TU1))
                            f(this->tu1);
                    else
                            f(this->tu2);
            }
    };
     
    enum {N=1000, N2=N*50};
     
    int main() {
            cout<<"ok"<<endl;
            {
                    VB*v[N];
                    for(int i=0;i<N;++i)
                            if(rand()%2)
                                    v[i]=new V1;
                            else
                                    v[i]=new V2;
                    volatile clock_t a=clock();
                    for(int j=0;j<N2;++j)
                            for(int i=0;i<N;++i)
                                    v[i]->f();
                    volatile clock_t b=clock();
                    cout<< (double)(b - a) / CLOCKS_PER_SEC<<endl;
            }
            cout<<"ok"<<endl;
            {
                    TUB v[N];
                    for(int i=0;i<N;++i)
                            if(rand()%2)
                                    v[i].ctor<TU1>();
                            else
                                    v[i].ctor<TU2>();
                    struct Continuation
                    {
                            inline void operator()(const TU1& a) const {a.f();}
                            inline void operator()(const TU2& a) const {a.f();}
                    } cps;
                    volatile clock_t a=clock();
                    for(int j=0;j<N2;++j)
                            for(int i=0;i<N;++i)
                                    v[i].call(cps);
                    volatile clock_t b=clock();
                    cout<< (double)(b - a) / CLOCKS_PER_SEC<<endl;
            }
            cout<<"ok"<<endl;
            return 0;
    }

    http://ideone.com/plFaLM
    Тут в соседней теме разгорелся спор, что быстрее - полиморфизм виртуальных функций или полиморфизм tagget union. По сути последнее - выбор по if нужной виртуальной функции. Говорят в Java быстрее второе.
    Тема родилась из http://govnokod.ru/12025#comment158188
    Получилось по результатам измерений:
    Виртуальные функции: 1.8 секунд.
    tagget union: 1.94 секунд.
    Притом это всего 2 полиморфных типа в tagget union, а если рост числа полиморфных классов будет расти, то разрыв между виртуальными функциями и tagget union только увеличится. Притом производительность tagget union будет только падать.
    Тема поднята ещё со взглядом на функциональные языки. Это ведь там так модны ADT с постоянным внутри ifподобным паттернматчингом по ним.
    Жду указания на косяки или способы поднять производительность tagget union.

    LispGovno, 31 Октября 2012

    Комментарии (94)
  11. Куча / Говнокод #11393

    +124

    1. 1
    2. 2
    http://habrahabr.ru/post/147484/
    Я просто оставлю это здесь.

    Fai, 10 Июля 2012

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