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

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

    +127

    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
    99. 99
    /* Групповые операции с обращениями */
    public function issuegroupopsAction() {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $operation = $this->_request->getPost('operation');
        define('RTF_SYMBOL_PAGE_BREAK', '\page');
        try {
            // Валидация
            if(!in_array($operation, array('print-letters', 'print-work-order'))) {
                throw new Exception('Неверная операция');
            }
            $issue_numbers = explode(';', (string)$_POST['issues']);
            if(!count($issue_numbers)) {
                throw new Exception('Не выбрано ни одного обращения.');
            }
            // Вычитка указанных обращений
            $filter = new Type_Issue_Filter(array('issue_number' => $issue_numbers));
            $paginator = new Type_Paginator;
            $paginator->items_per_page = 40;
            $issues = services::Issue()->records($this->user->sessionId, $filter, array('executant', 'address'), 'number', $paginator);
            if(!count($issues->items)) {
                throw new Exception('Выбранные обращения не найдены.');
            }
            $templateMaker = new Prodom_Rtf_TemplateMaker;
            $templatesDir = dirname(__FILE__).'/templates/';
            $outputFiles = array();
            // Вид операции с группой обращений
            switch($operation) {
                case 'print-letters': {
                    // Сформирвать письма
                    $templateMaker->readTemplatesFromRtfFile($templatesDir.'templates.rtf');
                    $outputFiles = array('executants_%u.rtf' => array('issue2', 'letter1'), 'declarant_%u.rtf' => array('letter2'));
                    break;
                }
                case 'print-work-order': {
                    // Печать заказ-нарядов
                    if(!is_null($this->user->organization->issue_form_template)) {
                        // Если для организации определен свой собственный шаблон
                        $templateMaker->readTemplatesFromRtfFile($templatesDir.$this->user->organization->issue_form_template);
                    } else {
                        // Если шаблон явно не определен
                        $templateMaker->readTemplatesFromRtfFile($templatesDir.'templates.rtf');
                    }
                    $outputFiles = array('issue_%u.rtf' => array('issue1'));
                    break;
                }
            }
            $toworkIssueIds = array();
            $outputs = array_fill_keys(array_keys($outputFiles), null);
            // Перебор выбранных пользователем обращений
            foreach($issues->items as $issue) {
                // Переводим все новые обращения в статус "В работе"
                $issue_new_statuses = array(ISSUE_STATUS_NEW, ISSUE_STATUS_CONFIRMED);
                if(($operation == 'print-work-order') && in_array($issue->status_id, $issue_new_statuses) && ($issue->org_executor_id == $this->user->organization->id)) {
                    $toworkIssueIds[] = $issue->id;
                }
                // Подготовка полей обращения для печати на формах
                $fields = $this->getIssuePrintFields($issue);
                foreach($outputFiles as $fileName => $needTemplates) {
                    foreach($needTemplates as $template_code) {
                        $out = $templateMaker->getAppliedTemplate($template_code, $fields);
                        $outputs[$fileName] .= ($outputs[$fileName] ? RTF_SYMBOL_PAGE_BREAK : null) . $out;
                    }
                }
            }
            if(count($toworkIssueIds)) {
                $resp = services::Issue()->changeStatusMultiple($this->user->sessionId, $toworkIssueIds, ISSUE_STATUS_INWORK, null, null, null);
            }
            // Если на выходе только один файл, отправляем rtf
            if(count($outputs) == 1) {
                foreach($outputs as $fileName => $fileBody) {
                    // Генерация случайного имени файла
                    $fileName = str_replace('%u', substr(md5(implode('_', $issue_numbers)), 0, 7), $fileName);
                    // Вывод файла пользователю
                    header('Content-type: application/rtf');
                    header("Content-Disposition: attachment; filename={$fileName}");
                    echo $templateMaker->getHeader().$fileBody.$templateMaker->getFooter();
                }
            } else {
                // Eсли на выходе больше одного файла, пакуем их архивом
                header("Content-type: application/octet-stream");
                header("Content-Disposition: attachment; filename=issues.zip");
                header("Content-Description: Files of an applicant");
                // Создаем ZIP архив
                $zip = new ZipFile();
                foreach($outputs as $fileName => $fileBody) {
                    // Генерация случайного имени файла
                    $fileName = str_replace('%u', substr(md5(implode('_', $issue_numbers)), 0, 7), $fileName);
                    // Вывод файла пользователю в браузер
                    $fileBody = $templateMaker->getHeader().$fileBody.$templateMaker->getFooter();
                    $zip->addFile($fileBody, $fileName);
                }
                echo $zip->file();
            }
        }
        catch(Exception $ex) {
            die($ex->getMessage());
        }
    }

    Функция распечатки документов с отчетами по выбранным обращениям

    sciner, 13 Февраля 2013

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

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    <select name="animals">
    		<option value="1" addTags="<div class='kv'></div>">Медведь</option>
    		<option value="2" addTags="<input type='checkbox' />">Волк</option>
    </select>

    html в js - это прошлый век =)
    http://www.xiper.net/collect/html-and-css-tricks/verstka-form/nice-select-jquery.html

    RedMonkey, 14 Января 2013

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

    +127

    1. 1
    mainChartArea.Area3DStyle.Enable3D = (ShowIn3D.Checked) ? true : false;

    Если true - значит true)))

    tvv, 11 Января 2013

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

    +127

    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
    Название: Регистрация заказчика.
    Основное действующее лицо: Менеджеру по работе с заказчиками
    Область действия: Система
    Уровень: Пользователя
    Минимальные гарантии: Система останется в рабочем состоянии
    Гарантии успеха: Клиент загеристрирован
    Триггер: Клиент обратился к менеджеру по работе с заказчиками с просьбой зарегистрироваться
    Основной сценарий:
    1. Клиент обращается к менеджеру по работе с заказчиками, менеджер открывает регистрацию, система запоминает.
    2. Менеджер по работе с заказчиками запрашивает у клиента, имя, клиент сообщает имя, менеджер вводит имя в соответвующую форму, система запоминает.
    3. Менеджер по работе с заказчиками запрашивает у клиента, отчество, клиент сообщает отчество, менеджер вводит отчество в соответвующую форму, система запоминает.
    4. Менеджер по работе с заказчиками запрашивает у клиента, фамилию, клиент сообщает фамилию, менеджер вводит фамилию в соответвующую форму, система запоминает.
    5. Менеджер по работе с заказчиками запрашивает у клиента, номер паспорта, клиент сообщает номер паспорта, менеджер вводит номер паспорта пв соответвующую форму, система подтверждает правильность номера паспорта.
    6. Менеджер по работе с заказчиками запрашивает у клиента, дату выдачи паспорта, клиент сообщает дату выдачи паспорта, менеджер вводит дату выдачи паспорта в соответвующую форму, система подтверждает.
    7. Менеджер по работе с заказчиками запрашивает у клиента, контактный номер, клиент сообщает контактный номер, менеджер вводит контактный номер в соответвующую форму, система подтверждает.
    8. Менеджер по работе с заказчиками закрывает регистрацию, система сохраняет информацию о клиенте и подтверждает успешность регистрации.
    Альтернативы:
    5.а. Введен неверный номер паспорта.
    	1. Система сообщает об ошибке
    	2. Переход к пункту 5 основного сценария.
    6.а. Клиент уже зарегистрирован.
    	1. Система сообщает об ошибке.

    Моя боль...

    myzone, 06 Января 2013

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

    +127

    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
    #include <stdio.h>
    
    int Sravn (int a, int b)
    {
    if (a=b)
    {return 1;}
    else 
    {return 0;}
    }
    
    int main()
    {
         int A[5]={1, 4, 7, 4, 4}, rez1, rez2, rez3, rez4, rez5;
         int i=0;
         rez1=Sravn(A[i], A[i+1])+Sravn(A[i], A[i+2])+Sravn(A[i], A[i+3])+Sravn(A[i], A[i+4]);
         rez2=Sravn(A[i+1], A[i])+Sravn(A[i+1], A[i+2])+Sravn(A[i+1], A[i+3])+Sravn(A[i+1], A[i+4]);
         rez3=Sravn(A[i+2], A[i])+Sravn(A[i+2], A[i+1])+Sravn(A[i+2], A[i+3])+Sravn(A[i+2], A[i+4]);
         rez4=Sravn(A[i+3], A[i])+Sravn(A[i+3], A[i+1])+Sravn(A[i+3], A[i+2])+Sravn(A[i+3], A[i+4]);
         rez5=Sravn(A[i+4], A[i])+Sravn(A[i+4], A[i+1])+Sravn(A[i+4], A[i+3])+Sravn(A[i+4], A[i+2]);
         if (rez1>rez2 && rez1>rez3 && rez1>rez4 && rez1>rez5)
         {printf ("/d", A[i]);}
         else if (rez2>rez1 && rez2>rez3 && rez2>rez4 && rez2>rez5)
         {printf ("/d", A[i+1]);}
         else if (rez3>rez2 && rez3>rez1 && rez3>rez4 && rez3>rez5)
         {printf ("/d", A[i+2]);}
         else if (rez4>rez2 && rez4>rez3 && rez4>rez1 && rez4>rez5)
         {printf ("/d", A[i+3]);}
         else if (rez5>rez2 && rez5>rez3 && rez5>rez1 && rez5>rez4)
         {printf ("/d", A[i+4]);}
         return 0;
         }

    Ищет в массиве наиболее часто повторяющийся элемент. Написано мною. Нифига не работает, но ошибок не выдает.

    MurMur, 16 Декабря 2012

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

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    IF context.page_name == 'company' or context.page_name == 'accessibility' or context.page_name == 'arbitrage'  or context.page_name == 'arbitrage_income' or context.page_name == 'family_income' or context.page_name == 'family_income_acc' or context.page_name == 'family_income_fac' or context.page_name == 'family_income_summary' or context.page_name == 'arbitrage-rf' or context.page_name == 'federal-arbitrage' or context.page_name == 'appelate-arbitrage' or context.page_name == 'citation-index' or context.page_name == 'openness' or context.page_name == 'openness-mo' or context.page_name == 'openness-moscow' or context.page_name == 'openness-spb' or context.page_name == 'openness-lenob' or context.page_name == 'media-moscow' or context.page_name == 'media-mo' or context.page_name == 'media-general-jurisdiction' or context.page_name == 'media-spb' or context.page_name == 'media-lenob' or context.page_name == 'court-site-msk' or context.page_name == 'phone-court-general-jurisdiction' or context.page_name == '
    court-site-mo' or context.page_name == 'court-site-spb' or context.page_name == 'court-site-lo' or context.page_name == 'citation-court-general-jurisdiction' or context.page_name == 'phone-openness-msk' or context.page_name == 'phone-openness-mo' or context.page_name == 'phone-openness-spb' or context.page_name == 'phone-openness-lo' or context.page_name == 'court-transparency-msk' or context.page_name == 'court-transparency-mo' or context.page_name == 'court-transparency-spb' or context.page_name == 'court-transparency-lo' or context.page_name == 'court-transparency-general-jurisdiction' or context.page_name == 'court-arbitrage-citation-rf' or context.page_name == 'court-arbitrage-appellate-citation' or context.page_name == 'court-federal-arbitrage-citation' or context.page_name == 'court-arbitrage-citation-summary' or context.page_name == 'phone-openness-sub' or context.page_name == 'phone-openness-aac' or context.page_name == 'phone-openness-fas' or context.page_name == 'phone-openness-svod' or context.
    page_name == 'media-court-subjects-rf' or context.page_name == 'media-court-arbitration-appeal' or context.page_name == 'media-court-federal-arbitration-courts-districts' or context.page_name == 'media-all';
    	context.xslt_name = "casual/raiting_${context.page_name}.xslt";
    ELSE;
    	context.http_status = 404;
    END;

    Template Toolkit

    Un1oR, 13 Декабря 2012

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

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    val arr = new Array[Int](3)
    val arr2 = arr
    
    arr(0) = 100
    arr(1) = 200
    arr(2) = 300
    
    //arr2 == Array(100, 200, 300)

    Не говнокод конечно, хотя как посмотреть.

    Это нормально, учитывая, что val предполагает неизменяемость значения, или в данном случае считается, что только присвоить новое значение нельзя, а изменять внутреннюю структуру массива можно как захочешь?

    Ведь наже в C++ нельзя изменить значения const std::vector.

    Fai, 01 Декабря 2012

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

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if(Normal(Pawn.Acceleration) Dot Vect(1,0,0) > 0)
          {
             tempRot.Yaw = 0;
             Pawn.SetRotation(tempRot);
          }

    Из туториала по UDK. Почему просто не написать Pawn.Acceleration > 0 ?

    tirinox, 12 Ноября 2012

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

    +127

    1. 1
    2. 2
    <COUNTRY>Испания</COUNTRY>
     <REGION><![CDATA[Краснодарский Край]]></REGION>

    "Максим не знал, смеяться или плакать, Максим не знал, зачем учился в школе..."(с)
    xml-выгрузка данных с одного сайта агентства недвижимости.

    twsdwf, 17 Октября 2012

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

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    while (true) {
        Console.WriteLine(answer);
        answer = process.StandardOutput.ReadLine();
    }

    Человеку нужно просто считывать команды (строки) из консоли. Делает через жопу.

    Fai, 24 Сентября 2012

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