Byly zveřejněny informace o kritické zranitelnosti CVE-2026-64600 pojmenované RefluXFS (technické detaily) v XFS. Je tam již od verze Linuxu 4.11, tj. rok 2017. Jedná se o lokální eskalaci práv. Neprivilegovaný uživatel může editovat libovolný soubor, například klidně zrušit rootovské heslo v /etc/passwd. Videoukázka na Vimeo. V upstreamu je zranitelnost opravena.
OpenAI / ChatGPT má dnes výpadky (OpenAI Status, DownDetector).
Poskytovatel hostingu svobodných/open-source projektů Codeberg po hlasování na valné hromadě vydal stanovisko k využívání LLM. Kvůli vytěžování infrastruktury a rostoucím cenám hardwaru, ale také hrozbám pro spolupráci v komunitě se k LLM staví kriticky. Nebude poskytovat hosting projektů vytvářených LLM agenty.
Jack Dorsey představil (𝕏) open source týmovou komunikační platformu Buzz (GitHub) s cílem snížit závislost na Slacku a GitHubu.
Poštovní klient Thunderbird byl vydán v nové verzi 153 s kódovým názvem Meadow. Jedná se o ESR (Extended Support Release) vydání. Přehled novinek v poznámkách k vydání. Vylepšuje OAuth. Thundermail lze používat bez instalace doplňku.
AI tento rok naplno vtrhla do vývoje softwaru a výrazně ovlivňuje také open source projekty. Jiří Eischmann v příspěvku Jak mění AI open source na svém blogu rozebírá několik trendů, které v open source v poslední době v souvislosti s AI pozoruje, a jak tyto trendy svět otevřeného softwaru mění (Inflace projektů, Zahlcení kontroly, Klesající motivace zveřejňovat kód).
Evropská komise (EK) vyměřila americké internetové společnosti Google pokutu 890 milionů eur (21,5 miliardy Kč) za porušení unijního nařízení o digitálních trzích (DMA). Firma se podle unijní exekutivy provinila tím, že ve vyhledávači Google Search upřednostňovala vlastní služby a že podnikům ukládala omezení, která jim bránila nasměrovat spotřebitele k alternativním, často levnějším nákupním kanálům na platformě Google Play.
… více »Samsung na akci Galaxy Unpacked July 2026 (YouTube) představil své nové telefony Galaxy Z Fold8 Ultra, Fold8 a Flip8, hodinky Galaxy Watch Ultra2 a Watch9 a chytré brýle ve spolupráci s Gentle Monster a Warby Parker.
Po pěti letech vývoje vyšla česká počítačová hra Scarlet Deer Inn (ProtonDB). Scarlet Deer Inn je vyšívaná temná středověká pohádka. Zatímco život ve zdánlivě obyčejné vesnici se točí kolem běžných povinností a sousedských drbů, v podzemí se skrývají zlověstná tajemství.
Představen byl Raspberry Pi Touch Display 2 s uhlopříčkou 10 palců a rozlišením 1200 × 1920 pixelů. Cena je 80 dolarů.
Dobrý den,
mám tady takový dost specifický dotaz na Python a pickle/shelve. Mám kód který bych chtěl udělat pro python2 a python3. Na první pohled se zdá, že vše správně funguje, jenže po otevření dat na python 3 se objevuje chyba v kódování, která ani nejde moc dobře vyřešit.
python2 > vytvoření souboru
import shelve
try:
import dumbdbm as dumb
except:
from dbm import dumb
db = dumb.open('/tmp/test',flag='c')
database = shelve.Shelf(db,writeback=True)
database['aa'] = {"ščř":2343, 'aaa3':'šřdd'}
database.sync()
database.close()
python3 > otevření souboru
import shelve
try:
import dumbdbm as dumb
except:
from dbm import dumb
db = dumb.open('/tmp/test',flag='c')
database = shelve.Shelf(db,writeback=True)
database['aa']
Traceback (most recent call last):
File "/usr/lib/python3.2/shelve.py", line 111, in __getitem__
value = self.cache[key]
KeyError: 'aa'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.2/shelve.py", line 114, in __getitem__
value = Unpickler(f).load()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 0: ordinal not in range(128)
Chyba je dle mého špatně vyřešitelná na úrovni kódu vlastního a je možné jí řešit upravením __getitem__()
/usr/lib/python3.2/shelve.py
/usr/lib/python3.3/shelve.py > Shelf v částí Unpickler(), kde chybí kódování. Do Shelf předat kódování nejde.
def __getitem__(self, key):
try:
value = self.cache[key]
except KeyError:
f = BytesIO(self.dict[key.encode(self.keyencoding)])
value = Unpickler(f,encoding="???").load()
if self.writeback:
self.cache[key] = value
return value
Upravením funkce __getitem__() na na "UTF-8" funguje
from pickle import Pickler, Unpickler
from io import BytesIO
def getitem(database, key):
try:
value = database.cache[key]
except KeyError:
f = BytesIO(database.dict[key.encode("UTF-8")])
value = Unpickler(f,encoding="UTF-8").load()
if database.writeback:
database.cache[key] = value
return value
from pickle import Pickler, Unpickler
from io import BytesIO
getitem(database, 'aa')
{'ščř': 2343, 'aaa3': 'šřdd'}
Takže teď nevím, jakým způsobem bych to měl řešit.. mám dělat nějaký wrapper nebo to je normální chování?? Někdo znalý Pythonu poraďte.
Omlouvám se, máte pravdu, řešil jsem to v rychlosti.
Lze to vyřešit i bez zásahu do standartního modulu:
def u(string):
if (sys.version_info[0] < 3):
return unicode(string, "utf-8")
return string
...
database = shelve.Shelf(db, protocol=2, writeback=True)
...
database['aa'] = {u('ščř'): 2343, 'aaa3': u('šřdd')}
Zkoušel jsem to s Pythonem 2.5 a 3.2.
Pak lze ještě použít "obezličku", kterou jsi nastínil:
from pickle import Pickler, Unpickler
try:
from io import BytesIO
except:
pass
class MyShelf(shelve.Shelf):
def __init__(self, db):
shelve.Shelf.__init__(self, db, protocol=2, writeback=True)
def __getitem__(self, key):
if (sys.version_info[0] < 3):
return shelve.Shelf.__getitem__(self, key)
try:
value = self.cache[key]
except KeyError:
f = BytesIO(self.dict[key.encode(self.keyencoding)])
value = Unpickler(f, encoding="utf-8").load()
if self.writeback:
self.cache[key] = value
return value
...
database = MyShelf(db)
database['aa'] = {'ščř':2343, 'aaa3':'šřdd'}
Případně lze překrýt metodu __setitem__(), v Pythonu 2, tak aby všechny řetězce převedla na unicode řetězce.
Také mi přijde, že by bylo šikovné mít možnost nastavit kódování přímo v objektu Shelf, vzhledem k tomu, že metody, které volá tento parametr přijímají.
Tiskni
Sdílej: