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

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

    +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
    SET @from = 11836;
    SET @to = 11840;
    
    INSERT INTO `sprinter_catalog_tree` (
        `sprinter_catalog_tree`.`level`,
        `sprinter_catalog_tree`.`position`,
        `sprinter_catalog_tree`.`parent_id`,
        `sprinter_catalog_tree`.`catalog`,
        `sprinter_catalog_tree`.`info_id`,
    --  ...
    )
    SELECT
        `sprinter_catalog_tree`.`level`,
        `sprinter_catalog_tree`.`position`,
        @to,
        `sprinter_catalog_tree`.`catalog`,
        `sprinter_catalog_tree`.`info_id`,
        `sprinter_catalog_tree`.`format_id`,
        `sprinter_catalog_tree`.`linked_id`,
        `sprinter_catalog_tree`.`linked_shablon_id`,
    --  ...
    FROM `sprinter_catalog_tree` where parent_id = @from order by id;
    
    INSERT INTO `sprinter_catalog_tree` (
        `sprinter_catalog_tree`.`level`,
        `sprinter_catalog_tree`.`position`,
        `sprinter_catalog_tree`.`parent_id`,
        `sprinter_catalog_tree`.`catalog`,
        `sprinter_catalog_tree`.`info_id`,
    --  ...
    )
    SELECT
        a.`level`,
        a.`position`,
        (SELECT id from sprinter_catalog_tree as b where b.parent_id = @to and b.name like (SELECT name from sprinter_catalog_tree where id = a.parent_id)),
        a.`catalog`,
        a.`info_id`,
        a.`format_id`,
        a.`linked_id`,
        a.`linked_shablon_id`,
    --  ...
    FROM `sprinter_catalog_tree` as a where parent_id in (SELECT id FROM sprinter_catalog_tree where parent_id = @from) order by id;
    
    INSERT INTO `sprinter_catalog_info`
    (`name`,
    `eng_name`,
    `text`,
    --  ..
    )
    SELECT
        `sprinter_catalog_info`.`name`,
        `sprinter_catalog_info`.`eng_name`,
        `sprinter_catalog_info`.`text`,
        `sprinter_catalog_info`.`short_text`,
    --  ...
    FROM `sprinter_catalog_info` where id in (SELECT info_id from `sprinter_catalog_tree` where parent_id = @from or parent_id in (SELECT id from `sprinter_catalog_tree` where parent_id = @from));
    
    CREATE temporary table if not exists ids
    SELECT id from `sprinter_catalog_tree` where parent_id = @to or parent_id in (SELECT id from `sprinter_catalog_tree` where parent_id = @to);
    
    UPDATE sprinter_catalog_tree as a SET info_id = (SELECT id from sprinter_catalog_info as b where a.name like b.name order by id desc limit 1) where a.id in (SELECT id from ids);
    
    DROP table ids;

    Высрал вот такое говно в качестве write-n-throw скрипта.

    Дано: есть элементы дерева, хранящиеся в таблице sprinter_catalog_tree, связаны друг с другом через parent_id. Каждому из них соответствует указанный в info_id элемент таблицы sprinter_catalog_info.

    Задача: скопировать все вложенные в раздел @from каталога элементы и его подразделы (вложенность не более 1 уровня) в раздел @to, так чтобы у них были новые id, и также скопировать соответствующие им sprinter_catalog_info. Скопированные sprinter_catalog_tree должны указывать на корректные sprinter_catalog_info, id которых заранее не известны.

    Вот такое говно получилось, расскажите как надо было?

    vistefan, 05 Февраля 2020

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

    +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
    define method display (i :: <integer>)
      do-display-integer(i);
    end;
    
    define method display (s :: <string>)
      do-display-string(s);
    end;
    
    define method display (f :: <float>)
      do-display-float(f);
    end;
    
    define method display (c :: <collection>)
      for (item in c)
        display(item);  // runtime dispatch
      end;
    end;

    В закромах истории нашёлся язык с runtime dispatch/multimethods.

    Desktop, 03 Февраля 2020

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

    +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
    function send_message_with_photo($token, $peer_id, $message, $image_file_path) {
        $ch = curl_init();
    
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
    
        /* Получаем ссылку для загрузки фотографии */
    
        curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/photos.getMessagesUploadServer');
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(
            "access_token" => $token,
            "v" => "5.103"
        ));
    
        $result = json_decode(curl_exec($ch), true);
    
        $upload_url = $result['response']['upload_url'];
    
        /* Отправляем фотографию */
    
        curl_setopt($ch, CURLOPT_URL, $upload_url);
        $file = curl_file_create($image_file_path);
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(
            "photo" => $file,
        ));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
    
        $result = json_decode(curl_exec($ch), true);
    
        $server = $result['server'];
        $photo = $result['photo'];
        $hash = $result['hash'];
    
        /* Сохраняем фотографию */    
    
        curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/photos.saveMessagesPhoto');
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(
            "access_token" => $token,
            "v" => "5.103",
            "server" => $server,
            "photo" => $photo,
            "hash" => $hash
        ));
    
        $result = json_decode(curl_exec($ch), true);
    
        $photo_id = strval($result['response'][0]['id']);
        $owner_id = strval($result['response'][0]['owner_id']);
    
        $attachment = "photo" . $owner_id . "_" . $photo_id;
    
        /* Отправляем сообщение */
    
        curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/messages.send');
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(
            "access_token" => $token,
            "v" => "5.103",
            "random_id" => rand(),
            "peer_id" => $peer_id,
            "message" => $message,
            "attachment" => $attachment 
        ));
    
        $result =  json_decode(curl_exec($ch), true);
    
        curl_close($ch);
    }

    Говнокод для загрузки фото в ВК)

    kaluginvlad, 01 Февраля 2020

    Комментарии (104)
  5. PHP / Говнокод #26390

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public function update_balance()
    	{
    		$this->balance = $this->balance_at_end_of_day(time());
    	}
        
           public function balance_at_end_of_day($time)
    	{
    		return $this->balance_at_beginning_of_day($time + 24*60*60);
    	}

    когда окунулся в легаси

    alucas, 28 Января 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // https://github.com/microsoft/PQCrypto-SIDH/blob/ebd1c80a8ac35e9ca2ef9680291a8a43b95a3bfa/src/random/random.c#L22
    
    static __inline void delay(unsigned int count)
    {
        while (count--) {}
    }

    ... guess what?

    j123123, 25 Января 2020

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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    SystemD нарушает философию UNIX.
    
    Вместо больших программ которые решают несколько задач одновременно, делайте много маленьких программ, которые решают одну задачу, но делают это хорошо.
    
    Не то, чтобы он плохо справлялся со своими задачами, но он управляет и сервисами, и udev'ом, через него уже и смотрят лог ядра, через него настраивают автозагрузку.
    Много задач через одну программу.  
    
    Именно поэтому я против SystemD. 
    
    дискасс.

    OlegUP, 25 Января 2020

    Комментарии (7)
  8. Python / Говнокод #26379

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    # Python2
    
    import sys
    print sys.stderr, "Pol chasa ne mog ponyat kakoko huya nichego ne vivoditsya"

    3_dar, 23 Января 2020

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

    +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
    У людей картина мира в значительной степени определяется системой языка, на котором они говорят. 
    Грамматические и семантические категории языка являются не только инструментами для передачи мыслей говорящего, но и управляют мыслительной деятельностью формируя идеи человека.
    Таким образом, предполагается, что люди, которые говорят на разных языках, будут иметь и разные представления о мире, а в случае значительных структурных расхождений между их языками при обсуждении некоторых тем у собеседников могут возникать трудности с пониманием.
    
    Хайнлайн писал: "Нормальные языки родились во времена невежества и предрассудков, и генетически содержат закрепленные в структурах неверные представления о мироздании" 
    А фантастичесикй язык, созданный Хайнлайном "не содержит тех ошибок, которым изобилует английский, ибо он структурирован так же, как реальный мир".
    
    Спидток был языком, полностью основанным на логике. Количество слов в нём было минимальным, зато грамматические связи были очень сложными.
    В спидтоке существовало несколько сотен звуков, при этом каждое двухбуквенное сочетание означало определенное слово. 
    В итоге, одно слово на спидтоке соответствовало длинному предложению обычного языка, настолько ёмок и точен был его смысл. Люди, научившиеся этому языку, считали себя следующей ступенью эволюции человека - homo novus.
    Они хотели захватить власть над Землей и рассматривали, а современных людей вида homo sapiens считали чем-то наподобие домашних животных.
    Поскольку идея языка описана, но не развита в работе Хайнлайна, многие попытались создать подобный язык. 
    Многие из идей спидтока были включены в ифкуиль.
    
    Ифкуиль признаётся одним из самых сложных языков. 
    
    Сам автор языка признаётся, что говорить на нём – за пределами даже его возможностей. 
    Цель Ифкуиля - объединение всех знаний, которые накопило человечество, для того, чтобы достигнуть максимальной выразительности и эффективности использования.

    https://old.computerra.ru/205383/

    3.14159265, 22 Января 2020

    Комментарии (189)
  10. Python / Говнокод #26374

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    _RE_DESCRIPTION_TAG_OPEN = re.compile(r'<p\s+class="description">'.encode('utf-8'))
    _RE_DESCRIPTION_TAG_CLOSE = re.compile(r'</p>\s*<p\s+class="author">'.encode('utf-8'))
    def replace_description_tag(content, new_tag):
        content = _RE_DESCRIPTION_TAG_OPEN .sub(f'<{new_tag} class="description">'.encode('utf-8'), content)
        return    _RE_DESCRIPTION_TAG_CLOSE.sub(f'</{new_tag}><p class="author">'.encode('utf-8'), content)

    Парсить HTML регулярками — нельзя. Но если HTML невалидный — то можно!

    А дело в том, что ГК генерирует говно, которое пришлось фиксить таким вот диким образом, см. https://govnokod.ru/26373#comment522056.

    gost, 21 Января 2020

    Комментарии (163)
  11. Куча / Говнокод #26371

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Неблагодарный opensource: разработчик самого быстрого веб сервера удалил его репозиторий
    
    Краткая суть ситуации: наш соотечественник fafhrd91 на протяжении 3 лет
    практически самостоятельно (см. кдпв) писал actix-web — один из популярнейших
    крейтов в инфраструктуре раста, лидер в большинстве различных бенчмарков,
    и за это время подвергался как минимум трём волнам гонений за "неправильное
    использование раста". После последнего раза автор психанул, и перенес репозиторий
    к себе в аккаунт с пометкой "Планирую скрыть репозиторий".

    Именно поэтому я против «пидарастов». Да и остальных хипстеров-говноедов.

    https://habr.com/ru/post/484436/

    gost, 21 Января 2020

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