Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.
Po více než dvou letech od vydání předchozí verze 2.12 byla vydána nová stabilní verze 2.14 systémového zavaděče GNU GRUB (GRand Unified Bootloader, Wikipedie). Přehled novinek v souboru NEWS a v aktualizované dokumentaci.
Google Chrome 144 byl prohlášen za stabilní. Nejnovější stabilní verze 144.0.7559.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 10 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube).
Microsoft zveřejnil zdrojový kód XAML Studia a uvolnil ho pod MIT licencí. XAML Studio je nástroj ze světa Windows, určený pro tvorbu uživatelského rozhraní aplikací pomocí XAML (Extensible Application Markup Language). Stalo se tak zhruba po osmi letech od prvního prohlášení Microsoftu, že se tento kód chystá zveřejnit.
Příkaz at slouží k naplánování pozdějšího spuštění příkazů. Anglický název příkazu v tomto kontextu překládáme jako předložku „v“ (ve významu v kolik hodin).
Implementace v Unix-like systémech obvykle sestává ze služby (démona) atd a uživatelského příkazu at. Služba běží neustále a spouští naplánované úlohy, když přijde čas. Tím se uživatel nemusí zabývat. Podstatné je pro nás, jak to naplánovat. Proto si popíšeme použití příkazu at.
Ve výchozím režimu čte at seznam příkazů, které má spustit, ze standardního vstupu (stdin) a jako argument očekává čas, kdy je má spustit. Chceme-li tedy spustit příkaz pokus přesně za hodinu, můžeme to naplánovat takto:
echo pokus | at now + 1 hour
Tím jsme si ukázali, že čas spuštění lze zadávat i relativně. Zadávání času spuštění je velice obecné a když si vymyslíte něco, co dává aspoň trochu smysl, at to pravděpodobně pochopí.
# spustí ,echo $USER >> /tmp/users‘ zítra v 18:00 echo 'echo $USER >> /tmp/users' | at 1800 tomorrow # spustí ,paludis -s‘ v 17:00 (pokud tento čas ještě nenastal, tak dnes, jinak zítra) echo 'paludis -s' | at 17:00 # spustí zadané příkazy 20. července v 17:00 at 5pm jul 20 <<! updatedb sync !
Přepínač -f umožňuje zadat cestu k souboru obsahujícímu seznam příkazů, jejichž spuštění má at naplánovat. Místo standardního vstupu se tedy čte z daného souboru.
# spustí příkazy ze souboru za týden v tento čas at -f soubor.at next week
Přepínač -m zajistí odeslání e-mailu danému uživateli po dokončení jeho příkazů. Pokud výstup příkazů nebyl přesměrován jinam, bude přiložen v e-mailu.
Nyní bych se měl zmínit o frontách a manipulaci s nimi. Všechna dosavadní ukázková volání příkazu at přidávají příkazy do výchozí fronty (zvané „a“). Chceme-li vypsat seznam položek ve frontě, použijeme přepínač -l (a chceme-li vypsat jinou frontu než výchozí, tak ještě -q).
# přidá daný příkaz do fronty „x“ echo lsmod | at -m -q x now + 1 minute # vypíše položky všech front at -l # vypíše položky fronty zvané „x“ at -l -q x
Další věc je odebírání položek z fronty. Když se spleteme a naplánujeme nesmysl nebo si časem rozmyslíme spouštění dané věci, tak se bude hodit přepínač -r. Problém je, že verze at, která je obvykle k nalezení na linuxových systémech, se zde trochu rozchází se standardem Single UNIX Specification a žádný přepínač -r nemá. Používáme proto příkaz atrm, kterému zadáme ID položek, jež chceme z fronty smazat. ID položek zjistíme výše zmiňovaným příkazem at -l (příp. nestandardně pomocí atq).
# smaže z fronty položky s ID 10, 12 a 15 atrm 10 12 15
Mimochodem, Windows NT/2000/XP/7 mají také příkaz at (podobný cronu), ten je ovšem zastaralý – nahradil jej schtasks (resp. GUI nadstavba Task Scheduler).
Program sleep nedělá nic (čeká) po uživatelem danou dobu. Název vychází z anglického slova, které v překladu znamená „spát“.
Nezasvěcenému uživateli se takový popis může zdát zvláštní a řekne si: „K čemu je příkaz, který nic nedělá?“ Představte si kupříkladu situaci, kdy je třeba spouštět nějaký příkaz každých 10 minut. Vyřešit to lze takto:
while true; do příkaz sleep 600 # čas v sekundách done
Chceme-li třeba za 15 sekund ukončit proces X serveru (to se někdy hodí při řešení problémů se vstupními zařízeními), můžeme také použít sleep:
# za 15 sekund pošle signál SIGKILL všem běžícím instancím X serveru sleep 15 ; killall -9 X
Tolik k praktickému využití. Ještě by se slušelo zmínit, že verze programu sleep, se kterou se setkáte, se může (a pravděpodobně bude) lišit od té standardní (dle SUS). Standard totiž říká, že program by měl pracovat s jedním celočíselným nezáporným argumentem, který udává, kolik sekund se má čekat. Jenže třeba sleep z GNU coreutils podporuje i zadávání minut, hodin a dnů (připojením písmene „m“, „h“ nebo „d“ za číslo). Další odlišností této verze je možnost zadat desetinné číslo.
# spí 1 den, 5 hodin, 2 minuty, 10 sekund, 200 milisekund sleep 1d 5h 2m 10.2s # spí 6 sekund a 300 milisekund sleep 0.1m 0.3s
Příkaz wait čeká, dokud se neukončí proces s daným PID běžící na pozadí daného shellu a poté se sám ukončí. Název programu je opět anglické slovo, která znamená „čekat“.
Jak jsem naznačil, wait umí čekat pouze na procesy spuštěné na pozadí shellu, ze kterého wait spouštíme. Předvedeme si spuštění programu na pozadí:
sleep 100 &
Představte si, že jsme místo programu sleep spustili na pozadí něco smysluplného. Teď když spustíme wait bez argumentů, tak bude čekat na ukončení všech procesů běžících na pozadí shellu. Když jako argumenty zadáme jednotlivé PID, bude se čekat pouze na jim odpovídající procesy. Pokud proces s daným PID neexistuje, wait by se měl chovat jako kdyby proces existoval a okamžitě vracel návratovou hodnotu 127. Návratová hodnota programu je obecně ta, kterou vrátí proces, jehož PID je uvedeno jako poslední v seznamu argumentů. Je-li spuštěn bez argumentů, vrací 0.
V Bashi se PID posledního procesu spuštěného na pozadí shellu uchovává v proměnné $!, takže lze provést následující:
lame --decode nejaka.mp3 nejaky.wav &> /dev/null & echo -n "Převádím MP3 na WAV… " wait $! && echo "OK" || echo 'chyba!'
V praxi se tento příkaz používá převážně neinteraktivně, tedy ve skriptech.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
while sleep x; do ...; done
while true. Kdyby tam byl nekonečný for, tedy for((;;)), tak by to bylo o něčem jiném.
for((;;)) občas nebyla sranda a musel jsem držet ctrl+c, zatímco u while true to stačilo jen zmáčknout.
Teď sem si i uvědomil že jsem reagoval docela zcestně na tvůj původní komentář, takže si mě radši nevšímej
lame --decode nejaka.mp3 nejaky.wav &> /dev/null & echo -n "Převádím MP3 na WAV… " wait $! && echo "OK" || echo 'chyba!'tohle je blbost $! vrati pid prikazu echo .... spravne melo byt
lame --decode nejaka.mp3 nejaky.wav &> /dev/null & PID=$! ... echo -n "Převádím MP3 na WAV… " wait $PID && echo "OK" || echo 'chyba!'
$! obsahuje ID procesu, který byl naposledy spuštěn na pozadí (tedy s &).
echo -n Převádím... lame ... >/dev/null && echo hotovo || echo chybaTedy alespoň pokud není třeba dělat mezitím něco dalšího.
wait $! && echo "OK" || echo 'chyba!' protože to je wait $! && (echo "OK" || echo 'chyba!') nikoliv "klasické" if then else wait $! && (echo "OK") || (echo 'chyba!')takže teoreticky pokud selže echo OK, objeví se "chyba!", ovšem nikoliv chyba v převodu mp3, ale chyba ve výpisu na obrazovku, což nemusí být to, co autor zamýšlel. V praxi echo OK většinou neselže, ale nepřipadá mi vhodné to takto psát...
Problém je, že verze at, která je obvykle k nalezení na linuxových systémech, se zde trochu rozchází se standardem Single UNIX Specification a žádný přepínač -r nemá.
Až tak obvyklé to nebude - v SuSE ho podporuje, v Red Hatu ho podporuje, ve Slackware IIRC taky (nebo aspoň podporovala, když jsem ho používal). Vlastně si nevzpomínám na žádnou konkrétní distribuci, kde by defaultní implementace at přepínač -r nepodporovala.