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

    KiCad je nově k dispozici také jako balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit [Mastodon, 𝕏].

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | Zajímavý projekt

    Šenčenská firma Seeed Studio představila projekt levného robotického ramena reBot Arm B601, primárně coby pomůcky pro studenty a výzkumníky. Paže má 6 stupňů volnosti, dosah 650 mm a nosnost 1,5 kilogramu, podporované platformy mají být ROS1, ROS2, LeRobot, Pinocchio a Isaac Sim, krom toho bude k dispozici vlastní SDK napsané v Pythonu. Kompletní seznam součástek, videonávody a nejspíš i cena budou zveřejněny až koncem tohoto měsíce.

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    dnes 11:11 | Nová verze

    Byla vydána nová verze 36.0, tj. první stabilní verze nové řady 36, svobodného multimediálního centra MythTV (Wikipedie). Přehled novinek a vylepšení v poznámkách k vydání.

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

    Byl vydán LineageOS 23.2 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu.

    Ladislav Hagara | Komentářů: 1
    dnes 03:44 | IT novinky

    Od března budou mít uživatelé Discordu bez ověření věku pouze minimální práva vhodná pro teenagery.

    Ladislav Hagara | Komentářů: 18
    včera 23:43 | IT novinky

    Evropská komise (EK) předběžně shledala čínskou sociální síť pro sdílení krátkých videí TikTok návykovým designem v rozporu s unijním nařízením o digitálních službách (DSA). Komise, která je exekutivním orgánem Evropské unie a má rozsáhlé pravomoci, o tom informovala v tiskovém sdělení. TikTok v reakci uvedl, že EK o platformě vykreslila podle něj zcela nepravdivý obraz, a proto se bude bránit.… více »

    Ladislav Hagara | Komentářů: 12
    včera 18:33 | Nová verze

    Offpunk byl vydán ve verzi 3.0. Jedná se o webový prohlížeč běžící v terminálu a podporující také protokoly Gemini, Gopher a RSS. Přibyl nástroj xkcdpunk pro zobrazení XKCD v terminálu.

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

    Promethee je projekt, který implementuje UEFI (Unified Extensible Firmware Interface) bindingy pro JavaScript. Z bootovacího média načítá a spouští soubor 'script.js', který může používat UEFI služby. Cílem je vytvořit zavaděč, který lze přizpůsobit pomocí HTML/CSS/JS. Repozitář se zdrojovými kódy je na Codebergu.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 12:44 | Bezpečnostní upozornění

    Zpráva Justičního výboru Sněmovny reprezentantů upozorňuje na cenzurní kampaň Evropské komise, mířenou proti svobodě projevu na sociálních sítích. V dokumentu se uvádí, že se Evropská komise během posledních šesti let účastnila více než 100 uzavřených jednání, během nichž po platformách požadovala úpravy pravidel moderování obsahu, přičemž toto úsilí Komise zahrnovalo i cenzuru politických názorů a pravdivých informací. Výbor zdůrazňuje, že tento přístup Bruselu ohrožuje ústavou zaručená práva Američanů na svobodu projevu.

    NUKE GAZA! 🎆 | Komentářů: 11
    včera 04:33 | Nová verze

    Linus Torvalds vydal jádro Linux 6.19. Podrobný výčet změn je ke zhlédnutí na stránce Kernel Newbies, stručné výběry v LWN (část první, druhá).

    |🇵🇸 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (26%)
     (3%)
     (4%)
     (2%)
     (12%)
     (28%)
    Celkem 824 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    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: 554×
    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.