Der deutscher Mietkautionsbund e.V spendet Geld

Mietkaution mit Herz

Mietkaution mit Herz

Mietkaution mit Herz

ist das Motto der aktuellen Marketingkampagne des deutschen Mitkautionsbund. Für jeden gesetzten Backlink werden 10 Euro an Spendengelder für hilfstätige Zwecke ausgegeben. Der User kann in dem Fall sogar wählen,  welche Organisation den Betrag empfangen darf.

Was ist eigentlich der Mietkautionsbund?

Es handelt sich dabei um einen gemeinnützigen Verein bzw. einer Non Profit Organisation die Mietkautionen ausstellt.

Die Mietsicherheit, umgangssprachlich auch Mietkaution, ist die Leistung eines Geldbetrages oder Hinterlegung einer Bürgschaft durch den Mieter an seinen Vermieter zur Sicherung der aus dem Mietverhältnis herrührenden Forderungen des Vermieters (Miete, Nebenkosten und Reparaturleistungen bei Beendigung des Mietverhältnisses, Nutzungsentschädigung, Schadensersatz, Prozesskostenerstattungsansprüche

Im Klartext und in als Anwendungsfall kann man sich Folgendes vorstellen. Du möchtest gerne umziehen, besitzt aber nicht das nötige Kapital für die Kaution. Hier hilft dir der Mietkautionsbund weiter. Anhand des Beispielrechners lässt sich die Ersparnis durch die Mietbürgschaft genau betrachten.

Veröffentlicht in Allgemein, Internet Marketing, Social | 1 Kommentar

Ubuntu 9.10 und ZendStudio bzw. Eclipse

Eclipse funktioniert nicht unter Ubuntu 9.10

Nein, so ganz richtig ist das natürlich nicht. Genauergesagt funktioniert nur eine kleine Sache nicht – nämlich der Linksklick mit der Maus. Das führt dazu dass alle, die es gewöhnt sind mit einer grafischen Oberfläche zu arbeiten mit dem neuen Ubuntu so ziemlich erstaunt sein müssten. Der Bug ist bereits bekannt (Buttons disappear or do not respond to mouse clicks in Eclipse) und sollte bald gefixt werden.

Mein persönliches Highlight bei dem Bug Log:

Gabe Gorelick wrote on 2009-10-05: #4

Can you provide a screenshot of the bug

Der Workaround für das Button Problem

Man lege einfach ein neues Shell Script an dass man irgendwo platziert und dann aufruft.

#!/bin/sh
export GDK_NATIVE_WINDOWS=1
/yourpath/ZendStudio

Das wars auch schon. Leider hat mich das ganze 2 Stunden gekostet! Ich hab ja erst gedacht der Grafikkartentreiber wäre es gewesen! Wie immer, wenn es hilfreich war oder ihr wisst wie man es noch leichter lösen kann, einfach einen Kommentar hinterlassen.

Veröffentlicht in Entwicklung, php | 1 Kommentar

PHP 5.3 Experimental unter Ubuntu installieren

Warum noch eine weitere Anleitung um PHP 5.3 zu installieren?

Weil es meiner Meinung nach nur wenige Anleitungen gibt die sich mit einem Experimental Build beschäftigen. Die meisten Anleitungen beschränken sich auf Backports und weitere Kleinigkeiten. Das Problem ist dann aber dass Sachen wie PEAR oder PECL einfach nicht mehr funktionieren. Der etwas komplizierterer Weg über einen Experimental Build ist in dem Fall eine erwähnenswerte Alternative die ich auch hier erklären werde.

Ein Experimental Build ist nicht Anderes als eine  Ansamlungen von Quellcode dass vorkonfiguriert verfügbar ist aber aufgrund verschiedener Gründe nicht für den Produktiveinsatz freigegeben ist. Dies kann mehrere Ursachen haben. Meistens ist die QA des Debian Projektes wieder mal mit anderen Sachen beschäftigt. Vergleichen wir die aktuelle Debian Distribution mit der aktuellsten Ubuntu, so sind in Sachen Aktualität doch massive Unterschiede. Wer also die aktuellsten Pakete haben möchte, muss entweder auf Backports zurückgreifen oder kompilliert sich selber die passenden. Dieser Artikel geht auf das Kompillieren eines Experimental Builds ein und da Ubuntu ja auf Debian basiert sollte das fertige Paket auch problemlos zu installieren sein.

Vorbereitung

Da die Installation komplett unter einer Konsole geschieht, sind grundlegende Kentnisse der Shell notwendig. Die Installation wurde auf einem jungfräulichen System gemacht um alle Eventualitäten auszuschließen. Ich empfehle stark das Verwenden einer virtuellen Maschine wie VirtualBox, VmWare oder Ähnliche. In dem Fall verwende ich als Gastsystem Ubuntu 9.04 und als Host einen Hyper-V.

Update (3. Dezember 2009): Ich hab es gerade eben auf Ubuntu 9.10 installiert. Geht ohne Probleme :)

Während des Kompillieren könnt ihr übrigens ruhig mal für ein paar Stunden an die frische Luft gehen. Bei mir hat es circa zwei Stunden gedauert. Erwähnenswert ist eventuell noch folgendes Zitat:

Never touch a running system!

Auf gut Deutsch: Nicht unbedingt auf einem Produktivserver installieren, besonders nicht wenn euer Job davon abhängt. Der Titel sagt es ganz deutlich: Wir bauen uns ein Experimental Build.

Installation

Zuerst sollte man sich das Paket installieren dass notwendig ist damit wir Debian Pakete bauen können. Versierte Admins würden behaupten es geht auch ohne aber man muss sich das Leben ja nicht schwerer machen. Nebenbei halten wir das System auch auf den aktuellsten Stand.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential

Nachdem das erledigt ist müssen alle Pakete gezogen werden die nachher beim Kompillieren notwendig sind um potentielle Konflikte zu lösen. In dem Fall wollen wir nachher ein PHP5 Build erstellen und müssen dafür die Abhängigkeiten lösen. Das geht ganz einfach mit

sudo apt-get build-dep php5

Ich hoffe ihr habt euch inzwischen nen neuen Kaffee gezogen denn solange hat es bei mir gedauert bis alle Pakete drauf waren. Jetzt gehts an die Wurst. Debian listet auf seiner Webseite immer die aktuellsten Pakete auf inklusive den passenden Downloadlink. Übersichtshalber findet ihr für PHP 5.3 den Link unter http://packages.debian.org/de/source/experimental/php5. Aber eigentlich lässt sich dieser Schritt komplett überspringen. Also zieht man sich jetzt einfach den kompletten Quellcode, patcht ihn und stoßen den Compiler an.

sudo -s
mkdir -p /source/php
cd /source/php
wget http://ftp.de.debian.org/debian/pool/main/p/php5/php5_5.3.0.orig.tar.gz
wget http://ftp.de.debian.org/debian/pool/main/p/php5/php5_5.3.0-3.diff.gz
wget http://ftp.de.debian.org/debian/pool/main/p/php5/php5_5.3.0-3.dsc
tar -xvzf php5_5.3.0.orig.tar.gz
mv php-5.3.0 php5-5.3.0
cat php5_5.3.0-3.diff.gz |gunzip |patch -p0
cd php5-5.3.0
chmod +x debian/rules
dpkg-buildpackage -us -uc
apt-get install firebird2.0-dev libc-client-dev libmcrypt-dev libmysqlclient15-dev

Puhh, wenn es hier Probleme gibt könnt ihr das mal posten. Möglicherweise kann ich da helfen oder ein anderer hilfsbereiter User. Im Idealfall ist das Ding ohne Probleme durchgelaufen und die Pakete lassen sich ganz bequem mit dem Paketmanager installieren.

sudo dpkg -i *.deb

Jetzt müsste der Paketmanager wegen ungelöste Abhängigkeit herummeckern also lösen wir die mal mit

sudo apt-get install -f

Nun noch schnell einen Test im Browser machen nachdem wir Apache neu gestartet haben. Jetzt kräftig auf die eigene Schulter klopfen oder dem PC mal ne Pause gönnen :P

sudo /etc/init.d/apache2 restart
phpinfo mit php 5.3

phpinfo mit php 5.3

So, das wars. Bei Anregungen zu dem Artikel oder Kritik oder einfach nur weil ihr Danke sagen wollts, könnt ihr mir gerne einen Kommentar hinterlassen.

Veröffentlicht in Administration, php | Kommentieren

Bih Jolokia Chilli mit 800.000 Scoville

Bih Jolokia, das angeblich schärfste Chilli der Welt

Verschiedene Anbieter und Konsumenten aller Nationen sind sich einig dass Bih Jolokia, das wohl schärfste Chilli der Welt ist. Es ist eine relativ große Chillisorte mit einem etwas größeren Umfang und ich finde sie schaut aus wie eine kleine rote Paprika. Was macht nun diese Sorte aber so scharf?

Ein paar verrückte Forscher aus Indien haben sich zum Ziel gesetzt das schärfste Chilli der Welt zu produzieren. Die schärfste bekannte Chilisorte, Bhut Jolokia, scheint aus einer natürlichen Kreuzung hervorgegangen zu sein. Zu diesem Ergebnis sind Paul Bosland und Jit Baral von der New Mexico State University in Las Cruces bei molekulargenetischen Analysen gekommen. Die im indischen Bundesstaat Assam häufig angepflanzte Bhut Jolokia – dort sind auch noch andere Bezeichnungen geläufig – entspricht vom Erscheinungsbild her der in Südamerika heimischen Chilipflanze Capsicum chinense, wie die Forscher unlängst in der Zeitschrift „Hort Science“ (Bd. 42, S. 190) berichtet haben. Im Erbgut fanden sich aber außerdem Abschnitte von Desoxyribonukleinsäure, die offenbar von der nahe verwandten, ebenfalls aus Südamerika stammenden Art Capsicum frutescens

Bezugsquellen

Es gibt nur wenige Shops die diese Sorte entweder als Samen zum selberzüchten oder aber als Gewürz bzw. in getrockneter Form anbieten. Diese sind der Pepperworld Shop und Chilli Shop 24.

Anwendung

Ich hatte als Testexemplar eine Packung Bih Jolokia Pulver. Da es sich um ein Pulver handelt sind die Einsatzmöglichkeiten nahezu unendlich. Ich habe also die vergangenen Wochen damit verbracht, fast jede Mahlzeit mit dem Chillipulver zu verfeinern und kann schlussendlich einen kleinen Erlebnissbericht geben.

Wenn das Pulver auf kalten Speisen eingesetzt wird, geht ziemlich viel von der Schärfe verloren bzw. sie ist wenig spürbar. Das hatte zur Folge dass ich mir auf einem Brot großflächig das Pulver aufgestreut habe, nur um danach festzustellen dass dies im Nachhinein mit Magenschmerzen verbunden ist :)

In Suppen oder auch zu einer guten Soße aber entfaltet selbst kleinste Mengen ihre volle Wirkung. Hier schmeckt man sogar die leicht süßliche Eigennote des Chillis heraus. Ich empehle hier eine Tafelspitze auf einen Liter Suppe.

Fazit

Die 800.000 Scoville haben mehr mit Marketing zu tun als mit dem Pulver. Es kann schon sein dass die Sorte “Bih Jolokia” zu den schärfsten Sorten der Welt zählt und tatsächlich solch extreme Scoville Werte enthält, ich vermute aber dass durch verschiedene Produktionsfaktoren ein großer Teil der Schärfe verloren geht. Zum Vergleich habe ich eine frische Thai Chilli auseinandergenommen und der Unterschied war sowohl geschmacklich als auch von der Schärfe sofort zu spüren. Wer also wirklich ein gutes Chilli will sollte vielleicht nicht zu dem Pulver greifen sondern eher die Flocken nehmen. Als Tafelgewürz könnte es auf langer Sicht den Cayenne Pfeffer ersetzen.

Veröffentlicht in Cooking, Real Life | Kommentieren

PHP Strings hashen und cachen

Warum hashen und cachen?

Ohne lange Erklärungen gehe ich direkt zu einem Beispiel. Gegeben ist eine URL inklusive viele Parameter. Wir wollen diese URL maskieren damit der User diese URL nicht sehen kann.

Die base64_encode() Methode

Encodes the given data with base64.

This encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies.

Base64-encoded data takes about 33% more space than the original data.

Base 64 eignet sich hervorragend dazu, Links zu maskieren. Es hat aber wie schon im Quote erwähnt einen gewaltigen Nachteil: Der Originalstring wird größer!

Weiterhin hat base64 noch einen kleinen Nachteil. Einige Sonderzeichen werden nicht unterstützt. Daher müssen diese erst einmal rausgefilter werden.

$link = "http://www.beispiel.tld/link?param1=eins&param2=zwei&param3=drei";
$encodedLink = strtr ( base64_encode ( $link ), '+/=', '-_,' );

Die Memcache Methode

Memcache module provides handy procedural and object oriented interface to memcached, highly effective caching daemon, which was especially designed to decrease database load in dynamic web applications.

Super Sache, denn mit Memcache lassen sich mit der Methode Memcache::add() Variablen im Speicher ablegen. Die Methode add() nimmt zwei Argumente entgegen – key und value. Als Key bietet sich ein unique identifier an, zum Beispiel ein Hashtag.

$link = "http://www.beispiel.tld/link?param1=eins&param2=zwei&param3=drei";
$md5 = md5($link);
Memcache::add($md5, $value);

Die APC Methode

Auch APC bietet eine Methode an um Dateien direkt im Cache abzulagern. Die Funktionsweise von APC und Memcache sind oberflächlich ähnlich. Der Unterschied ist aber dass Memcache ein verteiltes Caching ermöglicht während APC nur lokal cached. Der Zugriff auf APC ist daher sehr schnell. Es bietet sich besonders an wenn Werte oft geändert und gelesen werden.

PHP bietet von Haus an eine native Unterstützung für APC. Die funktion heisst in dem Fall apc_add() und nimmt auch wie bei Memcache::add() die Gleichen zwei Argumente entgegen: key und value.

$link = "http://www.beispiel.tld/link?param1=eins&param2=zwei&param3=drei";
$md5 = md5($link);
apc_add($md5, $value);
Veröffentlicht in Entwicklung, php | Getagged , , , , | Kommentieren

Chuck Norris Programming Jokes

1. When Chuck Norris throws exceptions, it’s across the room.
2. All arrays Chuck Norris declares are of infinite size, because Chuck Norris knows no bounds.
3. Chuck Norris doesn’t have disk latency because the hard drive knows to hurry the hell up.
4. Chuck Norris writes code that optimizes itself.
5. Chuck Norris can’t test for equality because he has no equal.
6. Chuck Norris doesn’t need garbage collection because he doesn’t call .Dispose(), he calls .DropKick().
7. Chuck Norris’s first program was kill -9.
8. Chuck Norris burst the dot com bubble.
9. All browsers support the hex definitions #chuck and #norris for the colors black and blue.
10. MySpace actually isn’t your space, it’s Chuck’s (he just lets you use it).
11. Chuck Norris can write infinite recursion functions…and have them return.
12. Chuck Norris can solve the Towers of Hanoi in one move.
13. The only pattern Chuck Norris knows is God Object.
14. Chuck Norris finished World of Warcraft.
15. Project managers never ask Chuck Norris for estimations…ever.
16. Chuck Norris doesn’t use web standards as the web will conform to him.
17. “It works on my machine” always holds true for Chuck Norris.
18. Whiteboards are white because Chuck Norris scared them that way.
19. Chuck Norris doesn’t do Burn Down charts, he does Smack Down charts.
20. Chuck Norris can delete the Recycling Bin.
21. Chuck Norris’s beard can type 140 wpm.
22. Chuck Norris can unit test entire applications with a single assert.
23. Chuck Norris doesn’t bug hunt as that signifies a probability of failure, he goes bug killing.
24. Chuck Norris’s keyboard doesn’t have a Ctrl key because nothing controls Chuck Norris.
25. When Chuck Norris is web surfing websites get the message “Warning: Internet Explorer has deemed this user to be malicious or dangerous. Proceed?”.

Veröffentlicht in Entwicklung, Fun | Kommentieren

Zend Framework: Zugriff auf FrontController aus einem Model

$this->_frontController = Zend_Controller_Front::getInstance();

Da der FrontController das Singleton implementiert, ist der Zugriff auf den FrontController innerhalb eines Models ein Kinderspiel. Es muss dementsprechend nur die bereits vorhandene Instanz geholt werden und schon stehen der gesamter FrontController im Model zur Verfügung.

Veröffentlicht in Allgemein | Kommentieren

Domain-Weltkarte gratis

Domainkarte
Image via domain-karte.de

Bei United-Internet gibt es gerade eine Bloggeraktion bei der alle Blogger kostenlos eine Domainweltkarte abstauben können. Die Aktion “united-domains Domain-Weltkarten-Aktion für alle Blogger” läuft bis zum 31.03.2009 und nur solange der Vorrat reicht. Folgende Schritte müssen gemacht werden.

1. Schreiben Sie auf Ihrem Blog (oder auch auf twitter) einen kurzen Beitrag über die “united-domains Domain-Weltkarten-Aktion für alle Blogger”. Berichten Sie einfach, dass united-domains diese Aktion gestartet hat und dass alle Teilnehmer gratis eine große Domain-Weltkarte erhalten …
(die Aktion gilt übrigens auch für alle Blogger, die nicht Kunden von united-domains sind)

2. Setzen Sie in Ihrem Blog-Beitrag einen Link auf

http://www.united-domains.de

oder auf

http://www.domain-karte.de

(wenn Sie möchten, können Sie auch einen Kartenausschnitt als Grafik integrieren oder das Logo von united-domains verwenden).

3. Senden Sie uns den entsprechenden Link zu Ihrem Blog-Beitrag per E-Mail an folgende Adresse: aktion@united-domains.de. Bitte geben Sie in der E-Mail unbedingt Ihre vollständige Postanschrift für den Versand der Domain-Weltkarte an (der Versand erfolgt innerhalb von 1 bis 2 Wochen).

Zur Aktion

Reblog this post [with Zemanta]
Veröffentlicht in Events | Getagged , , | Kommentieren

Unix Time @ 1234567890

1234567890
Image by flickroli666 via Flickr

Am Samstag, den 14. Februar 2009 um 00:31:30 (CET, also GMT+0100) wird laut UNIX Time genau 1234567890 Sekunden seit dem 1.1.1970, 00:00:00 GMT vergangen sein.

Unixtime ist eine Angabe die die genaue Anzahl der Sekunden anzeigt, die seit dem 1.1.1970 vergangen sind.

Reblog this post [with Zemanta]
Veröffentlicht in Geek Stuff | Getagged , , , | Kommentieren

Statische Methoden vs. Methoden vs. Funktionen

PHP
Image via Wikipedia

Neulich beim refaktorieren: Ich iteriere ein Array und bei einem bestimmten Index führe ich eine bestimmte Aktion aus. Wie führe ich die Aktion aus, als statische Methode, als Methode nach einer Objektinstanzierung oder als Funktion.Man weiss ja dass Funktionen schneller sind als statische Methoden und diese wiederum schneller als Methoden, doch wie schnell?

Folgendes Skript verdeutlicht die Performanceunterschiede:

  class Test {

	/**
	 * @return The result of 2 + 2 calculation
	 */

	function testMethod() {
		return 2 + 2;
	}
}

// A function that returns two plus two
function testFunction() {
	return 2 + 2;
}

// this will hold the result of callng the method/function
$m = 0;
echo '


';

// do the test 20 times
for($k = 0; $k < 20; $k ++) {
	echo '
';
	// call the method statically
	$start = microtime ();
	for($i = 0; $i < 10000; $i ++) {
		$m = Test::testMethod ();

	}
	$static_time = microtime () - $start;
	echo '


';

	// call the method "normally"
	$t = new Test ( ); // create the object outside the loop
	$start = microtime ();

	for($i = 0; $i < 10000; $i ++) {
		$m = $t->testMethod ();
	}

	$method_time = microtime () - $start;

	echo '


';
	// crete an object inside the loop and call the method
	$start = microtime ();

	for($i = 0; $i < 10000; $i ++) {
		$t2 = new Test ( );
		$m = $t2->testMethod ();
	}

	$mo_time = microtime () - $start;
	echo '


';
	// call the function that doeas the same
	$start = microtime ();

	for($i = 0; $i < 10000; $i ++) {
		$m = testFunction ();
	}

	$fn_time = microtime () - $start;
	echo '


';

	// ratios
	echo '


';
	echo '


';
	echo '


';
	echo '

';
}
echo '
Static method Method with Object creation Method Function Method vs static bench Method with Object creation vs static bench Function vs static bench
' . $static_time . '' . $method_time . '' . $mo_time . '' . $fn_time . '' . (($method_time / $static_time) * 100) . '' . (($mo_time / $static_time) * 100) . '' . (($fn_time / $static_time) * 100) . '
';

Und das Resultat:

Static     Method with  Method                   Method vs      Method with       Function vs
method       Object                 Function     static         Object creation   static
            creation                             bench          vs static bench   bench
------------------------------------------------------------------------------------------------
0.016017    0.016807    0.029788    0.008337    104.932259474   185.977399014     52.05094587
0.01513     0.016974    0.048973    0.014039    112.187706543   323.681427627     92.7891606081
0.025161    0.028501    0.049813    0.013888    113.274512142   197.97702794      55.196534319
0.025065    0.027126    0.050599    0.013764    108.222621185   201.871135049     54.9132256134
0.024057    0.028618    0.050516    -0.991544   118.959138712   209.984619861     -4121.64442782
0.015437    0.01702     0.039125    0.015113    110.254583144   253.449504437     97.9011465958
0.02635     0.032555    0.049082    0.013597    123.548387097   186.269449715     51.6015180266
0.024788    0.027642    0.049174    0.013925    111.51363563    198.378247539     56.1763756656
0.025098    0.027309    0.050644    0.013834    108.80946689    201.785002789     55.1199298749
0.02432     0.028128    0.049716    0.01384     115.657894737   204.424342105     56.9078947368
0.025347    0.028046    0.049223    0.013674    110.648202943   194.19655186      53.9472126879
0.024709    0.026775    0.051406    0.00861     108.361325833   208.045651382     34.8456028168
0.015097    0.017242    0.050361    0.015824    114.208120819   333.582831026     104.815526263
0.027345    0.029153    0.049606    -0.986188   106.611812031   181.407935637     -3606.465533
0.025246    0.027103    0.050693    0.013765    107.355620692   200.796165729     54.5234888695
0.024814    0.02865     0.049334    0.013214    115.459015072   198.815184976     53.2521963408
0.025116    0.028278    0.049423    0.013806    112.589584329   196.778945692     54.9689440994
0.024819    0.027729    0.049891    0.013886    111.72488819    201.019380313     55.949071276
0.025069    0.026437    0.041419    0.008819    105.456938849   165.21999282      35.1789062188
0.015648    0.024254    0.056992    0.014997    154.997443763   364.212678937     95.8397239264

Was lernen wir daraus:

  • Eine statische Methode aufzurufen ist doppelt so schnell wie das Instanzieren eines Objektes und dann die Methode aufzurufen.
  • Eine statische Methode ist doppelt so schnell als das Instanzieren eines Objektes und dann die Methode aufzurufen nachdme das Objekt bereits existiert.
  • Funktionsaufrufe sind doppelt so schnell wie statische Methoden.
Reblog this post [with Zemanta]
Veröffentlicht in Entwicklung, php | Getagged , , , | Kommentieren