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

    +97

    1. 1
    2. 2
    3. 3
    if (stage < 4 || stage > 4) {
    	loadWizard();
    }

    ситуации или-или (с)

    squaremas, 21 Января 2011

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

    +90

    1. 1
    2. 2
    if (name != null ? !name.equals(module.name) : module.name != null) return false;
    return true;

    Jk, 20 Января 2011

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

    +75

    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
    public static Cursor getListGroupCursor(Activity activity,
    			ShopListItem list, boolean marked) {
    		long state = marked ? Cells.PURCHAZED_STATE : Cells.WANT_TO_BUY_STATE;
    		String where;
    		String[] arg;
    		if (list.isAutoList()) {
    			where = Cells.STATE + " = ?";
    			arg = new String[] { Long.toString(state) };
    		} else {
    			where = Cells.LIST_ID + " = ? AND " + Cells.STATE + " = ?";
    			arg = new String[] { Long.toString(list.getId()),
    					Long.toString(state) };
    		}
    
    		Cursor c = activity.managedQuery(Cells.CONTENT_URI,
    				new String[] { Cells.CATEGORY_ID }, where, arg,
    				Cells.DISTINCT_SORT_ORDER);
    
    		ArrayList<Long> ids = new ArrayList<Long>();
    		while (c != null && c.moveToNext()) {
    			ids.add(new Long(c.getLong(c.getColumnIndex(Cells.CATEGORY_ID))));
    		}
    		if (c != null) {
    			c.close();
    		}
    		int count = ids.size();
    		String whereGroup = null;
    		String[] argGroup = null;
    		if (count > 0) {
    			whereGroup = "";
    			argGroup = new String[count];
    			for (int i = 0; i < count; i++) {
    				if (i < count - 1) {
    					whereGroup += (Categories._ID + "= ? OR ");
    				} else {
    					whereGroup += (Categories._ID + "= ?");
    				}
    
    				argGroup[i] = Long.toString(ids.get(i));
    				// Log.i(tag, "getListGroupCursor "+argGroup[i]);
    			}
    		} else {
    			whereGroup = Categories._ID + "= -1";
    		}
    		Cursor groupCursor = activity.managedQuery(Categories.CONTENT_URI,
    				null, whereGroup, argGroup, Categories.DEFAULT_SORT_ORDER);
    		return groupCursor;
    	}

    Работа с ContentProvider в android. Выборка категорий, id которых присутствуют в результатах первой выборки (по признаку)

    rphx, 19 Января 2011

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

    +75

    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
    class AboutProgram extends Frame{
    	
    	AboutProgram(String s){
    		super(s);
    		setBounds(50,50,420,420);
    		setVisible(true);
    		setLayout(null);
    		addWindowListener(new WindowAdapter(){
    			public void windowClosing(WindowEvent ev){
    				dispose();
    			}
    		});
    	}
    	@Override
    	public void paint(Graphics g){
    		g.setFont(new Font("Times New Roman",Font.BOLD,30));
    		g.setColor(new Color(200,10,100));
    		g.drawString("Java-сапёр\n",150,50);
    		g.setColor(Color.blue);
    		g.setFont(new Font("Serif", Font.ITALIC | Font.BOLD, 15)); 
    		g.drawString("Автор \t  div#[email protected]\n",20,100);
    		g.drawString("Период написания demo version \t 29.10.2005 - 04.11.2005",20,120);
    		g.drawString("Правила игры \n ",20,140);
    		g.drawString("Вы должны пометить все мины флажками \n ",40,160);
    		g.drawString("Флажок ставится правой кнопкой мыши\n ",40,180);
    		g.drawString("Открыть отдельное поле можно левой кнопкой мыши\n ",40,200);
    		g.drawString("Если поле пустое, то открываются все\n ",40,220);
    		g.drawString("соседние поля, в которых нет мин\n ",40,240);
    		g.drawString("Цифра в отдельном поле означает, что\n ",40,260);
    		g.drawString("в соседних клетках соответствующее число мин\n ",40,280);
    		g.drawString("Игра заканчивается, если\n ",20,300);
    		g.drawString("1) Все мины помечены флажками\n ",40,320);
    		g.drawString("2) Вы наткнулись на мину!\n ",40,340);
    		g.setColor(Color.red);
    		g.drawString("Помните!\n ",20,360);
    		g.setColor(Color.blue);
    		g.drawString("Сапёр ошибается только один раз!\n ",40,380);
    	}  
    }

    Ну и о программе "избитого" сапера.

    dwinner, 18 Января 2011

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

    +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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    class Scribble extends Component implements ActionListener {
    	
        protected Frame f;
        protected int w,h;
        
        public Scribble(Frame f, int w, int h){		
    	this.f = f;
    	this.w = w;
            this.h = h;
        }   
        @Override
        public Dimension getPreferredSize(){
    	return new Dimension(w,h);
        }	
        public void actionPerformed(ActionEvent event){		
        	String s = event.getActionCommand();
        	if(s.equals("Красный")) 
        	  Miner.currColor = Color.red;
        	else if(s.equals("Зелёный")) 
        	  Miner.currColor = Color.green;
        	else if(s.equals("Синий")) 
        	  Miner.currColor = Color.blue;
        	else if(s.equals("Серый")) 
        	  Miner.currColor = Color.gray;
        }
    }

    C меню выбора цвета полный провал
    dwinner - заслуженное звание java-быдло 2005!

    dwinner, 16 Января 2011

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

    +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
    public void Mina(int x, int y){
            Dimension d = this.getSize();
    	int dx = d.width/(MC+2);
    	int dy = d.height/(MR+2);
    	Graphics g = getGraphics();
            Graphics2D gr = (Graphics2D)g;
            GradientPaint gp = new GradientPaint(x, y, Color.white, x+dx, y+dy, Color.black, true);
            gr.setPaint(gp);
            gr.fill(new Ellipse2D.Double(x,y,dx,dy));
    	g.setColor(Color.black);
    	g.drawLine(x-1,y-1,x-1,y+dy);
    	g.drawLine(x-1,y-1,x+dx,y-1);
    	g.drawLine(x-1+dx,y-1,x-1+dx,y+dy);
    	g.drawLine(x-1,y-1+dy,x-1+dx,y-1+dy);
    	g.setColor(Miner.currColor);
    }

    Создаем рисунок программно! Градиентный шарик для Java - быстро ли?!

    dwinner, 16 Января 2011

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

    +78

    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
    public Miner(String s) {	    
            super(s);
            MenuBar mb = new MenuBar();
            setMenuBar(mb);
            Menu mFile = new Menu("Файл");
            Menu mHelp = new Menu("Справка");
            mb.add(mFile);
            mb.setHelpMenu(mHelp);
            MenuItem create = new MenuItem("Новая игра",new MenuShortcut(KeyEvent.VK_N));
            Menu mColor = new Menu("Цвет");
            MenuItem mGreen = new MenuItem("Зелёный");
            MenuItem mRed = new MenuItem("Красный");
            MenuItem mBlue = new MenuItem("Синий");
            MenuItem mGray = new MenuItem("Серый");
            mColor.add(mGreen);
            mColor.add(mRed);
            mColor.add(mBlue);
            mColor.addSeparator();
            mColor.add(mGray);
            Menu mHard = new Menu("Сложность");
            MenuItem mDummy = new MenuItem("Новичок");
            MenuItem mUser = new MenuItem("Среднячок");
         	MenuItem mHaker = new MenuItem("Проффи");
         	mHard.add(mDummy);
         	mHard.add(mUser);
         	mHard.add(mHaker);
         	MenuItem mSound = new MenuItem("Звук");
         	mSound.setEnabled(false);
         	MenuItem exit = new MenuItem("Выход",new MenuShortcut(KeyEvent.VK_X));
            mFile.add(create);
            mFile.add(mColor);
            mFile.add(mHard);
            mFile.add(mSound);
            mFile.addSeparator();      
            mFile.add(exit);
            Scribble scr = new Scribble(this,480,480);
            mGreen.addActionListener(scr);
            mRed.addActionListener(scr);
            mBlue.addActionListener(scr);
            mGray.addActionListener(scr);
            add(scr);
            Difficult diff = new Difficult(this,480,480);
            mDummy.addActionListener(diff);
            mUser.addActionListener(diff);
            mHaker.addActionListener(diff);
            add(diff);
            create.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    status = 0;
                    repaint();
                    RandomArray();
                }
            });
            exit.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    System.exit(0);
                }
            });
            MenuItem mInfo = new MenuItem("О программе",new MenuShortcut(KeyEvent.VK_H));
            mHelp.add(mInfo);
            mInfo.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    new AboutProgram("О программе");
                }
            });
            setBounds(0,0,480,480); // setSize(480,480); 
            setVisible(true);
            setLayout(null);
            addMouseListener(this);
            addWindowListener(new WinClose());
    }

    Всё, что можно и что нельзя я запихнул в конструктор

    dwinner, 14 Января 2011

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

    +145

    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
    public String readMessage(String subject) throws Exception {
        String messageString = null;
        try {
          for (final Message message : Arrays.asList(this.inbox.getMessages())) {
            if (subject.equals(message.getSubject())) {
              messageString = "To: " + Arrays.asList(message.getAllRecipients()) + "n" + "From: " + Arrays.asList(message.getFrom()) + "n" + "Sent: "
                + message.getSentDate() + "n" + "Subject: " + message.getSubject() + "n" + "Text: " + message.getContent();
              break;
            }
          }
        } catch (final MessagingException me) {
          throw new Exception("Error reading Inbox", me);
        } catch (final IOException e) {/* Not using streams, only plain text */
        }
        return messageString;
      }

    тестовый javamail клиент(отправка тест-письма,поиск его и удаление). В методе ищем письмо с нужной темой, возвращаем текстовое представление.

    говно, кроме очевидных ляпов, в том, что мы лазием по всем сообщениям, сверяя тему, а получение письма занимает около секунды. Надо ли говорить, что в современном ящике писем тысячи...
    для сравнения:
    если заменить в 4 строчке конструкцию

    Arrays.asList(this.inbox.getMessages())
    на
    new SubjectTerm(subject)
    , то время выполнения сокращается с (неизвестно,точно более времени чаепития) до пары секунд = )

    Lure Of Chaos, 14 Января 2011

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

    +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
    @Name("solr")
    @AutoCreate
    public class SolrClient {
        @Create
        public void init() {
            try {
                server = startRemoteSolr();
            } catch (Exception e) {
                log.error(e, e);
            }
        }
    
        public SolrServer startRemoteSolr() throws MalformedURLException, SolrServerException {
            CommonsHttpSolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");
            solr.setRequestWriter(new BinaryRequestWriter());
            return solr;
        }
    
    }

    Seam. Перевод для непричастного: на старте сайта вызывается метод startRemoteSolr(). Solr - это поисковый движок. Если он не запустится, на сайте не будет работать поиск. И если на запуске Solr будет ошибка, то в лог она попадёт просто как exception + stack trace.

    Что не так в коде? Очевидно, его писали люди, не задумываясь об эксплуатации, что свойственно новичкам. А ведь устранение проблем в рабочем сайте - это приоритет номер один. Сама разработка сайта, сидя в удобном кресле с кашкой кофе - где-то сильно ниже.

    Так вот, что не так?

    1. При выводе ошибок надо писать - что это за ошибка. В данном случае: "Запуск поисковика неудался, ПОИСК НА САЙТЕ РАБОТАТЬ НЕ БУДЕТ." И уже потом - stack trace.

    2. Если некая ошибка связана с ресурсами - сетевыми, или на файловой системе, в логе надо также описывать этот ресурс. Т.е. "Не удалось запустить клиент поисковика по адресу http://localhost:8983/solr". Что бы из логов сразу было видно, что порт указан правильно или нет, хост и тд.

    Но выпускникам ВМК МГУ такие вещи неведомы, они слишком крутые что бы опускаться до таких мелочей. Чайники, хуле.

    yvu, 12 Января 2011

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

    +145

    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
    private boolean save(Writer writer, int indent) {
      StringBuffer nlb = new StringBuffer("\n");
      for (int i = 0; i < indent; i++) {
       nlb.append("\t");
      }
      String nl = nlb.toString();
      Writer s = writer;
      try {
       if (this.isRoot()) {
        s.append("<?xml version=\"1.0\" encoding=\"");
        s.append(Charset.defaultCharset().displayName());
        s.append("\"?>");
       }
       s.append(nl);
       s.append("<");
       s.append(RegNode.EL_NODE);
       s.append(" ");
       s.append(RegNode.ATT_NAME);
       s.append("=\"");
       s.append(this.getName());
       s.append("\">");
       if (this.getData() != null) {
        s.append(nl);
        s.append("\t<");
        s.append(RegNode.EL_DATA);
        s.append(" ");
        s.append(RegNode.ATT_TYPE);
        s.append("=\"");
        s.append(RegNode.getTypeFor(this.getData()));
        s.append("\" ");
        s.append(RegNode.ATT_ENCODE);
        s.append("=\"");
        s.append(this.getMethod());
        s.append("\">");
        s.append(nl);
        s.append("\t\t");
        s.append(RegNode.encodeData(this.getData(), this.getMethod()));
        s.append(nl);
        s.append("\t</");
        s.append(RegNode.EL_DATA);
        s.append(">");
       }
       for (RegNode child : this.getChildren()) {
        s.append("\t");
        child.save(s, indent + 1);
       }
       s.append(nl);
       s.append("</");
       s.append(RegNode.EL_NODE);
       s.append(">");
       return true;
      } catch (IOException e) {
       e.printStackTrace();
      }
      return false;
     }

    не нужен нам ни DOM, ни SAX, ни JAXB!

    из класса, пытающегося реализовать себе "Windows Registry"-подобное древовидное хранилище.
    каюсь, лисапед тоже мой = )

    Lure Of Chaos, 10 Января 2011

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