Švýcarská AI centra EPFL, ETH Zurich a CSCS představila otevřený vícejazyčný velký jazykový model (LLM) s názvem Apertus. Vyzkoušet lze na stránce Public AI Inference Utility.
Byl vydán Linux Mint 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.
Čínská společnost Tencent uvolnila svůj AI model HunyuanWorld-Voyager pro generování videí 3D světů z jednoho obrázku a určené trajektorie kamery. Licence ale nedovoluje jeho používání na území Evropské unie, Spojeného království a Jižní Koreje.
Blender Studio se spojilo s kapelou OK Go a výsledkem je videoklip k písni Impulse Purchase. Stejně jako samotný 3D software Blender je i ve videoklipu použitý animovaný chlápek open source. Kdokoli si jej může stáhnout a upravovat.
Zig Software Foundation stojící za programovacím jazykem Zig publikovala finanční zprávu za rok 2024. Současně s prosbou o finanční příspěvek.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za srpen (YouTube). Vypíchnuta je podpora Tabulek Google, implementace Gamepad API a Cookie Store API nebo také podpora WebGL na Linuxu.
openSUSE Leap 16, včetně Leap Micra 6.2+, nově nabízí 24 měsíců podpory pro každé vydání. To je dva roky aktualizací a stability, což z něj činí nejdéle podporovanou komunitní distribuci vůbec. Leap se tak stává ideální platformou pro všechny, kdo hledají moderní, stabilní a dlouhodobě podporovanou komunitní Linux distribuci.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal dne 3. 9. 2025 VAROVÁNÍ před hrozbou v oblasti kybernetické bezpečnosti spočívající v předávání systémových a uživatelských dat do Čínské lidové republiky a ve vzdálené správě technických aktiv vykonávané z území Čínské lidové republiky. Varováním se musí zabývat povinné osoby podle zákona o kybernetické bezpečnosti.
Americká internetová společnost Google nemusí prodat svůj prohlížeč Chrome ani operační systém Android. Rozhodl o tom soud ve Washingtonu, který tak zamítl požadavek amerického ministerstva spravedlnosti. Soud ale firmě nařídil sdílet data s jinými podniky v zájmu posílení konkurence v oblasti internetového vyhledávání. Zároveň Googlu zakázal uzavírat dohody s výrobci mobilních a dalších zařízení, které by znemožňovaly
… více »Prvního září ozbrojení policisté zatkli na na londýnském letišti Heathrow scénáristu a režiséra Grahama Linehana, známého především komediálními seriály Ajťáci, Otec Ted nebo Black Books. Během výslechu měl 57letý Graham nebezpečně zvýšený krevní tlak až na samou hranici mrtvice a proto byl z policejní stanice převezen do nemocnice. Důvodem zatčení bylo údajné podněcování násilí v jeho 'vtipných' příspěvcích na sociální síti
… více »-IC:\...
. open, creat, fopen, mkdir
a dalších, aby se snáze přenášely unixové programy. Ale WinAPI jsem nikdy do hloubky nezkoumal.
paskma@paskma:~/tmp/gladepok/two$ g++ simple.cpp -o simple `pkg-config gtkmm-2.4 --cflags --libs` --static
/usr/bin/ld: cannot find -lgtkmm-2.4
collect2: ld returned 1 exit status
Nevím, co je všechno v tvé windowsí instalaci Gtkmm, ale Gtk+ (bez devel) má cca těch 13 MB celé.Já mluvím o hotovém, slinkovaném EXE (pomocí VS.NET 2005).
A to, že Trolltech začal vyvíjet v programovacím jazyce C++ v době, kdy ten programovací jazyk ještě neměl žádný standard považuji za jeho blbost. Já bych to rozhodně u velkého projektu neudělal. Toť celé.
I C++ bez STL je pořád výkonnější, než plain C. Na 99% věcí stačí "C s třídami" - omezení viditelnosti, virtuální metody a sem tam jednoduchá dědičnost.
Tedy, abys mě netahal za slovíčka. Dobré kontejnery se hodí vždy, do je jasné. Ale i bez nich se to dá zkousnout, protože si je můžeš napsat. V C si je nenapíšeš, protože tam není zapouzdření.
První OO programovací jazyk s de jure standardem byla Ada95, to jen tak na okrajNe, to byl ANSI Common Lisp z roku 1994..
bcc
). Pokud k tomu dělal MS také lepší kód, byla asi spokojenost na místě.
GCC mi spadlo jenom jednou (3.4.0) u nějaké zprasené šablony.
(Ja snad jeste prestanu myslet na to, ze na me jde asi chripka. Tohle me zacina bavit a stejne nic lepsiho delat nemuzu.)
> [Vicemene nicnerikajici zblebt o C++ preprocesoru.]
...
> Opravdu si myslíte, že nelze naimplemetovat seznam properties bez standardních věcí C++? Já si to nemyslím.
No, tak tohle me presvedcilo, ted uz verim. Ne, moment, ja vlastne myslel spis "prijatelne jednoduse implementovat", ne jen "implementovat". Jako treba ze se nekam pripise jednoduchy radek, nebo tak neco.
> for_each se mě osobně velice líbí a nevím, co je na tom nepřehledného, nečitelného, komplikovaného, atd..
Kde zacit? Takze
- telo for_each je napsano nekde uplne jinde nez ten samotny for_each
- ten functor pro for_each je na nekolik radku, protoze to je struct, ktery obsahuje operator - viz. treba ten priklad z cppreference.com - pricitani jednicky na 5 radku???
- coz samo o sobe je odpoved na to, co je na tom komplikovaneho, necitelneho a narocneho
- pro cokoliv narocnejsiho clovek si bud ten functor pro for_each musi napsat sam, nebo musi pouzivat podivne konstrukce jako bind2nd
A nebo, proc rovnou ne priklad, nejake hypoteticke cokoliv, treba provedeni operace foo u vsech objektu, ktere ji potrebuji. V Qt pomoci foreach (nebo Q_FOREACH, jak kdo chce):
foreach( Object* object, objects ) if( object->needsFoo()) object->foo();Tak, ted STL, podle toho navodu na cppreference.com :
struct foo_if_needed : public unary_function<Object*, void> { void operator() (Object* object) { if( object->needsFoo()) object->foo(); } }; ... for_each( objects.begin(), objects.end(), foo_if_needed );
> A řešení, které je ve standardu C++ je zatím vždycky o několik tříd lepší > O tom jsem naprosto přesvědčen. Zatím vše, co je ve standardu C++, zejména kontejnery jsou podle mě daleko více na výši. Ale vzhledem k tomu, že jste nepodal žádný argument, nelze s Vámi o tom konstruktivně diskutovat.
(Mimochodem, dalsi hezky priklad toho, ze kdyby bylo nejhur, nekdo se tady vzdycky dokaze uzivit alespon v PR.)
Jako argument jsem uvedl treba to, ze Gtkmm pouziva vlastni tridu pro string, protoze tomu v STL (minimalne podle nich) chybi funcionalita. Schvalne jsem jenom citoval a schvalne jsem si vybral projekt, ktery je primo vysazeny na to, ze vsechno dela "spravne" podle C++. To, ze je tady nekdo ochotny se vsadit, ze to preci jen nekde v tom C++ je, je sice hezke, ale to je tak vsechno. Bud to tam tedy nekde je, ale Gtkmm vyvojari to tam, pres vsechnu jejich (docela bych hadal velkou) snahu nenasli a tak to asi nejde snadno najit, nebo to tam mozna je, ale nejde to v praxi vlastne snadno pouzit, no a nebo to tam neni. At uz je to jakkoliv, jestli si projekt jako Gtkmm nakonec udelal vlastni tridu pro string, neco s tou v C++ je spatne.
Pokud me moje vzpominky na hodiny matematiky a logiky ze skoly neklamou, na prokazani nepravdivosti tvrzeni "A řešení, které je ve standardu C++ je zatím vždycky o několik tříd lepší", tj. "plati pro vsechny", staci najit jeden priklad, kdy to neplati. Takze to bychom meli.
> No a co? Můžu Vám třeba prozradit sladké tajemství, že takové C++ třeba nepodporuje ani třeba octoniony, což je určitě hrozná vizitka pro standardní knihovnu C++.
Az to bude, treba jako v pripade utf8, na Linuxu pouzivat minimalne kazdy druhy, tak to tak nejspis bude.
> Mě by třeba zajímalo, kdy Qt knihovna opraví chybné zamykání objektů v mnoha třídách, zejména ve třídě QString. Když jsem se díval do zdrojáků Qt4, tak jsem zjistil, že pro multithredové programování to bude dělat bordel a Trolltech asi neumí programovat. Zajímavé je, že ve standardní knihovnách C++ je zamykání napsáno správně.
Jestli to nebude spis tak, ze nekdo asi neumi cist. V dokumetaci pro tridu QString je hned jako treti radek napsano, jak na tom QString ve vztahu k threadum je, dokonce tam je i link na podrobnejsi vysvetleni. Mozna bych mohl i vysvetlit, proc to je jak to je, ale neco mi rika, ze to uz mi za tu srandu nestoji. (Mimochodem, neda mi sem necitovat kousek shora: "Ale vzhledem k tomu, že jste nepodal žádný argument, nelze s Vámi o tom konstruktivně diskutovat.").
> Ale no tak. O tom Objective C to přímo píšou ve zdůvodnění, proč použili preprocessor. Najdete to přímo na webových stránkách Trolltechu.
Zase problem se ctenim. V tom dokumentu, proc pouzili moc (coz je ten dokument, ktery jsem drive linkoval), je slovo 'objective' jen dvakrat. V prvnim pripade se rika, ze staticke typy v C++ maji nektere nevyhody proti tomu vice dynamickemu systemu jako v Objective C. V druhem pripade se rika, ze moc dava Qt flexibilitu podobnou Objective C. Nikde se tam vubec nepise o tom, ze by TrollTech kdy premyslel o pouziti Objective C.
> Bohužel Trolltech by možná měl standard C++ trochu nastudovat, aby alespoň trochu zběžně poznal programovací jazyk, který používá.
No, ono ani ty "pseudoreseni", "zprzneni", "pokrytectvi" a podobne nenastavili latku nijak zvlast vysoko, ale tohle uz je dost ubohy. (Krom toho, spis to plati to lidi, kteri kritizuji neco, o cem vlastne nic nevi.)
moc
zpracuje hlavičkový soubor, který se pak spolu s výstupem z moc
a zdrojovým kódem, do nějž se vkládá, zpracuje dalším preprocesorem a překladačem.
a.cpp -> g++ -> a.o ---------- ^ | | v a.h -- #include ld ----> a.out | | ^ | v | -> moc -> a.moc.cpp -> g++ -> a.moc.o ---Tohle je normální použití moc. Zdrojový soubor se přeloží úplně normálně, bez jakéhokoliv preprocessingu. I a.h se použije úplně normálně, bez jakéhokoliv preprocessingu. Navíc se pomocí moc z a.h vygeneruje a.moc.cpp, který se normálně přeloží a slinkuje. Je tam naprosto evidentně vidět, že:
a.cpp -> g++ -> a.o ------ ld ----> a.out ^ ^ | | a.h -- #include ----- | | | | | v | -> moc -> a.moc -> #includeJe to optimalizace jen v tom, že se volá g++ jen jednou místo dvakrát, protože g++ je pomalé. Je to stejné, jako kdyby bylo a.cpp a b.cpp a místo překladu obou by a.cpp udělalo #include "b.cpp" a g++ by se volalo jen na a.cpp (a tím automaticky i na b.cpp). Nic to nemění na tom, že princip je ten obrázek nahoře a tam se moc jako preprocesor nechová. A kdyby ještě pořád s tím někdo měl náhodou problém, tak poradí Wikipedia: In computer science, a preprocessor is a program that takes source code and performs transformations on it, before the step of compilation or interpretation. Moc nedělá transformace a.h, a.h se používá přímo, bez moc. Stejně tak se a.cpp používá přímo, bez nějakého předchozího kroku.
for_each
hned na dva způsoby a ještě jednou totéž přímo přes itetátory:
#include <iostream> #include <vector> #include <cmath> using namespace std; template<typename T> void pohrajeme_si_s_vektorem_poprve(vector<T>& v) { for (typename vector<T>::iterator vi = v.begin(); vi != v.end(); vi++) { cout << "poprvé - " << *vi << endl; } } template<typename T> void vypis(T& t) { cout << "podruhé - " << t << endl; } template<typename T> void pohrajeme_si_s_vektorem_podruhe(vector<T>& v) { for_each(v.begin(), v.end(), vypis<T>); } template<typename T> class Cvypis { public: void operator()(T& t) { cout << "potřetí - " << t << endl; } }; template<typename T> void pohrajeme_si_s_vektorem_potreti(vector<T>& v) { for_each(v.begin(), v.end(), Cvypis<T>()); } int main() { vector<double> hodnoty; hodnoty.push_back(3); hodnoty.push_back(M_PI); hodnoty.push_back(exp(-1)); cout << "První cyklus..." << endl; pohrajeme_si_s_vektorem_poprve(hodnoty); cout << "Druhý cyklus..." << endl; pohrajeme_si_s_vektorem_podruhe(hodnoty); cout << "Třetí cyklus..." << endl; pohrajeme_si_s_vektorem_potreti(hodnoty); return 0; }
Bezdecne jste tu nadherne ilustroval, proc pouzivat bud standardni std::for_each, nebo lepe BOOST_FOREACH.
template<typename T> void pohrajeme_si_s_vektorem_poprve(vector<T>& v) { for (typename vector<T>::iterator vi = v.begin(); vi != v.end(); vi++) { cout << "poprvé - " << *vi << endl; } }
Ma byt ++vi
. (A to sou lidi schopni napsat daleko vetsi zverstva, jako vi < v.end()
)
Tiskni
Sdílej: