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

    Всего: 246

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    SFINAE — это просто
    
    template<typename T> struct has_foo{
    private:  // Спрячем от пользователя детали реализации.
        static int detect(...);  // Статическую функцию и вызывать проще.
        template<typename U> static decltype(std::declval<U>().foo(42)) detect(const U&);
    public:
        static constexpr bool value = std::is_same<void, decltype(detect(std::declval<T>()))>::value;  // Вот видите, готово.
    };

    Программирование на "Modern C++" всё больше и больше становится похожим на отчаянную попытку выебать козла плазменным телевизором.
    via h/205772

    gost, 30 Сентября 2017

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    std::vector<int> vec = { 1, 2, 3, 4 };
    for (auto i = vec.size() - 1; i >= 0; i--) {
        cout << i << ": " << vec[i] << endl;
    }
    cout << endl;

    Выстрел в ногу, заботливо прикрытый фиговым листочком «auto».

    gost, 30 Сентября 2017

    Комментарии (75)
  4. Pascal / Говнокод #21951

    −50

    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
    if not DoubleBuffered then
        begin
          BufferDC := CreateCompatibleDC(DC);
          // CreateCompatibleDC(DC) return 0 if Drawing takes place to MemDC(buffer):
          // return <> 0 => need to double buffer || return = 0 => no need to double buffer
          if BufferDC <> 0 then
          begin
            // Using the cache if possible
            if FIsCachedBuffer or FIsFullSizeBuffer then
            begin
              // Create cache if need
              if CacheBitmap = 0 then
              begin
                BufferBitMap := CreateCompatibleBitmap(DC, ClientWidth, ClientHeight);
                // Assign to cache if need
                if FIsCachedBuffer then
                  CacheBitmap := BufferBitMap;
              end
              else
                BufferBitMap := CacheBitmap;
    
              // Assign region for minimal overdraw
              Region := CreateRectRgnIndirect(UpdateRect);//0, 0, UpdateRect.Width, UpdateRect.Height);
              SelectClipRgn(BufferDC, Region);
            end
            else
              // Create buffer
              BufferBitMap := CreateCompatibleBitmap(DC, RectWidth(UpdateRect), RectHeight(UpdateRect));
            // Select buffer bitmap
            SelectObject(BufferDC, BufferBitMap);
            // [change coord], if need
            // Moving update region to the (0,0) point
            if not(FIsCachedBuffer or FIsFullSizeBuffer) then
            begin
              GetViewportOrgEx(BufferDC, SaveViewport);
              SetViewportOrgEx(BufferDC, -UpdateRect.Left + SaveViewport.X, -UpdateRect.Top + SaveViewport.Y, nil);
            end;
          end
          else
            BufferDC := DC;
        end
        else
          BufferDC := DC;
    //.......

    https://habrahabr.ru/post/318876/

    gost, 06 Января 2017

    Комментарии (19)
  5. Си / Говнокод #21923

    −67

    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
    #include <inttypes.h>
    #include <stdio.h>
    
    uint32_t MAWEHKA()
    {
    	static long double MAWA = -56880043484.94237894784575283738l;
    	MAWA = (uint32_t)(MAWA * 0.08511557537652968562l + 6055984072.66289931748786807261l);
    	return (uint32_t)(MAWA);
    }
    
    int main()
    {
    	for (int i = 0; i < 3; i++)
    	{
    		uint32_t mawenka = MAWEHKA();
    		for (int j = 3; j >= 0; j--)
    			printf("%c", (char)((mawenka & (0xff << j * 8)) >> j * 8));
    	}
    	return 0;
    }

    gost, 31 Декабря 2016

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

    −18

    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
    #include <iostream>
    
    #define GAY(x) #x
    #define STR(x) GAY(x)
    
    #define A0(x, i) (i)*10 + (*(x)-'0')
    #define A1(x, i) (*(x + 1) ? A0(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A2(x, i) (*(x + 1) ? A1(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A3(x, i) (*(x + 1) ? A2(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A4(x, i) (*(x + 1) ? A3(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A5(x, i) (*(x + 1) ? A4(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A6(x, i) (*(x + 1) ? A5(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A7(x, i) (*(x + 1) ? A6(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A8(x, i) (*(x + 1) ? A7(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A9(x, i) (*(x + 1) ? A8(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A10(x, i) (*(x + 1) ? A9(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A11(x, i) (*(x + 1) ? A10(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A12(x, i) (*(x + 1) ? A11(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A13(x, i) (*(x + 1) ? A12(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A14(x, i) (*(x + 1) ? A13(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    #define A15(x, i) (*(x + 1) ? A14(x + 1, (i) * 10 + *(x)-'0') : (i) * 10 + *(x)-'0')
    
    
    #define STOI(x) A15(STR(x), 0)
    
    
    int main(int argc, char *argv[])
    {
        std::cout << STOI(01) << std::endl <<
                              STOI(08) << std::endl <<
                              STOI(0123) << std::endl <<
                              STOI(0123456789) << std::endl;
    
        return 0;
    }

    Теперь можно добавлять нолики в начало чисел для выравнивания!

    gost, 27 Октября 2016

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

    −47

    1. 1
    2. 2
    Bagri — NoSQL база данных с открытым кодом, построенная поверх распределенного кэша
    https://habrahabr.ru/post/310110/

    Какие Bagri. )))

    gost, 15 Сентября 2016

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

    +322

    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
    void worker(int id)
    {
        while (true) {
            std::unique_lock<std::mutex> lock(connPoolMutex);
            connPoolCond.wait(lock, [] { return !connectionsPool.empty(); });
    
            ClientConnection conn = connectionsPool.front();
            connectionsPool.pop();
            lock.unlock();
    
            TCPSocket sock(conn);
            sock.setReadTimeout(READ_TIMEOUT);
    
            char buffer[MAX_PACKET_LEN] = {};
            int sz = sock.recv(buffer, sizeof(buffer));
    
            // [...]
        }
    }
    
    // [...]
    
    int main()
    {
        // [...]
        TCPSocket server("0.0.0.0:1234");
        server.bind();
        server.listen(1000);
    
        while (true) {
            ClientConnection conn = server.accept();
    
            std::unique_lock<std::mutex> l(connPoolMutex);
            connectionsPool.push(conn);
    
            connPoolCond.notify_one();
        }
    }

    Современный, многопоточный и масштабируемый сервер на C++!

    TCPSocket - очень тонкая обёртка над голым сокетом.

    gost, 17 Августа 2016

    Комментарии (87)
  9. C++ / Говнокод #20338

    +8

    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
    #include <iostream>
    using namespace std;
     
    class Boolean {
    public:
        Boolean() : m_flag(false), m_val(0) {}
        Boolean(bool flag) : m_flag(flag), m_val(0) {}
        Boolean(bool flag, int val) : m_flag(flag), m_val(val) {}
     
        Boolean operator || (int val) {
            return Boolean(m_flag || val == m_val, m_val);
        }
     
        operator bool() { return m_flag; }
     
    private:
        bool m_flag;
        int m_val;
    };
     
    class Integer {
    public:
        Integer() : m_val(0) {}
        Integer(int val) : m_val(val) {}
     
        operator int() { return m_val; }
        Boolean operator == (int val) { return Boolean(val == m_val, m_val); }
        Boolean operator == (const Integer & val) { return Boolean(val.m_val == m_val, m_val); }
     
    private:
        int m_val;
    };
     
    int main() {
        Integer a(10);
     
        cout << bool(a == 15 || 10) << endl;
        cout << bool(a == 15 || 11) << endl;
        cout << bool(a == 15 || 11 || 13 || 11 || 0 || 10 || 5) << endl;
        cout << bool(a == 15 || 11 || 13 || 11 || 0 || 9 || 5) << endl;
     
        return 0;
    }

    https://ideone.com/xwMvx7

    gost, 07 Июля 2016

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

    +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
    В последнее время наш сайт стали доставать true-программисты, студенты-идеалисты
    и прочие, комментариями с различными однобокими утверждениями,что переменные
    вида $peremennaya или функции шаблона function privet_miry() { /* ... */; } - это т.н.
    "говнокод". Отчасти оные товарищи правы, но...
    
    Наша всеми любимая поисковая система под названием Яндекс, умудряется придумывать
    все новые и новые фильтры с различными модификациями (не так давно был анонсирован АГС-40),
    которые по "неведомым" причинам признают порой вполне качественные сайты "малополезными",
    исключая последние из результов поиска. Одним из многочисленных факторов, влияющих на
    ранжирование и включение сайта в выдачу является уникальность контента (почитайте ответы
    Платона Щукина на любом более или менее приличном SEO-форуме). Но не будем отклоняться от темы,
    обсуждая целесообразность таких подарочков и их точность.
    
    Любой язык программирования, как известно имеет ограниченное количество синтаксических
    конструкций (не придирайтесь к словам). К примеру в PHP это if {...} else {...}, foreach(...): endforeach;
    и т.п. А с учетом API множества CMS (Drupal, Joomla, WordPress...) сниппеты могут и вовсе потерять
    "уникальность" с т.з. поисковой системы Яндекс. Соответственно мы вынуждены называть переменные,
    названия функций, ряд других элементов кириллическим транслитом.

    А всё почему? А потому, что Яндекс не нужен.

    >> #20296

    gost, 30 Июня 2016

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

    +9

    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
    #define public public: void operator delete(void *pituh) {}; public
         
    class poteklo
    {
    public:
        poteklo() :
            TheAnswer(42)
        {
             ;
        }
         
    private:
         int TheAnswer;
    };
         
    int main(int argc, char *argv[])
    {
        poteklo *uteklo = new poteklo;
        delete uteklo;    // Утекло!
    
        return 0;
    }

    Макро в духе "#define TRUE FALSE", только хардкорнее.
    https://ideone.com/ZdGnuL

    gost, 30 Мая 2016

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