- 1
ЭтоЗаказПокупателя = ?(ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗаказПокупателя"), Истина, Ложь);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−124
ЭтоЗаказПокупателя = ?(ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.ЗаказПокупателя"), Истина, Ложь);
мощь ))))
+129
#define SPI_BUF_SIZE 0x400
#define SDRAM_SPI_0_BUF_MISO (void*)0x100000
#define SDRAM_SPI_0_BUF_MOSI SDRAM_SPI_0_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_1_BUF_MISO SDRAM_SPI_0_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_1_BUF_MOSI SDRAM_SPI_1_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_2_BUF_MISO SDRAM_SPI_1_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_2_BUF_MOSI SDRAM_SPI_2_BUF_MISO - SPI_BUF_SIZE
#define SDRAM_SPI_3_BUF_MISO SDRAM_SPI_2_BUF_MOSI - SPI_BUF_SIZE
#define SDRAM_SPI_3_BUF_MOSI SDRAM_SPI_3_BUF_MISO - SPI_BUF_SIZE
void test()
{
void *buf = SDRAM_SPI_3_BUF_MOSI;
void *buf1 = (void*)0x100000 - 0x400*7;
*buf = *buf1 = 0xAA;
printf("buf=%.2x \tbuf1=%.2x\n ",*buf, buf1);
return;
}
Расскажу преамбулу. Код писался под проц atmel at91sam7x
В этом процессоре есть звено SPI (serial pereferial interface). Но так как звено было спроектировано с небольшим косячком (который кстати в эррате был явно описан) буффер для каждой линии нужно было выделять в сдраме.
Сказано - сделано. Выделили. а так как средства отладки только DBGU и JTAG.
Все волосы на жопе вырвал пока нашел в чем ошибка.
Внимание, вопрос. В чем гавно?
+170
$order = strtolower($order);
if ($order=='id' OR $order=='created_by' OR $order=='created_at' OR
$order=='action')
{
$order = $order;
}
else
{
$order = 'id';
}
Надо крепче спать и внимательней писать.
−86
for (i = 0; i < 3; i++) {
if (smth) {
blnCardValue = true;
i = 4;
}
}
клевый способ выйти из цикла
+73
ICQ::logInIcq( )
{
TLV clid1,clid,clm,clmin,clless,clbild,cldistr,cllang,clcontr,t1;
WSA ws;
int packn;
unsigned char st1[40];
port=ControlIcqPropert.portIcqServer;
host=(char*)ControlIcqPropert.IcqServer;
if((strlen(host)==0)|(port==0))
{
port=DEFAULT_SERVER_PORT;
host=DEFAULT_SERVER_HOST;
}
if(strlen(password)<3) return 0;
pn=sock.Connect( host,port );
packn=sock.Receive( ( char * )uc,sizeof( uc ),0,0 );
if( packn <= 0 ){return 1;}
//SetIndic(10);
tUin.type=0x0100;
tUin.lenght[0]=0x00;//htons( ( BYTE )strlen( uin ) );
tUin.lenght[1]=strlen(uin);
memcpy( tUin.data,uin,strlen( uin ) );
flap.chan_id=0x01;
flap.Sequence+=0x0100;
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x04;
flap.data[0]=0x00;
flap.data[1]=0x00;
flap.data[2]=0x00;
flap.data[3]=0x01;
packn=sock.Send( ( const char * )&flap,10,0 );
flap.Sequence+=0x0100;
flap.chan_id=0x02;
t1.type=0x1700;
t1.lenght[0]=0x00;
t1.lenght[1]=0x06;
t1.data[0]=0x00;
t1.data[1]=0x00;
t1.data[2]=0x00;
t1.data[3]=0x00;
t1.data[4]=0x00;
t1.data[5]=0x00;
int lnum=0;
lnum+=10;
memcpy( &st1,&t1,lnum );
memcpy( &st1[lnum],&tUin,strlen(uin)+4 );
lnum+=strlen(uin)+4;
unsigned char u1[4];
u1[0]=0x00;
u1[1]=0x4B;
u1[2]=0x00;
u1[3]=0x00;
memcpy( &st1[lnum],&u1,4 );
lnum+=4;
memcpy( flap.data,&st1,lnum );
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x1B;
lnum+=6;
packn=sock.Send( ( char * )&flap,lnum,0 );
//memcpy( &flap,NULL,4096 );
packn=sock.Receive( ( char * )&inflap,sizeof( inflap ),0 );
memcpy( &uc,&inflap,packn );
memcpy( &snac,&uc[6],packn-6 );
memcpy( key,&snac.data[2],snac.data[1] );
int ii;
MD5_CTX Md5Ctx;
HASH hash;
MD5Init ( &Md5Ctx );
MD5Update( &Md5Ctx, ( unsigned char* )password, strlen( password ) );
MD5Final ( ( uchar* )hash, &Md5Ctx );
MD5Init ( &Md5Ctx );
MD5Update( &Md5Ctx, ( unsigned char* )key, snac.data[1] );
MD5Update( &Md5Ctx, ( unsigned char* )hash, 16 );
MD5Update( &Md5Ctx, ( unsigned char* )AIM_MD5_STRING, strlen( AIM_MD5_STRING ) );
MD5Final ( ( uchar* )hash, &Md5Ctx );
flap.chan_id=0x02;
flap.Sequence+=0x0100;
flap.datalenght[0]=0x00;
flap.datalenght[1]=0x72;
t1.lenght[0]=0x00; //Not Lenght!!! it is SNAC!!!
t1.lenght[1]=0x02;
memcpy( uc,&t1,10 );
memcpy( &uc[10],&tUin,13 );
TLV auth_h;
auth_h.type=0x2500;
auth_h.lenght[0]=0x00;
auth_h.lenght[1]=0x10;
memcpy( &auth_h.data,&hash,16 );
memcpy( &uc[23],&auth_h,20 );
uc[43]=0x00;
uc[44]=0x4c;
uc[45]=0x00;
uc[46]=0x00;
clid1.type=0x0300;
Много лет назад, будучи молодым программером писал абсолютное гавно. Была поставлена задача реализовать протокол оскар 11 в одной бухгалтерской системе. Полное отсутствие архитектуры приложения, бизнес-слоя. В общем мне тогда сказали что так писать не надо и с треском выгнали. После этого так перестал писать :-)
+87
float Chislo(char *a, int i)
{
int j=i;
int k=0;
int r;
float chis=0;
while (a[j-1]!=' ' && a[j-1]!='>' && a[j-1]!='-' && a[j-1]!='+' && a[j-1]!='(')
{j--;
//тут перегоняем символ a[j] в цифру r
if (int(a[j]==48)) r=0;
else if (int(a[j]==49)) r=1;
else if (int(a[j]==50)) r=2;
else if (int(a[j]==51)) r=3;
else if (int(a[j]==52)) r=4;
else if (int(a[j]==53)) r=5;
else if (int(a[j]==54)) r=6;
else if (int(a[j]==55)) r=7;
else if (int(a[j]==56)) r=8;
else if (int(a[j]==57)) r=9;
else goto lab8;
//ShowMessage(a[j]);
chis=chis + r*pow(10,k);
k++;
};
//j--; //дальше надо обратно до точки и дольше до пробела
while (a[j]!='.')
{if (a[j]==' ' || a[j]==':') goto lab8;
j++;
};
j++;
r=0;
k=-1;
k--;
j++;
};
lab8:
return chis;
}
// была еще и похощая функция возвращающая результат в виде AnsiString
// вот сколько переменных понадобивлось автору в более чем 700-строчной процедуре
void Progon()
{
//
AnsiString TempR1, TempR2, TempR3, Com,Sport,Team1,Team2, Team, URL1, URL2, page,Champ,Date;
AnsiString day, month, year, Res, temp, otdyh1, otdyh2;
int dat;
//TempR1 = NMHTTP1->Body;
float tot,TM,TB,bol1,bol2,srbol,ver,value,proc;
AnsiString totS,f1S,ind1S,ind2S, f1ch1S, t_ch1S, f1ch2S, t_ch2S, f1ch3S, t_ch3S, f1ch4S, t_ch4S;
float fora1,ind1,ind2, f1ch1, t_ch1, f1ch2, t_ch2, f1ch3, t_ch3, f1ch4, t_ch4;
AnsiString Score1, Score2, s1ch1S, s2ch1S, s1ch2S, s2ch2S, s1ch3S, s2ch3S, s1ch4S, s2ch4S;
AnsiString FIO, ScoreS, RebS, AstS, MinS, Amplua, BlkS, StlS;
AnsiString TotalS, RebBookS, AstBookS, StlBookS, BlkBookS;
float Total, RebBook, AstBook, BlkBook, StlBook;
float PtssNRebsBook, PtssNAstsBook, RebsNAstsBook, PtssNRebsNAstsBook, Book3ptTeam1, Book3ptTeam2;
int Score, count;
int str1, str2, ind, indd, ig_pos;
bool win;
// В коде куча такого
while (bukva2[i2]!='/') i2++;
i2++;
while (bukva2[i2]!='/') i2++;
i2++;
while (bukva2[i2]!='/') i2++; // // обошли stl
int *Ptss;
Ptss = new int[count];
int *Rebs;
Rebs = new int[count];
int *Asts;
Asts = new int[count];
int *Blks;
while ( ! ( ((bukva[i]=='H') &&(bukva[i+1]=='o') && (bukva[i+2]=='m') && (bukva[i+3]=='e')) || ((bukva[i]=='R') &&(bukva[i+1]=='o') && (bukva[i+2]=='a') && (bukva[i+3]=='d')))) i--;
while (bukva[i]!='a') i--;
while ((bukva[i-1]!='>') && (bukva[i-1]!=' ')) i--;
// Внутри циклов всюду работа с экселем
else
{Form1->App.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", str1, str2+14).OlePropertyGet("Font").OlePropertySet("Color", -16777216);
Form1->App.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", str1, str2+15).OlePropertyGet("Font").OlePropertySet("Color", -16777216);
};
Как -то по фрилансу заказчик хотел доработать то ли парсер, то ли еще что-то (по предоставленным исходникам я так и не смог понять что это за прога, названная "Автониггер" и написанная каким -то студентом толи специально ради выноса мозгов, то ли по еще каким-то причинам вышеобозначенными выкладками, которые вполне возможно содержат в себе какойто гипнотический смысл).
+97
/// До этой строчки еще больше 1000 строк кода (И это всё в ОДНОЙ процедур)
finally
if Main.RecordCount > 0
then Main.First;
Main.EnableControls;
Panel2.Color:=clLime;
lbTimeSpend.Caption:='Âðåìÿ çàòðà÷åíî:'+TimeToStr(time()-TimeWork);
end;
Exit;
try
if TmpCollect_Skd.IsSelectAll then
begin
Askd_count := TmpCollect_Skd.RxDBGrid1.DataSource.DataSet.RecordCount;
end
/// После этой строки еще более 1000 строк кода всё в этой же процедуре!
Продолжим. Вот так люди используют Exit;
+101
if IntToStr(n) = '2' then begin
/// Еще куча говнокода
end;
Устроился я тут работать в одну компанию... Начинаю серию публикаций... Название компании пока не буду озвучивать - еще уволят нах...
Начнём с чего-нибудь простенького :)
+67
public boolean isActive() {
return !isKilling() && !isKilled() && !isKillPending();
}
Made in Estonia (part 2)
+77
private final List<ItemInfo> _items = Collections.synchronizedList(new Vector<ItemInfo>());
Пример убер-синхронизации (чтоб наверняка).
Используется и по сей день.
Кусок из крупного эмулятора сервера L2 (Потомок сборки L2Rebellion).