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

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

    +166

    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
    function t()
    {
         setTimeout('document.getElementById("qwezxc").innerHTML+="H"',1000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="e"',2000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="l"',3000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="l"',4000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="o"',5000)
         setTimeout('document.getElementById("qwezxc").innerHTML+=","',6000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="W"',7000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="o"',8000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="r"',9000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="l"',10000)
         setTimeout('document.getElementById("qwezxc").innerHTML+="d"',11000)
    }

    Функция для посимвольного вывода надписи «Hello word» (каждая буква выводится с интервалом в одну секунду).

    Найдено на www.html.by.

    ZI_DAN, 11 Июня 2011

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

    +166

    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
    #ifdef _UNICODE
    
    typedef wchar_t char_t;
    
    namespace std
      {
      typedef wstring string_t;
      typedef wistream istream_t;
      typedef wostream ostream_t;
      typedef wifstream ifstream_t;
      typedef wofstream ofstream_t;
      typedef wostringstream ostringstream_t;
      typedef wistringstream istringstream_t;
      typedef wstringstream stringstream_t;
      }
    
    #else // MBCS or SBCS
    
    typedef char char_t;
    
    namespace std
      {
      typedef istream istream_t;
      typedef ostream ostream_t;
      typedef ifstream ifstream_t;
      typedef ofstream ofstream_t;
      typedef string string_t;
      typedef ostringstream ostringstream_t;
      typedef istringstream istringstream_t;
      typedef stringstream stringstream_t;
      }
    
    #endif // _UNICODE

    Продолжаю разребать мега-ровный-код убер-чётких-кодеров.
    В этой серии:
    1. Иньекции в чужой namespace (погладь std сцуко)
    2. Windows[ANSI/UNICODE] == C++[std::string/std:wstring], кодировко-зависимый-независимый код
    3. Читайте матчасть std::basic_string<char> == std::string

    VladislavKurmaz, 10 Июня 2011

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

    +166

    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
    //Класс для генерации кнопок перелистывания страниц
    
    class Pages {
    
        //Если пользователь на англ версии сайта и он на первой странице, генерируем кнопку "Next page"
        public function GeneratePage1En() {
            $this->NextPageHTML = "<a id=\"pg-next\" class=\"pg-next\" href=\"{$this->Se}.php?Page=2&Q={$this->Question}&D={$this->Domain}&Td={$this->Typedate}\">Next page</a>";
        }
    
        //Если пользователь на рус версии сайта и он на первой странице, генерируем кнопку "Следующая страница"
        public function GeneratePage1Ru() {
            $this->NextPageHTML = "<a id=\"pg-next\" href=\"{$this->Se}.php?Page=2&Q={$this->Question}&D={$this->Domain}&Td={$this->Typedate}\">Следущая страница</a>";
        }
    
        //Если пользователь на англ версии сайта и он на >2 странице генерируем кнопку "Next Page" и "Previous Page"
        public function GeneratePagesEn($Page) {
            $this->PrevPageHTML = "<a id=\"pg-prev\" class=\"pg-prev\" href=\"{$this->Se}.php?Page={$this->PrevPage}&Q={$this->Question}&D={$this->Domain}&Td={$this->Typedate}\">Previous page</a>";
            $this->NextPageHTML = "<a id=\"pg-next\"  class=\"pg-next\"  href=\"{$this->Se}.php?Page={$this->NextPage}&Q={$this->Question}&D={$this->Domain}&Td={$this->Typedate}\">Next page</a>";
        }
    
        //Если пользователь на рус версии сайта и он на >2 странице генерируем кнопку "Следующая страница" и "Предыдущая страница"
        public function GeneratePagesRu($Page) {
            $this->PrevPageHTML = "<a id=\"pg-prev\" class=\"pg-prev\" href=\"{$this->Se}.php?Page={$this->PrevPage}&Q={$this->Question}&D={$this->Domain}&Td={$this->Typedate}\">Предыдущая страница</a>";
            $this->NextPageHTML = "<a id=\"pg-next\"  class=\"pg-next\"  href=\"{$this->Se}.php?Page={$this->NextPage}&Q={$this->Question}&D={$this->Domain}&Td={$this->Typedate}\">Следующая страница</a>";
        }
    }

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

    MyNameIsWinner, 09 Июня 2011

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

    +166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $('#protesters-open').click(function() {
    	if ($('#protesters').hasClass('hidden'))
    	{
    		$('#protesters').removeClass('hidden');
    	}
    	else
    	{
    		$('#protesters').addClass('hidden');
    	}
    });

    http://nsk.2gis.ru/media/js/main.js
    вроде серьезная компания, а такого говна там навалом
    раз уж используется jQuery, то можно и toggleClass использовать

    Back, 31 Мая 2011

    Комментарии (15)
  6. C++ / Говнокод #6736

    +166

    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
    #include <dir.h>//ДЛЯ ОПРЕДЕЛЕНИЯ mkdir(ИМЯ ПАПКИ)
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <alloc.h>
    #include <string.h>
    #include <iostream.h>
     int ndig(char x)
    {if('0'<=x&&x<='9')return 0;else return 1;}
    // СТРОКА ВЕДОМОСТИ ДЛЯ ОДНОГО СТУДЕНТА
     struct stud
    {char fio[122];int b[9],ns
    static int nc
    ,nd;
     void out(FILE*fo);stud(){fio[121]=0;}
    stud(FILE*fi);
    stud(stud&s){*this=s;}
    }; //end of stud body
     int stud::nc=44;
     int stud::nd=5;
     stud::stud(FILE *fi)
    {fscanf(fi,"%i ",&ns); fgets(fio,nc,fi);
    for(int j=1;j<=nd;++j)fscanf(fi,"%i",&b[j]);}
    
     void stud::out(FILE*fo=stdout)
    {fprintf(fo,"%3i ",ns);
    fputs(fio,fo); for(int j=1;j<=nd;++j)
    {if(b[j]>=0&&b[j]<6) fprintf(fo,"%3i",b[j]);
    else fprintf(fo,"   ");}
    fprintf(fo,"\n"); if ( fo==stdout) getch();
    }//end of stud
    
    //ВЕДОМОСТЬ ОДНОЙ ГРУППЫ
    //("МАССИВ СТРОК" ДЛЯ ОТДЕЛЬНЫХ СТУДЕНТОВ)
    
     struct grup{ stud**st;//"МАССИВ СТУДЕНТОВ"
    FILE*fi;char title[3][122]//"ШАПКА" ВЕДОМОСТИ
    ,sf[77];
    
    int ms;//ЧИСЛО СТУДЕНТОВ
    void nw();//ПАМЯТЬ ДЛЯ СТУДЕНТОВ
    void out(char*sf); void out(FILE*fo);
    grup(grup&g);grup(int fms){ms=fms; nw();}
    grup(char*sf); grup&operator=(const grup&g);
    void deg();~grup(){deg();} grup(); };
    //end of grup body
     grup::grup(){ms=0;st=0;fi=0;
    for(int j=0;j<3;++j)memset(title[j],0,122);}
    
     void grup::nw()
    {st=new stud*[ms+1];
    if(!st){cout<<"\nst=0  grup::nw()\n";exit(1);}
    for(int j=0;j<=ms;++j)
    {st[j]=new stud;
    if(!st){cout<<"\nst[j]=0\n";exit(1);}
    }}
     grup::grup(char*fsf)
    {strcpy(sf,fsf); char s[77]="\n"; int j;
    fi=fopen(sf,"rt");
    if(!fi)
    {cout<<"\n0)fi=0,sf="<<sf;getch();exit(1);}
    ms=0; while(!feof(fi)){fgets(s,77,fi);++ms;}
    ms-=3; fclose(fi); fi=fopen(sf,"rt");
    if(!fi){cout<<"\nfi\n";exit(1);}
    for(j=0;j<3;++j) fgets((title[j]),77,fi);
    
    //ВВОД "СТУДЕНТОВ" ИЗ ФАЙЛА sf
    nw();for(j=1;j<=ms;++j){stud stj(fi);*st[j]=stj;}
    fclose(fi);
    }
     grup&grup::operator=(const grup&g)
    {if(this==&g)return*this; int j; this->deg();
    fi=g.fi; strcpy(sf,g.sf); ms=g.ms;
    nw(); for(j=0;j<=ms;++j)*st[j]=*g.st[j];
    for(j=0;j<3;++j)strcpy(title[j],g.title[j]);
    return*this;
    }
     grup::grup(grup&g)
    {for(int j=0;j<3;++j)strcpy(title[j],g.title[j]);
    ms=g.ms; strcpy(sf,g.sf);
    nw(); for(j=0;j<=ms;++j)*st[j]=*g.st[j];
    }
     void grup::deg()
    {if(st) {for(int j=0;j<=ms;++j)
    if(st[j]){delete st[j];st[j]=0;}delete[]st;st=0;}
    }
     void grup::out(FILE*fo=stdout)
    {if(fo==stdout)cout<<'\n'; int j=0;
    for(;j<3;j++) fputs(title[j],fo);
    
    for(j=1;j<=ms;j++) st[j]->out(fo);
    }
     void grup::out(char*sf)
    {FILE*fo=fopen(sf,"wt");
    if(!fo){cout<<"\nfo=0\n";exit(1);}
    out(fo); fclose(fo);
    } //end of grup

    Кусок кода с "базовыми классами" для курсовой работы в непоследнем университете Петербурга. Данные "классы" потом по заданию предлагается всячески расширять.
    А потом жалуемся, что студенты ничего не умеют. А кто ж их учит?

    CTRSpirit, 23 Мая 2011

    Комментарии (68)
  7. PHP / Говнокод #6597

    +166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function utf8_substr($str,$start,$end){
       preg_match_all("/./u", $str, $ar);
    
       if(func_num_args() >= 3) {
           $end = func_get_arg(2);
           return join("",array_slice($ar[0],$start,$end));
       } else {
           return join("",array_slice($ar[0],$start));
       }
    }

    Вылысыпыдысты

    telnet, 08 Мая 2011

    Комментарии (14)
  8. PHP / Говнокод #6545

    +166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function unlinkFile($filename) {
      if(unlink($filename)) {
        return true;
      }
    }
    	
    function unsetVar($varname) {
      unset($varname);
      return true;
    }

    Одна из "библиотек" крупного зарубежного коммерческого проекта.

    Ring, 04 Мая 2011

    Комментарии (29)
  9. PHP / Говнокод #6532

    +166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // Если регистрация, то показываем контрольный вопрос
    if($_GET['op'] == 'registration') {
    $vars['c_question'] = true;
    } else {
    $vars['c_question'] = false;
    }

    Классика

    Мартин, 02 Мая 2011

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

    +166

    1. 1
    enum mysymbols={true,flase}

    С товарищем в аудитории на доске писали разные говнокоды, кто какие вспомнит. Заходит препод, оглянул взглядом доску, улыбнулся, и начал писать свою версию (см. выше), приговаривая: "Вот веселуха то начнется!" =)

    1_and_0, 29 Апреля 2011

    Комментарии (45)
  11. C++ / Говнокод #6495

    +166

    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
    class r{
    	r(const r&);
    	r& operator=(const r&);
    public:
    	r(){}
    	template<class t>
    	r& operator,(t *v){
    		return this->operator<<(*v);
    	}
    	template<class t>
    	r& operator<<(t &o){
    		crash_if_fail(dynamic_cast<const void*>(&o));
    		int l = 0;
    		int n = 0, n_ = sizeof(o) / sizeof(void*);
    		while (n < n_){
    			void **a = *((void***)&o + n++);
    			if (IsBadReadPtr(a, sizeof(void*)) || is_stack(a)){
    				continue;
    			}
    			int c = 0;
    			void *d = a[c];
    			while (is_code_segment__(d)){
    				print_info(&l, o, n, d, c, a);
    				d = a[++c];
    			}
    		}
    		return *this;
    	}
    	template<class t>
    	void print_info(int *l, const t &o, int n, void *d, int c, void **a){
    		if (!*l){
    			puts("///////////////////////////////////////////////////");
    			printf("object address %p\n", &o);
    			*l = 1;
    		}
    		if (!c){
    			puts("-=-=-=-=-=-=-=-=-=-");
    			printf("%15.1s%p:__vfptr %p\n", "+", ((char*)((void***)&o + n - 1)) - (char*)&o, a);
    		}
    		printf("%32.p\n", d);
    	}
    };

    34930fb4455e40f4, 28 Апреля 2011

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