OverDisk im browser abbilden
Geizhals » Forum » Programmierung » OverDisk im browser abbilden (10 Beiträge, 295 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
OverDisk im browser abbilden
18.01.2014, 23:31:48
Hi, diese freeware läßt z.B. USB-Datenträgerinhalte exportiert offline durchforsten und zeigt Inhalte bzgl. Ort und Platzbedarf anschaulich an. Leider soll sie jenseits Win 7 nicht mehr funktionieren. Mir kommt die Darstellung übersichtlicher vor, als variable quadratische Kacheln z.B. bei WinDirStat.
Alles funktioniert genauso im browser per canvas.
Das hat man damit voll im Griff.
Ich müsste die per php z.B. in zip-files eingelesenen Ordner und Dateien nur entsprechend auswerten.
Die grafische Darstellung funktioniert, samt on_click zum Aufblenden des angeblickten Ordners mittels Dateiexplorer, falls der jeweilige Datenträger gerade aktiv ist.
Dazu verwende ich fürs Erkennen des unter der Maus liegenden Abschnitts die Summe der Farben r+255*g+65025*b. Plus a (Transparenz) ging auch noch.
Array.prototype.slice.call(data,idx,idx+4) macht es mittels idx = (e.offsetY*w + e.offsetX)*4 zugänglich. Die 4 beinhaltet r,g,b,a. Damit läßt sich jedes unter der Maus liegende pixel individuell für sich farblich erkennen und nutzen, während seine Koordinaten gar nicht ausgewertet werden, zumal es damit beliebige Flächenumrandungen sein können.
Diagrammränder gehen einfach durchs Überschreiben 2er gleichartiger Diagramme, womit das erste den Rand bildet.
Jeder vordefinierte Farbwert darf nur einmal für den entsprechenden Bereich vorkommen.
Im browser lassen sich beliebig große Ringdiagramme mit mehr Details darstellen, worauf OverDisk verzichtet.

exec('dir "'.$dir.'" /S /A:-S /A:-D /T:W /O:-S',$ar); foreach ($ar as $fullFilename) {...}
bringt die Daten in ein 2dimensionales Array (dauert bei mir 2 bis 3 Minuten für z.B. 600 GB).
Ringdiagramme per canvas mit mitbewegten tooltips stellen es im browser dar. Auch Erstere wären zwar per mouseover animierbar, was aber wie auch bei der freeware unnötig ist.

Alle Komponenten müßte ich jetzt nur noch zusammenfügen.
Mit php ist ein js-Array zu befüllen. Ideal wäre wohl, gleich alles auf einmal darzustellen, also ohne den Bedarf rein zu klicken und tiefer aufzudröseln bzw. dann wieder in der Mitte hoch zu klicken.
Oder es läßt sich immer eine neue Seite aufblenden, während die Ausgangsseite bleibt, die alle Daten von php bereits erhalten hat.
Viell. hat jemand das schon mal für sich realisiert?
Oder ist OverDisk nicht so gut, es im browser zu emulieren?
Denn es können ja für das jeweilige js-Array erhebliche Datenmengen für zigtausende Ordner und hunderttausende files anfallen. Php-arrays haben damit kein Problem, alles schon ausprobiert.
Es ist wohl eine Schwachstelle, diese Texte der Odner- und file-Namen samit ihren Größenangaben in ein js-Array zu bringen.
Notfalls müßte man dann die Datenträgerstruktur in mehrere Segmente aufteilen, was sicher kein Problem wäre.
Gibts sogar noch bessere Ideen, es darzustellen?
Man hat per browserseite sozusagen unbeschränkt Platz zur Darstellung.
Zoomen könnte man viell. auch neben Neuaufblenden und scrollen nutzen.
Auch mehrere Webseiten ließen sich per php gleichzeitig aufblenden.
Oder ist das keine gute Idee?
Argumente dagegen wären sicher auch interessant.

Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
..
Re(2): OverDisk im browser abbilden
20.01.2014, 13:28:08
Habe nur win 7 64 bit drauf und im web gelesen, bei win 8 würde OverDisk nicht funktionieren.
Ich kenne kein anderes Programm, das es so darstellt und gleichzeitig abspeichern, also ohne Datenträger durchforsten lässt.
Everything (portable freeware) tut es, aber stellt es nicht grafisch übersichtlich dar.
Im browser lässt sich per php (sonst natürlich nicht) wie mit dem Dateiexplorer auf den eigenen PC zugreifen.
Dazu lassen sich scripts darstellen, die eigentlich alles abhandeln könnten, was externe Programme erledigen.
Klar habe ich z.B. WinDirStatPortable auf dem PC und kann es daher vergleichen.

Der Witz bei der Geschichte: es geht bereits alles im browser und das extrem einfach.
Ich müsste nur noch die Größe der jeweiligen Ordner incl. aller ihrer Subordner aus dem mit php eingelesenen array aufaddieren.
Damit sieht man bei OverDisk auf demselben Ring die jeweiligen Ordnerbreiten, die damit diese jeweilige darunter liegende Gesamtgröße darstellen. Nur dort ist der Dateiexplorer mit diesem geöffneten Ordner anclickbar, was natürlich auch schon längst im browser per php funktioniert.
Die optische Darstellung funktioniert auch per canvas und kann z.B. ganz genauso aussehen.
Weil das alles so einfach geht, kam ich auf die Idee, derart die Dateien und files beliebiger Datenträger für mich im browser darzustellen. Ein zip-file wird dazu per php angelegt und enthält bereits die Ordner- und File-Namen sowie deren Größe gemäß z.B.
foreach (explode("\n",` dir "$dir"  /S /A:-S /A:-D /T:W /O:-S  `) as $fullFilename) { ... bereinigen und danach alles auf einmal ins zip ... }
Gibt man in cmd.exe
dir "C:\Ordner1\Ordner2"  /S /A:-S /A:-D /T:W /O:-S
ein, dann sieht man, was abgespeichert wird.
Vor dem Abspeichern bereinige ich es mit php von überflüssigen Angaben.
php hat nix mit dem browser zu tun, läuft völlig ohne browser und generiert u.a. html, js und canvas als reinen Text, der dann als *.php oder *.html-file aufgerufen werden kann.
Canvas Riungdiagramme und bewegliche tooltips gehen sehr einfach mit sogar ganz wenig code. Jedes im browser auf dem Monitor dargestellte Pixel unter der Maus wird damit in r,g,b und a (Transparenz) bekannt, kann manipuliert werden. Das sind 255+255^2+255^3+ (Transparenz) 255^4 diskrete Werte, die man herstellen und per mouse abfragen kann. Damit lassen sich so viele jeweils gleichfarbige beliebige (also nicht nur geometrisch einfache) Flächen erkennen. Es funktioniert ganz einfach.

Wenn nun große Textmengen anfallen, ist das für php kein Problem.
Der Text muß aber in ein js-array, womit es zu riesigen browsertexten kommen würde.
Das ist viell. problematisch. Beispiel:
580 GB von 906 GB sind belegt, es gibt für diese Festplatte im zip dann 31.3 MByte unverschlüsselten bzw.  5.6 MByte komprimierten Text. Es sind insges. ca. 48 000 Ordner und 374 000 files.
php kann problemlos damit umgehen. Das jetzt aber in ein js-array schreiben zu lassen, um es im browser alles auf einmal darzustellen, könnte ein Nadelöhr werden.
Meine längsten per php hergestellten html-Seiten für den Eigenbedarf, um den PC im Griff zu haben, liegen so bei bis zu 9 MByte. Na ja, viell. gehts auch 6mal so gross.

Es macht Spass und geht zudem recht einfach.

Was ist bitte bei der Kacheldarstellung besser, als bei der Ringdarstellung?
Ideal wäre ein everything (läßt alles exportieren und ohne angesteckten Datenträger durchforsten) mit Ringdiagrammen.
Oder ist mir da was entgangen, gibts sogar was ausser OverDisk, das es exportieren lässt?
Vielleicht mache ichs dennoch, weil nur der letzte Schritt fehlt, die jeweilige Gesamtordnergröße incl. der Subordner aus dem php array zu ermitteln.
Canvas Ringdiagramme mit allen Feinheiten habe ich voll im Griff, das geht eben super einfach.
Das habe ich durch Zufall entdeckt, also ich mir z.B. eine Uhr programmierte, die jetzt auf allen Webseiten in browsern (Chrome, Firefox und Opera) kommt, weil ichs als jeweilige extension mit rein nehme.
Eigene extensions machen auch Spass.

26.01.14:
Habs heute mal wieder aufgenommen und per php alle Daten für die Darstellung.
Die Ringe enthalten in den dortigen Ordnern die Größe ihrer files und der files aller jeweils inkludierten Ordner.
Eine rekursive function erledigt das erstaunlich einfach bei beliebig verschachtelten Ordnern.
Die Daten des jeweiligen Rings sind per php einfach zu ermitteln.
Dazu kommen dann die files des inneren Vorgänger-Rings.

Das habe ich - noch nicht visualisiert - an einer verschachtelten Ordnerstruktur überprüft.
Immer wieder verblüffend, wie gut php funktioniert.
Jetzt sind die %ualen Anteile der jeweiligen Ringdiagramm-Komponenten gemäß ihrem also bekannten Gesamtgrößen-Anteil darzustellen, wobei die files des jeweils übergeordneten Ordners mit hinzu gezählt und wie bei OverDisk in einem schmäleren Segmentbereich desselben Rings dargestellt werden.
Irgendwie macht das Spass, zumal ichs im browser noch nicht gesehen habe.
Die beweglichen variablen tooltips sind dann ein Klacks, weil für die damit alles bekannt ist.
Mal gucken, entweder zu kleine files wie bei OverDisk nicht darstellen oder doch besser gleich eine große canvas-Fläche festlegen.
Die Ringe brauchen ja nicht allzu hoch zu sein, aber möglichst lang im jeweiligen Kreisumfang.
Die Summe aller Einzelgrößen eines Rings entsprechen 360° oder 2 PI.
Das geht dann mit einer eigenen canvas function z.B. (xM,yM,aussenabstand,innenabstand,startprct, endprct,r,g,b,name,alpha,rahmenfarbe) und z.B. function tooltip(x1,y1,distX,distY,w,h,eckR,left,top,i) (i ist ein durch die Farbe unter der Maus charakteristischer Index eines arrays, das dann auf z.B. Files und Ordner verweist)
Oder die Ringe waagrecht darstellen?

26.01.2014, 17:05 Uhr - Editiert von Leichtgewicht, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung