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

Code Igniter – PHP Framework

CodeIgniter - Open source PHP web application ...
Image by guspim via Flickr

CodeIgniter ist ein Open Source Web Application Framework für das Entwickeln von dynamischen Webseiten mit PHP. Wie jedes andere Framework verspricht CodeIgniter das schnelle Entwickeln von Applikationen. CodeIgniter selber versteht sich als MVC-Framework und teilt sich daher mit CakePHP, Symfony und Zend Framework das Revier. Die Featureliste ist nicht besonders beeindruckend, dennoch für den Alltagsgebrauch ganz nett zu gebrauchen.

  • Mehrere Datenbanksystemen
  • Active Record
  • Sessionverwaltung
  • Validatoren für Form und Daten
  • Caching
  • Scaffolding
  • Template Engine
  • Support für Hooks, Class Extensions und PlugIns
  • Unit Testing Class
  • SEO optimierte URLs

Und noch einige andere Kleinigkeiten. Insgesamt wirklich nichts beeindruckendes. Features wie ‘SEO optimierte URLs’ oder Class Extensions sind einfach ein Witz wie man später erfahren wird. Der Grund warum ich mich mit dem Framework beschäftigt habe liegt an den zahlreichen Projekten, die mit CodeIgniter umgesetzt wurden und nicht auch letzendlich daran, dass das Framework überall als leichtgewichtigt und schnell gelobt wird. Was man dem Framework wirklich gut schreiben kann ist die wirklich enorm schnelle Einarbeitungszeit. Für erfahrene Entwickler die bereits Erfahrung mit dem MVC-Entwurfsmuster und objektorientierte Programmierung gemacht haben ist der Einstieg sehr einfach und es verwundert nicht, dass es anscheinend sehr viele Programmierer gibt, die ihren Einstieg in Frameworks mit CodeIgniter wagen.

Warum ein Framework?

Ein Framework kann die Entwicklungszeit für ein Projekt drastisch verkürzen. Besonders bei Webapplikationen werden inzwischen viele ehemals neue Features als Standard angesehen. Ob es nun das Speichern von Daten, serverseitige Validierung von Formularen, Captchas oder Authentifizierung ist, es gibt kaum ein Feature dass nicht schon einmal programmiert wurde. Die Frage ist natürlich, ob es Sinn macht, bereits programmierte Features wieder und wieder runterzuschreiben. Mit der Zeit haben sich dann Klassenbibliotheken durchgesetzt, meist lose Sammlungen von Codeschnippsel, zusammmengetragen durch zahlreiche Entwickler,  die im Laufe der Zeit größer und größer geworden sind. Mit der Größe ist dann auch die Qualität der Bibliotheken gestiegen. Bekanntestes Beispiel ist zum Beispiel PEAR. Leider ist die Qualität der PEAR Klassen nach wie vor von sehr unterschiedlicher Qualität.

Und anscheinend waren ziemlich viele PHP Entwickler mit dem was PEAR, ezComponents und Co. bereitstellten zufrieden. Die Freude hielt nicht lange, denn ein neuer Stern am Himmel der Webentwickler wartete darauf, entdeckt zu werden. Der Stern hieß Ruby on Rails und ist eigentlich ein Kristall auf dem steilen Weg nach Oben. Ruby on Rails gehörte zu den ersten Webframeworks, die das MVC-Pattern salonfähig machten. Während die PHP Programmierer immer noch die gesamte Applikationslogik mitsamt tabellenbasierten Teplate in eine ‘index.php’ verfrachteten, freute sich die Ruby on Rails Community darüber, sexy

Ruby on Rails
Image via Wikipedia

Anwendungen schreiben zu können, die nicht nur dank CSS, 2-Step Layout, Models, ORM, Controllern und Co. einfach zu warten ist, sondern auch verdammt schnell zu entwickeln ist.

Das Ergebnis aus dieser Lehre waren dann Symfony und CakePHP. Wenig später gesellte sich dann auch Zend dazu und zeigte mit dem Zend Framework, wie professionelle Softwareentwicklung mit PHP auszusehen hat. Inzwischen gibt es mehrere dutzend Frameworks, die populärsten dürften aber in ungeordneter Reihenfolge sein:

  • CakePhp
  • Symfony
  • Zend Framework
  • CodeIgniter
  • Prado
  • ezComponents


Lernkurve

In CodeIgniter einzusteigen ist ziemlich einfach. Das liegt eventuell an der gut durchdachten Ordnerstruktur, eventuell aber auch an der wirklich sehr einfach zu verstehende Dokumentation. Ich hab mir gar nicht erst die Mühe gemacht und mir die Dokumentation angeschaut, für was gibt es denn Videotutorials. Und 30 Minuten später war ich der festen Überzeugung, dass wirklich jeder halbwegs begabter PHP Entwickler damit auskommen muss. Ob es nun eine einfache Webseite sein soll oder sogar ein etwas komplexes System, es gibt für kleine bis mittlere Projekte meiner Meinung nach allerhand Projekte die man damit umsetzen kann.

Besonderheiten

Als Erstes fällt auf, dass das gesamte Framework in PHP4 programmiert ist. PHP4 anno 2009? Geht ja wohl gar nicht. Ich verstehe durchaus das Argument abwärtskompatibilität aber eventuell sollten sich die Entwickler darüber bewusst werden, dass der Support für PHP4 eingestellt wird. Dementsprechend kann man in den Klassen auch nicht die Sichtbarkeit von Attributen und Methoden definieren. Ein typischer Kontroller schaut so aus:

class GetFeed extends BaseController {

	public function GetFeed()
	{
		parent::BaseController();
	}

	/**
	 * this should be the start page
	 * build the feeds and so on
	 *
	 */
	function index()
	{
        }
}

Nicht gerade die eleganteste Art, es erfüllt aber seinen Zweck. Im Grunde genommen ist es gar nicht so schlecht, dass Einsteiger nicht mit PHP5 typischen Sprachkonstrukte erschlagen werden. Das macht in meinen Augen Sinn, da der Programmierer sich auf die eigentliche Tätigkeit konzentrieren kann. Für mich ist es dennoch sehr stark gewöhnungsbedürftigt. Das geht dann weiter mit so interessanten Konzepte wie die ‘autoload’ Klasse die eigentlich gar keine ist.

$this->load->library('classname');
$this->classname->method();

Das verbietet nicht nur den Gebrauch von statischen Methoden, sondern macht es auch absolut unmöglich, Parameter an den Konstruktor zu übergeben. Eventuell gibt es auch eine Möglichkeit, aber ich komme einfach nicht drauf. Die Klasse wird nämlich sofort nach dem Laden instanziert. Aber Gott sei Dank ist man ja nicht darauf beschränkt, den Pseudo-Autoloader zu benutzen.

Abseits dieser Merkwürdigkeiten hat das Framework auch so seine Vorteile und zwar seine restriktive Art. Es mag sein, dass es Leute gibt, die meinen, dass dieses Framework das Non-Plus-Ultra in Sachen Webentwicklung ist, ich find es nicht, nicht mal ansatzweise. Was ich am CodeIgniter aber schätze ist, dass man mit einer Installation fast schon ein vollwertiges Webprojekt hat. Hier noch ein paar Views, da paar Controller und Action und fertig ist die selbstgeschusterte Webanwendung. Man kann mir erzählen was man mag, schneller hab ich noch nie eine fertige dynamische Webanwendung entwickelt. Das Resultat ist ein RSS Aggregator in nicht mal eine Stunde! Natürlich ist das Tool absolut noch verbesserungswürdig aber für ein erstes Prototyping bin ich trotz der merkwürdigen Codebasis sehr zufrieden.

Ein weitere Vorteil ist, dass die gesamte Installation gepackt nicht mal 700kb groß ist. Verglichen mit Zend, das locker mal 20MB groß ist, ist das für mich das Pro-Argument überhaupt. Wer heute Anwendungen vertreiben möchte, wird die schlanke Codebasis von CodeIgniter zu schätzen lernen.

Fazit

Mir fehlt leider die wirkliche Erfahrung mit CodeIgniter um mir ein wirklich neutrales Bild machen zu können. Was ich aber bisher gesehen habe taugt absolut für das Rapid Prototyping einer Webapplikation. Hierfür sind Codequalität und Stabilität sowieso nicht von Bedeutung. Wenn es nur darum geht, Features zu implementieren und neue Sachen auzuprobieren, ist das Ding einfach unschlagbar und wer weiss, spätestens wenn eine PHP5 Version kommt würde ich mir sogar einen Einsatz im Unternehmen vorstellen können.

Reblog this post [with Zemanta]
Veröffentlicht in Entwicklung, php | Getagged , , , , , , , , | 4 Kommentare

Google Chrome Launchkampagne in Japan

Google Chrome
Image via Wikipedia

Während der hart umkämpfter Suchmachinenmarkt in Japan voll im Gange ist, hat Google klammheimlich damit begonnen, Google Chrome in den asiatischen Länder zu vermarkten. Mit der typisch asiatischen Liebe zum Detail und einer gewissen Anspielung an BreakOut, einem bekannten Computerspiel, wurde ein Videoclip in Stop-Motion Verfahren gedreht.

Die Idee und Umsetzung wurde stammt vom Google Japan Team. Es ist interessant zu beobachten wie ein Unternehmen wie Google sich die den Kawaii Faktor zu Nutze machen um  erfolgreich den Browserkrieg zu bestreiten.

Kawaii (jap. かわいい, seltener 可愛い) ist der japanischer Ausdruck für „liebenswert“ oder „süß“. Dieser universelle Ausdruck kann benutzt werden um alles zu beschreiben, was jemand als besonders niedlich empfindet.

Seit den 1970er hat sich “Niedlichkeit”, insbesondere als Designelement, in vielen Bereichen des  japanischen Lebens und der Kultur als deutlicher Aspekt immer stärker durchgesetzt. Gerade westliche Beobachter finden das dabei oft besonders faszinierend, da Japaner Niedlichkeit in vielen Situationen einsetzen, in der es in westlichen Kulturen als unpassend kindlich oder unseriös angesehen werden würde (zum Beispiel in staatlichen Veröffentlichungen, behördlichen Warnungen, Büroumgebungen, Werbung für das Militär oder kommerzielle Fluglinien um nur einige zu nennen).

Das Video ist natürlich über YouTube verfügbar.

[youtube wlqImTN1Rw0]

[youtube d1iDQOMk8xY]

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

Wordpress Plugin Request Contest – Welches Plugin wollt ihr?

Category:Wikipedians who use WordPress
Image via Wikipedia

Nachdem ich mal wieder ein neues Betätigungsfeld benötige hab ich mir als angehender Blogger ja gedacht warum nicht einfach ein ‘Wordpress Plugin Request-Contest’ ausgedacht. Was wollt ihr für Plugins? Natürlich werde ich nicht verbindlich das Plugin dann programmieren aber unter allen Kommentare werde ich versuchen ein Plugin zu programmieren, mein erstes Wordpress Plugin.

Reblog this post [with Zemanta]
Veröffentlicht in Entwicklung, Featured | 2 Kommentare

PLATINUM PIED PIPERS

Platinum Pied Pipers 2
Image by Mick Ø via Flickr

Wirklich guter RnB, Soul und Hip Hop anders als der ganze Dirty South und Crunk der zur Zeit läuft. Ich frag mich eh wer sich so nen Zeug wie Lil Wayne und Lil Jon freiwillig gibt. Zugegebenermaßen ist es schon lustig mit den Homies auf Lil Jon abzugehen aber für Unterwegs oder zu Hause wäre das definitiv nichts für mich.

Wer auf guten souligen Hip Hop steht, muss sich definitiv mal Platinum Pied Pipers geben. Die Jungs sind aus Detroit und werden auch mal gelegentlich von ?uestlove von The Roots unterstützt.

Hier eine kleine Auswahl an Tracks.

[youtube _6VfCqN1gOA]
[youtube rDyt6zt7JS4]
[youtube V3Mn176kP4M]

Reblog this post [with Zemanta]
Veröffentlicht in Music, Real Life | Getagged , , , , | Kommentieren

Swoopo Auktionen und Schnäppchen

Ich bin heute in der Arbeit auf ein sehr interessantes Online-Auktionshaus gestoßen. Das Auktionshaus nennt sich swoopo, ehemals Telebid. Ein Unternehmen der Münchner Entertainment Shopping AG. Ich bin über das Partnerprogramm von Affilinet darauf gestoßen und muss wirklich zugeben, dass es sowohl für die Bieter als auch das Auktionshaus sehr gewinnbringend sein kann.

Doch zuerst einmal zum System. Wie funktioniert denn das Ganze?

Die Produkte

swoopo bietet eine große Auswahl an Produkte. Ob nun Computer, Videospielekonsolen, Notebooks, Navigationssysteme, Fernseher, Kameras oder Haushaltselektronik, nichts was nicht jeder irgendwann mal gebrauchen könnte. Zumindest die Auswahl schaut sehr interessant aus. Und der Ein oder Andere wird dort durchaus ein
Schnäppchen
erhaschen könne. Bei den Angeboten handelt es sich auch fast immer um sehr begehrte Ware. Zum Zeitpunkt des Artikels hatten die dann so tolle Sachen wie ne Playstation oder aber auch Nintendo Wiis. Im Unterschied zu den üblichen Online-Auktionshäuser untescheidet sich swoopo dadurch, dass die Produkte durch eigene Einkäufer verkauft werden. swoopo kauft also irgendwo die Produkte ein und stellt diese für einen geringes Startgebot in die Auktionsplattform.

Die Auktion

Wie funktioniert die Auktion ?

  1. Alle Auktionen starten bei 0 Euro
  2. Mit jeden Gebot steigert sich der Auktionspreis um bis zu 10 Cent
  3. Ein Gebot kostet 50 Cent
  4. Pro abgegebenes Gebot verlängert sich die Auktion um bis zu 20 Sekunden.
  5. Der letztbietende Teilnehmer erhält den Zuschlag sobald die Zeit abgelaufen ist.
  6. Die durschnittliche Ersparnis liegt bei 65% im Vergleich zur unverbindlichen Preisempfehlung
  7. Gebote werden entweder telefonisch oder online abgegeben

Ein Beispiel (entnommen aus der swoopo Website)

  • Nintendo Wii
  • Aktueller Preis: 84,10 Euro
  • Laufzeit: 13 Sekunden
  • Preis pro Bid: 50 Cent
  • Jeder Bid erhöht den Auktionspreis um 10 Cent und die Laufzeit um 10 Sekunden

Aus der Auktion lassen sich nun folgende Informationen entnehmen:

Der aktuelle Preis liegt bei 84,10 Euro. Also lief diese Auktion schon mindestens 841 Sekunden und 841 Gebote wurden abgegeben. Ein Bieter kann durchaus mal auch 3 oder mehr Gebote auf einen Schlag abgeben und damit die Laufzeit auch auf einen Schlag um 30 Sekunden erhöhen.In der Zeit hat Swooper schon 420 Euro verdient (841 Gebote * 0,50 Cent pro Bid).

Ein weiteres Beispiel:

  • Nikon D90 Gehäuse inkl. Objektiv
  • Aktueller Preis: 94,14
  • Laufzeit: 2:31 Sekunden
  • Preis pro Bid: 50 Cent
  • Jeder Bid erhöht den Auktionspreis um 1 Cent und die Laufzeit um 10 Sekunden

Aus der Auktion lassen sich nun folgende Informationen entnehmen:

Der aktuelle Preis liegt bei 94,14 Euro. Also lief diese Auktion schon mindestens 9414 Sekunden und 9414 Gebote wurden abgegeben.In der Zeit hat
Swoopo
schon 4707 Euro verdient (9414 Gebote * 0,50 Cent pro Bid).

Bietstrategien

Auch für
Swoopo
gelten ähnliche Bietstrategien wie für andere Online-Auktionshäuser. Zu allererst sollte man eine wirklich schnelle Internetverbindung haben, ich habe bei meinen Provider Fastpath aktiviert. Fastpath kommt eher aus der Spieleszene und ermöglicht besonderschnelle Verbindungen zum nächsten Knotenpunkt. Dieser Vorteil ist nicht nur beim Spielen von Vorteil sondern auch beim Bieten. Auch eine WLan Verbindung kann störend wirken. Durch das Verschlüsseln und Entschlüsseln der sicheren WLan Verbindung verliert man minimal Zeit. Bei einer Onlineauktionsplattform sicher ein nicht unwichtiger Punkt wenn es darauf ankommt, auf die letzte Sekunde genau zu bieten.

Programme, die eine ständige Last erzeugen sollten komplett deaktiviert werden. Nichts ist störender als wenn bei der gerade laufenden Auktion der Virenscanner mit einem PopUp aufgeht oder der Defragmentierer grade loslegt.

Zu einer Uhrzeit bieten, bei der nicht gerade Viele online sind, eventuell auch auf Nischen bieten, die dann doch gewinnbringend wieder verkauft werden können. Allgemein Produkte, die keine so große Nachfrage haben.

Das Unternehmen


Swoopo
ist ein Internet-Auktionshaus mit Sitz in München. Betrieben wird es durch die Entertainment Shopping AG. Derzeit sind mehr als 1.2 Millionen User registriert und pro Monat werden durchschnittlich 10,000 Produkte versteigert.



10 € Startgutschein bei swoopo.de


Veröffentlicht in Internet Marketing, Real Life, Social | Getagged | 2 Kommentare

Mit SSH auf das IPhone verbinden

Bereits seit Längerem ist es möglich, sein IPhone zu cracken bzw. sagen wir mal lieber jailbreaken wie es ja neuerdings genannt wird. Was sich so tolles mit einem gecrackten IPhone anstellen lässt findet der interessierte Nutzer in unzähligen Quellen. Eine simple Suche bei Google sollte die meisten Fragen beantworten.

Von mir hierzu nur ein Quote, gefunden bei maclife.de

Unter dem Begriff “Jailbreak” wird im Zusammenhang mit dem iPhone das Freischalten des Gerätes für die Installation von Drittanbieter-Software verstanden. Der allgegenwärtige iPhone Atlas hat nun noch einmal eine komplette Übersicht veröffentlicht, die das Vorgehen unter verschiedenen Firmware-Versionen des iPhone beschreibt. Alle Vorgehensweisen sollen zu dem gleichen Ergebnis führen: der Möglichkeit, Daten in das Dateisystem des iPhone zu schreiben und der Installation von installer.app, zum Katalogisieren von iPhone-Applikationen.

Eine nette Spielerei, insbesondere für den Alltag als Linux/Unixanwender ist der Remotezugriff auf das IPhone über SSH. Nicht nur, dass danach viele vertraute UNIX Befehle zur Verfügung stehen, nein es ist tatsächlich sogar möglich, über den aufgebauten SSH Tunnel, eine Internetverbindung aufzubauen. Zugegebenermaßen ein ziemlicher Overkill nur um ins Internet zu kommen aber der Versuch alleine ist es wert.

1. OpenSSH installieren

Damit eine Remoteverbindung aufgebaut wird, installiert man über das gecrackte IPhone mittels Cydia daie Pakete BSD Subsystem, Community Sources und OpenSSH. Die

OpenSSH
Image via Wikipedia

Installation verläuft ähnlich wie die Installation eines Paktektes mit Hilfe vom dem bereits aus Debian bekannten APT. Cydia versteht sich also als grafisches Frontend für die Paketverwaltung.

OpenSSH installiert einen SSH-Server auf dem IPhone und erlaubt es, sich remote auf das IPhone zu verbinden.

BSD Subsystem stellt den User auf dem IPhone eine Vielzahl an Anwendungen bereit, die Zugriff und Manipulation direkt auf dem IPhone via Kommandozeilentools erlauben.

2. SSH verbindung aufbauen

Um die SSH Verbindung aufzubauen, muss erstmal die IP vom IPhone herausgefunden werden. Ich benutze SBPrefs um sie mir anzuzeigen, alle Anderen können ja die IP aus den Settings ablesen. Jetzt muss openssh nur noch auf dem Iphone aktiviert werden. Auch das mache ich bequem mit SBPrefs und schon kann man sich bequem remote auf das IPhone einloggen.

#einloggen als root auf das iphone
#ssh root@IPADRESSE
ssh root@192.168.0.53
#das default passwort 'alpine' eingeben
password:alpine

3. Und nun?

Ja wer diese Frage selber nicht beantworten kann sollte sich schnellstmöglich wieder ausloggen, denn ihr befindet euch mit root-Rechten auf dem IPhone. Und damit lässt sich nicht nur allerhand tolles Zeug anstellen sondern auch ziemlich viel kaputt machen, alle Anderen können nun zum Beispiel:

4. Unixbefehle ausprobieren

Da das IPhone auf OSX basiert und OSX wiederum auf Darwin und Darwin ein UNIX Derivat ist, lassen sich auch zumindest die üblichen UNIX/Linux Befehle ausführen.

#cd um verzeichne zu wechseln
cd /private
#clear um den bildschirm zu leeren
clear
#df um aktuellen speicherverbrauch auf der platte anzuzeigen
df
#ls um dateien und verzeichnisse aufzulisten
ls -l

5. Dateien kopieren

Den einfachsten Zugriff auf das IPhone bekommt man mit einem SFTP Client. Unter Windows ist das WinSCP, Linux- und Unixbenutzer benutzen einfach eins der mitgelieferten Clients. Ich benutze Nautilus. Es lässt sich auch dank root-Reche auch ganz bequem Verzeichnisse und Dateien anlegen.

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

Linkspamming in Blogs

Who's The Dick Writing Comments On My Blog
Image by Laughing Squid via Flickr

Manchmal möchte man unter blackhat Askpekte gerne mal eine Seite oder ein Produkt besonders aggressiv bewerben (wobei ich spamming wirklich nicht unterstüze). Es sind aber harte Zeiten und es ist auf die Dauer wirklich anstrengend, Blogs zu finden, die sich für Linkspamming eignen.

Gut aber dass wir dank Google mit der richtigen Syntax all das finden, was wir brauchen. Wenn jemand nun eine Chatbox in seinem Blog eingebaut hat, die man auch schön mit Kommentare vollspammen kann, lässt sich dies ganz leicht mit folgenden Abfragen finden.

Cbox - allintext:[get a cbox]
Oggix - intext:"by. oggix.com"
Tagbox - "powered by tagbox"

Super Sache für schnelles Linkbuilding.

Reblog this post [with Zemanta]
Veröffentlicht in Internet Marketing, SEO | Getagged , , , , | 1 Kommentar

Apache 2, PHP und MySQL unter Ubuntu installieren

Apache 2, PHP und MySQL unter Ubuntu installieren

http://wiki.zum.de/images/thumb/8/8d/Ubuntu-logo-no-text.svg/153px-Ubuntu-logo-no-text.svg.png

Das Ubuntu Logo

Im folgenden zeige ich, wie man unter Ubuntu sehr schnell einen typischen LAMP Applikationssstack aufsetzen kann. LAMP ist ein Akronym und steht für Linux, Apache, MySQL und PHP.

Das folgende Tutorial wurde mit Ubuntu 8.10 durchgeführt. Es wird aber auch mit einer viel älteren Version funktionieren da sich die grundlegenden Befehle seit Jahren nie geändert haben. Obwohl die Installation relativ simpel ist, sollte dennoch ein Backup angelegt werden. Desweiteren übernehme ich auch keine Verantwortung und Support für nicht funktionierende Installationen oder abgeschossene Systeme.

Der Standarduser unter Ubuntu hat schon recht viele Privilegien, für folgende Aktionen werden aber administrative Rechte benötigt. Diese sind nur mit den Rechten eines Superusers möglich. Mit Hilfe des sudo-Befehls lassen sich Programme und Befehle mit administrativen Rechten ausführen.

Nachfolgend werden alle benötigten Programme direkt aus der Ubuntu Paketquellen installiert.

Apache installieren

Der Apache Webserver ist in so gut wie jeder Distribution über den Paketmanager verfügbar. Unter Ubuntu reichen folgende Befehle um den Apache zu installieren und zu starten.

sudo apt-get install apache2
sudo /etc/init.d/apache2 restart

Nach abgeschlossener Installation schnell den localhost anpingen oder direkt im Browser aufrufen um zu sehen, ob alles funktioniert. Die Installation ist erfolgreich wenn “It Works!” im Browser erscheint.

#Im Webbrowser folgende URL eingeben

http://localhost
It Works!

It Works!

Jetzt nur noch schnell die lästige Fehlermeldung im Terminal entfernen, die jedes mal erscheint, wenn Apache neu gestartet wird.

#im terminal
gksu gedit /etc/apache2/conf.d/fqdn
# diesen text eineben und speichern
ServerName localhost

PHP 5 installieren

1. Im Terminal folgendes eingeben

sudo apt-get install php5 libapache2-mod-php5

2. Nachdem die Installation abgeschlossen ist, muss der Apache Webserver neu gestartet werden damit Apache mit PHP 5 läuft.

# um den apache webserver neu zu starten
sudo /etc/init.d/apache2 restart

3. So, ich gehe nun davon aus, dass der Apache Webserver problemlos neu gestartet wurde. Nun ist es an der Zeit, zu testen ob PHP 5 überhaupt funktioniert.

# in das standard document root wechseln
cd /var/www
# testdatei anlegen
touch index.php
# phpinfo in die datei reinschreiben
echo ' > index.php'

4. Nun noch ein kleiner Check im Browser um zu überprüfen, dass auch wirklich alles funktioniert hat. Dafür einfach folgendes in den Browser eingeben:

# im browser in die adresszeile folgendes eingeben

http://localhost/index.php

5. Es sollten nun bei einer erfolgreichen Konfiguration zahlreiche Informationen zur bestehenden Installation auftauchen.

MySQL installieren

1. Im Terminal folgendes eingeben:

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

2. Am Ende der Installation wird man aufgefordert, ein admin passwort zu setzen. hier kann irgendwas eingegeben werden, man sollte sich aber das Passwort unbedingt merken. Das wars auch schon.

Reblog this post [with Zemanta]
Veröffentlicht in Administration, Tutorial | Getagged , , , , , , , , , , | 10 Kommentare

Skype unter Ubuntu installieren

So, mein System hat es mal wieder zerschossen. Nicht wirklich ohne dass ich nichts getan hätte :)

Skype Limited
Image via Wikipedia

Wie auch immer, mein Kommunikationsmittel der Wahl abseits von Outlook ist natürlich Skype. Leider gibt es unter Ubuntu Probleme Skype zu installieren, nicht dass dies so schwer wäre, nein es gibt da lizenzrechtliche Gründe dafür.

Aufgrund unterschiedlicher Rechtsverhalten in verschiedenen Ländern ist manche Software nicht in den allgemeinen Ubuntu-Quellen enthalten. Beispielsweise gelten in den Vereinigten Staaten Software-Patente, die in vielen anderen Ländern nicht gelten. Um Ubuntu-Nutzer zu befähigen, dort, wo es legal ist, solche Software zu installieren , wurde eine eigene Paketquelle geschaffen

Wie erfahrene Ubuntu- bzw. Debianbenutzer wissen, lassen sich über die Paketverwaltung ganz bequem Anwendungen installieren.

donbosco@desktop:# sudo apt-get install skype

Natürlich wird dies bei einer Out-Of-The-Box Installation nicht gehen weil Ubuntu dieses Paket in keinem entsprechenden Repositorie findet. Nützlicherweise wird abseits der offiziellen Paketquellen noch ein weiteres Projekt seitens der Community betreut. Das Projekt nennt sich Medibuntu und es handelt sich dabei im Grunde genommen um ein Repositorie für freie und unfreie Software aus dem Bereich Unterhaltung und Multimedia. Tja, da lässt sich doch sicherlich auch das geliebte Skype wiederfinden. Doch zuerst müssen die neuen inoffiziellen Paketquellen zur Paketverwaltung hinzugefügt werden. Klingt alles kompliziert, ist aber ein Kinderspiel. Einfach folgende Befehle in das Terminal einfügen.

Aktuelle Listen ziehen

donbosco@desktop:# sudo wget http://www.medibuntu.org/sources.list.d/feisty.list -O /etc/apt/sources.list.d/medibuntu.list

Paketliste zertifizieren und updaten

wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add - && sudo apt-get update

Skype installieren

do aptitude install skype

So, das wars. Skype sollte nun im Anwendungsreiter verfügbar sein. Sollte euch der Beitrag irgendwie geholfen haben oder ihr Verbesserungsvorschläge habt, bin ich natürlich über jeden Kommentar dankbar.

Reblog this post [with Zemanta]
Veröffentlicht in Administration, Tutorial | Getagged , , , , , , , , | 1 Kommentar