- 1
Пособие по тому, как не надо писать системы: http://file.qip.ru/file/fsBgpGob/index.html
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+152
Пособие по тому, как не надо писать системы: http://file.qip.ru/file/fsBgpGob/index.html
P.S.: за это заплатили товарищам 200 т.р.
+150
// Блок кэширования
// Директива CASH_STATUS определяет количество секунд хранения кэша
// 0 - кэширование отключено,
$_CONFIG["CASH_STATUS"]=0;
Из конфигурационного файла самописной CMS системы
+151
<?
if (!file_exists("count.txt")) {
$fp = fopen("count.txt","w");
fwrite($fp,0);
fclose($fp);
}
$fp = fopen("count.txt","r");
$count = fread($fp,10);
fclose($fp);
$visitor = $_COOKIE['visitor'];
if (!isset($visitor)) {
setcookie("visitor", "yes");
$count++;
$fp = fopen("count.txt","w");
fwrite($fp,$count);
fclose($fp);
}
$string = strlen($count);
for ($search=0;$search<$string;$search++) {
$digit = substr($count,$search,1);
$count_graphic .= "<img src=\"img/$digit.gif\">";
}
?>
+159
void CXMLParser::Parse(std::map< std::pair<int, int>, int >& link)
{
_di_IXMLNode areaNode = MessageNode->ChildNodes->FindNode( WideString("area") );
if( areaNode )
{
Area.reset( new CAreaPart( areaNode ) );
IXMLNodeList* pointList = areaNode->ChildNodes;
if( pointList )
{
for(int pointIndex=0; pointIndex<pointList->GetCount(); pointIndex++)
{
_di_IXMLNode pointNode = pointList->Get( pointIndex );
int typePoint = -1;
if( pointNode->GetNodeName() == WideString("measuringpoint") )
typePoint = MEASURING;
if( pointNode->GetNodeName() == WideString("accountpoint") )
typePoint = ACCOUNT;
if( pointNode->GetNodeName() == WideString("deliverypoint") )
typePoint = DELIVERY;
switch( typePoint )
{
case MEASURING:
case ACCOUNT:
case DELIVERY:
{
const int pointCode = pointNode->GetAttribute( WideString("code") );
const String pointName = pointNode->GetAttribute( WideString("name") );
IXMLNodeList* channelList = pointNode->ChildNodes;
if( channelList )
{
for(int channelIndex=0; channelIndex<channelList->GetCount(); channelIndex++)
{
_di_IXMLNode channelNode = channelList->Get( channelIndex );
if( channelNode->GetNodeName() == WideString("measuringchannel") )
{
const int channelCode = channelNode->GetAttribute( WideString("code") );
const String channelDesc = channelNode->GetAttribute( WideString("desc") );
IXMLNodeList* periodList = channelNode->ChildNodes;
if( periodList )
{
for(int periodIndex=0; periodIndex<periodList->GetCount(); periodIndex++)
{
_di_IXMLNode periodNode = periodList->Get( periodIndex );
if( periodNode )
{
String str = periodNode->GetAttribute( WideString("start") );
periodNode->GetAttribute( WideString("end") );
TDateTime time;
time = TDateTime( StrToInt( str.SubString( 1, 2 ) ), StrToInt( str.SubString( 3, 2 ) ), 0, 0 );
periodNode->GetAttribute( WideString("summer") );
time = IncMinute( time, 30 );
_di_IXMLNode valueNode = periodNode->ChildNodes->FindNode( WideString("value") );
if( valueNode )
{
const int status = valueNode->GetAttribute( WideString("status") );
const int value = StrToInt( valueNode->Text );
if( RTDBWrite )
{
map< pair<int, int>, int >::iterator i = link.find( make_pair( pointCode, channelCode ) );
if( i!=link.end() )
{
(*RTDBWrite)( Date->DateInterval.first + time, (*i).second, value, status );
}
}
}
}
}
}
}
}
}
}
}
}
}
}
RTDBWrite->Flush();
}
Древний legacy-код на БорландЦэпэпэБыдлере, обнаруживаемый на текущей работе (почти госпредприятие), выглядит в основной своей массе примерно так. Новый код на C# чуть получше, но в целом тоже жуткое мракобесие.
Сил больше нет работать с подобным, увольняюсь и ищу норм работу.
+162
$orders = $DB->Query("INSERT INTO `zcrm_orders` SET
`ORDER_NUMBER` = '09/".str_pad($arEventFields['ORDER_ID'], 6, '0', STR_PAD_LEFT)."',
`DATETIME` = '".$dateOrder."',
`FIO` = '".$arEventFields['ORDER_PROP_7']."',
`NAME_ORGANIZATION` = '".$arEventFields['ORDER_PROP_1']."',
`TELEFON` = '".$arEventFields['ORDER_PROP_4']."',
`TELEFON_MOD` = '".preg_replace('/[^\d]+/','', $arEventFields['ORDER_PROP_4'])."',
`EMAIL` = '".$arEventFields['ORDER_PROP_6']."',
`OPLATA` = '8',
`DOSTAVKA` = '".$_POST["id_dostavka"]."',
`CITY` ='".$arEventFields['NASPUNKT_DOSTAVKA']."',
`PUNKT_DOSTAVKA` = '".$arEventFields['ADRESS_DOSTAVKA']." ".$arEventFields['SKLAD_DOSTAVKA']."',
`DATE_DOSTAVKA` = '".$arEventFields['DATE_DOSTAVKA']."',
`TIME_DOSTAVKA` = '".$arEventFields['TIME_DOSTAVKA']."',
`PRICE_DOSTAVKA` = '".$arEventFields['PRICE_DELIVERY2']."',
`COMMENTS` = '".$arOrder['USER_DESCRIPTION']."' ");
Внимательно смотрим на 10 строчку.
+999
#include <iostream>
#include <algorithm>
#include <stdlib.h>
const size_t MB = 1024*1024;
size_t MOD = 0;
unsigned char uniqueNumber () {
static unsigned char number = 0;
return ++number % MOD;
}
int main(int argc, char** argv) {
if (argc < 3) {
return 1;
}
size_t BLOCK_SIZE = atoi(argv[1]) * MB;
MOD = atoi(argv[2]);
unsigned char* garbage = (unsigned char *) malloc(BLOCK_SIZE);
std::generate_n(garbage, BLOCK_SIZE, uniqueNumber);
std::sort(garbage, garbage + BLOCK_SIZE);
free(garbage);
return 0;
}
http://habrahabr.ru/blogs/cpp/138132/
It makes me cry. Понятно, что это всего лишь демонстрационный пример. Но все таки это не оправдание. Итак, начнем по порядку с самого худшего:
1. Сишные malloc/free вперемешку с STL-алгоритмами. WTF? Зачем?
2. Глобальная переменная? Автор не осилил хотя бы bind? Который, к тому же, уже давно std::bind.
3. Uppercase для локальной переменной.
4. Отступ в джва пробела.
+997
void TexQ::Move()
{
mx = quad.v[0].x;
my = quad.v[0].y;
if(hge->Input_GetKeyState(HGEK_RBUTTON) || hge->Input_KeyDown(HGEK_LBUTTON))
{
hge->Input_GetMousePos(&nx, &ny);
move = true;
sx = GetPositionX();
sy = GetPositionY();
subx = nx - sx;
suby = ny - sy;
if ( abs(subx) > abs(suby) )
{
iter = abs(subx);
ms = subx;
subx = (subx < 0) ? -1.0f : 1.0f;
suby = (suby < 0 ) ? suby/abs(ms) : abs(suby/ms);
}
else
{
iter = abs(suby);
ms = suby;
suby = (suby < 0) ? -1.0f : 1.0f;
subx = (subx < 0 ) ? subx/abs(ms) : abs(subx/ms);
}
}
if (move)
{
if (iter >= shift)
{
iter-=shift;
this->SetPosition(
GetPositionX() + subx * shift,
GetPositionY() + suby * shift);
}
else
{
this->SetPosition(nx , ny);
move = false;
}
}
}
Хреновый из меня математик. Этот метод втыкается в функцию фрейминга. И текстура едет по прямой туда, куда мышью тыкнешь.
Позже узнал, как можно тригонометрией в 5 строк написать такую же )
+153
dData->RowCount++;
for (int i = 0; i < dData->RowCount - 1; i++)
for (int j = 0; j < dData->ColumnCount; j++)
dData->Rows[i]->Cells[j]->Value = dData->Rows[i + 1]->Cells[j]->Value;
Мучил седня DataGridView, при dData->RowCount++ создавалась новая строчка в таблице, но только сверху. Остальное съезжало вниз на 1 ячейку. Я боролся полчаса с этим, пока не объяснил проблему товарищу. он предложил свой вариант всего кода:
dData->Rows->Add();
:DDDD
+152
if ($current['username'] == 'admin')
{
$admin = true;
}
+130
li.sexy-diigo, li.sexy-diigo:hover, li.sexy-digg, li.sexy-digg:hover, li.sexy-reddit, li.sexy-reddit:hover, li.sexy-stumbleupon, li.sexy-stumbleupon:hover, li.sexy-delicious, li.sexy-delicious:hover, li.sexy-yahoobuzz, li.sexy-yahoobuzz:hover, li.sexy-blinklist, li.sexy-blinklist:hover, li.sexy-technorati, li.sexy-technorati:hover, li.sexy-facebook, li.sexy-facebook:hover, li.sexy-twitter, li.sexy-twitter:hover, li.sexy-myspace, li.sexy-myspace:hover, li.sexy-mixx, li.sexy-mixx:hover, li.sexy-scriptstyle, li.sexy-scriptstyle:hover, li.sexy-designfloat, li.sexy-designfloat:hover, li.sexy-mail, li.sexy-mail:hover, li.sexy-comfeed, li.sexy-comfeed:hover, li.sexy-newsvine, li.sexy-newsvine:hover, li.sexy-devmarks, li.sexy-devmarks:hover, li.sexy-linkedin, li.sexy-linkedin:hover, li.sexy-google, li.sexy-google:hover, li.sexy-misterwong, li.sexy-misterwong:hover, li.sexy-izeby, li.sexy-izeby:hover, li.sexy-twittley, li.sexy-twittley:hover, li.sexy-tipd, li.sexy-tipd:hover, li.sexy-pfbuzz, li.sexy-pfbuzz:hover, li.sexy-friendfeed, li.sexy-friendfeed:hover, li.sexy-blogmarks, li.sexy-blogmarks:hover, li.sexy-fwisp, li.sexy-fwisp:hover, li.sexy-designmoo, li.sexy-designmoo:hover, li.sexy-bobrdobr, li.sexy-bobrdobr:hover, li.sexy-yandex, li.sexy-yandex:hover, li.sexy-memoryru, li.sexy-memoryru:hover, li.sexy-100zakladok, li.sexy-100zakladok:hover, li.sexy-moemesto, li.sexy-moemesto:hover, li.sexy-ning, li.sexy-ning:hover, li.sexy-hackernews, li.sexy-hackernews:hover, li.sexy-identica, li.sexy-identica:hover, li.sexy-printfriendly, li.sexy-printfriendly:hover, li.sexy-designbump, li.sexy-designbump:hover, li.sexy-fleck, li.sexy-fleck:hover, li.sexy-netvibes, li.sexy-netvibes:hover, li.sexy-netvouz, li.sexy-netvouz:hover, li.sexy-nujij, li.sexy-nujij:hover, li.sexy-globalgrind, li.sexy-globalgrind:hover, li.sexy-wikio, li.sexy-wikio:hover, li.sexy-xerpi, li.sexy-xerpi:hover, li.sexy-sphinn, li.sexy-sphinn:hover, li.sexy-blogospherenews, li.sexy-blogospherenews:hover, li.sexy-posterous, li.sexy-posterous:hover, li.sexy-techmeme, li.sexy-techmeme:hover, li.sexy-ekudos, li.sexy-ekudos:hover, li.sexy-pingfm, li.sexy-pingfm:hover, li.sexy-tomuse, li.sexy-tomuse:hover {
background:url('sexy-sprite.png') no-repeat !important;
}
Красивая реализация знатных социальных кнопок... Хотя можно и
ul.socials li {
background:url('sexy-sprite.png') no-repeat;
}