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

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

    +152.3

    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
    <ul>
            \\\".listQuery(\\\"SELECT Hidden_URL, Subdivision_Name, Subdivision_ID FROM Subdivision WHERE Parent_Sub_ID = \\\$data[Subdivision_ID] and checked=1 order by priority \\\", \\\"
            <li><a href='\\\\\\\$data[Hidden_URL]'>\\\\\\\$data[Subdivision_Name]</a>
    
                <ul>
                    \\\\\\\".listQuery(\\\\\\\"SELECT Hidden_URL, Subdivision_Name, Subdivision_ID FROM Subdivision WHERE Parent_Sub_ID = \\\\\\\$data[Subdivision_ID] and checked=1 order by priority \\\\\\\", \\\\\\\"
                    <li><a href='\\\\\\\\\\\\\\\$data[Hidden_URL]'>\\\\\\\\\\\\\\\$data[Subdivision_Name]</a>
    
                    <ul>
                         \\\\\\\\\\\\\\\".listQuery(\\\\\\\\\\\\\\\"SELECT Hidden_URL, Subdivision_Name, Subdivision_ID FROM Subdivision WHERE Parent_Sub_ID = \\\\\\\\\\\\\\\$data[Subdivision_ID] and checked=1 order by priority \\\\\\\\\\\\\\\", \\\\\\\\\\\\\\\"
                         <li><a href='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$data[Hidden_URL]'>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$data[Subdivision_Name]</a>
    
                         <ul>
                             \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\".listQuery(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"SELECT Hidden_URL, Subdivision_Name, Subdivision_ID FROM Subdivision WHERE Parent_Sub_ID = \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$data[Subdivision_ID] and checked=1 order by priority \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\", \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"
                             <li><a href='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$data[Hidden_URL]'>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$data[Subdivision_Name]</a>
                             <ul></ul></li>
    
                             \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\").\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"
                         </ul></li>
    
    
                         \\\\\\\\\\\\\\\").\\\\\\\\\\\\\\\"
                    </ul></li>
                    \\\\\\\").\\\\\\\"
    
                </ul></li>
    
            \\\").\\\"
            </ul></li>
    
        \").\"
        </ul></li>
        </li>
        ")."
        </ul>
        </div>

    Вывод меню в главном макете дизайна одного сайта на базе говноCMS Netcat. Можно попроще сделать, но видимо автор торопился ;) И весь этот говнокод редактируется в textarea размерами 700x300px без всякой подсветки.

    guest, 26 Марта 2009

    Комментарии (51)
  3. PHP / Говнокод #445

    +264.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    <?php
    for($i=0;$i<10;$i++) {
    	for($i=0;$i<5;$i++) {
    		echo 'Какого х** зацикливает!!!!!!!';
    	}
    }
    ?>

    Каждый наверное наступал на эти грабли :)

    guest, 23 Января 2009

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

    −2

    1. 1
    Девочки, с 8 марта!

    SpetzOperation, 08 Марта 2023

    Комментарии (50)
  5. Python / Говнокод #28423

    +1

    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
    #!/usr/bin/env python3
    # -*- coding: UTF8 -*-
    from datetime import date
    from os import environ, mkdir, system
    from os.path import dirname, exists, join as path_join
    from time import time
    
    
    def check_verbose():
        return environ.get("DEBUG") in ("true", "True", "TRUE", True, "yes", "Yes", "YES")
    
    
    class Timer:
        def __init__(self):
            """
            Объект добавляет в начале текста временные метки
            """
            self.start_epoch = self.last_call = time()
    
        @staticmethod
        def __fully_scope(timer: int or str) -> str:
            """
            Преобразует однозначные значения в двузначные.
            :param timer: Время
            :return: Двузначное значение
            """
            if len(str(timer)) == 2:
                return str(timer)
            elif len(str(timer)) == 1:
                return "0" + str(timer)
            elif len(str(timer)) <= 0:
                return "00"
            elif len(str(timer)) >= 2:
                return str(timer)[:2]
    
        def __formatter(self, timestep: float) -> str:
            """
            Форматирует время
                :return: время hh:mm:ss
            """
            _hours = int(timestep // 3600), int(timestep % 3600)
            _minute = int(_hours[1] // 60), int(_hours[1] % 60)
    
            _current_epoch = f"{self.__fully_scope(_minute[0])}:{self.__fully_scope(_minute[1])}"
            if _hours[0] > 0:
                _current_epoch = f"{_hours[0]}:" + _current_epoch
            return _current_epoch
    
        def __call__(self, fix_call: bool = True) -> str:
            """
            Считает время с начала сценария + с последнего шага
                :return: время hh:mm:ss(+hh:mm:ss)
            """
            current_epoch = self.__formatter(time() - self.start_epoch)
            timedelta_epoch = self.__formatter(time() - self.last_call)
            if fix_call:
                self.last_call = time()
    
            return f"{current_epoch}(+{timedelta_epoch})"
    
        def __bool__(self):
            return True
    
    
    class Logger:
        def __init__(self, name: str):
            self.start_time = time()
            self.name = name.upper()
            self.timer = Timer()
            self.log_file = path_join(environ["RESULT_DIR"], name, f"{name}_{date.today().isoformat()}.log")
    
        def check_file(self):
            if not exists(self.log_file):
                if not exists(dirname(self.log_file)):
                    mkdir(dirname(self.log_file))
                system(f"echo {date.today().isoformat()}> {self.log_file}")
    
        def save_log(self, msg: str):
            self.check_file()
            with open(self.log_file, "a+") as _log_file:
                _log_file.write(msg + "\n")
    
        def massage(self, msg: str):
            print(f"{self.timer()}::{self.name}::{msg}")
            self.check_file()
            self.save_log(f"{self.timer()}::{self.name}::{msg}")
    
        def multi_msg(self, level: str, msg: any):
            if isinstance(msg, (str, int, float, bool)):
                self.massage(f"{level.upper()}::{msg}")
            elif isinstance(msg, (tuple, list, set)):
                for _msg in msg:
                    self.multi_msg(level, _msg)
            elif isinstance(msg, dict):
                for _msg_key in msg:

    Ну собственно самописный логгер, потому что "библиатечный логгер переусложнен НИНАДА!"

    dicklover, 19 Октября 2022

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

    +1

    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
    Запрос = Новый Запрос;
    	Запрос.Текст = "ВЫБРАТЬ
    	|	БИТ_Отель_ДоговорыЭквайринга.Ссылка
    	|ИЗ
    	|	Справочник.БИТ_Отель_ДоговорыЭквайринга КАК БИТ_Отель_ДоговорыЭквайринга
    	|ГДЕ
    	|	БИТ_Отель_ДоговорыЭквайринга.ДоговорВзаиморасчетов = &ДоговорВзаиморасчетов";
    	
    	Запрос.УстановитьПараметр("ДоговорВзаиморасчетов", СтруктураПарам.БИТ_Отель_ДоговорЭквайринга.ДоговорВзаиморасчетов);
    	
    	Результат = Запрос.Выполнить().Выгрузить();
    	
    	Струк = Новый Структура;
    	Струк.Вставить("ВидОплаты", ВидОплаты);
    	
    	Если Результат.Количество() Тогда
    		РезОтбора =	Результат[0].Ссылка.ТарифыЗаРасчетноеОбслуживание.НайтиСтроки(Струк);
    		Если РезОтбора.Количество() Тогда
    			ПроцентТорговойУступки = РезОтбора[0].ПроцентТорговойУступки;
    		Иначе
    			ПроцентТорговойУступки = 0;
    			Предупреждение("Не указан процент торговой уступки!");
    			ЭлементыФормы.ПанельДокумента.ТекущаяСтраница = ЭлементыФормы.ПанельДокумента.Страницы.Эквайринг;
    			ЭлементыФормы.ПроцентТорговойУступки.ОтметкаНезаполненного = Истина;
    			ЭлементыФормы.СуммаТорговойУступки.ОтметкаНезаполненного = Истина;
    			ТекущийЭлемент = ЭлементыФормы.ПроцентТорговойУступки;
    		КонецЕсли;
    	Иначе
    		ПроцентТорговойУступки = 0;
    		Предупреждение("Не указан процент торговой уступки!");
    		ЭлементыФормы.ПанельДокумента.ТекущаяСтраница = ЭлементыФормы.ПанельДокумента.Страницы.Эквайринг;
    		ЭлементыФормы.ПроцентТорговойУступки.ОтметкаНезаполненного = Истина;
    		ЭлементыФормы.СуммаТорговойУступки.ОтметкаНезаполненного = Истина;
    		ТекущийЭлемент = ЭлементыФормы.ПроцентТорговойУступки;
    	КонецЕсли;

    уже шестой год я работаю с этой "конфой", жаль что ее целиком нельзя сюда выложить, там, не считая исходной бух части, сплошной креатив каких то ДЦП на обеденной перемене классе во втором.

    jah, 31 Июля 2020

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

    0

    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
    <div ng-switch="state">
        <div ng-switch-when="NO_QUERY">Введите запрос.</div>
        <div ng-switch-when="IN_PROGRESS">Ищем...</div>
        <div ng-switch-when="NOT_FOUND">Ничего не найдено.</div>
        <div ng-switch-when="FOUND">
            <div ng-repeat="comment in result" ng-include="'comment-template-search'"></div>
            <div ng-if="!searchComplete">
                <button ng-click="loadMoreResults()">Ещё результаты</button>
            </div>
            <div ng-if="searchComplete">
                Поиск завершён.
            </div>
        </div>
    </div>

    Какой FSM )))

    gost, 09 Декабря 2019

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

    +2

    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
    https://habr.com/ru/article/448466/
    
    */
    А последние пару лет набирает популярность boost.hana. Это boost.fusion,
    но с constexpr'ом и лямбдами. Автор hana, Луис Дионе (Louis Dionne),
    используя на полную мощь все возможности новых стандартов, в некотором
    смысле очеловечил метапрограммирование. С помощью hana всяческие
    манипуляции с типами, их кортежами, отображениями, а также компайл- и
    рантайм-работа с ними обрели практически человеческое лицо и читаемый
    вид. Ну, с поправкой на синтаксис C++, разумеется. Вот, например, как выглядит
    универсальный сериализатор структур, написанный с помощью hana:
    */
    
    // 1. Give introspection capabilities to 'Person'
    struct Person {
      BOOST_HANA_DEFINE_STRUCT(Person,
        (std::string, name),
        (int, age)
      );
    };
    // 2. Write a generic serializer (bear with std::ostream for the example)
    auto serialize = [](std::ostream& os, auto const& object) {
      hana::for_each(hana::members(object), [&](auto member) {
        os << member << std::endl;
      });
    };
    // 3. Use it
    Person john{"John", 30};
    serialize(std::cout, john);
    
    /*
    Ну да, структуры приходится описывать особым образом. А кому сейчас легко?
    И тут хочется также отметить библиотеку tinyrefl за авторством Manu Sánchez
    (Мануэля Санчеса). Довольно неплохая попытка принести в мир C++-разработки
    статическую рефлексию без расширения компилятора. Для своей работы библиотека
    требует стороннюю утилиту (cppast), но зато предоставляет довольно удобный доступ
    к информации о структурах, которую можно использовать в процессе разработки
    программы. Преимущество этой библиотеки (по сравнению с другими) в том, что для
    работы с ней не надо использовать «птичий язык», а элементы структур (как и сами
    структуры) можно произвольным образом атрибутировать прямо в исходном коде:
    */
    
    struct [[serializable]] Person {
        std::string name;
        int age;
    };
    template<typename Class>
    auto serialize(std::ostream& os, Class&& object) -> std::enable_if_t<
            tinyrefl::has_metadata<std::decay_t<Class>>() &&
            tinyrefl::has_attribute<std::decay_t<Class>>("interesting"),
        std::ostream&>
    {
        tinyrefl::visit_member_variables(object, [&os](const auto& /* name */, const auto& var) {
            os << var << std::endl;
        });
        return equal;
    }
    
    /*
    Таких примеров можно привести ещё много (или найти на гитхабе или гитлабе).
    Объединяет все эти библиотеки и инструменты одна особенность: значительно
    облегчая жизнь своим пользователям, они имеют такую реализацию, что остаётся
    лишь предполагать, какое количество страданий испытали их разработчики. Достаточно
    заглянуть в реализацию, увидеть забор из ifdef'ов и угловых скобок — и всё понятно.
    Нередко эти реализации делаются на грани возможностей компиляторов. workaround'ы
    банальных ошибок (или особенностей реализации языка конкретной версии конкретного
    компилятора с конкретными флагами) здорово раздувают их код. Желание поддерживать
    несколько стандартов сразу заставляет придумывать зубодробильные конструкции.
    Безусловно, простая попытка реализовать что-нибудь подобное здорово поднимает уровень
    владения языком (иногда — и самооценку). Но в какой-то момент, после многочасовой возни
    с очередной ошибкой, или непроходящим тестом, или крэшем компилятора руки опускаются,
    хочется плюнуть и бросить, ибо силы бороться иссякают.
    */

    Именно поэтому я за гомоиконность

    j123123, 21 Апреля 2019

    Комментарии (50)
  9. bash / Говнокод #25222

    0

    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
    [ERROR] The compilation of ocaml-base-compiler failed at "/home/me/.opam/opam-init/hooks/sandbox.sh build ./configure -prefix /home/me/.opam/ocaml-base-compiler.4.02.3 -with-debug-runtime".
    
    #=== ERROR while compiling ocaml-base-compiler.4.02.3 =========================#
    # context     2.0.0 | linux/x86_64 |  | https://opam.ocaml.org#12c8601e
    # path        ~/.opam/ocaml-base-compiler.4.02.3/.opam-switch/build/ocaml-base-compiler.4.02.3
    # command     ~/.opam/opam-init/hooks/sandbox.sh build ./configure -prefix /home/me/.opam/ocaml-base-compiler.4.02.3 -with-debug-runtime
    # exit-code   2
    # env-file    /tmp/opam-me-3195/ocaml-base-compiler-3195-d6d332.env
    # output-file /tmp/opam-me-3195/ocaml-base-compiler-3195-d6d332.out
    ### output ###
    # ./configure: line 195: rm: command not found
    # ./configure: line 196: touch: command not found
    # ../gnu/config.guess: line 35: sed: command not found
    # ../gnu/config.guess: line 1364: mkdir: command not found
    # ../gnu/config.guess: line 1364: mkdir: command not found
    # : cannot create a temporary directory in /tmp
    # [ERROR!] Cannot guess host type. You must specify one with the -host option.

    ^ ...И так там со всем.
    Кто там хотел попробовать "NixOS"? Могу поделиться впечатлениями: если вы надеятесь, что в этой оси можно будет пользоваться привычными "autotools", "opam" и "cabal", то фиг там. Из-за сломанного FHS ебаться с "Nix" придётся с первой минуты. cast @Роман

    CHayT, 25 Декабря 2018

    Комментарии (50)
  10. Assembler / Говнокод #25053

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    ㅌㄹ ㄱㅌ		; Помещаем в BX текущее значение регистра ES	<───────┐
    ㅈㅿ		; Загружаем младший байт регистра флагов в AH		│
    		;							│
    ㅊㅋ		; В пару ES:DI кладем то, что сейчас находится в AX	│
    		;							|
    ㄹㅅ		; Дважды увеличиваем значение регистра DI		|
    ㄹㅅ		; на одну единицу					|
    		;							│
    ㅎㅋ ㅿㅈ		; Образуем бесконечный цикл			>───────┘

    Господа, ОНО вернулось. Следующая итерация всеми нами любимого и восхваляемого [имя, которое нель̸̗̠̘̘̪̳̩зя произносить]. Я б̞̫͔̜ы на вашем ме̤̣̺͇̫с̨͈те покинул стр̵а̻̘̪̙͎̳̕н̬̙̤̙̪̝̺͠ицу. С̫е̜й̱͎ч̦̦̝͔а̙͓͓с̛̩̞̘ ̫̹͙̲̤̖͉ж̶͉̻е҉̼̦.

    h7381514, 05 Ноября 2018

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

    +1

    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
    public class TransactionRequestViewModel
    {
            public string X_login { get; set; }
    
            public double X_amount { get; set; }
    
            public int X_fp_sequence { get; set; }
    
            public int X_fp_timestamp { get; set; }
    
            public string X_fp_hash { get; set; }
    
            public string X_show_form { get; set; }
    
            public string X_receipt_link_method { get; set; }
    
            public string X_receipt_link_text { get; set; }
    
            public string X_receipt_link_url { get; set; }
    
            public string X_currency_code { get; set; }
    
            public string X_line_item { get; set; }
    }

    Этот "Х" добавляет +80 к читаемости.

    Moses, 19 Октября 2018

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