Byla vydána nová verze 4.5 (𝕏, Bluesky, Mastodon) multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 3.0 (Mastodon) nástroje pro záznam a sdílení terminálových sezení asciinema (GitHub). S novou verzí formátu záznamu asciicast v3, podporou live streamingu a především kompletním přepisem z Pythonu do Rustu.
Canonical oznámil, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie) v Ubuntu.
Tržní hodnota americké společnosti Alphabet, která je majitelem internetového vyhledávače Google, dnes poprvé překonala hranici tří bilionů dolarů (62,1 bilionu Kč). Alphabet se připojil k malé skupině společností, které tuto hranici pokořily. Jsou mezi nimi zatím americké firmy Nvidia, Microsoft a Apple.
Spojené státy a Čína dosáhly dohody ohledně pokračování populární čínské platformy pro sdílení krátkých videí TikTok v USA. V příspěvku na síti Truth Social to dnes naznačil americký prezident Donald Trump. Dosažení rámcové dohody o TikToku vzápětí oznámil americký ministr financí Scott Bessent, který v Madridu jedná s čínskými představiteli o vzájemných obchodních vztazích mezi USA a Čínou. Bessentova slova později potvrdila také čínská strana.
MKVToolNix, tj. sada nástrojů pro práci s formátem (medialnym kontajnerom) Matroska, byl vydán ve verzi 95.0. Podpora přehrávání formátu Matroska míří do Firefoxu [Bug 1422891, Technický popis]. Přehrávání lze již testovat ve Firefoxu Nightly.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.
Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si
… více »Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.
Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).
Ahoj, mám zdroják, který se (velmi zjednodušeně) inicializue nějak takto:
int sock; struct sockaddr_in6 addr; memcpy( &addr, &in6addr_any, sizeof( addr ) ); addr.sin6_port = htons( PORT ); sock = socket( AF_INET6, SOCK_DGRAM, IPPROTO_UDP ); bind( sock, (const struct sockaddr *) &addr, sizeof( addr ) );
Na Linuxu i na Solarisu se to bez problémů přeloží. Jenže zatímco na Linuxu to taky normálně běží a funguje (tj. tím socketem to komunikuje), na Solarisu hlásí bind()
(samozřemě přes perror()
) tohle:
Address family not supported by protocol family
Jak tomu mám rozumět? V souboru /etc/sock2path
(mimo jiné) čtu:
26 1 0 /dev/udp6 26 1 17 /dev/udp6
To se mi zdá docela v pořádku. Netušíte někdo, čím by to mohlo být? Tohle asi nebude ono. Řešení marně hledám už tři hodiny a začíná mě chytat pořádný rapl.
Výpis z uname -a
SunOS prominence 5.11 snv_101b i86pc i386 i86pc Solaris
Ukázkový server z Migrating to IPv6 on the Solaris OS chodí?
Jiné IPv6 aplikace fungují?
Nakonec jsem to vzdal a získávám celou strukturu z getaddrinfo()
. Stačí nastavit AI_PASSIVE
, jako název stroje dát NULL
a adresa, kterou to vrátí, se prostě použije. Blíž jsem to už nezkoumal. Podstatné je, že to funguje i v případech, kdy je IPv6 sice povolený, ale špatně nastavený. Mám takový dojem, že v té konstantě in6addr_any
je na Solarisu cosi divného.
Mě zase chytá rapl z takových programátorů...
memset(&addr, 0, sizeof(addr)); addr.sin6_family = AF_INET6; addr.sin6_port = htons(PORT); addr.sin6_addr = in6addr_any;
Mě zase chytá rapl z takových komentářů.
Hurá! On se spletl! To je sláva. Tak to musí být určitě „takový“ (tj. velmi špatný) programátor. Vlastně ani není třeba vidět nějaký zdroják, neřkuli projekt. To se přece dá snadno posoudit z 10 řádků vytržených z kontextu, uvedených jako příklad, no ne? Někteří mají prostě věštecké nadání. Nepotřebují vědět, zda se náhodou nespecializuji na něco jiného a zda náhodou tohle API nezkoumám do detailu poprvé. Na tom ale nesejde, prostě „takoví“ programátoři a hotovo. Kdybych neměl podezření, že v té inicializaci musí být něco špatně, asi bych sem ten zdroják nedával, že jo.
Prostě se stává, že někdy člověk tři hodiny řeší kravinu a nemůže tomu přijít na kloub. Nevšiml jsem si, nejspíš vinou dlouhého (lidského) uptime, že ta konstanta obsahuje pouze část celé struktury. Jasně, v podstatě není důvod, aby obsahovala port, flow info, scope id a další data, ale to mě včera zkrátka nenapadlo. Věř tomu nebo ne, občas se mi stane, že prostě něco přehlédnu. Těm ostatním, „netakovým“ programátorům se to asi nestává, že? No ale mně jo, takže se nedá nic dělat.
Největší mojí chybou bylo vinit z toho Solaris, ale vzhledem k dalším drobným potížím (viz níže) byl tak nějak na ráně. Na Linuxu mi to kupodivu prošlo a dokonce to dělalo to, co jsem chtěl, přestože memcpy()
inicializovala část té struktury kdovíčím a adresa vůbec neskončila na správném místě. (!!!) To je trochu záhada. Solaris se zachoval korektněji v tom smyslu, že ohlásil chybu. Tu chybu jsem pak naprosto špatně interpretoval.
Jak už jsem psal výše, až donedávna jsem k získávání všech adres bez rozdílu (včetně loopbacku a any) používal getaddrinfo()
. To má tu velkou výhodu, že se snadno vypořádá i s případy, kdy IPv6 buď není k dispozici, nebo je špatně nastavený. Prostě není třeba se starat, odkud se bere ta adresa a jaká vlastně je. Tentokrát jsem ale dělal tak jednoduchý program, že mi getaddrinfo()
připadalo jako kanón na vrabce. No a pak jsem si špatně přečetl, co přesně ta konstanta in6addr_any
obsahuje. Jsem už „takový“.
Mimochodem, úplně nakonec jsem stejně musel zůstat u getaddrinfo()
. Projekt totiž definuje _POSIX_C_SOURCE
ve verzi, která in6addr_any
na Solarisu vůbec nezpřístupní. (Na LInuxu sice ano, ale to je potom prd platné.) A bez _POSIX_C_SOURCE
zase na Solarisu zmizí několik důležitých maker a funkcí, tuším že z pthread, takže nic naplat, musí to tam být. Naštěstí getaddrinfo()
funguje za všech okolností.
Jen tak mimochodem, tohhle na Solarisu prostě nefunguje.
Zaprvé, má zmršené headery, takže vytřískat z nich definici in6addr_any
a zároveň tím neztratit spoustu dalších definic vyžaduje ošklivý hack. Ale to je pouze detail.
Zadruhé, dává to pořád stejnou chybovou hlášku, i když jsem už inicializaci opravil. Pouze getaddrinfo()
funguje, tohle ne.
Tiskni
Sdílej: