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

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

    −116

    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
    #!/usr/bin/perl -w
    
    @arr=<>;
    
    @arr=reverse(@arr);
    $ac=$#arr+1;
    print "array size $ac\n";
    @arr = sort { $a <=> $b } @arr;
    while($ac>2){
      $ac=$#arr+1;
    print "size $ac";
      print "reverse \n@arr\n\n";
    if(!exists($arr[$ac])){
    $eln=$ac-1;
    print "\nDelete element $arr[$eln] $eln und $arr[$ac] $ac\n";
      splice @arr, $ac-2,2;
    };
    };

    Скрипт на perl

    AliceGoth, 26 Апреля 2011

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

    +92

    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
    I:=1;
        while I<=High(Sockets) do
         begin
          if FD_IsSet(Sockets[I],FDSet) then
           if Recv(Sockets[I],…)<=0 then
            begin
             // Связь разорвана, надо закрыть сокет
             // и удалить его из массива
             CloseSocket(Sockets[I]);
             for J:=I to High(Sockets)-1 do
              Sockets[J]:=Sockets[J+1];
             Dec(I);
             SetLength(Sockets,Length(Sockets)-1)
            end
           else
            begin
             // Получены данные от клиента, надо ответить
             Send(Sockets[I],…)
            end;
          Inc(I)
         end;

    На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.

    TarasB, 09 Февраля 2011

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

    +170

    1. 1
    2. 2
    $fh = fopen($filename, r);
    while(($str = fread($fh, 1024)) != null) $fsize += strlen($str);

    Вот так теперь в PHP принято определять размер файла.

    Sandro, 30 Ноября 2010

    Комментарии (51)
  5. JavaScript / Говнокод #3403

    +165

    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
    <div style="font-size:30px; text-align: center;padding-top: 50px;">Число установок принципиально новой OS<br><b><span id="installCount">10324435</span></b></div>
            <script type="text/javascript">
            var memCount = 10584471;
            var memPerSec = 1.38176367782;
            function updateCount() {
              next = -(1000 / memPerSec)*Math.log(Math.random());
              memCountString = '' + memCount;
              len = memCountString.length;
              memCountString = memCountString.substr(0,len-6)+'<span style="font-size:30px"> </span>'+memCountString.substr(len-6,3)+'<span style="font-size:30px"> </span>'+memCountString.substr(len-3,3);
              document.getElementById('installCount').innerHTML = memCountString;
              memCount = memCount + 1;
              setTimeout(updateCount, next);
            }
            updateCount();
            </script>

    Помните на сайте знаменитой , принципиально новой http://bolgenos.ru/ есть табло сколько человек скачало ?
    Выше скрипт ЩИТалки :)
    Мало того что обман , так ещё и кривой

    TIMHOK, 05 Июня 2010

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    void main(void)
    {
      int s, e, x, y, n, i, g, e, r, s;
      // действия с вышеобъявленными переменными
      return;
    }

    Max ID, 21 Мая 2010

    Комментарии (51)
  7. 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)
  8. 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)
  9. C++ / Говнокод #28627

    −2

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

    SpetzOperation, 08 Марта 2023

    Комментарии (50)
  10. 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)
  11. 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)