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

    Всего: 50

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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Роман, вы там палитесь.
    
    1) Отключаем историю поиска и просмотров в youtube
    2) Смотрим какое-нибудь нехарактерное для себя видео
    3) Видим рекомендации, основанные на этом видео
    4) Проверяем историю просмотров: там этого видео нет
    5) Говорим, что не интересуемся этой рекомендацией, щёлкаем "Tell us why"
    6) Один из вариантов будет "мне не интересны рекомендации на основе..." того видео, которого нет в истории
    7) Это не проблема кэширования, таймингов и синхронизации
    8) Упс

    seo: #багрепорт #роман #корпорация_добра

    CHayT, 22 Июля 2018

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

    0

    1. 1
    Тем временем на переднем крае вореционной науки: https://arxiv.org/pdf/1806.08462.pdf

    CHayT, 26 Июня 2018

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

    0

    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)
  5. Куча / Говнокод #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)
  6. Куча / Говнокод #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)
  7. C++ / Говнокод #24048

    +3

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

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

    CHayT, 01 Апреля 2018

    Комментарии (14)
  8. Куча / Говнокод #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)
  9. Куча / Говнокод #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)
  10. Haskell / Говнокод #23859

    +5

    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 [email protected]{a = a} = x{a = f a}
    foo _ [email protected]{} = x   -- error: Couldn't match type ‘a’ with ‘b’
    foo _ [email protected]{} = x{} -- error: Empty record update

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

    cast @HaskellGovno

    CHayT, 03 Марта 2018

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