Month: November 2008

5 Tipps für eine schnellere Webseite

Immer wieder trifft man im Internet auf Homepages, bei denen man anfängt an der eigenen Internetverbindung zu zweifeln. Mal läd sich nur der Titel und die Seite bleibt weiß oder nur die Hälfte wird geladen und auch nach mehrmaligen Drücken von Strg + F5 passiert nichts. Bei jedem Klick auf die nächste Seite hat man Angst, dass das Warten wieder von neuem beginnt.

Dabei liegt es im eigenen Interesse eines jeden Webseitenbetreibers die Ladezeiten möglichst gering zu halten, denn jedes aufrufen beansprucht Serverressourcen und kostet Traffic.

1. Outsourcen
Bereits bei der Entwicklung einer Homepage sollte man drauf achten, soviel Skript (CSS, JavaScript) in andere Dateien auszulagern. Diese werden vom Browser gecached und beim erneuten Aufrufen nicht nochmals heruntergeladen.

2. Bilder verkleinern
Die heutigen Digitalkameras machen Fotos mit 8 Megapixeln und mehr. Diese Qualität und Größe wird im Internet aber nur selten gebraucht. Oft sind die Fotos einige Megabyte groß. Man sollte die Bilder bevor man sie auf der Homepage einbindet auf die benötigte Größe verkleinern und ggf. die Qualität auf “Web” oder ähnliches stellen. So lassen sich oft 80% und mehr einsparen.

3. Wiederholende Bilder
Besonders bei Farbverläufen braucht man nicht eine unendlich große Grafik nehmen, damit man bei keiner Auflösung einen weißen Rand hat, sondern man sollte nur einen 1px großen Streifen nehmen und diesen wiederholen. Dadurch wächst er automatisch mit und es gibt keinen nervigen Rand.

4. Färben statt kacheln
Bei vielen farbigen Hintergründen sollte man sich überlegen ob es überhaupt notwendig ist eine Grafik einzubinden oder ob man nicht besser mit background-color arbeitet.

5. Wenige große Dateien
Bevor man anfängt ein Bild klein zuschneiden und es später in einer Tabelle wieder zusammenbaut, wäre es vielleicht sinnvoller das Bild einfach als Hintergrund zu definieren. Für jede extra Datei wird immer eine Verbindung ausgehandelt bevor diese übertragen wird. Dieser Overhead fällt bei ein paar großen Dateien weg.

Sollte sich die Webseite immer noch im Schneckentempo aufbauen, kann man mit Google Chrom standardmäßig und der Extension Firebug für Firefox analysieren, welche Datei wie lange zum Laden braucht.

GMail Themes

Gestern Abend noch die Ankündigung im GMail-Blog gelesen, heute Morgen ist es schon wahr. Nachdem ich jedoch alle mal durchgeklickt habe, bin ich doch wieder zurück zum Classic gegangen. Durch die verschiedenen Hintergründe, wurde der Vordergrund schlechter lesbar. Vielleicht ist es auch nur einfach die Gewohnheit.

Manche Google Mail Themes sind sogar standortabhängig. So muß man bei “Tree” seine Stadt eingeben. Ich denke mal nicht, das der Baum irgendwann die Blätter verliert sondern eher, das die Helligkeit des Themes angepasst wird.

Vielleicht will dieses Theme auch nur erreichen das man einen Ort eingibt, damit Google die IP-Adresse besser orten kann bzw. vielleicht wird so kontrolliert ob man auch ehrlich ist. Den Ort löschen kann man jedenfalls später nicht mehr.

Am besten hat mir Terminal gefallen. So ähnlich sieht die Mailbox wahrscheinlich auch aus, wenn man sie mit Putty aufruft.

Java & MySQL

Dieses Beispiel ist einfach mal zum Testen gedacht. Die MySQL Datenbank wurde einfach aus einem XAMPP Paket heraus verwendet. Das diese richtige funktioniert wurde bereits mehrfach mit PHP getestet. Für PHP gibt es auch entsprechende Testskripte auf http://www.php.net, für Java habe ich etwas ähnliches gesucht, aber nicht gefunden. Deshalb habe ich einfach mal schnell selber eine Beispielimplementierung vorgenommen.

Bevor man loslegt braucht man unbedingt den JDBC Treiber von MySQL. Diesen sollte man mittels Google schnell finden und herunterladen können. In dem Paket ist ein Jar-File enthalten, welches als External Jar in das folgende Java Projekt eingebunden werden muss.

Die MySQL Datenbank kann einfach über XAMPP Control gestartet werden und das folgende Skript sollte den Inhalt entsprechend anzeigen. Die TODO müssen entsprechend angepasst werden.

[java]
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HelloMySql {

/**
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args) throws ClassNotFoundException,
SQLException {

// JDBC MySQL Treiber einbinden
Class.forName(“com.mysql.jdbc.Driver”);

// TODO datenbank anpassen
String url = “jdbc:mysql://localhost:3306/datenbank”;

java.sql.Connection con =
DriverManager.getConnection(
url,”root”, “”);

System.out.println(“URL: ” + url);
System.out.println(“Connection: ” + con);

Statement stmt = con.createStatement();

// TODO tabelle anpassen
ResultSet rs = stmt.executeQuery(“SELECT * FROM tabelle”);

System.out.println(“Display all results:”);

while(rs.next()){
// TODO spalte anpassen
String str = rs.getString(“spalte”);
System.out.println(str);
}
}
}
[/java]

Java: identisch und gleich

Im letzten Semester durften wir unsere erste Projektarbeit erstellen. Alle Studenten deren Arbeit etwas mit Java zu tun hatte, wurden von Herrn Ratz, Buchautor, unter die Lupe genommen. Bei der Besprechung der Projektarbeit kam die Frage auf: “Wann sind Objekte identisch, wann gleich und wo ist der Unterschied?”.

Zwei Objekte sind identisch, wenn beide dasselbe Objekte sind. Das ist logisch. Dies kann ich mit
[java]
// Adresse der Objekte ist identisch,
// beide Objekte zeigen, im Speicher,
// auf die gleiche Stelle
objektA == objektB;
[/java]

überprüfen.

Zwei Objekte sind gleich, wenn sie identische Werte enthalten. Dies kann ich mit

[java]
// Inhalt der Objekte ist identisch,
// Adresse ist unterschiedlich
objektA.equals(objektB);
[/java]

bestimmen.