1. Лучший говнокод

    В номинации:
    За время:
  2. 1C / Говнокод #7998

    −160

    1. 1
    Номенклатура

    Слово гадкое, не то что программа.

    alexoy, 27 Сентября 2011

    Комментарии (27)
  3. JavaScript / Говнокод #7990

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    // ==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", можно контролэфить.
    Работает только для страниц отдельных ГК, в том числе из мусорки.
    Треды до полсотни комментов можно и так оглядеть, если больше - открываю отдельно.
    Но всё равно стоит добавить фичу на стороне сервера.

    ej, 26 Сентября 2011

    Комментарии (27)
  4. Pascal / Говнокод #7977

    +102

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    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.

    inkanus-gray, 25 Сентября 2011

    Комментарии (27)
  5. PHP / Говнокод #7839

    +169

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <!--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-->

    уже было подобное, но я не удержался.... )))

    realsugar, 12 Сентября 2011

    Комментарии (27)
  6. PHP / Говнокод #7814

    +161

    1. 1
    $period = in_array($bullRegionId,array_keys($periods)) ? $periods[$bullRegionId]['text'] : $periods['default']['text'];

    Интересна сама проверка на существование ключа, не правда ли? :-)
    Код мой. Коллега учуял, что от него несколько плохо пахнет и предложил запостить сюда))

    Nemoden, 09 Сентября 2011

    Комментарии (27)
  7. Куча / Говнокод #7654

    +135

    Пони

    TheHamstertamer, 25 Августа 2011

    Комментарии (27)
  8. PHP / Говнокод #7635

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    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 {
    ...

    плеать...

    realsugar, 24 Августа 2011

    Комментарии (27)
  9. JavaScript / Говнокод #7528

    +175

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    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) + 'юна';}

    склонения фамилий и имён Оо

    substr, 12 Августа 2011

    Комментарии (27)
  10. PHP / Говнокод #7326

    +164

    1. 1
    2. 2
    3. 3
    <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 не передан (такое происходит при переходе на главную).

    opex_jr, 23 Июля 2011

    Комментарии (27)
  11. JavaScript / Говнокод #7222

    +176

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function isValid()
    {
    	if ($('#emailinput').val() == 'ваш@электронный.адрес')
    	{
    		box('Это не ваш электронный адрес!');
    		return false;
    	}

    http://apokalipsis-2012.ru/

    This is obvious, 11 Июля 2011

    Комментарии (27)