Technik

Diablo 3

Diablo 3 Countdown: Ich habe aus undefinierbaren geistigen Gründen eine Seite für Diablo 3 erstellt, darauf befindet sich ein Countdown. Ich habe das Spiel vorbestellt und warte und warte. Um mir die Wartezeit zu “verkürzen” habe ich diese Seite erstellt. Man fühlt sich doch gleich wohler wenn man sieht wie die Zeit vergeht ;)

PHP MySQL Class

Auf drängen eines Einzelnen für die Allgemeinheit eine Warnung:
Diese Klasse dient der Veranschaulichung und sollte so nicht benutzt werden da sie ein Sicherheitsrisiko darstellt (zufrieden ‘fanta’?)

 PHP |  copy code |? 
001
< ?php
002
 
003
class MySQL {
004
 
005
	var $connection;
006
 
007
	function connect()
008
	{
009
		global $dbhost,$dbuser,$dbpass;
010
 
011
		if(!$this->connection)
012
			$this->connection = mysql_connect($dbhost,$dbuser,$dbpass) OR DIE ($this->mysql_err());
013
 
014
		if($this->connection)
015
			return $this->connection;
016
		else
017
			break;
018
	}
019
 
020
	function mysql_err()
021
	{
022
		global $PHP_SELF;
023
		$error = mysql_errno($this->connection).": ".mysql_error($this->connection)."( ".$PHP_SELF." )\n";
024
		return $error;
025
	}
026
 
027
	function getTable($dbname,$query)
028
	{
029
		global $debug;
030
		if (is_numeric(strpos($query, " ")))
031
		{
032
			$query = $query;
033
		}
034
		else
035
		{
036
			$query = "SELECT $query.* FROM $query";
037
		}
038
 
039
		if($debug[MySQL] == true)
040
		{
041
			echo $query."\n";
042
		}
043
		$result = mysql_db_query($dbname,$query,$this->connect()) OR DIE($this->mysql_err());
044
 
045
		if($result)
046
		{
047
			$i=0;
048
			while($tmp = mysql_fetch_array($result,MYSQL_ASSOC))
049
			{
050
				foreach($tmp as $key=>$element)
051
				{
052
					$array[$i][$key]=stripslashes($element);
053
				}
054
				$i++;
055
			}
056
		}
057
 
058
		mysql_free_result($result);
059
 
060
		return $array;
061
	}
062
 
063
	function saveTableRow($dbname,$query,$array)
064
	{
065
		global $debug;
066
		foreach($array as $key=>$element)
067
		{
068
			$element = addslashes($element);
069
			$keys[] = $key;
070
			$values[] = "'".$element."'";
071
			$update[] = $key."='".$element."'";
072
		}
073
 
074
		if($array[ID] == "")
075
		{
076
			$query = "INSERT INTO $query (".implode(", ",$keys).") VALUES (".implode(", ",$values).")";
077
		}
078
		else
079
		{
080
			$query = "UPDATE $query SET ".implode(", ",$update)." WHERE ID = '".$array[ID]."'";
081
		}
082
 
083
		if($debug[MySQL] == true)
084
		{
085
			echo $query."\n";
086
		}
087
		$result = mysql_db_query($dbname,$query,$this->connect()) OR DIE($this->mysql_err());
088
		$id = mysql_insert_id();
089
 
090
		if($id=="")
091
		{
092
			$id = $array[ID];
093
		}
094
		if($id=="")
095
		{
096
			$id=false;
097
		}
098
		return $id;
099
	}
100
 
101
	function deleteTableRow($dbname,$query,$id="")
102
	{
103
		global $debug;
104
		if (is_numeric(strpos($query, " ")))
105
		{
106
			$query = $query;
107
		}
108
		elseif(is_numeric($id))
109
		{
110
			$query = "DELETE FROM $query WHERE ID = '$id'";
111
		}
112
		else
113
		{
114
			$query = "DELETE FROM $query";
115
		}
116
		if($debug[MySQL] == true)
117
		{
118
			echo $query."\n";
119
		}
120
		$result = mysql_db_query($dbname,$query,$this->connect()) OR DIE ($this->mysql_err());
121
 
122
		return $result;
123
	}
124
 
125
	function executeQ($dbname,$query)
126
	{
127
		global $debug;
128
		if($debug[MySQL] == true)
129
		{
130
			echo $query."\n";
131
		}
132
		$result = mysql_db_query($dbname,$query,$this->connect()) OR DIE ($this->mysql_err());
133
 
134
		return $result;
135
	}
136
 
137
	function close()
138
	{
139
		if($this->connection)
140
			mysql_close($this->connection);
141
	}
142
}
143
 
144
?>

Leider funktioniert noch kein LEFT JOIN. jedoch kann man mit executeQ nachhelfen ;)
Diese Klasse wurde aus meinen untiefen der HDD gekramt, sie wird nicht mehr weiterentwickelt und steht zur freien Verfügung.

Bitlbee

Seit heute betreibe ich meinen eigenen Bitlbee Server. Was ist Bitlbee? Nun Bitlbee ist ein IRC Server welcher als Gateway für verschiedene Chatprotokolle dient. Darunter Oscar (ICQ), Jabber (Facebook), MSN, Yahoo und weitere. Somit ist es möglich über das IRC Protokoll auf Accounts mit den anderen Protokollen zuzugreifen. Heißt man ist auf dem IRC Server und kann mit Leuten aus, zum Beispiel, ICQ reden.

 Das ist recht praktisch, ich habe einen IRC Client immer am laufen und benötige so nicht noch ein Programm welches läuft. Auch verbraucht das ganze weniger Bandbreite da IRC nur Text basierend ist. Des weiteren habe ich einen Bouncer1 online gesetzt und bin so 24/7 online. Ist zwar sinnfrei aber ist doch recht nett.

Nutzen könnt ihr ihn auch, meldet euch einfach bei mir und ich erstelle einen Account für euch. Man kann sich nicht selber am IRC Server registrieren da der Server dies vorerst nicht zulässt. Schaut es euch einfach an und entscheidet dann ob es sinnvoll für euch ist ;)

Achja, Bitlbee unterstützt natürlich auch Gruppen, Gruppenchat und Statusnachrichten. So bleiben eure Gruppen welche ihr zum Beispiel in ICQ angelegt hat in Bitlbee bestehen. Recht praktisch da ich alle Kontakte eh in Gruppen aufteile.

ATi/AMD sucks bei Grafikkarten

In meinem ASUS G73Jh Laptop ist eine ATi Radeon HD 5870 Mobility verbaut, diese hat eine recht moderate Leistung jedoch auch enorm große Probleme. Das eine ist die Hitzeentwicklung, so ist es eher normal dass unter Last die Temperaturen nah an den Siedepunkt von Wasser herangehen oder diese überschreiten. Mir ist deswegen auch schon eine GPU über den Jordan gegangen, nach einem Monat bekam ich meinen reparierten Laptop zurück.

Der nächste Haken ist die einfach nur schlecht gemachte OpenGL Unterstützung. ATi/AMD kriegen es bis heute nicht gebacken einen vernünftigen OpenGL Treiber zu entwickeln. Andauernd gibt es Probleme wenn irgendein Programm OpenGL als Grafikschnittstelle benutzt. So kennen wohl einige das RAGE Problem. ATi hat schlichtweg einen alte Library für OpenGL in den Treiber integriert, daher waren alle Texturen blau.

Und nun habe ich Quake 3 Arena gespielt und das nächste Problem taucht auf. Zuerst muss man das Steam Overlay deaktivieren da dieses über DirectDraw (also DirectX) funktioniert und Quake 3 mit OpenGL. Der Treiber bekommt es nicht hin beides ohne Ruckeln darzustellen. Der nächste Hammer kam nach ein paar Minuten Spielen. Die FPS gingen auf Bereiche runter die jenseits von Gut und Böse sind (~5-10fps). Ich habe mich im Internet etwas umgeschaut und anscheinend benutzt der Treiber bei OpenGL nicht den VRam sondern den System RAM. Ganz toll. Und wieder mal beweist ATi/AMD wie unfähig sie sind OpenGL zu integrieren. Kann es denn so schwer sein?

Ich mag OpenGL, es ist frei und leicht zu benutzen. Daher wünsche ich mir auch mehr Unterstützung dafür. Schon alleine darum da es Plattform übergreifend ist und auf fast jedem System läuft (UNIX, Windows etc.).

Auf jedenfall wird meine nächste Grafikkarte in einem Laptop wieder eine von nVidia sein, da kann man anscheinend mit Temperaturen und OpenGL umgehen.

 

Server Backup mit SpiderOak

Die meisten Administratoren wissen das Backups sehr wichtig sind. Vor allem dann wenn etwas schief läuft und man eine frühere Version wiederherstellen muss. Daher legt man in Intervallen Backups an und hofft dass diese nicht verschwinden.
Ich habe das vorher so gelöst dass ich wichtige Dateien und Datenbank in ein Archiv packe und dann auf dem Server speichere. Natürlich als CronJob, natürlich auch unsicher. Denn ich musste immer per Hand diese Datei auf meinem Laptop herunterladen und sichern. Bestimmt kennen von euch auch viele die Situation wenn man seinen PC neu aufsetzt. Man hat formatiert und vorher natürlich alle wichtigen Dateien gesichert. Aber Moment. Da war doch noch der eine Ordner. Oh mist!

Ich habe nun im großen WWW nach Lösungsmöglichkeiten gesucht und fand dabei das:
Automated Cloud Backups with SpiderOak
Ein wirklich praktisches Script, jedoch nehmt die neueste Version bei GitHub, nicht die Version welche in dem Beitrag steht. Sie hat ein paar kleinere Fehler.

Ich möchte hier nun erklären wie ihr SpiderOak zum laufen bekommt da es nicht ganz so einfach ist. Die Anleitung bezieht sich auf Linux Debian squeeze. Read More…

OpSys Notepad

Ist das euch nicht auch schon passiert? Ihr recherchiert im Internet, findet etwas und habt nichts um schnell Notizen zu erstellen. Auch gibt es manchmal die Situation dass ihr nicht vor eurem PC sitzt und so das Gefundene nicht einfach abspeichern könnt. Gestern war bei mir so ein Moment.

Daher arbeite ich derzeit an einem eigenen Notizblock System. Klar, sowas gibt es auch von Google, jedoch wird dieser Service bald abgeschaltet. Auch schwirren so wieder Daten von mir irgendwo auf einem fremden System herum. Ich habe mir als Ziel gesetzt die Notizfunktion so einfach wie nötig zu halten. Ich setze dabei auf die Erstellungen von Klassen in PHP, auch wird alles in .txt-Dateien abgespeichert. Geplant ist die Nutzung von Markdown, so kann man seine Notizdatei auch im Aussehen anpassen. Markdown ist eine wirklich einfache Art Text zu schreiben welcher später formartiert werden soll. Ich finde diesen Weg der Gestaltung einfacher als BBCodes wodurch der Text zu kryptisch wird.

Auch wird es die Möglichkeit geben .txt-Dateien herunterzuladen oder öffentlich zu machen. So braucht man dann nur einen Link weitergeben und jemand anderes kann die Notizen lesen. Ich finde diese Funktion nützlich.

Derzeit arbeite ich noch an der Datenstruktur, jedoch mit stetigen Fortschritten. Angepeilt ist Ende Februar als Fertigstellungstermin.

1 2 3 5  Scroll to top