Blog für PHP, JavaScript, jQuery, Delphi, VBA und Ubuntu


Problem mit D-Link-Router-Namensauflösung bzw. Nameserver

Ich habe einen relativ günstigen WLAN-Router, den D-Link DIR-300. Manchmal kann ich Webseiten nicht aufrufen, die sonst funktionieren (z.B. tagesschau.de). Ich habe festgestellt, dass manchmal der Nameserver meines Routers (192.168.0.1) nicht funktioniert, aber meistens funktioniert er eben doch. Daher habe ich auf dem Computer einen zweiten Nameserver eingetragen. Sinnvoll ist hier der Nameserver (oder DNS) des Providers.


Thunderbird - Transparenz abschalten

Wenn man den Transparenz-Effekt beim Thunderbird nicht mag, dann kann man ihn durch das Installieren eines anderen Themes (auf deutsch: Erscheinungsbild) abschalten. Mit dem Theme Ignore Aero sieht Thunderbird 7 so aus wie Thunderbird 3. Das installiert man folgendermaßen: Auf Extras - Add-Ons klicken und dann Erscheinungsbild. Dort nach Aero suchen und dann ganz einfach installieren klicken.

Ich habe das vor allem aus folgendem Grund gemacht: Transparenz verlangsamt meinen Computer bzw. die Oberfläche von Thunderbird.


Paamayim Nekudotayim - Doppelter Doppelpunkt

Wer in PHP objektorientiert programmiert, sieht vielleicht manchmal eine Fehlermeldung mit dem Begriff Paamayim Nekudotayim. Die lustige Fehlermeldung Syntax error, unexpected T PAAMAYIM NEKUDOTAYIM heißt einfach nur, dass ein Doppel-Doppelpunkt (::) syntaktisch an falscher Stele steht. Der Begriff Paamayim Nekudotayim ist hebräisch und heißt ganz einfach: Doppelter Doppelpunkt.


Umlaute Ä, Ö, Ü und ß in XML

Umlaute und das ß können nicht wie in HTML mit ä codiert werden. Stattdessen schreibt man es folgendermaßen:

ZeichenXML-Kodierung
ää
öö
üü
ßß
ÄÄ
ÖÖ
ÜÜ


Text oder HTML per jQuery nachladen (JavaScript)

So einfach kann man mit jQuery Daten aus einer externen Datei in ein DIV (oder ein anderes HTML-Element) hineinladen:

$("#mein_div").load("eine_datei.php");

Der Inhalt aus der Datei eine_datei.php wird geladen und in das DIV mit der ID mein_div geschrieben. Der Inhalt der Datei kann HTML oder auch ganz einfach nur Text sein.


Zahl abrunden in VBA (Excel)

In anderen Programmiersprachen heißt eine Funktion zum Abrunden einer Zahl oft Math.floor( ). In VBA (Excel) kann man dafür die Funktion Int( ) verwenden.

Beispiele mit Int ( )

  • Int(3.2) ergibt 3
  • Int(3.8) ergibt 3
  • Int(-3.2) ergibt -4
  • Int(-3.8) ergibt -4

Die Funktion Fix ( ) rundet nur positive Zahlen ab. Negative Zahlen rundet sie auf.

Beispiele mit Fix ( )

  • Fix(3.2) ergibt 3
  • Fix(3.8) ergibt 3
  • Fix(-3.2) ergibt -3
  • Fix(-3.8) ergibt -3

Code-Beispiel:

MsgBox Int(3.2) ' gibt 3 aus
MsgBox Fix(3.2) ' gibt 3 aus


jQuery - Checkbox deaktivieren / aktivieren

Eine Checkbox wie

<input id="meine_checkbox" type="checkbox">

kann man per jQuery folgendermaßen deaktivieren:

$('#meine_checkbox').attr('disabled', 'disabled');

Und so kann man die Checkbox per jQuery wieder aktivieren:

$('#meine_checkbox').removeAttr('disabled');


USB-Grafikkarte für Windows 7 (32 + 64 Bit) auf Notebook

Mit meinem USB-VGA-Adapter von DeLOCK hatte ich unter Windows 7 Treiber-Probleme. Weder in der 32- noch in der 64-Bit-Version des Betriebssystems habe ich es zum Laufen bekommen.

Darum habe ich mir für knapp 50 Euro das USB-DVI-Adapter von Winstar gekauft. Ich benutze es nun unter Windows 7, 64 Bit seit mehreren Wochen nahezu problemlos. Der Adapter wird im Betrieb sehr warm. Anfangs war der Bildschirm alle paar Stunden kurz eingefroren. Ich habe den Adapter dann seitlich aufgestellt, damit eine möglichst große Oberfläche an der Luft gekühlt wird. Seitdem habe ich keine Probleme mehr. Auch ein kurzer Test unter Windows 7, 32 Bit war erfolgreich.

Da ich kein DVI-Kabel in greifbarer Nähe hatte, sondern nur ein VGA-Kabel, habe ich einfach den mitgelieferten DVI-VGA Adapter angeschlossen, mit dem ich die USB-Grafikkarte an mein Notebook angeschlossen habe.


Delphi: Zwischenablage auslesen oder ändern (kopieren)

Um in Delphi auf die Zwischenablage zuzugreifen, muss man die Unit Clipbrd einbinden:

uses [...],
   Clipbrd;


Inhalt der Zwischenablage auslesen:

eine_string_variable := Clipboard.AsText;

Text in Zwischenablage kopieren:

Clipboard.AsText; := eine_string_variable;


Delphi: Mausklick simulieren (emulieren, ausführen)

Mit der folgenden Funktion führt man an der Position des Cursors einen Mausklick mit der linken Maustaste aus. Ein Mausklick besteht aus 2 Ereignissen: Herunterdrücken der Maustaste und loslassen der Maustaste.

procedure Mausklick_links_simulieren;
begin
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
end;


Delphi: Mausposition ermitteln (Cursor-Position)

In Delphi kann man nicht nur den Mauscursor an eine bestimmte Position setzen, sondern man kann auch ermitteln, an welchen Koordinaten er sich gerade befindet. In folgenden Beispiel werden die Koordinaten ausgegeben:

procedure Beispiel;
var
  mouse_pos: TPoint;
  x, y: integer;
begin
  GetCursorPos( mouse_pos);
  x := mouse_pos.X;
  y := mouse_pos.Y;
  ShowMessage( IntToStr(x) + ':' + IntToStr(y));
end;


Die Funktion GetCursorPos() erwartet als Parameter eine Variable vom Typ TPoint. Beim Aufruf der Funktion werden die Koordinaten in dieser Variable abgelegt.


Delphi: Maus bewegen (setzen)

In Delphi kann man den Cursor der Maus mit einem Befehl sehr einfach bewegen. Mit der Funktion SetCursorPos() setzt man den Cursor einfach an die gewünschte Position.

x:=100;
y:=200;
SetCursorPos(x, y);


Delphi: String auf feste Länge zuschneiden

In Delphi kann man folgendermaßen einen String auf eine bestimmte Länge zuschneiden. Wenn man z.B. sage, ein String soll genau 30 Zeichen lang sein, dann passiert folgendes: Wenn der String 10 Zeichen lang ist, dann wird er mit 20 Leerzeichen aufgefüllt. Wenn er jedoch 40 Zeichen lang ist, dann werden die letzten 10 Zeichen einfach abgeschnitten.

Funktion:

function string_size( str: string; len_after: integer): string;
begin
  while (length(str) < len_after) do // falls zu kurz: mit Leerzeichen auffüllen
    str := str + ' ';
  string_size := copy( str, 0, len_after); // falls zu lang: verkürzen
end;


Funktionsaufruf:

alt = 'Hallo';
neu = string_size( alt, 30);


Windows: Laufwerksbuchstaben ändern (von Festplatten, CD/DVD-Laufwerk oder USB-Stick)

Unter Windows XP, Windows Vista und Windows 7 kann man den Buchstaben eines Laufwerks folgendermaßen ändern oder vertauschen:

  • Auf Arbeitsplatz klicken (bei Windows Vista und Windows 7 heißt das Computer)
  • Verwalten
  • Datenträgerverwaltung
  • Dort das Laufwerk mit der rechten Maustaste anklicken
  • "Laufwerkbuchstaben und -Pfade ändern" klicken
  • Dort auf "Ändern" klicken
  • Den gewünschten Laufwerksbuchstaben auswählen


Windows 7: Klassische Ansicht der Taskleiste aktivieren

Windows 7 zeigt unter Standardeinstellungen die Einträge in der Taskleiste ohne Text. Außerdem scheinen die Schnellstartleiste und die Taskleisteneinträge "ineinander zu verschmelzen". Um die klassische Ansicht wie unter Windows XP und Vista zu aktivieren, tut man folgende Schritte:

  • Rechtsklick auf Taskleiste » Eigenschaften » Schaltfläche der Taskleiste: "Nie gruppieren"
  • Die angehefteten Einträge jeweils anklicken und "Dieses Programm von der Taskleiste lösen" klicken


Treiber-Probleme mit Windows 7 Professional (64-Bit)

Ich habe Windows 7 Professional 64-Bit auf meinem Notebook (Lenovo N500 3000) installiert. Windows 7 hat fast alle Treiber automatisch installiert, ohne dass ich eine Treiber-CD einlegen musste. Leider funktionieren 2 Sachen nicht, die ich sehr vermisse:

  • Der Ruhezustand funktioniert nicht. Beim Versuch kommt ein Systemabsturz und dann ein Neustart.
  • Mein USB-VGA-Adapter von DeLOCK funktioniert nicht. Beim Anschließen gibt es einen Blue-Screen.
Für den Ruhezustand hoffe ich auf einen neuen Treiber von Lenovo. Ich habe jedoch Zweifel, dass es für meinen USB-VGA-Adapter von DeLOCK einen neuen Treiber gibt. Ich werde prüfen, ob ich die Probleme beheben kann, indem ich die 32-Bit-Version von Windows 7 installiere, denn unter Windows Vista (32-Bit) funktionierte beides problemlos.


GRUB: Standard-Betriebssystem auswählen

Mit Ubuntu 9.10 kann man den GRUB Bootmanager sehr einfach konfigurieren, sofern GRUB bereits installiert ist. Bei der Installation von Ubuntu wird GRUB in der Regel mit installiert und ein vorhandenes Windows-Betriebssystem automatisch erkannt. Um das Standard-Betriebssystem auszuwählen, installiert man einfach den StartUp Manager von Ubuntu. Dies geht so:

Befehl in Konsole eingeben:

sudo apt-get install startupmanager
Den StartUp-Manager starten:
System > Administration > Start up Manager


2 externe Monitore an Notebook anschließen

Die meisten Notebooks haben einen VGA-Ausgang. Über den kann man einen externen Monitor anschließen. Mit einem USB-VGA-Adapter kann man einen weiteren externen Monitor anschließen. Die Performance des Monitors, der über USB angeschlossen ist, ist nicht stark genug für hohe Grafikansprüche wie 3D-Spiele. Es reicht aber zum Programmieren, zum Malen von Bildern oder zum Anzeigen von Webseiten. Die Anzeige ist leicht verzögert, i.d.R. aber nur um den Bruchteil einer Sekunde. Man merkt es, wenn man auf einer Website nach unten scrollt oder wenn man ein Fenster verschiebt.

Ich habe ein USB-VGA-Adapter der Marke "DeLOCK", das unter Windows Vista Home Basic mit einer Auflösung von 1280x1024 läuft. Der Adapter hat rund 60 Euro gekostet (bei Amazon, Oktober 2009).


Bildschirmauflösung ändern unter Windows Vista

Die Bildschirmauflösung kann man unter Windows Vista folgendermaßen ändern:

  • Rechtsklick auf den Desktop
  • Im Kontextmenü auf "Anpassen" klicken
  • Im neuen Fenster auf "Anzeige" klicken
  • Dort kann man die Auflösung einstellen


IP-Adresse unter Linux ermitteln (Ubuntu, Debian, Suse)

Der Befehl ipconfig heißt unter Linux ifconfig.


Ubuntu: Computername und Benutzername ermitteln

Um unter Ubuntu den Computernamen und den Benutzernamen (user name) zu ermitteln, öffnet man einfach die Konsole. Das, was man dort sieht, ist der Benutzername und der Computername.

Beispiel:

christian@notebook

Im Beispiel ist der Benutzername "christian" und der Computername "notebook".


ASCII-Code für Buchstaben, Zahlen, Leerzeichen, Zeilenumbruch (CL/RF) und mehr

Dies ist eine Liste der wichtigsten ASCII-Codes. Ich liste nicht alle auf, sondern nur die meist gesuchten.

ZeichenAscii-Code (dezimal)Ascii-Code (hexa-dezimal)
Tabulator (horizontal)99
Zeilenumbruch (Line Feed, LF)100A
Zeilenumbruch (Carriage Return, CL)130D
Leerzeichen (Space) 32 20
Großer Buchstabe A 65 41
Großer Buchstabe Z 132 5A
Kleiner Buchstabe a 141 97
Kleiner Buchstabe z 172 7A


Mac-Adresse der Netzwerkkarte ermitteln (unter Windows XP)

Die MAC-Adresse der Netzwerkkarte kann man fast so einfach herausfinden (auslesen) wie die IP-Adresse:

- Startmenü » Ausführen
- Folgendes im Ausführen-Dialog eingeben: cmd
- Dann folgende Kommandozeile eingeben: ipconfig /all

Dort, wo "Physikalische Adresse" steht, findet man die MAC-Adresse.


IP-Adresse des eigenen Rechners ermitteln/herausfinden (unter Windows XP)

Die IP-Adresse des eigenen Rechners (genauer gesagt, eine IP-Adresse der Netzwerkkarte) kann man relativ einfach ermitteln (auslesen):

- Startmenü » Ausführen
- Folgendes im Ausführen-Dialog eingeben: cmd
- Dann folgende Kommandozeile eingeben: ipconfig


Windows 7 in VirtualBox

Seit ein paar Tagen steht der Release Candidate von Windows 7 bei Microsoft zum Download bereit. Vorsichtshalber habe ich es auf einer virtuellen Maschine in VirtualBox auf meinem Notebook installiert. Ich habe der virtuellen Maschine 2 GB Arbeitsspeicher zugewiesen. Die Installation lief problemlos. Das Booten funktioniert ohne Probleme. Allerdings funktionieren die virtuelle Soundkarte und die virtuelle Netzwerkkarte nicht.

Der Internet Explorer 8 ist bereits vorinstalliert. Die Browser Mozilla Firefox, Opera und Safari ließen sich problemlos installieren. Da die virtuelle Netzwerkkarte nicht funktionierte, musste ich auf andere Weise die Browser testen. Ich habe XAMPP installiert. Dieses Paket enthält den Apache Webserver, MySQL und mehr. Ich konnte also die XAMPP-Startseite auf localhost aufrufen.

Das Bildbearbeitungsprogramm GIMP ließ sich installieren, aber der Programmstart dauerte auf der virtuellen Maschine sehr lange.

Demnächst werde ich Windows 7 Release Candidate vielleicht auf meinem Notebook ganz normal direkt auf der Hardware installieren. Allerdings brauche ich genug Platz für eine Partition. In der virtuellen Maschine habe ich eine Partition von 20 GB erstellt, von der schon 12 GB belegt sind, ohne dass ich viel installiert habe.


Helferchen für PHP - Smarty und PEAR

Wer Webseiten mit PHP erstellt, hat sich vielleicht schon öfters geärgert, dass der Code unübersichtlich wird, sobald man zuviele HTML-Tags mit den PHP-Befehlen echo oder print ausgibt. Der Smarty Template Engine hilft dabei, PHP-Code von der Ausgabe in HTML zu trennen. Im PHP-Skript ist dann im Idealfall kein echo und kein print enthalten. Stattdessen übergibt man Variablen mit einer Methode namens assign an Smarty und dann läd man die Template-Datei, die die HTML-Formatierungen enthält, mit der Methode display(). Als Variablen kann man sowohl skalare Variablen (Einzelwerte) als auch Arrays übergeben. Das interessante bei der Übergabe von Arrays ist, dass man mit dem Smarty-Befehl {foreach} die Werte des Arrays in einer For-Each-Schleife abarbeiten kann.

PEAR ist die Standard-Bibliothek für PHP. Sie enthält unter anderem Klassen für Datums- und Zeitrechnung, Datenbankzugriff und Benutzer-Anmeldung (Authentication).

Man braucht nur wenige Zeilen PHP-Code, um Daten aus einer MySQL-Datenbank auszulesen und dann über ein Smarty-Template auszugeben. Mit der PEAR-Funktion DB_common::getAll() kann mit einem MySQL-Query Datensätze aus einer Tabelle auslesen. Die Funktion gibt die Datensätze als Array zurück. Dieses Array übergibt man dann an Smarty. Im Smarty-Template arbeitet man dann die Datensätze in einer For-Each-Schleife ab.


Mehrere Betriebssysteme auf einem Notebook

Vor einigen Monaten habe ich mir ein Notebook gekauft. Windows Vista Home Basic war bereits vorinstalliert. Ich wollte mich allerdings auch an Linux gewöhnen. Also habe ich Ubuntu installiert. Seitdem benutze ich auf dem Notebook hauptsächlich Ubuntu. Beim Hochfahren kann ich im Boot-Manager Ubuntu oder Windows Vista auswählen. Der Boot-Manager GRUB wurde mit Ubuntu mitgeliefert. Ubuntu kann man kostenlos aus dem Internet herunterladen und dann auf eine CD-ROM brennen.

Mein Notebook ist ein Lenovo N500, Typ 4233-39G mit 120-GB-Festplatte. Beim Kauf hatte es 1 GB RAM. Ich habe dann 4 GB handelsüblichen DDR-2-RAM (667 MHz) eingebaut. Speziellen Lenovo-RAM brauchte ich nicht. Bei der Installation von Ubuntu 8.04 ging das Verkleinern der NTFS-Partition problemlos. Auch die Hardware wurde sofort erkannt. Ich habe volle Auflösung (1280 x 800), Sound funktioniert, ebenso auch das Touchpad, die Netzwerkkarte und W-LAN.

Auf dem PC zuhause und an meinem Arbeitsplatz verwende ich Windows XP. Ein 100-prozentiger Umstieg von Windows auf Linux ist eben nicht einfach.


Blog programmiert

Heute haben ich diesen Blog programmiert. Genauer gesagt, ich habe die PHP-Skripte programmiert, die diesen Blog ermöglichen. Der Blog ist nicht das Content-Management-System (CMS), sondern der Inhalt. Das CMS braucht derzeit nur eine MySQL-Tabelle, nämlich die Tabelle, in der die Artikel stehen. Kommentare sind derzeit noch nicht möglich.