Portál AbcLinuxu, 3. května 2025 07:17
Při zveřejnění svého skriptu jsem tak trochu doufal, že se najde někdo, kdo by mi s jeho úpravou pomohl, respektive jej alespoň okomentoval (které části přepsat a jak, co je hrůza, co ujde...) a já bych měl tak možnost se naučit psát "čistší" programy. To se bohužel zatím nestalo, nicméně já na svůj příšerný skript nezanevřel a proběhla další várka úprav. Takže co je nového?
Nejvetší změnou je přechod od dlouhého_skriptu_s_minimem_procedur k programu sestávajícího se ze třídy a několika kratších metod. To podstatně usnadní jeho použití i v jiných programech. Další změnou je rozdělení komunikace se serverem IDOSu do více kroků a změna zpracování výstupů. Výsledky (nalezená spojení či možnosti na výběr při nepřesně zadaných koncových bodech) jsou dostupné i prostřednictvím seznamů. Dále jsem se zbavil dočasných souborů a (povetšinou) přešel na unicode retězce. A v neposlední řadě jsem opravil chybu, která nastávala při nepřesně zadaném počátečním i koncovém bodě hledaného spojení. Uživatelům, jsou-li jací, proto doporučuji přechod na novějši verzi.
Budu rád, když se ke skriptu vyjádříte a navrhnete další úpravy a vylepšení. Dostupný je stále na stejné adrese.
UPDATE: Jak už to tak chodí, chvíli po zveřejnění zápisku jsem nalezl chybu. Při zadání neexistujícího cíle se skript zacyklil. Již je to (doufám) opraveno, stahujte tedy verzi 0.35.
Tiskni
Sdílej:
if kod == KOD_NEJEDNOZNACNE_KONCOVE_BODY: ...
else: ...
if(podm){}
?
else
cast tak uz prece neni mozne se v tom rozumne orientovat, kdezto pekne naformatovany kod s pouzitim zavorek je prehledny vzdycky.
def parsuj_spojeni(): def generator_radku(file): for line in file: .. nejake zpracovani vstupni radky line if pocet_spoju > max_pocet_spoju: break yield line return pocet_spoju=0 gr=generator_radku(file) for line in gr: while not re.search("cosi",line): gr.next() .. zpracovani prvniho stavu while not re.search("cosi dalsiho",line): gr.next() .. zpracovani druheho stavu ... pocet_spoju+=1Zkratka, zakladni myslenka je, mit vstupy (v tomto pripade radky) ktera chcete prijimat tim stavovym automatem schovane v tom generatoru, a stavy toho automatu implementovat jako normalni body v kodu, ktere si proste vzdy vyzadaji prislusny ocekavany vstup (bud pomoci gr.next() nebo pomoci for cyklu pres gr). Tak bych to asi delal ja, je to citelnejsi nez studovat prechod mezi stavy a co ktery stav znamena.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.