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í
×
dnes 11:11 | Nová verze

Byla vydána verze 0.10.0 webového prohlížeče qutebrowser (Wikipedie). Přehled novinek v příspěvku na blogu. Vývojáři qutebrowseru kladou důraz na ovladatelnost pomocí klávesnice a minimální GUI. Inspirovali se prohlížečem dwb a rozšířeními pro Firefox Vimperator a Pentadactyl. Prohlížeč qutebrowser je naprogramován v Pythonu a využívá PyQt5. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GNU GPL 3.

Ladislav Hagara | Komentářů: 1
včera 16:22 | Nová verze

Po pěti měsících od vydání Waylandu a Westonu 1.12.0 oznámil Bryce Harrington (Samsung) vydání Waylandu 1.13.0 a Westonu 2.0.0.

Ladislav Hagara | Komentářů: 0
24.2. 13:37 | Bezpečnostní upozornění

Společnost Cloudflare (Wikipedie) na svém blogu potvrdila bezpečnostní problém s její službou. V požadovaných odpovědích od reverzní proxy byla odesílána také data z neinicializované paměti. Útočník tak mohl získat cookies, autentizační tokeny, data posílaná přes HTTP POST a další citlivé informace. Jednalo se o chybu v parsování HTML. Zneužitelná byla od 22. září 2016 do 18. února 2017. Seznam webů, kterých se bezpečnostní problém potenciálně týká na GitHubu.

Ladislav Hagara | Komentářů: 1
24.2. 08:22 | Nová verze

Byla vydána první beta verze Ubuntu 17.04 s kódovým názvem Zesty Zapus. Ke stažení jsou obrazy Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu GNOME, Ubuntu Kylin, Ubuntu Studio a Xubuntu. Dle plánu by Ubuntu 17.04 mělo vyjít 13. dubna 2017.

Ladislav Hagara | Komentářů: 39
23.2. 17:53 | Bezpečnostní upozornění

Google na svém blogu věnovaném počítačové bezpečnost informuje o nalezení "reálného" způsobu generování kolizí hašovací funkce SHA-1. Podrobnosti a zdrojové kódy budou zveřejněny do 90 dnů. Již dnes lze ale na stránce SHAttered nalézt 2 pdf soubory, jejichž obsah se liší a SHA-1 otisk je stejný (infografika).

Ladislav Hagara | Komentářů: 34
23.2. 17:51 | Nová verze

Vyšla nová verzia open source software na správu a automatizáciu cloudových datacentier Danube Cloud 2.4. Danube Cloud je riešenie postavené na SmartOS, ZFS, KVM a zónach. Obsahuje vlastnosti ako integrovaný monitoring, DNS manažment, zálohy, a samozrejme rozsiahlu dokumentáciu.

dano | Komentářů: 12
23.2. 17:46 | Pozvánky

V Plzni se 3. až 5. března 2017 uskuteční AIMTEChackathon. Je to akce pro vývojáře, grafiky, webdesignéry i veřejnost. Akci provází zajímavé přednášky IT odborníků. Více o programu a možnosti přihlášení na stránkách akce.

cuba | Komentářů: 0
23.2. 01:00 | Nová verze

Známý šifrovaný komunikátor Signal od verze 3.30.0 již nevyžaduje Google Play Services. Autoři tak po letech vyslyšeli volání komunity, která dala vzniknout Google-free forku LibreSignal (dnes již neudržovaný). Oficiální binárky jsou stále distribuované pouze přes Google Play, ale lze použít neoficiální F-Droid repozitář fdroid.eutopia.cz s nezávislými buildy Signalu nebo oficiální binárku stáhnout z Google Play i bez Google účtu

… více »
xm | Komentářů: 8
22.2. 23:14 | Nová verze

Po třech týdnech od vydání první RC verze byla vydána první stabilní verze 17.01.0 linuxové distribuce pro routery a vestavěné systémy LEDE (Linux Embedded Development Environment), forku linuxové distribuce OpenWrt. Přehled novinek v poznámkách k vydání. Dotazy v diskusním fóru.

Ladislav Hagara | Komentářů: 8
22.2. 17:28 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2017-6074 v Linuxu zneužitelné k lokální eskalaci práv. Jde o chybu v podpoře DCCP (Datagram Congestion Control Protocol). Do linuxového jádra se dostala v říjnu 2005. V upstreamu byla opravena 17. února (commit). Bezpečnostní chyba byla nalezena pomocí nástroje syzkaller [Hacker News].

Ladislav Hagara | Komentářů: 16
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 711 hlasů
 Komentářů: 66, poslední 22.2. 18:57
    Rozcestník

    Dotaz: select z databaze

    24.1.2010 11:27 Peta
    select z databaze
    Přečteno: 557×
    Ahojte, chci vybrat z databaze tabulku, ale tak, aby ty data byly setrizene podle jednoho elementu. Nejdrive aby byly radky tabulky, ve kterych je tento element null a pote zbytek tech elementu, ve kterych ma tento element nejakou hodnotu.

    PS: order by by nejspise sel, ale jak se zachova, kdyz ten element je null a chci ho nejdrive?

    Moc diky

    Řešení dotazu:


    Odpovědi

    24.1.2010 12:00 peksha | skóre: 10 | Ostrava
    Rozbalit Rozbalit vše Re: select z databaze
    Zkus
    ORDER BY tab.atribut ASC; (vzestupne)
    nebo
    ORDER BY tab.atribut DESC; (sestupne)
    - jedno z toho by Ti to melo dat na zacatku ;-)
    Tady by bylo tak krasne nebyt tech vos...
    24.1.2010 13:43 Peta
    Rozbalit Rozbalit vše Re: select z databaze
    diky vyzkousim :)
    27.1.2010 11:39 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: select z databaze
    Ne nutně.
    Řešení 1× (krtek007)
    24.1.2010 14:28 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: select z databaze
    ORDER BY řadí NULL buď na začátek nebo na konec, záleží na použité databázi. Pokud vaše databáze řadí zrovna opačně, než jak potřebujete, použijte COALESCE() – jako první hodnotu zadáte sloupec, podle kterého se má řadit. Když bude NULL, použije se druhá hodnota v pořadí – a tam zadejte co nejmenší nebo co největší přípustnou hodnotu (podle toho, kam chcete prázdné hodnoty řadit).
    27.1.2010 11:11 Tomáš
    Rozbalit Rozbalit vše Re: select z databaze
    order by case when A.x is null then 1 else 0 end, A.x 

    Záměnou 0 a 1 můžete řídit zda chcete záznamy s NULL na konci nebo na začátku.

    <rejpanec>Žádné šílenosti typu NULL FIRST opravdu nejsou potřeba.</rejpanec>

    27.1.2010 11:41 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: select z databaze
    Dají se obejít, ale hodí se - třeba kvůli efektivitě, které ta vaše konstrukce zrovna dvakrát nepřispívá.
    27.1.2010 12:18 cronin | skóre: 48
    Rozbalit Rozbalit vše Re: select z databaze
    Alebo to vyriesit by design a nemat v databaze NULL hodnoty tam, kde sa ocakavaju udaje. Ono vsetky tie NULL, null ci NIL veci su len technicke barlicky ako povedat, ze niekde, kde nieco ma byt, nic nie je. Uplne najhorsie je, ak nejaky null nesie informacnu hodnotu.

    Nevravim, ze uvedeny pristup sa ma uplatnovat za kazdych okolnosti. Odporucam sa nad nim vsak aspon zamysliet, kedykolvek je kvoli vyskytu null nutne menit spravanie sa cohosi. Mozno najlepsi pristup, ako dany problem vyriesit, je zariadit, aby vobec nenastal.
    27.1.2010 12:59 kulik
    Rozbalit Rozbalit vše Re: select z databaze
    <rejpanec>Jiste, proc to psat snadno citelnym deklarativnim zpusobem, kdyz muzu pouzit nekolikrat delsi case a navic tim jeste dosahnout nizsi vykonnosti.</rejpanec>

    Jinak v Oracle nulls last|first.
    28.1.2010 19:01 Tomáš
    Rozbalit Rozbalit vše Re: select z databaze
    Chtěl bych se zeptat z čeho plyne to tvrzení, o snížené výkonosti. Já osobně si dokážu představit pouze jeden velmi specifický a poněkud teoretický případ, kdy by mohla být varianta s case pomalejší než s frází null first/last. A je to tento případ:
    1. Vracíte tak veliký počet záznamů, že se výsledek nevejde do paměti.
    2. Select musí být nejvýše s frází where (žádné joiny a agregace, případně jen nejjednodušší select)
    3. Existuje (b-tree) index nad A.x ( který je řazen podle hodnoty a nikoliv podle hashe ), aby jste mohl využít existujícího řazení na tomto indexu.
    4. Optimizer umí v případě fráze where zkomutovat operátory where a order by. Umí takovou optimalizaci vůbec nějaká databáze?

    Čitelnost je samozřejmě u nulls first lepší. A přenositelnost? Ta to pěkně odskákala ;-)

    28.1.2010 19:10 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: select z databaze
    Podmínka 1 je nadbytečná určitě, 2 jedině když je hloupý optimalizátor, 3 není nijak silný předpoklad. Podmínka 4 mi také připadá nadbytečná, pokud se bavíme o porovnání vaší varianty s explicitním nulls first. Přenositelnost u SQL? To je tak trochu utopie všeobecně, jedna praktická konstrukce to nezachrání.
    29.1.2010 00:14 Tomáš
    Rozbalit Rozbalit vše Re: select z databaze

    Tak ještě jednou a detailněji:

    Tvrzení první: pokud před operací sort budete dělat v selectu jinou libovolnou operaci tak si při ní dotyčný case předpočítáte a sort pak může být přeložen téměř úplně stejně jako v případě existence fráze null first/last. Důsledek prvního faktu: Aby bylo možné zlepšení, tak sort musí být první (jediná) operace.

    Tvrzení druhé: Aby byl sort s null first efektivnější než case musí dojít k využití btree-indexu (řazeného dle hodnoty nikoliv hashe). Při nevyužití indexu bude složitost stejná v obou případech a to O(n*log n) bez ohledu na počet, a typ vstupů ve frázi order by.

    Tvrzení třetí: Aby mělo využití indexu smysl nesmí se vám výsledek vejít do paměti. Pokud se vám tabulka vejde do paměti pak v rámci natažení do paměti uděláte i ten case a dále pokračujete podle tvrzení jedna. Pokud si někdo myslí že přes index to bude i v tomto případě rychlejší, tak je potřeba si uvědomit, že kromě kompletní tabulky musíte do paměti dostat z disku i ten index. O přístupu přes index by možná dalo polemizovat. Já se přikláním k názoru že cena čtení indexu z disku bude větší než cena kompletního třídění v paměti. Bavíme se o třídění relativně malé tabulky, která se vejde do paměti.

    Tvrzení čtvrté: Pokud musí být sort první operací (viz tvrzení první a druhé) pak musí komutovat se všemi předchozími operacemi, tak aby se dostal na první místo a bylo možné index využít. Jediný takový případ je, že předchází jediná operace where, protože je to jediná operace, která je schopna zachovat relativní pořadí vět, které vypade ze sort operace. A navíc tato optimalizace musí podporována optimizérem. I zde by možná šlo polemizovat, že lze postavit join algoritmus, který by pořadí zachovával, ale obávám se, že na toto databáze běžně nepodporují.

    Otázka zůstává: Z čeho plyne to tvrzení o snížené výkonosti? Rád se nechám poučit.

    29.1.2010 01:15 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: select z databaze

    1. hodnotu toho case si předpočítat sice můžete, ale stejně pro jeho hodnoty (ani pro kombinaci s hodnotami sloupce) nebude k dispozici index. Nebude-li tedy optimalizátor natolik chytrý, aby poznal, že vlastně maskujete chybějící nulls first a že tedy můžete použít index na příslušný sloupec (a to téměř jistě nebude), bude výsledek méně efektivní než použití nulls first.

    2. Proti této podmínce stále nic nenamítám, ale nepovažuji ji za nijak silný předpoklad. Pokud podle toho sloupce potřebuji často řadit, index si na něm udělám.

    3. Za prvé se opíráte o (podle mne chybný) závěr z bodu 1. Za druhé nepočítáte s velmi pravděpodobnou možností, že tabulka je sice malá, ale příslušné stránky (s tabulkou i indexem) už v paměti jsou načteny z dřívějška, kdy se vyhodnocoval jiný dotaz a nebyl tudíž důvod si předpočítat hodnotu toho case-výrazu.

    4. Nevidím důvod, proč by join nebo group by musel obecně bránit použití indexu. Pár takových dotazů jsem si vyzkoušel a index se použil, na rozdíl od vaší konstrukce, která využití indexu zabránila zcela spolehlivě.

    Kromě toho ve všech bodech automaticky předpokládáte, že rozšíření dotazu o umělý počítaný sloupec a řazení podle kombinovaného klíče místo jednoduchého nepřinese nic nestojí, což je IMHO zcela neopodstatněný předpoklad. Netvrdím, že to výkon sníží nějak zásadně, ale něco to stát bude.

    29.1.2010 12:16 kulik
    Rozbalit Rozbalit vše Re: select z databaze
    Přenositelnost může být důležitá, ovšem jak kdy. Existuje řada aplikací, kde se přenositelnotst vůbec neřeší, protože je cílem vyždímat z použité platformy maximum právě prostřednictvím jejích specifik (za která se platí často milionové sumy). Typickým příkladem může být datový sklad.

    Myslím že zaměňuješ výkon a jakousi obecnou složitost. Stejně tak bych mohl ignorovat descending třídění a aplikovat ascending vždy na vhodně upravenou hodnotu (např. pro čísla triviálně vynásobení -1), a pokud by neexistovaly vhodné indexy, nedošlo by pravděpodobně ke změně asymptotické složitosti, nicméně výkon by byl typicky nižší. I když odhlédneme od indexů (a to je hodně velké odhlédnutí), výpočet výrazu prostě něco stojí, stejně tak uložení sloupce, jistě že to je mnohem méně než např. přístup na disk a rozdíl může být klidně v promile, v principu to ale s "nulls first" může být nejhůře stejné jako s case (v případě "hloupé" databáze, která to dělá analogicky case) a připravuji se o možnost optimalizace u "chytré" databáze. O pokročilé optimalizaci typu query rewrite ani nemluvě. Obecně pokud přepíšu deklarativní věc na procedurální, připravuji se o spoustu optimalizačních možností databázového stroje.

    27.1.2010 12:23 cronin | skóre: 48
    Rozbalit Rozbalit vše Re: select z databaze
    Zariadit, aby sa "prazdne" hodnoty plnili prazdnou ale validnou hodnotou, nie NULL-om. Vyplnit touto hodnotou aktualne NULL-y a pridat pre element obmedzenie NOT NULL. A nikdy viac dany problem nebude potrebne riesit, a to ani technicky (...ako napisat ORDER BY...) ani logicky (...if (value == null) {...} else {...}).
    27.1.2010 12:37 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: select z databaze
    Prázdná ale validní hodnota je v databázi právě NULL. Představte si, že mám třeba seznam článků, u kterých chci evidovat datum a čas, kdy byly vydány – ale u některých to prostě nevím. Samozřejmě si tam nebudu vymýšlet nějaké fiktivní datum, ale dám tam NULL. Pokud mám uložené i datum přidání záznamu, můžu pak řadit podle data vydání, pokud jej znám, jinak podle data přidání záznamu.
    27.1.2010 17:42 cronin | skóre: 48
    Rozbalit Rozbalit vše Re: select z databaze
    Prázdná ale validní hodnota je v databázi právě NULL.
    Technicky ano. Logicky to tak byt niekedy moze, ale nemusi, a spravidla ani nie je. Stale plati to o barlickach, co som pisal vyssie.
    Představte si, že mám třeba seznam článků, u kterých chci evidovat datum a čas, kdy byly vydány – ale u některých to prostě nevím.
    Tak to je dost desiva predstava a vasa aplikacia priam krici po poriadnom re-dizajne.
    27.1.2010 17:55 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: select z databaze
    Vítejte do reálného světa. Nechci vás moc děsit, ale těch případů, kdy nějaký údaj nevíme nebo dokonce neexistuje je spousta – prostřední jméno, titul před a za jménem, rodné číslo, číslo občanky, SPZ služebního auta, soukromý telefon, datum úmrtí, jméno manžela/manželky a další a další. Řešením není redesign aplikace, ale smířit se s tím, že reálný svět nezapadne dokonale do vašich tabulek se samým NOT NULL a databázi a aplikaci reálnému světu přizpůsobit. Berlička je cpát do datbáze nějaké umělé hodnoty, když tam potřebujeme uložit údaj „zde hodnota není“.
    27.1.2010 18:12 cronin | skóre: 48
    Rozbalit Rozbalit vše Re: select z databaze
    Vítejte do reálného světa.
    Profesionalne vyvijam software uz takmer desatrocie. Od reality som vzdialeny tych par hodin, co som prisiel z prace domov. Ak mi niekto povie, ze ma redakcny system, ktory eviduje datum publikacie clankov, ale pre niektore clanky datum nepozna, tak ho do svojho projektoveho timu zaradim len velmi opatrne (slusne povedane). Ale predpokladam, ze si len nestastne zvolil priklad. Na zaver uz len zacitujem sam seba:
    Nevravim, ze uvedeny pristup sa ma uplatnovat za kazdych okolnosti. Odporucam sa nad nim vsak aspon zamysliet, kedykolvek je kvoli vyskytu null nutne menit spravanie sa cohosi.
    27.1.2010 19:27 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: select z databaze
    Já bych do svého projektového týmu zase nechtěl člověka, který vidí „seznam článků“ a čte „redakční systém“, a který si slovo „nezná“ vykládá jako „vlastně ho znát může“.
    27.1.2010 18:39 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: select z databaze
    No NULL se asi nevyhneme, ale je otázkou jestli u těchto uvedených, není lepší zvážit prázdný řetězec (mimo datumy) než NULL.
    Povolené NULL na sloupec má své opodstatnění, ale čím méně tím lépe :).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    27.1.2010 19:30 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: select z databaze
    Třeba rodné číslo je devět nebo deset číslic, tomu ale prázdný řetězec neodpovídá. Navíc dotyčná osoba nemá prostřední jméno, nemá tituly, nemá rodné číslo – to je něco jiného, než že má prostřední jméno „“, to samé pro tituly nebo rodné číslo.
    27.1.2010 20:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: select z databaze
    čekal jsm tuto odpověď :), netvrdím, že se nemá použít NULL, jen bych s ním šetřil :)
    Je na zvážení, „“ má v tomto případě stejnou vypovídající hodnotu jako NULL.
    Je to jen úhlu pohledu prázdné jméno či titul je v reálném světe bez titulu beze jména, jméno „“ prostě neexistuje.
    Jeho neexistenci můžu vyjádřit žádným jménem (jeho nulovou délkou) nebo 3tím stavem NULL, ale pak právě 2. stav „prázdné jméno“ je nedefinovaný stav, není to jméno ani to není absence jména (protože takové hodnoty jméno nemůže nabývat).
    Prakticky budeme mít to stejné a záleží jen jak s tím pracujeme a jaké máme kontrolní mechanismy, ale pokud prázdné jméno neznamená něco je zbytečné definovat NULL.
    Abych předešel ..., je mi jasné, že hodnoty typu 'N/A' se lépe vyjadřují s NULL, ale to nejdůležitější je zvážit jestli potřebujeme vyjádřit právě takovou hodnotu a ve výsledku nám to nepřidělá práci.
    Vůbec nepochybuji o stavu NULL u datumu či časového razítka, pokud chci umožnit nezadáno, tam prostě hodnota '0' je něco jiného.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    27.1.2010 21:52 Filip Jirsák | skóre: 66 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: select z databaze
    Je to jen úhlu pohledu prázdné jméno či titul je v reálném světe bez titulu beze jména, jméno „“ prostě neexistuje.
    Tímhle postupem (jméno „“ neexistuje, tak to použiju místo nezadané/neznámé hodnoty) si koledujete o to, že se vám do databáze brzo dostane někdo, kdo má opravdu prázdné jméno. U toho jména to je sice opravdu dost nepravděpodobné, ale podobné „naschvály“ se dějí poměrně často. takže pokud je někde význam „hodnota neznámá nebo neexistuje“, dám tam raději NULL, i když třeba jinak není přípustný prázdný řetězec nebo tam mají být kladná čísla a tedy bych mohl použít prázdný řetězec nebo 0 či -1. Protože za chvíli si někdo vzpomene, že vlastně prázdný řetězec má taky nějaký význam, nebo že se připouští i nula či záporná čísla.
    27.1.2010 23:29 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: select z databaze
    Může být :), mívám sám někdy u takovýchto polí NULL povoleno, nicméně vždy se hodně zamyslím jestli opravdu to zlé nepěkné vybočující NULL tam povolím a co přesně říká.
    A možná i právě proto co píšete Protože za chvíli si někdo vzpomene…, protože dokud si nevzpomene mám definované stavy (Jméno, Nevyplněno), jakmile si vzpomene definujeme 3. stav (Jméno; Prázdné jméno znamená, že medvěd dorazil; nevyplněno) a musím fčul přizpůsobit aplikační vrstvu. Pokud rozšiřuji mám jednoznačnou úlohu, obraceně už ne.
    PS: PhpMyAdmin neumožňoval definici sloupce NULL a default '', už to nějaký pátek umí (od verzí 3.x), bo sem to reklamoval, z toho je patrné, že sám tuto funkcionalitu používám (prázdná řetězec a NULL ≡ dvě informace), nicméně… :)
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

    Založit nové vláknoNahoru

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

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