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

    В номинации:
    За время:
  2. Куча / Говнокод #28617

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Итак, оказалось, что нас всего трое-четверо, не считая меня и временно съебнувших.
    1. Инканус владеет большинством петушков и файкой Лолечка. Особо не переживает по поводу утраты фаек, ибо у него их - куры не клюют.
    
    2. Человек под ником guest6. Перманент. Шанс того, что под этой файкой сидит несколько хуйцов столь мизерный, что не примем его в счёт. 
    Несмотря на острый ум, довольно ограничен и имеет узкий кругозор. Также ему свойственны резкие скачки настроения. 
    Я долго пытался угадать его знак зодиака, но впал в сомнения. Что-то из этого: [Скорпион. Дева. Стрелец].
    
    3. Некто, владеющий soul_re@ver и прочими, с анимешной авой.

    Расследование продолжается.

    Support, 28 Февраля 2023

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

    +3

    1. 1
    http://getbug.ru/google-raskryila-bag-zero-day-v-windows-8-1-vyihoda-patcha/

    долистайте до конца страницы...
    как символично )))

    Support, 25 Февраля 2023

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

    +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
    AnsiString Cut_the_path(AnsiString ExeName)
    {
        AnsiString Path = ExeName;
        char *cp = Path.c_str(); int last = Path.Length()-1;
        int i=last;
        for(; i>=0; i--)
        {
            if( *(cp+i) == '\\' )
                break;
            Path.Delete(Path.Length(),1);
        }
        return Path;
    }

    FataLL, 04 Августа 2022

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

    +3

    1. 1
    2. 2
    // remove "s" ending: minute/hour/day/week/month/year don't have "s" in the body
    const period = periodName.split("s").join(""); // days -> day

    И тут решили добавить секунды...

    dhilt, 19 Апреля 2022

    Комментарии (13)
  6. JavaScript / Говнокод #28089

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    function main()
    {
        for (const i of [1, 2, 3])
            print("Hello World!", i);
    }

    ну что вершилось чудо.. теперь на https://godbolt.org/ можно попробывать альфа версию компилятора
    пока показывает только - LLVM IR и вывод выполнения
    https://i.postimg.cc/Kj3Bd78d/god-bolt-tsc-native.jpg

    [god-bolt-tsc-native.jpg](https://postimg.cc/QKsF7T5b)

    ASD_77, 23 Марта 2022

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

    +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
    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
    case 'sav8':
    if (isset($user) & $user['balls'] < $color[cena2])
    {
    echo "Недостаточно баллов.Надо :$color[cena2] баллов.А у вас <b>$user[balls]</b>\n";
    }else{
    mysql_query("UPDATE `user` SET `balls` = '".($user['balls']-$color['cena2'])."' WHERE `id` = '$user[id]' LIMIT 1",$db);
    mysql_query("UPDATE `user` SET `ncolor`='#FFA500'  WHERE `id` = '$user[id]'");
    mysql_query("UPDATE `user` SET `ncolor2`='#FFA500'  WHERE `id` = '$user[id]'");
    echo 'Сохранено!<br/>'; } break;
    
    case 'sav9':
    if (isset($user) & $user['balls'] < $color[cena2])
    {
    echo "Недостаточно баллов.Надо :$color[cena2] баллов.А у вас <b>$user[balls]</b>\n";
    }else{
    mysql_query("UPDATE `user` SET `balls` = '".($user['balls']-$color['cena2'])."' WHERE `id` = '$user[id]' LIMIT 1",$db);
    mysql_query("UPDATE `user` SET `ncolor`='#8B008B'  WHERE `id` = '$user[id]'");
    mysql_query("UPDATE `user` SET `ncolor2`='#8B008B'  WHERE `id` = '$user[id]'");
    echo 'Сохранено!<br/>'; } break;
    
    case 'sav10':
    if (isset($user) & $user['balls'] < $color[cena2])
    {
    echo "Недостаточно баллов.Надо :$color[cena2] баллов.А у вас <b>$user[balls]</b>\n";
    }else{
    mysql_query("UPDATE `user` SET `balls` = '".($user['balls']-$color['cena2'])."' WHERE `id` = '$user[id]' LIMIT 1",$db);
    mysql_query("UPDATE `user` SET `ncolor`='#000000'  WHERE `id` = '$user[id]'");
    mysql_query("UPDATE `user` SET `ncolor2`='#000000'  WHERE `id` = '$user[id]'");
    echo 'Сохранено!<br/>'; } break;
    
    case 'sav11':
    if (isset($user) & $user['balls'] < $color[cena2])
    {
    echo "Недостаточно баллов.Надо :$color[cena2] баллов.А у вас <b>$user[balls]</b>\n";
    }else{
    mysql_query("UPDATE `user` SET `balls` = '".($user['balls']-$color['cena2'])."' WHERE `id` = '$user[id]' LIMIT 1",$db);
    mysql_query("UPDATE `user` SET `ncolor`='#696969'  WHERE `id` = '$user[id]'");
    mysql_query("UPDATE `user` SET `ncolor2`='#696969'  WHERE `id` = '$user[id]'");
    echo 'Сохранено!<br/>'; } break;
    
    case 'sav12':
    if (isset($user) & $user['balls'] < $color[cena2])
    {
    echo "Недостаточно баллов.Надо :$color[cena2] баллов.А у вас <b>$user[balls]</b>\n";
    }else{
    mysql_query("UPDATE `user` SET `balls` = '".($user['balls']-$color['cena2'])."' WHERE `id` = '$user[id]' LIMIT 1",$db);
    mysql_query("UPDATE `user` SET `ncolor`='#FFFFFF'  WHERE `id` = '$user[id]'");
    mysql_query("UPDATE `user` SET `ncolor2`='#FFFFFF'  WHERE `id` = '$user[id]'");
    echo 'Сохранено!<br/>'; } break;

    Код смены цвета ника для одной популярной CMS доставшийся в "наследство" от клиента. Кто и под чем писал - без понятия.

    lionovsky, 18 Февраля 2022

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

    +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
    37. 37
    38. 38
    39. 39
    rule_t block_r = ch_p('{') >> *(~ch_p('}') | (~ch_p('{') >> block_r));
    	rule_t bin_r = str_p("0b") >> bin_p[assign(m)];
    	rule_t hex_r = str_p("0x") >> hex_p[assign(m)];
    	rule_t dec_r = uint_p[assign(m)];
      rule_t id_r = alpha_p >> *(alnum_p | ch_p('_') | ch_p('.'));
      rule_t string_r = ch_p('"') >> (*(~ch_p('"')))[assign(s)] >> ch_p('"');
      rule_t channel_r = str_p("channel") >> *(space_p) >> id_r[assign(s)][assign_a(ch.name,s)][push_back_a(lstJSVars_,s)] >> *(space_p) >> ch_p('{') >>
        *(space_p 
    			| (str_p("mode") >> *(space_p) >> ch_p('=') >> *(space_p) >> 
            	(str_p("in")[assign_a(ch.mode,(int)channel::IN)] | str_p("out")[assign_a(ch.mode,(int)channel::OUT)]) >> *(space_p) >> ch_p(';'))
    			| (str_p("number") >> *(space_p) >> ch_p('=') >> *(space_p) >> int_p[assign(ch.number)] >> *(space_p) >> ch_p(';')) 
    			| (str_p("channel") >> *(space_p) >> ch_p('=') >> *(space_p) >> int_p[assign(ch.ch)] >> *(space_p) >> ch_p(';')) 
    			| (str_p("gain") >> *(space_p) >> ch_p('=') >> *(space_p) >> int_p[assign(ch.gain)] >> *(space_p) >> ch_p(';')) 
    			| (str_p("type") >> *(space_p) >> ch_p('=') >> *(space_p) >>
    					(str_p("analog")[assign_a(ch.type,(int)channel::ANALOG)] | str_p("discrete")[assign_a(ch.type,(int)channel::DISCRETE)]) >> *(space_p) >> ch_p(';'))
    			| (str_p("mask") >> *(space_p) >> ch_p('=') >> *(space_p) >> 
    					(bin_r[assign_a(ch.mask,m)] | hex_r[assign_a(ch.mask,m)] | dec_r[assign_a(ch.mask,m)]) >> *(space_p) >> ch_p(';'))
        ) >>
        ch_p('}') >> *(space_p) >> ch_p(';'); 
      rule_t device_r = str_p("device_info") >> *(space_p) >> id_r[assign(dev_info_.name)] >> *(space_p) >> ch_p('{') >>
        *(space_p | 
          (str_p("device") >> *(space_p) >> ch_p('=') >> *(space_p) >> string_r[assign_a(dev_info_.dev,s)] >> *(space_p) >> ch_p(';')) | 
          (str_p("blocking") >> *(space_p) >> ch_p('=') >> *(space_p) >> 
            (str_p("true")[assign_a(dev_info_.blocking,true)] | str_p("false")[assign_a(dev_info_.blocking,false)]) >> *(space_p) >> ch_p(';')) |
          (str_p("freq_ch") >> *(space_p) >> ch_p('=') >> *(space_p) >> int_p[assign(dev_info_.freq_ch)] >> *(space_p) >> ch_p(';')) | 
          (str_p("freq_sel_ch") >> *(space_p) >> ch_p('=') >> *(space_p) >> int_p[assign(dev_info_.freq_sel_ch)] >> *(space_p) >> ch_p(';')) |
          (str_p("speed") >> *(space_p) >> ch_p('=') >> *(space_p) >> int_p[assign(dev_info_.speed)] >> *(space_p) >> ch_p(';')) | 
          channel_r[assign_a(v,ch)][push_back_a(lstChannels_,v)]
        ) >>
        ch_p('}') >> *(space_p) >> ch_p(';');
      rule_t var_r = (str_p("var") >> *(space_p) >> id_r[assign(s)][push_back_a(lstJSVars_,s)] >>*(~ch_p(';')) >> ch_p(';'))[assign(s)][push_back_a(lstVars,s)];
      rule_t function_r = str_p("function") >> *(~ch_p('`'));
    	//rule_t function_r = str_p("function") >> *(~ch_p('{')) >> block_r;
      rule_t script_r = str_p("script") >> *(space_p) >> ch_p('{') >>
        *(space_p |
          var_r[assign(s)][push_back_a(lstJSVars_,s)] |
          (function_r[assign(s)][push_back_a(lstFunc,s)] >> *(space_p) >> ch_p('`'))
        ) >>
        ch_p('}') >> *(space_p) >> ch_p(';');

    Из системы эмуляции полёта на тренажере.

    codemeow, 21 Января 2022

    Комментарии (64)
  9. JavaScript / Говнокод #27958

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public getWay(path: string) {
        const arrPath = path.slice(1).split('/');
    
        arrPath.map(item => {
          this.crumbs.push(MathcPath[item]);
          this.crumbs = this.crumbs.filter(crumb => crumb);
        });
    }

    Используем map в качестве forEach + зачем-то фильтруем полученный массив в каждой итерации.
    Причем этот код можно записать в одну строку, которая еще и будет работать быстрее.

    kage-senshi, 17 Января 2022

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

    +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
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    buf = malloc(8 * 1024);
    
    snprintf(buf, 8 * 1024,
         "{\n"
         "\t\"tilejson\": \"2.0.0\",\n"
         "\t\"schema\": \"xyz\",\n"
         "\t\"name\": \"%s\",\n"
         "\t\"description\": \"%s\",\n"
         "\t\"attribution\": \"%s\",\n"
         "\t\"minzoom\": %i,\n"
         "\t\"maxzoom\": %i,\n"
         "\t\"tiles\": [\n",
         tile_config->xmlname, (tile_config->description ? tile_config->description : ""), tile_config->attribution, tile_config->minzoom, tile_config->maxzoom);
    
    for (i = 0; i < tile_config->noHostnames; i++) {
        strncat(buf, "\t\t\"", 8 * 1024 - strlen(buf) - 1);
        strncat(buf, tile_config->hostnames[i], 8 * 1024 - strlen(buf) - 1);
        strncat(buf, tile_config->baseuri, 8 * 1024 - strlen(buf) - 1);
        strncat(buf, "{z}/{x}/{y}.", 8 * 1024 - strlen(buf) - 1);
        strncat(buf, tile_config->fileExtension, 8 * 1024 - strlen(buf) - 1);
        strncat(buf, "\"", 8 * 1024 - strlen(buf) - 1);
    
        if (i < tile_config->noHostnames - 1) {
            strncat(buf, ",", 8 * 1024 - strlen(buf) - 1);
        }
    
        strncat(buf, "\n", 8 * 1024 - strlen(buf) - 1);
    }
    
    strncat(buf, "\t]\n}\n", 8 * 1024 - strlen(buf) - 1);
    len = strlen(buf);
    
    /*
     * Add HTTP headers. Make this file cachable for 1 week
     */
    md5 = ap_md5_binary(r->pool, (unsigned char *)buf, len);
    apr_table_setn(r->headers_out, "ETag",
               apr_psprintf(r->pool, "\"%s\"", md5));
    ap_set_content_type(r, "application/json");
    ap_set_content_length(r, len);
    apr_table_mergen(t, "Cache-Control",
             apr_psprintf(r->pool, "max-age=%" APR_TIME_T_FMT,
                      maxAge));
    timestr = apr_palloc(r->pool, APR_RFC822_DATE_LEN);
    apr_rfc822_date(timestr, (apr_time_from_sec(maxAge) + r->request_time));
    apr_table_setn(t, "Expires", timestr);
    ap_rwrite(buf, len, r);
    free(buf);

    https://github.com/openstreetmap/mod_tile/blob/master/src/mod_tile.c#L1212

    ISO, 10 Января 2022

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

    +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
    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
    #!/usr/bin/env escript
    -mode(compile).
    
    main(["-p"|Filenames]) ->
      put(pretend, true),
      main(Filenames);
    main(Filenames) ->
      case get(pretend) of
        true -> ok;
        _    -> put(pretend, false)
      end,
      Albums = lists:filtermap(fun parse_name/1, Filenames),
      lists:foreach(fun process_album/1, Albums).
    
    process_album({Zip, Artist, Album}) ->
      Dir = filename:absname(filename:join(Artist, Album)),
      case filelib:wildcard(Dir ++ "/cover.*") of
        [] ->
          io:format("Will create ~p~n", [Dir]),
          get(pretend) orelse do_process_album(Dir, Zip, Album);
        _ ->
          io:format("Ignoring ~p : ~p~n", [Artist, Album])
      end.
    
    do_process_album(Dir, Zip, Album) ->
      ok = filelib:ensure_dir(Dir ++ "/fake"),
      0 = exec(Dir, "/usr/bin/unzip", [Zip, "-d", Dir]),
      postprocess(Album, Dir).
    
    postprocess(Album, Dir) ->
      Files = filelib:wildcard(Dir ++ "/*-*[0-9]*.flac"),
      lists:foreach(fun(I) -> rename_flac(Album, I) end, Files).
    
    rename_flac(Album, OldFile) ->
      Dir = filename:dirname(OldFile),
      OldName = filename:basename(OldFile),
      Options = [{capture, all_but_first, list}],
      {ok, RE} = re:compile(Album ++ " - ([0-9]+.*\\.flac)", [unicode]),
      case re:run(OldName, RE, Options) of
        {match, [NewName]} ->
          io:format("New name: ~p~n", [NewName]),
          NewFile = filename:join(Dir, NewName),
          ok = file:rename(OldFile, NewFile);
        nomatch ->
          ok
      end.
    
    parse_name(Filename) ->
      Opts = [{capture, ['band', album], list}],
      case re:run(filename:basename(Filename), "(?<band>[^-]+) - (?<album>.*)\\.zip", Opts) of
        {match, [Band, Album]} ->
          {true, {filename:absname(Filename), Band, Album}};
        nomatch ->
          false
      end.
    
    -spec exec(file:filename(), file:filename(), [string() | binary()]) -> integer().
    exec(Dir, CMD, Args) ->
      Port = open_port( {spawn_executable, CMD}
                      , [ exit_status
                        , binary
                        , stderr_to_stdout
                        , {args, Args}
                        , {cd, Dir}
                        , {line, 300}
                        ]
                      ),
      collect_port_output(Port, filename:basename(CMD)).
    
    -spec collect_port_output(port(), string()) -> integer().
    collect_port_output(Port, CMD) ->
      receive
        {Port, {data, {_, Data}}} ->
          io:format("~s: ~s~n", [CMD, Data]),
          collect_port_output(Port, CMD);
        {Port, {exit_status, ExitStatus}} ->
          ExitStatus
      end.

    CHayT, 08 Января 2022

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