Moin
Moin
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
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
- muntablues
- Administrator
- Beiträge: 2638
- Registriert: Mo 29. Sep 2008, 20:51
- Wohnort: Feldkirch
Re: Moin
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,
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,
Re: Moin
hi,
als Datenbank Programmierer musste ich einen Statement zu dem Thema machen
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
ich kann zwar nach 1970 suchen aber nicht nach... 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.
als Datenbank Programmierer musste ich einen Statement zu dem Thema machen
OK wenn du an ein Client / Server System denkst ... aber SQLite wie Firefox es verwendet wäre doch möglich.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.
ja ... aber das einlesen von vielen XML Datein, welche ich in %AppData%\DigiJay\DATA gefunden habe, dauert ziemlich lange ...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
sorry ich meine das der Player "blockiert" ist wenn man einen Import macht, oder ?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?
Ich möchte während des Import schon live zugreifen können.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...
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
die Verknüpfung von Such Begriffen geht z.Z. nur mit dem = ( AND ) Operator.muntablues hat geschrieben:Suche/Index: Das versteh ich nicht ganz, da musst du mal genauer werden...
ich kann zwar nach 1970 suchen aber nicht nach
Code: Alles auswählen
>= 1970 .AND. <= 1980
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
- muntablues
- Administrator
- Beiträge: 2638
- Registriert: Mo 29. Sep 2008, 20:51
- Wohnort: Feldkirch
Re: Moin
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,
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,
Re: Moin
OK, wie schon gesagt sehe ich das alles aus der Sicht eines Datenbank Programmierers und habe evtl. andere Grössen / Mengen.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.
liest du "alle" Cover in eine Imagelist ein ?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...
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.
Ja Ja ... der User ...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.
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.
Aha ... Ja das ist doch schon mal ein guter Tip. wieder was gelernt, Danke.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
gruss, Shung
- muntablues
- Administrator
- Beiträge: 2638
- Registriert: Mo 29. Sep 2008, 20:51
- Wohnort: Feldkirch
Re: Moin
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...
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...
Re: Moin
eine v2.x !muntablues hat geschrieben:... wäre es sowieso ein Komplettumbau und dann würde ich die Möglichkeiten alle gut durch testen...
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
- muntablues
- Administrator
- Beiträge: 2638
- Registriert: Mo 29. Sep 2008, 20:51
- Wohnort: Feldkirch
Re: Moin
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
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