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

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

    +138

    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
    // прога у нас многопоточная, данный код выполняется в потоке. Создание и настройка Idhttp прописана в конструкторе потока.
    while not terminated do
        begin
           synchronize(ReadProxy);
            if ThreadExit then break;
            try
               memorystream.Position:=0;
              try
                idHTTP.Get(linknew,memorystream);
                idhttp.disconnect;
              except
                idhttp.Disconnect;
              end;
              finally
                temp:=memorystreamtostring(memorystream); // если этого не сделать, память будет утекать.
                memorystream.clear;
              end;

    Я нашел способ предотвратить утечки памяти в Indy, при Get-запросе -
    многие грешат на Indy, мол, нестабильная она в потоках, провоцирует утечки.
    Оказалось, что дело-то в tmemorystream, я его маму бля ебал!!!

    Stertor, 19 Ноября 2013

    Комментарии (5)
  3. Objective C / Говнокод #13902

    −105

    1. 1
    2. 2
    3. 3
    4. 4
    - (void)reloadTableViewOnSecondaryThread
    {
    	[self performSelectorOnMainThread:@selector(reloadTableViewOnMainThread) withObject:nil waitUntilDone:NO];
    }

    Разглядывая код от заказчика нашёл вот такой перл!

    ProFFeSSoR, 06 Октября 2013

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

    +80

    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
    /**
       * Форматирует double, c arround кол-вом знаков после запятой
       * @param d double
       * @param arround int
       * @return String
       */
      public static String formatDouble(double d, int arround) {
        if (arround > 6) {
          throwIllegalFormat();
        }
        StringBuffer sb = new StringBuffer(10);
        boolean minus = d < 0;
        if (minus) {
          d = -d;
        }
        for (int i = 0; i < arround; i++) {
          d *= 10;
        }
        long l = (long) (d + 0.000000001);
        do {
          char digit = (char) ('0' + (l % 10));
          l = l / 10;
          sb.append(digit);
          if (--arround == 0) {
            sb.append('.');
          }
        } while (l != 0 || arround >= 0);
        if (minus) {
          sb.append('-');
        }
        return sb.reverse().toString();
      }

    glprizes, 02 Октября 2013

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

    +126

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    <link rel="stylesheet" href="/libraries/mediaelement/mediaelementplayer.min.css">
    <link href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" rel="stylesheet">
    <script type="text/javascript" src="/js/jquery/jquery-latest.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
    <script type="text/javascript" src="/libraries/mediaelement/andplayer.min.js"></script>
    <script type="text/javascript" src="/js/jquery_tools.js"></script>

    Все это, пара десятков строк мутного джаваскрипта и столько же HTMLя и PHP потребовалось опытному филиппинскому сотруднику, чтобы добавить видеоролик на страницу.

    quall, 30 Сентября 2013

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

    +147

    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
    function SaveDataFromS() {
            if (window.sessionStorage) { 
                if ($('#dvFilter').html().length > 0 && $('.right_results').html().length > 0) {
                    var tourSearchForm = $('#dvFilter').html();
                    var searchResults = $('.right_results').html();
                    //sessionStorage.setItem('tourSearchForm', tourSearchForm);
                    //sessionStorage.setItem('searchResults', searchResults);
                }
            }
    
            var hotSearchFormSer = $('#hotelSearchForm').serialize();
            var unserialForm = $.unserialize(hotSearchFormSer);
    
            for (var x in unserialForm) {
                if (unserialForm[x] == ""
                    || x.toUpperCase() != "Hotel".toUpperCase()
                    || x.toUpperCase() != "Все+отели".toUpperCase()) {
                    //console.log('вот опять');
                    return false;
                }
            }
            location.hash = hotSearchFormSer;
        }

    Увидел на популярном поисковике отелей

    sladkijBubaleh, 20 Сентября 2013

    Комментарии (5)
  7. SQL / Говнокод #13824

    −160

    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
    create procedure pwqgen @length int =3 
    as 
    /* pwqgen is a t-sql implementation of passwdqc's pwqgen password generator http://www.openwall.com/passwdqc/ */
    /* inspired by https://github.com/iphoting/pwqgen.rb */
    BEGIN 
    create table #separators (id int identity, s char(1))
    insert into #separators 
           select "-" union select "_" union select "+" union select "=" union select "2" union select "3" 
    union select "4" union select "5" union select "6" union select "7" union select "8" union select "9"
    
    declare @maxsep int, @s varchar(1)
    select @maxsep=max(id) from #separators   
    declare @maxid int, @w varchar(30) , @pw varchar(31) 
    select @maxid=max(id) from words  -- =4096
    
    select @w=w from words where id=convert(int,round(rand()*@maxid,0) )
    -- capitalize 1st letter
    if rand() > 0.5 
    	select @w= UPPER(LEFT(@w,1))+SUBSTRING(@w,2,LEN(@w)) 
    set @pw=@w
    set @length = @length-1 
    
    while @length > 0  
    begin 
    	select @s=s from #separators   where id=convert(int,round(rand()*@maxsep,0) )
    	delete from #separators where s=@s
    
    	select @w=w from words where id=convert(int,round(rand()*@maxid,0) )
    	-- capitalize 1st letter
    	if (rand() > 0.5 or @s is null)
    		select @w= UPPER(LEFT(@w,1))+SUBSTRING(@w,2,LEN(@w)) 
    	set @pw=@pw+@s+@w
    set @length = @length -1 
    end 
    
    -- if no one number in @pw - append or replace last letter to random number
    if PATINDEX('%[0-9]%', @pw ) > 0 
    begin 
    	set @s=convert(char(1), 2+convert(int,round(rand()*7,0)) )
    	if len(@pw)<30 set @pw=@pw+@s
    	else 	set @pw=UPPER(RIGHT(@pw,1))+SUBSTRING(@pw,1,LEN(@pw)-1)+@s
    end 
    drop table  #separators 
    print @pw
    END 
    
    -- требует существования таблички со словами
    -- create table words (id int identity , w varchar(7))
    -- 4 тыс слов взял отсюда: https://github.com/iphoting/pwqgen.rb/blob/develop/lib/pwqgen/wordlist.rb

    паролегенератор на tsql.
    при тестах понял что возможна ситуация, когда пароль не имеет ниодной цифры, что запрещено политикой.
    наговнокодил кучу charindex-ов. впринципе то работало, но вспомнил этот сайт, условие переписал под patindex, но треш в ветке с условием if PATINDEX('%[0-9]%', @pw ) > 0 остался.

    bliznezz, 19 Сентября 2013

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

    +152

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <div style="display:none;"><script type="text/javascript">
    (function(w, c) {
        (w[c] = w[c] || []).push(function() {
            try {
                w.yaCounter... = new Ya.Metrika({id:..., enableAll: true});
            }
            catch(e) { }
        });
    })(window, "yandex_metrika_callbacks");
    </script></div>

    Whattt????

    invision70, 16 Сентября 2013

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

    +151

    1. 1
    2. 2
    if (!preg_match_all("!<tr class=\"dark\">\s+<td>.*?</td>\s+<td class=\"cell1\">.*?>stock.zip</td>\s+<td>(.*?)</td>\s+<td>.*?</td>\s+<td><a href=\"(.*?)\    ">.*?</a></td>\s+<td>.*?</td>\s+</tr>!is", $out['body'], $res))
      exit(say("Не найден файл со стоком"));

    грузим прайсы партнёра

    heyzea1, 13 Сентября 2013

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

    +147

    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
    // Kohana 3.2
    
           // получаем учебные группы для фильтра
            $journal_training_groups = NULL;
            if (Auth::instance()->logged_in('teacher'))
            {
                $journal_training_groups = $this->user->training_groups->find_all();
                $courses = ORM::factory('educ_course')->get_teacher_courses($this->user)->published()->find_all();
            }
            // тут самое интересное >>
            elseif (Auth::instance()->logged_in('curator'))
            {
                // получаем всех учеников без учебных групп, которые изучают курсы куратора
                $journal_training_group = new stdClass();
                $journal_training_group->title = 'Ученики вне групп';
                $journal_training_group->members = ORM::factory('user')
                        ->join(array('training_group_members', 'tgm'), 'LEFT')
                        ->on('user.id', '=', 'tgm.user_id')
                        ->where('tgm.user_id', '=', NULL);
    
                $journal_training_groups = array($journal_training_group);
                $courses = ORM::factory('educ_course')->get_curator_courses($this->user)->published()->find_all();
            }
            else
            {
                $courses = $this->user->courses->published()->find_all();
            }

    Для любителей эмитировать..
    з.ы stdClass

    invision70, 13 Сентября 2013

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

    +119

    1. 1
    2. 2
    /proc/add_action(source, action, param1, param2)
    	toExecute += list(source = source, procname = ( action = "attack" ? "attack" : ( action = "move" ? "move" : ( action = "..." ? "someshit1" : ( action = "...(2)" ? "someshit2" : null ) ) ) ), params = list( ( (action = "attack") or (action = "move") ? param1 : null), (action = "..." or action = "...(2)" ? param2 : null ) )

    А я люблю обмазываться несвежим кодом в одну строку и дрочить.

    Сам код - лишь пример, но его можно расширять бесконечно.

    EditorRUS, 02 Сентября 2013

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