VHPD Blog Blog for [V]ideo, [H]ardware, [P]rograms, [D]ata and more..

16Feb/11

Grundlagen der Informatik – Routingtabelle

Grundlagen der Informatik - Routingtabelle - Routing Information Base

Da wir nun wissen, wie unser Netzwerk aufgebaut wird mit Subnetting, müssen wir nun unsere Router und Endgeräte konfigurieren, damit diese auch im Einsatz wissen, wie sie mit den kommenden Paketen umgehen müssen.

Einige werden sich vielleicht nun fragen, wieso denn die Endgeräte eine Routingtabelle führen müssen, aber der Grund ist eigentlich offensichtlich.
Unsere Netzwerkkarte muss wissen, wie Sie das Paket verschicken muss, damit es auch das Ziel erreicht. Denn die Netzwerkkarte muss wissen, ob es lokal, im eigenen Netzwerk oder in einem entfernten Netzwerk liegt.

Die Routingtabelle kann man auch jederzeit in der Konsole ausgeben lassen, unter Windows lautet der Befehl "route print".

routingtabelle_windows_vhpd

Diese Routingtabelle wurde von Windows 7 automatisch erstellt und auffallend sind hierbei die doppelten Einträge.

Die Routingtabelle hat folgende Spalten: Netzwerk-Adresse, Subnetzmaske, Gateway/Router und Schnittelle.

Im Folgenden werden wir nun das Beispiel vom Subnetting-Artikel aufgreifen und daraus die Routingtabellen erstellen.
- Zu unserem Subnetting Beispiel ->

router_einteilung_subnetting_vhpd

Für den Anfang werden wir die Routingtabelle des Router 1 erstellen:

Zielnetzadresse Subnetmask Gateway/Router Schnittstelle Bemerkung
127.0.0.0 /8 = 255.0.0.0 127.0.0.1 127.0.0.1 localhost
192.168.1.0 /28 = 255.255.255.240 192.168.1.14 192.168.1.14 eigenes Netz (Entwicklung)
192.168.1.40 /28 = 255.255.255.240 192.168.1.46 192.168.1.46 eigenes Netz (Fertigung)
192.168.1.52 /30 = 255.255.255.252 192.168.1.54 192.168.1.54 eigenes Netz (RouterNetz2)
0.0.0.0 /0 = 0.0.0.0 192.168.1.53 192.168.1.54 default Gateway (Router2)

Der erste Eintrag: lokalhost. Dieser Standard hat jedes Endgerät automatisch integriert, jedoch ist dieser bei dem Router nicht unbedingt notwendig.

Danach kommen alle Netzwerke, die direkt am Router verbunden sind und nicht über einen weiteren Router bzw. Gateway laufen. Diese direkt anliegenden Teilnetze nennt man auch "eigene Netze", bei diesen ist die Schnittstelle und die Gateway/Router Angabe dieselbe, da der Router direkt das Paket ohne Hilfe eines weiteren Router ausliefern kann.

Auch das RouterNetz2 müssen wir als eigenes Netz eintragen, diese Einstellungen werden aber heutzutage von den meisten Routern automatisch konfiguriert.

Der letzte Eintrag 0.0.0.0 /0 ist für alle Pakete gültig und deshalb wird dieser Eintrag auch "Default Gateway" genannt. Somit werden alle Pakete, die der Router nicht direkt austeilen kann, an den dort eingetragenen Router weitergesendet. Dieser kann dann über den weiteren Verlauf des Datenpakets entscheiden.
Das Default Gateway ist auch für das Internet notwendig, denn somit kommen auch die Internetpakete mit netzfremden IP-Adressen an das Ziel.

Router 2

Zielnetzadresse Subnetmask Gateway/Router Schnittstelle Bemerkung
127.0.0.0 /8 = 255.0.0.0 127.0.0.1 127.0.0.1 localhost
192.168.1.52 /30 = 255.255.255.252 192.168.1.53 192.168.1.53 eigenes Netz (RouterNetz2)
192.168.1.48 /30 = 255.255.255.252 192.168.1.49 192.168.1.49 eigenes Netz (RouterNetz1)
192.168.1.32 /29 = 255.255.255.248 192.168.1.38 192.168.1.38 eigenes Netz (Lager)
192.168.1.0 /28 = 255.255.255.240 192.168.1.54 192.168.1.53 entferntes Netz (Router1 | Entwicklung)
192.168.1.40 /29 = 255.255.255.248 192.168.1.54 192.168.1.53 entferntes Netz (Router1 | Fertigung)
0.0.0.0 /0 192.168.1.50 192.168.1.49 default Gateway (Router3)

Der Router 2 spielt eine bedeutende Rolle, da er entscheiden muss, ob das Datenpaket nach oben zum Router 1 oder nach rechts zum Router 3 muss.

Zuerst aber kommt wieder wie oben beschrieben der localhost und danach kommen alle "eigene Netz" Einträge. Diese Routernetze müssen am Anfang eindeutig festgelegt werden, mit der gleichen Schnittstelle und Gateway/Router wird das Datenpaket von dem Router aus zum Zielrouter gesendet.

Zum ersten Mal haben wir nun eine Aufteilung der Pakete zu unterschiedlichen Routern, diese "entfernte Netzte" müssen wir nun sorgfältig trennen. Wenn wir uns den Netzwerkplan anschauen, müssen Pakete der Entwicklung und Fertigung zum Router1 und alle anderen die nicht im eigenen Netzwerk sind müssen zum Router 3. Hierbei muss man nun achten, dass man bei der Schnittstelle die EIGENE ROUTER-IP-ADRESSE angibt und bei Gateway/Router muss man die ZIEL ROUTER IP-ADRESSE angeben.

16Feb/11

Grundlagen der Informatik – Subnetting CIDR und VLSM

Grundlagen der Informatik - Subnetting mit CIDR und VLSM

Immer wichtiger wird das Verbinden von Computern, sei es Daheim oder in der Firma. Aus diesem Grund muss das Netzwerk so gut wie möglich geplant werden, damit es im Einsatz auch allem Stand hält.

Allgemein ist die Netzwerktechnik ein großes Themengebiet, in diesem Beitrag werden wir uns das Subnetting-Verfahren genauer anschauen.

Als Beispiel planen wir nun das Netzwerk innerhalb einer größeren Firma, die eine Entwicklung, Fertigung, Verwaltung und ein Lager hat. Diese Netzwerke sollen mittels des Subnetting-Verfahren sauber getrennt werden, um ein effizientes und sicheres Netzwerk aufzubauen. Man muss dazu noch beachten, dass in der Entwicklung für ein bevorstehendes Erweitern der Abteilung 5 Adressen reserviert werden sollen. Die Verwaltung soll auch 2 IP-Adressen reserviert halten.

start_subnetting_vhpd

Wenn man Subnetting verwendet, muss man sich aber auch vorab im Klaren sein, dass Router benötigt werden, die einzelne Teilnetzwerke miteinander verbinden. Ohne einen Router ist somit die Kommunikation mit einem anderen Teilnetzwerk nicht möglich.

Wir haben als Ausgangsnetz das Netzwerk: 192.168.1.0 /24 gegeben. Diese IP Adresse ist die Netzadresse und das im hinteren Teil, die "/24" weißt auf die Anzahl der 1 in der Subnetmask hin. In unserem Beispiel haben wir die ersten 24 Stellen der Maske auf 1 gesetzt und die restlichen 8 sind null:

1111 1111 . 1111 1111 . 1111 1111 . 0000 0000  (/24 Binär)
255 . 255 . 255 . 0 (dotted decimal, die übliche Angabe)

Mit dieser Information wissen wir nun, dass wir die Restlichen Adressen von 192.168.1.0 bis 192.168.1.255 verwenden dürfen. Es dürfen sich nur immer die Stellen ändern, die mit Nullen markiert sind!

Das Subnetting beinhaltet zwei verschiedene Verfahren:

  1. CIDR (Classles Inter-Domain Routing)
    Hier wird eine feste Subnetzsmask für alle Teilnetzte festgelegt. Dadurch haben wir jedoch das Problem, dass bei unterschiedlichen Größen von Teilnehmern in einem Teilnetzwerk wir das größte Verwenden müssen. Bei unserem Beispiel müssten wir für 5 Adressen Reservieren und dann hätte das Lager auch 5, obwohl es nur 2 bräuchte.
  2. VLSM (Variable-Length Subnet Masking)
    Hier bekommt jedes Teilnetz eine eigene Subnetzmask, die sich anhand der Anzahl der teilnehmenden Geräte orientiert. Dieses Verfahren ist komplexer, da man auf mehrere Fälle achten muss, damit es reibungslos funktioniert.

Für die optimale Nutzung werden wir das VLSM-Verfahren verwenden.

Lösung des Problems: Einteilen der Teilnetze mit dem Erweitern von Netzwerkgeräten.

einteilung_subnetting_vhpd

Um ein wirklich effektives Netzwerk zu erhalten, muss man darauf achten, dass die Kollisionsdomänen möglichst gering gehalten werden und natürlich müssen innerhalb eines Teilnetzes die einzelnen Endgeräte mittels einem Switch verbunden werden. Die Router sind somit über einen Switch zu den einzelnen Teilnetzen verbunden. Man kann auch deutlich erkennen, dass wir 3 Router verwenden, die auch eine direkte Verbindung zum anderen Router haben. Natürlich ist es auch möglich einen 5 Port Router zu verwenden, der zwischen 5 Teilnetzen Arbeiten kann, jedoch aufgrund baulicher Begebenheiten ist es oftmals nicht möglich das so zu organisieren und deshalb werden mehrere Router verwendet.

Wir haben nun Folgende Teilnetze:

  1. Entwicklung - Teilnetz 1 mit 5 Endgeräten + 5 reservierte Adressen + dem Router-Port = 11
  2. Verwaltung - Teilnetz 2 mit 4 Endgeräten + 2 reservierte Adressen + dem Router-Port = 7
  3. Lager - Teilnetz 3 mit 2 Endgeräten + 1 = 3
  4. Fertigung - Teilnetz 4 mit 2 Endgeräten + 1 = 3

    Das war jetzt jedoch nicht alles, da die Netzwerke zwischen den Routern und dem Internet auch beachtet werden müssen, für eine Reibungslose Verwendung.

  5. Router-Netz 1 mit 2 IP-Adressen
  6. Router-Netz 2 mit 2 IP-Adressen
  7. Internet-Netz

Es ist Notwendig, damit man bei dem VLSM-Verfahren das größte Netzwerk zuerst verwendet, da kleinere Netzwerke nur an der Stelle eines Vielfachen der Subnetmask starten können.

Hier ist der Vergleich zwischen den VLSM und dem CIDR Verfahren:

vergleich_vlsm_und_cidr_subnetting_vhpd

Weiteres notwendiges Wissen:
Jedes Teilnetz brauch 2 Adressen mehr, die für die Netzadresse und dem Broadcast verwendet werden!

Im folgenden Schritt müssen wir jetzt schauen, wie groß die Subnetmask sein muss, damit alle Geräte untergebracht werden:

Subnetmask und Anzahl der Verfügbaren Adressen

/24 = 255.255.255.000 hat 256 Adressen - Netzadresse und Broadcast = 254 IP-Adressen
/25 = 255.255.255.128 hat 128 Adressen - (NA + BC) = 126 IP-Adressen
/26 = 255.255.255.192 hat 64 Adressen - (NA + BC) = 62 IP-Adressen
/27 = 255.255.255.224 hat 32 Adressen - (NA + BC) = 30 IP-Adressen
/28 = 255.255.255.240 hat 16 Adressen - (NA + BC) = 14 IP-Adressen
/29 = 255.255.255.248 hat 8 Adressen - (NA + BC) = 6 IP-Adressen
/30 = 255.255.255.252 hat 4 Adressen - (NA + BC) = 2 IP-Adressen

Daraus können wir nur ablesen, welche Subnetmask jedes Teilnetzwerk brauch:

Entwicklung = 11 IP-Adressen, also /28 = 255.255.255.240 -> 3 IP-Adressen ungenutzt
Verwaltung = 7 IP-Adressen, also /28 = 255.255.255.240 -> 7 IP-Adressen ungenutzt
Lager = 3 IP-Adressen, also /29 = 255.255.255.248 -> 3 IP-Adressen ungenutzt
Fertigung = 3 IP-Adressen, also /29 = 255.255.255.248 -> 3 IP-Adressen ungenutzt

RouterNetz1 = 2 IP-Adressen, also /30 = 255.255.255.252 -> 0 IP Adressen ungenutzt
RouterNetz2 = 2 IP-Adressen, also /30 = 255.255.255.252 -> 0 IP Adressen ungenutzt

Als letzten Schritt müssen wir nun die Netzadressen, Subnetmask, Broadcast und den Hostadressbereich festlegen:

loesung_problem_subnetting_vhpd

Nun muss man die Hostadressen bei den Endgeräten festlegen und innerhalb den Routern die Routingtabellen erstellen, diese werden im nächsten Beitrag ausführlich erklärt.

Update: Lösung wurde verbessert, da es einen kleinen Fehler bei der Adressvergabe gab.

4Feb/11

Tutorial: Grub2 Bootreihenfolge Ändern – Ubuntu 10.10

Tutorial: Grub2 Bootreihenfolge Ändern - Ubuntu 10.10

Der neue Bootloader Grub2 hat viele neue Funktionen und es werden auch nun endlich nicht mehr alle Einträge geändert, sobald man es Updatet. Jedoch gibt es jetzt nicht mehr die bekannte "/boot/grub/menu.lst", die alle Systemeinträge beinhaltet.

Seit Ubuntu 9.04 wird der Grub2 Bootloader verwendet und um jetzt die Bootreihenfolge den eigenen Wünschen anzupassen, muss man folgendes machen:

Zuerst muss man mit dem Dateibrowser Nautilus eine kleine Änderung durchführen. Dies ist aber nur mittels den Administrationsrechten möglich. Einfach in der Konsole (Anwendungen -> Zubehör -> Terminal) folgende Zeile eintippen.

sudo nautilus /etc/grub.d
bootlist_grub2_standard_vhpd

In dem geöffnetem Fenster sehen Sie nun alle Einträge, die Ubuntu bei der Installation automatisch erstellt hat.

Die Datei 00_header beinhaltet die Headerinformationen des Grub2 Bootloaders und die Datei 05_debian_theme sorgt für das Ubuntu Design. Die Einträge 10 bis 40 sind die einzelnen Betriebssysteme, die am Anfang zur Auswahl stehen.

  • 10 Linux
  • 20 Memory-Test
  • 30 Windows
  • 40 Benutzerdefiniert

Wenn man nun Windows als 1. Eintrag haben will, damit dieses immer automatisch gestartet wird, so muss man die Datei "30_os-prober" umbenennen in "09_os-prober".

Dadurch hat dieser Eintrag die kleinste Nummer und wird vor Linux mit 10 angezeigt.

Es sollte dann so aussehen:

bootlist_grub2_geaenderte_bootreihenfolge_vhpd

Jetzt muss man dem System nur noch sagen, dass es die Reihenfolge aktualisieren soll. Damit dies nun durchgeführt wird, muss man nur noch eine kleine Zeile im Terminal ausführen:

sudo update-grub
bootlist_grub2_update_grub_config_vhpd

Dieser Befehl aktualisiert die grub.cfg Datei schnell und sicher, sodass es beim nächsten Systemstart keine Probleme auftreten.

Wie man bei dem Bild auch gut erkennen kann, zeigt es auch nun im Terminal alle gefundenen Einträge an, in derselben Reihenfolge, wie sie auch beim Systemstart verwendet werden.

Natürlich gibt es auch die Möglichkeit direkt in der grub.cfg die Einstellungen von Hand zu ergänzen, jedoch ist es dann nicht mehr möglich ein Betriebssystem zu starten, wenn sich ein kleiner Fehler in diese sehr wichtige Konfigurationsdatei einschleicht, daher sollte man unbedingt diese Datei automatisch von dem System generieren lassen.

26Dez/10

qTranslate vollständig entfernen [SQL Skript]

qTranslate vollständig entfernen

Wenn man das WordPress Plug-In qTranslate entfernt, hat man danach einige Probleme mit der Datenbank. Denn die Datenbank wird nach dem deinstallieren des Plug-Ins nicht gesäubert.

Das Problem ist nun, dass alle mehrsprachigen Inhalte auf einmal in dem Post angezeigt werden. Die mehrsprachige Trennung erfolgt durch den Kommentar-tag: "<!--:en-->" ... "<!--:-->" alles zwischen den Tag wurde nur in der englischen Ansicht angezeigt. Für en können sie folgende Inhalte einsetzten:

  • de = deutsch
  • it = italienisch
  • fr = französisch
  • es = spanisch
  • usw.

Damit sie erfolgreich die Datenbank aktualisieren können, empfehle ich Ihnen ein Backup von den Tabellen "wp_posts" und "wp_terms" Ihrer Datenbank zu erstellen. Am besten mit dem phpMyAdmin in dem Reiter "Exportieren".

Sobald Sie ihr Backup erstellt haben, können Sie folgenden SQL-Befehl durchführen*:

1
2
3
4
5
6
7
8
9
10
11
UPDATE wp_posts SET post_content = CASE WHEN LOCATE('<!--:en-->', post_content) > 0 THEN SUBSTRING(post_content, LOCATE('<!--:en-->', post_content)+10) ELSE post_content END;
UPDATE wp_posts SET post_content = CASE WHEN LOCATE('<!--:-->', post_content) > 0 THEN SUBSTRING(post_content, 1, LOCATE('<!--:-->', post_content)-1) ELSE post_content END;
 
UPDATE wp_posts SET post_title = CASE WHEN LOCATE('<!--:en-->', post_title) > 0 THEN SUBSTRING(post_title, LOCATE('<!--:en-->', post_title)+10) ELSE post_title END;
UPDATE wp_posts SET post_title = CASE WHEN LOCATE('<!--:-->', post_title) > 0 THEN SUBSTRING(post_title, 1, LOCATE('<!--:-->', post_title)-1) ELSE post_title END;
 
UPDATE wp_posts SET post_excerpt = CASE WHEN LOCATE('<!--:en-->', post_excerpt) > 0 THEN SUBSTRING(post_excerpt, LOCATE('<!--:en-->', post_excerpt)+10) ELSE post_excerpt END;
UPDATE wp_posts SET post_excerpt = CASE WHEN LOCATE('<!--:-->', post_excerpt) > 0 THEN SUBSTRING(post_excerpt, 1, LOCATE('<!--:-->', post_excerpt)-1) ELSE post_excerpt END;
 
UPDATE wp_terms SET name = CASE WHEN LOCATE('<!--:en-->', name) > 0 THEN SUBSTRING(name, LOCATE('<!--:en-->', name)+10) ELSE name END;
UPDATE wp_terms SET name = CASE WHEN LOCATE('<!--:-->', name) > 0 THEN SUBSTRING(name, 1, LOCATE('<!--:-->', name)-1) ELSE name END;

* Dieser SQL-Befehl wurde von "guido" im qTranslate Forum veröffentlicht  - Zu dem Beitrag ->

Ich selbst habe diesen SQL-Befehl auf meiner großen Datenbank ausgeführt und alle Posts sind perfekt erhalten und es traten keine Fehler auf, jedoch bei falscher qTranslate Verwendung oder mangelhafter Datenbank können größere Fehler zustande kommen.

1Dez/10

Problemlösung mit qTranslate und WordPress 3.0.2

Problemlösung mit qTranslate und WordPress 3.0.2

Jeder der wo auf das neue WordPress 3.0.2 aktualisiert hat und die neueste Version von qTranslate verwendet hat Probleme mit dem Publizieren von Artikeln. Obwohl in dem neuen WordPress 3.0.2 keine Änderungen sind, die das Plug-In stören könnten, wird es aus Sicherheitsgründen deaktiviert und nicht wirklich ausgeführt.

Damit man qTranslate dennoch verwenden kann, muss man nur eine kleine Änderung vornehmen. Diese kann man direkt im Dashboard machen oder mittels des FTP Upload aktualisiert werden.

Für die Nutzer im Dashboard

Deaktivieren Sie zuerst qTranslate.

Im Dashboard in der linken Rubrik "Plugins" auf den Unterpunkt "Editor" klicken. Danach bei "zu bearbeitendes Plugin wählen" das "qTranslate"-Plugin auswählen, mit einem Klick auf "-Wähle-" kann man dann das Plugin bearbeiten.

Vergewissern Sie sich, dass sie die Datei "qtranslate/qtranslate.php" bearbeiten, diese muss in der rechten Spalte blau hinterlegt sein.

Nun müssen Sie folgende Änderung durchführen:

In Zeile 79:
muss der Eintrag

79
define('QT_SUPPORTED_WP_VERSION', '3.0.1');

in

79
define('QT_SUPPORTED_WP_VERSION', '3.0.2');

geändert werden.

Mit einem Klick auf "Datei aktualisieren" wird die Änderung angenommen und Sie können das Plugin wie gewohnt mit der neuen Version verwenden.

Die FTP-Version (fortgeschritene)

Deaktivieren Sie qTranslate und laden Sie sich im qTranslate Pluginordner die Datei "qtranslate.php" herunter. Öffnen Sie diese und ändern Sie die Zeile 79:

79
define('QT_SUPPORTED_WP_VERSION', '3.0.1');

in

79
define('QT_SUPPORTED_WP_VERSION', '3.0.2');

Nachdem Sie die Datei gespeichert haben, laden Sie diese einfach wieder über FTP hoch.

Zuletzt müssen Sie nur noch das Plugin verwenden.

Was macht diese Änderung?

Diese Änderung ist eine Definitionsänderung, d. H. diese Zeile setzt die unterstützte WordPressversion fest. WordPress sucht nach dieser Definition und sollte dies nicht mit der laufenden WordPressversion übereinstimmen, so wird das Plugin automatisch beendet.

13Jul/10

Programmieren in C++ – Teil 2

Programmieren in C++ – Teil 2

- zu Programmieren in C++ - Teil 1 ->

Deklaration

Bei einer Deklaration wird eine Variable festgelegt, dabei ist entscheidend welchen Datentyp sie hat und optional kann man einen Startwert angeben.

int meineZahl = 5

<Datentyp> <Variablenname> = <Startwert>

Bedingungen:

Die bekannteste Bedingung, auch Verzweigung genannt, ist die IF-Abfrage:

if ( password == "Hallo" )
{
    //wenn der Fall zutrifft
}else{
   //wenn der Fall NICHT zutrifft
}

Die Switch’n’Case Mehrfachverzeigung

Die Variable „wert“ darf nur int, long, short oder char sein.

swich(wert)
{
    case 1:  // Anweisungen für 1
                break;
    case 2:  //Anweisungen für 2
                break;
    case 3:  //Anweisungen für 3
                break;
    default:  //Anweisung für andern Wert
                break;
}

Schleifen:

Schleifen werden verwendet um oft verwendete Anweisungen bzw. Befehle einfach zu wiederholen, ohne es im Quellcode mehrfach kopieren zu müssen.

Man unterteilt die Schleifen in 3 Arten:

Kopfgesteuerte Schleife:

while( BEDIGNUNG )
{
     //Aktionen
}

Fußgesteuerte Schleife:

do{
    //Aktionen
}while( BEDINGUNG )

Zählschleife:

for ( int i = 0; i < 70; i++)
{
    //Ausführung die 70 Mal erfolgt
}

Compiler

Das wichtigste Element, bei dem erstellen von Programmen. Denn der Compiler wandelt unseren Quellcode um, in einen Maschinencode. Dieser Maschinencode ist dann auf den jeweiligen Prozessor abgestimmt und kann nur auf der ausgewählten Architektur laufen. Eine Architekturist somit von dem verwendete µControler abhängig.

Der Compiler weist auch auf Fehler im Quelltext hin, die nach verschiedenen Kriterien sortiert werden:

Lexikalische Analyse: Überprüft ob Sonderzeichen im Quellcode verwendet werden, die nicht zugelassen sind, wie z. B. „ä“ , „ö“ , „ü“ und „ß“.

Syntaktische Analyse: Untersucht ob alle Syntaxrichtlinien eingehalten worden sind. Darunter fällt z. B., dass jede geöffnete Klammer „{“ eine geschlossene Klammer „}“ hat.

Semantische Analyse: Vergleicht ob die Inhalte der Bibliotheken, Module und Datentypen richtig verwendet wurden.

Benjamin Salchow

13Dez/09

MySQL – Anwendung – Teil 2

Mysql_logoMySQL - Dort wo es verwendet wird!

Nun hatten wir schon einen kleinen Einblick, was MySQL ist und wie die Befehle in der Datenbank verarbeitet werden. Eine Menge Theorie, aber wofür brauchen wir das Ganze?

MySQL begegnen wir öfters als wir denken

Sei es auf E-Bay oder auf Google.de, überall stecken Datenbanken im Hintergrund, die unsere gewünschten Informationen anzeigen.

Bei E-Bay z. B. werden Datenbanken verwendet, um die alle möglichen Auktionen zu speichern und nur gewählte auf Wunsch anzeigen zu können.

Das Old-School Webseiten entwickeln ist ausgestorben. Statische Seiten gehören mehr oder weniger der Vergangenheit an, selbst diese Seite, auf der Du dich gerade befindest, funktioniert mittels einer MySQL 5.2 Datenbank. Die Datenbank beinhaltet von jedem Artikel den Inhalt mit allen Einstellungen. Im HTML-Bereich wird NUR das grundlegende Design bereitgestellt. Alles andere wird mittels PHP eingefügt aus den Informationen der Datenbank.

Der Vorteil

Mittels einer Änderung in der Datenbank, gilt dies für meine gesamte Webseite.

Durch das Dynamische erzeugen, kann ich somit mit wenigen Schritten, neue Unterseiten bzw. Artikel erstellen, ohne eine neue HTML-Datei anlegen zu müssen.

Anwendungsbereich neben Webseiten

Nicht nur Webseiten nutzen und schätzen die MySQL Datenbank, auch viele Programme verwenden diese.

Normalerweise werden in Programmen Dateien gespeichert, die Deine Informationen beinhaltet, aber oft kann es ja sein, dass diese Datei nicht nur du bearbeiten möchtest.

Wenn also mehrere Benutzer eine Datei bearbeiten wollen, dann gibt es einen Fehler. Durch eine Datenbank können mehrere Benutzer zur gleichen Zeit die Datenbank bearbeiten, solange sie nicht den gleichen Eintrag (ZELLE) bearbeiten.

Wie gehts weiter mit dem Tutorial?

Wir werden uns in den kommenden Tutorials anschauen, wie ein SQL-Befehl aufgebaut ist und wie Du damit dein Abfrageziel erreichen kannst.

10Dez/09

MySQL – Einstieg und Befehlsverarbeitung – Teil 1

Mysql_logoMySQL - der einfache Einstieg

Datenbanken werden immer notwendiger, sei es für eine dynamische Webseite mit PHP oder in Anwendungen, die mit einer Datenbank zusammenarbeiten.

Eine etablierte Datenbankarchitektur ist SQL, genaugenommen ist SQL aber eher eine "Programmiersprache" mit der man Informationen aus der Datenbank filtern, bearbeiten, löschen und erstellen kann.

Von Sun gibt es MySQL, aber auch Microsoft hat eine SQL Datenbankserveranwendung namens MS SQL auf dem Markt gestellt.

Der grundlegende Aufbau einer MySQL Datenbank

grund_aufbau_mysql_vhpd

Mittels eines Querys (SQL) wird eine Anfrage zur Datenbankengine gestellt und diese Verarbeitet die Information und gibt diese wieder zurück.

SQL-Befehlsschema

sql_befehl_schema_vhpd

Hier ist ein Schema des vollen SQL-Befehls, jeder Schritt brauch Zeit, wobei nur 1. from und 5. select unbedingt benötigt werden. 2. where ist meistens auch verwendet, da man mit where filtert.

Eine schlanke Abfrage sorgt für schnelle Verarbeitung und sollte bevorzugt werden, des weiteren sollte man bei der From-Klausel sparsam mit Tabellen umgehen, da automatisch mit jeder Tabelle ein Kreuzprodukt erzeugt wird, was man nur mittels JOIN umgehen kann.

Kommendes Tutorial

Im kommenden Teil werden wir einfache SQL-Befehle entwickeln und erklären und dabei auf Fremdschlüssel und Primarykeys wertlegen.

24Nov/09

GTGE in Eclipse mittels SVN installieren

Ein Java 2D Spiel entwickeln mit der GTGE

Um ein 2D-Spiel in Java entwickeln zu können, benötigen wir die gesamten GTGE libarys. Diese können wir sogar in Eclipse mittels SVN (Subclipse Plug-In) einfach einrichten.

In einem neuen VHPD Videotutorial erklären wir Schritt für Schritt, wie man Eclipse so konfiguriert, damit man die GTGE herunterladen kann.

Verwendete Links

SVN - Subclipse: http://subclipse.tigris.org/update_1.6.x

GTGE Source - SVN: http://gtge.googlecode.com/svn/trunk

GTGE

Der Sourcecode von der GTGE ist unter der GPL-Lizens veröffentlicht und kann auch über der GTGE direkt heruntergeladen werden.

Zu der GTGE-Homepage ->

22Sep/09

XML – Überall im Einsatz

Der Standard aller Dateien - XML

Immer mehr verschiedene Datentypen gibt es, immer mehr Programme zum verwenden von Dateien werden benötigt. Seit 2002 gibt es jedoch eine Einigung, dass XML-Format als Grundlage zu verwenden ist.

Durch das einsetzen einer klaren Struktur in Dateien, sodass man sie auch problemlos mit anderen Programmen bearbeitet werden können, ist XML der erste Grundstein.

Beispiel einer XML-Datei:

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<NAMEROOT>
  <kontakt nr="0">
             <test>das war der Test 1</test>
   </kontakt>
   <kontakt nr="1">
 	    <test>das war der Test 2</test>
   </kontakt>
</NAMEROOT>

Informationen werden wie in HTML gewohnt als TAG gespeichert und können verschiedene Attribute haben. HTML ist der Vorgänger von XML und jeder der sich mit HTML auskennt wird XML sofort verstehen.

Selbst Microsoft hat mit Office sich zum ersten Mal, an einem Dateistandard gehalten, denn mit *.docx, *.xlsx und *.pptx wird auch der XML-Aufbau verwendet. Aber natürlich mit einen MS Algorithmus gepackt, sodass der "Plaintext" auch nicht richtig lesbar ist.

Die Verwendung von XML kann jeder sich aneignen, vor allem auch Plattformunabhängig können XML-Dateien verwendet werden. Der ITs-real Blog hat ein gelungenes Tutorial veröffentlicht, um mit Java und JDom eine XML-Datei zu erstellen.

- Zu dem XML Tutorial ->