• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    KEDRIGERN
    KEDRIGERN --- ---
    SHIGORBIRDMAN: C++11 jde, akorát nevím zda existují nějaké kvalitní tutoriály. Jako sám od sebe bych to nedal, ale advance C++ na MFF mi otevřelo oči :).

    A samozřejmě trochu boj je volba knihoven.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    offtopic: po par letech prevazne se c# jsem sahnul na c++... au, au.... auuuuuu
    MINUSQ
    MINUSQ --- ---
    K0TEL: eaz fuscator do verze 3.3
    DARKREIDER
    DARKREIDER --- ---
    Este podotknem, ze to bolo uz daaaavno, tak mozno sa veci zmenili
    DARKREIDER
    DARKREIDER --- ---
    na hovno uplne nie, je to free verzia toho brutalne draheho, ktory mi nejaky Ind ponukal po telefone za par tisic dolarov, ked som zverejnil pri registracii telefon :). Je dost osekana, vie len zakladne nahradenia premennych a tusim este nejaku(e) drobnost(i), na poriadne zneprijemnenie refaktoringu to nie je, ale urcite to zamlzi znatelne, vzdy lepsie ako plain kod. Len bacha na resx, tie mi to pravidelne rozosralo, takze ich vyhodit zo zoznamu obfuskovania.
    ANDY_WARHOL
    ANDY_WARHOL --- ---
    ten je imho dost nahovno
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    Neni nejakej pribalenej primo k Visual Studiu?
    K0TEL
    K0TEL --- ---
    zdar, nějakej typ na freeware obfuscator (.net)?
    LOOCAS
    LOOCAS --- ---
    KEDRIGERN: Díky, supr! To mě předtim nenapadlo. :) Zkusim.
    KEDRIGERN
    KEDRIGERN --- ---
    Běžně se zachytává výjimka (v objektových jazycích je takové ukončení jednou za čas ok - často by to byl výkonnostní problém). Ale samozřejmě lze snadno použít čítač - délku streamu máš, tak si počítej, kolik si přečetl a pak to ukonči.

    Nicméně tu výjimku tam stejně budeš mít a jestli to nejsou stovky streamů, ale ukočení max. pár desítek streamů, tak bych šel pohodlně přes výjimku.
    LOOCAS
    LOOCAS --- ---
    Leda while "nevyhodí vyjímku", to by asi šlo.
    LOOCAS
    LOOCAS --- ---
    SHIGORBIRDMAN: Znám. :) Ale while "co"? :) Jak řikám, v Pythonu neni objekt EOF.
    KEDRIGERN
    KEDRIGERN --- ---
    KEDRIGERN: s/teytu/textu (samozřejmě)
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    LOOCAS: znas cyklus while?
    KEDRIGERN
    KEDRIGERN --- ---
    LOOCAS: Zcela normálně, jako matchování teytu. Čteš a zkoumáš, co to zrovna je a pak už to jen dočteš. V Céčku to asi ani jinak dělat nemůžeš.

    Prostě když není objekt, tak ti nic moc nepomůže.
    LOOCAS
    LOOCAS --- ---
    SHIGORBIRDMAN: No, já si myslim, že ne. Proto se tu ptám, jak. :)

    Jak postavíš loop na proměnnym počtu iterací?
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    LOOCAS: a to je takovy problem nacist si to vsechno do toho pole bajtu (jak uz to delas) a brat to z nej? to "getdata" podle toho co pises vraci pole bajtu, to je takovy problem pouzit ji misto readbytes? odnekud musis vedet kolik v tom streamu je dat, to je takovy problem si to hlidat?
    LOOCAS
    LOOCAS --- ---
    SHIGORBIRDMAN: No, problém je v tom, že ten stream je speciální cStream objekt knihovny OpenMCDF. Nemá metodu ReadBytes, má pouze metodu GetData(od, do).
    Druhá věc je ten loop while. Já nezjistim žádný EOF. v IronPythonu ani žádnej takovej objekt neni. Afaik.
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    var id = stream.ReadBytes(16);
    var lenbytes = stream.ReadBytes(4);
    long len = lenbytes[0]+lenbytes[1]*256+lenbytes[2]*256*256+lenbytes[3]*256*256*256; //teda za predpokladu, ze je to ulozene jako maly endian
    var strbytes = stream.ReadBytes(len);

    a tak dal do, to cele do while cyklu dokud neni pozice ve streamu na konci. Neni mi moc jasne, v cem je konkretne problem.
    LOOCAS
    LOOCAS --- ---
    SHIGORBIRDMAN: No, na to se právě ptám. :D Jak napsat cyklus, kterej bude procházet pole po různě dlouhejch krocích?

    16 Bytů: ID (nepotřebuju)
    4 Byty: množství dalších Bytů, ve kterejch je uloženej string (potřebuju!)
    XY Bytů (dýlka je variabilní, uložená v předchozích Bytech, podle dýlky stringu), kde je string, kterej potřebuju upravit = změnit a tim i změnit jeho dýlku, což pak musim následně zapsat do předchozích 4 Bytů
    4Byty: množství dalších Bytů, ve kterejch je uloženej string (ten nepotřebuju)
    XY Bytů, množství určeno v předchozích čtyřech Bytech

    a tohle pořád dokola, dokud jsou v poli Byty.

    Jednoduše použít for x = 0 to len(Array[Byte]) použít nemůžu, jelikož by to chodilo po jednom Bytu.
    SAJAGI
    SAJAGI --- ---
    LOOCAS: Pokud tě dobře chápu, tak bych si vytvořil vlastní implementaci stream readeru / writeru, která bude mít ReadString / WriteString, a která bude sama načítat, resp. zapisovat ty tvoje DYLKY. Takže v principu pak bys měl něco jako
    while ((string token = inputStream.ReadString()) != null) {
      var modToken = token.ToUpper(); // do something with the token
      outputStream.WriteString(modToken);
    }


    Popřípadě tedy, pokud to nechceš konvertovat do stringu, tak si to ukládej do pole bajtů.
    Kliknutím sem můžete změnit nastavení reklam