OpenChaos.dev je 'samovolně se vyvíjející open source projekt' s nedefinovaným cílem. Každý týden mohou lidé hlasovat o návrzích (pull requestech), přičemž vítězný návrh se integruje do kódu projektu (repozitář na GitHubu). Hlasováním je možné změnit téměř vše, včetně tohoto pravidla. Hlasování končí vždy v neděli v 9:00 UTC.
Byl vydán Debian 13.3, tj. třetí opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.13, tj. třináctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.
Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.
Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).
Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.
AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.
Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou
… více »Patchouli je open source implementace EMR grafického tabletu (polohovací zařízení). Projekt je hostován na GitLabu.
int pole [][SLOUPCE] Dávej si bacha na to jestli je pole typu int pole[VEL_POLE] nebo typu int pole [] je v tom docela velký rozdíl. V prvním případě se veškerá data překopírují na zásobník a změna jakékoliv hodnoty v poli má vliv pouze ve funkci. V druhém případě se jedná a předání pomocí ukazatele. Tedy předání odkazem. V tomto případě se jakákoliv změna projeví i ve zbytku programu. Pokud se o tom něco chceš dozvědět více prozkoumej standard jazyka C.
nóóóóóóó tak já to za tebe jako napišu i když vim že ty bys za mě domácák neuďál ;D
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h> //TODO mužem použít math??????
#define RADKY 5
#define SLOUPCE 5
#define POCET 5
void naplnMatici(int matice[RADKY][SLOUPCE]){
int r;
int s;
for(r=0;r<RADKY;r++){
for(s=0;s<RADKY;s++){
matice[r][s] = rand() % 2;
}
}
return; //FIXME nemusíme volat na konci funkce co vrací void ;D
}
void vypisMatici(int matice[RADKY][SLOUPCE]){
int r;
int s;
printf("PREVODY Z MATICE\n");
printf("----------------\n");
for(r=0;r<RADKY;r++){
for(s=0;s<SLOUPCE;s++){
printf("%5d", matice[r][s]);
}
printf("|");
for(s=0;s<SLOUPCE;s++){
printf("%d", matice[r][s]);
}
printf("\n");
}
return; //FIXME tady taky ne
}
//Zde je funkce pro převod, bohužel nevím, jak na to
void prevod(int matice[RADKY][SLOUPCE], int * pole){
int r,s;
for(r=0;r<RADKY;r++)
{
//matematickej způsob pro debílky
int cislo=0;
for(s=0;s<SLOUPCE;s++)
{
cislo+=matice[r][SLOUPCE-s-1]*pow(2,s);
}
printf("%d\n",cislo);
//frajerskej způsob pomocí bitovejch operací
//je to uplně to samý co nadtim ale uplně jiný
int cislo2=0;
for(s=0;s<SLOUPCE;s++)
{
//děláme logickou operaci OR/NEBO s hodnotou elementu tý matice
//to << ji bitově popostrčí o SLOUPCE-s-1 "doleva"
//nazačátku máme v cislo2 samý nuličky takže prakticky nastavujeme jeden bit proměný
//na jedničku pokud je i jednička jakože v tom řádku matice
//ale tosi nejdřiv někde našprtej jestli to fakt chceš používat neni
//to moc intuitivní ale zase to je jako dost praktický ;D
cislo2 |= matice[r][s] << SLOUPCE-s-1;
}
printf("%d\n\n",cislo2);
pole[r]=cislo;
}
}
int main(){
int matice[RADKY][SLOUPCE];
int pole[POCET];
srand((unsigned)time(NULL));
naplnMatici(matice);
vypisMatici(matice);
prevod(matice, pole);
return EXIT_SUCCESS;
}
nemáš vubec zač :D :D ;D
jsme tam jakoby strčili ukazatel na to pole a tam pak z tý funkce zapisujeme. takže čistě technicky nic vracet nemusíme ale nevim co máš jako v zadání jestli třeba hlavička funkce neni od učitelskýho nějak zadaná. ale jestli tě to fakt jako znepokojuje že je void tak de uvnitř funkce deklarovat pole jako statickou proměnou a vrátit ho takhlenc jako ukazatel. si myslim že řešení s tim argumentem je ale lepšejší ;D
nóóóó a pak taky de samo použít malloc hele. na něj zachvilku určitě taky narazíš ;D
se to takhle různě musí řešit protože když vracíš ukazatel na něco z funkce tak nemáš zaručený že to něco eště vubec existuje ta pamět už mohla bejt po proběhnutí funkce uvolněná a použitá na něco jinýho. nóóóó a uplně největší zrada je že se to někdy nestane a zdrojáček normálně funguje. až jednou..... :O :O :D :D
takhle by to vypadalo s tim statickým polem
...
int * prevod(int matice[RADKY][SLOUPCE]){
static int pole[POCET];
...
return pole;
}
int main(){
...
int * pole;
...
pole=prevod(matice);
...
}
se jako hluboce omlouvám všem debílkům kterejch se muj nevinej vtípek dotkul :D :D :D :D :D :D
chudák to třeba zejtra vodezdává celej tejden se stim mazal a neví si s tim rady stresem si rve vlasy a kouše nechty a ty po něm chceš aby napapíře luštil nějakou pitomou křížovku. todleto zase za urážku považuju já ;D a sorry jako že učitelskej vodved mizernou práci a já to za něj teďko dohánim. a taky si jako myslim že nejlepší učení je vidět jak něco dělá někdo další ;D
při -O3 sem tam nenaměřila žádnej rozdíl ale bez -O to bylo o +-88% rychlejší že se mi tomu ani moc nechce věřit a myslim si že sem tam něco pokazila jak už pomalu spim :O :O :O :O
//matematickej způsob pro debílky
int cislo=0;
for(s=0;s<SLOUPCE;s++)
{
cislo+=matice[r][SLOUPCE-s-1]*pow(2,s);
}
Nebyl bych tak odsuzující.
Pokud se někdo učí programovat, tak použít mocninu ho napadne jako první, protože to odpovídá matematickému zápisu. Teprve jak si postupně osvojuje programátorské dovednosti, dojde mu, že použití funkce pow je v tomto případě nejen zbytečné, ale spíše kontraproduktivní. Jednodušší a lepší je použít přímo mocniny 2, které navíc postupně rostou:
int cislo=0,m2; // v m2 jsou mocniny 2
for(s=0,m2=1;s<SLOUPCE;s++,m2*=2)
{
cislo+=matice[r][SLOUPCE-s-1]*m2;
}
No a v C se dá samozřejmě namísto násobení dvěma použít bitový posun:
int cislo=0,m2; // v m2 jsou mocniny 2
for(s=0,m2=1;s<SLOUPCE;s++,m2<<=1)
{
cislo+=matice[r][SLOUPCE-s-1]*m2;
}
Myslím, že ten trik s logickým NEBO to nijak neurychlí.
Jirka
eště by to možná jako šlo zrychlit přeskakováním nul protoře nazačátku to máme samý nuličky to číslo tak je tam nemusíme zapisovat
Tiskni
Sdílej: