Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Aramys 09. 02. 2016, 19:40:44
-
Ahoj. Potřeboval bych poradit, nenapadá někoho, jak by šlo vytvořit nějaké unikátní id (buď číslo nebo string je mi to jedno) pro název adresáře umístěného v nějaké cestě ?
Příklad
/root/foo # UID 46487
/root/foo/bar # UID 25487
/root/foo/bar/foo # UID 87987
Prostě záleží nejen na názvu ale taky na umístnění. Pokud někoho něco napadne prosím o tip.
-
Hash cele cesty?
-
číslo nebo string => string => pouzit tu cestu? he?
-
Pokud to ma byt na jednom FS, muzes si vytahnout cislo inode (viz napriklad ls -i), jinak hash se vsemi z toho plynoucimi riziky
-
Hash cele cesty?
A jak se to dela ? Díky
-
Pokud to ma byt na jednom FS, muzes si vytahnout cislo inode (viz napriklad ls -i), jinak hash se vsemi z toho plynoucimi riziky
Jaké rizika máte na mysly ?
-
Pokud to ma byt na jednom FS, muzes si vytahnout cislo inode (viz napriklad ls -i), jinak hash se vsemi z toho plynoucimi riziky
Jaké rizika máte na mysly ?
Pokud se hashovaci funkce zvoli spatne, bude dochazet ke kolizim (ono tedy k nim teoreticky dojde vzdycky i pri dobrem hashovani, ale to chce mit skutecne stesti). Zrovna adresare maji specifickou vlastnost, ze jejich prefix se porad opakuje, dobra hesovaci funkce s tim ale pocita (v teto oblasti bych rekl ze i md5 je dostatecne dobra, i kdyz pro jine ucely uz moc ne). Jake je vlastne omezeni na ta cisla? int64 nebo tak neco?
-
Omezení je dané pouze délkou názvu suboru, ten hash bude vlastně název souboru. Nikde ale nemůžu najít jak se to dělá. Normalní příkaz na adresář mi vrací chybu, že soubor je adresář :(
-
Omezení je dané pouze délkou názvu suboru, ten hash bude vlastně název souboru. Nikde ale nemůžu najít jak se to dělá. Normalní příkaz na adresář mi vrací chybu, že soubor je adresář :(
No a v cem to pises a o co se pokousis?
Obecne hashovaci je funkce je funkce, ktera dostane blok dat (napr. string) a vrati neco jako dlouhe cislo nebo string. Delka vysledku zalezi na pouzite funkci. Nedavno tu o tom byla diskuze, kde se jeden pokousel spojit vysledky dvou ruznych hashovacich funkci (coz by v tvem pripade bylo docela v pohode, ale o tom se diskutovalo tam a sem bych to netahal).
-
Použijte UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier), to je pro takovéhle případy dělané.
-
Nové forum vypadá odporně a je to samá reklama. Vážně bylo nutné přesně okopírovat barvy Ubuntu? ... ale poradím.
Na jednom serveru jsem řešil jak zakládat velké množství unikátních uživatelů a nakonec jsem použil tvar u0123456789 generovaný spojením písmenka a příkazu date +%s . Když nebudeš generovat víc než adresář za sekundu tak to bude fungovat.
-
Proc tam nedas celou tu cestu, jak tu bylo receno, string to je ... a unikatni v ramci danyho uloziste zcela jiste taky. Navic pak nemusis vymejslet, jak bude ID prevadet zpet na cestu ...
-
Jak jsem psal, nejde to, píše to, že se jedná o adresář a jiná rada tady nepadla..
-
jiná rada tady nepadla..
Byly tady minimálně tři jiné rady – hash cesty, inode adresáře a UUID.
-
Jak jsem psal, nejde to, píše to, že se jedná o adresář a jiná rada tady nepadla..
Ukážete nám, jak ten kód na tvorbu hash vypadá? Strkáte tam opravdu cestu jako string? Nebo při použití bez hash - pouze cesty, jde opravdu o string cesty?
-
Tak jak už tu zaznělo, ta cesta je unikátním identifikátorem (pokud nejde o soubory z různých systémů apod.). Takže pokud potřebuješ jiný, vysvětli jaký má mít charakter a k čemu to je potřeba.
"píše to, že se jedná o adresář a jiná rada tady nepadla" - zaprvé padla a za druhé co ti to píše, nějaký program, jaký? Doposud zde o něm nebylo řeči. Prostě zformuluj srozumitelně co potřebuješ a jestli něco zkoušíš, tak co. Často v bodě, kdy toto vyjádříš, sám pochopíš, jak to řešit, případně že to řešení nemá (požadavek je nesmysl).
Pokud nejde o nějakou školní úlohu, tak pravděpodobně řešíš problém, pro který existuje sto již hotových řešení, jejichž kvality při nejlepší snaze nedosáhneš (archivace, synchronizace,...).
-
Skoro bych tipoval, že mistr místo hashe z cesty dělal hash z obsahu pomocí programu ve stylu md5sum a proto ta hláška, že se jedná o adresář. Osobně si myslím, že je tazatel natolik zmatený, že je tady každá rada drahá. Zůstal bych u toho, že cesta je v rámci systému dostatečným identifikátorem a dokud tazatel neuvede, co mu na cestě vadí, nemá smysl žádný jiný hledat.
-
Skoro bych tipoval, že mistr místo hashe z cesty dělal hash z obsahu pomocí programu ve stylu md5sum a proto ta hláška, že se jedná o adresář. Osobně si myslím, že je tazatel natolik zmatený, že je tady každá rada drahá. Zůstal bych u toho, že cesta je v rámci systému dostatečným identifikátorem a dokud tazatel neuvede, co mu na cestě vadí, nemá smysl žádný jiný hledat.
Já bych řekl, že ten tip bude mít pravděpodobnost hraničící s jistotou :-D. Patlala co tomu nerozumí a nechce se to naučit.
-
Patlala co tomu nerozumí a nechce se to naučit.
Nebuďte na něj zlej, každej nějak začínal :D On neumí předat string, zato zde Vážené iinfo neumí za 2 týdny přepsat v šablonách http na https. Tak mě napadá, nebude to někdo od nich? :o ;D ;D
-
$ pwd | sha256sum
9e26f8fed521b419d19aa9d398033b2fc3342bc1e8f662346e339ab8c9e04096 -
Tot vsjo...
-
Ahoj. Potřeboval bych poradit, nenapadá někoho, jak by šlo vytvořit nějaké unikátní id (buď číslo nebo string je mi to jedno) pro název adresáře umístěného v nějaké cestě ?
A co mktemp?
martin@martin:~$ mktemp -dt
/tmp/tmp.7mCD8330Xx
martin@martin:~$ mktemp -dt
/tmp/tmp.LdQwcJ0bAU
martin@martin:~$ mktemp -dt --tmpdir=/home/martin/Plocha
/home/martin/Plocha/tmp.9u1TMF6wBr
martin@martin:~$ mktemp -dt --tmpdir=/home/martin/Plocha
/home/martin/Plocha/tmp.sBcr7Ne3xK
martin@martin:~$ mktemp -dt --tmpdir=/home/martin/Plocha --suffix=_007
/home/martin/Plocha/tmp.WgWkmRWsT2_007
martin@martin:~$ mktemp -dt --tmpdir=/home/martin/Plocha --suffix=_007
/home/martin/Plocha/tmp.YsfTrCnRd5_007
martin@martin:~$