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

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

    +16

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <windows.h>
     #include <iostream>
     int main ()
     {
         HINSTANCE result;
         result=ShellExecute(NULL,NULL,L"E:\\.mp3",NULL,NULL,SW_SHOWDEFAULT);
         if ((int)result<=32)
         std::cout << "Error!\nReturn value: " << (int)result << "\n";
         return 0;
     }

    Как написать mp3-плеер на с++ в 10 строк без использования сторонних библиотек?
    Гении с cyberforum знают ответ!

    http://www.cyberforum.ru/cpp-beginners/thread444490-page3.html

    gost, 13 Мая 2014

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

    +149

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function rawToStructuredDataTree($data) {
            $structured_array = array();
            foreach ($data as $cid => $node) {
                $data[$cid]['children'] = array();
                if ($node['parent_id'] == $cid || $node['parent_id'] == 0) {
                    $structured_array[$cid] = &$data[$cid];
                } else {
                    $data[$node['parent_id']]['children'][$cid] = & $data[$cid];
                }
            }
            return $structured_array;
      }

    Вот такое выдал мой ученик (школьник, 8 класс), когда его попросили из массива id - parent_id построить дерево.

    imissyouso, 20 Апреля 2014

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

    +154

    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
    function unpackLoginAndPas($signed,$iv, $dateSend){
        global $crypt, $cryptLast,  $defaultDate, $ivsId, $mysqlBaseName, $mysqlBase;
        //получаем текущую дату. 
        if (isset($dateSend) )
          $date = $dateSend;
        else
          $date = $defaultDate;
    
          $query = "SELECT id FROM ivs WHERE val='$iv';" ;
        $query = $mysqlBase->query($query);// or die (compactResult('error','криворукий программист!'));
        //есть ли такой маркер безопасности?
        if ($query->num_rows)//раз есть, то надо послать за другим маркером. Такой уже не годиться. 
            die (compactResult('error','bad iv marker,pls generate new iv'));
        //запоминаем такой маркер безопасности, и больше под ним не пускаем.
        //получаем id автоинкремент
        $myBase = $mysqlBase->query("SHOW TABLE STATUS FROM $mysqlBaseName") or die (compactResult('error','SystemTable not get (')); ;
        $result = false;
        //поиск времени изменения БД.
        $dateSrv = (int)( $date->getTimestamp() / 1000 );
        while($row = $myBase->fetch_assoc()){
          if ($row['Name'] !== "ivs" )
    	continue;
          $ivsId = $row["Auto_increment"];
        }
    
        $userIP = getUserIpAddr();
        $mysqlBase->query("INSERT INTO ivs(val,IP) VALUES('$iv','$userIP')") or die(compactResult('error','криворукий программист!'));
    
        //составляем строку из даты, которая у нас будет ключем. 1 раз в 5 минут она становиться другой.
        $decodeKey = /*формирование строки от даты*/
        $dateLast = $date->add( DateInterval::createFromDateString(' 5 minuts ' ) );
        $decodeKeyLast = /*формирование строки от даты*/
        //var_dump($decodeKey);
        $decodeKey = md5($decodeKey);
        $decodeKeyLast = md5 ( $decodeKeyLast );
        
        mcrypt_generic_init ($crypt,$decodeKey,$iv);
        mcrypt_generic_init ($cryptLast,$decodeKeyLast,$iv);
        //декриптуем
        $encDataLoginAndPass = rtrim (mdecrypt_generic($crypt,$signed));
        $encDataLoginAndPassLast = rtrim (mdecrypt_generic($cryptLast,$signed));
        //если правильный был и ключ(время не истекло) и 
        //var_dump($encDataLoginAndPass);
        $encDataLoginAndPass = json_decode ($encDataLoginAndPass,true)  or ( ($decodeKey = $decodeKeyLast ) and json_decode ($encDataLoginAndPassLast,true) )or die(compactResult('error','Key time out.'));
        //в поле secdata в POST будет лежать массив, декодированный
        mcrypt_generic_init ($crypt,$decodeKey,$iv);
    
        $temp = array_keys($encDataLoginAndPass);
        $encData = array('login'=>$temp[0], 'password'=>end($encDataLoginAndPass));
        $encPost = mdecrypt_generic($crypt, base64_decode( $_POST['secdata'] ) );
        $encData['post'] = json_decode (rtrim($encPost)) or die(compactResult('error','post uncompressed!'));
        //деинит
        mcrypt_generic_deinit ($crypt);
        //раз все прошло успешо, возвращаем массив с логином и паролем, который проверяем дальше. Тут даже использование вместо пароля, его хеша не поможет от хака. будем надеятся на алгоритм шифровки. Хотя есть взять, и знать что тут будет одинаковая информация, то вычислить её по паре перехваченных обращений не составит труда. Надо бы переделать на хеш от логина с паролем. Хотя и это врядли поможет. Надо взять что-то изменяемое. От чего можно будет отталкиваться. Но это надо обдумывать.
        return $encData;
    };

    попытка шифрования в 1-м проекте.
    Человек первый раз писал на php. Оно и видно...

    Dart_Sergius, 17 Апреля 2014

    Комментарии (30)
  5. JavaScript / Говнокод #15637

    +153

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    var cont_els = section.el.getElementsByClassName('cont');
    for (var i = 0; i < cont_els.length; i++)
    {
        var node_els = cont.el.getElementsByClassName('node');
        for (var i = 0; i < node_els.length; i++)

    Вложенный цикл переписывает i внешнего, и так бесконечно.

    Itareo, 01 Апреля 2014

    Комментарии (30)
  6. JavaScript / Говнокод #15486

    +154

    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
    var SE = document.getElementsByTagName("a");
    for (var i = 0; i < SE.length; i++)
    {
        if (SE[i].href.indexOf('http://www.govnokod.ru/ratings/comment/') == 0
    	    && SE[i].href.indexOf('on') != -1)
    	{
    		plusIT(SE[i].href);
    		console.log(SE[i].href);
    	}
    }
    
    function plusIT(ID)
    {
    	$.get(
        ID,
        {},
        function(x) {
        });
    }

    gost, 15 Марта 2014

    Комментарии (30)
  7. C++ / Говнокод #14778

    +57

    1. 1
    for(int loshdka_skachi = 0; loshadka_skachi < pyati_raz; loshadka_skachi += prig_skok){

    оттуда
    конардо посвящается

    LispGovno, 21 Февраля 2014

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

    +76

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    try {
        IntToStr(pageid);
    }
    catch (...) {
        pageid = 0;
    }

    А вдруг?

    bormand, 31 Января 2014

    Комментарии (30)
  9. Java / Говнокод #14417

    +75

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    ObservableStorage.ConfigurationTuple<Integer, ObservableStorage.ConfigurationTuple<Foo, ObservableStorage.ConfigurationTuple<Foo, ObservableStorage.ConfigurationEnd>>> build = RemoteObservableStorage
            .configurationBuilder()
            .use("foo").as(Foo.class)
            .use("foo1").as(Foo.class)
            .use("ids").as(Integer.class)
            .build();

    И тут Остапа понесло :)
    Всем тайп сейфити посоны

    myzone, 26 Января 2014

    Комментарии (30)
  10. C# / Говнокод #14286

    +138

    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
    /// generic Singleton<T> (потокобезопасный с использованием generic-класса и с отложенной инициализацией)
     
    /// <typeparam name="T">Singleton class</typeparam>
    public class Singleton<T> where T : class
    {
      /// Защищённый конструктор необходим для того, чтобы предотвратить создание экземпляра класса Singleton. 
      /// Он будет вызван из закрытого конструктора наследственного класса.
      protected Singleton() { }
     
      /// Фабрика используется для отложенной инициализации экземпляра класса
      private sealed class SingletonCreator<S> where S : class
      {
        //Используется Reflection для создания экземпляра класса без публичного конструктора
        private static readonly S instance = (S) typeof(S).GetConstructor(
                    BindingFlags.Instance | BindingFlags.NonPublic,
                    null,
                    new Type[0],
                    new ParameterModifier[0]).Invoke(null);
     
        public static S CreatorInstance
        {
          get { return instance; }
        }
      }
     
      public static T Instance
      {
        get { return SingletonCreator<T>.CreatorInstance; }
      }
     
    }
     
    /// Использование Singleton
    public class TestClass : Singleton<TestClass>
    {
        /// Вызовет защищенный конструктор класса Singleton
        private TestClass() { }
     
        public string TestProc()
        {
            return "Hello World";
        }
    }

    Код из Википедии. Создание синглтона на шарпике с излишествами и извращениями

    В самом деле, кому нужна инкапсуляция, нам же нужен синглтон

    P.S может я чего не понимаю.

    kegdan, 26 Декабря 2013

    Комментарии (30)
  11. PHP / Говнокод #14271

    +156

    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
    class StaticArray { // TO DO: add float, char, double
    private $min = 0;
    private $lengch = 0;
    private $max = 0;
    private $array = array();
    function __construct($lengch,$type) {
    if (!is_numeric($lengch) || $type != 'int'&& $type != 'long'&& $type != 'byte'&& $type != 'short'){  
    echo "BAD ARRRAY TYPE OR LENGCH!\n";
    return false;
    }
    $this->lengch = $lengch;
    switch ($type){
    case 'int':
    $this->min = -2147483647;
    $this->max = 2147483648;
    break;
    case 'byte':
    $this->min = -127;
    $this->max = 128;
    break;
    case 'short':
    $this->min = -32768;
    $this->max = 32767;
    break;
    case 'long':
    $this->min = -9223372036854775808;
    $this->max = 9223372036854775807;
    break;
    }
    for ($i=0;$i < $lengch;$i++){
    $this->array[$i] = 0;
    }
    }
     function add ($vaule,$num){
     if ($vaule >= $this->max || $vaule <= $this->min || !is_numeric($num) || $num < 0 || $num >= $this->lengch){
     echo "Not valid vaule!\n";
     return false;
     }
     $this->array[$num] = $vaule;
    }
     
     function ToNormalArray (){
     return $this->array;
     }
     function get ($num){
     if ($num >= $this->lengch || $num < 0){
     echo "BAD ARRAY INDEX\n";
     return false;
     }
     return $this->array[$num];
     }
     function GetLengch(){
     return $this->lengch; 
    }
    }

    Обнаружил в исходниках одного из сайтов который разрабатывал. Предыдущий кодер действительно этим ползовался! Особенно умиляет метод ToNormalArray().

    zadrot, 25 Декабря 2013

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