Byla vydána nová major verze 5.0.0 svobodného multiplatformního nástroje BleachBit (GitHub, Wikipedie) určeného především k efektivnímu čištění disku od nepotřebných souborů.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Kdysi dávno jsem zde pokládal návrh na anketu Jaký používáte styl programování?
. Bohužel buďto zapadla, anebo obsahovala odkaz na příslušnou stránku wikipedie (odkazy v anketě tuším ničily layout stránky). Buď jak buď, anketa se nekonala.
Z již zmíněného dokumentu plyne, že se rozlišuje 5 hlavních stylů, přičemž poslední tři mi přijdou hodně obskurní . Jak jsem tak měl možnost vidět zdrojové kódy, tak převládá K&R a BSD styl odsazování, případně třetí varianta - náhodné odsazování.
Já osobně nejraději používám právě prvně jmenovaný, protože mi BSD styl přijde moc rozvláčný. Zde je příklad za všechny (musel jsem trochu přeformátovat, ztratil se mi prázdný řádek).
/* create a new empty operand */ rpcData* newData(void) { rpcData* aux = (rpcData*) malloc(sizeof(rpcData)); memset(aux, 0, sizeof(rpcData)); aux->references = 1; return aux; }
Tiskni
Sdílej:
case
. Tj. asi takto:
int foo(char* p) { int n = 0; while (*p) { switch(*p) { case '(': n++; break; case ')': n--; break; } p++; } return n; }
if ( ) { ... } else { ... }Pri velkych povazujem za vhodne patricne zdoraznit skoro prazdnym riadkom, kde ten if konci:
if ( ) { ... ... ... ... } else { ... ... ... ... }
Sice jsem sotva pára z programátorského ....., ale když už něco náhodou uplácám, pak jedině K&R. Jinak odsazuji, odsazuji, a znovu odsazuji všechno co se jenom odsadit dá a to vždy o dvě mezery. Kdo používá tabulátory je Barbar. S komentářema je to ale u mne bída. :~)
mood = (machine != slackware) ? depressed : euphoria;
int main(int argc, char** argv) { if(argc != 2) { // neco } else { while(1) { } .... switch(c) { case 1: .... break; default: .... } do { } while(1); for(int i = 1; i < 16; i++) { } } }
int ukazka() { if podminka then { udelej_tohle(); udelej_tamto(); } else { udelej_tudleto(); udelej_tamdleto(); } return(0); }
(0)
' je stejně korektní návratová hodnota funkce jako '0
'. Nebo tam klidně můžete napsat '(((0)))
' a bude to pořád totéž…
return (3, 2, 1, 0);
void fce( int cislo, char ** tt ) { if ( cislo >= 6 ) { do_neco( cislo, get_neco( tt ) ); } else { switch( cislo ) { case 'x': zajimave_cislo(); break; case 'a': zajimave_cislo( c ); break; } } }