Na GitHubu byl publikován reprodukovatelný návod, jak rozchodit Adobe Lightroom CC na Linuxu a Wine. Návod byl vytvořený pomocí AI Claude Code.
Pokud by někdo potřeboval Wayland kompozitor uvnitř počítačové hry Minecraft, aby mohl zobrazovat okna desktopových aplikací přímo v herním prostředí, může sáhnout po Waylandcraftu. Ukázka na YouTube.
Uroš Popović v krátkém článku vysvětluje, co jsou emulátor terminálu, TTY a shell a jaké jsou mezi nimi rozdíly. Jde o první díl seriálu na jeho novém webu Linux Field Guide věnovaném nízkoúrovňové práci s linuxovými systémy.
Byl vydán Debian 13.5, tj. pátá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.14, tj. čtrná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.
CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.
pack_start = time.time()
pack = Popen(['tar', '-cJf', account_archive,'-T'+account_filelist ])
pack.wait()
pack_end = time.time()
řešení to není špatné (rozumějte - funguje ) , ale tar asi používá maximální kompresi. Pokoušel jsem se do volání Popen propašovat XZ_OPT=3, ale tudy asi cesta nevede ( nebo nevím jak na to ).
je nějaká jiná možnost jak vyladit kompresi a mít možnost získat čas potřebný k zabalení ?
prý přes shell to není bezpečné, psali někde na SOwerflow, ale zas takový kabrňák nejsem, abych to posoudil.
Jinak komprese trvá skoro 19 hodin a když to stáhnu na 10 bude to stačit ( 140GB pošty )
Nevadilo by mi ani volání taru v nějaké funkci, která by ten čas komprese hlídala, ale zároveň umožnila skriptu pokračovat v přípravě dalšího seznamu, ( komprimuju poštu po účtech( 1 účet = 1 složka = 1 archiv + csv s obsahem ( kdy predmet, kdo ) ne vše najednou ) případně spuštění dalšího vlákna s tarem ( čtyřjádro - asi bych to hlídal na max 3 tar-vlákna ( jak ?? ) )
Mám nástín, ale zatím nevyzkoušeno - pakování do funkce a tu volat subprocess.popen, ve funkci zase subprocess.popen tar a čekat na něj. jak ohlídat jen 3 spuštěné tary zatím nevím. Snad nějaký counter (globální proměnná ), který by to hlídal ... funguje to ale ve vláknech ? aby se nepoprali o tu proměnnou ?
Předem děkuji i za částečné nakopnutí správným směrem.
1, vyladit kompresi taru / použít jiný postup pro kompresi
2. popsat nějaké schéma, jak komprimovat ve více vláknech ( jasně, čas komprese budou mít jednotlivá vlákna asi pěkně natažený, ale snad to celkový čas zmenší )
Milan
Řešení dotazu:
)
prý přes shell to není bezpečné, psali někde na SOwerflowPokud tam nebudeš předávat argumenty, které ti dal uživatel, tak je to v pohodě.
Nevadilo by mi ani volání taru v nějaké funkci, která by ten čas komprese hlídala, ale zároveň umožnila skriptu pokračovat v přípravě dalšího seznamuJá na tohle vždycky pouštěl thread… Řekne se prostě
threading.Thread(target=funkce, args=(a,b,c)); t.start()
je nějaká jiná možnost jak vyladit kompresi
tar c | xz -3 > foo ?
Pokud tam nebudeš předávat argumenty, které ti dal uživatel, tak je to v pohoděne, skript běží pod rootem
tar c | xz -3 > footak ono to jde i ( v shellu ) XZ_OPT=3 tar -cJf "$bkfile" -T$usersez čili podobně subprocess.popen( "cely prikaz" shell=true ) ... ale ten shell .. jak jsem psal - na SO jednomu tazateli rozmlouvali. každopádně díky za navedení. Dá se u threadu sledovat, zda ještě "žije" ?
ne, skript běží pod rootemA? Ten problém se shellem je prostě v tom, že když tam dáváš argumenty od uživatele, je složité to korektně escapovat tak, aby když ti uživatel zadá
";rm -rf /*;, tak to shell nevyhodnotil jako další příkaz. Ty tam ale argumenty od uživatele, jestli to chápu dobře, nemáš (předáváš tam jen jméno souboru, které si sám generuješ).
os.putenv("XZ_OPTS", "3")
Ak používaš Python3, môžeš pri tej funkcii wait použiť aj argument timeout a ak sa program v tom čase neskončí, vyhodí tá funkcia výnimku subprocess.TimeoutExpired. Takže nie je problém pospúšťať viac programov pomocou Popen a potom si na počkať volaním wait v nejakom cykle.
Prípadne môže byť vhodnejšie použiť funkciu poll (a sleep). Wait sa potom použije len ak poll nevráti None (a teda program sa ukončil).
souborů celkem lidsky čas komprese lidsky archív kompr. poměr 29676 20569932136 20.0GB 10,797.59 02:59:57.592 13261289712 0,64 17021 17133312262 17.0GB 4900,4 01:21:40.3 9398976354 0,55čili i na tomto vzorku je vidět, že 7z zabodoval.
from concurrent.futures import ThreadPoolExecutor as Executor
import subprocess
def run_command(cmd):
p = subprocess.Popen(cmd)
p.wait()
return p.pid
def execute(commands):
with Executor(max_workers=3) as executor:
for pid in executor.map(run_command, commands):
print(pid)
Jsou lepší vlákna nebo event loop?
Tiskni
Sdílej: