Byla vydána (𝕏) nová major verze 17 softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech GitLab (Wikipedie). Představení nových vlastností i s náhledy a videi v oficiálním oznámení.
Sovereign Tech Fund, tj. program financování otevřeného softwaru německým ministerstvem hospodářství a ochrany klimatu, podpoří vývoj FFmpeg částkou 157 580 eur. V listopadu loňského roku podpořil GNOME částkou 1 milion eur.
24. září 2024 budou zveřejněny zdrojové kódy přehrávače Winamp.
Google Chrome 125 byl prohlášen za stabilní. Nejnovější stabilní verze 125.0.6422.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 9 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Textový editor Neovim byl vydán ve verzi 0.10 (𝕏). Přehled novinek v příspěvku na blogu a v poznámkách k vydání.
Byla vydána nová verze 6.3 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.15.
Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].
JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.
Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových
… více »Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).
int nanosleep(const struct timespec *req, struct timespec *rem) struct timespec { time_t tv_sec; /* sekundy */ long tv_nsec; /* nanosekundy */ };Funkce nanosleep() při úspěšném proběhnutí vrací 0. Pokud se vyskytne chyba, funkce vrátí -1, proměnnou errno nastaví na jednu z možných symbolických konstant a v určitých případech zapíše zbývající čas do ukazatele rem, pokud není nastaven na NULL.
sleep(5); /* pauza 5 sekund */
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <errno.h> #include <limits.h> enum { MAXNUM = 100, MAXLINE = 25, DELAY = 500000000 }; typedef struct numbers { long array[MAXNUM]; int num; } NUMBERS; int readline(char *a); int estrtol(char *line, long *n); int cmp(const void *p1, const void *p2); void nanoprint(NUMBERS n); int main() { NUMBERS n = {{0}, 0}; char line[MAXLINE]; int i = 0; printf("Zadejte cela cisla:\n"); while (readline(line)) { if (estrtol(line, &n.array[i])) { n.num++; i++; } } printf("\n"); qsort(n.array, n.num, sizeof(n.array[0]), cmp); nanoprint(n); return 0; } int readline(char *line) { int len; if (fgets(line, MAXLINE, stdin) != NULL) { len = strlen(line); if (len + 1 == MAXLINE && line[len-1] != '\n') while (getchar() != '\n') ; if (line[len-1] == '\n') line[len-1] = '\0'; return 1; } else return 0; } int estrtol(char *line, long *n) { char *endptr; errno = 0; *n = strtol(line, &endptr, 10); if (*endptr != '\0') { printf("error: not a number\n"); return 0; } else if (errno == ERANGE && *n == LONG_MAX) { printf("error: overflow\n"); return 0; } else if (errno == ERANGE && *n == LONG_MIN) { printf("error: underflow\n"); return 0; } else if (endptr == line) { printf("error: empty input\n"); return 0; } else return 1; } int cmp(const void *p1, const void *p2) { long a, b, c; a = *(long *) p1; b = *(long *) p2; c = a < b ? -1 : a == b ? 0 : 1; return c; } void nanoprint(NUMBERS n) { struct timespec ts = {0, DELAY}; int i; for(i = 0; i < n.num; i++) { printf("%ld\n", n.array[i]); nanosleep(&ts, NULL); } }
Tiskni Sdílej:
long int strtol(const char *str, char **endptr, int base)Proč vlastně?
const
nedat, aspoň se vyhnete zbytečnému přetypovávání v případě, že potřebujete předat string, který už const
je.
errno
na nulu. V opačném případě je jakýkoliv další pokus o zjištění selhání (přetečení) naprosto zbytečná záležitost. U příbuzných unsigned variant (strtoul
) bych zmínil, že klidně přijmou záporné číslo a "zkonvertují" ho na kladné (podle pravidla převodu signed na unsigned). Proto je dobré před voláním funkce zkontrolovat první nebílý znak, jestli není mínus.
man 3 strtol
).
int usleep(useconds_t usec)
z unistd.h?
NUMBERS n = {{0}, 0};ale
numbers_t numbers; // bzero(&numbers, sizeof(numbers_t)); /* keď nenastavuješ všetky prvy v štrukture pri inicializacií v programe */ numbers.array={0}; numbers.num=0;A parametre funkcie nedefinuj ako typ void, ale ako long *. Nakoľko môžeš pri preklade dať skontrolovať typovú kontrolu. Čo pri void sa stratí.
int cmp(const void *p1, const void *p2)
.