úterý 16. června 2015

Jak otestovat změnu času

Když je v testech potřeba posouvat čas. Bývá to poměrně pracné většinou člověk skončí s tím že píše nějaký "DateProvider", který se pak dá namockovat.

Ve spoustě případů se dá použít jednoduchá alternativa a využít Joda Time

Joda Time nabízí funkci DateTimeUtils.setCurrentMillisProvider(MillisProvider millisProvider) (a i další funkce setCurrentMillisFixed, setCurrentMillisOffset), kterými jde snadno říct, jak se má čas v testech chovat.
Po testu se musí čas zase vrátit do normálu!!! :) funkcí DateTimeUtils.setCurrentMillisSystem() V kódu se musí samozřejmě zjištovat čas přes Joda Time (např. new DateTime()).

A to je ve stručnosti vše.

úterý 12. května 2015

Maven Timeline Plugin - změření časů všech fází u konkrétního modulu.

Maven vypisuje časy buildu jednotlivých modulů. Jak ale zjistit proč konkrétní modul trvá tak dlouho...?

Narazil jsem na jednoduchý Maven Timeline Plugin, který vygeneruje jednoduché html s vizualizací časů.
Takto vypadá: http://blog.javabien.net/2014/04/22/maven-timeline-plugin/
A takto se používá: https://github.com/dgageot/maven-timeline

čtvrtek 4. září 2014

VisualVM - OQL which write byte[] into file

How to write bytes from heapdump into file in VisualVM?

Well, one possibility is use this OQL:

úterý 15. dubna 2014

čtvrtek 27. března 2014

How to run Tomcat with remote debugger

This works with Tomcat 7 (probably works with other Tomcat versions as well)

On Windows add into catalina.bat

set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

Then run startup.bat

And now you can connect remote debugger on port 8000

úterý 21. ledna 2014

Jak převést Subversion repo do Mercurialu pomocí HgSubversion

Jak převést Subversion repository do Mercurialu?

Používal jsem dva způsoby:
  1. pomocí příkazu hg convert o tom jsem psal tady: http://vondrnotes.blogspot.cz/2012/07/jak-prevest-subversion-repo-do.html
  2. pomocí HgSubversion o tom budu psát tady
Abych to stručně shrnul, tak 'hg convert' je jednoduchý spolehlivý způsob, který by většinou mohl bohatě stačit. (Spolehlivě mi převedl i 80 GB repo všechny branche a vééélmi velkou historii) 'HgSubversion' je trošku složitější a zdá se mi a může s tím být o trochu víc problémů. Na druhou stranu je o něco chytřejší a když se to zadaří, tak je výsledek lepší. (například commity jsou seřazeny správně podle data ve všech branchí, hg convert totiž udělá všechny commity z jedné branche, pak všechny commity z druhé atd.)


Jak převést Subversion repository do Mercurialu pomocí HgSubversion

  1. Instalovat podle http://mercurial.selenic.com/wiki/HgSubversion
    • - hg clone http://bitbucket.org/durin42/hgsubversion/ ~/hgsubversion
    • - Do ~/.hgrc dát:
      [extensions]
      hgsubversion = ~/hgsubversion/hgsubversion
      
  2. hg init (create repository)
  3. V repositari upravit soubory: Do .hg/hgrc dát
    [paths]
    default = https://muj-svn-server/moje/cesta/k/svn/repu
    
    [auth]
    bb.prefix = https://muj-svn-server/moje/cesta/k/svn/
    bb.username = moje.jmeno
    bb.password = moje.heslo
    

    Poznámka - Jak se vyhnout heslu v plaintextu:

    • do ~/.hgrc dát:
      [extensions]
      mercurial_keyring=
    • a vymazat řádek s heslem (bb.password = moje.heslo)
    • Mercurial se pak zeptá na heslo při prvním neúspešném přihlášení se zeptá na nové heslo

  4. SSL certifikát k svn (jen pokud je potřeba)
    Tohle musí být v 'userhome = ~/.hgrc (~/mercurial.ini)' - kvůli certifikátům pro svn
    [hostfingerprints]
    muj-svn-server = mu:j0:fi:ge:r0:pr:in:t0:b7:05:0e:81:93:97:22:67:fe:9a:0a:df
    
    Nebo toto, pokud fingerprint nezabere:
    [web]
    cacerts=
    ; cacerts je tu pro hgsubversion
    
  5. Pak převést svn do mercurialu
    hg pull
    (možná to třeba v průběhu spadne, ale to nevadí prostě se znova pustí hg pull a ono to bude pokračovat)
  6. A je to :)
    hg update
    a hurá do mercurialu!

Poznámky

Možný problém, který muže nastat pouze pokud se vývíjí a commituje do svn pomocí hgsubversion
Dá se to rozbít, že pak nejde udělat pull/push a hlásí to něco jako
Pull errors: abort: unknown revision '327d8c072e94f13489ed1ae2aaa4be66584d00b2' To se může povést opravit příkazem:

hg svn rebuildmeta

čtvrtek 12. prosince 2013

Maven - Jak zjistit licence knihoven

mvn dependency:resolve
Nejprve se musí spustit tenhle příkaz.

mvn license:license-list
Vypíše seznam všech licencí ze všech dependencies., který vypadá např. takto:
 * agpl_v3   : GNU Affero General Public License (AGPL) version 3.0
 * apache_v2 : Apache License version 2.0
 * fdl_v1_3  : GNU Free Documentation License (FDL) version 1.3
 * gpl_v1    : GNU General Public License (GPL) version 1.0
 * gpl_v2    : GNU General Public License (GPL) version 2.0
 * gpl_v3    : GNU General Public License (GPL) version 3.0
 * lgpl_v2_1 : GNU General Lesser Public License (LGPL) version 2.1
 * lgpl_v3   : GNU General Lesser Public License (LGPL) version 3.0
 * mit       : MIT-License 

mvn license:license-list -Ddetail
Ke každé licenci vypíše i krátký popis.

mvn project-info-reports:dependencies
Do "target/site/dependencies.html" nageneruje html se seznamem knihoven potřebných pro překlad/testy...