Dieser Freitag bestand für mich auch Unterricht und der darauffolgenden Ausarbeitung für die Datenbank und der darin von uns erfassten Daten. Schulisch ging es zuerst um die Globalisierung, mit ihren Ursachen. genannt wurden untern anderen das Ende des Ost-West-Konfliktes, und die Weiterentwicklung der Kommunikationstechnologie. Auch die Riesigen wurden angesprochen. Danach wurde in ITS der elektrische Strom behandelt und die Stunde Betriebswirtschaftslehre danach klärte uns über Monopole, Polypole und Oligopole auf.
Nach dem Unterricht bin ich dann wieder in den Betrieb gefahren und habe mit meinem Ausbilder begonnen das XML - Tool mit dem ersten Auswertungs - Plugin zu erweitern. Bereits in der Datenbank enthaltene Daten sollten über einen Schlüssel mit einem weiteren Export, welcher über ein anderes Java Tool als .xls in die Datenbank eingespielt wurde abgeglichen werden. Dazu wurden zwei weitere Klassen geschrieben. Eine, welche den Vergleich vornimmt und eine weitere, welche die Vergleicherklasse instanziiert. Der Code bestand dann zum Schluß vorrangig aus SQL. Nachdem die Tests erfolgreich waren wurde der Aufruf in den Bereits bestehenden Timer eingebaut, denn die Auswertung soll ebenfalls zyklisch in einem gewissen Zeitraum und selbsttätig ausgeführt werden.
Die entstehenden Daten werden in die Datenbank in eine neue Table zurückgeschrieben und bleiben dort erhalten. Die Veränderung über einen größeren Zeitraum zu betrachten ist dabei von nicht unerheblichem Interesse. Die Auswertung bzw. Übertragung der Daten erfolgt noch (auf die Guttenberg-Art) , wird aber bei Zeiten entweder über den Browser, oder per Java erfolgen.
Freitag, 4. März 2011
Donnerstag, 3. März 2011
Excel nach SQL mit JAVA
Wenn mann mit Datenbanken arbeitet kommt es öfter vor, dass mann verschiedene Datenquellen hat die man aber trotzdem automatisiert auswerten möchte. Hierfür ist es wichtig, dass man die Daten ersteinmal in einem einheitlichen System, wie zu Bespiel einer SQL - Datenbak hat, damit die Anbindung per Software einfacher und schneller von statten geht. Selbstverständlich ist es auch möglich mit den unterschiedlichsten Formaten zu arbeiten, allerdings wirds dann kompliziert, wenn sich Strukturen oder Verzeichnisse ändern, oder wenn einfach mal Fehler auftauchen und man nicht ausschließen kann, das diese nicht beim Datenimport entstanden sind.
Zuerst haben wir uns mit der Übertragung von XML nach SQL beschäftigt, nun war auch Ecxel und sein .xls Dateiformat dran. Auch heirfür gibt es, genau wie bei XML auch bereits vorgefertigte Bibliotheken, die man nur einbauen muss um dann sofort die Möglichkeiten nutzen zu können.
Hier wird zunächst ein neues Workbook erstellt. Die Klasse workbook, welche dann die xls öffnet kann dann über die Methode getSheet in einzelne Arbeitsblätter, welche in der Datei enthlaten sind aufgeteilt werden.
Also erzeugt man ein neues Sheet-Objekt und lädt diese dort hinein.
Einzelne Werte können dann methodisch reihen - und spaltenweise ausgelesen und mithilfe von SQL - Befehlen und PreparedStatement sowie ResultSet an die Datenbank übergeben werden.
Zuerst haben wir uns mit der Übertragung von XML nach SQL beschäftigt, nun war auch Ecxel und sein .xls Dateiformat dran. Auch heirfür gibt es, genau wie bei XML auch bereits vorgefertigte Bibliotheken, die man nur einbauen muss um dann sofort die Möglichkeiten nutzen zu können.
Hier wird zunächst ein neues Workbook erstellt. Die Klasse workbook, welche dann die xls öffnet kann dann über die Methode getSheet in einzelne Arbeitsblätter, welche in der Datei enthlaten sind aufgeteilt werden.
Also erzeugt man ein neues Sheet-Objekt und lädt diese dort hinein.
Einzelne Werte können dann methodisch reihen - und spaltenweise ausgelesen und mithilfe von SQL - Befehlen und PreparedStatement sowie ResultSet an die Datenbank übergeben werden.
CeBIT 2011
Ich gebe zu, ich berichte nun am ersten Tag in Folge von der CeBIT, da ich gestern einfach nicht mehr dazu gekommen bin.
Aufbruch war am Dienstag Abend um 21:25. Zuerst ging die Reise mit der S-Bahn nach Stuttgart, von dort aus mit dem Regionalexpress nach Karlsruhe und schließlich von dort aus innerhalb von 7 Stunden ab 23:18 nach Hannover.
Die Fahrt an sich schieb aber doch recht kurzweilig, und nach einem apathischen Frühstück und dem Umkleiden auf der Bahnhofstoilette ( Umkleiden für 1 €! so teuer wie noch nie ) begaben wir uns auf das Messe / Laatzen Gelände wo die CeBIT stattfindet. Durch den Südeingang betraten wir das Gelände gegen 9:30 kurz nach eröffnung und haben uns erstenmal auf dem Gelände und in den einzelnen Messehallen umgesehen.
Wir betraten also Halle 9, in der vor allem Forschung und Entwicklung ausgestellt wurden.
Das erste was mir ins Auge fiel war ein Modell eines GLONASS - Satteliten im Maßstab 1:1. Dieses russische Äquivalent zum Amerikanischen GPS und zum europäischen Galileo zeichnet sich durch eine hohe Verfügbarkeit des Signals auch an den Polen aus. Hier begegnete uns auch ein kleiner Roboter, den ma per Remote-Zugriff aus dem Internet über die Messe steuern und sich die Aussteller mithilfe der installierten Webcams anschauen konnte.
Ein weiteres Highligt war die Spieler - Halle, in der mehrere Turniere u.a. Starcraft II und Counterstrike ausgetragen wurden.
Ein großer Schwerpunkt waren auch 3D Darstellung und spezielle Bildschirme, allerdings waren Demonstrationseinheiten meistens belegt.
Das Ziel unserer kleinen Gruppe waren dann zumeist doch die Pavillions unserer Partner, an denen Wir von Neuerungen erfuhren, uns beraten ließen und den ein oder anderen Kaffee genossen.
Nach 9 anstrengenden Stunden Fußmarsch konnten wir dann zurück auf den Bahnhof, wo wir noch eine Stunde in der Kälte ausharren und uns aufgrund einer Verspätung noch um unsere Anschlusszüge sorgen mussten.
Alles in allem war es zwar eine tolle Erfahrung, allerdings kann ich mich dem Urteil meiner Kollegen nur anschließen, dass die CeBIT doch einiges vom Glanze früherer Jahre verloren hat. Von einer der größten Elektronik und Software-Messen der Welt erwartet man eben nicht nur Masse, sondern auch Spektakel.
Leider war uns damit nun nicht wirklich gedient.
Nächstes Jahr wird es wohl keinen Besuch mehr geben.
Beeindruckend war auch der gewaltige Pavillion der deutschen Telekom. Die Installation sah aus wie ein riesenhaftes Modell aus Papier, so wie es Architekten verwenden. Ein faszinierendes Spiel aus Linien und Licht.
Leider mussten wir einige Stände missen, da die zuständigen Firmen nicht auf der Cebit vertreten waren. Darunter Intershop und, was wir am meisten bedauert haben, auch OXID.
Beeindruckend und gut besucht war der Pavillion der Firma Tobit, welcher wie eine Lounge ausgestattet war. Ganz in Schwarz und überdacht, versehen mit grünem Ambient-Light.
Aufbruch war am Dienstag Abend um 21:25. Zuerst ging die Reise mit der S-Bahn nach Stuttgart, von dort aus mit dem Regionalexpress nach Karlsruhe und schließlich von dort aus innerhalb von 7 Stunden ab 23:18 nach Hannover.
Die Fahrt an sich schieb aber doch recht kurzweilig, und nach einem apathischen Frühstück und dem Umkleiden auf der Bahnhofstoilette ( Umkleiden für 1 €! so teuer wie noch nie ) begaben wir uns auf das Messe / Laatzen Gelände wo die CeBIT stattfindet. Durch den Südeingang betraten wir das Gelände gegen 9:30 kurz nach eröffnung und haben uns erstenmal auf dem Gelände und in den einzelnen Messehallen umgesehen.
Wir betraten also Halle 9, in der vor allem Forschung und Entwicklung ausgestellt wurden.
Das erste was mir ins Auge fiel war ein Modell eines GLONASS - Satteliten im Maßstab 1:1. Dieses russische Äquivalent zum Amerikanischen GPS und zum europäischen Galileo zeichnet sich durch eine hohe Verfügbarkeit des Signals auch an den Polen aus. Hier begegnete uns auch ein kleiner Roboter, den ma per Remote-Zugriff aus dem Internet über die Messe steuern und sich die Aussteller mithilfe der installierten Webcams anschauen konnte.
Ein weiteres Highligt war die Spieler - Halle, in der mehrere Turniere u.a. Starcraft II und Counterstrike ausgetragen wurden.
Ein großer Schwerpunkt waren auch 3D Darstellung und spezielle Bildschirme, allerdings waren Demonstrationseinheiten meistens belegt.
Das Ziel unserer kleinen Gruppe waren dann zumeist doch die Pavillions unserer Partner, an denen Wir von Neuerungen erfuhren, uns beraten ließen und den ein oder anderen Kaffee genossen.
Nach 9 anstrengenden Stunden Fußmarsch konnten wir dann zurück auf den Bahnhof, wo wir noch eine Stunde in der Kälte ausharren und uns aufgrund einer Verspätung noch um unsere Anschlusszüge sorgen mussten.
Alles in allem war es zwar eine tolle Erfahrung, allerdings kann ich mich dem Urteil meiner Kollegen nur anschließen, dass die CeBIT doch einiges vom Glanze früherer Jahre verloren hat. Von einer der größten Elektronik und Software-Messen der Welt erwartet man eben nicht nur Masse, sondern auch Spektakel.
Leider war uns damit nun nicht wirklich gedient.
Nächstes Jahr wird es wohl keinen Besuch mehr geben.
Beeindruckend war auch der gewaltige Pavillion der deutschen Telekom. Die Installation sah aus wie ein riesenhaftes Modell aus Papier, so wie es Architekten verwenden. Ein faszinierendes Spiel aus Linien und Licht.
Leider mussten wir einige Stände missen, da die zuständigen Firmen nicht auf der Cebit vertreten waren. Darunter Intershop und, was wir am meisten bedauert haben, auch OXID.
Beeindruckend und gut besucht war der Pavillion der Firma Tobit, welcher wie eine Lounge ausgestattet war. Ganz in Schwarz und überdacht, versehen mit grünem Ambient-Light.
Dienstag, 1. März 2011
Neues Auswertungstool für die Tickets
Heute wurde ich vor vollendete Tatsachen gestellt.
Mein Ausbilder hat die Auswertung der Ticket - Bearbeitungszeiten aufs Korn genommen und ein feines kleines Werkzeug zur Auswertung geschrieben. Natürlich für den Browser und in diesem Fall logischerweise mit PHP.
Das Ergebnis sind 13 Klassen und am Ende eine hübsche tabellarische Auflistung der Bearbeitungszeiten des aktuellen - und des Vortages, sowie eine Gesamtübersicht.
Kern der Auswertung sind die durch das Java - Erfassungsprogramm aufgenommenen Daten, welche in eine Datenbank geschrieben werden. Gespeichert werden Bearbeiter, Bearbeitungsdauer, Kategorie und noch einige weitere Daten. Diese werden zur Auswertung dann herangezogen. Dargestellt werden die Bearbeitungszeiten nach den jeweiligen Kategorien in vier verschiedenen Tabellen.
Für die Einzelne Datenerfassung werden die hierfür benötigten werte mit SQL ausgelesen. Anschließend aufaddiert und in der entsprechenden Spalte ausgegeben.
Etwas problematisch und unelegant erscheint mir dabei immer die direkte Verbindung des lebendigen dynamischen PHP - Codes und dem Starren HTML.
Mein Ausbilder hat die Auswertung der Ticket - Bearbeitungszeiten aufs Korn genommen und ein feines kleines Werkzeug zur Auswertung geschrieben. Natürlich für den Browser und in diesem Fall logischerweise mit PHP.
Das Ergebnis sind 13 Klassen und am Ende eine hübsche tabellarische Auflistung der Bearbeitungszeiten des aktuellen - und des Vortages, sowie eine Gesamtübersicht.
Kern der Auswertung sind die durch das Java - Erfassungsprogramm aufgenommenen Daten, welche in eine Datenbank geschrieben werden. Gespeichert werden Bearbeiter, Bearbeitungsdauer, Kategorie und noch einige weitere Daten. Diese werden zur Auswertung dann herangezogen. Dargestellt werden die Bearbeitungszeiten nach den jeweiligen Kategorien in vier verschiedenen Tabellen.
Für die Einzelne Datenerfassung werden die hierfür benötigten werte mit SQL ausgelesen. Anschließend aufaddiert und in der entsprechenden Spalte ausgegeben.
Etwas problematisch und unelegant erscheint mir dabei immer die direkte Verbindung des lebendigen dynamischen PHP - Codes und dem Starren HTML.
Freitag, 25. Februar 2011
GUI Fortsetzung JAVA
Ich bin mir ziemlich sicher bereits erwähnt zu haben, dass sich die Entwicklung von Grafischen Benutzeroberflächen in Java sogar mit dem dafür vorgesehenen Equipment ( Visual Editor für eclipse) ein zeimlich schmerzhafter Prozess ist.
Gestern habe ich vier Stunden damit zugebracht mich etwas darin einzuarbeiten. Selbstverständlich ist alles Übungssache, aber der Aufbau von Frames und den darin enthaltenen Elementen könnte meiner Meinung nach kaum unintuitiver gestaltet worden sein. Selbstverständlich muss ein Frame wie ihn heute alle Windowsbenutzer kennen ( gibt es eigentlich Betriebssysteme die auf die Frame - GUI verzichten ) einige Anforderungen erfüllen:
Der Frame kann vergrößert oder verkleinert werden. Dafür muss aber vorher festgelegt sein, wie sich die einzelnen Elemente verhalten, wenn die Größe sich ändert. Dafür kann man die Elemente in Raster, sogenannte GridBacks unterteilen. Je nach Vorgabe bleiben dann Rasterelemente beim Scrollen der Größe gleich groß ( Bei Buttons , die mit Text gefüllt sind besipielsweise unverzichtbar, da man sonst den Text nichtmehr lesen kann ) oder verändern die Elemente Ihre Größe ( z.B.: Textfelder , die dann scrollbars bekommen, damit man den Text trotzdem noch lesen kann, notfalls auch Wort für Wort ).
Schwierig ist es nun dies zu berücksichtigen. Komplizierter wird das ganze nun noch, wenn man mehrere Elementträger, sogenannte JPanes in einem Frame hat. Kein Objekt kann ohne darunterliegendes JPane dargestellt, bzw. eingebaut werden und meistens ist es nötwendig mindestens zwei bis drei JPanes zu verwenden.
Für jedes dieser JPanes muss auf dem darüberliegenden Pane eine Sortierstruktur ausgewählt werden, z.B.: ausrichtung nach X- oder Y- Koordinate. Natürlich ist es auch möglich die Rastermethode zu verwenden um die Elemente wenigstens grob in Position zu bringen.
Gestern habe ich vier Stunden damit zugebracht mich etwas darin einzuarbeiten. Selbstverständlich ist alles Übungssache, aber der Aufbau von Frames und den darin enthaltenen Elementen könnte meiner Meinung nach kaum unintuitiver gestaltet worden sein. Selbstverständlich muss ein Frame wie ihn heute alle Windowsbenutzer kennen ( gibt es eigentlich Betriebssysteme die auf die Frame - GUI verzichten ) einige Anforderungen erfüllen:
Der Frame kann vergrößert oder verkleinert werden. Dafür muss aber vorher festgelegt sein, wie sich die einzelnen Elemente verhalten, wenn die Größe sich ändert. Dafür kann man die Elemente in Raster, sogenannte GridBacks unterteilen. Je nach Vorgabe bleiben dann Rasterelemente beim Scrollen der Größe gleich groß ( Bei Buttons , die mit Text gefüllt sind besipielsweise unverzichtbar, da man sonst den Text nichtmehr lesen kann ) oder verändern die Elemente Ihre Größe ( z.B.: Textfelder , die dann scrollbars bekommen, damit man den Text trotzdem noch lesen kann, notfalls auch Wort für Wort ).
Schwierig ist es nun dies zu berücksichtigen. Komplizierter wird das ganze nun noch, wenn man mehrere Elementträger, sogenannte JPanes in einem Frame hat. Kein Objekt kann ohne darunterliegendes JPane dargestellt, bzw. eingebaut werden und meistens ist es nötwendig mindestens zwei bis drei JPanes zu verwenden.
Für jedes dieser JPanes muss auf dem darüberliegenden Pane eine Sortierstruktur ausgewählt werden, z.B.: ausrichtung nach X- oder Y- Koordinate. Natürlich ist es auch möglich die Rastermethode zu verwenden um die Elemente wenigstens grob in Position zu bringen.
Datenbankanbindung mit PHP Teil 2
Ok damit mache ich heute einfachmal da weiter, wo ich gestern aufgehört habe und erläutere noch mehr methoden aus dem Php standart, mit denen man viele Tolle Sachen machen kann.
Zum Beispiel die Eingangserfassung von Paketen.
Wie viele wissen befindet sich der Php-Code auf dem server und wird vor Absenden der HTML- Webseite ausgeführt und dann aus dem Code entfernt. Problematisch daran ist, dass einige Dinge nicht vor ort ( also auf dem Rechner des Benutzers) ausgeführt werden können. Da dies nicht möglich ist, muss die Website, die dem Benutzer angezeigt wird irgendwie mit dem Server kommunizieren. Dies funktionierte früher mittels der Datenübertragung aus der URL, welche einfach als Paket gekapselt durch das internet rauschte und im Anschluß vom Server und dem entsprechenden Php Code ausgewertet werden konnte. Allerdings ist diese Methode nicht besonders Sicher, da die URL auch von Dritten ausgelesen werden kann.
Die sicherere und mittlerweile fast überall verwendete variante ist eine Übergabe der Daten in einem Feld ( einem Array ) dieses erreicht den Server auf einem anderen Weg und kann nicht über den Browser ausgelesen werden.
Die Attribute zur Fortsetzung der Bearbeitung von Nutzeranfragen sind dem Programm dann zugänglich, und können ausgelesen werden. Die Bezeichnung diese Feldes ist $_POST.
Es entspricht den PHP_standarts und ist ein assoziatives Array. Die Schlüssel sind dabei die Namen ( name=""...) der Formularfelder.
Die Übergabe findet selbstverständlich erst nach absenden des Formulares ab. Hier beitet sich nun die Möglichkeit eines Selbstaufrufes oder des aufrufens einer fortführenden Seite.
Zum Beispiel die Eingangserfassung von Paketen.
Wie viele wissen befindet sich der Php-Code auf dem server und wird vor Absenden der HTML- Webseite ausgeführt und dann aus dem Code entfernt. Problematisch daran ist, dass einige Dinge nicht vor ort ( also auf dem Rechner des Benutzers) ausgeführt werden können. Da dies nicht möglich ist, muss die Website, die dem Benutzer angezeigt wird irgendwie mit dem Server kommunizieren. Dies funktionierte früher mittels der Datenübertragung aus der URL, welche einfach als Paket gekapselt durch das internet rauschte und im Anschluß vom Server und dem entsprechenden Php Code ausgewertet werden konnte. Allerdings ist diese Methode nicht besonders Sicher, da die URL auch von Dritten ausgelesen werden kann.
Die sicherere und mittlerweile fast überall verwendete variante ist eine Übergabe der Daten in einem Feld ( einem Array ) dieses erreicht den Server auf einem anderen Weg und kann nicht über den Browser ausgelesen werden.
Die Attribute zur Fortsetzung der Bearbeitung von Nutzeranfragen sind dem Programm dann zugänglich, und können ausgelesen werden. Die Bezeichnung diese Feldes ist $_POST.
Es entspricht den PHP_standarts und ist ein assoziatives Array. Die Schlüssel sind dabei die Namen ( name=""...) der Formularfelder.
Die Übergabe findet selbstverständlich erst nach absenden des Formulares ab. Hier beitet sich nun die Möglichkeit eines Selbstaufrufes oder des aufrufens einer fortführenden Seite.
Mittwoch, 23. Februar 2011
Datenbankanbindung mit PHP
Da mir bereits erfolgreich eine Verbindung aus php und MySQL geglückt ist ( das Monatsauswertungstool ), sollte nun, um eingehende Pakete zu prüfen eine Website geschrieben werden, die die Sendungsdaten aufnehmen soll. Diese aufgenommenen Daten werden dann mit in der Datenbank gespeicherten Daten abgegelichen und ein weiterer Eintrag in einer neuen Table erzeugt.
Mithlife von php und Javascript wurde zuerst die website geschrieben. Hierbei handelt es sich um ein einfaches Formularfeld, das immer aktiv ist. Dies geschieht mit der Methode Focus() von JavaScript. Allerdings reagieren die Browser unterschiedlich darauf, und es spielt scheinbar auch eine Rolle, welchen Server man verwendet, damit der Cursor an der gewünschten Stelle blinkt.
Ist das geschafft, kann man sich dem Eingabegerät zuwenden. Die Sendungsdaten werden als Barcode von einem Laserscanner erfasst und dank des fokussierten Formularfeldes sofort an die richtiege Stelle geschrieben. Die Ausführung des Php - Codes erfolgt sofort nach dem Scanvorgang. Die Nummer wird mit der Zeile in der Datenbank vergleichen - ist sie vorhanden wird ein entsprechender Eintrag zusammengestellt und in die Datenbank zurückgeschrieben.
Nun den verwendeten Methoden:
mysql_connect(String source, String connection, String password):
Stellt eine Verbindung mit der Datenbak des Servers her.
Weitere Details gibts morgen.
Mithlife von php und Javascript wurde zuerst die website geschrieben. Hierbei handelt es sich um ein einfaches Formularfeld, das immer aktiv ist. Dies geschieht mit der Methode Focus() von JavaScript. Allerdings reagieren die Browser unterschiedlich darauf, und es spielt scheinbar auch eine Rolle, welchen Server man verwendet, damit der Cursor an der gewünschten Stelle blinkt.
Ist das geschafft, kann man sich dem Eingabegerät zuwenden. Die Sendungsdaten werden als Barcode von einem Laserscanner erfasst und dank des fokussierten Formularfeldes sofort an die richtiege Stelle geschrieben. Die Ausführung des Php - Codes erfolgt sofort nach dem Scanvorgang. Die Nummer wird mit der Zeile in der Datenbank vergleichen - ist sie vorhanden wird ein entsprechender Eintrag zusammengestellt und in die Datenbank zurückgeschrieben.
Nun den verwendeten Methoden:
mysql_connect(String source, String connection, String password):
Stellt eine Verbindung mit der Datenbak des Servers her.
- "source" ist die Angabe der Quelle, entweder die DHCP - Bezeichnung oder die IP-Nummer
- "connection" ist die Bezeichnung der Verbindung mit der MySQL Datenbank
- "password" ist das MySQL Passwort der Verbindung
Weitere Details gibts morgen.
Abonnieren
Posts (Atom)
