tag:blogger.com,1999:blog-294176212024-03-19T12:05:18.279+03:00Andrew Fink press centerДелай, что должен, и будь, что будет!Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-29417621.post-49798634512556013262013-10-30T15:22:00.000+04:002013-10-30T15:52:40.199+04:00Пятиминутка баз (хранилищ) данных<span class="userContent">1. Percona засветилась за пределами MySQL тусовки</span><br />
<span class="userContent"><a href="http://www.theregister.co.uk/2013/10/07/percona_server_update/" rel="nofollow" target="_blank">http://www.theregister.co.uk/2013/10/07/percona_server_update/</a> </span><br />
<span class="userContent"><a href="http://www.pcworld.com/article/2054060/percona-challenges-oracle-with-alternate-mysql-release.html" rel="nofollow nofollow" target="_blank">http://www.pcworld.com/article/2054060/percona-challenges-oracle-with-alternate-mysql-release.html</a> </span><br />
<span class="userContent">Жаль они не делают сборок MySQL под Windows!</span><br />
<br />
<span class="userContent"><span class="userContent">Почему Percona, а не MariaDB:</span></span><br />
<span class="userContent"><span class="userContent">- несмотря на заявленные оптимизации, у меня локально (Windows 8, 8 CPU, 8GB RAM, slow HDD) показала результаты хуже, чем оригинальный MySQL </span></span><br />
<span class="userContent"><span class="userContent">- субъективно </span></span><span class="userContent"><span class="userContent"><span class="userContent"><span class="userContent">MariaDB</span></span> более серьезный уход от оригинального MySQL</span></span><br />
<span class="userContent"><span class="userContent">- у знакомых (linux админ хороший, но MySQL знает слабо) не завелась после простой (drop-in) замены, а версия от Percona сразу заработала</span></span><br />
<br />
<span class="userContent"><span class="userContent">Но если Google перейдет на </span></span><span class="userContent"><span class="userContent">MariaDB - это может представить дело в новом свете.</span></span><br />
<br />
<br />
<span class="userContent">2. Шикарный онлайн ресурс! Поддерживает карточки-описания различных БД и позволяет разные БД между собой (формальные характеристики вроде поддержки SQL, ACID?, </span>Database model, Developer, подборка свежих ссылок, <span class="userContent">к сожалению производительность никак не описана</span>) <a href="http://db-engines.com/en/systems" rel="" target="_blank">http://db-engines.com/en/systems</a> (пример сравнения <a href="http://db-engines.com/en/system/Microsoft+SQL+Server%3BMongoDB%3BMySQL%3BPercona+Server%3BPostgreSQL" target="_blank">http://db-engines.com/en/system/Microsoft+SQL+Server%3BMongoDB%3BMySQL%3BPercona+Server%3BPostgreSQL</a> )<br />
<br />
И ещё они сделали рейтинг разных БД (<span class="userContent">методика описана, напоминает <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" rel=" nofollow" target="_blank">http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html</a> для языков программирования</span>)<br />
<a href="http://db-engines.com/en/ranking" target="_blank">http://db-engines.com/en/ranking</a>Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-42670335974489325332013-10-16T16:46:00.002+04:002013-10-16T16:46:53.964+04:00~Online WireSharkЕсли нужно посмотреть снятый дамп сетевой активности, но нет времени/желания/возможности ставить <a href="http://www.wireshark.org/" target="_blank">wireshark</a>, то можно воспользоваться сервисом <a href="http://www.cloudshark.org/" target="_blank">cloudshark.org</a>Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com1tag:blogger.com,1999:blog-29417621.post-81323190155547710952013-10-06T14:14:00.003+04:002013-10-06T14:15:48.774+04:00Памятка: Linux, Oracle Java, TomcatКак снести то, что ставится по умолчанию и установить свежую Oracle Java и свежий Tomcat:<br />
<br />
<a href="http://howtofindsolution.blogspot.ru/2012/11/how-to-install-and-configure-tomcat7-on.html" target="_blank">http://howtofindsolution.blogspot.ru/2012/11/how-to-install-and-configure-tomcat7-on.html</a><br />
<br />
<a href="http://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-openjre-and-set-sunjdk-sunjre-as-default" target="_blank">http://askubuntu.com/questions/21131/how-to-correctly-remove-openjdk-openjre-and-set-sunjdk-sunjre-as-default</a> <br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-4141369813654613242013-05-20T13:44:00.002+04:002013-05-20T15:54:44.139+04:00JMX через ssh-туннель: подключение JVisualVM к удаленному серверуПримечания<br />
* Иногда может хватить jmx shell console (один jar-ник, работает на сервере в консоли): <a href="http://wiki.cyclopsgroup.org/jmxterm" target="_blank">http://wiki.cyclopsgroup.org/jmxterm</a>.<br />
<br />
* посмотреть слушают ли порты и кто:<br />
linux: netstat -l -p -n<br />
windows: netstat -a -b -n <br />
<br />
Настраиваем (X=6 или 7)!<br />
<ol>
<li>скачать catalina-jmx-remote.jar из tomcat.apache.org/download-X0.cgi - Extras - JMX Remote jar в tomcat/lib</li>
<li>в опциях запуска 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" </li>
<li>в conf/server.xml (там где правим <connector connectiontimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectport="8443" uriencoding="UTF-8"><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"/><listener classname="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiregistryportplatform="9098" rmiserverportplatform="9099"></listener></connector></li>
<li>перезапускаем tomcat, проверяем чистоту логов, проверяем занятость портов</li>
<li>в ssh клиенте для надежности настраиваем туннели на обоих портах ;-), проверяем что порты слушаются локально</li>
<li>подключаемся JVisualVM/JConsole используя JMX url вида: service:jmx:rmi://127.0.0.1:9099/jndi/rmi://127.0.0.1:9098/jmxrmi</li>
</ol>
<br />
Источники<br />
- JMX through a ssh tunnel - <a href="http://blog.markfeeney.com/2010/10/jmx-through-ssh-tunnel.html" target="_blank">http://blog.markfeeney.com/2010/10/jmx-through-ssh-tunnel.html</a><br />
- Connecting remote tomcat JMX instance using jConsole - <a href="http://stackoverflow.com/questions/1263991/connecting-remote-tomcat-jmx-instance-using-jconsole" target="_blank">http://stackoverflow.com/questions/1263991/connecting-remote-tomcat-jmx-instance-using-jconsole</a><br />
- <a href="http://gabenell.blogspot.ru/2010/04/connecting-to-jmx-on-tomcat-6-through.html" target="_blank">http://gabenell.blogspot.ru/2010/04/connecting-to-jmx-on-tomcat-6-through.html</a><br />
<br />
<h1 itemprop="name">
</h1>
Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com2tag:blogger.com,1999:blog-29417621.post-72674600308507392962013-03-21T10:27:00.002+04:002013-03-21T10:28:10.068+04:00HG как клиент для всего<a href="http://mercurial.selenic.com/wiki/HgSubversion" target="_blank">http://mercurial.selenic.com/wiki/HgSubversion</a><br />
<br />
<a href="http://mercurial.selenic.com/wiki/HgGit" target="_blank">http://mercurial.selenic.com/wiki/HgGit</a><br />
<a href="http://candidcode.com/2010/01/12/a-guide-to-converting-from-mercurial-hg-to-git-on-a-windows-client/" target="_blank"> + A guide to getting the hg-git Mercurial plugin to work on a Windows machine </a><br />
Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-37917633201895917292013-03-12T12:12:00.001+04:002013-03-12T12:47:25.305+04:00Все опции java# java -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version [другие опции и аргументы]<br />
<br />
<a href="http://q-redux.blogspot.ru/2011/01/inspecting-hotspot-jvm-options.html" target="_blank">http://q-redux.blogspot.ru/2011/01/inspecting-hotspot-jvm-options.html</a><br />
<a href="http://javarevisited.blogspot.ru/2011/11/hotspot-jvm-options-java-examples.html" target="_blank">http://javarevisited.blogspot.ru/2011/11/hotspot-jvm-options-java-examples.html</a><br />
<br />
Версия попроще<br />
# java -XX:+PrintCommandLineFlags -version [другие опции и аргументы]Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-8483351284189142812012-12-23T16:30:00.003+04:002012-12-23T16:42:18.072+04:00MSSQL и ошибкиЕсли вы работаете с MSSQL вообще или с MSSQL через jdbc, то от этих ссылок вы получите <b>удовольствие</b>!<br />
<br />
Подробнейшее описание как обрабатывать ошибки в MSSQL:<br />
<a href="http://www.sommarskog.se/error-handling-I.html" target="_blank">http://www.sommarskog.se/error-handling-I.html</a><br />
<a href="http://www.sommarskog.se/error-handling-II.html" target="_blank">http://www.sommarskog.se/error-handling-II.html</a><br />
кратенькая выжимка <a href="http://weblogs.sqlteam.com/dang/archive/2007/10/20/Use-Caution-with-Explicit-Transactions-in-Stored-Procedures.aspx" target="_blank">http://weblogs.sqlteam.com/dang/archive/2007/10/20/Use-Caution-with-Explicit-Transactions-in-Stored-Procedures.aspx</a><br />
<br />
Ссылки которые я искал два дня. Вся порочная правда о MSSQL и jdbc (они об одном и том же)!<br />
<a href="http://blogs.msdn.com/b/jdbcteam/archive/2008/08/04/why-doesn-t-executeupdate-give-me-the-exception-i-expected.aspx" target="_blank">http://blogs.msdn.com/b/jdbcteam/archive/2008/08/04/why-doesn-t-executeupdate-give-me-the-exception-i-expected.aspx</a><br />
<a href="http://blogs.msdn.com/b/jdbcteam/archive/2008/08/01/use-execute-and-getmoreresults-methods-for-those-pesky-complex-sql-queries.aspx" target="_blank">http://blogs.msdn.com/b/jdbcteam/archive/2008/08/01/use-execute-and-getmoreresults-methods-for-those-pesky-complex-sql-queries.aspx</a> <br />
<br />
<br />
PS: если вы используете Java 6, MSSQL 2000 и jtds, то я сделал работающую с MSSQL2000 Java 6 версию jtds 1.3 <a href="http://sourceforge.net/p/jtds/bugs/683/" target="_blank">http://sourceforge.net/p/jtds/bugs/683/</a>Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-43506597202865686932012-12-23T16:15:00.002+04:002012-12-23T16:38:38.668+04:00Полезные ссылки и утилиты- текстовый редактор <a href="http://www.sublimetext.com/2" target="_blank">Sublime Text 2</a> (хотя я, из-за его самобытной раскладки, пользуюсь <a href="http://www.jetbrains.com/idea/" target="_blank">http://www.jetbrains.com/idea</a> и <a href="http://notepad-plus-plus.org/" target="_blank">http://notepad-plus-plus.org</a>)<br />
<br />
- редактор различных диаграмм <a href="http://diagram.ly/" target="_blank">diagram.ly</a> он же <a href="https://www.draw.io/" target="_blank">draw.io</a><br />
<br />
- если нужна offline утилита: yEd <a href="http://manishc.net/2012/12/13/yed-graph-editor-a-free-alternative-to-microsoft-visio/" target="_blank">описание</a> и <a href="http://www.yworks.com/en/products_yed_about.html" target="_blank">сайт </a><a href="http://www.yworks.com/en/downloads.html#yEd" target="_blank">производителя</a><br />
<br />
- генератор UML схем (диаграмм) <a href="http://yuml.me/" target="_blank">yuml.me</a><br />
<br />
- доступ к удаленному ПК 2.0 <a href="https://secure.logmein.com/products/free/" target="_blank">LogMeIn</a><br />
<br />
- скрипт анализирующий ваш MySQL и дающий советы по его лучшей настройке: <a href="http://mysqltuner.com/" target="_blank">mysqltuner.com</a><br />
<br />
- утилита innotop для MySQL<br />
1. Download latest TermReadKey? from CPAN:
<a href="http://search.cpan.org/%7Estsi/TermReadKey/ReadKey.pm" target="_blank">http://search.cpan.org/~stsi/<wbr></wbr>TermReadKey/ReadKey.pm</a><br />
2. tar -zxvf TermReadKey-2.30.02.tar.gz<br />
3. perl Makefile.PL<br />
4. make test<br />
5. make install<br />
<span class="il">Innotop</span> manual <a href="http://innotop.googlecode.com/svn/html/index.html" target="_blank">http://innotop.googlecode.com/svn/html/index.html</a>, в частности:<br />
<span class="il">innotop</span> -u [username] -p [password] -h [hostname]<br />
<br />Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com1tag:blogger.com,1999:blog-29417621.post-56047895639969030772011-12-04T11:07:00.001+04:002011-12-04T13:40:43.722+04:00Памятка по установке JRebelПрежде всего хочу сказать, что настраивать-то особо нечего ;-)<br />
Можно посмотреть презентацию "для вдохновения" <a href="http://zeroturnaround.com/jrebel/presentations/" target="_blank">zeroturnaround.com/jrebel/presentations</a>.<br />
<br />
Я использую IntelliJ IDEA, для других IDE инструкция может слегка отличаться, см <a href="http://zeroturnaround.com/resources/" target="_blank">zeroturnaround.com/resources</a> .<br />
<br />
1. Идем в IDE settings | plugins и находим среди доступных JRebel Plugin, Download and Install, Apply (restart).<br />
<br />
С сайта <a href="http://zeroturnaround.com/jrebel/current/" target="_blank">zeroturnaround.com/jrebel/current</a> ничего качать не нужно, все включено в плагин. <br />
<br />
<br />
2. В IDE settings появится пункт JRebel, там нажимаем Launch JRebel Configuration Wiazard...<br />
Первый пункт активация - проще и дешевле начать с evolution.<br />
Второй пункт license пропускаем - evolution сам сгенерирует и активизирует лицензию на 30 дней.<br />
<br />
<br />
3. пункт Choose settings выбираем какая IDE используется, тогда следующие пункты будут показывать инструкции по мелкой оптимальной подстройке этой IDE.<br />
<br />
Следует выставить три 'галочки' в IDE по инструкциям в последующих пунктах.<br />
<br />
Закончили с установкой и конфигурированием.<br />
<br />
<br />
4. В Project view проекта в pop-up menu выбираем Generate rebel.xml<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.zeroturnaround.com/wp-content/uploads/2009/09/idea8PluginRebelXmlShot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://www.zeroturnaround.com/wp-content/uploads/2009/09/idea8PluginRebelXmlShot.png" width="200" /></a></div>
<br />
Далее как сделал я и как удобно мне, возможно вам тоже понравится :-)<br />
<br />
<br />
<br />
5. Сохраняем rebel.xml в [webroot]/WEB-INF/classess<br />
Это единственный, довольно простой конфигурационный файл JRebel.<br />
<br />
Основные настройки описаны в <a href="http://zeroturnaround.com/jrebel/how-to-configure-rebel-xml/" target="_blank">zeroturnaround.com/jrebel/how-to-configure-rebel-xml</a> <br />
На всякий случай ссылка на полное описание (скорее всего не понадобится): <a href="http://zeroturnaround.com/jrebel/configuration/" target="_blank">zeroturnaround.com/jrebel/configuration</a><br />
<br />
Настройки по умолчанию мне не подошли т.к.<br />
a. я использую <a href="http://click.apache.org/" target="_blank">Apache Click</a>, который при старте достает некоторые ресурсы в [webroot], а так как по умолчанию используется [webroot] в исходниках, то система контроля версий обнаруживает кучу новых файлов.<br />
<br />
b. в проекте много модулей, которые компилируются в jar-ы и кладутся в [webroot]/WEB-INF/lib<br />
<br />
Поэтому пришлось прописать папку target/название_web_app - как [webroot],<br />
и несколько target/production/название_модуля - как путь для поиска классов, где:<br />
* target стандартное maven-название папки куда все компилируется,<br />
* production - папка принудительно создаваемая IDEA,<br />
* название_web_app - путь который вы прописали в Web Application exploded artifact, e.g. voip, smsrouter, etc,<br />
* название_модуля - IDEA создает для каждого модуля свои подпапки в production.<br />
<br />
Итоговый файл:<br />
<br />
<pre><?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>
</pre>
<br />
Готово!<br /><br />
Далее просто запускаем Tomcat не обычной зеленой стрелочкой, а стрелочкой с "jr".<br />
Вносим изменения в код, компилируем (IDEA перед этим сохраняет) Ctrl+Shift-F9 или Ctrl-F9, F5 в браузере и видим обновление.<br />
<br />
PS: если хочется ускорить первый старт Tomcat, то мой предыдущий совет "скопировать папку VAADIN из vaadin.jar в [webroot]" по прежнему применим.<br />
<br />
<br />
Кроме того, возможно вам захочется избавиться от сериализации HTTP сессии между рестартами Tomcat (пользы от этой сериализации в случае Vaadin не очень много), для этого в [webroot]/META-INF нужно поместить файл context.xml вида:<br />
<pre><?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>
</pre>
<br />
Аттрибут antiJARLocking="true" опционален (можно убрать). Он нужен если web приложение не освобождает какие-то классы и не выгружается Tomcat (свой код лучше от такого чистить, но бывают такие библиотеки третьих сторон).Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-65895889440039423652011-12-02T13:04:00.001+04:002011-12-02T13:06:14.350+04:00Робот полотерЧитаю <b>Робот-полотер Mint - обзор </b>@ <a href="http://exler.ru/expromt/10-11-2011.htm" target="_blank">exler.ru/expromt/10-11-2011.htm</a> и нахожусь в задумчивости.<br />
Дома у меня нет ковров, везде ламинат т.е. пылесос не нужен, а вот полотер...<br />
<br />Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-4202723476879752442011-12-01T10:20:00.001+04:002011-12-01T10:28:43.104+04:00Разное про Java, Web и Vaadin1. Для качественного ускорения web разработки на Java можно использовать замечательный продукт JRebel <a href="http://zeroturnaround.com/jrebel/" target="_blank">zeroturnaround.com/jrebel</a> (<a href="http://zeroturnaround.com/blog/jrebel-101-what-jrebel-is-and-how-it-makes-java-development-lightning-fast/" target="_blank">кратко, что это</a>). Он позволяет практически полностью отказаться от длительного re-deploy процесса.<br />
Внес исправление в код, перекомпилировал - web приложение уже обновилось (вроде PHP,Python,Ruby). Продукт платный, но есть интересный способ использовать бесплатно: <a href="https://social.jrebel.com/" target="_blank">social.jrebel.com</a>.<br />
<br />
Кроме того они сделали вкусную zip java lib: <a href="http://zeroturnaround.com/blog/zeroturnaround-releases-yazlj-yet-another-zip-library-for-java/" target="_blank">новость</a> <a href="https://github.com/zeroturnaround/zt-zip" target="_blank">repo</a>.<br />
<br />
<br />
2. Если не использовать JRebel и разрабатывать используя <a href="http://vaadin.com/" target="_blank">Vaadin</a>, то можно обнаружить, что при первом запуске vaadin приложения после старта Tomcat, оно висит несколько секунд (примерно 10 на моём ПК). Исследование показало, что "висит" не сам Vaadin, а вызванный в com.vaadin.terminal.gwt.server.AbstractApplicationServlet#serveStaticResourcesInVAADIN Tomcat.<br />
vaadin.jar довольно большой и чтение ресурсов из него длительная операция.<br />
Чтобы избавится от этой задержки достаточно скопировать папку VAADIN из vaadin.jar в web app root (там где WEB-INF, META-INF, etc).<br />
Если Вам помог этот совет проголосуйте за мой совет на <a href="http://stackoverflow.com/questions/3904735/how-to-improve-vaadin-startup-speed-in-debug-mode/8285514#8285514" target="_blank">stackoverflow.com/questions/3904735</a>.<br />
<br />
<br />
3. JavaScript is assembly language for the web ИЛИ кто ещё не написал свой веб-Си?<br />GWT (Google Web Toolkit) - золотой стандарт компиляции в JS, все знают, многим хочется повторить.<br /><br />Ладно Google начал страдать NIH синдромом и решил изобрести JavaScript (его придумали/сделали не они) <a href="http://www.dartlang.org/" target="_blank">dartlang.org</a><br />
<br />Но так, чтобы ВСЕ бросились компилировать в JS (включая больных и убогих)...<br />На 20ом языке начинает пробивать смех:<br /><a href="https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS" target="_blank">github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS</a><br /><br />Даже QBASIC не забыт!<br />
<br />
<br />
4. Унифицированный способ запускать различные контейнеры e.g. Tomcat из своего кода<br />
<a href="http://cargo.codehaus.org/" target="_blank">cargo.codehaus.org</a><br />
<br />
<br />
5. Для копирования DTO между разными уровнями в web приложении пригодится<br />
<a href="http://dozer.sourceforge.net/" target="_blank">dozer.sf.net</a><br />
<br />Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com3tag:blogger.com,1999:blog-29417621.post-67918292450634257672011-09-08T12:08:00.000+04:002011-09-08T12:08:20.041+04:00Java7 try-with-resourcesХорошее подробное описание <strong><em>try-with-resources</em></strong> в Java 7:<br />
<a href="http://www.oracle.com/technetwork/articles/java/trywithresources-401775.html" target="_blank">Better Resource Management with Java SE 7: Beyond Syntactic Sugar</a>Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-58242942364400336982011-07-07T11:17:00.001+04:002011-07-07T11:18:23.300+04:00Интересное про память и Java<a href="http://www.javaspecialists.eu/archive/Issue193.html" target="_blank">javaspecialists.eu/archive/Issue193.html</a><br />
<br />
Вообще имеет смысл прочитать все его выпуски.<br />
<br />
В частности же:<br />
<br />
на 64-bit серверах с 64-bit java полезно попробовать опцию <br />
-XX:+UseCompressedOops<br />
64bit архитектура == 64bit указатели (vs 32bit = в 2 раза больше).<br />
С этой опцией JVM указатели (не все) оптимизирует == <br />
- жрет меньше памяти <br />
- меньше байт прокачивать по шинам.Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com1tag:blogger.com,1999:blog-29417621.post-89973497079495760412011-07-07T11:10:00.003+04:002011-07-07T11:11:14.952+04:00В Java7 будет сексуально выглядящий Javadoc<a href="http://download.java.net/jdk7/docs/api/" target="_blank">http://download.java.net/jdk7/docs/api/</a><br />
<br />
<br />
Хотя лично мне нравится <a href="http://javadoc.allimant.org/" target="_blank">chm версия</a>: упакованная, быстрая, со сквозным индексом и поиском.Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-16028186486189772512011-07-07T10:59:00.003+04:002011-07-07T11:06:57.754+04:00Работа территориально распределенных коллективовДля удаленной работы одного GMail/GTalk бывает недостаточно.<br />
Skype ~ GTalk только без архива на сервере и более распространненый.<br />
<br />
JIRA (и другие аналогичные продукты), Wiki, <a href="http://magicprinc.blogspot.com/2011/05/blog-post.html" target="_blank">Jing</a> - уже почти всё что нужно.<br />
<br />
Недавно наткнулся на интересный продукт:<br />
<a href="http://www.teamviewer.com/ru/solutions/meetings.aspx" target="_blank">Team Viewer</a><br />
совместная работа, презентации, удаленное управление, тех поддержка и тд<br />
Изучаю...Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com3tag:blogger.com,1999:blog-29417621.post-25310147983282054312011-07-07T09:03:00.006+04:002011-07-07T09:18:01.690+04:00funСтараюсь всякий нетехнический бред писать в ЖЖ.<br />
Но убогость ЖЖ просто доканывает.<br />
Картинку по простому нельзя разместить. Обязательно ритуал вида "найдите три китайских девственницы, поститесь с ними три года, на четверый в самую большую луну пойдите на..."<br />
<br />
В blogger просто зашел и разместил!<br />
В блог добавляется preview, при клике на картинке открывается полная версия.<br />
<br />
<br />
Манул IKEA по сборке Стоунхенджа и говнотвиттер:<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVOjhUKfLrwU2xWAzMOFHQD2PNaVr9rU85Gb8o79eACvBbAufXIEPjTV8OSoiBQAd4ThN4I1cIO1eubNDqIp9AQf4P3wOi-RNA42iXB_8pag-Oks-UxOH9JUxlcq0hgrKNBRXV/s1600/ikea.jpg" imageanchor="1" target="_blank"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVOjhUKfLrwU2xWAzMOFHQD2PNaVr9rU85Gb8o79eACvBbAufXIEPjTV8OSoiBQAd4ThN4I1cIO1eubNDqIp9AQf4P3wOi-RNA42iXB_8pag-Oks-UxOH9JUxlcq0hgrKNBRXV/s320/ikea.jpg" width="209" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimKfM9pPoNHEx9j72wpU2DRskplm_i8z0JsklWgGet_mHspPBPHQ5WwlNeVjKm1YTaC20b9mNOwZrOKF9aTctRwJgSeo-ov_HmuQd6hTaX6xthgbw2T3rGICCwLSvHIAyNerTU/s1600/exitbuildingbeforetweetingaboutit.jpg" imageanchor="1" target="_blank"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimKfM9pPoNHEx9j72wpU2DRskplm_i8z0JsklWgGet_mHspPBPHQ5WwlNeVjKm1YTaC20b9mNOwZrOKF9aTctRwJgSeo-ov_HmuQd6hTaX6xthgbw2T3rGICCwLSvHIAyNerTU/s320/exitbuildingbeforetweetingaboutit.jpg" width="191" /></a><br />
<br />
<br />
PS: ну и немного о технике...<br />
Эта гребля с ЖЖ напомнила мне о книге, которую я рекомендую прочитать всем.<br />
<a href="http://www.ashmanov.com/pap/bubble" target="_blank">Жизнь внутри пузыря</a>.<br />
Она как бы историческая и про интернет, но работая в большой "реальной" корпорации "я плакалъ".Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-50649303319509945622011-07-04T10:09:00.001+04:002011-07-04T10:13:38.423+04:00Сравнение схем БДЯ работаю с MSSQL и MySQL и часто приходится сравнивать изменения в БД.<br />
<br />
* Делаю так: скриптую БД с разбивкой всех объектов на индивидуальные файлы, после чего сравниваю, используя diff tool с возможностью сравнения директорий.<br />
Очень просто и удобно.<br />
Сама папка находится под DVCS Mercurial/HG т.е. можно смотреть историю изменений.<br />
<br />
<br />
* Знаю про другой способ (работает в т.ч. между серверами разных версий т.к., например, скрипты MSSQL 2008 и 2000 довольно сильно отличаются).<br />
Для MySQL: <a href="http://www.devart.com/ru/dbforge/mysql/studio/">devart.com/ru/dbforge/mysql/studio</a> <br />
Для MSSQL: <a href="http://www.devart.com/ru/dbforge/sql/datacompare/">devart.com/ru/dbforge/sql/datacompare</a><br />
Сам активно не пользовал, но один знакомый активно использует и очень хвалит.<br />
<br />
* Есть что-то ещё?...Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-68283563552178377172011-05-15T15:52:00.003+04:002011-08-18T10:01:00.564+04:00Скриншоты и скринкасты - просто и удобноПотребовалось отправить в Jetbrains screen-cast бага (что он существует ;-).<br />
<br />
Провел небольшое исследование: чем быстро и просто записать короткий screen-cast (изображение части экрана, курсор, звук с микрофона).<br />
Нашел несколько вариантов, в итоге выбрал <a href="http://www.techsmith.com/jing/">jing</a><br />
<br />
Просто (ничего не надо настраивать), удобно. <br />
Делает помимо видео, фотки куска экрана (PrtScn и последующее вырезание в редакторе достало).<br />
<br />
Думаю о дальнейшем использовании.<br />
<br />
PS: для скриншотов есть OpenSource <a href="http://sf.net/projects/greenshot/">sf.net/projects/greenshot</a> - сегодня рассылка SF-ная принесла<br />
<br />
UPD2: http://camstudio.org/ OpenSource утилита для записи скринкастовAnonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com1tag:blogger.com,1999:blog-29417621.post-40356411343041057262011-04-05T17:39:00.002+04:002011-04-06T10:09:13.641+04:002011: Сменил default кодировку консоли cmd.exe на cp1251Как известно default кодировка/codepage windows консоли cmd.exe DOS 866.<br />
На дворе 2011 и я решился сменить её на кодировку остальной системы cp1251.<br />
Узнать какая кодировка выставлена, можно набрав в cmd.exe команду chcp.<br />
Сменить "на лету" можно chcp 1251.<br />
С UTF-8 chcp 65001, как мы уже выяснили не работает.<br />
<br />
Чтобы сменить на постоянной основе требуется:<br />
<br />
<pre>Start->Run->regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
сменить кодировку в OEMCP с 866 на 1251
</pre><br />
После чего потребуется перезапуск.<br />
<br />
Найдено <a href="http://codesnippets.joyent.com/posts/show/414">здесь</a>.<br />
<br />
<br />
Пора избавляться от старого барахла.<br />
Если очень захочется запустить что-то старое DOS-овское "chcp 866" в помощь.<br />
<br />
Замеченые минусы:<br />
давно надо было у архиваторов выставить кодировку файлов UTF-8, пришлось некоторые архивы пережать.Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com4tag:blogger.com,1999:blog-29417621.post-10021784467480153282011-03-22T16:29:00.009+03:002011-04-01T16:18:00.255+04:00Mercurial - HgНачал читать <a href="http://hginit.com/">http://hginit.com</a><br />
Читая раздел для SVNщиков утер слезу - до чего верно пишет.<br />
<br />
После этого полезно <a href="http://mercurial.selenic.com/guide/">mercurial.selenic.com/guide</a><br />
<br />
<br />
В UTF-8 не работает (глюк windows). Поэтому не chcp 65001 (меняет кодировку консоли на UTF-8), а chcp 1251 - ваш друг.<br />
Для работы удобнее всего оказался cmd.exe /X /K chcp 1251 && cd "путь"<br />
<br />
Отличная утилита <a href="https://bitbucket.org/zzsergant/hgwin/downloads">HgWin</a>, вызывается из командной строки (hgwin cmd) и открывает GUI окошко. Если сразу в GUI, то TortoiseHG вполне.<br />
<br />
Отличная короткая статья об организации процесса подходящего и для моих проектов: <a href="http://stevelosh.com/blog/2010/05/mercurial-workflows-stable-default/" target="_blank">http://stevelosh.com/blog/<wbr></wbr>2010/05/mercurial-workflows-<wbr></wbr>stable-default/</a><br />
<br />
Относительно коммитов решил, что буду коммитить часто. Как ограничение "вечером не должно оставаться незакоммиченной работы".<br />
Чтобы не зафлудить репозитарий сырым кодом буду применять следующее соглашение:<br />
<br />
1. закомичиваемый код должен компилироваться (этого можно достичь даже вечером, пустые методы с todo написать и тд)<br />
2. если тесты не прошли или нет времени на все тесты, то commit message должен начинаться с "?": ?Обзвон нескольких телефонов в списке<br />
3. если тесты проходят и по ощущениям код хороший, то commit message не начинается с ? и ! т.е. любые другие символы<br />
4. если код отлично прошел тесты на DEV SERVER и его можно пытаться выкладывать на PRODUCTION, то commit message начинается с !<br />
5. на бой выкладываются только ревизии с commit message начинающиеся на !<br />
6. после выкладки на бой (вроде полетело, чуток поглядели - летит) тегируем версию "YYYY-MM-DD major.minor примечания"<br />
7. после некого интервала (ничего не вылезло, клиенты не звонят с воплями) мержим default в stable<br />
<br />
x. если вдруг потом обнаружен баг, переключаемся на "YYYY-MM-DD<br />
major.minor примечания" в stable, правим / build, test, func/sys test, deploy / tag "ymd major.minor примечания"2, merge это исправление в default<br />
<br />
y. если хочется надолго всё сломать - локальный feature clone. Из которого потом pull, merge в local#default и rm -rf feature clone<br />
<br />
<br />
PS1:<br />
Мучился вопросом: как бранчи случайно названные одинаково разными программистами не пересекаются?<br />
Ответ: пересекаются! Рекомендуют именовать приватные бранчи "программист-название бранча".<br />
<a href="http://nubyonrails.com/articles/five-features-from-mercurial-that-would-make-git-suck-less" target="_blank">http://nubyonrails.com/<wbr></wbr>articles/five-features-from-<wbr></wbr>mercurial-that-would-make-git-<wbr></wbr>suck-less</a><br />
<br />
Про бранчи vs клоны общий совет такой:<br />
для собственных нужно лучше делать локально клоны.<br />
Именованые бранчи для длительных линий разработки, типа есть три версии программы 1.0, 2.0, 3.0. Переход на новую версию стоит денег и не все пользователи переходят, сидят на 1.0 и 2.0, однако баги, возможно какие-то вкусняшки им давать необходимо (они купили). Дескать это хорошее применение для бранчей.<br />
<br />
<br />
PS2:<br />
Разумеется все теоретики запада против хранения генерируемых файлов в репозитарии - их можно моментально создать, любой версии, когда понадобятся (class, jar, war, ear, javadoc).<br />
Сгенерированные исходники (Google Protobuf, из WSDL) - нельзя менять, но хранить в VCS можно. Для анализа, что менялось или "почему всё сломалось". Но менять нельзя!<br />
Если в сгенерированные исходники надо внести изменения - советуют от них наследоваться, либо использовать композицию, тогда сгенерированный код может следовать за обновлениями, а не останется на века в той версии где подправили.Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com7tag:blogger.com,1999:blog-29417621.post-26026497670601809572011-02-27T14:54:00.006+03:002011-06-03T16:08:52.134+04:00Java tips #1* Использую следующие дополнительные параметры запуска javac в IDE:<br />
<pre>-J -ea -Xlint:all -Xlint:-serial -J -XX:+AggressiveOpts -J -XX:+UseFastAccessorMethods</pre><br />
можно использовать "облегченную" версию -Xlint:all -Xlint:-serial<br />
Javac сообщает гораздо больше интересного (хинты) о коде.<br />
<br />
Вообще у JVM просто <a href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html">огромное количество настроек</a>...<br />
<br />
А resource patterns у меня<br />
<pre>?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.htm;?*.dtd;?*.tld;?*.conf;?*.mp3;?*.wav;?*.mid;?*.midi;?*.ftl;?*.css;?*.js;?*.ico</pre><br />
* Jdbc batches действительно ускоряют массовые операции<br />
<a href="http://www.factorypattern.com/how-to-use-jdbc-addbatch-method-with-mysql-for-improved-performance/">How To Use JDBC addBatch Method with MySQL for Improved Performance</a><br />
<br />
Правда у большинства JDBC Drivers (MySQL единственное известное мне исключение) нельзя в batch получить autoinc PK, т.е. они не подойдут, либо использовать ручную генерацию PK.Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-72606182326494199012011-02-18T12:32:00.001+03:002011-02-18T12:35:26.191+03:00ШрифтыЧитая один блог, наткнулся на рассуждения о шрифтах, какие лучше для чтения и программирования. <br />
Посмотрев на календарь, увидел, что там 2011 год. <br />
Решил, что, наверное, надо тоже сменить Tahoma и Courier New, на более современные разработки, тем более, что у меня с оказией Vista, а там идут новые секретные шрифты разработки M$.<br />
<blockquote>Calibri, Cambria, Candara, Consolas, Constantia and Corbel - according to Poynter Online, the new ClearType Font Collection incorporates improved Clear Type and OpenType technologies, and a boatload of research, to improve the structure and the clarity of the letter forms. Basically, that means a story will be easier to read because the letters and words won't be as soft and mushy looking.<br />
<br />
* Calibri - sans serif, suitable for documents, e-mail, Web design, and magazines<br />
* Cambria - serif, a formal type for business documents, e-mail, and Web design<br />
* Candara - sans serif, with vertical strokes not as reader-friendly perhaps<br />
* Consolas - monospaced, suitable for displaying programming code<br />
* Constantina - serif, very clean and readable, created for use in print or on the screen<br />
* Corbel - sans serif, clean and works as an alternative to Arial, Trebuchet or Verdana</blockquote>Для разработки в IDE и редакторах (notepad++) поставил Consolas.<br />
Чуть не заболели глаза, стал разбираться - оказывается это шрифты под ClearType (в настройках дисплея), который у меня был выключен, т.к. он превращал Tahoma и Courier New в пытку, а тут видишь наоборот.<br />
После включения сглаживания ClearType Consolas стал выглядеть очень мило и прилично. Из приятных бонусов: 1 не похожа на l(L малое), а у 0 (нуля) есть черточка, как в старые добрые времена.<br />
<br />
Для остального долго мучился (вроде и так не так и это не так), выбрал Constantia serif и Corbel sans serif (основной) в Chrome и Constantia/Calibri в FF.<br />
Потратил полдня, пока привыкаю, но в целом вроде мило.Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com1tag:blogger.com,1999:blog-29417621.post-43787296687414534232011-02-11T17:00:00.001+03:002012-08-14T11:45:07.751+04:00MySQL links and tips<b>Links</b> <br />
1. Сам MySQL и документацию (жаль в chm перестали делать) брать здесь:<br />
<a href="http://dev.mysql.com/downloads/mysql/">http://dev.mysql.com/downloads/mysql/</a><br />
<br />
<br />
2. Java JDBC Driver:<br />
<a href="http://dev.mysql.com/downloads/connector/j/">http://dev.mysql.com/downloads/connector/j/</a><br />
<br />
<br />
3. Простая, легкая консоль (я пользуюсь ею для повседневных нужд - это free OS урезная редакция):<br />
<a href="http://code.google.com/p/sqlyog/">http://code.google.com/p/sqlyog/</a><br />
<br />
<br />
4. Очень навороченная, крутейшая консоль+enterprise manager+отчеты<br />
(можно в некоторых случаях отчеты делать не в web UI, а используя эту студию):<br />
<a href="http://www.devart.com/ru/dbforge/mysql/studio/">http://www.devart.com/ru/dbforge/mysql/studio/</a><br />
<br />
Вот список возможностей:<br />
<a href="http://www.devart.com/ru/dbforge/mysql/studio/features.html">http://www.devart.com/ru/dbforge/mysql/studio/features.html</a><br />
в частности:<br />
# Генерация отчетов данных<br />
# Построение сводных таблиц<br />
<br />
У них, кстати, много ещё вкусного free4personal для cp1251 users:<br />
<a href="http://www.devart.com/ru/dbforge/">http://www.devart.com/ru/dbforge/</a><br />
<br />
<br />
5. Советую подписаться на MySQL newsletter (на сайте MySQL легко найти)<br />
бывают интересные статьи, советы, новости, интервью с экспертами.<br />
<br />
<br />
6. Блог о тюнинге MySQL<br />
<a href="http://www.mysqlperformanceblog.com/" target="_blank">mysqlperformanceblog.com</a><br />
Лучше читать записи постарее (в новых много слишком заумного и про их порт).<br />
<br />
<br />
<br />
<b>Performance super mini faq</b><br />
В my.ini/my.cnf файле конфигурации есть опция innodb_flush_log_at_trx_commit, внимательно почитайте про неё.<br />
innodb_flush_log_at_trx_commit=0 - вполне разумный выбор IMHO<br />
<br />
<br />
<b>Vars</b><br />
К сожалению, в запросе MySQL трудно написать сложную программу с if, while и тд, как это можно сделать в t-sql. В MySQL всё должно представлять из себя выражение см на примере <a href="http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if">if</a>.<br />
Но переменные это что-то! Их не надо муторно объявлять с типом и можно использовать в самых удивительных местах.<br />
Пример (чтобы в Java работало несколько statement; в запросе не забудьте allowMultiQueries=true в JDBC Connection String/URL):<br />
<br />
set @a = null; set @b = null; set @c = null;<br />
<br />
select @a, @b, @c;-- null, null, null - всё чисто и готово к эксперименту<br />
<br />
select 'boo!', @a+@b+@c<br />
FROM (SELECT @a := 1, @b := 2, @c := 3) t; -- boo!, 6 т.е. from отработал раньше<br />
<br />
select @a, @b, @c;-- 1,2,3 значения сохранились<br />
<br />
select @a, @b, @c from (select @a := @a*10, @b:=@b*20, @c:=@c*30) t;-- 10,40,90 опять from отработал раньше<br />
<br />
select @a, @b, @c;-- 10,40,90 и значения сохранились<br />
<br />
<br />
<b>SqlWatch</b><br />
Отличная утилита <a href="http://code.google.com/p/sqlwatch/">code.google.com/p/sqlwatch</a> !<br />
Ставится как "JDBC proxy", предоставляет широкие возможности для профилирования sql запросов приложения.<br />
<br />
<b>JDBC Connection String</b><br />
Сейчас использую следующий набор опций: jdbc:mysql:///название_БД?connectTimeout=180000&allowMultiQueries=true&cacheServerConfiguration=true&useLocalSessionState=true&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true<br />
<b> </b> Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0tag:blogger.com,1999:blog-29417621.post-22445031456268618082011-02-09T18:38:00.002+03:002011-02-11T16:28:27.394+03:00Займемся самолечением<b style="color: red;">Важно!</b> Предупреждение! <span style="font-size: x-small;">Я не доктор и от медицины далек. Если вы заболели, лучше обратиться к врачу. Диагноз ставит врач. Лечение назначает врач (внимательно изучите, что он вам назначил).</span><br />
<span style="font-size: x-small;">Антибиотики назначает <b>только</b> врач! Не занимайтесь самолечением!</span><br />
<span style="font-size: x-small;"></span><br />
<span style="font-size: x-small;">Нижеследующие советы представляют собой опыт моей семьи <i>для информации</i></span>, <span style="font-size: x-small;">если врач постоянно пичкает вас антибиотиками</span>.<br />
<br />
Коллеги просто напугали своими обширными познаниями в медицине на уровне "солнце вращается вокруг земли".<br />
Решил изложить, что я знаю о креветках и отправлять всех читать этот пост.<br />
<br />
Итак, горькая правда состоит в том, что современная <span style="font-size: large;"><b>медицина не умеет лечить большинство вирусных инфекций</b></span> (перечитайте ещё раз).<br />
<br />
<b><span style="color: red;">Организм заболевшего человека через некоторое время САМ обучается бороться с проникнувшим вирусом и побеждает его.</span><br />
Очень важно, что температура, которая бывает при этом – это помощник организма </b>(она в т.ч. убивает вирусы)<b>, показатель того, что организм борется.</b><br />
<br />
<br />
Всё <i>"лечение"</i>, которое даёт в данном случае медицина сводится к тому, чтобы снять интоксикацию, симптомы или осложнения = ПОСЛЕДСТВИЯ.<br />
<br />
Так любимые многими <a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D1%82%D0%B8%D0%B1%D0%B8%D0%BE%D1%82%D0%B8%D0%BA%D0%B8">антибиотики</a> НЕ воздействуют на вирусы!<br />
Они убивают <i>бактерии</i>, в том числе <i>полезные</i>, нанося при этом серьезный удар по организму.<br />
Их назначают в том случае, если, например, после гриппа у вас развилась бактериальная ангина.<br />
Пить их нужно, <i>в крайнем случае</i>, если осложнение таки появилось и оно серьезное.<br />
Назначает прием антибиотиков и их конкретный тип - только врач! (Внимательно изучите назначение, если оно из книжек времен Брежнева - обсудите с врачем более современные и щадащие средства!)<br />
<br />
Существенным прорывом науки в борьбе в вирусами являются прививки: это (всё сложнее, но для простоты) убитые или ослабленные вирусы. Организм учится определять и убивать их в тренировочном режиме, после чего в боевом это происходит быстрее.<br />
При этом они не дают 100% гарантии и сами могут приводить к осложнениям ;-)<br />
<br />
80% так называемых лекарств в аптеках - это <b>вообще не лекарства</b>, а препараты для снятия симптомов заболевания т.е. вы болеете, заражаете коллег, но выглядите внешне почти здоровым (всякие терафлю и тд).<br />
Пользы от их применения нет вообще никакой. Т.к. они зачастую только вредят, например, снижая температуру.<br />
<br />
<i><b>Что делать, если заболели?</b></i><br />
1. заболев лежать, много пить (вода, чай с травами, шиповником), есть много витамина С, много спать.<br />
2. по возможности (до 38-39 градусов) не сбивать температуру<br />
3. не жрать без необходимости антибиотики<br />
4. чистить нос <a href="http://www.lanix.ru/lanix2009/health_catalog_item.php?id=360767024&c=a&b=coclean">Coclean </a><br />
5. капать в нос <a href="http://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B8%D0%BF%D0%BF%D1%84%D0%B5%D1%80%D0%BE%D0%BD">Гриппферон</a><br />
6. пить <a href="http://ru.wikipedia.org/wiki/%D0%A0%D0%B8%D0%BC%D0%B0%D0%BD%D1%82%D0%B0%D0%B4%D0%B8%D0%BD">Ремантадин (римантадин)</a><br />
7. пить настойку Эхиноцеии Пурпурной и <a href="http://www.arbidol.ru/">Арбидол</a><br />
<br />
<br />
<br />
<i><b>Что делать, чтобы минимизировать риск заболевания?</b></i><br />
<b style="color: red;">Тренировать собственные защитные функции организма.</b><br />
1. прививка<br />
2. закаливание, например, контрастный душ (и кожа подтянется)<br />
3. зарядка / физические нагрузки<br />
4. прогулки на свежем воздухе<br />
5. чистить нос Coclean<br />
6. капать в нос Гриппферон (профилактические дозы)<br />
7. пить настойку Эхиноцеии и Арбидол (профилактические дозы)<br />
8. чистка организмаAnonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com4tag:blogger.com,1999:blog-29417621.post-56601904848421791812011-01-19T08:47:00.003+03:002011-03-19T12:07:27.645+03:00Технологические планы на 2011<ul><li>Изучить и начать использовать <a href="http://mercurial.selenic.com/">mercurial.selenic.com (Hg)</a></li>
<li>Изучить и начать использовать <a href="http://maven.apache.org/">maven.apache.org</a></li>
<li>Перейти с Log4j на давно изученный <a href="http://logback.qos.ch/">logback.qos.ch</a></li>
<li>Хорошенько сравнить <a href="http://mybatis.org/java.html">mybatis</a> со Spring JDBC + мои доработки - использовать победителя</li>
<li>Улучшить знание CSS</li>
<li>Улучшить знание JavaScript</li>
<li>IDEA 10 и только ручки</li>
<li> StAX (и углублять JAXB)</li>
<li>Активнее использовать <a href="http://www.jboss.org/hornetq">JBoss HornetQ</a> (может есть MQ лучше? RabbitMQ и ActiveMQ не впечатлили)</li>
<li>Активнее использовать <a href="http://ehcache.org/">Ehcache</a> (вкусное в 2.4, попробовать распределенный) + Spring 3.1 cache abstraction</li>
</ul>Anonymoushttp://www.blogger.com/profile/01689164934810739741noreply@blogger.com0