<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Guggat emol Blog &#187; Entwicklungsrechner Setup</title>
	<atom:link href="http://www.baldenhofer.eu/blog/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.baldenhofer.eu/blog</link>
	<description>Roland bloggt über IT, Programmieren und Linux</description>
	<lastBuildDate>Tue, 25 Oct 2011 22:53:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Entwicklungsrechner Setup</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsrechner-setup</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsrechner-setup#comments</comments>
		<pubDate>Wed, 03 Aug 2011 22:41:38 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2144</guid>
		<description><![CDATA[Ich habe zwar schon beschrieben wie du Eclipse für PHP installieren kannst, aber irgendwie fehlt jetzt noch die ganze Installation von Apache, MySQL und PHP. Das muss ich schnell mal nachholen. Heute beschreibe ich also die Installation der in der Komponentenübersicht rot markierten Elemente. Mit Synaptic, dem Paketmanager von Ubuntu, ist die Installation kinderleicht. PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe zwar schon beschrieben wie du Eclipse für PHP installieren kannst, aber irgendwie fehlt jetzt noch die ganze Installation von Apache, MySQL und PHP.<br />
Das muss ich schnell mal nachholen.<br />
Heute beschreibe ich also die Installation der in der Komponentenübersicht rot markierten Elemente.</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/Komponentenuebersicht-PHP-Apache-MySQL-Installation.png"><img class="alignnone size-full wp-image-2145" title="Komponentenuebersicht-PHP-Apache-MySQL-Installation" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/Komponentenuebersicht-PHP-Apache-MySQL-Installation.png" alt="" width="696" height="873" /></a></p>
<p>Mit Synaptic, dem Paketmanager von Ubuntu, ist die Installation kinderleicht.</p>
<h3>PHP Installation</h3>
<p>Ich habe hier einen Screenshot meiner installierten PHP-Komponenten gemacht.</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/php-installation.png"><img class="alignnone size-large wp-image-2146" title="php-installation" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/php-installation-1024x254.png" alt="PHP-Installation" width="1024" height="254" /></a></p>
<p>Wähle bitte php-5 und php5-mysql aus. Die restlichen Pakete müssten dann mit angezogen werden.</p>
<h3>MySQL Installation</h3>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/mysql-installation.png"><img class="alignnone size-large wp-image-2147" title="mysql-installation" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/mysql-installation-1024x337.png" alt="MySQL Installation" width="1024" height="337" /></a></p>
<p>Wenn du mysql-server auswählst, wird der Rest entsprechend mit angezogen.<br />
Bei der Installation wirst du nach einem root-Passwort gefragt. Dies ist dein Root-Passwort für den DB-Server. Wähle eins und merke es dir. In der Demoinstallation werden wir zuerst den User root und sein Passwort verwenden. Wenn du das später ändern willst, ist das ein Artikel für sich <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Apache2 Installation</h3>
<p>Auch das ist kinderleicht.<br />
Hier meine installierten Pakete:</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/apache-installation.png"><img class="alignnone size-large wp-image-2148" title="apache-installation" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/apache-installation-1024x374.png" alt="Apache Installation" width="1024" height="374" /></a><br />
Wenn du das Paket apache2 auswählst, sollte eigentlich alles von alleine laufen.</p>
<p>Nach der Installation dieser Pakete können wir uns wieder um die eigentliche Applikationsentwicklung kümmern.<br />
Juchhu! Drei Komponenten sind beschrieben. Das geht doch voran gelle? <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsrechner-setup/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Entwicklungsumgebungs-Setup für die Gewichsapplikation, Eclipse Setup</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-eclipse-setup</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-eclipse-setup#comments</comments>
		<pubDate>Mon, 25 Jul 2011 07:39:38 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2116</guid>
		<description><![CDATA[Ich habe mit den Anwendungsfällen (Personen Anwendungsfälle, Gewichts-Anwendungsfälle) beschrieben was ich mit der Gewichtsapplikation realisieren will. Mittlerweile wissen wir also schon deutlich genauer was wir alles umsetzen wollen. Damit wir mit CakePHP die Applikation erstellen können, müssen wir uns nun unsere Entwicklungsumgebung einrichten. Ich beschreibe hier die Entwicklungsumgebungs-Konfiguration für Apache-Webserver, MySQL, CakePHP 1.3 und Eclipse [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe mit den Anwendungsfällen (<a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-person-verwalten">Personen Anwendungsfälle</a>, <a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-gewicht-verwalten">Gewichts-Anwendungsfälle</a>) beschrieben was ich mit der Gewichtsapplikation realisieren will. Mittlerweile wissen wir also schon deutlich genauer was wir alles umsetzen wollen.<br />
Damit wir mit <a href="http://cakephp.org/">CakePHP</a> die Applikation erstellen können, müssen wir uns nun unsere Entwicklungsumgebung einrichten.<br />
Ich beschreibe hier die Entwicklungsumgebungs-Konfiguration für <a href="http://httpd.apache.org/">Apache-Webserver</a>, <a href="http://www.mysql.de/">MySQL</a>, CakePHP 1.3 und <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/R/eclipse-php-helios-linux-gtk-x86_64.tar.gz">Eclipse Helios für PHP Entwickler.</a> Das verwendete Betriebssystem ist ein aktuelles Lubuntu (Ubuntu-Distribution).<br />
Falls ihr Windows verwendet, oder andere Linux Distributionen, werden sich mindestens die Einträge in /etc/apache2 variieren. Ihr findet aber im Netz genügend Anleitungen wie die jeweiligen Konfigurationen anzuwenden sind.</p>
<p>Eclipse Grundinstallation<br />
Ich habe Eclipse for <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/R/eclipse-php-helios-linux-gtk-x86_64.tar.gz">PHP Developers </a>heruntergeladen und installiert. Dieses Bundle ist nicht das neue Indigo Eclipse. Wenn ihr das haben wollt, dann müsst ihr PHP als Plugin hinzufügen.<br />
Das von mir verwendete Bundle ist für PHP Entwickler zugeschnitten und kann leicht installiert werden.</p>
<div id="attachment_2118" class="wp-caption alignnone" style="width: 575px"><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/eclipse_about1.png"><img class="size-full wp-image-2118" title="eclipse_about" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/eclipse_about1.png" alt="" width="565" height="333" /></a><p class="wp-caption-text">Eclipse About</p></div>
<p>Wenn ihr die PHP-Erweiterungen nicht über das Bundle in eure bestehende Eclipse Umgebung einbinden wollt, müsst ihr mindestens WTP (Eclipse Webtools Platform) und die PHP Erweiterungen herunterladen und installieren. Das kann eventuell zu Problemen (Abhängigkeiten zwischen Paketen) führen. Ich empfehle daher, einfach das Bundle zu verwenden. Eventuell könnt ihr ja alles in einer virtuellen Maschine betreiben, dann versaut ihr nicht eure Standardkonfiguration.</p>
<h3>Wechseln in die PHP-Perspektive</h3>
<p>Nachdem Eclipse soweit installiert ist, könnt ihr in die Perspektive für PHP Entwicklung wechseln:<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/perspektive_php.png"><img class="alignnone size-full wp-image-2119" title="perspektive_php" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/perspektive_php.png" alt="Auswahl PHP Perspektive" width="414" height="329" /></a><br />
Wenn du in diese Perspektive gewechselt hast, sollte die Oberfläche ähnlich wie in dem hier abgebildeten Screenshot aussehen.</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/php_perspektive.png"><img class="alignnone size-full wp-image-2120" title="php_perspektive" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/php_perspektive.png" alt="PHP Perspektive" width="965" height="147" /></a></p>
<p>Auf der linken Seite befinden sich diverse Tabs mit denen die PHP-Dateien, und deren Struktur, unterschiedlich betrachtet werden können.</p>
<ul>
<li>Der PHP Explorer stellt die PHP-Dateien und die PHP-Projektstruktur dar..</li>
</ul>
<ul>
<li>Die Type-Hierachie verwende ich in diesem Kontext vorerst nicht.</li>
</ul>
<ul>
<li>Outline zeigt dir die Struktur einer Klasse an und bietet eine schnelle Möglichkeit auf die darin befindlichen Attribute und Methoden zugreifen zu können. Beispielsweise habe ich hier eine Klasse geöffnet und du kannst die Struktur der Klasse gut erkennen.</li>
</ul>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/outline1.png"><img class="alignnone size-large wp-image-2122" title="outline" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/outline1-1024x350.png" alt="Outline View" width="1024" height="350" /></a></p>
<ul>
<li>In Navigation werden nicht nur die PHP-Dateien sondern auch versteckte Dateien wie .htaccess usw. dargestellt. Wenn du also eine Datei im PHP Explorer nicht sehen  kannst, dann verwende den Navigation Tab.</li>
</ul>
<h3>Kurz zur Erinnerung</h3>
<p>Eclipse ist ein Framework dass unzählige Programmiersprachen und Editoren bereitstellt. Eine Perspektive erlaubt es, die Ansichten entsprechend zu konfigurieren, dass z.B. die *.php Dateien sinnvoll angezeigt werden.<br />
In der PHP-Ansicht werden also die Werkzeuge dargestellt, die ihr für die PHP Entwicklung benötigt. Dagegen werden in der Subversion-Ansicht nur die Werkzeuge dargestellt, die für die Verwaltung von Subversion benötigt werden und bei der Java-Ansicht entsprechend die Java-bezogenen Werkzeuge.<br />
So kann mit einem grundsätzlich identischen Vorgehen auf unterschiedliche Bedürfnisse eingegangen werden.</p>
<h3>Neue Projekt (weightapplication) anlegen</h3>
<p>Wir sind im PHP Explorer und können mit der rechten Maustaste das Kontextmenü neues Projekt auswählen. (<strong>New-&gt;PHP Project</strong>)</p>
<p>Über <strong>File-&gt;New-&gt;PHP Project</strong> kommst du dort auch hin.<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/eclipse_project_setup.png"><img class="alignnone size-full wp-image-2123" title="eclipse_project_setup" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/eclipse_project_setup.png" alt="Eclipse Project Setup" width="613" height="744" /></a></p>
<p>&nbsp;</p>
<p>Der Name des neuen Projekts soll <strong>weightapplication</strong> lauten. Ich verzichte hier auf Unterstriche oder Bindestriche (also nicht weight_application) da dies unter Umständen zu Konfigurationsschwierigkeiten in anderen Bereichen (Apache usw.) führen kann. Natürlich kannst du auch einen anderen Namen nehmen, für dieses Beispielprojekt sollte das jedoch so ausreichen.<br />
Du kannst sehen, dass ich in meinem <strong>/home/roland</strong> Verzeichnis einen Unterordner <strong>workspace</strong> habe. Hier liegen all meine Eclipse Projekte drin. Falls du eine andere Struktur vorsiehst, kannst du das entsprechend ändern.</p>
<p>Jetzt haben wir eine Entwicklungsumgebung und ein neues, leeres PHP-Projekt in dem wir unsere Gewichtsapplikation einschreiben können.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-eclipse-setup/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>miradlokit, ein Webapplikations Baukasten</title>
		<link>http://www.baldenhofer.eu/blog/guggat_emol/miradlokit-ein-webapplikations-baukasten</link>
		<comments>http://www.baldenhofer.eu/blog/guggat_emol/miradlokit-ein-webapplikations-baukasten#comments</comments>
		<pubDate>Tue, 31 Aug 2010 04:16:36 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Guggat emol]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[webapplikation]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1980</guid>
		<description><![CDATA[Unser größtes &#8220;Hobby&#8221; bei miradlo ist zur Zeit die Erstellung eines Baukasten für die Erstellung von Webapplikationen. Diesen Baukasten benötigen wir, da wir bei miradlo für unsere Kunden diverse Webauftritte mit unterschiedlichsten Funktionalitäten erstellen. Gemeinsam haben diese Webauftritte, dass sie aus den unterschiedlichsten Basiskomponenten bestehen und immer um spezielle Eigenschaften erweitert werden müssen. Beispiele für [...]]]></description>
			<content:encoded><![CDATA[<p>Unser größtes &#8220;Hobby&#8221; bei miradlo ist zur Zeit die Erstellung eines Baukasten für die Erstellung von Webapplikationen.<br />
Diesen Baukasten benötigen wir, da wir bei <a href="http://miradlo.de">miradlo</a> für unsere Kunden diverse Webauftritte mit unterschiedlichsten Funktionalitäten erstellen.<br />
Gemeinsam haben diese Webauftritte, dass sie aus den unterschiedlichsten Basiskomponenten bestehen und immer um spezielle Eigenschaften erweitert werden müssen.</p>
<h3>Beispiele für unterschiedliche Funktionen bei Webauftritten</h3>
<p>In letzter Zeit werden sehr häufig folgende Funktionen gewünscht:</p>
<h4>Blogsysteme</h4>
<p>Hier werden Blogs für einzelne Webauftritte, wie <a href="http://www.see-online.info">See-online.info</a> oder <a href="http://www.blindgaengerin.de">Blindgängerin</a> oder dieser Blog hier (Guggat emol) gewünscht.<br />
Häufig werden für diese Blogs diverse Erweiterungen gewünscht, die mit den vorhandenen Plugins nur schwer zu realisieren sind.<br />
Beispielsweise wollen viele Kunden eine gute Spam-Abfrage um ihre Kommentarfunktionen zu schützen.<br />
(Cool, ich habe hier im Blog nur die Standard-Funktionalität drin. Das ist irgendwie immer das Gleiche, die eigenen Seiten kommen immer zuletzt dran <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<h4>Soziale Netzwerke</h4>
<p>Bei den Social Networks werden häufig Blogsysteme für mehrere Nutzer und die Kommunikationselemente der sozialen Netzwerke gewünscht.<br />
Beispiel hierfür ist sicherlich das <a href="http://www.buecherbrett.org">Bücherbrett</a>.<br />
Hier was es der Wunsch, dass die Registrierung ein wenig geschickter funktionieren soll als vom Basissystem vorgegeben.<br />
Wir hatten jeden Tag einige Spam-Schleudern die der Meinung waren automatisch neue Blogs anzulegen und dann darüber ihre völlig unnötige Werbung im Netz zu verstreuen.<br />
Damit erhöhte sich der Wartungsaufwand massiv. Wir mussten manuell alle neuen Blogs analysieren und entsprechend löschen.<br />
Um dieses &#8220;Scheunentor&#8221; zu schließen benötigten wir also eine Erweiterung, die es uns erlaubt die Registrierung des einzelnen Blogs ein wenig besser abzusichern.<br />
Und schon ist der Wartungsaufwand wieder auf ein normales Maß zurückgegangen.</p>
<h4>Spezialfunktionen</h4>
<p>Dann gibt es noch Sonderfunktionen, die nur für eine bestimmte Gruppe von Nutzern oder gar nur für einen Anwendungsfall erstellt werden müssen.<br />
Hierzu habe ich folgende Beispiele:</p>
<dl>
<dt>Versandnummer Bezug beim <a href="http://www.versanddepot.ch">Versanddepot.ch</a></dt>
<dd>Hier geht es darum, dass der Versand von Paketen zwischen Deutschland und der Schweiz sehr teuer sein kann. Der Kunde kann sich das Paket nach Konstanz / Kreuzlingen senden lassen und kann es dort abholen. Damit spart er viel Porto und kann sich Dinge schicken lassen, die ansonsten überhaupt nicht geliefert werden.<br />
Damit das klappt muss der Kunde eine Versandnummer anfordern, mit der die Sendung identifiziert werden kann.<br />
Es handelt sich also um eine Webapplikation, die ganz spezielle Anwendungsfälle abdecken muss.</dd>
<dt><a href="http://piraten-konstanz.de">Piraten Konstanz</a></dt>
<dd>Bei den Piraten im Kreis Konstanz hatten wir das Problem dass unser Wiki, in dem der ganze Content unserer Arbeit liegt, ziemlich schwierig zu lesen ist.<br />
Besucher unserer Seiten hatten Mühe, die gewünschte Information zu finden. Am Ende war es sogar so, dass die Piraten selbst sich kaum noch im Wiki zurechtfanden.<br />
Um hier ein wenig Abhilfe zu schaffen, erstellen wir einen Wiki-Viewer. Dieses System nimmt sich bestimmte Inhalte des Wikis und zeigt sie in angenehm lesbarer Form in einer<br />
einfach zu bedienenden Webseite an.<br />
Der Content wird weiterhin im Wiki gepflegt und wir brauchen so kein weiteres Content Managmenent System aufsetzen.<br />
Der Wiki Viewer muss also regelmäßig die Inhalte des Wikis parsen und entsprechend zwischenspeichern.<br />
Dann wird eine Präsentation des Inhalts gerändert und schon können wir unsere Inhalte einfach darstellen.<br />
Eine weitere Anforderung ist, dass dieses System mehrere Domänen und Anwendergruppen verwalten können soll.<br />
So können wir z.B. die Konstanzer und weitere Kreisverbände präsentieren.
</dd>
<dt>Piratenakademie</dt>
<dd>Ha! Hier gibt es noch nichts außer eine Wiki-Seite <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Aber das wird sich ändern. Wir wollen Schulungen anbieten. Es soll eine Art Börse aufgesetzt werden, bei der jemand seine Kurse anbieten kann und Interessenten sich entsprechend eintragen können.<br />
Also auch eine Userverwaltung und diverse Sonderfunktionen um die Kurse zu ordnen, einfach zu suchen usw.</dd>
<dt>Mail-System Verwaltung</dt>
<dd>Den Link gebe ich nicht raus <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Wir haben für die Verwaltung unserer Mail-Domänen ein System benötigt, dass es erlaubt neue Domänen anzulegen, einzelne Mailaccounts zu verwalten und die dazugehörigen User zu verwalten.<br />
Dabei mussten wir bestehende Tabellen (virtual_users, virtual_domains, virtual_aliases) des Mailsystems aufgreifen und eine grafische Oberfläche dafür erstellen.<br />
Wieder eine Userverwaltung und Zugriffe auf &#8220;fremde&#8221; Systeme. Wir mussten unsere Webapplikation-Komponenten verwenden um ein anderes System zu erweitern.</dd>
<dt><a href="http://www.dieboersenfrau.com">Glossar bei Börsenfrau</a></dt>
<dd>Die Börsenfrau ist ein Portal bei dem Informationen über den Umgang mit der Börse angeboten werden. Hier musste ein Glossar erstellt werden, mit dem die verwendeten Begriffe sinnvoll aufgelistet werden können.<br />
Dieses Glossar musste in die Infrastruktur integriert werden.</dd>
</dl>
<p>Ich höre hier mit der Aufzählung auf.<br />
All diese Webauftritte haben gemeinsam, dass sie unterschiedliche Funktionen zusätzlich zu den vom jeweiligen Content Management System angebotenen benötigen.<br />
Damit wir nicht jedes mal das Rad neu erfinden, erstellten wir ein Framework (miradlokit) mit dem wir für jede der hier aufgeführten Webapplikationen die gewünschten Anforderungen schnell, stabil und sicher umsetzen können.<br />
Für mich war besonders wichtig, dass wir eine modulare Architektur erstellen, die durch Plugins gut erweiterbar ist.<br />
Umbauten und Erweiterungen sollen ohne allzuviel Lavacode möglich sein.<br />
Bisher hat sich bei uns miradlokit gut bewährt.<br />
Wir konnten für die anfallenden Fragestellungen schnell neue Komponenten erweitern.<br />
Das Basissystem kann permanent verbessert und erweitert werden.<br />
Wir können die Erkenntnisse, die wir bei den einzelnen Kunden sammeln, häufig ins Core-System einfließen lassen.<br />
So wächst der Basis-Funktionsumfang und weitere Kunden können davon profitieren.</p>
<h3>Was habt ihr davon?</h3>
<p>Wir werden miradlokit in nächster Zeit noch etwas abschleifen und polieren. Das bedeutet vor allem, dass wir diverse Dokumentation erstellen werden.<br />
Wenn die Dokumentation steht, werden wir miradlokit als Open Source Projekt freigeben.<br />
Ihr bekommt dann diesen Webapplikations-Baukasten und könnt ihn einsetzen.<br />
Damit das Ganze ins Rollen kommt, werde ich zuerst einmal hier darüber bloggen und parallel die Doku aufsetzen.<br />
Meine Idee ist, dass ich hier im Blog über einzelne Aspekte, tägliche Probleme usw. berichten werde.<br />
Die Dokumentation wird dann im <a href="wiki.miradlo.de">miradlo Wiki</a> plaziert. Sobald etwas da ist, publiziere ich den Link dazu <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>miradlokit ist übrigens auch der Grund, warum ich in den letzten Monaten so wenig gebloggt habe. Ich habe meine Zeit zuerst einmal in die Fertigstellung von miradlokit genutzt.<br />
Wie immer hat der Tag 24h und man muss sich halt überlegen was man mit dieser Zeit anfängt <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/guggat_emol/miradlokit-ein-webapplikations-baukasten/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[miradlokit]]></series:name>
	</item>
		<item>
		<title>WordPress Parse Error unexpected end in functions.php</title>
		<link>http://www.baldenhofer.eu/blog/it/wordpress-parse-error-unexpected-end-in-functions-php</link>
		<comments>http://www.baldenhofer.eu/blog/it/wordpress-parse-error-unexpected-end-in-functions-php#comments</comments>
		<pubDate>Sat, 28 Aug 2010 11:07:45 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1973</guid>
		<description><![CDATA[Ich hatte gerade das Problem, dass ich beim Aufsetzen von einem WordPress Blog immer irgendwelche Parse-Errors erhielt. Die dazugehörigen Dateien waren alle sauber und konnten keine falsche Klammersetzung usw. aufweisen. Das Problem war ein ganz anderes: In &#8220;alten&#8221; PHP Dateien kannst du mit &#62;? deinen PHP Code beginnen. Bei einigen PHP Parsern (also die &#8220;neuen&#8221;) [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte gerade das Problem, dass ich beim Aufsetzen von einem WordPress Blog immer irgendwelche Parse-Errors erhielt.<br />
Die dazugehörigen Dateien waren alle sauber und konnten keine falsche Klammersetzung usw. aufweisen.</p>
<p>Das Problem war ein ganz anderes:<br />
In &#8220;alten&#8221; PHP Dateien kannst du mit &gt;? deinen PHP Code beginnen.<br />
Bei einigen PHP Parsern (also die &#8220;neuen&#8221;) wird jedoch ein &gt;?php erwartet.</p>
<p>Also immer mit &gt;?php ?&gt; deinen PHP Code deklarieren, dann klappts auch mit dem Parser.<br />
Vielleicht ist das in der php.ini oder sonst wo heutzutage so konfiguriert.<br />
Bringt ja nichts, wenn WordPress deswegen nicht mehr funktioniert <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/wordpress-parse-error-unexpected-end-in-functions-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wenn dein Eclipse keine Code Vervollständigung für PHP anbieten will&#8230;</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/wenn-dein-eclipse-keine-code-vervollstaendigung-fuer-php-anbieten-will</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/wenn-dein-eclipse-keine-code-vervollstaendigung-fuer-php-anbieten-will#comments</comments>
		<pubDate>Sun, 11 Jul 2010 13:54:21 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1961</guid>
		<description><![CDATA[Ich hatte die letzte Zeit ein wenig darunter zu leiden, dass mein Autovervollständiger  (also der completion service) von Eclipse nicht mehr wollte. Immer wenn ich einen Text geschrieben hatte und auf Autovervollständigung (Strg + Space) gedrückt hatte, kam die Meldung: No completions available Schön, das wusste ich auch so&#8230; Die Lösung, nach viel Googeln und [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte die letzte Zeit ein wenig darunter zu leiden, dass mein Autovervollständiger  (also der completion service) von Eclipse nicht mehr wollte.</p>
<p>Immer wenn ich einen Text geschrieben hatte und auf Autovervollständigung (Strg + Space) gedrückt hatte, kam die Meldung: <strong>No completions available</strong></p>
<p>Schön, das wusste ich auch so&#8230;</p>
<p>Die Lösung, nach viel Googeln und doch nichts finden war mal wieder ziemlich trivial.</p>
<p>Geh auf dein Projekt, drücke die rechte Maustaste und wähle Configure-&gt;Add PHP Support. Schon klappt es wieder mit der Code-Vervollständigung und der Fehlerüberprüfung.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/wenn-dein-eclipse-keine-code-vervollstaendigung-fuer-php-anbieten-will/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit CakePHP in einer Stunde und zwei Minuten zur Applikation</title>
		<link>http://www.baldenhofer.eu/blog/it/mit_cakephp_in_einer_stunde_zur_applikatio</link>
		<comments>http://www.baldenhofer.eu/blog/it/mit_cakephp_in_einer_stunde_zur_applikatio#comments</comments>
		<pubDate>Fri, 30 Oct 2009 18:29:15 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sprint]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1768</guid>
		<description><![CDATA[Reiserischer Titel gelle? Ich möchte hier kurz zusammenstellen was es braucht um in einer Stunde eine komplette Applikation mit CakePHP zu erstellen. 6:51 Uhr: Definition der Vision Gut, zuerst brauchen wir mal eine Vision die wir umsetzen wollen. In meinem Fall möchte ich einen Datenspeicher haben in dem ich schnell mein Gewicht eingeben kann. Das [...]]]></description>
			<content:encoded><![CDATA[<p>Reiserischer Titel gelle?<br />
Ich möchte hier kurz zusammenstellen was es braucht um in einer Stunde eine komplette Applikation mit CakePHP zu erstellen.</p>
<h3>6:51 Uhr: Definition der Vision</h3>
<p>Gut, zuerst brauchen wir mal eine Vision die wir umsetzen wollen.<br />
In meinem Fall möchte ich einen Datenspeicher haben in dem ich schnell mein Gewicht eingeben kann.<br />
Das bedeutet, dass ich mit der Applikation die Resultate vom Wiegen abspeichern will.<br />
In der ersten Version dieser Applikation soll also eine Eingabemaske zur Verfügung stehen, mit der man sein Gewicht in kg (z.B. 83,7kg) eingegeben werden kann.<br />
Da es mir peinlich ist, mein tatsächliches Gewicht öffentlich zu machen, möchte ich dieses Gewicht in einem Bereich abspeichern der nur über User &#8211; Passwort zu erreichen ist.<br />
Alle Anwender, die dieses System verwenden, sollen mit dem gleichen User-Passwort einsteigen können. Z.B. können so alle Teilnehmer einer Fett-Weg Aktion ihre Ergebnise untereinander diskutieren.</p>
<h3>6:53 Uhr: Festlegung der umzusetzenden Komponenten</h3>
<p>Ich möchte in einer Stunde fertig sein. Der Grund ist ganz einfach, ich sitze im Zug und in einer Stunde bin ich am Arbeitsort angekommen. Also kann ich nicht so viel umsetzen.<br />
Was will ich also realisieren?</p>
<h4>Modell für die Anwender</h4>
<p>Jeder Anwender soll sich durch Name, Vorname und eine Beschreibung im System outen.<br />
Also braucht es eine Datenbanktabelle mit folgendem Inhalt:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">CREATE TABLE `<span class="kw2">users</span>`<span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `<span class="kw2">id</span>` int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> NOT NULL auto_increment primary key,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `name` varchar<span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span> NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `surname` varchar<span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span> NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `description` text NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `created` datetime NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `modified` datetime NOT NULL</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<h4>Modell für die Gewichtseingabe</h4>
<p>Ich möchte ein Modell haben in dem die Gewichtsverläufe der Personen eingetragen werden kann.<br />
Also eine Datenbanktabelle, die folgenden Tabelle zur Verfügung stellt:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">CREATE TABLE `weights`<span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `<span class="kw2">id</span>` int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> NOT NULL auto_increment primary key,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `user_id` int<span class="br0">&#40;</span><span class="nu0">11</span><span class="br0">&#41;</span> NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `weight` varchar<span class="br0">&#40;</span><span class="nu0">40</span><span class="br0">&#41;</span> NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `created` datetime NOT NULL,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; `modified` datetime NOT NULL</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Mit user_id kann eine Verknüpfung zum jeweilgen Anwender erfolgen. Damit können wir also die Relation Gewicht->Person erstellen.</p>
<h4>Eingabemaske Create, Read, Update, Delete (CRUD)</h4>
<p>Um das Gewicht zu verwalten möchte ich Create, Read, Update und Delete Eingabemasken haben.</p>
<h4>Userverwaltung</h4>
<p>Die Anwender sollen sich über ein User-Passwort am System anmelden können. Jeder Anwender erhält dieses Passwort vom Administrator zugestellt. Das ist also nicht Teil dieser 1h Übung.</p>
<h3>7:06 Vorbereiten des Servers</h3>
<p>So, genug Design. Jetzt gehts los!<br />
Zuerst erstellen wir mal die Datenbanktabellen.</p>
<h4>Anlegen der Datenbank</h4>
<p>Wir wählen uns mit <span class="code">mysql -u root -p</span> an unserer Datenbank an.<br />
Dann erstellen wir eine neue Datenbank mit <span class="code">create database weights</span>.</p>
<h4>Localhost Einstellen</h4>
<p>Ich bin auf meiner kleinen Entwicklungsmaschine tätig. Im /etc/hosts füge ich die neue Webapplikation <strong>weight</strong> hinzu.</p>
<h4>Eclipse Projekt anlegen</h4>
<p>In meinem Workspace (/home/roland/workspace) lege ich mit Eclipse ein neues PHP Projekt mit dem Namen <strong>weight</strong> an.</p>
<h4>CakePHP Installieren</h4>
<p>Ich habe Cake vor kurzem heruntergeladen.<br />
Ich wechsle mit einer Konsole in das Verzeichnis in dem die Zip-Datei liegt (z.B. /home/roland/Downloads) und führe folgende Befehle aus:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> cake_1<span class="nu0">.2</span><span class="nu0">.5</span>.<span class="kw2">tar</span>.bz2 <span class="sy0">/</span>home<span class="sy0">/</span>roland<span class="sy0">/</span>workspace<span class="sy0">/</span>weight<span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ~<span class="sy0">/</span>workspace<span class="sy0">/</span>weight</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">bunzip2</span> cake_1<span class="nu0">.2</span><span class="nu0">.5</span>.<span class="kw2">tar</span>.bz2</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">tar</span> xvf cake_1<span class="nu0">.2</span><span class="nu0">.5</span>.<span class="kw2">tar</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">rm</span> cake_1<span class="nu0">.2</span><span class="nu0">.5</span>.<span class="kw2">tar</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> cake_1<span class="nu0">.2</span><span class="nu0">.5</span><span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mv</span> <span class="sy0">*</span> ..<span class="sy0">/</span>.</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ..</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">rm</span> -r cake_1<span class="nu0">.2</span><span class="nu0">.5</span></div>
</li>
</ol>
</div>
<p>Jetzt ist Cake soweit mal installiert.<br />
Damit das Caching funktioniert, müssen noch die Rechte geradegebogen werden.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ~<span class="sy0">/</span>workspace<span class="sy0">/</span>tmp</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">chmod</span> -R a+rw cache</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ..</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">chmod</span> a+rw tmp</div>
</li>
</ol>
</div>
<p>Jetzt muss noch der Security Salt in <span class="code">~/workspace/weight/app/config/core.php</span> verändert werden.<br />
Suche die Zeile <span class="code">Configure::write(&#8216;Security.salt&#8217;,</span> und ändere den Wert um.</p>
<h4>Datenbankkonfiguration innerhalb von Cake</h4>
<p>Kopiere die Datei <span class="code">~/workspace/weight/app/config/database.php.default nach ~/workspace/weight/app/config/database.php</span> und füge die Zugangsdaten zu deiner Datenbank ein. </p>
<h4>vhost konfigurieren</h4>
<p>Bei Gentoo wird im /etc/apache2/vhosts.d ein neuer Virtual Host eingerichtet:</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">NameVirtualHost weight</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>virtualhost weight<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ServerName weight</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ServerAdmin webmaster<span class="sy0">@</span>localhost</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; DocumentRoot <span class="sy0">/</span>home<span class="sy0">/</span>roland<span class="sy0">/</span>workspace<span class="sy0">/</span>weight<span class="sy0">/</span>app<span class="sy0">/</span>webroot</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;</span>directory <span class="sy0">/</span>home<span class="sy0">/</span>roland<span class="sy0">/</span>workspace<span class="sy0">/</span>weight<span class="sy0">/</span>app<span class="sy0">/</span>webroot<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Options Indexes FollowSymLinks</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Order allow,deny</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; AllowOverride FileInfo Indexes Limit</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Allow from all</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">&lt;/</span>directory<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>virtualhost<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>Wie ihr sehen könnt, wird meine Applikation in meinem Home-Verzeichnis im Eclipse Standard workspace abgelegt.<br />
Nicht vergessen mit <span class="code">/etc/init.d/apache2 restart</span> den Webserver neu starten.<br />
Probiere kurz mal mit einem Webbrowser aus, ob die Applikation hochkommt und die Datenbank usw. erreicht werden kann.<br />
Das kannst du mit <span class="code">http://weight/</span> als Adresse erreichen.</p>
<h3>7:32 Uhr: Modelle erstellen</h3>
<p>So, die Applikation ist installiert.<br />
Gehe im Eclipse zu deinem (noch leeren) Projekt und drücke refresh. Nun können wir in Eclipse die notwendigen Dateien editieren.<br />
Wechsle nun ins Verzeichnis /app/config/sql und erstelle die Datei <span class="code">create_tables.php</span><br />
Füge dort die Create Statements, die ich oben definiert habe, ein.<br />
Gehe in eine Konsole und wechsle in /app/config/sql Verzeichnis.<br />
Erstelle die Datenbanktabellen mit dem Befehl <span class="code">mysql -u root -p weights < create_tables.sql</span>.<br />
Nun sind die Datenbanktabellen vorhanden.<br />
Wechsle ins /app Verzeichnis und lege mit <span class="code">cake bake</span> die Modelle, Controller und Views an.<br />
Dazu kannst du dem Menü Folgen und die Modelle zuerst anlegen. Bitte achte darauf, dass du die Relation hasone und belongsto in den Modellen mit reinfummelst.</p>
<h4>Testen der Applikation</h4>
<p>Mit <span class="code">http://weight/users</span> solltest du nun die CRUD Methoden für die Userverwaltung vorfinden.<br />
Mit <span class="code">http://weight/weights</span> solltest du in der Lage sein ein Gewicht für einen User anzulegen.</p>
<h3>7:44Uhr: Security reinfummeln</h3>
<p>Füge in der Datei /app/config/bootstrap.php den Eintrag Configure::load(&#8216;config&#8217;); hinein.<br />
Dann erstelle eine Datei in /app/config/config.php.<br />
In diese Datei trägst du die folgende Zeilen ein:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span> ?php</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* Angabe des erlaubten Administrator Users und dessen Passwort.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$config</span><span class="br0">&#91;</span><span class="st0">&#39;adminCredentials&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;user&#39;</span> <span class="sy0">=&gt;</span> &nbsp;<span class="st0">&#39;horscht&#39;</span><span class="sy0">,</span> <span class="st0">&#39;password&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;supi&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Im /app/controllers/users_controller.php fügst du die folgende Funktion ein:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">var</span> <span class="re1">$components</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;Security&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* Einbinden der Security Konfiguration und Laden der Konfiguration</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;* @see cake/libs/controller/Controller#beforeFilter()</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; &nbsp; &nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> beforeFilter<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$user</span> <span class="sy0">=</span> Configure<span class="sy0">::</span><span class="me2">read</span><span class="br0">&#40;</span><span class="st0">&#39;adminCredentials.user&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$password</span> <span class="sy0">=</span> Configure<span class="sy0">::</span><span class="me2">read</span><span class="br0">&#40;</span><span class="st0">&#39;adminCredentials.password&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Security</span><span class="sy0">-&gt;</span><span class="me1">requireLogin</span><span class="br0">&#40;</span><span class="st0">&#39;add&#39;</span><span class="sy0">,</span> <span class="st0">&#39;edit&#39;</span><span class="sy0">,</span> <span class="st0">&#39;delete&#39;</span><span class="sy0">,</span> <span class="st0">&#39;index&#39;</span><span class="sy0">,</span> <span class="st0">&#39;view&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Security</span><span class="sy0">-&gt;</span><span class="me1">loginOptions</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;type&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;basic&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Security</span><span class="sy0">-&gt;</span><span class="me1">loginUsers</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="re1">$user</span> <span class="sy0">=&gt;</span> <span class="re1">$password</span><span class="br0">&#41;</span><span class="sy0">;;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Das Gleiche fügst du im /app/controllers/weights_controller.php ein.<br />
Ok, das ist Code-Replikation und sollte in die Basisklasse rein, aber meine Stunde ist gleich rum <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>7:53: Fertig</h3>
<p>Das war knapp!<br />
Ich hatte mich noch ein paarmal vertippt. Aber die Applikation läuft jetzt und kann angesprochen werden.<br />
Natürlich sollte jetzt die Aufräumaktion kommen und alles schön verlinkt werden. Aber immerhin, in einer Stunde ist eine funktionsfähige Applikation und dieser Blogartikel entstanden.<br />
Cool gelle?</span></p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/mit_cakephp_in_einer_stunde_zur_applikatio/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Setup von Entwicklungsumgebungen</title>
		<link>http://www.baldenhofer.eu/blog/it/setup-von-entwicklungsumgebungen</link>
		<comments>http://www.baldenhofer.eu/blog/it/setup-von-entwicklungsumgebungen#comments</comments>
		<pubDate>Mon, 13 Jul 2009 08:03:05 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Unterricht]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Infrastruktur]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1694</guid>
		<description><![CDATA[In den letzten Wochen diskutieren Dirk und ich immer wieder über den Einsatz meines Asus Eee 900 als Entwicklungsrechner. Er möchte mich davon überzeugen, auf dem kleinen Ding nur die nötigste Umgebung für Webentwicklung aufzusetzen. Ich möchte ihn davon überzeugen, dass so wenig wie möglich Unterschiede bei meiner Entwicklungsumgebung zur Produktionsumgebung sinnvoll sind. Was ist [...]]]></description>
			<content:encoded><![CDATA[<p>In den letzten Wochen diskutieren Dirk und ich immer wieder über den Einsatz meines Asus Eee 900 als Entwicklungsrechner.<br />
Er möchte mich davon überzeugen, auf dem kleinen Ding nur die nötigste Umgebung für Webentwicklung aufzusetzen. <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Ich möchte ihn davon überzeugen, dass so wenig wie möglich Unterschiede bei meiner Entwicklungsumgebung zur Produktionsumgebung sinnvoll sind. <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Was ist die Infrastruktur und Systemkomponenten Anforderung?</h3>
<p>Die Produktionsumgebung hat folgende Konfiguration:</p>
<ul>
<li>Apache Webserver (aktuelle Version)</li>
<li>PHP 5.X</li>
<li>MySQL (aktuelle Version)</li>
<li>AMD 64 Bit Root-Server</li>
</ul>
<h3>Was für eine Entwicklungsumgebung verwende ich?</h3>
<p>Ich habe zwei Rechner mit denen ich die meiste Zeit entwickle:</p>
<ul>
<li>Asus Eee 900 für Unterwegs. Da ich viel Reise, ist das Teil im Moment wirklich meine primäre Maschine <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Kaum zu glauben oder? Aber ich kann darauf wirklich arbeiten.</li>
<li>Desktop Quad Core Pentium Maschine mit 4 GByte RAM, zwei Monitoren usw.</li>
</ul>
<p>Was man hier sieht ist, dass ich von Hardwareseite aus schon einen ziemlichen Zoo beieinander habe und die Komponenten nicht nah an der Produktion sind.<br />
Auf den Maschinen habe ich die gleichen Softwareumgebungen drauf wie auf der Produktion.<br />
Das heisst, nicht ganz. Ich führe zuerst auf den Entwicklungsrechnern Softwareupdates durch. Wenn die funktionieren und unsere Komponenten immer noch gut zucken, wird die Produktion aktualisiert.<br />
Eigentlich logisch oder?</p>
<h3>Abnahmeumgebung</h3>
<p>Damit die Produktionsumgebung nur dann umgestellt wird wenn sichergestellt ist, dass wir funktionsfähige Software einsetzen, haben wir einen weiteren Rechner für die Abnahmeumgebung aufgebaut.<br />
Dieser Rechner ist ein AMD 64 bit Rechner. Damit ist die Prozessorarchitektur mit der des Root-Servers übereinstimmend.<br />
Er hat auch das gleiche Betriebssystem mit den identischen Libraries wie der Produktionsrechner.</p>
<h3>Was erreichen wir mit dieser Konfiguration?</h3>
<p>Die Entwicklungsrechner verwenden identische Software wie in der Produktion.<br />
Das hat folgende Vorteile:</p>
<ul>
<li>Wir entwickeln mit den gleichen Softwarepaketen wie in der Produktion. (Apache, PHP, MySQL usw.)</li>
<li>Die Konfiguration des Webservers (httpd.conf usw.) können wir schon in der Entwicklung üben. Die Unterschiede zur Produktion sind relativ gering und wir sind für die Migration trainiert.</li>
<li>Upgrades können auf der Entwicklungsmaschine ausprobiert werden.</li>
<li>Ich kann immer und überall mit meinem kleinen Netbook entwickeln. Das hat sich schon oft als Vorteil erwiesen, falls ein paar kleinenere Anfragen von Kunden schnell behandelt werden mussten. Ich war damit nicht ortsgebunden.</li>
</ul>
<h3>Nachteile dieser Entwicklungsumgebung</h3>
<p>Wir haben einen Zoo an Rechnern rumstehen.<br />
Wenn wir genug Geld hätten, könnten wir uns einen Typ von Hardware kaufen und betreiben. Das würde viel Aufwand und somit Geld sparen.<br />
Mein Asus Eee 900 ist eine nette Maschine, aber es ist und bleibt ein Zwerg. Eigentlich ist es nicht vernünftig so eine kleine Maschine für diesen Einsatzbereich zu verwenden.<br />
Aber wie hat schon einer meiner Profs gesagt: &#8220;Alle wünschen sich die besten Studenten, aber wir haben nur sie!&#8221;. <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Ich bin auch ein grosser Bastler und deshalb habe ich halt im Moment die kleine Maschine.<br />
Dirk hat mir eine lange Mail geschrieben in der er ausführt, dass ich auf einen leichteren Webserver umsteigen sollte.<br />
Damit könnte ich wichtige Systemresourcen einsparen und mein Asus wäre dann wohl etwas schneller.<br />
Doch hierzu kann ich nur sagen, dass es mir wichtig ist mit dem Webserver zu arbeiten, den ich später auch in der Produktion einsetze. Spezielle Flags, die ich Beispielsweise für BuddyPress benötige, möchte ich gleich bei mir auf der Maschine ausprobieren und optimieren können.</p>
<h3>Fazit</h3>
<p>Es ist wichtig mindestens die Abnahmetestumgebung mit der Produktionsumgebung gleich aufzusetzen.<br />
Wenn möglich, sollte identische Hard- und Softwarekonfigurationen eingesetzt werden.<br />
Häufig ist dies aus Kostengründen nicht möglich. Dann muss man wenigstens versuchen so nah wie möglich an die Produktionsumgebung heranzukommen.<br />
Bei der Entwicklungsumgebung sollte wenigstens der gleiche Softwarestack eingesetzt werden. Die Entwickler arbeiten dann mit den gleichen Tools, die später in der Produktion eingesetzt werden. Somit können Unterschiede und Problemstellungen schon während der Entwicklung erkannt werden.<br />
Ein Mix von Komponenten sollte, wenn möglich, immer vermieden werden.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/setup-von-entwicklungsumgebungen/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<series:name><![CDATA[Grundlagen]]></series:name>
	</item>
		<item>
		<title>Eclipse PHP mit Galileo auf Ubuntu</title>
		<link>http://www.baldenhofer.eu/blog/gentoo/software/eclipse-php-mit-galileo-auf-ubuntu</link>
		<comments>http://www.baldenhofer.eu/blog/gentoo/software/eclipse-php-mit-galileo-auf-ubuntu#comments</comments>
		<pubDate>Sun, 28 Jun 2009 22:30:15 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[galileo]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1651</guid>
		<description><![CDATA[Heute habe ich auf einem weiteren Entwicklungsrechner die PHP Entwicklungsumgebung aufgesetzt. Meine Frage war: Warum nicht einfach mal nur eine Eclipse PHP Umgebung direkt verwenden? Ich entwickle zur Zeit keine Java Programme und wenn schon Eclipse für PHP vorkonfiguriert zu haben ist, ergibt es vermutlich Sinn sich gleich so ein Teil herunterzuladen. Gesagt getan. Und [...]]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich auf einem weiteren Entwicklungsrechner die PHP Entwicklungsumgebung aufgesetzt.<br />
Meine Frage war:<br />
<strong>Warum nicht einfach mal nur eine Eclipse PHP Umgebung direkt verwenden?</strong><br />
Ich entwickle zur  Zeit keine Java Programme und wenn schon Eclipse für PHP vorkonfiguriert zu haben ist, ergibt es vermutlich Sinn sich gleich so ein Teil herunterzuladen.<br />
Gesagt getan.<br />
Und wenn Galileo installiert ist, kann man ja auch auf die Java-Perspektive wechseln. Also kein Grund über Ganymede oder so zu gehen.</p>
<h3>Herunterladen und Installation von Eclipse Galileo</h3>
<p>Unter <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/R/eclipse-php-galileo-linux-gtk.tar.gz">Eclipse downloads Galileo</a> kannst du dir das aktuelle Galileo besorgen.<br />
Ich habe das Eclipse wieder im <strong>/opt</strong> Verzeichnis abgelegt.<br />
Mit</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">tar</span> xzvf eclipse-php-galileo-linux-gtk.<span class="kw2">tar</span>.gz</div>
</li>
</ol>
</div>
<p>entpackst du das Eclipse.<br />
Und schon kannst du mit <span class="code">/opt/eclipse/eclipse</span> das Eclipse aufrufen und PHP programmieren <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Subclipse noch hinzufügen</h3>
<p>Ich brauch noch ein Subclipse um auf meine SVN Server zu gelangen.<br />
Dazu kannst du beim Menüpunkt <strong>help-&gt;Install New Software</strong> den Pfad zum Subclipse Download eingeben.<br />
Ich verwende da <a href="http://subclipse.tigris.org/update_1.4.x">http://subclipse.tigris.org/update_1.4.x</a><br />
Das wars schon. Mit Galileo für PHP sparst du dir ziemlich viel Rumkonfigurierei und kannst gleich losentwickeln.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/gentoo/software/eclipse-php-mit-galileo-auf-ubuntu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Namensänderungen im Newssystem Modell</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/namensaenderungen-im-newssystem-modell</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/namensaenderungen-im-newssystem-modell#comments</comments>
		<pubDate>Wed, 17 Jun 2009 04:03:55 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[Newssystem]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1449</guid>
		<description><![CDATA[Ich bin dabei mir ein paar Gedanken zu den Modellen des Newssystems zu machen. Da ich diesmal CakePHP einsetzen will, habe ich ein paar Fragestellungenzu den Modellnamen zu beantworten. Beispiel: Bisher habe ich das Modell, welches die einzelnen News beinhaltet, sinnvollerweise NewsModell getauft. Nun, in CakePHP gilt die Namenskonvention, dass Modelle im Singular und Controller [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin dabei mir ein paar Gedanken zu den Modellen des Newssystems zu machen.<br />
Da ich diesmal CakePHP einsetzen will, habe ich ein paar Fragestellungenzu den Modellnamen zu beantworten.<br />
Beispiel:<br />
Bisher habe ich das Modell, welches die einzelnen News beinhaltet, sinnvollerweise NewsModell getauft.<br />
Nun, in CakePHP gilt die Namenskonvention, dass Modelle im Singular und Controller im Plural definiert werden sollen.<br />
Supi!<br />
News ist zwar eigentlich ein Singular, aber ich habe da ein New und ein &#8220;s&#8221;.<br />
Also wird das kluge CakePHP mir wohl sagen, dass ich hier einen Plural verwende.</p>
<h3>Was habe ich getan?</h3>
<p>Bevor ich mit dem CakePHP beim Backen ärger bekomme, habe ich mich entschieden die NewsModel Geschichte einfach umzubenennen.<br />
Im Prinzip ist ja jede News ein Artikel.<br />
Also heist das NewsModel ab sofort ArticleModel.</p>
<h3>Was muss jetzt geschehen?</h3>
<p>Da wir zur Zeit noch in der Konzeption sind, muss nicht viel umgewandelt werden.<br />
Wir müssen lediglich kurz durch alle Artikel durch, in denen das NewsModel vorkommt.<br />
Dank der Volltextsuche sollte das ja wirklich kein Problem darstellen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Dann ersetzen wir in den Artikeln NewsModel in ArticleModel und schon sind wir auf alle Fälle CakePHP konform.</p>
<h3>Blogsoftware verwenden hat Vorteile bei der Dokumentation</h3>
<p>Die wirkliche Erkenntnis, die ich dank dieser Aktion erhalten habe, ist das es sich wirklich lohnt ein Content Management System, wie beispielsweise einen Blog, für die Dokumentation zu verwenden.<br />
Da alle Dokumente miteinander verlinkt sind, ist die Suche und das Abändern der einzelnen Artikel kein Problem.<br />
Mit der Kommentarfunktion kann man die Änderungen noch protokollieren und so ist die ganze Dokumentation richtig rund!</p>
<h3>Fazit</h3>
<p>Diese Aktion hat mir gezeigt, dass ein integriertes Tool für die ganze Dokumentation durchaus seinen Reiz hat.<br />
Wir sollten entsprechend über unsere Anforderungsdokumentation nachdenken.<br />
Wenn wir hier ein anderes Werkzeug einsetzen, werden wir sehr schnell inkonsistente Bezeichnungen erhalten.<br />
Die Inflation bei den Blogeinträgen ist zwar nicht unbedingt schön, aber dann haben wir den ganzen Brei auf einem System.<br />
Wir könnten ja noch über die Anforderungsclusterung nachdenken.<br />
Wir können z.B. alle Anforderungen zu einer bestimmten Komponente, oder zu einem bestimmten Thema, in jeweils einen Artikel schreiben.<br />
Damit werden wir deutlich weniger Artikel erhalten und dennoch alle Anforderungen im Blog ablegen können.<br />
Oder wir freuen uns über die vielen Anforderungsartikel.<br />
Eigentlich macht es ja nichts aus, wenn man in einem Blog ein paar hundert Artikel hat. Man kann über die Cloud, oder über die Serie sehr einfach filtern.</p>
<p>Habt ihr hierzu eine Meinung?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/namensaenderungen-im-newssystem-modell/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Security Session beim Barcamp Dornbirn</title>
		<link>http://www.baldenhofer.eu/blog/guggat_emol/security-session-beim-barcamp-dornbirn</link>
		<comments>http://www.baldenhofer.eu/blog/guggat_emol/security-session-beim-barcamp-dornbirn#comments</comments>
		<pubDate>Sat, 06 Jun 2009 10:51:56 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Guggat emol]]></category>
		<category><![CDATA[bcd09]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP-Sicherheit]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1362</guid>
		<description><![CDATA[Ich bin gerade in der PHP Security Session. Also wieder einmal ein Life-Blogging Artikel&#8230; Der Session Moderator, der bei Security Inside arbeitet, zeigte anhand von diversen Beispielen wie Angriffe auf Webserver erfolgen können. Er ging durch die unterschiedlichen Angriffsszenarien durch. Er zeigte wie einfach auf nicht geschützte Webseiten zugegriffen werden kann. Cool war, dass er [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin gerade in der PHP Security Session. Also wieder einmal ein Life-Blogging Artikel&#8230;<br />
Der Session Moderator, der bei <a href="http://www.securityinside.org/l_hp/">Security Inside</a> arbeitet, zeigte anhand von diversen Beispielen wie Angriffe auf Webserver erfolgen können.<br />
Er ging durch die unterschiedlichen Angriffsszenarien durch.<br />
Er zeigte wie einfach auf nicht geschützte Webseiten zugegriffen werden kann.<br />
Cool war, dass er anhand eines Homepage Demo diverse Angriffe durchführte.<br />
Nicht abgesicherte PHP Programme sind extrem einfach zu verwenden um Server anzugreifen und wichtige Daten auszulesen.</p>
<p>Er hat z.B. eine Upload Funktion angegriffen und dort anstatt einem Bild eine PHP Datei auf den Server gelegt.<br />
Diese PHP Datei hat er dann ausgeführt.</p>
<p>Wichtig ist, dass die Entwickler wirklich darauf Wert legen müssen, sich für jeden Angriff zu wappnen.<br />
Leider gibt es so viele Angriffsmöglichkeiten, dass ein wirklicher Schutz sehr schwer ist.</p>
<p>Den absoluten Schutz gibt es nicht. Aber man sollte sich immer überlegen welche Angriffe möglich sein können.</p>
<p>Mit Tools kann man Angriffsszenarien automatisieren. Wenn man einen Angriff kennt, kann man sich entsprechende Regressionstests durchführen.</p>
<p>Prinzipiell muss man sich an die Standard Regeln (XSS, SQL Injections usw.) zu halten.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/guggat_emol/security-session-beim-barcamp-dornbirn/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einsatz eines Frameworks für die Erstellung des Newssystems</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/einsatz-eines-frameworks-fuer-die-erstellung-des-newssystems</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/einsatz-eines-frameworks-fuer-die-erstellung-des-newssystems#comments</comments>
		<pubDate>Sun, 31 May 2009 10:04:39 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1266</guid>
		<description><![CDATA[Mittlerweile habe ich ja einige Artikel zum Newssystem geschrieben. Das Teil ist jetzt so beschrieben, dass wir uns allmählich an die Entwicklung machen können Ist ja auch langsam Zeit geworden oder? Damit wir jetzt schnell und sicher zum Ziel kommen, sollten wir uns überlegen ob wir alles selber programmieren wollen oder ob wir Arbeit an [...]]]></description>
			<content:encoded><![CDATA[<p>Mittlerweile habe ich ja einige Artikel zum Newssystem geschrieben.<br />
Das Teil ist jetzt so beschrieben, dass wir uns allmählich an die Entwicklung machen können <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Ist ja auch langsam Zeit geworden oder?<br />
Damit wir jetzt schnell und sicher zum Ziel kommen, sollten wir uns überlegen ob wir alles selber programmieren wollen oder ob wir Arbeit an ein Framework abgeben wollen.</p>
<h3>Was bringt der Einsatz eines Frameworks?</h3>
<p>Beim Programmieren gibt es immer wieder Teilaufgaben, die sich wiederholen und die man nicht selber erstellen sollte.<br />
Beispiele hierfür sind:</p>
<ul>
<li>Validierung von e-Mail Adressen<br />
Falls eine e-Mail Adresse eingegeben werden muss, sollte kontrolliert werden ob der Anwender auch eine korrekte e-Mail Adresse eingegeben hat.</li>
<li>Leere Eingaben<br />
Falls bei einer News ein Titel nicht eingegeben wurde, soll das als Fehler betrachtet werden. Also sollten wir auf leere Eingaben reagieren.</li>
<li>SQL Injections<br />
Wenn ein böser Mensch versucht unser System anzugreifen, sollten Standardverfahren zum Einsatz kommen. Diese Verfahren helfen uns, dass Scriptkiddies usw. keinen Angriff durchführen können.</li>
</ul>
<p>Ein Framework bietet für diese Standardvalidierungen diverse Hilfen. So müssen wir uns um solche langweiligen Programmieraufgaben nicht mehr kümmern.</p>
<h3>Welches Framework nehme ich für die Newssystem Erstellung?</h3>
<p>Ich habe mich in <a href="http://cakephp.org/">CakePHP</a> &#8220;verguggt&#8221;. Und warum will ich es für das Newssystem verwenden?</p>
<ul>
<li>Es verwendet das Model View Controller (MVC) Pattern.<br />
All die bisher beschriebenen Modelle und die Abläufe im Newssystem sind im Prinzip MVC Patterns. Wenn das darunterliegende Framework genau dafür erstellt wurde, dann passt es wie die Faust aufs Auge <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Es hält sich an CRUD (Create, Read, Update, Delete)<br />
Für die Verwaltung von Daten ist CRUD ein Standardpattern. Es reflektiert die Standard Aktivitäten für die Eingabe und Verwaltung von Daten. Und da wir unsere Bilder, Texte usw. Erstellen, Lesen, Ändern und Löschen wollen erfüllt das Framework auch diese Anforderung</li>
<li>Es ist einfach zu Erlernen<br />
Meine ersten Gehversuche haben mir gezeigt, dass CakePHP relativ einfach zu erlernen ist. Ich werde sicherlich noch hier- und da ein wenig fluchen, aber das macht man bei jedem Framework.</li>
<li>Es bietet Automatismen um die benötigten Klassen zu generieren<br />
Mit der Bake-Shell kann man seine eigenen Klassen &#8220;backen&#8221;. Damit kann man die Entwicklungszeit reduzieren, da die Skellette der einzelnen Klassen vorfindet und sich nur noch um den Inhalt kümmern muss.</li>
<li>Es bietet Internationalisierung<br />
Ich will das Newssystem so erstellen, dass wir es auch in England oder Frankreich verwenden können. Die Internationalisierung ist Bestandteil des Frameworks. Also ist auch hier das Ziel erreicht.</li>
<li>Es hat ein Testvorgehen implementiert<br />
Mit CakePHP sind die Testszenarien abgebildet und man kann die vorhandenen Komponenten regressiv testen. Das macht mir Freude.</li>
<li>Man kann eigene Komponenten relativ einfach einbinden<br />
Wenn etwas vom Framework nicht abgedeckt wird, kann man eigene Komponenten hinzufügen und anpassen. Also können wir Gruscht und Glumps erfinden und neben dem CakePHP Framework verwalten. Damit können wir auch Komponenten erstellen, falls wir mal nicht mit der Phillosophie von CakePHP zurechkommen.</li>
<li>Die Lizenz erlaubt uns eine freie EntwicklunG</li>
</ul>
<h3>Fazit</h3>
<p>Das CakePHP Framework scheint alle relevanten Aspekte, die ich mir für die Erstellung des Newssystems vorstellen kann, abzudecken. Wir werden (hoffentlich) nicht jede Validierung und Konfiguration selbst erstellen müssen und können uns voll- und ganz um die wirklichen Eigenschaften des Newssystems kümmern können.</p>
<p>Der Einsatz eines Frameworks kostet zwar Zeit um das Framework zuerst zu erlernen. Aber es kann die Entwicklung und Pflege des Codes im Nachhinein extrem beschleunigen.</p>
<p>Weiterhin kann mit dem Einsatz eines Framworks verhindert werden, dass man Fehler macht die schon mindestens 100 mal bei der Erstellung von ähnlichen Applikationen gemacht worden sind. Man erstellt damit deutlich stabilere Systeme.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/einsatz-eines-frameworks-fuer-die-erstellung-des-newssystems/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Newssystem]]></series:name>
	</item>
		<item>
		<title>Juchu, erstes Modell mit CakePHP</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/juchu-erstes-modell-mit-cakephp</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/juchu-erstes-modell-mit-cakephp#comments</comments>
		<pubDate>Sat, 30 May 2009 10:29:19 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1259</guid>
		<description><![CDATA[Ich habe wieder etwas Zeit gefunden um weiter mit CakePHP rumzuprobieren. Heute habe ich dem Modell Newsletter, dass ich ja schon im Artikel Erste Gehversuche mit CakePHP erwähnt habe, ein bisschen mit Leben gefüllt. Warum bei einem Newssystem ein Modell mit dem Namen Newsletter vorhanden sein soll kann ich leider nicht sagen. Ich würde behaupten [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe wieder etwas Zeit gefunden um weiter mit CakePHP rumzuprobieren.<br />
Heute habe ich dem Modell Newsletter, dass ich ja schon im Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/erste-gehversuche-mit-cakephp">Erste Gehversuche mit CakePHP</a> erwähnt habe, ein bisschen mit Leben gefüllt.<br />
Warum bei einem Newssystem ein Modell mit dem Namen Newsletter vorhanden sein soll kann ich leider nicht sagen. Ich würde behaupten ich habe einfach nur ein bisschen rumgespielt und einen Namen benötigt.<br />
Sobald ich eine View, einen Controller und ein Modell selber ausprobiert habe werde ich auch wieder ernsthaft anfangen die tatsächlich benötigten Modelle zu erstellen. Großes Indianerehrenwort! <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Validieren mit Cake</h3>
<p>Egal wie das Modell heisst, ich habe jetzt mal ein bisschen was unsinniges validiert.<br />
In CakePHP ist das sehr einfach durchzuführen.<br />
Mein erster Versuch war, dass der Anwender für den Titel minimal drei Zeichen eingeben muss. Maximal darf er 50 Zeichen eingeben.<br />
Und dann habe ich noch einen Sonderfall programmiert. Falls irgendwo in dem Titel der String &#8220;egon&#8221; vorkommt, wird ebenfalls ein Fehler ausgegeben.<br />
Hier der Code:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> Newsletter <span class="kw2">extends</span> AppModel<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">public</span> <span class="re1">$name</span><span class="sy0">=</span><span class="st0">&#39;Newsletter&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">public</span> <span class="re1">$validate</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#39;title&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;minlength&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;rule&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;minLength&#39;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">,</span> <span class="st0">&#39;required&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">true</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">,</span> <span class="st0">&#39;message&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;Leerer Titel isch doof!&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">,</span> <span class="st0">&#39;maxlength&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;rule&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;maxLength&#39;</span><span class="sy0">,</span> <span class="nu0">50</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">,</span> <span class="st0">&#39;required&#39;</span> <span class="sy0">=&gt;</span> <span class="kw2">true</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">,</span> <span class="st0">&#39;message&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;Zu langer Titel isch doof!&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#41;</span><span class="sy0">,</span> <span class="st0">&#39;own&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;rule&#39;</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;checkOwn&#39;</span><span class="sy0">,</span> <span class="st0">&#39;title&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">,</span> <span class="st0">&#39;message&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;Hey voll falsch&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> checkOwn<span class="br0">&#40;</span><span class="re1">$data</span><span class="sy0">,</span> <span class="re1">$field</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$valid</span> <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;/(egon)/i&quot;</span><span class="sy0">,</span> <span class="re1">$data</span><span class="br0">&#91;</span><span class="re1">$field</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re1">$results</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">sizeof</span><span class="br0">&#40;</span><span class="re1">$results</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$valid</span> <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re1">$valid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Besonders spannend finde ich die Möglichkeit, eigene Funktionen bauen und einbinden zu können.<br />
Du kannst hier sehen, dass man mit CakePHP die Validierungsregeln in Arrays beschreibt. Diese Art der Beschreibung finde ich sehr übersichtlich und angenehm zum Programmieren.</p>
<h3>Und wie sieht das Ganze in Aktion aus?</h3>
<p>Was mir unglaublich gut gefällt ist, dass CakePHP mit einem Controller Skelett und einer fast leeren Modell-Klasse schon das<br />
Pattern CRUD (Create, Read, Update, Delete) umgesetzt wird.<br />
Du kannst also schon mal mit dem leeren Modellen arbeiten und sehen, was du alles noch programmieren willst.<br />
Mit dem oben angepassten Code wird jetzt also der Titel verwaltet.<br />
Wenn ich mein Beispiel aufrufe, wird zuerst die Übersicht über alle Newsletter gezeigt.<br />
<img src="/images/blog/cakephp/newsletter_uebersicht.png" alt="Startseite vom Newsletter Modell" /><br />
Wenn auf <strong>edit</strong> gedrückt wird, dann kann ein Eintrag bearbeitet werden.<br />
Falls hier ein falscher Wert eingegeben wurde, wie mein Egon hier, dann wird die Fehlermeldung ausgegeben.<br />
<img src="/images/blog/cakephp/newsletter_edit.png" alt="Falsche Eingabe im Titel" /><br />
Und schon ist eine Anwendung fertig <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Naja, fast oder?</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/juchu-erstes-modell-mit-cakephp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erste Gehversuche mit CakePHP</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/erste-gehversuche-mit-cakephp</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/erste-gehversuche-mit-cakephp#comments</comments>
		<pubDate>Wed, 27 May 2009 18:01:23 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=1208</guid>
		<description><![CDATA[Ich habe jetzt endlich mal die Zeit gefunden ein bisschen das Framework CakePHP auszuprobieren. Der erste Eindruck ist einfach nur schön! In der Serie Newssystem beschreibe ich die Eigenschaften eines Newssystems. CakePHP bietet sehr gute Vorraussetzungen um dieses Newssystem umzusetzen. Es baut auf den MVC Designpattern auf und ist in sich sehr schön strukturiert. Damit [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe jetzt endlich mal die Zeit gefunden ein bisschen das <a href="http://cakephp.org/">Framework CakePHP </a>auszuprobieren.<br />
Der erste Eindruck ist einfach nur schön!<br />
In der Serie <a href="http://www.baldenhofer.eu/blog/series/newssystem">Newssystem</a> beschreibe ich die Eigenschaften eines Newssystems. CakePHP bietet sehr gute Vorraussetzungen um dieses Newssystem umzusetzen.<br />
Es baut auf den <a href="http://de.wikipedia.org/wiki/Model_View_Controller">MVC Designpattern</a> auf und ist in sich sehr schön strukturiert.<br />
Damit ich beim Newssystem erstellen auch etwas lerne, werde ich es also mit CakePHP umsetzen.</p>
<h3>Installation und Konfiguration</h3>
<p>Im <a href="http://book.cakephp.org/view/218/Tutorials-Examples">Tutorials</a> wird sehr schön beschrieben wie du die erste Applikation erstellen kannst.<br />
Ich musste meinen Apache noch ein wenig überreden, dass er die .htaccess auch wirklich ausliest.<br />
Dazu habe ich in meinem VHOST folgende Informationen eingetragen:</p>
<p class="code">
&lt;VirtualHost nemo_newsletter&gt;<br />
&nbsp;&nbsp;ServerAdmin root@localhost<br />
&nbsp;&nbsp;ServerName nemo_newsletter<br />
&nbsp;&nbsp;DocumentRoot &#8220;/home/roland/workspace/newsletter&#8221;<br />
&nbsp;&nbsp;&lt;Directory &#8220;/home/roland/workspace/newsletter&#8221;&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;Options Indexes FollowSymLinks<br />
&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride ALL<br />
&nbsp;&nbsp;&nbsp;&nbsp;Order allow,deny<br />
&nbsp;&nbsp;&nbsp;&nbsp;Allow from all<br />
&nbsp;&nbsp;&lt;/Directory&gt;<br />
&nbsp;&nbsp;&lt;IfModule mpm_peruser_module&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;ServerEnvironment apache apache<br />
&nbsp;&nbsp;&lt;/IfModule&gt;<br />
&lt;/VirtualHost&gt;
</p>
<p>Wie du siehst, heisst mein lokaler Server nemo_newsletter.<br />
Und der rootpath ist /home/roland/workspace/newsletter.<br />
Spannend ist vor allem der Eintrag <span class="code">AllowOverride ALL</span><br />
Dieser erlaubt es, dass dein Server die .htaccess ausführt.<br />
Eventuell hilft auch noch der Eintrag <span class="code">Options Indexes FollowSymLinks</span><br />
Nachdem ich diese Einträge vorgenommen habe, konnte ich so wie im Tutorial beschrieben meine erste Applikation zusammenstecken.<br />
Ich hab natürlich keine Jobs Applikation erstellt, sondern mal mit einer newsletters Applikation angefangen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Bisher macht es wirklich Spaß!<br />
Wenn ich mal ein bisschen weiter bin, werde ich mich wieder melden.</p>
<hr /><h2>Ähnliche Beiträge</h2><ul></ul><hr /><small>www.baldenhofer.eu © seit 2009 <br />
Dieser Feed kommt vom <a href="http://www.baldenhofer.eu/blog">Guggat emol Blog</a>, viel Spa&#223; beim Lesen! &#220;ber  Links zu Artikeln freuen wir uns, jedoch bitte bindet nicht einfach unsere Inhalte in eure Seite ein, danke. Hinweis für Feedleser: Beiträge, die Quellcode enthalten sind auf der Webseite meist besser lesbar, als in einem Feed-Reader. 
<br /> 4e3744397ab2a417f811b29573bcbef4)</small>]]></content:encoded>
			<wfw:commentRss>http://www.baldenhofer.eu/blog/it/programmieren/erste-gehversuche-mit-cakephp/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

