TCH (statz) | #1, Főfasz (10443) |
361 | #27c0 | ^ | Idézet | Tue, 10 Sep 2013 08:14:06 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Jó kérdés. Próbáljuk ki mondjuk a veremkezelését mindnek: függvényhívások sok paraméterrel, sok lépcsőben. Majd összedobok valamit, de ma festek. |
kemi (statz) | #2, Főfasz (2970) |
358 | #27c1 | ^ | Idézet | Tue, 10 Sep 2013 15:20:59 +02 |
195.38.*.* | *.pool.digikabel.hu |
Csak úgy véletlenül vettem észre, hogy a Linux kernel MZ-vel kezdődik, az pedig a DOS-os/winfosos exe fejléce. Át is raktam winfosra, átneveztem vmlinuz.exe-re, de duplaklikkre kiírta, hogy "Az alkalmazás inicializálása nem megfelelő." Poén lett volna, ha megjelenik bilgéc levágott feje, vagy egy kabbét mutató pingvin. XD |
TCH (statz) | #1, Főfasz (10443) |
137 | #27c2 | ^ | Idézet | Tue, 10 Sep 2013 16:12:13 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Csak véletlenül lehetett MZ az első két byte-ja, mert a kernelnek nincs fejléce, az egy raw binary, amit a gép beránt RAM-ba és lefuttat. |
kemi (statz) | #2, Főfasz (2970) |
114 | #27c3 | ^ | Idézet | Tue, 10 Sep 2013 16:20:45 +02 |
77.234.*.* | *.pool.digikabel.hu |
Attól még bele lehet rejteni egy easteregget, vagy a franctuggyamiért beletenni egy winfos alatt futtatható részt. |
TCH (statz) | #1, Főfasz (10443) |
993 | #27c4 | ^ | Idézet | Tue, 10 Sep 2013 23:08:22 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Nem, nem lehet, hogy is lehetne. Azt hiszem nem értettél meg. :P A Linux kernel egy olyan bináris, aminek az elején semmilyen fejléc vagy egyéb adat nincsen. Mindjárt a legelső byte is utasítás. És ennek így kell lennie, hiszen ez a bináris az oprendszer, ezt még maga a bootloader tölti be, az meg nem foglalkozik az oprendszereknek szóló fejlécekkel. A winfos kernel loaderének sincs fejléce. Ha a bináris első két byte-ja "MZ" az kizárólag csak "véletlen" lehet, attól függően, hogy abban a binárisban mi az első utasítás. Pl. nálam sem "MZ". És winfos alatt csak az tud futni, aminek van fejléce, (kivéve a 9x-es vonalat), ami nem csak egy db "MZ" magic-numberből áll, hanem egy rakás cuccból. Ha az első két byte "MZ", azaz $4d $5a akkor az azt jelenti, hogy dec ebp pop rdxazaz csökkenti a 32-bites base-pointert és kihalássza a veremből a 64-bites data-registert. Hogy miért csinálja azt nem tudom, de ezt csinálja. |
kemi (statz) | #2, Főfasz (2970) |
561 | #27c5 | ^ | Idézet | Tue, 10 Sep 2013 23:52:59 +02 |
77.234.*.* | *.pool.digikabel.hu |
A bootloadernek meg lehet mondani, hogy kezdje az x-edik bájttól a beolvasást. Ahogy a winfosos exék is úgy működnek, hogy a fejlécükben van egy DOS-os program, ami alapból annyit csinál, hogy kiírja, hogy ez a program nem megy DOS alatt, és kilép, a winfos pedig simán átugorja azt a részt. A win9x korszakban ezt ki is használták a vírusírók, hogy felülírták egy exében a fejlécet, onnantól bármit megtehetett, amíg be nem töltődött a winfos (csak 16 bites real mode-ban). A júzer meg nem vette észre, mert winfos alól a fertőzött program működött normálisan. |
TCH (statz) | #1, Főfasz (10443) |
221 | #27c6 | ^ | Idézet | Wed, 11 Sep 2013 00:45:04 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Ez mind szép és jó, de egy sima "MZ" kezdés édeskevés az üdvösséghez, az utoljára 9x-ek alatt megy, NT-k, Longhornok, mind full PE-header-t igényelnek. Höhö, saxus megint felkerült a hupmeme-re. Szarrágásért. |
kemi (statz) | #2, Főfasz (2970) |
1492 | #27c7 | ^ | Idézet | Wed, 11 Sep 2013 10:34:02 +02 |
94.21.*.* | *.pool.digikabel.hu |
Az NT-s exék is "MZ"-vel kezdődnek. Amúgy lehet, hogy a winfos bootloaderének kell egy NT-s fejléc. Van egy konzolos programom, ami a sarokban kijelzi az órát. Úgy oldottam meg, hogy ciklusban másodpercenként lekérdezi az időt, majd frissíti az órát, ezt pedig beraktam egy threadbe. Ha megnyitsz egy menüt, akkor viszont leszedem az órát. A ciklusváltozó egy bool ami a thread indításakor igaz értéket kap, leállításkor hamisba billen, majd a program megvárja amíg befejezi a dolgát. bool do_refreshClock; thread t; void refreshClock() { while (do_refreshClock) { ... } } void startClock() { do_refreshClock = true; t = thread(&refreshClock); } void stopClock() { do_refreshClock = false; t.join(); }Ez így jó? A projekt egyébként egy konzolos Norton Commander klón, amivel deb/rpm package-ekben lehet turkálni, fájlokat kiszedni, újakat generálni, egyikből másikba konvertálni stb. Lehet, hogy ezt adom le szakdogának, mert ebbe már van kb 2000 C++ kódsor. Bár nem tudom mennyire fogják tolerálni, hogy nem a mikrofos seggét nyalom, meg nem is windózos cuccot adok le. Amúgy ha Linuxon színezni akarod a konzolos outputot akkor kurva egyszerű dolgod van, winfoson viszont az API-ba kell nyúlni (vagy megírni assemblyben :P), úgyhogy ehhez is írtam egy DOS-os Turbo C-vel kompatibilis libraryt, így könnyen portolható az olyan program is, ami színezi az outputot. |
Timi (statz) | #94, Szarfasz (1) |
94 | #27c8 | ^ | Idézet | Wed, 11 Sep 2013 15:43:19 +02 |
77.234.*.* | *.pool.digikabel.hu |
3 youtube fiók törlése hogy lehetséges,ha nincs meg a jelszó se a felh név, tudtok segíteni? |
TCH (statz) | #1, Főfasz (10443) |
1866 | #27c9 | ^ | Idézet | Wed, 11 Sep 2013 18:19:36 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Írtam, hogy a sima "MZ" kevés. Itt a PE header leírása. Szerintem igen, bár a bool-t én feleslegesnek tartom, ha a thread-ot törlöd, akkor a futása is megszűnik, vagy nem? Ez faszán hangzik! Nem csinálod meg, hogy zip-et és tar.gz/.bz2/.xz fájlokat is tudjon? Kérdezz rá, nehogy pofáraess. De ha nemet mondanak, a cuccot akkor is csináld meg szerintem, mert a közösség örülni fog neki. Ez Amigán is megy. Ott még mindig a karakteres képernyőt módján működik? Egy karakterkód, egy színkód? Ez most a Package Kommanderhez készült, vagy csak a windózsux jegyében, hogy lehessen már színezni ott is? Sorry, nekem gőzöm sincs. |
kemi (statz) | #2, Főfasz (2970) |
1168 | #27ca | ^ | Idézet | Wed, 11 Sep 2013 19:56:10 +02 |
94.21.*.* | *.pool.digikabel.hu |
"Kilőni" a threadet sosem egészséges, mert sosem tudhatod épp mit csinált amikor félbeszakadt. A flag meg azért kell, különben sosem fogja tudni mikor kell leállni. A join() arra jó, hogy a szülő szál megvárja amíg a gyerek befejezi a műveletet. Ha nincs flag sosem tudná mikor kell leállni, a join()-ra megakadna az egész program. Csak azért kérdezem, van-e erre valami elegánsabb megoldás, hogy mondjuk megmondom a threadnek mit csináljon, azt csinálja végtelen ciklusban, majd amikor kap valami jelet leáll. A Qt-ben van ilyesmi eseményvezérelt megoldás, de ez sima alap C++. http://msdn.microsoft.com/en-us/library/windows/desktop/ms686047(v=vs.85).aspx Is-is. Meg azért beszédesebben néz ki az, hogy textcolor(BLUE); mint az, hogy printf("\033[34m");. |
TCH (statz) | #1, Főfasz (10443) |
903 | #27cb | ^ | Idézet | Wed, 11 Sep 2013 20:41:47 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Ja értem. Akkor ezek szerint jól raktad össze. Aham. Majdnem. DOS-ban csak annyi volt a különbség, hogy a háttér utolsó bitje villogást csinált, nem plusz fényerőt, mint a text. Meg ugye ott csak 8 bit volt az attribútum. Tagadhatatlan. A forrása annak a libnek public vagy closed lesz? |
saxus (statz) | #9, Agyfasz (419) |
1604 | #27cc | ^ | Idézet | Thu, 12 Sep 2013 00:55:49 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
"Höhö, saxus megint felkerült a hupmeme-re. Szarrágásért." Nem, hanem mert gabu egy fasz. Most valamiert az "enyhen" megnacult agya valamiert ugy dontott, hogy az angolszasz kultura uber alles es zsido talalmany az, hogy a nemet lizenz szot honositottuk meg fonetikusan licenc-kent atirva. "Lehet, hogy ezt adom le szakdogának, mert ebbe már van kb 2000 C++ kódsor. Bár nem tudom mennyire fogják tolerálni, hogy nem a mikrofos seggét nyalom, meg nem is windózos cuccot adok le." Szakdoganal nem erdekel senkit, hogy milyen rendszerre vagy miben fejlesztesz. Lenyeg, hogy valami komolyabb munkat csinalj, ami mogott latszik a mernoki szemlelet es a modszertan (problema analizalasa, irodalomkutatas, tervezes, dokumentalas, stb.). Ami kovetelmeny az az, hogy a megadott formazasok mellett 40-60 oldal legyen. De nekunk inkabb 40K karaktert mondtak. Ettol lefele nem nagyon kellene elterni, de egy normalis temabol kidolgozva ossze is jon. (Nekunk pl. 115K lett, igaz, ketten irtuk igy szorzodott). Ami viszont fontos, hogy az elejen a bevezetest es a vegen egy 1-2 oldalas osszefoglalot irj meg nagyon jora. Az egesz szakdolgozatot jo esetben max. a konzulens meg a felkert biralo fogja elolvasni, o is fog ra biralatot adni. Kod ugy _onmagaban_ senkit nem erdekel, a projekt es annak levezeteset fogjak nezni (volt-e tervezes, az hogy, teszteles hogyan tortent, stb.) Az meg, hogy mekkora a kodod az a tematol fugg. Ha pl. valami uj, komolyabb kepfeldolgozo algoritmust mutatsz be az nyilvan mas mennyiseg lesz, mintha irnal mondjuk valami webes nyilvantarto rendszert. |
saxus (statz) | #9, Agyfasz (419) |
3316 | #27cd | ^ | Idézet | Thu, 12 Sep 2013 02:44:51 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
@Linux Kernel: Utananeztem picit, mert erdekelt a tema. Alapvetoen a LILO doksijabol indultam ki (mert joval fapadabb szerkezet, mint a grub), valamint van egy nagyon jo osszefoglalo a Linux bootrol a lenti linken. Nekem ugy tunik, hogy maga a Linux kernel is 3 reszbol all: all egy bootsectbol (512 byte, annyit csinal, hogy a bios betolti, az meg betolti a bsetup kodjat. A bsetup mond meg egy halom infot, hogy mi merre hany meter meg persze van maga a kernel. Manapsag ez ugy nez ki, hogy a bootloaderek (akar GRUB, akar LILO) tartalmaznak ket reszt, egy ugyanolyan 512 bytes mini loadert, amit a BIOS betolt betolt a masodik reszt az meg maga a boot loader. Itt mar vannak elteresek, mert pl. mig a GRUB-ban mar fajlrendszer-drivertol kezdve az LVM es mindenfele RAID supporton at minden van, addig a LILO meg a telepiteskor/frissiteskor beirta, hogy mit honnan kell majd kiolvasni. De alapvetoen a DOS-MBR is igy mukodott a LILO dok szerint: berantotta a ramba a command.com-ot a megfelelo helyrol, aztan atadta a vezerlest. Linuxnal annyival erdekesebb, hogy meg van a bsetub (LILO doksijaban amugy benne van, hogy mit hova tolt be, fix cimekre kerulnek ezek) es a kernel betoltese, ami meg bonyolodhat annyival, hogy tomoritett is. Slusszpoen: van ramdisk is (initrd). (Olyankor eleve mas helyre tolti be a kernelt.) http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/intro.html http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/bootsect.html http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/setup.html Viszont a mi szervereinken nemigazan MZ van az elejen: david:/boot# hexdump vmlinuz-2.6.23.9-v1.0 -C | head -n 1 00000000 ea 05 00 c0 07 8c c8 8e d8 8e c0 8e d0 31 e4 fb |.............1..| david:/boot# hexdump vmlinuz-2.6.24.7-v1.0 -C | head -n 1 00000000 ea 05 00 c0 07 8c c8 8e d8 8e c0 8e d0 31 e4 fb |.............1..| saxus@mars:/boot$ hexdump /boot/vmlinuz-2.6.32-5-amd64 -C | head -n 1 00000000 ea 05 00 c0 07 8c c8 8e d8 8e c0 8e d0 31 e4 fb |.............1..| Masreszt ezek tomoritett kernelek, maga a tenyleges kernelkod az nem az elejetol kezdodik, de adott cimre fog kerulni (kitomorites utan), ahol majd megkapja a vezerlest: http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/compressed_head.html http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/kernel_head.html Ott meg az a fuggveny lesz, ami vedett modba kapcsol, nekiall MMU-zni esatobbi. Aztan johet a start_kernel(). Egyebkent maganak a linkernek elvileg ELF-et kellene csinalnia... saxus@mars:~$ hexdump -C vmlinux | grep '1f 8b 08 00' 00003a60 48 8d 83 d0 76 24 00 ff e0 1f 8b 08 00 20 2d f7 |H...v$....... -.| saxus@mars:~$ printf '%d\n' 0x3a69 14953 saxus@mars:~$ ls -la vmlinux -rw-r--r-- 1 saxus saxus 2420000 Sep 12 02:05 vmlinux saxus@mars:~$ expr 2420000 - 14953 2405047 saxus@mars:~$ dd if=vmlinux of=test.gz skip=14953 count=2405047 bs=1 2405047+0 records in 2405047+0 records out 2405047 bytes (2.4 MB) copied, 4.30492 s, 559 kB/s saxus@mars:~$ gunzip test.gz gzip: test.gz: decompression OK, trailing garbage ignored saxus@mars:~$ hexdump -C test | head -n 1 00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| saxus@mars:~$ file test test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
kemi (statz) | #2, Főfasz (2970) |
578 | #27ce | ^ | Idézet | Thu, 12 Sep 2013 20:32:54 +02 |
78.131.*.* | *.pool.hdsnet.hu |
DOS-on is. Legalábbis DOSBoxban műxik, de van driver "igazi" DOS-hoz is. Mindjárt kész van a winfosos része is, aztán fel lehet rakni a SourceForge-ra, aztán vigyék, egyék. Amúgy a *nixeken működik az ANSI escape, winfoson meg a WINAPI, ezzel a libbel el lehet fedni a különbséget, és lehet cross-platform konzolos programokat írni. Na meg a WINAPI-ban ocsmány függvénynevek vannak, azért azt is jó elfedni. :P (SetCurrentConsoleCursorPosition() vs gotoxy()) |
TCH (statz) | #1, Főfasz (10443) |
5344 | #27cf | ^ | Idézet | Thu, 12 Sep 2013 23:46:24 +02 |
84.3.*.* | *.catv.pool.telekom.hu |
Épp a német verzióért szól be? O_O (BTW, ti egy IRC csatornán rohadtok, vagy mi? Mert az egyik quote IRC-es.) Mondjuk én azt hittem, hogy az erőszakoskodásért kerültél fel, mert oké, hogy licenc, de állandóan beszólogatni érte, ha valaki mégis licensznek írja, felesleges, pláne, ha kurwára nem az volt a lényege a postnak. Meg amúgyis lehet érteni, hogy mit akart; aki jó ebből a nyelvből az nem csak a szabályoknak megfelelő szöveget érti, hanem az "invalid verziót" is. (vö. Hunvótá'vagy isa, por ës homou vogymuk). Amúgy is, élőben valószínűleg még az is licensznek mondja, aki egyébként licencnek írja, mert azt kiejteni sokkal szarabb. Írásban célszerűbb ügyelni a helyességre, mint szóban (szó elszáll, írás megmarad...vagy fing elszáll, szag megmarad?), de baszakodni egy betűhibáért - pláne, ha az egy idegen szó - konkrétan buziság. Ez a magyar nyelv amúgyis kibaszottul asszimilatív. * BMF-en állítólag kötelezően valami kinektes lóhuggyal kellett baszni a rezet. Kurwa érdekes, hogy ez a követelmény és nem az, hogy a program működjön. Sose tudtam, hogy mit lehet bármilyen épelméjű feladatról hatvanezer oldalt rizsázni. Ilyenkor örülök, hogy otthagytam a kibaszott iskolát, amúgy sem mérnököket képeztek, hanem matematikusokat és eszerint: írókat. Igen, nem az számít, hogy jól csinálod, hanem, hogy hogy csinálod. :/ Az igaz, hogy a mechanizmus ez volt, hogy betölti és átadja a vezérlést, de az IO.SYS-t rántotta be. Az töltötte be az összes többit. Először a két konfigurációs állományt (MSDOS.SYS, CONFIG.SYS), valamint, ha tömörített volt a lemez, akkor a DRVSPACE.BIN lemeztömörítőt. Csak utána rántotta be a COMMAND.COM-ot és adta át neki a vezérlést. És a COMMAND.COM ezután még lefuttatta az AUTOEXEC.BAT-ot. Az initrd.img egy .tar.gz állomány, amiben egy minisys van, az nem a kernel. Bazmeg, felejtsétek már el ezt a kibebaszott "MZ"-t! Az "MZ" CSAK mikrofosos exe-k elején lehet, mert Mark Zbikowski, aki a DOS-os többszegmenses futtatható állományok headerjét tervezte, a saját monogramját használta fel magic-numbernek! Ennyi! Ha bármi más futtatható kezdődik "MZ"-vel mint egy mikrofosos exe, akkor az egy headerless raw binary és csak "véletlen", hogy az az eleje! (Én legalábbis nem hallottam volna róla, hogy más headerrel bíró futtatható állománynak ez lenne a magic-numberje.) Valami nagyon nem stimmel. Az ELF header-t a kernel értelmezi betöltéskor. Ha épp a kernelt töltjük be, akkor mi fogja értelmezni az ELF headert? Átugrás az nem értelmezés, ennyi erővel lehet csupa nulla az egész amit átugrik. Driver? Escape szekvenciákhoz? Zsír. Linket plz. :) winfosban mi nem ocsmány? Bár mondjuk a grafománia még hagyján, kiírták a hülyéknek, hogy értsék. Amiért itt járna nekik a talicska fos ebédre, az a CamelCase, azt nagyon utálom. Case-independent nyelvekben (Pascal, BASIC) még hagyján, de egy case-dependent nyelvben mint a C ez fasság. Pöcsöm tehénkedjen annyiszor a shiftre. * QED. Vándékkönyv v3.23.0: • A login innentől ugyanoda dob, ahonnan loginoltál, nem a default page-re. (Ez csak kemit meg engem érint.) • Ha írsz és közben jön egy - vagy több - hozzászólás, akkor ugye nem küldi el, csak visszadob a postoddal, viszont ez így nem volt teljesen jó, mert az ember ha nem nézte meg a végeredményt, akkor bezárhatta az ablakot és heló. Úgyhogy innentől egy felugró is ugatni fog, hogy új hsz érkezett. |