-
Список говнокодов пользователя CPPGovno
Всего: 41
-
+146
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
-
+146
Напишите мне бота-минусатора неугодных. Срочно нужен. Куплю за 3 банки вазелина. Анал не предлагать. Расстрел на месте.
CPPGovno,
01 Октября 2011
-
+145
- 1
- 2
Ошибка компиляции комментария:
csrf verification error
Первый раз на говнокоде выкладывают говнокод Страйкера.
CPPGovno,
01 Октября 2011
-
+155
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 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
-
+150
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Люди, помогите решить такой вопрос. Приведу пример:
Есть программист Петя. Он прочитал очень много книг по программированию,
и вообще умный парень :). И, так как, Петя прочитал много умных книг (Александреску к примеру),
он соответственно пишет умный код, используя различные фишки с++, например,
очень любит шаблоны (такие вещи типа статического полиморфизма и еще много
всего связанного с шаблонами и обобщенным программированием) или использует
сложные тернарные операторы… ну и т.д. … Соответственно код работает и все хорошо.
Как-то в разговоре с Петей ему сказали, что если так прогать, то может получиться
непрозрачный код.
На что он ответил: «Если алгоритм написан верно, и Каму-то непонятен код, то
проблема в том что человек просто плохо образован в плане программирования.
Ибо кто-то, например, не знает что такое классы и ему будет не прозрачен код,
в котором используют классы или обычное наследование. И соответственно не
писать же все процедурно, из-за того, что кто-то не знает что такое классы.
А само понятие прозрачности кода - ерунда ».
От сюда вопрос, Прав ли Петя и что такое вообще «Прозрачность кода»?
Или действительно код не может быть написан «Заумно», а тот, кто так
считает, просто плохо знает стандарт языка.
Вопрос совершенно серьёзный. //Не холивар.
CPPGovno,
29 Сентября 2011
-
+131
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 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
-
+160
- 1
http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T
Часовая презентация Герб Саттера о будущем C++.
От себя хочется добавить: "Где здесь С++, Герб Саттер?"
CPPGovno,
22 Сентября 2011
-
+164
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 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
-
+162
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 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
-
+158
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 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