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:44 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 1
    včera 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 7
    včera 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 13
    včera 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    včera 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 11
    včera 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    včera 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 1
    8.10. 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    8.10. 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 10
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2823 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Stránkování dat z MySQL v aplikaci

    9.9.2010 11:35 PetrHL | skóre: 17 | blog: petr_h | Neratovice
    Stránkování dat z MySQL v aplikaci
    Přečteno: 954×
    Dobrý den,

    mám aplikaci, která pracuje s daty v MySQL. Jedna tabulka má kolem 100k záznamů a já bych rád tyto záznamy zobrazil postupně uživateli.
    Mé řešení:

    Po spuštění aplikace zobrazím prvních 500 záznamů. Když uživatel začne rolovat v gridu a dostane se na konec, načtu následujících 500 záznamů. Pokud se vrací zpět, načtu předchozí záznamy atd. Funguje to velice pěkně a rychle. Používám na to LIMIT a OFFSET. Je tu ale problém.

    Tabulka je nějak setříděná. Uživatel chce editovat záznam. Pokud opraví položku, podle které se tabulka třídí, položka se posune na jinou pozici, takže se dostane mimo hranice stanovené LIMIT a OFFSET. Jak se mám na tento záznam po ukončení editace vrátit? Jak mám zjistit, kterou stránku mu mám pomocí LIMIT a OFFSET zobrazit (kurzor na záznam už pak přesunu pomocí sekvenčního vyhledání pod ID)? Máte, prosím, nějaký nápad?

    Díky moc!
    Petr
    "Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů

    Řešení dotazu:


    Odpovědi

    rADOn avatar 9.9.2010 12:48 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Stránkování dat z MySQL v aplikaci
    select count(*) from table where sort_key < changed_key
    a mas pozici.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    Řešení 1× (PetrHL (tazatel))
    13.9.2010 10:01 PetrHL | skóre: 17 | blog: petr_h | Neratovice
    Rozbalit Rozbalit vše Re: Stránkování dat z MySQL v aplikaci

    Díky za radu, pomohlo to. Bohužel pokud je uživatel někde na u konce tabulky, ten select dlouho trvá. Nakonec jsem to vyřešil jinak.
    Mé řešení:

    procedure TfrmMain.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      id : Integer;
      f1 : TDateTime;
      f2 : String;
      f3 : Integer;
    begin
      if (key = VK_END) and (Shift = [ssCtrl]) then
      begin
        if cDB_LIMIT > DbRecCount then
          DbOffset := 0
        else
          DbOffset := DbRecCount - cDB_LIMIT;
        try
          Q.DisableControls;
          trQ.Rollback;
          Q.SQL.Text := 'select * from cqrlog_main order by qsodate DESC, time_on DESC LIMIT '+IntToStr(cDB_LIMIT)+' OFFSET '+IntToStr(DbOffset);
          trQ.StartTransaction;
          Q.Open;
          Q.First
        finally
          Q.EnableControls
        end
      end;
      if (key = VK_HOME) and (Shift = [ssCtrl]) then
      begin
        try
          Q.DisableControls;
          trQ.Rollback;
          Q.SQL.Text := 'select * from cqrlog_main order by qsodate DESC, time_on DESC LIMIT '+IntToStr(cDB_LIMIT);
          trQ.StartTransaction;
          Q.Open
        finally
          Q.EnableControls
        end
      end;
      if ((key = VK_UP) or (key = 33)) and Q.BOF then
      begin
        try
          Q.DisableControls;
          id := Q.Fields[0].AsInteger;
          f2 := Q.Fields[2].AsString;
          f1 := Q.Fields[1].AsDateTime;
          Q1.SQL.Text := 'select id_cqrlog_main from cqrlog_main order by qsodate DESC, time_on DESC LIMIT 1';
          trQ1.StartTransaction;
          Q1.Open;
          f3 := Q1.Fields[0].AsInteger;
          trQ1.Rollback;
          Q1.Close;
          if f3=id then //we are on the begining of dataset
            exit;
          Q.Close;
          Q.SQL.Text := 'select * from (select * from cqrlog_main where (qsodate = '+QuotedStr(DateToStr(f1))+
                        'and time_on >= '+QuotedStr(f2)+') or qsodate > '+QuotedStr(DateToStr(f1))+
                        ' order by qsodate, time_on LIMIT '+IntToStr(cDB_LIMIT)+') as foo order by qsodate DESC,time_on DESC';
          trQ.Rollback;
          trQ.StartTransaction;
          Q.Open;
          Q.Last
        finally
          Q.EnableControls
        end
      end;
    
      if ((key = VK_DOWN) or (key = 34)) and Q.EOF then
      begin
        try
          Q.DisableControls;
          id := Q.Fields[0].AsInteger;
          f2 := Q.Fields[2].AsString;
          f1 := Q.Fields[1].AsDateTime;
    
          Q1.SQL.Text := 'select id_cqrlog_main from cqrlog_main order by qsodate,time_on LIMIT 1 OFFSET 0';
          trQ1.StartTransaction;
          Q1.Open;
          f3 := Q1.Fields[0].AsInteger;
          Q1.Close;
          trQ1.Rollback;
          if f3=id then //we are on the end of dataset
            exit;
          Q.Close;
          Q.SQL.Text := 'select count(*) from cqrlog_main where (qsodate = '+QuotedStr(DateToStr(f1))+
                        'and time_on <= '+QuotedStr(f2)+') or qsodate < '+QuotedStr(DateToStr(f1))+
                        ' order by qsodate DESC, time_on DESC LIMIT '+IntToStr(cDB_LIMIT);
          Q.Open;
          if Q.Fields[0].AsInteger < cDB_LIMIT then
          begin
            Q.Close;
            Q.SQL.Text := 'select * from (select * from cqrlog_main order by qsodate, time_on LIMIT '+
                           IntToStr(cDB_LIMIT)+') as foo order by qsodate DESC,time_on DESC';
           Q.Open;
           Q.Locate('id_cqrlog_main',id,[])
          end
          else begin
            Q.Close;
            Q.SQL.Text := 'select * from cqrlog_main where (qsodate = '+QuotedStr(DateToStr(f1))+
                          'and time_on <= '+QuotedStr(f2)+') or qsodate < '+QuotedStr(DateToStr(f1))+
                          ' order by qsodate DESC, time_on DESC LIMIT '+IntToStr(cDB_LIMIT);
            Q.Open;
            Q.Locate('id_cqrlog_main',id,[])
          end
        finally
          Q.EnableControls
        end
      end                              
    

    Ještě bude nutné se s tím pohrát, ale funguje to dle očekávání.

    "Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | CQRPROP | HamQTH | Domů

    Založit nové vlákno • Nahoru

    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.