Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.8.
Herní studio Hangar 13 vydalo novou Mafii. Mafia: Domovina je zasazena do krutého sicilského podsvětí na začátku 20. století. Na ProtonDB je zatím bez záznamu.
Operátor O2 má opět problémy. Jako omluvu za pondělní zhoršenou dostupnost služeb dal všem zákazníkům poukaz v hodnotě 300 Kč na nákup telefonu nebo příslušenství.
Společnost OpenAI představila GPT-5 (YouTube).
Byla vydána (𝕏) červencová aktualizace aneb nová verze 1.103 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.103 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Americký prezident Donald Trump vyzval nového generálního ředitele firmy na výrobu čipů Intel, aby odstoupil. Prezident to zdůvodnil vazbami nového šéfa Lip-Bu Tana na čínské firmy.
Bylo vydáno Ubuntu 24.04.3 LTS, tj. třetí opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.
Byla vydána verze 1.89.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Americká technologická společnost Apple uskuteční v USA další investice ve výši sta miliard dolarů (2,1 bilionu korun). Oznámil to ve středu šéf firmy Tim Cook při setkání v Bílém domě s americkým prezidentem Donaldem Trumpem. Trump zároveň oznámil záměr zavést stoprocentní clo na polovodiče z dovozu.
Zálohovací server Proxmox Backup Server byl vydán v nové stabilní verzi 4.0. Založen je na Debianu 13 Trixie.
#!/usr/bin/env python services = { 'service1':{ 'description':'This is service 1', 'start':'sleep 1', 'runs_forever':False, 'depends_on':[] }, 'service2':{ 'description':'This is service 2', 'start':'sleep 2', 'runs_forever':True, 'depends_on':['service1'] }, 'service3':{ 'description':'This is service 3', 'start':'sleep 4', 'runs_forever':True, 'depends_on':['service2'] }, 'service4':{ 'description':'This is service 4', 'start':'sleep 8', 'runs_forever':True, 'depends_on':['service1', 'service2', 'service3'] } }U každé služby je jméno (service1 až service4), popisek, startovací příkaz, dále příznak 'runs_forever' a závislosti na jiných službách. Ten příznak 'runs_forever' říká, že nemá smysl čekat na ukončení dané služby. Je to například služba sshd, apache, mysql a tak. Jestliže je na takovou službu vázána nějaká závislost jiné služby, pak se nečeká na ukončení, nýbrž na start. Opakem je situace, kdy runs_forever je nepravda. To jsou zpravidla jednorázové akce, u kterých se musí čekat na ukončení (třeba fsck, natahování jaderných modulů, mountování filesystémů atd.).
#!/usr/bin/env python import threading, subprocess from services import services events = {} class Serv(threading.Thread): def __init__(self, services, name): events[name] = threading.Event() threading.Thread.__init__(self) self.service = services[name] self.name = name def run(self): print self.name, 'is about to start' for name_dep in services[self.name]['depends_on']: print self.name, 'is waiting for', name_dep events[name_dep].wait() print 'starting', self.name cmd = self.service['start'].split() proc = subprocess.Popen(cmd) if not self.service['runs_forever']: proc.wait() print self.name, 'is finished (DONE)' else: print self.name, 'runs as daemon (DONE)' events[self.name].set() all_serv = [Serv(services, name) for name in services] for serv in all_serv: serv.start()Tak se začnou dít věci
service3 is about to start service3 is waiting for service2 service2 is about to start service2 is waiting for service1 service1 is about to start starting service1 service4 is about to start service4 is waiting for service1 service1 is finished (DONE) starting service2 service2 runs as daemon (DONE) service4 is waiting for service2 service4 is waiting for service3 starting service3 service3 runs as daemon (DONE) starting service4 service4 runs as daemon (DONE)Je fakt psina si s tím trochu pohrát. Zvlášť s cyklickými závislostmi
Tiskni
Sdílej:
depend() { use clock logger need localmount provide cron } start() { ebegin "Starting vixie-cron" start-stop-daemon --start --quiet --exec /usr/sbin/cron eend $? } stop() { ebegin "Stopping vixie-cron" start-stop-daemon --stop --quiet --pidfile /var/run/cron.pid eend $? }a myslím, že to o moc líp ani nejde. Paralelní spouštění? Není problém,
RC_PARALLEL_STARTUP="yes"
. Nepřehledný? Neřekl bych. V Pythonu by to bylo rychlejší? Těžko, když:
amd64 ~ # time python -c exit # a to není první "start", ale druhý! real 0m0.052s user 0m0.013s sys 0m0.002s amd64 ~ # time bash -c exit real 0m0.003s user 0m0.000s sys 0m0.003sa spustit musí v podstatě totéž...
No nevím, znám jen Gentoo a tam máme init skripty třeba takový (vixie-cron):Takhle to vypadá pěkně. Ale když se člověk trochu podívá pod pokličku, tak už to taková radost být nemusí.
a myslím, že to o moc líp ani nejde.Všechno jde zlepšit! Nebo taky pokazit ...
Paralelní spouštění? Není problémNo, ve Fedoře to zatím problém je. Proto jsem se do toho pustil.
V Pythonu by to bylo rychlejší? Těžko, když:Ech, takových benchmarků už jsem viděl ...amd64 ~ # time python -c exit # a to není první "start", ale druhý! real 0m0.052s amd64 ~ # time bash -c exit real 0m0.003s
No, ve Fedoře to zatím problém je. Proto jsem se do toho pustil.Aha
A Python s Bashem nehodlám dále srovnávat - myslím, že vše již bylo řečeno. Jestliže se někdo domnívá, že Bash je rychlejší, tak mu to už vyvracet nebudu. Ale ten dotyčný si ke své škodě lže do kapsy.Ne, to netvrdím... tvrdím, že Python i Bash spustí externí prográmky stejně rychle a o ty jde především. Teď mě napadlo, že by ty init-skripty mohly být v C, to by to nabootovalo ještě rychleji
Teď mě napadlo, že by ty init-skripty mohly být v C, to by to nabootovalo ještě rychlejiTím chceš říct, že ještě nemáš na Gentoo Init-NG?
V Pythonu by to bylo rychlejší? Těžko, když: amd64 ~ # time python -c exit # a to není první "start", ale druhý! real 0m0.052s user 0m0.013s sys 0m0.002s amd64 ~ # time bash -c exit real 0m0.003s user 0m0.000s sys 0m0.003s a spustit musí v podstatě totéž...Omyl, Python se spouští jednou, bash cca 200-500x. To už je rozdíl, že? Python skripty budou kompilované a nebudou se muset opakovaně znova a znova parsovat. Běh programu v Pythonu je mnohem rychlejší než v Bashi. Z bash scriptů se nepočítaněkrát spouští další procesy typu sed, u pythonu to jede v rámci binárky. Udělejte si skript, kde se stokrát vyhodnocuje regulární výraz, jednou v bashi+sedu jednou v pythonu a hoďte sem výsledek, pak se pobavíme, co je rychlejší.
ad zavislosti, mozno by neskodilo definovat, co ta ktora sluzba ovplyvnuje. Myslim, ze by stacilo definovat, ci ovplyvnuje nastavenie systemu (napr "network") a najprv spustit vsetky ovplyvnujuce a potom neovplyvnujuce. Napr (moj oblubeny) ntpd nastavenie ovplyvnuje, ale vyzaduje funkcnu siet, ale napr sshd ci apache nan nepotrebuju explicitnu zavislost. Takych moze byt viac, specifickych pre ten ktory stroj.
technicke poznamky:Já ve skutečnosti potřebuju, aby se thready ovlivňovaly. Ale musí to být kontrolovaně, jinak se z toho stane splašené stádo. K tomu účelu existuje řada synchronizačních mechanismů. V Pythonu je přímá podpora zámků, reentrantních zámků, podmínkových objektů, semaforů a událostí. Já jsem použil ty události.
- ako chcete zabranit, aby sa thready neovplyvnovali (fork je fork)?
- ako to bude fungovat napr nie pre "sleep 1", ale pre "apachectl start" (pricom samozrejme vyzadujem, aby sa sluzba restartla po pripadnom pad, okrem situacie, ked ju rucne zhodim?Apachectl hodlám přepsat, protože se mi nelíbí
ad zavislosti, mozno by neskodilo definovat, co ta ktora sluzba ovplyvnuje. Myslim, ze by stacilo definovat, ci ovplyvnuje nastavenie systemu (napr "network") a najprv spustit vsetky ovplyvnujuce a potom neovplyvnujuce. Napr (moj oblubeny) ntpd nastavenie ovplyvnuje, ale vyzaduje funkcnu siet, ale napr sshd ci apache nan nepotrebuju explicitnu zavislost. Takych moze byt viac, specifickych pre ten ktory stroj.Jojo, taky myslím, že je to rozumná věc, bez které by to byla hrůza. Jinak by se u všech služeb musela explicitně psát závislost např. na fsck, raidu apod. a jistě by se na něco zapomnělo.
odporucam vam rozmyslat o 0..n v odpovedi na nasledovne:
- kolko je distribucii ?
- kolko je sposobov nasadenia ?
- kolko produktov poskytuje dany typ sluzby ?
- kolko instancii sluzby je mozne spustit ?
- kolko produktov bude na cielovom stroji nainstalovanych ?
dobre by bolo zobrat vsetky existujuce daemony (freshmeat.net pomoze), popisat si ich zavislosti, nakreslit si ich postupnost a potom si uvedomit, ze lubovolna cast moze byt (dokoncia viac krat), ale i nemusi
otazka navyse nesmerovala priamo k apachectl, ale k sposobu, ako mienite "kontrolovat" proces, od ktoreho nedostanete SIGCHLD.
- Distribucí je spousta. Každá to dělá po svém.odporucam vam rozmyslat o 0..n v odpovedi na nasledovne:
- kolko je distribucii ?
- kolko je sposobov nasadenia ?
- kolko produktov poskytuje dany typ sluzby ?
- kolko instancii sluzby je mozne spustit ?
- kolko produktov bude na cielovom stroji nainstalovanych ?
dobre by bolo zobrat vsetky existujuce daemony (freshmeat.net pomoze), popisat si ich zavislosti, nakreslit si ich postupnost a potom si uvedomit, ze lubovolna cast moze byt (dokoncia viac krat), ale i nemusiAle no ták ...
otazka navyse nesmerovala priamo k apachectl, ale k sposobu, ako mienite "kontrolovat" proces, od ktoreho nedostanete SIGCHLD.Tak teď nevím, o čem mluvíte. apachectl nijak nereaguje na SIGCHLD - je mu to úplně jedno. Co myslíte tím "kontrolováním"? Jestliže nějakého démona pustím přímo, tak se přece snadno dozvím, že skončil. Jestliže ho pustím přes wrapper, tak mám prostě smůlu a musím zjišťovat existenci PIDu nebo se dívat na otevřené porty nebo tak něco. Nepřipadá vám, že děláte z komára velblouda (alias ťavu)