Zachování vypočítané velikosti podadresářů

Vítáme všechny návrhy na nové funkce a vylepšení programu Altap Salamander. Pro každý návrh prosím vytvořte samostatný příspěvek.
User avatar
SelfMan
Posts: 1155
Joined: 05 Apr 2006, 20:51
Contact:

Zachování vypočítané velikosti podadresářů

Post by SelfMan »

Mna by skor v tejto veci zaujala moznost zachovania zobrazenia vypocitanej velkosti pri prechadzani (pod)adresarmi.
Priklad:
Adresar obsahuje 10 podadresarov.
- CTRL+SHIFT+F10 zistim velkosti
- adresare zotriedim podla velkosti
- vojdem do najvacsieho a pozriem co a ako
- dam backspace - navrat o uroven vyssie a informacia o velkosti je stratena co ma opatovne nuti pouzit CTRL+SHIFT+F10

Je mi jasne, ze obsah podadresarov sa moze (ale nemusi) zmenit. Pokial viem API windows poskytuje moznost notifikacie pri zmene obsahu adresara. Da sa toto vyuzit v Salamandrovi?

Casto krat kontrolujem velkosti adresarov a suborov na diskoch a tam, kde je to potrebne vykonam "cistky". (spravovanie pocitacov je obcas ako zlatokopecka robota a ludia pohadzu na pocitace vselico... niekedy aj mnohe aplikacie, ktore po sebe nevedia upratat)
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Odtrhnul jsem tento požadavek do vlastního vlákna.

Notifikace o změnách na souborovém systému Salamander používá (ale pro jiné účely), viz automatické obnovování panelů.

Pokud napočítáme velikost adresáře, známe zároveň i velikost jeho podadresářů, takže následně už by stačilo tuto informaci zobrazovat.

Mohli bychom odlišit aktuální/pamatovaná data, například před velikost vložit znak '~'.

Již jsme jednou tuto funkci zkoušeli implementovat, ale nakonec jsme jí odstranili. Jeden z problémů: jak se jednoduše uživatel zbaví napočítaných velikostí? Nyní stačí opustit adresář a jeho podadresáře zapomenou své velikosti.

Zatím mám alespoň jeden tip: v jednom panelu napočítat velikosti adresářů a ty pak procházet ve druhém panelu. Viz zkratky Ctrl+Shift+Left a Ctrl+Shift+Right.
http://www.altap.cz/salam_en/features/k ... navigation

Olhledně úklidu adresářů bychom časem velice rádi v Salamanderu viděli plugin pro grafickou vizualizaci rozložení velikosti souborů mezi adresáři.

Mrkněte na
SequoiaView http://www.win.tue.nl/sequoiaview/
SpaceMonger http://www.sixty-five.cc/sm/img/sm1x-large.gif
Disk Invertory X http://www.derlien.com/
KDirStat http://kdirstat.sourceforge.net/kdirstat/
FileLight http://www.methylblue.com/filelight/

Naše představa je taková, že by uživatel mohl snadno z tohoto okna přejít do panelu Salamandera (viz příkaz Focus v okně Find).

Konkrétně SequoiaView jsem nainstaloval několika kamarádům, kteří stěží chápu pojem adresář a výsledek byl velice kladný. Hned pochopili, kam že se to ztratilo jejich volné místo na disku :) Pěkné je barevné rozlišení bloků podle přípony (MP3, AVI, atd.)

Používáte někdo software s jiným způsobem vizualizace obsazení místa na disku?
User avatar
SelfMan
Posts: 1155
Joined: 05 Apr 2006, 20:51
Contact:

Post by SelfMan »

Ouch SequoiaView: Skakajuce ninjakorytnacky...
Toto je mozno naozaj riesenie pre amaterov, ale nemyslim si ze by to potesilo profesionalnejsich uzivatelov.

Co sa tyka zbavenia sa vypocitanych hodnot, myslim, ze nie je problem urobit z CTRL+SHIFT+F10 "prepinac", ktory by nesluzil len na zapnutie, ale aj na vypnutie. Opatovne prepocitanie sa moze robit but automaticky, alebo po CTRL+R.
Ono, ked mam potrebu zobrazovania velkosti adresarov, tak mam ako uzivatel na to dovod. Pokial tato potreba pominie, viem tuto moznost vypnut.

Tip samozrejme poznam, prakticky nie je v tom, ked clovek data premiestnuje do inej lokacie. Salamander ma uz tolko funkcii, ze aj za tymto ucelom je mozne vytvorit "bchadzku" cez ine funkcie.

Ako vravim, mne ide skor o moznost prepinaca. Osobnew si myslim, ze implementacia takejtto v podstate uz existujucej veci nie je komplikovana.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

SequoiaView: Salamander by určitě neměl být nástroj pouze pro IT profesionály. Navíc si myslím, že i ty by mohlo zajímat, kam se podělo volné místo na jejich discích.

Ohledně zapomenutí napočítaných velikostí adresářů: mimo Ctrl+Shift+F10 je tu ještě příkaz Space a Alt+F10. Pokud nebude možné se napočítaných velikostí zbavit elegantně, většina uživatelů takovou funkci nenajde.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Post by zarevak »

Dobrý den,
podobně jako uživatel SelfMan provádím čistky pomocí CTRL+SHIFT+F10 a druhého panelu. Bohužel při smazání několika souborů v podadresářích se hodnoty velikostí nepřepočítají. Bylo by možné tato čísla aktualizovat? (alespoň při operacích v SS)
Smazání - SS ví, kolik dat smazal a toto číslo by mohl odečíst od spočítané velikosti nadřazeného adresáře (a případně přidat ~, protože tato hodnota nemusí být přesná)
Přesun - SS ví kolik dat se odkud kam přesunulo, takže si může aktualizovat velikosti podobně jako u mazání (odečíst, přičíst)
Kopírování - Podobně jako u přesunu, jen by se u nového adresáře hodnoty přičítaly....

Se změnami, které mohou v adresářích provádět jiné programy bych zas moc nepočítal, protože pak by ta čísla mohla docela dosti skákat a při seřezení podle velikosti bychom se nemuseli stačit divit... Stačilo by v takovém připadě nejspíš přidat Vámi navrhovaný znak ~, kterým by se označilo, že hodnota již není aktuální.

Co se týče zbavení se výsledků, tak jsem proti znovu použití CTRL+SHIFT+F10 pro vypnutí, protože tato klávesova by měla sloužit pro pro obnovení výsledků... (CTRL+R v součastnosti obnoví jen výpis a hodnoty nepřepočítává. Mohlo by být zmatečné, kdyby se měnilo chování podle toho, zda se zobrazují velikosti adresářů nebo ne)
User avatar
Datalog
Posts: 244
Joined: 10 Dec 2005, 11:21
Location: Prague, Czech Republic
Contact:

Post by Datalog »

zarevak wrote:... Bylo by možné tato čísla aktualizovat? (alespoň při operacích v SS)
Smazání - SS ví, kolik dat smazal a toto číslo by mohl odečíst od spočítané velikosti nadřazeného adresáře (a případně přidat ~, protože tato hodnota nemusí být přesná)
Přesun - SS ví kolik dat se odkud kam přesunulo, takže si může aktualizovat velikosti podobně jako u mazání (odečíst, přičíst)
Kopírování - Podobně jako u přesunu, jen by se u nového adresáře hodnoty přičítaly....
:D Už je to tady

Ono zapamatovat si čísla není možná až takový problém. Jen jsem čekal, kdo se ozve, že by se mělo automaticky (rychle, interním způsobem) aktualizovat při tom či onom. Nejprve jen pro pár operací v rámci Salamandera a již nasčítaných. Pak i při operacích s nenasčítanými (btw, při přesunu SS neví kolik bylo přesunuto, pokud přesouvá z adresáře který předem nenasčítal, takže by se musel speciálně ošetřit move).
A kdyby to bylo hotovo, tak se objeví někdo kdo bude chtít interní aktualizace nasčítání i při přesunu z/do pluginu (ftp, mobile device) ...
A koneckonců, proč by neměl Altap napsat svůj vlastní filesystem který by to všechno řešil.

To pak zapamatování nebude nikdy, neb se Altap bude (oprávněně) bát, že když ho udělá jen napůl, že to bude zmatečné a uživatelé budou řvát že je to špatně.

Takže navrhuji zapamatování nasčítání ano (s ~), ale žádné další interní poloaktualizace. Přepočítat pouze na ruční požadavek.
Rada
Posts: 43
Joined: 09 Dec 2005, 16:34
Location: Brno, Česko

Post by Rada »

Já bych to udělal jednoduše takto: po vypočítání velikosti adresářů zůstane hodnota zachována, ale pokud Salamander zjistí někde změnu, tak u takových adresářů se přestane zobrazovat velikost adresáře (pokud uživatel znovu nespustí výpočet)
Mělo by to být i dostatečně rychlé.
Ve výsledku se bude tato hodnota objevovat jen u některých adresářů a obnovit u všech půjde vždy tlačítkem.

(pokud toto už někdo navrhoval, tak sry, nečet sem vše)
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

Napadá mě jedna věc: operace probíhají na pozadí, průběžná aktualizace velikostí by nebyla asi moc přívětivá (překreslování panelu, změny pořadí při seřazení podle velikosti).

Momentálně si nejsem jistý, zda u všech operací dokážeme zjistit jejich dopad na místo (například u mazání do koše určitě ne). Navíc by tento výpočet zase o něco zkomplikoval rutiny operací.

Základní funkcí tohoto nového režimu by mělo být, že po vstupu do napočítaného podadresáře budou vidět velikosti jeho podadresářů. K tomu bude však potřeba během výpočtu velikosti alokovat strom s názvy podadresářů a jejich velikostí. Tím nám vzroste paměťová i výpočetní náročnost (adresářů můžou být na disku desítky až stovky tisíc). Je pak otázkou, zda stavbou stromu zatěžovat každý výpočet velikosti nebo strom stavět pouze v případě, že uživatel předem zapnul volbu "drž velikosti". Tato volba by mohla být indikována zmíněným znakem ~ před velikostí adresáře (pouze u velikostí napočítaných PO zapnutí volby). Vypnutím volby by znak ~ měl zase zmizet? Měla by volba platit pro oba panely nebo být oddělená pro každý panel?

To se nám to pěkně komplikuje, úplně si vybavuji, proč jsme ten experimentální kód zahodili :)
User avatar
Datalog
Posts: 244
Joined: 10 Dec 2005, 11:21
Location: Prague, Czech Republic
Contact:

Post by Datalog »

Jan Rysavy wrote:Napadá mě jedna věc: operace probíhají na pozadí, průběžná aktualizace velikostí by nebyla asi moc přívětivá (překreslování panelu, změny pořadí při seřazení podle velikosti).
Jj, to by nebylo příjemné - a časem by zaručeně přišel požadavek na "zmrazení" aktuálního stavu a zobrazení nasčítaného až na požádání. Takže by existovaly 3 stavy, 3 čísla (zobrazovaný, polonasčítaný a reálný) pro každý adresář, z nichž 2 (zobrazovaný, polonasčítaný) byste museli schovávat a vymýštel jak je zobrazovat a vyvolávat a přitom nejméně zmást méně zkušené uživatele.
Jan Rysavy wrote:Momentálně si nejsem jistý, zda u všech operací dokážeme zjistit jejich dopad na místo (například u mazání do koše určitě ne). Navíc by tento výpočet zase o něco zkomplikoval rutiny operací.
Těch problematických míst budou kvanta. Namátkou. Veškeré operace probíhající mimo Salamander (nevím nakolik spolehlivě jde použít changenotify i na subdir, ale rozhodně by to znamenalo znovunačtení kusu stromu). I v rámci Salamandera neznáte velikost při move z nenasčítané části - takže místo "blik" a přesunuto v rámci partition by se dopočítávalo místo, unpack při použití externího sw, atd, atp ...
Jan Rysavy wrote:Základní funkcí tohoto nového režimu by mělo být, že po vstupu do napočítaného podadresáře budou vidět velikosti jeho podadresářů. K tomu bude však potřeba během výpočtu velikosti alokovat strom s názvy podadresářů a jejich velikostí. Tím nám vzroste paměťová i výpočetní náročnost (adresářů můžou být na disku desítky až stovky tisíc).
S tím se počítá (resp. nedá nic dělat), ale alokovat jen když bude volba zapnuta - viz níže.
Jan Rysavy wrote: Je pak otázkou, zda stavbou stromu zatěžovat každý výpočet velikosti nebo strom stavět pouze v případě, že uživatel předem zapnul volbu "drž velikosti".
Pouze při zapnuté volbě. Chcete-li si přidělat práci, tak přidejte další volbu "na pozadí udržovat nasčítané" (udržovat, ne zobrazovat).
Jan Rysavy wrote: Tato volba by mohla být indikována zmíněným znakem ~ před velikostí adresáře (pouze u velikostí napočítaných PO zapnutí volby).
To by bylo ideální.
Jan Rysavy wrote: Vypnutím volby by znak ~ měl zase zmizet?
Vypnutím volby by měla zmizet všechna čísla s ~ a nahradit je "DIR" nebo aktuální reálnou velikostí (znáte-li ji a máte jistotu že taková je).
Jan Rysavy wrote: Měla by volba platit pro oba panely nebo být oddělená pro každý panel?
Podle toho, co se Vám bude lépe programovat.
User avatar
SelfMan
Posts: 1155
Joined: 05 Apr 2006, 20:51
Contact:

Post by SelfMan »

Nuz, mne islo hlavne o to, aby sa vypocitane hodnoty zachovaly pri prechadzani adresarmi. V kazdom pripade pocitam s tym, ze pokial by bola tato volba zapnuta, bude aj praca ci zobrazovanie o nieco pomalsie.
Co sa tyka vypoctov do hlbky, bolo by mozne nechat tuto volbu na uzivatelovi. Mne by uplne stacilo aktualny adresar + 2 dalsie urovne do hlbky.
Pokial by nastala v adresaroch s vypoctom zmena, je tu moznost indikacie zmeny spomenutou ~ alebo farebne avsak so zachovanim hodnoty. Uzivatel ma potom moznost manualneho vynutenia noveho prepoctu.
Volba by mala byt platna pre kazdy panel samostatne s tym, ze pokial by bol pohyb, v napriklad pravom paneli, pohybom v podadresaroch laveho panelu, inormacie by sa automaticky "dedili". Ale to uz je len taka "vychytavka".
S volbou "[x] Automaticky pocitat velkosti adresarov" s vlastnou klavesovou skratkou suhlasiim. (Napriklad CTRL+Shift+F10 podrzane 1s)
User avatar
Datalog
Posts: 244
Joined: 10 Dec 2005, 11:21
Location: Prague, Czech Republic
Contact:

Post by Datalog »

Ještě mne napadá jedno obrovské problematické místo při nasčítávání na pozadí.

Častokrát spouštím více salamanderů na pozadí. A nedělám to jen proto, že neexistují vícepanelové záložky. Podobně jako u browseru s taby někdy použiji taby, někdy nové okno.

Takže byste při udržování aktualizovaného stromu museli řešit vzájemnou komunikaci všech spuštěných salamanderů, nebo hledat změny velikosti hrubou silou - druhá instance by se chovala jako cizí sw a změny by se nasčítávaly novým projetím stromu.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Post by Jan Rysavy »

SelfMan wrote:Nuz, mne islo hlavne o to, aby sa vypocitane hodnoty zachovaly pri prechadzani adresarmi. V kazdom pripade pocitam s tym, ze pokial by bola tato volba zapnuta, bude aj praca ci zobrazovanie o nieco pomalsie.
Co sa tyka vypoctov do hlbky, bolo by mozne nechat tuto volbu na uzivatelovi. Mne by uplne stacilo aktualny adresar + 2 dalsie urovne do hlbky.
Dvě úrovně do hloubky: to se mi nelíbí, někdy to může stačit, někdy ne. Navíc to bude naprosto zmatené z hlediska uživatele (proč právě dvě úrovně?). V důsledku by to vedlo na další položku v konfiguraci, což pro takto okrajovou funkci nechceme. Jednoznačně je třeba napočítat a držet celý strom.

SelfMan wrote:Pokial by nastala v adresaroch s vypoctom zmena, je tu moznost indikacie zmeny spomenutou ~ alebo farebne avsak so zachovanim hodnoty. Uzivatel ma potom moznost manualneho vynutenia noveho prepoctu.
My nepoznáme, že v adresáři změna nastala. I kdybychom sledovali notifikace (to by byla slušná komplikace), stejně to problém neřeší, protože notifikace běžně nefungují na síťových discích.
SelfMan wrote:S volbou "[x] Automaticky pocitat velkosti adresarov" s vlastnou klavesovou skratkou suhlasiim. (Napriklad CTRL+Shift+F10 podrzane 1s)
Měl jsem na mysli spíš přepínač v menu "[x] počítat a držet velikosti podadresářů".

Horká klávesa držená 1 vteřinu, to není šťastné řešení... viděl jste někdy něco takového ve Windows? Zkuste se mrknout na základní principy návrhu solidního uživatelského rozhraní: http://msdn.microsoft.com/library/defau ... elromelasp
User avatar
SelfMan
Posts: 1155
Joined: 05 Apr 2006, 20:51
Contact:

Post by SelfMan »

Dvoma urovnami som mal na mysli akusi internu cache.
Ale mate pravdu v tom, ze ked uz sa to pocita tak uz je to asi jedno.

Co sa tyka internych procesov a API windows, tak tam mate urcite ovela ovela viac skusenosti ako ja. Sice programujem, ale iba v prostredi LAMP.

Co sa tyka pocitania velkosti adresarov neviem, ci je na to potrebne permanentne zapnutie. Vacsinou si to clovek vyvola ked s tym pracuje, resp. ked to potrebuje. Za inych okolnosti mu to je zbytocne.
Povazujem to za temporalnu volbu obmedzenu na dlzku pouzitia.
To je aj taka otazka do plena: Pouzival by niekto z uzivatelov tuto volbu permanentne? Prosim nazory.
Horká klávesa držená 1 vteřinu, to není šťastné řešení... viděl jste někdy něco takového ve Windows?
Nuz, k tomu mozem len uviest jedno miesto... je nim "Ovladanie jednym prstom" vo Windows. Zapne sa pri dlhsom podrzani klavesy shift.
User avatar
Datalog
Posts: 244
Joined: 10 Dec 2005, 11:21
Location: Prague, Czech Republic
Contact:

Post by Datalog »

SelfMan wrote:... Pouzival by niekto z uzivatelov tuto volbu permanentne? Prosim nazory.
Já bych to určitě neměl "stále" zapnuté. Ovšem co potom znamená "nestále". V mém případě nestále může být i 1h-3h, když na pozadí mezi překlady uklízím disk. Navíc síťový disk (např. netcenter), na který si druhé PC sahá - většinou čte, ale přesuny (i velkých celků) nejsou vyloučeny.
User avatar
SelfMan
Posts: 1155
Joined: 05 Apr 2006, 20:51
Contact:

Post by SelfMan »

Mam na mysli zapnutie len vtedy, ked s tym clovek pracuje, cize tieto informacie potrebuje/chce. Proste prepinac ON/OFF formou klavesovej skratky, aby sa vyhol neustalemu stlacaniu CTRL+SHift+F10 ci inych ekvivalentov.
Post Reply