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

    Всего: 38

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Lemma use_prop_equality : forall {X} (f : X -> Prop) a b,
        a = b -> f a -> f b.
    Proof.
      intros X f a b He Ha.
      destruct He. apply Ha.
    Qed.

    Тактика rewrite не нужна.

    CHayT, 12 Августа 2017

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

    −23

    1. 1
    https://github.com/rabbitmq/erlando/blob/master/src/do.erl#L179

    Т -- трудолюбие. Весь их хитрожопый траверс AST ужимается буквально в десяток строк.

    CHayT, 04 Апреля 2017

    Комментарии (3)
  4. Haskell / Говнокод #22737

    −100

    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
    topSort :: V.Vector ([Int], [Int])
           -> Either String [Int]
    topSort kob =
      let
        sup u k = do
          let max i = (i,) . head . snd <$> k `MV.read` i
          l <- mapM max u
          case filter (uncurry (==)) l of
            [(a,_)] -> return $ Right a
            x -> return $ Left "Topology error"
    
        rewrite k s (i, j) = do
          let f x | x == s && j < 0 = []
                  | x == s = [j]
                  | otherwise = [x]
          when (j>=0) $ MV.modify k (_1 %~ (i:)) j
          MV.modify k (_2 %~ (>>= f)) i
    
        go u k =
          readSTRef u >>= \case
            [a] -> return $ Right [a]
            u_ -> sup u_ k >>= \case
              Right s -> do
                modifySTRef' u $ Data.List.delete s
                s_d <- fst <$> MV.read k s
                mapM_ (rewrite k s) $ zip s_d (tail s_d ++ [-1])
                tail <- go u k
                return $ (s:) <$> tail
              Left err ->
                return  $ Left err
    
      in runST $ do
        u <- newSTRef $ [0..V.length kob-1]
        k <- V.thaw kob
        liftM reverse <$> go u k

    Пишем на декларативном языке

    CHayT, 04 Апреля 2017

    Комментарии (7)
  5. bash / Говнокод #22720

    −98

    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
    #!/bin/bash
    target=beam.smp
    threashold=500
    sleep=10
    tmpfile=fd-${target}-tmp
    while true ; do
         {  date; ls -l /proc/$(pgrep $target)/fd; } > $tmpfile
         nfds=$( cat $tmpfile | wc -l )
         if (( $nfds > $threashold )) ; then
             netstat >> $tmpfile
             file="fd-${target}-$(date)"
             cp $tmpfile "$file"file
         fi
         sleep $sleep
    done

    It ain't stupid if it works.

    CHayT, 31 Марта 2017

    Комментарии (6)
  6. bash / Говнокод #22462

    −127

    1. 1
    ws_root=$(echo 'echo "HackHackHackHack $WS"' | enter_ref_view $foo | awk '/HackHackHackHack/{print $2}')

    Дано: скрипт в 9000 строк на perl, enter_ref_view. Он запускает шелл, в котором выставлена переменная FOO.
    Найти: вывести переменную WS наружу
    Решение: ....

    CHayT, 01 Марта 2017

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

    −13

    1. 1
    -type maybe(A) :: A | nothing.

    Erlang, dialyzer spec. Коротко и в точку.

    CHayT, 16 Февраля 2017

    Комментарии (18)
  8. bash / Говнокод #21841

    −95

    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
    Самого говнокода у меня под рукой нет, но о его содержимом можно догадываться по результатам его работы.
    
    $ { printf 'GET / HTTP/1.1\r\nHost: '; sleep 0; printf 'konachan.com\r\nUser-Agent: netcat\r\nAccept: */*\r\n\r\n'; } | nc konachan.com 80
    HTTP/1.1 302 Found
    Connection: close
    Location: http://warning.rt.ru/?id=9&st=0&dt=5.178.68.88&rs=http://konachan.com/
         <- Подменённая питухтелекомом часть пакета кончается здесь, она узнаётся по коду 301
    g <- А это уже продолжение оригинального пакета
    Status: 200 OK
    Cache-Control: max-age=0, private, must-revalidate
    X-XSS-Protection: 1; mode=block
    X-Request-Id: 4331f357-c4e2-456f-807d-07e36c4dae4f
    X-UA-Compatible: chrome=1
    
    Попробуем что-нибудь ещё:
    
    $ { printf 'GET / HTTP/1.1\r\nHost: '; sleep 1; printf 'konachan.com\r\nUser-Agent: netcat\r\nAccept: */*\r\n\r\n'; } | nc konachan.com 80
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 5061
    Connection: keep-alive
    Vary: Accept-Encoding
    ....
    
    $ { printf 'GET / HTTP/1.1\nHost: konachan.com\nUser-Agent: netcat\nAccept: */*\n\n'; } | nc konachan.com 80
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 5062
    Connection: keep-alive
    Vary: Accept-Encoding
    ....

    Предвижу тренды 2017го года: telnet отнимает популярность у прочих браузеров!

    CHayT, 15 Декабря 2016

    Комментарии (173)
  9. Haskell / Говнокод #21818

    −1000

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    sign' ← case sign of
                '-' → return '-'
                '+' → return ' '
                _   → Nothing
      hh ← (readMaybe [sign',h1,h2]) :: Maybe Integer
      mm ← (readMaybe mm) :: Maybe Integer

    Парсим значение со знаком.

    CHayT, 11 Декабря 2016

    Комментарии (23)
  10. Куча / Говнокод #21690

    −20

    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
    expand_ipv6(Addr) ->
        AbbrevAddr = case string:str(Addr, "::") of
                          0 -> Addr;
                          _ ->
                              RemainBlocks = 8 - length(string:tokens(Addr, ":")),
                              re:replace(Addr,"::",string:copies(":0", RemainBlocks) ++ ":", [{return,list}])
                     end,
        lists:foldl(fun(Block, Acc) ->
                          Start = case Acc of
                                           [] -> "";
                                           _  -> ":"
                                  end,
                          RemainZeroes = 4 - length(Block),
                          ExpandedBlock = Start ++ string:copies("0", RemainZeroes) ++ Block,
                          Acc ++ ExpandedBlock
                      end, [], string:tokens(AbbrevAddr, ":")).

    IPv6 и эрланг -- это как PHP и даты.

    CHayT, 18 Ноября 2016

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

    −15

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    case lists:member($:, Index) of
        false -> % this is ipv4
            [D4,D3,D2,D1|C] = lists:reverse(string:tokens(Index,".")),
            IP = make_dot_string([D1,D2,D3,D4]),
            Nw = make_dot_string(lists:reverse(C));
        true -> % this is ipv6
            [D|C] = lists:reverse(string:tokens(Index,".")),
            IP = D,
            Nw = make_dot_string(lists:reverse(C))
    end

    Кручу-верчу, запутать хочу.

    CHayT, 06 Сентября 2016

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