- 
        
        
                +78         
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
 for (int i = 0; i < 100 && components.isEmpty(); i++) {
            try {
                Thread.sleep(1000); 
            } catch (InterruptedException ie) {
                    /* shouldn't happen */
            }
            components = parent.getChildrenByObjType(type);
            LOG.debug("Iteration " + i +"components = " + components);
        }
        if (components.isEmpty()) {
            throw new RuntimeException(COMPONENT_NOT_FOUND);
        }
 
 
            зуб, что через 100 итераций со слипом в 1 секунду, коллекция components точно будет заполнена!
         
             edhex,
            06 Февраля 2015 edhex,
            06 Февраля 2015
 
- 
        
        
                +81         
                            - 1
- 2
- 3
- 4
 try {
    // долго и упорно делаем что-то полезное
} catch (Exception e) {
}
 
 
            После увольнения говнопрограммиста разбираю его творчество.
 Выскочил непонятный Exception? Не беда! Пустой блок catch легко исправит ситуацию и избавит пользователя от неприятных эмоций :)
 
             farnsworth,
            06 Февраля 2015 farnsworth,
            06 Февраля 2015
 
- 
        
        
                +70         
                            - 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
 public class ConcurrentStringStatsProvider implements StringStatsProvider {
    private final ExecutorService executor;
    private final ExecutorCompletionService<CharCounter> service;
    private final int threadNum;
    public ConcurrentStringStatsProvider() {
        //http://stackoverflow.com/questions/13834692/threads-configuration-based-on-no-of-cpu-cores
        threadNum = Runtime.getRuntime().availableProcessors() + 1;
        executor = Executors.newFixedThreadPool(threadNum);
        this.service = new ExecutorCompletionService<CharCounter>(executor);
    }
    @Override
    public synchronized CharCounter countChars(String str) {
        int length = str.length();
        if (length == 0)
            return new CharCounter();
        int chunk = length / threadNum;
        if (chunk == 0)
            chunk = length;
        for (int i = 0; i < threadNum; i++) {
            int start = i * chunk;
            int end = (i + 1) * chunk - 1;
            if (end > length) {
                end = length - 1;
            }
            service.submit(new SubstringTask(start, end, str));
            if (end == length - 1)
                break; //break early
        }
        CharCounter result = null;
        while (true) {
            Future<CharCounter> future = service.poll();
            if (future == null) {
                if (result != null && result.getTotalCount() == length)
                    break;
                else
                    continue;
            }
            CharCounter subResult = null;
            try {
                subResult = future.get();
            } catch (InterruptedException e) {
                log.error("Failed to calculate. Interrupted: ", e);
                Thread.currentThread().interrupt();
            } catch (ExecutionException e) {
                log.error("Calculation error", e);
                throw new IllegalStateException("Calculation error: ", e);
            }
            if (result == null) {
                result = subResult;
            } else if (result.equals(subResult)) {
                break; //!!
            } else {
                service.submit(new MergeTask(result, subResult));
                result = null;
            }
        }
        return result;
    }
    private class SubstringTask implements Callable<CharCounter> {
        private final int start;
        private final int end;
        private final String str;
        public SubstringTask(int start, int end, String str) {
            this.start = start;
            this.end = end;
            this.str = Objects.requireNonNull(str);
        }
       @Override
        public CharCounter call() throws Exception {
            return doJob();
        }
        private CharCounter doJob() {
            CharCounter charCounter = new CharCounter(end - start + 1);
            for (int i = start; i <= end; i++) {
                charCounter.increment(str.charAt(i));
            }
            return charCounter;
        }
    }
    private class MergeTask implements Callable<CharCounter> {
        private final CharCounter cc1, cc2;
        public MergeTask(CharCounter cc1, CharCounter cc2) {
            this.cc1 = Objects.requireNonNull(cc1);
            this.cc2 = Objects.requireNonNull(cc2);
        }
        @Override
        public CharCounter call() throws Exception {
            return CharCounter.merge(cc1, cc2);
 
 
            Первое знакомство с ExecutorCompletionService, решал задачку подсчета количества символов в строке в несколько потоков.
         
             nitrogen,
            05 Февраля 2015 nitrogen,
            05 Февраля 2015
 
- 
        
        
                +72         
                            - 1
- 2
- 3
- 4
- 5
- 6
- 7
 try
{
	    tmp = stored.get( name ) != null;
} catch (Exception e)
{
/***/
}
 
 
            Умело обходим NullPointerException + свой велосипед вместо containsKey
         
             sakkath,
            03 Февраля 2015 sakkath,
            03 Февраля 2015
 
- 
        
        
                +145         
                            - 1
 !String.valueOf(TDContractualMD).equals("null date")
 
 
            Проверка даты на null
         
             Albo1843,
            03 Февраля 2015 Albo1843,
            03 Февраля 2015
 
- 
        
        
                +64         
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
 import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class PolynomialParser {
	
	public Polynomial parse(String rawPolynomial) {
		String source = normalizeSourceString(rawPolynomial);
		Map<Integer, Integer> result = new HashMap<>();
		
		StringTokenizer tokenizer = new StringTokenizer(source, "[+-]", true);
		boolean isCurrentNegative = false;
		int currentDegree;
		int currentCoefficient;
		while (tokenizer.hasMoreTokens()) {
			String currentToken = tokenizer.nextToken();
			if ("-".equals(currentToken)) {
				isCurrentNegative = true;
			} else if ("+".equals(currentToken)) {
				isCurrentNegative = false;
			} else {
				if (currentToken.contains("x")) {
					if (currentToken.contains("^")) {
						String[] tmp = currentToken.split("x\\^");
						currentDegree = Integer.parseInt(tmp[1]);
						int draftCoefficient = Integer.parseInt(tmp[0]);
						currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
					} else {
						currentDegree = 1;
						String[] tmp = currentToken.split("x");
						int draftCoefficient = (tmp.length == 0) ? 1 : Integer.parseInt(tmp[0]);
						currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
					}
				} else {
					currentDegree = 0;
					int draftCoefficient = Integer.parseInt(currentToken);
					currentCoefficient = (isCurrentNegative) ? - draftCoefficient : draftCoefficient;
				}
				result.put(currentDegree, currentCoefficient);
			}
		}
		return new Polynomial(result);
	}
	
	private String normalizeSourceString(String source) {
		String result = source.replaceAll("\\s+","");
		return result.toLowerCase();
	}
}
 
 
            Из сегодняшнего. Парсинг многочленов.
         
             itrofan-ebufsehjidov,
            01 Февраля 2015 itrofan-ebufsehjidov,
            01 Февраля 2015
 
- 
        
        
                +72         
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
 public class Командир {
    private String имя;
    private ПоходНаГерманию поход;
    public Командир(String имя) {
        this.имя = имя;
        поход = new ПоходНаГерманию();
     }
    public Богатство пойтиВпоход()
                         throws НеПолучилосьException {
        return поход.сходить();
    }
}
 
 
            больше русской жабы тут http://www.spring-source.ru/docs_simple.php?type=manual&theme=docs_s  imple&docs_simple=chap01_p03
         
             argamidon,
            24 Января 2015 argamidon,
            24 Января 2015
 
- 
        
        
                +74         
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
 private static File getTmpOutputFile(VirtualFile file) {
        String origPath = file.getRealFile().getAbsolutePath();
        File tmp = new File(origPath + ".tmp");
        // If the temp file already exists
        if (tmp.exists()) {
            long tmpLastModified = tmp.lastModified();
            long now = System.currentTimeMillis();
            // If the temp file is older than the destination file, or if it is
            // older than the allowed compression time, it must be a remnant of
            // a previous server crash so we can overwrite it
            if (tmpLastModified < file.lastModified()) {
                return tmp;
            }
            if (now - tmpLastModified > PluginConfig.maxCompressionTimeMillis) {
                return tmp;
            }
            // Otherwise it must be currently being written by another thread,
            // so wait for it to finish
            while (tmp.exists()) {
                if (System.currentTimeMillis() - now > PluginConfig.maxCompressionTimeMillis) {
                    throw new PressException("Timeout waiting for compressed file to be generated");
                }
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
            }
            // Return null to indicate that the file was already generated by
            // another thread
            return null;
        }
        return tmp;
    }
 
 
            Самый вредный говнокод, который я встречал за последний год.
 При определённых условиях может так случиться, что он ждёт (до 60 секунд!), пока предыдущий временный файл не исчезнет. Он не пытается его удалить, не пытается создать новый файл, ничего не логирует - он просто ждёт, пока файл сам исчезнет.
 
 И у меня как раз так и случилось - из-за совпадения разных событий файл не удалялся, метод ждал 60 секунд, но за это время валились совсем другие вещи по таймауту, и ушло много времени на то, чтобы понять, где же настоящая проблема.
 
 И весь этот геморрой можно было бы благополучно заменить всего-навсего одной сточкой:
 return File.createTempFile(origPath, "tmp");
 
 Исходник - плагин play-press:
 https://github.com/dirkmc/press/blob/master/app/press/io/OnDiskCompressedFile.java
 
             asolntsev,
            21 Января 2015 asolntsev,
            21 Января 2015
 
- 
        
        
                +94         
                            - 1
 MenuGame extends GameMenu
 
 
            
         
             jangolare,
            19 Января 2015 jangolare,
            19 Января 2015
 
- 
        
        
                +73         
                            - 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
 if (K_fire && select == 1 || K_rightbutton && select == 1) {
    GAME_MODE = 9;
    K_fire = false;
    K_rightbutton = false;
    select = 1;
}
if (K_fire && select == 2 || K_rightbutton && select == 2) {
    GAME_MODE = 11;
    FistPaint = true;
    K_fire = false;
    K_rightbutton = false;
    select = 1;
}
if (K_fire && select == 3 || K_rightbutton && select == 3) {
    GAME_MODE = 8;
    K_fire = false;
    K_rightbutton = false;
    select = 1;
}
if (K_fire && select == 4 || K_rightbutton && select == 4) {
    GAME_MODE = 12;
    FistPaint = true;
    K_fire = false;
    K_rightbutton = false;
    select = 1;
}
if (K_fire && select == 5 || K_rightbutton && select == 5) {
    GAME_MODE = 13;
    K_fire = false;
    K_rightbutton = false;
}
if (K_leftbutton) {
    GAME_MODE = 13;
    K_leftbutton = false;
}
 
 
            Обработка выбора пункта в главном меню какой-то игры на java me
         
             xamgore,
            14 Января 2015 xamgore,
            14 Января 2015