Sorry for the language change but at the moment it’s just way more convenient for me ;)
Since Tobi blogged about the Zend Framework some time ago, I was tempted to try it for myself again and I’m really impressed by the improvements between versions 0.9.x/1.0 and 1.6 (Download). The whole framework has become easier to handle and better structured despite offering a huge number of components.
I lately became a very big fan of object relational mapper frameworks because it fits pretty much every task I had to face by now and allowed me to avoid writing SQL statements and repeatedly mapping it objects (damn, I’m a lazy programmer ;). Therefore I was a little dissapointed to discover that the Zend_Db component is not an ORM layer in my understanding of this technology.
Fortunately I followed the development of a very powerful ORM for PHP named Doctrine which became stable not a long time ago.
There are many articles on how to include Doctrine as your model in the Zend Framework (ZF) but due to the rapid development of both frameworks most of them are already outdated (and I guess that this article will suffer the same fate pretty soon, too, even though both frameworks are very mature in my opinion).

I decided to write a tutorial on how to connect Doctrine and ZF by adapting the original quick start tutorial and - as I like it to do with my blog tutorials - splitting it up in multiple parts. The first part will be about the installation, putting both frameworks together and performing the basic steps. The next part will deal with the GuestBook demo from the ZF tutorial.

weiterlesen …

  ,
am 17. Nov 2008 (04:53) von Daff

Alle Jahre wieder kommt ein neues Eclipse Release. Es ist zwar schon etwas her, aber manchmal ist es auch nicht schlecht etwas zu warten bis alle verwendeten Plugins angepasst worden sind.
Die Installation meiner Lieblingskombintation mit den EE Tools, PDT und Aptana ist noch etwas umständlich, dafür bekommt man aber die aktuellsten Versionen.
Folgende Schrittemusste ich für die Lauffähige Version vornehmen:
Download Eclipse 3.4 Classic (notwendig für Integration von Aptana)
Befolgen der auf HowToForge beschriebenen Schritte.
Für PDT habe ich den Integration build vom 22.07.2008 geladen (die Abhängigkeiten der neueren Builds waren mir nicht ganz klar).
Für die Installation von Aptana einfach wieder der Anleitung inkl. der Eclipse 3.4 Schritte folgen.

  , , , , ,
am 19. Sep 2008 (20:35) von Daff

Ich kann nicht genau sagen, ob die Dokumentation für eigene Hibernate Sequence (Primary Key) Generatoren für mich zu überladen, zu spärlich oder einfach nichtssagend war, jedenfalls war es im Endeffekt wesentlich einfacher was zum laufen zu bekommen, als das Beispiel vermuten lässt:

JAVA:
  1. package com.example.customid;
  2.  
  3. import java.io.Serializable;
  4. import java.util.Date;
  5. import java.util.Random;
  6.  
  7. import org.hibernate.HibernateException;
  8. import org.hibernate.engine.SessionImplementor;
  9. import org.hibernate.id.AbstractUUIDGenerator;
  10.  
  11. public class CustomGeneratorextends AbstractUUIDGenerator
  12. {
  13.     @Override
  14.     public Serializable generate(SessionImplementor arg0, Object arg1) throws HibernateException
  15.     {
  16.         // Generate some custom pseudo random stuff
  17.         return Long.toHexString(new Long(new Date().getTime() + new Random().nextInt(1000)));
  18.     }
  19. }

Der generierte Wert taugt natürlich rein gar nichts als echte unique ID, zeigt aber hoffentlich ein etwas übersichtlicheres Beispiel auf dem man aufbauen kann.

Eine Beispielklasse, die die Hibernate Annotations zur Konfiguration verwendet sieht dann so aus:

JAVA:
  1. package com.example.customid;
  2.  
  3. import javax.persistence.GeneratedValue;
  4. import javax.persistence.Id;
  5.  
  6. import org.hibernate.annotations.GenericGenerator;
  7.  
  8. public class Dummy
  9. {
  10.     private String id;
  11.  
  12.     /**
  13.      * @return the id
  14.      */
  15.     @Id @GeneratedValue(generator="test")
  16.     @GenericGenerator
  17.     (
  18.             name = "test",
  19.             strategy = "com.example.customid.CustomGenerator"
  20.     )
  21.     public String getId()
  22.     {
  23.         return id;
  24.     }
  25.  
  26.     /**
  27.      * @param id the id to set
  28.      */
  29.     public void setId(String id)
  30.     {
  31.         this.id = id;
  32.     }
  33. }

  ,
am 25. Jul 2008 (10:16) von Daff

Im dritten und letzten Teil des Subversion HowTo's geht es nun dadrum die konfigurierte Web Darstellung etwas zu verschönern und zu erweitern.
Die schönste und einfachste Variante habe ich in Reposstyle gefunden, wo man von der Seite die aktuellste Version (2.0b funktioniert bei mir tadellos) laden sollte und den Inhalt nach /home/svn/repository/ entpackt.
Um den Ordner mit den Dateien verfügbar zu machen muss nun zuerst einmal der Alias /repos-web in der Apache Konfiguration gesetzt werden:

Alias /repos-web /home/svn/repository/repos-web/
<Directory /home/svn/repository/repos-web/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Ebenfall in der Konfiguration muss die Location Direktive für das SVN um die Zeile

SVNIndexXSLT "/repos-web/view/repos.xsl"

erweitert werden.
Nun sollte nach einem Webserver Neustart das Repository schon in neuem Glanz erscheinen.

Ein weiteres nettes Feature von Reposstyle ist die Anzeige der letzten History Einträge mit einem PHP Skript.
Dazu muss man die /home/svn/repository/repos-web/open/log/index.php editieren und die Variable in unserem Fall auf

$repo = "file:///home/svn/repository/";

setzen.
Dort sieht man dann mit einem Klick auf Folder history die letzten x (Anzahl ebenfalls in der index.php über die Variable $limit einstellbar) Commit Einträgen inklusive Kommentaren und den aktualisierten Dateien. Meiner Meinung nach ein sehr nützliches Feature fürs Repository Browsing.

  ,
am 11. Jul 2008 (20:59) von Daff

Nachdem jetzt wie im ersten Teil aufgezeigt Subversion inkl. Repository laufen und auch schon rudimentär über den Apachen serviert werden hier der nächste Teil, in dem die anständige Userauthentifizierung erklärt werden soll.

1. Subversion Authentifizierung über MySQL

Das Modul für die Authentifizierung gegen MySQL gibt es nicht im Etch Repository deshalb gehts hier ans muntere Kompilieren. Für die Kompilierung und Aktivierung von mod_auth_mysql hat matthias von adminlife.net ein tolles Tutorial geschrieben, das bei mir auf Anhieb funktionert hat und zu dem es eigentlich nicht mehr viel hinzuzufügen gibt. Nur das AuthMySQLUserCondition "active = 1" sollte man rausnehmen, wenn es die Spalte nicht gibt ;).

In Kombintation mit Subversion sieht die Einstellung dann so aus (Authentifizierungsinformationen werden hier aus der Datenbank userdb, der Tabelle users und den spalten username und password genommen):


<Location /svn>
DAV svn
SVNPath /home/svn/repository
AuthName "Subversion"

AuthType Basic
AuthBasicAuthoritative Off
AuthGroupFile /dev/null
AuthUserFile /dev/null
AuthMySQLEnable On
AuthMySQLHost localhost
AuthMySQLUser sqluser
AuthMySQLPassword password
AuthMySQLDB userdb
AuthMySQLUserTable users
AuthMySQLNameField username
AuthMySQLPasswordField password
# MD5 Verschlüsselung der Spalte mit dem Passwort ist natürlich sinnvoll
AuthMySQLPwEncryption md5

AuthMySQLAuthoritative On
require valid-user
</Location>

2. Authentifizierung über die User Accounts

Obwohl die Authentifizierung per Datenbank natürlich die meist eleganteste Lösung ist sei hier noch die Möglichkeit vorgestellt sich gegen die Linux Useraccount zu authentifizieren, was z.B. zum Einsatz kommen kann, wenn man von CVS auf Subversion umstellt.
Dazu kommt hier das Apache Module mod_auth_shadow zum Einsatz. Für die Kompilierung sei erwähnt, dass sich z.B. unter SuSe apxs2 nicht im voreingestellten Ordner des Makefiles befindet, weshalb dieser angepasst werden muss.
Das Debian Package für das Modul gibt es mit
apt-get install libapache-mod-auth-shadow

Nach der Installation geschieht die Konfiguration für das Subversion repository wie folg:


<Location /svn>
DAV svn
SVNPath /home/svn-user/svnroot
AuthBasicAuthoritative Off
AuthName whateveryoulike
AuthShadow on
AuthType Basic
require valid-user
</Location>

Nach einem Apache Neustart sollte es nun möglich sein sich mit einem Linux Account zu authentifizieren.

3. Schreibrechte für den Apache

Nun müssen noch dem Apache User (da dieser ja beim Zugriff über HTTP eventuell auch auf das Repository schreibt) dort auch die Schreibrechte erteil werden. Am einfachsten so:
linux:~# chown -R www-data:www-data /home/svn/repostiory

Nachdem der Zugriff jetzt richtig funktioniert sollte geht es dann im letzten Teil um eine einfache Möglichkeit die Browseransicht der Subversion Repositories zu verschönern und zu erweitern.

  ,
am 29. Jun 2008 (22:56) von Daff
Next Page »
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: