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

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

    +74

    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
    private static java.util.Hashtable<String, Session> sessions =
        new java.util.Hashtable<String, Session>();
    ...
    public static SessionOperations[] getSessions() {
        int cnt = sessions.size();
        SessionOperations[] res = new SessionOperations[cnt];
        java.util.Enumeration<String> e = sessions.keys();
        for( int i = 0; i < res.length; i++ ) {
          String sid = e.nextElement();
          res[i] = sessions.get( sid ).getOperations( sid );
        }
        return res;
    }

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

    P.S. В результате в течение трех суток в production не удалялись оставленные сессии (без Logout), sessions отожрал 600М и всё свалилось с OOM.

    Skipy, 23 Июня 2011

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

    −111

    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
    98. 98
    NetworkStatus internet = [internetReachable currentReachabilityStatus];
    
    switch (internet)
    {
        case NotReachable:		{ internetStatus = NO;  break; }
        case ReachableViaWiFi:	{ internetStatus = YES; break; }
        case ReachableViaWWAN:	{ internetStatus = YES; break; }
        default: break;
    }
    
    NetworkStatus host = [hostReachable currentReachabilityStatus];
    switch (host)
    {
        case NotReachable:		{ hostStatus = NO;  break; }
        case ReachableViaWiFi:	{ hostStatus = YES; break; }
        case ReachableViaWWAN:	{ hostStatus = YES; break; }
        default: break;
    }
    
    //-------------------------------------------------------------
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    	return false; 
    }
    
    //-------------------------------------------------------------
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
    {
    	if (logicRotate == 1)
    	{
    		if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) // если ЛандскейпРайт
    		{
    			FlowCover.transform = CGAffineTransformIdentity;
    			indexLandscape = 1;
    		}
    		if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) // если ЛандскейпЛефт
    		{
    			FlowCover.transform = CGAffineTransformMakeRotation(M_PI);
    			indexLandscape = 0;
    		}
    	}
    	else
    	{
    		if (indexLandscape == 1)
    		{
    			FlowCover.transform = CGAffineTransformIdentity;
    		}
    		else
    		{
    			FlowCover.transform = CGAffineTransformMakeRotation(M_PI);
    		}
    		logicRotate = 1;
    	}
    	return false;
    }
    
    //-------------------------------------------------------------
    
    pagetextLabel.hidden = (pageFullScreen.realPageNo) ? NO : YES;
    
    //-------------------------------------------------------------
    
    [(FastImageView*)page showImage:[listOfImages objectAtIndex:pageIndex]]; //картинка
    
    //-------------------------------------------------------------
    
    if (firstPages>2) {
        ...
        if (theAudio) {
            [theAudio play];	//звук
        }
        firstPages++;
    }
    else
    {
        firstPages++;
    }
    
    //-------------------------------------------------------------
    
    LabPercent.text = [NSString stringWithFormat:@"%d%@", percent * 100, @"%"];
    
    //-------------------------------------------------------------
    
    if ([DELEGATE isIPad]) {
        mTempSize = [tempstr sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17.0f] constrainedToSize:maxSize lineBreakMode:UILineBreakModeTailTruncation];
    }
    else {
        mTempSize = [tempstr sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12.0f] constrainedToSize:maxSize lineBreakMode:UILineBreakModeTailTruncation];
    }
    h = mTempSize.height;
    if ([DELEGATE isIPad]) {
        lab.font = [UIFont fontWithName:@"Helvetica" size:17.0f];
    }
    else {
        lab.font = [UIFont fontWithName:@"Helvetica" size:12.0f];
    }

    От того же автора http://govnokod.ru/6964. Тут избранные куски, хотя можно постить весь проект

    GLvRzZZ, 17 Июня 2011

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

    −106

    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
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
    {
    	if (rotateBag > 6) //после возврата, шудавторотейт вызывается 7 раз, это условие для погашения этих вызовов
    	{
    		if ([portret isEqualToString:@"horizontal"])
    		{
    			if (firstLaunch == 0) //  блок для первого запуска (по умолчанию всегда выставляет ландскейпРайт, а это не всегда правильно)
    			{
    				if (interfacePosition == 0)
    					{ self.view.transform = CGAffineTransformMakeRotation(M_PI); }
    				else
    					{ self.view.transform = CGAffineTransformIdentity; }
    				firstLaunch++;
    				indexLandscape = interfacePosition;
    			}
    			else
    			{
    				if (indexLandscape == 1)	//если изначальный вариант был правосторонний
    				{
    					if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) // если ЛандскейпРайт
    						{ self.view.transform = CGAffineTransformIdentity;
    						  interfacePosition = 1; }
    					if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)	// если ЛандскейпЛефт
    							{ self.view.transform = CGAffineTransformMakeRotation(M_PI);
    							  interfacePosition = 0; }
    				}
    				else				//если изначальный вариант был левосторонний
    				{
    					if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) // если ЛандскейпРайт
    						{ self.view.transform = CGAffineTransformMakeRotation(M_PI);
    						  interfacePosition = 1; }
    					if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)	// если ЛандскейпЛефт
    						{ self.view.transform = CGAffineTransformIdentity;
    						  interfacePosition = 0; }
    				}
    			}
    		}
    		else
    		{
    			if (firstLaunch == 0) //  блок для первого запуска (по умолчанию показывается правильно, поэтому ничего делать не надо)
    				{ firstLaunch++; }
    			else
    			{
    				if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
    					{ self.view.transform = CGAffineTransformIdentity; }
    				if (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    					{ self.view.transform = CGAffineTransformMakeRotation(M_PI); }
    			}
    		}
    	}
    	else { 
    		rotateBag++; 
    	}
    	return false;
    }

    Крутящаяся сумка в действии...
    Поворот дисплея в 50 строк :\

    mrWindMak3r, 16 Июня 2011

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

    −121

    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
    declare
        v_curs sys_refcursor;
        v_on number;
    begin
        open v_curs for 'select rout_num from rout_orders_promotion';
        fetch v_curs into v_on;
        loop
            exit when v_curs%notfound;
            if v_curs%rowcount = 1 then
                null;
            end if;
            fetch v_curs into v_on;
        end loop;
        close v_curs;
    end;

    Если запись одна, тогда уж точно нечего в цикле делать.

    dwinner, 14 Июня 2011

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

    +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
    if (isSet($_POST["AdminLoginPOST"]) and isSet($_POST["AdminPasswordPOST"])){
    	$sql="SELECT * FROM settings WHERE AdminLogin like binary '".str_replace("'","",$_POST["AdminLoginPOST"])."' and AdminPassword='".str_replace("'","",$_POST["AdminPasswordPOST"])."'";
    	$db->query($sql);
    	if ($db->next_record()) {
    		if(isset($_POST["AdminCurrentSession"])) $_SESSION=unserialize($_POST["AdminCurrentSession"]);
    		$AdminLogin=$_POST["AdminLoginPOST"];
    		$_SESSION['AdminLogin']=$db->Record["AdminLogin"];
    		$ADMIN_ID=$db->Record["id"];
    		$ADMIN_EMAIL=$db->Record["AdminEmail"];
    		$ACCESS=$db->Record["access"];
    		if($ACCESS<0 && !isset($MAINFRAME))  $ACCESS=0;
    		$LENGUAGE=$db->Record["lenguage"];
    		$NOHELP=$db->Record["nohelp"];
    		$ADMINOPNWIN=$db->Record["AdminOpnWin"];
    		$COUNT_ROWS=$db->Record["NumRows"];
    		$STRIPTAGS=$db->Record["striptags"];
    		$SPELL=$db->Record["spell"];
    		$sp=explode(",", $db->Record["access_details"]);
    		$ACCESS_DETAILS=array();
    		for ($i=0;$i<count($sp);$i++) $ACCESS_DETAILS[$sp[$i]]="y";
    	}
    }

    volatile, 08 Июня 2011

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

    +147

    1. 1
    $APPLICATION->SetTitle('Хуй на рыло, чтоб душа не ныла');

    код скриптов админ-панели, взято с продакшена

    elw00d, 08 Июня 2011

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

    +111

    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
    function str_transfer(str: string; c: Integer): String;
    var
    i:Integer;
    begin
      i:= c;
      while PosEx(' ',str,i) > 0 do
        begin
          if PosEx(' ',str,i) > 0 then
            begin
              i:= PosEx(' ',str,i);
              Insert(#10#13,str,i+1);
              i:= i+c;
            end;
        end;
      Result:= str;
    end;

    "решил написать вот такую функцию, которая вставляет в строку переносы после определенного кол. символов, перенос строки вставляется между словами. Может кому пригодится...."

    bugmenot, 02 Июня 2011

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

    +76

    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
    private void listGSNames()
    	{
    		int idMaxLen = 0;
    		int nameMaxLen = 0;
    		for (Entry<Integer, String> e : GameServerTable.getInstance().getServerNames().entrySet())
    		{
    			if (e.getKey().toString().length() > idMaxLen)
    			{
    				idMaxLen = e.getKey().toString().length();
    			}
    			if (e.getValue().length() > nameMaxLen)
    			{
    				nameMaxLen = e.getValue().length();
    			}
    		}
    /* Some Code */
    }

    Отрезок из регистратора игрового сервера Lineage от команды L2jServer.
    e.getKey().toString().length() - Приведение к строке, потом определение строки. Выглядит зрелищно! =)

    Akira, 01 Июня 2011

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

    +77

    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
    ArrayList<BaseEventData> tempList = new ArrayList<BaseEventData>();
    			
    			int to = baseList.size()-1;
    
    			while((to > 0) && (baseList.get(to).getTime() > timeTo))
    				to--;
    			
    			int from = to;
    			
    			while((from > 0) && (baseList.get(from).getTime() >= timeFrom)){
    				tempList.add(baseList.get(from));
    				from--;
    			}
    			
    			mEvents = tempList.toArray(new BaseEventData[]{});

    Часть метода. Метод предназначен для чтения ленты событий. Среди полученной ленты выбираются те, время возникновения которых попадает в заданный период. События изначально отсортированы по этому времени, от первого к последнему. то-есть последний элемент - последнее событие.

    kartanis, 31 Мая 2011

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

    +156

    1. 1
    $value['VALUE'] = htmlspecialchars(str_replace(array("<",">"), "\"", $value['VALUE']));

    Безопасность на высоте. То, что потом приходят совершенно нечитаемые данные -- это ничего.

    ftr, 26 Мая 2011

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