Re: [python] kterak vhodne resit architekturu IMAP klienta
Dobrého dne, jsa asi ovlivněn modelem dokument-view bych to videl spis tak, ze mailbox bude s UI komunikovat primo prostrednicvim metod mailboxu volanych z UI a callbacku kterym bude mailbox oznamovat UI, ze ze se v mailboxu něco zmenilo. IMHO oddelovat UI od mailboxu frontou nemá smysl protože UI potrebuje pro zobrazovaní okamzitou odpoved relevantnich dat nebo odpoved data nejsou k dispozici. Naopak parser bych nechal bezet ve zvlastnim threadu. Snazil bych se o to, aby daval data v takove podobe, aby sly rychle zaradit do datovych struktur mailboxu, aby aktualizacemi mailboxu nebylo blokovano UI. zdravic Jan Matejka Ted resim problem, jak maji tyhle tri slupky spolu komunikovat. Jako uplne prvni vec me napadlo to, ze kazda z nich pobezi ve vlastnim threadu a vsechno si budou rikat pres Queue.Queue (vzdy dvojice mezi jednotlivymi slupkami). Po zapnuti mozku mi ale doslo, ze se Parser a Mailbox daji krasne sloucit - proste v ramci jednoho cyklu thread zkontroluje, jestli po nem neco nechce UI nebo jestli neco neprislo od IAMP serveru. Zbyva teda vyresit, co s komunikaci mezi Mailboxem a UI. Premyslim o dvojici front, pro kazdy smer jednu. Ve smeru UI - Mailbox proudi prikazy typu smaz zpravu XYZ, ukaz mi razeni do threadu ci dej mi hlavicky zpravy cislo 12, opacne data jako treti megabajt sedme prilohy zpravy cislo 13 je \x00... ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] kterak vhodne resit architekturu IMAP klienta
Jan Matejka wrote: Dobrého dne, jsa asi ovlivněn modelem dokument-view bych to videl spis tak, ze mailbox bude s UI komunikovat primo prostrednicvim metod mailboxu volanych z UI a callbacku kterym bude mailbox oznamovat UI, ze ze se v mailboxu něco zmenilo. Ahoj, zkusim nad tim zapremyslet. Model-View-Controller uz jsem taky cet :) IMHO oddelovat UI od mailboxu frontou nemá smysl protože UI potrebuje pro zobrazovaní okamzitou odpoved relevantnich dat nebo odpoved data nejsou k dispozici. Potrebuju chovani ok, mas tu data, data budou za chvili nebo chyba. Naopak parser bych nechal bezet ve zvlastnim threadu. Jake by to melo vyhody? Snazil bych se o to, aby daval data v takove podobe, aby sly rychle zaradit do datovych struktur mailboxu, aby aktualizacemi mailboxu nebylo blokovano UI. Mno, mne se libi to, ze Parser fakt jenom parsuje. Kvuli celkem komplikovane architekture IMAPu se dost brutalni logice v Mailboxu nevyhnu. Diky za reakci, -jkt -- cd /local/pub more beer /dev/mouth signature.asc Description: OpenPGP digital signature ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
[python] Deleni retezce
Zdravim, mel bych takovy dotaz. Potreboval bych vedet, jak dlouhy retezec rozdelim na mensi (vlozim enter misto mezery, pokud je retezec delsi jak nejaka delka). Mam proste dlouhy string a potreboval bych ho rozdelit na na vice stringu oddelene entrem. Enter vkladat vzdy, kdy je retezec napr. delsi nez 100 znaku. Zacal jsem tak, ze spocitam pocet slov a znaku retezce, ale nevim, jak dal (jak spravne vkladat ty entery). Diky za kazdou radu. Martin ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Deleni retezce
Ahoj, já to pochopil nějak takto: -- wordwrap.py -- #!/usr/bin/python # -*- coding: utf-8 -*- def doTextWrapping(text, lineLen = 80): currentLen = 0 result = [] line = [] for word in text.split(): wordLen = len(word) + 1 currentLen = currentLen + wordLen if currentLen = lineLen: result.append(' '.join(line)) currentLen = wordLen line = [] line.append(word) result.append(' '.join(line)) return '\n'.join(result) if __name__ == __main__: veta = Toto je velice dlouha veta, ktera by mela byt rozdelena na nekolik radek dlouhych maximalne 25 znaku. print doTextWrapping(veta, 25) -- wordwrap.py -- S pozdravem slacker ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python
Re: [python] Deleni retezce
to je presne ono, diky moc. Martin Stefan Oravec napsal(a): ako som to ja pochopil tak domotal :D def foo(text, treshold): result = [] buff = [] for word in text.split(): if len(' '.join(buff + [word])) treshold: result.append(' '.join(buff)) buff = [word] else: buff.append(word) result.append(' '.join(buff)) return result if __name__ == '__main__': text = '''foo bar johoho''' print text.split() print foo(text, 10) print foo(text, 5) S. Quoting Petr Vaněk [EMAIL PROTECTED]: Dne úterý 05 září 2006 14:39 Martin Jedlička napsal(a): Zdravim, mel bych takovy dotaz. Potreboval bych vedet, jak dlouhy retezec rozdelim na mensi (vlozim enter misto mezery, pokud je retezec delsi jak nejaka delka). Mam proste dlouhy string a potreboval bych ho rozdelit na na vice stringu oddelene entrem. Enter vkladat vzdy, kdy je retezec napr. delsi nez 100 znaku. Zacal jsem tak, ze spocitam pocet slov a znaku retezce, ale nevim, jak dal (jak spravne vkladat ty entery). s = '''foo bar ... jambadadam''' s 'foo bar\njambadadam' l = s.split() l ['foo', 'bar', 'jambadadam'] n = '\n'.join(l) n 'foo\nbar\njambadadam' print n foo bar jambadadam pokud vyzadujes, aby se pred tim zkontrolovala delka reteze, pak if len(s) 100: l = s.split() ale mozna jsem se domotal v zadani ;) neni treba dekovat, mam rad bilou cokoladu... p. -- application/x-person ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python ___ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python