Dle plánu certifikační autorita Let's Encrypt nově vydává také certifikáty s šestidenní platností (160 hodin) s možností vystavit je na IP adresu.
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.
Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.
Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.
Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
g++ pošle do nekonečné rekurze.
template<class T> struct S { S<T*> operator ->(); };
S<int> i, j = i->();
Říkal jsem si: blbost, C++ přece není TAK pitomý jazyk, vždyť pro rekurzi v templates má ISO standartem předepsané nějaké limity právě aby se vyhnuli možnosti zacyklení při překladu. Kdepak, zkusil jsem a fakt si na tom g++ (aspoň to z gcc 4.1.1) vyláme zuby: sebere 100% CPU, a pomalu požírá swap... C++ překladač sice (úmyslně) není Turing-complete, to mu ale v zacyklení zjevně nijak nepřekáží
. Jo a programátorská varice na "až budou padat trakaře" na poslední stránce taky pobavila.
A co vy? Programujete v C++? Dobrovolně? A jak se daří vašemu mozkovému nádoru?
Tiskni
Sdílej:
- Exceptions in constructor don’t unwind the constructor itself
- Does not even clean up local variables!
- Must do own cleanup
- OTOH: no other way to return failure, constructors are void
Od pitomostí typu, že napíšu prasácký kód, který se nedá číst (což jde v jakémkoli jazyce)To neni pravda, v brainfucku to nejde.
Neobjektovost jako výhoda? Chápu, že ne každý ocení výhodu objektového programování, ale jak může být možnost používat objekty nevýhodou?
{
SomeStructure a;
SomeStructureInit(&a);
SomeStructureDoSomething(&a);
SomeStructureDestroy(&a);
}
C++ varianta:
{
SomeStructure a;
a.doSomething();
}
C++ varianta pro lepsi kontrolu:
{
SomeStructure a;
a.init();
a.doSomething();
a.destroy();
}
Vygenerovany kod prekladacem bude totozny. Obe C++ varianty jsou jednoznacne prehlednejsi, z kodu mizi zbytecne prefixovani funkci, ktere dela kod spis necitelnym.

)
/usr/include/python2.4/object.h je krásně čitelný. Sdílené atributy objektů vytvářené pomocí #define PyObject_HEAD, polymorfismus přes ukazatel na struct _typeobject. Všechny výhody C++ lze mít C také, a to bez problémů které C++ přináší, ergo C++ žádné výhody nemá. Vy opravdu expanzi makra uvnitř struct-u považujete za orgie? Vaše manželka se pravděpodobně dosti nudí.
1) Proč se domníváte že řádek kódu, který obsahuje VÍCE informací, je méně čitelný?Protože neobsahuje VÍCE informací
To prefixování v C++ nemizí, v globálních symbolech zůstává, pouze se podobně jako komunista v epicentru jaderného výbuchu proměňuje na paprsky gamma a škodí dálPokud Vám to tak vadí, tak ty metody můžou být inline a odkazovat na extern "C" funkce (třeba pro volání z asm kódu). Reaguji pozdě,,,já vím:)
není objektové
Což je právě ta vada 
Jinak s C++ teď začínám. Na jednu stranu je to zajímavé, ale na druhou stranu psát v Javě je mnohem příjemnější.
C++ je oproti D naprostý humus.
C++ překladač sice (úmyslně) není Turing-complete.A Zeme je placata. Neumyslne.
?
- C preprocessor umi smycky (cykly).
$ cat factorial.h #if (N <= 1) 1 #else N * #define N2 (N-1) #undef N #define N N2 #include "factorial.h" #endifCPP má lazy expanzi maker, takže na 6. řádku se do N2 uloží vždy stejný výraz, N se neexpanduje. Možná je na to nějaký hack, jak si expanzi v #define řádku vynutit, ale neznám ho.
// tohle je obechcavka, nevim presne na co #define CAT(a, b) a##b #define COND_0 a #define COND_1 b #define COND CAT(COND_, RIDICI) //pouziti: #define RIDICI 0 COND // melo by byt a #define RIDICI 1 COND // ted zas bMyslim, ze cykly by sly nejak podobne, ale uz tohle ukazuje jak se da v preprocesoru programovat. Pokud by vas to vic zajimalo, doporucuju zdrojaky z Boost preprocessor library, je to pekny poctenicko
VAROVANI: Tohle, kdyz jsem to programoval, me zpusobilo boleni hlavy jeste dalsi den.
error: #include nested too deeply. U gcc je limit natvrdo po 200 zanořeních (právě vyzkoušeno).
3) Nojo, v tomhle máte pravdu. Jenže Pentium může adresovat paměti (externí) kolik chce, kdežto C++ zdroják může templaty nořit jen jak mu překladač dovolí.
ja problem vidim tam, ze po operaci prirazeni nemate zarucene, co je v obou objektech, aniz byste vedel co je v trideCo? Jak nemám zaručené?
operatory bitoveho posunu jsou naraz operatory vstupu a vystupNejsou. To, že to tak nějaká konkrétní třída dělá, to je jiná věc. A navíc mi neříkejte, že vás to opravdu mate - tohle je věc jasná na první pohled.
neco << 5;Kdo by dělal něco takového, když by šlo o bitový posun? Tam by přece vždycky bylo přiřazení nebo
<<=.
a = b vite, co bude v obou objektech... aniz byste vedel jak je operator deklarovany ve tride. btw. ona je jeste sranda, ze v nekterem pripade (ted presne si nevzpominam kterem) se pouzije kopirovaci konstruktor... ale kdyz se vam takovy jazyk libi... dobre vam tak...
operatory bitoveho posunu jsou naraz operatory vstupu a vystup. Nejsou. To, že to tak nějaká konkrétní třída dělá, to je jiná věc. tak jsou nebo nejsou? s takovou tu budeme cyklit jeste dlouho. btw. dokaze me nekdo vysvetlit, proc se nepouzivaji normalni metody, jako v jinych jazycih?
assign(a, b);, a.assign(b);, a = b.clone();, nebo a = clone b; to jasne je?
const. A na všetko ostatné tu zas isté múdre hlavy vymysleli dokumentáciu.
nerikejte ze po provedeni a = b vite, co bude v obou objektech... aniz byste vedel jak je operator deklarovany ve tride.Co je to za blbou úvahu - tak snad mám rozum a vím, co dělám. Hodnota objektu b by neměla být ovlivněna a podle nějaké logiky se dá vydedukovat, že bude hodnota z b okopírována do a. To už se vás můžu ptát, jestli víte, co udělá tohle:
a.write(b)A jakou záruku, že to udělá skutečně to, co chcete, máte bez prozkoumání zdrojáku té metody?
tak jsou nebo nejsou? s takovou tu budeme cyklit jeste dlouho. btw. dokaze me nekdo vysvetlit, proc se nepouzivaji normalni metody, jako v jinych jazycih?Smím se zeptat, jak dobře C++ znáte? Jestli vám osobně vadí <<, tak klidně použijte nějaký .write(). Snad každý operátor se dá přetížit k jakémukoliv účelu. Zda << na číslech funguje jako bitový posun je naprosto irelevantní - hlavně že není problém chápat, co to udělá u té konkrétní třídy.
Přesně tak. To už bychom za chvíli mohli tvrdit, že je C++ špatně navržený jazyk, protože nám dovolí napsat
inline void add_one(int& x)
{
x--;
}
Jen je pak otázka, který jazyk je pak navržený dobře…
add_one(x) ->
x - 1.
badarith). Vy jste ho nezkompiloval a nevyzkoušel. Co to na mě zkoušíte?
Ale zkousel jsem si to zkompilovat. Jenze se mi pri kopirovani do formulare nekde cestou ponizila X. Pardon.
Nicmene, pokud mi neco neuniklo, tak pointa tohoto vlakne je, ze nemuzete nabyt naproste jistoty co se ve skutecnosti bude dit pouze ze jmena operatoru, ale ani funkce nebo metody. A erlang tento problem neresi.
a = b;tak si nikdy nemůžu být jistý, že v
b je na konci to samé jako na začátku. Což je v principu stejný problém jako když napíšub = 1; a = add_one(b);a v b není jednička. To je pak radost takový kód číst. V erlangu můžu napsat
B = (foo, [bar, baz, (1,2,3)], foofoo), A = any_fuckin_function(B)a mám vždy jistotu, že v
B je stále (foo, [bar, baz, (1,2,3)], foofoo) aniž bych se do té funkce musel podívat.
const?
Reference je vlastne ukazatel a je logicke, ze muze funkce menit jeho obsah. I to const se da obejit a nekdy je to nutne, ale to uz neni chyba jazyka.
const je úplně v jiné části kódu, v úplně jiném souboru a kdo ví co ještě a jak sám píšete, dá se to obejít. Takže nejen, že se musím kouknout kdo ví kam, ale dokonce mi ani nestačí přečíst si definici funkce, ale dokonce musím analyzovat její kód, jestli to náhodou někdo neobchází. Fakt moc príma. No a krom toho s každou novou verzí, abych to dělal znova a znova, protože to prostě jde. Taková blbost. Koho to jen mohlo jen napadnout umožnit modifikovat parametry funkce, nebo obsah reference ...
int b = 1; int a = add_one ( (const int) b);v prípade, že neverím funkcii add_one ? (dtto s priradením) ?
to je to isté, ako viacnásobné dedenie. robí problémy, málokto ho používa, a kto tomu nerozumie, ten ma názor davu.
a čo takTo mám psát pokaždé znova a znova? To je fakt řešení, nemám si rovnou dát nohu za krk?int b = 1; int a = add_one ( (const int) b);v prípade, že neverím funkcii add_one ? (dtto s priradením) ?

samozrejme, že nie. V C++ by jeden použil šablóny, v C makrá.
#define add_one_wrapper(b) (add_one ( (const int) b))ale nevravíme každý o tom istom. Toto je riešenie situácie, keď človek neverí
add_one a ani nič o nej nevie. Normálni programátori ale podľa mňa to slovíčko const vkladajú do deklarácie funkcií/metód zo slušnosti hneď.
Uf. No jestli je pointou toto, tak nechapu proc do toho Deda Jablko na zacatku zamotal operator= a proc vy jste se chytil zrovna na referencich. Odstratenim zadneho z obou prvku sveho vysneneho cile nedosahnete.
Ale k podstatnejsi vec: pokud vam na c++ vadi tohle, tak jste tragickym zpusobem nepochopil za jakym ucelem byl navrzen, k cemu je urcen a jaka je jeho filozofie. Ze si s c++ muzete ustrelite nohu raz dva, to vam nikdo nevyvraci, zalezi jen na vas, jestli napr. vsechny parametry vsech funkci budete brat referenci, uvnitr je sestkrat "precastujete" a nahodne v nich invertujete nekolik bitu. Existuji lide, kteri jsou takovemu nutkani schopni odolat a v tomhle smeru nemaji s c++ zadny problem.
Podobnym stezovanim se pak radite k trotlum, kteri se navazeji do lispu kvuli zavorkam, makrum (jak neprehledne a matouci!) a funkcionalnimu programovani (== nema objekty!!!), nebo do erlangu, ze ma dementni syntaxi, nema normalni promenne, pouziva posilani zprav (proto zakonite musi byt 1000krat pomalejsi nez jakykoliv ne-zpravy posilajici, ne-vsechno kopirujici jazyk), ... urcite to znate. Vy jste stejny, akorat sedite o dva zakopy vedle.
... ne-vsechno kopirujici jazyk ...Netušíte jak to funguje.
Jak se v Lispu udělá obdoba DNU? Tedy vlastně úplné zapouzdření.
a.write(b) nema zadne defaultni chovani, proto cloveka nevydesi, kdyz to nekdo implementuje po svem...
c++ znam myslim si, ze dobre, abych vedel, ze je to jazyk, ktery nevi co chce... (stejne jako c# 3.0) ... proste se kolem C naskladala hromada featur bez ladu a skladu a hlubsi koncepce... c++ vam dava dostatecne dlouhe lano a delejte si s nim co chcete... klidne se na nem muzete obesit...
obrat a.write(b) nema zadne defaultni chovani, proto cloveka nevydesi, kdyz to nekdo implementuje po svem...Zdá se mi to, nebo vám doopravdy vadí, že vám jazyk umožňuje udělat něco po svém?
c++ vam dava dostatecne dlouhe lano a delejte si s nim co chcete... klidne se na nem muzete obesit...A to mi na něm přesně vyhovuje. Nepořebuju, aby mi autoři jazyka diktovali, jak mám něco dělat - to vím sám.
Ano, já taky nechápu, proč spousta lidí obhajuje to, že mi jazyk má diktovat jak mám něco dělat. A proč to má být tak úžasná výhoda. Jestli jim to tak vyhovuje, tak ať si takový jazyk najdou. Jsem rád a miluju doslova tu volnost, kterou mi C++ dává - a kdy si můžu vybrat efektivní cestu k řešení problému a pokud vím co dělám, C++ mi vždy vyjde vstříc. Kdo umí psát básně, má rád bohatý jazyk s velkými výrazovými prostředky. Kdo skončil u slabikáře a dál se nedostane, nechť si vybere chudý jazyk, který ho povede.
c++ vam dava dostatecne dlouhe lano a delejte si s nim co chcete... klidne se na nem muzete obesit...
Podle mých zkušeností jazyky, které vám nedají dost lana na oběšení, vám nedají dost lana ani na spoustu užitečných činností, takže mám raději ty, které mi ho dají dost na oboje a způsob použití nechají na mém uvážení. A to se netýká jen jazyků, ale třeba i operačních systémů. A to říkám jako člověk, který si před pár hodinami spílal do hlav skopových poté, co v příkazu 'init q' místo kvéčka ze zvyku napsal jedničku… :-)
boost::spirito.i. i pekný príklad zmysluplného overloadovania operátorov