Navigace se soukromím CoMaps postavena nad OpenStreetMap je nově k dispozici v Google Play, App Store i F-Droid. Jedná se o komunitní fork aplikace Organic Maps.
Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.49.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek i s náhledy obrazovek v oznámení o vydání.
Masivní výpadek elektrického proudu zasáhl velkou část České republiky. Hasiči vyjížděli k většímu počtu lidí uvězněných ve výtazích. Výpadek se týkal zejména severozápadu republiky, dotkl se také Prahy, Středočeského nebo Královéhradeckého kraje. Ochromen byl provoz pražské MHD, linky metra se už podařilo obnovit. Výpadek proudu postihl osm rozvoden přenosové soustavy, pět z nich je nyní opět v provozu. Příčina problémů je však stále neznámá. Po 16. hodině zasedne Ústřední krizový štáb.
Po více než roce vývoje od vydání verze 5.40 byla vydána nová stabilní verze 5.42 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 64 vývojářů. Změněno bylo přibližně 280 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.
Byla vydána nová stabilní verze 7.5 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 138. Přehled novinek i s náhledy v příspěvku na blogu.
Sniffnet je multiplatformní aplikace pro sledování internetového provozu. Ke stažení pro Windows, macOS i Linux. Jedná se o open source software. Zdrojové kódy v programovacím jazyce Rust jsou k dispozici na GitHubu. Vývoj je finančně podporován NLnet Foundation.
Byl vydán Debian Installer Trixie RC 2, tj. druhá RC verze instalátoru Debianu 13 s kódovým názvem Trixie.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za červen (YouTube).
Libreboot (Wikipedie) – svobodný firmware nahrazující proprietární BIOSy, distribuce Corebootu s pravidly pro proprietární bloby – byl vydán ve verzi 25.06 "Luminous Lemon". Přidána byla podpora desek Acer Q45T-AM a Dell Precision T1700 SFF a MT. Současně byl ve verzi 25.06 "Onerous Olive" vydán také Canoeboot, tj. fork Librebootu s ještě přísnějšími pravidly.
Licence GNU GPLv3 o víkendu oslavila 18 let. Oficiálně vyšla 29. června 2007. Při té příležitosti Richard E. Fontana a Bradley M. Kuhn restartovali, oživili a znovu spustili projekt Copyleft-Next s cílem prodiskutovat a navrhnout novou licenci.
Kolik by jste nabidli absolventovi MFF UK na pozici programatora v C++? Taky zvazuji kombinovane magisterske studium. Co v takovem pripade? Diky za rady! :) A prosim, pouze reakce k tematu.
Update: 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.
Update2: Zeptam se jinak: jake jsou nastupnicke platy pro programatory v C++? Nechtel jsem primo zhodnotit me, ale nejak uvest v obraz...
Update3: Tak tady mate ukazku meho kodu v C. Je to knihovna pro zpracovani GPT labelu. libgpt
Tiskni
Sdílej:
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.
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")