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

    Desktopové prostředí Budgie bylo vydáno ve verzi 10.10. Dokončena byla migrace z X11 na Wayland. Budgie 10 vstupuje do režimu údržby. Vývoj se přesouvá k Budgie 11. Dlouho se řešilo, v čem bude nové Budgie napsáno. Budgie 10 je postaveno nad GTK 3. Přemýšlelo se také nad přepsáním z GTK do EFL. Budgie 11 bude nakonec postaveno nad Qt 6.

    Ladislav Hagara | Komentářů: 0
    včera 13:00 | Humor

    OpenChaos.dev je 'samovolně se vyvíjející open source projekt' s nedefinovaným cílem. Každý týden mohou lidé hlasovat o návrzích (pull requestech), přičemž vítězný návrh se integruje do kódu projektu (repozitář na GitHubu). Hlasováním je možné změnit téměř vše, včetně tohoto pravidla. Hlasování končí vždy v neděli v 9:00 UTC.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 03:00 | Nová verze

    Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    10.1. 03:00 | Komunita

    Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.

    Ladislav Hagara | Komentářů: 6
    9.1. 19:44 | Zajímavý software

    Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.

    Ladislav Hagara | Komentářů: 5
    9.1. 19:11 | IT novinky

    Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).

    NUKE GAZA! 🎆 | Komentářů: 2
    9.1. 14:22 | Zajímavý článek

    Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.

    Ladislav Hagara | Komentářů: 7
    9.1. 03:33 | Zajímavý software

    AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.

    Ladislav Hagara | Komentářů: 1
    9.1. 00:11 | Nová verze

    Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.1. 20:44 | IT novinky

    Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou

    … více »
    NUKE GAZA! 🎆 | Komentářů: 15
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (4%)
     (0%)
     (9%)
     (20%)
     (3%)
     (5%)
     (3%)
     (10%)
     (50%)
    Celkem 374 hlasů
     Komentářů: 8, poslední 10.1. 23:18
    Rozcestník

    Dotaz: Python a pojmenovana roura (uz zase)

    12.8.2010 10:55 Radim
    Python a pojmenovana roura (uz zase)
    Přečteno: 392×
    Zdravim, Mam opet problem s pojmenovanou rourou a screenletem. Mam script v bashi. Script spocita cislo, otevre si pojmenovanou rouru, soupne tam spocitane cislo a rouru zavre. To vsechno se deje pomoci normalniho presmerovani vystupu ">". Screenlet si otevre onu rouru pouze pro cteni a v non blocking modu a pomoci gobject.io_add_watch() se diva, jestli tam uz je cislo. Kdyz ne, ceka, kdyz ano, zavola funkci, ktera cislo nacte do promenne a dal s nim pracuje. Akorat kdyz onen script rouru zavre, zacne se mi to cyklit a vytizi procesor na 100%, coz je samozrejme nezadouci. Toto trva do chvile, nez si script znovu rouru otevre pro dalsi cislo a az ji znova zavre, zacykli se to zas. Rouru ve screenletu otviram pomoci os.open(self.cesta_k_roure,os.O_RDONLY|os.O_NONBLOCK)". Vi nekdo, co s tim? Dik

    Odpovědi

    12.8.2010 15:10 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)

    Zdravim.

    Mne toto pripada, akoby ten skript kontroval az prilis casto(resp. tak casto, ako je to v jeho silach). Nie je problem vytazit cpu na maximum, ak sa mu nezada daky casovy limit, interval, v ktorom to kontrolovat. Takze by som tam skusil dat sleep a spustil to opat. Ale vsetko je to len moja domnienka skromna :)

    import time
    time.sleep(sekundy)
    16.8.2010 10:31 Radim
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)
    Podle me, fce os.open (pote, co se roura z druhe strany zavre) snazi se usilovne spojeni obnovit nebo neco podobneho a to zpusobi narust zatizeni. Akorat to reseni nepomaha. Kdyz dam do fce, kterou vola prave io_add_watch 1 sec pauzu a krmici script pracuje v intervalu napr. 5 sec, tak porad zbyvajici 4 sec. se cykli. Jistou nadeji jsem vkladal do flagu pro os.open (os.O_RDONLY apod.), ale jeste to budu muset pohledat. Zatim se mi zda, ze v kombinaci flagu, kterou pouzivam (os.O_RDONLY|os.O_NONBLOCK) se pri prvotnim otevreni sveho konce roury fce os.open nastavi do nejakeho mezistavu, ceka az se otevre i ten druhy konec a pak se prepne do "finalniho" stavu. Kdyz se ale druhy konec zavre, uz se nedokaze prepnout do toho mezistavu zpatky a proto pak zmatkuje. Kdyby nekdo vedel, jak ten mezistav nanutit zpatky, to by myslim bylo resenim.
    Chytrex avatar 16.8.2010 19:05 Chytrex | skóre: 30 | Bohumín
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)
    tak mě napadá.. a proč tu rouru nenecháš open a nefedruješ do ní jen čísla?
    Hrdý člen KERNEL ULTRAS .:. define QUESTION ((bb) || !(bb)) .:. Odmítám vaši realitu a nahrazuji ji svou vlastní..
    17.8.2010 02:25 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)
    Zase otázka bez kousku funkčního kódu... Tak jsem si testovací program vytvořil:
    import gobject
    import os
    
    def handler(fd, *args):
        print os.read(fd, 1024)
        return True
    
    fd = os.open("x", os.O_RDONLY | os.O_NONBLOCK)
    gobject.io_add_watch(fd, gobject.IO_IN, handler)
    gobject.MainLoop().run()
    Provedu mkfifo x, v jednom okně spustím tento program, v druhém zapíšu něco do té roury (echo foo >>x), a hurá - procesor je vytížen. Co s tím?

    První věc je podívat se, co to vlastně furt dělá. Tzn. nedomýšlet, zda onen deskriptor není v nějakém tajemném mezistavu a nehledat magickou kombinaci flagů pro os.open(), ale podívám se na výpis strace. Vidím spoustu řádků
    poll([{fd=4, events=POLLIN}, {fd=6, events=POLLIN}, {fd=3, events=POLLIN}], 3, -1) = 1 ([{fd=3, revents=POLLHUP}])
    V man poll se praví:
    The bits that may be set/returned in events and revents are defined in <poll.h>: 
        ...
        POLLHUP
               Hang up (output only).
    Takže to vypadá, že od té doby, co shell po vykonání příkazu echo foo >>x uzavřel rouru, ten poll neustále vyhazuje POLLHUP, glib pak poll volá stále dokola a to vytěžuje ten procesor.

    Nějaké řešení... Napadlo mě uzavřít zápisovou stranu pomocí shutdown, nevím, jestli by to fungovalo, ale protože v Pythonu shutdown jaksi ani není, nebudu se tím vůbec zabývat :-)

    Informace o HUPu bude nejspíš jen jeden bit nastavený v nějaké tabulce kernelu, možná by šel nějak vyresetovat, ale teď si na nic nevzpomínám. (Možná by zrovna tohle udělal ten shutdown.)

    Další řešení by bylo rouru uzavřít a znovu otevřít, tím bychom se zbavili toho POLLHUPu. Nejspíš by se ten nový deskriptor musel znovu zaregistrovat přes io_add_watch(). Taky není zrovna elegantní řešení.

    Na Mac OS X by dle příslušné manuálové stránky mohlo pomoct přidat POLLHUP do zachytávaných eventů při volání poll(), ale na Mac OS X asi nejsme.

    Celkem dobré řešení by ale bylo mít neustále tu rouru otevřenou pro zápis, protože ten POLLHUP se objeví zřejmě až když tu rouru uzavře poslední "zapisovatel". Experimentálně ověřeno, funguje, když
    fd = os.open("x", os.O_RDONLY | os.O_NONBLOCK)
    se nahradí za
    fd = os.open("x", os.O_RDWR | os.O_NONBLOCK)
    Zkus to :-)

    (Takže nakonec stačilo najít magickou kombinaci flagů pro os.open(), ale teď aspoň víme proč.)
    17.8.2010 02:38 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)
    Jak tak nad tím přemýšlím, tím shutdownem bych možná musel uzavřít čtecí stranu. Což je dost na houby, když z toho pak chci ještě číst :-)
    17.8.2010 10:36 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)
    Ja bych to videl spis tak, ze by tazatel potrboval neco takoveho:
    import gobject
    import os
    
    def handler(fd, *args):
        st = os.read(fd, 1024)
        print st
        if st == "":
            # Konec souboru - zavrem stary a otevrem novy
            os.close(fd)
            fd2 = os.open("x", os.O_RDONLY | os.O_NONBLOCK)
            gobject.io_add_watch(fd2, gobject.IO_IN | gobject.IO_HUP, handler)
            return False
        else:
            return True
    
    fd = os.open("x", os.O_RDONLY | os.O_NONBLOCK)
    gobject.io_add_watch(fd, gobject.IO_IN | gobject.IO_HUP, handler)
    gobject.MainLoop().run()
    
    Vzdy po konci souboru skoncit stary io-watch a pridat novy na novem souboru.
    19.8.2010 10:23 Radim
    Rozbalit Rozbalit vše Re: Python a pojmenovana roura (uz zase)

    Hmm. Jako programator amater a samouk jsem zase koukal, co vsechno se da zjistit. O "strace" jsem do ted nemel potuchy.
    Napad se zaviranim a opetovnym otviranim jsem mel taky, ale jak pises, neni to moc elegantni a hlavne mi to fungovalo jenom nekdy. Sem asi tu myslenku asi implementoval nejak blbe, protoze zpusob jakym to napsal Chochi(viz nize) se jevi jako funkcni (testovano).
    Nicmene os.RDWR se jevi jako pekne a (aspon zatim) funkcni reseni, takze jsem si vybral tohle.
    Dik.

    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.