Portál AbcLinuxu, 1. května 2025 23:58
Mimochodem, jak se *notify chová při připojení/odpojení souborového systému? Jak by na to měl démon reagovat?
Například když se odpojí souborový systém, uživatel položí dotaz „vrať všechny soubory, co mají značku“, tak co teď? Má orákulum vrátit všechny nakešované výsledky, takže si uživatel vybere soubor, který už ve VFS není? Nebo má orákulum na každý soubor před vrácením znovu dělat stat()?
Ani jedno není dobré. Bude třeba do keše přidat informaci o souborovém systému, ve kterém se soubor nachází.
A co když se připojí gigantický souborový systém, který už jednou „zaindexován“ byl (třeba v jiném počítači). Bude se vše znovu přepočítávat? Neefektivní.
Bude třeba nakešované údaje před odpojením uložit do daného souborového systému.
Ale co víceuživatelské systémy? Uživatelé si nesmí vidět do cizích metadat. Takže index nemůže být přístupný pro všechny, ale musí tam být hlídač. Takže orákulum musí běžet pod privilegovaným uživatelem.
Nebo bude každý uživatel mít vlastní index? Bude se vše počítat pro každého uživatele znovu (v případě dat, kam mají přístup všichni)? Hloupost. Orákulum musí skutečně být jediný privilegovaný proces.
No a brzo z toho máme databázový/objektový souborový systém, který nikdo nepoužívá, protože je pomalý, neexistuje jednotný formát a je pouze předmět vášnivých akademických debat :)
soubor.txt.text_plain-utf8:povidka:fantasy:tvorba.txt(snažil jsem se použít znaky, které nevadí widlím, i když u té : si nejsem jistý) Ale práce s tím jako přejmenovávání a podobně by byl asi hrozný opruz
A samozrejme o takto resene tagy prijdes pokud soubor nechas kolovat v heterogennim prostredi (mimo MacOS X).Co je urcite chyba MacOS
No, chyba OS X to určitě není.No, je to dusledek rozhodnuti vyvojaru Mac OS X. Takovou vec jako tagovani souboru je mozne implementovat nekolika zpusoby a je na vyvojarich, zda vyberou zpusob vicemene kompatibilni s celym svetem (napr. pomoci skryteho souboru s tagy pro soubor nebo pro adresar) nebo zpusob nekompatibilni s vicemene celym svetem (pomoci rozsirenych atributu). Ja tedy presne nevim, jak to v Mac OS X maji implementovane, mozna tam maji nejake triky pro zajisteni kompatibility (napr. ze by nepouzival ciste reseni postavene na rozsirenych atributech, ale michal by ho s pouzitim skryteho souboru).
._
nebo tak nějak a do něj dumpne ty atributy. Dost silně provařený je soubor .DS_Store
, který dost často lidem vadí. Stačí připojit například foťák s FATkou a už ho tam máš. cp
, mv
, tar
, zip
s atributy transparentně zacházejí. Když potřebuješ něco víc, ditto
je tvůj kamarád. A teď o tom, jak OS X neztrácí atributy. Problematický je přenos přes média, která nepodporují rozšířené atributy.Nejde jen o media (resp. filesystemy), ktere nepodporuji rozsirene atributy. I kdyz soubor nahraju na fs, ktery rozsirene atributy podporuje, tak pak medium muzu zapojit do OS, kde znacna cast programu rozsirene atributy ignoruje, a pokud se neporevede stejny workaround, tak se pri praci s tim souborem nejspis rozsirene atributy co nevidet ztrati. Nebo treba multiplatformni programy, prelozene pro Mac OS X - bud se pro ne budou emulovat ty vlastni soubory s dumpnutymi atributy i na primarnim FS, nebo je v nekterych pripadech budou ztracet. Nebo treba presun pres FTP a spoustu dalsich sitovych protokolu. Proste bez ohledu na to, jak jsou extended atributy implementovane na urovni FS, bylo by rozumne mit nejake jejich standardni vnoreni do bezneho prostoru souboru, aby se nemusely predelavat vsechny stavajici souborove protokoly a programy.
FTP protokol, sdílené disky Windows a tak podobně se na OS X chovají naprosto stejně jako FAT.Ja se na to koukam z hlediska programatora, nikoliv z hlediska uzivatele. U zapisu na FS tohle reseni muze zajistit OS, ale u sitovych protokolu to musi zajistit ten, kdo ten sitovy protokol implementuje, tedy obvykle primo aplikace. Oproti tomu pokud se rozsirene atributy budou tvarit jako soubory, vse bude fungovat pro aplikace transparentne (akorat pri operacich nad samotnymi soubory budou muset kopirovat i prislusne atributove soubory, coz je ale trivialita proti rozsireni sitovych protokolu o nove operace cteni a zapisu rozsirenych atributu).
copyFile()
a tak podobně, které zařídí vše potřebné.
Proč by měla každá aplikace řešit něco, co má zajistit operační systém (nebo desktopové prostředí, kernelu je po tom putna)?
Když to dotáhnu do extrému, nevidím jediný problém používat třebas API konqueroru v případě KDE aplikací. Chci kopírovat soubor? Řeknu konqueroru, ať to za mě udělá. Okýnka si taky nekreslíš sám po pixelech. Pakety taky nelepíš v nějakym ByteArray; smažíš data do Streamu a zbytek tě nezajímá.
Já to prostě vnímám jako službu, funkcionalitu, další API. A jestli to API to bude realizovat přes rozšířené atributy nebo přes Web 2.0 .DS_Store
, Desktop.ini
, Thumbs.db
a podobných. Najednou máš v adresáři dvakrát tolik souborů a blbě se v tom orientuje.
Konzervativní řešení:
dd if=/dev/urandom of=~/soubor count=42 ln -s ~/soubor ~/kategorie/bordel
Spokojen?
Ne? Tak si kategorii strč do rozšířeného atributu, a přes fa_notify(2) probuď démona, který ten symlink za tebe udělá. A pokud si necheš zaneřádit systém odkazy, tak nech démona dělat symlinky přes FUSE, který si můžeš namountovat, kam je libo.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.