abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 22:22 | Nová verze

Po roce vývoje od vydání verze 1.20 byla vydána verze 1.21 knihoven EFL (Enlightenment Foundation Libraries). Do vývoje EFL se zapojilo 96 vývojářů. Provedeno bylo téměř 5 000 commitů.

Ladislav Hagara | Komentářů: 0
16.8. 19:00 | Nová verze

Byla vydána verze 18.08.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
16.8. 18:44 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 155. brněnský sraz, který proběhne v pátek 17. srpna od 18:00 na zahrádce restaurace Tanganika (Horova 35). V případě nepřízně počasí uvnitř. Tentokrát bude sraz pojat tématicky. Vzhledem k blížícímu se 50. výročí invaze vojsk Varšavské smlouvy do Československa proběhne malá výstava. Kromě literatury budou k vidění též originály novin z 21. srpna 1968, dosud nikde nezveřejněné fotky okupovaného Brna a původní letáky rozdávané v ulicích.

Ladislav Hagara | Komentářů: 0
16.8. 01:00 | Komunita

Měsíc po Slackware slaví 25 let také Debian. Přesně před pětadvaceti lety, 16. srpna 1993, oznámil Ian Murdock vydání "Debian Linux Release".

Ladislav Hagara | Komentářů: 10
15.8. 06:00 | Nová verze

Byla vydána nová verze 1.26 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Představení novinek také na YouTube.

Ladislav Hagara | Komentářů: 28
15.8. 03:00 | Nová verze

Po více než 3 měsících vývoje od vydání verze 2.12.0 byla vydána nová verze 3.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 169 vývojářů. Provedeno bylo více než 2 300 commitů. Přehled úprav a nových vlastností v seznamu změn. Proč verze 3.0.0 a ne 2.13.0? Není to kvůli triskaidekafobii. QEMU letos v březnu slavilo 15 let od oznámení verze 0.1 a to je dle vývojářů dobrý důvod pro novou major verzi. Vývojáři mají v plánu zvyšovat major verzi jednou ročně, vždy s prvním vydáním v daném roce.

Ladislav Hagara | Komentářů: 3
14.8. 22:11 | Bezpečnostní upozornění

Intel potvrdil (INTEL-SA-00161) další bezpečnostní problém ve svých procesorech. Problém byl pojmenován L1 Terminal Fault aneb L1TF. Popis problému přímo od Intelu na YouTube. Jedná se o CVE-2018-3615 (SGX), CVE-2018-3620 (OS/SMM) a CVE-2018-3646 (VMM). Další informace na stránce Foreshadow nebo přímo v dnešním commitu do Linuxu.

Ladislav Hagara | Komentářů: 19
14.8. 12:33 | IT novinky

Po více než 4 letech bylo vydáno RFC 8446 popisující verzi 1.3 protokolu TLS (Transport Layer Security). Popis novinek i historie TLS například v příspěvku na blogu Cloudflare.

Ladislav Hagara | Komentářů: 0
14.8. 11:11 | Zajímavý software

V roce 1998 uvedla společnost Tiger Electronics na trh elektronickou hračku, malého chlupatého tvora s velkýma ušima, Furby. Furby patřil k nejžádanějším hračkám. Během tří let se jich prodalo více než 40 milionů. Furby již tenkrát reagoval na světlo, zvuk, polohu, doteky a přítomnost dalších Furby. Sám mluvil a pohyboval se. Firmware uvnitř simuloval postupný vývoj a učení. Zdrojový kód tohoto firmwaru byl zveřejněn na Internet Archive [Hacker News].

Ladislav Hagara | Komentářů: 21
14.8. 02:00 | Nová verze

Australská společnost Blackmagic Design oznámila vydání verze 15 svého proprietárního softwaru pro editování videa a korekci barev DaVinci Resolve běžícího také na Linuxu. Představení nových vlastností na YouTube. Základní verze DaVinci Resolve je k dispozici zdarma. Plnou verzi DaVinci Resolve Studio lze koupit za 299 dolarů. Před rokem to bylo 995 dolarů.

Ladislav Hagara | Komentářů: 0
Používáte zařízení („chromebook“, „chromebox“ či tablet) s ChromeOS?
 (6%)
 (3%)
 (14%)
 (76%)
Celkem 208 hlasů
 Komentářů: 10, poslední včera 11:25
    Rozcestník

    Ako (ne)používať stromy v djangu

    4.5. 10:38 | Přečteno: 1344× | Programovanie | poslední úprava: 4.5. 10:38

    Existuje mnoho knižníc pre django, ktoré riešia ukladanie stromov do relačnej databázy. Najpoužívanejšie sú django-mptt a django-treebeard. Doteraz som vždy používal django-mptt. Keď django-cms prešlo z mptt na treebeard rozhodol som sa, že začnem používat treebeard aj ja.

    Prehľad spôsobu uloženia

    django-mptt

    Táto knižnica používa pre uloženie stromu 5 polí. Konrétne je to parent_id, lft, rght, level, a tree_id. Podrobne vysvetlený význam atribútov lft a rght je v tomto blogu. Výber podstromov, rodičov, ciest ... je pri tomto type stromu veľmi elegantný. Na druhej strane modifikácia stromu je dosť zložitá.

    djang-treebeard

    Treebeard implementuje niekoľko spôsobov uloženia stromu. Pozrime sa na preferovaný teda materialized path. V tabuľke nám pribudnú polia path, depth a numchild. Cesta sa skladá z ascii znakov, ktoré sa líšia v závislosti od použitej databázy. Cesty teda vyzerajú takto: 0000 (prvá položka), 0001 (druhá položka), 00010000 (prvý potomok druhej položky). Výbery sa uskutočňujú pomocou operátora LIKE. Inserty môžu vyžadovať prepísanie značnej časti ciest ak sa uskutočňujú blízko koreňa v hornej časti stromu. Vkladanie hlboko do stromu je pomerne rýchle.

    Skúsenosti

    S django-mptt pracujem dlho. Je to odskúšaná, stabilná, dobre zdokumentovaná knižnica. Na problémy s výkonom som ja osobne nenarazil, ale nerobím nič tak náročné, kde by sa to malo prejaviť. V dokumentácii je upozornenie na nutnosť obaliť operácie do transakcie (treba na to dávať pozor inak sa budú diať zlé veci).

    Dokumentácia django-treebeard mi neprišla ktovie ako užitočná. V čase písania blogu bola neaktuálna a nereflektovala zmeny v zdrojových kódoch, takže som väčšinou skončil pri čítaní zdrojových kódov namiesto dokumentácie.

    Prvý závažný problém, na ktorý som pri django-treebeard narazil na produkčnom serveri bolo zoradenie. Totiž používali sme slovenské texty a databáza mala nastavená collation na slovenčinu. Tá má však také špecifiká ako "CH", takže sa zoradenie podľa path rozbilo na prvý pohľad nepochopiteľným spôsobom. Varujem teda všetkých, ktorí by chceli použíavať django-treebeard - skontrolujte si na serveri collation pre stĺpec path, v prípade potreby ho zmnňte (ALTER TABLE tabulka ALTER path TYPE character varying(255) COLLATE "C"; v postgrese).

    API django-treebeard je podľa mňa miestami obskurné, miestami nepoužiteľné a miestami oboje. Ako príklad uvediem rendervoanie stromu v šablóne - django-treebeard. Atribút close je pekne obskurný a ako bonus obsahuje čísla 0..n (teda nie level ktorý daný záznam zatvára). Vďaka tomu nie je možné napríklad vyrenderovať strom, ktorý by mal v druhej úrovni trochu inú štruktúru než v prvej. Pre titeto prípady som si musel napísať filter, ktorý do close doplní level.

    @register.filter_tag
    def add_level(items):
        for __, info in items:
            info['close'] = [info['level'] - c for c in info['close']]
        return items

    Pre porovnanie django-mptt to má vyriešené pomocou tagu recurstree, takže nie je potrebné nič dohackovať.

    Ďalej som dnes zistil, že django-treebeard nie je schopný vyrenderovať formulár s vlastným layoutom (to fakt nikto za tú dobu nepotreboval?), pri zobrazení formulára generuje cez 10 000 selectov (ah hlanve, že sa autor chváli benchmarkami) ...

    Moje odporúčanie teda znie - kašlite na to, čo je práve populárne. Používajte radšej to, čo je dobré. Ja zatiaľ skúsim pretlačiť pár svojich úprav do django-treebeard ;)

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Josef Kufner avatar 4.5. 14:03 Josef Kufner | skóre: 68
    Rozbalit Rozbalit vše Re: Ako (ne)používať stromy v djangu
    Stromy v SQL databázi pomocí Nested Sets (parent_id, tree_left, tree_right, tree_depth, a tree_root_id) používám dlouho a funguje to skvěle. Není to stavěné na časté vkládání a modifikace obecně, ale jinak to je velice elegantní a praktický způsob uložení stromu, který umožňuje jedním selectem vytáhnout cokoliv je potřeba – podstrom, všechny rodiče ke kořeni, potomky, sousedy.

    Teoreticky sice stačí jen left a right, ale je robustnější používat primárně parent_id, na kterém není co zkazit, a ty ostatní 4 hodnoty si dopočítat. Hloubka se hodí pro jednodušší vykreslování stromu. ID kořene pak umožní optimalizovat aktualizace left a right při úpravách stromu (pokud je v DB mnoho malých stromů je pak rychle, neboť se přepočítá jen jeden).
    Hello world ! Segmentation fault (core dumped)
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.