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

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

    −863

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    select top 1 v.Id
       from dbo.Verification v
       where v.ApplicationId = a.Id
        and v.ResultId = 'D69E0B3A-C5CA-42D0-A8CA-FA7FF63BC414'
        and not exists (
         select 1 from Verification vo
         where vo.ApplicationId = v.ApplicationId
          and vo.ResultId = v.ResultId
          and vo.Id != v.Id
          and vo.Position > v.Position
        )

    MS SQL. Видимо, автору не рассказали об order by

    alex123098, 21 Октября 2014

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

    −120

    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
    CREATE TABLE `numbers` (
      `number` BIGINT(20) DEFAULT NULL
    ) ENGINE=InnoDB;
    
    CREATE TABLE `numbers_small` (
      `number` INT(11) DEFAULT NULL
    ) ENGINE=InnoDB;
    
     -- numbers
    
    INSERT INTO `numbers` (`number`) VALUES('0');
    INSERT INTO `numbers` (`number`) VALUES('1000');
    INSERT INTO `numbers` (`number`) VALUES('2000');
    INSERT INTO `numbers` (`number`) VALUES('3000');
    INSERT INTO `numbers` (`number`) VALUES('4000');
    INSERT INTO `numbers` (`number`) VALUES('5000');
    
    -- 10 000 lines of inserting numbers into table numbers
    -- ...
    INSERT INTO `numbers` (`number`) VALUES('5999');
    INSERT INTO `numbers` (`number`) VALUES('6999');
    INSERT INTO `numbers` (`number`) VALUES('7999');
    INSERT INTO `numbers` (`number`) VALUES('8999');
    INSERT INTO `numbers` (`number`) VALUES('9999');
    
    -- numbers small
    
    INSERT INTO `numbers_small` (`number`) VALUES('0');
    INSERT INTO `numbers_small` (`number`) VALUES('1');
    INSERT INTO `numbers_small` (`number`) VALUES('2');
    INSERT INTO `numbers_small` (`number`) VALUES('3');
    INSERT INTO `numbers_small` (`number`) VALUES('4');
    INSERT INTO `numbers_small` (`number`) VALUES('5');
    INSERT INTO `numbers_small` (`number`) VALUES('6');
    INSERT INTO `numbers_small` (`number`) VALUES('7');
    INSERT INTO `numbers_small` (`number`) VALUES('8');
    INSERT INTO `numbers_small` (`number`) VALUES('9');

    Сделали нам программу на java. Прислали скрипт для обновления базы данных DatabaseUpdateScript.sql на 874 KB.

    ftr, 08 Октября 2014

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

    +152

    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
    jQuery(document).ready(function (){
    	var setCookie = function (c_name, value, exdays) {
    		var exdate = new Date();
    		exdate.setDate(exdate.getDate() + exdays);
    		var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    		document.cookie = c_name + "=" + c_value;
    	}
    	var getCookie = function (cname){
    		var name = cname + "=";
    		var ca = document.cookie.split(';');
    		for(var i=0; i<ca.length; i++){
    			var c = ca[i].replace(/^\s+|\s+$/gm,'');
    			if (c.indexOf(name)==0) return c.substring(name.length,c.length);
    		}
    		return "";
    	}
    
    	if (window.location.hash=='#stop' || (!getCookie('crimea_is_ukraine') && jQuery.inArray(codehelper_ip.Country,ciu_countries)>=0)){
    		if (typeof(_gaq)!='undefined'){
    			_gaq.push(['_trackEvent', 'Protest', 'Show', 'Crimea is Ukraine']);
    		}

    http://putlerstop.2-you.info/share/stop_putler.js

    gost, 07 Сентября 2014

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

    +124

    1. 1
    2. 2
    quicksort [] = []
    quicksort (h:t) = (quicksort(filter (=h) t))

    quicksort на хаскель. лаба. масло. 2014

    kegdan, 16 Августа 2014

    Комментарии (39)
  6. 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)
  7. 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)
  8. 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)
  9. 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)
  10. 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)
  11. Куча / Говнокод #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)