Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Bezpečnostní chyba CVE-2021-44228 pojmenována Log4Shell v Apache Log4j 2 byla opravena v Log4j 2.15.0. Záhy se ale zjistilo, že ne zcela. Bezpečnostní chyba CVE-2021-45046 byla opravena v Log4j 2.16.0. Další bezpečnostní chyba CVE-2021-45105 byla opravena v Log4j 2.17.0.
Tiskni
Sdílej:
log.debug("neco se posralo");
a je to! To je bomba, to musim hned pouzit. Ze to ma zkomilovane 15MB? No a co.
Kazdy, kdo nasadil knihovnu s 170 tisici radky kodu kvuli logovani je u me blazen. Kdo si nevic myslel, ze v takovem bloatwaru zadna dira neni je u me naivni blazen. A kdo si mysli, ze to byla posledni je naivni^2 blazen :-p
Rad bych se mylil, ale dalsi takova tikajici bomba s RCE potencialem jsou apky nad electronem.
Souhlas, psal jsem něco podobného u předchozí zprávičky.
Takova vec v knihovne slouzici k logovani vubec nema co delat nebo alespon ma byt defaultne vypnuta.
Dalo by se to modularizovat. Jádro by bylo minimalistické a ostatní funkcionalita by byla volitelná a vyčleněná do modulů, které by sis nemusel ani instalovat, pokud je nepotřebuješ (výchozí stav).
print
, tam bude ještě sql.execute
do DB. Nebo cokoliv. Externí logování vyřešeno za 10minut. Za tu dobu bych nestihl přečíst ani dokumentaci k log4j.
Sice souhlasím, že by se to s knihovnami nemělo přehánět a když už, tak by to nemělo být monstrum, ze kterého využiješ jen pár procent funkcionality a zbytek tě buď brzdí nebo dokonce ohrožuje (viz zrovna tahle chyba)… Ale na druhou stranu to, co píšeš ty, je opačný extrém, který přináší zase jiné problémy.
Pokud to má být nějaká malá utilitka, která sem tam něco vypíše a člověk to buď sleduje v terminálu nebo se občas podívá do logu a těch pár řádků si prostuduje… tak budiž – tohle jde dělat zcela na koleně, jen s tím, že na začátek řádku hodíš datum a čas a za něj nějakou zprávu.
Ale pokud je ta aplikace jen trošku větší a těch logů je víc, tak začneš řešit různé další problémy a implementovat si všechno ručně ti přidělá zbytečně práci – to po použití nějaké knihovny vyloženě volá. Ideálně by ta základní logovací funkcionalita měla být ve standardní knihovně, součást aplikačního serveru atd. Co se týče těch funkcionalit, tak nějak v náhodném pořadí, co mne zrovna napadá:
Určitě by se z toho neměl stát moloch, v základu by mělo být jen to nejnutnější + abstraktní rozhraní, která může volitelně někdo implementovat a přidat svůj modul. Ale na druhou stranu nedává smysl snažit se celé logování zjednodušit na jednu funkci s jedním textovým parametrem, která před něj akorát přilepí datum a čas a vyplivne to na standardní výstup.
když se nepodaří zalogovat do databáze nebo do Kafky, tak se zpráva vloží aspoň do lokálního souboruJasně, a když se nepodaří zalogovat do souboru, protože ENOSPC tak to pošle poštovního holuba? Někde se to utnout musí. Pro moji práci už dneska bohatě stačí jen stderr a nechat to zpracovat v systemd / journald. Zas tak často do těch logů nelezu. *) Tohle je taky super. On je v jiné zemi, česky neumí, já neumím jeho řeč a úroveň naší psané angličtiny se liší. Takže jsme si museli vypracovat slovník. Stále to někde dře ale lepší se to. Důležitá je ta iteraci, když něco někdo z nás pochopí špatně, tak se to rychle napraví (kde rychle je v tomto případě v řádech dnů).
To co pises neni vec aplikace, to je vec logdemona, tudiz to v aplikaci vubec nema co pohledavat.
Tak to přeji hodně štěstí při řešení např. těchto problémů mimo aplikaci:
[1] tady sice můžeš říct, že aplikace bude logovat vše a v logovacím démonu si vybereš jen něco a zbytek zahodíš, ale u vytíženějších aplikací nebo u ladících/trasovacích logů to takhle opravdu dělat nejde, protože je to obrovský objem dat a už jen jeho přelití z jednoho procesu do druhého přes STDIO tě stojí zbytečně moc
chceš mít možnost je v konfiguraci zapínat a vypínat, ideálně i za běhu (představ si hodně zatíženou aplikaci, která by toho v ladícím režimu logovala neskutečně mnoho – tu aplikaci nechceš kvůli tomu restartovat a nechceš v téhle úrovni logovat moc dlouho)1Tohle umí programy odjakživa, nastavit loglevel a poslat signál pro reload nastavení. Nemusí se to restartovat.
není dobré nad tím uvažovat jako nad proudem bajtů, ale jako nad posloupností zpráv – měl bys být schopný spolehlivě rozlišit, kde jedna zpráva začíná a kde končí, neměl by ti to žádný vstup/hodnota rozbít (konce řádků, uvozovky atd.) tzn. nechceš jen blít bajty na STDOUT, ale spíš někam posílat/vkládat objekty/záznamySouhlasím. Přesto přístup co řádek to zpráva funguje na celkem velkou oblast problémů. Proto se to taky už těch několik desítek let používá.
i to sestavení logovací zprávy stojí nějaký výkon (provolání nějakých metod/funkcí, nakopírování hodnot z jedné části paměti do druhé, poslepování řetězců…)Kolik těch dat chceš logovat? 100GB na zprávu? Dělal jsem benchark spojování řetězců vs. string builder v golangu a nemá smysl to řešit. Všude se píše, používejte SB. No je o pár procent rychlejší, ale když mám spojit 8 stringů, tak to udělám operátorem '+'. Do milionu zpráv je to nerozeznatelné. Ano, možná kdyby někdo spojoval opravdu hodně (tisíce) opravdu velkých stringů, tak SB dává smysl. Jinak si vybrat to, co je nejelegantnější.
může to být asynchronní, aby to nebrzdilo hlavní vlákno/proces programuNo jasně. Jak jinak.
aplikace dost možná poběží ve více vláknech nebo procesech a ty chceš logovací zprávy poskládat např. do jednoho souboru, aniž by se ti náhodně prolínalyYop.
P.S. Jinak je ale zajímavé, jak široké rozpětí lidí/názorů tady je. Někdo přibalí k aplikaci hromadu knihoven, webový prohlížeč, Python i NodeJS zároveň atd., vyrobí neskutečný bloatware a vůbec mu to není divné nebo si v tom ještě libuje. A pak někdo jiný si představuje, jak by vše vyřešil jednou ručně psanou funkcí, přes STDOUT a ideálně to psal v céčku1. Ani jeden z těch extrémů není dobrý.
[1] to se netýká jen zdejších diskutujících, obecně se stále píše hodně aplikací v céčku, i když by řešená úloha zasluhovala nějaký vyšší programovací jazyk… zřejmě proto, že jsou ti lidé zvyklí psát v céčku, umí ho a mají nějaký mentální blok používat něco vyššího/složitějšího… ale ve výsledku ta komplexita jen vybublá v kódu jejich aplikace, který museli napsat
IMHO to neni moc prekvapive, protoze to zavisi asi prevazne na zkusenostech - lidi z obou dvou extremu toho asi bud moc nenaprogramovali nebo se celou dobu pohybuji v nejake specificke oblasti, kde ani jedno nevadi (bloatware nebo logavat uplne vsechno vzdy a pak to pripadne jinde fitlovat). Kazdopadne za me +1 tomu, co pises.P.S. Jinak je ale zajímavé, jak široké rozpětí lidí/názorů tady je. Někdo přibalí k aplikaci hromadu knihoven, webový prohlížeč, Python i NodeJS zároveň atd., vyrobí neskutečný bloatware a vůbec mu to není divné nebo si v tom ještě libuje. A pak někdo jiný si představuje, jak by vše vyřešil jednou ručně psanou funkcí, přes STDOUT a ideálně to psal v céčku1. Ani jeden z těch extrémů není dobrý.
Ani jeden z těch extrémů není dobrý.Proč si myslíš, že je to extrém? Opravdu denně pracuju se službama, které mají velmi jednoduchý log a některé z nich logují opravdu jen do stderr a stdout. Nebo postaru ještě do souboru a potom se řeší logrotate a jejich reload. Nginx mám tak nastaven, php-fpm také, svoje programy taky (REST služby - vrstva mezi DB a klientem). Postgresql si píše deníček do vlastních souborů. Moje vlastní programy jsou cli utilitky nad nějakými daty, rest server, pokud existuje, nebo rovnou postgres. Dělá to přesně to co chci.
A pak někdo jiný si představujeJá si to nepředstavuju, je to moje praxe posledních 15 let.
jak by vše vyřešil jednou ručně psanou funkcí, přes STDOUT a ideálně to psal v céčkuNevím co tím "vše" myslíš. Ale pro naše účely bohatě stačí stderr/stdout. Klidně napiš z jakého prostředí vycházíš a proč tohle u tebe nestačí. Rád si to přečtu. Banka? Nutnost auditu? Když jsem spravoval běh služby v certifikovaném prostředí, tak se logy ukládaly do DB, časové razítko, podpis. Table měla na konci provozu 90GB. Za celou dobu provozu jsem jen přidával další disky do LVM. VMko s DB mělo tuším něco jako 600GB. Podle mého v tom lidi hledají zbytečnou vědu. Já jako admin (jsem věčně se vším nespokojenej) jsem říkal, že by se to mělo optimalizovat. Jednatel šel a koupil tehdy 4x600GB Intel DC SSD, dal to do ESX a vmko mělo luxusní běh na 2TB SSD polem (R10). Vyřešeno. Sice to vyřešil jinak, než jsem chtěl, ale usoudil že HW je levný. Běželo to bez jediného problému po celou dobu konsese / certifikace / provozu (2012-2017). Co víc potřebuješ?
Pokud to nebylo myšleno ironicky: Log4j 1.x had reached end of life
On August 5, 2015 the Logging Services Project Management Committee announced that Log4j 1.x had reached end of life.
A security vulnerability, CVE-2019-17571 has been identified against Log4j 1. Log4j includes a SocketServer that accepts serialized log events and deserializes them without verifying whether the objects are allowed or not. This can provide an attack vector that can be expoited. Since Log4j 1 is no longer maintained this issue will not be fixed. Users are urged to upgrade to Log4j 2.
SocketServer
nelze použít omylem, nebo dokonce nevědomky. Je to něco co se musí explicitně spustit a nechat poslouchat na nějakém otevřeném portu... a kdo něco takového udělá, tak dostane co si zaslouží