Oznámení

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

ATEconvert

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

    ATEconvert

    Nová verze ATEconvertu od příspěvku č.26!

    Na RESETkání v květnu jsem poprvé prezentoval můj nedokončený program ATEconvert (po staru ATEkonvert). Měl jsem za to, že ho dokončím tak za 2 měsíce, ale mýlil jsem se. Pořád na něm postupně pracuji. Od té doby, co jsem ho poprvé prezentoval bylo na něm uděláno hodně práce (opravy, změny).

    Proč jsem program začal dělat?

    - Dokázat si, že to zvládnu
    - Získat další zkušenosti s programováním v Pythoně

    K čemu to slouží?

    Převod kódování znakových sad
    - ascii, Amiga-E2, cp1250, cp852, iso8859-2 (Latin2), Kamenických, Koi8-čs
    - utf-8, utf-8-sig (příznak BOM) v rozsahu kódování uvedených o řádek výše

    Pracuje to jěšte s nasledovnými sekvencemi přechodu na nový řádek: CR+LF (PC), LF (Amiga), CR, nebo bez sekvence

    Co to ještě umí?
    - Najít nejdelší slovo v textu
    - zúžit text (opak ne - to je část programu, která předcházela vzniku dohodle... . Rozšířit text by se dal teoreticky zrušením sekvence přechodu na nový řádek = celý text v jednom řádku a nasledovným zůžením na potřebnou sířku, čim přijdeme o všechny odstavce = text bude všude se stejnou šířkou)

    Nevýhody ATEconvertu?
    Programováno v Pythoně = pomalost programu, velké nároky na pamět

    Předpokladaná minimální konfigurace:

    - Amiga 1200 - 4 MB RAM
    Doporučená konfigurace:
    - Amiga 1200 + turbokarta (nezkoušeno na realním HW...)

    Výhody?
    Možnost převést UTF-8 bez použití PC (pokud tedy není jiný SW co to umí - nezkoumal jsem detailně)

    Zde je výpis pár věcí co jsem naprogramoval posledně:

    Zavedl jsem možnost přeskočení detekce kódování. Při volbě pro vyloučení detekce se bude text do volby pro výběr kódování záměrně načítat ze souboru celý a úplně od začátku (u detekce kódování se najde vždy 1. slovo s diakritikou a od tohodle slova se načte text). Zkoumal jsem, co by se mi hodil za znak na takovéhle označení pro přeskočení detekce. Použil jsem Workbench a Dopus a snažil se příjít na nějaký znak, co se nedá použít na konci jména souboru a zároveň, aby byl na klávesnici relativně snadno dostupný. Výhrálo to lomítko. Po uvedení lomítka na konci názvu souboru se provede detekce jen přitomnosti samotné signatury, která nám říká, že se jedná o kódování UTF-8. Tahle signatura je jen kombinace 3 znaků na úplném začátku souboru, co je časově minimálně náročné a pokud je soubor v kódování UTF-8 se signaturou (signatura u UTF-8 není povinná ...bohužel), vyloučím tím všechny kódování mimo UTF-8. Další co jsem zavedl je nepřevádení vyloučeného kódování v samotném výběru vstupného kódování. Urychlí se tím samotný celkový převod při načtení nového řádku, který se zobrazí do tabulky pro výběr vstupného kódování. No a poslední, co jsem udělal je v rámci možností zavedení ESCAPE SEKVENCÍ na pár míst v samotném programu. Jedná se hlavně o zobrazení průběhu převodu kódování do menu pro výběr vstupného kódování, nebo v části pro hledání nejdelšího slova v souboru (při souborech v rozsahu textů v řádech nekolik 1000 - stačí i 1000 tuhle volbu nedoporučuji u Amig bez turbokarty ) Kafe, čaj pivo? ) ) no a ještě na pár míst kde to šlo bez toho abych to celé musel přepsat ) , čím jsem u průbehu načítání převodu kódování zamezil nechtěnému problikávání obrazu, které jsem doteď řešil celkovým smazáním obrazovky a né jen malé části, kterou potřebuji (jó o téhle ASCAPE SEKVENCI se bavím - vím, že i samotné použití barvy v programu dělám pomocí ASCAPE SEKVENCE ).

    Teď jsem s částí programu až do části pro samotný převod kódování v rámci první verze ATEconvertu opravdu spokojen a už pudu na závěrečnou část programu tak uvidím, jak to pude

    A ještě pár fotek...

    Klikni pro plné zobrazení obrázku

Jméno: ate6.jpg
Počet zobrazení: 1
Velikost: 41,1 KB
ID: 112461Klikni pro plné zobrazení obrázku

Jméno: ate7.jpg
Počet zobrazení: 1
Velikost: 68,7 KB
ID: 112462Klikni pro plné zobrazení obrázku

Jméno: ate8.jpg
Počet zobrazení: 1
Velikost: 77,1 KB
ID: 112463Klikni pro plné zobrazení obrázku

Jméno: ate9.jpg
Počet zobrazení: 1
Velikost: 40,7 KB
ID: 112464Klikni pro plné zobrazení obrázku

Jméno: ate10.jpg
Počet zobrazení: 1
Velikost: 76,6 KB
ID: 112465Klikni pro plné zobrazení obrázku

Jméno: ate11.jpg
Počet zobrazení: 1
Velikost: 75,4 KB
ID: 112466
    Naposledy upravil Lisiak; 25.12.2014, 21:21:22.
    Amiga - PMD 85

    #2
    O: ATEconvert

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    Na RESETkání ...


    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    Předpokladaná minimální konfigurace:

    - Amiga 1200 - 4 MB RAM
    Doporučená konfigurace:
    - Amiga 1200 + turbokarta (nezkoušeno na realním HW...)
    Sousede, stačí se ozvat a zastavit se u mě, HW tu mám, můžeme zkoušet ;o)
    http://jack.untergrund.net [AMIGA 600 AMIGA 1200 AMIGA 1200T AMIGA 2000 AMIGA 4000 AMIGA 4000T CD32 Mac mini G4]

    Komentovat


      #3
      O: ATEconvert

      Jen tiše závidím
      Amiga 600, Fúria EC020 OS 3.2.2.1, eX601, Indivision ECS, IDE Laylines, PBook 1.67GHz, MOS 3.18, iBOOK G4, 1.2GHz, MOS3.18, Asus UX433FA, MX-23.4 Libretto

      Komentovat


        #4
        O: ATEconvert

        Autorem citovaného textu je jack-3d Přejít na původní příspěvek
        Sousede, stačí se ozvat a zastavit se u mě, HW tu mám, můžeme zkoušet ;o)
        Díky, jsem rád, že pokud něco budu potřebovat, vím že se na Tebe můžu obrátit
        Amiga - PMD 85

        Komentovat


          #5
          O: ATEconvert

          Autorem citovaného textu je Dedy Přejít na původní příspěvek
          Jen tiše závidím
          Kolik máš rovesníků, kteří šlapou třeba na MorphOSu? Jsi jedinečný!
          Amiga - PMD 85

          Komentovat


            #6
            O: ATEconvert

            Jen ze screenshotů dvě chybky: Vstupný soubor a Výtupní soubor. A vzhledem k tomu, že u toho prvního vidím, že se nejedná o překlep, tak správně český je vstupní soubor, ne vstupný.
            Naposledy upravil Predseda; 08.09.2013, 22:27:12.
            "Zítra začína PředPrasepárty." (DaMi, 5. duben 2024)

            Komentovat


              #7
              O: ATEconvert

              a co pro nas starsi na to nalepit nejake graficke rozhrani, tlacitka, posuvniky a tak?

              Komentovat


                #8
                O: ATEconvert

                Autorem citovaného textu je Scavenger Přejít na původní příspěvek
                a co pro nas starsi na to nalepit nejake graficke rozhrani, tlacitka, posuvniky a tak?
                S grafickým rozhraním zatím ještě nedělám Podpora ARexxu, který ma GUI je dle všeho minimální (čti - pro mne lamera žádná). Přes AmigaDOS bych se mohl dostat k výběru souboru pomocí posuvníků, ale kombinace mého jednoduchýho grafickýho rozhraní s GUI AmigaDOSu se mi nezamlouvá Představ si že na Tebe vyskočí nějaké wokno úplně jiného vzhledu, než je vzhled samotného programu..
                Amiga - PMD 85

                Komentovat


                  #9
                  O: ATEconvert

                  No dnes jsem dostal pár "facek" a jsem před dilemou, jestli pokračovat dál.

                  Mám napsanou první logiku pro převod kódování mimo ASCII a mimo UTF-8. Testoval jsem to na cca 2150 rádkovém textu. Časi jsou šílené. Ve WinUAE při možnosti FASTEST POSSIBLE jsem převedl soubor za 1 min a 45 vteřin. Když jsem FASTEST POSSIBLE vypl, tak to bylo cca 23 minut ). Jenže se současnou logikou samotných převodových tabulek s tím časem již nehnu. Dělám to jednoduše. Mám k dispozici všechna kódování zalokalozovaná vůči Latin2. Stručně řečeno samotným písmenem a jeho hodnotou pokud znám jeho kódování, které je ale při převodu již dané skočím přímo na jeho místo v již vybrané tabulce, na kterém již "čeká" znak v kódovaní Latin2 (a latin2 již rozumíme). To je jedna část. Potřebujeme to ale ještě převést na kódování, které jsme si vybrali. Na to zase použiju vopřed zvolenou tabulku, kterou mám zalokalizovanou vůči Latin2. Již vím jaký znak hledám, takže si ho dám najít v mé tabulce. Ten znak "čeká" na míste, které pozicí sedí pro stejný znak v jiném kódování. Pokud již tedy mám pozici znaku v kódovaní pro výstupní soubor, tak
                  uložím znak v kódování Latin2 právě s touhle hodnotou. A převod písmene je hotov )

                  Je jasný, že se to dá napsat lépe, ale to bych musel změnit převodové tabulky a to teď dělat nebudu. Jen tyhle převodové tabulky jsem dělal průběžně 3 mesíce. Nemám teď čas na to tohle předělávat Pokud někdy napíšu novou verzzï ATEconvertu, je jasný, že nebudu výcházet ze současné logiky převodu - takže i tabulky budou jinak dělané. Bude jich třeba více. Teď jich mám 14, na novou verzi jich bude třeba nějakých 20? Byl by to převod napřímo = 1 převod a né 2 převody na jedno písmeno a taky by se dané písmeno nehledalo. Tohle by mělo "podstatně" urychlit převod. Můj hrubý odhad je 1/2 současného času, nebo i méně (opravdu hrubý odhad). Pokud by si někdo myslel, že převod ženu přes Neptun a zpět zde je celý kód

                  Code:
                  for radek in souborVstup: [color=#0000FF]#načtu řádek v souboru[/color]
                      for b in radek:  [color=#0000FF]#načtu písmeno z řádku[/color]
                           if ord(b) < 128: souborVystup.write(b); continue  [color=#0000FF]#pokud je hodnota písmena ASCII zapíš přímo a vrať se (načti další písmeno)[/color]
                           b = a[1][ord(b) - 128]  [color=#0000FF]#a[1] = tabulka vstupného kódování, ve které se podívám, co je třeba na její 50. pozici za písmeno v kódování Latin2 a zapíšeme do hodnoty "b"[/color]
                           if b in a[2]: souborVystup.write(chr(a[2].index(b) + 128))  [color=#0000FF]#pokud je "b" v tabulce výstupném kódování a[2], najdi jeho pozici (index), převeď pozici na písmeno v Latin2 ( chr() ) a zpíš do souboru[/color]
                           else: souborVystup.write(" ")  [color=#0000FF]#pokud b neni obsaženo v tabulce pro výstupné kódování, zapíš mezeru
                  #s číslama 128 snižuji, nebo zvyšuji hodnotu pozice daného písmene, stačí mi pracovat jen s polovinou tabulky (128 znaků z 256)[/color]
                  Proč to zde vše píšu? Časi jsou dle mne tak extrémní, že dle reakcí se rozhodnu, jestli to vůbec dokončím.

                  Je pravdou, že:
                  -parametry toho co jsem převádel:
                  počet znaků ascii = 712222 (slovy přes 712 tisíc )
                  počet znaků mimo ascii = 83957
                  počet nepřevedených znaků = 2781
                  velikost txt souboru = 780 KB

                  Dělám výjímku, pouštím do oběhu ALFA verzi ATEconvertu. Pokud někdo chce, múže vyzkoušet. Část programu až po samotný převod by už měla být v pořádku. Samotný převod je možný v rozmezí CP1250, ISO8859-2, KOI-8čs, Kamenických, cp852, AmigaE2. Já zkoušel jen z cp1250 na KOI8-čs. Neni podporován ani změna sekvence přechodu na nový řádek, ani zužení textu na požadovanou velikost! Při výběru kódování číst UTF-8 v rozsahu podporovaných kódování již můžete

                  Z mým rychlích postřehů: U výstupního souboru i když se zadá cesta, uloží se tam, kde je samotný program (u vstupního souboru cesta funguje)
                  Pokud nekdo bude zkoušet, vše na vlastní triko Já s tím za rok, neměl problém (pokud byl, tak jen z mé blbosti )

                  Alfa verze ke stažení v příloze. Nenechte se zvyklat ikonou od Prince Jasoňa Instalace není nutná, jen nakopíruje tabulky pro Iso8859-2 (Latin2) kam patří, aby pokud někdo Latin2 nepoužívá, měl správnou diakritiku v samotném programu. Kvůli rychlosti pracujte s programem na HDD, CF nebo co to tam máte . Program nabíha pomaleji. Strpění. Hlasení na začátku 2 chyb je normalní

                  ATEconvert.adf
                  Amiga - PMD 85

                  Komentovat


                    #10
                    O: ATEconvert

                    Čoveče, a není tohle ideální čas na to, začít programovat v něčem jiném? Tipnul bych, že ten čas by měl být na holé A1200 tak max 10 sekund, a ne 23 minut Případně Ti můžu pomoct naprogramovat nějaké nativní rutinky, které bys jen spouštěl pomocí execute, nebo co to v tom pythonu je

                    Komentovat


                      #11
                      O: ATEconvert

                      Autorem citovaného textu je MarK Přejít na původní příspěvek
                      Čoveče, a není tohle ideální čas na to, začít programovat v něčem jiném? Tipnul bych, že ten čas by měl být na holé A1200 tak max 10 sekund, a ne 23 minut Případně Ti můžu pomoct naprogramovat nějaké nativní rutinky, které bys jen spouštěl pomocí execute, nebo co to v tom pythonu je
                      Težko říci, ještě jak vidíš ani samotný Python pořádně neumím Už jak jsem psal můžu z něho vymáčknout i více, ale je jasný, že asi na 10 sekund se nedostanu. No ono mimo to zapisování je celkový běh o "hubu" ale dá se to dle mne zkousnout, ten zápis už ale ne = použitelné na kratší soubory, nebo to necháš převádět a ve 2. okne si budeš dělat něco jinýho ) Rutinky by pomohli, ale zatím je jich škoda, když to můžu napsat lépe. Učím se a i teď jsem se poučil . Pokud budu s Pythonem v koncích, třeba nějakou rutinu můžeme (můžes) zkusit vymyslet. Každopádně díky za nabídku
                      Amiga - PMD 85

                      Komentovat


                        #12
                        O: ATEconvert

                        No nic, mám jednoho uživatele, takže to budu muset dokončit
                        Amiga - PMD 85

                        Komentovat


                          #13
                          O: ATEconvert

                          Dnes (a včera ) jsem si udělal průzkum, jak jsem schopen snížit extrémní čas zpracování převodu (viz historie vlákna). Konečný výsledek je taky moc, ale snížit se povedlo (a to je lepší než drátem do oka). Pokud bych změnil převodové tabulky tak při možnosti FASTEST POSSIBLE (ve WinUAE) jsem se dostal z původní 1 minuty a 45 sekund na 40 sekund. Pokud je FASTEST POSSIBLE vyplé, tak je to z původních 23 minut již 8 minut a 20 vteřin. Pořád vysoké časy, ale i tohle považuji za úspěch. Opět jsem se co se týče Pythonu něčemu naučil
                          Naposledy upravil Lisiak; 17.09.2013, 01:27:04.
                          Amiga - PMD 85

                          Komentovat


                            #14
                            O: ATEconvert

                            Dnes jsem byl celý den mimo byt, i když jsem měl volno, jak jsem teď večer přišel domů, tak mi poříád v hlavě něco šrotovalo ohledem změny přístupu doteď používané logiky zápisu. pořád jsem si říkal, jak využít znalost toho, že pokud je písmeno v ASCII, nemusím s ním nic dělat. Ale do souboru ho zapsat musím. Jak tedy změnit frekvenci daného zápisu. Jak udělat zápis větší části textu. Zápis v doposud použité logice byl na hraně. Taky v ní zapisuji po celým řádku a né po 1 písmenu.´Ale musím v ní pracovat jak se znakem ASCII tak se znakem mimo ASCII. Nová logika pracuje jen se znakem mimo ASCII. Za asi 10 minut jsem dostal odpověd. Ze 40 vteřin u FASTEST POSSIBLE se dostávám na cca 30 vteřin. Nebo z 8 minut 20 vteřin na 7 minut 5 vteřin (FASTEST POSSIBLE je OFF). Ještě se s tím budu muset pohrát. Zkusit dostat tuhle logiku na hranu (pokud se to ještě dá - ještě mám i jeden nápad - uvidím, jestli bude zrychlovat, nebo zpomalovat). Ale mám radost z toho, že jsem hnul s nečím, s čím jsem myslel že již nehnu
                            Amiga - PMD 85

                            Komentovat


                              #15
                              O: ATEconvert

                              Jo čoveče, tomu se říká vývoj... časem třeba přijdeš na rutinku, která to zrychlí stonásobně...

                              Komentovat

                              Zpracovávám...
                              X