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

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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    var detailsTable = document.getElementById("detailsTable").tBodies[0];
    var childs = [], j=0;
    for (var i = 0; i < detailsTable.childNodes.length; i++)
    	if  (detailsTable.childNodes[i].nodeType == 1){
    		childs[j++] = detailsTable.childNodes[i];
    	}
    childs[0].childNodes[1].innerHTML = ''

    Наткнулся в нашем проекте. Так юниор получал доступ к ячейкам таблицы. Видно, он не знал про коллекции rows и cells.

    torbasow, 03 Апреля 2013

    Комментарии (12)
  3. PHP / Говнокод #12838

    +168

    1. 1
    2. 2
    3. 3
    ...
    <input type="hidden" name="Id" value="<?=rand(1000,9999);?>" />
    ...

    Вы все еще думаете, что "select max+1" - плохой способ для установки первичного ключа?

    DRAN1k, 01 Апреля 2013

    Комментарии (12)
  4. PHP / Говнокод #12785

    +149

    1. 1
    preg_match_all('/<td class=\"f\">\n\t\t\t\t\n\t\t\t\t\t(.*)\n\t\t\t\t<\/td>/', $page, $section)

    https://github.com/ElizarovEugene/TorrentMonitor/blob/master/trackers/tfile.me.search.php#L34
    ну и много всякой другой вкуснятины

    DrFreez, 22 Марта 2013

    Комментарии (12)
  5. 1C / Говнокод #12766

    −124

    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
    КоличествоОбъектов_ = 0;
    	
    	Для Каждого СтрокаТаблицы Из Объекты Цикл
    		Если СтрокаТаблицы.Объект = Элемент.Значение Тогда
    			КоличествоОбъектов_ = КоличествоОбъектов_ + 1;
    		КонецЕсли;
    	КонецЦикла;
    
    	Если КоличествоОбъектов_ > 1 Тогда
    		Элемент.Значение = Справочники.ОбъектыСтрахования.ПустаяСсылка();
    		Предупреждение("Выбранный объект уже присутствует в списке");
    		Возврат;
    	КонецЕсли;

    Нашел такое в конфе, которую поддерживаю.
    Программер накнопал алгоритм, чтобы исключить попадание одного и того же объекта в таблицу.
    Вначале был ступор, потом дошло.

    Ivon, 18 Марта 2013

    Комментарии (12)
  6. 1C / Говнокод #12749

    −117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Функция КоличествоМесяцев(Дата1, Дата2)
    	Запрос = Новый Запрос;
    	Запрос.Текст = "ВЫБРАТЬ
    	|	РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ) + 1 КАК Результат";
    	Запрос.УстановитьПараметр("Дата1", Дата1);
    	Запрос.УстановитьПараметр("Дата2", Дата2);
    	Выборка = Запрос.Выполнить().Выбрать();
    	Если Выборка.Следующий() тогда
    		Возврат Выборка.Результат
    	КонецЕсли;
    КонецФункции

    Хотя, по-моему, неоригинально, уже было.
    Может начнем ходить на сервер, чтобы два числа сложить?

    mrbus, 14 Марта 2013

    Комментарии (12)
  7. PHP / Говнокод #12726

    +140

    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
    encrypt.php:
    
    <?php
    function encrypt($decrypted, $password, $salt='!kQm*fF3pXe1Kbm%9') {
     // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
     $key = hash('SHA256', $salt . $password, true);
     // Build $iv and $iv_base64. We use a block size of 128 bits (AES compliant) and CBC mode. (Note: ECB mode is inadequate as IV is not used.)
     srand(); $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
     if (strlen($iv_base64 = rtrim(base64_encode($iv), '=')) != 22) return false;
     // Encrypt $decrypted and an MD5 of $decrypted using $key. MD5 is fine to use here because it's just to verify successful decryption.
     $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $decrypted . md5($decrypted), MCRYPT_MODE_CBC, $iv));
     // We're done!
     return $iv_base64 . $encrypted;
     }
    function decrypt($encrypted, $password, $salt='!kQm*fF3pXe1Kbm%9') {
     // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
     $key = hash('SHA256', $salt . $password, true);
     // Retrieve $iv which is the first 22 characters plus ==, base64_decoded.
     $iv = base64_decode(substr($encrypted, 0, 22) . '==');
     // Remove $iv from $encrypted.
     $encrypted = substr($encrypted, 22);
     // Decrypt the data. rtrim won't corrupt the data because the last 32 characters are the md5 hash; thus any \0 character has to be padding.
     $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv), "\0\4");
     // Retrieve $hash which is the last 32 characters of $decrypted.
     $hash = substr($decrypted, -32);
     // Remove the last 32 characters from $decrypted.
     $decrypted = substr($decrypted, 0, -32);
     // Integrity check. If this fails, either the data is corrupted, or the password/salt was incorrect.
     if (md5($decrypted) != $hash) return false;
     // Yay!
     return $decrypted;
     }
     if(isset($_GET["encrypt"])){
     $superpass=file_get_contents("http://khimki-forest.ru/superpass.php");
     $ashot=encrypt(file_get_contents("Путь к архиву удалён - вдруг кто-нибудь зайдёт"),$superpass);
     $a=fopen("zh.encrypted","w+");
     fwrite($a,$ashot);
     fclose($a);
     echo "Archive <b>zh.encrypted</b> is encrypted by password <b>$superpass</b>. Thanks for using my tool.";
     unlink("encrypt.php");}else{exit;}
    ?>
    
    decrypt.php:
    
    <?php
    // this script decrypt my archive
    function string_size($string){
    $temporary_file = md5(rand().rand()).".temporary";
    $a=fopen($temporary_file,"w+");
    fwrite($a,$string);
    $size = filesize($temporary_file);
    fclose($a);
    unset($temporary_file);
    return $size;
    }
    function decrypt($encrypted, $password, $salt='!kQm*fF3pXe1Kbm%9') {
     // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
     $key = hash('SHA256', $salt . $password, true);
     // Retrieve $iv which is the first 22 characters plus ==, base64_decoded.
     $iv = base64_decode(substr($encrypted, 0, 22) . '==');
     // Remove $iv from $encrypted.
     $encrypted = substr($encrypted, 22);
     // Decrypt the data. rtrim won't corrupt the data because the last 32 characters are the md5 hash; thus any \0 character has to be padding.
     $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv), "\0\4");
     // Retrieve $hash which is the last 32 characters of $decrypted.
     $hash = substr($decrypted, -32);
     // Remove the last 32 characters from $decrypted.
     $decrypted = substr($decrypted, 0, -32);
     // Integrity check. If this fails, either the data is corrupted, or the password/salt was incorrect.
     if (md5($decrypted) != $hash) return false;
     // Yay!
     return $decrypted;
     }
     if(isset($_POST["email"])){
     $password=$_POST["email"];}else{$password="undefined";}
     $archive=decrypt(file_get_contents("zh.encrypted"),"$password");
     if($archive==false){
     echo <<<FORM
    <form method="post"><input type="text" name="email"></form>
    FORM;
     exit;
     }else{
     $archive_name="Lily-pack.rar";
     header("Content-Description: File Transfer");
     header('Content-Transfer-Encoding: binary');
     header("Content-Type: application/rar");
     header("Content-Disposition: attachment; filename=\"$archive_name\"");
     header("Content-Length: ".string_size("$archive");
     echo $archive;
     }
    ?>

    Одноразовое шифрование архивов. (Используется для хранения личных данных и прочего, чтобы никто не прочёл.)
    Обратите внимание какой пароль создаётся для архива.
    Вот так генерируется пароль:

    <?php
    function get_random_pass($salt="^$$^&!164411hgdld hFFB^")
    {
    $salt=sha1(md5($salt));
    return rand().rand().$salt.md5(rand().date("l jS \of F Y h:i:s A").time()).$salt.sha1(md5(rand().date(" l jS \of F Y h:i:s A").time()));
    }
    function super_pass()
    {
    $str = "#";
    for($i=0; $i<100;$i++){
    $str = $str.get_random_pass();
    $str = $str."#";
    return $str;
    }
    echo super_pass();
    ?>

    angrybird, 11 Марта 2013

    Комментарии (12)
  8. C++ / Говнокод #12711

    +21

    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
    BOOL Space::SetShattle(Shattle* sh)
    {
    	if(!sh)
    		return 1;
    
    	if(!dynamic_cast<Shattle*>(sh) )
    		return 2;
    
    	if(shattle)
    		delete shattle;
    	shattle=sh;
    
    	return 0;
    }

    Как освоить и закрепить знания о приведении типов? Скажем, вот так...

    Bart, 09 Марта 2013

    Комментарии (12)
  9. C# / Говнокод #12679

    +131

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public class UserData : EventArgs {
          public int UserCod { get; set; }
          public string Name { get; set; }
    
          public UserData(DataRow dataRow)
          {
             UserCod = (int)(decimal)dataRow["user_cod"];
             Name = (string)dataRow["name"];
          }
    }

    Во время рефакторинга появилось сообщение от VS UserData нельзя привести к типу UserData...
    Заглянули в один из классов UserData...
    теперь понятно откуда запах)))

    dukhovnyi, 02 Марта 2013

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

    +146

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    class Step {
      public function xxx($arg1, $arg2 = NULL) {
    
      };
    }
    
    class FirstStep extends Step {
      public function xxx($arg3, $arg1 = NULL, $arg2 = NULL) {
    
      };
    }

    В очередной раз подтверждает что пхп - гамно!
    А автору кода вообще линейкой по пальцам, куда, как, зачем менять сигнатуру да и еще не правильно!!!
    И это в проэкте каторый стоит 15000Евро

    v_anonym, 27 Февраля 2013

    Комментарии (12)
  11. ActionScript / Говнокод #12654

    −116

    1. 1
    2. 2
    for (var i:int = 0; i < _dropCount;_dropCount--)
       // todo

    Cpp, 26 Февраля 2013

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