Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
For example, maybe it's a USB network dongle, and for *YOU* it is perfectly fine to defer the firmware loading, so that the network comes back up a few seconds after the system is up and running. But in another machine, that exact same USB network dongle may actually be hardwired on the motherboard (it's fairly common to use USB as a "system bus" in some laptop and embedded devices), and maybe that other machine actually is a thin client that has some tiny rdinit thing, and then everything else is NFS-mounted, and if you resume without networking, the machine is simply *dead*.Pokud má tenkej klient nějaký úložný místo odkud bootuje z rdinit, tak tam musí mít i firmware, aby mohl připojit NFS ne? V nejhorším případě je ten firmware v BIOSu, ale aspoň je furt dostupnej.
Data zapsaná do takového soketu budou okamžitě zařazena pro čtení na druhém soketu, takže se síťové vrstvě vyhnou.A co iptables pravidla, která by se měla aplikovat? Pokud potřebuji přímé spojení, tak přece použiji unixové sockety -- a to má i jiné výhody (řízení přístupu podle uživatelů). Tu abstrakci by měla řešit spíš nějaká knihovna/framework v aplikaci, než že by OS měl dělat takovéhle hacky, podstrkávat nějaké přímé spojení a tvářit se, že je to TCP.
A co iptables pravidla, která by se měla aplikovat? Pokud potřebuji přímé spojení, tak přece použiji unixové socketyTaky se divím, proč se řeší věc, která už je vyřešená, ale budiž, nejspíš to bude nějaká specifická potřeba Googlu.
On vetsinou spravce predpoklada, ze pokud neco komunikuje po siti, tak to komunikuje po siti a ne nejakou dirou nekde cestou.Oni jsou ti správci vůbec často překvapení, co se to v jejich sítích děje. A to kolikrát i když si to sami nakonfigurovali. Ale souhlasím s tebou a je mi osobně proti srsti jim v tom dělat ještě větší bordel, než je nutné. Až budu testovat aplikaci na localhostu a sledovat si ji tcpdumpem a ten tcpdump mi bude ty pakety zatajovat, tak se mi to nebude líbít. Už teď musí člověk lokální komunikaci hledat na rozhraní lo místo rozhraní, na kterém je daná IP nastavená.
Už teď musí člověk lokální komunikaci hledat na rozhraní lo místo rozhraní, na kterém je daná IP nastavená.To je ovsem perfektne konzistentni s chovanim IP komunikacie v Linuxu obecne - pokud napr. prichazi komunikace na eth0, ale je cilena na IP z eth1, tak ji na eth1 take tcpdumpem nezachytim. Ono na Linuxu je to prirazeni IP rozhranim relativne volna a neprilis dulezita vazba, napr. na ARP ti odpovida bez ohledu na to, na kterem to rozhrani ta adresa je.
To je ovsem perfektne konzistentni s chovanim IP komunikacie v Linuxu obecneTo vůbec nerozporuju :).
napr. na ARP ti odpovida bez ohledu na toMně lokální stroj na ARP neodpovídá nikdy. Vzdálený stroj mi správně na ARP odpovídá pouze pokud použiju jeho adresu na rozhraní, po kterém ten ARP dostane.
Vzdálený stroj mi správně na ARP odpovídá pouze pokud použiju jeho adresu na rozhraní, po kterém ten ARP dostane.Tak to ho mas prenastaven nebo prislusne zafirewallovan. Defaultni chovani je takove, jake pisu.
On vetsinou spravce predpoklada, ze pokud neco komunikuje po siti, tak to komunikuje po siti a ne nejakou dirou nekde cestou.Správca má vedieť, nie predpokladať. Správca, ktorý mal už pod rukami taký Solaris, nič také predpokladať nebude. Tam totiž localhost odjakživa funguje predávaním údajov v pamäti.
To je ale dost odlisny pripad. Zatimco u fd sice programator pouziva stejne funkce, tak ale typicky vi a pocita s tim, ze pouziva fd nejake 'tridy' a pulka operaci je specificka ci se chova lehce jinak pro jednotlive 'tridy'Zajímalo, jak se pozná ta specifická půlka operací v době, kdy už jsem připojený (či je někdo ke mě připojený) pomocí TCP nebo pomocí UNIX/STREAM. V tu dobu používám read/write (mohl bych používat send/recv) a časem asi budu chtít použít close. To celé doprovází poll u asynchronního přístupu. Víc mě nic nenapadá.
takze by abstraktni vrstva klidne vymenila pri lokalni komunikaci TCP za unix socket a program by si toho nevsimlCož dělá víceméně ten kernel patch. Vymění TCP protokol za jednodušší způsob lokálního předávání dat po vzoru AF_LOCAL.
Což dělá víceméně ten kernel patch. Vymění TCP protokol za jednodušší způsob lokálního předávání dat po vzoru AF_LOCAL.Jenze ten patch taky (hadam) zajistuje, aby se pro vsechny ty 'trida-dependent' operace stale choval jako TCP. Zatimco u nejake typicke genericke abstrakce kdybych chtel precist cislo portu ze socketu, ktery je vlastne implementovan unix socketem, tak by to selhalo.
Tak treba ve funkcich pracujicich s adresami (getsockname(), getpeername()), ty se obcas pouzivaji pote, co se na listening socket nekdo pripoji.Proto jsou adresy polymorfní.
Pak spousta socket options nastavovanych pres setsockopt(), s pouzivanych treba TCP_CORK, IP_TOS, IP_TTL.Ještě jsem nepotřeboval nastavovat volby jindy než během inicializace.
Jenze ten patch taky (hadam) zajistuje, aby se pro vsechny ty 'trida-dependent' operace stale choval jako TCP.Pokud používám přímo socketové rozhraní a jeho úroveň abstrakce, tak někde v kódu volám
socket()
, kde určuju, jaký typ socketu to bude. V návaznosti
na to lze vyřešit všechny specifické věci. Na straně serveru to bude accept()
.
Zatimco u nejake typicke genericke abstrakce kdybych chtel precist cislo portu ze socketu, ktery je vlastne implementovan unix socketem, tak by to selhalo.U generické abstrakce je nesmysl číst číslo portu. Stejně tak u polymorfního socket API nemá smysl chtít číslo portu od AF_LOCAL.
Proto jsou adresy polymorfní.Jo, jenze v konecnem dusledku tu adresu stejne budes chtit nejak zpracovat a tam uz jde polymorfnost stranou (nehlede na to, ze pro ni predem musis vyhradit dost pameti).
U generické abstrakce je nesmysl číst číslo portu. Stejně tak u polymorfního socket API nemá smysl chtít číslo portu od AF_LOCAL.Pokud by ta abstrakce byla 'natolik' polymorfni, aby podstrcila UNIX socket tam, kde programator zadal TCP, jen na zaklade toho, ze IP adresa cile je lokalni (jak IMHO pozadoval puvodni prispevek), tak by mysela byt natolik transparentni i v ostatnim 'trida-dependent' chovani.
Jo, jenze v konecnem dusledku tu adresu stejne budes chtit nejak zpracovat a tam uz jde polymorfnost stranouTam přesně využiju polymorfie, která mi mimojiné nabízí možnost větvit kód podle konkrétního podtypu.
Pokud by ta abstrakce byla 'natolik' polymorfni, aby podstrcila UNIX socket tam, kde programator zadal TCPTaková abstrakce mi přijde na první pohled chybná. Správná abstrakce je taková, která dokumentované rozhraní implementuje. V tomto případě musíš buď změnit abstrakci, aby si poradila se všemi specifiky TCP (což se skoro určitě lépe udělá v kernelu a což dělá zmíněný patch), nebo musíš změnit dokumentaci, tedy poskytované API a nevydávat AF_UNIX za AF_INET*, ale udělat smysluplnou abstrakci nad nimi, která bude zahrnovat i další operace, ve kterých se tyto rodiny liší (například to ověření jména uživatele).
Pak spousta socket options nastavovanych pres setsockopt(), s pouzivanych treba TCP_CORK, IP_TOS, IP_TTL.Ještě jsem nepotřeboval nastavovat volby jindy než během inicializace.
Zrovna TCP_CORK
je option, kterou dost dobře nelze nastavit jen při inicializaci. U IP_TOS
nebo TCP_NODELAY
jsou také situace, kdy by mělo smysl měnit hodnoty podle toho, jak se mění charakter komunikace (třeba u SMTP).
Na druhou stranu, pokud aplikace počítá s tím, že může používat jak PF_INET
/PF_INET6
sockety, tak PF_UNIX
, může samozřejmě nastavovat jen ty socket options, které mají pro daný typ socketu smysl.
Predstava takove abstrakce me prijde dost absurdni.Přitom už to někde viděl. Aplikace si prostě „localhost“ překládala jako AF_UNIX a odpovídající cestu.
nebo by to proste emulovalo TCP pomoci UNIX socketuNěco podobného dělá patch, který tuto debatu rozvířil.
Aplikace si prostě „localhost“ překládala jako AF_UNIX a odpovídající cestu.Kde se neco takoveho realne dela?
Něco podobného dělá patch, který tuto debatu rozvířilAle zpusobem, ktere je pro programy daleko transparentnejsi.
Kde se neco takoveho realne dela?Tohle dělá/dělal nějaký klient k MySQL, ale asi by se našlo víc příkladů. Pomohlo napsat
127.0.0.1
místo localhost
.
Ale zpusobem, ktere je pro programy daleko transparentnejsi.To jistě.
Kde se neco takoveho realne dela?MySQL knihovna k PHP
Aplikace si prostě „localhost“ překládala jako AF_UNIX a odpovídající cestu.Což není abstrakce, ale spíš šamanismus – takové aplikace mám opravdu rád. Např. když si člověk pracně protuneluje nějaký vzdálený port na localhost, chce se připojit, nejde to… a po chvíli zjistí, že aplikace si chytře vyložila localhost tak, že se má připojit na UNIXový soket na nějakém obvyklém místě v adresářové struktuře.
Dělá a z principu je to úplně zcestné. Buď potřebuji jen vstupní a výstupní proud a pak mi dostatečnou abstrakci poskytuje stávající API* nebo potřebuji specifické** vlastnosti dané technologie a pak použiji ji – nemá cenu maskovat jednu technologii za jinou a klamat uživatele. Optimalizace ano, ale nesmí nic rozbít ani se chovat podivně a nečekaně. *) samozřejmě, že spojení se bude vytvářet vždycky trošku jinak – i když i tohle jde zobecnit, schovat za nějakou obalovou vrstvu, které předám URL a dostanu I/O proudy, takže se budou spojení dokonce i vytvářet stejným způsobem. **) např. vědět, který uživatel se připojuje k unixovému soketu a mít možnost řídit práva stejně jako u souborů, nebo mít třeba síťovou transparentnost a možnost používání iptables pravidel.nebo by to proste emulovalo TCP pomoci UNIX socketuNěco podobného dělá patch, který tuto debatu rozvířil.
Což není abstrakce, ale spíš šamanismus – takové aplikace mám opravdu rád.Je fakt, že mělo být použito něco neobsazeného, třeba NULL nebo prázdný řetězec. Taky o tom vím jen díky tomu, že mi to za nějakých okolností nefungovalo, stejně jako ty.
Dělá a z principu je to úplně zcestné. Buď potřebuji jen vstupní a výstupní proud a pak mi dostatečnou abstrakci poskytuje stávající API* nebo potřebuji specifické** vlastnosti dané technologie a pak použiji ji – nemá cenu maskovat jednu technologii za jinou a klamat uživatele.Taky mám dojem, že TCP bypass je spíše kontraproduktivní technika, která ve skutečnosti neřeší chybějící funcionalitu kernelu, ale neschopnost nějaké googlí bezpečnostní služby, která je schopná pracovat pouze s AF_INET* a ne AF_LOCAL. Ale to je jen můj odhad, nic o tom nevím.
A co iptables pravidla, která by se měla aplikovat?
Pravidla netfilteru, queueing disciplines nebo síťové statistiky to obejde. Proto bych asi byl raději, kdyby to defaultně bylo vypnuté a zapnul si to jen ten, kdo bude chtít vyšší výkon lokálních TCP spojení za cenu toho, že některé funkce (které ale v takové situaci stejně nejspíš nebude využívat) nebudou správně fungovat. V upstreamu to zatím vypadá spíš na defaultně zapnuté (ten patch není ještě ani v net-next a poslední submitnutá verze byla s aktuálním jádrem dost rozbitá a všechny benchmarky a testy byly dělané na starších), uvidíme, co na to distribuce.
než že by OS měl dělat takovéhle hacky, podstrkávat nějaké přímé spojení a tvářit se, že je to TCP
"Takových hacků" jsou už teď spousty, např. veškeré *-offloading funkce nebo to, že se na lokální smyčce nepočítají checksumy v IP hlavičce (možná i TCP, to si z hlavy nepamatuji).
Proto bych asi byl raději, kdyby to defaultně bylo vypnuté a zapnul si to jen ten, kdo bude chtít vyšší výkon lokálních TCP spojení za cenu toho, že některé funkce (které ale v takové situaci stejně nejspíš nebude využívat) nebudou správně fungovat.+1
Tiskni
Sdílej: