Správní rada americké mediální skupiny Warner Bros. Discovery (WBD) podle očekávání odmítla nepřátelskou nabídku na převzetí od firmy Paramount Skydance za 108,4 miliardy dolarů (2,25 bilionu Kč). Paramount podle ní neposkytl dostatečné finanční záruky. Akcionářům proto doporučuje nabídku od Netflixu.
Na WhatsAppu se šíří nový podvod, který ovšem vůbec nevypadá jako hackerský útok. Žádná krádež hesla. Žádné narušení zabezpečení. Žádné zjevné varovné signály. Místo toho jsou lidé trikem donuceni, aby útočníkům sami poskytli přístup, a to pouhým provedením toho, co vypadá jako běžný ověřovací krok. Bezpečnostní experti Avastu tento nový typ útoku nazývají ghostpairing, protože útočníci si při něm tiše vytvářejí „zařízení duchů“, které žije uvnitř vašeho účtu.
Český LibreOffice tým vydává aktualizaci překladu příručky LibreOffice Draw 25.8. Tato kniha se zabývá hlavními funkcemi programu Draw, vektorové grafické komponenty systému LibreOffice. Pomocí Draw lze vytvářet širokou škálu grafických obrázků. Příručka je ke stažení na stránce dokumentace a tým hledá dobrovolníky pro další překlady.
Anthony Enzor-DeMeo je novým CEO Mozilla Corporation. Mozillu převzal po dočasné CEO Lauře Chambers. Vybudovat chce nejdůvěryhodnější softwarovou společnost na světě. Firefox by se měl vyvinout v moderní AI prohlížeč.
Byla vydána nová verze 9.20 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček RustDesk Server pro vzdálený přístup.
Jonathan Thomas oznámil vydání nové verze 3.4.0 video editoru OpenShot (Wikipedie). Představení novinek také na YouTube. Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.
Byla vydána nová verze 1.6 otevřeného, licenčními poplatky nezatíženého, univerzálního ztrátového formátu komprese zvuku Opus (Wikipedie) a jeho referenční implementace libopus. Podrobnosti na demo stránce.
Vojtěch Polášek představil Vojtux, tj. linuxovou distribuci pro zrakově postižené uživatele. Vychází ze spinu Fedory 43 s desktopovým prostředím MATE. Konečným cílem je, aby žádný Vojtux nebyl potřeba a požadovaná vylepšení se dostala do upstreamu.
Byla vydána (Mastodon, 𝕏) druhá RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.
Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 160 (pdf).
Tak ja bych takovemu cloveku nabydnul asi tak neco okolo 20 000 az 25 000 v hrube samozrejme.
*nabidnul
Umim C, C++, mam rad narocnou low-level praci, mam zaklady z matiky, logiky a teoreticky informatiky - tedy umim to, co me skola naucila. Zajimaji me operacni systemy, spolehlivy systemy a efektivni reseni problemu. Jsem schopen venovat tolik casu jednomu problemu, dokud sam nejsem spokojen. Prispel jsem low-level user-space kodem do projektu HelenOS.To je pěkný, ale kromě toho příspěvku do HelenOS - co jsi naprogramoval?
Zeptam se jinak: jake jsou nastupnicke platy pro programatory v C++? Nechtel jsem primo zhodnotit me, ale nejak uvest v obraz...Shání se trochu hůř než třeba Javisti, málo jich je opravdu dobrých. Opět to ale závisí na zkušenostech...
__attribute__((packed)) co s C nemaj nic společnýho, nebo kravin typu uint8_t, místo které bys měl použít třeba uint_least8_t (protože uint8_t na rozdíl od uint_least8_t nemusí existovat). Použití uint8_t bych bral, kdyby v daném hlavičkovém souboru bylo třeba něco jako
#ifndef UINT8_MAX #error platform not supported #endifJá vím, Jardík si vždycky musí rejpnout.
.
Jinak občas by se hodila nějaká technika.
Co se uint8_t tyce, je to definovane v Ccku v stdint.h, coz ale neni v nekterych tech starsich normach (nevim ted presne kdy se to objevilo).Problémem ale není "kde" je, ale že tam nemusí být. Je to typ, který existuje jen tehdy, existuje-li nějaký typ, který má 8 bitů. To sice většinou splňuje typ char, ale né vždy, vůbec nemusí mít 8 bitů. Navzdory tomu, typ uint_least8_t tam bude vždy. Buď bude na té "vyvolené" platformě stejný jako uint8_t, nebo na "nevyvolené" platformě jako něco většího. tj. všude tam, kde používám uint8_t, mohu bezbolestně použít uint_least8_t a jako bonus dostanu přenositelnost na platformy, kde uint8_t neexistuje. Není tedy důvod nepoužívat uint_least8_t, snad jenom lenost psát o 6 písmenek víc, k tomu pak poslouží nějakej typedef. Na "nevyvolených" platformách je taky použít nějaké bitové masky, protože bagr, ale na těch vyvolených budou neblbým kompilátorem optimalizovány, není tedy důvod je nepoužívat a udělat svůj kód portabilní.
__attribute__((packed)) a typy o vhodné bitovosti, nebo to celé číst hezky po bytech (popř. celou strukturu brát jen jako pole bytů a přistupovat ke všemu přes definované ofsety), což vede k mnohem nepřehlednějšímu (a, alespoň z mojeho pohledu, ošlivějšímu) kódu. A i pokud je rozdílná endianita, tak považuju stále jako lepší řešení strukturu bez paddingu a konverzi na nativní formát při prvním použití (skrz makra, která v případě nepotřebností zůstanou prázná) než ručně prohazovat jednotlivé byty podle ofsetu nastavených dle vzájemné endianity. Mimo toho, to, jestli je atribut opravdu podporovaný, jde zjistit už během překladu zkontrolováním velikosti testovací struktury.
char (který není zarovnávaný) a hned za něj ukazatel (který je zarovnávaný na adresu násobku čtyř nebo osmi bytů), tak pokud je padding vypnutý, bude velikost struktury (skrz sizeof()) stejná jako velikost jejích komponent (tj. 5B u 32bit, 9B u 64bit ukazatelů), pokud ne, tak bude větší (8B u 32, 16B u 64bit ukazatelů).
Jediná nevýhoda je, že to nejde použít přímo (protože preprocesor v C neumí vyčíslit sizeof()), takže pokud se nepopužije něco jako Autoconf (který si to umí zkontrolvat sám), tak se buď prvně musí otestovat velikosti struktur nějakým prográmkem (jehož přeložení a spuštění se dá jako první prerekvizitiva v Makefile), nebo si to program musí zkontrolovat při spuštění např. přes assert(). Viz příklad:
#include <stdio.h>
typedef struct
{
char c;
char *p;
} NORMAL_STRUCT;
typedef struct
{
char c;
char *p;
} __attribute__ ((packed)) PACKED_STRUCT;
int main(void)
{
char c;
char *p;
NORMAL_STRUCT normal;
PACKED_STRUCT packed;
printf("sizeof(): char %ldB, *char %ldB, normalni struktura %ldB, packovana struktura %ldB\n",
sizeof(c),sizeof(p),sizeof(normal),sizeof(packed));
if (sizeof(packed)==(sizeof(c)+sizeof(p)))
{
printf("__attribute__ ((packed)) podporovan, OK\n");
return(0);
}
else
{
printf("__attribute__ ((packed)) neni podporovan, pouzijte jiny prekladac\n");
return(1);
}
}
__attribute__ ((packed)) nebude třeba compile-time error, protože to neexistuje. Je pak sice jasné, že podporován není, problém je, že nelze třeba podmíněně na to zvolit jinou cestu, třeba přes "pomalejší" načítání prvku po prvku. Dá se to řešit nějakým autoconfem, nebo náhražkou v Makefile, jak říkáte, jenže to jsou spíše takové "hacky" z důvodu používání nestandardních "věcí". Otázkou je, jestli třeba stojí za to mít o pikosekundu rychlejší načítání ze souboru a pak o pikosekundu pomalejší přístupy k položkám struktury (třeba kvůli špatnému zarovnání), kterých může být třeba řádově více, ... no a nebo i pomalší, protože cache-miss, cokoliv. Já se prostě stavím za přístup použití co nejméně (nejlépe žádné) platformě/kompilátoru specifických věcích a držet se standardu (né však nějakých 20 let starých). Pokud to z nějakého důvodu (kromě lenosti či neznalosti) nelze, alespoň napsat komentář či něco někde do dokumentace, že tohle a támhleto protože tamto.
Ale ať si každý dělá, co chce, nakonec je to jejich volba. Já jen říkám své názory a nikomu je nevnucuju, i když to tak třeba vyzní.
printf("sizeof(): char %ldB, *char %ldB, normalni struktura %ldB, packovana struktura %ldB\n", sizeof(c),sizeof(p),sizeof(normal),sizeof(packed));Jinak pro tohle je tu formát
%zu, %ld je špatně
Použití uint8_t bych bral, kdyby v daném hlavičkovém souboru bylo třeba něco jako ...Tohle mi prijde vylozene jako pitomost. Protoze i kdyby uint8_t nebyl definovany, tak prekladac zahlasi chybu: "error: unknown type name `uint8_t'" a je zjevne, v cem je problem a clovek si to muze opravit. Zato chyba "unsupported platform" muze znamanat cokoliv a clovek musi nejdriv hledat.
Umim C, C++, mam rad narocnou low-level praci, mam zaklady z matiky, logiky a teoreticky informatiky - tedy umim to, co me skola naucila. Zajimaji me operacni systemy, spolehlivy systemy a efektivni reseni problemu. Jsem schopen venovat tolik casu jednomu problemu, dokud sam nejsem spokojen. Prispel jsem low-level user-space kodem do projektu HelenOS.Podle tohoto popisu by se pro tebe u nás našla hromada zajímavé práce. Platové podmínky bohužel sdělovat nemůžu. Zaprvé je u jiných pozic přesně neznám a zadruhé bych tak hrál proti vlastnímu zaměstnavateli. Nicméně za zkoušku nic nedáš. Taky bych ti ale doporučoval se vrhnout na magistra a dokončit ho. S prací není třeba nikam spěchat. Člověk si jí užije dalších 40 let.
zadruhé bych tak hrál proti vlastnímu zaměstnavateli.zajímavý eufemismus pro "podepsal jsem NDA, který mi to zakazuje" (popř. "podepsal jsem pracovní smlouvu s bianco šekem na NDA")
Tiskni
Sdílej: