K dispozici je nový CLI nástroj witr sloužící k analýze běžících procesů. Název je zkratkou slov why-is-this-running, 'proč tohle běží'. Klade si za cíl v 'jediném, lidsky čitelném, výstupu vysvětlit odkud daný spuštěný proces pochází, jak byl spuštěn a jaký řetězec systémů je zodpovědný za to, že tento proces právě teď běží'. Witr je napsán v jazyce Go.
Yazi je správce souborů běžící v terminálu. Napsán je v programovacím jazyce Rust. Podporuje asynchronní I/O operace. Vydán byl v nové verzi 25.12.29. Instalovat jej lze také ze Snapcraftu.
Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného 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 Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Pěkný den (noc),
řeším triviální problém - potřebuji mít možnost voláním programu zjišťovat, zda je v mém mailboxu nový mail. Nic víc. Čekal jsem, že to vyřeším raz dva, a ejhle... biff, xbiff ani newmail mi nevyhovují, chovají se moc "po svém". Já potřebuju jenom zjistit návratovou hodnotu a podle ní vytisknout v promptu něco jako "NEPŘEČTENÝ MAIL". Je to oříšek, nechce se mi cyklem ověřovat časovou známku či velikost mailboxu. comsat je strašně špatně dokumentovaný. Je tu nějaké čisté, prosté řešení, které jsem přehlédnul? Děkuji
#!/usr/bin/env python
import poplib, time, getpass, sys
user = "username"
pop3server = "pop3.seznam.cz"
password = getpass.unix_getpass("Password for "+user+"@"+pop3server+":");
messages_prev = 0
while(1):
try:
M = poplib.POP3(pop3server)
M.user(user)
M.pass_(password)
except poplib.error_proto, detail:
print "Error occured", sys.exc_info()[0], detail
continue
res = M.stat()
messages = res[0]
M.quit()
if (messages != messages_prev):
print time.strftime("%H:%M:%S %d.%m.%Y"),": ", messages, "Messages\a"
messages_prev = messages
time.sleep(120)
a něco podobného se dá udělat i pro IMAP, na což jsem dělal applet: checknewmail.sh #!/bin/sh mtime=`stat -c%Y \$MAIL` atime=`stat -c%X \$MAIL` exit `test $atime -lt $mtime`A potom někde použít:
checknewmail.sh && echo "Máte nový mail"
Nebo si skript může pamatovat, kdy naposledy se díval, jestli je nový mail, a tento čas pak porovnat s nejnovějším mailem. Nevýhoda - zpráva o novém mailu se pokaždé zobrazí jen jednou.
#!/usr/bin/python
from pyinotify import WatchManager, Notifier, EventsCodes, ProcessEvent
import sys, pwd, os, posix
username = pwd.getpwuid(posix.getuid()).pw_name
path = os.path.join('/var/mail', username)
mask = EventsCodes.IN_MODIFY | EventsCodes.IN_CLOSE_WRITE
class mailPE(ProcessEvent):
def __init__(self):
self.was_modified = False
self.was_closed = False
def process_IN_CLOSE_WRITE(self, event):
self.was_closed = True
def process_IN_MODIFY(self, event):
self.was_modified = True
wm = WatchManager()
mbox = mailPE()
notifier = Notifier(wm, mbox)
wm.add_watch(path, mask)
while True:
notifier.read_events()
notifier.process_events()
if mbox.was_closed and mbox.was_modified:
break
Není nutné periodicky zjišťovat změnu něčeho, když tu máme takovou jadernou vymoženost. Proces celou dobu spí, ale přitom je schopen reagovat okamžitě.
Tiskni
Sdílej: