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 10:22 | Komunita

Minulý týden byla ze správce souborů (Files, Soubory, Nautilus) v GNOME odstraněna možnost spouštění aplikací. Po bouřlivé diskusi byla dnes tato možnost do správce souborů vrácena (commit).

Ladislav Hagara | Komentářů: 5
včera 22:44 | Nová verze

Ani ne po měsíci vývoje od vydání verze 2.10.0 byla vydána nová verze 2.10.2 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP. Přehled novinek i s náhledy v oznámení o vydání. Opraveno bylo 44 chyb. Novinkou je podpora formátu HEIF (High Efficiency Image File Format) a dva nové filtry.

Ladislav Hagara | Komentářů: 10
včera 17:44 | Komunita

SFC (Software Freedom Conservancy) na svém blogu blahopřeje společnosti Tesla k prvnímu kroku k dodržování licence GPL. Tesla ve svých elektromobilech používá svobodný software. Změny ve zdrojovým kódech ale doteď veřejně nezveřejňovala. Změna nastala tento týden. Zdrojové kódy byly zveřejněny na GitHubu. Nejedná se zatím ale o kompletní odpovídající zdrojové kódy (CCS - complete corresponding source).

Ladislav Hagara | Komentářů: 8
19.5. 17:33 | Komunita

Společnost Purism informuje o aktuálním vývoji chytrého telefonu Librem 5, jenž by měl respektovat bezpečnost, svobodu a soukromí uživatelů. Telefon už umí telefonovat. Librem 5 by měl být k dispozici v lednu 2019. Předobjednat jej lze za 599 dolarů.

Ladislav Hagara | Komentářů: 23
19.5. 09:00 | Bezpečnostní upozornění

Společnost Qualys zveřejnila výsledky bezpečnostního auditu procps-ng, tj. balíčku s příkazy free, kill, pgrep, pidof, pkill, pmap, ps, pwdx, skill, slabtop, snice, sysctl, tload, top, uptime, vmstat, w a watch. Nalezeno bylo 7 bezpečnostních chyb (CVE-2018-1120, CVE-2018-1121, CVE-2018-1122, CVE-2018-1123, CVE-2018-1124, CVE-2018-1125 a CVE-2018-1126). Dvě z nich jsou zneužitelné k lokální eskalaci práv. Příslušné záplaty jsou již k dispozici v upstreamu.

Ladislav Hagara | Komentářů: 5
18.5. 06:44 | Nová verze

Byla vydána třiadvacátá alfa verze svobodné historické realtimové strategie 0 A.D. (Wikipedie). Kódový název této nejnovější verze je Ken Wood. Představení novinek v poznámkách k vydání a také na YouTube.

Ladislav Hagara | Komentářů: 3
18.5. 05:55 | Zajímavý článek

Tento týden se v Cambridge ve Velké Británii konal hackfest, který měl za cíl zlepšit výkon na GNOME postavených systémů na slabších počítačích. Hans de Goede například analyzoval spotřebu paměti jednotlivých komponent ve Fedora 28 Workstation na stroji s 2 GB RAM a pomocí kroků popsaných v článku Kde uspořit paměť ve Fedora Workstation na MojeFedora.cz snížil spotřebu paměti z 1,4 GB na 765 MB.

Ladislav Hagara | Komentářů: 9
17.5. 20:55 | Nová verze

Bram Moolenaar oznámil vydání verze 8.1 textového editoru Vim (Vi IMproved). Hlavní novinkou je integrovaný terminál.

Ladislav Hagara | Komentářů: 8
17.5. 16:55 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.27 a beta verze 1.28 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 6
17.5. 11:11 | Nová verze

Byla vydána verze 5.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Před měsícem slavil Proxmox VE 10 let (pdf).

Ladislav Hagara | Komentářů: 16
Používáte pro některé služby inetd?
 (33%)
 (24%)
 (42%)
Celkem 135 hlasů
 Komentářů: 4, poslední dnes 12:56
    Rozcestník

    Dotaz: Strašně moc prosím o pomoc zdejší profesionály

    19.9.2011 23:31 Jurko
    Strašně moc prosím o pomoc zdejší profesionály
    Přečteno: 750×
    Dobrý večer, dělám menu a nejsem schopen s tím už druhý den hnout. Vyzkoušel jsem vážně kde co ale výsledek se nedostavil :-( O co jde. V mysql mám takové uspořádání
    ID___NAME__________________PARENT_ID
    
    1____Kategorie zboží_______0
    2____Procesory_____________1
    3____Intel_________________2
    4____Pentium IV____________3
    5____Celeron_______________3
    6____AMD___________________2
    
    a potřebuji v php napsat funkci, která dokáže vypsat ty kategorie v takovém tvaru.
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > Intel > Celeron
    Kategorie zboží > Procesory > AMD
    Mě se podařilo sehnat jen kategorie které se vypisují pod sebe. viz kód
    function getTree($parent, $level) { 
      $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent); 
      while ($row = mysql_fetch_assoc($result)) { 
        echo str_repeat(" ",$level).$row['NAME']."
    "; getTree($row['ID'], $level++); } }
    Nepomohl by mi s tím nějaký hodně zkušený profesionál, jelikož už vím, že to je zatraceně těžké jestli vůbec možné:((
    Předem děkuji za snahu pomoci
    Je to z tohoto článku: zde

    Odpovědi

    20.9.2011 01:49 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    function getTree($parent, $path) { 
      $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent);
      if (mysql_num_rows($result) == 0) {
        echo implode('>', $path) . "\n";
      }
      while ($row = mysql_fetch_assoc($result)) {
        getTree($row['ID'], array_merge($path, array($row['NAME'])); 
      } 
    }
    
    Psáno z hlavy, netestováno, možná je to úplná kravina. ;-) Ale třeba to aspoň inspiruje.
    20.9.2011 13:14 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Psáno z hlavy, netestováno, možná je to úplná kravina. ;-) Ale třeba to aspoň inspiruje.
    Když zavolám tu funkci
    getTree($parent, $path);
    tak co je ten druhý parametr $path ?

    tady akorát chyběla závorka, ale stejně to nic nevypíše :(
    getTree($row['ID'], array_merge($path, array($row['NAME'])));

    v té první funkci jsem to volal pro vypsání všech kategorii takto
    getTree(0, 0);
    a teď to mám volat jak? Děkuji
    20.9.2011 15:30 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Mělo by se to volat s prázdným polem.
    getTree(0, array());
    
    20.9.2011 16:17 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Mělo by se to volat s prázdným polem.
    getTree(0, array());
    
    Když to takto zavolám, tak dostanu na výstupu tohle
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes)
    20.9.2011 17:50 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    To je velmi zvláštní, nedalo mi to a vyzkoušel jsem to. Funguje.

    Toto je přesný kód, který jsem použil.
    function getTree($parent, $path) { 
      $result = mysql_query('SELECT * FROM TREE WHERE PARENT_ID='.$parent)
        or die(mysql_error());
      if (mysql_num_rows($result) == 0) {
        echo implode('>', $path) . "\n";
      }
      while ($row = mysql_fetch_assoc($result)) {
        getTree($row['ID'], array_merge($path, array($row['NAME']))); 
      } 
    }
    
    mysql_connect("localhost", "user", "pass") or die(mysql_error());
    mysql_select_db("dbname") or die(mysql_error());
    
    getTree(0, array());
    
    20.9.2011 17:52 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Výstup:
    Kategorie zboží>Procesory>Intel>Pentium
    Kategorie zboží>Procesory>Intel>Celeron
    Kategorie zboží>Procesory>AMD
    
    20.9.2011 15:35 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    tak co je ten druhý parametr $path ?
    Pole, ve kterém je popsána cesta k aktuálnímu zanoření do rekurze. Takže na začátku by měla být prázdná, v jistém okamžiku to bude třeba:
    $path == array( 'Kategorie zboží', 'Procesory', 'Intel' )
    
    A zavolá se getTree(3, $path), což by mělo zařídit vypsání
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > Intel > Celeron
    
    20.9.2011 02:33 lertimir | skóre: 61 | blog: Par_slov
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Hm hezky je vidět, jak snaha pracovat s frameworky, kategoriemi a zbavuje mnohé schopnosti základního myšlení. Pokud mám kategorie správně vypsané a pouze se mi píší pod sebe místo vedle sebe na řádek, tak tam někam nesmyslně posílám znak nový řádek.

    Ač v PHP neprogramuji a 30 let jsem z výšky pryč odhaduji, že tím místem je konec 4. řádku výpisu, kde je v uvozovkách skok na nový řádek a pak ukončení uvozovek a asi PHP oblast mezi uvozovkami vezme natvrdo jako binární string.
    20.9.2011 02:40 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Nene, soudíš příliš rychle. Jeho funkce zřejmě vrací něco jako toto:
    Kategorie zboží
      Procesory
        Intel
          Pentium IV
          Celeron
        AMD
    
    Takže nejde jen o odstranění nového řádku, ale o mírně komplexnější změnu zápisu.
    20.9.2011 13:15 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Ano, ten výpis je přesně takový ;)
    20.9.2011 10:22 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    No tak to bych použil Traverzování kolem stomu a pokud jde o zobrazení, pak bych vyhledal konečné listy, kde RGT=LTF+1 a vypsal jeho předky, zhruba nějak takto(netestováno)
      mysql_query('SET SESSION group_concat_max_len = max_allowed_packet');
      $result = mysql_query('SELECT GROUP_CONCAT( tree2.name ORDER BY tree2.lft ASC SEPARATOR " > " ) as path FROM tree LEFT JOIN tree tree2 ON tree2.lft <= tree.lft WHERE tree.RGT = tree.LFT +1 GROUP BY tree.id');
      while ($row = mysql_fetch_assoc($result)) {
        echo $row['path'];
      }
    
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 10:29 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    tak to query by mělo být ještě takto
    SELECT 
      GROUP_CONCAT( tree2.name ORDER BY tree2.lft ASC SEPARATOR " > " ) as path 
    FROM 
      tree 
        LEFT JOIN tree tree2 ON tree2.lft <= tree.lft AND tree2.rgt >= tree.rgt
    WHERE 
      tree.RGT = tree.LFT + 1 
    GROUP BY 
      tree.id
    
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 13:16 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Ty vaše 2 řešení snad nejsou pro uvedenou tabulku v mysql, ne?
    20.9.2011 14:36 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Když se koukneš na tebou odkazovaný článek na kapitolu Traverzování kolem stromu tak tam je to popsané, určitě doporučuji investovat trochu času a používat to, pokud se tedy strom nemění moc často, což naznačené kategorie eshopu asi nebudou.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 14:46 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Takže pokud to shrnu, tak je řešení
    ALTER TABLE TREE ADD LFT INT NOT NULL DEFAULT 0;
    ALTER TABLE TREE ADD RGT INT NOT NULL DEFAULT 0;
    
    a po přidání položky spustit
    function rebuildTree($parent, $left) {
      $right = $left+1;
      $result = mysql_query('SELECT ID, NAME FROM TREE WHERE PARENT_ID='.$parent);
      while ($row = mysql_fetch_array($result)) {
        $right = rebuild_tree($row['ID'], $right);
      }
      mysql_query('UPDATE TREE SET LFT='.$left.', RGT='.$right.' WHERE ID='.$parent);
      return $right+1;
    }
    pokud to uděláš, do budoucna si docela dost pomůžeš.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 16:37 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    pokud to uděláš, do budoucna si docela dost pomůžeš.
    Tak jsem vložil dva sql dotazy do mysql, vytvořil se nový sloupec RGT a LFT s hodnotou 0

    pak jsem spustil tu funkci rebuildTree, která přepsala v mysql hodnotu sloupcu RGT a LFT zřejmě náhodnýma číslama :))

    Pak jsem spustil ten výpis, všechno se načetlo ale je to nějaké neseřazené/rozházané. Nešlo by spustit nějak v obráceném pořadí? TO by snad mohlo být lepší pro orientaci, nebo prostě to brát od nejmenšího id :(

    Děkuji
    20.9.2011 16:53 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    A co přesně to vypisuje? A s jakými parametry jsu spustil rebuildTree?
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 17:17 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    A co přesně to vypisuje? A s jakými parametry jsu spustil rebuildTree?
    spouštěl jsem to takto rebuildTree(0, 0); a ten výpis je seřazený jakoby od nejvyššího id...
    20.9.2011 17:23 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 17:40 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?
    Asi bude problém někde jinde, mám v tom teď hokej, musím to pořádně vyzkoušet a dám vědět. Ale ještě prosím jedna věc, snažím se přijít na to, co ta čísla v LFT a RGT znamenaji :( Když přidám nebo smažu nějakou kategorii musím spustit znova tu funkci která vložila ta čísla v mysql?

    Díky
    20.9.2011 17:41 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Ano, víc ke popsané v tom článku, nebo na googlu
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 17:47 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Tak když přidám nějakou kategorii tak je pak výpis takový
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > AMD
    Ovoce > Jablko > červené
    Kategorie zboží > Procesory > Intel > Celeron > Quadro
    místo
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > AMD
    Kategorie zboží > Procesory > Intel > Celeron > Quadro
    Ovoce > Jablko > červené
    
    21.9.2011 10:54 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Třídění by se mělo nastavit ve funkci rebuildTree, která jede po položkách, přidej tam do selectu ORDER BY a podle jakého chceš řadit (pokud nemáš pozici, tak by tam mohlo být třeba ID), při výpisu se automarticky řadí podle LFT, když se koukneš na obrázek ve článku, tak by to mělo přesně odpovídat tomu, co potřebuješ.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    20.9.2011 18:00 Jurko
    Rozbalit Rozbalit vše Re: Strašně moc prosím o pomoc zdejší profesionály
    Jak přesně to vypíše a jak by to mělo vypsat, u mě to vypadá v pořádku, máš tam to upravené query?
    upravené query ta mám...

    a ten výpis by měl být asi takový, popořadě..
    Kategorie zboží > Procesory > Intel > Pentium IV
    Kategorie zboží > Procesory > Intel > Celeron > Quadro
    Kategorie zboží > Procesory > AMD
    Ovoce > Jablko > červené

    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.