Tipps zum Tunen eines vServers

Anstatt Hosting-Paket hab ich mich letztens für einen Virtual Server vond 1und1 entschieden – mit Plesk als Verwaltungsoberfläche. Es ist schon ganz schick, man kann so viele Sachen selbst machen. Die Installierte PHP-Version und die Apache Version waren mit einfach zu alt, deswegen hab ich einfach beschlossen Apache und PHP neu kompilieren. Als erstes die aktuellste Apache Version herunterladen, entpacken (gunzip, tar -xf), konfigurieren (.configure Optionen siehe unten), kompilieren (make) und installieren (make install). Dann in einen anderen Ordner PHP herunterladen und die gleiche Prozedur durchführen. Über Plesk den alten Apache stoppen und das automatische Starten unterbinden.

Hier die Konfiguration für Apache2

./configure --prefix=/opt/apache2
--enable-auth-digest --enable-cache
--enable-mem-cache --enable-rewrite
--enable-vhost-alias --enable-so

Hier die Konfiguration für PHP5
./configure --prefix=/opt/php5 --with-zlib
--with-gd --enable-gd-native-ttf
--with-freetype-dir --enable-exif
--with-mysql=/usr
--with-mysqli=/usr/bin/mysql_config
--with-regex=php
--with-apxs2=/opt/apache2/bin/apxs

Jetzt der Trick: Nachdem der Apache installiert ist, einige der Konfigurationsdateien aus dem alten Verzeichnis in das neue Verzeichnis kopieren, und die Pfade so ändern, dass einige der Dateien immer noch aus dem eigentlichen Verzeichnis ausgelesen werden, vor allem die Datei, in der die Virtual Hosts eingetragen werden (das ist wahrscheinlich die default-server.conf), dann kann man die Domains immer noch über Plesk konfigurieren. Eine wichtige Datei ist die load_modules.conf. Da werden bei dieser Konfiguration fast alle Einträge entfernt, und der Pfad zum neuen PHP-Modul eingefügt. Zwischendurch den Apache von der Konsole starten (Plesk geht nicht mehr) und schauen, ob alles funktioniert.

LoadModule php5_module /opt/php5/php-5.2.3/libs/libphp5.so

Die Dateien mit der Endung PHP mit dem folgenden Befehl als PHP interpretieren lassen. Server nochmal stoppen und starten. Fertig!

AddType application/x-httpd-php .php
AddType application/x-httpd-php .inc

Zu beachten: Domains können mit Plesk angelegt werden, dann muss aber nach dem Anlegen der Server neu gestartet werden.

Geschrieben in default | Kommentare deaktiviert für Tipps zum Tunen eines vServers

Date Cube

Ein in 2D dargestellter Würfel, um 45 Grad nach oben und nach links gedreht. Auf der linken Seite stehen Zahlen von 1 bis 31, auf der rechten Seite des Würfels die Zahlen von 1 bis 12 und auf der nach unten zeigenden Seite die Jahreszahlen. Die Idee dahinter ist, dass es mühsam ist, aus einem herkömmlichen Kalender das Datum rauszusuchen. Ich finde es nervig, erstmal ein Jahr auszuwählen, dann bis zum richtigen Monat durchzuklicken und dann den Tag auszuwählen. Der Date Cube ermöglicht es, alle drei Parameter fast gleichzeitig auszuwählen. Wenn man so den 12.Juni 2007 markieren will, klickt man zunächst links auf 12, dann rechts auf 7 und unten auf 2007 und fertig. Funktionsfähige Flash-Demo folgt bald.

Geschrieben in crazyideas | Kommentare deaktiviert für Date Cube

Aerobic

Block A (16 ZZ):
1. Steptouch
2. Heel Dig seit, Füße öffnen
3. Leg Curl gesprungen, Schritt vor
4. Leg Curl gesprungen, Schritt vor

Block B (16 ZZ):
1. Grapevine mit Curl und Sprung am Ende
2. Mambo
3. Grapevine mit Curl und Sprung am Ende
4. Mambo

Block c (16 ZZ):
1. March vor (4 Schritte)
2. V-Step 180 Grad-Drehung, Front-Wechsel
3. March vor (zurück zum Auasgang, 4 Schritte)
4. V-Step 180 Grad-Drehung, Front-Wechsel

A+A+B+B+C+C = 3×32 ZZ, dann halbieren A+B+C+A+B+C = 3×32 ZZ

Geschrieben in choreos | Kommentare deaktiviert für Aerobic

Aerobic

32 ZZ gesamt
Block A (16 ZZ):
1. Scoop diagonal rechts vor
2. Out-In rechts
3. Scoop diagonal rechts
4. Out-In rechts

Block B (16 ZZ):
1. March zurück (4 Schritte)
2. Lunge rechts+links
3. March zurück (4 Schritte)
4. 2 Jumping Jack

am Ende Wechsel auf links möglich

Geschrieben in choreos | Kommentare deaktiviert für Aerobic

DB-Abfrage bei Zuordnung im BLOB

In Typo3 werden 1:n Beziehungen als kommaseparierte Liste in einem BLOB gespeichert. Dabei ist es nicht ohne weiteres möglich das Feld zu bearbeiten oder aus dem Feld auszulesen. Um aus einem solchen Feld auszulesen, liefert TYPO3 sinnvolle Funktionen, die man bei der Extensionentwicklung einsetzen kann. In der ersten Zeile bastelt man sich mit der Hilfe der Funktion listQuery einen Abfragestring. In diesem Fall sollte der gesuchte Eintrag der Kategorie $catint angehören, die Liste steht dazu im Feld ‚category‘. Die Variable $table enthält den Namen der Tabelle, die Abgefragt werden soll. Die zweite Zeile führt eine Anfrage aus, in $fields gibt man die Felder an, die zurückgegeben werden sollte. An den Where-String aus der ersten Zeile kann man bei Bedarf weitere Abfragen dranhängen wie z.B. ‚hidden=0 AND deleted=0‘.

$where = $GLOBALS['TYPO3_DB']->listQuery('category',$catint,$table);
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($fields,$table,$where);

Geschrieben in TYPO3 | Kommentare deaktiviert für DB-Abfrage bei Zuordnung im BLOB

Per TS Wert einer GET/POST Variablen auslesen

Wenn der Wert einer GET oder POST Variablen irgendwo per TS ausgelesen werden soll:

10 = TEXT
10.data = GPvar:foo

Dabei ist foo der Name der POST oder GET-Variablen. Falls die benötigte Variable jedoch in einem Array steht, kann man so darauf zugreifen:

Input-Feld:

<input type="text" name="foo[bar]" value="irgendwas" />

TS-Setup:

10 = TEXT
10.data = GPvar:foo|bar

Geschrieben in TYPO3 | Kommentare deaktiviert für Per TS Wert einer GET/POST Variablen auslesen

Zurück zur Suchseite – Nachfrage vermeiden

Das Problem: man hat nach was gesucht und es wurde eine Liste angezeigt. Nun möchte man gerne zurück zur Suchseite. Normalerweise klickt man auf den „zurück“-Button im Browser und es kommt ein Fenster mit der Nachricht, dass die Seite nicht mehr gültig ist.

Es ist nicht möglich die Suche auf GET umzustellen wie Google, aber es möglich das Caching des Browsers zu beeinflussen.

Dazu schreibe man die folgende Zeile ins Ext-Template der Suchseite. Cache-Control ist ein HTTP 1.1 Header, der das Caching von Browsers und Proxies steuert. „max-age“ ist die relative Angabe in Sekunden, wie lange das dokument noch Gültigkeit besitzt – in diesem Fall einen Tag lang(24*60*60). „must-revalidate“ zwingt den Browser dazu, eben genau die oben genannte Einstellung zu beachten.

config.additionalHeaders = Cache-Control: max-age=86400, must-revalidate

Ich habs nicht selbst rausgefunden, vielen Dank ans Forum auf typo3.net.

www.typo3.net/forum/list/list_post//42160/

Voreinstellungen für Content Elemente

Bestimmte Attribute eines Content Elementes können vorbelegt werden, wie z.B. Bilderrahmen, Bildgröße etc.

Beim Anlegen eines neuen Datensatzes in tt_content soll die Bildgröße auf 338×338, der Bildrand auf 1px eingestellt werden. Das Bild wird links oben ausgerichtet und es ist ein 1-spaltiges Layout.

Die dazugehörige Konfiguration im TSconfig (der Gruppe oder des Benutzers):

TCAdefaults.tt_content {
imageborder = 1
imagewidth = 338
imageheight = 338
imagecols = 0
imageorient = 0
}

Eine andere Möglichkeit ist ein Hook und die dadurch erst mögliche Definition der Standardwerte im Page-TSconfig: http://www.typo3-profibuch.de/artikelansicht/backend-default-werte-per-tsconfig-setzen/

Geschrieben in TYPO3 | Kommentare deaktiviert für Voreinstellungen für Content Elemente

Rahmen bei Content Elementen selektieren und umbenennen

Bei Content Elementen gibt es die Möglichkeit einen Rahmen anzugeben. Default ist das ein Abstand von x Pixeln davon bzw. danach. Man kann diesen Rahmen aber dazu verwenden, um Content Elemente mit komplett anderen Rahmen zu versehen.

Mit der folgenden Einstellung können unnötige Rahmen ausgeblendet werden:

TCEFORM.tt_content.section_frame {
removeItems = 1,5,6,7,10
}

Jedem Rahmentyp ist eine Zahl zugeordnet. Diese Zahlen bekommt man raus, wenn man sich den Quelltext des Frames anschaut. Dann werden die bleibenden Rahmen umbenannt, damit der FE-Benutzer weiß, was ein bestimmter Rahmen bewirkt:

TCEFORM.tt_content.section_frame {
altLabels.0 = Kein Rahmen
altLabels.11 = Rahmen grau doppelt hoch
altLabels.12 = Rahmen bunt doppelt hoch
altLabels.20 = Rahmen grau einfach hoch
altLabels.21 = Rahmen bunt einfach hoch
}

Anschliessend werden die Wraps der Rahmen im TSOB angepasst:

tt_content.stdWrap.innerWrap.cObject.20.value = <table border="0" class="content_normal" cellspacing="0" cellpadding="{$styles.content.frames.padding}"><tr><td>|</td></tr></table>
tt_content.stdWrap.innerWrap.cObject.21.wrap = |
tt_content.stdWrap.innerWrap.cObject.21.value = <table border="0" class="content_bunt" cellspacing="0" cellpadding="{$styles.content.frames.padding}"><tr><td>|</td></tr></table>
tt_content.stdWrap.innerWrap.cObject.11.value = <table border="0" cellspacing="0" cellpadding="{$styles.content.frames.padding}" class="content_normal_high"><tr><td>|</td></tr></table>
tt_content.stdWrap.innerWrap.cObject.12.value = <table border="0" cellspacing="0" cellpadding="{$styles.content.frames.padding}" class="content_bunt_high"><tr><td>|</td></tr></table>