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

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

    −23

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

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

    CHayT, 04 Апреля 2017

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

    −99

    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

    −12

    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)