HTML

Az élet kódjai

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

Friss topikok

  • Kalle: @Travis.CG: Igazság szerint bioinformatikában nem is nagyon tudnék érvet mondani, hogy miért kéne ... (2019.06.28. 23:45) CentOS, nagyoknak
  • sdani: @Travis.CG: Nohát, nem is tudtam, hogy ilyen van... bár ahogy elnézem ezek a komponensek fizetősek... (2018.11.01. 10:14) Rossz beidegződések a bionformatikában
  • Csenge Tarnói: Ez érdekes. Most csinálok egy meta-analízist, életemben először, úgyhogy az én tudásom is felszíne... (2018.10.01. 21:39) Ez már nekem sok
  • robertherczeg: Nekem a kedvenc az volt, hogy: "Inkább eleve Mann-Whitney és/vagy Wilcoxon tesztet használjunk, m... (2018.09.04. 07:47) Ezért utálom a Wilcoxon-tesztet
  • Travis.CG: ÉÉÉÉÉs megjelent! (2018.08.24. 23:31) Nehéz szülés 2

Instant karma

2019.07.15. 15:21 Travis.CG

Annyit papoltam a régi hardverekről, hogy most utólért a végzet. Az asztali gépem bedöglött (valószínűleg tápegység gond), a DOS-os gép továbbra is fagyogat, ráadásul menrég a feleségem laptopja is elutasította, hogy bekapcsoljuk.

Ez röviden annyit tesz, hogy a család x86-os architektúrára épülő gépparkja 50%-os veszteséget könyvelhet el. Ami maradt egy 14 éves AMD Athlon, egy Dell Inspiron, ami hét évvel ezelőtt sem volt túl erős, és egy Compaq Armada 100S.

Ez utóbbit egy melóhelyi takarítás után szereztem, sok más kinccsel együtt, amikről még írok. Volt több gép is, de ez nézett ki a legrégibbnek, mert ebben még beépített floppy meghajtó is volt. Még LAN kábelt sem lehet beledugni, gondoltam érdekes dolgokat fogok csinálni vele.

Az akkumulátora természetesen halott volt, de a Windows XP szépen működött és még az infra portot is látta. A tapipad bal gombját nem lehetett lenyomni, a burkolat egy-két helyen repedezett, a BIOS beállításokat nem tudta megjegyezni, de ezt leszámítva nem volt vele probléma.

Telepítettem erre is egy FreeDOS-t, de a StarCommander valami miatt nem reagált sem a billentyűzetre, sem a tapipadra. Ekkor szereltem szét először, amikor kiderült, hogy a jobb egérgomb beszorult a burkolat alá, amitől folyamatosan le volt nyomva. A hiba korrigálása után minden program az elvárásoknak megfelelően működött.

De továbbra sem használtam semmire. A DOS-os demókat a GUS-al szerelt gépen néztem, rezignáltan tűrve a random bootokat. Majd az elsődlegesen használt gépek szépen bedöglöttek, és ahogy a maffiánál is lenni szokott, a hátul kullogók előre törtek.

Ezért úgy döntöttem, hogy ezen a gépen kipróbálok egy csomó operációs rendszert, mindegyiken végezve valami "hasznos" munkát. Jöjjön ismét a FreeDOS! Kicsit alaposabban bemutatva.

A doksi szerint FreeDOS alatt is lehet használni USB meghajtót, ami nagy könnyebbséget jelentene a fájlok továbbításában, mert floppy csak ezen a gépen van, infra driver nincs DOS-ra (ez nem pontos, COM portként működik, azt meg lehet DOS-ből használni), CD lemezeket meg nem akarok írni.

Az USB csak UHCI kontroller esetén működik és csak FAT fájlrendszert olvas. Ha ezek a feltételek adottak, akkor csatlakoztassuk a meghajtót és adjuk ki az usbdevice parancsot. Ez kilistázza az elérhető USB hubokat. Ha látjuk a pendrive márkáját, az már félsiker. A következő lépés a meghajtó elindítása. Ez az usbhci.com. Ez beül a memóriába és várja a parancsokat. Minden típusú USB eszközhöz van egy program. Találunk usbkey.com-ot, usbdrive.com-ot, de még usbprint.com-ot is. Én csak a pendrive-ot akartam használni, ezért a második meghajtó program az usbdrive lesz. Ez hozza létre a meghajtó betűjelet, amit már FreeDOSból is használni tudunk.

Ha sok USB csatlakozónk van, akkor kell egy kicsit játszani, hogy megtaláljuk, melyik meghajtó melyik csatlakozóhoz tartozik, de nekem könnyű dolgom volt, mert csak egy USB 1.0 van a gépen, tehát az E: betűt foglalta le.

Parancssorból nekem nem működött, de DOS Navigatorból ment. Nagyon nagyon lassan, de ment. Volt 40 MB adatom (egy Python interpreter, két grafikai alkalmazás és egy animáció készítő program), amit cirka 61 óra alatt akart átmásolni.

Nem tudom, mi okozta a gondot, de azt láttam, hogy kb. 2 percre teljesen megfagyott a gép, majd feléledt 3 másodpercre, ekkor frissítette a képernyőt, majd ismét két perc csend. Hatvanegy óra az elég rossz hatásfok. Ha lefekszem aludni, másnap elmegyek a boltba egy CD-t venni, hazajövök, kiírom, még akkor is gyorsabb, mint USB-n átmásolni.

Végül egy Knoppix segített a dolgokat megoldani. (Egy nagyon friss, 2006-os CD lévő Linux disztribúció.) Knoppix alatt felcsatoltam a DOS lemezt, a pendrive-ot és átmásoltam mindent. Kevesebb, mint egy perc alatt.

A DOS-os Pythont az ibiblio oldalán találtam meg. Sajna hosszú fájlneveket tartalmaz a zip, ezért kibontásnál kérdezte, mit csináljon az azonos nevű fájlokkal. Azt mondtam neki, írja felül a régieket. Úgy néz ki, a program működik, de igazából egy időzített bomba. Nem tudom, mikor fogja lefagyasztani az egész rendszert. Ráadásul elég régi Python, csak 2.4-es.

QuickView Pro-val még a fényképeimet is meg tudtam nézni. Persze csak 3 megapixelig, nagyobb felbontásnál a gép újra indult. Rajzolni a VGA Paint programmal próbálkoztam, de ez még a Windows-os Paintnél is egyszerűbb. Még vonal vastagságot sem lehet beállítani.

A hangkártyát viszont nem tudtam működésre bírni. Ebben a gépben egy VIA hangkártya van, ami elméletileg Sound Blaster kompatíbilis, de csak ha a BIOS-ban beállítjuk. Sajna ott nem volt egyetlen hangkártyára vonatkozó beállítás sem. Ha pedig mindenre fittyet hányva beállítom az alapértelmezett értékeket a BLASTER környezeti változóba, semmi nem történik.

Demók közül egyedül a 256 byte intrókat nézegettem. Azért látszott, hogy az újabb alkotások rendesen megizzasztották az 550 MHz-es processzort. Néhánynak még a forráskódja is megvolt. Nasm van alapból FreeDOS-ban, ezért gyorsan megpróbáltam lefordítani őket. Gond nélkül ment.

Ekkor jutott eszembe, mi lenne, ha megtanulnék assemblyben programozni és írnék egy 256b intrót Function-re. Már érlelgetem egy ideje, hogy érdemes lenne alacsony szinten is programozni, de a lustaság nem vitt rá, hogy pár könyv megvásárlásán kívül konkrét lépéseket is tegyek.

Most viszont, ha szabad ezt mondanom, nincs más választásom. Az elmúlt időben egy csomót DOS-oztam, és nem akarom senki nosztalgikus érzését megbántani, de ez egy annyira primitív rendszer. Látszik, mennyit dolgoztak a FreeDOS-on, mert sokkal kevésbé gáz, mint amire a DOS 6.22-ből emlékszem, de még így is nagyon nehézkes. Nem is értem, hogyan születhettek olyan nagyszerű programok erre a platformra. Mintha az egész operációs rendszer azért lenne, hogy nekem rossz legyen.

De talán ebből az egyszerűségből következően könnyebb lesz megtanulni assemblyben programozni és az egyetlen compó, aminek ez a preferált platformja, a 256 byte intró. Majd meglátjuk mi sül ki belőle.

Szólj hozzá!

Címkék: rendszergazda

Szálak vagy szálak nélkül? Ez itt a kérdés

2019.07.07. 21:46 Travis.CG

Androidon a nem úgy megy a fejlesztés, mint asztali környezetben, ezt kezdem megszokni. Az egyik ilyen probléma, a szálak kezelése. Ez elég egyszerű a közönséges Java programoknál. Ott az sem gond, ha a fő szál sokáig vár, például mert várja, hogy egy másik gép csatlakozzon hozzá.

Androidon ez probléma. Ott nem lehet a felhasználói felületet lebénítani, csak azért, mert egy esemény bekövetkezésére várunk. Ezért ezeket a problémás lépéseket egy új szálra helyezzük, ami kedvére várhat, miközben a tapicskolás is megmarad.

De mi a helyzet, ha több párhuzamos szálat akarok? Néhány próba kódot mutatok be, aminek nem is az a lényege, hogy hatalmas műhelytitkokat áruljak el, mert gondolom a profiknak ezek triviális megállapítások. Én viszont nem vagyok profi Android programozó, ezért rácsodálkozhatok ezekre a jelenségekre. Kipróbálok pár módszert, még akkor is, ha azok rossz programozói gyakorlatok.

Tehát a célom, hogy egy gomb megnyomására két párhuzamos szál induljon. Az egyiket nevezzük Bunak, a másikat Funak, mint a kínai emigránsokat a viccből.

AsynchTask

A doksi szerint ez a legegyszerűbb és legtisztább megoldás:

public class ParaThread extends AsyncTask<String, Integer, Long> {

@Override
protected Long doInBackground(String... names) {
for(int i = 0; i < 15; i++) {
Log.d("ParaThread", "Thread: " + names[0] + " is running" + i);
try {
Thread.sleep(500);
} catch(InterruptedException e){
e.printStackTrace();
}
}
return null;
}
}

Tegyük is bele egy gomb onClick metódusába:

public void onClick(View view) {
new ParaThread().execute("Fu");
new ParaThread().execute("Bu");
}

Ez alapján arra számítok, hogy a gomb megnyomása esetén Bu és Fu felváltva hagy üzenetet a logban. De nem ez történik. Először Fu üzeneteit látom, utána Bu üzeneteit. Ha rövid időn belül többször is megnyomom a gombot, akkor az eseményeket szépen puffereli. Tehát ez a megoldás nagyon jó, ha nem akarom millió szállal szétfagyasztani a rendszeremet. Tökéletesen biztonságos, annyiszor használom, ahányszor csak akarom.

De én ennél többet akarok, mert egy cowboy vagyok, aki szeret veszélyesen élni.

Thread

Készíthetünk saját osztályt, ami kiegészíti a Thread osztályt.

public class ParaThread extends Thread {

private String name;

public ParaThread(String myname){
name = myname;
}

public void run() {
for(int i = 0; i < 15; i++) {
Log.d("ParaThread", "Thread: " + name + " is running" + i);
try {
Thread.sleep(500);
} catch(InterruptedException e){
e.printStackTrace();
}
}
}
}

Sok változás nincs. Példányosítjuk a két osztályt.

private ParaThread pt1 = new ParaThread("Fu");
private ParaThread pt2 = new ParaThread("Bu");

Meghívjuk a szálakat a gomb lenyomásánál.

public void onClick(View view) {
pt1.start();
pt2.start();
}

Ez már jó! Bu és Fu felváltva írnak a logba. Ha többször akarjuk indítani, akkor is csak 2 szál fog futni. De ilyet nem szabad csinálni, azt mondják. Akkor csináljuk Runnable implementációval, hogy javasolják.

Runnable

Az osztályunk implementációja csak egy sorban tér el, ezért az nem írom le újból, de a használatához új szálat kell létrehozni.

public void onClick(View view) {
new Thread(new ParaThread("Fu")).start();
new Thread(new ParaThread("Bu")).start();
}

Ez már igen! Ha többször klikkelünk a gombra, akkor még két szálat létrehoz minden egyes klikkre! Ezzel már gond nélkül írhatjuk a veszélyes programokat.

Szólj hozzá!

Címkék: java programozás android

Markov láncok

2019.06.30. 13:08 Travis.CG

Szerepjátékos koromban a legnagyobb kihívást a jó karakter nevek kitalálása okozta. Rendszeresen valami nyögve nyelős, erőltetett nevet találtam ki, ami általános derültséget váltott ki a csapatban. Ha akkor ismertem volna a Markov láncokat, mindez nem jelentett volna problémát.

A Markov láncok nagyon egyszerűek: Semmi más, mint egymást követő elemek. Azt, hogy miként követik egymást az elemek, valószínűségekkel adjuk meg, amit átmeneteknek nevezünk. Vegyünk például egy tornasort. A magasabbak elől állnak, az alacsonyabbak hátul. Annak a valószínűsége, hogy a legmagasabb valaki után következzen, nulla. Tegyük fel, több, azonos magasságú ikerpár is van ezen a tornaórán. Az ő átmenetét 0.5-el jellemezhetjük, mert hol az egyik van előrébb, hol a másik.

A Markov láncok általában csak az egymást közvetlenül követő elemekre adják meg az átmeneteket, vagyis a korábbi elemek nem számítanak. Ez akkor érdekes, ha nem egy tornasorra gondolunk, hanem más hosszú láncokra, amelyek viszonylag kevés elemből állnak. Mint amilyen a DNS is.

A Markov láncok segítségével bármilyen hosszú DNS-t jellemezhetek, hiszen csak azt kell megadnom, hogy egyik nukleotid milyen valószínűséggel követi a másikat. Ha a nukleotidok teljesen random követnék egymást, akkor ez nem lenne túl érdekes, mert az átmenetek csak 0.25-t tartalmaznának. De tudjuk, hogy a kódoló és nem kódoló szakaszoknál ez más, sőt fajokban is eltérhet!

Tehát ha az átmeneteket egy mátrixba gyűjtöm, akkor bármilyen hosszú DNS szekvenciát jellemezni tudok. A mátrix mérete nem változik.

Sőt, a szabály ismeretében bármilyen hosszú DNS szekvenciát is tudok generálni. Ennek persze nem sok értelme van, és nem is segíti a megértést, ha szekvenciákkal szemetelem tele a képernyőt, ezért inkább Gyűrük Ura neveket fogok generálni demonstrálásként, amiket fantasy játékokban lehet használni.

Először is szükségünk van az átmenetekre. Ezeket már létező nevekből kapjuk meg. A Wikipédiaból kimásoljuk az összes nevet. Én eltávolítottam az összes ékezetet, kötőjelet és angol kötőszót, majd a szöveget kisbetűssé változtattam. Minden név egy sorban van.

import sys
import random

transition = dict()
letters = set()

for i in open(sys.argv[1]):
   name = i.rstrip()
   for j in range(1,len(name)):
      pch = name[j-1]
      ch = name[j]
      if pch not in transition:
         transition[pch] = dict()
      if ch not in transition[pch]:
         transition[pch][ch] = 0
      transition[pch][ch] += 1
      letters.add(pch)

A transition nevű változó fogja tárolni az átmeneteinket. Most még csak az átmenetek számát tartalmazza. Ebből nekünk valószínűségeket kell kapnunk.

for ch1 in transition:
    s = 0
    for ch2 in transition[ch1]:
       s += transition[ch1][ch2]
    for ch2 in transition[ch1]:
       transition[ch1][ch2] = float(transition[ch1][ch2]) / s

Gyakorlatilag ez egy normalizálás, hogy 0 és 1 közötti értékeket kapjunk. Már csak a generálás van hátra. Ebben a programban csak 5 betűs neveket készítünk, de lehet kísérletezni más hosszúsággal is.

letters = list(letters)
ch1 = letters[random.randint(0, len(letters)-1)]
name = ch1
for i in range(5): # Length of the name
   r = random.random()
   s = 0.0
   if ch1 not in transition:
      break
   for ch2 in transition[ch1]:
      s += transition[ch1][ch2]
      if r < s:
         ch1 = ch2
         name = name + ch2
         break
print(name)

Néhány példa, hogy mi jött ki: Marwor, Frindo, Halanb, Brisen. Persze vannak teljesen használhatatlan nevek is: Hbelfr, Rgoron, Wirorf, Ndunha.

A bemeneti adatok most az összes karakter nevét tartalmazzák. Biztos érdekes lehet csak tünde, vagy csak hobbit neveken lefuttatni. Esetleg ha elég nagy listánk lenne, akkor nemek szerint is bonthatnánk. A következő posztban kicsit fejlesztjük a koncepciót és bemutatom a rejtett Markov láncokat.

Szólj hozzá!

Címkék: statisztika

Mások hibáztatása

2019.06.28. 10:58 Travis.CG

Másokat hibáztatni egyszerű. Másokat hibáztatni könnyű, mert ezzek kifejezhetjük saját felsőbbrendűségünket. Rámutathatunk a gyarló alakra, miközben mi, a hiba felfedezői tökéletességünk teljes tudatában emelkedünk az égig, ahol vár a glória. Még több alantas emberre mutatunk, tovább emelkedünk. Egészen addig...amíg rá nem jövünk, hogy mások ócsárlása közben mennyi hibát követtünk el.

Megkértek, hogy telepítsek egy rakás bioinformatikai programot egy olyan gépre, amin alig van használható program, a rendszergazdák nem válaszolnak a levelekre, furcsán van konfigurálva és szinte semmihez nincs jogosultságunk. Egyszóval a szokásos felállás.

El is kezdtem telepíteni a programokat a progs könyvtárba. Mindegyik program saját alkönyvtárat kapott. A munka során a szerverre néha nem lehetett belépni, néha teljesen le volt terhelve, egyszóval semmi rendkívüli nem történt.

Egészen a Fusioncatcher telepítéséig.

A program igyekszik megkönnyíteni a függőségek telepítését, ezért egy kérdés-felelet formájában feltelepíti a neki szükséges összes adatot, programot, mindent, a saját könyvtárába, másoktól rejtve. Legalábbi ez az alapértelmezett beállítása. Bitmumus viszont javasolta, hogy ne a fusioncatcher könyvtárába tegyem a programokat, hanem a progs könyvtárba, mert akkor mindenki tudja használni. Ezt remek ötletnek tartottam. Telepítés során meg is kérdezte hova telepítse a blat, STAR, liftover, stb. programokat. Én pedig minden egyes alkalommal kértem, hogy a progs könyvtárba tegye.

A végén gondoltam megnézem, mit is alkottam. A progs könyvtárban csak a seqtk program ült nyugalomban. De miért nem a saját alkönyvtárában? Hol van a többi program, amit már felraktam? Biztos megint valami fájlrendszer hiba, ami múlt héten is volt. Miért nem lehet rendesen megcsinálni egy szervert?

Elpanaszoltam mindenkinek, micsoda trehány munkát végeztek a rendszergazdák, mennyire hátráltatják a munkánkat és még csak nem is válaszolnak a levelekre, amit küldünk nekik.

Este lefekvésnél is csak ezen rágódtam, amikor megértettem, mit is csináltam. A fusioncatcher megkérdezte, hova tegye a programokat, én meg az összes program szülő könyvtárát adtam meg! Amit létrehozott (ergo törölt minden tartalmával) és beletette a kérdéses programot. A következő program telepítésénél ugyan így jártam el, és természetesen a Fusioncatcher teljesítette is a kérést. A végén ezért csak az utoljára telepített programot, a seqtk-t láttam.

Nem volt semmiféle fájlrendszer hiba, sem tehetetlen rendszergazdák, csak egy ostoba bioinformatikus, akinek könnyebb volt másokat hibáztatni, mint felismerni saját tehetetlenségét. Másnap töredelmesen be is vallottam bűnömet.

Szólj hozzá!

Címkék: rendszergazda bioinformatika

CentOS, nagyoknak

2019.06.17. 23:25 Travis.CG

Az otthoni gépemet állandóan buherálom. A buherálás olyan mértéket öltött, hogy buherálás nélkül már nem is megy. Két rendszer van rajta. Egy Windows, hogy tudjak demókat nézni és videókat szerkeszteni és egy Linux, gyakorlatilag minden másra.

A Windows két vinyón terpeszkedik, alaplapi RAID 0-ban, mert a sebesség a mindenem. Az adatbiztonság másodlagos. A Linux is RAID 0-n van, de szoftveresen. Ezzel el is értem, hogy egyik oprendszer sem látja a másikat. Ha valamit mégis mozgatni kell, akkor valamit buherálni kell.

A Linux egy Slackware, amihez nem érkeznek automatikus frissítések. A böngésző, a könyvtárak az évek során szép lassan elavultak, egyre többször találkozom olyan weboldallal, amit nem tudok rendesen megjeleniteni. Ezért telepítettem egy új böngészőt, ami képes frissíteni magát. A beállításokkal valami gubanc akadt, az előzmények az egyik böngészőben megjelennek, másikban nem. Én pedig rendszeresen azt indítom el, amelyikben nincsenek.

Telepítettem rá Hadoopot, új CUDA-t, Torcs-t, Tensorflow-t. Mindegyiket forrásból, függőségekkel, egyedi beállításokkal. Minden hekkelve, átmeneti megoldásokkal, amelyek végül megkövültek és lustaság hiányába véglegessé változtak.

Aztán még nem is írtam olyan problémákról, amikor néha a gép ATA hibára panaszkodva nem hajlandó elindulni. Mindez belepréselve egy pici házba, ahol ha túlságosan megnyomom az oldalát, akkor az alaplapról lecsúszik az előlapi USB csatlakozó. De már olyan is volt, hogy a processzor hütőventillátora kezdte kóstolgatni az egyik kábelt, amelyik túl közel merészkedett hozzá. Linux alatt nem megy a két monitor és még sorolhatnám.

Úgy döntöttem, elég volt. Pöccre működő rendszert akarok. Ehhez viszont rendes Linux kell. Olyan, amelyiket támogatják a cégek, mégis tartogat egy kis újdonságot. Mivel Kubuntu van a munkahelyemen, az egyik otthoni laptopon, a CentOS mellett döntöttem.

A telepites csak úgy ment, ha nem volt az optikai meghajtó bekötve, különben dobálta az ATA hibákat. Ezt is meg kell oldani! Az alaplap kézikönyvét olvasgatva észrevettem egy furcsaságot. Azt írta, ha régi Windowst telepítek CD-ről, akkor csak a SATA5 csatlakozót használjam. Ez a csatlakozó teljesen külön van a többi SATA csatlakozótól. Rádugtam az optikai meghajtót és a hiba megszűnt. Sőt, a rejtélyes Windows fagyások is megszűntek.

A Linux új diszkre került, ezért a régi RAID-et megszűntettem. A kábelek száma is lecsökkent. Felszabadult egy csomó hely a házban.

A telepítés után egy gond volt csak: Először a GPU meghajtót raktam fel, és csak utána a CUDA-t. Ez utóbbit csomagkezelőből, ha már úgyis van. A CUDA pedig volt szíves egy régebbi GPU meghajtót telepíteni. Egy ideig nem is volt gond, csak aztán jött egy kernel frissítés. A KMS pedig kereste az új GPU meghajtót, hogy lefordítsa a szükséges kernel modult. De az már messze járt. A Linux pedig nem indult.

Miközben a GRUB paramétereit maszíroztam, hogy legalább konzolosan el tudjam indítani a gépet, azon kaptam magam, hogy megint buherálok. Ennek már úgy látszik soha nem lesz vége.

Végül visszatelepítettem az új GPU meghajtót. Ment a CUDA is, a két képernyő is, hurrá. Jöjjenek a gépi tanulás csomagok. Ekkor jött a hideg zuhany. A CUDA túl új volt nekik. Nekik a 10.0 kell, nem a 10.1. Először még eljátszottam a gondolattal, hogy néhány symlinkkel átverem a rendszert, de leállítottam magam. Nem fogok tovább buherálni!

Megpróbáltam csomagkezelőből eltávolítani, de az sem ment. A CUDA ugyanis egy meta-csomag volt, telepített egy csomó más csomagot. Mikor el akartam távolítani, csak a meta-csomagot tűntette el, a példa fájlokat, dokumentációt, fejlesztői könyvtárakat mind érintetlenül hagyta.

A régi CUDA-t viszont nem csomagkezelőből tettem fel, mert ott nincs ráhatásom, hogy mit telepítsen. Van egy futtatható telepítő, azt használtam. Mikor megkérdezte, tegye-e fel a GPU meghajtót, a középső ujjammal nyomtam le az N betűt.

A CentOS alapvetően tetszik. Nincs annyira ellátva csomagokkal, mint az Ubuntu. Ha valaki például egy video lejátszó programot akar, külön repot kell keresnie. De ami van, az teszi a dolgát. Fejlesztői szempontból jobb, mint az Ubuntu, ami alapértelmezetten nem tesz fel fordító programokat. Cserébe persze a multimédiás képességek jobbak.

Az alapértelmezett ablakkezelő rendszer a Gnome, amit én kedveltem annak idején, csak amikor a Slackware KDE-re váltott (az Ubuntu meg a Unityre), akkor hanyagoltam el. Most viszont a beállítások hiánya fáj. Talán ha telepíteném a ... Nem! Nem buherálunk!

Érződik, hogy a rendszer elsődleges célja, hogy dolgozzanak vele, ne játszanak. Talán ezért is támogatják szívesen a cégek, ezért van annyi szerver szolgáltatás a csomagkezelőben. Aki meg nem nőtt fel és játszani akar, Ubuntuzhat kedvére.

Pár furcsaság azért akad. Ha telefont kötök rá, csak egy fájlt tud lemásolni. Ha többet jelölök ki, akkor a libmtp kiabál. (Ebben hibás lehet a bekapcsolt USB debugg is, mert Windows alatt sem ment zökkenőmentesen a másolás.) Az SELinux szerintem túl paranoid. Úgy értem, megakadályozza például az indexképek megjelenítését. Ezzel még nem tudom, mit kezdek. Eddig nem láttam kárát, hogy hagyom működni, ahogy van.

3 komment

Címkék: rendszergazda

Roncsvadászok

2019.06.10. 23:03 Travis.CG

Ez a történet alapvetően ellentmond egy korábbinak, nevezetesen a régi hardverek használhatóságának mai világunkban.

Új munkatársunk érkezett, akinek egy támogatásból új gépet is rendeltek. Bár igyekeztek számára a terepet minél hamarabb elrendezni, ahogy várható volt, mikor munkába állt, a gép éppen a következő "két hét múlva itt lesz" periódsuban volt.

Semmi baj, mentora az irodában fellelhető elavult gépekből összerakott neki egy kofigurációt. A megoldás, ahogy várható volt, félig teljesítette az elvárásokat. Megismerni a Linuxot meg lehetett alatta, távoli gépekre be lehetett jelentkezni, de a böngészőt már nyekeregve indította.

Egyik reggel arra mentem be, hogy a gép rejtélyes módon megállt. Egészen pontosan bootolás után random pillanatokban megfagyott. Rögtön elkezdtünk tanakodni, mi lehet a probléma. Én arra gondoltam, a processzor túlmelegszik. Mivel a hűtő fordulatszámával nem volt gond, elképzelhetőnek tartottam, hogy a hővezető paszta száradt be.

Rövid ideig szenvedtünk a CPU hőmérsékletének megjelenítésével, aztán úgy döntöttünk, nem éri meg vesződni vele. Rakjunk össze egy másik gépet abból a temérdek alkatrészből, ami még ott található. Korábban felhoztam a szerver teremből egy sokkal modernebb PC-t (ez már kb. 2008-ből származott). Biztonsági mentések tárolására használtuk, de miután meghibásodott a tápegység, és egy merevlemez benne, már nem tudta ellátni feladatát.

Lementem a rendszergazdákhoz, hátha tudnak adni ideiglenesen egy tápegységet. Nem tudtam, mi a pontos elnevezése, ezért olyat kértem, amin "szélesebb molex van". A rendszergazda értetlenül nézett rám, majd megkérdezte: ATX2? Azt mondtam, igen. Levett egyet a polcról, megsimogatta, de olyan gyengéden, mint apa a lányát, ha egy rockerrel engedi el randizni.

- Vigyázz rá!

Megígértem, hogy vigyázni fogok a nyomorult tápegységre, és gyorsan elfordultam, nehogy véletlenül könnyeket lássak a szemében.

Beszereltem a tápegységet. Mivel a gép azelőtt biztonsági mentéseket tárolt, volt benne hat merevlemez, de arra már nem emlékeztem, melyik romlott el, ezért lehúztam a felét az alaplapról és néztem, elindul-e. Nem indult. Megcseréltem a másik hárommal. Nem indult. Vissza az eredeti hármat, elindult. Mi a fene? Kerestem a hibás vinyót, de a gép néha elindult és panaszkodott a hibás vinyóra, néha nem indult.

Szép lassan kezdtem rájönni, hogy ennek a gépnek több baja is lehet és ebből nem lesz egyhamar használható gép.

Közben mentor munkatársam elkapott egy kollégát a folyosón, akikről tudta, hogy laptopokat vettek "nemrég". Bár kezdtem megérteni, hogy az időt másképp kell mérni. Minden esetre nekik voltak öt éves számítógépeik.

- De a vinyók nem jók benne - mesélte. A renszer vinyó tönkrement, de egy másik is volt benne, tele adatokkal. Már fél éve kérem a rendszergazdákat, hogy mentsék le nekem róla az adatokat.

Megígértük, hogy mi le tudjuk menteni, csak adja nekünk a vinyó nélküli számítógépet. Megkaptuk. Az első roncs gépből áttettük a vinyót bele és volt egy működő gép. Szerelés közben megláttam, milyen kábelt kapcsolt rá a vinyóra és megrökönyödve kérdeztem:

- Ez a gép még IDE-s?

Munkatársam nem értette, mire gondolok, mire röviden elmagyaráztam.

- Azt nem tudtam, hogyan hívják -felelte. Én csak busznak hívom.

Gondoltam elsütök egy tömegközlekedéses poént, de visszafogtam magam. Végül is miért kéne bárkinek is ósdi tehnológiákat ismernie? Az egykori szerverből ezután visszaadtam a "drágaszágot" a rendszergazdának. Közben, akitől kaptuk a gépet, visszatért, kezében egy drótkupaccal. Úgy nézett ki, mint aki slusszkulcs nélkül akar autót indítani.

- Ismét szóltam a rendszergazdáknak, hogy mentsék le az adatokat, erre ezt adták nekem - panaszolta. - Fél év könyörgés után ezt nyomták a kezembe - azzal megrázta a kábel köteget.

- Ne aggódj, működni fog - nyugtatta munkatársam. - Tudom, hogy olyan, mint egy tyúkbél, de azzal lementheted az adatokat.

Otthon elmeséltem a kalandjaimat, mire feleségem felugrott.

- Most jut eszembe, ezeket a munkahelyemen találtuk, gondoltam, te meg tudnád nézni, hogy mi van rajtuk.

Azzal a kezembe nyomott egy zacskó floppy lemezt.

Szólj hozzá!

Címkék: rendszergazda

Projekt-elbaltázódási index

2019.05.30. 23:34 Travis.CG

Absztrakt

Vannak tudományos projektek, melyek egy idő után összeomlanak és lehetetlenné válik a további munka. Korábbi kutatások a PhD hallhatók hozzáállását tették felelőssé (Lusta, 1980), de újabb kutatások a csoport vezetőinek felelősségét is firtatják (Szapuló, 2018). Jelen publikáció célja egy olyan mérőszám bevezetése, amely segítségével bárki, aki az adott projektben részt vesz, képes legyen megbecsülni, mikor érdemes a munkából kiszállni.

Bevezetés

Régóta ismert tény, hogy a tudományos kutatások részeredményeinek keletkezése semmilyen összefüggésben sincs a ráfordított idővel. Egyes eredmények gyorsan jönnek, mások viszont kemény munka árán sem akarnak összejönni. Az is régóta ismert tény, hogy egyes projektek végül elhalnak és nem születik belőlük publikáció (Smartass, 2014).

Egy új megközelítés szerint - ami a minta azonosítók bevezetésének számával igyekszik megbecsülni, mikor válik a projekt kezelhetetlenné - lehetővé válik megjósolni, mikor kell beavatkozni, hogy munkánk ne fusson zátonyra.

Anyag és módszer

Három kutatási projekt információit összegyűjtve hoztuk létre a modellt, ahol a mintaelemszámot és a hozzájuk kapcsolódó egyedi azonosítókat gyűjtöttük össze. Minden statisztikai teszt Wilcoxon teszt volt, mert mással nem kaptunk olyan eredményt, ami a vezető kutatónak tetszett volna. Mivel nem támogatjuk a p-érték használatát, következetesen kihagytuk minden számításból. A számításokat Excel 4.0-ban végeztük, egy Windows 3.1-t futtató számítógépen, mert ez volt az egyetlen gép, amin nem futott a Bitcoin bányászó alkalmazás.

Eredmények

A projekt ellehetetlenedése összefüggést mutat a kutatók által bevezetett új azonosítók számával (R=0.98). Minél többen dolgoznak egy munkán, az egyes részfolyamatoknál gyakran ugyan annak a mintának több azonosítója is van. Vegyünk egy hipotetikus esetet, ahol 10 növényi mintából kell mutációkat meghatározni. A növényeket egy speciális üvegházban nevelik, ahol kap egy azonosítót. Ez alapján tudják az üvegház dolgozói, melyik növény hol található és melyik kutatócsoport protokollját kell alkalmazni. A kutatók saját azonosítókat használnak, amibe általában belekódolják a különböző kezeléseket is. A növényekből izolált DNS újabb azonosítót kap, mert az eppendorf csőre nem tudják kiírni azt a hosszú szöveget, amit az Excel tábla vígan kezel. Elküldik egy szekvenáló céghez, aki néha kénytelen új azonosítót rendelni mindegyik mintához, mert az operációs rendszerek legtöbbje képtelen emoji karaktereket használni fájl névként, és még a szóköz is gondot okozhat neki. A bioinformatikusok előszeretettel változtatják meg az azonosítókat, néha csak azért, mert a kutatók arra sem veszik a fáradságot, hogy alapvető információkat közöljenek a projektről. Végül a publikációban teljesen más azonosítók vannak, mert azok néznek ki jól.

Ebben az egyszerűsített példában is egy mintának hat különböző azonosítója volt. A teljes mintaszám pedig 10 volt! A példa nem tért ki olyan esetekre, amikor új kutató érkezik, több éven átívelő munkáról van szó, vagy egyszerűen elvesznek információk (mert valaki alkoholos kézzel matatott az eppendorf csövek körül). Minden egyes új azonosítóval nehezedik a kommunikáció a projekten belül, ami a mintaelem szám növekedésével tovább bonyolódik. Végül senki sem fogja tudni, miről van szó és a projekt elhal.

I=an

Ahol I az elbaltázósádi index, a az egyedi azonosítók száma egy mintára, n pedig a teljes mintaszám. Könnyű belátni, hogy az index torzít alacsony mintaelem számnál, bár ha csak egy mintánk van, egyetlen azonosítóval, azzal úgysem tudunk tudományos igényű eredményeket elérni.

Összegzés

Egy projekt bonyolultságát nehéz megbecsülni. Ha az összetettség elér egy kritikus értéket, minden további munka lehetetlenné válik. Ebben a cikkben a minták azonosítóinak számát vettük alapul, hogy meghatározzuk, mikor jut el a projekt a teljes káoszig. Az index használatával elkerülhető, hogy egy csomó munka a kukában végezze.

Szólj hozzá!

Az a fránya p-érték

2019.05.12. 22:23 Travis.CG

A kutatók is szoktak flamelni, jóllehet ők nem webes fórumok mögül puffogtatnak, hanem Nature cikkek hasábjain. Ahogy a Linux vs Windows vagy Konzol vs PC viták sem jutnak dűlőre, valószínűleg itt is sokára lesz konszenzus.

De miről is van szó? Természetesen arról, hogy mellőzzük-e a p-értéket a statisztikai eredmények közlésénél vagy ne? Mert mi a p-érték? Egy szám, semmi több. Felejtsük el a definíciót egy picit, hiszen a kutatók legtöbbje szintén elfelejti azt. Ők csak egy számot látnak belőle, amiről be kell mutatni (szándékosan nem írtam, hogy bizonyítani), hogy kisebb 0.05-nél. Ha valami miatt ez 0.0500001, akkor mindenki depressziós, de ha átcsap 0.0499999-be, akkor az Univerzum értelmet nyer. Ha pedig az egészből csak ennyit látunk, akkor ennek a számnak tényleg semmi értelme.

Például egy korábbi munkám során növényi hormonszintek és a hideg tolerancia közötti kapcsolatot kerestük. A vezető kutató a cikkekből tudta, hogy a prolinnak ebben pozitív szerepe van. A statisztikai tesztek viszont nem adták vissza ezt. A p-érték valami 0.6 volt. Volt is vita, hogy a létező asszociáció miért nem "szignifikáns". Nos, azért nem volt, mert minden hormon esetén megvolt a három ismétlés, de egy malőr miatt prolin esetén csak két ismétlés volt. Ebben az esetben a magas p-érték nem azt jelentette, hogy nincs meg a hőn áhított kapcsolat, csak azt, hogy pocsék volt a kísérleti elrendezés. A p-érték nem jós, nem "látja" az igazságot.

Vegyünk egy másik példát. Ritka betegségeket vizsgáltam és mivel kevés minta volt, nem is bajlódtam statisztikai tesztekkel. Leszűrtek a genotípusokat különböző szempontok szerint, és végül kb. 21 maradt, amiből a klinikusok megtalálták azt, amit a legvalószínűbb oknak gondoltak. Ezek után, puszta kíváncsiságból lefuttattam a plink asszociáció keresőjét. A kézi szűréssel kapott variációt nem találtam sehol, de cserébe kaptam egy nagyon szignifikáns, de teljesen más eredményt. Tüzetesen megvizsgálva kiderült, hogy az eredmény egy hülyeség. Egy olyan variációról volt szó, ami két betegben is homozigóta volt, miközben az összes többi rokonból hiányzott az allél!

Nyilván a statisztikai teszt kihozta, mert betegekben feldúsul, egészségesekből hiányzik. Csakhogy a genetika nem így működik. Arról sem szabad megfeledkezni, hogy igazából egy hibát is elkövettem: Az asszociáció teszt akkor működik, ha a minták függetlenek. Márpedig családtagok nem függetlenek. (Hacsak a postás nem csenget kétszer, de ebbe ne menjünk bele.) A p-érték nem bíró, nem dönti el, hogy volt-e értelme a tesztnek.

A harmadik esetről már írtam korábban. Ebben az esetben jók voltak az adatok, jó volt a teszt, csak nem azt mértem, amit szerettem volna. A p-érték nem gondolat olvasó.

Most joggal gondolhatja valaki, hogy a p-érték teljesen felesleges, írmagját is ki kellene gyomlálni a tudományos közéletből. Igaza van annak a rengeteg kutatónak, aki kardoskodnak ellene.

Nos, nem, és a fenti cikk sem állítja ezt.

A p-érték előnye, hogy segítségével könnyen összegezhető az eredmény. Egy szám azért mégis könnyebben értelmezhető, mint egy több dimenziós mátrix. Csak azért, mert összegzi az eredményt, nem jelenti azt, hogy helyettesíti az egész analízis áttekintését és megértését. A fenti példákban sem a p-értékkel volt a gond, hanem a kísérletekkel. Ha hülyeséget csinálunk, attól nem ment meg minket sem a Bayes-statisztika, sem a konfidencia intervallum, sem Ronald Fisher dohánytól bűzlő, megigézett szelleme.

A p-értéket szerintem úgy lehet a legjobban szemléltetni, mint a futóversenynél a célszalagot. A versenynek sem az a célja, hogy átszakítsuk a szalagot. Az a célja, hogy megtegyük a távolságot, megelőzzünk mindenkit és átszakítsuk a szalagot.

Szólj hozzá!

Címkék: statisztika

Cseppet sem objektíven: Revision 2019

2019.05.05. 22:42 Travis.CG

Idén sem unatkozott, aki ellátogatott Németországba és a nyuszi helyett a demókat választotta.

Tracked music

Annak ellenére, hogy nem vagyok egy tracker függő, szívesen hallgattam az indulókat. Ritmusos és energikus volt a legtöbb. Legjobban a vadnyugati stílusú Due Diligence tetszett.

Fast music

Ettől telítődtem. Az újra és újra felhangzó ritmus, amit az indulók igyekeztek átalakítani a végére annyira idegesítő lett, hogy nem bírtam figyelni magukra az alkotásokra.

Fast/modern/oldschool graphics

Bizonyára bennem volt a hiba, de nem ragadott magával egyik compó sem. Voltak jobb alkotások, de nem éreztem a döbbenetet.

Animáció

Ez az a kategória, aminél a legkevésbé kell aggódni a számítógép teljesítménye miatt. Letöltöd, lejátszod. Most mintha a készítők sem erőltették volna meg magukat. Kicsit furcsa, hogy annyi eszköz áll rendelkezésére az embereknek - gondolok itt a különböző gimballokra, 360 fokos kamerákra, drónokra, szerkesztő programokra - mégis a fürdőkádban lefolyó színes habról készítettek filmet. A győztes egy jó minőségű animáció volt, szerintem egy moddolt játék lehetett. Volt még egy film, ami erősen emlékeztetett az Inferno című könyv egyik jelenetére, ahol a gonosz kutató előadja ördögi tervét egy pestis álarcban. A mozi filmes implementáció finoman szólva nevetséges volt, de ebben a releaseben sokkal autentikusabban oldották meg. Mondanom sem kell, hogy minimális pénzösszegből.

Oldschool music

"Nyugodtan átnevezhették volna Commodore music compónak is, mert csak Amiga és C64 zenék voltak. Ez persze nem hátrány, csak olyan egysíkú volt minden." Ezt írtam volna, ha nincs a hard(re)start. Ez a zene ugyanis sztereó C64-re készült és nagyon jól szólt. Igazi kuriózum.

8K intró

Sokáig nem tudtam, hova tegyem a 8K intrókat, de úgy tűnt a készítők sem tudták, mit kezdjenek a plusz hellyel, amit még kóddal tölthetnek meg? Idén úgy tűnik, megtalálták a helyüket. Legalábbis az első négy helyezett valami történetet igyekezett elmondani, ami 4K-ban nehézkesebb lenne. Nekem még az Extralife is tetszett a maga egyszerű módján, de a Haunted tökéletesen kihasználta a kategória kereteit.

64k intro

Ha egy szóval kellene jellemeznem, mit láttam, akkor a vegetáció lenne az. Az idei intrók nem a történet meséléssel hódítottak, hanem a környezet részletes bemutatásával. És micsoda környezetek voltak! A The Jaderoom részecske gyorsítója, a Secret Service Agency erdeje (bár ez utóbbi nem a fotorealisztikus mivolta miatt), mind nagyon szépek voltak. Számomra még az Aten Hotep piramisai is jól néztek ki. Akit viszont a design demók fognak meg, a Brainworm kockáiban gyönyörködhettek.

Oldschool demo

A kompó majdnem átment remix versenybe, ugyanis két csapat is megpróbálta az STNICCC2000 demót más platformokra átültetni. Érdekes módon a Nintendo port, bár Super FX chipet is használt, kevésbé volt gyors, mint a Sega Megadrive verzió. A veterán C64 programozók összefogtak és csináltak egy közös produkciót. Nagyon dinamikus és könnyed volt. Hiába, ennyi profi egy csapatban nem tud hibázni.

PC demó

Kevin visszatért és eltérítette a compót. Nem tudom, ezt a mérhetetlen mennyiségű hülyeséget honnan szedik a készítők, de nagyon jót lehet nevetni rajta. Ja, meg volt egy Notch-al készült Cocoon demó, akit az érdekel, hogy mennyit bír a grafikus kártyája. (És láttunk a jó öreg magyar scenerektől egy jó öreg demót, amiben meghívtak egy jó öreg partira.)

Wild

Ez a kategória lassan átalakul LED compóvá. Meg PICO-8 compóvá. Szerencsére a Transidio szakít ezzel a hagyománnyal. Ők valami elektroncsöves szörnyeteget csináltak és még zenét is játszottak rajta.

Amiga demó

Revision Amigás demókra eddig sem volt panasz, de amit idén láttunk, az egyszerűen döbbenet volt. A compó felét kiváló demók adták, abból a hatból bármelyik megérdemelte volna a dobogót. A De Profundis-al volt csak egy kis bajom, mert magát sztori demónak akarta eladni (amit én nagyon szeretek), csak épp a sztori veszett el. Kiírták, hogy "original story by", de az eltűnt gyerekek és az elátkozott ház, mint eredeti történet... Aztán előkerül valami fickó és bemegy - gondolom a házba, bár ez nem derül ki - és valami időtlen helyre kerül. Tehát a gyerekek egy olyan helyre kerülnek, mint Sohaország? De a grafikák szépek, a demó kiváló.

Mert lehet jó történetet mesélni Amigával. Az első helyezett The Black Lotus meg is mutatta. Minden részlet tökéletes volt, de nekem az tetszett a legjobban, hogy az egészet olyan könnyedén adták elő, mintha egy Amiga 500-asnak ez lenne a természetes élettere. Hogy jobban meg lehessen ezt érteni, csak meg kell nézni egy Elude demót. Szép, jó, de szinte a képernyőn keresztül is érezni lehet az olvadó műanyag szagát, ahogy a bővítőkártyával megrakott 1200-es burkolata megadja magát a processzor hőjének. Charlie egyszer mesélte is, hogy nem minden bővítő kártya tud 66MHz-en ketyegni, és Kiero mennyire boldog volt, hogy a demót pár MHz-el gyorsabb gépen tudták lejátszani. A TBL is biztos szénné optimalizált, de ezt nézőként mégsem érezzük:

Szólj hozzá!

Címkék: demoscene amiga

Régi hardver nem vén hardver, csak elavult

2019.04.28. 09:32 Travis.CG

Elég sok régi számítógép alkatrész hever szerte-szét nálam. Érdekes módon, a legtöbbet valamilyen technológia váltás idején szereztem, ezért mai szemmel furcsa hibrid megoldások. Például a mostani történet főhőse, egy Mercury alaplap, amin PCI és ISA aljzat is van. Mikor a birtokomba került egy Gravis Ultrasounds hangkártya, elhatároztam, hogy beüzemelem.

Mivel ez a hangkártya elsősorban a demoscene hőskorában volt divatos, nem volt kérdés számomra, hogy régi DOS demókat akarok nézni. De ugyanakkor az is motoszkált a fejemben, vajon a mai világban mire használhatunk egy ilyen gépet?

Először egy FreeDOS-t kellett telepíteni. Elsőre nem jártam sikerrel, mert a vinyó, amire telepíteni akartam, nem akarta, hogy leformázzam. Még nem tudom, hogy mágnes donor lesz-e belőle (a használhatatlan vinyókból ki szoktam szedni a mágnest, hátha jó lesz még valamire), de az biztos, hogy nem tudtam telepíteni rá semmit.

A második vinyóra zokszó nélkül felment a FreeDOS. Telepítés során a "Full" opciót választottam, mégsem mentek fel a fejlesztői eszközök, amire pedig egy magam fajta buherátornak feltétlenül szüksége van. Mint kiderült, telepítés után az FDIMPLES paranccsal lehet további programokat felpakolni. Ekkor a CD-ről telepíthető minden.

Meglepő módon a rendszer nem tűnt nagyon stabilnak. A SUDOKU86 program rövid időn belül fagyasztotta a gépet, de rejtélyes módon néha újra indul a gép. Tápegység problémára nem gyanakodtam, mert az elég jó minőségű és egy jóval erősebb gépet hajtott meg minden gond nélkül. A memóriákban viszont nem voltam ilyen biztos. A régi, kiírt Linux CD-k között böngészve (elképesztő, ebből is mennyi van a birtokomban. Még néhány 6 CD-s Red Hat is előkerült) kerestem valamit, amin van egy memtest, de egyet sem találtam. Sajna Ubuntuból csak 64 biteseim vannak.

Végül egy Knoppixot próbáltam ki. A jelenség ismétlődött, a rendszert nem tudtam teljesen elindítani, valamelyik állapotban mindig újraindult. Kiszedtem az összes perifériát, másik tápot is kipróbáltam, a rendszer vinyó és az alaplap kivételével mindent kicseréltem tartalék alkatrészre, de nem jártam sikerrel. Még a kábeleket is átnéztem. Az összes fellelhető SD memóriamodulomat kipróbáltam, és a gép mégis újraindult. Úgy látszik, kénytelen vagyok ezzel együtt élni.

Visszatértem a FreeDOS-ba. Egy nosztalgia CD-ről (akkor készült, mikor még a CD írók egy gép árával vetekedtek és cégeknek ebből volt extra bevétele. Egy CD annak idején számomra hatalmas tárhelyet jelentett, mert alig bírtam összekaparni 650 MB-ot, hogy megtöltsem) felmásoltam a Doom2-t is, ami viszont gond nélkül futott.

A kislányom csak "vicces robotnak" hívta, mert a pisztolyra azt hiszi, hogy egy robot feje, a torkolattűz pedig a haja. Azért vicces, mert a robot haja hol eltűnik, hol megjelenik. Én pedig mély hallgatásba burkolóztam a játék valódi természetével kapcsolatban.

De a GUS-t még mindig nem próbáltam ki. Egy CD-re kiírtam pár demót, amelyeket a Pouet szerint érdemes megnézni. Írtam még ki néhány C64 képfájlt, egy Star Commandert (erről még lesz szó) és egy GUS telepítő készletet. Elolvastam a tudnivalókat, és reménykedtem, hogy nem a telepítés közben fog újraindulni a gép.

A telepítő feltett egy csomó kérdést, amire nem tudtam válaszolni. Például fogalmam sem volt róla, hogy a DVD olvasó melyik címet használja, milyen megszakításra helyezhetem a hangkártyát, ezért megbíztam a telepítő előre látásában, és minden esetben ráklikkeltem a "Test" gombra, amivel ellenőrizni lehetett, hogy az adott cím szabad-e.

A telepítés végeztével újraindítottam a rendszert és mély lélegzetet véve kiválasztottam a Dope-t. És elindítottam. És futott! És nem fagyott! És fogalmam sem volt, hol kell hangerőt beállítani. És majd kiszakadt a dobhártyám. És nem érdekelt (mármint a dobhártyám, a demóvan nem volt gondom).

A 303 is ment, de csak ha EMM opcióval indítottam a rendszert. Kellett neki a DOS4GW is, amit első körben nem tudtam, honnan szerezzek be. Végül eszembe jutott, hogy a Watcom C++ mintha használta volna. A FreeDOS része az OpenWatcom és szerencsémre volt hozzá ez a vacak. A demó mellé pakoltam és már élvezhettem is. Bár a recsegő effektek nem szóltak olyan szépen, mint a MindCandy verzió. De hát ez a valódi vas varázsa. Akár csak egy étteremben. Valami mindig más, mint egy szakácskönyvben. (A YouTube meg a McDonalds, mindenhol ugyan azt kapod.) Kipróbáltam pár 256byte intrót is, azokkal sem volt gond. A Ninja2 is futott szépen.

Tehát a GUS telepítés sikerült. Egyetlen gond az volt, hogy ha ment a hangkártya, akkor nem működött a DVD meghajtó. Valami ostoba IRQ ütközés lesz, de a cikk írásának pillanatában még nem volt rá megoldásom.

Következett a Star Commander. Annak idején Grass segítségével szereztem egy XM1541 kábelt, amivel az volt a tervem, hogy C64 képfájlokat másolok 5 1/4-es floppyra. Grass akkor adott egy X1541-t is, és én nem emlékeztem rá, melyik melyik. Szerencsére volt egy teszt program, ami képes volt ezt megállapítani.

Összekötöttem a C64 floppy meghajtót a PC-vel, bekapcsoltam őket és kezdődött a kísérletezés. A Star Commandernek először be kellett állítani, hogy milyen kábelem van, melyik párhuzamos portot akarom használni, és még egy csomó paramétert, amit inkább alapértelmezetten hagytam, mert nem tudtam, mit jelentenek. Mindjárt adott is egy hibaüzenetet, hogy az X1541 nem megy SPP módban. Akkor ne menjen, de hol lehet ezt kikapcsolni? Mint kiderült, a BIOS-ban. Ismét tanultam valamit.

Kibontottam egy original floppy csomagot, amit szintén Grass adott, és évekig porosodott a fiókban, majd megpróbáltam az Edge of Disgrace-t kiírni. Nem ment, megszámlálhatatlan paramétert állítottam át, kábeleket cseréltem, de folyton a rejtélyes 21, Read Error, 18, 00 hibaüzenetet kaptam.

A Star Commander dokumentációja semmi használhatót nem mondott. Feladtam. Pár nap múlva megnéztem a Guglit, hátha ad valami értelmes eredményt, mire azt dobta fel, hogy formázni kéne a lemezeket.

Egyik hétvégén kipakoltam a C64-t is a szekrényből. Bekapcsoltam és végignéztem néhány régi játékot. Elővettem a formázatlan lemezeket is, egy ollóval a második oldalukat is aktiváltam és leformáztam őket. De sokáig tartott. Már el is felejtettem, hogy a hajlékony lemez nem türelmetlen embereknek való.

Az 1541 meghajtót azután a PC-re kötöttem és indult újra a móka. Most szépen másolt, de egyes esetekben bizonyos szektorokat nem tudott írni. Már nagyon látni akartam pár C64 demót, ezért kihagytam őket, talán nem fagynak a demók teljesen szét.

Elsőnek az Edge of Disgrace volt terítéken, mert ez a demó igazi mérföldkő a C64 demók történetében. Ment is simán, csak ez a rész nézett ki furcsán. Valahogy szétesett a grafika. A Natural Wonders 2 simán ment, a Wonderland XII első lemeze viszont nem. Érdekes módon a második és harmadik lemezt külön is be tudtam tölteni.

Tehát a régi időket fel lehet eleveníteni. Még retro ökoszisztémát is létrehozhatunk, ahol a gépek fordított időrendbe történő alkalmazásával adatokat tudunk továbbítani az öregebb masinák felé. Az aktuális gépem letölti a demókat, mert hozzáfér az internethez. Onnan át lehet vinni a fájlokat egy FreeDOS-os gépre, amiben nincs hálókártya, de van egy párhuzamos port. A portot használva pedig a C64 megkapja a demót. Még leírni is szörnyű! Persze egy kis extra pénzért lehet mindenféle ketyerét beszerezni, de a kábel csak 1500 Ft volt, az ósdi gépet pedig szinte ingyen lehet szerezni. (Egyet a kuka mellől szereztem, majd talán arról is írok)

Rendben, de valami értelmes munkára használható-e? Igazából semmi olyat nem tud, amit egy mai PC-n ne tudnánk végrehajtani. Hozzáteszem jóval kényelmesebb módon. Ha sikerülne a hálózatot beüzemelni rajta, elméletileg SSH kliens lehetne. Talán még a demókat is letölthetném vele, hogy az adat áramlást felgyorsítsam.

Egy minimális, konzolos Linux-al LaTeX dokumentumokat lehetne csinálni rajta, amivel akár a Word-öt is ki lehetne váltani. Lehet programozni. Az oprendszer hardver közeli, jobban meg lehet érteni a gépek működését, nincs túlkomplikált IDE, de cserébe autocomplite sem. Kénytelenek vagyunk mindent begépelni. Ha pedig lefagy, akkor az egész rendszer lefagy, nem csak az alkalmazás.

Mint mondottam, mindezt egy modern PC-n is megtehetjük egy virtuális gépen, miközben a YouTube-ról sem kell lemondani. Mi értelme ennyi időt rászánni egy ósdi gépre? Különösen, hogy én soha nem rajongtam a DOS-os PC-ért. A C64-t szerettem, mert színes volt, szépen zenélt, amint bekapcsoltam, azonnal lehetett programozni. A PC-t visszalépésként éltem meg. Utáltam az expanded memóriát, a 640K-s korlátot. A PC-t akkor kezdtem megkedvelni, amikor telepítettem egy Minixet és láttam, hogy máshogy is lehet használni a gépeket.

A kérdés inkább nem is az, hogy használjunk-e régi gépet vagy ne, hanem konformisták legyünk-e. Erre pedig határozottan az a válaszom, hogy ne. Nem kell mindig a kitaposott ösvényen menni, mert a dolgokat úgy fogjuk látni, ahogy a többiek. Ha egy problémát nem szokványos eszközökkel oldunk meg, akkor végig kell gondolnunk, a probléma hátterét, jobban megértjük az összefüggéseit. Alternatív megoldásokat találhatunk, kiterjeszthetjük kreatív potenciálunkat. Ez az, amiben igazán segíthet egy régi hardver.

Szólj hozzá!

Címkék: demoscene filozofálás c64 rendszergazda

Ácsolás, a második felvonás

2019.04.25. 13:31 Travis.CG

A második Carpentries-t a Semmelweis Egyetemen szerveztük. Felszínesen én is résztvettem a szervezésben, de csak a weboldalt birizgáltam még a kezdetekben, és segítőként voltam jelen. Mivel az egyetem nem adott elég pénzt, kénytelenek voltunk egy szponzort is bevonni, ami az egyik régi melóhelyem volt. (Most, hogy nem ott dolgozom, már ennyire jól megy nekik.)

A kurzus célja az volt, hogy a hallgatók megismerkedjenek az adatok hatékony táblázatba rendezésével és azok feldolgozásával. A téma fontosságát a résztvevők is érezték, mert a regisztráció megnyitása után, mikor még nem is kezdtük hirdetni az eseményt, négyen regisztráltak. Egy hét alatt elfogyott az összes szabad hely. Először csak négy várólistát állítottunk be, de még azért is harcoltak emberek, hogy felkerüljenek. Végül 19-en oda is felvetették magukat.

Ennek ellenére voltak, akik bármiféle visszajelzés nélkül nem jöttek el. Ezutón szeretném üzenni nekik, hogy ha van egy ingyenes rendezvény, amit oktatók ingyen tartanak. A szervezők fizetés nélkül, az adminisztrációval és egyéb bürokratákkal harcolva lehetővé teszik a létrejöttét, akkor legalább annyit tegyetek meg, hogy jelzitek, ha a kisujjatokon kibújó pörsenés miatt nincs kedvetek eljönni. Csak azért, mert mások szívesen elfoglalnák a helyeteket.

Vicces módon 2005-től valamennyi munkahelyemről voltak ismerőseim a kurzuson, ha programozós és Sangeres időket nem számítjuk. Azért ilyenkor látszik, milyen öreg is vagyok.

Akik mégis eljöttek, először egy táblázat kezelő segítségével megtanulták az adat rendezés alapjait. Mivel mindenki a saját gépét hozta, segítőként meggyűlt a bajunk ezzel. Valahol Excel volt, de máshol LibreOffice, egyik gépen magyarul, másikon angolul. Valamint ezek kombinációi. De persze a legnagyobb baj az volt, hogy senki nem értett az Excelhez. Ha nem jelent meg valami, csak vakartuk a fejünket, hogy miként lehet elővarázsolni azt a menükből.

Sajnos nem én voltam, aki a legkevésbé értett az Excelhez, amitől az a kényelmetlen érzésem támadt, hogy álszent vagyok. (Vagy csak túlságosan jól ismerem az ellenséget.)

Bitmumus is tiszteletét tette. Az egyik esetben egy szóköz volt a könyvtár név végén, ami láthatatlanul megült és megakadályozott minden olvasási műveletet, egy másik esetben pedig a Windows döntött úgy, hogy megvonja a jogosultágokat az R Studiótól, amitől nem lehetett írni a felhasználó egyetlen könyvtárába sem, még akkor sem, ha rendszergazdai módban indítottuk el!

Az első nap egyébként az oktató ügyesen bevonta a hallgatókat, amiben nem kis szerepe volt az édességnek, amit az emberek közé dobált, ha valami okosat mondtak.

Utána volt egy kis OpenRefine, aminek csak annyi szerepe volt, mint a bennfoglalásnak az általános iskolában. Segített, hogy a következő lépcsőfokra, az R-re érjünk. Ez már sétagalopp volt a segítőknek, de a hallgatóknak itt kezdődött az igazi gyötrelem.

A data frame megértése például nagyon sokáig tartott. Szerintem az volt a probléma, hogy mindjárt az elején nem tisztázták, hogy ez egy táblázat, ezért a hallgatók nem értették, hogyan épül fel, miért kell azonos hosszúságú vektorokat egy adatstruktúrába pakolni. A kavart csak tovább növelte, hogy az oszlopneveket a, b, c betűkkel jelölték, de az egyik oszlopban is voltak a, b, c karakterek.

Mindkét nap végére alaposan lefáradt az egész társaság. Remélem mindenki tanult valami hasznosat, amit alkalmazni fog a következő projektje során.

Szólj hozzá!

Címkék: statisztika életmód

Az új mantra

2019.04.16. 12:52 Travis.CG

Fehér ember azt hiszi mindent tud adatelemzésről. Fehér ember téved. Sápadtarcú még mindig használ Excel. Először hoz villámló bot, aztán tüzes víz, és most Excel. Még a Nagy Manitu is kevés, hogy eltűntesse Excelt.

Ülő Bika nem érti, fehér ember miért használ Excel. Ezért Ülő Bika azt mondja, olvass cikket. Olvass cikket, hogyan használd jól Excel. Cikk írja igazság.

Ülő Bika arra kéri többi törzsfőnököt, hogy terjesszék cikket. Sok sápadtarcú tanuljon. Tanuljon és használja Excel jól. Ha lesz sok jó Excel, talán elszívhatjuk békepipát.

Uff, én beszéltem.

Szólj hozzá!

Demoscene inspiráció (1. rész)

2019.04.07. 23:27 Travis.CG

Egyre többet gondolkodom azon, hogy a jelenlegi felállásban (értsd: egyedül) miként tudnék alkotásokat készíteni. Ebben a részben a zene problémájával foglalkozom. Azt gondolom, mások is küszködnek hasonló problémával, ezért talán nekik is érdekes lesz, mire jutottam, illetve milyen lehetséges utak vannak.

Keresni kell egy zenészt

Ez igazából a legkézenfekvőbb megoldás. Akár a scene.hu-t, akár a Demoscene's most wanted oldalt nézzük, kereshetünk új tagokat. Ha pedig Slyspy, Teo vagy Vincenzo ráér, akkor lesz zenénk :-) Én most nem akarok új tagokat felvenni, mert még nem látom, hogy jómagam bele tudok-e annyi energiát tenni, hogy abból rendes produkció legyen. Előny, hogy a zene saját lesz, maximálisan illeszkedve a demó hangulatához.

Szerezni kell egy zenét

Igazából ez is járható út. Az OpenGameArt-on vannak zenék. A SoundCloud tele van jobbnál-jobb zenékkel, különböző liszenszelési lehetőségekkel. De indie zenészeket is meg lehet keresni és megkérdezni tőlük, hogy használhatjuk-e a zenéjüket. Ezt már mások is csinálták, például a Ceasefire-nál, ahol a Hunz együttes egyik számát használták fel.

De említhetném - ugyan csak a Fairlight részecske érájából - az Agenda Circling Forth-ot is, akik egy Socrates számot dolgoztak fel (illetve a DJ, akinek a zenéjét felhasználták, egy Socrates számot használt fel).

Ez persze nem szokott tetszeni mindenkinek (főleg a régi vágású scenereknek) és a jogok biztos sok utánajárást igényelnek. De akár a party szervezői is megtagadhatják a demó lejátszását, ha valami - általunk nem ismert - törvénybe ütközünk. Például a Revision-ön nagyon ugranak, ha a jogok nincsenek rendesen letisztázva. Előny viszont, hogy a zene minősége jobb lesz, mint a legtöbb scener produkció. Vérfrissítésnek sem utolsó, mert nem kell az X+1. dubstepet végighallgatnia a közönségnek. Ezzel együtt kevesebb ráhatásunk van a zenére. Vangelis biztos nem készít "kicsit ütősebb" verziót még a mi kedvünkért sem.

Zene nélkül is megy

A demók része a zene. De igazából nem kötelező része. Készíthetünk zene nélkül is demókat. Például, ahogy a Dead Roman is csinálta a Spheres on plane című alkotásukkal. Csupán hangeffektek vannak.

De még 4K intróban is lehet élni a lehetőséggel, ahogy az Oscar's chair-ben is láttuk:

Ez persze nagyobb koncentrációt igényel a rendezés terén, mert a nézők a látványra fognak koncentrálni. Nem lehet a figyelmüket elaltatni egy jó zenével.

Szólj hozzá!

Címkék: demoscene

Hülye bioinformatikai programok

2019.04.01. 00:06 Travis.CG

Rendhagyó módon, április elseje alkalmából nem egy álhírt készítek, hanem valódi hülyeségeket mutatok be a bioinformatika világából. Nevezetesen a hülye programokat. Mitől lesz egy program hülye? Három okból is:

Az első ok, hogy használhatatlan az adott feladatra, amire megalkották. Nem azért, mert hibás az implementáció, hanem azért mert hibásan tervezték meg. A másik ok, hogy értelmetlen feladatot hajt végre, amire senkinek semmi szüksége. Végezetük olyan programot készítettek, ami ugyan azt tudja, mint egy másik (esetleg híres) program, csak rosszabbul.

Erről a programról már írtam. Visual Basic program, ami a feladat befejezését egy csipogással jelzi, eredményét a vágólapra másolja. Ha lemaradunk a hangjelzésről? Akkor törhetjük a fejünket, hogy a vágólap tartalma az aktuális vagy előző futtatás eredménye (áramszünetről nem is szólva).

A következő programnak a fejlesztőjét ismerem. Remek fickó, tényleg, de ez a programja totál felesleges. Nem is tudták leközölni. Bár a dokumentációból nem derül ki, a célja, hogy az illesztőprogram által eldobált readeket visszaerőltesse a genomra, "megmentse" azokat. A program azért felesleges, mert az illesztőprogram paraméterezésével elkerülhetjük a használatát. Tudom, hogy sokan csak az alapértelmezett beállításokkal futtatnak mindent, de két programot futtatni alapértelmezetten, mert lusták vagyunk?

Ha egy hülye programot webre pakolunk, attól az még hülye program marad, csak mindenki látni fogja. Például lássuk ezt a nagyszerű heatmap rajzoló programot, ami hatalmas adatokat képes megjeleníteni. Ha bátrak vagyunk, még le is tölthetünk egy ilyen hatalmas táblázatot. Igaz, hogy csak 473kb, de akkor is hatalmasnak kell lennie, hiszen a weboldal ezt állítja! Minden esetre R-el gond nélkül el tudtam készíteni a heatmappet. Még egy 2012-es laptopon is. Innentől nem tudom, kinek lenne erre szüksége?

Megnéztem, hogy egy régen látott hülye program, az EuGene mennyit okosodott. Jelentem, az annotáló program, ami még egy E. coli genomot sem képes kezelni, továbbra is létezik, csak a dokumentációja veszett el a webes rengetegben. Annak idején még dokumentációval is egy kínszenvedés volt használni.

Végezetül nézzük a legértelmetlenebb feladatot: A fastq minőségi mutatókat emoji alkaban. Biztos bennem van a hiba, de nem értem, mi ez a felhajtás az emojik körül. Filmet kapnak, YouTube posztok szólnak róla. Én még emlékszem az ugyancsak felesleges WingDings betűtípusra, ez nem más, mint annak a platform független változata.

A kommentekben várom, milyen más hülye bioinformatikai programok léteznek.

Szólj hozzá!

Címkék: bioinformatika

MariaDB kalandok

2019.03.30. 23:14 Travis.CG

Terveztem egy MariaDB adatbázist, aminél megpróbáltam ügyelni, hogy a táblák minél konzisztensebbek legyenek. Szerencsére az Oracle adatbázis modellezője jó társam volt ebben. Magas szinten lehet vele tervezni, de megengedi, hogy a fizikai táblák generálása után is módosítsuk az eredményt.

Elkészítettem a terveket, beimportáltam a nagy halom szöveges állományt, még dokumentációt is írtam. Tényleg mindent úgy csináltam, ahogy ebben a könyvben írták.

Azután magára hagytam...

Kicsivel több, mint egy év után az adatbázist frissíteni kellett, és ennek kapcsán újból felvettem a fonalat. Először is érdekes táblák jelentek meg, "new" prefixszel. Semmivel nem tudtak többet, mint a régiek, csak egy új oszlop volt bennük. De a legtöbb fejtörést egy kriptikus tábla okozta. A szerepe az volt, hogy gyorsítson egy lekérdezést, ami a sok tábla join miatt lassú volt. Volt benne egy azonosító mező, de az nem derült ki, hogy mit azonosít. Legalábbis egyetlen másik táblának az azonosítójának sem lehetett megfeleltetni. Volt még egy furcsa összeg is benne, ami viszont különbözött a "lassú" lekérdezésből származó összegtől, jóllehet igen erős korrelációt mutatott azzal. Természetesen ez sehol nem volt leírva és senki nem emlékezett, hogyan is készült.

Az adatbázishoz tartozó weboldal kódjából jöttem rá, hogy egyáltalán mit tartalmaz. Az azonosító két másik tábla elsődleges kulcsának a konkatenálása volt. A kódból viszont egy további furcsaság is kiderült. Nem értettem, miért kellett a konkatenálás előtt az egyik azonosítóhoz 100-t adni. Aztán rájöttem. Mivel az azonosító egytől 270-ig ment, azzal, hogy 100-t adtak hozzá, biztosították, hogy az első három szám minden esetben az első tábla azonosítója legyen.

Okos ötlet, de teljesen felesleges. Megkérdeztem miért volt erre szükség és a válasz az volt, hogy azt olvasták, "egyben kell indexelni, mert az gyorsabb". Ez bizonyos esetekben igaz, de az adatbázis kezelő ezt megcsinálja nekünk, nem kell okosabbnak lennünk:

CREATE INDEX index_name ON table_name (field1, field2)

Ez az "egyben indexelés".

Ugyan így, ha új mezőre van szükségünk, nem kell új táblát készíteni. De ha mégis új táblát készítünk, akkor a régire nincs szükség. Le lehet törölni. De akadtak döglött táblák is, amelyeket egyetlen lekérdezés sem használt.

Összeszedtem az összes adatbázis anekdotát - mert természetesen rendes dokumentáció sem volt - és leírtam. Átterveztem pár táblát, hogy ne legyen szükség a "new" kötőszóra, és ismét beimportáltam mindent. Illetve egy kicsit importáltam, egy kicsit kurkásztam a hibaüzeneteket, mert bár az importálandó adatok formátuma nem változott (legalábbis ezt állították), a gyakorlatban minden második fájl egy kicsit másmilyen volt.

Természetesen sok olyan hibát is észrevettem ami már a korábbi fájlokban is megvolt, nekem akkor mégsem tűntek fel. Ekkor ismét vissza kellett menni a modellező programba és módosítani a mezők típusát.

Végül az adatok viszonylag gyorsan be is jutottak az adatbázisba. Elkezdtem készíteni az indexeket. Az egyik nagyon lassan készült. Másnap már gyanús volt, hogy még nincs kész. A furcsaságok sorát tovább növelte, hogy az adatbázis szerver szinte nem is használt processzor időt.

Szerencsére a futó lekérdezéseket meg lehet nézni:

show full processlist;

A MariaDB sajátsága, hogy a process oszlopban mutatja, hány százaléknál tart a folyamat. Rendkívül hasznos dolog. Kiderült, hogy ez bizony állt! El nem bírtam képzelni, mi lehet a baj. Olyan volt, mint amikor egy konzolos program bemenetre vár. Ebből a megfontolásból megkerestem, hol tárolja az adatbázis a fájlokat. Mint kiderült, egy külön partíción voltak, amin nem volt szabad hely.

Megszámlálhatatlan mysql-bin.xxx fájl volt benne. Mint megtudtam, ezek bináris naplófájlok, jó része tavaly januári volt. Úgy döntöttem, nincs rájuk szükség. Rövid keresgélés után kiderült, hogy ezeket könnyen el lehet távolítani:

PURGE BINARY LOGS BEFORE DATE(NOW());

Amint felszabadult a hely, az index készítés azonnal beindult. Érdekes, nem volt semmi hibaüzenet, a rendszer türelmesen várta, hogy a probléma megoldódjon.

Szólj hozzá!

Címkék: rendszergazda

Plink kínok

2019.03.17. 22:14 Travis.CG

A plink az a fajta program, ahol a dokumentáció elméletileg mindent tartalmaz, a gyakorlatban mégis szinte használhatatlan. Mégpedig azért, mert hiányzik az információ, hogy milyen kombinációban használjuk azokat. A dolgot tovább bonyolítja, hogy a program két verzióban létezik. Egy 1.9 jelzésű bétában és egy 2.0 alfában, amit felváltva kell használni, mert még nem jutottak el oda, hogy minden funkció mindkét helyen meglegyen. (Természetesen ott van az eredeti program is, csakhogy az még nem képes közönséges VCF fájlt beolvasni.)

Ráadásul egyes funkciókat eltávolítottak a stabil verzióhoz képest, mert úgy találták, hogy más programok sikeresebben valósítják meg azt. Ilyen például a haplotípus azonosítás.

Ami viszont megmaradt, hogy a plink mindegyik elemzése saját külön eredményfájlt készít, egyedi kiterjesztéssel. Így biztosak lehetünk benne, hogy nem írjuk fellül eredményeinket. A kimenet kevés kivételtől eltekintve szóközzel elválasztott szöveges fájl, de hogy ne legyen egyszerű az életünk, változó hosszúságú szóköz van mindenhol, hogy nézegetve szép, rendezett külsőt mutasson. Ha R-be akarjuk betölteni, én a következő módszert használtam:

data <- read.table("plink.mendel", skip = 1)

Alapértelmezett módon az R szépen be tudja olvasni a fájlt, de a fejléccel gondjai lesznek, mert az oszlopnevek is tartalmazhatnak szóközt. Ha nem olvassuk be, és utólag készítjük el, az sokkal eredményesebb.

Megpróbálok összeszedni itt egy korántsem teljes leírást, hogyan juthatunk el egy közönséges VCF fájlból valami elemzés felé.

plink2 --vcf input.vcf --fam work.fam --out work
plink --vcf input.vcf --out work

Honnan jön a work.fam fájlunk? Nekünk kell elkészíteni. A felépítése itt található. Ügyeljünk rá, hogy a minták sorrendje ugyan az legyen, mint a VCF-ben, mert különben nem fog működni, és azt a hibaüzenetet adja, hogy "Error: Mismatched IDs between --vcf file and work.fam." A vicces az, hogy fam fájl nélkül is működik, akkor készít egy psam fájlt. Ez egy kezdetleges fam fájlnak tűnik, amit kézzel szerkeszthetünk, bővíthetünk.

A másik fontos dolog, hogy ha vissza akarjuk keresni, hogy VCF-ünk melyik rekordja szerepel a plink fájlokban, akkor célszerű az ID mezőt kitölteni. Különben csak pontokat fogunk látni.

plink --bfile work --freq --out freq

Ekkor a minior allélok frekcenciáit írhatjuk ki pozíciónkként.

plink --bfile work --mendel --out problem

A paranccsal azokat az eseteket listázhatjuk ki, ami ellentmond a mendeli öröklésnek. Önmagában nem sok segítség, de ha észben tartjuk, hogy a de-novo mutációk aránya a szakirodalom szerint 10e-8 nukleotidonként, akkor ellenőrizhetjük, mennyire jó a variant call (vagy a szülők tényleg szülők-e).

plink --bfile work --check-sex

A fenti paranccsal ellenőrizhetjük, hogy a fam fájlban a mintáknak beállított nem megfelel-e a valóságnak. Akár elírás, akár minta csere történt, érdemes ellenőrizni.

Adataink ellenőrzése után jöhet a tényleges elemzés. Például asszociáció keresés betegség és genetikai variáció között:

plink --bfile work --tdt

Ekkor a családfát is figyelembe veszi a program. Ha ezt nem kívánjuk használni, akkor a

plink --bfile work --assoc

parancsot is használhatjuk. Mindkét esetben további módosítókat használhatunk a parancssorban.

Természetesen további lehetőségek is vannak, de ha idáig eljutottunk, akkor már képesek vagyunk megérteni a dokumentáció felépítését és nagyobb eséllyel találjuk meg azt, amire szükségünk van.

Szólj hozzá!

Címkék: bioinformatika

A fától az erdőt

2019.03.10. 23:07 Travis.CG

Korábban azt írtam, hogy a döntési fák nem stabilak és az adat kismértékű változására is gyökeresen más megoldást adhatnak. Ez nem jó hír, de szerencsére van rá megoldás. A megoldás pedig - mint annyi más esetben - a véletlen perturbáció használata nagyon sokszor, végül vesszük az eredmények eredőjét. Ezt hívjuk véletlen erdőnek (random forest).

Tehát generálunk nagyon sok döntési fát, mindegyiket egy kicsit másképp és reménykedünk benne, hogy a sok próbálkozás összegzése egy stabil eredmény. Attól függően, hogy mit változtatunk a fák között, különböző típusú véletlen erdők vannak. Abban is lehet eltérés, miként összesítjük a sok eredményt.

De nézzük meg, hogy történik mindez a gyakorlatban. Mivel a véletlen erdő igen népszerű klasszifikáló eljárás, megpróbálok több implementációt is bemutatni.

Python

Ha a scikit-learn csomagot használjuk, a kód rendkívül hasonló lesz a döntési fánál bemutatott kódhoz. Ez az API tervezési sajátságából is adódik. A különböző tanuló algoritmusok egységes felülettel rendelkeznek, hogy könnyebb legyen elsajátítani azokat.

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators = 100)
rf = rf.fit(data, category)

Az n_estimators paraméterrel a döntési fák számát adhatjuk meg. Az algoritmus ezek eredményeit fogja összevonni. A data és category változók megegyeznek a döntési fánál leírt változókkal, ugyan úgy két tüdőrák típus expressziós adatait tartalmazzák. Az eredő fát viszont nem tudjuk kirajzolni a korábban bemutatott módon. Ha megpróbáljuk, hibaüzenetet kapunk.

R

A legelterjedtebb véletlen fa csomag R-ben - nem meglepő módon - a randomForest nevet viseli. A használata sem bonyolultabb egy hipotézis tesztnél.

rf <- randomForest(outcome ~ ., data = input, ntree = 500)

A bemenet egy data.frame vagy mátrix, ahol egy oszlop a kimeneti változót jelenti, a többi a független adatokat. Az ntree opcióval adhatju meg, mennyi fát akarunk generálni. Azért, hogy az egész ne csak a levegőben lógjon, bemutatom, hogy miként használható a korábban is bemutatott tüdőrákos adatokon.

Miután letöltöttük az adatokat, először beolvassuk azokat és táblázatot csinálunk belőlük. A könnyebbség kedvéért két táblázatot mindkét tumor típusnak.

library(randomForest)

readData <- function(initdir){
   files <- list.files(initdir, recursive = T, pattern =    "txt.gz",full.names = T)
   data <- read.table(files[1])
   rownames(data) <- data$V1
   data <- data[,2,drop=F]
   for(i in 2:length(files)){
      new <- read.table(files[i])
      data <- cbind(data, new[,2])
   }
   return(data)
}

luad <- readData("luad/")
lusc <- readData("lusc/")

Ebből a két táblázatból készítünk egy harmadikat, ahol minden egyes sor egy minta lesz, az oszlopok a gének expressziói. Ehhez még egy oszlopot rakunk, ami a tumor típusát definiálja. Ez lesz egyébként a függő változónk is.

data <- as.data.frame(rbind(t(lusc),t(luad)))
data <- cbind(data, c(rep("lusc", ncol(lusc)),rep("luad", ncol(luad))))
colnames(data)[60484] <- "cancer"

Végül a tanítási fázis:

rf <- randomForest(cancer ~ ., data = data, ntree = 500)

Legalábbis elméletileg. Nekem a tanítás segfaulttal elszállt, ha az összes génre akartam futtatni. Ha csak 100 génre limitáltam, akkor gond nélkül lefutott.

A ranger csomag szintaxisa is teljesen hasonló. Érdekessége, hogy van C++-os futtatható változata is.

rf <- ranger(cancer ~., data = data)

A teljes génszetten ez sem futott le az R halála nélkül, de száz génre gond nélkül alkalmazható volt.

Szerencsére a következő csomagunk, az Rborist megtöri a fenti hagyományt, és ezzel megakadályozza, hogy telefonkönyv-szerű felsorolássá degradálódjon ez a poszt. Szintaxisa közelebb áll a scikit-learn filozófiájához. Az adatok generálása egy kicsit ezért más lesz:

data <- as.data.frame(rbind(t(lusc),t(luad)))
response <- as.factor(c(rep("lusc", ncol(lusc)),rep("luad", ncol(luad))))
rf3 <- Rborist(data, response)

Ez az egyedüli csomag, ami több szálat is képes használni és ez volt az egyedüli (az általam próbáltak közül), ami képes volt a teljes adatszettet feldolgozni fagyás nélkül!

Összegzés

Habár R és Python nyelven is elérhetőek véletlen erdő implementációk, ha masszív adatmennyiséggel kell számolni, célszerű Pythont használni. Ez igazából nekem is meglepő eredmény, nem tudom, miért nem működtek hatvanezer génre az R implementációk többsége. A memória nem fogyott el, az biztos (6% memóriát használtak egy 32GB memóriával rendelkező gépen). Az Rborist rendesen kihasználta az alatta futó vas erőforrásait. Kb. 20% memóriát használt és 7 magot a nyolcból. Igaz, a példák nem voltak életszerűek (nem csináltunk külön tanuló és teszt adatsort), nem is mértük, mennyire jók az egyes implementációk. Azt sem szabad elfelejteni, hogy R-ben további csomagok érhetőek el, amelyekre nem tértem ki. A Jupyte notebookok elérhetőek itt.

Szólj hozzá!

Címkék: machine learning

Ami az excel táblázatnál is rosszabb

2019.03.09. 22:59 Travis.CG

Mi lehet rosszabb egy excel táblázatnál? A válasz nem az, hogy két inkonzisztens excel táblázat, bár az is elég közel van hozzá. A válasz a Word táblázat.

Mikor már azt hiszem, nem tudnak meglepni, kiderül, hogy még van mit tanulnom. Rájöttem, hogy az adat bányászat tényleg bányászás. Nem gyémánt, vagy arany, hanem szénbányászat a 60-as évekből. Tényleg le kell menni az ismeretlenbe, bemocskolni magad az ott található, egészségre káros anyagokkal és reménykedni, hogy élve feljössz. Mindezt miért? Hogy a felszínre hozz egy csomó környezetszennyező anyagot.

Most kaptam egy ilyen szép táblázatot:

screenshot_20190301_140949.png

Jajj, de aranyos! Megsimogathatom? Eszedbe ne jusson, torokra támad! Mi a fene az a szám a fejléc alatt? Mi az, hogy sok éves átlag? Eltérés? Minek az oda? Miért nem kell minden oszlop alá átlag? És összeg? A "vegetációban összesen" honnan a fenéből jön? Mindez egy olyan programba ágyazva, aminek a legemlékezetesebb funkciója egy flipper.

Persze itt nem áll meg a menet, kaptam még egy táblázatot, ami az oldal szélesség miatt nem fért el, ezért a kilógó oszlopokat új sorba helyezték! A második oszlop ezért mást jelentett a 6. sor után. De kedvesek voltak, mert a fejlécet is bennehagyták. A cellák értékei pedig igen hasznosak voltak: "sok", "kevés", "jó", "igen jó". Ezzel a kódolással csak egyetlen probléma volt: a jó lehetett 1,43. Az igen jó 2,1, de akár 1,07 is. (Ezt onnan tudom, hogy végül megkaptam a numerikus értékeket is.) Legszívesebben lecseréltem volna az összes értéket "igen rosszra". Információ tartalmán mit sem változtatna.

A slussz poén, hogy otthon elpanaszoltam a "sokéves átlaggal" kapcsolatos problémáimat, mire a feleségem megjegyezte, hogy a sokéves átlagtól való eltérés teljesen elfogadott a botanikai lapokban. "Mindenki így csinálja." Egy teljes tudomány terület tartja életben ezeket a táblázatokat! Ha ilyen sokan vannak, csak egyet tehetünk.

Szólj hozzá!

Címkék: életmód

Tanítsd a tanárt

2019.02.24. 23:34 Travis.CG

A magyarországi Elixir úgy tűnik sokkal akívabb, mint a Magyar Bioinformatikai Társaság. Utóbbi évente egyszer szervez egy összecsapott konferenciát, csakhogy békén hagyja őket a közösség, de az Elixiresek lelkesedése töretlen. Tavaly láthattuk az első Software Carpentry-t, most pedig a Carpentry oktatók felnevelése kezdődött el.

A kétnapos oktatásra az ország számos pontjáról jöttek jelöltek, vagyis nem kell félni, hogy az egész kezdeményezés beltenyésztett rendezvénnyé váljon (habár a Debreceni Egyetem érezhetően felülreprezentált volt).

Az oktatást Sarah Morgan és Piraveen Gopalasingam vezette (de megengedte, hogy Pivnek hívjuk és így megkegyelmezett hitvány kiejtésünknek), akik az EBI-nál végzik a jövő bioinformatika oktatóinak képzését. Érezhető volt, hogy mindketten tapasztalt oktatók és rengeteg oktatásmetodikai tudással rendelkeznek.

Mivel a hallgatók nagy része maga is oktat vagy oktatott már, így nem kifejezetten arról volt szó, hogyan oktassunk, inkább arról, milyen módszerek vannak és a különböző hátterrel rendelkező emberek megoszthatták egymással a tapasztalataikat.

Egy konkrét példán említve: Nem sorolták fel, milyen oktatási módszerek vannak, hanem arra kértek minket, hogy négyes csoportokban szedjünk össze annyit, amennyit tudunk. Ezeket kis, tapadós cédulákra írtuk, minden cédulára egyet. Miután letelt a feladatra adott idő, az összeset felragasztottuk egyetlen nagy papírra, oktatóink csoportosították azokat, majd reagáltak mindegyikre. Kiemelték egyesek előnyeit és hátrányait.

A közös, oldott légkör és a folyamatos tennivalók miatt nem lankadt a figyelem és több információ áramlott, mintha csak diákra vetítve látnánk felsorolva mindezt. Legalábbis én így éreztem. Akadt, aki szerint túl sok triviális dolgot mondtak el. Szerintem pedig az ilyen megbeszélések alatt sok olyan problémát is érintettünk, amivel egyes tanárok a munkájuk során találkoztak és az oktatók mindig reagáltak ezekre.

Persze a fő irányvonal (figyeljünk a hallgatóságra, kérjünk visszajelzést, tűzzűnk ki elérhető célokat) evidensnek tűnhet. De ha visszagondolok saját, nem túl releváns oktatói tevékenységemre, az derül ki, hogy nem sok visszajelzést kértem. Talán nem tévedek nagyot, ha feltételezem, hogy mások is időnként megfeledkeznek egyik-másik alapvető dologról.

A másik kifogás, ami fülembe jutott, az volt, hogy az itt elmondottak nem alkalmazhatóak az egyetemi tanrend kötöttségei között. Való igaz, hogy az egyetemi oktatás során nem sok tanárt hívtunk "Kapitányomnak", de ez nem jelenti azt, hogy nem szabad próbálkozni, illetve bele kell törődni. Egyikünk, aki segítő volt az első Software Carpentri-n, például tudta alkalmazni a piros-zöld tapadós cédulákat, amivel a hallgatók segítséget kérhettek.

Már az első nap is tevékeny volt, a második napon volt a gyakorlat. Házi feladatként egy rövid, három perces bemutatót kellett tartani, tetszőleges témában. A laptopnak nem sok hasznát vettem az első nap, ezért úgy döntöttem, anélkül oldom meg a feladatot. A felszerelésem elég szegényes volt, ezért valami egyszerű dolgot akartam csinálni. Végül egy YouTube videót használva inspirációként, bemutattam, hogyan lehet egyszerűen tejet önteni dobozból. Voltak mások is, akik mellőzték a technikát. Láttunk csomó kötési technikákat vagy A3-as papíron bemutatott interleukineket.

Három tagú csoportokban megbeszéltük minden tag előadását, építő javaslatokat tettünk, majd bemutattuk mindenkinek a javított verziót. Itt újabb kritikákat kaptunk.

Ezután ismét csoport munka következett. Kiválasztottunk egy bemutatót és azt felturbóztuk egy egész kurzussá a rendelkezésre álló egy órában. Nem csak a kurzus anyagát terveztük meg, hanem a feltételeket is összegyűjtöttük.

Mire idáig eljutottunk, alaposan elfáradt mindenki, kivéve az instruktorokat. Nem tudom, honnan szedték az energiát, de biztos nem az apró süteményből.

Összességében szerintem hasznos volt, még akkor is, ha nem leszek Carpentries oktató.

Szólj hozzá!

Címkék: életmód

Adat feldolgozás a gyökerekig hatolva

2019.02.18. 22:30 Travis.CG

Az adatok feldolgozásához rengeteg szoftver-környezet áll rendelkezésünkre. Ott van a veterránnak számító Matlab/Octave, újabban a számtalan kernellel futtatható Jupyter, a konzervatívabb beállítottságúaknak az RStudio., extravagánsaknak Julia. Sőt, állítólag van egy excel nevű is, de azt valami horror filmben mutatták, nagyon meg is ijedtem tőle.

Mégis van a kutatóknak egy olyan rétege, akik nem ezeket használják. A Cernben a részecskegyorsítók adatait nem a fenti megoldásokkal kezelik. Nekik olyan feldolgozási gyorsaságra van szükségük, amit a szkriptnyelvek nem biztosítanak, ezért megalkották a Root-ot. Persze azt sem szabad elfelejteni, hogy a rendszert 1995-ben kezdték fejleszteni, amikor a Python még pelenkát viselt, az R pedig éppen kibújt a tojásból.

Rendkívül furcsának tűnhet, hogy egy olyan világban, ahol az értelmezett nyelvek virágkorukat élik, valaki C++-t használ adatfeldolgozásra, de ha túl vagyunk az első sokkon, és csak alap funkciókra szorítkozunk, akkor a nyelv használata a meghívott osztályokon túl nem tér el jelentősen a Python osztályok használatától. 

Az adat ábrázolási módszerek igen bőségesek, bár érezhető, hogy ki az elsődleges célközönség, ezért felülreprezentáltak a jelfeldolgozó függvények. De rengeteg magas szintű osztály segít abban, hogy saját vizualizációs eljárást implementáljunk, akár OpenGL segítségével is. Itt látszik igazán, hogy a C++ nem is olyan rossz választás. Hiszen, ha az R vagy Python képességeit akarjuk kiterjeszteni, mert az adott területre még nem létezik modul, akkor kénytelenek vagyunk egy másik programozási nyelvet választani. A Root-nál nem. Itt elég, ha csak a C++-t ismerjük. Amit használunk, azzal bővítjük a rendszer képességeit is.

De amin a leginkább meglepődtem, hogy a Root saját GUI fejlesztővel van felszerelve! Igen, jól olvastátok! Aki használt már Visual Basic-et, ahhoz hasonló módon tud felhasználói felületet készíteni. Kereszt platformosan! A QT meg a millió liszensz lehetőségével elmehet a...

Természetesen a Root is halad a korral. Számtalan kapcsolódási lehetősége van más keretrendszerekhez, úgy, mint Python, R, Jupyter, Spark, Ruby.

A fizikusoknak nyilván gazdag numerikus kelléktárat is biztosítani kell, hogy képesek legyenek modelleket alkotni, valamint eszközöket nyújtani a szimulációs adatok generálásához is. Ez utóbbihoz Monte Carlo szimulációs osztályok állnak a kutatók rendelkezésére.

A telepítése rendkívül egyszerű. Először kicsomagoljuk a letöltött állományt, majd létrehozunk egy könyvtárat a binárisoknak. Ezután kiadjuk a könyvtárból a következő parancsot:

cmake path_to_src
make
make install

A konfigurálás alatt rengeteg opciót adhatunk meg. Ha például szeretnénk R-ből használni a Root-ot, akkor a -Dr=on opcióval bekapcsolhatjuk azt (ebben az esetben az Rcpp és az RInside csomagoknak a gépen kell lenniük.) Én három különböző gépre telepítettem (ezek körül az egyik egy HPC környezet volt, fordító nélkül) és minimális problémába ütköztem. Azok is a függőségek hiányából fakadtak. A fordítási idő elég hosszú, több órát is igénybe vehet.

Nézzünk egy példát a rendszer használatára. Rajzoljunk egy denzitás függvényt:

TF1 myfunc("test", "1/sqrt(2*TMath::Pi())*exp(-0.5*x**2)",-3,3);
myfunc.Draw();

A fenti példában a TF1 osztályt használjuk, amivel egy dimenziós függvényeket ábrázolhatunk. A függvényt magát a második paraméterben adjuk meg, majd a tartományt, ahol ábrázolni akarjuk. A második sor maga a rajzolás. Eredményül egy interaktív plotot kapunk, amit tetszés szerint átszabhatunk. Csak nézzük meg az Edit -> Style menüpontot. Akár saját stílust is definiálhatunk. De akár a képet is elmenthetjük klikkelve, vagy módosíthatjuk, ha bekapcsoljuk a Toolbart. Szövegeket és nyilakat helyezhetünk el az ábrán, mintha csak rajzolnánk. R-ben ezt csak parancsokkal lehet megtenni, ami nem mindig öröm. Természetesen erre itt is lehetőség van.

Azért azt sem szabad elfelejteni, hogy a rendszer nem tökéletes. Fórumokon sokan kritizálják, hogy kevés ember fejleszti, kicsi a felhaszálói bázis, ezért egyes hibák sokáig rejtve maradhatnak. Nincs elég oktatói anyag, a C++ kódot értelmező Cint borzalmas memória kezeléssel van megáldva.

Például én is tapasztaltam, hogy az R-ben alkalmazott módszert, hogy a history-ból előhívjuk a korábban begépelt parancsot és lefuttatjuk újra, nem működik. A rendszer kiabál miatta.

De aki nem riad meg a C++-tól és szeretné adatait hatékonyan feldolgozni, esetleg szeretne modellezni, nyugodtan adjon neki egy esélyt.

Szólj hozzá!

Címkék: statisztika opengl

Kevésbé ismert szakzsargonok az informatikából

2019.02.14. 23:07 Travis.CG

  • Plug and Pray: Csatlakoztasd és reméld, hogy működik
  • DevWoops: Elrontja a programot, majd kirakja az éles szerverre
  • SenilPhone: Egykor okostelefon volt...
  • FullSuck Developer: A frontendet és a backendet is tönkre tudja vágni
  • CaaS (crying as a service): Cloud technológia, amit fájdalom használni
  • IDE (Irritable Development Environment): Idegesítő fejlesztő környezet
  • IoS (Internet of Shits): Semmire nem jó, de legalább netre van kötve
  • VR (Vomit Reality): Virtuális valóság, amitől kidobod a taccsot

Szólj hozzá!

Setét Torony - a vargabetű

2019.02.02. 23:18 Travis.CG

Eddie azon kapta magát, hogy nem emlékszik az út elejére. Minél inkább próbálta felidézni, hogyan kerültek erre az ösvényre, annál ködösebbek lettek a gondolatai. Talán újabb révülésbe értek? De akkor hol maradtak a szokásos harangok? Eddig akár hányszor sodródtak le a Torony felé vezető nyíl egyenes útról, minden alkalommal furcsa hanghatások kísérték a

(teleportációt)

jelenséget. Most viszont a feje tiszta volt, érzékei normálisan működtek.

- Jól vagy, drágám? - kérdezte Susanna-t. Nem azért, mert úgy látta, felesége nincs jól, csak meg akarta törni az utazás egyhangúságát és ha ez a furcsa állapot csak az ő fejében létezik, akkor a válasz minden bizonnyal valami banális lesz.

- Mintha egy furcsa ködben lebegnék - válaszolta a nő.

Eddie bólintott. Drogos múltja miatt mindent tudott a ködben lebegésről.

- Valami megváltozott. Mintha letértünk volna az utunkról - jegyezte meg Jake. A mellette lépdelő szőrmókus szemében megértés villant. - Roland, mit jelenthet ez?

A harcos sokáig nem válaszolt. Már azt hitték, szó nélkül hagyja beszélgetésüket, amikor megszólalt.

- Szerintem nem Stephen King írja ezt a történetet.

- Ez biztos? - kérdezte Jake. A harcor bólintott.

- Honnan tudod?

- Tudom - zárta le a vitát Roland, pontosan azzal a hangsúllyal, amivel útjuk során az összes megmagyarázhatatlan dolgot eddig elintézte.

- Akkor nem számíthatunk több deus ex machinára? - kérdezte riadtan Susannah.

Roland nem ismerte a kifejezést, de értette, mire gondolt a nő. Bólintott.

- Ezért kell nagyon óvatosnak lennünk. Legyetek ti is résen.

Nem is sejtették, hogy a terület, amin haladnak, Grog fennhatósága alá tartozik. Grog félelmetes lény volt, ha csak hírből is ismerik, nagy ívben kerülték volna el a vidéket. De nem ismerhették. Grog élve falt fel minden lényt, ami vagy aki idetévedt. Senki nem menekülhetett éhsége elől. A Bíbor Király is csak lábujjhegyen mert belépni a területére, amikor Grog aludt. Nagyon szedte ő is a lábát.

- Legalább nem lesz több utalás King más regényeire - jegyezte meg Eddie. Észre sem vette, hogy egy miniatűr homok várra tolja felesége tolószékét, amely kiköpött mása volt a shawsank-i fegyintézetnek.

- Figyeljél, mézem - duruzsolta Susannah, ahogy a tolószéke megbillent.

Grog idegei pattanásig feszültek. Hetekig tökéletesítette azt a homokvárat, amiről egyik éjjel álmodott, erre ezek a betolakodók tönkretették. Dühe csak fokozódott, amikor Csí megszaglászta és vizeletével megjelölte a romot. Kitárta karmokban végződő végtagjait, fejét hátra hajtva az ég felé emelte és elkezdte a gyűjteni a kozmikus energiákat, hogy testében egyesítve azt, lecsapjon a betolakodókra.

- Furcsán lehült a levegő - jegyezte meg Jake.

- Mintha a nap is sötétebb lenne - állapította meg Eddie.

Érezték mindannyian. Mintha az élet szökne el a tájból és áramlana valami felé, ami bekebelezi.

- A világ elmozdult, de ez akkor is túlzás - morogta Roland.

Egyikük sem látta vagy érezte ezt az ésszel felfoghatatlan szörnyet, ami előidézte ezt a változást. Grog tett két lépést előre, észre sem véve, hogy a homokvár romjaiban lépked ő is. Őrülten sok energiát szippantott magába. Megfeszültek izmai, bőre szinte hullámzott, ahogy próbálta bent tartani a mérhetetlen sok energiát. Készen állt rá, hogy nagyítóként fókuszálva lecsapjon, megsemmisítve mindent. Felordított. De nem azért, hogy csapást intézzen, hanem fájdalmában. A szőrmókus vizelet kikiezdte a bőrét. Grog, mivel minden élőlényt még azelőtt elpusztított, hogy az kicsit konfortosabban érezte volna magát, nem tudta, hogy testének egyes egyedül a szőrmókus vizelet az ellensége. Fürödhetett volna lávában, ihatott volna lúgot, mindez meg sem kottyan neki. De ez...

A csapat megfordult, készen rá, hogy szembe szálljanak a veszedelemmel. Roland kezébe már lövésre készen meredt a fegyver csöve. De látták, semmi szüksége lövésre. Grog lába porladni kezdett, a kór terjedt egész testén, végül az összegyűjtött energiát képtelen volt visszatartani és szétrobbant. Darabjai pernyeként elszálltak a szélbe. Ugyan olyan nevetséges halált halt, mint a ka-tet többi ellensége.

- Megszíttad rútpofa - vetette oda Detta hangján Susannah.

- Ez meg mi volt? - kérdezte Eddie már-már eszelős hangon. Roland látta, hogy kicsit remeg a kezében a fegyver.

- Meghalt, nem árthat nekünk - vonta meg vállát Roland, mint aki nem kíván tovább foglalkozni a dologgal. Szeme azonban megállapodott Jake-en.

- Jake, jól vagy?

Jake szeme a semmibe bámult, de a körülötte vibráló levegő elárulta, hogy valami rendkívüli történik vele. Talán közvetlenül a Sugár szól hozzá.

- El kell mennünk New Yorkba - suttogta földöntúli hangon.

- Már megint? Esküszöm, több időt töltünk ott, mint a Belső Világban - fakadt ki Eddie. Az elején még örült, ha visszamehetett, hiszen onnan származott, de most már kezdte igazán unni. Fegyvert visel az oldalán, egy beszélő állattal utazik, szörnyekkel harcol, feleségül vett egy skizofrén nőt, minek menne vissza? Mégis újra és újra oda vezet az útjuk.

- De hogy jutunk oda? - kérdezte Roland. Látszólag őt a hogyan érdekelte, nem a miért.

- Azzal az ajtóval - mutatott jobbra Jake, de még a fejét sem fordította el. Tekintete továbbra is a távolba meredt, mégis pontosan az ajtó felé mutatott, ami épphogy kivehető volt a látóhatáron.

- Naná, hogy van egy ajtó, pont itt, a semmi közepén - morgott Eddie.

- Mi, a baj, drágám? - kérdezte Susannah.

- Csak kezd elegem lenni a megfejthetetlen dolgokból, amit kérdés nélkül elfogadunk. Például egyszer sem kérdőjeleztük meg ezeket a hirtelen felbukkanó gondolatokat. Mi van, ha a Bíbor Király küldte?

- Nem ő volt - jegyezte meg Roland. Szája vékony vonallá préselődött.

- Honnan tudod? Én a helyében biztos küldtem volna egy telepatikus üzenetet, hogy ugorjunk a legközelebbi szakadékba. És nem lenne több ka-tet. Kész, vége, viszlát fakabát.

Blaine említésére Susannah összerázkódott. Csí ijedten Jake lábához kuporodott.

- Elfeledkezel apád arcáról! - kiáltotta Roland.

- Nem, a józan ész nevében kérdem, miért kell birkák módjára viselkednünk? Ott egy rohadt ajtó, amit eddig észre sem vettünk, és most azonnal át kell mennünk rajta. Miért? Vándorlunk téren, időn, Stephen King könyveken keresztül, miközben igazából a dolgok folyására alig van hatásunk. Nem értem, ha a semmiből szendvicsek tudnak megjelenni, amikor elfogy a készletünk, miért nincs egy ajtó, amivel egyből a Toronyhoz jutunk?

- Befejezted? - kérdezte Roland.

- Igen - válaszolta immár higgadtabban. - Nem is értem, miért pofázok, úgyis odamegyünk ahhoz az ajtóhoz és elmegyünk New Yorkba.

Roland csak bólintott, mint aki tudomásul veszi, hogy vége a hisztinek, haladhatnak tovább. Letértek az útról és a következő két órát azzal töltötték, hogy elérjék az ajtót. Mint a többi ajtó útjuk során, ez is csak szemből látszott. Oldalról nézve azonnal eltűnt a szemük elől, akár csak egy poligon hiba a számítógépes játékoknál.

- Én megyek át elsőnek. Gyertek szorosan mögöttem! - mondta Roland.

Rátette kezét a kilincsre, megvárta, míg tárcsai felsorakoznak közvetlen mögötte, majd kinyitotta. Az ajtó éles visítással kitárult és a csapat egymás sarkára taposva átlépett New Yorkba. Mögöttük szinte azonnal becsapódott az ajtó, de szerencsére senki sem sérült meg. Másodpercekig nem láttak semmit, mintha a Napba néztek volna. Látásuk folyamatosan kitisztult és ekkor vették észre, hogy egy férfi mosdóban vannak. Nekik háttal az egyik piszoárnál testes férfi végezte a dolgát. Öltönyt viselt, amelyet Eddie azonnal felismert.

Előkapta fegyverét és elkurjantotta magát.

- Ismét találkozunk! De most nem lesz időd üdvözölni! - azzal egyetlen golyóval megölte a férfit, akinek még arra sem maradt ideje, hogy a sliccét felhúzza.

- Apád szerelmére, mi ütött beléd? - kérdezte elképedve Roland.

- Ez csak Jack Andolini volt - legyintett Eddie. - Akár hányszor New Yorkba vetődök, összetalálkozom vele. Vagy két különböző világban megöltem már, még egy nem számít.

- Drágám, nálad komolyan elmentek otthonról - állapította meg Susannah, ahogy nézte a véres tetemet.

Az illemhelyre hárman rontottak be. Bizonyára a lövés hangjára. Roland a szem számára láthatatlan sebességgel rántotta elő fegyverét és csípőből leszedta az első két férfit. Eddie, akinek a kezében még mindig ott füstölgött a pisztoly, a harmadikat lőtte homlokon. Susannah, Jake és Csí fedezékbe vonult.

Roland azonnal újra töltött. Szemét le sem vette a bejáratról. Várta a második hullámot, de nem jött senki. A csípős lőpor füstje kezdett eloszlani.

- Ha most kijöttök feltartott kézzel, gyorsan végzünk veletek - kiáltotta be egy hang. - Legalább tizen vagyunk kint, állig felfegyverezve.

- Ügyes blöff - kiáltotta vissza Roland.

- Gondolod? Ez a maffia vendéglője. Itt van Balazar a teljes testőrségével. Elrontottátok az ebédjét, amitől nagyon pipa.

- Kellett neked lelőni Andolinit - mordult Eddie-re Roland.

- Hé, én mondtam réveteg tekintettel, hogy menjünk át egy ajtón, aminek nem tudtuk, mi van a másik oldalán?

- Ha Eddie nem lövi le Andolinit, most mind kint lennénk az étteremben, fedezék nélkül - mondta Jake.

- Nem tudunk visszamenni az ajtón? - kérdezte Susannah.

- Nem, egy irányú - válaszolta Jake.

- Akkor ki kell törnünk - jegyezte meg Susannah. Roland bólintott.

- Jake, Eddie, húzzátok el a holttesteket az ajtóból. Susannah, vedd le a ruhájukat és gyújtsd meg. Az iszákomban találsz gyufát. Ügyelj rá, hogy jó nagy füst legyen!

Munkához láttak.

- Fogy az időtök. Minél hamarabb kijöttök, annál gyorsabban vége lesz - sürgette őket a kinti hang.

- Ha bejössz, akkor is gyorsan vége lesz - válaszolta Eddie.

Roland az egyik zakót a csap alá tartotta és vizesen a tűzre rakta. Nemsokára hatalmas fehér füstpamacsok emelkedtek. Jake leszedte az egyik WC fedelet és azzal legyezte a füstöt az étterem felé.

- Mi a francot csinálnak? - kérdezte Pete Trop, Andolini helyettese. Rajta kívül még heten várták a csapatot. Balazar, mikor meglátta a füstöt, rögtön tudta, mi fog következni. Hadvezérként utasította embereit:

- Ti ketten! Borítsátok fel az asztalokat és használjátok fedezéknek. Pete, te menj a bárpult mögé. Vidd magaddal Dagi Joe-t is.

Közben a füst egyre jobban terjedt. Alig lehetett látni a mosdó bejáratát. Egyszer csak egy tolókocsis alak körvonalai kezdtek kibontakozni.

- Tűz! - kiáltotta Balazar. Hét fegyver szólalt meg egyszerre, pokoli lármát csapva. A kocsi mögött egy apró, kutyaszerű alak futott ki, egyenesen a bárpult mögé, de mindenki csak a tolószékkel volt elfoglalva. Egymás után csapódtak a hatalmas testbe a lövedékek.

- Tüzet szüntess, ez Andolini! - kiáltotta az egyik maffiózó, aki a legközelebbi fedezékből lőtt.

Csí közben felfutott Pete farmeros lábán, végigszaladt karján és nyaki artériájába mélyesztette fogát. Meglepetésként ért mindenkit a beálló csendbe a férfi ordítása. Pete felállt és megpróbálta lerázni magáról a szőrmókust. Vér spriccelt a bárpult mögötti tükörre. Dagi Joe megpróbált segíteni a haldokló férfinak, de nem járt sikerrel. Eközben Susannah kibukfencezett a WC-ből. Alacsonyan volt, nehéz célpontot nyújtott. Gyorsan leszedett két maffiózót. A lövés hangja észhez térítette az életben maradtakat. Ismét a mosdó bejárata felé fordultak, de elkéstek. Roland, Eddie és Jake is kint volt már. Minden egyes lövésük talált. Az étterem padlóján nemsokára hullák feküdtek.

Balazar lebukott egy felborított asztal mögé. Tekintete idegesen járt jobbra-balra, hátha megkaparinthat egy fegyvert. Az asztal fáján keresztül lőtték le. Életének utolsó leckéje az volt, hogy az asztal lap nem állítja meg a pisztolygolyókat.

Roland gyorsan újra töltött. Jake magához ölelte a véres pofájú Csít.

- Nem esett bajod?

- Jod - válaszolta Csí.

- Ideje távozni - mondta Roland. Fürkésző szeme újabb ellenséget keresett, aki talán Balazárhoz hasonlóan lapulva várja az alkalmat, hogy golyót röpítsen a hátukba.

- A tüzet eloltjuk? - kérdezte Eddie.

- Nem, hagyjuk, hogy a hely leégjen.

- Pipa - mondta Eddie.

- Tessék?

- Unalmas vándorlás: pipa, rémisztő szörny: pipa, misztikus telepatikus üzenet: pipa, véres lövöldözés: pipa. Ebből áll a történetünk, még nem vettétek észre?

- Kifelejtetted a bizarr szexuális együttléteket - vigyorgott Jake.

- Valamint a gondolkodó gépeket, amelyek megőrülnek - tette hozzá Susannah.

- Inkább fogjátok meg a csomagokat és menjünk - morogta Roland.

Susannah visszamászott a székébe, Roland kifelé kezdte tolni az étteremből. Eddie felkapta a zsákokat és kiment, mielőtt a lángok rákaptak volna az ebédlőasztalokra.

 - Rendben, látnok fiú, merre tovább? - kérdezte Eddie.

- A Genom Központba - vágta rá Jake.

- Ezt most még egyszer, mert nem értettem a szavakat.

- Én sem értem, de tudom, hogy oda kell mennünk. Ott fogunk találkozni az írónkkal.

A csapat kérdőn nézett Rolandra, aki csak megvonta a vállát.

- Talán hipnotizálhatnánk, hogy hagyja békén a történetünket - elmélkedett a harcos.

- Ez a leghülyébb ötlet, amit valaha hallottam - mondta Susannah.

- Semmivel sem nagyobb hülyeség, mint amikor Stephen Kinget hipnotizáltuk, hogy írja meg a történetünket - jegyezte meg Eddie.

A nő széttárta a karját: csináljatok, amit akartok.

Mivel nem volt pénzük, kiadós gyaloglás elé néztek, de ez meg sem konnyant nekik egy másik világban tett utazásaik után. Eddig egyetlen New York-i kiruccanásuk alatt sem nézték meg őket, és úgy tűnt, ez az út sem lesz kivétel.

Lemenőben volt a nap, amikor elérték a Genom Központot. A bejárat felett fehér transzparens hirdette, hogy a mai napon kezdődik a XXII. Nemzetközi Számítógépes Rákkutató Konferencia.

- Ide orvosok vagy tudósok jönnek? - kérdezte Susannah.

- Teljesen mindegy, egyikükre sem hasonlítunk - mondta Eddie, majd hozzátette: - Van egy olyan érzésem, hogy a mi kis íronk csak szeretne itt lenni.

Beléptek a forgó ajtón. A regisztrációs pult felé vették az irányt. Az asztal tele volt névjegy kártyákkal. Két kedves nő mosolyogva üdvözölte őket.

- Megtudhatnánk a kedves nevüket? - kérdezte a jobb oldali nő.

- Á, itt van az enyém - kapott fel Eddie találomra egy kártyát. A többiek követték példáját. A regisztráció után mindannyian kis szatyrokat kaptak, amiben toll, jegyzetfüzet és a konferencia nyomtatott anyaga volt, valamint ismeretlen műszerek reklámbrossúrái. Roland megvetően mérte végig a szatyrot. Hozzászokott, hogy vándorlásai során csak erős anyagból készült felszerelést használjon, de ez a szatyor úgy nézett ki, öt percet sem fog bírni.

- Arra találják az előadó termet - igazította útba őket a recepciós.

- Hogy fogjuk megtalálni az írót? - kérdezte Susannah.

- A szokásos módszerekkel: telepátiával, semmiből előbukkanó varázstárgyakkal, gondolkodó gépekkel - vágta rá azonnal Eddie.

- Drágám, kezdesz idegesítő lenni - felelte a nő. Eddie duzzogva elhallgatott.

Roland felhúzott szemöldökkel rájuk sandított. Az együtt töltött idő alatt most először fordult elő, hogy valódi házastársakként viselkedtek.

Jake észrevett egy kutatót, aki a kiakasztott posztereket nézte. Alacsony volt, sárga esőkabátot viselt, és bár fedett helyen voltak, széles karimájú kalap volt a fején. Jake odalépett mögé, elgáncsolta. Már nyúlt volna a fegyveréért, amikor Roland elkapta a csuklóját.

- Ez egy alacsony ember! - sziszegte a fiú.

- Jake...

- Értesíteni fogja a Bíbor Király embereit!

- Nem, Jake. Ő nem can-toi. Csak egy ember, akinek borzalmas az öltözködési stílusa.

A földön fekvő férfi elkerekedő szemmel bámult rájuk.

- Tessék? - ennyire futotta tőle.

- Ugyan, Jake - lépett oda hozzájuk Eddie. Elkapta a férfi orrát, és megtekerte. - Nem visel maszkot. Nem can-toi.

- Érvényes a vízumom, érvényes a vízumom - hadarta a sárga esőkabátos fájdalmában.

- Drágáim, menjünk abba a terembe - mutatott előre Susannah. - Itt felesleges feltűnést keltünk.

A terembe belépve, rengeteg embert láttak. Mindegyikük előtt furcsa, sok gombos szerkezet feküdt. Eddie, aki '86-ban lépett át Roland világába, sejtette, hogy ezek talán számítógépek. Az előadói pultnál rövid hajú, szemüveges férfi készült az előadásra. Egy pillanatra felnézett és megakadt a szeme az újonan érkezetteken. Egy pillanatra megmerevedett, majd idétlen vihogásba tört ki. Az első sorban ülő kutatók érdeklődve nézték, mi lehet a nevetés tárgya, de nem értették, mi olyan mulatságos.

Roland szeme résnyire szűkült, ahogy farkas szemet nézett a vihogó férfivel.

- Ő lesz az - jelentette ki, majd elindult felé. A többiek követték.

A szemüveges férfi csak röhögött, mintha a világ legjobb poénjával szórakoztatták volna.

- Ti...ti... - képtelen volt befejezni a mondatot. Furcsa akcentusa volt, Eddie szerint Kelet-európai országból származhatott.

Néhányan futó pillantást vetettek a kis közjátékra, de inkább a laptop monitorját bámulták. Roland elővett egy lövedéket és táncoltatni kezdte az ujjai között. A férfi nevetése elakadt.

- Hallod a hangomat? - kérdezte Roland.

- Tisztán és érthetően - felelte a férfi. Hasonló réveteg kifejezés ült az arcára, mint Jake-nek, amikor azt mesélte nekik, hogy New Yorkba kell jönniük.

- Miért írsz rólunk?

- Elolvastam a Setét Torony mind a hét vagy nyolc kötetét és ez kikívánkozott belőlem. King a bevezetőben azt írta, ez az ő válasza a Gyűrűk Urára. Nekem ez a válaszom a Setét Toronyra. A Gannak nem lehet parancsolni. Olyan, mintha befognád a szád a tüsszentés előtt. A trutymó az orrodon fog távozni.

- Kinghez méltó hasonlat - jegyezte meg Eddie.

- Azt kérnénk, hogy többet ne írj rólam vagy a ka-tetről. Szabotálod az utunkat a Setét Toronyhoz. Te nem a Gan köldöke vagy.

- Nem, nem vagyok a Gan köldöke. Sokkal inkább az alfele.

- Legalább van önkritikája - szúrta közbe Eddie. Hangjában némi elismerést lehetett felfedezni.

- Akár milye is vagy a Gannak, ideje felhagyni vele - vette vissza a szót Roland. - Háromig számolok és te nem fogsz emlékezni erre a beszélgetésre, de aszerint fogsz cselekedni.

- Random szereplők hipnotizálása: pipa - mondta Eddie, inkább csak úgy magának.

- Egy, kettő, három - mondta Roland.

A férfi pislogott hármat. Értetlen tekintettel nézett körül. Roland és barátai pedig eltűntek a létezés eme síkjáról, akár csak egy Bruce Willis sci-fi szereplői.

Szólj hozzá!

Címkék: irodalom

Szerver törés. Utasításra

2019.01.23. 23:00 Travis.CG

A történet úgy kezdődött, hogy egy nagyon kedves kolléganőnk külföldre ment. Pontosan nem tudni, mi van a háttérben, de ami tény, a kommunikáció szinte lehetetlenné vált vele. A probléma a be nem fejezett projektekkel volt, amiket cikk állapotba kellene varázsolni, de minden adat egy szerveren volt, bezárva a szerverterem zajos gépei közé.

Mivel a kutatók úgy tudták, hogy senki másnak nincs hozzáférése a géphez, ezért az intézet igazgató személyes levelében adott utasítást a gép feltörésére.

Most komolyan, ki tudna visszautasítani egy ilyen ajánlatot? Legitim kalózkodás valós infrastruktúrában! Máshol csak ugatnak arról, hogy változatos munkavégzés.

Az első gond az volt, hogy igazából senki nem tudta, hol van a gép. Lementem a rendszergazdákhoz, hogy megtudakoljam. Ja, a játék érdekessége, hogy ők a fenti levélváltosról nem tudtak, én meg nem kötöttem az orrukra. Először nem értették, melyik gép IP címét kérem, megadták egy NAS szerver címét, majd azt mondták, az a gép nincs is a szerver teremben, de végül addig raktuk egymáshoz az információ morzsákat, amíg kitaláltuk, melyik gépről van szó.

- Azért kérdezzük, mert azt a gépet nem viheted haza!
- Nem akarom elvinni, csak az IP címe kell - válaszoltam.
- Mit akarsz vele?
- Belépni.
- Van hozzáférésed?
- Majd lesz. Írtam a kolléganőnek.

Az utolsó két mondat külön-külön igaz volt, de azt egyik rendszergazdi sem tudta, hogy nem úgy lesz hozzáférésem, hogy kapok valakitől. Legalábbis ez volt a tervem. Aztán kiderült, hogy nekik megvolt a jelszó egy papíron, amitől egy cseppet veszített a játék az ízéből. Ugyanis ha valamit elszúrok (márpedig erre elég nagy esély volt, ahogy ismerem magamat), akkor nem védekezhetek azzal, hogy "de a főigazgató utasított, hogy törjem fel", hiszen a levél igazi értelme az adatok megszerzésére irányult.

Addigra már eltökéltem, hogy végigviszem a projektet, majd legfejlebb lesz néhány "oopsz". Elindítottam egy Kali Linuxot.

Aki nem tudná, a Kali egy olyan disztribúció, amit telepakoltak olyan eszközökkel, amelyek nekem ehhez a munkához kellettek. Amíg az Ubuntu olyan, mint egy kedves nagynéni, addig Kali inkább egy mogorva nagybácsira hasonlít. A nagynéni házában égnek a villanyok, a driverek mind a memóriában csücsülnek, hátha a gyerekeknek éppen egy ritka Wacom digitális táblával van kedvük játszani. A nagybácsi házában sötét honol. Ha fényt szeretnél a szobádba, először egy aggregátort kell bekapcsolni. A nagynéni az ágyba hozza a reggelit, de Kali bácsi nem csinál ilyet. Ha azt mondod neki, éhes vagy, kinyit egy fegyverszekrényt és a réten futkosó nyulak felé bök. Ubuntuéknál a root egy csúnya szó. Nem is mondjuk ki, legfeljebb utalunk rá a társasági etikettnek megfelelő sudoval. Ezzel szemben Kali bácsi folyamatosan káromkodik.

Végül a legfontosabb: Kali bácsinak számtalan igen veszélyes fegyvere van, de egyikről sem beszél. Ha meg akarod tanulni a használatukat, bizony más forrás után kell nézned.

Kali elindítása után elkezdtem szaglászni a gép körül az nmap-el. A program nem találta a gépet. Próbáltam név alapján is elérni, ugyan az lett az eredmény. Biztos kikapcsolták - gondoltam.

Lementem a rendszergazdákhoz, mondtam nekik, hogy az IP nem válaszol. Bementünk a szerverterembe. A gép ott virított, égtek a kis ledek. A kis papír a jelszóval ott hevert a billentyűzet mellett. A rendszergazda belépett, kiadta az ifconfigot. Nem csoda, hogy nem találtam! DHCP volt beállítva, más IP-t kapott, mint amiről a rendszergazdák tudtak. Mondták is, ha majd bejelentkeztem, állítsam át. Hiába, a legnagyobb biztonságban az van, amiről nem is tudunk!

Kezdtem előről. Most már megvolt a gép, válaszolt is, de a nyitott portok még mindig furcsák voltak. Elméletileg ezt a gépet azért rakták a szerver terembe, hogy a kolléganő külföldről is használni tudja. De nem volt nyitva SSH port. Helyette a 80-as, a 110-es, 21-es. Biztos, hogy nem webszerverként üzemelt.

Ismét lementem a rendszergazdákhoz. Mondtam, nem tudok belépni. Ők be tudtak lépni. Hogy lehetek ennyire béna? - kérdeztem magamtól. Már az elején beégek. Átbeszéltük a részleteket, mire kiderült, hogy rossz IP-t jegyeztem meg.

Harmadik menet. Most már az nmap azt is meg tudta állapítani, hogy Ubuntu van a gépen, a MAC címből a gép gyártóját is korrektül adta vissza. Jó helyen járok! Az SSH szerver verziószámát is megkaptam.

Oké, hogyan lépjek be? Az első ötletem az volt, hogy keresek egy OpenSSH sebezhetőséget. A disztribúció már eleve tartalmaz rengeteget. A searchsploit parancs segítségével lehet keresni közöttük. Két távoli parancs futtatására alkalmas sebezhetőség volt. Az egyik egy Python szkript formájában, a másik egy C forráskód volt. Egyiket sem tudtam elsőre lefuttatni, mert hiányoztak a megfelelő csomagok. Végül a C-t választottam, mert a Python kód szerint teljes hozzáférés kell, felhasználói névvel és jelszóval. Nekem meg nem volt jelszavam.

A kód fordításához először telepíteni kellett a libssh-devel csomagot, utána ment gond nélkül. Beadtam neki a szerver nevét, a parancsot, amit futtatni akartam, majd vártam a csodát. De csak egy promptot kaptam, ahol megint a jelszót kérte. Ekkor alaposabban elolvastam a leírást: SFTP sebezhetőség. Ha van hozzáférés, lehet kódot futtatni.

Böngésztem még a furcsa nevű programok között. Az összes ilyesmi volt: Yersinia, Nikto, KillerBee, Wireshark... Miért nincs olyan név, hogy Rainbow? Vagy amilyen neveket az Én kicsi pónim szereplőinek adnak? Mindegy.

Végül a Hydra mellett döntöttem, ami brute force támadást tud intézni egy csomó protokollon keresztül. A jelszó egy tudományos néven alapult, ezért nem szerepelt a Kali egyetlen jelszó listájában sem, tehát szótár alapú törés szóba sem jöhetett. Mivel tudtam, hogy 8 karakter hosszú és nincs benne nagy betű, ezért azt gondoltam, könnyebb lesz a törés. Tévedtem. A program kiköpött egy hibaüzenetet, hogy túl sokáig tartana a futás, nem fog elindulni.

Itt hagytam abba a próbálkozást, mert nem akartam túl sok időt elpocsékolni. Ezek alapján úgy tűnik, a rendszerek nem olyan védtelenek. Igazából egy jól megválasztott jelszóval és folyamatos frissítésekkel elég hatékonyan lehet védekezni, ha az NSA ellen nem is, ellenem mindenképp.

Szólj hozzá!

Címkék: rendszergazda

Uszítsd rá a Krakent! A metagenomra.

2019.01.12. 23:42 Travis.CG

De még jobb, ha a Kraken2-t. Az agresszív név mögött egy metagenomikai taxonómiai elemző program lapul. Bárki, aki dolgozott már metagenomikai szekvenciákkal, az tudja, hogy az eljárás mögött nem áll más, mint begyűjteni mindent, ami "talán jó lesz valamire". A környezetünkből vett mintákban DNS-t keresnek és megszekvenálják.

Mivel a mintákról alapvetően semmilyen információnk nincs, ezért az első lépés általában a taxonok meghatározása. Ezt segíti elő a Kraken2. A szekvenciák taxonómiai helyének meghatározása során megkeresi a legősibb közös őst, ha tudja.

Telepítés

A program telepítése rendkívül egyszerű. A függőségek száma minimális, csupán a sed/find/wget és természetesen a Perl. Használ pár saját, C++-ban megírt kisebb programot is. Nem kötelező, de telepíthetjük az NCBI Blastot is, ahonnan a dustmasker/segmasker programokat fogja használni. (Bár ezek telepítése erőseb ajánlott, ha az alacsony komplexitású régiók okozta problémákat el akarjuk kerülni.) Csak kiadjuk az install_kraken2.sh parancsot a megfelelő könyvtárnévvel és kész.

Természetesen ez még nem használható. A taxonómiai elemzéshez szükség van taxonómiai információkra is. A program természetesen letölti nekünk a megfelelő adatokat, és elvégzi a k-mer bontást is, de ez a lépés értelem szerűen sokkal lassabb. Én 8 magot adtam a programnak, ami elég volt, hogy 5 óra alatt telepítse a standard adatszettet. Ha csak egy 16S adatbázist hozunk létre, az már 4 perc alatt is megvan.

Futtatás

A program futtatása is igen egyszerű. Megadjuk a fájlokat és az adatbázist, az eredményt pedig a képernyőre kapjuk. Minden szekcenciára elvégzi a taxonómiai elemzést. A dokumentációval ellentétben az input formátumot a program határozza meg, nem kell nekünk definiálni, de azt fontos megadnunk, hogy a szekvenciák tömörítettek-e. Ennek hiányában a fájlok azonosítása nem fog működni. Célszerű az --use-names opciót is használni, különben csak taxid-kat kapunk, ami nem nagy segítség.

A futási idővel nincs gond, percek alatt kapunk eredményt. Akinek viszont nem áll rendelkezésére elég memória, a mini-krakennel próbálkozhat, aminek természetesen limitációi vannak, ami az eredmények pontosságán is látszik. Sajnos a kimenet nem tartalmaz semmilyen pontozó rendszert, ami segítségével eldönthetnénk, mennyire jók az eredmények. Az eredmény fájlban ugyan megtaláljuk mennyi kmer esett az adott taxonra, de tüzetesebb átvizsgálásnál találtam olyan eseteket, ahol read nagy része ismeretlen. Négy-öt kmer alapján kijelenteni, hogy egy 300 hosszú szekvencia X taxonhoz tartozik, szerintem nem szerencsés.

Az egyetlen szűrési lehetőségünk a --confidence. A szerzők is elismerik, hogy ez nem egy tökéletes megoldás, de abban segíthet, hogy csökkentsük a fals pozitív találatok számát.

Összegzés

A taxonómiai besorolás nem könnyű annak hierarchikus felépítése miatt. Ehhez jön még a horizontális géntranszfer, ami igen megnehezíti ezt a feladatot. A Kraken2 igyekszik a legjobbat adni és meg sem próbál több, lenni, mint ami: a szekvenciákról megmondja, melyik taxonhoz tartozhat. Nincs vizualizáció, a kimenet kicsit szerencsétlen, de stabilan működik és folyamatosan fejlesztik. Önmagában kevés, hogy puclikáció kész eredményt kapjunk, de egy munkafolyamat részeként igen hasznos.

Szólj hozzá!

Címkék: bioinformatika

Digi és a megnyekkent Ubuntu esete

2019.01.06. 22:08 Travis.CG

Az a jó a családlátogatásokban, hogy akkor rögtön rendbehozhatom a fél éve magára hagyott, ismeretlen eredetű problémákkal küszködő gépeket.

Az egyik ilyen eset egy Ubuntu volt, amit még én állítottam be két éve. Igyekeztem minél kevesebb bonyodalmat okozni a Windowshoz szokott felhasználóknak, ezért kérés nélkül mentek fel a frissítések és a GRUB2 menüje nem jelent meg.

Közben történt egy internet szolgáltató váltás, aminek hatására a gép furcsa dolgokat kezdett csinálni: A mentett weboldalakat gond nélkül megjelenítette, de újakat nem volt hajlandó megnyitni. Az internetet bekötő ember szerint ez merevlemez probléma volt, de szerencsére nem engedték neki, hogy megjavítsa, ezért az adatok megmaradtak a gépen.

Röviddel ez után történt egy disztribúció frissítés is. Illetve történt volna, ha a megvárták volna a telepítés végét. De nem így történt, inkább kikapcsolták, mert "túl sokáig tartott". A leállítás még ment, a boot már nem.

Hurrá, a Jézuska megint gondoskodott számomra a meglepetésről.

A gép bebootolt, a Linux el is indult, de a grafikus felület csak az egér mutatót jelenítette meg. Akkor nagy baj nincs, mert ha boot CD is kellett volna, akkor lettem volna csak igazán pácban. A konzolos bejelentkezés ment, ezért elsőre a GRUB2-t kapcsoltam vissza, hátha a helyreállító módokkal tudok valamit kezdeni.

Itt egy kicsit bénáztam, mert a HIDDEN_TIMEOUT opció is be volt kapcsolva, ezért elsőre nem jelenítette meg a menüt, de végül az ESC gombbal elővarázsoltam.

Feljöttek a helyreállító menük, úgyhogy adtam neki egy csomag javítást. Vagy másfél óráig kerregett, de végül kaptam egy rendszert, ami már a grafikus felületet is megjelenítette.

Jöhetett a net.

Az első furcsaság az volt, hogy az ifconfig parancs nem mutatta a hálózati csatolót. A grafikus felület beállító panelje szerint minden a legnagyobb rendben volt, de mégsem volt net. Valaki hazudik és az ökölszabály, hogy a grafikus cuccok a ludasak. Jobb ötlet híján az /etc/network/interfaces fájlba felvettem az enp0s1-t, mert a grafikus beállító ezt várta. Reboot. Nem történt semmi változás. Aztán kiadtam az ifup enp0s1 parancsot, mire varázsütésre megjelent a hálózati csatoló. Na jó, a varázsütés kicsit túlzás. Két percet kellett várni, és a boot idő is megnövekedett ennyivel. Gondoltam, azzal majd később foglalkozom, először legyen net.

A fejemben lévő lista egy újabb elemét pipálhattuk ki. Már csak netet kell varázsolni.

A telefont böngészve megtaláltam a Digi internet konfiguráló dokumentációját, de legnagyobb meglepetésemre, minden úgy volt beállítva, ahogy kell. Illetve reménykedtem benne, mert az internet eléréshez szükséges jelszót nem tudta senki. Hagytak ott millió papírt, de az előfizető azonosítói nem voltak közötte. Persze, minek is az egy merevlemez hibás gép mellé?

Szerencsére emlékeztem pár ip címre, amit megpingelve választ kaptam. Hoppá, akkor mégis van net! Az SSH is működött. Már csak azt kell kitalálni, miért nincs névfeloldás.

Elég sok időbe telt, mire mire megtaláltam a megoldást. A gond az volt, hogy folyton visszatértem a Digi dokumentációihoz. Volt nekik egy PDF-ük a DNS szerverekkel, azt állítottam be. Pingre válaszoltak, tehát léteztek. Végül egészen véletlenül futottam be egy 2018 márciusi bejegyzésbe, ahol azt tanácsolták, hagyjuk a fenébe a Digi DNS szervereit, használjuk a Gugliét.

Beállítottam az új névszervereket a grafikus felületen, de továbbra sem működött. Aztán kiderült a turpisság. A nmcli device show parancs szerint továbbra is a Digis szervereket akarta használni, csak a harmadik és negyedik helyen próbálta volna a Guglit. De mivel a működésképtelen DNS szerverek válaszoltak, csak értelmes adatot nem közöltek, ezért a rendszer meg sem próbált tovább lépni.

Végül az /etc/network/interfaces fájlba felvettem a nameserver opciót a megfelelő címekkel és bumm, ment újra a mahjong meg a többi Flash játék. Mert ezek voltak a legfontosabbak.

De egy valamit továbbra sem értek. Miként hagyhatja egy szolgáltató, hogy fél évnél hosszabb ideig ne menjenek a szerverei? Nézik, ahogy az emberek fórumokon próbálják kiküszöbölni a problémát és még csak annyit sem tesznek, hogy legalább egy linket kitegyenek a saját oldalukra, hogy mit kell csinálni. Bár lehet, hogy gőzerővel dolgoznak és keresik a merevlemez hibát a saját DNS szerverükben.

Szólj hozzá!

Címkék: rendszergazda