OutOfMemoryError při testech

V případě, že dostanete následující chybu při Maven buildu (mvn clean install)

Tests run: 226, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 316.116 sec - in TestSuite
Exception in thread "main" Exception in thread "Thread-0" Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="Sun Microsystems Inc."
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Thread-0"

Results :

Tests run: 226, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] CEB UMA Parent ..................................... SUCCESS [ 5.639 s]
[INFO] CEB UMA API ........................................ SUCCESS [ 15.656 s]
[INFO] CEB UMA Impl ....................................... FAILURE [05:37 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:59 min
[INFO] Finished at: 2016-03-29T15:08:52+02:00
[INFO] Final Memory: 43M/272M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-test) on project project_name: Execution de fault-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test failed: The forked VM terminated without saying properly goodbye . VM crash or System.exit called ?

Zkuste změnit nastavení paměti určené pro surefire plugin.

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <configuration>
 <argLine>-Xmx4096m</argLine>
 </configuration>
</plugin>

Surefire plugin se používá pro spouštění testů v lifecycle default, fázi test a výše uvedená chyba může signalizovat nedostatek paměti. Volba -Xmx určuje maximální velikost paměti (maximální velikost Java heap). Java heap (halda) je paměť určená pro Java objekty.

Změna posledního komitu v Gitu

V případě, že jste provedli uložení změn (commit) do svého lokálního úložiště (repository), stále je možné v tomto komitu provést změny, či jej vrátit zpět.

Změna textu zprávy (message) v posledním komitu
git commit --amend
Otevře textový editor, do něž je možné zadat změněný text.

git commit --amend -m "nový text"
Provede změnu textu bez otevření editoru.

Vrácení posledního komitu
Všechny změny provedené v komitu vrátí do stavu před komitem (stanou se z nich opět změny, které mají být komitnuty – „to be commited“)
git reset --soft HEAD~1

Smazání posledního komitu a všech změn, které byly v daném komitu provedeny
git reset --hard HEAD~1

Základní názvosloví v Mavenu

Build life cycle
Build life cycle je přesně definovaná posloupnost fází. Build life cycle se skládá z několika úseků, kroků -> ty se nazývají fáze (phases). Maven má tři build life cycles: clean (smazání dočasných souborů, default (sestavení, zabalení a nasazení projektu) a složky target) a site.

Phase
Phase je část, která se provádí v rámci build life cyklu. Fáze může obsahovat jeden nebo více úkolů (goals) -> fáze je spojena s jedním nebo více cíli (goals).

Plugin
Plugin obsahuje jeden nebo více cílů (goals). Jednoduše řečeno je plugin seznam jednotlivých cílů. Programátorsky se jedná o projekt, který obsahuje jednotlivé třídy, ve kterých je definována funkcionalita určitého cíle (goal).

Goal vs MOJO
Mojo je zkratka (Maven Old Java Object). Je to slovní hříčka z POJO (Plain Old Java Object). Mojo je Java třída implementující goal. Plugin je Java projekt obsahující jeden či více cílů (goal) = jeden či více Mojo.

Build life cycle (maven má tři: clean, default, site) se skládá z fází (phases). Během každé fáze se provádí různé úkoly (goals). Cíle jsou definovány v pluginech a proto, aby se v určité fázi provedli, jsou tyto cíle (goals) přiřazeny jednotlivým fázím. Jinak řečeno, jednotlivým fázím jsou přiřazeny cíle (goals) a tyto cíle (goals) jsou definovány v pluginech. Programově každý goal představuje mojo a plugin je seznamem jednotlivých cílů (goals).


Zdroje:

Instalace Oracle 12c na Windows

V tomto příspěvku ukážu krok za krokem instalaci Oracle 12c Enterprise Editiona na Windows 10. Nejdříve je třeba z této stránky stáhnou dva zazipované soubory. K tomu je potřeba mít účet u Oracle (registrace je bezplatná) a přihlásit se (a samozřejmě souhlasit s licenčními podmínkami). Pro instalaci Oracle databáze 12c na Windows 10 je třeba použít minimálně verzi 12.1.0.2.

winx64_12102_database_1of2
winx64_12102_database_2of2

Oba stažené soubory je třeba rozbalit do stejného adresáře. To v tomto případě znamená rozbalit první zip (winx64_12102_database_1of2) a z rozbaleného druhého zipu (winx64_12102_database_2of2) překopírovat všechna data z ...\winx64_12102_database_2of2\database\stage\Components  do ...\winx64_12102_database_1of2\database\stage\Components. Pokud toto neprovedete, instalaci sice budete moci spustit, ale nebude úspěšná.

V ...\winx64_12102_database_1of2\database naleznete soubor setup.exe. Spusťe jej jako správce.

Oracle12c_instalace_01

Pokud nevyplníte email dostanete následující upozornění. Klikněte na „Yes“ pro pokračování.

Oracle12c_instalace_02

Zvolte vytvoření databáze.

Oracle12c_instalace_03

Zvolte desktop.

Oracle12c_instalace_04

Můžete vytvořit nového uživatele, použít existujícího či použít svůj Windows účet.

Oracle12c_instalace_05

Pokud zvolíte „User Windows Built-in Account, zobrazí se vám následující upozornění. Klikněte na „Yes“ pro pokračování.

Oracle12c_instalace_06

Zde je potřeba zadat heslo pro administraci.  To musí splňovat určitá kritéria, takže vám to nedovolí zadat zcela triviální heslo.

Tip: Pokud kliknete do textového pole, zobrazí se vám u něj ikona žárovičky. Když na ni nejedete myší, získáte podrobnější informace, týkající se daného textového pole.

Oracle12c_instalace_07

Zkontrolují se nastavení.

Oracle12c_instalace_08

A zobrazí se přehled změn. Pokud potvrdíte, začne instalace.

Oracle12c_instalace_09 Oracle12c_instalace_10 Oracle12c_instalace_11

Toto okno vás informuje o tom, že kromě účtů SYS a SYSTEM, jsou všechna ostatní zamčené. Pokud kliknete na „Password Management“, můžete je odemknout.

Oracle12c_instalace_12

Zde můžete odemknout jednotlivé účty.

Oracle12c_instalace_13

Databáze byla úspěšně nainstalována.

Oracle12c_instalace_14


Zdroje:

Omezení počtu vrácených záznamů pomocí LIMIT

Klíčové slovo LIMIT umožňuje omezit počet vrácených záznamů SQL dotazu. Dotaz s LIMIT vrátí určený počet záznamů nebo méně (pokud samotný dotaz vrací méně záznamů než je limit)

SELECT * FROM table_name LIMIT 10

Vrátí prvních deset záznamů.

SELECT * FROM table_name ORDER BY column_name ASC LIMIT 5

Vrátí prvních pět záznamů. Dotaz nejdříve nalezne všechny záznamy. Ty seřadí sestupně (ASC) a vrátí prvních pět.

S limitem se pojí další klíčové slovo a to OFFSET. To určuje, kolik nalezených záznamů se má přeskočit.

SELECT * FROM table_name LIMIT 5 OFFSET 10

Vrátí jedenáctý až patnáctý záznam četně. Prvních deset záznamů se přeskočí.

OFFSET je možné ale použít i samostatně bez LIMIT.

SELECT * FROM table_name OFFSET 10

Vrátí všechny záznamy od jedenáctého níže.

Vícenásobný kurzor v Idea IDE

Několika násobný kurzor umožňuje měnit soubor zároveň na více místech. Pokud máme například následující objekt

public class MyObject {
    private Long id;
    private Long number;
    private Long sequence;

    public MyObject(Long id, Long number, Long sequence) {
        this.id = id;
        this.number = number;
        this.sequence = sequence;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getNumber() {
        return number;
    }

    public void setNumber(Long number) {
        this.number = number;
    }

    public Long getSequence() {
        return sequence;
    }

    public void setSequence(Long sequence) {
        this.sequence = sequence;
    }
}

a chceme změnit datový typ proměnné id z Long na long (nelze použít „type migration“), můžeme buď jednotlivě přepsat každý odpovídající výskyt (pokud bychom použili najít a zaměnit, změnily by se všechny výskyty), nebo použít multicursor. Klávesová zkratka pro vícenásobný kurzor je Alt + Shift a následně je třeba klikat na místa, kam chceme kurzor umístit.

idea_multicursor