-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+154
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
class Allocator
{
public:
virtual void *Alloc (size_t) = 0;
virtual void Dealloc (void *) = 0;
struct Allocation
{
Allocator *m_pAllocator[1];
static void Dealloc (void *ptr)
{
if (ptr)
((Allocator **)ptr)[-1]->Dealloc (((Allocator **)ptr)-1);
}
};
};
class UsesAllocator
{
public:
void *operator new (size_t aSize,Allocator &aAllocator)
{
Allocator::Allocation *pResult =
(Allocator::Allocation *)
aAllocator.Alloc (aSize+sizeof (Allocator::Allocation));
if (!pResult) throw std::bad_alloc ();
pResult->m_pAllocator[0] = &aAllocator;
return pResult->m_pAllocator+1;
}
void *operator new [] (size_t aSize,Allocator &aAllocator)
{
Allocator::Allocation *pResult =
(Allocator::Allocation *)
aAllocator.Alloc (aSize+sizeof (Allocator::Allocation));
if (!pResult) throw std::bad_alloc ();
pResult->m_pAllocator[0] = &aAllocator;
return pResult->m_pAllocator+1;
}
void operator delete (void *ptr,Allocator &)
{ Allocator::Allocation::Dealloc (ptr); }
void operator delete (void *ptr)
{ Allocator::Allocation::Dealloc (ptr); }
void operator delete [] (void *ptr,Allocator &)
{ Allocator::Allocation::Dealloc (ptr); }
void operator delete [] (void *ptr)
{ Allocator::Allocation::Dealloc (ptr); }
};
...
class MyClass: /*virtual*/ public UsesAllocator
{
public:
...
};
...
MyClass *PROFIT = new (allocatorOfOurInterest) MyClass (...);
http://www.gamedev.ru/flame/forum/?id=153274
>Посоны! Оказывается, оператор new можно перегружать!
ohlol,
08 Октября 2011
-
+156
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
(function () {
var backgroundPosition = getComputedStyle(document.querySelector('a.comment-vote-on')).backgroundPosition;
Array.prototype.forEach.call(
document.querySelectorAll('span.comment-vote-on'),
function (element) {
element.style.backgroundPosition = backgroundPosition;
}
);
})()
По просьбам телезрителей публикуется букмарклет невинности,
который избавляет от необходимости фотошопить скриншот для иллюстрации заявлений типа "Это не я мину совал!".
Я ленив, поэтому говнокод тоже присутствует.
bugmenot,
14 Июля 2011
-
+168
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
function WikiExtractArticleUrl($str) { // Декодирование кирилицы из урла
ErrorsOff(); // отключаем вывод ошибок нашего обработчика, дабы iconv не сорил
try { // пытаемся с помощью iconv перекодировать кирилицу из утф8 в сп1251, подсунув декодированную кирилицу (из %12%%2D и т.д.)
$text = iconv('UTF-8', 'CP1251', rawurldecode($str));
throw new Exception(''); // создаем новое исключение, дабы похапэ отстал от нас
} catch(Exception $e) { // ловим ошибку iconv, типа перекодировать не надо
$text = urldecode($str); // тупо декодируем
}
ErrorsOn(); // выключаем ошибки и возвращаем результ
return $text;
}
Функция для получения крилицы из ЧПУ урла (сайт в кодировке win1251).
Мартин,
09 Июля 2011
-
+154
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
include "./include/db.conf.php";
$con = mysql_connect($DB["host"],$DB["user"],$DB["pass"]) or die ("could not connect:".mysql_error());
mysql_set_charset('utf8');
mysql_select_db($DB["dbName"]) or die ("could not connect:".mysql_error());
$hash = $_GET['hash'];
$login = $_GET['login'];
echo "SELECT id FROM reg WHERE log = '".$login."' AND hash = '".$hash."'";
$query = mysql_query("SELECT id FROM reg WHERE log = '".$login."' AND hash = '".$hash."'") or die ("MYSQL error".mysql_error());
if ($query) {
while($row = mysql_fetch_array($query)) {
echo row['id'];}
$query = mysql_query("UPDATE reg SET commit=1 WHERE id=".row['id'])
or die ("MYSQL error".mysql_error());}
Знакомая поделилась шедевром. Так, конечно, можно... но в общем комментарии излишни.
Да, форматирование оригинала сохранено.
0rt,
16 Июня 2011
-
+173
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
if( ( (!empty($HTTP_COOKIE_VARS["lang"])) and ($_POST["lang"] != "") )
or ( (empty($HTTP_COOKIE_VARS["lang"])) and ($_POST["lang"] != "") ) )
{
setcookie ("lang","",time()+(60*60*24*30),"","");
setcookie ("lang",$_POST["lang"],time()+(60*60*24*30),"","");
$lang = $_POST[lang];
}
if ( (empty($HTTP_COOKIE_VARS["lang"])) and (!isset($_POST["lang"])) )
$lang = $def_language;
if ( (!empty($HTTP_COOKIE_VARS["lang"])) and (!isset($_POST["lang"])) )
$lang = $HTTP_COOKIE_VARS["lang"];
Самый ужасный скрипт который встречал когда либо, joker board. и автор просит за него приличную сумму денег! Там код хоть целиком сюда вставляй...
zigzagkms,
26 Мая 2011
-
−116
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
#!/usr/bin/perl -w
@arr=<>;
@arr=reverse(@arr);
$ac=$#arr+1;
print "array size $ac\n";
@arr = sort { $a <=> $b } @arr;
while($ac>2){
$ac=$#arr+1;
print "size $ac";
print "reverse \n@arr\n\n";
if(!exists($arr[$ac])){
$eln=$ac-1;
print "\nDelete element $arr[$eln] $eln und $arr[$ac] $ac\n";
splice @arr, $ac-2,2;
};
};
Скрипт на perl
AliceGoth,
26 Апреля 2011
-
+92
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
I:=1;
while I<=High(Sockets) do
begin
if FD_IsSet(Sockets[I],FDSet) then
if Recv(Sockets[I],…)<=0 then
begin
// Связь разорвана, надо закрыть сокет
// и удалить его из массива
CloseSocket(Sockets[I]);
for J:=I to High(Sockets)-1 do
Sockets[J]:=Sockets[J+1];
Dec(I);
SetLength(Sockets,Length(Sockets)-1)
end
else
begin
// Получены данные от клиента, надо ответить
Send(Sockets[I],…)
end;
Inc(I)
end;
На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.
TarasB,
09 Февраля 2011
-
+170
- 1
- 2
$fh = fopen($filename, r);
while(($str = fread($fh, 1024)) != null) $fsize += strlen($str);
Вот так теперь в PHP принято определять размер файла.
Sandro,
30 Ноября 2010
-
+165
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
<div style="font-size:30px; text-align: center;padding-top: 50px;">Число установок принципиально новой OS<br><b><span id="installCount">10324435</span></b></div>
<script type="text/javascript">
var memCount = 10584471;
var memPerSec = 1.38176367782;
function updateCount() {
next = -(1000 / memPerSec)*Math.log(Math.random());
memCountString = '' + memCount;
len = memCountString.length;
memCountString = memCountString.substr(0,len-6)+'<span style="font-size:30px"> </span>'+memCountString.substr(len-6,3)+'<span style="font-size:30px"> </span>'+memCountString.substr(len-3,3);
document.getElementById('installCount').innerHTML = memCountString;
memCount = memCount + 1;
setTimeout(updateCount, next);
}
updateCount();
</script>
Помните на сайте знаменитой , принципиально новой http://bolgenos.ru/ есть табло сколько человек скачало ?
Выше скрипт ЩИТалки :)
Мало того что обман , так ещё и кривой
TIMHOK,
05 Июня 2010
-
+144
- 1
- 2
- 3
- 4
- 5
- 6
void main(void)
{
int s, e, x, y, n, i, g, e, r, s;
// действия с вышеобъявленными переменными
return;
}
Max ID,
21 Мая 2010