Sep
25
2011
sas
This week I found an impressive chart on the web that illustrates the power of php frameworks. This benchmark shows how many requests per second a very simple web application can deliver. The test is targeting on the basic overhead of the framework, things like bootstrap initialization etc. This kind of overhead which every request have. So this benchmark is provided by the Framework Yii, and what a surprise, this framework is the best of all in this benchmark.
So far so good. The question that I ask myself was, how fast a django application (based on python 2.7), which also deliver this simple “hello world” will be?
I created a very basic simple django 1.3 application for testing the performance. I included this application into the code base from the upon drescriped benchmark application. The whole code is available to my github repository (including the code providing from yii).
Here are the interesting results (Requests per Second):

| Framework |
[#-Requests/sec] (mean) |
| cakephp-1.3.4 |
30.34 |
| symfony-1.4.8 |
45.89 |
| zend-1.10.8 |
60.15 |
| yii-1.1.4 |
100.48 |
| codeigniter-1.7.2 |
143.72 |
| django-1.3 |
431.76 |
Operating System: Kubuntu 11.04The testing environment is as follows:
- Web Server: Apache/2.2.17 (Ubuntu)
- PHP: 5.3.5-1ubuntu7.2
- CPU: Intel Core2Duo P8600 2.4 GHz
- Main Memory: 4GB
- Hard Drive: 300GB SATA HDD
no comments | tags: Benchmark, Django, Framework, php, Python | posted in Allgemein, PHP
Jan
5
2011
sas
Wenn man nicht sicher ist, welche Funktion die beste Performance liefert kann man unter phpbench.com einfach nachlesen welche Funktion wie abschneidet.
In meinem Fall wollte ich wissen wie isset() und empty() sich in Punkto Geschwindigkeit unterscheiden: sie sind gleich schnell.
no comments | tags: php | posted in Allgemein, PHP
Okt
30
2010
sas

Um den aktuellen git branch am shell promt anzuzeigen ist die PS1 Variable in den Dateien .bashrc oder .profile wie folgt zu setzen:
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\e[0m\]\[\e[31m\]$(git branch 2>/dev/null|fgrep '\''*'\''|sed '\''s/$/)/;s/^* / (/'\'')\[\e[0m\]$ '
no comments | tags: git | posted in Source Version Control
Jul
12
2010
sas
Einleitung
Um PHP Anwendungen auf einem Web-Server bereitzustellen, gibt es einige Möglichkeiten. Die meisten dieser Tools sind recht aufwendig in der Konfiguration oder schwierig zu bedienen.
Eine einfache Alternative, speziell für CakePHP, möchte ich hier vorstellen.
Voraussetzungen
- CakePHP ab Version 1.3
- Remotezugang via FTP
- Eine Konsole am lokalen Rechner mit konfigurierter cake-shell
Los gehts..
1. Installation
git://github.com/sassman/deployment_shell.git
den Code in das Verzeichnis “app/vendors/shells/” entpacken.
2. Konfiguration erstellen
2.1 Konfiguration interaktiv erstellen
in cake bake shell -Art kann die Konfiugration interaktiv erstellt werden.
cake deploy create_deployment_config
2.2 Konfiguration manuell erstellen
/app/config/deployment.php:
<?php
class AppDeployment extends BasicDeployment
{
var $default = array(
'source' => 'File',
'destination' => array('Ftp' => array(
'host' => 'yourftp_hostname',
'login' => 'username',
'password' => 'password',
'port' => '21',
'timeout' => '60',
'path' => '/html/app/beta/your_app'
)),
'exclusions' => array(
'files/attachments*',
'core.php'
)
);
var $live = array(
'source' => 'File',
'destination' => array('Ftp' => array(
'host' => 'your_ftphostname',
'login' => 'username',
'password' => 'password',
'port' => '21',
'timeout' => '60',
'path' => '/html/apps/your_app'
)),
'exclusions' => array(
'files/attachments*',
'/cake/',
'core.php'
)
);
}
?>
3. First Run
eine Konsole öffnen und in den /app Ordner ihrer Anwendung wechseln.
cake deploy
führt das Deployment mittels Default-Konfiguration aus.
und
cake deploy live
führt das Deployment mittels “live” Konfiguration aus.
auf diese Weise können, beliebig viele , Deployment-Konfigurationen angelegt werden.
4. Bemerkungen
Das Tracken der übertragenen Dateien, erfolgt über eine sha1 checksumme der Datei und wird im Kontext der Deployment-Konfiguration abgespeichert. Dadurch erhält jede Deployment-configuration ihre eingene Update-Datei-Liste.
1 comment | tags: CakePHP, cakeshell, deployment, php | posted in Allgemein, CakePHP
Jun
8
2010
sas
Mit Visual Studio 2008 SP1 ist es leicht möglich eine Anwendung über Click Once bereitzustellen. Desweiteren kann man die erforderlichen Komponenten auswählen, welche der Click Once Installer dann direkt von Microsoft runterläd.
Wenn man jedoch die Komponenten (in diesem Fall .Net 3.5 SP1) mit vom Bereitstellungsort laden lassen möchte, um z. B. Netzlast zu sparen, führt das, in dem Moment wo man >Bereitstellen< drückt, zu einer Reihe von Fehlermeldungen.
Hier findet man eine lange Liste von Fehlern, welche im VS 2008 SP1 stecken. Unter anderem findet man auch, für das oben beschriebene Problem, unter 2.3.1.1 “Samesite für das .NET Framework 3.5 SP1-Bootstrapperpaket aktivieren” eine ausführliche Anleitung um dies zu beheben.
Viel Spaß beim Deployment!
no comments | tags: .NET, ClickOnce, VS2008 | posted in Allgemein, Software
Mai
13
2010
sas
Im Entwicklungsprozess einer PHP Anwendung kommt man früher oder später an den Punkt, wo es interessant wird E-Mail-Funktionalität zu integrieren. Denkbar sind Anwendungsbeispiele wie: Anforderung eines neuen Passwortes für den Login oder das automatische Informieren bei Aktionen. Doch zunächst findet die Entwicklung meist auf lokalen Entwicklungsmaschinen statt, so wie in diesem Beispiel ein Linux Rechner (Kubuntu 10.04). Das Problem was an dieser Stelle auftaucht ist klar, per default ist PHP so eingerichtet, dass es die lokale Mailfunktion des Betriebssystemes nutzt, konkret heißt dies der Postfix-Dienst muss die E-Mails ausliefern, was er zunächst im besten Fall auch nur lokal macht.
Also ist die Frage: Wie bekomme ich Postfix dazu mit meinem “öffentlichen” E-Mail Account, Mails zu versenden. Dies wird im Folgenden mit anschaulichen Erklärungen beschrieben.
sudo apt-get install postfix
Die Einstelldialoge werden mit folgenden Werten belegt:
- Internet mit Smarthost
- Ihrem Rechnernamen (default vorausgefüllt)
- die Adresse des SMTP Servers ihres E-Mailproviders
Eine Nachbearbeitung der /etc/postfix/main.cf ist nötig, Folgendes ist hinzuzufügen
# noplaintext weglassen, wenn Passwörter im
# Klartext übertragen werden sollen
# (nicht empfohlen)
# smtp_sasl_security_options = noplaintext noanonymous
smtp_sasl_security_options = noanonymous
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
# lokale sender (username) sollen
# auf reale adressen gemapt werden
sender_canonical_maps = hash:/etc/postfix/sender_canonical
Nun sind die entsprechenden Dateien sasl_password und sender_canonical vorzubereiten.
In der Datei /etc/postfix/sasl_password werden der Server, Login und das Passwort angegeben, mit dem sich Postfix bei Ihrem E-Mailprovider authentifiziert.
smtp.IhreDomain.de MailNutzername:PasswortDesNutzers
In der Datei /etc/postfix/sender_canonical werden die System-Nutzer den jeweiligen Mailadressen zugewiesen. So z.B. der www-data Nutzer (unter dem Apache2 läuft) auf eine Mailadresse Ihrer Wahl.
www-data your-mail-adress@yourmailprovider.de
sudo postmap /etc/postfix/sasl_password
sudo postmap /etc/postfix/sender_canonical
sudo service postfix reload
Der postmap Befehl erstellt eine für Postfix lesbare .db Datei.
no comments | tags: Kubuntu, Linux, postfix | posted in Server, Software
Apr
21
2010
sas
Früher (KDE 3) war es Standard, dass KMail sich beim Öffnen in die Task-Bar (System-Tray) “klinkte”, so dass beim schließen, die Anwendung in die Task-Bar minimiert wurde.
Aber auch heute (KDE4) ist dies Problemlos möglich, nur etwas versteckt zu finden:
Einstellungen->Kmail einrichten-> Erscheinungsbild->Systemabschnitt der Kontrolleiste
Dort dann den Haken bei “Anzeige im Systemabschnitt der Kontrolleiste” setzen und darunter “Kmail immer in der Kontrollleiste anzeigen” selektieren.
So einfach war das!
Kontext: KDE 4.4.2 | KMail 1.13.2
no comments | tags: KDE4, KMail, Kubuntu, Linux | posted in PIM, Software