- 1
- 2
- 3
- 4
for base in main daily bytecode safebrowsing
do
test ! -e %sys_clamav/$$base.cvd -o %sys_db/$$base.cvd -nt %sys_clamav/$$base.cvd && yes | cp -f %sys_db/$$base.cvd %sys_clamav/$$base.cvd 2>/dev/null
done
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−133
for base in main daily bytecode safebrowsing
do
test ! -e %sys_clamav/$$base.cvd -o %sys_db/$$base.cvd -nt %sys_clamav/$$base.cvd && yes | cp -f %sys_db/$$base.cvd %sys_clamav/$$base.cvd 2>/dev/null
done
post-install скрипт пакета clamav-db (%sys_clamav и %sys_db - макросы, которые раскрывает rpm).
Альтлинукс. Сириус бзнесс.
−120
# Find out what mail program to use !! Terrible kludge !!
$mailprogram = "/usr/bin/mail";
if (! -x "$mailprogram") {
if (-x "/bin/mail") {
$mailprogram = "/bin/mail";
} else {
if (-x "/usr/sbin/sendmail") {
$mailprogram = "/usr/sbin/sendmail";
} else {
if (-x "/usr/lib/sendmail") {
$mailprogram = "/usr/lib/sendmail";
} else {
if (-x "/usr/bin/mutt") {
$mailprogram = "/usr/bin/mutt";
} else {
if (-x "/usr/sbin/exim4") {
$mailprogram = "/usr/sbin/exim4";
} else {
if (-x "/usr/bin/elm") {
$mailprogram = "/usr/bin/elm";
} else {
print "Cannot find a mail program to use\n";
}
}
}
}
}
}
}
В changelog автор честно признался, что не знал, как реализовать иначе.
−858
create function is_numeric (
@a varchar(100)
) returns int as begin
declare @retval int
set @a = replace(@a, '0', '')
set @a = replace(@a, '1', '')
set @a = replace(@a, '2', '')
set @a = replace(@a, '3', '')
set @a = replace(@a, '4', '')
set @a = replace(@a, '5', '')
set @a = replace(@a, '6', '')
set @a = replace(@a, '7', '')
set @a = replace(@a, '8', '')
set @a = replace(@a, '9', '')
set @a = replace(@a, '.', '')
if len(rtrim(ltrim(@a))) > 0 set @retval = 0
else set @retval = 1
return @retval
end
Вот такая хитрая скалярная функция была найдена в недрах сопровождаемой системы. Согласно ей "...42...42..." -- это число, такие дела.
+70
if(url.getProtocol().equals("http") || true)
{
// ...
}
Индийский код добрался и до Android...
+145
return !!$this->db->where('id', $for_id)->update($for, $row);
ояебал, у них наверное где-то склад с веществами
+68
package bytestring;
public class Main {
public static void main(String[] args) {
String source = new String("A ya sdelal etu hren s perevorotom stroki s ispolzovaniem bayta");
byte bytes[] = source.getBytes();
////////////////////////////////////////////////////////////////////////
int i, j;
int length, first, last;
byte a;
length = bytes.length;
//Переворачиваем всю строку
for(i = 0; i < length / 2; i++) {
a = bytes[i];
bytes[i] = bytes[length - i - 1];
bytes[length - i - 1] = a;
}
//Переворачиваем каждое слово строки
first = 0;
for(i = 1; i <= length; i++)
if(i == length || bytes[i] == ' ') {
last = i - 1;
for(j = first; j <= first + (last - first) / 2; j++) {
a = bytes[j];
bytes[j] = bytes[first + last - j];
bytes[first + last - j] = a;
}
first = i + 1;
}
////////////////////////////////////////////////////////////////////////
char destination[] = new char[bytes.length];
for(i = 0; i < bytes.length; i++)
destination[i] = (char) bytes[i];
System.out.println(String.copyValueOf(destination));
}
}
+159
// TODO: use Virtual memory instead of heap!
#ifndef __CHUNK_H__
#define __CHUNK_H__
#include <windows.h>
#include "../JuceLibraryCode/JuceHeader.h"
class Chunk {
public:
enum CHUNK_DIRECTION {CHUNK_UNKNOWN = 0, CHUNK_IN, CHUNK_OUT};
Chunk (DWORD ChunkSize, WORD id, CHUNK_DIRECTION chunkDirection);
~Chunk ();
// override
virtual void eventChunkIsEmpty () {
Logger::outputDebugString(T("empty"));
}
virtual void eventChunkIsFull () {
Logger::outputDebugString(T("full"));
}
virtual void eventChunkOverrun () {
Logger::outputDebugString(T("overrun"));
}
DWORD getData (WORD *data, DWORD size) {
if (data == 0) return 0;
if (cs.tryEnter ()) { // if it's true, we locked.. (TODO: check, i'm not sure about that)
if (((size + nReadCounter) > nWriteCounter) || size == 0) { cs.exit(); return 0; }
memcpy (data, pBuffer + nReadCounter, size*sizeof(WORD));
nReadCounter += size;
if (nReadCounter == nWriteCounter) { eventChunkIsEmpty() ; nWriteCounter = 0; nReadCounter = 0; }
cs.exit ();
return size;
}
return 0;
}
DWORD putData (WORD *data, DWORD size) {
if (data == 0) return 0;
if (cs.tryEnter ()) { // if it's true, we locked.. (TODO: check, i'm not sure about that)
if ((size + nWriteCounter) > nSize) { eventChunkOverrun(); cs.exit (); return 0; }
memcpy (pBuffer + nWriteCounter, data, size*sizeof(WORD));
nWriteCounter += size;
if (nWriteCounter == nSize ) eventChunkIsFull();
cs.exit ();
return size;
}
return 0;
}
inline DWORD getSize () {
return nSize;
}
// TODO: add check for nWriteCounter?
inline bool setSize (DWORD ChunkSize) {
if (bExchangeIsActive) return false;
nSize = ChunkSize;
// TODO: add result check.
pBuffer = (WORD*) realloc ((void*)pBuffer, ChunkSize*sizeof(WORD));
if (pBuffer) return true;
return false;
}
inline DWORD getReadCounter () { return nReadCounter; }
inline DWORD getWriteCounter () { return nWriteCounter; }
juce_UseDebuggingNewOperator
protected:
bool bExchangeIsActive;
CHUNK_DIRECTION cdDirection;
DWORD nSize;
DWORD nWriteCounter;
DWORD nReadCounter;
WORD nChunkId;
WORD *pBuffer;
CriticalSection cs;
};
#endif
// EOF
#include "Chunk.h"
Chunk::Chunk (DWORD ChunkSize, WORD id, CHUNK_DIRECTION chunkDirection) {
bExchangeIsActive = false;
cdDirection = chunkDirection;
nSize = ChunkSize;
nWriteCounter = 0;
nReadCounter = 0;
nChunkId = id;
pBuffer = (WORD*) malloc (ChunkSize*sizeof(WORD));
zeromem (pBuffer, ChunkSize*sizeof(WORD));
}
Chunk::~Chunk () {
if (pBuffer) free (pBuffer);
}
// EOF
Посвящается всем изобретателям велосипедов и просто неудачникам.. :(
+168
function cleanUrl( $url ){
$new_url = str_replace( " ", "-", $url );
$new_url = str_replace( "/", "-", $new_url );
$new_url = str_replace( "--", "-", $new_url );
$new_url = str_split( $new_url );
$new_url = preg_grep( "<[A-Za-z0-9-_]+>", $new_url );
$new_url = trim( implode( $new_url ) );
$new_url = strtolower($new_url);
// Was still getting cases of double hyphens
$new_url = str_replace( "--", "-", $new_url );
return $new_url;
}// end function - cleanUrl
Спасаю "Говнокод.ру" пехапе шедевром.
+165
if (count($arResult[$j]["DATA"])!=1) $btw_max = count($arResult[$j]); else $btw_max = 0;
if ($btw_max ==2) $btw_max =1;
for ($k=0;$k<$btw_max;$k++){...}
Суть проблемы, есть массив $arResult[$j]["DATA"], последний элемент которого лишний, его выводить не надо, для этого чувак сделал следующее
Вместо того, чтобы это значения не добавлять в массив при его заполнении, либо исключив последний элемент при выводе. В общем труЪ говнокод :D
+112
sSQLTitle := 'SELECT CASE WHEN (VTSS.WRKORDNO IS NOT NULL)'
+' THEN VTSS.WRKORDNO ELSE VTW.WRKORDNO END AS '''+RSNumDok+''','
+' CASE WHEN (VTSS.GRECNO IS NOT NULL) THEN VTSS.GRECNO ELSE VTW.GRECNO END AS '''+RSSchet+''','
+' CASE WHEN (VTSS.STYPE IS NOT NULL) THEN VTSS.STYPE ELSE VTW.STYPE END AS '''+RSDocType+''','
+' CASE WHEN (VTSS.ServD IS NOT NULL) THEN VTSS.ServD ELSE VTW.ServD END AS '''+RSOpen+''','
+' CASE WHEN (VTSS.BILLD IS NOT NULL) THEN VTSS.BILLD ELSE VTW.BILLD END AS '''+RSClose+''','
+' CASE WHEN (VTSS.FULLNAME IS NOT NULL) THEN VTSS.FULLNAME ELSE VTW.FULLNAME END AS '''+RSClient+''','
+' CASE WHEN (VTSS.PAYNAME IS NOT NULL) THEN VTSS.PAYNAME ELSE VTW.PAYNAME END AS '''+RSPlatelwik+''','
+' CASE WHEN (VTSS.VIN IS NOT NULL) THEN VTSS.VIN ELSE VTW.VIN END AS '''+RSVIN+''','
+' CASE WHEN (VTSS.GNUMER IS NOT NULL) THEN VTSS.GNUMER ELSE VTW.GNUMER END AS '''+RSGosNomer+''','
+' CASE WHEN (VTSS.HSMANID IS NOT NULL) THEN VTSS.HSMANID ELSE VTW.HSMANID END AS '''+RSOtvetstv+''','
+' CASE WHEN (VTSS.LBACK IS NOT NULL) THEN VTSS.LBACK ELSE VTW.LBACK END AS '''+RSReturn+''','
+' VTSS.FULLSUMMA AS '''+RSSumItems+''','
+' VTW.SUMMA AS '''+RSSumWork+'''';
with DataMdl.adsADODataSet do
begin
Active := false;
if rbAllDate.Checked then
{$REGION 'Поиск по всем датам'}
case rgZakazType.ItemIndex of
0: //поиск по открытым заказ-заявкам
CommandText:=sSQLTitle
+' FROM'
+' (SELECT VTS.WRKORDNO,'
(...)
+' SUM(SUMMA) AS FULLSUMMA'
+' FROM'
+' (SELECT GS.WRKORDNO,'
+' GB.GRECNO,'
+ sSQLCase
+' CONVERT(varchar(10), GS.ServD, 104) AS ServD,'
+' CONVERT(varchar(10), GB.BILLD,104) AS BILLD,'
+' CASE'
+' WHEN C.FNAME IS NULL THEN C.LNAME'
+' WHEN C.LNAME IS NULL THEN C.FNAME'
+' ELSE C.FNAME+'' ''+C.LNAME'
+' END AS FULLNAME,'
// +' C.LNAME + '' '' + C.FNAME AS FULLNAME,'
+' CS.PNAME AS PAYNAME,'
+' V.SERIALNO AS VIN,'
+' V.LicNo AS GNUMER,'
+' GB.HSMANID,'
+' CASE WHEN (GS.CREDIT IS NULL)OR (GS.CREDIT <> 1) THEN NULL ELSE '''+RSReturn+''' END AS LBACK,'
+' GW.NAME,'
+' SUM(GW.ORDNUM) AS '''+RSQuantity+''','
+' SUM(GW.ORDNUM)*GW.UNITPR AS SUMMA'
+' FROM GSAL'+sPostfix+' GS LEFT OUTER JOIN'
+' GROW'+sPostfix+' GW ON (GS.GSALID = GW.GSALID) LEFT OUTER JOIN'
+' GBIL'+sPostfix+' GB ON (GS.GSALID = GB.GSALID) LEFT OUTER JOIN'
+' VEHI V ON (GS.VEHIID = V.VEHIID) LEFT OUTER JOIN'
+' CUST C ON (GS.CUSTNO = C.CUSTNO) RIGHT OUTER JOIN'
+' (SELECT CustNo, Lname + '' '' + FNAME AS PNAME'
+' FROM CUST WITH (NOLOCK))'
+' CS ON (GB.CUSTNO = CS.CUSTNO)'
+' WHERE (GS.STATUS = ''A'') AND (GW.RTYPE IN (1,2))' +sSQLWhere
+' GROUP BY GW.ITEM, GW.NAME, GW.UNITPR,'
+' GS.WRKORDNO, GB.Grecno, GS.ServD, GB.BILLD, C.LNAME, C.FNAME,'
+' CS.PNAME, V.SERIALNO, V.LicNo, GB.HSMANID, GS.CREDIT, GW.RECMTIME, GS.STYPE)'
+' VTS'
+' CASE WHEN (GS.CREDIT IS NULL)OR (GS.CREDIT <> 1) THEN NULL ELSE '''+RSReturn+''' END AS LBACK,'
+' GW.NAME,'
+' SUM(GW.ORDNUM) AS '''+RSQuantity+''','
+' SUM(GW.ORDNUM)*GW.UNITPR AS SUMMA'
+' FROM GSAL'+sPostfix+' GS LEFT OUTER JOIN'
+' GROW'+sPostfix+' GW ON (GS.GSALID = GW.GSALID) LEFT OUTER JOIN'
+' GBIL'+sPostfix+' GB ON (GS.GSALID = GB.GSALID) LEFT OUTER JOIN'
+' VEHI V ON (GS.VEHIID = V.VEHIID) LEFT OUTER JOIN'
+' CUST C ON (GS.CUSTNO = C.CUSTNO) RIGHT OUTER JOIN'
+' (SELECT CustNo, Lname + '' '' + FNAME AS PNAME'
...
... и так далее. НАПИСАНО ВРУЧНУЮ! Всего 420 строк, 4 подзапроса, связанных через full outer join. 16 тысяч записей 4-x ядерный mssql server обрабатывал таким образом минуты две. Я уж промолчу, как он по строкам в Delphi разбит...
Два дня врубался, как оно работает, переписал за два часа. 58 строк, включая каждое поле из select с новой строки :)