Monday, October 17, 2011

CodeSearch will be closed

Are you kidding us??? The very bad news.

at 2012-01-15 will be closed

CodeSearch будет закрыт, виной тому Google+ and Dart

proof

Monday, October 10, 2011

JSON parse in java

google-json (1.7.1) is well designed and very fast with preinitializited new Gson() instance.


Gson gson = new Gson();


time in ms in 10 iterations


Data data = gson.fromJson(json, Data.class);



>>> alexey: GoogleJsonParse.main time =0= 62
>>> alexey: GoogleJsonParse.main time =1= 3
>>> alexey: GoogleJsonParse.main time =2= 6
>>> alexey: GoogleJsonParse.main time =3= 1
>>> alexey: GoogleJsonParse.main time =4= 1
>>> alexey: GoogleJsonParse.main time =5= 9
>>> alexey: GoogleJsonParse.main time =6= 1
>>> alexey: GoogleJsonParse.main time =7= 1
>>> alexey: GoogleJsonParse.main time =8= 2
>>> alexey: GoogleJsonParse.main time =9= 1


If you haven't object to cast the parsed data - you can use Collection or Map


Type typeOfT = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> data = gson.fromJson(json, typeOfT);

How many employees does Google have?


Cool sign up UI

Java date convert: long milliseconds to string iso 8601

1305637849064 to 2011-10-10T07:46:56.394+0000
Time to covert is 1ms


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;


public class MyDateUtilStuff {

private static DateFormat ISO_8601_DATE_TIME = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ");
static {
ISO_8601_DATE_TIME.setTimeZone(TimeZone.getTimeZone("UTC"));
}

public static void main(String[] args) {

String string = "1305637849064";

long startTime = System.currentTimeMillis();

Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(Long.parseLong(string));
String outDate = ISO_8601_DATE_TIME.format(date);

long time = System.currentTimeMillis() - startTime;

System.out.println(">>> alexey: MyDateUtilStuff.main ii = " + time);

System.out.println(">>> alexey: MyDateUtilStuff.main outDate = "
+ outDate);
}

}




Eclipse - java element filter

Sunday, October 9, 2011

The BalusC Code: DateUtil

The BalusC Code: DateUtil: Useful date utilities
An utility class with some fairly simple methods and some very useful methods (such as determineDateFormat() ). This...

Sunday, October 2, 2011

Интересно про обман с газом в Молдове

Текст не мой.

В Европе газ измеряют в калориях, у нас по старинке – в кубометрах Совсем недавно жители Молдовы узнали о раскрытии мошеннической схемы по оплате счетов за газ на предприятии Chisinau-Gaz. Причиненный ущерб, по предварительным подсчетам, составляет более 20 млн леев. А вот инженер, бывший преподаватель физики и химии Дмитрий ВАСИЛЬКОВ утверждает, что обнаружил более масштабный по своему размаху обман населения со стороны поставщиков природного газа. Согласно его подсчетам потребители переплатили и продолжают переплачивать газовщикам миллиарды леев. Масса имеет значение Все дело в давлении и массе газа, который получают бытовые потребители. И то, и другое ниже ГОСТа (газа высокого давления) в десятки раз. Этот факт категорически не признают ни в «Кишинэу-газ», ни в Национальном центре метрологии и стандартизации, ни в суде. Вернее, то, что давление газа в жилых домах низкое, подтверждают, но категорически отказываются взвесить этот самый газ низкого давления. А ведь «газовые» законы в Молдове еще никто не отменял. Согласно этим законам масса одного кубометра природного газа, находящегося в газотранспортной магистрали под высоким давлением (в 101,3 кПа), – чуть больше 700 граммов. А тот же куб газа, сгорающий при работе нашей газплиты, имеет массу всего 20,8 грамма! Заметьте, речь идет об одном и том же кубометре газа за исключением «маленького пустячка», о котором никто не считает нужным упоминать: давление газа в бытовой сети – по норме всего 300 мм водяного столба, или 3 кПа! А бывает и того меньше – и 230, и 125, и даже 22 мм водяного столба. Именно такое давление фиксировал Васильков с помощью самодельного манометра у себя в квартире и на даче. И чем ниже давление, тем меньше масса газа и тем меньшую теплоту он дает. Но наш герой пошел дальше – взвесил газ в Институте химии и физики с помощью точного пиктометра. Еще в 2008 году (уточнить???). Есть акт, подписанный специалистами-физиками. В нем черным по белому написано: измерены, мол, давление и масса одного кубометра газа – 230 мм вод.ст. и 16,64 г соответственно. Такая масса дает всего 220 ккал энергии. Тогда как при сгорании одного куба газа высокого давления (по ГОСТу) выделяется аж 7600 ккал. Правда, этот акт взвешивания так и не признан официальным документом, а в Центре метрологии и стандартизации (имеющем право делать это официально) взвешивать газ низкого давления отказываются, ссылаясь на отсутствие оборудования. «Но это смешно, – утверждает наш собеседник. – В любой захудалой школьной лаборатории есть пиктометр – прибор, позволяющий взвесить газ. Я, конечно, пытался взывать к логике и разуму и премьера, и спикера (тогда еще Михая Гимпу), но безрезультатно. Ни от одного, ни от другого так ответ и не пришел. Зато удивил г-н Парликов, директор НАРЭ. Он согласился прислать своего представителя на процедуру взвешивания «бытового» газа. Но опять же все упирается в якобы отсутствие оборудования…» Или в нежелание того, чтобы общественность все-таки узнала правду. Например, сколько будет стоить 1 куб газа давлением 300 мм, если 1000 кубометров его при давлении 101332 мм стоят 300 долларов? Это несложная школьная задачка на «газовые» законы. А вот ее ответ: 15 банов. Не верите? Пересчитайте. Но почему эту задачку не могут (или не хотят?) решить господа власть имущие? Ведь покупать-продавать газ кубометрами так же оригинально, как колбасу метрами. Теплота сгорания кубометра природного газа зависит от давления, массы, температуры и процентного состава. Поставщик же нас приучил к мысли, что Молдова закупает газ безликими кубометрами. Просто кубический метр, и все… Ни слова о качестве продукта, ни о том, при каком давлении и какой температуре этот газ к нам поступает. Интересно, как бы мы отнеслись к тому, что молоко, разбавленное в 34 раза, нам продали бы по цене молока цельного? А ведь газ и разбавлять ничем не нужно. Он сам расширяется, занимая предоставленный объем. Уменьшил давление продаваемого газа при неизменной цене, значит, сэкономил. Или попро 22 сентября 2011 1:12это спам Или попросту, украл. Отсутствие контроля над потребляемой массой газа (массой, а не объемом) – лучший способ обогатиться поставщикам и распределителям энергетических благ. Неуловимое давление Вся фишка, объясняет Васильков, в коварности наших законов. К примеру, в законе о газе понятия газопроводов и газа высокого, среднего и низкого давления существуют еще с 1998 года, а в методологии расчета тарифов, составленной НАРЭ, словосочетание «газ низкого давления» появился только в ноябре 2009 года. Только почему-то тариф на такой газ совсем не радует. «Я написал очередное заявление в НАРЭ и попросил расшифровать формулу расчета тарифа, показать цифры, которыми они заменяют те или иные показатели, чтобы все было транспарентно, – рассказывает инженер. – В НАРЭ же заявили, что это необязательно. Странные они какие-то: а как же сами считают – с потолка что ли цену берут?» «Я не отстану от «Кишинэу-газ», – продолжает отважный учитель. – Они не отвечают на мое заявление, и я третий раз подал в суд. Пойду опять по кругу – до ЕСЧП. Предыдущие решения судов не признают необходимость взвешивания газа. Мол, всегда измерялся только его объем. И точка. Но я не стыжусь того, что проигрывал все суды. Это же понятно – какой же судья захочет разоблачить сей грандиозный обман. Но ведь из России Молдова получает газ тоже в метрах-кубах, при этом наши газовщики его каждый раз взвешивают, ведут картотеку. А нас дурят, чтобы мы не знали ничего. Да еще и кивают на типовой контракт поставки газа потребителю – «вы же подписали его». В нем указано, что мы получаем газ согласно ГОСТу, то есть газ высокого давления. Но это же не так. Где же выход? Каким образом можно учесть расход газа различными потребителями: в бытовой газплите, городской котельне и т.д.? А все очень просто. Следует платить не за объем потребленного газа, а за его массу. Ну и за качество неплохо бы. Не за абстрактные кубы природного газа, а за конкретные килограммы конкретного метана! Как во всей цивилизованной Европе. Там давно газовые счетчики считают теплотворность газа, его массу и давление. Только кому это нужно в Молдове? Может быть, тем, кто «сидит» на газовой трубе, или тем, кто им «подпевает»? Вряд ли.

Saturday, October 1, 2011

Solved two mysql+tomcat problems

Solved two mysql+tomcat problems:

1. The web application registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web.
2. The web application appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed.


1. The web application registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web.

PROBLEM:
org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/rest] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web


SOLUTION:
http://stackoverflow.com/questions/3320400/jdbc-driver-unregisted-when-the-web-application-stops

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class JdbcListener implements ServletContextListener
{
private static final Logger LOG = Logger.getLogger(JdbcListener.class);

public void contextDestroyed(ServletContextEvent sce)
{
deregisterJdbcDriver();
}

public void contextInitialized(ServletContextEvent sce)
{

}

private void deregisterJdbcDriver()
{
// This manually deregisters JDBC driver, which prevents Tomcat 7 from complaining about memory leaks
Enumeration drivers = DriverManager.getDrivers();
while (drivers.hasMoreElements())
{
Driver driver = drivers.nextElement();
try
{
DriverManager.deregisterDriver(driver);
LOG.info(String.format("Deregistering jdbc driver: %s", driver));
}
catch (SQLException e)
{
LOG.info(String.format("Error deregistering driver %s", driver), e);
}
}
}

}




2. The web application appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed.

PROBLEM:
org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/rest] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed


SOLUTION:
http://bugs.mysql.com/bug.php?id=36565
To upgrage mysql connector jar.
http://dev.mysql.com/downloads/connector/j/

     
mysql
mysql-connector-java
5.1.17