1. Java / Говнокод #6943

    +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
    public void removeFromBase()
                throws SQLException{
            for(ServiceInstance serv: getServiceInstances())
                serv.removeFromBase();
            for(Pay pay: pays)
                pay.removeFromBase();
            String query;
            PreparedStatement ps = null;
            Connection connection = null;
            try{
                connection = TIDatasource.getInstance().getConnection();
                query = "DELETE FROM orders WHERE id=?";
                ps = connection.prepareStatement(query);
                ps.setLong(1, getId());
                int res = ps.executeUpdate();
                if(res != 1)
                    throw new SQLException("Unexpected number of orders have deleted: " + res);
            }catch(SQLException sqlex){
                throw new SQLException("Can't remove order from base because of error: " + sqlex);
            }finally{
                ps.close();
                connection.close();
            }
        }

    PRIMARY KEY(`id`)

    volatile, 13 Июня 2011

    Комментарии (15)
  2. JavaScript / Говнокод #6942

    +164

    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
    <script type="text/javascript">
    /* vedomosti mercedes fullscreen second pages */
    var ref=document.referrer;
    var cookie=Get_Cookie('ved_fullscreen2_1');
    if (!cookie && ref!='' && ref!='none' && ref!='blocked' && 'http://'==ref.substring(0,7)) {
    	ref=ref.substring(7);
    	var pos=ref.indexOf('/');
    	var invalid='.vedomosti.ru';
    	if (pos>0) ref=ref.substring(0,pos);
    
    	if (ref.substring( ref.length-invalid.length ) != invalid) {
    		Set_Cookie('ved_cookie_test',1,1);
    		if (Get_Cookie('ved_cookie_test')) {
    			Set_Cookie('ved_fullscreen2_1', 1, 1 * 24 * 3600, '/');
    			document.location.href = 'http://www.vedomosti.ru/var/bansrc/2011/9a6776.html#!'+(document.location.pathname);
    		}
    	}
    }
    </script>

    журнализды из одной пафосной бульварной газетки копят на мерседес

    bugmenot, 13 Июня 2011

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

    +148

    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
    93. 93
    <?php
    
    class CodeCounter {
        const MULTILINE_COMMENT = 0x01;
    
        private $dir = null;
        private $ext = null;
    
        public function __construct($dir = '.', $ext = '*') {
            $this->dir = $dir;
            if($ext == '*') {
                $this->ext = "/.*/si";
            } else {
                $e = explode('|', $ext);
                foreach($e as &$ext) {
                    $ext = trim($ext);
                    if($ext == '')
                        unset($ext);
                }
                $r = implode('|', $e);
                $this->ext = "/.*\.({$r})$/si";
            }
    
        }
    
        public function calculate() {
            $lines = 0;
            $args = func_get_args();
            if(count($args) == 0)
                $dir = $this->dir;
            else
                $dir = $args[0];
            if(file_exists($dir) && is_dir($dir)) {
                $list = scandir($dir);
                foreach($list as $item) {
                    if($item == '.' || $item == '..')
                        continue;
                    $fullItem = realpath($dir . DIRECTORY_SEPARATOR . $item);
                    if(is_dir($fullItem)) {
                        $lines += $this->calculate($fullItem);
                    } else {
                        if(preg_match($this->ext, $item)) {
                            echo "Calculating lines in {$fullItem}:  ";
                            $_lines = self::count($fullItem);
                            echo "{$_lines}\n";
                            $lines += $_lines;
                        }
                    }
                }
            }
            return $lines;
        }
    
        private static function count($file) {
            $lines = 0;
            $d = null;
            if(file_exists($file) && ($file = file($file))) {
                foreach($file as $line) {
                    $line = trim($line);
                    if($line == '')
                        continue;
                    if( substr($line, 0, 2) == '//' || //single line comment
                        substr($line, 0, 1) == '#'  || //single line comment
                        substr($line, 0, 2) == '<?' || //php open tag
                        substr($line, 0, 2) == '?>'    //php close tags
                    )
                        continue;
                    if(($pos = strpos('/*', $line)) !== false) {
                        if($pos == 0) {
                            if(strpos('*/', $line, $pos) === false) {
                                $d = self::MULTILINE_COMMENT;
                            }
                        } else {
                            $lines++;
                        }
                        continue;
                    }
                    if($d == self::MULTILINE_COMMENT) {
                        if(strpos('*/', $line) !== false) {
                            $d = null;
                        }
                        continue;
                    }
                    $lines++;
                }
            }
            return $lines;
        }
    }
    
    $counter = new CodeCounter('./amapys', 'php|js');
    $lines = $counter->calculate();
    echo "\nTotal: {$lines} lines\n";

    Автор: POPSuL
    Пхп-шники такие пхп-шники.
    ООП во все поля. Им неведом sed и awk.

    cutwater, 13 Июня 2011

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

    +154

    1. 1
    2. 2
    3. 3
    foreach ($templatedata as $templatedataname=>$templatedatavalue)
    	$$templatedataname = $templatedatavalue;
    include($templatesDir.'/'.$file.'.tpl.php');

    Велошаблонизатор, превращающий пары ключ-значение из массива в локальные переменные шаблона.
    Шаблон - простой php-файл, в нужных местах выводящий полученные значения (реже с какой-либо логикой вроде обработки массива).

    Vindicar, 13 Июня 2011

    Комментарии (29)
  5. Java / Говнокод #6939

    +80

    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
    thread = new Thread() {
      @Override 
      public void run() {
        try {
          while( !dataProcessor.isFinished() ) {
            dataProcessor.execute();
            
            Thread.sleep( 60 * 1000L );
          }        
        } catch ( Throwable t ) {
          logger.fatal( "Fatal error in daemon thread", t );
        }
      }
    };
    
    thread.run();

    Вот такое оно параллельное выполнение. Задачка для догадливых.

    galak, 13 Июня 2011

    Комментарии (11)
  6. Java / Говнокод #6938

    +76

    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
    List<Record> getNewestRecords( int maxResults ) {
      List<TenantIssue> allRecords = recordsDao.getAllRecords();
      
      if ( allRecords.size() > maxResults ) {
        Collections.sort( allRecords, new Comparator() { 
          public int compare( Record r1, Record r2 ) {
            return (int) r1.getDate().getTime() - r2.getDate().getTime();
          } 
        } );
        Collections.reverse( allRecords );
        
        List<Record> newestRecords = new ArrayList<Record>();
        for ( int i = 0; i < maxResults; i++ ) {
          newestRecords.add( allRecords.get( i ) );
        }
      } else {
        return allRecords;
      }
      return allRecords;
    }

    galak, 13 Июня 2011

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

    +167

    1. 1
    $r = $this->client->getBerechneteGrundversorgungsTarifebyPLZundVerbrauchKundenart($this->params);

    По сути не говнокод, но нечитабельность налицо...

    vov4ik, 13 Июня 2011

    Комментарии (41)
  8. Assembler / Говнокод #6936

    +197

    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
    ; загрузка из cfg-файла переменной Gravity
    seg011:06CA         fld     [dbl_45A48]   ; 0.2
    seg011:06CF         add     sp, -8
    seg011:06D2         fstp    [bp+var_16]   ; default=0.2
    seg011:06D6         push    ds
    seg011:06D7         mov     ax, offset aGravity
    seg011:06DA         push    ax            ; key="GRAVITY"
    seg011:06DB         wait
    seg011:06DD         push    cs
    seg011:06DE         call    near ptr cfg_ReadDbl
    seg011:06E1         add     sp, 12
    seg011:06E4         fstp    [curGravity]  ; cur=cfg_ReadDbl()
    ; проверка загруженного значения на диапазон [0,05..10,0]
    seg011:06E9         fld     [flt10]
    seg011:06EE         add     sp, -8
    seg011:06F1         fstp    [bp+var_16]   ; max = 10.0
    seg011:06F5         fld     [minGravity]
    seg011:06FA         add     sp, -8
    seg011:06FD         fstp    [bp+var_1E]   ; min = 0.05
    seg011:0701         fld     [curGravity]
    seg011:0706         add     sp, -8
    seg011:0709         fstp    [bp+var_26]   ; cur
    seg011:070D         wait
    seg011:070F         push    cs
    seg011:0710         call    near ptr CheckRangeDbl
    seg011:0713         fstp    st            ; результат нах...
    seg011:0716         add     sp, 24
    <....cut....>
    
    ; double CheckRangeDbl(double cur, double min, double max)
    seg011:0077 proc    CheckRangeDbl far
    seg011:0077 var_2   = word ptr -2
    seg011:0077 @@cur   = qword ptr  6
    seg011:0077 @@min   = qword ptr  0Eh
    seg011:0077 @@max   = qword ptr  16h
    seg011:0077         push    bp
    seg011:0078         mov     bp, sp
    seg011:007A         dec     sp
    seg011:007B         dec     sp
    seg011:007C         fld     [bp+@@cur]
    seg011:0080         fcomp   [bp+@@min]
    seg011:0084         fnstsw  [bp+var_2]
    seg011:0088         wait
    seg011:008A         mov     ax, [bp+var_2]
    seg011:008D         sahf
    seg011:008E         jnb     @@chk_max     ; if (cur < min)
    seg011:0090         fld     [bp+@@min]    ;     st(0) = min
    seg011:0094         jmp     @@exit
    seg011:0096 @@chk_max:                    ; else
    seg011:0096         fld     [bp+@@cur]
    seg011:009A         fcomp   [bp+@@max]
    seg011:009E         fnstsw  [bp+var_2]
    seg011:00A2         wait
    seg011:00A4         mov     ax, [bp+var_2]
    seg011:00A7         sahf
    seg011:00A8         jbe     @@ret_cur     ; if (cur > max)
    seg011:00AA         fld     [bp+@@max]    ;     st(0) = max
    seg011:00AE         jmp     @@exit
    seg011:00B0 @@ret_cur:                    ; else
    seg011:00B0         fld     [bp+@@cur]    ;     st(0) = cur
    seg011:00B4 @@exit:
    seg011:00B4         fst     [bp+@@cur]
    seg011:00B8         wait
    seg011:00BA         mov     sp, bp
    seg011:00BC         pop     bp
    seg011:00BD         retf                  ; return st(0)
    seg011:00BD endp    CheckRangeDbl

    Из старой, очень популярной игрухи (Scorshed Earth). Все как положено, подгружаемые из cfg-файла данные проходят проверку. Только вот результаты проверок (для double, для int и прочих типов) попросту отбрасываются :) Даже не знаю, как такое можно было накодить, на невнимательность непохоже - такого кода довольно много.

    DemonId7, 12 Июня 2011

    Комментарии (21)
  9. Си / Говнокод #6935

    +143

    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
    // find the start and end of the upload file.
    static FILE * _uploadGet(request *wp, unsigned int *startPos, unsigned *endPos) {
       
       FILE *fp=NULL;	
    	struct stat statbuf;	
    	unsigned char c, *buf; 
    	   
    	
    	if (wp->method == M_POST)
    	{
    	   fstat(wp->post_data_fd, &statbuf);
    		lseek(wp->post_data_fd, SEEK_SET, 0);
          
    		printf("file size=%d\n",statbuf.st_size);
    		fp=fopen(wp->post_file_name,"rb");
    		if(fp==NULL) goto error;
    	}
    	else goto error;
    
       
       //printf("_uploadGet\n");
       do
    	{
    		if(feof(fp))
    		{
    			printf("Cannot find start of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		break;
    	}while(1);
    	(*startPos)=ftell(fp);
    
       if(fseek(fp,statbuf.st_size-0x200,SEEK_SET)<0) 
          goto error;
    	do
    	{
    		if(feof(fp))
    		{
    			printf("fmmgmt: Cannot find end of file\n");
    			goto error;
    		}
    		c= fgetc(fp);
    		if (c!=0xd)
    			continue;
    		c= fgetc(fp);
    		if (c!=0xa)
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		c= fgetc(fp);
    		if (c!='-')
    			continue;
    		break;
    	}while(1);
    	(*endPos)=ftell(fp);
    
       return fp;
    error:
       return NULL;
    }

    Вот так вот китайцы парсят MIME при загрузке прошивки в роутер.

    SadKo, 12 Июня 2011

    Комментарии (7)
  10. JavaScript / Говнокод #6934

    +164

    1. 1
    2. 2
    // Eolas workaround for IE (Thanks Kurt!)
    		if(jQuery.browser.msie){ this.outerHTML = this.outerHTML; }

    Kurt == К.О.?

    jQuery, 12 Июня 2011

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