Moin

Antworten
Benutzeravatar
Shung
Beiträge: 70
Registriert: Mi 8. Jan 2014, 00:20

Moin

Beitrag von Shung » Mi 8. Jan 2014, 06:02

ich heisse Jimmy und wollte mich zunächst einmal vorstellen.

vorweg : Ich finde DigiJay Cool ! was der Programmierer da geleistet hat WOW !

fast noch besser finde ich hier das Forum und deren User die sich rege beteiligen !
es gibt wohl auch einige Programmierer unter den Usern die zusätzliche Tools und Design anbieten, vielen Dank !

***

ich bin Datenbank Programmierer ( DBF / SQL ) und deshalb ein wenig überrascht über das XML Datenbank Format ?

beim "Import-HDD" oder eines Ordners scheint alles in einem Thread zu laufen ? kein Multithreading ?
nach dem Import wird das Ergebnis dann in einem ListView (?) angezeigt ... aber erst wenn er "alles" hat ?

Ich brauche aber nicht "alles" denn es passt ja eh nicht auf 1 Seite.
es reicht also ein SQL Cursor mit LIMIT LVM_GETCOUNTPERPAGE ( Listview Macro ) für die 1 Seite
und der Rest wird wie beim Explorer nachgeladen ( kein LVM_ENSUREVISIBLE )

Suchen / Index :
bei einem "click" auf den Header ändert er ja die Sortierung.
Ich verwende diesen Wunsch dann auch automatisch auf eine Suche welches sich im Footer des Listview befindet.
damit kann ich dann auch ganze Mengen (Bereich), nicht nur einzelne Treffer, zur Auswahl stellen.

gerade das "suchen" in grossen Datenbeständen ist das Problem wenn man nicht genügend Stichworte zum eingrenzen hat.
ein Listview, wenn weniger Treffer als LVM_GETCOUNTPERPAGE, könnte man mit "unscharfen" (Soundex) Treffern auffüllen.

ich denke eine SQL Engine als Backend wäre das i-Tüpfenchen für DigiJay ;)

p.s. bin leider kein .NET Programmierer sondern mache alles native über Windows API
gruss, Shung
Benutzeravatar
muntablues
Administrator
Beiträge: 2638
Registriert: Mo 29. Sep 2008, 20:51
Wohnort: Feldkirch

Re: Moin

Beitrag von muntablues » Mi 8. Jan 2014, 17:59

Hoi Jimmy

Dann erklär ich mal ein paar Sachen.

XML hab ich genommen, damit ich keinen SQL Server aufsetzen muss. Heute gäbe es zwar ein paar Möglichkeiten, aber das ist halt alles Arbeit und viel Zeit ist derzeit nicht übrig. Weiters ist das XML eigentlich nur zum Speichern da, beim Start wird alles ins RAM geschoben und dann greif ich gar nicht mehr auf die Files zu. Somit kann ich sagen, schneller gehts nicht mehr ;-)

HDD Import: Jo der läuft nicht parallel, aber das macht meist bei einer "normalen" HDD keinen Sinn, da der Kopf dann in der Gegend herum hüpfen muss. Bei SSD würde es sicher was bringen, aber wer hat die Daten auf SSD?

Anzeige der Daten: Kommt nach dem Start oder nach dem Import direkt aus dem RAM, also denke ich dass es schnell genug ist. NAtürlich könnte man beim Import schon alles nach und nach anzeigen lassen, aber dann müsste ich sehr viel in Sicherheit für das Multithreading einbauen und das steht meiner Meinung nach nicht dafür...

Suche/Index: Das versteh ich nicht ganz, da musst du mal genauer werden...

So denn,
Gruß MB

Bild
Benutzeravatar
Shung
Beiträge: 70
Registriert: Mi 8. Jan 2014, 00:20

Re: Moin

Beitrag von Shung » Do 9. Jan 2014, 00:41

hi,

als Datenbank Programmierer musste ich einen Statement zu dem Thema machen ;)
muntablues hat geschrieben:XML hab ich genommen, damit ich keinen SQL Server aufsetzen muss. Heute gäbe es zwar ein paar Möglichkeiten, aber das ist halt alles Arbeit und viel Zeit ist derzeit nicht übrig.
OK wenn du an ein Client / Server System denkst ... aber SQLite wie Firefox es verwendet wäre doch möglich.
muntablues hat geschrieben:Weiters ist das XML eigentlich nur zum Speichern da, beim Start wird alles ins RAM geschoben und dann greif ich gar nicht mehr auf die Files zu. Somit kann ich sagen, schneller gehts nicht mehr ;-)
ja ... aber das einlesen von vielen XML Datein, welche ich in %AppData%\DigiJay\DATA gefunden habe, dauert ziemlich lange ...
muntablues hat geschrieben:HDD Import: Jo der läuft nicht parallel, aber das macht meist bei einer "normalen" HDD keinen Sinn, da der Kopf dann in der Gegend herum hüpfen muss. Bei SSD würde es sicher was bringen, aber wer hat die Daten auf SSD?
sorry ich meine das der Player "blockiert" ist wenn man einen Import macht, oder ?
muntablues hat geschrieben:Anzeige der Daten: Kommt nach dem Start oder nach dem Import direkt aus dem RAM, also denke ich dass es schnell genug ist. NAtürlich könnte man beim Import schon alles nach und nach anzeigen lassen, aber dann müsste ich sehr viel in Sicherheit für das Multithreading einbauen und das steht meiner Meinung nach nicht dafür...
Ich möchte während des Import schon live zugreifen können.

angenommen man bekommt, während der Player läuft, einen USB Stick vom Gastgeber wo mehrere Musik Stücke zu übernehmen sind.
ich könnte jetzt versuchen die Dateien auf dem USB-Stick zu suchen und dann per DragDrop in die Playlist einfügen
oder per Import ins Archive was in einem extra Thread laufen sollte.

zugegeben spreche ich hierbei wieder von einer Datenbank wo mehrfach Zugriffe kein Problem darstellen
muntablues hat geschrieben:Suche/Index: Das versteh ich nicht ganz, da musst du mal genauer werden...
die Verknüpfung von Such Begriffen geht z.Z. nur mit dem = ( AND ) Operator.
ich kann zwar nach 1970 suchen aber nicht nach

Code: Alles auswählen

>= 1970 .AND. <= 1980
... oder die Notizen ( gute Idee ) wo nicht gesucht wird.

du sagst du hast alles im RAM, KLASSE !
dann brauchst du nur, statt XML, die SQL Datenbank einlesen.

beim beenden von DigiJay muss man dann den RAM nicht zurückschreiben und keinen Datenverlust befürchten.

wie schon gesagt alles aus der Sicht eines Datenbank Programmreis der ein Video Player / Cutter ( WMP/ VLC / AviSynt ) um eine Datenbank herum gebaut hat.
gruss, Shung
Benutzeravatar
muntablues
Administrator
Beiträge: 2638
Registriert: Mo 29. Sep 2008, 20:51
Wohnort: Feldkirch

Re: Moin

Beitrag von muntablues » Do 9. Jan 2014, 12:35

Ich denke SQL bringt mir nicht viel, denn das Laden der XML ghet relativ schnell, da wirklich nur die MP3 Infos drin sind. Natürlich dauert es länger wenn die Cover auch noch drin sind, aber das würde bei einer SQL auch dauern. Danach ist ja alles im RAM und da gibts eh nichts schnelleres...

Import und Sperre: Das ist natürlich nur, weil es für mich viel einfacher ist. Wenn ich hier den User weiter machen lassen würde, müsste ich sehr aufpassen, dass mir keiner ins Archiv rein spuckt. Darum die Sperre. Wenn man einen USB Stick bekommt, ist der in wenigen Sekunden eingelesen und dadurch denke ich nicht, dass es ein großes Problem ist.

Suche: Wenn du Jahr oder BPM auswählst, kannst du zB 120-130 bzw. 1980-1990 eingeben, das geht. Bei Alles und den anderen Suchoptionen, kannst du die Begriffe mit Beistrich trennen. Also "AC,DC,Back,Rock" oder so

So denn,
Gruß MB

Bild
Benutzeravatar
Shung
Beiträge: 70
Registriert: Mi 8. Jan 2014, 00:20

Re: Moin

Beitrag von Shung » Do 9. Jan 2014, 23:41

muntablues hat geschrieben:Ich denke SQL bringt mir nicht viel, denn das Laden der XML ghet relativ schnell, da wirklich nur die MP3 Infos drin sind.
OK, wie schon gesagt sehe ich das alles aus der Sicht eines Datenbank Programmierers und habe evtl. andere Grössen / Mengen.
muntablues hat geschrieben:Natürlich dauert es länger wenn die Cover auch noch drin sind, aber das würde bei einer SQL auch dauern. Danach ist ja alles im RAM und da gibts eh nichts schnelleres...
liest du "alle" Cover in eine Imagelist ein ?

wenn du eine Datenbank hast wird die Anzeige ( Listview ) doch per Data-binding erledigt.
es werden dann nur jeweils die Daten benötigt welche man in der aktuellen Anzeige hat.
wie auch beim Explorer, in einem Verzeichnis mit vielen Dateien, dir nur die erste Seite zeigt und Icons erst langsam aufbaut.
muntablues hat geschrieben:Import und Sperre: Das ist natürlich nur, weil es für mich viel einfacher ist. Wenn ich hier den User weiter machen lassen würde, müsste ich sehr aufpassen, dass mir keiner ins Archiv rein spuckt. Darum die Sperre. Wenn man einen USB Stick bekommt, ist der in wenigen Sekunden eingelesen und dadurch denke ich nicht, dass es ein großes Problem ist.
Ja Ja ... der User ...
Datenbank System haben für solche Fälle entsprechende Netzwerk Routinen die für den gemeinsamen Zugriff gedacht sind.
USB-Sticks gibt es inzwischen auch in 1 TB und beim lesen von kleinen Blöcken und vielen Ordnern ( Verzeichnisse ) sind die ziemlich langsam.

nun sprach ich extra von Ordnern den seit Vista / Win7 sind Ordner nicht mehr lokal begrenzt.
die Media Daten können genau so gut auf einem Server oder in der Cloud liegen.
muntablues hat geschrieben:Suche: Wenn du Jahr oder BPM auswählst, kannst du zB 120-130 bzw. 1980-1990 eingeben, das geht. Bei Alles und den anderen Suchoptionen, kannst du die Begriffe mit Beistrich trennen. Also "AC,DC,Back,Rock" oder so
Aha ... Ja das ist doch schon mal ein guter Tip. wieder was gelernt, Danke.
gruss, Shung
Benutzeravatar
muntablues
Administrator
Beiträge: 2638
Registriert: Mo 29. Sep 2008, 20:51
Wohnort: Feldkirch

Re: Moin

Beitrag von muntablues » Sa 11. Jan 2014, 08:33

Ja ich mache die Anzeige per Databinding. Zwar nicht auf dem neuesten Stand, aber für das hier reichts. Soll heißen, .NET macht hier einiges selbst und ich muss mich nicht darum kümmern. Nachdem der RAM Verbrauch bei mir nicht mal 100MB beträgt (hab 20.000 Titel sind drin) hab ich mich nie darum gekümmert ob schnell genug geht oder was auch immer. Mir reichts ;)

Sperre beim Einlesen: Ich denek wenn du mitten im Gig 1TB Daten einliest, hast du was falsch gemacht. Sowas muss man einfach vorher machen. OK wenn mal ein Kunde sagt, schmeiß mir diesen und diesen Titel rein, kann man ja einen Stick einstecken und per Explorer den Titel suchen, alles andere kam bei mir noch nie vor. Bei dir schon???

Wie gesagt, wenn ich hier was ändern würde, wäre es sowieso ein Komplettumbau und dann würde ich die Möglichkeiten alle gut durch testen...
Gruß MB

Bild
Benutzeravatar
Shung
Beiträge: 70
Registriert: Mi 8. Jan 2014, 00:20

Re: Moin

Beitrag von Shung » So 12. Jan 2014, 07:23

muntablues hat geschrieben:... wäre es sowieso ein Komplettumbau und dann würde ich die Möglichkeiten alle gut durch testen...
eine v2.x !

ja ich kenne das Problem sehr gut. ein Teil meiner Arbeit besteht im migrieren von DOS Source ( dbase, Clipper, Fox ) nach Windows.
oft habe ich dann nur die Datenbanken und Business Logik übernommen und den Rest neu geschrieben.
während DOS Programme ja nur Vollbild (SDI) waren erfreuen sich die Windows User nun an vielen Fenster (MDI)

angenommen ich bin beim suchen und habe Ergebnisse im unteren Fenster. nur finde ich was und schiebe es in die Playliste.

jetzt würde ich gerne nach weiteren Titel der Band / Interpret suchen aber dazu müsste ich jetzt die Suche löschen.
wenn ich in den "alten" Treffern (merken !) weiter suchen will muss ich es neu eingeben ... ein öffnen eine weiterer Fenster wäre gut.

Frage : könnte die Engine von DigiJay auch mehr als 2 Player ... ich kenne Leute die arbeiten mit 3 Playern (Hardware)
gruss, Shung
Benutzeravatar
muntablues
Administrator
Beiträge: 2638
Registriert: Mo 29. Sep 2008, 20:51
Wohnort: Feldkirch

Re: Moin

Beitrag von muntablues » Di 14. Jan 2014, 22:26

Ich suche Grundsätzlich immer über "Alles". Wenn mir dann die Suche zu ungenau ist, einfach einen Beistrich ran hängen und noch was dazu hängen und wieder Enter. So kann man relativ gut verfeinern. Zusätzliche Fenster ist zwar was Nettes bei Datenbank Geschichten usw. aber für eine DJ Soft finde ich das eher verwirrend und DGJ ist nach Außen sehr einfach gehalten, damit es für Anfänger auch übersichtlich bleibt!

Mehrere Player wäre ansich kein Problem, aber die GUI ist durch Winforms nicht wirklich dafür geeignet. Halt auch eine Sache für ein Neudesign ;-)
Gruß MB

Bild
Antworten