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 19:11 | Zajímavý projekt

    Vývojáři Ubuntu představili projekt Myna, tj. iniciativu zaměřenou na přidání funkce převodu řeči na text do prostředí desktopu Ubuntu. Dle plánu již v Ubuntu 26.10.

    Ladislav Hagara | Komentářů: 0
    dnes 18:33 | Zajímavý software

    Společnost Epic Games představila nový open source systém pro správu verzí Lore navržený pro "bezprecedentní škálovatelnost dat i týmů a optimalizovaný pro projekty, včetně her a zábavy, které kombinují kód s velkými binárními soubory, aby uspokojil potřeby vývojářů i umělců". Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 0
    dnes 15:33 | IT novinky

    Úřad pro ochranu hospodářské soutěže (ÚOHS) provedl v říjnu 2024 místní šetření u společnosti Seznam.cz. Úřad prověřoval důvodné podezření na možné protisoutěžní jednání, konkrétně zneužití dominantního postavení. Krajský soud v Brně v květnu 2025 konstatoval, že toto šetření bylo nezákonné. Nejvyšší správní soud (NSS) včera rozhodl, že šetření bylo provedeno v souladu se zákonem. Krajský soud bude muset případ posoudit znovu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | IT novinky

    Byl představen skládací telefon Commodore Callback 8020. Ani hloupý, ani chytrý. Pro fanoušky Commodore a digitálního minimalismu. Bez webového prohlížeče a sociálních sítí. S předinstalovaným WhatsAppem. S operačním systémem Sailfish OS.

    Ladislav Hagara | Komentářů: 1
    dnes 08:22 | Bezpečnostní upozornění

    V OpenBSD byla objevena 27 let stará chyba v ppp pomocí níž lze vzdáleně obejít autentifikaci. Chyba byla nahlášena 12.6. a 14.6. byla opravena. Bližší info v článku A 27-Year-Old Authentication Bypass in OpenBSD's PPP Stack.

    Max | Komentářů: 6
    dnes 05:22 | Zajímavý článek

    Odpověď Evropské komise (pdf) k evropské občanské iniciativě Stop Destroying Videogames, jež je součástí hnutí Stop Killing Games: "Komise se domnívá, že v této fázi nemůže navrhnout právní povinnost zachovat hratelnost videoher poté, co přestaly být poskytovány komerčně. Důvodem jsou i stávající práva duševního vlastnictví. Podle autorského práva EU mají nositelé práv výlučná práva ke svým výtvorům. Kromě autorských práv mohou být

    … více »
    Ladislav Hagara | Komentářů: 8
    včera 16:11 | Nová verze

    Byl vydán Mozilla Firefox 152.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 152 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 1
    včera 14:11 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.7 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 21
    včera 11:44 | Komunita

    Hříčka xsnow, která na ploše spustí sněžení, je protestware. Pokud jste v Rusku (LANG=ru), zobrazuje ukrajinské vlajky.

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

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala beta verzi Ubuntu Touch 24.04-2.0. Nová verze již počítá s výřezy pro fotoaparát (notch) a zaoblenými rohy displeje. Webový prohlížeče Morph přešel z Chromia 87 na Chromium 134. Do shellu Lomiri byl přidán editor snímků obrazovky.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (16%)
     (31%)
     (3%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1926 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: perl - spuštění příkazu na pozadí a callback

    Přemek Vyhnal avatar 16.8.2008 23:39 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
    perl - spuštění příkazu na pozadí a callback
    Přečteno: 561×
    Problém:

    GTK program v perlu. po kliknutí na tlačítko se spustí funkce, které trvá dlouho než skončí a po jejím dokončení se provede nějaká akce.

    Teď to vypadá nějak takthle:
    sub on_button_click{
       &delat_neco_dlouhyho;
       &zobrazit_hotovo;
    }
    sub delat_neco_dlouhyho{
       sleep 20; &posunout_progressbar;
       sleep 20; &posunout_progressbar;
       sleep 20; &posunout_progressbar;
       sleep 20; &posunout_progressbar;
    }
    
    problém je v tom, že hlavní smyčka čeká na dokončení &on_button_click a nepřekresluje mezitím okno (vypadá jako kdyby zamrzlo)

    chtělo by to to &delat_neco_dlouhyho spustit nějak na pozadí aby hlavní smyčka pokračovala, ale aby měl hlavní program možnost nějak zjistit jestli už je to hotový nebo to pořád pracuje. nebo aby zevnitř &delat_neco_dlouhyho šlo posílat něco zpátky do hlavního okna. (např. % průběhu)

    Poradil by mi někdo jak na to? co nastudovat? stačí nějaká klíčová slova a já si to už najdu (nebo se znovu zeptam ;) )

    Předem mnohokrát děkuji!
    NO RAPTORS!

    Odpovědi

    17.8.2008 18:01 qk_
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    no pokud chces neco takovyho, tak nevim jestli to ma primo gtk, ale v perlu muzes pouzit thready jako v ostatnich jazycich - http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perlthrtut.pod
    17.8.2008 18:02 qk_
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    tak a jeden priklad s pouzitim primo gtk - http://www.perlmonks.org/?node_id=470661
    Přemek Vyhnal avatar 17.8.2008 23:07 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    diky! prostuduji a vyzkousim ;)
    NO RAPTORS!
    frEon avatar 17.8.2008 21:42 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    Talking about music is like dancing to architecture.
    17.8.2008 21:19 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    bez threadov sa to dá riešiť fork a čakať na SIGCHLD
    Přemek Vyhnal avatar 17.8.2008 23:06 Přemek Vyhnal | skóre: 24 | blog: Toto není blog! | Dobřichovice
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    diky! ten SIGCHLD by moh bejt to co jsem hledal... s forkem uz jsem se o to nejak pokousel ale moc se nedarilo. zkusim to znova a lip ;)

    jo, a jak na to kdybych chtel aby ten potomek posilal do toho hlavniho okna nejaky informace jako "ted delam to a to", "uz mam hotovo" nebo treba prubeh v procentech? narazil jsem na nejaky IPC::Open2. Je to dobrej napad? ;) neukazal by mi nekdo jak na to nebo co s tim? ;) nechci aby to nekdo programoval cely za me, staci nakopnout spravnym smerem ;)

    moc dik!
    NO RAPTORS!
    18.8.2008 08:47 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    Perl Cookbook, kapitola "Process Management and Communication"
    18.8.2008 08:52 happy barney | skóre: 34 | blog: dont_worry_be_happy
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    k tomu IPC::Open2
    Nápad je to plus/mínus dobrý. Pozrite si k tomu ešte: IO::Poll (resp IO::Select), IO::Pipe ... a príslušné stránky s napr "Advanced UNIX Programming"
    Josef Kufner avatar 24.8.2008 21:05 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    Můžeš rozdělit program (binárku) na frontend a backend (dvě binárky). Backend bude čistě konzolová, neinteraktivní věc a spouštět jí z frontendu pomocí popen(). K zobrazení průběhu bude stačit parsovat co vypisuje na stdout, který frontend dostane stejně jakoby četl soubor (pozor na bufferování). Doporučuju backend spouštět z frontendu s parametrem (např. --backend), který mu řekne, že ho spustil frontend. To aby při samostatném spuštění backendu byl poslušně ticho a ohlašoval jen chyby. Kdežto v při spuštění z frontendu šly chyby a podobné výpisy na stdout místo stderr a v opravdu lehce parsovatelné formě.

    Výhoda: Možnost lehce použít backend bez frontendu někde jinde.

    Nevýhoda: Musíš udělat parser, který ale může být velmi jednoduchý. Backend by měl být trochu víc psaný jako samostatný program.
    Hello world ! Segmentation fault (core dumped)
    25.8.2008 13:46 toba
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    Přesně takhle to dělám, ale při pársování výstupu musím chtě nechtě použít

    while(Gtk2->events_pending) { Gtk2->main_iteration };

    jinak to GUI nacas zamrzne tak jako tak. Vlakna se mi libi ale ne vsechna distra maji perl zkompilovany s jejich podporou.
    Josef Kufner avatar 26.8.2008 00:42 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: perl - spuštění příkazu na pozadí a callback
    Gtk main loop umí obsluhovat události na file descriptorech. Takže ti pak přímo gtk volá callback, když přijdou data. Kuk sem
    Hello world ! Segmentation fault (core dumped)

    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.