TCH (statz) | #1, Főfasz (10443) |
4448 | #1746 | ^ | Idézet | Sun, 23 Oct 2011 23:02:41 +02 |
46.107.*.* | *.catv.pool.telekom.hu |
Hát lehet, hogy félreértettem valamit abból amit írtál de néha elég zavarosan fogalmazol. Third party cuccok buguntun is szoktak menni, van amelyik csomagolás nélkül is. Ha arra célzol, hogy a kernel API állandó átvariálása miatt állandó inkompatibilitási fasságok vannak, azt tudom. Újfennt: én nem akarom azt állítani, hogy a xy Linux jobb mint az OSX. Csak azt mondom, hogy amiket felhoztál, azok nem szükségszerűek. Én pl. mindig az LTS-t használom és a szopásaimnak a 100%-a valamilyen bug vagy konfig mizéria miatt volt és nem pedig regressziók és a kernel API átvariálása miatt. Tudom, hogy sokan szopnak ilyesmivel, de arra is van precedens, hogy faszán megy. És nincs hathavonta random szopás, vagy helyette LTS-en kézzel taknyolás. (?m=0&o=4050&c=1 Nekem is flawless frissítés volt a 8.04=>10.04) De figy, aggyá melót az empónál, lesz pénzem veszek én is egy Mac-et, oké? :P Nekem totál mindegy, csak ne winfos legyen. (Meg nem árt, ha van programválaszték.) A kutya nem beszél világuralomról, egyébként az ARM-ot rohadtul nem oda szánták/szánják, ahol brutál teljesítményre van szükség, hanem oda, ahol kevésből kell elérni valamit; embedded cuccok, okostelefon, faszomtudja. A sux86-nak a POWER az igazi alternatívája, de azt meg már nem raknak desktop gépbe, csak űrrakétába, marsjáróba, meg szuperszámítógépbe. Utóljára a PS3-ba került egy POWER (Cell) proci, de csúfosat buktak vele, mert nem tudták kihasználni. kemi, elfelejtettük megnézni, hogy mit csinál a rand(). Mondjuk nem vesztettünk semmit vele, mert most kidumpoltam mit csinál a következő C kód: void main() { rand(); } .file "faszombeled.c" .text .globl main .type main, @function main: pushl %ebp movl %esp, %ebp andl $-16, %esp call rand movl %ebp, %esp popl %ebp ret .size main, .-main .ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3" .section .note.GNU-stack,"",@progbitsés ezzel kitörölhetjük a seggünket. :) Meg kéne nézni valahol, hogy a rand minek a része (kernel, libc) és megnézni a forrást. Ja és közben eszembe jutott, hogy az RC-ben igazából feleslegesen generálunk le egy táblát, amikor simán az is elég, hogy véletlenszámot adunk hozzá vagy veszünk el belőle: Procedure rcrypt(ptr0, ptr1: ^Byte; size, key: Longword; dir: Boolean); var i: Longword; b: Byte; Begin RandSeed := key; For i := 1 To size Do Begin b := Random(255); If (dir) Then Begin ptr1^ := ptr0^ + b; End Else Begin ptr1^ := ptr0^ - b; End; Inc(ptr0); Inc(ptr1); End; End;Teljesen ugyanolyan visszafejthetetlen, mintha egy táblából olvasnám ki, hogy hanyadik helyen van, vagy az ehanyadik helyen mi van. De az is eszembe jutott, hogy még ha le is akarjuk generálni a táblákat, akkor nem kell végiggenerálni a táblát, csak a) addig amíg megegyezik a kapott véletlenszám a beolvasott értékkel b) 0-tól a beolvasott szám értékéig lévén ugye minden byte-ra egyedi jutna, azaz a táblát a következő körben dobhatjuk el úgyis. var tbl: Array[0..255] of Byte; Function NotInTBL(data, last: Byte): Boolean; var i: Integer; Begin For i := 0 To last Do Begin If (tbl[i] = data) Then Begin Result := False; Exit; End; End; Result := True; End; Procedure rcrypt(ptr0, ptr1: ^Byte; size, key: Longword; dir: Boolean); var i: Longword; b, c, j: Byte; Begin RandSeed := key; For i := 1 To size Do Begin b := ptr0^; If (dir) Then Begin j := 0; Repeat c := Random(255); If (NotInTBL(c, j)) Then Begin tbl[j] := c; Inc(j); End; Until (c = b); c := j; End Else Begin j := 0; Repeat c := Random(255); If (NotInTBL(c, j)) Then Begin tbl[j] := c; Inc(j); End; Until (j = b); End; ptr1^ := c; Inc(ptr0); Inc(ptr1); End; End; |