Zum Inhalt springen

pr0gg3r

Mitglieder
  • Gesamte Inhalte

    1.939
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    25

Alle Inhalte von pr0gg3r

  1. Habe es herausgefunden, ich komme über das information_schema an den CONSTRAINT_NAME dran.
  2. Hallo flasgpixx, danke nochmal für deine Ausführliche Antwort. Ich denke, ich habe es nun verstanden. Eine Frage hätte ich noch: Angenommen, ich mache eine Validierung über Check-Constraints, wie kann ich dann von meiner View darauf zugreifen, also feststellen, welche Werte gültig sind? Da es sich um eine HTML-Applikation handelt, möchte ich zB mit jQuery das Formular vorab validieren, also dem Benutzer anzeigen, welche Felder nicht korrekt ausgefüllt sind und zwar ohne, dass ich die Daten an die Datenbank sende und Fehler abfange.
  3. Ich bin ja auch noch Azubi Ich verstehe ehrlich gesagt nicht ganz genau, warum du das denkst. Ich habe das eigentlich ziemlich abstrakt gemacht. Ich habe eine Oberklasse mit den Membern "name", "label", "isRequired" usw., die schließlich jedes Feld hat. Davon leite ich die anderen Felder ab, diese haben dann nur noch die zusätzlichen Methoden für die spezifischen Dinge. Außerdem habe ich es ja auch gekapselt. Ich habe ja zB die Methode GetHTMLForm(), diese gibt das Formular aus. So kann ich jedes Feld*.getHTMLForm(), ohne mich darum kümmern zu müssen, was in der Methode tatsächlich passiert. Also wenn man dann mal absieht, dass ich die Ausgabe nicht von der Logik trenne (zB über die von dir vorgeschlagenen Renderklasse), habe ich das doch mit ganz ordentlichem OOP gemacht? Natürlich kann ich das auch in eine Renderklasse packen (Renderer.render(Field field)) und dann je nach Objekt die enstprechenden Methoden (((FieldInt) Field.getMin());, field.getLabel(), ...) aufrufen. Vielleicht war nicht ganz klar, was ich mit "den häufig verwendeten Datentypen von MySQL" wirklich meine. Es geht darum, dass mir MySQL bestimmte Datentypen zur Verfügung stellt, mit denen ich meine Tabellen abbilden muss, da ich meine Spalten nur mit diesen Typen deklarieren kann. Deswegen bilde ich diese in meinem Programm ab. Ich sage nicht, jedes Feld hat einen maximalen und einen minimalen Wert (Generalisierung), sondern ich sage, nur ein Feld für einen Integer kann einen maximalen und minimalen Wert haben. Ich wüsste jetzt ehrlich gesagt nicht, wie ich das prozedural wenig umständlich umsetzen könnte.
  4. Ich hatte die Wahl zwischen "Klassenname überprüfen" und je nachdem eine andere Ausgabe zu machen oder eben einfach mein Field*.getHTMLFormElement() aufzurufen. Damit ich nicht an zwei Stellen gleichzeitig arbeiten muss, wenn ich ein neues Field* hinzufüge, habe ich mich für letzteres entschieden. Du hast recht, ich sollte lieber einer Renderklasse "irgendwas" übergeben und diese entscheidet dann selber, um was es sich handelt. Das gibt dann neue Probleme, zB mache ich aus einem Array eine Liste mit Checkboxen oder Radioboxen? Dann muss ich hierfür ja wieder eine eigene Klasse erstellen, die vom Typ Array abgeleitet ist und aufgrund dessen die Entscheidung treffen. Ich habe mein allgemeines Feld, das einen Namen beinhaltet, welcher der Tabellenspalte in der Datenbank entspricht und ein Label, welches ich in der Ausgabe verwende, beinhaltet. Das soll schließlich jedes Feld haben. Dann habe ich davon abgeleitet mein Feld für Integer, welches einen Min- und Max-Wert haben kann, mein Feld für String, welches einen Member für die Anzahl der Zeichen hat usw. Ich habe diese Lösung gewählt, weil ich dann einfach meine ArrayList<Field> (als Member zu jeder Tabellenausgabe) habe und dort dann möglichen Field*reinschmeißen kann. Fand ich bisher eigentlich auch garnicht so doof: DBTable mitarbeiter = new DBTable("mitarbeiter", "alle Mitarbeiter"); FieldString vorname = new FieldString("vorname", "Vorname"); vorname.setLength(10); vorname.setRequired(true); mitarbeiter.addField(vorname); FieldString nachname = new FieldString("nachname", "Nachname"); nachname.setRequired(true); mitarbeiter.addField(nachname); FieldInt sollzeit = new FieldInt("sollzeit", "Soll-Zeit"); sollzeit.setMin(4); sollzeit.setMax(10); sollzeit.setRequired(true); mitarbeiter.addField(sollzeit); mitarbeiter.addField(new FieldBoolean("istAbteilungsleiter", "Leiter einer Abteilung")); So sieht ca. mein Konzept aus, alles andere wird automatisch generiert (CRUD). Ich habe mir auch überlegt, statt der Oberklasse ein Interface zu nehmen. Dann kann ich meiner ArrayList<Object> aber alles anfügen, was ich verhindern wollte. Aber wäre das aus OOP-Sicht dann "besser"?
  5. Danke nochmal für eure Antworten. Ich werde mich die nächsten Tage ausführlicher mit NoSQL und vor allem CouchDB beschäftigen. Letztendlich liegt die Lösung an mir und bisher scheint das nur Vorteile zu bieten. Ich möchte auf der anderen Seite auch nicht allzu euphorisch sein, denn wenn es später Probleme gibt, liegt es schließlich auch an mir Ich versuche über meine Unterklassen die häufigsten Fälle abzudecken. Bisher habe ich mich danach gerichtet, was mir SQL an Datentypen hergibt. Hier kann ich, wenn ich z.B. ein INSERT- oder UPDATE-Query zusammenstelle, einfach mein FieldPK weglasen, da man PKs nicht selbst bestimmen bzw. ändern kann/soll. In der Ausgabe (SELECT) möchte ich ggf. trotzdem den PK mit auflisten, weshalb das so realisiert wurde. Im Grunde möchte ich da auch Validierungen machen, was für Werte angegeben werden dürfen. Zum Beispiel, dass tatsächlich nur E-Mail-Adressen oder URLs eingegeben wurden. Mittlerweile mache ich das aber über Regex, welchen ich der Obeklasse (Field) als Member hinzugefügt habe und einfach per Setter setzen kann. Eine Notwendigkeit der Unterklassen sehe ich vor allem beim Formular für die Dateneingabe und -bearbeitung: ein Boolean wird anders ausgegeben (Checkbox) als ein Join (Select) oder ein String (Text) oder Text (Textarea) oder ein Datum. Bei dem Join muss ich außerdem erst noch die verzweigten Daten laden. Solche Dinge werden von meinen Field*-Klassen hauptsächlich erledigt.
  6. Ja, es handelt sich um Java. Danke für den Link, werde ich mir anschauen.
  7. Hallo flashpixx, erst einmal vielen Dank für deine Mühe und Zeit, die du in deine Antworten investierst! Ich vermute, meine Lösung unterscheidet sich garnicht so sehr von deiner. Ich habe wie du eine Klasse, dessen Objekte eine Tabelle in der Datenbank repräsentiert. Dieser Tabelle füge ich die Felder/Spalten der Datenbank einem Member (ArrayList<Field>) hinzu (DBTable tabelle = new DBTable("tabellenname"); tabelle.addField(new FieldPK()); tabelle.addField(new FieldString("name", 255);). Die ganzen SQL-befehle (CRUD) bastel ich dann über meine Elternkalsse "Field" (von der sich FieldPK, FieldString, FieldInt, FieldDatetime, usw. ableitet) zusammen und führe sie über eine Datenbankklasse aus. Daraus kann ich alle notwendigen Dinge ableiten und wenn weitere Felder benötigt werden, erstelle ich einfach eine neue Unterklasse und füge die entsprechenden Parameter hinzu (Lieferwagen haben noch eine Ladefläche, Geschäftswagen sind bestimmten Personen zugeordnet, während Poolfahrzeuge keine Zuordnung zu Mitarbeitern haben). Wenn ich dich richtig verstanden habe, machst du das ähnlich, nur dass du mit Key-Value-Arrays arbeitest. In meiner Tabelle "firmenautos" (pk_auto, ... ladeflaeche, fk_mitarbeiter, ...) habe ich dann aber das "Problem", dass diese Daten nicht tatsächlich mit den Klassen übereinstimmen (ein Geschäftswagen hat keine Ladefläche, in der DB wird diese aber trotzdem repräsentiert (0)). Wenn ich das in NoSQL dann so realisiere: { "id": "....", "_rev": "...", "marke": "vw", "modell": "Caddy", "kennzeichen: "ab-cd-1234", "ladeflaeche": 22.3 "buchungen": [ { "mitarbeiter": "...", "von": "2013-12-12T12:00", "bis": "2013-12-14T14:00", "Grund": "Abholung Material" }, { "mitarbeiter": "...", "tag": "2013-12-15" } ] } } { "id": "...", "_rev": "...", "marke": "Audi", "modell": "A6", "kennzeichen: "ab-cd-5678", "mitarbeiter": "..." } Kann ich darauf verzichten, die Felder tatsächlich immer in der DB anlegen zu müssen. Zusätzlich müsste ich mir nicht die Queries zusammenbasteln (können mit mehreren Joins dann schon mal komplex werden) und hätte die Revisionen gleich mit dabei. Also ist es doch tatsächlich eine Überlegung wert.
  8. Das ist für mich interressant. Ich arbeite ähnlich, nur leite ich in meinem Programm anders ab als ich es in der Datenbank darstelle. Zum Beispiel habe ich per Quellcode eine Parentkalsse "Abteilungen", davon leite ich "Schichtarbeit" und "Gleitzeitarbeit" und davon wieder "Schichtarbeit->Werkstatt", "Gleitzeitarbeit->Entwicklungsabteilung1", "Gleitzeitarbeit->Verwaltung" usw. ab. In der Datenbank habe ich aber nur eine Datenbank "Abteilungen" mit einer Spalte "arbeitszeitmodell" (ENUM(Gleitzeit, Schichtzeit)). Kann ich nun mit NoSQL und JSON daher gehen und die Datenstrukturen wie in meinem Klassenmodell ableiten? Dann bräuchte ich eigentlich ja nur einen Wrapper, der mit die Klasse in JSON umwandelt und wieder zurück (ich vermute, das machst du mit deiner Parentklasse?) und brauche mich nicht weiter um die Datenbankkommunikation kümmern (wie bisher, indem ich aus jeder Klasse andere Tabellen und Spalten abfrage)? Danke, werde mich damit auseinandersetzen.
  9. Die nächste DH wäre bei mir Stuttgart, wenn ich dort auf der Webseite schaue, gibt es drei Richtungen: Application Management, IMBIT und Sales & Consulting. IMBIT ist also auch ein Wirtschatftsinformatik-Studium, nur mit anderen Schwerpunkten. Es werden aber je nach DH unterschiedliche Richtungen angeboten. Wenn du ein duales Studium machst, kannst du dich ja mit dem Betrieb das für euch passende heraussuchen.
  10. Schau mal, ob aufgrund des "zweiten Bildungsweges" elternunabhängig Bafög bekommst. Das wären dann wieder ein paar hundert Euro mehr.
  11. Die bisherige Anwendung (ein paar tausend Zeilen Code) basiert auf SQL (mit Augenmerk auf MySQL und MSSQL). Ich kann den Code zwar anpassen bzw. teilweise neu schreiben und würde auch die Ressourcen (Zeit) dafür bekommen. Was ich aber nicht möchte ist, dass mir nachher die Datenbank eine zu große Hürde darstellt. Bei relationelen SQL-Datenbanken weiß ich, was ich erwartet und wie man das Meiste realisieren kann. Das Schlimmste wäre jetzt, wenn ich die Entscheider von NoSQL überzeuge, die Umsetzung dann aber nicht mehr so funktioniert, wie ich mir das vorstelle, also ich ständig Probleme habe, weil ich auf eine andere DB setze. Das möchte ich verhindern. Auf der anderen Seite ist eine Reduzierung des Codes um 80% natürlich ein überzeugendes Argument. Der große Vorteil von NoSQL-Datenbanken besteht soweit ich weiß darin, dass sich Daten speichern lassen, die sich voneinander unterscheiden. Ich weiß jetzt nicht, in wie fern das auf mich zutrifft. Das Szenario des Projektes kann mich sich recht typisch vorstellen: "Was bisher mit Excel verwaltet wird, soll nun über ein Programm realisiert werden" plus weitere Funktionen (Rechte, Revisionen, Felder die ausgefüllt werden müssen, mögliche Querverknüpfungen je nach Auswahl etc.). Das heißt, meine Struktur ist "starr". Dann geht doch der Vorteil von NoSQL verloren?
  12. pr0gg3r

    Wpf?!

    Da bist du mit WPF aber nicht auf dem richtigen Weg. WPF wird zwar von Silverlight unterstützt (bzw. dafür sogar notwendig), aber die Zukunft davon sieht gerade nicht rosig aus, die Tendenz geht eher in Richtung HTML5. Wenn du dich aufs Web ausrichten möchtest, wäre eher ASP.NET zu empfehlen. Wenn du richtung Windows-Apps gehen möchtest, kannst du bei XAML (WPF) bleiben. Bleibst du bei Desktop-Anwendungen, hast du die Qual der Wahl (Winforms vs. WPF). Im Grunde ist die Präsentation deines Programmes irrelevant: Wenn du die Logik vom Design trennst, ist es egal, ob du eine Windows-API, XAML, HTML oder sonst was "drauf setzt". Das ist ganz wichtig zu verstehen. Wenn du Logik und die Präsentation (das Layout) deines Programmes trennst, ist das Layout "nur eine weitere Schicht" deines Programmes, aber nicht dein Programm an sich.
  13. Kann ich so bestätigen. Ich hatte letzte Woche ein Gespräch mit meiner GL, da meine Ausbildung bald endet. Dabei habe ich ganz klar gesagt, dass ich zwar weiter hier arbeiten möchte, mir aber auch meine Weiterbildung sehr wichtig ist. Sie wollen mich auf jeden Fall hier behalten und kamen mir mit einem dualen Studium (Winfo) entgegen (wobei ich dann aus der IT-Abteilung raus komme und andere Aufgaben übernehmen werde, zB das Controlling unterstützen, Datenanalysen, SAP inkl. Programmierung, etc.). Noch ein Tipp: Vermutlich kriege ich auf der DHBW aber erst einen Platz für 2015, ich weiß nicht wie das bei dualen Hochschulen in Bayern aussieht, aber am besten früher als später darum kümmern! Die Vergütung für ein duales Studium ist nicht gerade hoch, da kann man auf einer Uni oder FH mit Bafög und einem Nebenjob mehr verdienen und hat vlt. sogar weniger Stress (mehr Zeit sich vorzubereiten etc.).
  14. Ich kenne NoSQL-Datenbanken bzw. habe MongoDB und CouchDB jeweils privat installiert und ein wenig getestet/angeschaut, ich bin mir jedoch nicht sicher, ob das nur ein vorübergehender Hype bzw. Trend ist oder ob sich NoSQL-Datenbanken tatsächlich etablieren werden. Im Unternehmenseinsatz besteht natürlich auch immer die Frage, wie sieht die vorhandene Infrastruktur aus, wo liegt das Knowhow der Projektmitarbeiter etc., da kann man nicht einfach mal kurz die Datenbank hinter der Software ändern Aber trotzdem danke für die Vorschläge, ich hatte es mir für einen Moment auch überlegt gehabt, aufgrund der starren Strukturen und des massiven Aufwandes (bestehende Software anpassen usw.) aber dann doch wieder verworfen.
  15. Habt ihr noch einen zweiten DC? Vielleicht finden Synchronisierungen statt, die eine Weile dauern.
  16. pr0gg3r

    Wpf?!

    Ich muss ehrlich gestehen, dass ich noch nicht viel mit WPF gemacht habe (korrigt mich also bitte, wenn ich mich irre). Vorteile sind aber: - Man hat mit WPF eine strikte Trennung von Logik und Design. Natürlich kann man das mit Winforms auch realisieren, dafür ist aber viel eigener Code notwendig. - Das WPF-Layout ist beliebig skalierbar, per Winforms muss man sehr viel rumexperimentieren und hat dann häufig noch kleinere Bugs, die nur mit viel Aufwand und Workarounds zu beheben sind - Ich habe gehört, dass Terminal-Anwendungen (nur?) per WPF realisiert werden. Also das Programm läuft zwar au dem Server, die Anzeige des Programmes wird aber auf dem Client präsentiert und verhält sich demnach so, als ob es auf dem Client laufen würde. - Eigene "Komponenten" sind einacher zu realisieren. Wenn man zB ein Textfeld und ein Button in einem Panel als eigene Komponente haben möchte, kann man das entweder selber per Code scripten oder einfach per XAML erstellen. Da finde ich letzteres besser, vor allem da die Trennung von Logik und Code weiterhin besteht. Ist aber vielleicht auch Geschmackssache. Es gibt aber auch Nachteile: - Nicht alle Komponenten so vorhanden, wie man sie kennt - Präsentation üner DirectX (ist das bei kleinen Anwendungen unbedingt nötig?) - Winform-Anwendungen lassen sich nicht 1:1 übersetzen - ... Wichtig finde ich auch, was lilith2k3 geschrieben hat: Die Zukunft ist offen. Die Frage ist also, ob es nur ein Hype ist, oder ob es auch langfristig interessant bleibt.
  17. Alles klar, das hat mir soweit weiter geholfen. Ich danke euch!
  18. @ricardo1885: Ich möchte und darf meine produktive Datenbank bestimmt nicht hier veröffentlichen Im Grunde möchte ich jetzt auch keine Lösung für meine Datenbankstruktur, sondern allgemeine Vorschläge. Danke für den Vorschlag. Wenn ich das richtig verstanden habe, würde das dann so aussehen: Wenn ich einen Eintrag update, wird der Eintrag von "order" in "order_shadow" kopiert und dann erst in "order" geändert. Die Shadow-Tabelle sieht soweit gleich aus (mit dem Unterschied, dass die PKs keinen PK darstellen, da es pro Eintrag (Revision) den gleichen PK gibt). Mit Triggern wollte ich mich sowieso früher oder später einmal auseinandersetzen.
  19. Hi Community, ich entwickel gerade eine datenbankgestützte Anwendung, bei der es vor allem um die Eingabe, Ausgabe und Ändern von Datenbankeinträgen geht (nichts besonders aufwändig). Nun möchte ich eine Art Revision hinzufügen um ältere Einträge einsehen und wiederherstellen zu können. Das Problem ist, dass manche Datensätze über Fremdschlüssel miteinander verknüpft sind, sonst würde ich einfach eine Spalte mit der Versionsnummer hinzufügen und die höchste auslesen. So müsste ich aber alle Fremdschlüssel aktualisieren, was ich aber vermeiden möchte. Habt ihr vielleicht Ideen, wie ich das effizienter realisieren könnte? Grüße, pr0gg3r
  20. In der Berufsschule kommt es ganz darauf an. Meistens eine objektorientierte Sprache wie C++, Java, C# o.ä. Ich gehe mal davon aus, dass du dich für die Fachrichtung Anwendungsentwicklung interressierst. Da gibt es mehrere Branchen, zum Beispiel die Medienbranche (Entwicklung von Apps, Webseiten, ...), Firmen die ihre Software intern entwickeln, bei einem Dienstleister für Softwareentwicklung uvm. Was für Vorstellungen für einen Arbeitsplatz (auch langfristig nach der Ausbildung gesehen) hast du? Naja, ich programmiere seit ich 10 bin Warum dann nicht auch beruflich... Es gibt aber auch welche, die vor der Ausbuildung noch keine Kenntnisse hatten und einfach aus einem anderen Grund sich für diesen Beruf entschieden haben. Ich sags mal so: Wenn du programmieren kannst, ist die Sprache garnicht mehr so wichtig. Die Grundlagen, Designpattern, Konzeption usw. sind eher Sprachübergriefend. Wichtig sind vor allem die Grundlagen und wenn du dann ein oder zwei Sprachen gelernt hast (was noch weit weg von "beherrschen" ist!), sind alle anderen einfach zu lernen, denn sobald du wie ein Programmierer "denkst" und herangehst, wird es einfacher und nur noch die sprachlichen Eigenheiten sind zu meistern. C# ist mächtig, gefragt und auch beruflich gesehen kommst du damit weit. Von dem her keine schlechte Wahl. Wie wäre es, wenn du ein Praktikum machst (am besten bei mehreren Firmen), damit du dir ein konkreteres Bild von den Tätigkeiten eines Anwendungsentwicklers hast? Und vielleicht findest du so auch eine gute Lehrstelle Viel Erfolg!
  21. Der größte Unterschied zu PHP ist, dass man objektorientiert programmieren muss. Das sollte man sich auf jedenfall aneignen, sonst wird man nicht weit kommen. Alle weiteren Designpattern kommen dann nach und nach.
  22. Wie weit bist du denn schon mit Programmierung allgemein und spezifisch in C#? Wo genau hast/hättest du Probleme, wenn du einen Taschenrechner, einen Chat etc. programmieren würdest? Mit Büchern ist es immer so eine Sache, oft werden nur kleine Programme zur Veranschaulichung geschrieben. Aber es gibt auch praxisbezogene Bücher, einfach mal nach "c# praxis" suchen. Häufig wird dort über das gesamte Buch hinweg an einem oder zwei Programmen gearbeitet. Am besten die Beschreibung durchlesen, ob das zutrifft.
  23. Du musst jetzt einfach deinen Weg gehn. Dass dies für beide Seiten nicht einfach ist, vor allem wenn es weiter weg ist, ist klar. Aber ihr müsst beide lernen, mit der Situation zurecht zu kommen und das werdet ihr bestimmt. Wahrscheinlich wird es euer Verhältnis sogar noch stärken. Du musst dich jetzt aber auf deine Bildung kümmern, mit einer guten Ausbildung stehen dir viele Wege offen. Das wird dein Vater auch wissen und er würde es nicht wollen, wenn du wegen ihm abbrechen würdest. Außerdem gehen drei Jahre schnell vorbei. Mit den Freunden wird es so sein: nach und nach ziehen sie selber weg (Studium, Arbeitsstelle, ...), gründen Fammilien usw., dann wirst du dich sowieso nicht mehr so oft mit ihnen treffen können. Ich würde sagen, das ist ein ganz normaler Schritt auf dem Weg zum Erwachsensein, jedenfalls auch meiner Erfahrung nach. Es bleibt leider(!) nicht alles so wie es bisher war... Manche Freundschaften wirst du vielleicht verlieren, andere sogar stärken. Von deinen Freunden würde wahrscheinlich nicht jeder wegen dir dort bleiben. Fammilie ist und bleibt Fammilie, egal wie weit weg du bist
  24. Ich würde gerne wissen, welche Maßnahmen bisher ergriffen wurden. Wenn du das einfach still hinnimmst, wird es für den Chef einfach nur selbstverständlich, dass Überstunden gemacht werden, am Wochenende gearbeitet wird etc. Ich würde einfach pünktlich Feierabend machen und am Wochenende nicht rangehen, wenn er anruft. Wenn er ein Problem damit hat, erst einmal darauf hinweisen, dass die Sollzeit erreicht ist und sowieso schon zu viele Überstunden angesammelt sind. Das Problem dabei ist, dass man sich dann nichts mehr zu schulden kommen lassen darf (zu spät erscheinen etc.), sonst wird gleich abgemahnt. Besser ist es immer, eine friedliche Lösung zu finden (zB indem man Bereitschaft zeigt, Überstunden bei Ausnahmefällen zu leisten, aber diese klar geregelt und nicht willkürlich sind).
  25. Das kann bei Inhouse-IT-Abteilungen aber genauso aussehen. Dort ist auch nicht immer die Manpower und/oder Zeit vorhanden, alles zu dokumentieren. Auch dort kommen Kollegen mit Software an, für die sie irgendeinen Keygen haben und haben kein Verständniss, dass wir sowas weder installieren noch supporten. Auch in Inhouse-ITs wird gefrickelt und gebastelt (häufig auch, weil die Ressourcen fehlen).

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...