About

18. August 2008

FrankyOnline.de. So fing alles an.

Ich bin mir nicht (mehr?) sicher warum ich vor knapp fünf Jahren diesen Domainnamen für eine Portfolio-/Profilseite ausgewählt habe. Nun ist er aber nun mal da und bekannt; er steht auf zahlreichen Visitenkarten und zigfach im Netz und ist nicht mehr aus meinem Leben wegzudenken.

OK, zugegeben, das klingt einwenig krass. Als wenn ich was für’n “Suchti” oder so etwas wär’ ;-)
Aber nein, das stimmt nicht.

Und wer jetzt?

Der Mensch der sich hinter FrankyOnline.de verbirgt heißt Christian Franke. Ich bin 18 Jahre alt, männlich :-P und noch Schüler des Kopernikus Gymnasium Neubeckum. Dort besuche ich die Oberstufe in der momentan zwölften Klasse.

Ich hasse es eigentlich mich selbst zu beschreiben, trotzdem möchte ich es auf dieser Seite schnell (”einmal und nie wieder”) hinter mich bringen.

Die Domain nochmals

Um noch kurz auf den Domainnamen FrankyOnline.de zurückzukommen: Meine Freunde nennen mich Franky (wegen des Nachnamens nehme ich mal stark an) oder auch Frank Ypsilon oder was weiß ich. Gibt da bestimmt zahlreiche Variationen; dabei ist allerdings Franky der wohl am meist benutzte. Franky.de war leider schon weg. Was also dann?

FrankyOnline.de wurde mir als Vorschlag bei der Registrierung der Domain automatisch angeboten. Ich hätte nie gedacht, dass ich früher so naiv war und so etwas annehme :-D Aber so war es dann wohl ;-)

Und so ist also diese Seite entstanden. Jetzt schon in Version #5 (mitgezählt, ehrlich!) wurde sie nun am 4. August 2008 mithilfe von Wordpress (ist ja keine reine Bloggingsoftware sondern kann man auch sehr gut als CMS missbrauchen) der großen weiten Welt veröffentlicht.
Soviel also zum aktuellen Stand FrankyOnline.de.

Die Anfänge

Schon früh begann ich mich für Computer zu interessieren. Alles fing damit an, dass wir (meine Familie bzw. meine Eltern) im Jahr 1997, also vor rund elf Jahren - ich war sieben, einen neuen PC anschafften (was wir davor hatten weiß ich nicht).
Aus dem Discounter Aldi stammte er, da bin ich mir noch sicher. Mit starken 350 MHz (das war früher echt viel!) und einer riiiesigen 8GB - Festplatte und dem topaktuellen Betriebsystem Windows 98 bedeutete er mir für mich das Tor zur Computerwelt.

Am Anfang konnte ich nur das Computerspiel, welches wir extra für ihn kauften, Age of Empires I, starten und beenden.
Eines Tages fehlte dann, ich erinnere mich noch sehr gut, eine Verknüpfung zum Spiel auf dem Desktop. Mama & Papa waren nicht da, so musste ich (war ich süchtig?!) also selbst meinen Weg durch den Computerdschungel finden.
Und siehe da, nur ein Klick auf “Start”, “Programme” .. und da war schon das mir gut bekannte Age of Empires - Icon.
Der nachfolgende Klick war dann wohl mein erstes Erfolgserlebnis in Sachen “Computer” :-D

Die erste Homepage

So ist es also angefangen und nahm seinen Lauf…

Später kamen noch 56k - Modem und dann auch die erste Beepworld - Internetseite dazu. Vor 7 Jahren wollte ich natürlich für nichts Geld im Internet ausgeben. Auch nicht für einen Domainnamen (war zu dem Zeitpunkt wohl noch Franky.de frei? Ich ärgere mich :-D )

Die Beepwordseite.. schrille Farben, animierte GIFs wohin das Auge blickte. Ahh! :-D Und später wurde dann jeder noch so kleine freie Pixelbereich mit irgendwelchen vorgefertigten JavaScripts tapeziert. Natürlich zu diesem Zeitpunkt, mit ca. 12 Jahren, mit dem gebotenem und dankend erhaltenem WYSIWYG-Online-Java-Editor.

Und HTML kam

Trotzdem musste ich wegen des Einfügens der JavaScripts auch dauernd in den HTML-Bereich wechseln. Und ich begann mich dafür zu interessieren.

Gelernt habe ich HTML nicht durch Bücher, nein, alles online.
Es begann mit [wie hieß das Teil noch, es war so ein im CHM-Format mit Kapiteln und einer Selbstprüfung, weiß wer was ich meine?]. Später kam dann natürlich die HTML-Referenz überhaupt, selfHTML, dazu.

Nie habe ich einen anderen (nur-text-) Editor als den in Windows integrierten Notepadeditor benutzt. Seit ca. 3 Jahren benutze ich allerdings Notepad2 (wegen der Syntaxhervorhebung).

Durch zahlreiche Generatoren, die ich auch schon aus meiner Beepworldzeit kannte, insbesondere der Dauerstress - Generatoren, lernte ich nun auch CSS kennen. Gelernt habe ich es letztendlich allerdings durch selfHTML und CSS4you.de. Dabei stand mir das JEX-Treme Forum bzw. das Webstatt-Forum immer bei Fragen zur Hilfe.. danke ;-)
Ich fand es super die (früher immer soo tollen) Tabellenlayouts zu verschönern und trotz statischer HTML-Seiten ein mit nur einer Datei zu ändern.

Es wurde dynamisch:

Mit dem ersten, auf dem mittlerweile schon gekauften Webspace, installiertem Gästebuch begann dann meine Zeit. Diese Sprache erlernte ich vor allem mit dem Quakenet-PHP- und Schattenbaum. Dem zuletzt genanntem habe ich meine -Fähigkeiten zu verdanken. Zum Nachschlagen und als Referenzbuch benutze ich nur das englische Manual von PHP.net.
Übrigens: erst jetzt mit ca. 15 Jahren bekam ich meinen ersten eigenen Computer mit dem ich jetzt immer noch arbeite.

Nach und nach kamen dann noch weitere Dinge hinzu. Beispielsweise begann ich mich für htaccess, mod_rewrite und SEO zu interessieren. Nebenbei erstellte ich meine ersten Designs mit einer alten Fireworksversion (früher übrigens noch aus dem Hause Macromedia).

Nicht nur Windows

Langsam aber sicher stolperte ich nun in die Linuxwelten.. ich mietete mir meinen ersten vServer mit Debian Linux, guckte, probierte (deswegen auch stolpern) und lernte.

Nicht nur FrankyOnline.de

Meine ersten Projekte entstanden.
Zwischen h6p, einem kostenlosen und mit Punktesystem ausgestattetem Homepagehoster - natürlich alles selbst programmiert - und MultiPic, einem Bilderhoster mit vielen Features - z.B. Upload via FTP, E-Mail und Windows XP-Publisher - entstanden zahlreiche kleinere Projekte und private Homepages.

Malstunde

Auch entdeckte ich die Welt des Designs, und Webdesign wurden mir Begriffe.
Erste Versuche an Vektorgrafikprogrammen wie Adobe Illustrator führten erst nicht zum Erfolg (wäre auch zu schön gewesen :-P ) doch das kam nach zahlreichen weiteren Tests.

Ich entwarf meine ersten und mein erstes Logo. Parallel dazu entstanden immer neue FrankyOnline.de - Versionen.

Mehr und mehr…

Dann kam die Web 2.0 - Zeit. Zu dem in meiner HTML-Zeit gelerntem JavaScript kamen Untersprachen (gibt’s den Begriff? Ich glaube nicht, würde aber gut passen.) wie Ajax und XML (OK, wirklich keine Untersprache :-P ).

Ich lernte mit Frameworks wie Prototype in Javascript und Smarty in umzugehen. Auch beschäftigte ich mich viel mit ; Blog-Ennigerloh.de war Schuld.

Und jetzt stehe ich hier. Habe seit dem 7. August wie gaaanz oben schon erwähnt jetzt die fünfte Version meiner Seite FrankyOnline.de veröffentlicht.

Was noch kommt weiß ich nicht. Gut ist aber noch lange nicht. Und das ist auch gut so ;-)

Ich wünsche dir oder euch (am Ende möchte ich den/die Leser hier wenigstens einmal persönlich ansprechen) alles Gute und eventuell ja noch einen schönen weiteren Besuch auf FrankyOnline.de.

Dein/Euer,
Christian Franky Franke

Neue Codeschnipsel: MySQL Dump via PHP & Teamspeak2 installieren

16. August 2008

Zwei neue bzw. alte sind nun auf FrankyOnline.de zu finden.

In “MySQL Datenbank exportieren wie in PHPmyAdmin” geht es um das exportieren von -Tabellen als SQL-Dump in .

Dagegen spielt in “Teamspeak 2 Server” installieren Linux eine entscheidene Rolle. Hier wird Neulingen gezeigt, wie man einen Teamspeak 2 Server auf seinem Rootserver installieren kann.

Teamspeak2 Server unter Linux installieren

15. August 2008

Wie installiere ich einen Teamspeak-Server? Was muss ich beachten? Diese und mehr Fragen klärt dieser auf.

Einleitung

Wie installiere ich einen TeamSpeak-Server auf meinem Webspace? Das möchte ich nun erklären. Als erstes ist allerdings zu sagen, das Sie Shell-Zugriff auf ihrem Webspace/Webserver benötigen.

Was ist Teamspeak?

Teamspeak ist ein Programm mit dem man sich über das Internet mit seinen Freunden/Clanmembern per Headset unterhalten kann. Dazu wird das Serverprogramm auf einem Server im Internet installiert. Die Spieler müssen bei sich den Teamspeakclienten installieren und können damit zum Server connecten.

Teamspeak herunterladen

Als erstes starten wir unserer Shell-Konsole und connecten zum Server. Ggf. wählen wir noch ein Verzeichnis aus, dies ist allerdings nicht unbedingt notwendig.

Daraufhin laden wir uns per Funktion wget das TS-Linux-Server-Paket herunter. Wir benutzen dafür den Freenetserver.

1
wget ftp://ftp.freenet.de/pub/4players/teamspeak.org/releases/ts2_server_rc2_202319.tar.bz2

Jetzt wird der Teamspeak2 Server heruntergeladen. Dies dauert meist nur einige Sekunden.

Archiv entpacken und Teamspeak Server starten

Anschließend entpacken wir das gerade heruntergeladene Packet mit dem Befehl…

1
tar -jxvf ts2_server_rc2_202319.tar.bz2

Sollte dann wieder die Konsole auf Befehlseingabe warten, tippen wir folgendes ein:

1
teamspeak2-server_startscript start

Mit diesem Befehl starten wir den TS-Server.

Benutzername und Passwort für SuperAdmin

Teamspeak generiert automatisch nach dem ersten Starten zwei Benutzer plus die zugehörigen Passwörter.

Diese lesen wir mit dem Befehl..

1
cat server.log

aus.

Das wars schon! Der Teamspeakserver ist jetzt unter deiner Server-IP mit dem Teamspeak2-Clienten zu erreichen.

Und zum Schluss… das Webinterface

Weiterhin liefert Teamspeak ein Webinterface mit, mit dem es einfach möglich ist, Teamspeak zu administrieren.

Dieses Webinterface erreichen wir, indem wir im Browser folgendes eintippen:

1
http://<serverIP>:14534/

In diesem Interface kannst du jetzt den Namen der/des Server(s) ändern usw.

Wer Probleme und Fragen hat..

..kann sich ambesten bei den Kommentaren unten melden.

MySQL Datenbank exportieren wie in PHPmyAdmin (PHP)

15. August 2008

Einleitung

Oft möchte man eine -Datenbank exportieren - beispielsweise als Backup, sodass man diese später wieder (z.B. per mysql_query()) importieren kann. Diese Funktion exportiert komplette Tabellen mit Struktur und Inhalt.

Hinweis / WIchtig

aus dem Jahr 2005 (!). Aufgrund großer Nachfrage habe ihn wieder online gestellt.
Bitte beachte das es inzwischen evt. einfacher ist eine Datenbank zu exportieren bzw. sogar etwas am Script falsch ist.
Prüfe deswegen - und zwar bevor du das Script richig einsetzt - ob noch alles funktioniert und auch das Importieren klappt.

Die Funktion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
// (c) 2005 by Franky
// http://FrankyOnline.de/
 
function parsefield($field, $typ){
  if($typ == 'integer') return $field;
  else{
    $field = addslashes($field);
    $field = str_replace("\t", "\\t", $field);
    $field = str_replace("\r", "\\r", $field);
    $field = str_replace("\n", "\\n", $field);
    return '\''.$field.'\'';
  }
}
 
function mysql_export_table($table, $connection=''){
  // Struktur
  $dump = "CREATE TABLE `".$table."` (\n";
 
  $types = array();
  $result = mysql_query('DESCRIBE '.$table, $connection);
  $count = mysql_num_rows($result);
 
  $i = 0;
  while($row = mysql_fetch_array($result)){
    $name = $row['Field'];
    $typ = ' '.$row['Type'];
 
    $fieldtypes[$name] = (!stristr($row['Type'], "ENUM") && ((stristr($row['Type'], "INT") || stristr($row['Type'], "FLOAT") || stristr($row['Type'], "DOUBLE") || stristr($row['Type'], "REAL") || stristr($row['Type'], "DECIMAL") || stristr($row['Type'], "NUMERIC") || stristr($row['Type'], "TIMESTAMP") || stristr($row['Type'], "YEAR"))) ? ("integer") : ("string"));
 
    if($row['Null'] == '') $null = ' NOT NULL';
    else $null = ' NULL';
 
    if($row['Default'] == '') $default = '';
    else $default = " DEFAULT '".$row['Default']."'";
 
    if($row['Extra'] == '') $extra = '';
    else $extra = ' '.$row['Extra'];
 
    $dump .= "  ".$name.$typ.$null.$default.$extra;
 
    $i++;
    if($i < $count) $dump .= ", \n";
  }
 
  $index = array();
  $result = mysql_query('SHOW KEYS FROM '.$table, $connection);
  while($row = mysql_fetch_array($result)){
    $keyname = $row['Key_name'];
    $comment = (isset($row['Comment'])) ? $row['Comment'] : '';
    $sub_part = (isset($row['Sub_part'])) ? $row['Sub_part'] : '';
 
    if($keyname != 'PRIMARY' && $row['Non_unique'] == 0) $keyname = 'UNIQUE|'.$keyname;
 
    if($comment == 'FULLTEXT') $keyname = 'FULLTEXT|'.$keyname;
 
    if(!isset($index[$keyname])) $index[$keyname] = array();
 
    if($sub_part > 1) $index[$keyname][] = $row['Column_name']."(".$sub_part.")";
    else $index[$keyname][] = $row['Column_name'];
  }
  mysql_free_result($result);
 
  foreach($index as $keyname => $columns){
    $dump .= ", \n";
    if($keyname == "PRIMARY") $dump .= "  PRIMARY KEY (";
    elseif(substr($keyname, 0, 6) == "UNIQUE") $dump .= "  UNIQUE ".substr($keyname, 7)." (";
    elseif(substr($keyname, 0, 8) == "FULLTEXT") $dump .= "  FULLTEXT ".substr($keyname, 9)." (";
    else $dump .= "  KEY ".$keyname." (";
 
    $dump .= implode($columns, ", ").')';
  }
 
  $dump .= "\n);\n\n";
 
 
 
  // Content
  $insert_tag = 0;
  $rowcount = 0;
  $result = mysql_query('SELECT * FROM '.$table, $connection);
  while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $values = '';
    foreach($row as $key => $field)
      if($values != '') $values .= ','.parsefield($field, $fieldtypes[$key]);
      else $values = parsefield($field, $fieldtypes[$key]);
 
    if($insert_tag == 0){
      $dump .= 'INSERT INTO '.$table.' VALUES ('.$values.')';
      $insert_tag = 1;    
    }else $dump .= ',('.$values.')';
 
    if($insert_tag == 1 && $rowcount == 500){
      $dump .= ";\n";
      $insert_tag = 0;
      $rowcount = 0;
    }
 
    $rowcount++;
  }
  mysql_free_result($result);
 
  if($insert_tag == 1) $dump .= ";\n";
 
  return $dump;
}
?>

Beispiel

Diese Beispiel exportiert alle Tabellen (nacheinander in einer Schleife) einer Datenbank. Zuerst wird eine Verbindung zur Datenbank hergestellt (Parameter ändern!) und anschließend der Dump ausgegeben.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$mysqlconnect = mysql_connect('localhost', 'root', '');
$result = mysql_list_tables('datenbank', $mysqlconnect);
$num_tables = mysql_num_rows($result);
 
for($i=0;$i<$num_tables;$i++){
  $table = mysql_tablename($result, $i);
  echo mysql_export_table($table, $mysqlconnect);
}
 
mysql_free_result($result);
mysql_close($mysqlconnect);
?>

Eine Ausgabe könnte wie folgt aussehen:

1
2
3
4
5
6
7
8
9
10
CREATE TABLE `counter` (
  `datum` date NOT NULL default '0000-00-00',
  `visitors` int(5) NOT NULL default '0',
  PRIMARY KEY  (`datum`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
INSERT INTO `counter` VALUES ('2005-09-03', 25);
INSERT INTO `counter` VALUES ('2005-09-04', 48);
INSERT INTO `counter` VALUES ('2005-09-05', 31);
# ...

Fragen oder Probleme? Einfach schnell einen Kommentar schreiben.

Codeschnipselsektion mit einem Tutorial eröffnet

12. August 2008

In meiner Jex-Treme-Zeit schrieb ich früher (”als alles anfing mit mir & ”) im Jahr 2004 einen Tutorial über das Zippen mit PHP.

Da dieser immernoch auf Platz 1 bei der Suche nach “zippen mit php” in Google platziert ist und schon mehr als 7.500 Hits im o.g. Forum verzeichnet waren, kam mir die Idee hier auf FrankyOnline.de eine Sektion zu eröffnen und das dort neu zu publizieren / neu zu gestalteten (nicht neu zu schreiben - dazu kam ich bis jetzt noch nicht!).

Bald finden sich dort hoffentlich weitere Tutorials; bis jetzt ist’s aber nur der alte “Zippen mit PHP” (übrigens Anfang August 2004 [!] geschrieben und wie gesagt: noch nicht überarbeitet).

Zippen mit PHP

8. August 2008

Wichtig: vom 6. August 2004 (!). Aufgrund großer Nachfrage, vorallem aus dem JEX-Treme Forum ist er nun nochmals für euch online zu finden.

Einführung

Wer wollte nicht auch schon einmal mit zippen? Selbst wenn es nur kleine Textdateien sind! In diesem Tutorials wird es erklärt!

Auf geht’s

Als erstes Laden wir uns einmal die Ziplib herunter. Die gibt es direkt hier (bzw. weiter unten im Anhang). Nun entpacken wir die Datei. Aus den entpackten Dateien brauchen wir eigentlich nur die Datei “zip.lib.”.

Zipdatei erstellen

Wir erstellen als erstes mal eine Datei namens “zippen.”. In diese Datei schreiben wir dann als erstes:

1
2
3
<?php
ob_start();
?>

Die 1. Zeile müsste jedem klar sein: Damit öffnet man den -Code. ob_start() buffert die Ausgabe, sodass keine Fehlermeldung wie “header is already sendet…” entsteht.

1
2
3
<?php
require("./zip.lib.php");
?>

Mit require() kann man wie mit include() irgendetwas includen. In diesem Fall includen wir die Zip.lib-Class. Der Pfad zur Datei muss lediglich angepasst werden.

1
2
3
<?php
$zipfile = new zipfile("archive.zip");
?>

Nun generieren wir mit hilfe der zip.lib-class eine Zipdatei. “archiv.zip” ist in diesem Fall der Name der Zipdatei.

Den kompletten Inhalt eine Verzeichnisses hinzufügen

Wenn man jetzt den kompletten Inhalt eines Verzeichnisses in die Zipdatei packen möchte, muss man folgenden Befehl anwenden:

1
2
3
<?php
$zipfile->addDirContent("./");
?>

Dieser Befehl packt das komplette Verzeichnis “./” in die Zipdatei. Man könnte auch schreiben:

1
2
3
<?php
$zipfile->addDirContent("./test");
?>

Dieser Code packt das Verzeichnis “/test” in die Zipdatei.

Einzelne Dateien hinzufügen

Du brauchst nicht immer das komplette Verzeichnis hinzufügen, nein, auch einzelne Dateien funktionieren:

1
2
3
<?php
$zipfile->addFileAndRead("haus.jpg");
?>

Dieser Befehl fügt die Datei “haus.jpg” in die Zipdatei ein.

Wenn die Datei allerdings im Verzeichnis “bilder” ist, muss es heißen:

1
2
3
<?php
$zipfile->addFileAndRead("bilder/haus.jpg");
?>

Eine neu erstellte Datei hinzufügen

Wenn du einen Text z.B. in der Variable $text hast, kannst du auch diesen Text in eine Datei packen.

Das sieht dann ungefähr so aus:

1
2
3
4
<?php
$text="Dies ist ein Text, der in das Ziparchiv soll.";
$zipfile->addFile(, 'Text.txt');
?>

Jetzt wird eine neue Datei, mit dem Dateinamen “Text.txt”, und dem Inhalt der Variable “$text” in das Archiv eingefügt.

Datei ausgeben

Zuletzt muss die Datei nur noch ausgegeben werden.
Das erledigt der Befehl $zipfile->file();:

1
2
3
<?php
echo $zipfile->file();
?>

Beispiel

Hier noch ein Beispiel, für die, die es noch nicht verstanden haben, wie das jetzt genau geht:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Startet den Buffer, sodass keine Header-Fehlermeldungen entstehen.
ob_start();
 
// Läd die Zip-Library
require("./zip.lib.php");
 
// Erstellt eine neue Zipdatei
$zipfile = new zipfile("archive.zip");
 
// Fügt den kompletten Inhalt des Verzeichnisses "/" in die Zipdatei ein.
$zipfile->addDirContent("./");
 
// Fügt die Datei "haus.jpg" des Verzeichnisses "bilder" in die Zipdatei ein.
$zipfile->addFileAndRead('bilder/haus.jpg');
 
// Gibt die Zip-Datei aus.
echo $zipfile->file();
?>

Achtung

Leider lässt sich das generierte Zipfile nicht mit dem intigrierten Packer von Windows XP öffnen. Benutze stattdessen lieber Winrar.

Schlusswort

Hier endet dann mein erster selbstgeschriebener . Ich hoffe ihr konntet mir folgen und habt “hinterher” genausoviel Spass beim Ausprobieren wie ich beim Schreiben. Solltet ihr trotzdem noch Fragen haben, dann meldet euch bei mir schreibt in die Kommentare.

Codeschnipsel

8. August 2008

Herzlich Willkommen bei den Codeschnipseln
In den folgenden Unterkateogien findest du nützliche Tutorials, und Tipps & Tricks zu bekannten Programmiersprachen oder auch Betriebssystemen.

Bitte wähle eine Unterkategorie aus: