-
Список говнокодов пользователя konsoletyper
Всего: 15
-
+76
- 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
/* ------------------------------------------------------------ */
private boolean isJspServlet ()
{
if (_servlet == null)
return false;
Class c = _servlet.getClass();
boolean result = false;
while (c != null && !result)
{
result = isJspServlet(c.getName());
c = c.getSuperclass();
}
return result;
}
/* ------------------------------------------------------------ */
private boolean isJspServlet (String classname)
{
if (classname == null)
return false;
return ("org.apache.jasper.servlet.JspServlet".equals(classname));
}
Копался в исходниках Jetty
konsoletyper,
26 Июля 2012
-
+70
- 1
- 2
- 3
- 4
- 5
- 6
- 7
if (s.startsWith("job."))
{
s = s.trim().replaceFirst("job\\.", "");
String name = s.split("\\.")[0];
String paramName = s.split("\\.")[1];
// Ещё немного говнокода, не сильно интересного
}
konsoletyper,
12 Июля 2012
-
+68
- 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
public abstract class AbstractJob implements Job
{
private static ConcurrentHashMap<String, Boolean> mutexes = new ConcurrentHashMap<String, Boolean>();
public abstract void job(JobExecutionContext jec, Logger logger) throws JobExecutionException;
public void execute(JobExecutionContext jec) throws JobExecutionException
{
Logger logger = LoggerLocator.getLogger(this.getClass().getSimpleName());
if (mutexes.containsKey(this.getClass().getSimpleName()))
{
logger.info("Job "+jec.getJobDetail().getName()+" already running");
}
else
{
try
{
mutexes.put(this.getClass().getSimpleName(), true);
job(jec, logger);
}
finally
{
mutexes.remove(this.getClass().getSimpleName());
}
}
}
}
Race condition и передача логгера в параметрах очень порадовали. А ведь вместо написания кривого велосипеда можно было просто @DisallowConcurrentExecution
konsoletyper,
12 Июля 2012
-
+83
- 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
private String toHTML(String unicode)
{
String output = "";
char[] charArray = unicode.toCharArray();
for (int i = 0; i < charArray.length; ++i)
{
if ((int)charArray[i]>255)
{
String s = ""+Integer.toHexString(charArray[i]);
switch (s.length())
{
case 1: s="\\u000"+s; break;
case 2: s="\\u00"+s; break;
case 3: s="\\u0"+s; break;
case 4: s="\\u"+s; break;
default: throw new RuntimeException( s +" is tool long to be a Character");
}
output += s;
}
else
{
output += charArray[i];
}
}
return output;
}
Эпичнейший говнокод! На серваке top показывает нагрузку 10-12. 3000 пользователей, 100 нод, интеграция с SAP, который пачками проводит документы и выдаёт цены, отчёты по остаткам и т.п. И всё это, как оказалось, капля в море по сравнению с 5 человеками техподдержки, которые сидят в аяксовой консоле мониторинга, для которой HTTP-ответ экранируется данным шедевром. Без этого шедевра нагрузка держится в районе 2-3 даже при достаточно большой активности.
konsoletyper,
26 Июня 2012
-
+75
- 1
- 2
- 3
- 4
- 5
- 6
byte[] buf = new byte[8192];
int len = 0;
while ((len = is.read(buf))>0)
{
requestString += new String(buf, 0, len, "UTF-8");
}
Пока никто не кормил туда настоящий UTF-8. Только ascii.
konsoletyper,
28 Мая 2012
-
+155
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
if (
(_methodName == "invoke") ||
(_methodName == "auth") ||
(_methodName == "resetAuth") ||
(_methodName == "registerMethod") ||
(_methodName == "registerAllMethods")
)
{
throw "Illegal method name " +_methodName +" - service method with this name already exist";
}
else
{
eval("ComponentClient.prototype."+_methodName+" = function (_parameters) {return this.invoke(\""+_methodName+"\", _parameters)}")
}
И там много ещё такого
konsoletyper,
30 Марта 2012
-
+71
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
try
{
//PI'я капец??
realStream.close();
}
catch (Throwable t)
{
throw new IOException(t);
}
Примечание: realStream - это обычный java.io.OutputStream
konsoletyper,
26 Марта 2012
-
+76
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
if (s.contains("-"))
{
String[] sa = s.split("-", 2);
for (Long i = Long.parseLong(sa[0].trim()); i<=Long.parseLong(sa[1].trim()); i++)
{
departmentsQueue.add(i);
}
}
else
{
Long id = Long.parseLong(s.trim());
departmentsQueue.add(id);
}
Отличный цикл! Кстати, я бы тут ещё и s.contains() убрал
konsoletyper,
25 Августа 2011
-
−857
- 1
CREATE DOMAIN D_TRIBOOL AS SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN (-1,0,1));
Возможно, вопрос о говнокодистости этой строчки является холиварным. Но меня приведённый отрывок по крайней мере немало удивил.
konsoletyper,
17 Августа 2011
-
+78
- 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
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
public class LoadManager
{
public static Integer DEFAULT_MAX_LOAD_COUNTER = 2;
private ConcurrentHashMap<Class, Integer> loadCounters = new ConcurrentHashMap<Class, Integer>();
public void incLoadCounter(Class clazz)
{
synchronized (loadCounters)
{
if (!loadCounters.containsKey(clazz))
{
loadCounters.put(clazz, 0);
}
if (loadCounters.get(clazz) <= DEFAULT_MAX_LOAD_COUNTER)
{
loadCounters.put(clazz, loadCounters.get(clazz) + 1);
}
}
}
public void testLoadCounterAndWait(Class clazz)
{
synchronized (loadCounters)
{
if (!loadCounters.containsKey(clazz))
{
loadCounters.put(clazz, 0);
}
}
try
{
while (loadCounters.get(clazz) > DEFAULT_MAX_LOAD_COUNTER)
{
Thread.sleep(3000L + (long)Math.floor(5000 * Math.random()));
}
}
catch (InterruptedException e) {}
}
public void decLoadCounter(Class clazz)
{
synchronized (loadCounters)
{
if (!loadCounters.containsKey(clazz))
{
loadCounters.put(clazz, 0);
}
if (loadCounters.get(clazz) > 0)
{
loadCounters.put(clazz, loadCounters.get(clazz) - 1);
}
}
}
}
Наверное, нужно было вот это: http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/Semaphore.html
Ну и ещё порадовал способ постановки потоков в "очередь".
konsoletyper,
17 Августа 2011