<?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; Weight-Modell backen</title>
	<atom:link href="http://www.baldenhofer.eu/blog/tag/cakephp/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>Weight-Modell backen</title>
		<link>http://www.baldenhofer.eu/blog/it/weight-modell-backen</link>
		<comments>http://www.baldenhofer.eu/blog/it/weight-modell-backen#comments</comments>
		<pubDate>Tue, 25 Oct 2011 22:53:01 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[model]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2221</guid>
		<description><![CDATA[Nachdem die Personen nun ein Modell (user.php) haben, wollen wir noch die Gewichtsangaben in ein Modell gießen. Dazu gehst du wieder in das Verzeichnis /app und rufst wieder ../cake/console/cake bake auf. Welcome to CakePHP v1.3.10 Console --------------------------------------------------------------- App : app Path: /home/roland/workspace/weightapplication/app --------------------------------------------------------------- Interactive Bake Shell --------------------------------------------------------------- [D]atabase Configuration [M]odel [V]iew [C]ontroller [P]roject [F]ixture [T]est [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem die Personen nun ein Modell (user.php) haben, wollen wir noch die Gewichtsangaben in ein Modell gießen.<br />
Dazu gehst du wieder in das Verzeichnis <strong>/app</strong> und rufst wieder <span class=“code“>../cake/console/cake bake</span> auf.</p>
<pre class=“code“>
Welcome to CakePHP v1.3.10 Console

---------------------------------------------------------------

App : app

Path: /home/roland/workspace/weightapplication/app

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

> M   

---------------------------------------------------------------

Bake Model

Path: /home/roland/workspace/weightapplication/app/models/

---------------------------------------------------------------

Use Database Config: (default/test) 

[default] > 

Possible Models based on your current database:

1. User

2. Weight

Enter a number from the list above,

type in the name of another model, or 'q' to exit  

[q] > 2
</pre>
<p>Diesmal bin ich gleich bis zu den Modellen durchgegangen und gebe die 2 für Weight ein.</p>
<pre class=“code“>
[q] > 2

A displayField could not be automatically detected

would you like to choose one? (y/n) 

> y

1. id

2. user_id

3. weight

4. created

Choose a field from the options above:  

> 3
</pre>
<p>Diesmal erkennt Cake Console nicht welche Felder wir später anzeigen lassen wollen. Wir wählen das Gewicht.<br />
Danach generieren wir wieder die Validierungen.</p>
<p>Für id:</p>
<pre class=“code“>
> 3

Would you like to supply validation criteria 

for the fields in your model? (y/n) 

[y] > 

Field: id

Type: integer

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] > 
</pre>
<p>Für User-ID</p>
<pre class=“code“>

[29] > 

Field: user_id

Type: integer

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[20] > 
</pre>
<p>Hier wollen wir keine weiteren Validierungen.<br />
Für unser Gewicht wollen wir notempty verwenden:</p>
<pre class=“code“>
[n] > 

Field: weight

Type: float

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] > 19
</pre>
<p>created lassen wir wie es ist:</p>
<pre class=“code“>
[n] > 

Field: created

Type: timestamp

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] > 
</pre>
<p>Die Relation zur User-Tabelle ist eine BelongsTo-Relation. Die werden wir mit den folgenden Einträgen erstellen:</p>
<pre class=“code“>
[29] > 

Would you like to define model associations

(hasMany, hasOne, belongsTo, etc.)? (y/n) 

[y] > 

One moment while the associations are detected.

---------------------------------------------------------------

Please confirm the following associations:

---------------------------------------------------------------

Weight belongsTo User? (y/n) 

[y] >
</pre>
<p>Weitere Relationen brauchen wir nicht.<br />
Es wird uns nochmal angezeigt wie das Modell wohl aussehen wird.</p>
<pre class=“code“>
[y] > 

Would you like to define some additional model associations? (y/n) 

[n] > 

---------------------------------------------------------------

The following Model will be created:

---------------------------------------------------------------

Name:       Weight

DB Table:   `weights`

Validation: Array

(

    [user_id] => Array

        (

            [numeric] => numeric

        )

    [weight] => Array

        (

            [notempty] => notempty

        )

)

Associations:

	Weight belongsTo User

---------------------------------------------------------------

Look okay? (y/n) 

[y] > 
</pre>
<p>Auch die Simpletests können wir vorbereiten lassen und fertig ist die Installation.</p>
<pre code=“class“>
[y] > 

Baking model class for Weight...

Creating file /home/roland/workspace/weightapplication/app/models/weight.php

Wrote `/home/roland/workspace/weightapplication/app/models/weight.php`

SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n) 

[y] > 

You can download SimpleTest from http://simpletest.org

Baking test fixture for Weight...

Creating file /home/roland/workspace/weightapplication/app/tests/fixtures/weight_fixture.php

Wrote `/home/roland/workspace/weightapplication/app/tests/fixtures/weight_fixture.php`

Bake is detecting possible fixtures..

Creating file /home/roland/workspace/weightapplication/app/tests/cases/models/weight.test.php

Wrote `/home/roland/workspace/weightapplication/app/tests/cases/models/weight.test.php`

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

> 
</pre>
<p>So, jetzt haben wir für die Tabellen users und weights angelegt. </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/weight-modell-backen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User-Modell für den Datenbankzugriff in CakePHP backen</title>
		<link>http://www.baldenhofer.eu/blog/it/user-modell-fur-den-datenbankzugriff-in-cakephp-backen</link>
		<comments>http://www.baldenhofer.eu/blog/it/user-modell-fur-den-datenbankzugriff-in-cakephp-backen#comments</comments>
		<pubDate>Sun, 23 Oct 2011 22:49:40 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[model]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2218</guid>
		<description><![CDATA[In CakePHP gibt es Konsoleapplikationen mit denen du ohne großen Aufwand Modelle, Controller und Views erstellen kannst. Für unsere Gewichtsapplikation werden wir zuerst die Modelle erstellen. Wechsle in das Verzeichnis /app der Gewichtsapplikation. Dort rufst du mit ../cake/console/cake bake die Bäckerei auf. Wie du sehen kannst, sind die Konsoleanwendungen von Cake im Verzeichnis /cake/console hinterlegt. [...]]]></description>
			<content:encoded><![CDATA[<p>In CakePHP gibt es Konsoleapplikationen mit denen du ohne großen Aufwand Modelle, Controller und Views erstellen kannst.<br />
Für unsere Gewichtsapplikation werden wir zuerst die Modelle erstellen.<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/modelle_anlegen.png"><img class="alignnone size-full wp-image-2219" title="modelle_anlegen" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/modelle_anlegen.png" alt="Komponentenübersicht Modelle anlegen" width="696" height="873" /></a><br />
Wechsle in das Verzeichnis <strong>/app</strong> der Gewichtsapplikation.<br />
Dort rufst du mit <span class="“code“">../cake/console/cake bake</span> die Bäckerei auf.<br />
Wie du sehen kannst, sind die Konsoleanwendungen von Cake im Verzeichnis <strong>/cake/console</strong> hinterlegt. Schau einfach mal rein.<br />
Wenn du den Aufruf durchgeführt hast, erscheint folgende Auswahl:</p>
<pre class="“code“">Welcome to CakePHP v1.3.10 Console

---------------------------------------------------------------

App : app

Path: /home/roland/workspace/weightapplication/app

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

&gt;</pre>
<p>Hier kannst du auswählen was du backen willst.<br />
Wir wollen zuerst unsere Modelle backen, also geben wir M ein.<br />
Die nächste Frage lautet ob wir unsere Modelle anhand der Definitionen der Default-Database-Connection oder der Test-Connection erstellen wollen.</p>
<pre class="“code“">&gt; M       

---------------------------------------------------------------

Bake Model

Path: /home/roland/workspace/weightapplication/app/models/

---------------------------------------------------------------

Use Database Config: (default/test) 

[default] &gt;</pre>
<p>Hier kannst du return drücken, da wir die default-Konfiguration nehmen wollen.<br />
Als nächstes werden die Tabellen, die derzeitig in der Datenbank definiert sind, angezeigt:</p>
<pre class="“code“">[default] &gt; 

Possible Models based on your current database:

1. User

2. Weight

Enter a number from the list above,

type in the name of another model, or 'q' to exit  

[q] &gt;</pre>
<p>Jetzt lassen wir die Modelle erstellen. Du gibst hierfür die 1 und 2 ein.<br />
Fangen wir also mit 1 an:</p>
<pre class="“code“">[q] &gt; 1   

Would you like to supply validation criteria 

for the fields in your model? (y/n) 

[y] &gt;</pre>
<p>Die Modell-Attribute können mit Standard-Validierungen überprüft werden.<br />
Wir wollen das der Name und die E-Mail Adresse korrekt eingegeben werden.<br />
Also sagen wir ja (return)<br />
Das erste Feld ist die id.<br />
Hier werden folgende Optionen angeboten:</p>
<pre class="“code“">[y] &gt; 

Field: id

Type: integer

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] &gt;</pre>
<p>Mit 29 (also return) geben wir an, dass wir keine besondere Überprüfung für dieses Feld durchführen wollen.</p>
<p>Als nächstes wird das Feld name angezeigt.</p>
<pre class="“code“">[29] &gt; 

Field: name

Type: string

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[19] &gt;</pre>
<p>Die Cake Console ist ziemlich clever und schlägt und notempty vor. Also machen wir das so.<br />
Als nächstes fragt Die Cake Console uns ob wir weitere Überprüfungen durchführen wollen. Hier können wir vorerst mit Return (also nein) weitergehen.</p>
<pre class="“code“">[n] &gt; 

Field: email

Type: string

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[10] &gt;</pre>
<p>Das nächste Feld ist die E-Mail Adresse. Hier erkennt Cake Console dass wir eine valide E-Mail Adresse eingeben wollen (also irgendwas mit BLA@BLUB.LULL).<br />
Wir akzeptieren die 10.<br />
Die Frage, ob wir noch weitere Validierungen angeben wollen, beantworten wir diesmal mit y.<br />
Jetzt geben wir noch isUnique als Validierungsregel an. Damit wird erreicht, dass jede E-Mail Adresse im System einmalig ist.</p>
<pre class="“code“">[10] &gt; isUnique

Would you like to add another validation rule? (y/n) 

[n] &gt;</pre>
<p>Jetzt können wir wieder return drücken.</p>
<p>Das letzte Feld, mit zu überprüfenden Eigenschaften, ist das Passwort.<br />
Hier können wir z.B. eine Minimallänge vorgeben.</p>
<pre class="“code“">[19] &gt; 16

Would you like to add another validation rule? (y/n) 

[n] &gt;</pre>
<p>Die Beschreibung lassen wir optional.</p>
<pre class="“code“">[n] &gt; 

Field: description

Type: text

---------------------------------------------------------------

Please select one of the following validation options:

---------------------------------------------------------------

1 - alphanumeric

2 - between

3 - blank

4 - boolean

5 - cc

6 - comparison

7 - custom

8 - date

9 - decimal

10 - email

11 - equalto

12 - extension

13 - inlist

14 - ip

15 - maxlength

16 - minlength

17 - money

18 - multiple

19 - notempty

20 - numeric

21 - phone

22 - postal

23 - range

24 - ssn

25 - time

26 - url

27 - userdefined

28 - uuid

29 - Do not do any validation on this field.

... or enter in a valid regex validation string.

[29] &gt;</pre>
<p>Als nächstes werden wir gefragt ob wir Verknüpfungen zu anderen Modellen haben wollen.<br />
Hier sagen wir ja, denn wir wollen unsere Personen mit vielen Gewichtsangaben versehen.</p>
<pre class="“code“">[29] &gt; 

Would you like to define model associations

(hasMany, hasOne, belongsTo, etc.)? (y/n) 

[y] &gt;</pre>
<p>Wenn du return drückst wird die weights Tabelle angezeigt. Diese beinhaltet eine user_id und kann daher eine Relation zu unserer users-Tabelle haben.</p>
<pre class="“code“">[y] &gt; 

One moment while the associations are detected.

---------------------------------------------------------------

Please confirm the following associations:

---------------------------------------------------------------

User hasMany Weight? (y/n) 

[y] &gt;</pre>
<p>Wir sagen bei dieser Frage ja (return)</p>
<pre class="“code“">[y] &gt; 

Would you like to define some additional model associations? (y/n) 

[n] &gt;</pre>
<p>Hier bleiben wir bei nein.<br />
Als letztes wird uns angezeigt was wir da so zusammenkonfiguriert haben:</p>
<pre class="“code“">[n] &gt; 

---------------------------------------------------------------

The following Model will be created:

---------------------------------------------------------------

Name:       User

DB Table:   `users`

Validation: Array

(

    [name] =&gt; Array

        (

            [notempty] =&gt; notempty

        )

    [email] =&gt; Array

        (

            [email] =&gt; email

            [isUnique] =&gt; isUnique

        )

    [password] =&gt; Array

        (

            [minlength] =&gt; minlength

        )

)

Associations:

	User hasMany Weight

---------------------------------------------------------------

Look okay? (y/n) 

[y] &gt;</pre>
<p>Das sieht gut aus! Also sagen wir ja.</p>
<pre class="“code“">[y] &gt; 

Baking model class for User...

Creating file /home/roland/workspace/weightapplication/app/models/user.php

Wrote `/home/roland/workspace/weightapplication/app/models/user.php`

SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n) 

[y] &gt;</pre>
<p>Wie du sehen kannst, wird das Modell user.php in das Verzeichnis /app/models/users.php geschrieben.<br />
Die Frage ob wir die Unit-Tests für unser Modell erstellen wollen, können wir mit ja beantworten. Dann können wir später mit SimpleTest alles durchtesten.</p>
<p>Jetzt wird alles fertiggestellt und wir kommen wieder zur Startseite.</p>
<pre class="“code“">[y] &gt; 

You can download SimpleTest from http://simpletest.org

Baking test fixture for User...

Creating file /home/roland/workspace/weightapplication/app/tests/fixtures/user_fixture.php

Wrote `/home/roland/workspace/weightapplication/app/tests/fixtures/user_fixture.php`

Bake is detecting possible fixtures..

Creating file /home/roland/workspace/weightapplication/app/tests/cases/models/user.test.php

Wrote `/home/roland/workspace/weightapplication/app/tests/cases/models/user.test.php`

---------------------------------------------------------------

Interactive Bake Shell

---------------------------------------------------------------

[D]atabase Configuration

[M]odel

[V]iew

[C]ontroller

[P]roject

[F]ixture

[T]est case

[Q]uit

What would you like to Bake? (D/M/V/C/P/F/T/Q) 

&gt;</pre>
<p>Hier brechen wir mit Q ab und schauen uns zuerst unser Modell an.<br />
Gehe zur Validierung des Passworts und ändere die Validierung so ab, dass wir eine Minimallänge von sechs Zeichen vorsehen:</p>
<pre class="“code“">		'password' =&gt; array(

			'minlength' =&gt; array(

				'rule' =&gt; array('minlength', 6),

				//'message' =&gt; 'Your custom message here',

				//'allowEmpty' =&gt; false,

				//'required' =&gt; false,

				//'last' =&gt; false, // Stop validation after this rule

				//'on' =&gt; 'create', // Limit validation to 'create' or              'update' operations

			),</pre>
<p>Alle anderen vorgefertigten Definitionen lassen wir vorerst einfach mal so stehen.<br />
Das Modell ist jetzt erst einmal ausreichend konfiguriert.</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/user-modell-fur-den-datenbankzugriff-in-cakephp-backen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gewichtsapplikation Datenbanktabellen anlegen</title>
		<link>http://www.baldenhofer.eu/blog/it/gewichtsapplikation-datenbanktabellen-anlegen</link>
		<comments>http://www.baldenhofer.eu/blog/it/gewichtsapplikation-datenbanktabellen-anlegen#comments</comments>
		<pubDate>Sat, 22 Oct 2011 06:49:33 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[tabellen]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2213</guid>
		<description><![CDATA[Hurra! Gestern hatten wir Go-Live und jetzt kann ich die Arbeitszeiten wieder etwas herunterschrauben. Damit kann ich endlich wieder ein bisschen an der CakePHP Grundlagen-Applikation Gewichtsapplikation weiterbasteln Heute werden wir die Datenbanktabellen für die Applikation anlegen. Wir benötigen zwei Tabellen. Eine Tabelle, in der die Namen der einzelnen Teilnehmer und eine Beschreibung abgelegt werden und [...]]]></description>
			<content:encoded><![CDATA[<p>Hurra!<br />
Gestern hatten wir Go-Live und jetzt kann ich die Arbeitszeiten wieder etwas herunterschrauben. Damit kann ich endlich wieder ein bisschen an der CakePHP Grundlagen-Applikation Gewichtsapplikation weiterbasteln <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Heute werden wir die Datenbanktabellen für die Applikation anlegen.<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellenkonfiguration.png"><img class="alignnone size-full wp-image-2215" title="tabellenkonfiguration" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellenkonfiguration.png" alt="Komponentenansicht der Tabellenkonfiguration" width="696" height="873" /></a><br />
Wir benötigen zwei Tabellen. Eine Tabelle, in der die Namen der einzelnen Teilnehmer und eine Beschreibung abgelegt werden und eine Tabelle in der die Gewichtsangaben hinterlegt sind.<br />
Die beiden Tabellen sehen irgendwie wie folgt aus:<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellen.png"><img class="alignnone size-full wp-image-2216" title="tabellen" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/tabellen.png" alt="Die Tabellen und ihre Relationen" width="299" height="151" /></a><br />
Um die Datenbank zu konfigurieren habe ich ein kleines SQL-Script geschrieben:</p>
<pre class="“code“"># This SQL-commands create the tables for weightapplication.
drop database weightapplication;
create database weightapplication;
use weightapplication;
create table users (  id          int(11) not null auto_increment primary key \
                    , name        varchar(255) not null \
                    , email       varchar(255) not null \
                    , password    varchar(32) not null \
                    , description text null \
                   );
create table weights (  id          int(11) not null auto_increment primary key \
                      , user_id     int(11) not null
                      , weight      float not null \
                      , created     timestamp NOT NULL DEFAULT now() \
                     );</pre>
<p>Dieses Script habe ich unter dem Namen <strong>create_database.sql</strong> im Verzeichnis <strong>/app/config</strong> abgelegt.<br />
Jetzt wechsle in das Verzeichnis <strong>/app/config</strong> und führe den Befehl <span class="“code“">mysql -uroot -p &lt; create_database.sh</span> aus. Du wirst nach dem Passwort gefragt, dass du für deinen MySQL-Server benötigst.<br />
Das Script löscht eine zuvor angelegte Datenbank, legt die weightapplication Datenbank an und erstellt die Tabellen für Personen (users) und die Gewichtsangaben.</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/gewichtsapplikation-datenbanktabellen-anlegen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache-Webserver konfigurieren</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/apache-webserver-konfigurieren</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/apache-webserver-konfigurieren#comments</comments>
		<pubDate>Sat, 08 Oct 2011 22:54:52 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[config]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2180</guid>
		<description><![CDATA[Als nächstes werden wir den Apache-Webserver für unsere weightapplication-Webapplikation konfigurieren. Hier sind folgende Dateien und Verzeichnisse betroffen: /etc/hosts Damit unser lokaler Webserver überhaupt vom Webbrowser gefunden werden kann, müssen wir unseren Localhost mitteilen, dass wir eine Applikation mit dem Namen weightapplication haben. Öffne die Datei /etc/hosts (mit Root-Rechten) und füge folgende Zeile hinzu: 127.0.0.1 weightapplication [...]]]></description>
			<content:encoded><![CDATA[<p>Als nächstes werden wir den Apache-Webserver für unsere weightapplication-Webapplikation konfigurieren.</p>
<p>Hier sind folgende Dateien und Verzeichnisse betroffen:</p>
<p><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/apache-setup.png"><img class="alignnone size-full wp-image-2181" title="apache-setup" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/apache-setup.png" alt="Setup der Apache Komponenten" width="696" height="873" /></a></p>
<h3>/etc/hosts</h3>
<p>Damit unser lokaler Webserver überhaupt vom Webbrowser gefunden werden kann, müssen wir unseren Localhost mitteilen, dass wir eine Applikation mit dem Namen weightapplication haben.<br />
Öffne die Datei <strong>/etc/hosts</strong> (mit Root-Rechten) und füge folgende Zeile hinzu:</p>
<p>127.0.0.1 weightapplication</p>
<p>Damit wird festgelegt, dass der DNS weightapplication auf der IP-Adresse 127.0.0.1 (localhost) erreicht werden kann.<br />
Speichere die Datei.</p>
<h3>/etc/apache2/sites-available</h3>
<p>In diesem Verzeichnis legst du eine Datei weightapplication an.<br />
Diese befüllst du mit folgenden Zeilen:</p>
<pre class="code">NameVirtualHost weightapplication
&lt;VirtualHost weightapplication&gt;
    ServerAdmin root@localhost
    ServerName weightapplication
    DocumentRoot "/home/roland/workspace/weightapplication/app/webroot"
    &lt;Directory "/home/roland/workspace/weightapplication/app/webroot"&gt;
        Options Indexes FollowSymLinks
        AllowOverride FileInfo Indexes
        Order allow,deny
        Allow from all
    &lt;/Directory&gt;
&lt;IfModule alias_module&gt;
&lt;/IfModule&gt;
&lt;IfModule mpm_peruser_module&gt;
    ServerEnvironment apache apache
&lt;/IfModule&gt;
&lt;/VirtualHost&gt;</pre>
<p>Anstatt <strong>/home/roland/workspace</strong> fügst du bitte den WORKSPACE Pfad von deiner Konfiguration ein. Spannend ist hier, dass das Webroot von CakePHP in <strong>/app/webroot</strong> liegt. Hier greift der Apache auf die index.php zu. Alle darunterliegenden Verzeichnisse sind für Webanwender versteckt. Damit hat CakePHP eine einfache und effiziente Möglichkeit implementiert, die Konfigurationen der Applikation vor unliebsamen Anwendern zu verstecken. <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nachdem du diese Datei abgespeichert hast, müssen wir noch dafür Sorge tragen, dass Apache diese Konfiguration auch verwendet.</p>
<p>Hierfür führst du den Befehl</p>
<p><strong>a2ensite weightapplication</strong></p>
<p>Dieser Befehl legt in <strong>/etc/apache2/sites-enabled</strong> einen symbolischen Link auf die Datei weightapplication im Verzeichnis <strong>/etc/apache2/sites-available</strong><br />
.<br />
So, fertig ist die Apache Konfiguration.</p>
<p>Nun müssen wir unserem Apache die neue Konfiguration mitgeben.</p>
<p>Mit <strong>apachectl configtest</strong> können wir kontrollieren ob wir uns in der weightapplication Datei vertippt haben. Falls der Check Syntax ok zurückliefert, kannst du mit <strong>apachectl graceful</strong> den Apache neu starten.</p>
<p>Fertig konfiguriert <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/apache-webserver-konfigurieren/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenbank Setup für CakePHP Gewichtsapplikation</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/datenbank-setup-fur-cakephp-gewichtsapplikation</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/datenbank-setup-fur-cakephp-gewichtsapplikation#comments</comments>
		<pubDate>Thu, 06 Oct 2011 22:15:36 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2177</guid>
		<description><![CDATA[&#8230; da hatte ich in den letzten zwei Monaten wieder viel zu viel zu tun gehabt &#8230; Naja, jetzt mach ich halt weiter. Der letzte Artikel zur Gewichtsapplikation ist vom August und handelte davon wie man die Entwicklungsumgebung für CakePHP aufsetzt. Vermutlich habt ihr schon völlig vergessen von was ich hier quassele. Deshalb nochmal der [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; da hatte ich in den letzten zwei Monaten wieder viel zu viel zu tun gehabt &#8230; Naja, jetzt mach ich halt weiter.</p>
<p>Der letzte Artikel zur Gewichtsapplikation ist vom August und handelte davon wie man die <a href="http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsrechner-setup">Entwicklungsumgebung für CakePHP</a> aufsetzt.<br />
Vermutlich habt ihr schon völlig vergessen von was ich hier quassele. Deshalb nochmal der Link zum <a href="http://www.baldenhofer.eu/blog/it/programmieren/reload-mit-cakephp-zur-applikation">Reload mit CakePHP zur Applikation</a>.</p>
<p>Dieser Artikel hier kümmert sich um den Setup der notwendigen Datenbank.</p>
<p>Wir wollen unsere Personen- und Gewichts-Angaben in einer MySQL-Datenbank ablegen.<br />
CakePHP kann auch für andere Datenbanken konfiguriert werden, ich habe mich jedoch in diesem Projekt für eine Standard-MySQL-Datenbank entschieden.</p>
<h3>MySQL – Datenbank aufsetzen</h3>
<p>Du hast ja zuvor den MySQL Server aufgesetzt.<br />
Jetzt werden wir die Datenbank weightapplication aufsetzen und unser CakePHP entsprechend dafür konfigurieren.<br />
Folgende Komponenten werden hiermit abgearbeitet:</p>
<h3><a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/mysql-setup.png"><img class="alignnone size-full wp-image-2178" title="mysql-setup" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/10/mysql-setup.png" alt="Komponentendiagramm was hier aufgesetzt wird." width="696" height="873" /></a></p>
<p>MySQL Datenbank</h3>
<p>Gehe auf eine Konsole und füge den Befehl <strong>mysql -uroot -p</strong> ein.<br />
Dann musst du dein Datenbank-Root-Passwort eingegeben dass du beim DB-Server-Setup vergeben hast.<br />
Du bist nun auf der DB-Server Konsole.</p>
<p><em>Welcome to the MySQL monitor.  Commands end with ; or \g. </em><br />
<em>Your MySQL connection id is 1364 </em><br />
<em>Server version: 5.1.54-1ubuntu4 (Ubuntu) </em></p>
<p><em>Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. </em><br />
<em>This software comes with ABSOLUTELY NO WARRANTY. This is free software, </em><br />
<em>and you are welcome to modify and redistribute it under the GPL v2 license </em></p>
<p><em>Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the current input statement. </em></p>
<p><em>mysql&gt;</em></p>
<p>Hier gibst du <strong>create database weightapplication;</strong> ein.<br />
Das System liefert dir zurück:<br />
<em>mysql&gt; create database weightapplication; </em><br />
<em>Query OK, 1 row affected (0.03 sec)</em></p>
<p>Mit <strong>quit</strong> kannst du die Konsole wieder verlassen.</p>
<p>Datenbankverbindung im CakePHP konfigurieren.<br />
Kopiere die Datei <strong>/app/config/database.php.default</strong> zu <strong>/app/config/database.php</strong>.<br />
Öffne <strong>/app/config/database.php</strong>.<br />
Darin findest du folgende Zeilen, die du wie hier beschrieben veränderst:</p>
<p>class DATABASE_CONFIG {</p>
<p>var $default = array(<br />
&#8216;driver&#8217; =&gt; &#8216;mysql&#8217;,<br />
&#8216;persistent&#8217; =&gt; false,<br />
&#8216;host&#8217; =&gt; &#8216;localhost&#8217;,<br />
&#8216;login&#8217; =&gt; &#8216;root&#8217;,<br />
&#8216;password&#8217; =&gt; &#8216;DEIN MYSQL LOGIN PASSWORT&#8217;,<br />
&#8216;database&#8217; =&gt; &#8216;weightapplication&#8217;,<br />
&#8216;prefix&#8217; =&gt; &#8221;,<br />
);</p>
<p>var $test = array(<br />
&#8216;driver&#8217; =&gt; &#8216;mysql&#8217;,<br />
&#8216;persistent&#8217; =&gt; false,<br />
&#8216;host&#8217; =&gt; &#8216;localhost&#8217;,<br />
&#8216;login&#8217; =&gt; &#8216;user&#8217;,<br />
&#8216;password&#8217; =&gt; &#8216;password&#8217;,<br />
&#8216;database&#8217; =&gt; &#8216;test_database_name&#8217;,<br />
&#8216;prefix&#8217; =&gt; &#8221;,<br />
);<br />
}</p>
<p>Beim login verwenden wir root, bei password trägst du dein DB-root-Passwort ein. Und bei database wird weightapplication eingetragen.<br />
Fertig ist die Konfiguration (Falls du andere Verbindungseinstellungen verwenden willst, dann darfst du das natürlich gerne tun <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Einfach nachlesen wie du User in MySQL anlegst).<br />
Die Test-DB kannst du entweder löschen oder vorerst so stehen lassen. In unserem kleinen Projektsetup verwende ich sie vorerst nicht.</p>
<p>Jetzt kann sich CakePHP an die Datenbank anmelden.</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/datenbank-setup-fur-cakephp-gewichtsapplikation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP Session-Verlust</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/cakephp-session-verlust</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/cakephp-session-verlust#comments</comments>
		<pubDate>Mon, 05 Sep 2011 12:08:31 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2154</guid>
		<description><![CDATA[Jetzt habe ich endlich einen Knopf gefunden der mir erlaubt dass CakePHP die Session nicht mehr verliert. Im Blogbeitrag http://derickng.com/posts/36-cakephp-losing-or-missing-session wurde die Lösung beschrieben. Aber von vorne: Problemstellung Du verwendest CakePHP und Sessions und ein wenig AJAX auf deiner Seite. Wenn du Security.level im core.php auf high gestellt hast, wird jedesmal eine neue SessionID generiert. [...]]]></description>
			<content:encoded><![CDATA[<p>Jetzt habe ich endlich einen Knopf gefunden der mir erlaubt dass CakePHP die Session nicht mehr verliert.</p>
<p>Im Blogbeitrag <a href="http://derickng.com/posts/36-cakephp-losing-or-missing-session">http://derickng.com/posts/36-cakephp-losing-or-missing-session</a> wurde die Lösung beschrieben.</p>
<p>Aber von vorne:</p>
<h3>Problemstellung</h3>
<p>Du verwendest CakePHP und Sessions und ein wenig AJAX auf deiner Seite.</p>
<p>Wenn du Security.level im core.php auf high gestellt hast, wird jedesmal eine neue SessionID generiert.</p>
<p>Das ist zwar sicher und super und überhaupt, aber AJAX generiert keine neuen Sessions und übernimmt den alten Session-Kopf.</p>
<p>Und RUMMSSSS du fällst aus deiner Session raus und musst dich neu einloggen.</p>
<p>Also, Security auf medium stellen dann kannst du das Problem umgehen.</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/cakephp-session-verlust/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>Komponentenübersicht für Gewichtsapplikation</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/komponentenubersicht-fur-gewichtsapplikation</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/komponentenubersicht-fur-gewichtsapplikation#comments</comments>
		<pubDate>Wed, 03 Aug 2011 10:41:23 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2141</guid>
		<description><![CDATA[Bisher habe ich für die Gewichtsapplikation im Artikel Reload mit CakePHP zur Applikation die Vision beschrieben, die ich umsetzen will. Danach habe ich die  Anwendungsfälle für Personen und Gewicht (und den vergessenen Anwendungsfall) aufgelistet. Damit will ich erreichen, dass wir tatsächlich verstehen was wir nach Abschluss der Entwicklung wirklich bekommen werden. Weiterhin habe ich die [...]]]></description>
			<content:encoded><![CDATA[<p>Bisher habe ich für die Gewichtsapplikation im Artikel <a href="http://www.baldenhofer.eu/blog/it/programmieren/reload-mit-cakephp-zur-applikation">Reload mit CakePHP zur Applikation </a>die Vision beschrieben, die ich umsetzen will.<br />
Danach habe ich die  <a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-person-verwalten">Anwendungsfälle für Personen</a> und <a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-gewicht-verwalten">Gewicht</a> (<a href="http://www.baldenhofer.eu/blog/it/programmieren/hups-habe-einen-anwendungsfall-vergessen">und den vergessenen Anwendungsfall</a>) aufgelistet. Damit will ich erreichen, dass wir tatsächlich verstehen was wir nach Abschluss der Entwicklung wirklich bekommen werden.<br />
Weiterhin habe ich die <a href="http://www.baldenhofer.eu/blog/guggat_emol/akteure-fuer-die-gewichtsapplikation">Akteure</a> aufgelistet, die mit dieser Applikation kommunizieren.<br />
Und dann bin ich gleich eingestiegen und habe erklärt wie die <a href="http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-eclipse-setup">PHP-Entwicklungsumgebung für Eclipse</a> aussehen soll, habe <a href="http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-cakephp-grundinstallation">CakePHP heruntergeladen</a> und die <a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichsapplikation-konfigurationsdatei-core-php-anpassen">config.php</a> erläutert.<br />
Wenn ihr jetzt schon den Überblick verloren habt kann ich euch gut verstehen.<br />
Es fehlt ein Übersichtsdiagramm das die zu installierenden und konfigurierenden Elemente darstellt.<br />
Das liefere ich hiermit nach:<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/Komponentenuebersicht.png"><img class="alignnone size-full wp-image-2142" title="Komponentenübersicht" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/08/Komponentenuebersicht.png" alt="" width="696" height="873" /></a><br />
Ich habe alle Komponenten, die ich bisher beschrieben habe, grün eingefärbt. Komponenten, an denen ich gerade dran bin, habe ich gelb eingefärbt. Im Moment sind das die Artikel in diesem Blog.<br />
In dem Diagramm findest du folgende Komponenten:</p>
<ul>
<li>Ubuntu-Entwicklungsrechner<br />
Darauf entwickle ich die Gewichtsapplikation.</li>
<li>www.baldenhofer.eu/blog<br />
(Rat mal selber <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) Wie du kommst nicht drauf? Hier dokumentiere ich die Gewichtsapplikation mit Hilfe von Blog-Artikeln</li>
<li>Apache Webserver<br />
Dieser Webserver beheimatet die Sourcen unserer Applikation.</li>
<li>Eclipe PHP Entwicklungsumgebung<br />
Habe ich schon beschrieben. Hiermit versuche ich die Monstarapplikation umzusetzen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>Enterprise Architect<br />
Mit diesem Werkzeug zeichne ich die lustigen Diagramme. Bisher habe ich die Anwendungsfälle, Akteure und die Komponentenübersicht aufgezeichnet. Vielleicht darf ich später noch ein paar Aktivitätendiagramme oder so zeichnen. Im Moment, glaube ich, müsste das so reichen um diese Applikation sinnvoll beschreiben zu können. Die Klassen werde ich noch aufzeichnen, damit wir sehen wie alles zusammenhängt. Das Tool brauchst du nicht selbst installieren. Die Doku findest du ja hier im Blog.</li>
<li>MySQL Datenbank Server<br />
Beinhaltet unsere Datenbank für die Gewichtsapplikation.</li>
<li>PHP Interpreter<br />
Wir bauen eine PHP Applikation (liegt vielleicht daran, dass CakePHP ein PHP Framework ist <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) Deshalb muss auf unserem Rechner ein PHP Interpreter für Apache konfiguriert werden.</li>
<li>Webbrowser<br />
Auf der Entwicklermaschine muss ein Webbrowser verfügbar sein, damit wir unsere lokale Webapplikation überhaupt verwenden können. Darauf gehe ich nicht näher ein. Falls du tatsächlich keinen (aktuellen) Webbrowser auf deiner Maschine hast, installiere einfach einen und fertig.</li>
<li>/etc/hosts<br />
In der Entwicklungsumgebung haben wir (normalerweise) keinen eigenen Domain Name Server. Wir werden unsere Rechner-IP verwenden um auf unsere Lokale Webserver-Umgebung die weightapplication routen zu können.Damit erreichen wir, dass wir mit unserem lokal auf der Entwicklungsumgebung installierten Webbrowser unsere Webapplikation verwenden können.</li>
<li>/etc/apache2/sites-available<br />
Hier werden wir unsere weightapplication eintragen damit diese vom Webserver überhaupt gefunden werden kann.</li>
<li>/etc/apache2/sites-enabled<br />
Bei Ubuntu / Debian kann hier festgelegt werden, welche Webapplikationen überhaupt angezeigt werden.</li>
<li>WORKSPACE/weightapplication<br />
Beinhaltet die meisten Dateien die zu unserer Webapplikation gehören. Die Dateien, die nicht in diesem Ordner liegen, sind Konfigurationsdateien für den jeweiligen Server.</li>
<li>Application-Configuration<br />
Hier sammele ich alle Dateien, die für den Betrieb einer CakePHP-Webapplikation konfiguriert werden müssen. Bisher habe ich die /app/config/core.php beschrieben.</li>
<li>/app/config/database.php<br />
Hier werden die Datenbank-Zugangsdaten für unsere Applikation konfiguriert. Wie das geht erläutere ich noch in einem eigenen Artikel.</li>
<li>/app/tmp<br />
Hier finden sich alle temporären Dateien. Ich werde noch ein wenig ausführlicher darauf eingehen.</li>
<li>/app/models<br />
CakePHP verwendet in erster Linie das Model View Controller (MVC) Pattern. Die Modelle (wie z.B. Person und Weight) werden wir hier ablegen.</li>
<li>/app/controllers<br />
Hier werden wir die Controller unserer Gewichtsapplikation ablegen.</li>
<li>/app/views<br />
Und damit wir auch was sehen können, werden wir hier alle Ansichten programmieren.</li>
<li>CakePHP<br />
Habe ich schon im Artikel <a title="Permanent Link: Entwicklungsumgebungs-Setup für die Gewichsapplikation CakePHP Grundinstallation" href="../it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-cakephp-grundinstallation" rel="bookmark">Entwicklungsumgebungs-Setup für die Gewichsapplikation CakePHP Grundinstallation</a> beschrieben wie wir das herunterladen und verwenden können.</li>
</ul>
<p>So, jetzt weiß ich wenigstens was ich noch alles zu dokumentieren habe und ihr könnt euch hoffentlich ein besseres Bild davon machen, was es alles braucht um eine Webapplikation in Betrieb zu nehmen.<br />
In nächster Zeit werde ich diese Komponentenübersicht immer wieder zeigen und die Komponente, die in dem jeweiligen Artikel beschrieben wird, entsprechend rot markieren.<br />
Damit werden die Artikel zwar etwas länger aber du kannst schnell erkennen wo ich gerade herumfummle.</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/komponentenubersicht-fur-gewichtsapplikation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gewichtsapplikation-Konfigurationsdatei core.php anpassen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/gewichsapplikation-konfigurationsdatei-core-php-anpassen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/gewichsapplikation-konfigurationsdatei-core-php-anpassen#comments</comments>
		<pubDate>Tue, 26 Jul 2011 22:10:44 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[konfiguration]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2130</guid>
		<description><![CDATA[Für unsere Gewichtsapplikation müssen wir einige Konfigurationen vornehmen, damit das System überhaupt richtig funktionieren kann. Zuerst kümmern wir uns um die core.php Konfigurationsdatei. Du findest sie im Verzeichnis WORKSPACE/weightapplication/app/config wobei WORKSPACE bei mir z.B. /home/roland/workspace lautet. Die core.php stellt Konfigurationsmöglichkeiten für die zu erstellende Applikation bereit.. Sie ist im Prinzip super beschrieben, manchmal ist es [...]]]></description>
			<content:encoded><![CDATA[<p>Für unsere Gewichtsapplikation müssen wir einige Konfigurationen vornehmen, damit das System überhaupt richtig funktionieren kann.<br />
Zuerst kümmern wir uns um die core.php Konfigurationsdatei. Du findest sie im Verzeichnis <strong>WORKSPACE/weightapplication/app/config</strong> wobei <strong>WORKSPACE</strong> bei mir z.B. /<strong>home/roland/workspace</strong> lautet.<br />
Die <strong>core.php</strong> stellt Konfigurationsmöglichkeiten für die zu erstellende Applikation bereit.. Sie ist im Prinzip super beschrieben, manchmal ist es jedoch einfacher wenn man die Beschreibung nochmals anders formuliert präsentiert bekommt.<br />
Ich gehe sie mal von oben nach unten durch.</p>
<h3>configure::write(&#8216;debug&#8217;, DEBUG_LEVEL)</h3>
<p>Hier kannst du einstellen, wie viele Debug-Meldungen du sehen willst.<br />
Während der Entwicklung ist es sinnvoll diesen Debu-Level so hoch wie möglich einzustellen.<br />
Denn du willst ja sehen, wenn irgendwo eine Variable nicht gesetzt ist oder eine Warnung generiert wird.<br />
Der Debug-Level 2 ist für die Entwicklung gut geeignet. Er zeigt dir SQL-Zugriffe, Notice-Meldungen, Warnungen und natürlich Errors.<br />
Wenn du dein Layout gestalten willst, empfiehlt sich dieser Level jedoch nicht. Du solltest ihn dann auf 0 oder 1 heruntersetzen. Dann bleiben die SQL-Zugriffe verborgen.<br />
Da wir zuerst „nur“ programmieren werden, ist für uns der Debug-Level 2 für die Entwicklungsumgebung die passende Wahl.</p>
<pre class="“code“">/**
 * CakePHP Debug Level:
 *
 * Production Mode:
 * 	0: No error messages, errors, or warnings shown. Flash messages redirect.
 *
 * Development Mode:
 * 	1: Errors and warnings shown, model caches refreshed, flash messages halted.
 * 	2: As in 1, but also with full debug messages and SQL output.
 *
 * In production mode, flash messages redirect after a time interval.
 * In development mode, you need to click the flash message to continue.
 */
    Configure::write('debug', 2);</pre>
<p>Meistens möchte ich den Development-Code ohne Anpassung in die Produktion wuchten.<br />
Deshalb modifiziere ich das Definieren des Log-Levels ein wenig:</p>
<pre class="“code“">if(     empty($_SERVER['SERVER_ADDR'])
    || (strpos($_SERVER['SERVER_ADDR'], '192.168.') === 0)
    || (strpos($_SERVER['SERVER_ADDR'], '127.0.') === 0)
   ){
    Configure::write('debug', 2);
}else{
    Configure::write('debug', 0);
}</pre>
<p>Jetzt wird jedesmal wenn ich mit einem lokalen Server arbeite der Entwicklungs-Debug-Level gesetzt. Ansonsten der Produktionsdebuglevel. Wenn du deinen Debuglevel auf diese Weise einstellen willst, musst du natürlich deine eigene IP-Adresse auslesen.<br />
Die findest du in der $_SERVER Variable. Mit print_r($_SERVER); kannst du dir die Variablen ausgeben lassen.</p>
<h3>Log-Level für tmp/*.log Dateien</h3>
<p>CakePHP schreibt die Debug-Informationen auch in Log-Dateien, wenn du dies zulässt. Ich bin froh, dass damit auch während des Betriebs auf Fehler reagiert werden kann. Falls du mal eine hochfrequentierte Monsterapplikation erstellt hast, solltest du darüber nachdenken ob du dir den Luxus von sauberen Fehlermeldungen leisten kannst. Unsere Gewichts-Applikation wird wohl kaum ein neues Facebook und deshalb glaube ich, können wir die Debug-Meldungen auch in der Produktion mitlaufen lassen.<br />
Du siehst hier zwei Einträge (Configrue::write(&#8216;log&#8217; , LEVEL) und configure::write(&#8216;log&#8217;, true)<br />
Die Standardkonfiguration (log, true) reicht uns vorerst aus. Du kannst gerne mit den Logleveln herumspielen und sehen was CakePHP alles schreibt. Die Log-Dateien findest du unter /app/tmp/logs.</p>
<pre class="“code“">/**
 * CakePHP Log Level:
 *
 * In case of Production Mode CakePHP gives you the possibility to continue logging errors.
 *
 * The following parameters can be used:
 *  Boolean: Set true/false to activate/deactivate logging
 *    Configure::write('log', true);
 *
 *  Integer: Use built-in PHP constants to set the error level (see error_reporting)
 *    Configure::write('log', E_ERROR | E_WARNING);
 *    Configure::write('log', E_ALL ^ E_NOTICE);
 */
	Configure::write('log', true);</pre>
<p>Weiter unten findest du in der config.php noch folgenden Eintrag:</p>
<pre class="“code“">/**
 * Defines the default error type when using the log() function. Used for
 * differentiating error logging and debugging. Currently PHP supports LOG_DEBUG.
 */
	define('LOG_ERROR', 2);</pre>
<p>Hier wird festgelegt welche Log-Levels ausgegeben werden sollen. Mit 2 wird festgelegt, dass Notice, Warning und Error geschrieben wird. Ich würde das so stehen lassen.</p>
<p>Encoding lassen wir auf utf8 stehen (App.encoding)</p>
<h3>Admin Routing</h3>
<p>Wir wollen, dass unsere Administratoren eine andere Oberfläche und andere Funktionen erhalten wie Besucher. Deshalb schalten wir das Admin-Routing frei.</p>
<pre class="“code“">/**
 * Uncomment the define below to use CakePHP prefix routes.
 *
 * The value of the define determines the names of the routes
 * and their associated controller actions:
 *
 * Set to an array of prefixes you want to use in your application. Use for
 * admin or other prefixed routes.
 *
 * 	Routing.prefixes = array('admin', 'manager');
 *
 * Enables:
 *	`admin_index()` and `/admin/controller/index`
 *	`manager_index()` and `/manager/controller/index`
 *
 * [Note Routing.admin is deprecated in 1.3.  Use Routing.prefixes instead]
 */
Configure::write('Routing.prefixes', array('admin'));</pre>
<p>Du kannst auch mehrere Routings eintragen, wie beispielsweise admin für Administratoren und manager für Management. Wir belassen es bei admin.</p>
<h3>Session Handling (Session.save)</h3>
<p>Mit den Sessions werden wir viel zu tun haben wenn wie CakePHP Applikationen bauen. Die Sessions erlauben es uns, Anwender einloggen zu lassen und wenn sie zu lange inaktiv sind wieder auszuloggen.</p>
<pre class="“code“">/**
 * The preferred session handling method. Valid values:
 *
 * 'php'	 		Uses settings defined in your php.ini.
 * 'cake'		Saves session files in CakePHP's /tmp directory.
 * 'database'	Uses CakePHP's database sessions.
 *
 * To define a custom session handler, save it at /app/config/.php.
 * Set the value of 'Session.save' to  to utilize it in CakePHP.
 *
 * To use database sessions, run the app/config/schema/sessions.php schema using
 * the cake shell command: cake schema create Sessions
 *
 */
	Configure::write('Session.save', 'php');</pre>
<p>Ich lasse dies meist auf dem Standard stehen. Wenn du nicht ewig rumsuchen willst, kannst du auch auf &#8216;cake&#8217; stellen. Dann kannst du die Session-Daten im /app/tmp auslesen.<br />
Die Datenbank-Session ist auch cool, denn dann werden die Sessions nicht in Dateien sondern in der Datenbank abgelegt. Dazu benötigst du jedoch noch ein entsprechendes Schema in der Datenbank. Für die erste CakePHP-Anwendung finde ich das etwas übertrieben. Also nehmen wir den Standard, mit &#8216;php&#8217;.<br />
Die weitere Konfigurationen (&#8216;Session.model&#8217;, &#8216;Session.table&#8217; und &#8216;Session.database&#8217;) verwenden wir vorerst nicht, da wir ja keine Datenbank-Sessions verwenden. Also lassen wir die auskommentiert stehen.<br />
Die Sessions müssen zwischen dem Server und dem Client ausgetauscht werden. Das wird über Cookies erfolgen. Der Name des Cookies sollte nur alpanumerische Zeichen beinhalten. Im Standardfall steht hier CAKEPHP. Wir können ja mal unseren Cookie umbenennen und WEIGHTAPPLICATION verwenden? Dann finden wir ihn auch einfacher im Browser-Cookie Cache. Wenn du das nicht willst, ist es nicht wichtig. CAKEPHP tut genausogut. Außer wenn du mehrere CakePHP Applikationen verwendest. Dann kann der Browser (oder du selber beim Debuggen) ein wenig durcheinander kommen <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<pre class="“code“">/**
 * The name of CakePHP's session cookie.
 *
 * Note the guidelines for Session names states: "The session name references
 * the session id in cookies and URLs. It should contain only alphanumeric
 * characters."
 * @link http://php.net/session_name
 */
    // Wir wollen einen eigenen Cookie
    // Configure::write('Session.cookie', 'CAKEPHP');
    Configure::write('Session.cookie', 'WEIGHTAPPLICATION');</pre>
<p>Mit Session.timeout kannst du festlegen, wie lange ein Anwender sich nicht mehr am Server melden kann bevor die Session abläuft. Wenn du oft Timeouts hast, z.B. weil du große Texte schreiben lässt, dann solltest du hier höher gehen.<br />
Um ein bisschen Gewicht einzugeben sollten zwei Minuten jedoch ausreichend sein. Wenn die Person zu langsam ist um in zwei Minuten drei Zahlen einzutippen sollte sie zuerst Sport treiben und dann erst die Applikation verwenden <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="“code“">/**
 * Session time out time (in seconds).
 * Actual value depends on 'Security.level' setting.
 */
	Configure::write('Session.timeout', '120');</pre>
<p>Session.start und Session.checkAgent lassen wir stehen wie sie sind. Wir wollen, dass die Sessions automatisch starten und wir verwenden aktuelle Browser.</p>
<h3>Security Level einstellen</h3>
<p>Die folgenden zwei Einträge kümmern sich um die Sicherheitseinstellung.</p>
<pre class="“code“">/**
 * The level of CakePHP security. The session timeout time defined
 * in 'Session.timeout' is multiplied according to the settings here.
 * Valid values:
 *
 * 'high'   Session timeout in 'Session.timeout' x 10
 * 'medium' Session timeout in 'Session.timeout' x 100
 * 'low'    Session timeout in 'Session.timeout' x 300
 *
 * CakePHP session IDs are also regenerated between requests if
 * 'Security.level' is set to 'high'.
 */
	Configure::write('Security.level', 'medium');

/**
 * A random string used in security hashing methods.
 */
	Configure::write('Security.salt', 'DYhG93b0qyJfIxJulchenubAlIWwvniR2G0FgaC9mi');

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
	Configure::write('Security.cipherSeed', '768593096432442496749683645');</pre>
<p>Security.level auf medium ist ausreichend. Den Security.salt und Security.cipherSeed veränderst du bitte. Dieser wird für die Generierung von Passwörtern und anderen hashing-Methoden eingesetzt. Damit wird es für die bösen Angreifer etwas schwerer unsere Daten auszulesen.<br />
Ich habe die beiden hier direkt schon mal verändert. Aber bitte nehme eigenen Werte.</p>
<h3>Caching-Probleme für .js, .css und images umgehen</h3>
<p>Manchmal funktioniert eine Webapplikation nicht richtig, da die Browser und Proxies die .js, .css und images zwischenspeichern. Das ist bei statischen Seiten vernünftig, da damit weniger Daten ausgetauscht werden müssen.<br />
Wir sind vorerst vorsichtig und wollen dass sichergestellt wird dass Änderungen ankommen.<br />
Deshalb schalten wir Asset.timestamp auf force.</p>
<pre class="“code“">/**
 * Apply timestamps with the last modified time to static assets (js, css, images).
 * Will append a querystring parameter containing the time the file was modified. This is
 * useful for invalidating browser caches.
 *
 * Set to `true` to apply timestamps, when debug = 0, or set to 'force' to always enable
 * timestamping.
 */
    Configure::write('Asset.timestamp', 'force');</pre>
<p>Die Komprimiererei Asset.filter.css und Asset.filter.js lassen wir im Moment ausgeschalten. Falls du Performanceprobleme bei unserer Gewichtsapplikation zu spüren bekommst, dann kannst du hiermit etwas spielen.</p>
<p>Access Control Lists (ACL) werden wir für die erste Applikation auch nicht verwenden. ACL ist cool, verrenkt dir jedoch am Anfang ein wenig das Gehirn. Wir haben das in miradlokit aktiviert, aber da machen wir auch ein wenig mehr als in der Gewichtsapplikation notwendig ist.</p>
<h3>Zeitzone einstellen</h3>
<p>Ich schalte hier die Europa/Berlin Zeit frei. UTC sollte auch passen&#8230;</p>
<pre class="“code“">/**
 * If you are on PHP 5.3 uncomment this line and correct your server timezone
 * to fix the date &amp; time related errors.
 */
//date_default_timezone_set('UTC');
date_default_timezone_set('Europe/Berlin')</pre>
<p>Die restlichen Einträge lassen wir so stehen wie sie definiert sind. Dort wird definiert wie die Caching-Verhalten von CakePHP sein sollen. Uns reicht hier das Standardverhalten locker aus.</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/gewichsapplikation-konfigurationsdatei-core-php-anpassen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entwicklungsumgebungs-Setup für die Gewichsapplikation CakePHP Grundinstallation</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-cakephp-grundinstallation</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-cakephp-grundinstallation#comments</comments>
		<pubDate>Tue, 26 Jul 2011 13:09:54 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2126</guid>
		<description><![CDATA[Ich möchte eine CakePHP-Applikation erstellen, also müssen wir in unser weightapplication Projekt die hierfür notwendigen Quellen einspielen. Mein PHP-Projekt wurde in /home/roland/workspace/weightapplication angelegt. Als nächstes musst du CakePHP von cakephp.org herunterladen. Verwende bitte die Stable-Version. Ich habe hier die Version 1.3.10 heruntergeladen (war gerade die aktuelle Stable-Version). Das CakePHP Archiv beinhaltet die folgende Struktur: CakePHP [...]]]></description>
			<content:encoded><![CDATA[<p>Ich möchte eine CakePHP-Applikation erstellen, also müssen wir in unser weightapplication Projekt die hierfür notwendigen Quellen einspielen.<br />
Mein<a href="http://www.baldenhofer.eu/blog/it/programmieren/entwicklungsumgebungs-setup-fur-die-gewichsapplikation-eclipse-setup"> PHP-Projekt</a> wurde in <strong>/home/roland/workspace/weightapplication</strong> angelegt.<br />
Als nächstes musst du CakePHP von <a href="http://cakephp.org/">cakephp.org </a>herunterladen. Verwende bitte die <a href="http://github.com/cakephp/cakephp/downloads">Stable-Version</a>. Ich habe hier die Version 1.3.10 heruntergeladen (war gerade die aktuelle Stable-Version).<br />
Das CakePHP Archiv beinhaltet die folgende Struktur:<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/cakephp-struktur.png"><img class="alignnone size-full wp-image-2127" title="cakephp-struktur" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/cakephp-struktur.png" alt="cakePHP Struktur" width="602" height="510" /></a><br />
CakePHP liefert einen Basisordner (z.B.  /cakephp-cakephp-b0abad1/) und darin die Verzeichnisse<br />
/app<br />
/cake<br />
/plugins<br />
/vendors<br />
Entpacke dieses zip und kopiere den Inhalt des Basisordners (also /app, /cake usw.) in das weightapplication Projekt. Bei mir werden die Dateien also nach /home/roland/workspace/weightapplication geschrieben.<br />
Wenn du die Dateien kopiert hast, gehe in die Eclipse Perspektive PHP und wähle die PHP Explorer Sicht aus. Mit F5 kannst du die Ansicht aktualisieren.<br />
Im PHP Explorer sollte folgende Dateien und Verzeichnisse erscheinen, kann natürlich je nach CakePHP-Version ein klein wenig variieren.<br />
<a href="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/weightapplication.png"><img class="alignnone size-full wp-image-2128" title="weightapplication" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/weightapplication.png" alt="Weightapplication" width="423" height="275" /></a><br />
Damit haben wir das CakePHP-Framework zur Verfügung.<br />
Als nächstes werden wir uns um die Konfiguration kümmern.</p>
<p style="margin-bottom: 0cm;">Ich möchte eine CakePHP-Applikation erstellen, also müssen wir in unser weightapplication Projekt die hierfür notwendigen Quellen einspielen.</p>
<p style="margin-bottom: 0cm;">Mein PHP-Projekt wurde in /home/roland/workspace/weightapplication angelegt.</p>
<p style="margin-bottom: 0cm;">Als nächstes musst du CakePHP von cake.org herunterladen. Verwende bitte die Stable-Version. Ich habe hier die Version 1.3.10 heruntergeladen (war gerade die aktuelle Stable-Version).</p>
<p style="margin-bottom: 0cm;">Das CakePHP Archiv beinhaltet die folgende Struktur:</p>
<p style="margin-bottom: 0cm;">BILD cakephpstruktur</p>
<p style="margin-bottom: 0cm;">CakePHP liefert einen Basisordner (z.B. /cakephp-cakephp-b0abad1/) und darin die Verzeichnisse</p>
<p style="margin-bottom: 0cm;">/app</p>
<p style="margin-bottom: 0cm;">/cake</p>
<p style="margin-bottom: 0cm;">/plugins</p>
<p style="margin-bottom: 0cm;">/vendors</p>
<p style="margin-bottom: 0cm;">Entpacke dieses zip und kopiere den Inhalt des Basisordners (also /app, /cake usw.) in das weightapplication Projekt. Bei mir werden die Dateien also nach /home/roland/workspace/weightapplication geschrieben.</p>
<p style="margin-bottom: 0cm;">Wenn du die Dateien kopiert hast, gehe in die Eclipse Perspektive PHP und wähle die PHP Explorer Sicht aus. Mit F5 kannst du die Ansicht aktualisieren.</p>
<p style="margin-bottom: 0cm;">Im PHP Explorer sollte folgende Dateien und Verzeichnisse erscheinen, kann natürlich je nach CakePHP-Version ein klein wenig variieren.</p>
<p style="margin-bottom: 0cm;">BILD weightapplication</p>
<p style="margin-bottom: 0cm;">Damit haben wir das CakePHP-Framework zur Verfügung.</p>
<p style="margin-bottom: 0cm;">Als nächstes werden wir uns um die Konfiguration kümmern.</p>
<p style="margin-bottom: 0cm;">
<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-cakephp-grundinstallation/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>Hups! Habe einen Anwendungsfall vergessen</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/hups-habe-einen-anwendungsfall-vergessen</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/hups-habe-einen-anwendungsfall-vergessen#comments</comments>
		<pubDate>Sat, 23 Jul 2011 22:50:58 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Anforderung]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2111</guid>
		<description><![CDATA[Beim Schreiben der Gewichts-Anwendungsfälle ist mir aufgefallen, dass bei den Personen-Anwendungsfällen noch ein Anwendungsfall fehlt. Wir sollten für unsere statistischen Auswertungen noch die Grösse der Person aufnehmen. Das soll vom Registrierten Anwender selbst durchführbar sein. Das Projekt hat noch nicht richtig begonnen und schon fange ich mit Änderungen an Naja, das ist im Projektbusiness ja [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Schreiben der <a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-gewicht-verwalten">Gewichts-Anwendungsfälle</a> ist mir aufgefallen, dass bei den <a href="http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-person-verwalten">Personen-Anwendungsfällen </a>noch ein Anwendungsfall fehlt.</p>
<p>Wir sollten für unsere statistischen Auswertungen noch die Grösse der Person aufnehmen.<br />
Das soll vom Registrierten Anwender selbst durchführbar sein.</p>
<p>Das Projekt hat noch nicht richtig begonnen und schon fange ich mit Änderungen an <img src='http://www.baldenhofer.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Naja, das ist im Projektbusiness ja so üblich gelle?</p>
<p>Also hier also die ergänzten Anwendungsfälle:</p>
<div id="attachment_2112" class="wp-caption alignnone" style="width: 391px"><img class="size-full wp-image-2112" title="anwendungsfaelle_person_verwalten" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/anwendungsfaelle_person_verwalten1.png" alt="Erweiterte Personenanwendungsfälle" width="381" height="571" /><p class="wp-caption-text">Erweiterte Personenanwendungsfälle</p></div>
<p>Der neue Anwendungsfall lautet <strong>Details zu Person verändern</strong>. Hier kann ein Registrierter Anwender die Grössenangabe eingeben.</p>
<h3>Details zu Person verändern</h3>
<p><strong>Akteur</strong></p>
<p>Registrierter Anwender</p>
<p><strong>Vorbedingung</strong></p>
<p>Der Registrierte Anwender ist angemeldet.</p>
<p><strong>Ablauf</strong></p>
<ul>
<li>Der User wählt den Link <strong>Details zu Person verändern </strong> aus.</li>
<li>Seine persönlichen Daten werden angezeigt.</li>
<li>Er kann das Feld <strong>Grösse in cm </strong>ausfüllen</li>
<li>Weiter kann er den Namen ändern</li>
<li>Nach dem Ändern drückt er speichern</li>
<li>Das System überprüft ob die Felder korrekt befüllt sind und speichert die Daten ab.</li>
</ul>
<p><strong>Nachbedingung</strong></p>
<p>Die Daten sind gespeichert worden.</p>
<p>So, das sollte fürs Erste reichen.</p>
<p>Als nächstes gehen wir her und generieren die dazugehörige Applikation.</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/hups-habe-einen-anwendungsfall-vergessen/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gewichtsapplikation Anwendungsfälle Gewicht verwalten</title>
		<link>http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-gewicht-verwalten</link>
		<comments>http://www.baldenhofer.eu/blog/it/programmieren/gewichtsapplikation-anwendungsfaelle-gewicht-verwalten#comments</comments>
		<pubDate>Thu, 21 Jul 2011 22:31:10 +0000</pubDate>
		<dc:creator>Roland</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Anwendungsfall]]></category>
		<category><![CDATA[cakephp]]></category>

		<guid isPermaLink="false">http://www.baldenhofer.eu/blog/?p=2107</guid>
		<description><![CDATA[Nach den Personen-Anwendungsfällen müssen wir uns noch über die Gewichtsverwaltung unterhalten. Ein registrierter Benutzer soll seine Gewichtsinformationen eingeben, ändern und die Auswertungen durchführen können. Gewichtsangaben auflisten Akteur Registrierter Anwender Vorbedingung Der Registrierte Anwender ist angemeldet. Ablauf Der Registrierte Anwender wählt den Link Meine Gewichtsangaben aus. Es werden alle bisher eingegebenen Gewichtsangaben aufgelistet. Nachbedingung Die Gewichtsangaben [...]]]></description>
			<content:encoded><![CDATA[<p>Nach den <a href="../it/programmieren/gewichtsapplikation-anwendungsfaelle-person-verwalten">Personen-Anwendungsfällen</a> müssen wir uns noch über die Gewichtsverwaltung unterhalten.</p>
<div id="attachment_2109" class="wp-caption alignnone" style="width: 397px"><img class="size-full wp-image-2109" title="anwendungsfaelle_gewicht" src="http://www.baldenhofer.eu/blog/wp-content/uploads/2011/07/anwendungsfaelle_gewicht1.png" alt="Anwendungsfälle Gewicht" width="387" height="356" /><p class="wp-caption-text">Anwendungsfälle Gewicht</p></div>
<p>Ein registrierter Benutzer soll seine Gewichtsinformationen eingeben, ändern und die Auswertungen durchführen können.</p>
<h3>Gewichtsangaben auflisten</h3>
<p><strong>Akteur</strong></p>
<p>Registrierter Anwender</p>
<p><strong>Vorbedingung</strong></p>
<p>Der Registrierte Anwender ist angemeldet.</p>
<p><strong>Ablauf</strong></p>
<ul>
<li>Der Registrierte Anwender wählt den Link <strong>Meine Gewichtsangaben </strong>aus.</li>
<li>Es werden alle bisher eingegebenen Gewichtsangaben aufgelistet.</li>
</ul>
<p><strong>Nachbedingung</strong></p>
<p>Die Gewichtsangaben sind angezeigt worden.</p>
<h3>Gewicht eingeben</h3>
<p><strong>Akteur</strong></p>
<p>Registrierter Anwender</p>
<p><strong>Vorbedingung</strong></p>
<p>Der Registrierte Anwender ist angemeldet.</p>
<p><strong>Ablauf</strong></p>
<ul>
<li>Der Registrierte Anwender wählt den Link <strong>Gewicht eingeben</strong> aus.</li>
<li>Er gibt den Tag und das Gewicht ein</li>
<li>Er drückt <strong>speichern</strong></li>
<li>Das System kontrolliert, ob bereits an diesem Tag ein Gewicht eingegeben wurde. (Mehrmals wiegen ergibt irgendwie keinen Sinn&#8230;</li>
<li>Falls alles korrekt eingegeben wurde, wird das Gewicht zur Person gespeichert.</li>
</ul>
<p><strong>Nachbedingung</strong></p>
<p>Das Gewicht wurde angelegt.</p>
<h3>Gewicht ändern</h3>
<p><strong>Akteur</strong></p>
<p>Registrierter Anwender</p>
<p><strong>Vorbedingung</strong></p>
<p>Der Registrierte Anwender ist angemeldet.</p>
<p><strong>Ablauf</strong></p>
<ul>
<li>Der Registrierte Anwender listet seine Gewichtseinträge auf und wählt ein Gewichtseintrag aus.</li>
<li>Er kannden Tag und das Gewicht ändern</li>
<li>Er drückt <strong>speichern</strong></li>
<li>Das System kontrolliert, ob bereits an diesem Tag ein anderes Gewicht eingegeben wurde. (Mehrmals wiegen ergibt irgendwie keinen Sinn&#8230;</li>
<li>Falls alles korrekt eingegeben wurde, wird das Gewicht zur Person gespeichert.</li>
</ul>
<p><strong>Nachbedingung</strong></p>
<p>Das Gewicht wurde geändert.</p>
<h3>Auswertung fahren</h3>
<p><strong>Akteur</strong></p>
<p>Registrierter Anwender</p>
<p><strong>Vorbedingung</strong></p>
<p>Der Registrierte Anwender ist angemeldet.</p>
<p><strong>Ablauf</strong></p>
<ul>
<li>Der Registrierte Anwender wählt den Link <strong>Auswertung</strong> aus.</li>
<li>Das System lädt alle zu dieser Person hinterlegten Gewichtsangaben und generiert eine Übersicht über den Verlauf des Gewichts.</li>
<li>Weiter wird anhand der Stammdaten der Person aufgelistet ob der BMI soweit ok ist, oder wo sich die Person befindet.</li>
<li>Weiter wird angezeigt wie der allgemeine Trend (also ich werde runder, ich nehme ab, ich bleibe auf meinem Gewicht) angezeigt.</li>
</ul>
<p><strong>Nachbedingung</strong></p>
<p>Die Auswertung wurde angezeigt.</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/gewichtsapplikation-anwendungsfaelle-gewicht-verwalten/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

