Společnost Murena představila (YouTube) novou verzi 4.0 mobilního operačního systému /e/OS (Wikipedie) založeného na Androidu a LineageOS bez aplikací a služeb od Googlu.
V Arch User Repository (AUR) bylo kompromitováno přes 400 opomíjených balíčků (jejich seznam). Útočník do nich začlenil škodlivý npm balíček atomic-lockfile, který krade citlivá data uživatelů. Publikována byla předběžná analýza spouštěného malwaru deps.
Homebrew, správce balíčků nejen pro macOS, byl vydán ve verzi 6.0.0 (seznam změn). Hlavními novinkami jsou bezpečnostní mechanismus tap trust kvůli důvěryhodnosti závislostí, vylepšení sandboxingu na Linuxu, interní JSON API nebo zlepšení výkonu.
Byla nalezena a 9. června opravena kritická zranitelnost ve FreeBSD v Kernel TLS (KTLS). Pojmenována byla Bumsrakete (FreeBSD-SA-26:26.ktls, CVE-2026-45257). Lokální neprivilegovaný uživatel může přepisovat soubory, ke kterým má právo pouze pro čtení. Přepsáním setuid binárky a jejím spuštěním může získat roota. Na všech verzích od verze 13.0 vydané v dubnu 2021.
Vývojáři open source operačního systému ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, se na síti 𝕏 pochlubili, že ReactOS zvládne počítačovou hru Half-Life.
Byla vydána nová verze 4.8 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.
Apple container dospěl do verze 1.0.0. Jedná se o open source nástroj pro spouštění linuxových kontejnerů na macOS postavený nad containerization. Napsaný je v programovacím jazyce Swift a optimalizovaný pro Apple silicon.
Bylo vydáno Eclipse IDE 2026-06 aneb Eclipse 4.40. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Asterinas (GitHub) je v Rustu napsané jádro operačního systému poskytující s jádrem Linux kompatibilní ABI. Vydána byla verze 0.18.0. První distribucí postavenou nad jádrem Asterinas je Asterinas NixOS. Nejedná se o oficiální projekt NixOS a nemá nic společného s NixOS Foundation.
Podrobně byla rozebrána kritická zranitelnost v nf_tables (CVE-2026-23111). Další lokální eskalace práv na Linuxu. V upstreamu byla zranitelnost již v únoru opravena. Ve zdrojovém kódu stačilo odstranit 1 vykřičník.
Ahoj vespolek, jsem zacatecnik v cecku a snazim se psat trochu chytrejsi programy. Prave u jednoho jsem se sekl a nemuzu prijit na to, v ktere casti kodu je chyba
. Pri kompilaci to nevipise nic, ani varovani, bohuzel behem spusteni to spande a vypise Neoprávněný přístup do paměti (SIGSEGV) .. pouzivam Archlinux, prejel jsem to i debuggerem a ten mi vypise, ze se jedna o chybu
Program received signal SIGSEGV, Segmentation fault.
0x00000000004005d5 in serazeni ()
... zkousel jsem to znovu prepsat, jestli jsem neudelal nejaku hrubku, ale nic, bohuzel nevim.. jsem zacatecnik, tak to prosim berte na vedomi... kod je prilozeny v souboru. Dekuji vsem za napady, pripominky, dotazy a kritiku.
j=3; nebo tot nééé r[2]=58;, a pak se zamyslet na tím, že číslování polí je od 0 po N-1 a s větším index-em se dostanete mimo alokovaný rozsah.
To kopirovani jsem prepsal na :
k=r[j];
r[j]=r[j+1];
r[j+1]=k;
U toho noveho zpusobu (nevim jak se tomu rika v cecku, v matice je to myslim mnozina vsech cisel R) je to efektivnejsi, dekuji moc za navrh.
Ohledne toho enteru, napsal jsem tam printf("\n"); nebo jste myslel neco jineho? Kazdopadne dekuji za pripominky a jsem Vam velmi vdecny, jsem o neco chytrejsi.
To printf("\n"); je v pořádku, jen trochu pomalé, v tomhle případě by úplně stačilo putchar('\n');.
Ještě jednu radu, já začínám tím že si napíšu
#include <stdio.h>
int main(void)
{
return 0;
}
a pak teprve do téhle kostry začnu psát, nebo spíš doplňovat program
i tebe se chci zeptat, jelikoz v tom mas praxi a si dobry, mival jsi podobne problemy jako ja? jen aby me to psychicky rozladilo /povzbudilo
A protožemain()nepřebírá žádné vstupní hodnoty, je vhodné to zdůraznit:int main(void), protože když tam nedáš nic, překladač automaticky předpokládá že tam má být nějakýint.
Vy nějaký takový znáte? Obávám se, že si to spíš pletete s tím, že ve starších dialektech C se při neuvedení návratového typu implicitně předpokládal int.
řádek 41: Když už máš funkci main() nadeklarovanou jako int, tak musíš také nějaký int vracet, takže tam připiš return 0;. A protože main() nepřebírá žádné vstupní hodnoty, je vhodné to zdůraznit: int main(void), protože když tam nedáš nic, překladač automaticky předpokládá že tam má být nějaký int.Tohle se dělo u návratových typů. Pokud neuvedete
void jako parametr, překladač předpokládá, že o parametrech té funkce nic neví a tedy mohou být jakékoliv. Což je u main, když ty parametry nepoužijete, vlastně pravda.
serazeni.c skompiluj ako:
gcc -Wall -g -o atest serazeni.ckde
atest bude tvoj spustitelny program. ten mozes spustit zapomoci gdb debuggeru, napriklad:
mato@foxi:(~/lair/abc)$ gdb ./atest
GNU gdb 6.1.1 [FreeBSD]
(gdb) run
Starting program: /home/mato/lair/abc/atest
Program received signal SIGBUS, Bus error.
0x0000000000400665 in serazeni (r=0x7fffffffeaf0, i=2) at abc.c:20
20 if(r[j]>r[j+1]){
(gdb)
a vidis, kde nastal problem (najskor pretecenie pola).
no, smyslem toho programu bylo porovnavat hodnoty a prehazovat je s vedlejsim (levym) prvkem v poli do te doby, dokud to nebude serazene od nejmensiho po nejvetsi... bohuzel jsem se opet zasekl a ten cyklus (upravil jsem to)
for(g=0;r[g]<r[++g];){
if(g==i){
complete=1;
break;
}
}
udela nekonecnou smycku (zajimave je, ze je vytezovano jen 1 jadro ze 4... a to jadro druhe... :D
jinak zatim dekuji za ten debugging... a kdyz jsme u te syntaxe a smyslu, jelikoz jsem zacatecnik, tak se jenom zeptam.. na psani uspesnych a funkcnich programu porebuji praxi (psat a psat) nebo na to existuje nejaka publikace? dekuji Vam.
ak som teda spravne pochopil ten program sa snazi robit bubblesort (bublinkove triedenie)? zotriedenie pola vyriesia 2 jednoduche cykly:
int a,b,temp;
for (a =0 ; a < MAX; a++) {
for (b =0 ; b < MAX-1; b++) {
if (pole[b] > pole[b+1]) { /* swap n+1 with n */
temp = pole[b];
pole[b] = pole[b+1];
pole[b+1] = temp;
}
}
}
(kde MAX je zadefinovany ako dlzka pola).
ja mam velmi daleko od dobreho programatora; ale i ten sebalepsi programator pise _obcas programy s bugmi.
kazdy zacinal na zelenej luke, zaciatky su tazke (pre niekoho viac, pre niekoho menej).treba sa naucit rozmyslat v danom jazyku - to chce cas. comu nerozumies mozes preskocit a vratit sa neskor.
drz sa tych knih co mas, tie su naozaj dobre.
#include <stdio.h>
void serazeni(int r[], int i)
{
int j, k, g;
for(j = 0;; j++) {
for(g = 0; r[g] < r[g+1]; g++) {
if(g == i-1)
return;
}
if(j == i)
j = 0;
if(r[j] > r[j+1]) {
k = r[j];
r[j] = r[j+1];
r[j+1] = k;
}
}
}
int main()
{
int i, size;
int r[] = {542, 12, 58, 10, 7};
size = sizeof(r)/sizeof(int);
serazeni(r, size);
for(i = 0; i < size; i++) {
printf("%d, ", r[i]);
}
printf("\n");
return 0;
}
Ušetřím si tak jeden cyklus a kód je o dost čitelnější. Tvůj algoritmus se zasekne v nekonečné smyčce kvůli téhle části:
if(j==i){
j=0;
}
else {
Tedy Pokud jsi prošel celé, pole vrať se na začátek, v jiném případě proveď porovnání. Neporovná se ti první a druhý (či lépe nultý a první) prvek v poli a algoritmus tak nikdy nedoběhne.
)
int pole[10]; sizeof(pole);V tomhle případě sizeof() vrátí 40 (na 64 bitové architektuře 80) protože máme pole o 10 prvcích, každý 4 byty (8 bytů) velký.
int pole[10]; sizeof(pole)/sizeof(int);Vrátí počet prvků v poli děleno velikostí jednoho prvku - význam je předpokládám jasný.
int pole[10]; sizeof(pole)/sizeof(pole[0]);čili velikost celého pole děleno velikostí prvního prvku v poli.
na 64 bitové architektuře 80
Jak na které. Třeba u gcc na x86_64 je to 40.
long, kde u LLP64 a LP64 (Windows a Linux) tento rozdíl je.
Tiskni
Sdílej: