<?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>. miradlo bloggt   &#187; Theme Wahlfreiheit für Besucher</title>
	<atom:link href="http://www.miradlo.net/bloggt/author/roland/feed" rel="self" type="application/rss+xml" />
	<link>http://www.miradlo.net/bloggt</link>
	<description>...rundum Informatik, Webdesign, Webapplikationen, Projekte, Linux und mehr</description>
	<lastBuildDate>Wed, 18 Jan 2012 14:52:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Theme Wahlfreiheit f&#252;r Besucher</title>
		<link>http://www.miradlo.net/bloggt/blog/theme-wahlfreiheit-fuer-besucher</link>
		<comments>http://www.miradlo.net/bloggt/blog/theme-wahlfreiheit-fuer-besucher#comments</comments>
		<pubDate>Sun, 14 Jun 2009 12:25:43 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=2126</guid>
		<description><![CDATA[Ich bin zur Zeit am &#252;berlegen, ob ich meinen Blog ein wenig auffrischen soll.
Da gibt es &#220;berlegungen  wie:

Soll ich die Kategorien weiter pflegen?
Wieso ist Navigation und Funktion miteinander in der gleichen Liste?
Welches Layout sollte ich nun nutzen?
Gef&#228;llt das alte Design den Kunden mehr als das Neue?

Solche Gedanken hat man ja immer, wenn man eine [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin zur Zeit am &#252;berlegen, ob ich <a href="http://www.baldenhofer.eu/blog">meinen Blog</a> ein wenig auffrischen soll.<br />
Da gibt es &#220;berlegungen  wie:</p>
<ul>
<li>Soll ich die Kategorien weiter pflegen?</li>
<li>Wieso ist Navigation und Funktion miteinander in der gleichen Liste?</li>
<li>Welches Layout sollte ich nun nutzen?</li>
<li>Gef&#228;llt das alte Design den Kunden mehr als das Neue?</li>
</ul>
<p>Solche Gedanken hat man ja immer, wenn man eine Webseite neu gestaltet.<br />
Und deshalb bin ich auf folgende Idee gekommen:</p>
<h3>Lass doch das Design vom Kunden ausw&#228;hlen</h3>
<p>In bestimmten Rahmen kann man sich erlauben zwei- oder drei Designs anzubieten.<br />
Wenn man auf die Seite kommt, erscheint das aktuelle Design.<br />
Wenn man dann ein anderes Design, mit z.B. mehr Funkionalit&#228;t, haben will, kann man dies ausw&#228;hlen.<br />
Das Design wird gewechselt und der Kunde hat andere M&#246;glichkeiten als zuvor.</p>
<h4>Ja aber, dann muss man ja Kundendaten speichern!</h4>
<p>Wenn man will, dass der Kunde beim n&#228;chsten Mal das gleiche Design vorfindet, muss man mindestens einen Cookie auf der Kundenmaschine abspeichern.<br />
Oder noch komplizierter: Der Kunde muss sich am System anmelden.<br />
Das w&#228;re bei einem normalen Blog oder einer normalen Webseite wirklich ein Overkill.<br />
Ich will einfach nur die Wahlm&#246;glichkeit bereitstellen. Wenn ein Kunde dann das Design wechseln will, soll er hierzu eine M&#246;glichkeit erhalten.<br />
Falls der Kunde Cookies zul&#228;sst, kann man immer noch &#252;ber eine permanente Umstellung nachdenken.</p>
<h3>Ist das nicht eine halbherzige Idee?</h3>
<p>Ich denke nicht. Es l&#228;sst dem Kunden die Freiheit, zwischen verschiedenen Designs auszuw&#228;hlen.<br />
Vielleicht ist der Kunde heute positiv eingestellt und will eine sch&#246;ne, leuchtende Darstellung?<br />
Vielleicht will er heute nur Text, da er schnell was suchen muss?<br />
Wenn man sich den Mehraufwand leisten kann, dann w&#228;re es vermutlich eine gute Idee mehr als ein Design zur Verf&#252;gung zu haben.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/blog/theme-wahlfreiheit-fuer-besucher/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FuCamp Session Blinde am PC</title>
		<link>http://www.miradlo.net/bloggt/krimskrams/fucamp-session-blinde-am-pc</link>
		<comments>http://www.miradlo.net/bloggt/krimskrams/fucamp-session-blinde-am-pc#comments</comments>
		<pubDate>Sat, 23 May 2009 14:55:44 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[krimskrams]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[barrierearm]]></category>
		<category><![CDATA[fucamp]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1873</guid>
		<description><![CDATA[Eine der letzten Sessions (von 16:00 Uhr an) war am Samstag eine Information &#252;ber Blinde am PC.
Ich habe hier wieder Live gebloggt. Also ist dieser Text wieder ein bisschen wirr  
Markus Heuerung (muhh@byzero.de) hat uns vorgestellt, wie Blinde am PC arbeiten.
Er ist Fachleher im Berufsf&#246;rderungswerk W&#252;rzburg und bildet dort IT Berufe aus.
Er stellte Screenreader, [...]]]></description>
			<content:encoded><![CDATA[<p>Eine der letzten Sessions (von 16:00 Uhr an) war am Samstag eine Information &#252;ber Blinde am PC.</p>
<p>Ich habe hier wieder Live gebloggt. Also ist dieser Text wieder ein bisschen wirr <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Markus Heuerung (muhh@byzero.de) hat uns vorgestellt, wie Blinde am PC arbeiten.</p>
<p>Er ist Fachleher im Berufsf&#246;rderungswerk W&#252;rzburg und bildet dort IT Berufe aus.</p>
<p>Er stellte Screenreader, Braille und Sprachausgabe.</p>
<h3>Screenreader</h3>
<p>Screenreader lesen die Informationen vom Bildschirm aus und bereitet die Information f&#252;r den Blinden vor.</p>
<p>Ein System ist die Braille Zeile. Dabei handelt es sich um ein System dass die Information Zeile f&#252;r Zeile dargestellt. Er gab uns ein Beispiel, wie die Braillschrift funktioniert.</p>
<p>Eine weitere M&#246;glichkeit ist die Sprachausgabe. Hier wird eine synthetische Sprache verwendet um den Text vorzulesen.</p>
<p>Screenreader Produkte: Jaws , Virgo / Cobra, Windows Eyes, NVDA (Open Source). Webanywhere ist eine M&#246;glichkeit f&#252;r Webseiten. Weitere gibt es f&#252;r Firefox usw.</p>
<h3>Betriebssysteme</h3>
<p>Linux (Ubuntu) kann von einem Blinden installiert werden.</p>
<p>MAC OS ist auch schon l&#228;nger definiert.</p>
<p>In Windows sind diese Elemente erst am Kommen.</p>
<h3>Demo</h3>
<p>Er zeigte das Programm Jaws.</p>
<p>Das Programm liest vor was im Moment alles auf dem Bildschirm vorhanden ist.</p>
<p>Wenn der Fokus auf ein Programm gef&#252;hrt wird, wird der Name des Programms und der Inhalt der Darstellung vorgelesen.</p>
<p>Beim Navigieren in einem Filebrowser wird vorgestellt, welche Dateien vorhanden sind und welche Tasten gedr&#252;ckt wurden.</p>
<p>Der Blinde wird somit &#252;ber die Sprachausgabe &#252;ber viele Elemente informiert.</p>
<h3>Die aktuelle Zeile</h3>
<p>Dort wo der Cursor steht ist die aktuelle Zeile. Bei einem Windows Fenster wird z.B. das aktuell selektierte Programm als aktuelle Zeile deklariert.</p>
<h3>Noch ne Demo</h3>
<p>Er verwendete Jaws um zu zeigen wie ein Blinder mit einem Word Programm arbeiten kann.</p>
<p>Dabei hat er ein Word Dokument ge&#246;ffnet und ein neues Dokument erstellt. Jaws las ihm dabei die einzelnen Buchstaben und die einzelnen S&#228;tze vor.</p>
<h3>Tipps zur Softwareentwicklung</h3>
<ul>
<li>Shortcuts</li>
<li>Symbolleisten Grafiksymbole m&#252;ssen beschriftet werden (Altattribute nutzen)</li>
<li>Alles muss mit Tastatur vorhanden sein.</li>
<li>Links im Web grunds&#228;tzlich sinnvoll beschreiben (HIER ist ein bl&#246;der Link <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</li>
</ul>
<p>Access Keys sind nicht standardisiert. Dieses Problem kann man umgehen indem man Sprungmarken einf&#252;gt. Der Blinde lernt die unterschiedlichen Sprungmarken.</p>
<p>Tastenkombinationen k&#246;nnen z.B. ALT SHIFT 1 usw. gesteuert werden. Diese Tasten werden normalerweise von den Programmen nicht benutzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/krimskrams/fucamp-session-blinde-am-pc/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting Things Done Session beim FuCamp in Furtwangen</title>
		<link>http://www.miradlo.net/bloggt/krimskrams/getting-things-done-session-beim-fucamp-in-furtwangen</link>
		<comments>http://www.miradlo.net/bloggt/krimskrams/getting-things-done-session-beim-fucamp-in-furtwangen#comments</comments>
		<pubDate>Sat, 23 May 2009 13:51:46 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[krimskrams]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[fucamp]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1864</guid>
		<description><![CDATA[Oha, schon wieder sitze ich beim Oliver Gassner in einer Session  
Normalerweise laufe ich nicht einer Person bei Barcamps hinterher. Aber heute hatte Oli das Gl&#252;ck oder das Pech, dass er zwei Themen anbot, die mich interessieren. &#220;ber seine Blogzerlegung hatte ich heute Morgen ja schon berichtet.
Bei dieser Session ging um Selbstmanagement nach der [...]]]></description>
			<content:encoded><![CDATA[<p>Oha, schon wieder sitze ich beim <a href="http://blog.oliver-gassner.de/">Oliver Gassner</a> in einer Session <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Normalerweise laufe ich nicht einer Person bei Barcamps hinterher. Aber heute hatte Oli das Gl&#252;ck oder das Pech, dass er zwei Themen anbot, die mich interessieren. &#220;ber seine <a href="http://www.miradlo.net/bloggt/krimskrams/ich-sitz-gerade-auf-dem-fucamp-beim-oliver-gassner-in-der-blog-analyse-session">Blogzerlegung </a>hatte ich heute Morgen ja schon berichtet.</p>
<p>Bei dieser Session ging um Selbstmanagement nach der Strategie &#8220;Getting Things Done&#8221;</p>
<p>Ich versuche hier mal ein Life Blogging durchzuf&#252;hren. Falls die S&#228;tze hier ein wenig willenlos sind, liegt das am direkt runterschreiben und versenden.</p>
<p>Er verwies auf ein Buch <a href="http://www.amazon.de/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280">The art of Stress-Free Productivity</a> von David Allen.</p>
<p>Weiterhin verwies er auf das Buch <a href="http://www.amazon.de/Making-All-Work-Winning-Business/dp/067001995X">Making it all work</a>.</p>
<p>Bei dieser Methode geht es darum die Zeit so einzuteilen, dass f&#252;r Freizeit auch noch was &#252;brig ist.</p>
<p>David Allen sagt, &#8220;your brain dosn´t have a brain&#8221;. Man beh&#228;lt normalerweise seine Aufgaben im Gehirn auf.</p>
<p>Im Berufsleben werden alle Aufgaben auch im Gehirn abgespeichert. Dabei wird Stress aufgebaut. Man denkt st&#228;ndig &#252;ber das jeweilige Problem, die jeweilige Aufgabe nach.</p>
<p>Zu jedem Zeitpunkt erinnert man sich an diverse Aufgaben die man erledigen muss. Man weiss aber noch nicht wann man diese Tasks abarbeiten will. Die Frage, was ist der n&#228;chste Schritt, hat man sich nicht gestellt.</p>
<p>Todo Listen sind oft lang und veraltet&#8230;</p>
<h3>Warum ist das so?</h3>
<p>Im Vergleich zu fr&#252;heren Generationen haben wir deutlich mehr Informationen zu verwalten.</p>
<p>Oliver erkl&#228;rt, dass es sich nicht um neue Techniken handelt, sondern ein paar best practise werden hier geb&#252;ndelt.</p>
<h3>Best Practise beim Erfassen:</h3>
<ul>
<li>Mach das Hirn leer</li>
<li>Alles was rumliegt zusammensammeln und auf einen Stapel legen. (Capture, Erfassen)<br />
Dieses Erfassen muss vollst&#228;ndig sein. Wenn das nicht der Fall ist, werden wieder weitere Stapel generiert und nicht abgearbeitet.</li>
<li>Schau auch wirklich in die erfassten Listen rein.</li>
<li>M&#246;glichst wenig Inboxen, Listen, generieren. Im Idealfall eine Liste, nicht zehn Todo Lists</li>
<li>Auch zuhause muss eine Inbox vorhanden sein. Ansonsten l&#228;uft das Zuhause zur Inbox voll <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<h3>Best Practise Bearbeiten (Im Buch Clarifying)</h3>
<ul>
<li>Aufr&#228;umen und Ordnen der aktuellen Inbox</li>
<li>Verteilen der Aufgaben auf die Themen unmittelbar, sp&#228;ter oder viel sp&#228;ter</li>
<li>Frage ist: Is it actional ?</li>
<li>Die Frage, ob etwas eingeordnet werden kann, muss in zwei- drei Minuten erledigt werden. Wenn das nicht klappt, dann ist hier ein Problem vorhanden.</li>
<li>Die Tasks auf die Termine verteilen (August Sachen in der Inbox August&#8230;)</li>
<li>Kl&#228;ren was die Elemente in der Inbox betrifft wird an dem Tag an dem sie aktuell werden gesetzt.</li>
<li>Falls an dem Tag etwas ca. 2 Minuten ben&#246;tigt, dann mach es sofort. Damit wird der Verwaltungsaufwand verringert. Denn die Verwaltung dieses Tasks dauert l&#228;nger.</li>
<li> Wenn es l&#228;nger als zwei Minuten kostet, muss eine &#8220;Einkaufsliste&#8221; erzeugt werden.</li>
</ul>
<p>Liste wie die Todo Listen aufgebaut werden, sind im Prinzip eine Einkaufsliste. Hier werden sie Context Listen genannt.</p>
<p>Wenn man z.B. zum Metzger geht, dann schreibt man auch nicht auf die Metzgerliste Klopapier, Duschgel usw.</p>
<p>Wo k&#246;nnen die Tasks erledigt werden.</p>
<ul>
<li>Arbeit<br />
Projektleiten, Programmieren</li>
<li>Zuhause<br />
Malen, Tapezieren, Staubsaugen</li>
<li>Unterwegs<br />
Fleischk&#228;se, Sprudel, Ladeger&#228;t</li>
</ul>
<p>Liste f&#252;r z.B. Reifenwechsel:</p>
<ul>
<li>Termin vereinbaren</li>
<li>Reifen ins Auto einladen</li>
<li>Auto vorf&#252;hren</li>
<li>Auto abholen</li>
<li>Reifen einlagern</li>
</ul>
<p>Die n&#228;chste sichtbare Handlung muss definiert werden. Und diese sehr granular. Ansonsten ist sie nicht komplett.</p>
<p>Es kommen nur Aufgaben auf die Liste, die an dem Tag auch wirklich gemacht werden. Wenn also &#8220;Auto abholen&#8221; erst am n&#228;chsten Tag f&#228;llig sein kann, dann kommt diese Aufgabe am n&#228;chsten Tag vor.</p>
<p>Die Trennung der Listen (Arbeit, Zuhause und Unterwegs) helfen den jeweiligen Context auf den richtigen Abarbeitungszeitpunkt zu legen.</p>
<p>Nicht zu viele Context Listen erstellen. Vermutlich sind drei Context Listen vollkommen ausreichend.</p>
<p>Eine Liste &#8220;delegiert&#8221; anlegen. Darin steht drin was Andere f&#252;r einen machen sollen. Diese Liste kann man nehmen um andere zu erinnern und nachzufragen.</p>
<p>Someday Maybe Liste.</p>
<p>Liste f&#252;r alles, wie z.B. &#8220;Welt retten, Wintergarten bauen, Spanisch lernen&#8221;. Die hilft zum Zwischenspeichern und ist f&#252;r alles was jetzt einfach nicht gel&#246;st werden kann.</p>
<h3>Durchsehen</h3>
<p>Alle Listen m&#252;ssen einmal die Woche durchgeschaut werden.<br />
Damit kann man seine Aktionen feiner abstimmen.</p>
<h3>Machen</h3>
<p>Die Listen m&#252;ssen nat&#252;rlich auch abgearbeitet werden <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Das Abarbeiten wird dann pro Liste (im Context) gemacht. Also Arbeit bei Arbeit, Zuhause dann wenn man daheim ist usw.</p>
<p>Die Tasks m&#252;ssen dann noch nach Priorit&#228;ten sortiert werden. Eventuell k&#246;nnen hier die Tasks f&#252;r den jeweiligen Tag noch richtig eingelastet werden. Definition der &#8220;Next Action&#8221;.</p>
<p>Noch was:</p>
<p>Eine Task in der kein Verb vorkommt ist es wohl ein Projektname und keine Task. Schliesslich ist ein Task etwas bei dem etwas getan werden muss. Verb = Tunwort <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/krimskrams/getting-things-done-session-beim-fucamp-in-furtwangen/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ich sitz gerade auf dem FuCamp beim Oliver Gassner in der Blog-Analyse Session</title>
		<link>http://www.miradlo.net/bloggt/krimskrams/ich-sitz-gerade-auf-dem-fucamp-beim-oliver-gassner-in-der-blog-analyse-session</link>
		<comments>http://www.miradlo.net/bloggt/krimskrams/ich-sitz-gerade-auf-dem-fucamp-beim-oliver-gassner-in-der-blog-analyse-session#comments</comments>
		<pubDate>Sat, 23 May 2009 11:10:48 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[krimskrams]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[fucamp]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1860</guid>
		<description><![CDATA[Ich bin heute auf dem FuCamp in Furtwangen.
Nachdem ich meine Session Komplexit&#228;t durchgef&#252;hrt habe, sitz ich jetzt gerade beim Oliver Gassner in seiner Session.
Er nimmt gerade ein paar Blogs auseinander und beschreibt was er so alles an den Blogs gut und schlecht findet.
Ein paar Tipps die er zu einem Businessblog gibt:

Lieber mal ein paar kleinere [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin heute auf dem FuCamp in Furtwangen.<br />
Nachdem ich meine Session <a href="http://www.baldenhofer.eu/blog/guggat_emol/fucamp-erste-session-komplexitaet-verwalten">Komplexit&#228;t</a> durchgef&#252;hrt habe, sitz ich jetzt gerade beim <a href="http://blog.oliver-gassner.de/">Oliver Gassner</a> in seiner Session.</p>
<div id="attachment_1862" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1862" title="Oliver Gassner" src="http://www.miradlo.net/bloggt/wp-content/uploads/oli1.jpg" alt="Oli beim Pr&#228;sentieren" width="500" height="821" /><p class="wp-caption-text">Oli beim Pr&#228;sentieren</p></div>
<p>Er nimmt gerade ein paar Blogs auseinander und beschreibt was er so alles an den Blogs gut und schlecht findet.<br />
Ein paar Tipps die er zu einem Businessblog gibt:</p>
<ul>
<li>Lieber mal ein paar kleinere Beitr&#228;ge als riesige Beitr&#228;ge.</li>
<li>Ist der Effekt der gr&#246;&#223;e der Beitr&#228;ge zu den AdBlogs hinterher wirklich ok? Lohnt sich der Aufwand</li>
<li>Verweise auf alle F&#228;lle auf Blogs die auf dich verlinken</li>
<li>Wenn du mehrere Autoren hast, dann mach z.B. mit einem Bild klar welcher Autor gerade schreibt.</li>
<li>Wenn du einen Businessblog haben willst, dann musst du als Chef auch zeigen dass du willst, dass gebloggt wird.<br />
Gib z.B. ein bisschen Bonus (Freier Tag oder so)</li>
</ul>
<p>Zu Blogs allgeimein:</p>
<p>Wenn du das Blog hochbringen willst, vier Artikel am Werktag.</p>
<p>Einen gro&#223;en Beitrag und ein paar Kleinere.</p>
<p>Themen von anderen Blogs &#8220;abfischen und verlinken&#8221;</p>
<p>Als letzten Blog hat er diesen miradlo Blog auseinandergenommen.</p>
<p>Gute Tipps sind, dass wir zu viele verschiedene Navigations- und Content Elemente in unserer Sitebar verwenden. Vielleicht werden wir hier ein bisschen aufr&#228;umen&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/krimskrams/ich-sitz-gerade-auf-dem-fucamp-beim-oliver-gassner-in-der-blog-analyse-session/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Interaktive Webseiten und deren Probleme</title>
		<link>http://www.miradlo.net/bloggt/tipps/interaktive-webseiten-und-deren-probleme</link>
		<comments>http://www.miradlo.net/bloggt/tipps/interaktive-webseiten-und-deren-probleme#comments</comments>
		<pubDate>Sun, 22 Mar 2009 23:23:03 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[entwicklung]]></category>
		<category><![CDATA[programm]]></category>
		<category><![CDATA[webapplikation]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1277</guid>
		<description><![CDATA[Fr&#252;her war alles einfach und langweilig.
Wenn zum Beispiel Daten f&#252;r die Erfassung einer Person eingegeben werden mussten, haben wir eine Form erstellt, in diese Form haben wir Namen-, Vornamen- und Adresseingabefelder reingefummelt und einen Submit-Button angezeigt.
Der geplagte Anwender hat die Daten in die Felder eingegeben, das Ganze mit Submit best&#228;tigt und auf die Fehlermeldungen vom [...]]]></description>
			<content:encoded><![CDATA[<p>Fr&#252;her war alles einfach und langweilig.<br />
Wenn zum Beispiel Daten f&#252;r die Erfassung einer Person eingegeben werden mussten, haben wir eine Form erstellt, in diese Form haben wir Namen-, Vornamen- und Adresseingabefelder reingefummelt und einen Submit-Button angezeigt.<br />
Der geplagte Anwender hat die Daten in die Felder eingegeben, das Ganze mit <em>Submit</em> best&#228;tigt und auf die Fehlermeldungen vom Server gewartet.</p>
<h3>Was ist daran falsch?</h3>
<p>Aus Sicht des Programmierers war alles super. Wir hatten es einfach und der Datenfluss war 100% unter Kontrolle. Die Kommunikationsmuster k&#246;nnen wir uns noch sehr gut vorstellen. Der Anwender ist mit dem Programmfluss geschaltet und er muss seine Arbeitsweise an das Programm anpassen.</p>
<h3>Wie bitte? Der Anwender muss sich anpassen?</h3>
<p>Hm&#8230; Da ist glaube ich das Problem. Der Businessprozess sieht unter Umst&#228;nden &#252;berhaupt nicht vor, dass der Anwender auf die Antwort vom Server warten soll. Vielleicht will der Anwender gleich mit dem Bearbeiten von Kundeninformationen, wie Lieblingsfarbe und Lieblingsauto weiter machen. Und er m&#246;chte gar nicht auf den Server warten.<br />
Viel schlimmer noch. Der Anwender wird gen&#246;tigt zu warten und wird aus seinen Gedankeng&#228;ngen herausgeworfen. Und das ist nun wirklich schlecht.</p>
<h3>Rettung naht mit AJAX usw.</h3>
<p>Jaja, wir kennen das. Dann bauen wir halt was Modernes ein und kommunizieren asynchron. Wir lassen den Anwender weiter machen und alles ist prima.<br />
Aber jetzt kommt unser Problem der neuen Welt.</p>
<h3>Wie informieren wir unseren Anwender?</h3>
<ul class="albumlistre">
<li><img src="/images/bloggt/miradlo_2009/ajax_rot_blau.gif" width="300" height="225"  alt="AJAX in rot und blau" /></li>
</ul>
<p>Wir &#252;berlassen also die Korrektur und Testerei der eingegebenen Daten unserem asynchronen Prozess. Der macht das prima und unser Anwender tippt fr&#246;hlich weiter.<br />
Mitten in der Eingabe der Lieblingsfarbe poppt aber eine Fehlermeldung auf die da sagt: &#8220;<em>Bitte geben Sie einen Namen ein</em>&#8220;.<br />
Und der Anwender wird aus seinem Businessprozess und seinen Gedanken herausgeschleudert.<br />
Na sch&#246;n, da er sowieso direkt zum Namen zur&#252;ckgef&#252;hrt wird (der Fokus ist wieder auf dem Namensfeld) gibt er den Namen halt ein.<br />
Bl&#246;d ist nur, dass er mittlerweile aber auch noch eine falsche Farbe eingegeben hat, da die Applikation ihn ja aus seiner Farbeingabe herausgerissen hat.<br />
Also kaum ist er mit dem Namen fertig, oder er tippt noch am Namen rum, poppt schon wieder eine Fehlermeldung auf: &#8220;<em>Bitte geben Sie eine korrekte Farbe ein</em>&#8220;.<br />
Oha!<br />
Wir haben hier wohl was falsch programmiert gelle?<br />
Klar, solche Probleme muss man schon irgendwie anders l&#246;sen. Aber bevor man an eine hoch interaktive Webseite herangeht, sollte man sich dar&#252;ber im Klaren sein.</p>
<h3>War&#8217;s das schon?</h3>
<p>Nein, es gibt noch tollere Probleme.<br />
Stellt euch vor wir sitzen in einer gr&#246;&#223;eren Firma, oder wir arbeiten sogar an verschiedenen Standorten (was im Web ja gew&#252;nscht ist) und zwei Editoren arbeiten zur Zeit am gleichen Datensatz.<br />
Der Eine will die Lieblingsfarbe der Person &#228;ndern, da eine E-Mail vorliegt ,in der der Kunde sagt, dass seine Lieblingsfarbe rot sei, und gleichzeitig ruft der Kunde einen zweiten Mitarbeiter an und sagt, seine Lieblingsfarbe sei doch blau.<br />
Beide Mitarbeiter tippen also an der Farbe herum.<br />
Und was geschieht nun?<br />
Der Mitarbeiter mit der roten Farbe editiert einen veralteten Datensatz. Da er ein wenig l&#228;nger braucht, wird zuerst die blaue Farbe der Telefonanfrage abgespeichert und dann die rote Farbe.<br />
Beide Editoren sehen unter Umst&#228;nden nicht, dass der andere Editor auch auf dem Datensatz sitzt.<br />
Also wird die Eingabe noch komplexer.</p>
<h3>Wie kann dass gehen?</h3>
<p>Tja, w&#228;hrend ein Editor die Farbe der E-Mail bearbeitet, muss der Datensatz f&#252;r Ver&#228;nderung gesperrt werden. Auch in einer wunderbaren AJAX-Superdupper-Anwendung.<br />
Der zweite Editor, muss z.B. die M&#246;glichkeit haben den ersten Editor zu informieren, dass neue Informationen vorliegen.<br />
Oder es muss eine Priorit&#228;tendefinition vorhanden sein. Telefonbesprechungen m&#252;ssen vor E-Mail Besprechungen gesetzt werden.<br />
Oder es muss beschrieben werden, wer wann was wieso gemacht hat.<br />
Weiterhin w&#228;re es doch toll, wenn der Editor, der die E-Mail bearbeitet hat, &#252;ber die &#196;nderung informiert w&#252;rde.<br />
Das k&#246;nnte so ablaufen, dass gerade ge&#228;nderte Werte ihm noch einmal vorgelegt werden. Beispielsweise, falls innerhalb der n&#228;chsten zehn Minuten ein Wert von einer anderen Person ge&#228;ndert wurde, wird dieser Wert nochmals zur &#220;berpr&#252;fung angezeigt.</p>
<h3>Fazit</h3>
<p>Sobald wir eine tolle, blinkende, asynchrone Eingabem&#246;glichkeit f&#252;r unsere Benutzer erstellen, begeben wir uns auf gef&#228;hrliches Gebiet. Die Nebenl&#228;ufigkeiten von asynchronen Eingaben sind extrem komplex und m&#252;ssen im Einzelfall genau analysiert werden.<br />
Interaktive und an den Gesch&#228;ftsprozess angepasste Webapplikationen sind klasse. Aber die Schwierigkeiten und Gefahren sind ungleich h&#246;her als bei einer Einwegkommunikation. Nat&#252;rlich k&#246;nnen dort auch solche Gefahren lauern, der Prozess ist jedoch einfacher zu verwalten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/tipps/interaktive-webseiten-und-deren-probleme/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programmiergrundlagen sind manchmal gar nicht so &#8220;grundlagig&#8221;</title>
		<link>http://www.miradlo.net/bloggt/software/programmiergrundlagen-sind-manchmal-gar-nicht-so-grundlagig</link>
		<comments>http://www.miradlo.net/bloggt/software/programmiergrundlagen-sind-manchmal-gar-nicht-so-grundlagig#comments</comments>
		<pubDate>Mon, 16 Mar 2009 23:01:42 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[entwicklung]]></category>
		<category><![CDATA[grundlagen]]></category>
		<category><![CDATA[informatik]]></category>
		<category><![CDATA[lernen]]></category>
		<category><![CDATA[programm]]></category>
		<category><![CDATA[testen]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1070</guid>
		<description><![CDATA[Ich darf immer wieder mal Einsteigern die Geheimnisse der Informatik n&#228;her bringen. Jetzt verh&#228;lt es sich mit der IT so wie bei den Zauberern. Man kann eigentlich gar nicht sehen was da so passiert. Man muss es sich irgendwie &#8220;begreifbar&#8221; machen.
Und dann mache ich manchmal den Fehler und glaube meinen Einsteigern, dass sie alles verstanden [...]]]></description>
			<content:encoded><![CDATA[<p>Ich darf immer wieder mal Einsteigern die Geheimnisse der Informatik n&#228;her bringen. Jetzt verh&#228;lt es sich mit der IT so wie bei den Zauberern. Man kann eigentlich gar nicht sehen was da so passiert. Man muss es sich irgendwie &#8220;begreifbar&#8221; machen.</p>
<p>Und dann mache ich manchmal den Fehler und glaube meinen Einsteigern, dass sie alles verstanden haben. Hier ein paar Beispiele:</p>
<h3>EVA ist doch soooo klar</h3>
<p>Ich fang immer bei EVA (nicht bei Adam) an. Und ich meine damit, dass man in einem Computerprogramm zuerst etwas <strong>e</strong>ingibt, dann <strong>v</strong>erarbeitet und dann <strong>a</strong>usgibt.</p>
<p>Cool gell?</p>
<p>So, ich zeig also meinen Einsteigern wie man etwas eingibt. Dann erkl&#228;re ich ihnen, dass wir jeden Wert den man eingegeben hat, erst einmal auf seine Richtigkeit &#252;berpr&#252;fen muss. Und erst dann darf man ihn verarbeiten. Wenn das auch noch geklappt hat, gibt es eine Ausgabe. Die kann entweder direkt in einem Text, oder als R&#252;ckgabewert in einer Funktion oder in einem Datenbankeintrag oder in einem Schaltprozess f&#252;r einen Motor erfolgen.</p>
<p>Meine Einsteiger nicken eifrig, schauen sich meinen Code an und legen los. Solange ich dabei bin, sieht es noch recht gut aus. Eine Woche sp&#228;ter vergessen schon einige, dass die Eingaben &#252;berpr&#252;ft werden sollen. Und einen Monat sp&#228;ter f&#228;llt ihnen nicht einmal mehr ein wie man etwas verarbeitet.</p>
<h4>Was ist passiert?</h4>
<p>Sie haben zwar EVA verstanden, aber die Grundlagen wie man eine &#220;berpr&#252;fung erstellt sind nicht verstanden worden. Bl&#246;derweise sind viele der Einsteiger auch noch von m&#228;nnlichen Geschlecht. Und viele M&#228;nnlein d&#252;rfen nicht zeigen, dass sie etwas nicht k&#246;nnen. Vorher qu&#228;len sie sich lieber und bauen viel Bockmist.</p>
<h3>Testen ist easy</h3>
<p>Auch ein Klassiker. Da bauen wir die ersten Testf&#228;lle und lassen unsere Systeme durchrattern. Einen Monat sp&#228;ter haben meine Buben und M&#228;dels dann vollkommen vergessen, dass es verschiedene Testmethoden gibt. Das Resultat ist, dass Programme ausgeliefert werden, die beim ersten Knopfdruck schon anfangen komisch zu vibrieren. Das ist ziemlich &#228;tzend.</p>
<p>Und wieder steht das Problem im Vordergrund, dass nicht einmal klar ist was eine For-Schleife ist. Traurig aber wahr.</p>
<h3>Hab ich eine Idee?</h3>
<p>Da viele der Einsteiger, oder auch Fortgeschrittenen, sich nicht trauen zu sagen, dass sie etwas nicht verstanden haben, habe ich eine <a title="Guggat emol Programmieren" href="http://www.baldenhofer.eu/blog/?series=25">Artikelserie Grundlagen</a> angefangen. Dort schreibe ich zu den Grundlagen der Programmierung immer wieder ein paar Artikel. Jeder kann in dem <a href="http://www.baldenhofer.eu/blog/">Schulungsblog</a> ungest&#246;rt lesen. Falls mal eine Frage auftauchen sollte, kann die mit Kommentaren an mich gestellt werden. Vielleicht hilft diese Serie ein paar Einsteigern und Fortgeschrittenen mit den Programmiergrundlagen einfacher fertig zu werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/software/programmiergrundlagen-sind-manchmal-gar-nicht-so-grundlagig/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Programmieren lernen am praktischen Beispiel</title>
		<link>http://www.miradlo.net/bloggt/software/programmieren-lernen-am-praktischen-beispiel</link>
		<comments>http://www.miradlo.net/bloggt/software/programmieren-lernen-am-praktischen-beispiel#comments</comments>
		<pubDate>Tue, 10 Mar 2009 23:01:22 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[projekte]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[entwicklung]]></category>
		<category><![CDATA[lernen]]></category>
		<category><![CDATA[programm]]></category>
		<category><![CDATA[webapplikation]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1072</guid>
		<description><![CDATA[Ich finde Programmierbeispiele h&#228;ufig ziemlich ungeschickt. Mal sind sie zu gro&#223; und zu kompliziert, mal sind sie zu einfach und k&#246;nnen sp&#228;ter nicht umgesetzt werden.
Und da es so viele Programmierbeispiele gibt, m&#246;chte ich noch eines hinzuf&#252;gen  
Ute hat mich mal gefragt, ob wir eine Newsfunktion erstellen k&#246;nnen, mit der man auch ein paar Bilder [...]]]></description>
			<content:encoded><![CDATA[<p>Ich finde Programmierbeispiele h&#228;ufig ziemlich ungeschickt. Mal sind sie zu gro&#223; und zu kompliziert, mal sind sie zu einfach und k&#246;nnen sp&#228;ter nicht umgesetzt werden.</p>
<p>Und da es so viele Programmierbeispiele gibt, m&#246;chte ich noch eines hinzuf&#252;gen <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ute hat mich mal gefragt, ob wir eine Newsfunktion erstellen k&#246;nnen, mit der man auch ein paar Bilder einf&#252;gen kann. Soll hei&#223;en, dass aktuelle Informationen auf einer Webseite so lange dargestellt werden, bis sie nicht mehr aktuell sind. Also Weihnachtsgr&#252;&#223;e sollen nur automatisch zu Weihnachten erscheinen und kurz vor Ostern k&#246;nnen wir die abstellen <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Aussehen soll es ihrer Vorstellung nach, in etwa wie folgt:</p>
<ul class="albumlistre">
<li><img src="/images/bloggt/miradlo_2009/newssystem_erstellen_bild_text.jpg" alt="Screenshot Guggat emol Blog " width="400" height="299" />Newssystem erstellen</li>
</ul>
<h3>News&#252;berschrift Ostergr&#252;&#223;e <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </h3>
<p>Neben dem Bild einer News soll die jeweilige &#220;berschrift einer Meldung oder Neuigkeit stehen und anschlie&#223;end der dazugeh&#246;rige Text. Weiterer Text oder die n&#228;chste Meldung folgt dann erst danach.<br />
[Zumindest in standardkonformen Browsern klappt das... <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ]</p>
<p class="clear">Dieses Newssystem soll Bilder einpflegen k&#246;nnen. Und da wir ja gerne komplizierte Sachen machen, sollen die Editoren, die die Texte schreiben, mit einem vern&#252;nftigen Rechtesystem ausgestattet sein.</p>
<p>Kurz gesagt: <strong>Wir wollen eine komplette Webapplikation bauen.</strong></p>
<p>Und wir sind Wiederholungst&#228;ter. In den letzten Jahren haben wir diverse Webapplikationen erstellt. Diesmal gehen wir jedoch einen etwas anderen Weg. Ich habe unter <a href="http://www.baldenhofer.eu/blog/?series=114">Newssystem erstellen</a> beschrieben, wie das Newssystem aussehen soll und wir diskutieren dort im Internet &#252;ber die Erstellung. Falls ihr mitmachen wollt, seid ihr herzlich eingeladen.</p>
<p>Es geht darum, ein wirklich rundes und gro&#223;es System zu erstellen mit dem wir sp&#228;ter auch noch was anfangen k&#246;nnen. Die Entwicklung wird wohl etwas langsamer vorw&#228;rts gehen, als wenn ich das Teil alleine schreiben w&#252;rde. Aber vielleicht erfinden wir hier ein paar sch&#246;nere und bessere Komponenten bei denen wir alle was lernen?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/software/programmieren-lernen-am-praktischen-beispiel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architekturmuster und Design Patterns verwenden</title>
		<link>http://www.miradlo.net/bloggt/software/architekturmuster-und-design-patterns-verwenden</link>
		<comments>http://www.miradlo.net/bloggt/software/architekturmuster-und-design-patterns-verwenden#comments</comments>
		<pubDate>Sat, 07 Mar 2009 23:01:46 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[entwicklung]]></category>
		<category><![CDATA[informatik]]></category>
		<category><![CDATA[programm]]></category>
		<category><![CDATA[webapplikation]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1068</guid>
		<description><![CDATA[Wenn man ein Haus baut gibt es bestimmte Regeln an die man sich halten sollte.
Beispielsweise w&#228;re es nicht sehr ratsam ein Dach so zu konstruieren, dass das Wasser nicht abl&#228;uft sondern zur Mitte des Dachs hinflie&#223;t. Ein weiteres nicht ratsames Beispiel w&#228;re es eine Decke so zu konstruieren, dass sie sich nicht selbst tragen k&#246;nnte. [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man ein Haus baut gibt es bestimmte Regeln an die man sich halten sollte.</p>
<p>Beispielsweise w&#228;re es nicht sehr ratsam ein Dach so zu konstruieren, dass das Wasser nicht abl&#228;uft sondern zur Mitte des Dachs hinflie&#223;t. Ein weiteres nicht ratsames Beispiel w&#228;re es eine Decke so zu konstruieren, dass sie sich nicht selbst tragen k&#246;nnte. Wenn man dann noch auf die Idee kommt, auf diese Decke einen Stuhl zu stellen, findet man sich h&#246;chstwahrscheinlich ein Stockwerk tiefer wieder.</p>
<p>Unsere Vorfahren haben also Architekturmuster erfunden. Daneben haben wir vor ein paar tausend Jahren auch noch das Rad erfunden. Wir empfanden das als ziemlich praktisch. Man kann mit so einem Rad die Reibungsverluste beim Schieben verringern. Und heute sagen wir immer wieder mal, dass wir das Rad nicht neu erfinden sollen.</p>
<h2>Wie sieht das in der IT aus?</h2>
<p>Die IT ist ein relativ neues Themengebiet. Vor ein paar Jahren erfand jeder Entwickler seine R&#228;der  jeden Tag nochmals. Irgendwie haben viele von uns, dann viele Stunden verbracht auf Problemen rumzunagen, die es eigentlich schon l&#228;ngst nicht mehr geben sollte.</p>
<p>Und genau hier setzen Architekturmuster und Design Patterns an.</p>
<p>Wir generieren heute eine Webapplikation, indem wir die Architektur auf den Browser, den Webserver, den Datenbankserver und das Netzwerk verteilen.</p>
<p>Wir verwenden Factory Patterns um bestimtme Objekte zu erzeugen.</p>
<p>Wir mixen die diversen Observer, Strategy und Composite Patterns und erstellen Model View Controller Patterns.</p>
<p>Das einzige Problem mit all den sch&#246;nen Patterns ist, dass die Dinger ziemlich unverst&#228;ndlich sein k&#246;nnen. Wenn ein neuer Entwickler anf&#228;ngt, ist er mit Schleifen, if-Abfragen und anderen Schweinereien schon ziemlich ausgelastet. Wenn dann noch ein Roland vorbei kommt und ihm sagt &#8220;heute bauen wir mal ein Singleton&#8221;,  dann f&#252;hlt sich der Anf&#228;nger irgendwie nicht wohl. Deshalb habe ich bei <a href="http://www.baldenhofer.eu/blog/it/design-pattern-it/design-pattern-einfuehrung">guggat emol Blog eine Designpattern Einf&#252;hrung</a> erstellt. Ich werde nicht noch einmal alle Design Patterns, die zur Gen&#252;ge beschrieben wurden, beschreiben. Ich werde hier die Design Patterns, die ich in den Programmierbeispielen verwende, erl&#228;utern. Sp&#228;ter werden diese Patterns dann f&#252;r reelle Aufgaben verwendet.</p>
<p>Wer wei&#223;, vielleicht bauen wir in ein paar Jahren weniger IT-Decken die sich nicht selbst tragen k&#246;nnen? <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/software/architekturmuster-und-design-patterns-verwenden/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Wenn der Apache Webserver PHP nicht ausf&#252;hrt</title>
		<link>http://www.miradlo.net/bloggt/tipps/wenn-der-apache-webserver-php-nicht-ausfuehrt</link>
		<comments>http://www.miradlo.net/bloggt/tipps/wenn-der-apache-webserver-php-nicht-ausfuehrt#comments</comments>
		<pubDate>Fri, 06 Mar 2009 10:36:47 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[tipps]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=1076</guid>
		<description><![CDATA[Ich hatte das Problem, dass mein Linux Apache Webserver den PHP Interpreter nicht aufgerufen hat.
Das Resultat war, dass die PHP Quelltexte an den Webclient zur&#252;ckgeliefert wurden.
Beispiel:
Ich schreibe ein PHP Script (hallo.php) mit folgendem Inhalt:
&#60;? PHP echo &#8220;Hallo Welt&#8221;; ?&#62;
Dieser Text wird so an den Webbrowser ausgeliefert. Ich wollte aber, dass &#8220;Hallo Welt&#8221; zur&#252;ckgegeben wird.
L&#246;sung
In der [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte das Problem, dass mein Linux Apache Webserver den PHP Interpreter nicht aufgerufen hat.</p>
<p>Das Resultat war, dass die PHP Quelltexte an den Webclient zur&#252;ckgeliefert wurden.</p>
<p>Beispiel:<br />
Ich schreibe ein PHP Script (hallo.php) mit folgendem Inhalt:<br />
<span>&lt;? PHP echo &#8220;Hallo Welt&#8221;; ?&gt;</span><br />
Dieser Text wird so an den Webbrowser ausgeliefert. Ich wollte aber, dass &#8220;Hallo Welt&#8221; zur&#252;ckgegeben wird.</p>
<h2>L&#246;sung</h2>
<p>In der Datei /etc/conf.d/apache2 ist die PHP5 Option nicht freigeschalten gewesen. Also in der Zeile <span class="code">APACHE2_OPTS</span> noch <span class="code">-D PHP5</span> einf&#252;gen. Danach den Apache Webserver neu starten und der PHP Code wird interpretiert.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/tipps/wenn-der-apache-webserver-php-nicht-ausfuehrt/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wenn&#8217;s mal mit dem emerge nicht klappt&#8230;</title>
		<link>http://www.miradlo.net/bloggt/tipps/wenns-mal-mit-dem-emerge-nicht-klappt</link>
		<comments>http://www.miradlo.net/bloggt/tipps/wenns-mal-mit-dem-emerge-nicht-klappt#comments</comments>
		<pubDate>Sun, 01 Feb 2009 23:04:03 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[mask]]></category>
		<category><![CDATA[package]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=708</guid>
		<description><![CDATA[Wenn man bei gentoo einen Update durchf&#252;hrt, z.B. emerge kde-meta oder so, dann kommt es vor dass diverse Pakete nicht miteinander auf einem System installiert werden d&#252;rfen.
Beispielsweise hat bei mir media-sound/phonon-4.3.0 daf&#252;r gesorgt, dass das phonon Paket vom kde nicht installiert werden konnte. Und schon konnte ich nicht emerge kde-meta verwenden um das System zu [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man bei gentoo einen Update durchf&#252;hrt, z.B. <strong><span class="code">emerge kde-meta</span></strong> oder so, dann kommt es vor dass diverse Pakete nicht miteinander auf einem System installiert werden d&#252;rfen.<br />
Beispielsweise hat bei mir media-sound/phonon-4.3.0 daf&#252;r gesorgt, dass das phonon Paket vom kde nicht installiert werden konnte. Und schon konnte ich nicht <span class="code">emerge kde-meta</span> verwenden um das System zu aktualisieren.</p>
<h3>M&#246;gliche L&#246;sung</h3>
<p>In den Anleitungen zu emerge steht, dass man dann entweder warten soll oder das betroffene Paket entfernen soll. Manchmal geht auch das nicht, da phonon z.B. ben&#246;tigt wird.<br />
Eine L&#246;sung ist es, die aktuelle Version zu maskieren. Im Fall von phonon f&#252;gte ich folgende Zeile in /etc/portage/package.mask ein:</p>
<p class="code">&gt;=media-sound/phonon-4.3.0</p>
<p>Danach f&#252;hrte ich <span class="code">emerge media-sound/phonon</span> aus. Das installierte mir dann die Version 4.2.0.<br />
Mit dieser Version ist <span class="code">emerge kde-meta</span> in der Lage die aktuellen KDE Pakete zu installieren.<br />
Nachteil dieser L&#246;sung ist, dass nun ein maskiertes Paket in package.mask vorhanden ist. Wenn wieder mal ein Update durchgef&#252;hrt wird, empfehle ich daher, die Maskierung wieder aufzuheben und es mit den aktuellen Paketen zu versuchen. Ein Kommentar im /etc/portage/package.mask reicht hier aus:</p>
<p class="code">#&gt;=media-sound/phonon-4.3.0</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/tipps/wenns-mal-mit-dem-emerge-nicht-klappt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meine Vorgehensweise beim gentoo-Update</title>
		<link>http://www.miradlo.net/bloggt/tipps/meine-vorgehensweise-beim-gentoo-update</link>
		<comments>http://www.miradlo.net/bloggt/tipps/meine-vorgehensweise-beim-gentoo-update#comments</comments>
		<pubDate>Sat, 31 Jan 2009 11:00:48 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[aktualisieren]]></category>
		<category><![CDATA[betrieb]]></category>
		<category><![CDATA[emerge]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=703</guid>
		<description><![CDATA[Ich habe mittlerweile in unserer Firma einen ganzen Zoo von Rechnern zu verwalten. Das kommt daher, da wir im Lauf der Jahre f&#252;r die unterschiedlichsten Aufgaben die diversen Architekturen angeschafft haben.
Ein Update des Betriebssystems kann sehr viel Arbeitszeit kosten, wenn man sich nicht ein paar Vorgehensweisen angew&#246;hnt mit denen die Rechner mit sich selbst besch&#228;ftigt [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe mittlerweile in unserer Firma einen ganzen Zoo von Rechnern zu verwalten. Das kommt daher, da wir im Lauf der Jahre f&#252;r die unterschiedlichsten Aufgaben die diversen Architekturen angeschafft haben.<br />
Ein Update des Betriebssystems kann sehr viel Arbeitszeit kosten, wenn man sich nicht ein paar Vorgehensweisen angew&#246;hnt mit denen die Rechner mit sich selbst besch&#228;ftigt sind.</p>
<p>Ich habe absichtlich auf die Installationsanleitung von gentoo verwiesen, da die Vorgehensweise sich bei jedem Update wie bei einer Neuinstallation verh&#228;lt.<br />
Folgende Schritte f&#252;hre ich bei jedem Rechner bei einem Update durch:</p>
<p class="code">emerge &#8211;sync</p>
<p>Klar, damit wird erst einmal der <a href="http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=1&amp;chap=6#doc_chap2">Portage Tree</a> wieder aktualisiert. Ohne diesen Befehl ergibt ein Update keinen Sinn.<br />
In einem Terminal hole ich mit den folgenden zwei Befehlen die neuen Sourcen:</p>
<p class="code">emerge &#8211;fetch-only &#8211;update &#8211;deep system</p>
<p class="code">emerge &#8211;fetch-only &#8211;update &#8211;deep world</p>
<p>Im Normalfall gibt es ein paar Sourcen, wie zum Beispiel Java 1.4, die mit fetch-restriction ausgestattet sind. Diese Sourcen m&#252;ssen manuell heruntergeladen werden. Somit schaue ich nach ca. einer halben Stunde welche Sourcen manuell installiert werden m&#252;ssen.<br />
Parallel dazu lasse ich in einem zweiten Fenster die Aktualisierung der Systemkomponenten durchf&#252;hren:</p>
<p class="code">emerge &#8211;keep-going &#8211;update &#8211;deep system</p>
<p>Mit &#8211;keep-going wird erreicht, dass bei Fehlern die Installation der restlichen Pakete dennoch vorangetrieben wird. Somit kann man &#252;ber 80% der Pakete ohne manuellen Eingriff aktualisieren und spart sich die Totzeiten weil der Rechner auf den manuellen Eingriff wartet.<br />
Nachdem die Systemkonfigurationen wieder aktuell sind rufe ich den Befehl</p>
<p class="code">emerge &#8211;keep-going &#8211;update &#8211;deep world</p>
<p>auf.<br />
Und dann lass ich die Maschine alleine, oder arbeite an ihr einfach weiter. Die Aktualisierung l&#228;uft weitgehend im Hintergrund und je nach Prozessorleistung kann ich gut noch nebenher arbeiten.</p>
<h2>Fazit</h2>
<p>Mit dieser Vorgehensweise kann ich mehrere Rechner gleichzeitig aktualisieren und ben&#246;tige nur wenige Minuten Arbeitszeit f&#252;r den einzelnen Update. Bei Fehlern oder massiven Neuerungen, muss ich nat&#252;rlich die &#252;bliche Zeit investieren, um die Maschinen wieder stabil zum Laufen zu bringen.</p>
<p>Die Zeit, die ich fr&#252;her zur Kontrolle und zum Wiederanlauf der Aktualisierung ben&#246;tigt habe, konnte ich mit dieser Vorgehensweise deutlich reduzieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/tipps/meine-vorgehensweise-beim-gentoo-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade von KDE 3.5.9 auf KDE 4.1.4</title>
		<link>http://www.miradlo.net/bloggt/tipps/upgrade-von-kde-359-auf-kde-414</link>
		<comments>http://www.miradlo.net/bloggt/tipps/upgrade-von-kde-359-auf-kde-414#comments</comments>
		<pubDate>Thu, 29 Jan 2009 15:45:41 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kde]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=710</guid>
		<description><![CDATA[Ich habe bei einigen Rechnern die letzten Tage einen Update von KDE 3.5.9 auf KDE 4.1.4 durchgef&#252;hrt.
Problem war, dass danach die Spracheinstellungen und der xdm nicht mehr funktionierten.
Also der Reihe nach:
xdm wieder lauff&#228;hig machen
Ich hatte dass Problem, dass xdm zwar den kdm startete, dieser jedoch nach dem Einloggen nur noch ein xTerm darstellte. Das ist [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe bei einigen Rechnern die letzten Tage einen Update von KDE 3.5.9 auf KDE 4.1.4 durchgef&#252;hrt.<br />
Problem war, dass danach die Spracheinstellungen und der xdm nicht mehr funktionierten.<br />
Also der Reihe nach:</p>
<h3>xdm wieder lauff&#228;hig machen</h3>
<p>Ich hatte dass Problem, dass xdm zwar den kdm startete, dieser jedoch nach dem Einloggen nur noch ein xTerm darstellte. Das ist nat&#252;rlich ein ziemlicher Mist. In dem xTerm kann man zwar startkde eingeben und dann startet auch der KDE4 aber so toll ist das nicht.</p>
<p>L&#246;sungsversuch eins:</p>
<p>Ich habe in .xinitrc startkde eingetragen und dann aus der Konsole den KDE gestartet. Das macht aber auch keinen Spa&#223;.</p>
<p>L&#246;sungsversuch zwei:</p>
<p>Ich habe in<strong> rc.conf XSESSION=&#8221;kde-4.1</strong>&#8221; eingetragen. Dann habe ich noch in <strong>/etc/conf.d/xdm DISPLAYMANAGER=&#8221;xdm&#8221; </strong>eingetragen.</p>
<p>Jetzt klappt dass Starten von KDE. Leider habe ich jetzt &#8220;nur&#8221; einen <strong>xdm</strong> als Loginscreen. Aber immerhin wieder irgendwas grafisches.</p>
<p>Falls hier jemand <strong>DIE L&#214;SUNG</strong> hat, dann freue ich mich &#252;ber einen Kommentar.</p>
<h2>Spracheinstellungen</h2>
<p>Ok, das war sehr einfach zum Flicken. Einfach <strong>emerge kde-l10n</strong> installieren und schon klappts mit der Sprache.</p>
<p>Bei KDE4 ist dass Sprachpaket von <strong>l18n</strong> umbenannt worden. Tja, so schnell kann man seine Probleme in den Griff bekommen. <img src='http://www.miradlo.net/bloggt/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/tipps/upgrade-von-kde-359-auf-kde-414/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Siemens Fujitsu Si1520 iwl3945 Probleme</title>
		<link>http://www.miradlo.net/bloggt/tipps/siemens-fujitsu-si1520-iwl3945-probleme</link>
		<comments>http://www.miradlo.net/bloggt/tipps/siemens-fujitsu-si1520-iwl3945-probleme#comments</comments>
		<pubDate>Tue, 27 Jan 2009 10:15:02 +0000</pubDate>
		<dc:creator>roland</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[si1520]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[wlan]]></category>

		<guid isPermaLink="false">http://www.miradlo.net/bloggt/?p=672</guid>
		<description><![CDATA[Ich habe bei einem Siemens Fujitsu Si1520 mit einer iwl3945 Wirelesss Netzwerkkarte auf einen neuen Kernel- und Unicode einen Update durchgef&#252;hrt. Auf dem Rechner l&#228;uft eine Gentoo-Distribution.
Problemstellung
Nach dem Update auf  Kernel 2.6.28 startete die Wireless Karte f&#252;r ca. 7 Sekunden.  Danach stoppte sie wieder.
L&#246;sungsansatz
Mit dmesg &#124; grep iwl erhielt ich folgende Informationen:
iwl3945: Intel(R) PRO/Wireless 3945ABG/BG [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe bei einem Siemens Fujitsu Si1520 mit einer iwl3945 Wirelesss Netzwerkkarte auf einen neuen Kernel- und Unicode einen Update durchgef&#252;hrt. Auf dem Rechner l&#228;uft eine Gentoo-Distribution.</p>
<h2>Problemstellung</h2>
<p>Nach dem Update auf  Kernel 2.6.28 startete die Wireless Karte f&#252;r ca. 7 Sekunden.  Danach stoppte sie wieder.</p>
<h2>L&#246;sungsansatz</h2>
<p>Mit <span class="code">dmesg | grep iwl</span> erhielt ich folgende Informationen:</p>
<p class="code">iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux,<br />
1.2.26kds<br />
iwl3945: Copyright(c) 2003-2008 Intel Corporation<br />
iwl3945 0000:01:00.0: PCI INT A -&gt; GSI 16 (level, low) -&gt; IRQ 16<br />
iwl3945 0000:01:00.0: setting latency timer to 64<br />
iwl3945: Detected Intel Wireless WiFi Link 3945ABG<br />
iwl3945: Tunable channels: 13 802.11bg, 23 802.11a channels<br />
phy2: Selected rate control algorithm &#8216;iwl-3945-rs&#8217;<br />
iwl3945 0000:01:00.0: PCI INT A -&gt; GSI 16 (level, low) -&gt; IRQ 16<br />
iwl3945 0000:01:00.0: irq 1275 for MSI/MSI-X<br />
iwl3945 0000:01:00.0: firmware: requesting iwlwifi-3945-1.ucode<br />
Registered led device: iwl-phy2:radio<br />
Registered led device: iwl-phy2:assoc<br />
Registered led device: iwl-phy2:RX<br />
Registered led device: iwl-phy2:TX<br />
phy2: HW CONFIG: freq=2412<br />
ADDRCONF(NETDEV_UP): wlan0: link is not ready<br />
phy2: HW CONFIG: freq=2412<br />
phy2: HW CONFIG: freq=2412<br />
phy2: HW CONFIG: freq=2412<br />
iwl3945: MAC is in deep sleep!<br />
iwl3945: MAC is in deep sleep!<br />
iwl3945: MAC is in deep sleep!</p>
<p>Im <a href="http://bugs.gentoo.org/show_bug.cgi?id=232043">gentoo Bug Report</a> wurde gerade ein sehr &#228;hnliches Thema besprochen. Das Problem war dort, dass die Karte sich nach der Bet&#228;tigung des &#8220;Killswitch&#8221; nicht mehr starten lie&#223;. Irgendwie kam mir dieses Problem sehr &#228;hnlich vor und so beschrieb ich dort auch mein Problem. Der Problem-owner war bereit mir zu helfen und er gab mir den Tipp beim Modulladen folgenden Befehl zu verwenden:</p>
<p><span class="code">modprobe iwl3945 disable_hw_scan=1</span></p>
<p>Ich baute mir ein kleines Script:
</p>
<p class="code">/etc/init.d/net.wlan0 stop<br />
modprobe -r iwl3945<br />
modprobe iwl3945 disable_hw_scan=1<br />
ip link set wlan0 up<br />
iwlist wlan0 scan</p>
<p>Mit dem Script kann man jetzt die Wireless Karte im Betrieb an- und ausschalten und sie startet ohne gro&#223; zu murren.</p>
<p>Damit die Karte auch beim Booten korrekt startet habe ich folgende Aktionen durchgef&#252;hrt:
</p>
<p class="code">cd /etc/init.d<br />
rm net.wlan0<br />
cp net.lo net.wlan0</p>
<p>Somit habe ich den symbolischen Link f&#252;r net.wlan0 entfernt und eine harte Kopie von net.lo angefertigt. Vermutlich br&#228;uchte es das nicht und ich k&#246;nnte direkt auf der net.lo arbeiten. Falls diese jedoch irgendwann einmal bei emerge &#252;berschrieben wird, verliere ich die Einstellungen&#8230;<br />
In der net.wlan0 modifizierte ich die start() Funktion:
</p>
<p class="code">start()<br />
{<br />
local IFACE=${RC_SVCNAME#*.} oneworked=false module=<br />
local IFVAR=$(shell_var &#8220;${IFACE}&#8221;) cmd= our_metric=<br />
local metric=0</p>
<p class="code">einfo &#8220;Bringing up interface ${IFACE}&#8221;<br />
eindent<br />
<strong>if [ ${IFACE} = "wlan0" ]; then<br />
modprobe -r iwl3945<br />
modprobe iwl3945 disable_hw_scan=1<br />
fi<br />
</strong></p>
<p>&#8230;</p>
<p>So, und jetzt klappt auch das Hochfahren!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miradlo.net/bloggt/tipps/siemens-fujitsu-si1520-iwl3945-probleme/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

