Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
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.
Jsem sice přesvědčený, že Java je skvělý programovací jazyk a je to také směr, kterému se chci i do budoucna věnovat. Ale na druhou stranu si připadám ještě příliš mladý, abych zůstal jen u jednoho jazyku* . Takže se teď učím i C++.
Vybral jsem si tento jazyk kvůli rozšířenosti a objektovosti … a taky proto, že mi přišel 1337 .
V knížce Jádro systému Linux jsem se dočetl o technologii POSIX Message Queues, přišlo mi to zajímavé a tak jsem se rozhodl, že jeden z mých prvních programů v C++ bude sloužit k posílání zpráv pomocí této technologie.
Jedná se v podstatě o jednoduchý jednosměrný chat, více o programu se dočtete tady: Posílání zpráv pomocí fronty (POSIX MQ) a zdrojové kódy si můžete stáhnout z mercurialu (návod).
Program kupodivu dělá to, co od něj chci, ale určitě by to šlo napsat všechno mnohem líp. Takže pokud budete mít trochu času a stáhnete si zdrojáky, uvítám vaše připomínky.
*) nepočítám věci jako VisualBasic, PHP, JS nebo … SGP Baltazar
Tiskni
Sdílej:
Tu přesně mám ale je strašně tlustá, ještě jsem se jí celou neprokousal.
ctenari vzali na vedomi, ze vm je v c++ borec
Jak (moc) se liší od C++?
Díky. A blíž k Javě má který?
wrapper je presne to co rika slovnik - obal, napriklad sada funkci nejake knihovny zabalena do tridy jako treba gtkmm
Bavíme-li se stále o C(++), tak zjistíme, že zásobník, tak jak se dnes praktikuje, může velmi rychle dojít.
Neni moc duvodu, proc by mel zasobnik dojit driv nez halda. V adresnim prostoru maji oba mista dost, a fyzicke stranky se, tipuji, prideluji celkem bez ohledu na to, zda se jedna o zasobnik nebo haldu. Oboje muze byt omezeno ulimitem, ktery ale v obou pripadech je mozne nastavit na unlimited.
Akorat si nejsem jist, zda proces nekdy uvolnuje stranky, ktere mu jsou pridelene pro zasobnik.
Bohuzel to tak neni. Na linuxu mate 4 mega na stack. Pak nasleduje 1 zamcena stranka, na kterou kdyz slapnete tak naspaduje SEGFAULT. A za touhle strankou pokracuje stack dalsiho vlakna. Na FreeBSD je to tak ze 1. "hlavni" vlakno ma 16MB stack a dalsi uz dostavaji po ctyrech. Vsechno je to ale samozrejme konfigurovatelne.
> Bohuzel to tak neni. Na linuxu mate 4 mega na stack
Coz je prave ten limit nastaveny ulimitem. Kdyz pred spustenim programu zadate 'ulimit -s unlimited', tak tam ten limit nebude.
Nene, vas stack konci tam, kde zacina stack dalsiho threadu.
No tak si to zkus:
test.c:
#include <stdio.h>
#include <stdlib.h>
int
recurse(int i)
{
if (i < 10000000)
{
return 1 + recurse(i+1);
}
else
{
int j;
printf("Hluboko\n");
scanf("%d", &j);
return j;
}
}
int
main(void)
{
int j = recurse(0);
printf("Rv %d\n", j);
}
feanor:~$ gcc test.c -o test
feanor:~$ ulimit -s unlimited
feanor:~$ ./test
Hluboko
1
Rv 10000001
Zabrana pamet na stacku kolem 500 MB.
> A za touhle strankou pokracuje stack dalsiho vlakna
Mimochodem, tusite nekdo, proc na Linuxu nejsou vlakna implementovana tak, ze by bylo kazde v odlisnem adresovem prostoru, pouze by sdilela vsechny adresove segmenty krome stacku (a pripadne prostoru pro thread-specific variables)? Respektive, zda by takova implementace mela nejake vyznamne nevyhody? Krom evidentni nemoznosti sahat z jednoho vlakna do stacku druheho (coz je IMHO stejne dost prasarna). Obecne by context switch mezi vlakny ve stejnem adresovem prostoru mohl byt rychlejsi, ale opravdu tomu v Linuxu tak je?
Mimochodem, tusite nekdo, proc na Linuxu nejsou vlakna implementovana tak, ze by bylo kazde v odlisnem adresovem prostoru, pouze by sdilela vsechny adresove segmenty krome stacku (a pripadne prostoru pro thread-specific variables)?Tipuji, že čistě proto, že to prostě někdo implementoval takhle. Oddělené adresní prostory pro zásobníky by podle mého neměly být v rozporu se specifikací v POSIXu, čili nevidím jiný důvod, proč se používá zrovna tato implementace.
Respektive, zda by takova implementace mela nejake vyznamne nevyhody?Měla by o něco málo větší režii při vytváření vlákna, ale je otázka, nakolik by to vadilo (už tak je režie vytváření vláken výrazně větší než na Windows; naopak režie vytváření procesů je podstatně nižší - skoro řádově - než u Win).
Obecne by context switch mezi vlakny ve stejnem adresovem prostoru mohl byt rychlejsi, ale opravdu tomu v Linuxu tak je?Rychlejší je. Nevím o kolik (to by se musel změřit), ale každopádně se při přepínání úloh se sdíleným adresním prostorem nenačítají tabulky stránek. Jde ovšem o to, jaká je v praxi pravděpodobnost, že dvě po sobě následující naplánované úlohy jsou dvě vlákna téhož procesu.
Já myslím, že sahat na korektně zamykané proměnné na zásobníku jiného vlákna je zcela korektní.Jenže jde o to, proč to vůbec dělat. Nenapadá mě nic rozumného, k čemu by to bylo dobré.
Vy snad ano?Také o ničem takovém nevím.
> Já myslím, že sahat na korektně zamykané proměnné na zásobníku jiného vlákna je zcela korektní.
Korektni to sice je, ale asi bych se tomu radsi ve vetsine pripadu vyhnul. ;–)
To by pak asi nemelo smysl rozlisovat mezi vlakny a procesy, ne?
Jinak, treba na zSeries procesu (ktery vychazi ze System/360) hardwarovy stack puvodne nebyl, a proto se treba v z/OS nepouziva. Misto toho tam jsou instrukce na ulozeni vicero registru do pameti. Vysledek je, ze zasobnik muze byt nesouvisly, a tedy teoreticky tam s pretecenim zasobniku jednoho vlakna nejsou problemy.
Proc?
perl se hodi tak max. pro 10 % populace, tedy pro lidi, kteri nemaji problem s tim, ze k cili vede nekolik cest. Lide , ktere nevysiluje svoboda svou neustalou nutnosti se rozhodovat. Pro lidi, kteri potrebuji ruznorodost, aby mohli kombinovat nove cesty, pristupy, reseni. Perl je narocny, protoze je mnohotvarny, nesvazany, chaoticky.
Vaclav Klaus nenavidi perl.
jak vis? :)
Dalsi rozdil je v tom, ze MQ je implementovano pres syscally, takze kdyz neco resite tak staci spustit lsof, strace, dbg a hned vite kdo na koho ceka a muzete z toho usoudit proc. U D-BUS nezjistite vubec nic, anebo je to velice slozite.
nebo … SGP BaltazarTak malé děti sem snad nechodí ... nebo ne?
Každý byl jednou mladý Já jsem začínal v DOSu, s quick basicem a právě tím Baltazarem, ale spíš než programování to bylo hraní.
V posledných týždňoch som mal možnosť si na to siahnuť a vyzerá, že je to Turing-complete. Má to premenné, konštanty, celé a reálne čísla, reťazce, bitové a logické operátory, riadiace štruktúry, možnosť definovať funkcie, knižnicu matematických funkcií, prácu so súbormi, ... Existuje C# verzia, ktorá má objekty, podporu pre DirectX, .NET, ... Takže by som to až tak nezhadzoval.nebo … SGP BaltazarTak malé děti sem snad nechodí ... nebo ne?
BTW: jsou mezí vámi tací, kteří postupovali směrem Java → C++, nebo jste se všichni učili nejdřív céčko a pak až Javu?
Učit se C++ je docela dobrodružné , ale všechno tam dá mnohem víc práce. Už jen když srovnám knížky Mistrovství v C++ a Java: Programujeme profesionálně – obě jsou přibližně stejně tlusté, ale je dost velký rozdíl, jaké programy po jejich přečtení člověk umí vytvářet v C++ a jaké v Javě (gui, tisk, xml, databáze, corba…). Ale neberte to jako rýpání, jen taková poznámka na okraj
doufám, že mě to céčko nepřestane bavit a bude to k něčemu dobré.
ad čtení – přijde mi to, nebo se fakt C/C++ fakt snáze píše než čte? Připadá mi, že po pár hodinách studia jsem v tom schopný napsat program, který nějak funguje, ale abych byl schopný číst zdrojáky někoho jiného mi to často nestačí, často narážím na konstrukce, které neznám, které jsem zatím nepotřeboval – tohle se mi v Javě nestávalo ani na začátku.
jsou mezí vámi tací, kteří postupovali směrem Java → C++, nebo jste se všichni učili nejdřív céčko a pak až Javu?To jsem třeba já. Nejdřív jsem se učil Javu. C a C++ jen v rozsahu nezbytně nutném k tomu, abych dokončil FEL. Prakticky to bylo jen C, to C++ jsem snad vůbec nepotřeboval. Teprve až o pár let později jsem se učil C++, a to především tvorbou aplikací postavených na MFC. Tehdy jsem v tom neustále hledal "javismy" a nadával jako špaček, že je tam všechno nějak horší. Nebylo to ale jazykem, byl to problém MFC
Ono už fakt že v 6-7. tříde na ZŠ jsme v tom byl schopen vytvořit multimediální přehrávač lepší než WM player, naznačuje snadnost programování v tomto jazyce.
Spíše to ukazuje na kvality toho WM playeru. ^_^
Mně zase přijde, že lidi, co k němu přičuchli hned zdrhli k něčemu lepšímu, nebo … jsou to zaměstnanci MS
Tehdy se mi to Visual Studio líbilo, jenže napovídání v kódu nebo tvorbu GUI klikáním má dneska kdejaké IDE a jako jazyk mě VB nějak nezaujal.
BTW: už si někdo stáhl ten můj zdroják? Ještě jsem neslyšel žádnou kritiku (a že je určitě co kritizovat)
No tak proto se pak uci programovat v C++, ne? Co je na tom spatneho, ja to spis povazuji za pozitivni krok. Ja se ucil prvni (Spectrum) BASIC, a to o nem Dijkstra prohlasil, ze "cripples your mind".
Jinak, dnes v praci pouzivam mainframe assembler a C, a doma Python a zkousim Lisp.
Hm, zda se, ze to rikal o obou:
nejak jsem nevyrozumnel, jestli mel Dijkstra pravdu ...
A funguje to i naopak – Bůh existuje už jen tím, že v něj někdo věří
To u nás na škole (VŠE) se programování moc neučí, přestože studuji informatiku. Což je možná ten důvod proč se rád učím nový jazyk, když mě do toho nikdo nenutí Sice se programováním v C++ asi nikdy živit nebudu (to spíš tou Javou), ale přijde mi dobré mít alespoň základy.
for( integer i:=pole.length; 1; downto) begin (x (y (z (q (o (u )))))) }Tak začíná být něco špatně.
No, nevim. Muj otec vzdycky rikal, ze matematiku se clovek musi naucit v mladi, jinak to uz nejde. Dal jsem na jeho radu, a ted je mi 30, a vidim, ze mel pravdu. Dnes by se mi do toho uz asi nechtelo.
Proč? Píšu to tak schválně
Například proto, že čeština vyžaduje diakritiku. Bez diakritiky získáš hnusný zprasený jazyk neandrtálců, což není čeština.
Ani kompilátor s podporou UTF-8 identifikátorů by nebyl dost dobrý důvod k použití češtiny. Velmi to ztěžuje sdílení toho kódu s ostatními. Drtivá větěšina dnešních zdrojových kódů je založená na angličtině. Netvrdím, že je to dobré nebo správné, ale je to prostě tak. Programátorů, kteří hovoří anglicky, je nesrovnatelně víc než těch, kteří hovoří česky.
Přesně... stačí si představit třeba zdrojovej kód řekněme ve francouzštině.
Já si to bohužel představovat nemusím
Francouzština je přece krásný jazyk
Fantastic language especially to curse with. You see? It's like wiping your ass with silk. I love it.
Normální by to bylo, kdyby tam nechyběla diakritika. Bez diakritiky nejde o češtinu, nýbrž o jakýsi nedefinovaný a těžko čitelný jazyk. Protože kompilátory zatím UTF-8 moc nemusí, taky bych se rozhodně přimlouval za angličtinu.
tak ja si rejpnu :)
program.h je naprosto zbytecny, extern "C" uplne zbytecne...
oteviraci zavorku bloku { davej v c++ na novy radek(toto je ale hodne o zvyku a konvenci)
argumetny metod a konstruktoru ktere mas char* by meli byt const char*
zbytecne globalni promene
co kdyz funkce mq_open() selze?
program.h je naprosto zbytecny, extern "C" uplne zbytecne...
Jako že bych tam neměl psát tu příponu? Četl jsem, že se nepoužívají, ale soubor bez přípony mi prostě přijde divný A taky je fakt, že by tam nemusel být vůbec, protože ten program.h asi sotva bude někdo používat jako knihovnu (to leda fronta.h).
oteviraci zavorku bloku { davej v c++ na novy radek(toto je ale hodne o zvyku a konvenci)
njn, zvyk z Javy, asi to nechám jak to je.
argumetny metod a konstruktoru ktere mas char* by meli byt const char*
Na to se podívám...
Zbytecne globalni promene
To je asi pravda, původně jsem to psal bez tříd a ten program vůbec vypadal trochu jinak. Třeba ta fronta nemusí být globální.
co kdyz funkce mq_open() selze?
Tak se to nepozná hned, ale odeslání zprávy nebo pokus o příjem vrátí chybu. Co s tím -- vyhazovat výjimku při vytváření fronty?
BTW: je nutný ten bezparametrický konstruktor? Asi jo Bez něj mi to nefungovalo (nešlo přeložit).
Tak se to nepozná hned, ale odeslání zprávy nebo pokus o příjem vrátí chybu. Co s tím -- vyhazovat výjimku při vytváření fronty?Návratové hodnoty funkcí, které mohou selhat, je potřeba vždy testovat. Zrovna
mq_open()
může vracet až 9 různých chybových kódů. V C++ je dobrým zvykem v takovém případě vyhodit výjimku.
To by se asi neřeklo, protože v tom programu jsou dost rutinní věci. Taky pochybuji, že by se vůbec někdo dostal do pokušení porušit GPL, protože ten program moc užitečný není, resp. určitě není užitečný v tom, abys ho vzal a začlenil do svého systému. Slouží spíš pro inspiraci a ukázku, jak ty fronty zpráv fungují. Takže je celkem jedno, pod jakou licencí to je – ale GPL používám z principu
char * text = "neco";
. Důvod je ten, že se nemohli někteří lidi dohodnout zda ta hvězdička pokud je blíž k typu, zanmená že daný identifikátor je typu například int ukazatel, nebo zda pokud je blíž k identifikátoru, tak identifikátor je ukaztel na daný typ Pro mé skromné účely úplně postačí PHP v kombinaci s MySQL, větší ambice v této oblasti nemám, programováním se neživím (naštěstí)