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 04:00 | Komunita

    Stát Kalifornie zažaloval výrobce 3D tiskových filamentů Polymaker. Vrchní soud San Diego County tvrdí, že firma propagací svých výrobků mezi příznivci 3D tištěných zbraní podporovala výrobu takzvaných 'ghost guns' (DIY zbraní) a že její PLA filament pro 3D tiskárny lze za těchto okolností považovat za součást určenou k výrobě střelné zbraně. Žaloba požaduje mimo jiné finanční sankce a soudní zákaz činnosti, Polymaker se hájí tím, že filament je běžný a sám o sobě legální produkt. Celý text žaloby (PDF na Google Drive).

    ❗Červivý Hřib krade❗ | Komentářů: 0
    dnes 03:33 | Nová verze

    V červnu byla představena aplikace Myna pro převod řeči na text v prostředí desktopu Ubuntu. Včera byla Myna zpřístupněna širší komunitě Ubuntu formou technologické ukázky dostupné v Ubuntu 24.04 LTS, Ubuntu 26.04 LTS a Ubuntu 26.10 s GNOME na Waylandu.

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

    Ubuntu 27.04 bude Tenacious T-Rex.

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | Nová verze

    Byla vydána nová verze 2026.4.0 "Never-slop" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu. ScummVM oslavil 25 let. Verze 0.0.1 vyšla 8. října 2001.

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Humor

    Kanadský vývojář Anthony Sistilli vytvořil ironický DIY projekt parodující kamerové systémy Flock, s cílem názorně demonstrovat rizika masového sledování jaké provozují tyto komerční ALPR systémy. Z levné IP kamery a vlastního ML softwaru (napsaného s pomocí SI circa za 20 minut, kód se mi bohužel nepodařilo dohledat) běžícího v laptopu sestavil jednoduchý systém, který detekuje výhradně policejní vozidla, zaznamenává jejich SPZ a

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 6
    včera 12:44 | Upozornění

    Část údajů uživatelů internetového supermarketu Rohlík byla odcizena. Kyberútočníci napadli nástroj zákaznické podpory Rohlíku, odcizili tak jména, e-mailové adresy, v některých případech také telefonní čísla nebo přepisy komunikace mezi klienty a zákaznickou podporou. Rohlík incident nahlásil příslušným orgánům a přijal příslušné opatření, aby zamezil podobným případům v budoucnosti, uvedla firma.

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

    Aplikace eDoklady fungovala v obou volebních dnech stabilně a prakticky bez front. Digitální a informační agentura (DIA) odhaduje, že se digitálním dokladem prokázalo více než 100.000 voličů. Aplikaci si před volbami či během nich aktualizovalo 247.517 uživatelů. Nových registrací bylo 19.431 a do aplikace se přihlásilo 357.879 lidí. Největší nápor přišel bezprostředně po otevření volebních místností mezi 14. a 16. hodinou, kdy si

    … více »
    Ladislav Hagara | Komentářů: 8
    včera 00:55 | Pozvánky

    Začal semestr, začal i podzim a kromě hub rostou jako po dešti i veřejné dílny v Praze. Nedávno strahováci referovali o hackerspacu Bordel, nyní se otevřela dílna Dejvice Lab jen kousek od ČVUT. Na blížící Virtuální Bastlírně tak uslyšíte nejen report z návštěvy dílny HWLab, ale i řadu novinek, událostí a úsměvných momentů, které se za poslední měsíc ve světě techniky, ale i vědy udály. Připojte se tedy již v úterý 13.10. od 20:00 a zapojte se do

    … více »
    bkralik | Komentářů: 0
    11.10. 11:33 | Nová verze

    Byl vydán LineageOS 24 (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. LineageOS 24 je založený na Androidu 17.

    Ladislav Hagara | Komentářů: 0
    11.10. 03:55 | IT novinky

    Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2838 hlasů
     Komentářů: 32, poslední 11.10. 17:02
    Rozcestník

    Občas není od věci vyslovit něco, za co se upaluje nebo ukamenovává. Nic není totiž tak jednoduché, aby byla pravda vždy jediná a na první pohled zřejmá.


    NAVRCHOLU.cz
    Aktuální zápisy

    Rozhraní pro události

    5.12.2006 23:37 | Přečteno: 1542× | Software | Výběrový blog

    Jednou z hlavních (a opravdu pořádně velkých) bolestí je neexistence jednotného rozhraní pro příjem událostí a jejich snadné a bezpečné zpracování. S tím, jak se technologie kevent blíží k rozumně použitelné implementaci, samozřejmě roste naděje na změnu. Současně ovšem vyvstávají i otázky.

    Zpracovávat v Linuxu rozumně události? Dosud nemožné. Máme například program (řekněme server), který má otevřeno x síťových spojení, současně potřebuje hlídat timeouty, sledovat změny určitých souborů a dělat případně některé další věci. Takový server se implementuje dost špatně - buď ho musíme rozštěpit na řadu procesů či vláken (a babrat se s komunikací a synchronizací mezi nimi), nebo používat všelijaká krkolomná řešení, navíc nepříliš efektivní.

    To v takových Windows je na tom člověk o poznání lépe. Může nechat čekat program v jediném volání WaitForMultipleObjects(), a když to vyskočí ven, obsloužit událost, ke které došlo. Lhostejno, o jaký druh události se jednalo. Podobně jednoduchou práci mají i vývojáři na *BSD nebo na Mac OS X. Jen Linux zatím pokulhává.

    Jednoduché je to v případech, kdy máme k dispozici souborové deskriptory. Ty použijeme ve volání select(), poll() nebo epoll() a hned se dozvíme, co se stalo. Problém je ovšem v tom, že tyto deskriptory máme jen pro omezený okruh událostí. Pro mnohé události (asynchronní I/O, časovače, skončení podřízeného procesu atd.) musíme spoléhat na signály - a ty s výše uvedeným nejdou příliš dohromady. Jediným skutečně bezpečným způsobem zpracování signálů je volání sigwait(), které pak musíme použít místo zmíněných funkcí. Tím se ovšem nevyřeší problém se "spojováním" nezpracovaných klasických signálů.

    Je jasné, že cesta ven vede jen přes zavedení skutečně univerzálního rozhraní pro události. Bylo by principiálně možné říct si "všechno bude deskriptor", ale pak vyvstane problém škálovatelnosti. Při velkém množství deskriptorů by to bylo pomalé. Než vymýšlet složitá řešení ve stylu inotify (na jednom souborovém deskriptoru může být větší počet "hooků" identifikovaných vlastními deskriptory), je lépe to udělat opravdu pořádně a dát do nového rozhraní opravdu všechno, co by mohl někdo potřebovat.

    A tím se dostávám k jádru pudla. Dosavadní plány keventu totiž počítají s tím, že se budou sledovat skoro všechny zajímavé události (AIO, časovače, signály, klasické deskriptorové události), ale bohužel ne úplně všechny. Protože si myslím, že by bylo správné využít této chvíle a dotáhnout to do opravdu kvalitní podoby, rád bych viděl v keventu i další události. Jmenovitě:

    Možná teď někdo bude mít pocit, že jsem se praštil o futro a chci z Linuxu udělat Windows. Třeba to tak je, ale každopádně by přidání monitoringu těchto událostí bylo velice přínosné. Mám v plánu poslat to jako námět do LKML, ale nejdřív to tu chci předhodit k veřejné kritice. Byl bych rád, kdyby ten, kdo má proti takovém nápadu nějaké výhrady, je tu předložil - aby se zamezilo případnému zaplevelování LKML (a zbytečné zátěži vývojářů jádra) nesmyslnými nápady.

    Odkazy:

           

    Hodnocení: 100 %

            špatné • dobré        

    Anketa

    Chcete, aby v implementaci kevent byly i události, které navrhuji?
     (64 %)
     (3 %)
     (3 %)
     (0 %)
     (31 %)
    Celkem 39 hlasů

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    6.12.2006 14:41 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Rozhraní pro události
    Jednoduché je to v případech, kdy máme k dispozici souborové deskriptory. Ty použijeme ve volání select(), poll() nebo epoll() a hned se dozvíme, co se stalo. Problém je ovšem v tom, že tyto deskriptory máme jen pro omezený okruh událostí. Pro mnohé události (asynchronní I/O, časovače, skončení podřízeného procesu atd.) musíme spoléhat na signály - a ty s výše uvedeným nejdou příliš dohromady.
    Ad asynchronní I/O a deskriptory - píšeš, že jediným skutečně bezpečným způsobem zpracování signálů je volání sigwait(). Co je špatně na způsobu, kdy se při zpracování signálu SIGIO pomocí select() otestují deskriptory a příslušně se zareaguje? (Za předpokladu, že deskriptorů není příliš mnoho)
    Quando omni flunkus moritati
    Luk avatar 6.12.2006 16:44 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Rozhraní pro události
    A čekat to bude kde? To je právě důležité. sigwait() (a samozřejmě také sigwaitinfo() a sigtimedwait()) má tu výhodu, že se zpracuje vždy právě jeden signál (a ostatní zůstávají blokované) a nepoužívá se - není potřeba - asynchronní handler. Při jiném řešení už nastávají komplikace s rozlišováním, které všechny signály vlastně přišly. Tak jako tak tam ale zůstane problém s výkonností, protože select/poll operace je obecně O(n).
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    6.12.2006 19:11 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Rozhraní pro události
    Vypadá to asi nějak takhle:
    int main() {
     struct sigaction sigakce;
     void io_sigio (int i); 
     void casovano (int i);
       ...
     sigakce.sa_handler = io_sigio;
     sigfillset (&sigakce.sa_mask);
     sigakce.sa_flags = 0;
     sigaction (SIGIO, &sigakce, NULL);
     sigakce.sa_handler = casovano;
     sigaction (SIGALRM, &sigakce, NULL);
     for (;;) {pause();}
    }
    Program má jenom reagovat na události - příchod dat ze sítě a periférií a na časovač, takže čeká v nekonečné smyčce.

    Jestli jsem to dobře pochopil, tak při použití sigwait() by program v nekonečné smyčce volal tuto funkci a rozhodoval, jaký signál přišel a jak se zachovat.
    Při jiném řešení už nastávají komplikace s rozlišováním, které všechny signály vlastně přišly.
    To znamená, že když nepoužívám sigwait() a přijde víc signálů najednou, že se některé zahodí a nezpracují? Já měl zato, že se nejprve zavolá obsluha jednoho a pak druhého.
    Tak jako tak tam ale zůstane problém s výkonností, protože select/poll operace je obecně O(n).
    Jasně, proto jsem psal, že předpokládám, že deskriptorů je málo (tento případ rozhodně není to, co je popsáno v blogu - tj. server s mnoha síťovými spojeními, otevřenými soubory apod.)
    Quando omni flunkus moritati
    Luk avatar 6.12.2006 20:13 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Rozhraní pro události
    Tvůj program má jeden velmi zásadní problém. Možnosti obsluhy signálů v handlerech jsou velmi omezené. Nelze využít nic, co není reentrantní - to se týká např. i streamů nebo alokace paměti na heapu. Navíc všechny globální proměnné, na které se v handleru sahá, musejí být deklarovány jako volatile (= rychlost dolů). A tak dále.
    Jestli jsem to dobře pochopil, tak při použití sigwait() by program v nekonečné smyčce volal tuto funkci a rozhodoval, jaký signál přišel a jak se zachovat.
    sigwait() vrací (resp. zapisuje přes pointer) číslo signálu, který přišel. Funkce sigwaitinfo() a sigtimedwait() dělají totéž, ale navíc ještě poskytují další informace (např. identifikátor časovače, PID ukončeného potomka, PID procesu, který zavolal kill() apod.).

    Všechny tyto funkce fungují tak, že se zavolají s blokovanými signály, tyto se uvnitř odblokují, a když přijde první signál (nebo už nějaký čeká), zase se všechny signály zablokují a vyskočí to ven z funkce. To vše atomicky. Pak lze bezpečně a synchronně dělat cokoliv. Takže se to používá tak, že se v nekonečné smyčce volá sigwait() a vždy se podle čísla signálu zjistí, jaká událost nastala.
    To znamená, že když nepoužívám sigwait() a přijde víc signálů najednou, že se některé zahodí a nezpracují? Já měl zato, že se nejprve zavolá obsluha jednoho a pak druhého.
    Signál se "zahodí" jen v jediném případě - že se jedná o obyčejný (klasický POSIXový, ne-realtime) signál a již nějaký čeká na zpracování. Ovšem když přijde více signálů "najednou" (tedy těsně po sobě), začne se zpracovávat jeden, a pokud ty další nejsou blokované, může kdykoliv začít obsluha jiného (s jiným číslem). Takže to doběhne třeba do půlky handleru a v tu chvíli začne obsluha jiného signálu. Blokace v handleru to úplně neřeší, protože se nemusí stihnout (i když toto není většinou tragédie). Horší ale je, že jsou to pro každý handler 2 syscally navíc, což sežere dost času. Tohle je výhoda sigwait(), že takové problémy se nemusejí vůbec řešit.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    7.12.2006 00:37 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Rozhraní pro události
    Vypadá to pěkně - někdy se na to podívám podrobněji. Navíc obsluhy signálů jako takové se týká jenom malá část kódu, takže by to neměl být problém změnit.

    Díky za informace.
    Quando omni flunkus moritati

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.