Oznámení

Sbalit
Aktuálně žádná oznámení.

ATEconvert

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    #16
    O: ATEconvert

    Tak chvíly včera a chvíly dnes jsem si konečně našel čas a pokusil ještě časově snížit poslední logiku zpracování převodu znakové sady. Vlastně jsem se jen utvrdil, že můj původní návrh nové logiky je napsán správně a jen si rozšířil znalosti a utvrdil se v tom, co jak psát správně (nebo lépe jak jsem doposud psal). S tímhle časem se pohybuji kolem 32 vteřiny u zpracování původního souboru (viz historie vlákna) v reřimu WinUAE s možností FASTEST POSSIBLE.

    Zde je způsob zápisu současného časového vítěze:

    Code:
    a = time.time()[color=#0000FF] do proměnné "a" si uložím současný počet vteřin od roku 1970 :smile: [/color]
    souborVstup = open("drac.txt", "r")[color=#0000FF] otevřu soubor darc.txt na čtení[/color]
    souborVystup = open("pokusik.txt", "w")[color=#0000FF] otevřu soubor pokusik.txt na zápis[/color]
    
    def pokus(radek):[color=#0000FF] podprogram s názvem pokus, který vyvolá příkaz "pokus(radek)", který přebírá hodnotu "řádek" = text 1 řádku ze souboru drac.txt[/color]
        c = ""[color=#0000FF] založím proměnnou "c" s hodnotou "text"[/color]
        for b in enumerate(radek):[color=#0000FF] procházím textem v řádku a do "b" načtu pozici zpracovávaného znaku a hodnotu znaku[/color]
            if ord(b[1]) > 127: c = radek[:b[0]] + iso[ord(b[1])-128][color=#0000FF] pokud není písmeno hodnoty ASCII, ulož do "c" vše po zpracovávaný znak a převod znaku, který je mimo ASCII a který máme zapsaný v naší tabulce v jedné ze 128 pozic (prvních 128 pozic je jen ASCII) a proto sniž jeho hodnotu o 128[/color]
        if len(c) > 0: [color=#0000FF] pokud byl v textu alespoň 1 znak mimo hodnotu ASCII, v hodnotě "c" je zapsám alespoň minimálně tenhle  znak (c !=""), pokračuj[/color]
            if len(c) < len(radek): c = c + radek[len(c):] [color=#0000FF] zde zpracovávam konec textu z řádku mimo hodnotu ASCII, pokud takováhle situace nastala[/color]
            souborVystup.write(c) [color=#0000FF] zapisuji převeden řádek do souboru pokusik.txt[/color]
        else: souborVystup.write(radek)[color=#0000FF] pokud je text jen z ASCII znaků (c = "") zapíš do souboru pokusik.txt původní řádek ze souboru drac.txt[/color]
    
    for radek in souborVstup:[color=#0000FF] postupně načítám řádky ze souboru drac.txt do proměnné "radek"[/color]
        pokus(radek)[color=#0000FF] skok do podprogramu "pokus" = GOTO POKUS :smile:, "přenes" do podprogramu i proměnnou "radek"[/color]
    
    souborVstup.close()[color=#0000FF] uzavřu soubor drac.txt[/color]
    souborVystup.close()[color=#0000FF] uzavřu soubor pokusik.txt[/color]
    print time.time() - a[color=#0000FF] odečtu současný stav vteřin od roku 1970 od stavu vteřin, které jsou uložené v proměnné "a" :smile: a vitisknu na obrazovku[/color]
    Ještě bych uvedl, že nepoužívam 2 způsoby urychlení. Jednou možností by bylo před 128 znaků v tabulce převodu dát prázdnych 128 znaků, abych nemusel snižovat hodnotu převáděného znaku o 128 pozic, čím bych urychlil průbeh zápisu v režimu FASTEST POSSIBLE o cca 3 vteřiny. Přitom bych ale zasíral zbytečně pamět o zbytečných 128 pozic, které si musí program pamatovat. Druhou možností zrychlení je vytvořit tabulku místo zápisu pomocí "ntice" = to je způsob zápisu proměnné, který je nejméně náročný na pamět a zároveň v takovémhle způsobu zápisu pracuje samotný program nejrychleji (ale né vždy nejrychleji) použít zápis pomocí tzv. "slovníku", který je ale neadekvátne náročný na pamět. Zrychlení bylo o cca 3-4 vteřiny v režimu FASTEST POSSIBLE a na zápis mi přestala stačit RAM 4 MB kterou ve WinUAE používám )

    Přes definici funkce "def pokus(radek)" "ženu" samotný program z důvodu malého urychlení celkového zpracování. S FASTEST POSSIBLE o cca 3-4 vteřiny rychlejší zpracování, než bych použil konstrukci programu bez samotné definice.

    V současné době jsem zase v koncích a nevím jak to urychlit no a to že mám přejít na "céčko" zde již bylo )

    Ještě není ten správný čas na tenhle přechod, ješte mne čeká pár naplánovaných úkolů
    Amiga - PMD 85

    Komentovat


      #17
      O: ATEconvert

      Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
      V současné době jsem zase v koncích a nevím jak to urychlit no a to že mám přejít na "céčko" zde již bylo )
      Ještě není ten správný čas na tenhle přechod, ješte mne čeká pár naplánovaných úkolů
      Najlepsi urychlovac na Amige je program v assemblery..
      Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
      Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

      Komentovat


        #18
        O: ATEconvert

        Autorem citovaného textu je DJM Přejít na původní příspěvek
        Najlepsi urychlovac na Amige je program v assemblery..
        O tom vůbec nepochybuji. Když jsem s Pythonem začínal, vůbec mne nenapadlo, že je i port na Amigu. Tohle je pro mne ideál. Slučuji 2 věci co mám rád - Amigu a Python. Proto mne i lákalo udělat třeba emulaci Basicu-G počítače PMD 85 v Pythonu bežící třeba na Amize. Protože i PMD 85 mám rád. V současné době se na tenhle projekt koukám s odstupem. To ale neznamená, že jsem všechny projekty napsané v AmigaPythonu zavrhl. V možnosti převodu kódování jsem se dostal ze 105 vteřin na 32 vteřin. Teď jsem si ten stejný program pustil pod Pythonem 2.7.2 na PC. Výsledek je 0.6 vteřiny (to jsem zkusil poprvé). A to je to o čem se bavím. Amiga je dobrá škola.
        Amiga - PMD 85

        Komentovat


          #19
          O: ATEconvert

          Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
          print time.time() - a odečtu současný stav vteřin od roku 1970 od stavu vteřin, které jsou uložené v proměnné "a" a vitisknu na obrazovku
          a nebude ta delka prevodu zavinena prave timhle? pocitat pocet vterin od roku 1970, to by rozsekalo i me

          Komentovat


            #20
            O: ATEconvert

            Tímto se chci všem, co chtěli používat tuhle verzi ATEconvert omlouvám, ale po tom co jsem zjistil, že můžu mít cca 3,5 násobek původní rychlosti převodu za použití jiné logiky převodu = nejlépe přepsat celý program a vložit do něj zkušenosti, které jsem nabyl psaním téhle verze je má motivace v jakémkoliv pokračování psaní téhle verze na bode mrazu a už sám se sebou nehnu. Jsem tak trochu na rozcestí a snažím se udělat rozumný výběr z toho co mám dál v plánu, co se chci začít učit a tak podobně (i tak je toho moc) a asi to budu muset začít nějak rozumne rozdělovat. Uvidím, jak to vše bude. Díky za pochopení!

            Tohle vlákno prosím nezavírat, plánuji ho použít na tvorbu nové verze. Pokud by z tvorby nové verze sešlo dám vědět
            Amiga - PMD 85

            Komentovat


              #21
              O: ATEconvert

              Já si myslím, že svůj účel splnil beze zbytku. Zdokonalení v programování, stálé a stálé vylepšenování. To všechno k tomu patří. A co víš, třeba se od tebe jednou na Amize objeví tolik potřebný kancelářský balík
              Pegasos II (1266MHz), 2048MB RAM, Radeon 9250 (256MB), HDD 200GB, USB 2.0, ZIP250 USB, USB floppy, SB Live!, HP LaserJet 1100, AmigaOS 4.1 Final Edition

              Komentovat


                #22
                O: ATEconvert

                Sám jsi tady vypsal co je třeba, hlavně to nevzdávej a pouč se z chyb, ty děláme všichni , a taky nespěchat, tím se taky dost pokazí.

                Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
                ...... nejlépe přepsat celý program a vložit do něj zkušenosti, které jsem nabyl psaním téhle verze ......
                Amiga 600, Fúria EC020 OS 3.2.2.1, eX601, Indivision ECS,
                iBOOK G4, 1.2GHz, MOS3.18, Asus UX433FA, MX-23.4 Libretto

                Komentovat


                  #23
                  O: ATEconvert

                  Autorem citovaného textu je Prober Přejít na původní příspěvek
                  Já si myslím, že svůj účel splnil beze zbytku. Zdokonalení v programování, stálé a stálé vylepšenování. To všechno k tomu patří. A co víš, třeba se od tebe jednou na Amize objeví tolik potřebný kancelářský balík
                  No dělání uživatelského SW mne moc nebere, ale ty převodníky kódování, co jsem viděl mi moc nevyhovovali, tak jsem na to začal jít po svém Tomuhle všemu ale předcházel jeden požadavek od uživatele Mistic Joe. Tyhle 2 věci mne nakopli začít dělat na ATEconvert.
                  Amiga - PMD 85

                  Komentovat


                    #24
                    O: ATEconvert

                    Ber to s rezervou, taky hned nečekám Lisiak Office 4 Každopádně máš můj obdiv, já se do programování pouštěl už několikrát a hlavu na to prostě nemám.
                    Pegasos II (1266MHz), 2048MB RAM, Radeon 9250 (256MB), HDD 200GB, USB 2.0, ZIP250 USB, USB floppy, SB Live!, HP LaserJet 1100, AmigaOS 4.1 Final Edition

                    Komentovat


                      #25
                      O: ATEconvert

                      Ale LišiakOffice zní fakt dobře , ATEconvertem to začíná
                      Amiga 600, Fúria EC020 OS 3.2.2.1, eX601, Indivision ECS,
                      iBOOK G4, 1.2GHz, MOS3.18, Asus UX433FA, MX-23.4 Libretto

                      Komentovat


                        #26
                        O: ATEconvert

                        Nová verze ATEconvertu...

                        Tak jo, něco málo ze včeřejška a dnes jsem si našel čas a chuť se pomalu vracet k mému Ateconvert. Ještě nejsem úplně odpočatej od Vánoc a můj poloviční stav mysli je ideální na vymýšlení jednoduchší logiky. Uplný počátek je vidět na videu.

                        Čeho chci dosáhnout oproti původcní nedokončené verzi?
                        Přes 3 násobně rychleší převod. Každý stav převodu bude mít svojí tabulku Tedy tabulek bude opravdu hodně oproti původní verzi. Podle vstupého kódování a zvoleného výstupného kódování se pouze převede hodnota písmene na číslo a s hodnotou čísla se pude hned na tabulku. Teď si možná někdo řekne, že to je přeci normální převod, ale neni tomu tak! Původní verze pracovala s mnohem mín tabulkami jako verze co teď plánuji, měl jsem to namyšlené dobře, ale takový převod je rychlý tak u PC, nebo třeba kdyby se jednalo o program na Amize napsaný v jazyku C. V budoucnu možná Ateconvert napíšu v C a tím pošlu rychlost převodu z původní verze Ateconvert, pokud by byla napsaná v C k šípku.

                        Zatím se bude jednat kvůli jednoduchosti o čistý převodník, nebude to umět formátovat text, tak jak to bylo zamýšleno v původní verzi.

                        Cílem převodníku je možnost si na Amize převést kódování UTF-8 v rámci nejznamějších českých kódování. Samozřejmě budou podporované i klasické české kódování.

                        Hodně jsem o Ateconvert přemýšlel. Původně jsem si chtěl udělat verzi v Pythonu jen pro sebe, aby jsem pak časem se pokusil to napsat v C a verzi v C pak nabídnout jako zpoplatněnou, ale ta Pythoní verze by se i tak časem provalila a nechtěl by jsem se dostat do situace, kdyby jsem říkal né, to je mé pracovní, pokud by si ten program chtěl někdo zkusit. Verzi v Pythonu budu postupně dělat pár měsíců, natož verzi v C. Druhá věc je že Ateconvert je a bude můj program a v Pythonu si to člověk přečte jako noviny. Je mi jasné, že to nebude světoborný program, ale mám nárok si chránit to své. Pokud si Pythoní verzi Ateconvert nikdo nekoupí, bude dosažen můj původní záměr ji mít jen pro sebe .

                        Předpokládána pamětová náročnost 4 MB
                        OS 3.x

                        Mé podmínky (to jsem ale drzej):
                        Pythoní verze bude jen pro ČR a SR.
                        Budu mít přehled o tom, kdo ji bude mít.
                        Předpokládana cena 29 KČ
                        Pokud bude verze v C a bude ten, co bude mít verzi v Pythonu chtít tuhle verzi, verzi v Pythonu na svém počítači smaže, verzi v C bude mít výhodněji.

                        Jednoduchý příklad poměru, jak to asi bude, cena se však může lišit.
                        Verze v C - 99 KČ, pro majitele Pythoní verze bude ta v C stát 29 KČ, takže ve výsledku dá za verzi v C pak uživatel 58 KČ.

                        Čísla nejsou konečná, a nemyslím si, že jsou ta co uvádím přemrštěná. Pitomé mé dýško, když jsem v restauraci hodně spokojen je více než 30 KČ.

                        Programování zdar!

                        Naposledy upravil Lisiak; 25.12.2014, 21:19:12.
                        Amiga - PMD 85

                        Komentovat


                          #27
                          O: ATEconvert

                          Myšlenka dobrá, nápad hloupej. Co si budeme namlouvat ATEconvert je hodně specifická věc, kterou tady využije hodně málo lidí (MisticJOE a možná Holyna). Minimální požadavky OS 3.x a 4MB RAM a předpokládám nutnost si do systému nainstalovat nějaký ten AmigaPython pro spuštění snad jediného programu, v který v něm funguje (pokud tam tedy není nějaká možnost kompilace skriptu jako samo spustitelného souboru). Mnohem smysluplnější by byla ta verze v C, spustitelná bez větších problémů v CLI okně. No a pokud by postupem času přibylo i GUI, bylo by to jedině super.

                          Já mám spíše obavy, aby tě to zpoplatnění spíše neotrávilo od další práce a učení se. A nejde tady vůbec o cenu, spíš bych se nebál si říct o víc než jen nějakých 29,- (vždyť to není ani minimální hodinová mzda, natož pro programátora). Spíš by bylo možná v této situaci rozumnější vytvořit nějaké hlasování a zeptat se lidí na zájem.

                          Každopádně tohle neber nijak špatně, tvoje rozhodnutí se mi líbí.
                          Pegasos II (1266MHz), 2048MB RAM, Radeon 9250 (256MB), HDD 200GB, USB 2.0, ZIP250 USB, USB floppy, SB Live!, HP LaserJet 1100, AmigaOS 4.1 Final Edition

                          Komentovat


                            #28
                            O: ATEconvert

                            Díky za reakci, jo, ATEconvert je pracovní věc. Jednoduše, když budes mít v Amize textový soubor v kódování UTF-8 a v jiném, nebudeš to muset hnát přes net a webový prohlížeč, jak jsem slyšel, aby to člověk přečetl. Když se pletu, ať mne někdo opraví, ale si to převedeš přímo v Amize. Tohle dělám hlavně pro svoji radost, že to bude fungovat. Již Princ Jasoň byl samospustitelnej, to bude samozřejmě i ATEconvert. Žádná instalace. Python bude součastí ATEconvertu. Vleze to vše na 1 DD disketu. Ze dnešního dne mám radost, nevím, jak to bude dál, ale zatím to dělám vše tak 2 krát jednodušeji, než původní nedokončenou verzi - mám na mysli celkovou logiku programu.

                            Vše co si zde napsal o tom, že by bylo dobré je možné, ale nejde to u mne dělat skokem. Pokud budu programovat dál, bude C, bude GUI.

                            Akorát jsem si spočetl, že v extrému budu potřebovat 364 tabulek. Možná by jsem zvládl udělat program, který by použil již mé hotové tabulky, aby mi to rozhodil správně do těch 364 tabulek, další možností je udělat si pár nových tabulek pro program, který mi to správně rozhodí. Nejdříve si ale udělám 2 tabulky ručně a odtestuji si logiku převodu, aby jsem to pak dodatečně již neměnil.

                            Díky za podporu!
                            Amiga - PMD 85

                            Komentovat


                              #29
                              O: ATEconvert

                              OK, tabulek bude cca 14, dnes jsem raději ještě testoval, co použiju na převod, utvrdil jsem se v konstrukci Ntice = ("A","B","C"), ("D","E","F"). Python je pomalý to je jasný, indexoval jsem 1000 krát v takovéhle konstrukci. Nejdříve jsem to zkusil pod Win a pod Pythoním pracovním přostředím s tím, že jsem veličiny i nechal zobrazovat PRINTem. Tam byl výsledek cca 45 vteřin. Pod emulací WinUAE to samé udělal AmigaPython bez zpomalení emulace za cca 15 vteřín!!! Tak to je fakt síla. Pod Win v emulaci OS3.1 na AmigaPythoně je bez zpomalení emulace indexace 3 krát rychlejší, než u prostředím Pythonu pod Win.

                              Kdyby se měl takhle brát vše, tak by se nám vlastně vyplatilo pouštět Win na PC pod Amigistickou emulací.

                              Jen pro zajímavost A1200 to dá za 5 minut.
                              Naposledy upravil Lisiak; 26.12.2014, 11:05:43.
                              Amiga - PMD 85

                              Komentovat


                                #30
                                O: ATEconvert

                                Další náhled do postupu prací. Kompletně jsem přepsat autodetekci kódování. Ta by teď měla být rychlejší než v nedokončené původní verzi Ateconvertu (zatím vůbec netestováno, ale pevně v to veřím, je to teď napsáno dle mne podstatně lépe, tak uvidím). Detekce kódování je provedena jen u znakových sad s nedefinovanými znaky. Detekce zatím funguje pouze jen v 1. řádku TXT souboru, ta se ale provede automaticky při každém načtení souboru. V 1. řádku TXT souboru dokážeme uřčit příznak BOM, který v UTF-8 kódování je zbytečný, tedy neplní svoji konkrétní funkci a Microsoft ho ve Windows používá i na rozpoznání toho, že jde o UTF-8 (neplést si to s UTFG ), co je jen dobře. Pak se určí sekvence zalamování řádků a provede se vyloučení možných kódování. V ukázce je vyloučeno kódování ASCII.

                                Program spuštěn na výkonu A1200.

                                https://&#91;url&#93;https://www.youtube.com...&#91;/url&#93;
                                Naposledy upravil Lisiak; 04.02.2015, 20:45:01.
                                Amiga - PMD 85

                                Komentovat

                                Zpracovávám...
                                X