- 1
CommonMiscUtilsHelperManager2.h
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+162
CommonMiscUtilsHelperManager2.h
+166
for (i=0; i<n; i++){
for (int j=0; j<n; j++){
if (x[i]>x[j] && x[i]-x[j] > zx && (y[i]>y[j] && y[i]-y[j] > zy) || (y[i]<y[j] && y[j]-y[i] > zy)){
zx = x[i] - x[j]; a1=i; a2=j;
if (y[i]>y[j] && y[i]-y[j] > zy && sum < zx + (y[i]-y[j])) zy = y[i] - y[j]; b1=i; b2=j; sum = zx + zy;
if (y[i]<y[j] && y[j]-y[i] > zy && sum < zx + (y[j]-y[i])) zy = y[j] - y[i]; b1=i; b2=j; sum = zx + zy;
}
if (x[i]<x[j] && x[j]-x[i] > zx && (y[i]>y[j] && y[i]-y[j] > zy) || (y[i]<y[j] && y[j]-y[i] > zy)){
zx = x[j] - x[i]; a1=i; a2=j;
if (y[i]>y[j] && y[i]-y[j] > zy && sum < zx + (y[i]-y[j])) zy = y[i] - y[j]; b1=i; b2=j; sum = zx + zy;
if (y[i]<y[j] && y[j]-y[i] > zy && sum < zx + (y[j]-y[i])) zy = y[j] - y[i]; b1=i; b2=j; sum = zx + zy;
}
}
}
нахождение координат двух наиболее отдаленных точек среди заданных=)
+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) >