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

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

    +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
    function displayFilterElements(typeList){
    	_filter.form.elements["name1"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["name2"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["nam3"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["name4"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["name5"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["name6"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["name7"].closest("tr").hidden = (typeList === "Type1") ? false : true;
    	_filter.form.elements["name8"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name9"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name10"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name11"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name12"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name13"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name14"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name15"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name16"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name17"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name18"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name19"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name20"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name21"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name22"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name23"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name24"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name25"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name26"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name27"].closest("tr").hidden = (typeList === "Type2") ? false : true;
    	_filter.form.elements["name28"].closest("tr").hidden = (typeList === "Type3") ? true : false;
    	_filter.form.elements["name29"].closest("tr").hidden = (typeList === "Type3") ? false : true;
    };
    	
    function stateFilterElements(){
    	let select = false;
    	["name1", "name2", "name3", "name4", "name5", "name6", "name7", "name8", "name9", "name10", "name11", "name12", "name13"].forEach(function(fieldName){
    		if ($.query.hashJSON.has(fieldName))
    			select = true;
    	});
    	return select;
    }

    Получил в доработку модуль сотрудника. Идентификаторы изменены для публикации, не в них суть.

    torbasow, 17 Марта 2015

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

    +132

    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
    void calendar(int year){
        int i, j, k, frst=1, week, length, day = 0;
        printf("                               ");
        if(year < 1000) printf(" ");
        printf("%d\n\n", year);
        int first[3];   // число начала недели (первая неделя - любой день недели, следющие - понедельник)
        for(i = 1; i <= 4; ++i){
            print_tetral(i);
            first[1] = weekday(1, 1, 1, 1, 1, i*3-2, year);
            first[2] = weekday(1, 1, 1, 1, 1, i*3-1, year);
            first[3] = weekday(1, 1, 1, 1, 1, i*3, year);
            length = max(weeks_in_month(i*3-2, year), \
                         weeks_in_month(i*3-1, year), \
                         weeks_in_month(i*3, year));
            for(week = 0; week < length; ++week){
                for(j = 1; j <= 3; ++j){
                    frst = first[j];
                    if(week > 0) frst = 1;
                    if(week == 0)
                        for(k = 1; k < first[j]; ++k)
                            printf("   ");
                    k = frst;
                    day = 0;
                    while(k <= 7 && day < days_in_month(i*3-3+j, year) && week < weeks_in_month(i*3-3+j, year)){
                        day = 7*week + k - first[j] + 1;
                        if(day > days_in_month(i*3-3+j, year)) break;
                        if(day < 10) printf(" %d ", day);
                        else if(day >= 10) printf("%d ", day);
                        ++k;
                    }
                    if(week == length - 1 || day >= days_in_month(i*3-3+j, year))
                        for(; k <= 7; ++k)
                            printf("   ");
                    printf("  ");
                }
                printf("\n");
            }
            printf("\n");
        }
    }

    Печатаем календарь.

    alobanov, 16 Марта 2015

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

    +128

    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
    HTML:
    <div id="calendar">
    		<div class="day">
    		<span class="num_job">5</span>
    			<span class="num_day">1</span>
    			<span class="name_day">пн</span>
    			<br/>
    			<span class="month">янв</span>
    			
    			
    			<span class="importance"></span>
    		</div>	
    		<div class="day">
    		<span class="num_job">12</span>
    			<span class="num_day">2</span>
    			<span class="name_day">вт</span>
    			<br/>
    			<span class="month">янв</span>
    			
    			
    			<span class="importance"></span>
    		</div>
    </div>
    CSS:
    body{
    	background: #ddd;
    	width: 1064px;
      margin: 0 auto;
    }
    #calendar{
    	width: 1064px;
    	margin: 0 auto;
    /*	height: 500px;*/
    display: inline-block;
    	background: #fff;
    }
    .day{
    	background: #f1f6f7;
    	border: 1px solid #dddbdb;
    	width: 130px;
    	height: 130px;
    	float: left;
    	margin: 10px;
    }
    .day:hover{
    	background: #6EB1BE;
    	cursor: pointer;
    }
    .day:hover .num_day, .day:hover .month, .day:hover .name_day{
    	color: #fff;
    }
    .day:hover .num_job{
    	color: #6EB1BE;
    	background: #fff;
    }
    
    .num_day{
    	font-family: Arial;
    	font-size: 72px;
    	font-weight: bold;
    	color: #1e99f7;	
    	position: relative;
    	top: -15px;
    	left: 15px;
    	letter-spacing: -6px;
    }
    .month, .name_day{
    	position: relative;
    	font-family: Arial;
    	font-size: 24px;
    	color: #1e99f7;	
    }
    .month{
    	top: -25px;
    	left: 37px;
    }
    
    .name_day{
      font-size: 11px;
      top: -12px;
      left: 15px;
    }
    .num_job{
    	background: #1e99f7;
    	color: #fff;
    	display: block;
    	width: 25px;
    	height: 25px;
    	line-height: 25px;
    	text-align: center;
    	border-radius: 100%;
    	font-family: Arial;
    	font-size: 17px;
    	font-weight: bold;
    	position: relative;
    	top: 5px;
    	left: 100px;
    }

    Вот я сверстал календарик. Подойдёт ли такой код для рабочего варианта? Что добавить? Что убрать? Как будет лучше?

    Simasik, 16 Марта 2015

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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    UInt64 unpackSizeSpec =
            p->UnpackPositions[p->FolderStartFileIndex[folderIndex + 1]] -
            p->UnpackPositions[p->FolderStartFileIndex[folderIndex]];
        size_t unpackSize = (size_t)unpackSizeSpec;
    
        if (unpackSize != unpackSizeSpec)
          return SZ_ERROR_MEM;

    Из недр lzma sdk.
    По заверениям разработчиков:
    > ... может использоваться любым современным 32-битным процессором (или, при определенных условиях 16-битным CPU).
    Очевидно что этот код вернет SZ_ERROR_MEM на 32-разрядной платформе, если unpackSizeSpec выходит за границы 32-битного числа.
    На самом то деле все логично - пользователь просто посылается на хуй, если его нищебродское устройство не тянет такого толстого архива, но тогда утверждение разработчиков о безпроблемном использовании на любой кофеварке становится пиздежью.

    Pythoner, 08 Марта 2015

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

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $save=$_POST['save'];
    	if ($save == 'yes') {
    		$cont=mysql_real_escape_string_ir($_POST['cont']);
    
    		@mysql_query("DELETE FROM ".$tables['_page']." WHERE id_kat='$id_kat'");
    		@mysql_query("INSERT INTO ".$tables['_page']." (id_kat, txt, dt) VALUES ('$id_kat', '$cont', NOW())");
    
    		deleteCache($id_kat, $cid, $insert_id, 'pages', $cont);
    		insertCache($id_kat, $cid, $insert_id, 'pages', $cont);
    	};

    Код из админки сайта, разработанного студией "Интернет Решения" (IRSite)

    Djiggo, 05 Марта 2015

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

    +159

    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
    if (!isset($_GET['outbox']) and !isset($_GET['deleted']) and !isset($_GET['verification'])){
    				$res2 = mysql_query("SELECT l.* FROM letters l LEFT JOIN `customers` ct ON ct.id=l.from_user WHERE l.deleted<>1 AND ct.`Sex` = 'male' {$addon_sql} ORDER BY l.time_insert DESC");
    				for($arr=array(); $t = mysql_fetch_assoc($res2); $arr[]=$t);
    
    				smarty_put_var('zagolovok', 'Входящие письма');
    		}
    
    		if (isset($_GET['verification'])) {
    		$res2 = mysql_query("SELECT * FROM `letters` where `deleted` != 1 AND `checked` = 'N' {$addon_sql} order by `time_insert` DESC");
    		for($arr = array(); $t = mysql_fetch_assoc($res2); $arr[] = $t);
    
    		smarty_put_var('zagolovok', 'Ожидающие проверку');
    		}
    
    		if (isset($_GET['outbox'])) {
        	$res2 = mysql_query("SELECT l.* FROM `letters` l
    		    	LEFT JOIN `customers` ct ON ct.`id`=l.from_user
    		    	WHERE l.deleted != 1 AND ct.`Sex` = 'female' {$addon_sql}
    		    	ORDER BY l.time_insert DESC LIMIT 200");
    		    	for ($arr = array(); $t = mysql_fetch_assoc($res2); $arr[]=$t);
    
    		    	smarty_put_var('zagolovok', 'Исходящие письма');
    		}
    
    		    	if (isset($_GET['deleted'])){
        	$res2 = mysql_query("SELECT * FROM `letters` WHERE `deleted` = 1
    		    	{$addon_sql} ORDER BY `time_insert` DESC");
    		    	for($arr=array(); $t=mysql_fetch_assoc($res2); $arr[]=$t);
    
    		    	smarty_put_var('deleted', true);
    		    	smarty_put_var('zagolovok', 'Удаленные письма');
    		    	}
    
    		    	$letters = array_slice($arr, $first, $limit);
    
    		foreach ($letters as &$letter) {
    			$letter['from_user_details'] = Model_Table_Customers::model()
    				->fetchByPk($letter['from_user']);
    			$letter['to_user_details'] = Model_Table_Customers::model()
    				->fetchByPk($letter['to_user']);
    		}
    
    if (isset($_GET['outbox'])){smarty_put_var('pages', pages_admin("?module=admin_letters&outbox&page=", $arr, $page, $limit)); smarty_put_var('type', 'outbox');}
    elseif (isset($_GET['verification'])){smarty_put_var('pages', pages_admin("?module=admin_letters&verification&page=", $arr, $page, $limit)); smarty_put_var('type', 'verification');}
    elseif (isset($_GET['deleted'])){smarty_put_var('pages', pages_admin("?module=admin_letters&deleted&page=", $arr, $page, $limit)); smarty_put_var('type', 'deleted');}
    else {smarty_put_var('pages', pages_admin("?module=admin_letters&page=", $arr, $page, $limit)); smarty_put_var('type', '');}
    
    ...
    
    function pages_admin($link, $arr, $page, $vis)
    {
        $radius=4;
        $pages=floor(count($arr)/$vis);
        $return="";
        $str='<table cellpadding="0" cellspacing=3 border="0">
        <tr><td height=7></td></tr>
        <tr>';
    
        if ($pages > 1) {
            $first = 'First';
            $prev = 'Prev';
            $next = 'Next';
            $last = 'Last';
    
            if($page<$radius*2){
               .....
          трэшак в том же духе

    Очередной шедевр с сохранением авторского стиля и табуляции. Это подготовка для smarty представления таблицы с постраничной разбивкой. Возможны 4 типа писем - 4 вкладки. pages_admin() - возвращает пагинатор в виде готового html кода.

    Клиент жаловался, что страница сильно тормозит. Там более 150 000 писем. Я догадывался, что код можно чутка оптимизирвоать, но не думал, что существенно. А когда посмотрел вижу - п-ц ))) Интересно насколько получить ускорить?

    stechkh, 01 Марта 2015

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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    <?php if( !Yii::app()->user->checkAccess('Manager')){ ?><td class="text-center"><?php  if($project->c1Projects->stat_id==23){
                    echo '|';
                    }elseif($project->c1Projects->stat_id==496){
                        echo '||';
                    }else{
                       echo  '-';
                    }
    
        ?></td><?php } ?>

    Вюха одного проекта

    Elenberg, 24 Февраля 2015

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

    +133

    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
    public string GenerateWinCode(String PrefixWinCode, String Name, String LastName, String NameCompany, bool IsCompany = false)
            {
                string _NormalWinCode = "";
                if (!IsCompany)
                    _NormalWinCode = (PrefixWinCode + Name[0] + LastName[0]).ToUpper();
                else
                {
                    var i = 1;
                    try
                    {
                        while (String.IsNullOrWhiteSpace(NameCompany[i].ToString()))
                        {
                            i++;
                        }
                        _NormalWinCode = (PrefixWinCode + NameCompany[0] + NameCompany[i]).ToUpper();
                    }
                    catch (Exception)
                    {
                        _NormalWinCode = (PrefixWinCode + NameCompany[0] + NameCompany[0]).ToUpper();
                    }
                }
                if (PrefixWinCode == "IN")
                    throw new RuleException("ErrorWincode", Resources.Accounts.Account.WincodeInvalid);
                try
                {
                    using (var context = db)
                    {
                        var _WincodesSim =
                            (from q in context.UserPartners.Where(m => m.WinCode.ToUpper().StartsWith(_NormalWinCode))
                             where q.WinCode.Length > 4
                             select q.WinCode).ToList();
                        var _Sufix = _WincodesSim.Select(m => Convert.ToInt32(m.Substring(4))).Max();
                        return _NormalWinCode + (_Sufix + 1);
                    }
                }
                catch (InvalidOperationException)
                {
                    return _NormalWinCode + 1;
                }
            }

    Генерация уникальных ключей

    AndrewTakker, 24 Февраля 2015

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

    +137

    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
    public bool StartListener()
    		{
    			bool flag;
    			try
    			{
    				flag = (this.m_Listener.BeginAccept() ? true : false);
    			}
    			catch (Exception exception)
    			{
    				CAssert.ReportAssert(exception);
    				flag = false;
    			}
    			return flag;
    		}

    Из реального корпоративного проекта.

    Danmer, 23 Февраля 2015

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

    −115

    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
    def checkio(res):
        #bruteforce LOL
        if res[0][0] == res[1][0] == res[2][0] == "X":
            return "X"
    
        if res[0][1] == res[1][1] == res[2][1] == "X":
            return "X"
    
        if res[0][2] == res[1][2] == res[2][2] == "X":
            return "X"
    
        if res[0][0] == res[0][1] == res[0][2] == "X":
            return "X"
    
        if res[1][0] == res[1][1] == res[1][2] == "X":
            return "X"  
    
        if res[2][0] == res[2][1] == res[2][2] == "X":
            return "X"
    
        if res[0][0] == res[1][1] == res[2][2] == "X":
            return "X" 
    
        if res[0][2] == res[1][1] == res[2][0] == "X":
            return "X"
    
        if res[0][0] == res[1][0] == res[2][0] == "O":
            return "O"    
    
        if res[0][1] == res[1][1] == res[2][1] == "O":
            return "O"
    
        if res[0][2] == res[1][2] == res[2][2] == "O":
            return "O"
    
        if res[0][0] == res[0][1] == res[0][2] == "O":
            return "O"
    
        if res[1][0] == res[1][1] == res[1][2] == "O":
            return "O"
            
        if res[2][0] == res[2][1] == res[2][2] == "O":
            return "O"
    
        if res[0][0] == res[1][1] == res[2][2] == "O":
            return "O"        
    
        if res[0][2] == res[1][1] == res[2][0] == "O":
            return "O"
    
        return "D"

    Определить результат игры в крестики нолики.

    gost, 22 Февраля 2015

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