Projekt GNU dnes slaví 40. výročí. Přesně před čtyřiceti lety, 27. září 1983, Richard Stallman oznámil, že se chystá napsat s Unixem kompatibilní operační systém GNU (Gnu's Not Unix). Hlavní oslava a setkání hackerů probíhá ve Švýcarsku ve městě Biel/Bienne. Na programu je také přednáška Richarda Stallmana.
Byl vydán Mozilla Firefox 118.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vypíchnout je nutno automatický lokální strojový překlad webových stránek. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 118 je již k dispozici také na Flathubu a Snapcraftu.
Byla vydána nová major verze 15.0.0 softwaru OCRmyPDF pro přidávání textové vrstvy k naskenovaným PDF dokumentům (PDF/A). Přehled novinek v poznámkách k vydání. OCRmyPDF využívá pro optické rozpoznávání znaků (OCR) engine Tesseract.
Karel Matějka zveřejnil druhé demo své chystané hry Bzzzt. Kromě verze pro Windows a macOS je dostupná i verze pro Linux. Plná verze hry má vyjít zanedlouho.
Noví Bulánci byli oficiálně vydáni. V roce 2021 bylo na Startovači na podporu vývoje této hry vybráno 7,3 miliónů Kč. Hra je zatím určena jenom pro Windows, díky Protonu ale běží také na Linuxu.
ChatGPT může vidět, slyšet a mluvit.
Upscaler je open source nástroj pro zvýšení rozlišení a vylepšení obrázků pomocí AI. Vývoj probíhá na GitLabu. Instalovat lze také z Flathubu. Stejně jako Upscayl je Upscaler postaven nad Real-ESRGAN.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.20.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
V Dublinu o víkendu proběhla dvanáctá iterace multimediální konference Video Dev Days, kterou pravidelně pořádá nezisková organizace VideoLAN. Záznamy přednášek z prvního a druhého dne jsou dostupné na YouTube.
LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), dospěl po pěti letech vývoje do verze 1.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.
# tar -c -T $seznam | bzip2 -9 >$sambacesta`date +%y_%m_%d`'.tar.bz2' && echo "Backup Done" || "Backup Failed"Proč toto nemůže fungovat? Díky
bzip2
.
tar -c -T $seznam | bzip2 -9 >$sambacesta`date +%y_%m_%d`'.tar.bz2' && echo "Backup Done" || echo "Backup Failed"Ale ani to nebude fungovat na návratovou hodnotu taru, protože se uvažuje vždy poslední návratová hodnota v koloně - v tomhle případě bzipu.
tar -cjvf -T $seznam soubor.tar.bz2 && echo "Backup Done" || echo "Backup Failed"Něco mi řiká, že tam je chyba v těch parametrech, že?
seznam=/home/user/list tar -cjvf soubor.tar.bz2 -T $seznam && echo "Backup Done" || echo "Backup Failed"Toto ovšem taky nefunguje :D
/home/user/list
, ale v rámci možností to u mě vypadá funkční.
seznam=/home/user/list tar -cjvf soubor.tar.bz2 -T $seznam && echo "Backup Done" || echo "Backup Failed" if [[ $? -eq 0 ]] then rob_nieco else rob_nieco_ine_ked_sa_to_nepodarilo fi
#! /bin/bash seznam=/home/user/list VytvorArchiv(){ # Echo vracia VZDY true, takze ak prebehne uspesne vytvorenie archivu, tak nie je nutne nic robit. tar -cjvf soubor.tar.bz2 -T "${1}" && echo "Backup Done" || ( echo "Backup Failed"; return 1 ) } if VytvorArchiv "${seznam}" then rob_nieco else rob_nieco_ine_ked_sa_to_nepodarilo fiTakto by to malo fungovat. Ale ak je to tento pripad, tak je to jednoznacne chyba zadavatela, kedze neposkytol dostatok informacii. ;)
&& ||
funguje podle očekávání:
~> true && echo ok || echo fail ok ~> false && echo ok || echo fail fail
Aj mne. Mozno som sa len nedostatocne vyjadril. Ale taketo nieco nefunguje a to je jediny pre mna zjavny dovod, preco by to zadavatelovi "nefungovalo":
patrik@debian-thinkpad:~$ true && echo ok || echo fail; [[ $? -eq 0 ]] && echo ok ok ok patrik@debian-thinkpad:~$ false && echo ok || echo fail; [[ $? -eq 0 ]] && echo ok fail ok
Ja len vravim, ze nemoze pouzit nieco taketo a vraviet, ze tar vracia nespravnu navratovu hodnotu:
#! /bin/bash true && echo ok || echo fail if [[ $? -eq 0 ]]; then rob_nieco; else rob_nieco_ine; fi
Takto to totiz nebude nikdy fungovat skrz pouzitia echo, ktory ma vzdy navratovu hodnotu 0 a teda maskuje navratovu hodnotu true resp. akehokolvek prikazu pred echo-m v kolone. Da sa to vsak vyriesit napr. aj nasledovne:
#! /bin/bash Funkcia(){ true && echo ok || ( echo fail; return 1 ) } if funkcia; then rob_nieco; else rob_nieco_ine; fi
To je podla mojho nazoru dovod, preco tu zakladatel stale tvrdi, ze mu tar nevracia spravnu navratovu hodnotu. A to je zaroven aj pointa mojho predchadzajuceho prispevku.
tar && echo || echo
To co kolegové řešili ohledně návratové hodnoty v koloně byl problém tar | bzip && echo || echo
, kde tar
a bzip
jsou v koloně tar | bzip
a následné příkazy echo
se řídí návratovou hodnotou bzip
u, nikoliv tar
u.
tar && echo || echo
není kolona (v obvyklém smyslu slova, tak byste to tedy nazývat neměl, pokud nejste z Babylonu. Před echome tedy nic v koloně není), je to sled příkazů, po jejich provedení je k dispozici návratová hodnota posledního znich (jedno z ech
), jak jste správně řekl.
Další věc je, že konstrukce A && B || Cje ve skutečnosti
if (A && B) then B; else C; fi, ale v případě přikazů jako echo se to zanedbává, neb většinou fungují.
Nereagoval som na temu po tento prispevok: https://www.abclinuxu.cz/poradna/linux/show/336497#6
To bol dovod a myslim, ze stale je dovodom, preco som vyvodil z toho zaver, aky som vyvodil a myslim, ze pravom som sa domnieval, ze tam nasleduje kontrola v dalsom kode na navratovu hodnotu. Ale pockajme si na zakladatela temy.
Co sa tyka kolony, z Babylonu nie som. :) Popravde som sa nad vyznamom slova nezamyslal az natolko. Viac som sa snazil tu udrzat nejake jednotne nazvoslovie, ktore Jenda nastolil. Jenda ho vsak pouzil spravne, teda pokial tu budeme sledovat vase vysvetlenie ohladne kolony ( logicke vysvetlenie ), pretoze on spominal aj bzip v case pisania toho jeho prispevku. Inak by som temer isto pouzil sled prikazov pred kolonou.
Takze cele moje posobenie v tejto teme nie je o tom, ci vracia tar spravnu navratovu hodnotu alebo nie, kedze je jasne, ze vracia spravnu. Ale o implementacii kodu do nejakeho vacsieho celku a k tejto teorii mi nahrava prave vyssie zmienovany odkaz.
Další věc je, že konstrukceNe, to není, protože to druhé by ve skutečnosti (pokud by vše končilo úspěchem) udělalo ABB či ABC (pokud by končilo neúspěchem), zatímco první udělá jen AB, případně AC.A && B || Cje ve skutečnostiif (A && B) then B; else C; fi, ale v případě přikazů jako echo se to zanedbává, neb většinou fungují.
if (A && B) then :; else C; ficož je sice přesnější, ale zase ne tak srozumitelné. Podstatné na co jsem chtěl upozornit je, že výpis C závisí na pozitivní návratové hodnotě B, k čemuž u
if-A-then-B-else-C
nedochází. U echa je to jedno, ale někdo by třeba dokázal napsat i (pseudokód:)
rar && rm .lock || touch .rar-failedcož už může vytvořit .rar-failed i v případě, že rar proběhne ok.
PIPESTATUS
.
bash$ true | false | true bash$ echo ${PIPESTATUS[1]} 1 # to je to false
tar -cjf foo.tar.bz2 bar/NN
Tiskni
Sdílej: