1. Список говнокодов пользователя CHayT

    Всего: 48

  2. Куча / Говнокод #24366

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    -define(MCGA, group_leader(whereis(user), self())). %% Makes CT great again
    
    test_foo(_Config) ->
      ?MCGA,
      ...
    
    test_bar(_Config) ->
      ?MCGA,
      ...

    Известный в узких кругах компонент-тест фреймворк "common test" (aka ct) предназначен для интерпрайза. Поэтому в нём нельзя просто взять и вывести логи в консоль, все аутпуты улетают в модные html файлы, но ни у кого не было времени читать их. Снаут прошерстила кучу форумов, где эту проблему предлагали решать чуть ли не патчингом beam файлов. Но решение куда проще.

    CHayT, 08 Июня 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    ...
         F = fun(S) ->
                  ets:give_away(Table, NewOwner),
                  S
              end,
          sys:replace_state(OldOwner, F)
    ...

    Паттерн steal

    CHayT, 15 Мая 2018

    Комментарии (31)
  4. Куча / Говнокод #24077

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    %% wrapper for math:log/1 to avoid dividing by zero
    math_log(0) ->
        1;
    math_log(0.0) ->
        1.0;
    math_log(X) when X < 0 ->
        0; % it's not possible to take a log of a negative number, return 0
    math_log(X) ->
        math:log(X).

    Math, how does it work: https://github.com/folsom-project/bear/commit/6c19d6a2ee031512fca9916dd7cca2fc7ea2a38e

    CHayT, 05 Апреля 2018

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

    +3

    1. 1
    http://www.bfilipek.com/2018/04/deprecating-pointers.html?m=1

    Вот это удар в спину Царя! Он только начал нахваливать кресты,
    как анскиллябры из комитета его предали.

    CHayT, 01 Апреля 2018

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    -define(foo, foo).
    -define(bar, bar).
    -define(baz, baz).
    ...
    
    foo(A, B) ->
      gen_server:call(?MODULE, {?foo, A, B}).
    
    ...
    handle_call({?foo, A, B}, _From, State) ->
      ...

    Паттерн "мирный атом в каждый call".

    CHayT, 20 Марта 2018

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

    +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
    #!/usr/bin/env escript
    %% -*- erlang -*-
    %%! -smp enable -debug verbose
    
    -include_lib("xmerl/include/xmerl.hrl").
    
    -export([main/1, install_mod/1]).
    
    -record(mod_info, { name  :: string()
                      , links :: [{file:filepath(), file:filepath()}]
                      }).
    
    main(Args) ->
        [ModeDir, GameDir] = Args,
        VirtualInstall = filename:absname(ModeDir ++ "/VirtualInstall/"),
        RealPath = filename:absname(GameDir),
        VirtualModCfg = VirtualInstall ++ "/VirtualModConfig.xml",
        io:format( "Mode dir: ~p~n"
                   "Install dir: ~p~n"
                   "Current dir: ~p~n"
                 , [VirtualInstall, RealPath, element(2, file:get_cwd())]),
        {Doc, []} = xmerl_scan:file(VirtualModCfg),
        Mods = get_mods(VirtualInstall, RealPath, Doc),
        [install_mod(I) || I <- Mods],
        ok.
    
    get_mods(VirtPath, RealPath, Doc) ->
        [ #mod_info
              { name  = xpath("/modInfo/@modName", Mod)
              , links = get_links(VirtPath, RealPath, Mod)
              }
          || Mod <- xmerl_xpath:string( "/virtualModActivator/modList/modInfo"
                                      , Doc)].
    
    get_links(VirtPath, RealPath, Doc) ->
        [{ filename:absname( unixify(xpath("/fileLink/@realPath", FL))
                           , VirtPath)
         , filename:absname( unixify(xpath("/fileLink/@virtualPath", FL))
                           , RealPath)
         }
         || FL <- xmerl_xpath:string( "//fileLink[isActive = 'True']"
                                    , Doc)].
    
    xpath(Query, Doc) ->
        case xmerl_xpath:string(Query, Doc) of
            [#xmlAttribute{value = Val}] ->
                Val
        end.
    
    unixify(Path) ->
        lists:map(
          fun($\\) -> $/;
             (A)   -> A
          end,
          Path).
    
    install_mod(#mod_info{name = Name, links = Links}) ->
        io:format("Installing ~s...~n", [Name]),
        lists:foreach(
          fun({From, To}) ->
                  filelib:ensure_dir(To),
                  file:make_symlink(From, To)
          end,
          Links).

    CHayT, 12 Марта 2018

    Комментарии (8)
  8. Haskell / Говнокод #23859

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    data Foo a = Foo {a :: a, b :: Int}
               | Bar {b :: Int}
    
    foo :: (a -> b) -> Foo a -> Foo b
    foo f x@Foo{a = a} = x{a = f a}
    foo _ x@Bar{} = x   -- error: Couldn't match type ‘a’ with ‘b’
    foo _ x@Bar{} = x{} -- error: Empty record update

    Рекорды всё-таки дубовые

    cast @HaskellGovno

    CHayT, 03 Марта 2018

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #!/bin/sh
    while true; do
        date "+Time is %H %M. Stop lurking and get the fuck to work" | say
        sleep 1800
    done

    Я наконец нашёл применение встроенному в OS X TTS-движку.

    CHayT, 15 Декабря 2017

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    var CodeMirror = require("codemirror");
    var Thrift = require("thrift.js");
    require("./src/my.css");
    include(`gen-js/test_types.js')
    include(`gen-js/TestServ.js')
    include(`src/main.js')

    Против m4 нет приёма.

    CHayT, 29 Октября 2017

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

    +2

    1. 1
    https://github.com/BlackMATov/kari.hpp/blob/master/kari.hpp

    Безответственные функциональщики сливали в океан блогосферы радиоактивные отходы, и вот печальный итог: гигантская радиоактивная Метушилла начала сокрушать гитхаб! Даже само название либы уже намекает.

    CHayT, 23 Октября 2017

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