Po vlastních microSD kartách nabízí nově Raspberry Pi také vlastní NVMe SSD disky. Samostatně i v sadách s M.2 HAT+.
Byla zveřejněna (𝕏) Zpráva o činnosti Digitální a informační agentury (DIA) za rok 2023 (pdf). Začíná slovy ředitele: "Vznik Digitální a informační agentury (DIA) je v posledních letech možná jedním z nejvýznamnějších kroků, který dodá potřebný impuls digitalizaci státní správy."
Vývojáři AlmaLinuxu představili AlmaLinux OS Kitten 10, tj. vývojovou verzi AlmaLinux OS 10 vycházejícího z CentOS Stream 10. Přehled novinek v poznámkách k vydání. Proč Kitten? Verze AlmaLinux OS jsou pojmenované podle kočkovitých šelem. Z kotěte vyroste další kočka.
Kryptografická knihovna OpenSSL byla vydána v nové verzi 3.4. Přehled změn na GitHubu.
Bylo objeveno nové největší prvočíslo. Jedná se o Mersennovo prvočíslo známé též jako M136279841. To znamená, že v binární formě je prvočíslo tvořeno 136 279 841 jedničkami. Objeveno bylo v rámci distribuovaného výpočetních projektu GIMPS (Great Internet Mersenne Prime Search). Zajímavostí je, že na rozdíl od předchozích takto objevených prvočísel nebylo objeveno pomocí CPU, ale na grafické kartě NVIDIA A100 s pomocí programu Gpuowl.
Protokol MQTT (Wikipedie) dnes slaví 25 let (Mastodon, 𝕏). První publikovaná specifikace je z 22. října 1999.
Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.4. Přehled novinek na GitLabu. Z novinek lze zmínit podporu telefonu Google Pixel 7. Na stránkách Murena lze koupit Murena Pixel 7.
Připojte se ve středu 30. 10. 2024 od 10:00 do 12:00 na náš webinář "Řízení přístupu do PostgreSQL prostřednictvím externího autentizačního providera" (registrace zdarma) a naučte se, jak nastavit ověřování pomocí GSSAPI pro bezpečný přístup k databázím (Microsoft Active Directory nebo FreeIPA). Záznam předchozího webináře "Co je nového v PostgreSQL 17" můžete zhlédnout zde.
… více »Byla vydána nová verze 0.55 open source počítačové hry Unvanquished (Wikipedie), forku počítačové hry Tremulous. Instalovat ji lze také z Flathubu.
Dle plánu bylo dnes vydáno Factorio 2.0 a Factorio: Space Age, tj. aktualizace 2.0 počítačové hry Factorio (Wikipedie) oficiálně běžící také na Linuxu a velké vesmírní rozšíření Factorio: Space Age.
Nuže, zkus třeba takovýto snipplet:
#include<stdio.h> int main( int argc, char **argv, char **env ) { for ( ; *env; ++env ) puts( *env ); }
Nebo třeba takhle, což je (?) totéž... (Kdyžtak to tu někdo upřesní...)
#include<stdio.h> extern char **environ; int main( void ) { for ( ; *environ; ++environ ) puts( *environ ); }
To byly jen houpé příklady pro přehled. Pro lepší manipulaci je dobré udělat #include<stdlib.h>
a využít jednu z následujících funkcí.
int putenv(char *string);
(man 3 putenv
) přijímá string tvaru NÁZEV=HODNOTA a nastaví ho. String nekopíruje, pouze přidá pointer. Musí jít o trvale existuící string, nikoliv jen o dočasné pole na zásobníku. Existující proměnné přepíše.
int setenv(const char *name, const char *value, int overwrite);
(man 3 setenv
) dělá totéž, jen vybranějším způsobem. Parametr overwrite určuje, zda má v případě konfliktu názvů původní proměnnou přepsat. Tím se liší od předchozí funkce, která přepisuje vždy. Další rozdíl je, že string okopíruje. Není tedy nutné, aby za běhu existoval trvale. V případě, že je příliš dlouhý, vrátí hodnotu -1.
int unsetenv(const char *name);
(man 3 unsetenv
) Tady je to jasné. Příčina případné chyby bude v ERRNO.
char *getenv(const char *name);
(man 3 getenv
) Vyhledá název. Vrátí buď pointer na hodnotu nebo NULL, podle toho, zda taková proměnná existuje.
Změna je lokální v současném procesu. Nepřenáší se zpět do jeho otce.
Změněné proměnné se předávají nově vzniklým synovským procesům.
Změna se nepřenáší do již běžících synovských procesů.
Takhle bys to mohl třeba použít, stačí přidat jen ošetření případných chybových stavů.
#include<stdio.h> #include<stdio.h> static const char *const NOTSET = "VARIABLE NOT SET"; static const char *const USER = "USER"; static void output( char *const value ) { puts( value == NULL ? NOTSET : value ); } int main( void ) { output( getenv( USER ) ); /* skutečný uživatel */ putenv( "USER=vincenc" ); output( getenv( USER ) ); /* 'vincenc' - přepsáno */ setenv( USER, "hugo", 0 ); output( getenv( USER ) ); /* 'vincenc' - nepřepsáno */ setenv( USER, "hugo", 1 ); output( getenv( USER ) ); /* 'hugo' - přepsáno */ unsetenv( USER ); output( getenv( USER ) ); /* 'VARIABLE NOT SET' - smazáno */ }
Uf, to je vše. Ale příště zkus radši napřed Google, protože tohle není příliš složitá otázka...
K tomu poslednímu snippletu: mám tam omylem dvakrát stejný include. Jak jsem zjistil, stdlib.h v tomto případě není nutné includovat - stačí stdio.h.
Tiskni Sdílej: