http://mercurial.selenic.com/wiki/HgSubversion
http://mercurial.selenic.com/wiki/HgGit
+ A guide to getting the hg-git Mercurial plugin to work on a Windows machine
2013-03-21
2013-03-12
Все опции java
# java -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version [другие опции и аргументы]
http://q-redux.blogspot.ru/2011/01/inspecting-hotspot-jvm-options.html
http://javarevisited.blogspot.ru/2011/11/hotspot-jvm-options-java-examples.html
Версия попроще
# java -XX:+PrintCommandLineFlags -version [другие опции и аргументы]
http://q-redux.blogspot.ru/2011/01/inspecting-hotspot-jvm-options.html
http://javarevisited.blogspot.ru/2011/11/hotspot-jvm-options-java-examples.html
Версия попроще
# java -XX:+PrintCommandLineFlags -version [другие опции и аргументы]
2012-12-23
MSSQL и ошибки
Если вы работаете с MSSQL вообще или с MSSQL через jdbc, то от этих ссылок вы получите удовольствие!
Подробнейшее описание как обрабатывать ошибки в MSSQL:
http://www.sommarskog.se/error-handling-I.html
http://www.sommarskog.se/error-handling-II.html
кратенькая выжимка http://weblogs.sqlteam.com/dang/archive/2007/10/20/Use-Caution-with-Explicit-Transactions-in-Stored-Procedures.aspx
Ссылки которые я искал два дня. Вся порочная правда о MSSQL и jdbc (они об одном и том же)!
http://blogs.msdn.com/b/jdbcteam/archive/2008/08/04/why-doesn-t-executeupdate-give-me-the-exception-i-expected.aspx
http://blogs.msdn.com/b/jdbcteam/archive/2008/08/01/use-execute-and-getmoreresults-methods-for-those-pesky-complex-sql-queries.aspx
PS: если вы используете Java 6, MSSQL 2000 и jtds, то я сделал работающую с MSSQL2000 Java 6 версию jtds 1.3 http://sourceforge.net/p/jtds/bugs/683/
Подробнейшее описание как обрабатывать ошибки в MSSQL:
http://www.sommarskog.se/error-handling-I.html
http://www.sommarskog.se/error-handling-II.html
кратенькая выжимка http://weblogs.sqlteam.com/dang/archive/2007/10/20/Use-Caution-with-Explicit-Transactions-in-Stored-Procedures.aspx
Ссылки которые я искал два дня. Вся порочная правда о MSSQL и jdbc (они об одном и том же)!
http://blogs.msdn.com/b/jdbcteam/archive/2008/08/04/why-doesn-t-executeupdate-give-me-the-exception-i-expected.aspx
http://blogs.msdn.com/b/jdbcteam/archive/2008/08/01/use-execute-and-getmoreresults-methods-for-those-pesky-complex-sql-queries.aspx
PS: если вы используете Java 6, MSSQL 2000 и jtds, то я сделал работающую с MSSQL2000 Java 6 версию jtds 1.3 http://sourceforge.net/p/jtds/bugs/683/
Полезные ссылки и утилиты
- текстовый редактор Sublime Text 2 (хотя я, из-за его самобытной раскладки, пользуюсь http://www.jetbrains.com/idea и http://notepad-plus-plus.org)
- редактор различных диаграмм diagram.ly он же draw.io
- если нужна offline утилита: yEd описание и сайт производителя
- генератор UML схем (диаграмм) yuml.me
- доступ к удаленному ПК 2.0 LogMeIn
- скрипт анализирующий ваш MySQL и дающий советы по его лучшей настройке: mysqltuner.com
- утилита innotop для MySQL
1. Download latest TermReadKey? from CPAN: http://search.cpan.org/~stsi/ TermReadKey/ReadKey.pm
2. tar -zxvf TermReadKey-2.30.02.tar.gz
3. perl Makefile.PL
4. make test
5. make install
Innotop manual http://innotop.googlecode.com/svn/html/index.html, в частности:
innotop -u [username] -p [password] -h [hostname]
- редактор различных диаграмм diagram.ly он же draw.io
- если нужна offline утилита: yEd описание и сайт производителя
- генератор UML схем (диаграмм) yuml.me
- доступ к удаленному ПК 2.0 LogMeIn
- скрипт анализирующий ваш MySQL и дающий советы по его лучшей настройке: mysqltuner.com
- утилита innotop для MySQL
1. Download latest TermReadKey? from CPAN: http://search.cpan.org/~stsi/
2. tar -zxvf TermReadKey-2.30.02.tar.gz
3. perl Makefile.PL
4. make test
5. make install
Innotop manual http://innotop.googlecode.com/svn/html/index.html, в частности:
innotop -u [username] -p [password] -h [hostname]
2011-12-04
Памятка по установке JRebel
Прежде всего хочу сказать, что настраивать-то особо нечего ;-)
Можно посмотреть презентацию "для вдохновения" zeroturnaround.com/jrebel/presentations.
Я использую IntelliJ IDEA, для других IDE инструкция может слегка отличаться, см zeroturnaround.com/resources .
1. Идем в IDE settings | plugins и находим среди доступных JRebel Plugin, Download and Install, Apply (restart).
С сайта zeroturnaround.com/jrebel/current ничего качать не нужно, все включено в плагин.
2. В IDE settings появится пункт JRebel, там нажимаем Launch JRebel Configuration Wiazard...
Первый пункт активация - проще и дешевле начать с evolution.
Второй пункт license пропускаем - evolution сам сгенерирует и активизирует лицензию на 30 дней.
3. пункт Choose settings выбираем какая IDE используется, тогда следующие пункты будут показывать инструкции по мелкой оптимальной подстройке этой IDE.
Следует выставить три 'галочки' в IDE по инструкциям в последующих пунктах.
Закончили с установкой и конфигурированием.
4. В Project view проекта в pop-up menu выбираем Generate rebel.xml
Далее как сделал я и как удобно мне, возможно вам тоже понравится :-)
5. Сохраняем rebel.xml в [webroot]/WEB-INF/classess
Это единственный, довольно простой конфигурационный файл JRebel.
Основные настройки описаны в zeroturnaround.com/jrebel/how-to-configure-rebel-xml
На всякий случай ссылка на полное описание (скорее всего не понадобится): zeroturnaround.com/jrebel/configuration
Настройки по умолчанию мне не подошли т.к.
a. я использую Apache Click, который при старте достает некоторые ресурсы в [webroot], а так как по умолчанию используется [webroot] в исходниках, то система контроля версий обнаруживает кучу новых файлов.
b. в проекте много модулей, которые компилируются в jar-ы и кладутся в [webroot]/WEB-INF/lib
Поэтому пришлось прописать папку target/название_web_app - как [webroot],
и несколько target/production/название_модуля - как путь для поиска классов, где:
* target стандартное maven-название папки куда все компилируется,
* production - папка принудительно создаваемая IDEA,
* название_web_app - путь который вы прописали в Web Application exploded artifact, e.g. voip, smsrouter, etc,
* название_модуля - IDEA создает для каждого модуля свои подпапки в production.
Итоговый файл:
Готово!
Далее просто запускаем Tomcat не обычной зеленой стрелочкой, а стрелочкой с "jr".
Вносим изменения в код, компилируем (IDEA перед этим сохраняет) Ctrl+Shift-F9 или Ctrl-F9, F5 в браузере и видим обновление.
PS: если хочется ускорить первый старт Tomcat, то мой предыдущий совет "скопировать папку VAADIN из vaadin.jar в [webroot]" по прежнему применим.
Кроме того, возможно вам захочется избавиться от сериализации HTTP сессии между рестартами Tomcat (пользы от этой сериализации в случае Vaadin не очень много), для этого в [webroot]/META-INF нужно поместить файл context.xml вида:
Аттрибут antiJARLocking="true" опционален (можно убрать). Он нужен если web приложение не освобождает какие-то классы и не выгружается Tomcat (свой код лучше от такого чистить, но бывают такие библиотеки третьих сторон).
Можно посмотреть презентацию "для вдохновения" zeroturnaround.com/jrebel/presentations.
Я использую IntelliJ IDEA, для других IDE инструкция может слегка отличаться, см zeroturnaround.com/resources .
1. Идем в IDE settings | plugins и находим среди доступных JRebel Plugin, Download and Install, Apply (restart).
С сайта zeroturnaround.com/jrebel/current ничего качать не нужно, все включено в плагин.
2. В IDE settings появится пункт JRebel, там нажимаем Launch JRebel Configuration Wiazard...
Первый пункт активация - проще и дешевле начать с evolution.
Второй пункт license пропускаем - evolution сам сгенерирует и активизирует лицензию на 30 дней.
3. пункт Choose settings выбираем какая IDE используется, тогда следующие пункты будут показывать инструкции по мелкой оптимальной подстройке этой IDE.
Следует выставить три 'галочки' в IDE по инструкциям в последующих пунктах.
Закончили с установкой и конфигурированием.
4. В Project view проекта в pop-up menu выбираем Generate rebel.xml
Далее как сделал я и как удобно мне, возможно вам тоже понравится :-)
5. Сохраняем rebel.xml в [webroot]/WEB-INF/classess
Это единственный, довольно простой конфигурационный файл JRebel.
Основные настройки описаны в zeroturnaround.com/jrebel/how-to-configure-rebel-xml
На всякий случай ссылка на полное описание (скорее всего не понадобится): zeroturnaround.com/jrebel/configuration
Настройки по умолчанию мне не подошли т.к.
a. я использую Apache Click, который при старте достает некоторые ресурсы в [webroot], а так как по умолчанию используется [webroot] в исходниках, то система контроля версий обнаруживает кучу новых файлов.
b. в проекте много модулей, которые компилируются в jar-ы и кладутся в [webroot]/WEB-INF/lib
Поэтому пришлось прописать папку target/название_web_app - как [webroot],
и несколько target/production/название_модуля - как путь для поиска классов, где:
* target стандартное maven-название папки куда все компилируется,
* production - папка принудительно создаваемая IDEA,
* название_web_app - путь который вы прописали в Web Application exploded artifact, e.g. voip, smsrouter, etc,
* название_модуля - IDEA создает для каждого модуля свои подпапки в production.
Итоговый файл:
<?xml version="1.0" encoding="UTF-8"?> <application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd"> <classpath> <dir name="C:/j/voip.dev/bh/target/production/core"/> <dir name="C:/j/voip.dev/bh/target/production/demo"/> <dir name="C:/j/voip.dev/bh/target/production/mca"/> <dir name="C:/j/voip.dev/bh/target/production/tts"/> </classpath> <web> <link target="/"><!-- если эту папку zip-ануть, получится .war --> <dir name="C:/j/voip.dev/bh/target/voip" /> </link> </web> </application>
Готово!
Далее просто запускаем Tomcat не обычной зеленой стрелочкой, а стрелочкой с "jr".
Вносим изменения в код, компилируем (IDEA перед этим сохраняет) Ctrl+Shift-F9 или Ctrl-F9, F5 в браузере и видим обновление.
PS: если хочется ускорить первый старт Tomcat, то мой предыдущий совет "скопировать папку VAADIN из vaadin.jar в [webroot]" по прежнему применим.
Кроме того, возможно вам захочется избавиться от сериализации HTTP сессии между рестартами Tomcat (пользы от этой сериализации в случае Vaadin не очень много), для этого в [webroot]/META-INF нужно поместить файл context.xml вида:
<?xml version='1.0' encoding='utf-8'?> <Context antiJARLocking="true" > <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- disable session persistence across Tomcat restarts --> <Manager pathname="" /> </Context>
Аттрибут antiJARLocking="true" опционален (можно убрать). Он нужен если web приложение не освобождает какие-то классы и не выгружается Tomcat (свой код лучше от такого чистить, но бывают такие библиотеки третьих сторон).
2011-12-02
Робот полотер
Читаю Робот-полотер Mint - обзор @ exler.ru/expromt/10-11-2011.htm и нахожусь в задумчивости.
Дома у меня нет ковров, везде ламинат т.е. пылесос не нужен, а вот полотер...
Дома у меня нет ковров, везде ламинат т.е. пылесос не нужен, а вот полотер...
2011-12-01
Разное про Java, Web и Vaadin
1. Для качественного ускорения web разработки на Java можно использовать замечательный продукт JRebel zeroturnaround.com/jrebel (кратко, что это). Он позволяет практически полностью отказаться от длительного re-deploy процесса.
Внес исправление в код, перекомпилировал - web приложение уже обновилось (вроде PHP,Python,Ruby). Продукт платный, но есть интересный способ использовать бесплатно: social.jrebel.com.
Кроме того они сделали вкусную zip java lib: новость repo.
2. Если не использовать JRebel и разрабатывать используя Vaadin, то можно обнаружить, что при первом запуске vaadin приложения после старта Tomcat, оно висит несколько секунд (примерно 10 на моём ПК). Исследование показало, что "висит" не сам Vaadin, а вызванный в com.vaadin.terminal.gwt.server.AbstractApplicationServlet#serveStaticResourcesInVAADIN Tomcat.
vaadin.jar довольно большой и чтение ресурсов из него длительная операция.
Чтобы избавится от этой задержки достаточно скопировать папку VAADIN из vaadin.jar в web app root (там где WEB-INF, META-INF, etc).
Если Вам помог этот совет проголосуйте за мой совет на stackoverflow.com/questions/3904735.
3. JavaScript is assembly language for the web ИЛИ кто ещё не написал свой веб-Си?
GWT (Google Web Toolkit) - золотой стандарт компиляции в JS, все знают, многим хочется повторить.
Ладно Google начал страдать NIH синдромом и решил изобрести JavaScript (его придумали/сделали не они) dartlang.org
Но так, чтобы ВСЕ бросились компилировать в JS (включая больных и убогих)...
На 20ом языке начинает пробивать смех:
github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
Даже QBASIC не забыт!
4. Унифицированный способ запускать различные контейнеры e.g. Tomcat из своего кода
cargo.codehaus.org
5. Для копирования DTO между разными уровнями в web приложении пригодится
dozer.sf.net
Внес исправление в код, перекомпилировал - web приложение уже обновилось (вроде PHP,Python,Ruby). Продукт платный, но есть интересный способ использовать бесплатно: social.jrebel.com.
Кроме того они сделали вкусную zip java lib: новость repo.
2. Если не использовать JRebel и разрабатывать используя Vaadin, то можно обнаружить, что при первом запуске vaadin приложения после старта Tomcat, оно висит несколько секунд (примерно 10 на моём ПК). Исследование показало, что "висит" не сам Vaadin, а вызванный в com.vaadin.terminal.gwt.server.AbstractApplicationServlet#serveStaticResourcesInVAADIN Tomcat.
vaadin.jar довольно большой и чтение ресурсов из него длительная операция.
Чтобы избавится от этой задержки достаточно скопировать папку VAADIN из vaadin.jar в web app root (там где WEB-INF, META-INF, etc).
Если Вам помог этот совет проголосуйте за мой совет на stackoverflow.com/questions/3904735.
3. JavaScript is assembly language for the web ИЛИ кто ещё не написал свой веб-Си?
GWT (Google Web Toolkit) - золотой стандарт компиляции в JS, все знают, многим хочется повторить.
Ладно Google начал страдать NIH синдромом и решил изобрести JavaScript (его придумали/сделали не они) dartlang.org
Но так, чтобы ВСЕ бросились компилировать в JS (включая больных и убогих)...
На 20ом языке начинает пробивать смех:
github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS
Даже QBASIC не забыт!
4. Унифицированный способ запускать различные контейнеры e.g. Tomcat из своего кода
cargo.codehaus.org
5. Для копирования DTO между разными уровнями в web приложении пригодится
dozer.sf.net
2011-09-08
Java7 try-with-resources
Хорошее подробное описание try-with-resources в Java 7:
Better Resource Management with Java SE 7: Beyond Syntactic Sugar
Better Resource Management with Java SE 7: Beyond Syntactic Sugar
2011-07-07
Интересное про память и Java
javaspecialists.eu/archive/Issue193.html
Вообще имеет смысл прочитать все его выпуски.
В частности же:
на 64-bit серверах с 64-bit java полезно попробовать опцию
-XX:+UseCompressedOops
64bit архитектура == 64bit указатели (vs 32bit = в 2 раза больше).
С этой опцией JVM указатели (не все) оптимизирует ==
- жрет меньше памяти
- меньше байт прокачивать по шинам.
Вообще имеет смысл прочитать все его выпуски.
В частности же:
на 64-bit серверах с 64-bit java полезно попробовать опцию
-XX:+UseCompressedOops
64bit архитектура == 64bit указатели (vs 32bit = в 2 раза больше).
С этой опцией JVM указатели (не все) оптимизирует ==
- жрет меньше памяти
- меньше байт прокачивать по шинам.
В Java7 будет сексуально выглядящий Javadoc
http://download.java.net/jdk7/docs/api/
Хотя лично мне нравится chm версия: упакованная, быстрая, со сквозным индексом и поиском.
Хотя лично мне нравится chm версия: упакованная, быстрая, со сквозным индексом и поиском.
Подписаться на:
Сообщения (Atom)