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

    Всего: 41

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

    +146

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Новые данные давно перестали поступать с этого сайта. Сдаю свои пароли и явки:
    http://govnokod.ru/user/4227
    http://govnokod.ru/user/4434
    http://govnokod.ru/user/4480
    GПороли:
    fat
    govno
    
    И мой вам подарок:
    http://www.youtube.com/watch?v=ClD0TcvLmgo

    Школу троллинга на говнокоде прошел. Экзамены сдал. Пойду на хабр или лорНадо заканчивать с троллингом. Я не со зла. Извините, если кого обидел. До свидания. ^_^

    CPPGovno, 06 Октября 2011

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

    +146

    1. 1
    См. ниже

    Напишите мне бота-минусатора неугодных. Срочно нужен. Куплю за 3 банки вазелина. Анал не предлагать. Расстрел на месте.

    CPPGovno, 01 Октября 2011

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

    +145

    1. 1
    2. 2
    Ошибка компиляции комментария:
    csrf verification error

    Первый раз на говнокоде выкладывают говнокод Страйкера.

    CPPGovno, 01 Октября 2011

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

    +155

    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
    #include <iostream>
    #include <memory>
    #include <assert.h>
    using namespace std;
     
    template <class T>
    class megaClass
    {
    public:
     
        void hello()
        {
            assert(dynamic_cast<T*>(this)!=NULL);
            static_cast<T*>(this)->hello();
        }
        virtual ~megaClass() {}
    };
     
    class cleft : public megaClass<cleft>
    {
    public:
     
        void hello()
        {
            std::cout << "left::hello()" << std::endl;
        }
    };
     
    class cright : public megaClass<cright>
    {
    public:
     
        void hello()
        {
            std::cout << "right::hello()" << std::endl;
        }
    };
     
     
    int main()
    {
        scoped_ptr<megaClass<cleft> > a1=new cleft;
        a1->hello();
        scoped_ptr<megaClass<cright> > a2=new cright;
        a2->hello();
        
        return 0;
    }

    Пытался продемонстрировать статический полиморфизм TarasB и получилась такая какашка. Кто действительно крут и может сабдж продемонстрировать? Я где-то видел пример, но не помню где...

    Ещё продемонстрировал статический полиморфизм через стратегии:

    struct Strategy1
    {
    static void do(){printf("Lol1");}
    };
    struct Strategy2
    {
    static void do(){printf("Lol2");}
    };
    template<class Strategy>
    class MegaClass
    {public:
    void do()
    {
    printf("Mega");
    Strategy::do();//Класс Strategy можно было и создать для хранения состояния.
    printf("/n\");
    }
    };
    //...

    Дальше в разных частях кода создаем:
    MegaClass<Strategy1> o;
    o.do();
    //...
    MegaClass<Strategy2> o;
    o.do();
    "Один" класс ведёт себя по разному. Понятно, что это не совсем полиморфизм. Но очень часто именно в таком контексте используют динамический полиморфизм, хотя такого статического здесь достаточно выше крыши.
    Плюсы этого подхода :
    1)Создаётся объект в стеке, значит быстро, а не в куче. Хотя можно и не в стеке.
    2)Используется шаблон, значит компиль будет инлайнить.

    Минус:
    1)Если понадобится резкой перейти от статического полиморфизма к динамическому - придётся переписывать на виртуальные функции или на истинный статический полиморфизм.

    Обсуждения здесь:
    http://govnokod.ru/8025#comment110773


    Сразу исключим детсадовский вариант статического функционального полиморфизма c перегрузкой функций:
    Class1 o1;
    foo(o1);
    Class2 o2;
    foo(o2);

    void foo(Class1 o){/*...*/};
    void foo(Class2 o){/*...*/};



    Кто-нибудь реально умеет can into нормальный статический полиморфизм?

    CPPGovno, 30 Сентября 2011

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

    +150

    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
    Люди, помогите решить такой вопрос. Приведу пример: 
       Есть программист Петя. Он прочитал очень много книг по программированию,
    и вообще умный парень :). И, так как, Петя прочитал много умных книг (Александреску к примеру),
    он соответственно пишет умный код, используя различные фишки с++, например,
    очень любит шаблоны (такие вещи типа статического полиморфизма и еще много
    всего связанного с шаблонами и обобщенным программированием) или использует
    сложные тернарные операторы… ну и т.д. … Соответственно код работает и все хорошо. 
    Как-то в разговоре с Петей ему сказали, что если так прогать, то может получиться
    непрозрачный код. 
      На что он ответил: «Если алгоритм написан верно, и Каму-то непонятен код, то
    проблема в том что человек просто плохо образован в плане программирования.
    Ибо кто-то, например, не знает что такое классы и ему будет не прозрачен код,
    в котором используют классы или обычное наследование. И соответственно не
    писать же все процедурно, из-за того, что кто-то не знает что такое классы.
    А само понятие прозрачности кода - ерунда ».
       От сюда вопрос, Прав ли Петя и что такое вообще «Прозрачность кода»?
    Или действительно код не может быть  написан «Заумно», а тот, кто так
    считает, просто плохо знает стандарт языка.

    Вопрос совершенно серьёзный. //Не холивар.

    CPPGovno, 29 Сентября 2011

    Комментарии (248)
  7. Assembler / Говнокод #7943

    +131

    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
    ThreadStarter stru
      this dd ?
      ...
    ends
    
    
    
    ThreadStarter::MoveToArmy near proc
      in ax, 0x40 // initial time
    
      xor cx, cx
      mov dx, ax
    __repeat:
      in ax, 0x40
      lea cx, [ax - dx]
      mov dx, ax
    
      cmp cx, 60 * 60 * 24 * 365
        jl short __repeat
    
      pop ax
      ret
    endp
    
    
    start:
     sub sp, sizeof ThreadStarter
     assume [sp]: stru ThreadStarter
    
     mov ax, sp 
     invoke Thread_Starter::MoveToArmy, ax
    
     ...

    http://www.gamedev.ru/flame/forum/?id=152390#m6

    >14 сен. 2011 17:38
    Машинный код для шестнадцати битного режима
    Все привет. С началом учебы полнейший завал, времени нет вообще. Если вы знаете ссылки на сабж (прерывания, всякие mov, cmp, jmp и т.д.) поделитесь пожалуйста.
    Очень важно, что бы он был для шестнадцати битного режима, для ДОСа, не для Вин32.

    CPPGovno, 22 Сентября 2011

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

    +160

    1. 1
    http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T

    Часовая презентация Герб Саттера о будущем C++.
    От себя хочется добавить: "Где здесь С++, Герб Саттер?"

    CPPGovno, 22 Сентября 2011

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

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    inline ~Scene() {
        while( boxList.size() > 0 ) {
          boxList.erase( boxList.begin() );
        }
        while( sphereList.size() > 0 ) {
          sphereList.erase( sphereList.begin() );
        }
        while( lightList.size() > 0 ) {
          lightList.erase( lightList.begin() );
        }
      }

    http://www.gamedev.ru/code/forum/?id=136478&page=6#m82

    CPPGovno, 21 Сентября 2011

    Комментарии (55)
  10. C++ / Говнокод #7890

    +162

    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
    #ifdef _WIN32
    #define BEGIN_ASM
    #define END_ASM
    #define _DB(a) __asm _emit a
    #define _STR(a) a
    #else
    #define BEGIN_ASM asm (
    #define END_ASM );
    #define _DB(a) ".byte "#a";"
    #define _STR(a) a" \n\t"
    #endif
    
    #define PARAMETERS_ESP_VOID_VOID_VOID BEGIN_ASM _STR(_DB(0x8B) _DB(0x44) _DB(0x24) _DB(0x04)) _STR(_DB(0x8B) _DB(0x54) _DB(0x24) _DB(0x08)) \
     _STR(_DB(0x8B) _DB(0x4C) _DB(0x24) _DB(0x0C)) END_ASM
    #define SAVE_3_PARAMETERS BEGIN_ASM _STR(_DB(0x89) _DB(0x44) _DB(0x24) _DB(0xE4)) _STR(_DB(0x89) _DB(0x54) _DB(0x24) _DB(0xEC)) \
    _STR(_DB(0x89) _DB(0x4C) _DB(0x24) _DB(0xE8)) END_ASM
    #define LOAD_3_PARAMETERS BEGIN_ASM _STR(_DB(0x8B) _DB(0x44) _DB(0x24) _DB(0xE4)) _STR(_DB(0x8B) _DB(0x54) _DB(0x24) _DB(0xEC)) \
    _STR(_DB(0x8B) _DB(0x4C) _DB(0x24) _DB(0xE8)) END_ASM
    
    int rdtc()
    {
      _asm RDTSC
    }
    
    #pragma optimize( "gtp", on )
    #define VECTORP2DADDFPU \
    BEGIN_ASM \
     _STR(_DB(0xD9) _DB(0x00)) \
     _STR(_DB(0xD8) _DB(0x02)) \
     _STR(_DB(0xD9) _DB(0x19)) \
     _STR(_DB(0xD9) _DB(0x40) _DB(0x04)) \
     _STR(_DB(0xD8) _DB(0x42) _DB(0x04)) \
     _STR(_DB(0xD9) _DB(0x59) _DB(0x04)) \
    END_ASM
    
    void __stdcall __VectorP2DAddFPU() {
      VECTORP2DADDFPU;
    }
    
    // для даной функции компилятор сам зделает так чтобы использовались другие регистры процессора в место eax edx ecx и сохранения не понадобится
    #define Vector2DAdd(x,y,z) _asm lea eax,x _asm lea edx,y _asm lea ecx,z _asm call __VectorP2DAddFPU;
    
    void __stdcall _VectorP2DAddFPU(void *,void *,void *) {
    // сохранение в данном случае вызывается в ручную так как сам компилятор этого не зделает что приведет к не предвиденниму результату или к подению
      SAVE_3_PARAMETERS;
      PARAMETERS_ESP_VOID_VOID_VOID;
      VECTORP2DADDFPU;
      LOAD_3_PARAMETERS;
    }

    http://www.gamedev.ru/code/forum/?id=152492#m3

    >стоит ли писать велосипед, реализующий математику подобным образом?

    CPPGovno, 18 Сентября 2011

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

    +158

    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
    std::ostringstream str;
    str << "Русский текст" << std::endl;
    Print(str.c_str());
    //Оттуда же:
    void ConsoleCout(const char* _text)
    {
        char* buffer=0;
        unsigned int bufferSize=0;
    
        if(!_text) return;
        while(_text[bufferSize]) bufferSize++;
    
        buffer=new (std::nothrow) char[bufferSize+1];
        if(!buffer) return;
        buffer[bufferSize]=0;
    
        if(!CharToOemA(_text,buffer))
        {
            delete[] buffer;
            return;
        }
    
        std::cout<<buffer;
        delete[] buffer;
    }

    [code]http://www.gamedev.ru/code/forum/?id=152499[\code]

    CPPGovno, 18 Сентября 2011

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