abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:00 | Nová verze

    Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 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í. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    dnes 00:44 | Nová verze

    Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 9
    včera 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    včera 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 2
    včera 01:00 | Nová verze Ladislav Hagara | Komentářů: 0
    4.6. 19:55 | IT novinky

    Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.

    Ladislav Hagara | Komentářů: 0
    4.6. 13:44 | IT novinky

    Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.

    Ladislav Hagara | Komentářů: 0
    4.6. 13:22 | Nová verze

    Byla vydána nová verze 14.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    4.6. 12:55 | Zajímavý software

    Společnost Kaspersky vydala svůj bezplatný Virus Removal Tool (KVRT) také pro Linux.

    Ladislav Hagara | Komentářů: 11
    Rozcestník

    Migrace z kwalletmanager na KeePassX

    17.8.2014 22:42 | Přečteno: 2460× | programování | Výběrový blog | poslední úprava: 17.8.2014 22:50

    Kwalletmanager je už jistý čas nedoporučován, protože starší verze de-facto používali ECB mód šifry Blowfish. KeePassX je mnohem lépe navržen a napsán, ale migrace z kwallet není už dlouho podporována, protože kwallet změnil export formát. Návod s krátkým skriptem na migraci.

    Jádro problému

    Už nějaký čas jsem chtěl odejít od kwalletmanageru, protože až na nějaké poslední verze používá na šifrování Blowfish v ECB módu. To není úplně tragické a až tak lehce zneužitelné, ale od doporučovaných praktik to má taky daleko. KeePassX má v menu možnost importovat password xml, který byl exportován z kwalletmanageru - ale podporuje jen nějaký velmi starý formát. Šlo by to řešit přes XSLT, ale debugovat XSLT je čirý masochizmus, raději jsem si na to napsal krátký pythoní skript. Naimportuje skupinu pod "Passwords", ale podle fór je to právě ta skupina, která většinu lidí zajímá.

    Export, import a skript

    V kwalletmanageru zvolíme File-Export, uložíme např. do export.xml, pustíme na to skript. Ten nám vyplivne import.xml, který již lze naimportovat do KeePassX přes File-Import From-KWallet XML File. Na exportovaném XML z kwalletmanageru pustíme:

    kwallet2keepassx_kwallet.py export.xml import.xml

    Skript

    #!/usr/bin/env python
    import sys
    from lxml import etree
    
    """
    Transformation according to https://www.keepassx.org/forum/viewtopic.php?f=4&t=1892
    """
    
    if len(sys.argv) < 3:
        print >> sys.stderr, "Usage: kwallet2keepassx_kwallet.py source_kwallet.xml dest_keepass_kwallet.xml"
        sys.exit(1)
    
    srcFname = sys.argv[1]
    dstFname = sys.argv[2]
    
    doc = etree.parse(file(srcFname))
    root = doc.getroot()
    newRoot = etree.Element("wallet")
    newRoot.attrib["name"] = root.attrib["name"]
    
    passwords = root.xpath("/wallet/folder[@name='Passwords']")[0]
    maps = passwords.xpath("map")
    
    for map in maps:
        name = map.attrib["name"]
        folderElem = etree.Element("folder")
        folderElem.attrib["name"] = name
        newRoot.append(folderElem)
    
        entries = map.xpath("mapentry")
        for entry in entries:
            passwordElem = etree.Element("password")
            passwordElem.attrib["name"] = entry.attrib["name"]
            passwordElem.text = entry.text
            folderElem.append(passwordElem)
    
    with file(dstFname, "w") as fout:
        fout.write(etree.tostring(newRoot, pretty_print=True))
    

    KeePassX backendy

    Dost by mně zajímalo, jestli lze jednoduše doplňovat do KeePassX backendy pro ukládání/šifrování dat. Z googlení ani ze zdrojáků mi odpověď na tuto otázku není příliš jasná. Chtěl bych použít Trezor jako šifrovací backend, ale zatím to vypadá, že k tomu budu muset napsát kompletní password manager.

    Bonus: hraní s ECB

    Vyšlo nové číslo časopisu PoC||GTFO 0x05, které ukazuje mnohem lépe úskalí ECB než známý Tux obrázek na Wikipedii. Jinak všimněte si, že to PDF je zárověn PDF, flash, ZIP, ISO 9660 filesystem a další formáty.

           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    xkucf03 avatar 18.8.2014 01:27 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Tady máš to XSLT ty masochisto :-)
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
    
    		<xsl:template match="/">
    			<wallet name="{wallet/@name}">
    				<xsl:for-each select="/wallet/folder[@name='Passwords']/map">
    					<folder name="{@name}">
    						<xsl:for-each select="mapentry">
    							<password name="{@name}"><xsl:value-of select="text()"/></password>
    						</xsl:for-each>
    					</folder>
    				</xsl:for-each>
    			</wallet>
    		</xsl:template>
    
    </xsl:stylesheet>
    
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    mirec avatar 19.8.2014 07:40 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Až toto je pravý masochizmus.

    import sys
    from lxml import etree
    from lxml.builder import E
    
    in_root = etree.parse(sys.stdin).getroot()
    out_root = E.wallet(
    	name=in_root.attrib['name'],
    	*(E.folder(name=el.attrib['name'],
    		*(E.password(entry.text, name=entry.attrib['name']) for entry in el.iter('mapentry'))
    	) for el in in_root.iterfind(".//folder[@name='Passwords']/map"))
    )
    
    sys.stdout.write(etree.tostring(out_root, pretty_print=True))
    
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    xkucf03 avatar 19.8.2014 11:06 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    jj, masochismus – sice je to o čtyři řádky kratší, ale o poznání méně čitelnější. V tom XSLT je krásně vidět struktura výsledku.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    pavlix avatar 19.8.2014 11:13 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Když jsem si naposled hrál hodiny s vypilováním XSLT, tak jsem to taky nakonec splácal v Pythonu za deset minut a to, že v kódu nevidím strukturu výsledku mi bylo úplně jedno.

    P.S.: Ten sraz jsem fakt nedával, snad příště.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    mirec avatar 19.8.2014 11:47 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Keď sa to dá je to fajn. Ja mám ešte doteraz nočné mory z toho keď som musel nútene používať xslt na importné / exportné filtre z / do openoffice. Nikomu nepreajem riešiť tak hnusné veci ako opakovanie riadkov / stĺpcov v libreoffice calc tabuľkách (v xslt sa to rieši rekurziou a to v prípade že sa opakujú riadky aj stĺpce tak pekne vnorenou). Čitateľnosť 0 bodov pričom v normálnom jazyku by sa do dalo poriešiť 3 riadkanmi namiesto tej 50-riadkovej príšery ktorú som do každého filtra pastoval.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    mirec avatar 19.8.2014 12:01 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Inak offtopic práve ten lxml.builder je na to aby bolo vidieť štruktúru, akurát je som to šialene skombinoval s funkcionálnym zápisom čo je síce krátke ale málo čitateľné. Inak samotný zápis pomocou builderu mi pripadá ľahší než čisté xml (požičané z oficiálnej dokumentácie):

    page = (
        E.html(
            E.head(
                E.title("This is a sample document")
            ),
            E.body(
                E.h1("Hello!", CLASS("title")),
                E.p("This is a paragraph with ", B("bold"), " text in it!"),
                E.p("This is another paragraph, with a ",
                    A("link", href="http://www.python.org"), "."),
                ...
            )
        )
    )
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    xkucf03 avatar 20.8.2014 15:20 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Jak do toho zakomponuješ třeba cykly nebo nějaké větvení?

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    mirec avatar 20.8.2014 22:10 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Python má kľúčové slová for (teda na rozdiel od xslt kde sa to rieši rekurziou), if, else ... V príklade som naschval použil funkcionálny zápis, ale v pythone nie je problém kombinovať rôzne spôsoby zápisu. Tu je čistý imperatívny zápis (rozsekané na funkcie tak aby to pripomínalo xsl:apply-templates:

    Wallet = E.wallet
    Folder = E.folder
    Password = E.password
    
    def apply_mapentry(in_node):
        password_elements = []
        for entry in in_node.iter('mapentry')
            password = Password(entry.text, name=entry.attrib['name'])
            password_elements.append(password)
        return password_elements
    
    def apply_map(in_node):
        folder_elements = []
        for map_element in in_node.iterfind(".//folder[@name='Passwords']/map"):
            folder = Folder(name=map_element.attrib['name'], *apply_mapentry(map_element))
            folder_elements.append(folder)
        return folder_elements
    
    root = Wallet(name=in_root.attrib['name'],
        *apply_map(in_root)
    )

    Kombinovaný zápis:

    Wallet = E.wallet
    Folder = E.folder
    Password = E.password
    
    def apply_mapentry(in_node):
        entries = in_node.iter('mapentry')
        return [Password(entry.text, name=entry.attrib['name']) for entry in entries]
    
    def apply_map(in_node):
        entries = in_node.iterfind(".//folder[@name='Passwords']/map")
        return [Folder(name=entry.attrib['name'], *apply_mapentry(entry)) for entry in entries]
    
    root = Wallet(name=in_root.attrib['name'],
        *apply_map(in_root)
    )
    

    No a pomerne hustý skôr funkconálny zápis

    Wallet = E.wallet
    Folder = E.folder
    Password = E.password
    
    maps = in_root.iterfind(".//folder[@name='Passwords']/map")
    root = \
        Wallet(name=in_root.attrib['name'],
            *(Folder(name=entry.attrib['name']
                *(Password(m.text, name=m.attrib['name']) for m in entry.iter['mapentry']
            for entry in maps)
        )
    
    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    xkucf03 avatar 20.8.2014 23:05 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Python má kľúčové slová for (teda na rozdiel od xslt kde sa to rieši rekurziou)

    XSLT má FOR cyklus – viz příklad výše: #1, stejně tak má IF, ELSE…

    Ano, rekurze se taky dost používá a stylem se to podobá spíš funkcionálnímu programování, ale to neznamená, že by tam chyběly FOR cykly a podobné věci.

    Tu je čistý imperatívny zápis … Kombinovaný zápis: … No a pomerne hustý skôr funkconálny zápis

    Sorry, ale rozluštit tohle a zjistit, co to vlastně dělá (kdybych neviděl ty předchozí příklady, neznal zadání) je o hodně těžší než u toho XSLT, u kterého prostě koukneš a vidíš. To už i ta implementace v zápisku výše je srozumitelnější.

    To, že stačí napsat E.názevElementu( a na konci jen závorku místo <názevElementu></názevElementu>, tak najednou nějak bere za své a ztrácí se v ostatním kódu. To už mi spíš přijdou zajímavější jazyky, které umí XML literály.

    To Password = E.password a pak jeho opakované použití Password(entry.text, name=entry.attrib['name']) působí, jako by to byla spíš jen nějaká funkce, která escapuje vstup a produkuje text. Proč je funkce jednou malými písmeny, pak velkými a malými je zase název proměnné…?

    A co jsem koukal na podporu jmenných prostorů v té knihovně, tak to už je dokonalé zatemnění a odstínění programátora od podstaty věci, tak aby na první pohled nebylo vůbec zřejmé, co se děje uvnitř, o několik vrstev níž. A to tu někteří vyčítali Javě, že prý se tam používá moc vrstev a abstrakce!

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    mirec avatar 21.8.2014 07:42 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    V príklade je for-each. Ja myslím niečo typu:

    for i in 1..10:
        zapisPrazdnyTag

    Tu je príklad v xslt:

    <xsl:template name="repeatcol">
        <xsl:param name="current"/>
        <xsl:param name="from"/>
        <xsl:param name="to"/>
        <xsl:apply-templates select="table:table-cell[position()=$current]">
            <xsl:with-param name="current" select="$from - 1"/>
        </xsl:apply-templates>
        <xsl:if test="$from < $to">
            <xsl:call-template name="repeatcol">
                <xsl:with-param name="current" select="$current"/>
                <xsl:with-param name="from" select="$from + 1"/>
                <xsl:with-param name="to" select="$to"/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
    
    <xsl:template name="processnextcol">
        <xsl:param name="nextCol"/>
        <xsl:param name="colNum"/>
        <xsl:if test="table:table-cell[position()=$nextCol]">
            <xsl:choose>
                <xsl:when test="table:table-cell[position()=$nextCol]/@table:number-columns-repeated">
                    <xsl:variable name="colSkip" select="table:table-cell[position()=$nextCol]/@table:number-columns-repeated" />
                    <xsl:call-template name="repeatcol">
                        <xsl:with-param name="current" select="$nextCol"/>
                        <xsl:with-param name="from" select="$colNum + 1"/>
                        <xsl:with-param name="to" select="$colNum + $colSkip"/>
                    </xsl:call-template>
                    <xsl:call-template name="processnextcol">
                        <xsl:with-param name="nextCol" select="$nextCol + 1"/>
                        <xsl:with-param name="colNum" select="$colNum + $colSkip"/>
                    </xsl:call-template>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:apply-templates select="table:table-cell[position()=$nextCol]">
                        <xsl:with-param name="current" select="$colNum"/>
                    </xsl:apply-templates>
                    <xsl:call-template name="processnextcol">
                        <xsl:with-param name="nextCol" select="$nextCol + 1"/>
                        <xsl:with-param name="colNum" select="$colNum + 1"/>
                    </xsl:call-template>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:if>
    </xsl:template>
    

    A ešte ako sa to používa:

    <xsl:template match="table:table">
        <xsl:for-each select="table:table-row">
            <object>
                <xsl:call-template name="processnextcol">
                    <xsl:with-param name="nextCol" select="1"/>
                    <xsl:with-param name="colNum" select="1"/>
                </xsl:call-template>
            </object>
        </xsl:for-each>
    </xsl:template>

    Často to je potrebné pre filtre v openoffice kde prázdne bunky v tabuľkách zlučuje do jednej a prihodí do atribútu počet opakovaní. Potom treba v xslt podľa toho atribútu opakovať prázdny tag niekoľko krát.

    Takže aby som to zhrnul áno xslt je na niektoré veci jednoduché. Ale na zložitejších úlohách si jednoducho človek zodrie prsty alebo sa zblázni kým napíše čo potrebuje.

    Proč je funkce jednou malými písmeny, pak velkými a malými je zase název proměnné…?

    Password je čiastočne aplikovaný konštruktor triedy Element. Používa sa ako trieda a tie majú názvy veľkými písmenami aby sa dali ľahko odlíšiť of funkcií).

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    xkucf03 avatar 20.8.2014 23:11 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Trochu mi to připomíná situaci u ORM frameworků používaných lidmi, kteří mají ze SQL strach (čti: nikdy se ho nenaučili) a považují ho za „příliš nízkoúrovňové“ a „potřebují“ ho zabalit do dalších vrstev a schovat se před ním. Nejlépe pomocí nějakého frikulínského hipsterského frameworku, který jim vygeneruje vše od HTML formulářů po CREATE TABLE skript a oni s tím „ošklivým SQL“ nebudou muset přijít do styku. Používat ORM bych doporučil jen lidem, kteří napsali několik aplikací s čistým SQL a ovládají ho – pak je ORM (nebo podobná abstrakce) dobré, ale i tak je potřeba pečlivě volit framework a používat ho s mírou.
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    mirec avatar 21.8.2014 07:50 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Otázka je čo získam vyhodením ORM? Nedávno som pár aplikácií prepisoval z čistého SQL do ORM pretože sme potrebovali robiť pomerne zložité joiny nad tabuľkami a všetky dotazy boli písané na MySQL. Prepisom sa na výkone nezmenilo nič (dotazy sú približne rovnaké ako keby ich písal človek), ale umožnilo nám to migrovať z smerom mysql -> postgresql (potenciálne) -> oracle

    A nie nepatrím medzi ľudí ktorí by sa báli SQL. Písal som pár vecí s MySQL (vcelku výkonných) a potom veľa veľa vecí na postgrese (nedávno som dopisoval stemmer na sk jazyk pre fulltext vyhľadávanie). Keď potrebujem rýchlo získať nejaké výsledky tak to riešim priamo cez SQL dotazy v postgresql konzole. Takže rozhodne sa SQL nebojím, ale keď ide o možnosti migrovať na iný typ db tak je ORM neprekonateľné.

    Nejlépe pomocí nějakého frikulínského hipsterského frameworku, který jim vygeneruje vše od HTML formulářů po CREATE TABLE

    Nevidím nič čo je na tomto zlé. Framework v ktorom píšem aplikáciu musí poznať model, prečo by teda nemohol rovno vygenerovať CREATE TABLE? DRY považujem jeden z najdôležitejších princípov pri programovaní. Generovanie formulárov ... zase DRY, prečo by som mal mať definovanú štruktúru tabuľky na 3 miestach (sql, kontroler a prezenter keď je to možné mať na jednom mieste?

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    pavlix avatar 21.8.2014 11:23 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Otázka je čo získam vyhodením ORM?
    Vzhledem k tomu, že Franta navrhoval jen seznámit se s SQL, tak tím získáš především znalost toho, co se na pozadí děje. Ta je v SQL aplikacích naprosto klíčová a důsledky neznalosti potkáš na každém rohu, když na triviální výstup z databáze na nějakém cizím webu čekáš dlouhé minuty.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    mirec avatar 21.8.2014 12:26 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    To neodpovedá na otázku. SQL ovládam na veľmi dobrej úrovni, písal som veľa vecí v RAW SQL, veľa procedúr, veľa šialených selectov, ale ORM používam kvôli flexibilite. Teraz nehovorím, že utekajme sa všetci učiť ORM, SQL treba ovládať, treba rozumieť explain analyze, treba vedieť logike ktorá je za tým, treba vedieť ako z ORM vypísať RAW query ktorú robí, treba vedieť akým spôsobom sú query skladané, aké to má výhody, nevýhody ... lebo zlými selectmi nad veľkou databázou si človek kľudne zostrelí server.

    Ako príklad uvediem ORM z djanga (robím aj s inými ORM ale toto je také nablbšie a asi ho mám aj najradšej). Ak mám nejakú tabuľku s foreign key tak môžem kľudne urobiť objekt.fk_tabuľka.atribút a ORM za mňa urobí selekt. Ak to urobím v cykle tak si koledujem o pekný prúser lebo pre každý záznam urobí select. Ak ale urobím ZakladnaTabulka.objects.select_related("druha_tabulka") tak ORM za mňa urobí left join (teda v tomto prípade, ak je to many to many alebo niečo iné tak iný join) a môžem kľudne hrabať na atribúty spojenej tabuľky bez ďalších selectov. Na prvý pohľad znie ako dobrý nápad ... lenže joiny sú pri veľkých offsetoch so stránkovaním dosť neohrabané. Takže Django ORM má na to ešte jednu peknú metódu a to prefetch_related("druha_tabulka") čo mi pri výpise ak dám zobraziť povedzme 20 riadkov z offsetom 1 000 000 selektne len prvú tabuľku a z druhej tabuľky urobí select ... where id in(...) a spojenie prebehne len na vybraných 20 riadkoch v knižnici. Aj s ORM treba mať základy databáz a algoritmov ktoré za tým sú aby človek vedel vybrať správny spôsob prístupu k dátam. No a samozrejme ak to nejde inak tak tie kritické časti prepísať do RAW query.

    Osobne som toho názoru že každý programátor by mal ovládať rôzne paradigmy a rôzne jazyky. Nezameriavať sa na jeden konkrétny pretože je najpoužívanejší a má najelpšie toto / tamto. Nie je jediná správna(tm) cesta. Ja sám píšem aktívne v asi 5 jazykoch a ďalších možno 10 ovládam ako-tak.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    pavlix avatar 21.8.2014 13:26 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Otázka samotná byla mimo kontext a vypadalo to, že jsi Frantu jen špatně pochopil.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    mirec avatar 21.8.2014 13:47 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    No celé to o ORM je úplne mimo kontext ;-), vlastne ani neviem prečo sa to tu objavilo keďže ja ovládam xslt, sql a dokonca aj javu, snažím sa len korigovať bezdôvodné kydanie nezmyslov na účet pythonu a ignorovanie nedostatkov javy (napr. nekompletná typová kontrola, ukecanosť ...) / xslt (neohrabanosť v niektorých situáciách) / sql (neflexibilita v niektorých situáciách) ...

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    Bedňa avatar 22.8.2014 08:14 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Keď sa rozhodujem nasadiť databázu, tak je to rýchlosť. Netuším čo je to ORM (ORgasM?), keď som niekedy bol v koncoch snažil som sa hľadať nástroje ktoré mi uľahčia prácu a dokážu za mňa vypľuť SQL ktorý vložím do kódu. Či už išlo o klikátka, alebo to z "čitateľného" kódu vypľulo SQL, nakoniec som nikdy nič také nepoužil a Google dáva asi najlepšie výsledky :) Teda pre mňa SQL=rýchlosť a neviem si predstaviť, že by som tam pchal nejakú medzivrstvu.
    KERNEL ULTRAS video channel >>>
    mirec avatar 22.8.2014 08:51 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Na rýchlosti medzivrstvy málokedy záleží. Osobne píšem webové aplikácie v jazyku rádovo 100x pomalšom než C a rozdiel oproti iným jazykom je takmer 0 pretože väčšinu času aplikácia len čaká na dokončenie dotazu. Len pre zaujímavosť mám tu teraz jednu peknú pár GB veľkú databázu a skúsil som selectnúť 500 000 záznamov pomocou ORM a pomocou obyčajného selectu cez psql. Pre postgresql je čas:

    Time: 371,725 ms

    a django ORM

    937 ms

    Takže s jazykom s fakt mizerným výkonom (dokonca bez použitia JIT) dokážem po odrátaní času selectu spracovať 900k záznamov čo za predpokladu že na zobrazenie bežne webovej stránky stačí tak 100 záznamov postačuje na približne 9 000 requestov za sekundu na worker.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    mirec avatar 22.8.2014 08:57 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Ešte doplním že ORM sa nepoužíva ako náhrada SQL tam kde sa mi to nechce písať. Je to nástroj pomocou ktorého sa dajú robiť veci, ktoré by sa inak realizovali ťažko. Pred 5 minútami som napr. migroval databázu na iný stroj (iný typ databázy). Prešlo to hladko a bez problémov pretože rozdiely medzi databázami vyriešilo ORM. Ak by som išiel cez raw query musel by som teraz polovicu aplikácie prepisovať.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    xkucf03 avatar 21.8.2014 20:05 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Tak jsem to myslel. Obecně jsem spíš pro ORM. Ale je třeba ho chápat jako nástroj, který ti zrychlí a zefektivní vývoj1, ne jako nástroj, který má umožnit práci s databází lidem, kteří neumí SQL. Pokud SQL umíš a víš/tušíš, co se uvnitř ORM děje, tak ho klidně použij – v opačném případě je to dost nebezpečná zbraň, kterou se spíš střelíš do nohy.

    [1] vývoj, ne běh programu – celé to může být o trošku pomalejší než ručně psané a precizně optimalizované SQL, ale měl bys mít méně kódu a flexibilnější systém, takže bys měl rychleji nasazovat změny, nové požadavky

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    27.8.2014 13:49 Ivan
    Rozbalit Rozbalit vše OT: Re: Migrace z kwalletmanager na KeePassX
    Zrovna JPA (Hibernate popr. EclipseLink) je extremne nebezpecna zbran. Entity framework nedela jen SELECTy. Staci napsat: b=a; b.append('X'); a=b; A EclipseLink vyhodi naprosto kryptickou vyjimku, protoze EntityManager nechape o co mi jde, zatimco Hibernate smaze tisice radek z databaze protoze "a" byla child collection. ORM micha dobromady deklarativni SQL s imperativni Javou. Relacni model s objektovym, a navic pridava princip "vlastnictvi" do jazyka, krety ma GC a ve kterm se nikdy predtim vlastnictvi objektu neresilo.
    Marián Kyral avatar 18.8.2014 08:39 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Takový problém opravit zdrojáky a poslat patch?
    xkucf03 avatar 18.8.2014 10:25 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX

    Důležitá vlastnosti Kwalletmanageru je integrace s desktopem, přejít jinam bez ztráty pohodlí moc nejde, takže bych se spíš snažil o vylepšení tohoto programu než migraci jinam.

    Hlásil jsi to jako chybu? Není to už v jejich bugzille nahlášené? Stejně se o to šifrování nebude starat Kwalletmanager sám, ale bude používat nějakou knihovnu, kde ta lepší šifra s velkou pravděpodobností bude – takže oprava může být klidně jen na pár řádků nebo změna jedné konstanty + je potřeba udělat jednorázovou proceduru pro převod stávající klíčenky do nového formátu.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Václav 18.8.2014 10:50 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Dulezita veta v blogpostu byla "az na posledni verze". Kdyz se v poslednich verzich KDE poprve spusti kwallet, umoznuje uz i GnuPG backend a blowfish oznacuje jako deprecated. Takze mi duvod exportovat ho do keepasx z duvodu slabe sifry unika :)
    Cross my heart and hope to fly, stick a cupcake in my eye!
    Václav 18.8.2014 10:53 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Teda, "protoze starsi verze"
    Cross my heart and hope to fly, stick a cupcake in my eye!
    limit_false avatar 18.8.2014 11:26 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Ne všechny distra mají k dispozici opravenou verzi kwalletmanageru, např. Scientific Linux 6.
    When people want prime order group, give them prime order group.
    Václav 18.8.2014 11:48 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Pak bych si asi našel repo s posledním KDE, nabídl patch, nebo alespoň otevřel v bugzille feature request na backport GnuPG backendu.
    Cross my heart and hope to fly, stick a cupcake in my eye!
    Bedňa avatar 18.8.2014 12:01 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Ako píšu aj predrečníci, dopísanie soli k heslu bude otázka pár riadkov kódu. Inak za toto by si autori zaslúžili ...

    V KeePassX vidím že to šifruje AES 256bit, ale niekde nevidím či nieje použitý ECB, alebo CBC, takže môžeš skončiť tam kde si.
    KERNEL ULTRAS video channel >>>
    18.8.2014 20:34 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Je potřeba soubor(y) od KeePassX dát do EncFS a ten mít na LUKS partition a přístupný na serveru jen z localhost-u, ke kterému se z venku dostaneš jen přes dva SSH tunely realizovatelné jen přes klíč…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    18.8.2014 20:41 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    18.8.2014 20:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    A vidím, že jsem se už jako několikrát spletl - sorry (špatný odkaz na jiný SW).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Bedňa avatar 18.8.2014 22:01 Bedňa | skóre: 34 | blog: Žumpa | Horňany
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Sa stane :) Mno tento aspoň transparentne používa CBC.
    KERNEL ULTRAS video channel >>>
    18.8.2014 22:10 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    On asi KeePassX taky, bo v repozitáři-testech se zmiňuje CBC.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    19.8.2014 18:35 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    A pokud by neměla tak zpět ke správnému zabezpečení.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    20.8.2014 14:12 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    O jakých verzích se tu vlastně mluví? KDE 4.11 v openSUSE 13.1 má kwalletmanager 1.10. Je "stará verze" nebo "až na poslední verze"?
    Václav 20.8.2014 16:55 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Ve 4.13 je určitě. Osobně používám 5.1 :-)
    Cross my heart and hope to fly, stick a cupcake in my eye!
    20.8.2014 18:22 lertimir | skóre: 64 | blog: Par_slov
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    5.1 je poměrně zvláštní číslo, když odkaz na kwalletmanager obsahuje něco zcela jiného. Není to číslo nějaké knihovny?
    Václav 20.8.2014 18:44 Václav "Darm" Novák | skóre: 26 | blog: Darmovy_kecy | Bechyně / Praha
    Rozbalit Rozbalit vše Re: Migrace z kwalletmanager na KeePassX
    Ano, pardon :-) balíček kwallet (kwallet framework)
    Cross my heart and hope to fly, stick a cupcake in my eye!

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.