Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).
ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.
DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.
Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.
Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.
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: