Debian Zeitzone und Locale einstellen

Zeitzone einstellen (CommandLine)
/usr/bin/tzselect

Dann 8 (Europe) – 16 (Germany) – 1 (Ok).

Locale einstellen (Dialog)
dpkg-reconfigure locales
set language-env

git – file “needs update”

stash save, git svn rebase, stash pop

Lokale Änderungen am GIT Repos temporär sichern.
Mittels GIT SVN rebase die letzten Änderungen des SVN Repositories ziehen. Zu den letzten Änderungen im GIT Repos zurückkehren.

Debian 5 (Lenny) auf Debian 6 (Squeeze) upgraden

Sternzeit: 2011 Februar Tag Nummer 7.
Der heutige Logbucheintrag beschreibt die Schritte für ein Debian 5 (Lenny) auf Debian 6 (Squeeze) Upgrade.

1. Letzte Version ermitteln
cat /etc/debian_version

> 5.0.8

2. Debian 5 Pakete updaten und upgraden
apt-get update
apt-get upgrade
apt-get dist-upgrade

3. Apt auf Squeeze-Sources umstellen (/etc/apt/sources.list)
Alle Vorkommnisse von “lenny” gegen “squeeze” austauschen.

Copy-Paste:

deb http://ftp.de.debian.org/debian/ squeeze main
deb-src http://ftp.de.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

4. Auf Debian 6 upgraden
Neue Paketbeschreibungen holen, dann neue Paketverwaltungsprogramme holen, dann Debian 6 holen, jetzt Kaffe holen.
apt-get update
apt-get install apt dpkg aptitude
apt-get dist-upgrade

Dialoge einfach bestätigen ,)

5. Version ermitteln
cat /etc/debian_version

> 6.0

Fertig!

reboot

Dann Logs auf Fehler checken, insbesondere
cat /var/log/syslog
und evtl. auch mal die geöffneten Ports ansehen (auch Tulpenschau genannt – und nein, wir fahren dafür nicht nach Holland)
netstat -tulpn

Gruß Jens

Debugging Shell-Scripts

Die Aufzucht und Hege von Shell-Scripts kann recht müßig sein. Wie wir alle wissen, neigen diese Dinger zu schneller Verwilderung. Die Shell stellt einige Hilfsmittel bereit, mit denen man sich das Debugging in Scripts erleichtern und auch die wildesten Viecher im Zaum halten kann.

Der Parameter “-x” ermöglicht eine schrittweise Abarbeitung der Shell-Kommandos unter Betrachtung des Environments. Insbesondere werden Kommandos so angezeigt, wie sie unter Verwendung der lokalen oder Environment-Variablen auch ausgeführt werden.

Dazu einfach mal “-vx” in der ersten Zeile anhängen:
#!/bin/bash -vx
VAR=Hello
echo "$VAR World!"

Ach und: wer nach dem Inhalt von Env-Variablen sucht, der kanns sich an “set” erfreuen.In (gepipeter) Kombination mit “grep” ergibt sich beispielsweise:
“set | grep CLASSPATH” oder “set | grep PATH”.

Erfolgreiches Fehlersuchen und ansonten einfach mal F8 drücken, wenns zu wild wird.

Giving Singleton’s a Shot

Instanzierung eines Singletons mittels des “Klassennamen”. Der Klassenname repräsentiert das aktuelle Objekt.

/**
* @return This object is a singleton.
*/
final static public function getInstance()
{
return Klassenname::$instance=(is_null(Klassenname::$instance))?new Klassenname:null;
}

Instanzierung eines Singletons mittels “self”. Self repräsentiert das aktuelle Objekt.

/**
* @return This object is a singleton.
*/
final static public function getInstance()
{
return self::$instance=(is_null(self::$instance))?new self:null;
}

Instanzierung eines Singletons mittels “static”. Static repräsentiert das aktuelle, zur Laufzeit statisch gebundene Objekt (late static binding).

final static public function getInstance()
{
static $instance = null;

return $instance ?: $instance = new static;
}

Instanzierung eines Singletons mittels magisches Laufzeitkonstante “__CLASS__”. PHP5+

public static function getInstance()
{
if (!isset(self::$instance))
{
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}

Singletons considered harmful?

Und noch etwas Prototype-Magic hinten dran:

public function getInstance()
{
if ($this->_prototype === null)
{
$this->_prototype = unserialize(sprintf(‘O:%d:”%s”:0:{}’, strlen($this->name), $this->name));
}
return clone $this->_prototype;
}

Hier wird eine Prototype Klasse instanziert.
Und zwar auf folgendem Weg: mittels sprintf() wird ein String zusammengesetzt, der den Klassennamen und seine Länge enthalt.
Durch Unserialisierung und anschließendes Clonen entsteht
eine leere, aber benannte Klasse. Diese kann nun befüllt werden kann.
Dieser Trick kann eingesetzt werden, um Objekteigenschaften einzufrieren und wieder aufzutauen.

← Previous PageNext Page →