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

    Всего: 101

  2. C++ / Говнокод #25148

    +13

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    union pony {
      double celestia = 0.;
      short luna; // padded
    };
    atomic<pony> princesses = ATOMIC_VAR_INIT({});
    
    bool party(pony desired) {
      pony expected;
      return princesses.compare_exchange_strong(expected, desired);
    }

    Эти дебилы из комитета вконец поехали.

    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html

    roman-kashitsyn, 04 Декабря 2018

    Комментарии (121)
  3. C++ / Говнокод #24680

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <set>
    #include <algorithm>
    
    bool overlap(const std::set<int>& s1, const std::set<int>& s2)
    {
        for( const auto& i : s1) {
            if(std::binary_search(s2.begin(), s2.end(), i))
                return true;
        }
        return false;
    }

    я зделял

    https://stackoverflow.com/a/29421606/1683138
    -- https://en.cppreference.com/w/cpp/container/set
    iterator Constant BidirectionalIterator

    roman-kashitsyn, 28 Августа 2018

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

    −2

    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
    instance Arbitrary ProjectConfig where
        arbitrary =
          ProjectConfig
            <$> (map getPackageLocationString <$> arbitrary)
            <*> (map getPackageLocationString <$> arbitrary)
            <*> shortListOf 3 arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> arbitrary
            <*> (MapMappend . fmap getNonMEmpty . Map.fromList
                   <$> shortListOf 3 arbitrary)
            -- package entries with no content are equivalent to
            -- the entry not existing at all, so exclude empty
    
        shrink ProjectConfig { projectPackages = x0
                             , projectPackagesOptional = x1
                             , projectPackagesRepo = x2
                             , projectPackagesNamed = x3
                             , projectConfigBuildOnly = x4
                             , projectConfigShared = x5
                             , projectConfigProvenance = x6
                             , projectConfigLocalPackages = x7
                             , projectConfigSpecificPackage = x8
                             , projectConfigAllPackages = x9 } =
          [ ProjectConfig { projectPackages = x0'
                          , projectPackagesOptional = x1'
                          , projectPackagesRepo = x2'
                          , projectPackagesNamed = x3'
                          , projectConfigBuildOnly = x4'
                          , projectConfigShared = x5'
                          , projectConfigProvenance = x6'
                          , projectConfigLocalPackages = x7'
                          , projectConfigSpecificPackage = (MapMappend
                                                             (fmap getNonMEmpty x8'))
                          , projectConfigAllPackages = x9' }
          | ((x0', x1', x2', x3'), (x4', x5', x6', x7', x8', x9'))
              <- shrink ((x0, x1, x2, x3),
                          (x4, x5, x6, x7, fmap NonMEmpty (getMapMappend x8), x9))
          ]

    В хачкеле мало бойлерплейта, говорили они. Это ещё далеко не самый длинный список, см. x43 ниже.

    https://github.com/haskell/cabal/blob/4e0c701a2feb520d369ef506a18288c47f64b06a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs

    roman-kashitsyn, 06 Июля 2018

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

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    MyType(const CopyPastedFromSomewhere&) = delete;
    MyType& operator=(const CopyPastedFromSomewhere&) = delete;
    
    MyType& operator=(const MyType*) = delete;
    
    // Winner?
    MyType& MyType(const MyType&) = delete;

    А что можно найти в вашей кодовой базе? К слову, выяснилось, что вариант

    void operator=(const MyType&) = delete;
    вполне себе допустим.

    roman-kashitsyn, 02 Марта 2018

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    import '/asyncio'
    
    main = async $ loop ->
      task = "Hello, {}!".format whatever where
        await asyncio.sleep 1
        whatever = "World"
    
      await task
    
    loop = asyncio.get_event_loop!
    loop.run_until_complete $ main loop

    http://pyos.github.io/dg/
    So dynamik very hasky

    roman-kashitsyn, 04 Января 2018

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    (* We open this module at the top of module generating rules, to make sure they don't do
       Io manually *)
    module No_io = struct
      module Io = struct end
    end

    https://github.com/janestreet/jbuilder/blob/0c2228e7bc7f5667a4ca2c982feb76130156ec99/src/import.ml#L524


    Монадки нинужны, говорили они

    roman-kashitsyn, 18 Ноября 2017

    Комментарии (1)
  8. Куча / Говнокод #23454

    0

    1. 1
    2. 2
    echo -ne '10\n11\n12\n' | POST 'http://localhost:8123/?query=INSERT INTO t FORMAT TabSeparated'
    cat file.csv | clickhouse-client --database=test --query="INSERT INTO test FORMAT CSV";

    https://clickhouse.yandex/docs/en/single/index.html#format-clause

    FORMAT

    Вот нахрена было вставлять FORMAT в ЯЗЫК ЗАПРОСОВ? Почему нельзя это сделать опциями клиента и HTTP-хедерами?

    Допустим, хочу я написать клиент на языке X, который использует HTTP-протокол. Работа клиента — взять запрос и превратить его в структуры данных языка X. Из-за этого FORMAT клиенту теперь нужно лезть в пользовательский запрос, чтобы понять, в каком формате будут приходить данные, и уметь конвертировать все форматы, которые взбрело в голову добавить авторам БД.

    roman-kashitsyn, 25 Октября 2017

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    -- https://haskell-lang.org/library/http-client
    let request = setRequestBodyFile "people.yaml"
                $ setRequestHeader "Content-Type" ["application/x-yaml"]
                $ "PUT https://httpbin.org/put"
    response <- httpJSON request

    Товарищ Снойман, конечно, молодец, но его творчество мне зачастую больше напоминает жабу, чем хачкель. У меня одного такое ощущение?

    (Неявное) преобразование "PUT https://httpbin.org/put" в значение Request — это, кмк, какой-то ⊥(bottom)

    #нытьё #CHayT

    roman-kashitsyn, 23 Октября 2017

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

    −96

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    require 'aes'
    
    message = "Super secret message"
    key = "password"
    
    encrypted = AES.encrypt(message, key)    # RZhMg/RzyTXK4QKOJDhGJg==$BYAvRONIsfKjX+uYiZ8TCsW7C2Ug9fH7cfRG9mbvx9o=
    decrypted = AES.decrypt(encrypted, key)  # Super secret message

    https://blog.elpassion.com/simple-and-terrifying-encryption-story-c1f1d6707c07#.lryae7h7b

    Simple and Terrifying Encryption Story
    I wanted to build an app where users can encrypt and decrypt messages.
    ...
    I found an important bug and felt like it’s the right thing to do to share it.


    Господи, как страшно жыть. Один мудак пишет шифрование, не зная разницы между ключём и паролем, второй толком не валидирует пользовательский инпут в либе для шифрования. Действительно, TERRIFYING STORY, BRO.

    roman-kashitsyn, 13 Января 2017

    Комментарии (100)
  11. Haskell / Говнокод #21424

    −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
    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
    -- GUESS THE NAME OF "algorithmX":
    import qualified Data.List as DL
    infinity = 1/0
    adjacencyMatrix =
      [[0,3,1,6,0,0],
       [3,0,5,0,3,0],
       [1,5,0,5,6,4],
       [6,0,5,0,0,2],
       [0,3,6,0,0,6],
       [0,0,4,2,6,0]] :: [[Double]]
    
    replaceZerosWithInfinity matrix =
      map (map (\e -> if e == 0 then infinity else e)) matrix
    
    type Edge = (Int,Int,Double)
    
    algorithmX adjacencyMatrix initialVertex = (minimumTotalCost,minimumEdges)
      where
        third (_,_,t) = t
        minimumTotalCost = sum $ map third minimumEdges
        (_,minimumEdges) = foldl iterate ([initialVertex],[]) [1..n-1]
        matrix = replaceZerosWithInfinity adjacencyMatrix
        n = length matrix
        getIndexes visited =
          filter (\(i,j) -> not $ elem j visited) [(i,j) | i <- visited, j <- [0..n-1]]
        iterate :: ([Int],[Edge]) -> Int -> ([Int],[Edge])
        iterate (visited,edges) iteration = (newVisited:visited,minimumEdge:edges)
          where
            (_,newVisited,_) = minimumEdge 
            minimumEdge = DL.minimumBy compareEdges $ map newEdge (getIndexes visited)
            newEdge (i,j) = (i,j,matrix !! i !! j)
            compareEdges e0 e1 = compare (third e0) (third e1)

    WARN: лаба с фейспука

    roman-kashitsyn, 12 Октября 2016

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