- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
#include <QtGui/QApplication>
#include "qrselector.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QRSelector w;
w.show();
return a.exec();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+145
#include <QtGui/QApplication>
#include "qrselector.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QRSelector w;
w.show();
return a.exec();
}
main.cpp
+145
#ifndef QRSELECTOR_H
#define QRSELECTOR_H
#include "ui_qrselector.h"
#include <QMouseEvent>
#include <QRubberBand>
#include <QPixmap>
#include <QVBoxLayout>
class QRSelector : public QWidget, private Ui::QRSelector
{
Q_OBJECT
public:
explicit QRSelector(QWidget *parent = 0);
QRubberBand *rubberBand;
QPoint origin;
protected:
void changeEvent(QEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
};
#endif // QRSELECTOR_H
qrselector.h
+145
#include "qrselector.h"
QRSelector::QRSelector(QWidget *parent) :
QWidget(parent){
setupUi(this);
showMaximized();
//showFullScreen();
rubberBand = 0;
//this->autoFillBackground();
//this->setWindowOpacity(0.2);
//this->setAttribute(Qt::WA_TranslucentBackground);
//this->setWindowFlags(Qt::FramelessWindowHint);
}
void QRSelector::changeEvent(QEvent *e)
{
QWidget::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
retranslateUi(this);
break;
default:
break;
}
}
void QRSelector::mousePressEvent(QMouseEvent *e)
{
if(rubberBand)
rubberBand->hide();
origin = e->pos();
if (!rubberBand)
rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
rubberBand->setGeometry(QRect(origin, QSize()));
//rubberBand->setWindowOpacity(0.9);
rubberBand->setPalette(QPalette (Qt::red));
rubberBand->setStyleSheet("background-color: #F5EEA7;");
rubberBand->show();
}
void QRSelector::mouseMoveEvent(QMouseEvent *e)
{
rubberBand->setGeometry(QRect(origin, e->pos()).normalized());
int ww, hh;
ww = origin.x() - e->x();
hh = origin.y() - e->y();
if(ww < 0) ww *= -1;
if(hh < 0) hh *= -1;
label->setText("height: "+QString::number(hh)+" width: "+QString::number(ww));
}
qrselector.cpp
+152
class ListEl{
public:
int val;
ListEl *head;
ListEl *tail;
}
class MyList{
public:
ListEl *head, *tail;
+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 ко всему этому счастью.