Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Vyřešen byl problém s macOS 27 Golden Gate. Vývoj lze podpořit na Open Collective a GitHub Sponsors.
EU dnešním dnem zavedla clo ve výši 3 eur na balíky nízké hodnoty dovážené ze zemí mimo EU. To zahrnuje širokou škálu výrobků běžně nakupovaných on-line, jako jsou oděvy, hračky, elektronika a další spotřební zboží v hodnotě až 150 EUR.
Vyšel Redmine 7.0, jeden z nejlepších open source ticketovacích systémů. Došlo k migraci na Rails 8, vylepšení UI/UX, Workflow, byla přidána podpora náhledu pro Microsoft Office a LibreOffice dokumenty, došlo k výkonnostním optimalizacím a přibylo spoustu dalších oprav a novinek. Více informací v oficiálním oznámení.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 166 (pdf).
Blíží se prázdniny a než se rozutečete k moři, je na čase se opět sejít na Virtuální Bastlírně - pravidelném setkání elektroniků, ajťáků, bastlířů a obecně nadšenců do techniky. Co si pro vás strahovští bastlíři připravili tentokrát? Určitě proberou blížící se Linux Days i další události. U softwaru se chvíli zdrží a poví si kupříkladu o tom, jak se zbavit Bambu Cloudu, ale nepřijít o možnost ovládat tiskárnu na dálku. Řeč dojde i na AI,
… více »Vývojáři postmarketOS vydali verzi 26.06 tohoto operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 2.55.0 distribuovaného systému správy verzí Git. Přispělo 100 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Craig Loewen na blogu Microsoftu oznámil veřejnou preview verzi WSL kontejnerů, tj. linuxových kontejnerů ve Windows Subsystem for Linux (WSL). Spouští se příkazem wslc.exe.
Byla vydána (𝕏, Bluesky) nová verze 2026.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 9 nových nástrojů v oficiálním oznámení na blogu.
Grafická aplikace Krokiet/Czkawka pro vyhledávání a odstraňovaní nepotřebných souborů (duplicitní soubory, prázdné složky, podobné obrázky, podobná videa, poškozené soubory a další) byla vydána ve verzi 12.0.0. Podrobný přehled novinek v příspěvku na Medium. Jedná se o poslední verzi frontendu Czkawka GTK nad Czkawka Core. Uživatelům se doporučuje migrovat na frontend Krokiet postavený nad frameworkem Slint. Představena byla aplikace Cedinia pro Android využívající Czkawka Core. Dostupná je jako APK pro ruční instalaci.
tail -f). Zkoušel jsem to přes fork a semafor, ale dostal jsem tip, že by se to mělo nějak dát udělat přes MainLoop() - to je koneckonců smyčka, která by měla zavolat určitou funkci kontrolující soubor.
Ale zatím jsem nenašel "obecný" postup, jak toho dosáhnout. Programátor nejsem, netuším, po čem vlastně pátrám.
Používám wxPython (ale postup asi bude obecný pro jaký koliv toolkit), část kódu:
class Monitor(wx.App):
def OnInit(self):
init GUI
[....]
def watcher(self):
if zmena_v_souboru:
zmena_v_gui
def main():
pymonitor = Monitor(0)
pymonitor.MainLoop()
main()
Jak na to?
Díky

#!/usr/bin/env python
import sys, os, select, fcntl, signal
SEEK_SET, SEEK_CUR, SEEK_END = 0, 1, 2
bufsize = 4096
def handler_SIGIO(a, b):
pass
def dump_to_end(fd):
while True:
chunk = os.read(fd, bufsize)
if not chunk: break
sys.stdout.write(chunk)
fd = os.open(sys.argv[1], os.O_RDONLY)
signal.signal(signal.SIGIO, handler_SIGIO)
filepos = 0
while True:
os.lseek(fd, filepos, SEEK_SET)
dump_to_end(fd)
filepos = os.lseek(fd, 0, SEEK_CUR)
print filepos
fcntl.fcntl(fd, fcntl.F_SETLEASE, fcntl.F_RDLCK)
signal.pause()
Dá se to udělat i jinak? Nevýhodou je to šaškování se signálem a volání pause()
, pokud si je explicitně neuděláš (třeba přes rouru). Není lepší použít vlákna?
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk, gobject, stat, os, sys
class WatchFile:
def __init__(self, filename):
self.filename = filename
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect('delete_event', self.delete_event)
self.window.connect('destroy', self.quit)
self.checkbut = gtk.CheckButton('File "%s" has changed' %filename)
self.checkbut.show()
self.times = (None, None, None)
self.has_changed()
gobject.timeout_add(1000, self.periodic_check, None)
self.window.add(self.checkbut)
self.window.show()
def periodic_check(self, object):
if self.has_changed():
self.checkbut.set_active(1)
return True
def has_changed(self):
sr = os.lstat(self.filename)
t = (sr.st_atime, sr.st_mtime, sr.st_ctime)
if t != self.times:
self.times = t
return True
else:
return False
def delete_event(self, widget, data):
return False
def quit(self, widget, data = None):
gtk.main_quit()
def main(self):
gtk.main()
if __name__ == '__main__':
wtch = WatchFile(sys.argv[1])
wtch.main()
Tohle ukáže checkbox, který se automaticky zaškrtne při každé změně souboru. Odšktrnutí jsem ponechal na uživateli, ať si klikne myší. Každou sekundu to kontroluje všechny tři časy u souboru. Jádrem pudla je timeout_add, o kterém psal Petr Mach.
self.timer = wx.wxPyTimer(self.watcher)
self.timer.Start(1000)
self.watcher() # to je ta funkce, která to celé dělá
čerpal jsem z roota (cirkus s okny)
dík za nasměrování správným směrem.
Tiskni
Sdílej: