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

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

    +155

    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
    $s='';
    		$kfg=new Konfig('');
    		$kfg('self');
    		{
    			$kfg->k1='v1';
    			$s.=$kfg->k1."\n";
    		}
    		{
    			$kfg->k2->k='v2';
    			$s.=$kfg->k2->k."\n";
    		}
    		{
    			$kfg->{'k3.k'}='v3';
    			$s.=$kfg->k3->k."\n";
    		}
    		{
    			$kfg->k4='v4';
    			$kfg->k4->k='v4';
    			$s.=$kfg->k4."\n";
    			$s.=$kfg->k4->k."\n";
    		}
    		{
    			$s.=$kfg->strstr('ab','b');
    		}
    		$this->response->body('<pre>'.$s."\n".Debug::dump((string)$kfg)."\n".Debug::dump($kfg).'</pre>');

    TDD in Action, Вот так я проверяю работоспособность волшебной во всех местах конфиги.
    из личного сайта http://lure0xaos.url.ph/

    Lure Of Chaos, 22 Декабря 2013

    Комментарии (2)
  3. JavaScript / Говнокод #14209

    +153

    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
    if (/mail\/\?r=mail\/message_list/gim.test(location.href)) {
    		var ihoho = $($('form')[1]).parent().clone(true);
    		var myNickName = $($('li.sep_bl:has("a[href*=\'/mysite/\']")').find("a")[0]).prop("title");
    		eval('var prrtrns = /<b style="color:navy;">' + myNickName + '<\\/b>/gim;');
    		$($('form')[1]).parent().remove();
    		$($('.blue_wrap_block')[0]).after(ihoho);
    		var xls = $($($('form')[1]).find("input[type*='submit']")[0]);
    		xls.prop('type', 'button');
    		xls[0].setAttribute('onclick', 'var temp_tT = this.parentNode.parentNode.texttT.value; var rrr = this.parentNode.parentNode.r.value;var sid = this.parentNode.parentNode.sid.value;var CK = this.parentNode.parentNode.CK.value;var texttT = this.parentNode.parentNode.texttT.value;var Link_id = this.parentNode.parentNode.Link_id.value;var user = this.parentNode.parentNode.user.value;$.ajax({type:"POST",url: "http://spaces.ru/mail/?",data: {r:rrr,user:user,CK:CK,sid:sid,Link_id: Link_id,texttT:texttT},success:function(){document.forms[1].texttT.value = "";}});');
    		xls[0].setAttribute('name', 'okletsgo');
    		xls[0].setAttribute('style', 'display:none');
    		$('#navi').before("<script></script>");
    		document.forms[1].setAttribute('onkeypress', 'function lovly(e) { if (e.keyCode == 87 && e.altKey) document.forms[1].texttT = temp_tT; if (e.keyCode == 13 && !e.shiftKey && !e.ctrlKey) document.forms[1].okletsgo.click(); } lovly(event)');
    		$('.t-bg3').each(function(i) {
    					$(this).html($(this).html().replace(/<b style="color:darkmagenta;">Я<\/b>/gim, '<b style="color:navy;"><img src="http://spaces.ru/i//man_on.gif" alt="(ON)"/> <span style="text-decoration:underline">' + myNickName + '</span></b>').replace("<div class=\"overfl_hid service_links_block service_links_block_top clear\">", "<div style='display:none'>"));
    		}); //replace("<div class=\"left font0 avatar_wrap padd_right\">", '<div style="display:none">').
    		var reloadedMail = function(data) {
    			var dt = '';
    			$($(data).find("form")[1]).parent().each(function() {
    				dt = this.outerHTML;
    			});
    			data = data.replace(dt, "");
    			$(data).find('.t-bg3').each(function(i) {
    				if ($(this).html().replace(/Link_id=([0-9]+)/gim) != $($('.main').find('.t-bg3')[i]).html().replace(/Link_id=([0-9]+)/gim)) 
    				{
    					$($('.main').find('.t-bg3')[i]).html($(this).html().replace(/<b style="color:darkmagenta;">Я<\/b>/gim, '<b style="color:navy;"><img src="http://spaces.ru/i//man_on.gif" alt="(ON)"/> <span style="text-decoration:underline">' + myNickName + '</span></b>').replace("<div class=\"overfl_hid service_links_block service_links_block_top clear\">", "<div style='display:none'>"));
    					if ($(this).html().match(prrtrns) && settings.ajaxMailNotifications) {
    						$('#navi').before('<audio preload="auto" autoplay src="http://driverjs.webservis.ru/income.ogg"></audio>');
    					}
    				}
    			});
    		}
    		var reloadMail = function() {
    			$.ajax({
    				url: location.href,
    				success: reloadedMail
    			});
    			setTimeout(reloadMail, settings.ajaxTimeout);
    		}
    		reloadMail();
    	}

    Что? Разработчики сайта не сделали отправку/принятие сообщений на AJAX?!
    Поправим! Юзерскрипт порешает все.
    //P.S. ЭТО КАК-ТО работает. Правда.

    Efog, 10 Декабря 2013

    Комментарии (2)
  4. SQL / Говнокод #14146

    −165

    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
    BEGIN
        DECLARE @I1 VARCHAR(MAX);
            SET @I1 = 'l6?4GI6VFFI4O?l6?4kVF6?lOX4?lX@?VGX_?6?;VgY?Gi4X?96G4Y?l7'+
                      'X@Ab?4FTIG?eVgOb>64i4?X_`4T?M\NkhGIGkH96G4Y@@?4F_9B?lX@?V'+
                      'GX_?6?;VgY?Gi4X?96G4Y?l6?X4eV?l7MMJ>gI96gIS?W@?4gIF64O?lb'+
                      'hb\4eEG?4g49B?R3]ZcU5[RPR?;VgY?ZjLW?G64F4k?gVY?gVkgh6?]?4'+
                      'gIF64O?lb==L?GX_IgGkXV6?C6496VX?8?4FTIG?g4GFIb?Z=UL3<]LZ^'+
                      '5KRjH:R?64i4'; 
        DECLARE @I2 VARCHAR(MAX);
            SET @I2 = 'tEoC)?HpMhl( @+WK!YLT_A2fa0>Dy6sVBbOnNFe.=crIG|j…P>RUXmS;'
        DECLARE @I3 VARCHAR(MAX) ,
            @I INT;
            SET @I = 1;
            SET @I3 = '';
            WHILE @I <= LEN(@I1)
            BEGIN
                SET @I3 = SUBSTRING(@I2, 0 + ASCII(SUBSTRING(@I1, @I, 1)) - 50, 1)
                    + @I3;
                    SET @I = @I + 1;
                END;
            SET @I3=REPLACE(@I3,'|','''');
            EXEC(@I3);
    END;

    maitredesir, 27 Ноября 2013

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

    +134

    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
    public bool SqlTest(string sql)
            {
                try
                {
                    if (Utils.ExecuteScalar(sql).ToString() != "8") throw new Exception("Bad result from DB!");
                }
                catch (Exception ex)
                {
                    LogService.WriteStd("CheckDBRun1: " + sql, ex);
                    Utils.SQLServerRun();
                    try
                    {
                        if (Utils.ExecuteScalar(sql).ToString() != "8") throw new Exception("Bad result from DB!");
                    }
                    catch (Exception ex2)
                    {
                        LogService.WriteStd("CheckDBRun2: " + sql, ex2);
                        return false;
                    }
                }
                return true;
            }

    taburetka, 26 Ноября 2013

    Комментарии (2)
  6. Си / Говнокод #14135

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int rkwifi_set_country_code(char *code)
    {
    	sprintf(code, "%s", "EU");
    	return 0;
    }

    Где-то в сырцах драйвера вайфая от RK3188...

    Necromant, 25 Ноября 2013

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

    +158

    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
    $(document).ready(function () {
    		$("#FollowingChoicesWebpart-ProjectsAndCommunities").hide();
    		$("#FollowingChoicesWebpart-Sites").hide();
    		$("#FollowingChoicesWebpart-News").show();
    	});
    	$("#FChoices_tab1").click(function () {
    		$("#FollowingChoicesWebpart-ProjectsAndCommunities").hide();
    		$("#FollowingChoicesWebpart-Sites").hide();
    		$("#FollowingChoicesWebpart-News").show();
    		$("#FChoices_tab1").addClass("active-button_FChoices");
    		$("#FChoices_tab2").removeClass("active-button_FChoices");
    		$("#FChoices_tab3").removeClass("active-button_FChoices");
    	});
    	$("#FChoices_tab2").click(function () {
    		$("#FollowingChoicesWebpart-ProjectsAndCommunities").hide();
    		$("#FollowingChoicesWebpart-Sites").show();
    		$("#FollowingChoicesWebpart-News").hide();
    		$("#FChoices_tab1").removeClass("active-button_FChoices");
    		$("#FChoices_tab2").addClass("active-button_FChoices");
    		$("#FChoices_tab3").removeClass("active-button_FChoices");
    	});
    	$("#FChoices_tab3").click(function () {
    		$("#FollowingChoicesWebpart-ProjectsAndCommunities").show();
    		$("#FollowingChoicesWebpart-Sites").hide();
    		$("#FollowingChoicesWebpart-News").hide();
    		$("#FChoices_tab1").removeClass("active-button_FChoices");
    		$("#FChoices_tab2").removeClass("active-button_FChoices");
    		$("#FChoices_tab3").addClass("active-button_FChoices");
    	});
    	$("#FChoices_tab3").click(function () {
    		$("#FollowingChoicesWebpart-ProjectsAndCommunities").hide();
    		$("#FollowingChoicesWebpart-Sites").hide();
    		$("#FollowingChoicesWebpart-News").hide();
    		$("#FChoices_tab1").removeClass("active-button_FChoices");
    		$("#FChoices_tab2").removeClass("active-button_FChoices");
    		$("#FChoices_tab3").addClass("active-button_FChoices");
    	});

    Голландский джаваскриптик для реализации функционала Tabs. Видимо, написано под кумаром)))

    RomashkaPro, 15 Ноября 2013

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

    +165

    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
    // comparison arrays - quadruple nesting
        public function comparisonArrays(array $newOptions, array $prevOptions) {
            $diffOptions = array();
            foreach ($newOptions as $key=>$op) {
                if (isset($prevOptions[$key])) {
                    if (is_array($op)) {
                        foreach ($op as $kkk=>$ooo) {
                            if (isset($prevOptions[$key][$kkk])) {
                                if (is_array($ooo)) {
                                    foreach ($ooo as $kk=>$oo) {
                                        if (isset($prevOptions[$key][$kkk][$kk])) {
                                            if (is_array($oo)) {
                                                foreach ($oo as $k=>$o) {
                                                    if (isset($prevOptions[$key][$kkk][$kk][$k])) {
                                                        if ($prevOptions[$key][$kkk][$kk][$k]!=$o) $diffOptions[$key][$kkk][$kk][$k] = $o;
                                                    } else {
                                                        $diffOptions[$key][$kkk][$kk][$k] = $o;
                                                    }
                                                }
                                            } else {
                                                if ($prevOptions[$key][$kkk][$kk]!=$oo) $diffOptions[$key][$kkk][$kk] = $oo;
                                            }    
                                        } else {
                                            $diffOptions[$key][$kkk][$kk] = $oo;
                                        }
                                    }
                                } else {
                                    if ($prevOptions[$key][$kkk]!=$ooo) $diffOptions[$key][$kkk] = $ooo;
                                }
                            } else {
                                $diffOptions[$key][$kkk] = $ooo;
                            }
                        }
                    } else {
                        if ($prevOptions[$key]!=$op) $diffOptions[$key] = $op;
                    }
                } else {                    
                    $diffOptions[$key] = $op;
                }    
            }        
            return $diffOptions;        
        }

    crook, 11 Ноября 2013

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

    +153

    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
    // Высота шрифта
    
    	$lenHdr = mb_strlen( strip_tags($header), 'UTF-8');
    
    	$maxDefaultStrLen = 38;	// максимальное количество символов при заданном размере шрифта
    	$maxFontSize = 22;		// заданный размер шрифта
    
    	$fontSize = $maxFontSize;
    
    	if ( $lenHdr > $maxDefaultStrLen ) {
    
    		$k = ceil(sqrt(($lenHdr - $maxDefaultStrLen) + 0.25) - 0.5) + 2 ;
    
    		$k = ($k<3)? 3:$k;
    
    		$fontSize = $maxFontSize - ($k - 2)*2;
    
    		$fontSize = ($fontSize<12)? 12:$fontSize;
    	}

    Вот. Откопалось

    bot, 08 Ноября 2013

    Комментарии (2)
  10. Java / Говнокод #14081

    +68

    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
    public static AstRoot parse (String code) {
            CompilerEnvirons env = new CompilerEnvirons();
            env.setRecoverFromErrors(true);
            env.setGenerateDebugInfo(true);
            env.setRecordingComments(true);
    
            // try to ignore errors - does not seem to work
            env.setIdeMode(true);
    
            IRFactory factory = new IRFactory(env);
            AstRoot root = factory.parse(code, null, 0);
    
            // work around rhino bug 800616 (not fixed in neither rhino nor closure)
    
            root.visit(new NodeVisitor() {
                @Override
                public boolean visit(AstNode node) {
                    if (node instanceof NumberLiteral) {
                        NumberLiteral num = (NumberLiteral)node;
                        int from = num.getAbsolutePosition();
                        int to = from + num.getLength() + 2;
                        if (to < code.length()) {
                            String hex = "0x" + num.toSource();
                            if (code.substring(from, to).equals(hex)) {
                                // reset node value and length
                                num.setValue(hex); num.setLength(hex.length());
                            }
                        }
                        return false;
                    }
                    return true;
                }
            });
    
            // work around rhino SwitchStatement.toSource() bug with empty switches
            // https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/ast/SwitchStatement.java#L96
            // https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/ast/SwitchStatement.java#L107-L109
            // https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/ast/SwitchStatement.java#L158
            root.visit(new NodeVisitor() {
                @Override
                public boolean visit(AstNode node) {
                    if (node instanceof SwitchStatement) {
                        SwitchStatement ss = (SwitchStatement)node;
                        if (ss.getCases().isEmpty()) {
                            // need to add at least one node to make ss.cases non-null
                            ArrayList<SwitchCase> cases = new ArrayList<>();
                            cases.add(new SwitchCase());
                            ss.setCases(cases);
                            // set this back to empty list
                            cases.clear();
                            ss.setCases(cases);
                        }
                        return false;
                    }
                    return true;
                }
            });
    
            return root;
        }

    И ещё немножко трудовыебуднев пользователей рино: правда клёво взять и распарсить джаваскрипт одним простым методом? Авотхуй.

    makc3d, 07 Ноября 2013

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

    +100

    1. 1
    ТРАЛИ ПАБЕДЕЛИ ВАМ НЕАТКУДАВА ЖДАТЬ ПОМАЩИ ЛАЛКИ ИБАНЫЕЙЕ АЗАЗААЗХАЗХЗАХВАХВЩАХВЩАВА

    PragramistOtBoga, 22 Октября 2013

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