Dienstag, Juni 30, 2009

Fazit zu meiner Lehre

In den letzten Tagen habe ich meine Lehre erfolgreich abschliessen können. In diesem letzten Blogeintrag will ich noch ein kleiner Rückblick auf meine Lehrzeit geben.

Meine Lehre hat mir im grossen und ganzen ganz gut gefallen. Ich lernte sehr viel und hatte wirklich grosses Glück mit meiner Lehrfirma, bei der ich Arbeiten erledigen konnte, die mir grösstenteils gefielen und an denen ich Spass hatte. Klar gab es zum Teil Aufträge, die etwas weniger spannend waren und die man schnellstmöglich erledigen wollte, aber das gehört glaube ich auch dazu.

Die Berufsschule war leider von der Qualität her sehr unterschiedlich. Zum einen hatte man wirklich gute Lehrer, die einem etwas beibringen wollten und zum anderen waren halt auch Lehrer da, die nur kopierte Dokumente austeilten und keine Ahnung vom Thema hatten!

Aber schlussendlich kommt es auf die Einstellung jedes einzelnen an, wie viel man in einer Lehre auch wirklich lernt. Das wichtigste ist, dass man bereit ist, auch viel selbst zu lernen und bei Problemen die man nicht versteht, nicht nach dem ersten Anlauf schon aufzugeben!

In Zukunft habe ich vor, wenn möglich die FH zu besuchen und so noch etwas tieferen Einblick in die Informatik zu bekommen.

An dieser Stelle möchte ich mich noch einmal ganz herzlich bei all den Leuten bedanken, die mir diese Lehre ermöglichten und mir bei den aufgetretenen Problemen immer hilfreich zur Seite standen!

Freitag, April 03, 2009

IPA (S-Bus Master Bibliothek)

In den letzten 3 Wochen habe ich meine IPA, also die praktische Abschlussarbeit gemacht.

Ich musste eine S-Bus Master Bibliothek erstellen. Diese wird benötigt um aus einem Verdichtersteuergerät Daten auslesen zu können.

Die Arbeit bestand zusätzlich aus einer Dokumentation und einer noch anstehenden Präsentation.

Bei der Implementation gab es vier Teile zu erstellen.

  • Kommunikationsstack
  • Allgemeinedatenabfrage (Kommunikationsbibliothek)
  • Prozessdatenabfrage (S-Bus Master Bibliothek)
  • Interface

Kommunikationsstack

Bei diesem Teil ging es darum die ganze Kommunikation zum Gerät inklusive Header in einer Klasse zu kapseln und so eine simpel zu benutzende Kommunikation zu erstellen. Ich habe ein Klasse erstellt über die man ein Paket generieren kann. Über den Konstruktor werden alle Daten angegeben und danach kann über eine Methode das gesamte Paket ausgelesen und verschickt werden.

Allgemeinedatenabfrage

Über verschiedene Methoden können direkt allgemeine Daten des Geräts abgefragt werden. Es ist z.B. möglich die Software-Version abzufragen oder auch das aktuelle Datum und die Uhrzeit.

Prozessdatenabfrage

Die Geräte stellen verschiedene Daten zur Verfügung, die Auskunft über ihr Verdichter geben. Es können verschiedenste Werte wie Temperaturen und Prozentwerte ausgelesen werden. Die Geräte werden in einem Pool abgelegt und der Benutzer der Bibliothek kann sie dann komfortabel über ein Prozessabbild auslesen.

Interface

Das Interface soll eine möglicht intuitive Nutzung der Funktionen ermöglichen. Über mehrere Methoden sollen Daten des Wettronics direkt abgefragt werden können. Auch das Inventarisieren des Busses soll über einen einzigen Aufruf möglich sein.

Freitag, Dezember 19, 2008

LINQ to SQL Teil 2

Im ersten Teil wurde die Möglichkeit, Beziehungen zwischen den Tabellen zu erstellen nicht behandelt. Das will ich hier etwas genauer erklären.

Diese Beziehung bedeutet das jedem Mitarbeiter eine Funktion zugeordnet ist (1:n).







Grundsätzlich ist es möglich auch ohne "eingezeichnete" Beziehung die gewünschte Funktion zu erreichen.
Wenn man keine Beziehung erstellt, hat man aber das Problem, dass häufig komplexere Abfragen erstellt werden müssen und zusätzlich den Nachteil das auch das Diagramm weniger aussagekräftig ist.
Hier kann man jetzt gut sehen, wie einfach und intuitiv der Zugriff auf die Funktion des Mitarbeiters ist. Ohne Beziehung wäre das so nicht direkt möglich!




Auch kann man jetzt z.B. die Funktions-Beschreibung von hier aus direkt ändern.


Ist nicht gerade ein vorbildliches Beispiel, zeigt aber das Prinzip gut.

Montag, Oktober 20, 2008

LINQ to SQL

Bei diesem etwas längeren Eintrag in meinen Blog soll es darum gehen, wie man mit .NET eine einfache Datenbank-Anbindung erstellt.

Früher musste man immer ein Datenbanklayout mit einem DBMS erstellen, danach musste das ganze noch halbwegs übersichtlich im Programm nachgebildet werden.

Der dritte Schritt war dann irgendwelche SQL-Strings im Programm einzubauen, die Daten abfragten, speicherten und löschten...

Mit dem .NET Framework 3.5 bzw. der Visual Studio Version 2008 und dem zwingend benötigten SQL-Server 2005/2008 hat sich das ganze SEHR vereinfacht, dank der LINQ to SQL-Technologie.

Ich will hier eine kleine Anleitung geben, wie man in C# so ein Datenbank-Projekt erstellt. Dazu reicht auch die Express Version 2008!

1. Hat man ein Projekt erstellt, geht man zuerst mal auf Projekt/Neues Element hinzufügen danach auf LINQ to SQL-Klassen. Als Name gibt man z.B. der Name der Datenbank an.

2. Mit dem O/R-Designer kann man jetzt die Datenbank Struktur erstellen. Dazu fügt man einfach eine neue Klasse ein und erstellt die verschiedenen Eigenschaften. Primärschlüssel, Datentypen und anderes kann im Eigenschaftsfenster festgelegt werden. Auch sind Zuordnungen möglich.









3. Um aus C# jetzt auf die Datenbank zuzugreifen, brauchen wird die Klasse DatabaseDataContext. Als erster Schritt muss die Datenbank auf dem SQL-Server angelegt werden (Der Connection-String kann natürlich auch anderes sein).



4. Um jetzt einen neuen Mitarbeiter hinzuzufügen genügt folgender Code.








5. Das Auslesen aus der DB ist genau so einfach!



Mithilfe von LINQ können jetzt z.B. auch nur solche Mitarbeiter abgefragt werden, die zum Vornamen "Fritz" heissen.



Änderungen können direkt am Objekt durchgeführt werden und müssen dann über SubmitChanges() zur Datenbank übermittelt werden.

Löschen kann man über DeleteOnSubmit() das im Tabellen-Objekt zu finden ist.

Wird das ERM geändert, muss die DB einfach über DeleteDatabase() gelöscht, danach wieder über CreateDatabase() erstellt werden.

Wenn man das ERM lieber nicht über den Designer erstellen will, kann man das auch über den Code erledigen und die Klassen mit verschiedenen Attributen ausstatten.

Freitag, August 22, 2008

Drive SnapShot

Drive SnapShot ist Backup Programm.

Mit dem Programm ist es möglich, Partitionen im laufenden Betrieb zu sichern.

Es werden mehrere Image Dateien erstellt, die man z.B. dann auf eine externe Festplatte kopieren kann.

Es ist auch möglich System Partitionen zur Laufzeit zu sichern!

Zum wiederherstellen der Daten, kann einfach das Image und das Ziellaufwerk gewählt werden.

Zusätzlich kann das Image gemappt werden und es wird dann im Explorer angezeigt. Dort kann man dann einzelne Dateien kopieren oder löschen.

Freitag, Juli 25, 2008

Google AdSense

Mit dem Google Dienst AdSense ist es möglich, Werbung auf der eigenen Website zu platzieren. Dazu braucht man ein Google Konto mit aktiviertem AdSense.

Die Funktionsweise ist eigentlich sehr einfach: Für jeden Klick auf die Werbung wird man bezahlt bzw. einen Betrag gutgeschrieben.
Hat man 100$ erreicht, wird der Betrag ausgezahlt.

Der Vorteil von AdSense gegenüber "normaler" Banner Werbung ist, dass die Werbung auf den Inhalt der Website abgestimmt wird und somit mehr Klicks wahrscheinlicher sind.

Das Gegenstück von AdSense, also die Platform um eigene Werbung zu platzieren, heisst AdWords.

Montag, Juni 30, 2008

yield in C#

Das Schlüsselwort yield ermöglicht eine simple Implementierung eines Iterators.

Die Klasse kann dann mit foreach durchlaufen werden.


Natürlich könnte man bei diesem Beispiel auch die List gegen aussen sichtbar machen, aber dann wäre natürlich ein ändern der Einträge möglich, was vielleicht nicht gewünscht ist.