<?xml version="1.0" encoding="utf-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
    <title>TÓTH László — Notes</title>
    <link href="https://tothlp.hu/feed/notes.xml" rel="self" type="application/atom+xml"/>
    <link href="https://tothlp.hu/" rel="alternate" type="text/html"/>
    <id>https://tothlp.hu/feed/notes.xml</id>
    <updated>2026-06-24T11:35:57+00:00</updated>
    <author>
      <name>TÓTH László</name>
      <uri>https://tothlp.hu</uri>
    </author><entry>
      <title>Sorvég for dummies</title>
      <link href="https://tothlp.hu/note/sorveg-for-dummies" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/sorveg-for-dummies</id><published>2026-02-18T00:00:00+00:00</published>
      <updated>2026-06-24T11:35:16+00:00</updated><summary>szabály: ha úgy gondolod, hogy a problémád 99% hogy nem lehet sorvég, akkor valszeg sorvég. Például, amikor egy docker konténerben mountolt scriptet akarsz futtatni, és kvázi file not found-ot kapsz, miközben ott van a script a megfelelő jogosultságokkal. TL;DR: az auto-crlf Windows alatt legyen on, Macen és Linuxon pedig input....</summary></entry><entry>
      <title>OpenAPI Öröklődés</title>
      <link href="https://tothlp.hu/note/openapi-oroklodes" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/openapi-oroklodes</id><published>2026-02-18T00:00:00+00:00</published>
      <updated>2026-06-24T11:35:16+00:00</updated><summary>OpenAPI spec &quot;generáláshoz&quot; hasznos lehet az [[OpenAPI Springdoc Setup]].
        Ha viszont OpenAPI specből szeretnénk generálni, pl. szervert akkor belefuthatunk abba, hogy nem tudunk az objektumok között öröklődést létrehozni egy egyszerű allOf-fal. A build.gradle-ben a regisztrált tasknál meg kell adni a következőt is:
        openapiNormalizer = [
        REF_AS_PARENT_IN_ALLOF: &quot;true&quot;    
        ]
      </summary></entry><entry>
      <title>Mappaszintű Git konfiguráció</title>
      <link href="https://tothlp.hu/note/mappaszintu-git-config" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/mappaszintu-git-config</id><published>2025-07-04T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Forrás: https://davenicoll.com/configuring-git-github-credentials-for-different-folders/ Use-case Személy szerint ez nekem pl olyankor hasznos, ha különböző repokban különböző &quot;userként&quot; szeretnék dolgozni. Nyilván, ilyenkor nem jó commitonként állítgatni az authort. Megoldás Úgy közelítettem meg, hogy az alapértelmezett értékek vannak felvéve a ~/.gitconfig fájlban, és az ettől eltérő beállításokat kezelem külön. pl: [user] name = My...</summary></entry><entry>
      <title>Minimal JSON serialization setup</title>
      <link href="https://tothlp.hu/note/minimal-json-serialization-setup" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/minimal-json-serialization-setup</id><published>2024-10-25T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Bővebben: https://github.com/FasterXML/jackson-module-kotlin Ha egyedi dátumokat / adattípusokat szeretnénk serializálni / deserializálni, vagy nincs behúzva a projektbe a Spring Web, vagy default értékek nélküli osztályokat akarunk használni, pl: data class MyData( val persons: List&amp;lt;Person&amp;gt;, ) data class Person( val name: String, val birthDate: LocalDate, ) akkor serializáláskor különböző hibákat kaphatunk, pl...</summary></entry><entry>
      <title>XSD (XML) példagenerálás</title>
      <link href="https://tothlp.hu/note/xml-peldageneralas" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/xml-peldageneralas</id><published>2024-08-12T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Ha egy XSD-ből akarunk példa XML-t generálni, segítséget nyújthat a VisualStudio. Akár több sémát érintő, &quot;komplex&quot; XSD-k esetén is generálhatunk belőle, de az XSD fájloknak egy mappában kell lennie. Ha nem találhatóak a fájlok, akkor az intézőben a tulajdonságoknál le kell szedni a tiltást, és újranyitni a fájlt. (Vagy a...</summary></entry><entry>
      <title>Oracle struct kezelés</title>
      <link href="https://tothlp.hu/note/oracle-struct-kezeles" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/oracle-struct-kezeles</id><published>2024-08-12T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Amikor JdbcTemplate segítségével hívunk meg tárolt eljárásokat, meg kell adnunk a paraméterek nevét és típusát. A tömbök és struktúrák kezelése nem triviális. Szükségünk lesz egy DataSource-ra, amiből lekérhető a Connection, erre több helyen is szükségünk lesz. fun testStruct(dataLines: List&amp;lt;String&amp;gt;, user: Long): List&amp;lt;ContentResponse&amp;gt; { val schemaName = &quot;MYSCHEMA&quot; val catalogName =...</summary></entry><entry>
      <title>SpringBoot Scheduler kiütése</title>
      <link href="https://tothlp.hu/note/spring-scheduler-kiutese" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/spring-scheduler-kiutese</id><published>2024-07-30T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>SpringBoot alkalmazásoknál előfordulhat, hogy egy adott @Scheduled annotációval ellátott folyamatnál nem szeretnénk, hogy bármikor fusson. Ennek megoldására több lehetőség is van, az egyik a @ConditionalOnProperty annotáció használata, a másik pedig a @Scheduled annotáció cron paraméterének használata. Utóbbi (és vszg. legegyszerűbb megoldás), ha a cron paraméterrel kapcsoljuk ki a futást. application.yml-ben...</summary></entry><entry>
      <title>PowerShell aliasok létrehozása</title>
      <link href="https://tothlp.hu/note/powershell-aliasok-letrehozasa" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/powershell-aliasok-letrehozasa</id><published>2024-07-30T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Először is, le kell kérni a default profil elérését, amire a legtutibb megoldás, ha futtatjuk a következőt: echo $PROFILE Ennek eredményeképpen megkapjuk a default profil elérését, a továbbiakban ezt fogjuk használni. Az adott fájlban tudjuk felvenni az aliasokat: function Go-Repo {Set-Location $env:USERPROFILE&apos;\Developer&apos;} Set-Alias -Name repo -Value Go-Repo function Ip-Address {curl...</summary></entry><entry>
      <title>XML Dátumkezelés</title>
      <link href="https://tothlp.hu/note/xml-datumkezeles" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/xml-datumkezeles</id><published>2024-07-29T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>XML szerializálás (marshalling) vagy deszerilizálás (unmarshalling) során a dátumok egyedi formátumának kezeléséhez szükséges pár plusz lépést megtennünk. Az adatmodellben annotálnunk kell a dátum mezőket a @XmlJavaTypeAdapter annotációval, amelynek értéke egy XmlAdapter implementáció lesz. @field:XmlJavaTypeAdapter(ShortDateAdapter::class) var createdDate: LocalDate? = null, Ehhez nyilvánvalóan létre kell hoznunk a ShortDateAdapter osztályt is. class ShortDateAdapter(...</summary></entry><entry>
      <title>Logitech MX Mechanical mini kiosztás</title>
      <link href="https://tothlp.hu/note/logitech-mx-mechanical-mini-kiosztas" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/logitech-mx-mechanical-mini-kiosztas</id><published>2024-07-17T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Logitech MX Mechanical mini billentyűzetnél lehetőségünk van egyszerre több géphez csatlakotatni az eszközt. Jelen esetben US INTL kiosztású billentyűzetről van szó. macOS-en minden tökéletes, Windowson viszont magyar kiosztásnál az Í és 0 billentyűk meg vannak cserélve. Megoldás fn + O kombót nyomva kell tartani 3 mp-ig (az eszközváltó LED felvillan),...</summary></entry><entry>
      <title>Redocly</title>
      <link href="https://tothlp.hu/note/redocly" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/redocly</id><published>2024-07-04T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>A Redocly segítségével a generált OpenAPI specifikációból tudunk egy letisztult, könnyen olvasható dokumentációt generálni. Előfeltétel Kell egy OpenAPI spec. Lsd.: [[OpenAPI Springdoc Setup]] Redocly https://github.com/Redocly/redoc telepítése: npm install -g redoc-cli Generálás Ha csak fejlesztéskor kell újragenerálni a doksit, akkor a következő parancsot kell futtatni: redocly build-docs http://localhost:8080/v3/api-docs --config ./config.yaml -o...</summary></entry><entry>
      <title>Spring active profile</title>
      <link href="https://tothlp.hu/note/spring-active-profile" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/spring-active-profile</id><published>2024-07-03T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Spring(boot) alkalmazásoknál az aktív profilt beállíthatjuk a következőképpen: application.properties vagy application.yml fájlban a spring.profiles.active property értékének beállításával (ez szerintem nem ajánlott) IntelliJ IDEA Ultimate esetén a Run Configuration-nél a Active profiles mezőben. IntelliJ IDEA Community esetén a Run Configuration-nél : a VM options mezőben a -Dspring.profiles.active=development vagy az Environment variables...</summary></entry><entry>
      <title>Exposed Joins</title>
      <link href="https://tothlp.hu/note/exposed-joins" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/exposed-joins</id><published>2024-06-25T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Az Exposed is természetesen támogatja a join-ok használatát, de nem minden esetben olyan egyszerű, mint a JPA esetében. Alapozás Először az Entityket hozzuk létre. Semmi extra, one-to-many kapcsolat Emberek és Macskák között, ahol egy embernek több macskája is lehet. Remény szerint rengeteg. object Cats : LongIdTable(&quot;Cat&quot;) { val owner =...</summary></entry><entry>
      <title>Exposed Composite key probléma</title>
      <link href="https://tothlp.hu/note/exposed-composite-key-problema" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/exposed-composite-key-problema</id><published>2024-06-25T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Bármikor lehetünk olyan szerencsétlenek, hogy egy olyan adatbázis táblával találkozunk, aminek nem egy, hanem több mezőből álló, összetett (composite) elsődleges kulcsa van. Sajnos az Exposed ennek kezelésére csak félmegoldást kínál. Adott a következő entitás: object Cats : Table(&quot;Cats&quot;) { val name = varchar(&quot;name&quot;, 50) val breed = varchar(&quot;breed&quot;, 20) override...</summary></entry><entry>
      <title>Retrofit</title>
      <link href="https://tothlp.hu/note/retrofit" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/retrofit</id><published>2024-06-18T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>A Retrofit library használatakor annotációk segítségével tudunk HTTP kéréseket kezelni. Gyakorlatilag egy interface-t kell megírnunk, amiben definiáljuk a végpontokat, ahhoz hasonlóan, mintha a saját REST Controllerünket hoznánk létre. A Retrofit a háttérben (I guess reflection-nel) létrehozza belőle az implementációt. Előnyök: Nem kell kézzel kliens kódot írni, az adott apikat sima...</summary></entry><entry>
      <title>Lista darabolás</title>
      <link href="https://tothlp.hu/note/lista-darabol%C3%A1s" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/lista-darabol%C3%A1s</id><published>2024-06-17T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Kotlinban a listák darabolásához, méret korlátozáshoz, vagy hívjuk aminek akarjuk, a chunked utasítás használható.
        pl.: a data listát max. 1000 méretű darabokra bontjuk:
        val requests: List&amp;lt;List&amp;lt;MyCustomRequest&amp;gt;&amp;gt; = data.chunked(1000).map { MyCustomRequest(it) }
        Ebből nyilvánvalóan egy lista helyett egy listákat tartalmazó lista lesz.
      </summary></entry><entry>
      <title>Kotlin notebook dependency</title>
      <link href="https://tothlp.hu/note/kotlin-notebook-dependency" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/kotlin-notebook-dependency</id><published>2024-05-29T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Elvileg van pár beépített library amit a %use libraryName paranccsal lehet behúzni, mint pl. az exposed-ot.
        Ha a MavenCentral-ról akarunk library-t használni akkor a következő parancs használható:
        @file:DependsOn(&quot;group:artifact:version&quot;)
      </summary></entry><entry>
      <title>Semaphorok használata, többszálúsítás</title>
      <link href="https://tothlp.hu/note/semaphorok-haszn%C3%A1lata-t%C3%B6bbsz%C3%A1l%C3%BAs%C3%ADt%C3%A1s" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/semaphorok-haszn%C3%A1lata-t%C3%B6bbsz%C3%A1l%C3%BAs%C3%ADt%C3%A1s</id><published>2024-05-28T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Ha az eredményt &quot;be kell várni&quot;: val semaphore = Semaphore(4) val resp = runBlocking { items.map { item -&amp;gt; async(context = Dispatchers.IO) { semaphore.withPermit { // Map item here and return, or... val response = runCatching { // do something }.onFailure { // log error }.getOrNull() // ...return response here,...</summary></entry><entry>
      <title>Kotlin - Retry</title>
      <link href="https://tothlp.hu/note/kotlin-retry" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/kotlin-retry</id><published>2024-05-28T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>A retry-hoz egy flow-t kell használni, a retry-hoz pedig coroutine környezet kell. Coroutine-hoz, többszálúsításhoz: [[Semaphorok használata, többszálúsítás]] runBlocking { flow { // Do something val result = doSomething() emit(result) }.retry(2) { // Retry if exception is thrown, log error, etc. // set delay true.also { delay(2000) } }.catch { //...</summary></entry><entry>
      <title>OpenAPI Springdoc Setup</title>
      <link href="https://tothlp.hu/note/openapi-springdoc-setup" rel="alternate" type="text/html"/>
      <id>https://tothlp.hu/note/openapi-springdoc-setup</id><published>2024-03-28T00:00:00+00:00</published>
      <updated>2026-06-21T06:29:58+00:00</updated><summary>Doksi: https://springdoc.org Java17-tel, Springboot 3-mal lett a következő megoldás kipróbálva. A használathoz szükséges minimum dependencia: implementation(&quot;org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0&quot;) Ha kicsit fel akarjuk turbózni, be kell húzni a common-t is:   implementation(&quot;org.springdoc:springdoc-openapi-starter-common:2.1.0&quot;) Ez azért jó, mert elősegíti a Kotlin használatát, pl. támogatott a [[Kotlin - DTO validálás]] validációs annotációk segítségével a dokumentáció kibővítése....</summary></entry></feed>