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

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

    −113

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    def convert_get_to_post(header='HTTP_X_GET_DATA'):
        def decorator(function):
            @wraps(function)
            def wrapper(request, *args, **kwargs):
                if header in request.META:
                    request.method = 'GET'
                    request.GET = request.POST
                return function(request, *args, **kwargs)
            return wrapper
        return decorator

    Как избежать проблему с большим количеством параметров в URL при GET запросе...

    winter, 27 Января 2015

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

    −127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    //200114		
    //ОбластьКонОстаткиДоговор.Параметры.ПеременныйДоговор = ВыборкаДоговор.Договор;  //Убери рем когда договор опять нужен будет 
    
    //210014
    //ОбластьКонОстаткиДоговор.Параметры.ПеенныйДоговор = ВыборкаДоговор.Договор;  //Убери рем когда договор опять нужен будет

    Пенный договор вновь вступил в силу..

    gStill, 27 Января 2015

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

    −121

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Функция ПереформатироватьДату(Дата)
     Год  = Формат(Дата, "ДФ=гггг");
     Месяц = Формат(Дата, "ДФ=ММ");
     День = Формат(Дата, "ДФ=дд");
     Час  = Формат(Дата, "ДФ=Ч") ;
     Минута  = Формат(Дата, "ДФ=мм");
     Секунда = Формат(Дата, "ДФ=сс");
     ПолученнаяДата = Год+Месяц+День+Час+Минута+Секунда;
     Возврат ПолученнаяДата; 
    КонецФункции

    Творчечство стажера. Надо было в скл -запрос подсунуть дату в виде строки. Должно быть Формат(Дата, "ДФ=yyyyMMddhhmmss"). Да и отдельной функции не надо

    delph1ct, 26 Января 2015

    Комментарии (1)
  5. ActionScript / Говнокод #17515

    −90

    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
    public static function padToTwoDigits(value:int):String
    {
    	if(value < 10)
    		return "0" + value.toString();
    	else
    		return value.toString();
    }
    
    /**
     * returns 00:00 format
     * 
     * @param  miliseconds 
     */
    public static function time_format(miliseconds:Number):String{
    	var recorded_time_lbl:String = '';
    	
    	var seconds:Number = miliseconds/1000;
    	var minutes:uint = seconds / 60;
    
    	var seconds_remain:uint = seconds - (minutes*60);
    
    	var sec_lbl:String = '';
    	if(seconds_remain<10){
    		sec_lbl = '0'+seconds_remain;
    	}else{
    		sec_lbl = ''+seconds_remain;
    	}
    	var min_lbl:String = '';
    	if(minutes<10){
    		min_lbl = '0'+minutes;
    	}else{
    		min_lbl = ''+ minutes;
    	}
    	
    	recorded_time_lbl = min_lbl + ':' + sec_lbl;
    	return recorded_time_lbl;
    	//--
    	var recorded_time:String = (miliseconds/100000).toFixed(2) ;
    	
    	if(recorded_time.length == 5) // 23.22
    		recorded_time_lbl = recorded_time.substr(0,2)+':'+recorded_time.substr(3);
    	else if(recorded_time.length == 4) // 4.26
    		recorded_time_lbl = '0'+recorded_time.substr(0,1)+':'+recorded_time.substr(2);
    	
    	return recorded_time_lbl;
    }
    /**
    * limits a string to a specified length and adds '...' at the end of it
    */ 
    public static function trim(s:String,limit:uint):String{
    	if(s.length > limit){
    		s = s.substr(0,limit-4) + '...';
    	}
    	return s;
    }
    
    public static function formatTime(value: Number): String
    {
    	if (isNaN(value) || (value < 0))
    	{
    		return "0:0";
    	}
    	var formatedTime: Array = formateTimeToIntArr(value);
    	var minutes: int = formatedTime[1];
    	if (minutes < 0)
    	{
    		return "0:0";
    	}
    	var seconds: int = formatedTime[0];
    	var timevalue: String = minutes + ":";
    
    	if (seconds < 10)
    	{
    		timevalue += "0";
    	}
    
    	timevalue = timevalue + seconds;
    
    	return timevalue;
    }
    
    public static function formateTimeToIntArr(value: Number): Array
    {
    	var result: Array = [0, 0];
    	if (!isNaN(value))
    	{
    		var minutes: int = value / 60;
    		var seconds: int = value % 60;
    		if (!(minutes < 0))
    		{
    			result = [seconds, minutes];
    		}
    	}
    	return result;
    }

    Я понимаю, что много, но количество тут играет определенную роль. Это только небольшая часть файла вспомогательных функций для форматирования времени, дат и т.п. В какой-то степени удручает еще и неизобретательность автора, последовательно наступающих на те же самые грабли и даже ни на секунду не задумавшегося о предназначении...

    wvxvw, 25 Января 2015

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

    +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
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    // For a portable version of timegm(), set the TZ environment variable  to
    // UTC, call mktime(3) and restore the value of TZ.  Something like
    
    #include <time.h>
    #include <stdlib.h>
    
    time_t
    my_timegm(struct tm *tm)
    {
        time_t ret;
        char *tz;
    
        tz = getenv("TZ");
        if (tz)
            tz = strdup(tz);
        setenv("TZ", "", 1);
        tzset();
        ret = mktime(tm);
        if (tz) {
            setenv("TZ", tz, 1);
            free(tz);
        } else
            unsetenv("TZ");
        tzset();
        return ret;
    }

    Цитата из man timegm. Сборка unix timestamp из компонент (год, месяц и т.п.).

    Удобно, наглядно, потокобезопасно.

    bormand, 23 Января 2015

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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function calcHTime($stt) {
            $secs   = time() - $stt;
            $h      = (int) ($secs / 3600);
            $m      = (int) (($secs - ($h * 3600)) / 60);
            $s      = (int) ($secs - ($h * 3600) - ($m * 60));
            return sprintf("%02d:%02d:%02d", $h, $m, $s);
    }

    dannikonov, 23 Января 2015

    Комментарии (1)
  8. C++ / Говнокод #17445

    +54

    1. 1
    ((Dialog*)parent)->getSquareStorage()->at(((Dialog*)parent)->getSquareStorage()->size() / 2)->setColor(0,0,0);

    Qt. Я естественно сразу же переписал этот шлак

    artembegood, 15 Января 2015

    Комментарии (1)
  9. Pascal / Говнокод #17429

    +86

    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 TSnifferMainForm.GetSetInjected(pID:Cardinal; Get:Boolean=False):Boolean;
    type rParam=record _pID:Cardinal; _Get,_Res:Boolean; end;
    const PE_STR='*RODC_PE ';
    var Params:rParam;
    function ProcCloseEnum(Handle:THandle; _Params:Integer):BOOL; stdcall;
    var TempPID:Cardinal; hCap:string; lCap:integer;
    begin
    Result:=True;
    GetWindowThreadProcessId(Handle,TempPID);
    if TempPID=rParam(Pointer(_Params)^)._pID then begin
    lCap:=SendMessage(Handle,WM_GETTEXTLENGTH,0,0);
    lCap:=lCap+1;
    SetLength(hCap,lCap-1);
    SendMessage(Handle,WM_GETTEXT,lCap,LongInt(@hCap[1]));
    if not rParam(Pointer(_Params)^)._Get then if Pos(PE_STR,hCap)=0 then SetWindowText(Handle,PAnsiChar(PE_STR+hCap)) else SetWindowText(Handle,PAnsiChar(StringReplace(hCap,PE_STR,'',[rfReplaceAll])))
    else if Pos(PE_STR,hCap)<>1 then rParam(Pointer(_Params)^)._Res:=False else rParam(Pointer(_Params)^)._Res:=True;
    Result:=False; end;
    end;
    begin
    Params._pID:=pID; Params._Get:=Get;
    EnumWindows(@ProcCloseEnum,Integer(@Params));
    Result:=Params._Res;
    end;

    Нет, сраный коллбек, я сделаю тебя локальным чего бы мне это не стоило!

    KOTOM, 12 Января 2015

    Комментарии (1)
  10. JavaScript / Говнокод #17409

    +156

    1. 1
    document.write('Well, I broke your script');

    Я знаю что document.write это плохо, но использование document.write ломает jsfiddle :D
    http://jsfiddle.net/volter9/x29Lzvu6/

    volter9, 05 Января 2015

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

    +162

    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
    if ($n > '25') {
        $list = floor($n / 25) + 1;
        $str .= '<div id="srt_page" align="center">';
        for ($q = 1; (($q) <= $list); $q++) {
            if ((((isset($_GET['page'])) && ($_GET['page'] == $q)) || ((!isset($_GET['page'])) && ($q == 1))))
                $str .= ' <b>' . $q . '</b> ';
            else {
                if ((($q == ($pg - 1)) && (($pg - 1) != 1) && (($pg - 1) != $list)) || (($q == ($pg - 2)) && (($pg - 2) != 1) && (($pg - 2) != $list)) || (($q == ($pg - 3)) && (($pg - 3) != 1) && (($pg - 3) != $list)) || (($q == ($pg - 4)) && (($pg - 4) != 1) && (($pg - 4) != $list)) || (($q == ($pg + 1)) && (($pg + 1) != 1) && (($pg + 1) != $list)) || (($q == ($pg + 2)) && (($pg + 2) != 1) && (($pg + 2) != $list)) || (($q == ($pg + 3)) && (($pg + 3) != 1) && (($pg + 3) != $list)) || (($q == ($pg + 4)) && (($pg + 4) != 1) && (($pg + 4) != $list)) || ($q == $list) || ($q == 1)) {
                    if (($q == $list) && (($pg + 4) < ($list - 1)))
                        $str .= '...';
                    $str .= ' <a class="link_page" href="?page=' . $q . '"> ' . $q . ' </a> ' . "\n";
                    if (($q == 1) && (($pg - 4) > 2))
                        $str .= '...';
                }
            }
        }
        $str .= '</div>';
    }
    return $str;

    Кто не понял, это такой pagination %))

    AgentSIB, 30 Декабря 2014

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