1. Percona засветилась за пределами MySQL тусовки
http://www.theregister.co.uk/2013/10/07/percona_server_update/
http://www.pcworld.com/article/2054060/percona-challenges-oracle-with-alternate-mysql-release.html
Жаль они не делают сборок MySQL под Windows!
Почему Percona, а не MariaDB:
- несмотря на заявленные оптимизации, у меня локально (Windows 8, 8 CPU, 8GB RAM, slow HDD) показала результаты хуже, чем оригинальный MySQL
- субъективно MariaDB более серьезный уход от оригинального MySQL
- у знакомых (linux админ хороший, но MySQL знает слабо) не завелась после простой (drop-in) замены, а версия от Percona сразу заработала
Но если Google перейдет на MariaDB - это может представить дело в новом свете.
2. Шикарный онлайн ресурс! Поддерживает карточки-описания различных БД и позволяет разные БД между собой (формальные характеристики вроде поддержки SQL, ACID?, Database model, Developer, подборка свежих ссылок, к сожалению производительность никак не описана) http://db-engines.com/en/systems (пример сравнения http://db-engines.com/en/system/Microsoft+SQL+Server%3BMongoDB%3BMySQL%3BPercona+Server%3BPostgreSQL )
И ещё они сделали рейтинг разных БД (методика описана, напоминает http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html для языков программирования)
http://db-engines.com/en/ranking
2013-10-30
2013-10-16
~Online WireShark
Если нужно посмотреть снятый дамп сетевой активности, но нет времени/желания/возможности ставить wireshark, то можно воспользоваться сервисом cloudshark.org
2013-10-06
Памятка: Linux, Oracle Java, Tomcat
Как снести то, что ставится по умолчанию и установить свежую Oracle Java и свежий Tomcat:
http://howtofindsolution.blogspot.ru/2012/11/how-to-install-and-configure-tomcat7-on.html
http://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-openjre-and-set-sunjdk-sunjre-as-default
http://howtofindsolution.blogspot.ru/2012/11/how-to-install-and-configure-tomcat7-on.html
http://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-openjre-and-set-sunjdk-sunjre-as-default
2013-05-20
JMX через ssh-туннель: подключение JVisualVM к удаленному серверу
Примечания
* Иногда может хватить jmx shell console (один jar-ник, работает на сервере в консоли): http://wiki.cyclopsgroup.org/jmxterm.
* посмотреть слушают ли порты и кто:
linux: netstat -l -p -n
windows: netstat -a -b -n
Настраиваем (X=6 или 7)!
Источники
- JMX through a ssh tunnel - http://blog.markfeeney.com/2010/10/jmx-through-ssh-tunnel.html
- Connecting remote tomcat JMX instance using jConsole - http://stackoverflow.com/questions/1263991/connecting-remote-tomcat-jmx-instance-using-jconsole
- http://gabenell.blogspot.ru/2010/04/connecting-to-jmx-on-tomcat-6-through.html
* Иногда может хватить jmx shell console (один jar-ник, работает на сервере в консоли): http://wiki.cyclopsgroup.org/jmxterm.
* посмотреть слушают ли порты и кто:
linux: netstat -l -p -n
windows: netstat -a -b -n
Настраиваем (X=6 или 7)!
- скачать catalina-jmx-remote.jar из tomcat.apache.org/download-X0.cgi - Extras - JMX Remote jar в tomcat/lib
- в опциях запуска tomcat (tomcat/bin/catalina.sh или /etc/default/tomcatX) в ключ CATALINA_OPTS/JAVA_OPTS добавляем " -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=127.0.0.1 ". Для примера в итоге он может выглядеть так: JAVA_OPTS="-Djava.awt.headless=true -Xmx3400m -XX:+HeapDumpOnOutOfMemoryError -Duser.language=ru -Duser.region=RU -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -XX:+UseCompressedOops -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=127.0.0.1"
- в conf/server.xml (там где правим
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443"/>) добавляем <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9098" rmiServerPortPlatform="9099"/> - перезапускаем tomcat, проверяем чистоту логов, проверяем занятость портов
- в ssh клиенте для надежности настраиваем туннели на обоих портах ;-), проверяем что порты слушаются локально
- подключаемся JVisualVM/JConsole используя JMX url вида: service:jmx:rmi://127.0.0.1:9099/jndi/rmi://127.0.0.1:9098/jmxrmi
Источники
- JMX through a ssh tunnel - http://blog.markfeeney.com/2010/10/jmx-through-ssh-tunnel.html
- Connecting remote tomcat JMX instance using jConsole - http://stackoverflow.com/questions/1263991/connecting-remote-tomcat-jmx-instance-using-jconsole
- http://gabenell.blogspot.ru/2010/04/connecting-to-jmx-on-tomcat-6-through.html
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 и нахожусь в задумчивости.
Дома у меня нет ковров, везде ламинат т.е. пылесос не нужен, а вот полотер...
Дома у меня нет ковров, везде ламинат т.е. пылесос не нужен, а вот полотер...
Подписаться на:
Сообщения (Atom)