- 1
Номенклатура
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−160
Номенклатура
Слово гадкое, не то что программа.
+159
// ==UserScript==
// @name govnokod.ru new comments mark
// @namespace ('__'X)
// @description govnokod.ru new comments mark for Ctrl+F
// @include http://*.govnokod.ru/*
// @include http://govnokod.ru/*
// ==/UserScript==
function addNewMark()
{
var i, d = document.getElementsByTagName('div');
for (i in d) if (d[i].className == 'entry-comment-wrapper new')
{
d[i].getElementsByTagName('p')[0].getElementsByTagName('a')[1].innerHTML += 'new';
}
}
if (location.hostname.match(/govnokod\.ru$/))
{
if (document.addEventListener)
{
document.addEventListener('DOMContentLoaded', addNewMark(), false);
} else {
window.addEventListener('load', addNewMark(), false);
}
}
//* OR
//* 1) Copypaste into browser @field: javascript:var i,d=document.getElementsByTagName('div');for(i in d)if(d[i].className=='entry-comment-wrapper new')d[i].getElementsByTagName('p')[0].getElementsByTagName('a')[1].innerHTML+='new';void(0);
//* 2) Ctrl+F for '#new'
Накидал только что. Помечает новые посты меткой "#new", можно контролэфить.
Работает только для страниц отдельных ГК, в том числе из мусорки.
Треды до полсотни комментов можно и так оглядеть, если больше - открываю отдельно.
Но всё равно стоит добавить фичу на стороне сервера.
+102
const n = 50;
type vec = array [1..n*4] of system.word;
function vprod(const a, b: vec): Cardinal;
var i: longInt;
begin
result := 0;
for i := 1 to high(vec) do inc(result, a[i] * b[i]);
end;
function vprod_asm1(const a, b: vec): Cardinal; assembler;
asm
push ebx
push ecx
push edx
push esi
push edi
xor ebx, ebx
mov ecx, n*4
mov esi, a
mov edi, b
xor eax, eax
cld
@@l:
mov ax, word ptr [esi]
lea esi, [esi+2]
mul word ptr [edi]
lea edi, [edi+2]
shl edx, 16
mov dx, ax
add ebx, edx
dec ecx
jne @@l
mov eax, ebx
pop edi
pop esi
pop edx
pop ecx
pop ebx
end;
function vprod_asm2(const a, b: vec): Cardinal; assembler;
asm
push ebx
push ecx
push edx
push esi
push edi
xor ebx, ebx
mov ecx, n*4
mov esi, a
mov edi, b
xor eax, eax
cld
@@l:
lodsw
movzx edx, WORD PTR [edi]
imul edx
lea edi, [edi+2]
add ebx, eax
loop @@l
mov eax, ebx
pop edi
pop esi
pop edx
pop ecx
pop ebx
end;
function vprod_mmx (const a, b: vec): Cardinal; assembler;
var muls: record l, h: Cardinal end;
asm
push ebx
push ecx
push esi
push edi
mov ecx, n
mov esi, a
mov edi, b
xor eax, eax
lea ebx, muls
@@l:
db $0F,$6F,$06 // movq mm0, [esi]
db $0F,$F5,$07 // pmaddwd mm0, [edi]
lea esi, [esi+8]
db $0F,$7F,$03 // movq [ebx], mm0
lea edi, [edi+8]
add eax, [ebx]
add eax, [ebx+4]
loop @@l
db $0F,$77 // emms
pop edi
pop esi
pop ecx
pop ebx
end;
По просьбам трудящихся публикую модифицированную версию примера MMXTEST.PAS из комплекта компилятора TMT Pascal. Программа находит скалярное произведение двух векторов. Далее должен быть основной блок с фрагментами типа for i := 1 to 100000 do vprod(a, b); , которые я не стал публиковать ввиду ограничений. Функция vprod_asm1 — почти оригинальный код TMT, функция vprod_asm2 — мой оптимизированный вариант. Результаты запуска на двух машинах (таймер получал по RDTSC):
AMD K6-2-333 МГц, FSB 66 МГц.
Delphi7:
Pascal = 0.550 sec.
Asm x86 (original) = 1.034 sec.
Asm x86 (optimized) = 0.490 sec.
Asm MMX = 0.130 sec.
С директивой $O- первый результат 0.853 sec.
Замена loop на dec ecx + jne увеличивает результаты на 0,015 c.
FPC:
Pascal = 1.387 sec.
Asm x86 (original) = 1.199 sec.
Asm x86 (optimized) = 0.510 sec.
Asm MMX = 0.124 sec.
TMT:
Pascal = 0.914 sec.
Asm x86 (original) = 1.037 sec.
Asm x86 (optimized) = 0.494 sec.
Asm MMX = 0.126 sec.
VP:
Pascal = 0.520 sec.
Asm x86 (original) = 1.033 sec.
Asm x86 (optimized) = 0.493 sec.
Asm MMX = 0.146 sec.
С директивами $Q+,R+ первый результат 1.032 sec.
С директивой $Speed- первый результат 0.731 sec.
------------------------------
Celeron 1,86 ГГц, FSB 533 МГц.
Delphi7:
Pascal = 0.025 sec.
Asm x86 (original) = 0.091 sec.
Asm x86 (optimized) = 0.082 sec.
Asm MMX = 0.044 sec.
TMT:
Pascal = 0.109 sec.
Asm x86 (original) = 0.087 sec.
Asm x86 (optimized) = 0.079 sec.
Asm MMX = 0.042 sec.
+169
<!--CAPCHA-->
<?php
$input = array ("0283", "0830", "1541", "3510", "7269", "0110", "2500", "4998", "7203", "9480",
"1540", "1581", "1891", "0064", "0128", "0256", "0512", "1024", "2048", "4096");
$rand_keys = array_rand($input);
$img = $input[$rand_keys];
$_SESSION['img'] = $img;
print ("<img src=\"/images/$img.gif\">");
?>
<!--CAPCHA answer-->
уже было подобное, но я не удержался.... )))
+161
$period = in_array($bullRegionId,array_keys($periods)) ? $periods[$bullRegionId]['text'] : $periods['default']['text'];
Интересна сама проверка на существование ключа, не правда ли? :-)
Код мой. Коллега учуял, что от него несколько плохо пахнет и предложил запостить сюда))
+135
+164
if($_SESSION['use_test_xml'] && false) {
if(!responseTestXml('chekin_'.$_GET['userid'].'_'.( ($_GET['placeid']) ? $_GET['placeid'] : $_GET['eventid'] ).'.xml')) {
responseTestXml('err.xml',array('message'=>'Unxpected situation. Please use these users: 12345,54321 and places|events: 1-9.'));
}
} else {
...
плеать...
+175
if (last=="ня") {new_name=name[0].substring(0, name[0].length-2) + 'ни';}
if (last=="др") {new_name=name[0].substring(0, name[0].length-2) + 'дра';}
if (last=="та") {new_name=name[0].substring(0, name[0].length-2) + 'ты';}
if (last=="лл") {new_name=name[0].substring(0, name[0].length-2) + 'лла';}
if (last=="ия") {new_name=name[0].substring(0, name[0].length-2) + 'ии';}
if (last=="ан") {new_name=name[0].substring(0, name[0].length-2) + 'ана';}
if (last=="ся") {new_name=name[0].substring(0, name[0].length-2) + 'си';}
if (last=="ий") {new_name=name[0].substring(0, name[0].length-2) + 'ия';}
if (last=="ма") {new_name=name[0].substring(0, name[0].length-2) + 'мы';}
if (last=="ас") {new_name=name[0].substring(0, name[0].length-2) + 'аса';}
if (last=="ья") {new_name=name[0].substring(0, name[0].length-2) + 'ьи';}
if (last=="ря") {new_name=name[0].substring(0, name[0].length-2) + 'ри';}
if (last=="ка") {new_name=name[0].substring(0, name[0].length-2) + 'ки';}
if (last=="ра") {new_name=name[0].substring(0, name[0].length-2) + 'ры';}
if (last=="на") {new_name=name[0].substring(0, name[0].length-2) + 'ны';}
if (last=="ша") {new_name=name[0].substring(0, name[0].length-2) + 'ши';}
if (last=="тя") {new_name=name[0].substring(0, name[0].length-2) + 'ти';}
if (last=="ис") {new_name=name[0].substring(0, name[0].length-2) + 'иса';}
if (last=="сю") {new_name=name[0].substring(0, name[0].length-2) + 'сю';}
if (last=="га") {new_name=name[0].substring(0, name[0].length-2) + 'ги';}
if (last=="ля") {new_name=name[0].substring(0, name[0].length-2) + 'ли';}
if (last=="ек") {new_name=name[0].substring(0, name[0].length-2) + 'ька';}
if (last=="ёк") {new_name=name[0].substring(0, name[0].length-2) + 'ька';}
if (last=="ян") {new_name=name[0].substring(0, name[0].length-2) + 'яна';}
if (last=="ай") {new_name=name[0].substring(0, name[0].length-2) + 'ая';}
if (last=="ав") {new_name=name[0].substring(0, name[0].length-2) + 'ава';}
if (last=="жа") {new_name=name[0].substring(0, name[0].length-2) + 'жи';}
if (last=="ей") {new_name=name[0].substring(0, name[0].length-2) + 'ея';}
if (last=="ор") {new_name=name[0].substring(0, name[0].length-2) + 'ора';}
if (last=="ей") {new_name=name[0].substring(0, name[0].length-2) + 'ея';}
if (last=="ак") {new_name=name[0].substring(0, name[0].length-2) + 'ака';}
if (last=="ох") {new_name=name[0].substring(0, name[0].length-2) + 'оха';}
if (last=="ег") {new_name=name[0].substring(0, name[0].length-2) + 'ега';}
if (last=="на") {new_name=name[0].substring(0, name[0].length-2) + 'ны';}
if (last=="ик") {new_name=name[0].substring(0, name[0].length-2) + 'ика';}
if (last=="ес") {new_name=name[0].substring(0, name[0].length-2) + 'еса';}
if (last=="юн") {new_name=name[0].substring(0, name[0].length-2) + 'юна';}
склонения фамилий и имён Оо
+164
<a href="?page=news" <?php if (isset($_GET['page'])) if ($_GET['page']=='news') echo 'class="active"' ?> >Новости</a>
<a href="?page=photo" <?php if (isset($_GET['page'])) if ($_GET['page']=='photo') echo 'class="active"' ?> >Фото</a>
<a href="/" <?php if (isset($_GET['page'])); else echo ' class="active"'?> >Главная</a>
Подсветка той ссылки, на которой сейчас находишься (присвоение класса active).
Проверка if (isset($_GET['page'])) сделана для того, чтобы PHP не ругался на то, что page не передан (такое происходит при переходе на главную).
+176
function isValid()
{
if ($('#emailinput').val() == 'ваш@электронный.адрес')
{
box('Это не ваш электронный адрес!');
return false;
}
http://apokalipsis-2012.ru/