Archiv der Kategorie Howtos

Tomcat, Eclipse und der Manager

Während es natürlich mit der Standard-Standalone-Variante keine Probleme macht, hat die Integration von Tomcat in Eclipse einen kleinen Nachteil: Dadurch, dass Eclipse neben den Webapps auch die komplette Konfiguration mitsamt der Module übernimmt, fehlt daher die Manager-Webapp. Häufig ist dies egal und zu vernachlässigen, aber falls man doch mal Zugang braucht, sei es zum (testweisen) Deployen, oder einfach einer Konfiguration außerhalb Eclipse:

Als erstes fügt man ein externes Webapp-Modul ein, der Suchpfad ist “${catalina_home}/webapp/manager”. Dabei sollte man beachten, dass scheinbar der Pfad ausgeschrieben werden muss (bzw. eine gültige Catalina-Home-Variable). Dieser Schritt hat der server.xml eine Zeile (meist gaaaanz unten) wie folgt hinzugefügt:

<Context docBase="YOURPATH/webapps/manager" path="/manager" reloadable="false"/>

Wie man sich gerne überzeugen lassen kann, funktioniert die Anwendung jedoch noch nicht. Der Grund: Der Tomcatmanager muss im priviligierten Modus gestartet werden, welcher zusätzlich eine Benutzerkennung erwartet. Zunächst muss die o.g. eingefügt Zeile wie folgt angepasst werden (hier wichtig: privileged=true).

<Context antiJARLocking="false" antiResourceLocking="false" docBase="YOURPATH/webapps/manager" path="/manager" privileged="true" reloadable="false"/>

Wie bereits erwähnt, erwartet der Manager einen authentifizierten Benutzer. Man kann sich das Leben aber einfach machen, und die vorgefertige tomcat-users.xml nutzen. Man kann die Einträge auskommentieren; wichtig ist jedoch, das mindestens ein Benutzer existiert, dem die Rollen admin und manager zugewiesen sind. Beispielsweise:

<user username="manager" password="manager" roles="admin,manager"/>

Soweit, so gut. Nicht vergessen sollte man jedoch das (Re)Publish des Servers, denn sonst deployt Eclipse die neuen Einstellungen nicht in das interne Tomcat-Home-Verzeichnis.

Der Manager findet sich dann – bei einer Standardinstallation – unter der Adresse http://localhost:8080/manager/html

PHP/zlib: Wie ermittelt man die unkomprimierte Dateigröße einer .gz-Datei?

Problem: Mit $fh = gzopen($fileName, 'r'); erhält man einen Filepointer auf die Datei, aber für gzread() benötigt man neben dem Filepointer auch eine Leseinheit (und in den meisten Fällen dürfte das der Inhalt sein). Allerdings kommen wir mit filesize($fileName) nicht weiter, denn damit erhalten wir nur die Größe der komprimierten Datei zurück.

Antwort: Nach einem Beitrag von zaotong auf php.net/gzread wird die Originaldatengröße in den letzten 4 Bytes der Datei gespeichert; alles was man machen muss, ist also die letzten 4 Bytes auslesen und als Buffergröße nutzen.

Snippet:

$fileName = 'compressed.gz';

// normal öffnen, windows-binärmode
$fh = fopen($fileName, "rb");
// springe zum 4. vorletzen byte
fseek($fh, -4, SEEK_END);
//lese die nächsten 4 bytes (also die letzten)
$readBuf = fread($fh, 4);
// binärdaten lesen, ist integer (4 Byte)
$gzSize = end(unpack("V", $readBuf));
// pointer wieder schliesen
fclose($fh); 

// nun entkomprimieren, windows-binärmode
$fh = gzopen($fileName, "rb");
// nun können wir angeben, wieviel wirkliche daten wir lesen wollen
$content = gzread($fh, $gzSize);
// und brav wieder schließen
gzclose($fh);

Verkaufe deine Seele bei eBay (Howto)

http://www.netzwelt.de/news/70924_1-ebayplatte-das-persoenlichkeitsprofil-eines-filesharers.html

Und so gehts.. da fällt einem nur noch eins ein: Wie blöd muss man sein..

Howto: Von Plog/Lifetype nach WordPress migrieren

Eine gute Basiserklärung findet sich hier: http://www.colinzhu.com/2005/12/25/migrating_plog1_to_wordpress2.html

Da ich allerdings Probleme damit hatte, ergänze ich um die Fehlerberichtigungen.

  1. In der zu herunterladenden Plog-Importer-Datei (plog.php.txt) befindet sich eine Angabe zur XML-Datei (RSS-Feed), der lokal verfügbar sein muss. Es kann sein, dass man hier den Pfad angeben könnte. Tatsächlich poppt aber ein Fenster auf, um die Quelle vom PC aus hochzuladen.
  2. Plog/Lifetype generiert den Feed im alten und XML-untypischen ISO-Zeichensatz. Da WordPress auf UTF8 setzt (richtig so), wäre es nicht nur besser, sondern verursacht dann auch keine Anzeigefehler, wenn die Feedstrings beim Parsen und Eingeben in die WordPressdatenbank in UTF8-Strings konvertiert werden.
    Das geht wie folgt (Pluginimport: plog.php) die utf8_encode-Funktionen einbauen:
     // Die Funktion unhtmlentities erhält einen veränderten Returnwert
    return utf8_encode(strtr($string, $trans_tbl));// einfaches Austauschen:
    $post_title = $wpdb-&gt;escape(utf8_encode(trim($post_title[1])));
    
    // einfaches Austauschen:
    $post_name = $wpdb-&gt;escape(utf8_encode(trim($post_name[1])));
    
    // einfaches Austauschen:
    $post_content = str_replace(array ('<!--[cdata[', ']]-->'), '', $wpdb-&gt;escape(utf8_encode(trim($post_content[1])))); 
  3. Importieren.. fertig.