From filbar na centrum.cz Wed Feb 2 17:11:31 2011 From: filbar na centrum.cz (Filip Bartmann) Date: Wed, 2 Feb 2011 17:11:31 +0100 Subject: [python] =?utf-8?q?Bezpe=C4=8Dnsost_k=C3=B3du_-_funkce_exec?= Message-ID: <20110202171131.7b4a2ffa@joomladev2.joomladev.dyndns.org> Jak si myslíte, že je bezpečná funkce exec v následujícím kódu: ----------------------------------------------------------------------- for d in os.listdir("./plugins"): if os.path.isdir(os.path.join("./plugins",d))==True: exec "from plugins."+d+"."+d+" import *"; exec "b="+d+"()"; ------------------------------------------------------------------------ Jedná se o program komunikující přes XML-RPC a ty funkce z instance b exportuju do XML-RPC pomocí register_instance(b); Je to rozymný postup. Děkuji za odpověď. Filip Bartmann From petr.messner na gmail.com Wed Feb 2 17:17:58 2011 From: petr.messner na gmail.com (Petr Messner) Date: Wed, 2 Feb 2011 17:17:58 +0100 Subject: [python] =?iso-8859-2?q?Bezpe=E8nsost_k=F3du_-_funkce_exec?= In-Reply-To: <20110202171131.7b4a2ffa@joomladev2.joomladev.dyndns.org> References: <20110202171131.7b4a2ffa@joomladev2.joomladev.dyndns.org> Message-ID: Na to nemusíš používat exec. Pokud chceš importovat nějaký soubor/modul, jehož jméno máš v proměnné, viz __import__. Potom stačí třeba getattr. PM 2011/2/2 Filip Bartmann : > Jak si myslíte, že je bezpečná funkce exec v následujícím kódu: > > ----------------------------------------------------------------------- > for d in os.listdir("./plugins"): >                if os.path.isdir(os.path.join("./plugins",d))==True: >                        exec "from plugins."+d+"."+d+" import *"; >                        exec "b="+d+"()"; > ------------------------------------------------------------------------ > > Jedná se o program komunikující přes XML-RPC a ty funkce z instance b > exportuju do XML-RPC pomocí register_instance(b); > > Je to rozymný postup. > > Děkuji za odpověď. > > Filip Bartmann > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > From jirka.vejrazka na gmail.com Wed Feb 2 23:15:52 2011 From: jirka.vejrazka na gmail.com (Jirka Vejrazka) Date: Wed, 2 Feb 2011 23:15:52 +0100 Subject: [python] =?iso-8859-2?q?Bezpe=E8nsost_k=F3du_-_funkce_exec?= In-Reply-To: References: <20110202171131.7b4a2ffa@joomladev2.joomladev.dyndns.org> Message-ID: > Na to nemusíš používat exec. Pokud chceš importovat nějaký > soubor/modul, jehož jméno máš v proměnné, viz __import__. Potom stačí > třeba getattr. Jenom doplnim Petra. Tohle je z nejakeho meho starsiho kodu, treba ti to v necem pomuze: def get_task(job_, callback_fn, id_): '''gets a plugin object that we can execute as a task''' debug2('About to import plugin %s' % job_.plugin) try: plugin = __import__(job_.plugin, globals(), locals(), 'runtime') except (ImportError, SyntaxError), e: error('Error importing %s: %s' % (job_.plugin, str(e))) return None runtime = plugin.runtime() Jirka From slush na centrum.cz Thu Feb 3 18:26:53 2011 From: slush na centrum.cz (slush) Date: Thu, 3 Feb 2011 18:26:53 +0100 Subject: [python] http basic auth Message-ID: Zdravim, uz druhy den resim problem HTTP Basic autentizace s urllib2 a protoze se nedari, zkusim se zeptat tady. Mam webovou aplikaci, ktera vyzaduje prihlaseneho uzivatele. Bez prihlaseni vrati HTTP 401, coz je OK. Bohuzel urllib2 neumi takovou zakladni vec, jako je zapouzdreny login a heslo primo v URL a cele to resi na objektove urovni. Nechapu to, stve me to, ale musim s tim zit. Nakonec jsem vygooglil (opravdu neexistuje poradna dokumentace k tak zakladni knihovne?) tuto konstrukci, ktera sice obcas funguje, ale velice divne: mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() mgr.add_password(None, url, username, password) opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(mgr)) opener.open(...) Zrejme v tom je jeste nejaky zadrhel, protoze uspesnost autentizace je nekde kolem 20% - zbytek requestu skonci s vyjimkou HTTP 401. Kazdopadne to vypada, ze knihovna funguje stylem, ze nejdrive posle pozadavek a teprve pote, co stranka vrati 401, zkusi poslat take prihlasovaci udaje. Vzhledem k tomu, ze planovany traffic celeho systemu je kolem 100 requestu za sekundu, tudy cesta nevede... Knihovna urllib funguje v tomto ohledu mnohem lepe, akceptuje jmeno/heslo primo v URL, kazdopadne zase ji chybi nektere featury, ktere urllib2 ma (napriklad fakt, ze je i v Python3). Prosim o kazdou radu, jak toto vyresit. Zaseknul jsem se na veci, kterou jsem puvodne mel mit vyresenou za deset minut... Diky, Marek ------------- dal?í ?ást --------------- HTML p?íloha byla odstran?na... URL: From visgean na gmail.com Thu Feb 3 19:50:09 2011 From: visgean na gmail.com (Visgean Skeloru) Date: Thu, 3 Feb 2011 19:50:09 +0100 Subject: [python] http basic auth In-Reply-To: References: Message-ID: Zkuste to podle tohoto příkladu: http://docs.python.org/library/urllib2.html#examples , liší se to v použitíurllib2 .HTTPBasicAuthHandler místo urllib2.HTTPPasswordMgrWithDefaultRealm... 2011/2/3 slush > Zdravim, > > uz druhy den resim problem HTTP Basic autentizace s urllib2 a protoze se > nedari, zkusim se zeptat tady. > > Mam webovou aplikaci, ktera vyzaduje prihlaseneho uzivatele. Bez prihlaseni > vrati HTTP 401, coz je OK. Bohuzel urllib2 neumi takovou zakladni vec, jako > je zapouzdreny login a heslo primo v URL a cele to resi na objektove urovni. > Nechapu to, stve me to, ale musim s tim zit. > > Nakonec jsem vygooglil (opravdu neexistuje poradna dokumentace k tak > zakladni knihovne?) tuto konstrukci, ktera sice obcas funguje, ale velice > divne: > > mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() > mgr.add_password(None, url, username, password) > opener = urllib2.build_opener(urllib2.HTTPBasicAuthHandler(mgr)) > opener.open(...) > > Zrejme v tom je jeste nejaky zadrhel, protoze uspesnost autentizace je > nekde kolem 20% - zbytek requestu skonci s vyjimkou HTTP 401. Kazdopadne to > vypada, ze knihovna funguje stylem, ze nejdrive posle pozadavek a teprve > pote, co stranka vrati 401, zkusi poslat take prihlasovaci udaje. Vzhledem k > tomu, ze planovany traffic celeho systemu je kolem 100 requestu za sekundu, > tudy cesta nevede... > > Knihovna urllib funguje v tomto ohledu mnohem lepe, akceptuje jmeno/heslo > primo v URL, kazdopadne zase ji chybi nektere featury, ktere urllib2 ma > (napriklad fakt, ze je i v Python3). > > Prosim o kazdou radu, jak toto vyresit. Zaseknul jsem se na veci, kterou > jsem puvodne mel mit vyresenou za deset minut... > > Diky, > Marek > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > ------------- další část --------------- HTML příloha byla odstraněna... URL: From radek.hnilica na gmail.com Wed Feb 16 15:23:07 2011 From: radek.hnilica na gmail.com (Radek) Date: Wed, 16 Feb 2011 06:23:07 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= Message-ID: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Dobrý den, nejdřív bych se uvedl, jsem takový opakovaný začátečník, k Pythonu jsem naposled přičichl možná před osmi lety a nic moc. Teď, asi tři měsíce zpátky jsem se k němu vrátil, protože si hraju s GAE/P. Přes všechny problémy se zkouším prokousávat, ikdyž python bolí, ale teď jsem se tak nějak úplně ztratil. Pokouším se udělat Basic HTTP auhorizaci, respektive se ji pokouším zabalit do inteligentního dekorátoru. Byl by tady někdo, kdo by mě mohl odkázat na rozumný studijní materiál, podtrhuji rozumný, ze kterého bych byl schopen pochopit, jak funguje dekorátor který definuju jako třídu. S dekorátory jako funkcemi jsem se nějak popasoval, tedy aspoň si to myslim, ale u té třídy je to pro mě černá magie. Pokud nemá dekorátor parametry, tak se zdá že to nějak chápu. Do __init__ je předána dekorovaná fuknce a do __call__ jsou pak předávány argumenty té funkce viz: class mydec: def __init__(self, fce): self.fce = fce # Store, we will use it in __call__ def __call__(self, *args, **kwds): ....pre result = self.fce(*args, **kwds) .....post return result @mydec def myfunc(*args, **kwds): pass Ale pokud má mít dekorátor parametry, tak jsem sice našel/zkonstruoval kód který se zdá fungovat, ale plně mu nerozumím. Následující je vystřiženo z testovacího skriptu. class Authorize: def __init__(self, allow = None, deny = None): self.allow = allow; self.deny = deny print 'Authorize.__init__(allow=%s, deny=%s)' % (allow,deny) def __call__(self, function): def decoratedFunction(?context, *args, **kwds): # context must be if we decorated class method, its a self. print 'Authorize.__call__ in decorator, before function with: %s, %s' % (str(args), str(kwds)) self.helper() # Just to test if I can call result = function(*args, **kwds) print 'in decorator, after function, result: %s' % str(result) return result return decoratedFunction def helper(self): print 'Authorize.helper()' @Authorize() def get(key, action): print 'get(%s, %s)' % (key, action) return 'ola' Jen tím že chci aby měl dekorátor parametry, se tak radikálně změní kód dekorátoru. Potřeboval bych nějak po lopatě vědět, co se uvnitř děje, protože cítím že ty dekorátory budu určitě používat ještě mnohem divočeji. Jen tak mimochodem, v tuto chíli se snažím mít něco co v aplikaci použiju asi takto: class UserHandler(ApplicationHandler): # ApplicationHandler is subclass of webapp.RequestHandler @Authorize(model=User, allow=['karel', 'admin'], deny=['pavel']) def get(self, key=None, action=None): ..... process GET request knowing that ..... self.loged_user is the current authorized user From cx na initd.cz Fri Feb 18 23:39:53 2011 From: cx na initd.cz (Adam =?UTF-8?Q?=C5=A0trauch?=) Date: Fri, 18 Feb 2011 23:39:53 +0100 Subject: [python] =?utf-8?b?USZBIHNlcnZlciB6YW3Em8WZZW7DvSBuYSBQeXRob24=?= Message-ID: <1298068793.15110.104.camel@delorean> Ahoj, snažím se rozjet Q&A server zaměřený na Python na adrese http://qa.rosti.cz. Je postavený nad OSQA, jenž je napsané v Djangu. Jde o docela mladý projekt, který nemá ještě ani stabilní release, ale funguje velmi slušně. Pustil jsem se i do lokalizace a zatím mám přeloženo 12 % textů, takže se tam ještě často míchá angličtina. Určitě budu rád, když se tam občas podíváte. Dobrovolníci na pomoc s překladem jsou také vítáni. Nedávno jsem sem psal o python hostingu Roští.cz, takže si určitě zaslouží zmínku, že oslavilo první narozeniny a do konce příštího týdne si můžete vyzkoušet hostování své aplikace zcela zdarma. Děkuji za pozornost. Adam From juda.kaleta na gmail.com Sat Feb 19 09:28:35 2011 From: juda.kaleta na gmail.com (Juda Kaleta) Date: Sat, 19 Feb 2011 09:28:35 +0100 Subject: [python] =?iso-8859-2?q?Q=26A_server_zam=EC=F8en=FD_na_Python?= In-Reply-To: <1298068793.15110.104.camel@delorean> References: <1298068793.15110.104.camel@delorean> Message-ID: <4D5F7F33.5060703@gmail.com> Tak jsem se zkusil zaregistrovat, ale v potvrzovacím mailu, co mi přišel, jsou špatně všechny odkazy. Odkaz na ověření vypadá nějak takto: http:///account/validate/9/e0aac61... Po nahrazení account za qa.rosti.cz mi systém vyhazuje error 404. Juda Kaleta Dne 18.2.2011 23:39, Adam Štrauch napsal(a): > Ahoj, > > snažím se rozjet Q&A server zaměřený na Python na adrese > http://qa.rosti.cz. Je postavený nad OSQA, jenž je napsané v Djangu. Jde > o docela mladý projekt, který nemá ještě ani stabilní release, ale > funguje velmi slušně. > > Pustil jsem se i do lokalizace a zatím mám přeloženo 12 % textů, takže > se tam ještě často míchá angličtina. > > Určitě budu rád, když se tam občas podíváte. Dobrovolníci na pomoc s > překladem jsou také vítáni. > > Nedávno jsem sem psal o python hostingu Roští.cz, takže si určitě > zaslouží zmínku, že oslavilo první narozeniny a do konce příštího týdne > si můžete vyzkoušet hostování své aplikace zcela zdarma. > > Děkuji za pozornost. > > Adam > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python From kubatmartin na seznam.cz Sat Feb 19 09:41:23 2011 From: kubatmartin na seznam.cz (=?ISO-8859-2?Q?Martin_Kub=E1t?=) Date: Sat, 19 Feb 2011 09:41:23 +0100 Subject: [python] =?iso-8859-2?q?Q=26A_server_zam=EC=F8en=FD_na_Python?= In-Reply-To: <1298068793.15110.104.camel@delorean> References: <1298068793.15110.104.camel@delorean> Message-ID: <4D5F8233.9000009@seznam.cz> Ahoj, přesně jak psal Juda Kaleta: v potvrzovacím emailu registrace je jen path, bez domény. Ten nicméně funguje dobře. Jinak je to dobrá zpráva. Už jsem tam napsal několik odpovědí ;-) doufám, že to bude sloužit dobře. Hezký den. Martin Kubát Adam Štrauch napsal(a): > Ahoj, > > snažím se rozjet Q&A server zaměřený na Python na adrese > http://qa.rosti.cz. Je postavený nad OSQA, jenž je napsané v Djangu. Jde > o docela mladý projekt, který nemá ještě ani stabilní release, ale > funguje velmi slušně. > > Pustil jsem se i do lokalizace a zatím mám přeloženo 12 % textů, takže > se tam ještě často míchá angličtina. > > Určitě budu rád, když se tam občas podíváte. Dobrovolníci na pomoc s > překladem jsou také vítáni. > > Nedávno jsem sem psal o python hostingu Roští.cz, takže si určitě > zaslouží zmínku, že oslavilo první narozeniny a do konce příštího týdne > si můžete vyzkoušet hostování své aplikace zcela zdarma. > > Děkuji za pozornost. > > Adam > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > > From cx na initd.cz Sat Feb 19 11:11:13 2011 From: cx na initd.cz (Adam =?iso-8859-2?q?=A9trauch?=) Date: Sat, 19 Feb 2011 11:11:13 +0100 Subject: [python] =?iso-8859-2?q?Q=26A_server_zam=EC=F8en=FD_na_Python?= In-Reply-To: <4D5F8233.9000009@seznam.cz> References: <1298068793.15110.104.camel@delorean> <4D5F8233.9000009@seznam.cz> Message-ID: <201102191111.14426.cx@initd.cz> Ahoj, děkuji oběma za report, kouknu kde to tam visí. Validace e-mailu není nutná pro přidávání reakce, alespoň ne teď, takže jsem si toho nevšiml :-( Adam Dne So 19. února 2011 09:41:23 Martin Kubát napsal(a): > Ahoj, > přesně jak psal Juda Kaleta: v potvrzovacím emailu registrace je jen > path, bez domény. Ten nicméně funguje dobře. > > Jinak je to dobrá zpráva. Už jsem tam napsal několik odpovědí ;-) > doufám, že to bude sloužit dobře. > > Hezký den. > Martin Kubát > > Adam Štrauch napsal(a): > > Ahoj, > > > > snažím se rozjet Q&A server zaměřený na Python na adrese > > http://qa.rosti.cz. Je postavený nad OSQA, jenž je napsané v Djangu. Jde > > o docela mladý projekt, který nemá ještě ani stabilní release, ale > > funguje velmi slušně. > > > > Pustil jsem se i do lokalizace a zatím mám přeloženo 12 % textů, takže > > se tam ještě často míchá angličtina. > > > > Určitě budu rád, když se tam občas podíváte. Dobrovolníci na pomoc s > > překladem jsou také vítáni. > > > > Nedávno jsem sem psal o python hostingu Roští.cz, takže si určitě > > zaslouží zmínku, že oslavilo první narozeniny a do konce příštího týdne > > si můžete vyzkoušet hostování své aplikace zcela zdarma. > > > > Děkuji za pozornost. > > > > Adam > > From vasco.vls na gmail.com Sat Feb 19 11:44:22 2011 From: vasco.vls na gmail.com (=?utf-8?Q?Vlastimil_Slint=C3=A1k?=) Date: Sat, 19 Feb 2011 11:44:22 +0100 Subject: [python] =?utf-8?b?USZBIHNlcnZlciB6YW3Em8WZZW7DvSBuYSBQeXRob24=?= In-Reply-To: <1298068793.15110.104.camel@delorean> References: <1298068793.15110.104.camel@delorean> Message-ID: <0281CD9E-5079-4C5A-B4A8-82819E5FA715@gmail.com> Zdravím, tento projekt rozhodně vítám, často se v Pythonu na něčem zaseknu a nevím kam jít pro inspiraci. Měl bych jednu připomínku - vzhled pro mobilní telefony a jiná zařízení s malým displejem. Vím, že v této fázi to není priorita, ale určitě se to hodí. Projížděl jsem web v tramvaji a moc pohodlné to nebylo. S pozdravem, Vlastimil S. On 18.2.2011, at 23:39, "Adam Štrauch" wrote: > Ahoj, > > snažím se rozjet Q&A server zaměřený na Python na adrese > http://qa.rosti.cz. Je postavený nad OSQA, jenž je napsané v Djangu. Jde > o docela mladý projekt, který nemá ještě ani stabilní release, ale > funguje velmi slušně. > > Pustil jsem se i do lokalizace a zatím mám přeloženo 12 % textů, takže > se tam ještě často míchá angličtina. > > Určitě budu rád, když se tam občas podíváte. Dobrovolníci na pomoc s > překladem jsou také vítáni. > > Nedávno jsem sem psal o python hostingu Roští.cz, takže si určitě > zaslouží zmínku, že oslavilo první narozeniny a do konce příštího týdne > si můžete vyzkoušet hostování své aplikace zcela zdarma. > > Děkuji za pozornost. > > Adam > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python From cx na initd.cz Sat Feb 19 15:18:58 2011 From: cx na initd.cz (Adam =?UTF-8?Q?=C5=A0trauch?=) Date: Sat, 19 Feb 2011 15:18:58 +0100 Subject: [python] =?utf-8?b?USZBIHNlcnZlciB6YW3Em8WZZW7DvSBuYSBQeXRob24=?= In-Reply-To: <4D5F7F33.5060703@gmail.com> References: <1298068793.15110.104.camel@delorean> <4D5F7F33.5060703@gmail.com> Message-ID: <1298125138.15110.105.camel@delorean> Ahoj, Juda Kaleta píše v So 19. 02. 2011 v 09:28 +0100: > Tak jsem se zkusil zaregistrovat, ale v potvrzovacím mailu, co mi > přišel, jsou špatně všechny odkazy. Odkaz na ověření vypadá nějak takto: > > http:///account/validate/9/e0aac61... > > Po nahrazení account za qa.rosti.cz mi systém vyhazuje error 404. > tak už to je opravené. V settings.py chyběla doména. Díky za report. > Juda Kaleta Adam From petr.messner na gmail.com Sat Feb 19 15:55:02 2011 From: petr.messner na gmail.com (Petr Messner) Date: Sat, 19 Feb 2011 15:55:02 +0100 Subject: [python] =?iso-8859-2?q?Q=26A_server_zam=EC=F8en=FD_na_Python?= In-Reply-To: <1298068793.15110.104.camel@delorean> References: <1298068793.15110.104.camel@delorean> Message-ID: Ahoj, jen takový detail - v předmětu potvrzovacího mailu je "Welcome to Q&A Roští.cz", to & tam asi nepatří :) Takže to znamená, že většina provozu zde na mailinglistu se přesune na QA? :) PM 2011/2/18 Adam Štrauch : > Ahoj, > > snažím se rozjet Q&A server zaměřený na Python na adrese > http://qa.rosti.cz. Je postavený nad OSQA, jenž je napsané v Djangu. Jde > o docela mladý projekt, který nemá ještě ani stabilní release, ale > funguje velmi slušně. > > Pustil jsem se i do lokalizace a zatím mám přeloženo 12 % textů, takže > se tam ještě často míchá angličtina. > > Určitě budu rád, když se tam občas podíváte. Dobrovolníci na pomoc s > překladem jsou také vítáni. > > Nedávno jsem sem psal o python hostingu Roští.cz, takže si určitě > zaslouží zmínku, že oslavilo první narozeniny a do konce příštího týdne > si můžete vyzkoušet hostování své aplikace zcela zdarma. > > Děkuji za pozornost. > > Adam > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > From cx na initd.cz Sat Feb 19 18:19:15 2011 From: cx na initd.cz (Adam =?UTF-8?Q?=C5=A0trauch?=) Date: Sat, 19 Feb 2011 18:19:15 +0100 Subject: [python] =?utf-8?b?USZBIHNlcnZlciB6YW3Em8WZZW7DvSBuYSBQeXRob24=?= In-Reply-To: References: <1298068793.15110.104.camel@delorean> Message-ID: <1298135955.15110.116.camel@delorean> Ahoj, Petr Messner píše v So 19. 02. 2011 v 15:55 +0100: > Ahoj, > > jen takový detail - v předmětu potvrzovacího mailu je "Welcome to > Q&A Roští.cz", to & tam asi nepatří :) > koukám na to a nebude to tak jednoduchý. Vývojáři asi nepočítali, že někdo strčí do názvu znak &. Dám tam nějaký workaround. > Takže to znamená, že většina provozu zde na mailinglistu se přesune na QA? :) > To snad ne, obojí má jiný účel :-) > PM Adam From radekholypublic na gmail.com Sun Feb 20 10:15:48 2011 From: radekholypublic na gmail.com (=?ISO-8859-1?Q?Radek_Hol=FD?=) Date: Sun, 20 Feb 2011 10:15:48 +0100 Subject: [python] =?iso-8859-2?q?Q=26A_server_zam=EC=F8en=FD_na_Python?= In-Reply-To: <1298135955.15110.116.camel@delorean> References: <1298068793.15110.104.camel@delorean> <1298135955.15110.116.camel@delorean> Message-ID: A může se zeptat na rozdíl mezi účely? Nějak je nevidím... :( Sorry, Radek 2011/2/19 Adam Štrauch : > Ahoj, > > Petr Messner píše v So 19. 02. 2011 v 15:55 +0100: >> Ahoj, >> >> jen takový detail - v předmětu potvrzovacího mailu je "Welcome to >> Q&A Roští.cz", to & tam asi nepatří :) >> > > koukám na to a nebude to tak jednoduchý. Vývojáři asi nepočítali, že > někdo strčí do názvu znak &. Dám tam nějaký workaround. > >> Takže to znamená, že většina provozu zde na mailinglistu se přesune na QA? :) >> > > To snad ne, obojí má jiný účel :-) > >> PM > > Adam > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > From radekholypublic na gmail.com Sun Feb 20 10:50:39 2011 From: radekholypublic na gmail.com (=?ISO-8859-1?Q?Radek_Hol=FD?=) Date: Sun, 20 Feb 2011 10:50:39 +0100 Subject: [python] =?iso-8859-2?q?Q=26A_server_zam=EC=F8en=FD_na_Python?= In-Reply-To: References: <1298068793.15110.104.camel@delorean> <1298135955.15110.116.camel@delorean> Message-ID: Aha, jedno je na Python a jedno na "Python pro web"... Pardon 2011/2/20 Radek Holý : > A může se zeptat na rozdíl mezi účely? Nějak je nevidím... :( > > Sorry, Radek > > > > > 2011/2/19 Adam Štrauch : >> Ahoj, >> >> Petr Messner píše v So 19. 02. 2011 v 15:55 +0100: >>> Ahoj, >>> >>> jen takový detail - v předmětu potvrzovacího mailu je "Welcome to >>> Q&A Roští.cz", to & tam asi nepatří :) >>> >> >> koukám na to a nebude to tak jednoduchý. Vývojáři asi nepočítali, že >> někdo strčí do názvu znak &. Dám tam nějaký workaround. >> >>> Takže to znamená, že většina provozu zde na mailinglistu se přesune na QA? :) >>> >> >> To snad ne, obojí má jiný účel :-) >> >>> PM >> >> Adam >> >> _______________________________________________ >> Python mailing list >> Python na py.cz >> http://www.py.cz/mailman/listinfo/python >> > From hslists na zoznam.sk Sun Feb 20 16:02:50 2011 From: hslists na zoznam.sk (=?ISO-8859-2?B?UvNiZXJ0IMhlcvJhbnNr/Q==?=) Date: Sun, 20 Feb 2011 16:02:50 +0100 Subject: [python] =?iso-8859-2?q?Dekor=E1tor?= In-Reply-To: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: <20110220160250.04bd8ae9@amit.kihnet.sk> On Wed, 16 Feb 2011 06:23:07 -0800 (PST) Radek wrote: > Byl by tady někdo, kdo by mě mohl odkázat na rozumný studijní > materiál, podtrhuji rozumný, ze kterého bych byl schopen pochopit, jak > funguje dekorátor který definuju jako třídu. S dekorátory jako > funkcemi jsem se nějak popasoval, tedy aspoň si to myslim, ale u té > třídy je to pro mě černá magie. S tými rozumnými materiálmi je to bieda. Hlavne sa mi zdá, že oficiálny Python Tutorial akosi zaostáva. Pri niekoľkonásobnom prečítaní relevantných (a roztrúsených) častí oficiálnej dokumentácie [1], [2], [3] a PEP 318 [4] sa to akosi dá pochopiť. Pokúsim sa to vysvetliť nižsie. > Pokud nemá dekorátor parametry, tak se zdá že to nějak chápu. Do > __init__ je předána dekorovaná fuknce a do __call__ jsou pak předávány > argumenty té funkce viz: > > class mydec: > def __init__(self, fce): > self.fce = fce # Store, we will use it in __call__ > > def __call__(self, *args, **kwds): > ....pre > result = self.fce(*args, **kwds) > .....post > return result > > @mydec > def myfunc(*args, **kwds): > pass > > Ale pokud má mít dekorátor parametry, tak jsem sice našel/zkonstruoval > kód který se zdá fungovat, ale plně mu nerozumím. [...] > Jen tím že chci aby měl dekorátor parametry, se tak radikálně změní > kód dekorátoru. > Potřeboval bych nějak po lopatě vědět, co se uvnitř děje, protože > cítím že ty dekorátory budu určitě používat ještě mnohem divočeji. Vo všeobecnosti je dekorátor funkcia, ktorá vracia funkciu. V Pythone je dekorátor ?niečo, čo sa dá zavolať? a po zavolaní to vráti tiež ?niečo, čo sa dá zavolať?. To ?niečo, čo sa dá zavolať? je akýkoľvek objekt, ktorý má metódu __call__() ? čiže funkcia; trieda; inštancia tredy, ktorá definuje __call__(); jedným slovom callable. To prvé callable reprezentuje samotný dekorátor a to druhé callable reprezentuje, *v prípade dekorátora bez parametrov*, odekorovanú funkciu (čize funkciu, ktorá už je ?oblečená? do dekorátora). Dekorátor (to, čo je za @) je volaný pri *definícii* funkcie, teda nie pri jej zavolaní. Pri tomto volaní sa vráti uz spomínané druhé callable, ktoré reprezentuje odekorovanú funkciu (v prípade dekorátora bez parametrov). To je potom volané zakaždým, keď je volaná dekorovaná funkcia (čiže tá, ktorá má nad sebou @). _Dekorátor bez parametrov_, je zavolaný s jedným parametrom a tým je dekorovaná funkcia. Čiže keď zoberieme Tvoj príklad dekorátora bez parametrov, tak mydec je zavolaný pri definícii myfunc() a dostane myfunc ako parameter. Keď zoberieme do úvahy, že mydec je trieda, tak jej zavolanie vlastne znamená vytvorenie inštancie. Táto vzniknutá inštancia má __call__() a teda spĺňa podmnienku, že je callable. Vniknutá inštancia teda reprezentuje odekorovanú myfunc() a jej metóda __call__() je zavolaná pri každom volaní myfunc(). _Dekorátor s parametrami_, je zavolaný iba s tými parametrami, s ktorými bol nadefinovaný. Čiže *nedostane dekorovanú funkciu*. Callable, ktoré takýto dekorátor vráti reprezentuje *ďalší dekorátor*. Tento ďalší dekorátor, je už ?normálny? dekorátor bez parametrov popísaný vyššie. Je zavolaný tiež pri definícii funkcie (hneď za dekorátorom s parametrami, ktorý ho vrátil) a dostane dekorovanú funkciu ako parameter. Dúfam, že som Ťa ešte viac nepoplietol. ;-) [1] - http://docs.python.org/py3k/glossary.html#term-decorator [2] - http://docs.python.org/py3k/reference/compound_stmts.html#function [3] - http://docs.python.org/py3k/whatsnew/2.4.html?highlight=decorator Robo -- Robert Cernansky E-mail: hslists na zoznam.sk Jabber: hs na jabber.sk From rainbof na gmail.com Mon Feb 21 11:33:41 2011 From: rainbof na gmail.com (rainbof na gmail.com) Date: Mon, 21 Feb 2011 10:33:41 +0000 Subject: [python] Fwd: [CZ.NIC #107337] kniha "dive into python3" In-Reply-To: Message-ID: <90e6ba539f38bfa49c049cc86526@google.com> Viola... ---------- Přeposlaná zpráva ---------- Od: Zuzana Pochopová via RT Datum: Předmět: [CZ.NIC #107337] kniha "dive into python3" Komu: rainbof na gmail.com Kopie: > Vazeny zakazniku, > kniha Dive into python dnes prave vysla a jeji prodej bude zahajen behem > dneska > ci zitrka. > S pozdravem > -- > Zuzana Pochopova > supervizor zakaznicke podpory > CZ.NIC, zspo > Americka 23, 120 00 Praha 2 > ------------------------------ > T +420 222 745 126 > +420 222 745 111 > F +420 222 745 112 > e-mail : zuzana.pochopova na nic.cz > www.nic.cz > ------------------------------ > www.mojeID.cz - vaše bezpečná webová identita > Dne So 19.úno.2011 19:59:33, dstrakova napsal(a): > > Vazeny pane "Rainbofe", > > > > Vase zprava byla prijata pracovnikem zakaznicke podpory a predana > > kompetentni > > osobe k vyrizeni v pondeli 21.02.2011. Vyckejte prosim odpovedi. > > > > Dekujeme Vam za pochopeni a jsme s pozdravem > > > > > > -- > > Darina Strakova > > specialista zakaznicke podpory > > > > CZ.NIC, zspo > > Americka 23, 120 00 Praha 2 > > ------------------------------ > > Tel.: +420 222 745 102 > > +420 222 745 111 > > Fax: +420 222 745 112 > > > > E-mail: darina.strakova na nic.cz > > www.nic.cz > > > > www.mojeID.cz - vaše bezpečná webová identita > > > > > > > > > > Dne So 19.úno.2011 09:59:02, rainbof na gmail.com napsal(a): > > > Dobrý den, > > > > > > sledoval jsem loni překlad knihy dive into python > > > http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive- > > into- > > > python-3/ktera > > > ceka na vydani prave ve vasi edici chtel bych se zeptat jak to > > vypada > > > s jejim vydanim. ------------- další část --------------- HTML příloha byla odstraněna... URL: From davro na ics.muni.cz Mon Feb 21 11:57:22 2011 From: davro na ics.muni.cz (David Rohleder) Date: Mon, 21 Feb 2011 11:57:22 +0100 Subject: [python] Fwd: [CZ.NIC #107337] kniha "dive into python3" In-Reply-To: <90e6ba539f38bfa49c049cc86526@google.com> References: <90e6ba539f38bfa49c049cc86526@google.com> Message-ID: <1298285842.4610.36.camel@amandil> Super, ještě přidám odkaz: http://knihy.nic.cz/ jsem moc zvědavý, jak to dopadlo. D. rainbof na gmail.com píše v Po 21. 02. 2011 v 10:33 +0000: > Viola... > ---------- Přeposlaná zpráva ---------- > Od: Zuzana Pochopová via RT > Datum: > Předmět: [CZ.NIC #107337] kniha "dive into python3" > Komu: rainbof na gmail.com > Kopie: > > > > Vazeny zakazniku, > > > > > > > > kniha Dive into python dnes prave vysla a jeji prodej bude zahajen > behem dneska > > > > ci zitrka. > > > > > > > > S pozdravem > > > > > > > > -- > > > > Zuzana Pochopova > > > > supervizor zakaznicke podpory > > > > > > > > CZ.NIC, z. s. p. o. > > > > Americka 23, 120 00 Praha 2 > > > > ------------------------------ > > > > > > > > T +420 222 745 126 > > > > +420 222 745 111 > > > > F +420 222 745 112 > > > > e-mail : zuzana.pochopova na nic.cz > > > > www.nic.cz > > > > ------------------------------ > > > > > > > > www.mojeID.cz - vaše bezpečná webová identita > > > > > > > > Dne So 19.úno.2011 19:59:33, dstrakova napsal(a): > > > > > Vazeny pane "Rainbofe", > > > > > > > > > > Vase zprava byla prijata pracovnikem zakaznicke podpory a predana > > > > > kompetentni > > > > > osobe k vyrizeni v pondeli 21.02.2011. Vyckejte prosim odpovedi. > > > > > > > > > > Dekujeme Vam za pochopeni a jsme s pozdravem > > > > > > > > > > > > > > > -- > > > > > Darina Strakova > > > > > specialista zakaznicke podpory > > > > > > > > > > CZ.NIC, z. s. p. o. > > > > > Americka 23, 120 00 Praha 2 > > > > > ------------------------------ > > > > > Tel.: +420 222 745 102 > > > > > +420 222 745 111 > > > > > Fax: +420 222 745 112 > > > > > > > > > > E-mail: darina.strakova na nic.cz > > > > > www.nic.cz > > > > > > > > > > www.mojeID.cz - vaše bezpečná webová identita > > > > > > > > > > > > > > > > > > > > > > > > > Dne So 19.úno.2011 09:59:02, rainbof na gmail.com napsal(a): > > > > > > Dobrý den, > > > > > > > > > > > > sledoval jsem loni překlad knihy dive into python > > > > > > > http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive- > > > > > into- > > > > > > python-3/ktera > > > > > > ceka na vydani prave ve vasi edici chtel bych se zeptat jak to > > > > > vypada > > > > > > s jejim vydanim. > > > > > > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python From jakub na borka.cz Mon Feb 21 13:56:57 2011 From: jakub na borka.cz (Jakub Vysoky) Date: Mon, 21 Feb 2011 13:56:57 +0100 Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= In-Reply-To: <20110220160250.04bd8ae9@amit.kihnet.sk> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <20110220160250.04bd8ae9@amit.kihnet.sk> Message-ID: jenom bych rad doplnil, zed pythoni syntaxe @muj_dekorator def moje_funkce(*args): pass je jenom syntakticky cukr a znamena to: moje_funkce = muj_dekorator(moje_funkce) z cehoz je mozna mnohem jasnejsi, jak dekorator funguje. alespon mne to tak dava vetsi smysl ;)) jakub.. ps: dekorator nemusi byt jenom funkce, je to zkratka objekt obalujici jiny objekt 2011/2/20 Róbert Čerňanský : > On Wed, 16 Feb 2011 06:23:07 -0800 (PST) > Radek wrote: > >> Byl by tady někdo, kdo by mě mohl odkázat na rozumný studijní >> materiál, podtrhuji rozumný, ze kterého bych byl schopen pochopit, jak >> funguje dekorátor který definuju jako třídu. S dekorátory jako >> funkcemi jsem se nějak popasoval, tedy aspoň si to myslim, ale u té >> třídy je to pro mě černá magie. > > S tými rozumnými materiálmi je to bieda. Hlavne sa mi zdá, že > oficiálny Python Tutorial akosi zaostáva. Pri niekoľkonásobnom > prečítaní relevantných (a roztrúsených) častí oficiálnej dokumentácie > [1], [2], [3] a PEP 318 [4] sa to akosi dá pochopiť. Pokúsim sa to > vysvetliť nižsie. > >> Pokud nemá dekorátor parametry, tak se zdá že to nějak chápu. Do >> __init__ je předána dekorovaná fuknce a do __call__ jsou pak předávány >> argumenty té funkce viz: >> >> class mydec: >> def __init__(self, fce): >> self.fce = fce # Store, we will use it in __call__ >> >> def __call__(self, *args, **kwds): >> ....pre >> result = self.fce(*args, **kwds) >> .....post >> return result >> >> @mydec >> def myfunc(*args, **kwds): >> pass >> >> Ale pokud má mít dekorátor parametry, tak jsem sice našel/zkonstruoval >> kód který se zdá fungovat, ale plně mu nerozumím. > [...] >> Jen tím že chci aby měl dekorátor parametry, se tak radikálně změní >> kód dekorátoru. >> Potřeboval bych nějak po lopatě vědět, co se uvnitř děje, protože >> cítím že ty dekorátory budu určitě používat ještě mnohem divočeji. > > Vo všeobecnosti je dekorátor funkcia, ktorá vracia funkciu. V Pythone > je dekorátor "niečo, čo sa dá zavolať" a po zavolaní to vráti tiež > "niečo, čo sa dá zavolať". To "niečo, čo sa dá zavolať" je akýkoľvek > objekt, ktorý má metódu __call__() - čiže funkcia; trieda; inštancia > tredy, ktorá definuje __call__(); jedným slovom callable. To prvé > callable reprezentuje samotný dekorátor a to druhé callable > reprezentuje, *v prípade dekorátora bez parametrov*, odekorovanú > funkciu (čize funkciu, ktorá už je "oblečená" do dekorátora). > > Dekorátor (to, čo je za @) je volaný pri *definícii* funkcie, teda nie > pri jej zavolaní. Pri tomto volaní sa vráti uz spomínané druhé > callable, ktoré reprezentuje odekorovanú funkciu (v prípade dekorátora > bez parametrov). To je potom volané zakaždým, keď je volaná > dekorovaná funkcia (čiže tá, ktorá má nad sebou @). > > _Dekorátor bez parametrov_, je zavolaný s jedným parametrom a tým je > dekorovaná funkcia. > > Čiže keď zoberieme Tvoj príklad dekorátora bez parametrov, tak mydec > je zavolaný pri definícii myfunc() a dostane myfunc ako parameter. > Keď zoberieme do úvahy, že mydec je trieda, tak jej zavolanie vlastne > znamená vytvorenie inštancie. Táto vzniknutá inštancia má __call__() > a teda spĺňa podmnienku, že je callable. Vniknutá inštancia teda > reprezentuje odekorovanú myfunc() a jej metóda __call__() je zavolaná > pri každom volaní myfunc(). > > _Dekorátor s parametrami_, je zavolaný iba s tými parametrami, s > ktorými bol nadefinovaný. Čiže *nedostane dekorovanú funkciu*. > Callable, ktoré takýto dekorátor vráti reprezentuje *ďalší dekorátor*. > Tento ďalší dekorátor, je už "normálny" dekorátor bez parametrov > popísaný vyššie. Je zavolaný tiež pri definícii funkcie (hneď za > dekorátorom s parametrami, ktorý ho vrátil) a dostane dekorovanú > funkciu ako parameter. > > Dúfam, že som Ťa ešte viac nepoplietol. ;-) > > [1] - http://docs.python.org/py3k/glossary.html#term-decorator > [2] - > http://docs.python.org/py3k/reference/compound_stmts.html#function > [3] - > http://docs.python.org/py3k/whatsnew/2.4.html?highlight=decorator > > Robo > > > -- > Robert Cernansky > E-mail: hslists na zoznam.sk > Jabber: hs na jabber.sk > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python -- Jakub Vysoky mob: +420 605 852 377 jab: jakub.vysoky na gmail.com icq: 109248375 twit: https://twitter.com/kvbik From martin.stiborsky na gmail.com Mon Feb 21 15:23:02 2011 From: martin.stiborsky na gmail.com (=?ISO-8859-1?Q?Martin_Stiborsk=FD?=) Date: Mon, 21 Feb 2011 15:23:02 +0100 Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= In-Reply-To: References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <20110220160250.04bd8ae9@amit.kihnet.sk> Message-ID: Jakub: super, tohle vysvětlení je paráda 2011/2/21 Jakub Vysoky : > jenom bych rad doplnil, zed pythoni syntaxe > >  @muj_dekorator >  def moje_funkce(*args): pass > > je jenom syntakticky cukr a znamena to: > >  moje_funkce = muj_dekorator(moje_funkce) > > z cehoz je mozna mnohem jasnejsi, jak dekorator funguje. > alespon mne to tak dava vetsi smysl ;)) > > jakub.. > > ps: dekorator nemusi byt jenom funkce, je to zkratka objekt obalujici > jiny objekt > > -- S pozdravem Martin Stiborský Jabber: stibi na njs.netlab.cz From radek.hnilica na gmail.com Mon Feb 21 15:42:46 2011 From: radek.hnilica na gmail.com (Radek) Date: Mon, 21 Feb 2011 06:42:46 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: <5d0543b0-ac14-4877-9df9-09e3a255bdc1@u6g2000vbh.googlegroups.com> On 20 ún, 16:02, "Róbert Čerňanský" wrote: > Dúfam, že som Ťa ešte viac nepoplietol. ;-) > Robo Dík za snahu, průběžně jsem ten dekorátor studoval z videozáznamů přednášek co jsem našel, takže jsem se v tvé odpovědi orientoval .Takže ještě jednou dík. ono u takovýchto jednoduchých pojmů, které velmi rychle vedou k hůře pochopitelným abstrakcím, je dobrých příkladů vždycky málo. Z toho co jsem četl, tak použítí třídy pro realizaci dekorátoru funkce je způsob jak si udržet větší kontrolu nad kódem? Můj puvodní dekorátor vypadal nějak takto: class Authorize: def __init__ ... def __call__ ... def dekorovana_fce: ... def metoda_volana_z_dekorovana_fce: def jina_metoda_volana_z_dekorovana_fce: Když jsem to všechno psal, popisoval a ladil, tak jsem to nakonec celé refaktorizoval že tam ty další metody nezůstaly. Prostě jsem si při prvním programovacím pokusu nevšiml že to dělám složitě. Ale s dekorovanou fcí zacházím tak, jako by fungovala v kontextu třídy dekorátoru, což taky funguje. A teď to budu vylepšovat, protože jsem si uvědomil, že když dekoruji metodu třídy, má fce kterou dekoruju jako první argument odkaz na kontext té třídy. Už jsem ho částečně použil a z dekorované funkce do něj psal. From radek.hnilica na gmail.com Mon Feb 21 15:51:21 2011 From: radek.hnilica na gmail.com (Radek) Date: Mon, 21 Feb 2011 06:51:21 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <20110220160250.04bd8ae9@amit.kihnet.sk> Message-ID: On 21 ún, 13:56, Jakub Vysoky wrote: > jenom bych rad doplnil, zed pythoni syntaxe > -- > Jakub Vysoky Jo to vim, je to jasne. Jen jsem nevedel a nenapadlo mi si to prepsat @Authorize(allow='admins') def get(self, key=None, action=None): ... na def get ......... get = Action(allow='admins')(get) A pak pochopit takovyto vyraz. Protože dekorator je funkce která vrací funkci. Zatímco 'parametrizovany' dekorator je funkce ktera vraci dekorator. Coz po rozepsani da: "funkce ktera vraci funkci ktera vraci funkci" coz uz name bylo dost abych se v tom zacal ztracet. :) Proste se Python teprve ucim. From hynek.fabian na firma.seznam.cz Mon Feb 21 15:01:43 2011 From: hynek.fabian na firma.seznam.cz (Hynek Fabian) Date: Mon, 21 Feb 2011 15:01:43 +0100 Subject: [python] =?iso-8859-2?q?Dekor=E1tor?= In-Reply-To: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: <201102211501.43681.hynek.fabian@firma.seznam.cz> Radek (Wednesday 16 of February 2011 15:23:07): > nejdřív bych se uvedl, jsem takový opakovaný začátečník, k Pythonu > jsem naposled přičichl možná před osmi lety a nic moc. Teď, asi tři > měsíce zpátky jsem se k němu vrátil, protože si hraju s GAE/P. Přes > všechny problémy se zkouším prokousávat, ikdyž python bolí, Něco děláš špatně. Kde to bolí? > Jen tím že chci aby měl dekorátor parametry, se tak radikálně změní > kód dekorátoru. > Potřeboval bych nějak po lopatě vědět, co se uvnitř děje, protože > cítím že ty dekorátory budu určitě používat ještě mnohem divočeji. Vtip je v tom že se ve skutečnosti kód nijak nemění. Intuitivní představa že parametry v závorkách by měly být předány dekorátoru je jen optický klam. Pokud mám dekorátor jménem "spam" @spam pak @spam("dirt") je ve skutečnosti: @spam.__call__("dirt") A skutečný dekorátor je výsledek tohoto výrazu. Proč tak složitě? Chování dekorátorů je koupodivu logičtější když zapomeneš na triviální jednoslovné dekorátory a zauvažuješ jak se interpret popere se složitějšími výrazy. Představ si například dekorátor který je metodou objektu: @hamClass.spam("dirt") Interpret ve skutečnosti uvidí toto: hamClass.__getAttr__("spam").__call__("dirt") Tady už není tak lehké říci co je samotný výraz a co by "intutivně" měly být parametry výsledného dekorátoru. Ještě lepší to je pokud mám funkci která vrací dekorátor: @ham("dirt").spam("dirt") je vlastně @ham.__call__("dirt").__call__("dirt") Proč by prakticky stejný token jednou měl být klasické volání funkce a podruhé dekorátor? A pokud vymyslíš nějaké složité pravidlo jak to do sebe poznat: @ham() je dekorátor bez parametrů nebo funkce bez parametrů která vrací dekorátor? Ergo "naivní" pohled na parametry dekorátoru by fungoval pokud by dekorátory byly omezeny jen na primitivní výrazy, což by byla škoda. Python tedy považuje všechno za zavináčem za výraz který bude interpretován CELÝ a dekorátor je výsledek tohoto výrazu, včetně volání funkcí. To má krásný efekt že dekorátor je běžná funkce (tj. jakýkoliv objekt s metodou __call__()). Objekty s tímhle nemají nic společného, pouze jmenný prostor uzávěry nahrazují jmenným prostorem instance (metoda __call__ třídy vrací instanci) Osobně považuji použití objektů k dekoraci za nešťastné. Metoda "uzávěra v uzávěře" sice vypadá zezačátku děsivě, ale je aspoň přímočará a dá se pochopit co se děje uvnitř. Objekty jen nahradí jednu složitost jinou (kolik lidí chápe nuance metod __call__, __new__ a __init__?). From radek.hnilica na gmail.com Mon Feb 21 23:00:26 2011 From: radek.hnilica na gmail.com (Radek) Date: Mon, 21 Feb 2011 14:00:26 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: On 21 ún, 15:01, Hynek Fabian wrote: > Radek (Wednesday 16 of February 2011 15:23:07):> nejdřív bych se uvedl, jsem takový opakovaný začátečník,  k Pythonu > > jsem naposled přičichl možná před osmi lety a nic moc.  Teď, asi tři > > měsíce zpátky jsem se k němu vrátil, protože si hraju s GAE/P.  Přes > > všechny problémy se zkouším prokousávat, ikdyž python bolí, > > Něco děláš špatně. Kde to bolí? To je na takové to domácí popovídání. Poslední roky jsem psal v Bashi a něco v Ruby. Z objektových systémů beru jako laťku se kterou srovnávám právě to Ruby. Když jsem začal hledat literaturu a zdroje ke studiu, řekl jsem si že když je spousta textů stylu "Java pro céčkaře", "Python pro fyziky". Že bych se porozhlédl jestli není něco jako Python pro Rubisty. Bohužel nenašel. Tak jediným zdrojem je to co po různu najdu. Snažím se postupně jednotlivé problémy řešit ale lámání je na dlouho. Asi bych si měl psát všechny nejasnosti bokem abych je měl po ruce, ale takto se spoléhám jen na svou děravou hlavu. Co mě opravdu dostalo, a to jsem měl chuť projít stropem, byla práce s časem. Potřeboval jsem jednoduchou věc, vzít časovou/datumovou informaci od uživatele a udělat z ní časový objekt. Ke své hrůze jsem zjistil, že to tak nějak nejde. Na IRCu se mi podařilo odchytit nějakého programátora, a má hrůza se začala stupňovat jak jsem zjišťoval ža ani nechápe co chcu. Obyč funkci, nejlépe metodu časového objektu, které nacpu řetězec od uživatele jako string a dostanu objekt. Neustále říkal že přece nic problém, že to umí metoda strptime a je to popsáno v dokumentaci. Opětovně po několikáté jsem velmi pečlivě četl tu stránku v dokumentaci a nechápal, protože strptime je na tohle absolutně nepoužitelná. Nakonec jsem objevil na netu knihovnu která to umí. Ale strávil jsem dost času zjišťováním že čistý python a dodané knihovny jsou v tomhle ohledu přinejmenším neúplné. A to je jen ukázka jednoho z mnoha případů kdy mi dlouhé hodiny, případně celé dny trvá najít řešení. Potřeboval bych nějakou rozumnou dokumentaci, a nevím kde ji vzít. Většina toho na co se lidi odkazují a co používají se mi zdá tak podivně strohé Viz Pythoní dokumentace k datetime. Často když něco píšu, tak mám představu co vlastně dělám, jen nevím jak se to píše v Pythonu. I chtěl bych třeba, k danému objaktu, znát všechny metody a vlastnosti co má. A neumím nikde najít takový přehled. Takový přehled jako má například dokumentace k Ruby. Nakliknout si Modul/Objekt a dostanu metody. Nakliknu metodu a mám podrobný popis k čemu že vlastně slouží, jak se jí dávají parametry a ukázkou několika použití. Další "drobnost" na kterou jsem narazil je join. Prostě potřebujete z seznamu který máte, nebo který držíte "uprostřed výpočtu na tečce" udělat řetezec. Něco jak seznam.join(','). Tohle je naštěstí tak profláknuté, že už jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho pole. > > Jen tím že chci aby měl dekorátor parametry, se tak radikálně změní > > kód dekorátoru. > > Potřeboval bych nějak po lopatě vědět, co se uvnitř děje, protože > > cítím že ty dekorátory budu určitě používat ještě mnohem divočeji. > > Vtip je v tom že se ve skutečnosti kód nijak nemění. Intuitivní představa že > parametry v závorkách by měly být předány dekorátoru je jen optický klam. > Pokud mám dekorátor jménem "spam" jj teď už to vim, začal jsem si dělat obrázek o tom jak to funguje a kdy se co vyhodnocuje a jak to dopadne. > Osobně považuji použití objektů k dekoraci za nešťastné. Metoda "uzávěra v > uzávěře" sice vypadá zezačátku děsivě, ale je aspoň přímočará a dá se pochopit > co se děje uvnitř. Objekty jen nahradí jednu složitost jinou (kolik lidí chápe > nuance metod __call__, __new__ a __init__?). No jde o to, že jsem neviděl dost příkladů abych si udělal obrázek. Jedno z prvních vysvělení dekorátorů které jsem viděl používalo třídu s odůvodněním že je to mnohem snažší na pochopení, tak jsem se toho držel. Můžu zkusit svůj případ přepsat s použítí třídy na použítí funkce. Ale nebude to možná mít ten správný efekt, protože jsem ostrý okód tak refaktorizoval, že z něj už moc nezbylo. (Jak jsem zmiňoval, původně tam byly další dvě metody které se volaly). Další věc je, že mám někde v hlavě špendílček zaražený k dekorátoru že bych mohl využít dědičnost při tvorbě různých druhů authorizačních dekorátorů. Jako že základní princip a pak BasicHTTP, Session, ..... poděděné z něj. From prikryl na atlas.cz Tue Feb 22 09:32:09 2011 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Tue, 22 Feb 2011 09:32:09 +0100 Subject: [python] Kniha "dive into python3" Message-ID: <20110222083209.92D2B18003D57@mail1006.cent> No, taky jsem byl zvědavý. Představoval jsem si, že by ta sazba mohla dopadnout líp :( Tak snad se vám bude líbit aspoň ten věcný obsah. P. ______________________________________________________________ > Od: "David Rohleder" > Komu: Konference PyCZ > Datum: 21.02.2011 11:57 > Předmět: Re: [python] Fwd: [CZ.NIC #107337] kniha "dive into python3" > >Super, ještě přidám odkaz: >http://knihy.nic.cz/ > >jsem moc zvědavý, jak to dopadlo. > >D. > >rainbof píše v Po 21. 02. 2011 v 10:33 +0000: >> Viola... >> ---------- Přeposlaná zpráva ---------- >> Od: Zuzana Pochopová via RT >> Datum: >> Předmět: [CZ.NIC #107337] kniha "dive into python3" >> Komu: rainbof na gmail.com >> Kopie: >> >> >> > Vazeny zakazniku, >> > >> > >> > >> > kniha Dive into python dnes prave vysla a jeji prodej bude zahajen >> behem dneska >> > >> > ci zitrka. >> > >> > >> > >> > S pozdravem >> > >> > >> > >> > -- >> > >> > Zuzana Pochopova >> > >> > supervizor zakaznicke podpory >> > >> > >> > >> > CZ.NIC, z. s. p. o. >> > >> > Americka 23, 120 00 Praha 2 >> > >> > ------------------------------ >> > >> > >> > >> > T +420 222 745 126 >> > >> > +420 222 745 111 >> > >> > F +420 222 745 112 >> > >> > e-mail : zuzana.pochopova na nic.cz >> > >> > www.nic.cz >> > >> > ------------------------------ >> > >> > >> > >> > www.mojeID.cz - vaše bezpečná webová identita >> > >> > >> > >> > Dne So 19.úno.2011 19:59:33, dstrakova napsal(a): >> > >> > > Vazeny pane "Rainbofe", >> > >> > > >> > >> > > Vase zprava byla prijata pracovnikem zakaznicke podpory a predana >> > >> > > kompetentni >> > >> > > osobe k vyrizeni v pondeli 21.02.2011. Vyckejte prosim odpovedi. >> > >> > > >> > >> > > Dekujeme Vam za pochopeni a jsme s pozdravem >> > >> > > >> > >> > > >> > >> > > -- >> > >> > > Darina Strakova >> > >> > > specialista zakaznicke podpory >> > >> > > >> > >> > > CZ.NIC, z. s. p. o. >> > >> > > Americka 23, 120 00 Praha 2 >> > >> > > ------------------------------ >> > >> > > Tel.: +420 222 745 102 >> > >> > > +420 222 745 111 >> > >> > > Fax: +420 222 745 112 >> > >> > > >> > >> > > E-mail: darina.strakova na nic.cz >> > >> > > www.nic.cz >> > >> > > >> > >> > > www.mojeID.cz - vaše bezpečná webová identita >> > >> > > >> > >> > > >> > >> > > >> > >> > > >> > >> > > Dne So 19.úno.2011 09:59:02, rainbof na gmail.com napsal(a): >> > >> > > > Dobrý den, >> > >> > > > >> > >> > > > sledoval jsem loni překlad knihy dive into python >> > >> > > > >> http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive- >> > >> > > into- >> > >> > > > python-3/ktera >> > >> > > > ceka na vydani prave ve vasi edici chtel bych se zeptat jak to >> > >> > > vypada >> > >> > > > s jejim vydanim. >> > >> > >> > >> _______________________________________________ >> Python mailing list >> Python na py.cz >> http://www.py.cz/mailman/listinfo/python > > >_______________________________________________ >Python mailing list >Python na py.cz >http://www.py.cz/mailman/listinfo/python > From Ctibor.Plasek na seznam.cz Tue Feb 22 09:51:27 2011 From: Ctibor.Plasek na seznam.cz (=?us-ascii?Q?Ctibor=2EPlasek?=) Date: Tue, 22 Feb 2011 09:51:27 +0100 (CET) Subject: [python] Kniha "dive into python3" In-Reply-To: <20110222083209.92D2B18003D57@mail1006.cent> Message-ID: <15673.3451.1427-6704-628796817-1298364687@seznam.cz> Kniha je super !!! Díky moc. > ------------ Původní zpráva ------------ > Od: Petr Přikryl > Předmět: Re: [python] Kniha "dive into python3" > Datum: 22.2.2011 09:32:18 > ---------------------------------------- > > No, taky jsem byl zvědavý. Představoval jsem si, > že by ta sazba mohla dopadnout líp :( > Tak snad se vám bude líbit aspoň ten věcný obsah. > > P. > ______________________________________________________________ > > Od: "David Rohleder" > > Komu: Konference PyCZ > > Datum: 21.02.2011 11:57 > > Předmět: Re: [python] Fwd: [CZ.NIC #107337] kniha "dive into python3" > > > >Super, ještě přidám odkaz: > >http://knihy.nic.cz/ > > > >jsem moc zvědavý, jak to dopadlo. > > > >D. > > > >rainbof píše v Po 21. 02. 2011 v 10:33 +0000: > >> Viola... > >> ---------- Přeposlaná zpráva ---------- > >> Od: Zuzana Pochopová via RT > >> Datum: > >> Předmět: [CZ.NIC #107337] kniha "dive into python3" > >> Komu: rainbof na gmail.com > >> Kopie: > >> > >> > >> > Vazeny zakazniku, > >> > > >> > > >> > > >> > kniha Dive into python dnes prave vysla a jeji prodej bude zahajen > >> behem dneska > >> > > >> > ci zitrka. > >> > > >> > > >> > > >> > S pozdravem > >> > > >> > > >> > > >> > -- > >> > > >> > Zuzana Pochopova > >> > > >> > supervizor zakaznicke podpory > >> > > >> > > >> > > >> > CZ.NIC, z. s. p. o. > >> > > >> > Americka 23, 120 00 Praha 2 > >> > > >> > ------------------------------ > >> > > >> > > >> > > >> > T +420 222 745 126 > >> > > >> > +420 222 745 111 > >> > > >> > F +420 222 745 112 > >> > > >> > e-mail : zuzana.pochopova na nic.cz > >> > > >> > www.nic.cz > >> > > >> > ------------------------------ > >> > > >> > > >> > > >> > www.mojeID.cz - vaše bezpečná webová identita > >> > > >> > > >> > > >> > Dne So 19.úno.2011 19:59:33, dstrakova napsal(a): > >> > > >> > > Vazeny pane "Rainbofe", > >> > > >> > > > >> > > >> > > Vase zprava byla prijata pracovnikem zakaznicke podpory a predana > >> > > >> > > kompetentni > >> > > >> > > osobe k vyrizeni v pondeli 21.02.2011. Vyckejte prosim odpovedi. > >> > > >> > > > >> > > >> > > Dekujeme Vam za pochopeni a jsme s pozdravem > >> > > >> > > > >> > > >> > > > >> > > >> > > -- > >> > > >> > > Darina Strakova > >> > > >> > > specialista zakaznicke podpory > >> > > >> > > > >> > > >> > > CZ.NIC, z. s. p. o. > >> > > >> > > Americka 23, 120 00 Praha 2 > >> > > >> > > ------------------------------ > >> > > >> > > Tel.: +420 222 745 102 > >> > > >> > > +420 222 745 111 > >> > > >> > > Fax: +420 222 745 112 > >> > > >> > > > >> > > >> > > E-mail: darina.strakova na nic.cz > >> > > >> > > www.nic.cz > >> > > >> > > > >> > > >> > > www.mojeID.cz - vaše bezpečná webová identita > >> > > >> > > > >> > > >> > > > >> > > >> > > > >> > > >> > > > >> > > >> > > Dne So 19.úno.2011 09:59:02, rainbof na gmail.com napsal(a): > >> > > >> > > > Dobrý den, > >> > > >> > > > > >> > > >> > > > sledoval jsem loni překlad knihy dive into python > >> > > >> > > > > >> http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive- > >> > > >> > > into- > >> > > >> > > > python-3/ktera > >> > > >> > > > ceka na vydani prave ve vasi edici chtel bych se zeptat jak to > >> > > >> > > vypada > >> > > >> > > > s jejim vydanim. > >> > > >> > > >> > > >> _______________________________________________ > >> Python mailing list > >> Python na py.cz > >> http://www.py.cz/mailman/listinfo/python > > > > > >_______________________________________________ > >Python mailing list > >Python na py.cz > >http://www.py.cz/mailman/listinfo/python > > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > > > From radek.hnilica na gmail.com Tue Feb 22 11:22:46 2011 From: radek.hnilica na gmail.com (Radek) Date: Tue, 22 Feb 2011 02:22:46 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: On 21 ún, 23:00, Radek wrote: > On 21 ún, 15:01, Hynek Fabian wrote: > > > Radek (Wednesday 16 of February 2011 15:23:07):> nejdřív bych se uvedl, jsem takový opakovaný začátečník,  k Pythonu > > > jsem naposled přičichl možná před osmi lety a nic moc.  Teď, asi tři > > > měsíce zpátky jsem se k němu vrátil, protože si hraju s GAE/P.  Přes > > > všechny problémy se zkouším prokousávat, ikdyž python bolí, > > > Něco děláš špatně. Kde to bolí? > > To je na takové to domácí popovídání. > ... ono to asi vypadá že si moc stěžuju, ale já hledám způsoby jak zvládnout Python Něco o parametrizovaných dekorátorech jsem si už napsal, a teď to přepisuju aby to měl tvar a bylo pochopitelné. Viz http://www.hnilica.cz/tmp/google/Python.metadecorator.html Je tam ukázka metadekorátoru realizovaného třídou. Je tam ve formě šablony. Na tomto tvaru je hezké to že nedochází k vícenásobnému zanořování method do sebe jak to vypadá když se použijí funkce. Musím pohledat odkaz na netu který mne k tomu přivedl. Účelem toho je dosáhnout dostatečně jednoduchého a srozumitelného popisu. From hslists na zoznam.sk Tue Feb 22 21:34:43 2011 From: hslists na zoznam.sk (=?ISO-8859-2?B?UvNiZXJ0IMhlcvJhbnNr/Q==?=) Date: Tue, 22 Feb 2011 21:34:43 +0100 Subject: [python] =?iso-8859-2?q?Dekor=E1tor?= In-Reply-To: References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: <20110222213443.224ba803@amit.kihnet.sk> On Mon, 21 Feb 2011 14:00:26 -0800 (PST) Radek wrote: > Co mě opravdu dostalo, a to jsem měl chuť projít stropem, byla práce > s časem. Potřeboval jsem jednoduchou věc, vzít časovou/datumovou > informaci od uživatele a udělat z ní časový objekt. Ke své hrůze > jsem zjistil, že to tak nějak nejde. [...] > že to umí metoda strptime a je to popsáno v dokumentaci. Opětovně > po několikáté jsem velmi pečlivě četl tu stránku v dokumentaci a > nechápal, protože strptime je na tohle absolutně nepoužitelná. Ono, strptime naozaj konvertuje reťazec do datetime: >>> datetime.strptime("22. 2. 2011", "%d. %m. %Y") datetime.datetime(2011, 2, 22, 0, 0) Ale možno si potreboval niečo sofistikovanejšie, čo odhadne formát automaticky a pod. > I chtěl bych třeba, k danému objaktu, znát všechny metody a > vlastnosti co má. A neumím nikde najít takový přehled. Takový > přehled jako má například dokumentace k Ruby. Nakliknout si > Modul/Objekt a dostanu metody. Nakliknu metodu a mám podrobný popis > k čemu že vlastně slouží, jak se jí dávají parametry a ukázkou > několika použití. Pythonovský shell IDLE vie po stlačení Ctrl+Medzerník za bodkou zobraziť zoznam členov daného objektu. Taktiež môžeš napísať help() a dostaneš výpis jeho členov aj so stručnými popismi. Prípadne help() zobrazí jej, v drvivej väčšine bohužiaľ stručný, popis. Klikať sa dá v browseri keď pustíš príkaz ?pydoc -g?, ale sú to tie isté stručné popisy, čo pre help(). :-( Tiež by som privítal aby API dokumentácia bola podrobnejšia. Ja rád používam shell PyCrust, ktorý je súčasťou wxPython. Okrem dopĺňania (ponuky členov objektu) a tooltipov s helpom umožňuje zobraziť aj zdroják k objektu ak je v Pythone. Viac ma ale trápi to, že operácie, ktoré sa dajú s daným typom objektu robiť treba hľadať na niekoľkých miestach. Hlavne je nevýhoda, že Python má kopec ?voľne pohodených? built-in funkcií a keď chcem vedieť operácie napr. s listom, tak okrem jeho metód sa ešte musím prehrabať množstvom built-in funkcií, ktoré zďaleka nie sú všetky o liste. Plus treba pozrieť modul itertools. > Něco jak seznam.join(','). Tohle je naštěstí tak profláknuté, že už > jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho > pole. Tak nie som jedný, komu sa zdá, že to má Python opačne. :-) Robo -- Robert Cernansky E-mail: hslists na zoznam.sk Jabber: hs na jabber.sk From vojta.rylko na seznam.cz Tue Feb 22 21:46:27 2011 From: vojta.rylko na seznam.cz (=?UTF-8?B?Vm9qdMSbY2ggUnlsa28=?=) Date: Tue, 22 Feb 2011 21:46:27 +0100 Subject: [python] =?utf-8?q?Dekor=C3=A1tor?= In-Reply-To: <20110222213443.224ba803@amit.kihnet.sk> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <20110222213443.224ba803@amit.kihnet.sk> Message-ID: <4D6420A3.7070304@seznam.cz> Dne 22.2.2011 21:34, Róbert Čerňanský napsal(a): > čo odhadne formát > automaticky Doporučuji zdrojové kódy feedparseru. http://www.feedparser.org/docs/date-parsing.html Vojtěch Rylko From radek.hnilica na gmail.com Wed Feb 23 00:54:39 2011 From: radek.hnilica na gmail.com (Radek) Date: Tue, 22 Feb 2011 15:54:39 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <20110222213443.224ba803@amit.kihnet.sk> Message-ID: <69c4b73a-dcf8-4306-9a2f-38be428788b8@u12g2000vbf.googlegroups.com> On 22 ún, 21:46, Vojtěch Rylko wrote: > Doporučuji zdrojové kódy feedparseru.http://www.feedparser.org/docs/date-parsing.html Dík za radu, ale momentálně jsem si problém vyřešil externí knihovnou dateutil. Prohledal jsem PyPi a několik knihoven zkusil. > Vojtěch Rylko From radek.hnilica na gmail.com Wed Feb 23 00:51:42 2011 From: radek.hnilica na gmail.com (Radek) Date: Tue, 22 Feb 2011 15:51:42 -0800 (PST) Subject: [python] =?iso-8859-1?q?Dekor=E1tor?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> Message-ID: <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> On 22 ún, 21:34, "Róbert Čerňanský" wrote: > Ono, strptime naozaj konvertuje reťazec do datetime: o tom není pochyb, tak to stojí v dokumentaci > >>> datetime.strptime("22. 2. 2011", "%d. %m. %Y") > datetime.datetime(2011, 2, 22, 0, 0) :) perfektní přesná odpověď, ale na úplně jinou otázku ;) > Ale možno si potreboval niečo sofistikovanejšie, čo odhadne formát > automaticky a pod. Přesně, nemohu předvídat co napíše uživatel do vstupu. Momentálně používám externí knihovnu dateutil. > Pythonovský shell IDLE vie po stlačení Ctrl+Medzerník za bodkou > zobraziť zoznam členov daného objektu. ehm.... ten seznam je jaksi velmi krátky. odhadem mi zatajuje cca 80% metod. nejspíš to bude tím že jejich jména začínají znakem _ > Taktiež môžeš napísať > help() a dostaneš výpis jeho členov aj so stručnými popismi. to už vypadá líp. dokonce to ukáže všechny metody. A navíc ten příkaz funguje i v ipython > Prípadne help() zobrazí jej, v drvivej väčšine bohužiaľ > stručný, popis. Klikať sa dá v browseri keď pustíš príkaz "pydoc > -g", ale sú to tie isté stručné popisy, čo pre help(). :-( Tiež by > som privítal aby API dokumentácia bola podrobnejšia. jo pydoc ukazuje to samé co help() z ipython/idle. pydoc je sice hrůza, ale je to lepší než drátem do oka. > Ja rád používam shell PyCrust, ktorý je súčasťou wxPython. Okrem > dopĺňania (ponuky členov objektu) a tooltipov s helpom umožňuje > zobraziť aj zdroják k objektu ak je v Pythone. nainstaloval jsem, dík za dobrý tip. Tedy na první pohled vypadá dobře. > Viac ma ale trápi to, že operácie, ktoré sa dajú s daným typom objektu > robiť treba hľadať na niekoľkých miestach. Hlavne je nevýhoda, že > Python má kopec "voľne pohodených" built-in funkcií a keď chcem vedieť > operácie napr. s listom, tak okrem jeho metód sa ešte musím prehrabať > množstvom built-in funkcií, ktoré zďaleka nie sú všetky o liste. Plus > treba pozrieť modul itertools. .... ani nekomentovat.... mám s tím stejný problém > > Něco jak seznam.join(','). Tohle je naštěstí tak profláknuté, že už > > jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho > > pole. > > Tak nie som jedný, komu sa zdá, že to má Python opačne. :-) já jsem stráášně rozmlsaný z Ruby kde všechno má svou logiku. Po nějaké chvíli člověk začne psát příkazy/metody intuitivně bez konzultace s dokumentací a všechno funguje. > Robo From prikryl na atlas.cz Wed Feb 23 07:48:33 2011 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Wed, 23 Feb 2011 07:48:33 +0100 Subject: [python] Nefunguje mailman? Message-ID: <20110223064833.3A53918003D30@mail1006.cent> Ahoj všeci, Ptal se mě kolega, jak se odhlásit z python na py.cz (má to komplikovanější). Nedokázal jsem mu poradit, protože http://www.py.cz/mailman/listinfo/python nějak nefunguje. (404, Nastala chyba DNS. Server nenalezen. Odkaz může být nefunkční... a takové ty kecy.) Můžete se na to někdo mrknout? Díky, P. From prikryl na atlas.cz Wed Feb 23 08:08:44 2011 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Wed, 23 Feb 2011 08:08:44 +0100 Subject: [python] =?utf-8?b?KG5lKWxvZ2nEjW5vc3QgLmpvaW4oKSA/?= In-Reply-To: <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> Message-ID: <20110223070844.ECDBA19625@mail1013.cent> >> > Něco jak seznam.join(','). Tohle je naštěstí tak profláknuté, že už >> > jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho >> > pole. >> >> Tak nie som jedný, komu sa zdá, že to má Python opačne. :-) > >já jsem stráášně rozmlsaný z Ruby kde všechno má svou logiku. Po >nějaké chvíli člověk začne psát příkazy/metody intuitivně bez >konzultace s dokumentací a všechno funguje. Každý má jiný pohled na věc a jiná očekávání. Podle mého názoru je přístup typu ','.join(kontejner) možná na první pohled nezvyklý, ale na druhý pohled je velmi logický. Jde o to, že dokáže spojit zadaným řetězcem prvky dodané jakýmkoliv kontejnerem, který podporuje iteraci a který vrací řetězcové prvky. A co se týká "volně rozhozených built-in funkcí", ono jich zase tak strašně moc není. Nezvyklé je to hlavně pro lidi, kteří pracovali v čistě OO jazyce, který funkce nepodporuje. Viz tady http://docs.python.org/library/functions.html P. From konference na brabenec.net Wed Feb 23 08:11:42 2011 From: konference na brabenec.net (Tomas Brabenec) Date: Wed, 23 Feb 2011 08:11:42 +0100 Subject: [python] =?iso-8859-2?q?=28ne=29logi=E8nost_=2Ejoin=28=29_=3F?= In-Reply-To: <20110223070844.ECDBA19625@mail1013.cent> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> <20110223070844.ECDBA19625@mail1013.cent> Message-ID: <4D64B32E.2020503@brabenec.net> Dne 23.2.2011 8:08, Petr Přikryl napsal(a): >>>> Něco jak seznam.join(','). Tohle je naštěstí tak profláknuté, že už >>>> jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho >>>> pole. >>> Tak nie som jedný, komu sa zdá, že to má Python opačne. :-) >> já jsem stráášně rozmlsaný z Ruby kde všechno má svou logiku. Po >> nějaké chvíli člověk začne psát příkazy/metody intuitivně bez >> konzultace s dokumentací a všechno funguje. > Každý má jiný pohled na věc a jiná očekávání. Podle mého názoru > je přístup typu ','.join(kontejner) možná na první pohled nezvyklý, > ale na druhý pohled je velmi logický. Jde o to, že dokáže spojit > zadaným řetězcem prvky dodané jakýmkoliv kontejnerem, > který podporuje iteraci a který vrací řetězcové prvky. Souhlasím, mě osobně to přijde naprosto logické. Je to skutečně o úhlu pohledu a zvyklostech jazyka :-D T. From vinil na zagamma.cz Wed Feb 23 08:29:07 2011 From: vinil na zagamma.cz (ViNiL) Date: Wed, 23 Feb 2011 08:29:07 +0100 Subject: [python] Nefunguje mailman? In-Reply-To: <20110223064833.3A53918003D30@mail1006.cent> References: <20110223064833.3A53918003D30@mail1006.cent> Message-ID: <4D64B743.7040104@zagamma.cz> On 2/23/2011 7:48 AM, Petr Přikryl wrote: > > Ahoj všeci, > > Ptal se mě kolega, jak se odhlásit z python na py.cz (má to > komplikovanější). Nedokázal jsem mu poradit, protože > > http://www.py.cz/mailman/listinfo/python Mea culpa. Uz by to melo fungovat. Jinak z mailing listu se lze odhlasit i e-mailem na adrese list-leave na ..., tedy: python-leave na py.cz V. From rainbof na gmail.com Wed Feb 23 10:52:03 2011 From: rainbof na gmail.com (Ondrej Beranek) Date: Wed, 23 Feb 2011 10:52:03 +0100 Subject: [python] =?iso-8859-2?q?=28ne=29logi=E8nost_=2Ejoin=28=29_=3F?= In-Reply-To: <4D64B32E.2020503@brabenec.net> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> <20110223070844.ECDBA19625@mail1013.cent> <4D64B32E.2020503@brabenec.net> Message-ID: a tim i programátora. Tedy zbývá jen vyřešit zda byla první slepice nebo vjece :) 2011/2/23 Tomas Brabenec > Dne 23.2.2011 8:08, Petr Přikryl napsal(a): > > Něco jak seznam.join(','). Tohle je naštěstí tak profláknuté, že už >>>>> jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho >>>>> pole. >>>>> >>>> Tak nie som jedný, komu sa zdá, že to má Python opačne. :-) >>>> >>> já jsem stráášně rozmlsaný z Ruby kde všechno má svou logiku. Po >>> nějaké chvíli člověk začne psát příkazy/metody intuitivně bez >>> konzultace s dokumentací a všechno funguje. >>> >> Každý má jiný pohled na věc a jiná očekávání. Podle mého názoru >> je přístup typu ','.join(kontejner) možná na první pohled nezvyklý, >> ale na druhý pohled je velmi logický. Jde o to, že dokáže spojit >> zadaným řetězcem prvky dodané jakýmkoliv kontejnerem, >> který podporuje iteraci a který vrací řetězcové prvky. >> > Souhlasím, mě osobně to přijde naprosto logické. Je to skutečně o úhlu > pohledu a zvyklostech jazyka :-D > > > T. > > _______________________________________________ > Python mailing list > Python na py.cz > http://www.py.cz/mailman/listinfo/python > ------------- další část --------------- HTML příloha byla odstraněna... URL: From radek.hnilica na gmail.com Wed Feb 23 11:29:36 2011 From: radek.hnilica na gmail.com (Radek) Date: Wed, 23 Feb 2011 02:29:36 -0800 (PST) Subject: [python] =?iso-8859-2?q?=28ne=29logi=E8nost_=2Ejoin=28=29_=3F?= References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> Message-ID: <8d3c4d79-d840-4410-9fc3-519899421d9a@w36g2000vbi.googlegroups.com> On 23 ún, 08:08, "Petr Přikryl" wrote: > Každý má jiný pohled na věc a jiná očekávání. Podle mého názoru > je přístup typu ','.join(kontejner) možná na první pohled nezvyklý, > ale na druhý pohled je velmi logický. Jde o to, že dokáže spojit > zadaným řetězcem prvky dodané jakýmkoliv kontejnerem, > který podporuje iteraci a který vrací řetězcové prvky. Zajisté, pro implemetátora má smysl to definovat na jednom místě. Takže by byl dobrý mixin nebo třída která implementuje metody nad iterabilními kontejnery, a ty iterabilní kontejnery podědí nebo si ty metody mixnou. Ale když pracujete tak chcete psat něco jako neco.jeho_kolekce.transform.sort.jeste_transform.join a nemáte chuť psát join(neco.jeho_kolekce.transform.sort.jeste_transform) obzvláště když ten řetězec chcete na tečce dále zpracovávat. neco.jeho_kolekce.transform.sort.jeste_transform.join.strip.jiny_transform.split když to pak přepíšete do závorkové notace, tak je to nečitelné, protože v závorkové notaci se píše doleva a v tečkové doprava. Pár takových závorek v tečkovaném výrazu a nevyzná se v tom ani zvíře které to má v popisu práce. A nebo jinak. Kolikrát v životě jste potřebovali aplikovat join na řetězec v tečce? Já si nepamatuju jediný případ. > A co se týká "volně rozhozených built-in funkcí", ono jich zase > tak strašně moc není. Nezvyklé je to hlavně pro lidi, kteří > pracovali v čistě OO jazyce, který funkce nepodporuje jo, asi tak nějak. Teď by bodl dokument: "Jak zobjektit Python v místech kde se tomu brání, resp. kde to ještě nikdo neudělal." To je asi to nejtrefnější: Přesně v místech kdy Python nesleduje objektové principy to bolí, a strašně. From selwynscoachhire na gmail.com Fri Feb 25 11:52:17 2011 From: selwynscoachhire na gmail.com (BROAD) Date: Fri, 25 Feb 2011 02:52:17 -0800 (PST) Subject: [python] BIRTHDAY CARDS References: <202882b7-3f71-4163-815c-172d3586ee78@j25g2000vbs.googlegroups.com> Message-ID: <4643a02a-277a-4b27-a197-590082eaf207@z27g2000prz.googlegroups.com> The ECO Gifts Store is a one-stop-shop for recycled promo products and environmentally friendly items. Eco promo gifts that can help them meet their environment policies and corporate social responsibilities. http://www.ecogiftsstore.co.uk/ From hynek.fabian na firma.seznam.cz Fri Feb 25 19:32:47 2011 From: hynek.fabian na firma.seznam.cz (Hynek Fabian) Date: Fri, 25 Feb 2011 19:32:47 +0100 Subject: [python] dekorovany dekorator Message-ID: <201102251932.47998.hynek.fabian@firma.seznam.cz> Napadla mě lehce šílená myšlenka v souvislosti s nedávnou debatou o dekorátorech ? nešlo by zařídit aby argumenty dekorátoru byly tam, kde je všichni z nějakého záhadného důvodu očekáváme? --- cut here --- def plaindecorator(deco): def argeater(*args, **kargs): def funceater(fce): return deco(fce, *args, **kargs) return funceater return argeater # zkouska @plaindecorator def spam(fce, pwd): def wrapper(*args, **kargs): if pwd == raw_input("Password: "): return fce(*args, **kargs) else: raise RuntimeError("Piss off") return wrapper @spam("it") def ham(x): print x --- cut here --- Dekorátor dekorátoru. Teď už mě v pythonu nepřekvapí nic. From Michalek.Jan na uhul.cz Mon Feb 28 09:40:58 2011 From: Michalek.Jan na uhul.cz (=?iso-8859-2?Q?MICH=C1LEK_Jan_Mgr=2E?=) Date: Mon, 28 Feb 2011 09:40:58 +0100 Subject: [python] =?iso-8859-2?q?Zpracov=E1n=ED_textu=2C_kterej_obsahuje_z?= =?iso-8859-2?q?p=ECtn=E1_lom=EDtka?= Message-ID: <913F77222E913C49A057FDD7BBDEAAA3018A30D2@br-dc.uhul.wan> Ahojte Mám výše zmíněnej problém, zpracovávám text, kterej obsahuje zpětný lomítka a jde mi o to, ze python to vnima jako escape a ja nevim jak to osetrit. Text je semicolon separated, textový položky jsou v uvozovkách, takže, když mám ...;'\'; tak mě to celej program pobourá. Nemáte někdo nějakou fintu jak to udělat?? Nejlepší by bylo, kdybych ten řádek hned po načtení oescapoval, na to by něco mohlo bejt. Když to ale zkoušim pomocí replace, tak mi to nevošetří ty místa, kde za tim je něco, co se escapuje (například uvozovka apod.). Jediný, na co jsem přišel bylo to projet před spuštěním sedem, ale jsou to gigový soubory, trvá to pak moc dlouho. Dáte mi někdo dobrej tip?? Díky Je. ------------- další část --------------- HTML příloha byla odstraněna... URL: From zu1234 na seznam.cz Mon Feb 28 10:22:05 2011 From: zu1234 na seznam.cz (zu1234) Date: Mon, 28 Feb 2011 10:22:05 +0100 Subject: [python] =?utf-8?q?Zpracov=C3=A1n=C3=AD_textu=2C_kterej_obsahuje_?= =?utf-8?b?enDEm3Ruw6EgbG9tw610a2E=?= In-Reply-To: <913F77222E913C49A057FDD7BBDEAAA3018A30D2@br-dc.uhul.wan> References: <913F77222E913C49A057FDD7BBDEAAA3018A30D2@br-dc.uhul.wan> Message-ID: <4D6B693D.5040801@seznam.cz> Co nefunguje na replace? XXX = r"\ \s \\ \n" print XXX print XXX.replace("\\", '-') \ \s \\ \n - -s -- -n ? ZU Dne 28.2.2011 9:40, MICHÁLEK Jan Mgr. napsal(a): > Ahojte > > Mám výše zmíněnej problém, zpracovávám text, kterej obsahuje zpětný > lomítka a jde mi o to, ze python to vnima jako escape a ja nevim jak to > osetrit. > > Text je semicolon separated, textový položky jsou v uvozovkách, takže, > když mám ?;?\?; tak mě to celej program pobourá. Nemáte někdo nějakou > fintu jak to udělat?? Nejlepší by bylo, kdybych ten řádek hned po > načtení oescapoval, na to by něco mohlo bejt. Když to ale zkoušim pomocí > replace, tak mi to nevošetří ty místa, kde za tim je něco, co se > escapuje (například uvozovka apod.). > > Jediný, na co jsem přišel bylo to projet před spuštěním sedem, ale jsou > to gigový soubory, trvá to pak moc dlouho. > > Dáte mi někdo dobrej tip?? > > Díky Je. From Michalek.Jan na uhul.cz Mon Feb 28 10:33:32 2011 From: Michalek.Jan na uhul.cz (=?iso-8859-2?Q?MICH=C1LEK_Jan_Mgr=2E?=) Date: Mon, 28 Feb 2011 10:33:32 +0100 Subject: [python] =?iso-8859-2?q?Zpracov=E1n=ED_textu=2C_kterej_obsahuje_z?= =?iso-8859-2?q?p=ECtn=E1_lom=EDtka?= In-Reply-To: <4D6B693D.5040801@seznam.cz> References: <913F77222E913C49A057FDD7BBDEAAA3018A30D2@br-dc.uhul.wan> <4D6B693D.5040801@seznam.cz> Message-ID: <913F77222E913C49A057FDD7BBDEAAA3018A30D3@br-dc.uhul.wan> Díky Já tam neměl to 'r', sem pitomej, ono se mi to načítá jako raw, ale já sem s tim ještě před tim replacem něco prováděl (spojoval řádky) a tim jsem to pohnojil. Už to snad chodí, teď to zkouším. Je. -----Original Message----- From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of zu1234 Sent: Monday, February 28, 2011 10:22 AM To: Konference PyCZ Subject: Re: [python] Zpracování textu, kterej obsahuje zpětná lomítka Co nefunguje na replace? XXX = r"\ \s \\ \n" print XXX print XXX.replace("\\", '-') \ \s \\ \n - -s -- -n ? ZU Dne 28.2.2011 9:40, MICHÁLEK Jan Mgr. napsal(a): > Ahojte > > Mám výše zmíněnej problém, zpracovávám text, kterej obsahuje zpětný > lomítka a jde mi o to, ze python to vnima jako escape a ja nevim jak to > osetrit. > > Text je semicolon separated, textový položky jsou v uvozovkách, takže, > když mám ...;'\'; tak mě to celej program pobourá. Nemáte někdo nějakou > fintu jak to udělat?? Nejlepší by bylo, kdybych ten řádek hned po > načtení oescapoval, na to by něco mohlo bejt. Když to ale zkoušim pomocí > replace, tak mi to nevošetří ty místa, kde za tim je něco, co se > escapuje (například uvozovka apod.). > > Jediný, na co jsem přišel bylo to projet před spuštěním sedem, ale jsou > to gigový soubory, trvá to pak moc dlouho. > > Dáte mi někdo dobrej tip?? > > Díky Je. _______________________________________________ Python mailing list Python na py.cz http://www.py.cz/mailman/listinfo/python __________ Informace od ESET NOD32 Antivirus, verze databaze 5912 (20110227) __________ Tuto zpravu proveril ESET NOD32 Antivirus. http://www.eset.cz __________ Informace od ESET NOD32 Antivirus, verze databaze 5912 (20110227) __________ Tuto zpravu proveril ESET NOD32 Antivirus. http://www.eset.cz From prikryl na atlas.cz Mon Feb 28 15:38:41 2011 From: prikryl na atlas.cz (=?UTF-8?B?UGV0ciBQxZlpa3J5bA==?=) Date: Mon, 28 Feb 2011 15:38:41 +0100 Subject: [python] =?utf-8?b?KG5lKWxvZ2nEjW5vc3QgLmpvaW4oKSA/?= In-Reply-To: <8d3c4d79-d840-4410-9fc3-519899421d9a@w36g2000vbi.googlegroups.com> References: <0f66724d-5a70-4be2-8f65-588d92b304d3@h40g2000pre.googlegroups.com> <59028223-b8ea-445a-895b-2ef577f8864c@u6g2000vbh.googlegroups.com> <8d3c4d79-d840-4410-9fc3-519899421d9a@w36g2000vbi.googlegroups.com> Message-ID: <20110228143841.23E2A60006DB@mail1012.cent> Trochu popřehazuji pořadí... "Radek" napsal... > On 23 ún, 08:08, "Petr Přikryl" wrote: >> A co se týká "volně rozhozených built-in funkcí", >> ono jich zase tak strašně moc není. Nezvyklé je >> to hlavně pro lidi, kteří pracovali v čistě OO >> jazyce, který funkce nepodporuje > > jo, asi tak nějak. Teď by bodl dokument: "Jak > zobjektit Python v místech kde se tomu brání, > resp. kde to ještě nikdo neudělal." > > To je asi to nejtrefnější: Přesně v místech kdy > Python nesleduje objektové principy to bolí, a > strašně. Ono je trošku problematické říci, že Python nesleduje objektové principy. V Pythonu je totiž objektem všechno. Podle mého názoru dogma čistě objektového přístupu, kdy je veškerá funkčnost realizována metodami objektů, neodpovídá realitě, která nás obklopuje. Neodpovídá ani matematickým abstrakcím, které nás obklopují od základní školy. Pokud vás tedy něco "strašně bolí", pak je to porušení oněch dogmat, které byste si přál bezhlavě následovat. Metody tříd jsou formálním způsobem popisu chování objektů dané třídy. Vychází se z poznatku, že při formálním zápisu transformace vnitřního stavu objektu uděláme méně chyb, když popis spojíme s abstrakcí objektu dané třídy. Vychází to ze zkušenosti, že například v určitém kontextu se celé číslo musí chápat jako letopočet a ne jako počet kusů něčeho nebo jako zcela abstraktní číslo. Až potud nelze nic namítat. Existují ale situace, kdy chceme s určitou hodnotou pracovat jako s velmi abstraktní hodnotou -- jaksi "bez kontextu" --, kdy jí chceme interpretaci přidělit až v okamžiku zpracování. Dám příklad. Mnohé reálné objekty lze v určitých situacích popsat vektorem v trojrozměrném prostoru. Přirozeným způsobem můžeme dojít k nějakému dejme tomu geometrickému "úhlu", který je prostě úhlem bez bližší vazby na konkrétní objekt. Dejme tomu, že na daný úhel potřebujeme aplikovat to, čemu od základní školy říkáme funkce sinus. V takové situaci je velmi obtížné považovat zápis objekt.vektor.úhel.sin() za přirozené vyjádření toho, co nás u onoho úhlu daného objektu zajímá. Mnohem přirozenější pro nás je zápis, kdy se úhel stane argumentem obecné funkce sin(). >> Každý má jiný pohled na věc a jiná očekávání. >> Podle mého názoru je přístup typu >> ','.join(kontejner) možná na první pohled >> nezvyklý, ale na druhý pohled je velmi logický. >> Jde o to, že dokáže spojit zadaným řetězcem prvky >> dodané jakýmkoliv kontejnerem, který podporuje >> iteraci a který vrací řetězcové prvky. > > Zajisté, pro implemetátora má smysl to definovat > na jednom místě. Takže by byl dobrý mixin nebo > třída která implementuje metody nad iterabilními > kontejnery, a ty iterabilní kontejnery podědí nebo > si ty metody mixnou. Tohle je jen technický detail, který umožní svázat nějakou operaci s nějakou třídou objektu. Pořád bychom si měli uvědomovat, že tečková notace používaná u OO jazyků je pouze notací, která má usnadnit vnímání náležitosti metod k objektům. Taková notace je přínosná v situacích, kdy máme pocit, že je její přínos přirozený. Tím mám na mysli to, že zápis pokud možno snadno pochopí i ten (se stručným návodem), kdo takový zápis vidí poprvé. > Ale když pracujete tak chcete psat něco jako > > neco.jeho_kolekce.transform.sort.jeste_transform.join Tohle považuji za poměrně nešťastné v jakémkoliv OO jazyce. Přesněji, netýká se to jazyka, ale jeho používání. Nezávisle na tom, zda se jedná o reference nebo ukazatele... Pokud má transformace join probíhat na konci uvedeného řetězu, pak musí být zajištěno, že předchozí transformace nějak neselžou. To z hlediska robustnosti kódu nemusí být tak samozřejmé. > a nemáte chuť psát > > join(neco.jeho_kolekce.transform.sort.jeste_transform) Tady je potřeba si uvědomit, že metoda str.join(), o které se tady bavíme, je velmi specifická v tom smyslu, že jde o metodu, která má spojovat několik podřetězců do jednoho řetězce. Je tedy specifická v tom, že pracuje nad "řetězci" ve velmi abstraktní podobě a že výsledkem je zase čistý "řetězec". V souvislosti s výše uvedeným příkladem úhlu a funkce sinus je to něco podobného. > obzvláště když ten řetězec chcete na tečce dále > zpracovávat. > > neco.jeho_kolekce.transform.sort.jeste_transform > .join.strip.jiny_transform.split Přehlédl jste ale jeden detail. Na začátku celé transformace vystupuje objekt nějakého typu, který se postupně transformuje do kolekce řetězců. Potom následuje změna velmi specifické kolekce řetězců na velmi abstraktní typ "řetězec". Další operace probíhají nad abstraktním řetězcem. > když to pak přepíšete do závorkové notace, tak je > to nečitelné, protože v závorkové notaci se píše > doleva a v tečkové doprava. Pár takových závorek v > tečkovaném výrazu a nevyzná se v tom ani zvíře > které to má v popisu práce. Tohle není věc tečkové/závorkové notace. To je věc přehledného zápisu programu. > A nebo jinak. Kolikrát v životě jste potřebovali > aplikovat join na řetězec v tečce? Já si > nepamatuju jediný případ. Osobně mi kroutí mozkem vyjádření "aplikovat join na řetězec v tečce". Ale přitom právě zápis 'separátor'.join(kolekce) je velmi objektový. Velmi typicky se používá například pro vytvoření víceřádkového řetězce ze seznamu řádků, které neobsahují n: 'n'.join(lst) nebo pro vytvoření "čitelného" řádku textových reprezentací hodnot, které se mají oddělit čárkou a mezerou: ', '.join(lst) A dalších příkladů je celá řada. Problém je taky v tom, co by měl obecný .join() pro kolekce vyjadřovat. Jakého typu má být výsledek? P.