flashpixx
Mitglieder-
Gesamte Inhalte
8302 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von flashpixx
-
Das kommt drauf an, wenn es für Dein Projekt relevant ist, dann muss es rein. Zur Sprache wie schon mehrfach geschrieben, entweder Du evaluierst die Sprache, dann gehört ein passender Punkt in die Zeitplanung oder es ist eine Betriebsvorgabe, dann gehört es als fester Punkt in den Antrag
-
folgendes sollte das Default Encoding von Java System.getProperty("file.encoding") bzw das Encoding des Streams liefern InputStreamReader (Java 2 Platform SE v1.4.2)
-
Das Vorgehen in allen Ehren, aber naiv das ganze zu machen funktioniert nicht, da Du einmal eine dünnbesetzte Datenstruktur + extrem schnell wachsende Datenmenge verarbeitet werden müssen. Wenn ein neues Foto eingestellt wird, muss Deine Matrix eine neue Spalte (oder Zeile) bekommen, analog für einen neuen User (Anzahl User mal Anzahl Bilder). Eine einfache Differenzbildung funktioniert nicht, denn was sagt sie aus? Vor allen was passiert bei den Einträge die Null sind? Außerdem muss man berücksichtigen, wie ein User im Mittel bewertet, es gibt allgemein User, die sehr gut und andere sehr schlecht bewerten. Man muss die User entsprechend der Bewertung normalisieren. Wenn z.B. ein User ein Foto nicht bewertet hat, kannst Du dieses nicht in das Ranking aufnehmen, denn die Einträge sind 0. Im Realbetrieb hat man das häufig, die User bewerten nur ihre Daten und nicht andere, aber genau auf diese nicht bewerteten Daten musst Du Rückschlüsse ziehen. Außerdem lassen sich Korrelationen, die man bei der Analyse braucht, mir kleinen Datenmengen überhaupt nicht sinnvoll berechnen, weil sie zu Null bzw NaN werden. Hashmaps als Datenstruktur sind extrem langsam, wie schon gesagt dünnbesetzte Matrizen sind eigentlich die primär eingesetzte Datenstruktur. Eine naives Vorgehen wird nicht funktionieren. Ebenso ist Java für diese Datenstrukturen eine schlechte Wahl, da die Datenmenge sehr schnell wächst und man diese numerisch / vektoriell verarbeiten muss. Ich empfehle hier sich wirklich mit den genannten Verfahren + die dafür benötigte Mathematik zu befassen, damit das System auch stabil und zuverlässig funktioniert
-
Da das hier im Java Forum ist, erst einmal folgendes: Um solche Systeme zu implementieren brauchst Du numerische Methoden (z.B. SVD), mir ist keine native Java Bibliothek, die das kann, bekannt. Zusätzlich hast Du bei solchen Algorithmen sehr große Datenmengen, NxM dimensionale sparse Matrizen, die entsprechend verarbeitet werden müssen. Der Ansatz zum "Collaborative Filtering" ist schon der richtige, je nach Daten muss natürlich noch eine entsprechende Vorverarbeitung machen bzw. man geht über in "clustering colloborativ filtering" bz "co-clustering" Generell der naive Ansatz nach den Bewertungen zu beurteilen wird nicht gut funktionieren, da die Bewertung pro User immer individuell ist und man eben gegen die userspezifische Bewertung normalisieren muss. Zusätzlich kannst Du Daten (Fotos), die noch keine Bewertungen haben nicht direkt verarbeiten, denn Du musst hier algorithmisch die Frage stellen "wie würde User X das noch nicht bewertete Foto Y bewerten". Das Problem ergibt sich aus der mathematischen Formulierung, denn mit einem Null-Element in Deiner Datenmatrix kannst Du nichts anfangen. Ich entwickle zurzeit unter anderem ein solches Framework (LGPL Lizenz), nicht für Java, da Java diese Datenmengen nicht mehr effizient verarbeiten kann, sondern für C++ (in C++ kann ich numerische / mathematische Bibliotheken wie LAPack oder ATLAS verwenden). Natürlich kannst Du mit Hilfe von JNI die entsprechenden C++ Routinen aufrufen. Ein fertiges System mit dem gewünschten Umfang ist mir aber nicht bekannt.
-
PHP: Aus einer Funktion ein Array zrück geben
flashpixx antwortete auf SuperGirl007's Thema in Skript- und Webserverprogrammierung
wofür brauchst Du das "global" Statement und zwei Schleifen !? function random_array($size, $min, $max) { $res = array(); for($i=0; $i < $size; $val = mt_rand($min,$max)) if (!in_array($val, $res)) { array_push($res, $val); $i++; } return $res; } [/php] und wenn man jetzt mehrere davon braucht [php] $list = array(); for($i=0; $i < $anzahl; $i++) array_push($list, random_array($length, $min, $max)); -
PHP: Aus einer Funktion ein Array zrück geben
flashpixx antwortete auf SuperGirl007's Thema in Skript- und Webserverprogrammierung
Das lässt sich mit in_Array einer Schleife und dem Zufallsgenerator realisieren -
Es geht nicht darum, dass Viren o.ä. ins System kommen, sondern dass Du die Eingaben, die das Programm bekommt prüfen musst und eben entsprechend im Programm reagierst, wenn dort unzulässige Eingaben gemacht wurden. Ein Fehler in Deiner bisherigen Schilderung ist die fehlende Synchronisation zwischen den Systemen, was letztendlich zu undefinierten Zuständen führen kann und damit Fehler produziert.
-
Es kommt drauf an, wie die Tags organisiert sind. Bei einem XML Format würde jeder Tag innerhalb eines Knotens zu finden sein und diese Knoten kann man mit XPath direkt durch iterieren. Man kann mit einem XML Schema direkt anhand des Schemas die XML als Objekt verarbeiten
-
Das ist nicht Java-spezifisch, sondern eine Standard XML Technologie: XPath
-
Dann lade den XML Baum und hol die Informationen raus. Wo ist denn das Problem?
-
Dann beschreibe das Problem einmal so, dass man es versteht. Die API ist hier Flickr Services dokumentiert. Ich kann über diverse Calls Daten von Flickr anfordern und muss diese dann verarbeiten. Es ist im Grunde nur Daten anfordern, verarbeiten und eben updaten (sofern dies in der Schnittstelle möglich ist).
-
Wie schon gesagt, evtl stellt die API schon entsprechende Calls zur Suche zur Verfügung. Sobald die Daten auf der Festplatte liegen, musst Du die Metadaten entweder indizieren, um sie effizient zu durchsuchen oder Du musst eben einzeln bei jeder Suche die Metadaten verarbeiten Außerdem liegen Photos nicht im XML Format vor, denn Bilder sind als binäre Daten abgelegt, natürlich lassen sich auch in einer XML Datei binäre Daten codieren.
-
Evtl stellst Du mal einen Link zu der API Beschreibung online. Was den Algorithmus angeht, wäre die Frage was Du überhaupt machen willst. Ich könnte mir vorstellen, wie es z.B. bei Wikipedia oder auch Twitter möglich ist, dass man an den Dienst schon passende Suchparameter senden kann, d.h. die Ergebnismenge wird schon passend vorselektiert.
-
PHP: Aus einer Funktion ein Array zrück geben
flashpixx antwortete auf SuperGirl007's Thema in Skript- und Webserverprogrammierung
Was willst Du überhaupt machen? Sprich was soll das Ziel sein? Das global solltest Du nicht benutzen, das macht den Code unübersichtlich. Dieses in_array oder array_diff_keys wofür soll das gut sein. Wenn man numerisches Array hat, dann brauche ich dort nicht mit Keys arbeiten, sondern ich kann direkt via Index die einzelnen Daten ansprechen. Es ist nicht hilfreich, wenn Du immer mehr an Deinem Code bastelst, sondern strukturiere das Vorgehen und arbeite systematisch. -
PHP: Aus einer Funktion ein Array zrück geben
flashpixx antwortete auf SuperGirl007's Thema in Skript- und Webserverprogrammierung
dafür gibt es PHP: Sessions - Manual Das ist nicht verständlich, poste das SQL Statement und die Tabellenstruktur. Im Normalfall würde man ein Formfeld mit entsprechenden Inputdialogen aufbauen, dann beim Action ein weiteres Script aufrufen, dass die Eingaben des Forms verarbeitet und nach Prüfung in die Datenbank übernimmt. Sorry, aber Dein Code ist nicht wirklich gut strukturiert. -
Und wie kannst Du sicherstellen, dass es korrekt arbeitet? Email kommt rein, irgendwann wird Programm 1 gestartet, dass die EMail in eine Datei schreibt, irgendwann später wird Programm 2 gestartet um die Ausgabe von Programm 1 zu verarbeiten. Das Programm 2 darf erst gestartet werden, wenn Programm 1 fertig ist. Warum wurden hier überhaupt 2 Programme konzipiert und warum hat man das nicht direkt in ein System umgesetzt. Im Moment ist ein mit den Cronjobs, die ja abhängig sind voneinander, Glaskugel lesen, wann man sie startet. Wenn z.B. die Festplatte von dem System voll läuft, dann kann es sein, dass das erste Programm länger braucht und das zweite dann schon startet, obwohl die Verarbeitung von 1 nicht abgeschlossen ist Warum hier wieder dateibasiert !? Entweder kann ich mich in die Filterkette von Procmail oder auch z.B. Postfix mit einem eigenen System einhängen und kann dort direkt die Email in Header und Inhalt zerlegen ohne dass ich wieder mit Dateien hantieren muss. Man kann auch die Mails via IMAP vom Server ordentlich lesen und verarbeiten. Ich verweise mal auf Cross-Site Scripting weil das in ähnlicher Weise funktioniert. Du kannst doch nicht aller ernstes Daten aus einer EMail lesen und vorher nicht prüfen, ob die EMail korrekt formatiert ist !? Eingaben egal welcher Art dürfen niemals ungeprüft in das System gelangen, d.h. in Deinem Fall musst Du den extrahierten EMail Body prüfen, ob er auch korrekt formatiert ist. Sorry, aber die Punkte, die ich hier anführe, erwarte ich, dass man sie zum Ende der Ausbildung beherrscht. Alleine das hier Datenstrukturen richtig synchronisiert werden, Ein- & Ausgaben validiert werden und dass man auf entsprechende Frameworks aufbaut um Daten zu verarbeiten. Diese Fummelei mit Dateien ist wirklich überholt und extrem fehleranfällig bzw. wie kann man Fehler im System finden, wenn es aus einzelnen nicht synchronisierten Komponenten besteht. Wenn z.B. der Import der Daten fehl schlägt, weil die Datei fehlerhaft ist, kann ich nicht nachvollziehen, wo der Fehler liegt; hier kann z.B. das Problem entstehen, dass Fehler scheinbar zufällig auftreten (fehlerhafte Synchronisation der Komponenten) und ich diesen Fehler nicht reproduzieren kann. Fachlich sehe ich extrem viele Punkte, bei denen ich nur den Kopf schütteln kann. Im Normalfall würde man entweder einen Push oder Pull Mechanismus bauen, d.h. wenn die EMail ins System kommt, wird sie verarbeitet und dann der Import in dem anderen System angestoßen oder der Import startet die Verarbeitung. Dies kann man mit Webservices (synchron / asynchron), Remote Procedure Calls lösen, wobei immer definiert werden, was im System passiert. Du hast hier zwei Systeme, die miteinander kommunizieren müssen und es wird wie vor 30 Jahre per Dateiaustausch gemacht. Man kann das Thema durchaus für ein Projekt verwenden, aber das würde voraussetzen, dass Du Dich von diesen veralteten Strukturen löst und eben mit den passenden Frameworks arbeitest.
-
Wenn Du die Daten eh schon in Exel hast, würde man einfachsten das Tabellen Sheet via VBA lesen und per Hand die Textdatei über VBA bauen und schreiben
-
Das sind doch schon 2 schöne Angriffspunkte: Da ja ein Programm die Mail zerlegt und dann speichert und Dein Programm ja über einen Cronjob laufen sollte, wie ist klar, ob das überhaupt richtig funktioniert. Ich meine wenn das Mailprogramm eben die Datei noch nicht komplett verarbeitet hat, dann würde ja Dein Programm keine Datei oder eine halbgeschriebene Datei finden. So etwas muss man synchronisiert machen, d.h. Dein Programm darf erst mit der Verarbeitung beginnen, wenn das andere fertig ist. Dieses Datei hin und herschieben macht man eigentlich nicht mehr, denn es ist eben auch wie die regulären Ausdrücke fehleranfällig. Der zweite Punkt ist, wie sieht die Verarbeitung von der XML und DTE aus. Ich meine Du erzeugst hier auch Dateien. Was passiert dann mit diesen Dateien und warum müssen es Dateien sein? Was passiert, wenn z.B. die Dateien vom Vortrag dort noch liegen, überschreibst Du dann einfach? Wäre hier evtl der Ansatzpunkt das ganze anstatt in Dateiform in eine Datenbank zu schreiben, somit hat man ein Log und kann für jeden Tag die Daten wieder holen. Mit einem passenden Client kann man dann aus der Datenbank sich über die selektierten Daten die DTE und XML erzeugen. Nein, Du sollst nicht einfach stumpf irgendwas, das Dir aufgetragen wird, runter codieren, sondern Du sollst Dir eigenständig Gedanken dazu machen. D.h. Du kannst / darfst nicht voraussetzen, dass die EMail korrekt ist, du musst es es prüfen. Außerdem sollten niemals in ein System ungeprüft irgendwelche Daten hineinkommen können. Das kann zu Sicherheitslücken führen. Das ist Sache Deiner Zeitplanung. Du sollst in dem Projekt beweisen, dass Du in der Lage bist in 75h ein Problem zu erkennen, einen Plan zur Lösung zu entwerfen und diese Lösung auch umsetzen kannst.
-
Im Grunde wäre dies aber eben nicht passiert, wenn Du eben das Projekt richtig geplant hättest; Du verkaufst ja schon etwas fertiges als Projekt. Die genannte Technologie wäre ja eben erst in der Planungsphase zur Sprache gekommen, d.h. wäre eine von mehreren Umsetzungsalternativen gewesen. Die bisherige Umsetzung ist ja eher "drauf los" gewesen (mal davon abgesehen, dass es sicherlich nicht schlecht ist, wenn wir das im Moment finden, denn schlimmer wäre so etwas später beim Fachgespräch). Ich würde jetzt nicht sagen, dass es hoffnungslos ist, sondern schau Dir doch mal den kompletten Prozess bei der Verarbeitung an. So wie Dich ja verstanden habe, kommen die Daten per Mail rein und sollen auch per Mail wieder raus. Evtl wäre es sinnvoll mal den ganzen Prozess zu analysieren und dann ggf dann zu optimieren. Ich meine in diesem Fall kannst Du ja auch die aktuelle Lösung mit den regulären Ausdrücken einfließen lassen und eben auch darlegen, warum eine andere Lösung besser ist. Ich meine wenn man z.B. sagt, dass die Mail reinkommt, direkt vom Server verarbeitet werden soll und dann z.B. in eine Datenbank fürs Log muss und eine Antwort Mail mit XML und ggf XML Signatur erzeugt wird, dann hätte man da schon etwas zusammen. Evtl eben mal nach rechts und links schauen und die einzelnen Abläufe im System hinterfragen
-
Ja man kann mit Hilfe eines Schemas validieren bzw. ein Schema lässt sich dann verwenden um daraus direkt Klassen erzeugen zu können, d.h. man kann damit die XML Datei direkt als Objekt behandeln um die Daten zu lesen / zu ändern und zu schreiben. Somit muss man gar nicht mehr innerhalb des XML Baumes arbeiten sondern arbeitet mit Objekten, die dann direkt als XML (de-) serialisiert werden
-
Das ist keine XML sondern ein XML Schema Ein Schema beschreibt, wie Deine XML Datei logisch aufgebaut sein muss, also z.B. welche Datentypen die einzelnen Tags enthalten usw. Eine komplette Einführung in das Thema XML sprengt hier jeden Rahmen, wir befassen uns hier in dem Unterofrum mit Projektanträgen.
-
Das wäre aber die Voraussetzung für das Projekt, dass Du Dich damit auskennst. Im Moment würde ich wirklich ganz große Bauchschmerzen haben, wenn Du im Fachgespräch genau über diese Punkte gefragt wirst und Du erklären musst, warum Du eben das ganze mit regulären Ausdrücken gemacht hast. Selbst unter Perl gibt es entsprechende APIs für die Verarbeitung XML::DOM - A perl module for building DOM Level 1 compliant document structures Ich würde Dir dazu raten Dir ein neues Projekt zu suchen und dieses wirklich formal und inhaltlich richtig aufzubereiten.
-
mit [] ist das keine XML. Außerdem fehlt auch das Rootelement < xml > mit passendem Encoding Parameter und auch, wieso baut man XML händisch zusammen !? Fachlich habe ich da wirklich sehr große Bedenken. Fehler können z.B. passieren, wenn Du einen Tippfehler in Deinen Tagbezeichern hast: [/TotalAmuont]. Ein XML Parser der sorgt erst einmal dafür, dass das XML valide ist und kann mit Hilfe einer DTD oder XSD solche Fehler finden und melden. Sorry, aber wenn ich das so sehe, dass hier XML händisch per Stringverkettung baust, dann sind da fachlich für mich riesige Lücken. Vor allem fehlen da massive Grundlagen über XML Extensible Markup Language
-
Nein das stimmt so nicht. Z.B.: < xml > < tag1 > < subtag1 atribut1="xxx" > data < / subtag1 > < /xml > Ist definitiv kein valides XML File, aber mit Hilfe einer RegExpr der Form "<subtag1 (.*)>" kann man das Attribut und mit "<subtag1 (.*)>(.*)</subtag1>" die Daten des Tags extrahieren. Im ersten Fall stellst Du nur sicher, dass der öffnende Tag existiert und beim zweiten, dass der Tag subtag1 einmal geöffnet und geschlossen wird. Theoretisch würde aber ein: < xml > < tag1 > < subtag1 atribut1="xxx" > data < subtag3 > < /subtag1 > < /xml > auch als gültig in dem Ausdruck erkannt werden. Du kannst natürlich mit "not" usw so etwas ausschließen bzw. nachträglich den Inhalt prüfen, was aber letztendlich nicht dazu führt, dass Du fest stellen kannst, ob das XML valide ist. Ich verweise einmal auf Entscheidbar D.h. in Deinem Fall kann ich nicht entscheiden, dass Du ein valides XML Dokument hast. Durch Fehler bei der Erzeugung des XML können solche Probleme entstehen, z.b. weil ein Knoten innerhalb des Baums nicht erzeugt wurde und somit der Unterbaum sich verschiebt. Für Dich ist es dann nicht möglich passend auf diesen Fehler zu reagieren (bzw. nur durch extrem umständliche inhaltliche Prüfungen). Es gibt eben für XML mehrere Strukturen, die man verwenden sollte, um eben genau solche Probleme auszuschließen (DOM, XSLT, XSD, DTD). Ich würde hier sagen, dass Du das Problem nicht erkannt bzw. dann nicht passend gelöst hast.
-
Wie stellst Du sicher, dass es sich um ein valides XML handelt? Diese Aussage ist falsch, denn ein Interpreter hat auch einen Compiler dabei, sonst würde er niemals den Code ausführen können und mit Hilfe eines Parsers und Lexers den Code auf korrekten Syntax prüfen können Nein das wurde nicht, es geht darum sinnvoll Dein Problem, das Du bearbeiten sollst fachlich zu differenzieren. Ich habe Dir einige Punkte genannt, die durchaus in einem Fachgespräch kommen können. P.S.: Der Hinweis noch, da das Projekt schon durchgeführt wurde, ist es als Abschlussprojekt nicht zulässig und kann unter Umständen zu einem Nichtbestehen führen.