Řazení dat v PostgreSQL podle části řetězce

V tomto příspěvku ukáži, jak získat unikátní emaily ze sloupce databáze PostgreSQL seřazené podle domény. K tomu použijeme funkci substring(co, odkud, kam).

select email from  table_name order by substring(email, position('@' in email), length(email));

Uvedený select zobrazí záznamy ze sloupce email tabulky table_name a seřadí je dle domény (podle části řetězce, který vrátí substring). Pokud chceme unikátní, select změníme následovně:

select email from (select distinct email from table_name) as sub order by substring(email, position('@' in email), length(email));

Spring Data a Liquibase

Liquibase umožňuje hlídat změny v databázi. Každá změna (blok změn) má svůj vlastní changeset. Liquibase si vytváří dvě vlastní tabulky: databasechnagelog, kde jsou uloženy provedené changesety a databasechangeloglock, která slouží pro zamykání (řeší případ přístupu, kdy více vývojářů dělá změny v databázi současně). Může se stát, že pokud Liquibase neskončí korektně a zůstane zámek. Pak je potřeba locked nastavit na false manuálně.

Číst dálSpring Data a Liquibase

Řízení závislostí v Gradle

V Gradlu v bloku dependencies {...} je možné zadat závislost a hlavně také, kdy jsou tyto závislosti potřeba (níže zmíněnou kofiguraci přidává Java plugin). Knihovny, které potřebujete jak pro kompilaci a tak pro běh, zadáte jako implementation (dříve compile). Pokud danou závislost potřebujete pouze při kompilaci použijete compileOnly, pokud pouze v runtime tak runtimeOnly.

Zde je jednoduchý příklad. Mám projekt v Kotlinu a v rámci tohoto projektu používám knihovnu Klaxon pro parsování json. Tuto knihovnu potřebuji jak při kopilaci, tak při běhu programu. Použiji tedy

implementation("com.beust:klaxon:5.0.9")

Pokud bych použil runtimeOnly, projekt by se nezkompiloval. Pokud bych použil compileOnly, projekt by se sice zkompiloval, ale po spuštění, když by chtěl použít knihovnu Klaxon, by skončil chybou.

Vytvoření tabulek pro Spring Batch

Spring Batch používá 6 tabulek, pro ukládání dat:

batch_job_execution
batch_job_execution_context
batch_job_execution_params
batch_job_instance
batch_step_execution
batch_step_execution_context

Tyto tabulky vytvoříte přidáním následujícího řádku do souboru application.properties:

spring.batch.initialize-schema=always

Zdroj: stackoverflow.com/…-auto-create-batch-table

 

Rozdíly mezi Chrome a Chromium pro uživatele Linuxu

Chromium je open source projekt a je základem pro Chrome, které má navíc další proprietální fíčury. Hlavním rozdílem pro uživatele Linuxu je ale to, že Chrome je třeba instalovat ze staženého .deb/.rpm balíčku, kdežto Chromium je možné nainstalovat pomocí snap.

sudo snap install chromium

Více o rozdílech mezi těmito dvěma prohlížeči naleznete v tomto článku.

Instalace Linuxu na Dell Inspiron 15 7000

Konfigurace počítače
Procesor Intel Core i7-8565U (1.8GHz, TB 4.6GHz, HyperThreading); 16GB RAM DDR4; 15.6″ IPS Full HD displej (1920×1080 bodů); grafika NVIDIA GeForce MX250 2GB GDDR5; disk 512GB SSD M.2 PCIe NVMe

Původní představa byla, že si na uvedený notebook nainstaluji Linux Ubuntu. Vytvořil jsem si instalační USB programem rufus dle tutoriálu na stránkách Ubuntu a spustil instalaci.

Problém první
Instalace se zasekla (počítač zamrzl) v průvodci nastavením někde v části, kde se volí oblast. Počítač jsem musel natvrdo vypnout a po spuštění jsem dostal černou obrazovku s chybou

Číst dálInstalace Linuxu na Dell Inspiron 15 7000