- 1
- 2
- 3
- 4
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
lb = true;
else
lb = false;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+173
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
lb = true;
else
lb = false;
Уроки какого-то умника по OpenGL. И вот такие "творения" на каждом шагу.
+161
// If iMode!=0, non-blocking mode is enabled.
u_long iMode=1;
ioctlsocket(Socket,FIONBIO,&iMode);
// Main loop
for(;;)
{
// Display message from server
char buffer[1000];
memset(buffer,0,999);
int inDataLength=recv(Socket,buffer,1000,0);
std::cout<<buffer;
int nError=WSAGetLastError();
if(nError!=WSAEWOULDBLOCK&&nError!=0)
{
std::cout<<"Winsock error code: "<<nError<<"\r\n";
std::cout<<"Server disconnected!\r\n";
// Shutdown our socket
shutdown(Socket,SD_SEND);
// Close our socket entirely
closesocket(Socket);
break;
}
Sleep(1000);
}
http://www.win32developer.com/tutorial/winsock/winsock_tutorial_3.shtm
Вот как нада работать с сокетами... (строка 27).
+171
if (a == 0 && b == 0 && c == 0 && d == 0) n = 0;
if (a == 0 && b == 0 && c == 0 && d != 0) n = 0;
if (a == 0 && b == 0 && c != 0 && d == 0) n = 0;
if (a == 0 && b != 0 && c == 0 && d == 0) n = 0;
if (a != 0 && b == 0 && c == 0 && d == 0) n = 0;
if (a == 0 && b == 0 && c != 0 && d != 0 && c == d) m += 1;
if (a == 0 && b != 0 && c != 0 && d == 0 && b == c) m += 1;
if (a == 0 && b != 0 && c == 0 && d != 0 && b == d) m += 1;
if (a != 0 && b == 0 && c == 0 && d != 0 && a == d) m += 1;
if (a != 0 && b == 0 && c != 0 && d != 0 && a == c) m += 1;
if (a != 0 && b != 0 && c == 0 && d == 0 && a == b) m += 1;////
if (a == 0 && b != 0 && c != 0 && d != 0 && b == c) m += 1;
if (a == 0 && b != 0 && c != 0 && d != 0 && b == d) m += 1;
if (a == 0 && b != 0 && c != 0 && d != 0 && c == d) m += 1;//
if (a != 0 && b == 0 && c != 0 && d != 0 && a == c) m += 1;
if (a != 0 && b == 0 && c != 0 && d != 0 && a == d) m += 1;
if (a != 0 && b == 0 && c != 0 && d != 0 && d == c) m += 1;//
if (a != 0 && b != 0 && c == 0 && d != 0 && a == b) m += 1;
if (a != 0 && b != 0 && c == 0 && d != 0 && a == d) m += 1;
if (a != 0 && b != 0 && c == 0 && d != 0 && b == d) m += 1;//
if (a != 0 && b != 0 && c != 0 && d == 0 && a == b) m += 1;
if (a != 0 && b != 0 && c != 0 && d == 0 && a == c) m += 1;
if (a != 0 && b != 0 && c != 0 && d == 0 && c == b) m += 1;////
m--;
if (a != 0 && b != 0 && c != 0 && d != 0 && a == b) k += 1;
if (a != 0 && b != 0 && c != 0 && d != 0 && a == c) k += 1;
if (a != 0 && b != 0 && c != 0 && d != 0 && a == d) k += 1;
if (a != 0 && b != 0 && c != 0 && d != 0 && b == c) k += 1;
if (a != 0 && b != 0 && c != 0 && d != 0 && b == d) k += 1;
if (a != 0 && b != 0 && c != 0 && d != 0 && c == d) k += 1;
k -= 3;
if (m <= 0) m = 0;
if (k <= 0) k = 0;
n = k + m;*/
Как на второй день после начала изучения С стал решать задачу "Сколько чисел повторяются"
+163
AClass::AClass()
{
char c;
pipe( m_ThreadPipeA );
pipe( m_ThreadPipeB );
write( m_ThreadPipeA[0], &c, sizeof(c) );
}
void AClass::JobCreatorThread()
{
char c;
do {
/* prepare new job and pass it to the thread pool */
read( m_ThreadPipeA[1], &c, sizeof(c) );
m_CurrJob = IncomingJob;
write( m_ThreadPipeB[0], &c, sizeof(c) );
} while (!m_Shutdown);
}
void AClass::ThreadPoolMethod()
{
char c;
do {
Job j;
read( m_ThreadPipeB[1], &c, sizeof(c) );
j = m_CurrJob;
write( m_ThreadPipeA[0], &c, sizeof(c) );
/* handle the job j */
} while (!m_Shutdown);
}
из архивов.
дала как-то архетиктура задание модуль распаралелить потоками - но при этом как можно меньше использовать локи, что бы проблем вертикального скалирования не возникало. и три месяца спустся они родили -о чудо!- многопоточный модуль ВООБЩЕ без локов. тока с производительностью проблемы - но это не могут быть локи потому что модуль ими ВООБЩЕ не пользуется - почему мне и дали задание посмотреть что там можно еще усовершенствовать.
мне несколько часов понадобилось что бы мой примитивный мозг смог осознать величие полета мысли моих коллег. а потом (когда я наконец из моря кода выцедил приведенную сверху эссенцию) у меня волосы дыбом встали....
лопата: чудаки пайпами симулировали мутексы/ивенты. и ведь не придерешься: архитекторы сказали локи избегать, а про пайпы ничего сказано не было.
ЗЫ ну и то что в джоб объекте еще и строковых массивов на 80К, и они постоянно копировались туды сюды, это было cherry topping ко всему этому счастью.
+145
for(rptr=0;rptr<10;rptr++) // пока очередь не опустела
выборка элементов из FIFO =D
+167
T toPower(T base, int exponent)
{
//cout << "++++++++Start template+++++++++++++" << endl;
T result = base;
if(exponent == 0) return (T)1;
if(exponent < 0) return (T)0;
while(--exponent)
result *= base;
//cout << "++++++++Finish template++++++++++++" << endl;
return result;
}
+181
int maxOf5(int a, int b, int c, int d, int e) {
int arr[5];
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
arr[4] = e;
bubbleSort(&arr, 5);
return arr[0];
}
no comments...
+163
#define LOKI_TYPELIST_4(T1, T2, T3, T4) \
::Loki::Typelist<T1, LOKI_TYPELIST_3(T2, T3, T4) >
#define LOKI_TYPELIST_5(T1, T2, T3, T4, T5) \
::Loki::Typelist<T1, LOKI_TYPELIST_4(T2, T3, T4, T5) >
...
...
#define LOKI_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
T41, T42, T43, T44, T45, T46, T47, T48, T49) \
::Loki::Typelist<T1, LOKI_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
T41, T42, T43, T44, T45, T46, T47, T48, T49) >
#define LOKI_TYPELIST_50(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
::Loki::Typelist<T1, LOKI_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
+153
template <class TList, template <class> class Unit>
class GenScatterHierarchy;
template <class T1, class T2, template <class> class Unit>
class GenScatterHierarchy<Typelist<T1, T2>, Unit>
: public GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit>
, public GenScatterHierarchy<T2, Unit>
{
public:
typedef Typelist<T1, T2> TList;
typedef GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit> LeftBase;
typedef GenScatterHierarchy<T2, Unit> RightBase;
template <typename T> struct Rebind
{
typedef Unit<T> Result;
};
};
+173
#define arrVec[2].realVectorInfo.Count 5
Мало того, что встретил это в проекте, доставшемся от "предков", так ведь и MSVS 6.0 проглатывает.
Выражение arrVec[2].realVectorInfo.Count успешно заменялось на 5.
Заметил подставу после появления строки arrVec[i].realVectorInfo.Count в проекте, в результате рефакторинга.