V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevili v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
V Seattlu a také online probíhá konference Microsoft Build 2025. Microsoft představuje své novinky. Windows Subsystem for Linux je nově open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Z příspěvku Turris Sentinel – co přinesl rok 2024 na blogu CZ.NIC: "Za poslední rok (únor 2024 – únor 2025) jsme zachytili 8,3 miliardy incidentů a to z 232 zemí a z jejich závislých území. Tyto útoky přišly od 6,2 milionu útočníků (respektive unikátních adres). SMTP minipot je stále nejlákavější pastí, zhruba 79 % útoků bylo směřováno na tento minipot, 16 % útoků směřovalo na minipot Telnet, 3 % útoků směřovaly na minipot HTTP a 2 % na minipot FTP. Dále jsme zaznamenali 3,2 milionu unikátních hesel a 318 tisíc unikátních loginů, které útočníci zkoušeli."
Byla vydána (Mastodon, 𝕏) nová verze 3.0.4 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Byla vydána nová stabilní verze 7.4 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 136. Přehled novinek i s náhledy v příspěvku na blogu.
Spolek vpsFree.cz vydal statistiky týkající se distribucí nasazených na serverech členů. V dlouhodobém pohledu je zřejmé, že většina uživatelů z původního CentOS přechází na Rocky Linux. Pozoruhodný je také nárůst obliby distribuce NixOS, která dnes zaujímá třetí místo po Debianu a Ubuntu.
Autor tohoto blogu, Mgr. Šimon Tóth v současné době působí jako výzkumný pracovník ve společnosti Cesnet z.s.p.o. a dlouhodobě vede pokročilá a speciální cvičení jazyků C a C++ na Fakultě informatiky MU.
linkedinRozjeli se tady docela pěkné flamy o C++ (1, 2), čehož využívám a oznamuji zpřístupnění mojí online C++ učebnice. Ty, kteří čekali nějakou charitu rovnou zklamu, jde o placený přístup.
Konkrétně jde o spuštění fáze early access, ve které je učebnice dostupná za čtvrtinovou cenu (500KČ) a všichni platící i neplatící (pár VIP + studenti speciálních cvičení předmětu PB161 na FI@MU) si můžou prodloužit přístup zasláním připomínek.
Přístup je časově omezen (1 rok), nicméně je v něm zahrnuta emailová podpora (samozřejmě pouze týkající se obsahu učebnice). Veškeré budoucí updaty učebnice jsou samozřejmě v ceně přístupu.
Pokud vás to zaujalo, tak detaily (včetně postupu objednání) naleznete na stránce http://www.simontoth.cz/cs/ucebnice-cpp-early-access a http://www.simontoth.cz/cs/ucebnice-cpp.
EDIT 4.11. 01:35 - zpřístupnil jsem tři stránky z učebnice a trochu překopal informace. Levnější variantu bez podpory stále zvažuji.
Tiskni
Sdílej:
Uvedené pojmenování jednotlivých sekcí sice odpovídá typickému použití for cyklu, nicméně jazyk C++ pouze vyžaduje, aby všechny sekce obsahovaly korektní výrazy.Jako né že by tomu nebylo rozumět (zvlášť se ví, co se chce říct), ale člověk s červenou tužkou by ti k tomu nejspíš tu vlnovku přikreslil. A méně reklamštiny
Program "early access" je náš způsob, jak odměnit zákazníky, kteří jsou ochotni koupit si nový produkt, jak vylepšit samotný produkt pomocí zpětné vazby od zákazníků a jak zákazníky za tuto zpětnou vazbu odměnit.
Já jsem se bohužel na stránkách k ukázkám nedostal. Nicméně, třeba to autor dotáhne. Mě už je to jednom já po více, než 15 leté praxi v C++ tohle nepotřebuji.
Nicméně ohledně placené podpory C/C++ mě to samotného napadlo jako podnikání, ale nezrealizoval jsem to. Právě proto, že na většinu otázek Vám odpoví zadarmo na fórech, a tak by za mnou chodili lidé jen s těmi nejhoršími a najnáročnějšími - tzn. podpora by musela být hodně drahá, aby odrážela know how, které nabízím.
Mimochodem, každé, kdo mi řekne, že umí C++ na 100% (což umí naprosto minimální počet lidí, většina z nich používá tak 1-2% z možností C++) zkouším takto. Mám následující zdroják:
static const int cislo = 30; static const int cislo_faktorial = ?
A chci po něm, aby do konstanty cislo_faktorial doplnil faktoriál konstanty cislo. Samozřejmě to musí fungovat tak, aby při změně hodnoty konstanty cislo kompilátor správně spočítal její faktoriál a dosadil ho jako konstantu do cislo_faktorial. Tedy jinak řečeno, faktoriál musí vypočítat kompilátor C++ při kompilaci. C++ to v pohodě umí. Pokud to zvládnete, můžete si říci, že se pohybujete v nadprůměrných znalostech C++.
Ten, kdo nezvládne výše uvedený příklad, je v začátečnické úrovni C++ a používá nepatrný zlomeček jeho možností.
static const int cislo = 10; static const long cislo_faktorial = long(fak(cislo));kde fak je funkce, co pocita faktorial. Nebo jsem to nepochopil a ta obtiznost mela byt v tom, ze to ma byt int a faktorila 30 je mimo rozsah intu?
Tohle ti ale rozhodně nespočítá ten faktoriál při kompilaci...
To že počítat s "běžným integerem" faktoriál 30 je dost ošemetná záležitost a někdo s 15 letou praxí v C++ by to rozhodně měl vědět je už jiná věc...
A hlavně lidi co ve skutečném kódu použijou něco takového bych normálně bez soudu střílel.
v 98 procentech případů napíšou čitelnější a udržovatelnější kódJenomze nefunkcni. To jestli je hodnota spocitana v dobe kompilace nebo v dobe behu ma dusledky v tom kde takovou hodnotu muzeme pouzit.
Nevylučuju samozřejmě, že dobře mířená templata sem tam může podstatně zkrátit zdroják a příliš nezhoršit čitelnost. Zatím jsem ovšem nic podobného neviděla - přijde mi spíš, že to lidi používají, aby všichni viděli, jak jsou cool, když už si dali tu práci se to naučit. Něco podobného se dá potkat snad jen mezi lidmi, co zrovna objevují perl...Ocekavat, ze budete znat neco jako navrh zalozeny na zasadach je asi moc, ze? Nebo friend injection? Obavam se ze mate velmi, velmi omezene obzory.
Lidi, co dělají podobné věci, by měli jít povinně dělat na pár měsíců to, co já - číst kód ostatních a lovit v něm bugy. Pak by je nic podobného už nikdy ani nenapadlo.Ale napadlo. Bugy lovim porad. Proc se omezovat kvuli lidem, kteri se nechteji jazyk naucit?
Jenomze nefunkcni. To jestli je hodnota spocitana v dobe kompilace nebo v dobe behu ma dusledky v tom kde takovou hodnotu muzeme pouzit.To je pravda. Ale počítat nějakou hodnotu zběsilými šablonovými konstrukcemi jenom proto, aby byla spočítaná už v době kompilace, je prakticky vždy naprostá oslovina. (Mimochodem, ona by asi stejně dobře šla spočítat i Céčkovým preprocesorem, ale to ještě neznamená, že by to lidé měli běžně používat.)
Ocekavat, ze budete znat neco jako navrh zalozeny na zasadach je asi moc, ze? Nebo friend injection? Obavam se ze mate velmi, velmi omezene obzory.Někdy je lepší mít omezené obzory a umět programovat, než znát kdejaký buzzword a přitom psát jako podsvinče. Ostatně, pokud chcete hodnotit něčí obzory, pochlubte se něčím, co jste sám napsal, ať víme, jak si vážit obzoru vašeho
Někdy je lepší mít omezené obzory a umět programovat, než znát kdejaký buzzword a přitom psát jako podsvinče. Ostatně, pokud chcete hodnotit něčí obzory, pochlubte se něčím, co jste sám napsal, ať víme, jak si vážit obzoru vašehoProhlasit jednu z nejdulezitejsich navrhovych technik za buzzword, to chce fakt odvahu. Jak tak koukam, tak zverejnenou mam jenom diplomku http://www.is.muni.cz/th/73027/fi_m_a2.
Prohlasit jednu z nejdulezitejsich navrhovych technik za buzzword, to chce fakt odvahu.Techniku samu o sobě nesoudím. Ale málokdo z lidí, o kterých si myslím, že opravdu umí navrhovat software, cítí potřebu z takových věcí dělat vědu a vymýšlet pro ně jména. Kdo vládne zdravým analytickým myšlením, pro toho jsou slavné návrhové techniky obvykle trivialitou a často také jenom trikem na obelstění nedokonalosti jazyka.
Jak tak koukam, tak zverejnenou mam jenom diplomku http://www.is.muni.cz/th/73027/fi_m_a2.Není to špatné, ale houština templatů tam místy přerůstá až do hodně pichlavého ostružiní
struct A { int metoda() {} }; struct B { int x; } template < typename X > struct C : private X { int cislo() { return X::x; } int vypocet() { return X::metoda(); } }; C<A> a; a.vypocet(); // OK no problem C<B> b; b.cislo(); // OK no problemZ ostatnich je to napriklad moznost provadet v dobe kompilace dost sofistikovane kontroly kompatibility. Treba dokazu zkontrolovat zda parametr, ktery jsem predal do sablony se da v te sablone opravdu pouzit (nemluvim ted primo o konceptech [Boost a C++0x], ale to je jedno z pouziti). Taky holt v preprocesoru nejde napsat vsechno, resp. jde, nicmene makra jsou sice Turing complete, ale jsou Turing complete nezamerne. Sablony jsou Turing complete (implementace kvuli nekonecnemu cykleni nejsou) zamerne. Pokud do sablony dam spatny parametr, tak si postezuje kompilator, ze dany parametr je cislo a sablona ocekava typ, nebo naopak, nebo mi srozumitelne rekne ze tam syntaktickou chybu (zavorka navic a podobne). U maker si holt musim vytrpet des a hruzu, protoze to vypise naprosto nesmyslne chyby.
V čem se neshodujeme, je, zda explicitní typové kontroly v čase kompilace (které zdaleka ne vždy končí smysluplnou chybovou hláškou) jsou dostatečnou výhodou, aby vyvážily jinak zbytečnou větší spletitost šablonového kódu.Zodpovědností programátora, který píše šablonový kód je zajistit konzistenci a smysluplnost těchto chybových hlášení.
Ostatně, jak preprocesor, tak šablony jsou jen velmi chabé náhražky za opravdové vyhodnocování v čase kompilace. Modernější jazyky (Scheme, Perl, Haskell) jsou samozřejmě preprocesorem samy sobě, a to do libovolné úrovně vnoření.O tom se nemá cenu přít
string s = "sqrt"; s(12.3);
), nebo sebe modifikující kód.
Jinak myslím, že když poprvé do C++ šablony přidali, nikdo neplánoval, že mají být turingovsky úplné.To rozhodně, nicméně při tvorbě ANSI se už vědělo že se budou šablony k metaprogramování používat a taky se s tím počítalo.
Jenomze nefunkcni. To jestli je hodnota spocitana v dobe kompilace nebo v dobe behu ma dusledky v tom kde takovou hodnotu muzeme pouzit.
No nevim, my obyčejní pojídači koláčků s omezenými obzory si prostě takové konstanty spočítáme "ručně" a do zdrojáku zapíšeme jako "obyčejné číslo". Kromě toho, že je to nesrovnatelně přehlednější než nějaká "2% templatová magie" to má ještě tu výhodu, že si při tom člověk zcela jistě všimne, jak obrovské to číslo vlastně je. Na rozdíl od "nevinné" 30 megaborce s rozhledem...
Ale napadlo. Bugy lovim porad. Proc se omezovat kvuli lidem, kteri se nechteji jazyk naucit?
Tak tohle je super přístup, tvoji kolegové, co to po tobě musej potom luštit tě určitě milujou... Jestli je v podobnym duchu psaná i ta učebnice, tak jsem rád, že je za dva litry a nikdo si jí nekoupí.
No nevim, my obyčejní pojídači koláčků s omezenými obzory si prostě takové konstanty spočítáme "ručně" a do zdrojáku zapíšeme jako "obyčejné číslo". Kromě toho, že je to nesrovnatelně přehlednější než nějaká "2% templatová magie" to má ještě tu výhodu, že si při tom člověk zcela jistě všimne, jak obrovské to číslo vlastně je. Na rozdíl od "nevinné" 30 megaborce s rozhledem...Pokud jde spocitat rucne tak vetsinou clovek nepotrebuje sablony ale spocita mu to kompilator sam, ze? Treba long int x = 1*2*3*4*5*6;
Tak tohle je super přístup, tvoji kolegové, co to po tobě musej potom luštit tě určitě milujou... Jestli je v podobnym duchu psaná i ta učebnice, tak jsem rád, že je za dva litry a nikdo si jí nekoupí.Njn, mozna se vyskytuji v casoprostorove anomalii, nebo je to mozna necim jinym, ale moji kolegove a take vsichni lide, ktere znam nemaji se sablonami vubec zadny problem. Nebo je taky mozne, ze se v zadne anomalii nenachazim a vy jste proste moc velky pitomec na to aby jste se C++ naucil.
Pokud jde spocitat rucne tak vetsinou clovek nepotrebuje sablony ale spocita mu to kompilator sam, ze? Treba long int x = 1*2*3*4*5*6;
Jsem rád, že jsi k tomu, co tady celou dobu tvrdim nakonec taky došel.
Njn, mozna se vyskytuji v casoprostorove anomalii, nebo je to mozna necim jinym, ale moji kolegove a take vsichni lide, ktere znam nemaji se sablonami vubec zadny problem. Nebo je taky mozne, ze se v zadne anomalii nenachazim a vy jste proste moc velky pitomec na to aby jste se C++ naucil.
Pokuď budeš psát i učebnici "diskuze na internetu", tak mám zájem. Ukázat na základě mého tvrzení, že psát kód bez ohledu na to, že by jej někdo v budoucnu taky mohl potřebovat číst není nejšťastnější nápad, že jsem pitomec, kterej není schopnej se naučit šablony v C++, to už značí poměrně pokročilé schopnosti v této oblasti...
Jsem rád, že jsi k tomu, co tady celou dobu tvrdim nakonec taky došel.A k cemu jako? Ze kdyz je x pevne dane, tak muzu napsat do kodu jednoduche a citelne vyjadreni x! a kdyz neni x pevne dane, tak musim pouzit sablony (nebo preprocessor, nebo cokoliv, co mi tam tu hodnotu doda pred tim nez se mi ten zdrojak zacne kompilovat)?
že by jej někdo v budoucnu taky mohl potřebovat čístHmm, takze nebudeme pozivat sablony, protoze jsou lide co je neznaji a ti by tomu pak nerozumeli. Taky radeji nebudeme programovat v C++ protoze jsou lide, kteri umi jenom Cecko a ti by tomu pak nerozumeli. No a urcite se najdou i taci co neumi ani Cecko, tak radeji Assembler, ten uz prece dnes neumi vubec nikdo. Tak si radsi sedneme a budeme se na sebe hezky usmivat. Jo, jste pitomec
Proc to berete do extremu?Protože si naivně myslí, že trapný pokus o důkaz sporem může mít mezi inteligentními diskutujícími váhu, i když jde o dávno známý logický klam
A IMHO pouzivat sablony na pocitani faktorialu je prasarna.Proc by to mela byt prasarna? Je to typove bezpecne (coz makra nejsou) je to soucasti kodu (coz zase nejsou veci stylu make), diky cemuz mi nehrozi de-synchronizace (uprava pouze na jednom miste). Citelne to porad je (protoze zadne principy se nemeni ani syntax se nemeni). Uzivatelsky je to stejne privetive jako cokoliv jineho v jazyku
faktorial<4>::hodnota
.
Samozrejme pokud clovek nevi, jak funguji makra tak to nedekoduje nikdy. Coz je ale presne ten problem na ktery jsem narazel. Pak muzu taky tvrdit, ze cely Prolog je nanic a nemelo by se v nem nic psat, protoze pouziva velice podobny zpusob vyhodnocovani.
Uz jen proto, ze nevite, jestli se vam do daneho datoveho typu jeho hodnota vejde.No to prave v dobe kompilace vim a dokazu to velice jednoduse v te sablone osetrit. Na rozdil od pripadu kdy to napisu natvrdo do kodu (jelikoz se mi ta symbolicka konstanta nemusi vlezt do datoveho rozsahu daneho typu).
Chapu, ze treba tohle pro vas neni problem (dovolme si taky zajit trochu do extremu), me by se to ale udrzovat nechtelo:Uvedeny priklad je necitelny jenom proto, ze pouziva misto symbolickych nazvu ruzny pocet podtrzitek, ktere se spatne rozlisuji.
Tohle ti ale rozhodně nespočítá ten faktoriál při kompilaci...ja to tak trochu tusil
kdy se tedy ten vyraz vyhodnoti? (v dobe kompilace ma teoreticky vse potrebne k tomu, aby ho vyhodnitil...)<flamebait>To je holt tak: u moderních jazyků je makrojazyk roven jazyku samotnému, u prehistorických bazmeků potřebujete obezličky typu šablony
u moderních jazyků je makrojazyk roven jazyku samotnému, u prehistorických bazmeků potřebujete obezličky typu šablonyto se mi libi... i kdyz je tu s nami LISP uz padesat let, tak jej nekteri povazuji za moderni. ;-]
Ale na pokrokovosti trvámto delate dobre! ;-] i kdyz scheme je pokrokovejsi! a nasel bych jeste jeden uplne nejvic nejpokrokovejsi jazyk... ale jeho web jeste nefunguje, skoda. ;-]
Noo, já s tím Schemikem nějak nevím…ja bych to videl docela optimisticky... (nic jineho mi tak nejak nezbyva) ;-] ...ale nebude to asi zase takova hruza, uz je stejne rychle jak guile a dalsi uspechy jsou nalinkovane pred nami! hygienicke makra jsme zavrhli. jednak me prisly zbytecne slozite (ve srovnani s lispovyma) a taky jsem jim nikdy neprisel na chut. makra mame udelane v lispovem stylu s tim, ze jsou to elementy prvniho radu, takze dokonce to umi i anonymni makra. teda ne, ze bych to nekdy prakticky pouzil, ale je fajn vedet, ze to jde.
Ma to ale jeden ten hacek - nebudou z toho penize.Což je ale poměrně zásadní věc, když z toho peníze dostat chce, ne?
Druhým důležitým faktem je výběr datových typů. Pro načtení vstupu byl zvolen unsigned int, nicméně vzhledem k rozsahu čísel, pro které jsme schopni faktoriál počítat, můžeme klidně zvolit unsigned short int. Naopak, pro uložení hodnoty faktoriálu je v podstatě nutné použít unsigned long int, hodnota faktoriálu totiž roste velice rychle.
Můžu se zeptat, proč nabádáte k použití unsigned long int místo např. int? Pokud snad chci větší rozsah hodnot, než mi nabízí unsigned int (předpokládaje 32bit int), rozhodně nepoužiju long, u kterého je vysoká pravděpodobnost, že bude stejný jako int (32bit linux, 32bit windows, 64bit windows), a použiji nějaký "lepší datový typ".
unsigned int vstup; ... for (int i = vstup; ...Za tohle si nechat platit ... styděl bych se. Když už, tak si alespoň projděte. Je to stejná obludnost jako
int i = strlen(retezec)
, kde strlen vrací size_t.