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

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

    +156

    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
    while(true)
    {
        $i++; if ($i == 10) { $res = array(); break;}
        $site = dq("
        SELECT a.username, a.id, a.url, a.title 
        FROM ylike a 
        LEFT JOIN amp_a_users b ON b.username = a.username 
        LEFT JOIN view_log c ON c.username = '".$user_n."' AND c.video_id = a.id 
        WHERE a.active = '1' AND b.video_credits >0 AND (c.video_id IS NULL AND a.username !='".$user_n."') 
        ORDER BY RAND() 
        LIMIT 1");
    
        $res = mysqli_fetch_array($site);
    	if ($chkd[$res[url]] == 1)
        {continue;}
    	else{
    	  $chkd[$res[url]] = 1;
    	}
    	if (get_likes($res[url])>=0){break;}
    	$res = array();
    }

    Суть функционала в том что пользователи добавляют видео с youtube и покупают так называемые кредиты. И когда кто-то смотрит твое видео он получает 1 кредит, при этом у тебя снимается. Блок кода направлен на то чтобы найти видео, которое ты еще не смотрел, активное и не личное.
    $user_n = логин текущего пользователя. Кода наглядно показывает как правильно, оптимизировано это все реализовать.
    Мало того того что запросы в цикле, так еще и и join происходит по varchar. Кстати чувак вобще вместо id юзеров использует логины пользователей для зависимостей пользователя и его различных данных.
    get_likes() по логике не понятно для чего, потому что функция запрашивает с youtube количество лайков, и по сути оно может быть либо 0 либо больше.

    reddevil, 22 Июля 2014

    Комментарии (39)
  3. Pascal / Говнокод #15982

    +89

    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
    var
      Form1: TForm1;
      i:integer; // глобальные переменные - "общие"
      CritSec:TCriticalSection; // объект критической секции
    implementation
    
    {$R *.dfm}
    
    procedure ThreadFunc;
    begin
    while (i<100000) do
      begin
      CritSec.Enter; // открываем секцию
      i:=i+1; //увеличиваем i
      Form1.Label1.Caption:=IntToStr(i); //из потока к элементам формы нужно обращаться через имя формы
      CritSec.Leave; // закрываем
      end;
    
    endthread(0); // красиво выходим из потока.
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var tid1,tid2,id:longword;
    begin
    i:=0;
    tid1:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id); //запускаем функцию ThreadFunc в потоке
    tid2:=beginthread(nil,0,Addr(ThreadFunc),nil,0,id); //в tid2 присваиваем Идентификатор потока, который пригодится позже.
    end;
    
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    CritSec:=TCriticalSection.Create; // создаём объект критической секции, на всё время работы программы
    end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    CritSec.Free; // разрушаем
    end;
    
    end.

    Уебище, блять, лесное.
    http://grabberz.com/showthread.php?t=24619

    brutushafens, 14 Мая 2014

    Комментарии (39)
  4. Pascal / Говнокод #15864

    +79

    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
    if (Grid.DataSource.DataSet.Name = 'tMMain')
          or (Grid.DataSource.DataSet.Name = 'tMain')
          then
            Tg := Grid.DataSource.DataSet.FieldByName('ARTID').AsInteger
          else
            if Grid.DataSource.DataSet.Name = 'tAnalog' then
              Tg := Grid.DataSource.DataSet.FieldByName('IDPROD').AsInteger
            else
              if Grid.DataSource.DataSet.Name = 'tPriceSet' then
                Tg := Grid.DataSource.DataSet.FieldByName('IDPROD').AsInteger
              else
                if Grid.DataSource.DataSet.Name = 'tProd' then
                  Tg := Grid.DataSource.DataSet.FieldByName('ID').AsInteger
                else
                  Tg := 0;

    Крутое решение проблемы разных полей в разных источниках вызова.
    А вы говорите виртуализация, перегрузка функций....

    TikiRU, 29 Апреля 2014

    Комментарии (39)
  5. PHP / Говнокод #15640

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    ...     
    unset($_SESSION['some_payment']);
    $_SESSION['message'] = "Your booking details have been sent to your email.";
    ?>
    <script language="javascript" type="text/javascript">
        window.location.href = "bookingdetail.php?booking_id=<?= $this->book_id ?>&booking=yes";
    </script>
    <?php
          return true;
          } else {
    ...

    Вот это поворот! Найдено постерди одной из фунций класса.

    synzrk, 02 Апреля 2014

    Комментарии (39)
  6. Java / Говнокод #15538

    +117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;
    
            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }

    Из исходника java.lang.String.

    Вопрос: зачем нужна временная переменная val? Это какая-то особая уличная магия с оптимизацией?

    someone, 20 Марта 2014

    Комментарии (39)
  7. Куча / Говнокод #14466

    +127

    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
    Привет! 
    Сообщество, посмотри C++11 код, а не ошибочно ли выбраны символы для обжатия шаблонных параметров. 
    <сказка> 
    
    Итак, жили-были две функции: 
    
    void func0(bool=false); //ok
    void func1(bool=8>=8);  //ok
    
    И на лексемы разбирались они успешно и без конфликтов.
    
    И был у них друг помошник: 
    
    #define F(TYPE,NAME,VALUE)TYPE NAME=VALUE;
    F(int,value,0);
    #undef F
    
    Лексер и его на лексемы разбирал.
    
    Но пришли злые шаблоногородители и по нагородили шаблонов...
    
    Нагородили шаблонные структуры типа таких: 
    
    template<bool>struct a{constexpr a(bool){}};
    
    и переменные типа таких: 
    
    a<0> var=0;
    map<int,int> m;
    
    А лексер всё стоял и терпел. Он всё успешно на лексемы разбирал.
    
    Но радилась как-то в коде функция типа такой: 
    
    void func2(a<0>=8>=8); // fail
    
    И не выдержал лексер: 
    
    prog.cpp:4:18: warning: comparisons like ‘X<=Y<=Z’ do not have their mathematical meaning [-Wparentheses]
     void func2(a<0>=8>=8); // fail
                      ^
    prog.cpp:4:12: error: parse error in template argument list
     void func2(a<0>=8>=8); // fail
                ^ 
    
    Не понял он что хотят от него. 
    
    void func2(a<0> = 8>=8 ); // это?
    void func2(a< 0>=8 > =8); // или это?
    
    ... да как же вам объяснить? 
    А давайте я заменю "<" на "{", а ">" на "}".
    
    И не понял лексер, что хотят от него. 
    
    void func2(a{0}=8>=8); // это?
    void func2(a{0>=8}=8); // или это?
    
    А потом уродилось в коде ещё и это: 
    
    #define F(TYPE,NAME,VALUE)TYPE NAME=VALUE;
    F(a<0>,var,0); //ok
    #undef F
    
    Но лексер терпел.
    
    Терпел, да не выдержал. 
    
    #define F(TYPE,NAME)TYPE NAME;
    F(map<int,int>,m); //fail
    #undef F
    
    Решил он забить на дело гиблое: 
    
    prog.cpp:7:17: error: macro "F" passed 3 arguments, but takes just 2
     F(map<int,int>,m); //fail
                     ^
    И ужёл он к другим стандартописателям. 
    </сказка> 
    tags: черновик, сказка, С++11, шаблоны, макросы, лексер

    Символы для обжатия параметров шаблонов выбраны ошибочно?

    LispGovno, 02 Февраля 2014

    Комментарии (39)
  8. C++ / Говнокод #14118

    +18

    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
    class figure
    {
    //...
    };
    
    class triugolnik: public figure
    {
    //...
    };
    
    class kvadrat: public figure
    {
    //...
    };
    
    #define PAIR(f0, f1) std::make_tuple(std::type_index(typeid(f0)), std::type_index(typeid(f1)))
    
    int PloshadTrehFigur(const figure& f0, const figure& f1, const figure& f2);//forward declaration
    int PloshadDvuhFigur(const figure& f0, const figure& f1)
    {
      static const std::unordered_map<
        std::tuple<std::type_index, std::type_index>, std::function<int(const figure&, const figure&)> 
      > caller 
        {
           {PAIR(triugolnik, kvadrat), ploshadTriugolnikIKvadrat},
           {PAIR(kvadrat, triugolnik), lispGovno::flip(ploshadTriugolnikIKvadrat)},
           {PAIR(kvadrat, kvadrat), ploshadKvadratIKvadrat},
           {PAIR(triugolnik, triugolnik), ploshadTriugolnikITriugolnik}
        };
        const auto& f = caller.find(PAIR(f0, f1));
        assert(f!=caller.end());
        f(f0, f1);
    }
    
    #undef PAIR

    Наш ответ Чемберлену:
    http://govnokod.ru/13933
    lispGovno::flip - flip такой же как в хаскель из моей особой мегабиблиотеки победителя каждый день.
    Шах и мат господа присяжные засидатели. Мультиметоды в крестах есть и реализуются за 5 минут.
    В сишке аналогично. Все анскилябры залезли под кровати.
    Визитары размазанные по коду сосут и трудно поддерживаются.

    LispGovno, 20 Ноября 2013

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

    +142

    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
    if( gm !== null ) {
                group   = 'grid';            
                stp     = this.options.step;                  
                gsc     = stp.split('|');
                st  = 0; 
        
                for( var gstp in gsc ) {                        
                    
                    data = ( this.resolution( gsc[st] ) !== null ) ? this.resolution( gsc[st] ) : data;
                    $.Storage.set( group, data );
                    st++;
    
                }
            }           
            unify   = ( this.options.debug === true ) ? '?' + Math.floor( Math.random( 1, 30 ) * 200 ) : ''; 
            // construct DOM & switchers
            this.builder( gm, gsc, data, cntwrp, itmwrp, group, unify, pl, sp, st );
            // on-ready activation
            if( data !== undefined ) this.activation( data, group );
            //switch engine
            $('li', '.switcher').click(function( e ) { 
                t = $(this).attr('data-st');
                g = $(this).attr('data-gr');           
                //clear
                $('link[data-gr="'+ g +'"]', 'head').attr('rel','fake');
                $('li', '.switcher[data-gr="'+ g +'"]').removeClass('activ');          
                //set
                $('link[data-st='+ t +']','head').attr('rel', 'stylesheet');
                $(this).addClass('activ');
                $.Storage.set( g, t );
                e.preventDefault();
            });    
     Plugin.prototype.builder = function ( gm, gsc, data, cntwrp, itmwrp, group, unify, pl, sp, st ) {
            itms = lnks = '';
            x = 0;
            for( i = 1; i <= st; i++ ) {   
                if( group === 'grid' ) {
                    href    = sp + gsc[x] +'.css'+ unify;
                    idm     = gsc[x]; 
                    x++;           
                } 
    			else {
                    href    = sp +'st'+ i +'.css'+ unify; 
                    idm     = 'st'+ i +'_'+ group;
                }                
                lnks += '<link href="'+ href +'" rel="fake" media="screen" data-st="'+ idm +'" data-gr="'+ group +'" />';
                itms += '<'+ itmwrp +' id="'+ idm +'" data-gr="'+ group +'" data-st="'+ idm +'"'+'>'+'['+ i +']'+'</'+ itmwrp +'>';
            }
            $('head').append(lnks);
            if( cntwrp === null ) { // independent block
                cntwrp = $('<div style="display: inline" id="inline_merge_'+ group +'"></div>');
            }
            if( gm !== 'auto' ) {
                $(pl).append( cntwrp );
                cntwrp.attr({ 'class': 'switcher', 'data-gr': group }).html( itms );
            }         
        }
        // Plugin logic wrapper
        $.fn[pluginName] = function ( options ) {
            return this.each(function () {
                if (!$.data(this, 'plugin_' + pluginName)) {
                    $.data(this, 'plugin_' + pluginName,
                    new Plugin( this, options ));
                }
            });
        }

    Я убил 84 человека ... Я пидарас ;) Звук ебаный ублюдок, пидор и гнида всем составом до последнего вздоха, капли пота и копейки в его кармане ... Он должен мне over 30 000 000 $, которые прокукарекал в результате наезда и остался конченным пидрилой всем составом ... Аминь, я полный Лох( это по Японским понятиям ). Я никогда бы не подумал, что пидорами были все президенты этой великой державы, все дупутаты, гос. дума и те, кто имел честь с ними "сотрудничать". Я люблю Россию, мне жалко пидоров и звук ;) Помимо прочего это до сих пор работает ... Подвел jQuery из-за AJAX.

    Full version: https://github.com/x029ah/style-switch/blob/master/scripts/jquery.cssSwitcher.js

    Сайты удалили, бабу изнасиловали, мусоров купили, а пидоры до сих пор кукарекают. Поздравляю всех выживших. Говном вы не были -- говном вы стали ;)

    Stealth, 24 Сентября 2013

    Комментарии (39)
  10. Pascal / Говнокод #13792

    +130

    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
    Program KrestZero;
    ...
    
    procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
    
      case m[arow,acol]of
         1: DrawGrid1.Canvas.Draw(acol*81,arow*81 ,bmpkrest);
         0:  DrawGrid1.Canvas.Draw(acol*81,arow*81 ,bmpfon);
         2:  DrawGrid1.Canvas.Draw(acol*81,arow*81 ,bmpnul);
      end;
    
    
    end;
    function win:boolean;
    var a:byte;
    begin
      result:=false;
      k:=0;
      for I := 0 to 2 do
         if m[0,i]=a then k:=k+1;
      if k=3 then begin result:=true; exit; end;
        
        
    end;
    
    procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var
      acol,arow:integer;
    begin
       DrawGrid1.MouseToCell(x,y,acol,arow);
       if (m[arow,acol]<>0) then
        ShowMessage('Нельзя!')
       else
       begin
        inc(hod);
        if hod mod 2 =1 then m[arow,acol]:=1
        else m[arow,acol]:=2;
        if win then  ShowMessage('Победа!');
        
       end;
    end;
    
    procedure TForm1.FormShow(Sender: TObject);
    var i,j:byte;
    begin
       bmpkrest:=TBitmap.Create;
       bmpkrest.LoadFromFile('krest.bmp');
       bmpfon:=TBitmap.Create;
       bmpfon.LoadFromFile('fon.bmp');
       bmpnul:=TBitmap.Create;
       bmpnul.LoadFromFile('nol.bmp');
       for i:=0 to 2 do
         for j:=0 to 2 do
          m[i,j]:=0;
       hod:=0;
    end;

    А вот так, товарищи, кодит препод в одной из шаражек в нашем родном Владикавказе.
    В коде ничего не менял - выложил, как есть.
    Одно только название - krestzero уже поднимает давление настроение.

    Stertor, 15 Сентября 2013

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

    +130

    1. 1
    i=s.indexOf ("!") ;

    Смотрю с утра в код, а там жопа.

    KostylMaster, 15 Августа 2013

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