mijane Blog

ein paar interessante Sachen gibt es immer

Tastatur Layout für die Konsole ändern

Geschrieben von Peter Rother • Sonntag, 29. November 2009 • Kategorie: Tips und Tricks

Wenn man sich so wie ich an das deutsche Tastaturlayout gewöhnt hat, kann es doch ab und an ein bisschen dauern, bis man die richtige Tastenkombination auf einer amerikanischen Tastatur gefunden hat.

"Tastatur Layout für die Konsole ändern" vollständig lesen

Tags für diesen Artikel:
Tweet This!Tweet This!

Singleton sucks

Geschrieben von Peter Rother • Mittwoch, 25. November 2009 • Kategorie: Design Pattern

So könnte der Titel dieses Beitrags heißen, wenn ich das Singleton Pattern nicht doch mögen würde. Wie sich aber in der letzten Zeit herausgestellt hat, zählt es  bald nicht mehr zu den Design Patterns. Ich hatte zu dem Thema vor ein paar Wochen schon eine Diskussion mit Kore Nordmann. Er vertrat den Standpunkt, dass Singelton ein Anti - Pattern darstellt, ich vertrat meine Meinung, dass Singleton doch kein Anti – Pattern sei und wie sinnvoll es doch zu nutzen sei.

"Singleton sucks" vollständig lesen

Tags für diesen Artikel:
Tweet This!Tweet This!

Fluent Interface

Geschrieben von Peter Rother • Mittwoch, 7. Oktober 2009 • Kategorie: Design Pattern

Mittlerweile habe ich das Fluent Interface Pattern für mich gewinnen können. Anfangs sah ich die ganze Sache doch ein wenig skeptisch aber inzwischen könnte ich ohne diese und ein paar andere Pattern kaum noch arbeiten. Aber was sind eigentlich Fluent Interfaces?

"Fluent Interface" vollständig lesen

Tags für diesen Artikel:
Tweet This!Tweet This!

Spike-Solution des OXID eShops + Zend Framework verfügbar

Geschrieben von Peter Rother • Donnerstag, 24. September 2009 • Kategorie: OXID
Seit gestern ist die Spike - Solution des OXID eShops und dem Zend Framework verfügbar. OXID eSales probiert nun das Zend Framework in das Shop System einzubinden. Da ich seit mittlerweile über 3 Jahren (wie die Zeit vergeht) mit dem OXID Shop arbeite und mich mittlerweile auch in das Zend Framework eingearbeitet habe, möchte ich euch hier mal meine Meinung dazu mitteilen. Ich hatte es gestern und heute schon bei uns in der Firma (der anzido GmbH, die momentan übrigens neue PHP Programmierer sucht, ja ein bisschen Werbung muss sein) angesprochen, welche "Komponenten" des Zend Frameworks man ohne Probleme in den OXID Shop integrieren könnte.

 

"Spike-Solution des OXID eShops + Zend Framework verfügbar" vollständig lesen

Tags für diesen Artikel: , ,
Tweet This!Tweet This!

Neue Kategorie Frameworks eingeführt

Geschrieben von Peter Rother • Samstag, 19. September 2009 • Kategorie: Frameworks

Da ich schon länger mit dem OXID Framework ( ja es ist ein eigenes Framework und nicht nur ein Shop System ) arbeite und ich mich zurzeit auch in andere Frameworks, wie dem Zend Framework und den eZ Components einarbeite, kam mir die Idee hier doch mal ein bißchen über diese Frameworks zu erzählen.

Die arbeit an meinem eigenem kleinen Framework, habe ich aus Zeitmangel erst einmal eingestellt. Ich werde damit mit Sichheit irgendwann weiter machen, doch wann ist bisher noch unklar.

Da ich euch aber meine Erkenntnisse und Tips mit bereits genannten Frameworks nicht vor enthalten möchte, werde ich ab und an ein wenig darüber erzählen.

PS: mit diesem Beitrag sollte auch meine lange Abwesenheit wieder beendet sein ;-)



Tags für diesen Artikel: , , ,
Tweet This!Tweet This!

Friend of a Friend

Geschrieben von Peter Rother • Samstag, 6. Juni 2009 • Kategorie: Klassen
Heute möchte ich euch eine kleine Klasse von mir vorstellen, die die Verbindung von einem User über Verbindungen zu anderen Usern bis zum gesuchten User erstellt. Diese Funktion ist manchen vielleicht von Xing oder anderen Netzwerken bekannt.


Da ich zuerst zu faul war die Klasse selber zu schreiben, habe ich gewartet bis jemand meinem Wunsch nachkommt und diese Klasse auf PHP hates me vorstellt. Dies ist dann auch durch den Beitrag von Ludwig Ruderstaller in dem Beitrag Six Degrees of Separation (friend of a friend) geschehen. Leider konnte ich, wie nach anfänglicher Euphorie festgestellt, die Klasse für das von mir benötigte nicht einsetzen. Der Dijkstra-Algorithmus ist, wie ich finde, hier fehl am Platz. Trotzdem einen Dank an den Entwickler der Klasse Ludwig Ruderstaller, denn wir wissen ja alle, wie viel Arbeit eine vernünftige Klasse manchmal machen kann.


Aber da ich die Klasse jetzt für das was ich benötige neu geschrieben habe, möchte ich euch diese jetzt auch vorstellen. Da ich immer noch keinen vernünftigen Syntax Highlighter installiert habe, könnt ihr euch die Klasse momentan nur als Text File ansehen. Die Klasse ist aus meinem aktuellen Projekt Pokerwelt24, welches in Kürze in die offene Beta Phase gehen wird. Die Klasse ist deshalb auch nicht als Stand Alone angepasst. Mit ein Paar kleinen Änderungen solltet ihr die Klasse auch auf eure Wünsche anpassen können.


Hier ein Auszug der Methoden die Standardmäßig nicht von der Klasse benötigt werden:


private function getUniqueRequiredUsers($aUserPaths)
private function removeNotRequiredLoadIds()
private function loadRequiredUsers()
private function regenerateUserList($aUserList)


Ich benötige diese Methoden, um die entsprechenden User Objekte zu generieren und diese meiner Liste zuzuweisen.
Natürlich braucht ihr auch noch eine Verbindung zur Datenbank. In meiner Klasse passiert dies durch den Aufruf von:


parent::execute($sSelect);


Ich schätze aber mal, dass jeder von euch weiß, wie ihr eure Datenbank ansprechen müsst.


Eine kleine Feinheit hat der Query auch noch; es werden nur User Verbindungen gesucht, wobei eine Verbindung von zwei Usern auch bestätigt wurde. Dies wird in der Datenbank durch das Flag status und status2 bestimmt.


Hier folgt noch die Struktur der Datenbank und dann wünsche ich euch viel Spaß und Erfolg mit dieser Klasse.


CREATE TABLE `buddy_list` (
`ID` varchar(32) collate latin1_general_ci NOT NULL,
`USER_ID` varchar(32) collate latin1_general_ci NOT NULL,
`USER_ID_2` varchar(32) collate latin1_general_ci NOT NULL,
`STATUS` enum('a','r','w') collate latin1_general_ci NOT NULL COMMENT 'a = accepted, r = rejected, w = waiting',
`STATUS_2` enum('a','r','w') collate latin1_general_ci NOT NULL COMMENT 'a = accepted, r = rejected, w = waiting',
`CREATED` datetime NOT NULL,
PRIMARY KEY (`ID`),
KEY `USER_ID` (`USER_ID`),
KEY `USER_ID_2` (`USER_ID_2`)
)


Die Verknüpfung zur User Tabelle erfolgt über USER_ID für den der anfragt und USER_ID_2 für die Person, an die der Request geht.


 


 


Tags für diesen Artikel: ,
Tweet This!Tweet This!

Mal wieder ein Lebenszeichen

Geschrieben von Peter Rother • Mittwoch, 3. Juni 2009 • Kategorie: Aktuelles

Ich wollte euch doch einmal wissen lassen, dass ich noch lebe. Die letzten Monate waren doch ein wenig stressig, so das ich nicht wirklich dazu gekommen bin, hier mal wieder etwas zu schreiben.

Es liegen aber noch etliche neuen Beiträge in der Pipeline, die ich auch gerne mal nach außen tragen möchte. Die Themen sind wie ich finde ziemlich interessant und auch lesenswert. Ich hoffe mal das ich am Wochenende endlich mal wieder dazu komme eine neuen Beitrag zu schreiben(obwohl da gibt es hier ein riesen Fest... dann schreibe ich ebend morgens). Außerdem soll die phpDocumentor Serie auch mal wieder weiter gehen.


Tweet This!Tweet This!

anzido Akademie

Geschrieben von Peter Rother • Montag, 16. März 2009 • Kategorie: Aktuelles


Heute muss ich doch mal etwas über meine Firma schreiben. Die anzido GmbH hat seit Kurzem auch einen eigenen Schulungsbetrieb im Bereich PHP, mySQL und OXID. Wir werden ab jetzt in ausgewählten Kursen Interessenten den Einstieg in das Shop System OXID, sowie in die Programmiersprache PHP ermöglichen. Die Kurse sind an Anfänger und Fortgeschrittene gerichtet, die sich in die Themen PHP, mySQL und OXID einarbeiten möchten. Dabei gehen die Kurse von PHP Basics, bis hin zu fortgeschrittenen Themen wie OOP. Der Themen Bereich wird stetig erweitert und die Schulungen werden von Dozenten vorgenommen, die sich seit etlichen Jahren mit diesen Themen beschäftigen.

Unsere Schulungsräume befinden sich in Dortmund und sind gut mit dem Auto oder öffentlichen Verkehrsmittlen zu erreichen. Die Räume sind klimatisiert und mit einem Aufenthaltsraum inklusive Teeküche ausgestattet. Ich würde mich freuen, den Einen oder Anderen von euch bei uns begrüßen zu dürfen und vielleicht auch mit einem Vortrag von mir zu erfreuen.



Tags für diesen Artikel: ,
Tweet This!Tweet This!

Magische Methoden

Geschrieben von Peter Rother • Montag, 23. Februar 2009 • Kategorie: PHP

Mit PHP 5 wurden auch die magischen Methoden (Interzeptormethoden) eingeführt. Diese Methoden werden dann aufgerufen, wenn eine Aktion auf ein Objekt ausgeführt werden soll und diese Aktion von einer magischen Methode begleitet wird. Es wird dann probiert die entsprechende magische Methode auszuführen, diese muss aber in der Klasse oder der eventuell abgeleiteten Klasse zur Verfügung stehen. Hier findet ihr nun eine Übersicht welche magischen Methoden zur Verfügung stehen und in welchen Fall diese aufgerufen werden. Da diese Methoden schon länger zur Verfügung stehen, werde ich hiermit eine kleine Einleitung schaffen und euch in weiteren Beiträgen zeigen, wie diese Methoden sinnvoll genutzt werden können.

__construct(): wird immer aufgerufen wenn eine neues Objekt einer Klasse instanziert wird.

__destruct(): ist das Gegenteil von __construct() und wird ausgeführt wenn ein Objekt zerstört wird.

__call(): falls eine Methode aufgerufen wird die nicht deklariert ist, wird probiert __call() anzuwenden. __call($sMethodenName, $parameter) nimmt als erstes die aufgerufene Methode und als zweites die Methoden Parameter an.

__get(): greift wenn auf eine nicht vorhandene Objekt Eigenschaft zugegriffen werden soll. Es steht hier der Name der Eigenschaft zur Verfügung.

__set(): auf __set() wird zugegriffen, wenn einer nicht vorhandenen Objekt Eigenschaft ein Wert zugewiesen werden soll. __set() bekommt als Parameter den Namen der Eigenschaft, sowie den zugewiesenen Wert übergeben.

__isset(): wird durch isset() und empty() ausgeführt().

__unset(): wird durch die PHP Funktion unset() aufgerufen.

__sleep(): wird vor einer Serialisierung eines Objektes ausgeführt. Der Aufruf erfolgt somit bei einem Aufruf von serialize($oMeinObjekt).

__wakeup(): das Gegenstück von __sleep() wird durch unserialize() ausgeführt.

__toString(): sollte probiert werden ein Objekt in einen String zu verwandeln, wird diese magische Methode aufgerufen.

__set_state(): wird aufgerufen falls ein Objekt mit var_export() aufgerufen wird.

__clone(): bei dem Versuch ein Objekt mit clone() zu kopieren, wird die magische Funktion __clone() aufgerufen.

__autoload(): wird aufgerufen, wenn ein Objekt einer Klasse erzeugt werden soll, diese Klasse aber nicht deklariert ist. Hierbei ist zu beachten das __autoload() standardmäßig als normale Funktion aufgerufen wird und nicht als Objekt Methode. __autoload kann über Umwege auch als Objekt Methode aufgerufen werden; dazu in einem anderen Beitrag mehr.

Hier habt ihr nun alle magischen Methoden sowie deren Aufrufe. Die Methoden gibt es zwar schon länger, da ich diese Methoden aber nicht mehr missen möchte, wollte ich diese einmal aufführen.

Tags für diesen Artikel: , ,
Tweet This!Tweet This!

Blog Kommentare

Geschrieben von Peter Rother • Mittwoch, 18. Februar 2009 • Kategorie: Aktuelles

Zum Glück wies mich Dominik darauf hin, dass die Kommentar Funktion nicht mehr funktioniert, sobald das Captcha aktiviert ist (dies passiert momentan nach sieben Tagen nach Artikel Erstellung). Eigentlich wollte ich die Funktion schon debuggt haben, fühle mich momentan aber ein wenig bescheiden, so das ich dies noch nicht geschafft habe. Als ich das Captcha aber deaktiviert habe kammen auch schon die ganzen Spammer. Die Moral von der Geschit das Captcha ist erstmal wieder ein geschaltet und ich werde die Funktion am Samstag debuggen um euch das kommentieren von älteren Artikel wieder zu ermöglichen.
Tweet This!Tweet This!