October 2011
1 post
2 tags
Příběh Pěti omLuv (doma ho familierně nazýváme...
Tak dlouho se hledali, až se našli. O kom že bude řeč? O jednom príma místě, kde se děti baví (a kde si děti, no to si poslechněte, i hrají!). A o jejich parťákovi, kanónovi, který umí zkracovat vzdálenosti. Zkrátka, Sparkys + PPL = VL (appp). Objednali jsme dětem hračku. V neděli, v klidu, s vizí, že do narozenin balík bez problémů dorazí. Chyba. Balík nedorazil a nikdy už nedorazí. Ještě že...
Oct 20th
5 notes
August 2011
1 post
4 tags
Django, testy, fixtůry a posraté rekurze
Psát testy je pruda. O to větší, když po dvouhodinové přípravě ku*va-fix tur spustíte test a výstup v konzoli je plný hlášek typu: Exception RuntimeError: 'maximum recursion depth exceeded in *' in ignored (za * si dosaďte cokoli vás napadne) Kura co to je? Google neporadí (teda ne přímo), ve výstupu absolutně nedopátratelné z kama vítr vane. Tak až se vám podobná situace namane, vězte, že...
Aug 12th
22 notes
December 2010
2 posts
3 tags
“Tonight we’ve released Django 1.3 beta 1, as well as Django 1.2.4...”
– http://www.djangoproject.com/weblog/
Dec 23rd
10 tags
Žangovinky #32
Komentovaný překlad Django Dose Community Catchup, Episode #32. Během prosince se na svém blogu Seek Nuance pěkně rozepsal John DeRosa. V článku “A performance lesson on Django QuerySets” dokazuje, že bezmyšlenkovité nasazení QuerySet funkce iterator() přináší spoustu problémů. Menší paměťové nároky byly v jeho případě draze vykoupeny četností dotazů na databázi (co iterace to...
Dec 23rd
November 2010
3 posts
2 tags
“The first alpha preview package for Django 1.3 is now available. Release...”
Nov 11th
5 tags
Konzultačka u RevSys
5. listopadu 2010 se na IRC otevřely virtuální dvéřka do společnosti Revolution Systems, ve které působí i Jacob Kaplan-Moss, core vývojář Djanga. Během dvou hodin padlo téměř čtyřicet zajímavých dotazů, a ještě zajímavějších odpovědí. Povinná četba! Co jsem nasál: MySQL je divné a zatlouká si další a další hřebíčky do rakve. Modří už stejně dávno přešli na PostgreSQL. MediaTemplate je něco...
Nov 9th
10 tags
Žangovinky #30
Komentovaný překlad Django Dose Community Catchup, Episode #30. 18.října měla být představena alpha 1 verze Djanga 1.3. Bohužel se ale stále objevují drobné chyby a datum se odsouvá. Na termínu oficiálního představení nové verze se naštěstí nic nemění, 17.ledna 2011 nás objede Ježoch a doveze překrásný dáreček. Co bude uvnitř? generická view převlečená do class-based kabátku jednodušší správa...
Nov 5th
October 2010
2 posts
8 tags
Žangovinky #29
Komentovaný překlad Django Dose Community Catchup, Episode #29. Začněme blogy. Peter Bengtsson ve svém článku Local Django development with Nginx radí, jak na lokální mašině nakonfigurovat Nginx a využít jej k servírování statického obsahu (CSS, JS, obrázky). Ukazuje jednoduchý postup, kterým dosáhl zrychlení z původních 446.34 req/s na 15709.54 req/s, což se pozitivně projevilo během ladění...
Oct 23rd
1 note
4 tags
Ladění výkonu Django aplikací
V září 2010 proběhl v Portlandu DjangoCon. Seznam probíraných témat je docela velký. Pokud to čas dovolí, pokusím se některé zajímavé přednášky zpracovat a pak se s nimi podělit zde na blogu. První přednáška, která mě padla do oka byla “First steps in performace tuning” od Russella Keith-Mageeho řešící výkon Django aplikací. Nejdříve si uvědomme základní fakta: vývoj probíhá na...
Oct 7th
July 2010
1 post
3 tags
Přidáváme objekt alá User
Všimli jste si někdy, že přidání nového uživatele v administračním rozhraní Djanga probíhá trochu jinak, než přidání jakéhokoliv jiného objektu? Pro připomenutí — nový uživatel se zadává prostřednictvím dvou po sobě navazujících formulářů, kdy v první fázi vyplníte pouze username a heslo, a teprve při druhém kroku je možné doplnit zbytek informací. Potřeboval jsem vytvořit podobné...
Jul 1st
February 2010
1 post
5 tags
Taky se vám NĚKDY odpálí signál dvakrát?
Možná se Vám už někdy stalo, že při použití signálu v Djangu se vaše obslužná funkce zavolala vícekrát. Mě se to naposledy stalo dnes. Best practice Na umístění kódu pro signály si dávám pozor. Dle dobrých Django mravů mám v adresáři s aplikací soubor signals.py, v něm kód obslužné funkce i její pověšení na konkrétní signál. Na konci models.py pak vkládám import signals a všechno funguje jako...
Feb 18th
January 2010
1 post
4 tags
Nefunkční testy v Djangu
A to jste věděli, že když v adresáři s vaší aplikací chybí soubor models.py, nebudou vám pro tuto aplikaci fungovat testy? $ ./manage.py test shared Creating test database... [zkrácený výpis] F ====================================================================== FAIL: testHomepage...
Jan 13th
October 2009
2 posts
5 tags
Administrace M2M vazeb v definovaném pořadí
Vláďa Macek poslal včera na django-cs mailing list dotaz, ve kterém se zmiňuje o potřebě spravovat M2M vazby v Django administraci, avšak s podmínkou, aby bylo možné definovat pořadí jednotlivých položek. Podobnou věc jsem nedávno řešil taky, ale trochu jinak než naznačuje Vláďa. Moje situace V aktuálně realizovaném projektu mám definován model popisující fotky (Photo). U spousty jiných...
Oct 21st
1 note
Oct 1st
September 2009
1 post
4 tags
Kouzla v Django administraci
Přemýšleli jste někdy nad tím, jak je v Django adminu zrealizováno přidávání nových prvků do ForeignKey a M2M políček? Mám tím na mysli ty situace, kdy na stránce máte například <select>ítko a vedle něj zelené plus — kliknutím na plus se otevře popup okno, do kterého přidáte nový prvek a po uložení se nová hodnota jakoby zázrakem objeví v původním okně: Jak je to možné?...
Sep 7th
1 note
July 2009
2 posts
3 tags
Zrádné get_urls()
V připravované verzi Djanga 1.1 bude možné definovat na úrovni administrace vlastní URL adresy. Jak? Třída ModelAdmin disponuje metodou get_urls. Jejím překrytím snadno upravíte či přidáte nová URL pravidla a obsluhy pro ně. Pokud budete postupovat přesně podle instrukcí v dokumentaci, je docela možné, že se nic nestane. Problém totiž může být uplně jinde — v hlavní definici pravidel...
Jul 16th
4 tags
“Volné chvíle, které nás dělí do vydaní Djanga 1.1, si můžete vyplnit studiem...”
– via @bganicky
Jul 1st
June 2009
3 posts
3 tags
“Vypadá to, že máme nejvyšší čas nechat vychladit šampíčka. Podle TRACu nás od...”
Jun 11th
2 tags
Jun 5th
4 tags
"Český" kalendář v administraci
Javascriptového pomocníka pro zadávání datumů v administračních stránkách Djanga všichni dobře známe. Stručně: pokud se na stránce vyskytne datumové políčko, vykreslí se vedle něj ikona kliknutím na ikonku se objeví malé okno pro pohodlný výběr konkrétního dne z kalendáře Pozornému čtenáři jistě neunikl drobný detail: dny v kalendáři začínají nedělí (ano, jde o prazvláštní zvyk našich...
Jun 2nd
May 2009
4 posts
4 tags
Bojujeme proti komentářovému SPAMU, díl druhý
Krátce po nasazení Akismetu na kontrolu komentářů (viz první díl) se projevil drobný problém v “unobtrusive comments moderation” snippetu. Konkrétně — pokud komentář obsahuje české znaky s diakritikou, dojde k chybě. Oprava je mimořádně snadná. Na řádku 43 se komentář odesílá k posouzení: if akismet_api.comment_check(instance.comment, data=akismet_data, ...
May 22nd
4 tags
Bojujeme proti komentářovému SPAMU, díl první
Webu djangoproject.cz si všimli spammeři. Přesněji, spammeři z Ruska — chlapíci důslední a vytrvalí. Výsledkem jejich snažení je (zatím) cca 1-5 SPAM komentářů denně. Na Django ČR je nasazena aplikace django.contrib.comments, která se sice snaží SPAMování bránit, ale zarputilosti našich východních sousedů bohužel konkurovat nemůže. Co s tím? Nasadit Akismet — službu společnosti...
May 18th
5 tags
Nefunguje vám django.contrib.flatpage?
Prováděl jsem pár úprav na Django Česká republika, a po restartu serveru přestal web fungovat. Respektive — na jakýkoliv dotaz z prohlížeče vracel status kód 404 (neexistující stránka). Django ČR využívá aplikaci django.contrib.flatpage. Její funkce je prostá — pokud uživatel zadá URL, pro které není v urls.py definované pravidlo, vyvolá se vyjímka Http404. Tato vyjímka je zachycena...
May 15th
4 tags
Autocomplete políčko v admin rozhraní
Potřeboval jsem přidat do administračního formuláře Django aplikace políčko, které by namísto <select> seznamu (nepoužitelného, kvůli velké spoustě položek) mělo nějakou formu AJAXové našeptávače. Náhodou jsem narazil na video, jehož autorem je Jannis Leidel. Kód pro toto řešení naleznete ve výborné aplikaci django-extensions (kterou mimochodem nasazuji do každého nového Django...
May 12th