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

    +70

    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
    Map<Integer, ArrayList<?>> // filterId : filterParams
    {
    	//
    	// Фильтр занятости квартир (не вписывается в API, поэтому здесь заведены отдельные методы)
    	//
    	
        // хранит: showReserved, DateFrom, DateTo
        private ArrayList<?> reservedFilterParams
    
        public void onDateFilterChanged(Date dateFrom, Date dateTo, boolean showReserved)
        {
    	this.put(QuickFilters.FILTER_RESERVED_ID, reservedFilterParams)
    		
    	reservedFilterParams = ArrayUtils.getOrCreateArrayListWithElements(
    			this, QuickFilters.FILTER_RESERVED_ID, new Boolean(showReserved), dateFrom, dateTo )
    	
    	if (dateFrom == null && dateTo == null)
            {
                reservedFilterParams.set(0,new Boolean(true))
                this.remove(QuickFilters.FILTER_RESERVED_ID)
            }
        }
    
        public boolean doShowReserved()
        {
            return reservedFilterParams ? reservedFilterParams.get(0).booleanValue() : true
        }
    
        public Date getDateFrom()
        {
            return reservedFilterParams?.get(1)
        }
    
        public Date getDateTo()
        {
            return reservedFilterParams?.get(2)
        }
    
    }

    Язык Groovy, стиль - моя переходная форма от Java. Это я сам написал. Вообще мне даже нравится. Есть фильтры для поиска. У каждого фильтра есть только ему ведомые параметры. Приведенный код - это мапка для хранения того, какие пользователь выбрал фильтры и что в них установил.

    Есть API который я делаю, состоящий из типовых фильтров. Этот API автоматически юзает мапку через get/put. Но бывает, придумывается какой-то нетиповой фильтр, и его параметры приходится хардкодить в этой мапке. Короче, мне понравилась идея с мапкой, ведь даже если параметры захардкодены, то они всё равно пихаются в мапку. И читаемость для таких случаев навысоте.

    Bugdog, 20 Октября 2010

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

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    <div style="position:relative">
    
    Всего товаров: 1<br />
    
    На сумму: 5 750,00
    
    
    
    </div>
    
    <script>$("#korzina").load("/korzina.php",{'fsdfsad':true});</script>

    Сей кодъ подгружается аяксом из скрипта /korzina.php в div#korzina. Естественно, тут же выполняется строчка номер 6, и онъ ещё раз подгружается. И ещё раз. И ещё раз...
    Долго думал, почему так тормозит браузер и почему по vnstat'у 64 кбит/с вверх и 24 вниз при простом просмотре страницы. Думаю, админ сервера (там стоит Apache, кеке) хотел бы удавить аффтара не меньше, чем я. Сайт в продакшне с марта.

    telnet, 20 Октября 2010

    Комментарии (26)
  3. Pascal / Говнокод #4403

    +97

    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
    Program zadacha; 
    var 
       i,chislo,x,y,m,n:integer; 
    begin 
       while i<1 do begin 
       for x:=0 to chislo do begin 
       for y:=0 to chislo do begin 
       for m:=0 to chislo do begin 
       for n:=0 to chislo do begin 
       if (chislo=x*x*x+y*y*y) and (chislo=m*m*m+n*n*n) and (x<>m) and (x<>y) and (y<>m) and (y<>n) then i:=1 else chislo:=chislo+1; 
       end; 
       end; 
       end; 
       end; 
       end; 
       Writeln(chislo); 
    end.

    Вот так находят "минимальное натуральное число представимое двумя различными способами в виде суммы кубов двух натуральных чисел"

    kolhoz, 20 Октября 2010

    Комментарии (18)
  4. Java / Говнокод #4402

    +62

    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
    94. 94
    95. 95
    public int doEndTag() throws JspException {
            HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
            try {
             	String fieldValue = fdata;
        		String boolVal="false";
        		StringBuffer field_Value = new StringBuffer();
        		String indexString="";
        		int spaceIndex;
        	     
            	int slen = fieldValue.length();
        		int starti=0;
        		int endi= fsize;
        		if (fdata==null) {
        			 boolVal="true";
        			 field_Value.append("");
        		}
        		
        		if (fsize > slen ||  truncateDataSize > fdata.length() ) {
        		   boolVal="true";
        		   field_Value.append(fdata);
        		}
        		
        		if (truncateDataSize!=0  && fdata.length() > truncateDataSize ) {
        		  fieldValue=""; 	
        		  fieldValue = fdata.substring(starti,truncateDataSize);
        		  slen = fieldValue.length(); 
        		}
        		
        		while(boolVal=="false") {
        			indexString=  fieldValue.substring(starti,endi); 
        			spaceIndex = indexString.lastIndexOf(" ");
        			if (spaceIndex == -1) {
        				int initialLength = field_Value.length(); 
        				field_Value.append(fieldValue.substring(starti,endi));
        				// field_Value.append("<br>");
        				// MT-2238 start
        				int firstIndex = indexString.indexOf("<");
        				int lastIndex  = indexString.indexOf(">");
        				if(lastIndex<firstIndex) {
        					lastIndex  = indexString.indexOf(">",(lastIndex+1));
        				}
        				if(firstIndex >= 0 && lastIndex <= indexString.length() && lastIndex>firstIndex) {
        					if(!(indexString.substring(firstIndex+1,lastIndex).equalsIgnoreCase("br"))) {
        						if(lastIndex<=initialLength && indexString.endsWith(">")) {
        							field_Value.append("<br>");
        						}else {
        							field_Value.insert((initialLength+(lastIndex+1)),"<br>");
        						}
        					}
        				}
        				//in case no HTML tags
        				if(!checkInTag(false, field_Value.toString()) 
        						&& firstIndex==-1 && lastIndex==-1
        				) {
        					// add BR tag
        					field_Value.append("<br>");
        				}
        				// MT-2238 end
        			} else {
        				field_Value.append(fieldValue.substring(starti,starti + spaceIndex));
        				endi = starti + spaceIndex + 1;  
            			if(forceWrap == 1){
                			field_Value.append("<br>");
            			} else{
            				field_Value.append(" ");
            			}
        			}
        			starti = endi;
        			if((endi + fsize) > slen) {
        			   endi = slen - endi;
        			   field_Value.append(fieldValue.substring(starti,starti + endi));
        			   boolVal="true";
        			} else {
        				endi = endi + fsize;
        			}
        		}
        		
        		if (truncateDataSize!=0  && fdata.length() > truncateDataSize && singleLine==false) {
        		   field_Value.append("...");
        		}
        		
        		if (singleLine== true ) {
    	    		 if (fsize<fdata.length())	
    	    		 {	
    	    		  field_Value.delete(0,field_Value.length());		
    	    		  field_Value.append(fieldValue.substring(0,fsize));
    	    		  field_Value.append("...");
    	    		 } 
        		}
        		pageContext.getOut().write(field_Value.toString());
            } catch (Exception e) {
            	log.error(" Exception in image tag ",e);
            }
            return EVAL_PAGE;
        }

    Найдено в кастомном теге нашева прилаженийа. Писано паходу интусами %) ы

    Вся соль в строке (#29):
    while(boolVal=="false")

    И что самое интересное.. Оно работает!! :DDD ы

    А работает как я выяснил изза 'smart' части java %)) так как boolVal инитиализируется в этом же методе, то boolVal = "false" и "false" это 1 и тот же объект %) паэтаму и проходит сравнение. Т.е. java подменяет "false" во всех местах на адин и тот же объект %) но если бы "false" пришёл снаружи, то всё.. это другой объект %)

    ппц, я когда увидел долго бился головой ап стенку %)) в папытках понять, почему оно работает %))
    ксати я точно не уверен, но помойму если в настройках компилятора покапаться, то думаю можно сделать так чтобы каждой объявление "false" было новым объектом (или нельзя? О_о хотя ясно, что это бесмыслено), тогда работать не будит %) ы

    Pepper-X, 20 Октября 2010

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

    +163

    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
    <?php
    		// ...
    		////////////////
    		$_engines = unserialize(SENGINES);
    
    		if (0 == count($loading)) return -3;
    		$select=-1;
    		$delta=0;
    		$me=count($_engines);
    		$ms=count($args);
    
    		if (count($loading))
    		foreach ($loading as $k=>$v)
    		{
    			if (!isset($v['all'])) continue;
    			if (0==$v['all']) continue;
    			$tmp=0;
    			switch(1)
    			{
    				case $ms > 0:
    					foreach ($args as $engine)
    					{
    						if (isset($v[$engine]))
    						$tmp += (float) $v[$engine]/(float) $v['all'];
    					}
    					$tmp=$tmp/$ms;
    					break;
    
    				case $me > 0:
    					foreach ($_engines as $engine)
    					{
    						if (isset($v[$engine]))
    						$tmp += (float) $v[$engine]/(float) $v['all'];
    					}
    					$tmp=$tmp/$me;
    					break;
    
    			}
    
    			if ($tmp > $delta)	{$delta=$tmp;$select=$k;}
    		}
    		if (-1 == $select) return false;
    		////////////////
    		// ...

    Автор этого убеждает, что тут где-то производится сортировка.

    Кстати, это, #4071 и #4215 кодил один и тот же автор. Поэтому тут можно наблюдать десериализацию массива из константы, возвращение непонятных отрицательных статусов, очень информативное именование переменных, копипаст и самое классное — "if для лохов, я использую switch(1)"

    user654321, 20 Октября 2010

    Комментарии (6)
  6. ActionScript / Говнокод #4400

    −85

    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
    package {
    	import flash.utils.setInterval;
    	import flash.utils.clearInterval;
    	import flash.display.Sprite;
    	import flash.display.StageScaleMode;
    	import flash.display.StageAlign;
    
    	import pages.loadPage;
    	import pages.rokerPage;
    
    	[SWF(width='600', height='690', backgroundColor='#151515', frameRate='30')]
    
    	public class pokerLegalize extends Sprite {
    		public var uid:String;
    		public var page1:loadPage = new loadPage();
    		public var page2:rokerPage = new rokerPage();
    		private var loadInterval:uint;
    		private var flashVars:Object;
    
    		public function pokerLegalize()
    		{
    			stage.scaleMode = StageScaleMode.NO_SCALE;
    			stage.align = StageAlign.TOP_LEFT;
    			addChild(page1);
    			loadInterval = setInterval(loadComplite, 100);
    		}
    
    		private function loadComplite():void
    		{
    			if(page1.getLoadStatus()) {
    				clearInterval(loadInterval);
    				flashVars = stage.loaderInfo.parameters as Object;
    							
    				removeChild(page1);
    				addChild(page2);
    				pageResezer(2);
    			}
    		}
    
    		private function pageResezer(page:uint):void
    		{
    			if(page == 2) {
    				page2.wall.wall.wallArray = page1.getVars('wallArray');
    				page2.friendsWall.friendsWall.friendsFull = page1.getVars('friendsArray');
    				
    				page2.friendsWall.friendsWall.createWall();
    				page2.friendsWall.resize();
    				
    				page2.wall.wall.lengthXML = page1.getterBrick.getLenght();
    				page2.wall.wall.setBrokenMode(true, false, 1);
    				page2.wall.setFlashVars(flashVars);
    				page2.wall.addAllEventListeners();		
    				page2.flashVars = flashVars;
    			}
    		}
    	}
    }

    По ТЗ, мне надо разобраться в этом коде... Внимание на функцию pageResezer... хотя интервал тоже не плох @_@

    KirAmp, 20 Октября 2010

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

    +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
    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
    class Request_BrowserDetector
    {
      public static function singleton()
      {
        if (null === self::$_instance)
        {
          self::$_instance = new self;
        }
        
        return self::$_instance;
      }
      
      protected static $_instance = null;
    
      public function __construct()
      {
        $this->_sigs = Application::singleton()->cfg('request.browser.signatures');
      }
      
      public function detect($str)
      {
        if (isset($this->_cache[$str]))
        {
          $out = $this->_cache[$str];
        }
        else
        {
          $notFound = true;
          
          foreach ($this->_sigs as $k => $v)
          {
            if (false !== strpos($str, $k))
            {
              $out = $v;
              $notFound = false;
              break;
            }
          }
          
          if ($notFound)
          {
            $out = $this->_escape($str);
          }
          
          $this->_cache[$str] = $out;
        }
        
        return $out;
      }
      
      protected function _escape($str)
      {
        return mysql_real_escape_string($str);
      }
      
      protected $_sigs, $_cache = array();
    }

    синглетон такой, синглетон

    seonull, 20 Октября 2010

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

    +72

    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 static Document getDoc(CarPartsAd ad) {
            Document doc = new Document();
            doc.add(new Field("id", ad.getId().toString(), YES, NOT_ANALYZED));
            doc.add(new Field("mark", Long.toString(ad.getMarkId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("model", Long.toString(ad.getModelId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("frame", Long.toString(ad.getFrameId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("engine", Long.toString(ad.getEngineId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("type", Long.toString(ad.getTypeId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("front_rear", Long.toString(ad.getFrontRear()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("right_left", Long.toString(ad.getRightLeft()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("up_down", Long.toString(ad.getUpDown()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("contact", Long.toString(ad.getContactId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("town", Long.toString(ad.getTownId()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("part_state", Long.toString(ad.getPartState()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("original_flag", Long.toString(ad.getOriginalFlag()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("price", Integer.toString(ad.getPriceRub()), Field.Store.YES, NOT_ANALYZED));
            doc.add(new Field("price_flag", (ad.getPriceRub() > 0 ? "0" : "1"), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("date_sort", Long.toString(ad.getSort()).substring(0, 9), Field.Store.YES, NOT_ANALYZED));
            doc.add(new Field("oem", format(ad.getOem()).replaceAll(" ", "").toLowerCase(), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("producer_code", format(ad.getProducerCode()).replaceAll(" ", "").toLowerCase(), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("uplift_rating", Integer.toString(ad.getUpliftRating()), Field.Store.NO, NOT_ANALYZED));
            doc.add(new Field("ads_source", Integer.toString(ad.getAdsSource()), Field.Store.NO, NOT_ANALYZED));
            return doc;
        }

    лучик ненависти авторам lucene за то, что заставляют писать такое :)

    zlob.jc, 20 Октября 2010

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

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    matrix[0][0]=3;
    matrix[0][1]=1;
    matrix[0][2]=1;
    matrix[0][3]=6;
    matrix[1][0]=0;
    matrix[1][1]=-2;
    matrix[1][2]=1;
    matrix[1][3]=-3;
    matrix[2][0]=2;
    matrix[2][1]=-1;
    matrix[2][2]=4;
    matrix[2][3]=-1;
    
    cout<<"MATRIX:"<<endl;
    for (i=0;i<4;i++) {
            cout<<matrix[0][i]<<" ";
               if (i==3) {
                   cout<<" "<<endl;
                       for (i=0;i<4;i++) {
                              cout<<matrix[1][i]<<" ";
                                if (i==3) {
                                    cout<<" "<<endl;
                                        for (i=0;i<4;i++) {
                                            cout<<matrix[2][i]<<" ";};};};};};

    Вывод двумерного массива :)

    petro2033, 20 Октября 2010

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

    +232

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function get_user_balls($user_id)
    {
    //blah blah blah
    }
    
    function destroy_user_balls($user_id)
    {
    //blah blah blah
    }

    Никогда не догадаетесь, что это за функции. Ржал до слез. Готовы? Возвращает кол-во баллов, набранных пользователем и очищает их.

    j0kz, 19 Октября 2010

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