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

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

    +156

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function __get($propertyName) {
    ....
          
          if (!isset($propertyName[$this->propertyTable])) {
                var_dump($this->propertyTable);
                throw new Exception("Wrong property name \"$propertyName\"");
          }
         
    .....
        }

    Глубоко в дебрях...

    MaksSlesarenko, 31 Мая 2010

    Комментарии (3)
  3. Си / Говнокод #3301

    +141

    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
    /* Putarc1 печатает точки, определяющие дугу от 0 до 45.*/
    void Putarc1(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int  starty, endy, y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,y1+x_center,y_center-x,color);
    }
    /* Putarc2 печатает точки, определяющие дугу от 45 до 90.*/
    void Putarc2(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int startx, endx, x1;
    	 startx=x; endx=(x+1);
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x1+x_center,y_center-y,color);
    }
    /* Putarc3 печатает точки, определяющие дугу от 90 до 135.*/
    void Putarc3(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int startx,endx,x1;
    	 startx=x; endx=(x+1);
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x_center-x1,y_center-y,color);
    }
    /* Putarc4 печатает точки, определяющие дугу от 135 до 180.*/
    void Putarc4(HIMAGE *Im,short x, short y, short x_center, short y_center,unsigned char color){
    	 int starty,endy,y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,x_center-y1,y_center-x,color);
    }
    /* Putarc5 печатает точки, определяющие дугу от 180 до 225.*/
    void Putarc5(HIMAGE *Im,short x, short y, short x_center, short y_center,unsigned char color){
    	 int starty,endy,y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,x_center-y1,x+y_center,color);
    }
    /* Putarc6 печатает точки, определяющие дугу от 225 до 270.*/
    void Putarc6(HIMAGE *Im,short x, short y, short x_center, short y_center,unsigned char color){
    	 int startx,endx,x1;
    	 startx=x*1.0; endx=(x+1)*1.0;
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x_center-x1,y+y_center,color);
    }
    /* Putarc7 печатает точки, определяющие дугу от 270 до 315.*/
    void Putarc7(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color){
    	 int startx, endx, x1;
    	 startx=x; endx=(x+1);
    	 for (x1=startx;x1<endx;++x1) PutPoint(Im,x1+x_center,y+y_center, color);
    }
    /* Putarc8 печатает точки, определяющие дугу от 315 до 360.*/
    void Putarc8(HIMAGE *Im,short x, short y, short x_center, short y_center, unsigned char color) {
    	 int  starty,endy,y1;
    	 starty=y; endy=(y+1);
    	 for (y1=starty;y1<endy;++y1) PutPoint(Im,y1+x_center,x+y_center,color);
    }

    Рисуем дуги кусками по 45 градусов

    absolut, 24 Мая 2010

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

    +162

    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
    function get_cookie_352(name) 
    {
       var arg = name + "=";
       var alen = arg.length;
       var clen = document.cookie.length;
       var i = 0;
       while (i < clen) {
          var j = i + alen;
          if (document.cookie.substring(i, j) == arg) {
             return true;
          }
          i = document.cookie.indexOf(" ", i) + 1;
          if (i == 0) {
             break;
          }
       }
       return null;
    }

    Типа поиск подстроки в строке. Причем про indexOf точно знают.

    afj, 22 Мая 2010

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

    +170

    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 selectControl = document.getElementById("list_tt_DropDownList_PerRaz");
    	switch (tr.cells[13].innerText)
    	{
    	    case "1":
    	        selectControl.options[0].selected = "selected";
    	        break;
    	    case "2":
    	        selectControl.options[1].selected = "selected";
    	        break;
    	    case "3":
    	        selectControl.options[2].selected = "selected";
    	        break;
    	    case "4":
    	        selectControl.options[3].selected = "selected";
    	        break;
    	    case "5":
    	        selectControl.options[4].selected = "selected";
    	        break;
    	}

    такой вот милый switch

    alex_donetsk, 19 Мая 2010

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

    +166

    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
    for ( ; $k <= 15; ++$k ) {
    	$map[$k] = $mx2[$k];
    
    	// A
    	if ( $map[$k] == 10 && $k == 1 || $map[$k] == 10 && $k == 2 || $map[$k] == 10 && $k == 3 ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// B
    	if ( $map[$k] == $map[$k-1] ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// C
    	if ( $map[$k] == $map[$k-2] && ( $k == 3 || $k == 6 || $k == 9 || $k == 12 || $k == 15 ) ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// B
    	if ( $map[$k] == $map[$k-1] ) {
    		$map[$k] = rand( 1, 9 );
    	}
    	// C
    	if ( $map[$k] == $map[$k-2] && ( $k == 3 || $k == 6 || $k == 9 || $k == 12 || $k == 15 ) ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// B
    	if ( $map[$k] == $map[$k-1] ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// C
    	if ( $map[$k] == $map[$k-2] && ( $k == 3 || $k == 6 || $k == 9 || $k == 12 || $k == 15 ) ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// B
    	if ( $map[$k] == $map[$k-1] ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// C
    	if ( $map[$k] == $map[$k-2] && ( $k == 3 || $k == 6 || $k == 9 || $k == 12 || $k == 15 ) ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// B
    	if ( $map[$k] == $map[$k-1] ) {
    		$map[$k] = rand( 1, 9 );
    	}
    
    	// C
    	if ( $map[$k] == $map[$k-2] && ( $k == 3 || $k == 6 || $k == 9 || $k == 12 || $k == 15 ) ) {
    		$map[$k] = rand( 1, 9 );
    	}
    }

    $mx2 - массив из 15 элементов(элементы имеют значение от 1 до 10, расположены рандомно). Генерируется таким образом новый массив $map, в котором не могут быть два одинаковых элемента подряд(а так же текущий и пред-предыдущий не должны быть равны). Как бы сделал типичный программист? Зафигачил бы в цикле цикл, в которм бы проверял равенство текущего элемента и предыдущего. А вот так сделал мудак со стажем. Не удивительно, что периодически всё работает не так как надо...

    azzz, 17 Мая 2010

    Комментарии (3)
  7. bash / Говнокод #3242

    −136

    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
    #!/bin/bash
    case $1 in 
    	u|use)
    		case $2 in 
    			e) $EDITOR /etc/portage/package.use
    			;;
    			s) grep -n --color "$3" /etc/portage/package.use
    			;;
    			d) 
    			if echo "$3" | grep -q -e "[1-9]"
    			then
    			DELVAR="`echo $3 $4 $5 $6 $7 $8 $9 | sed 's/ /\n/g'`"
    			echo "Do you want delete next line(s):
    `echo "$DELVAR" | sed 's/$/!d/g' | xargs -n 1 | while read line ; do
    	sed "$line" /etc/portage/package.use -i
    done`			 
    Yes/No?"
    			read "answer"
    			case "$answer" in 
    			y|yes) echo "$DELVAR" | sed 's/$/d/g' | xargs -n 1 | while read yesno ; do
    	sed "$yesno" /etc/portage/package.use -i
    done
    ;;
    esac
    		else
    			DELVAR="`grep -n --color "$3" /etc/portage/package.use | cut -d":" -f1`"
    			echo "Do you want delete next line(s):
    `grep -n --color "$3" /etc/portage/package.use`
    Yes/No?"
    			read "answer"
    			case "$answer" in 
    			y|yes) echo "$DELVAR" | sed 's/$/d/g' | xargs -n 1 | while read yesno ; do
    	sed "$yesno" /etc/portage/package.use -i
    done
    			;;
    			esac
    			fi
    			;;
    			*) echo "$2 $3 $4 $5 $6 $7 $8 $9" >> /etc/portage/package.use
    			;;
    		esac
    	;;
    	i) euses $3
    	;;
    	s) eix "$3"
    	;;
    	sync) sudo layman --sync-all ; emerge --sync ; eix-update
    	;;
    	U) exec emerge -vauND world
    	;;
    	i) exec emerge -va "$2 $3 $4 $5 $6 $7 $8 $9"
    	;;
    	mkconf) sudoedit /etc/make.conf
    	;;
    	*|-h|--help) echo "Использование: pkg [ключ] [параметры ключа]
    	u [USE] - операции с USE-флагами в файле /etc/portage/package.use
    		e - открыть файл в редакторе из '\$EDITOR' ("$EDITOR")
    		s - поиск в файле grep'ом
    		d - удаление строк из файла (в качестве параметра принимаются как номера строк, так и название пакета/флага)
    		i - просмотр информации о флагах (с помощью euses) 
    		* - все иные значения будут записаны в файл
    	k [KEYWORDS] - операции с keywords-масками в файле /etc/portage/package.keywords
    		e - открыть файл в редакторе из '\$EDITOR' ("$EDITOR")
    		s - поиск в файле grep'ом
    		d - удаление строк из файла (в качестве параметра принимаются как номера строк, так и название пакета/флага)
    		* - все иные значения будут записаны в файл
    	i - установка пакета (emerge -av)
    	s - поиск по базе пакетов (с помощью eix)
    	sync - синхронизация баз layman, emerge и запуск eix-update
    	U - обновление системы (emerge -vauND world)
    	mkconf - открыть для редактирования файл /etc/make.conf (используя sudoedit)"
    	;;
    esac

    Нашел свой старый код.. Когда-то от нечего делать пытался написать некую обёртку ко всяким джентовским утилитам. До конца так и не дописал, были некоторые проблемы с кодом, которые мне решать было лень. Но сейчас залез в тот код и ужаснулся..
    P.S. Файл немного урезан от оригинала, т.к. те же действия повторяются для разных файлов.

    Iliander, 16 Мая 2010

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

    +157

    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
    // ...
    // xcrement - (in|de)crement
    // ...
    bool parse( . . . , int xcrement, . . . )
    {
       ...
       while ( ... )
       {
          ...
          index += xcrement;
       }
       ...
    }

    k06a, 14 Мая 2010

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

    +81

    1. 1
    Network notwork = null;

    Ну и естественно, что нихрена не работает...

    raorn, 14 Мая 2010

    Комментарии (3)
  10. Java / Говнокод #3228

    +74

    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
    public void write(byte[] bytesToSend) {
            // System.out.println("Write begin.");
            try {
                socket.setSoTimeout(10000);
                packageID = 0;
                // Add bytes to send
                saveBytesToPackeges(bytesToSend);
                // Begin new Thread to be sure it was delivered
                mySendChecker = new SendChecker();
                Thread myThread = new Thread(mySendChecker);
                myThread.start();
                byte[] buf2 = new byte[50];
                // Sending number of packeges
                byte[] buf = bytesFromInt(numberOfPackages);
                for (int i = 0; i < 4; i++) {
                    buf2[i] = buf[i];
                    
                }
                packageID = -2;
                buf = packetFromBytes(buf2, sizeOfPackage - 4);
                DatagramPacket myPacket = new DatagramPacket(buf, buf.length,
                        addressToSendTo, portToSendTo);
                socket.send(myPacket);
                mySendChecker.setPacket(-2, myPacket);
                // recieve answer
                socket.receive(myPacket);
                buf = myPacket.getData();
                  mySendChecker.removePacket(-2);
                // send delieverer
                buf = packetFromBytes(buf2, sizeOfPackage - 4);
                socket.send(myPacket);
                // starting to send data
                for (int i = 0; i < numberOfPackages; i++) {
                    myPacket = new DatagramPacket(bytesToSendSave[i],
                            bytesToSendSave[i].length, addressToSendTo,
                            portToSendTo);
                    socket.send(myPacket);
                    mySendChecker.setPacket(i, myPacket);
                }
                // start to recieve answers
                int numberOfPackegeRecieved = 0;
                while (true) {
                    buf = new byte[8];
                    if (mySendChecker.isEmpty()) {
                        break;
                        
                    }
                    myPacket = new DatagramPacket(buf, buf.length);
                    socket.receive(myPacket);
                    buf = myPacket.getData();
                    numberOfPackegeRecieved = intFromBytes(buf, 4);
                    if (-3 != intFromBytes(buf, 4)) {
                        continue;
                        
                    }
                    numberOfPackegeRecieved = intFromBytes(buf, 0);
                    mySendChecker.removePacket(numberOfPackegeRecieved);
                    myPacket = new DatagramPacket(buf, buf.length, addressToSendTo,
                            portToSendTo);
                    socket.send(myPacket);
                }
                buf = bytesFromInt(-5);
                myPacket = new DatagramPacket(buf, buf.length, addressToSendTo,
                        portToSendTo);
                socket.send(myPacket);
                mySendChecker.setPacket(-5, myPacket);
                // System.out.println("WRITE Sending -5");
                while (true) {
                    buf = new byte[4];
                    myPacket = new DatagramPacket(buf, buf.length);
                    socket.receive(myPacket);
                    buf = myPacket.getData();
                    if (-5 == intFromBytes(buf, 0)) {
                        // System.out.println("WRITE recieved -5");
                        break;
                    }
                }
                mySendChecker.end();
                
                socket.setSoTimeout(100);
                while (true) {
                    try {
                        socket.receive(myPacket);
                    } catch (SocketTimeoutException e) {
                        break;
                    }
                }
                socket.setSoTimeout(0);
                // System.out.println("Write end.");
                ... TO BE CONTINUED ...

    Лучшая реализация потокового протокола поверх UDP среди студентов. Остальное в таком же стиле.

    rootman, 14 Мая 2010

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

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $pay_id		= 0;
    		$produce_id	= 0;
    		$user_id	= 0;
    		$add_time 	= 0;
    
    		$pr=substr_count($produce_id, ',');
    		$pa=substr_count($pay_id, ',');
    		$pu=substr_count($user_id, ',');

    minisot, 13 Мая 2010

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