Zobrazení data v PostgreSQL v určité časové zóně

K zobrazení času v určité časové zóně se v PostegreSQL používá at time zone + zóna.

select created_at at time zone 'CEST' as cest, created_at at time zone 'GMT' as gmt, created_at at time zone 'EST' as est from table_name;

+--------------------------+--------------------------+--------------------------+
|cest                      |gmt                       |est                       |
+--------------------------+--------------------------+--------------------------+
|2021-05-06 13:13:44.360009|2021-05-06 11:13:44.360009|2021-05-06 06:13:44.360009|
|2021-05-06 13:13:43.676227|2021-05-06 11:13:43.676227|2021-05-06 06:13:43.676227|
|2021-05-06 13:13:43.578580|2021-05-06 11:13:43.578580|2021-05-06 06:13:43.578580|
+--------------------------+--------------------------+--------------------------+

Zdroj: popsql.com/learn-sql/postgresql/how-to-convert-utc-to-local-time-zone-in-postgresql

Webflux a BlockHound

BlockHound je java agent (software nahraný JVM před zavoláním main metody), který způsobí to, že pokud v rámci neblokujícího vlákna (vlákno, které nemá volat blokující volání) zavoláte metodu, která blokuje vlákno, vyhodí se chyba.

Závislost

implementation("io.projectreactor.tools:blockhound:1.0.4.RELEASE")

Pokud si chceme BlockHound přizpůsobit, vytvoříme třídu, která implementuje BlockHoundIntegration

Číst dálWebflux a BlockHound

Posílání chyb do Sentry

Sentry je primárně zaměřeno na chyby. Je to místo, kam budou všechny pády systému reportovány. Na sentry si musíte vytvořit účet a nastavit projekt tak, aby chyby posílal do sentry a mít je na jednom místě.

build.gradle

implementation("io.sentry:sentry-spring-boot-starter:4.3.0")

application.yml
Tato data dostanete při registraci do sentry.

sentry:
    dsn: https://xxx@yyy.ingest.sentry.io/zzz

Kód, který pošle chybu do sentry.

try {
    throw Exception("This is a v1 test.")
} catch (e: Exception) {
    Sentry.captureException(e)
}

Je možné přidat tento kód do GlobalErrorHandleru.

@ControllerAdvice
@RestController
class GlobalErrorHandler {
    private val logger: Logger = LoggerFactory.getLogger(javaClass)

    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ExceptionHandler
    fun handle(e: Exception) {
        logger.error("Error", e)
        Sentry.captureException(e)
    }
}

Přidání uvozovek na začátek a konec každého řádku v souboru pomocí awk

Awk příkaz v příkazové řádce Linuxu, který umožňuje modifikovat soubor. Pro přidání prefixu na začátek souboru se použije příkaz

awk '{print "PREFIX"$0}' FILE

Pro přidání suffixu příkaz

awk '{print $0"SUFFIX"}' FILE

Pokud potřebujete v rámci textu přidat jednoduché uvozovky, je třeba použít '\''.

Jako příklad použiji tento soubor s názvem pokus.

lksajfs
asklfa
ksfawoowp
2526827628276262
koishf
a

sjfoisfj
osfo

Následujícím příkazem vytvořím nový soubor s názvem pokus-modified, který bude mít na začátku každé řádky jednoduchou uvozovku a na konci jednoduchou uvozovku a čárku.

awk '{print "'\''"$0}' pokus | awk '{print $0"'\'',"}' > pokus-modified

Takto bude vypadat modifikovaný soubor.

'lksajfs',
'asklfa',
'ksfawoowp',
'2526827628276262',
'koishf',
'a',
'',
'sjfoisfj',
'osfo',

Zdroje: