<?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"
	>

<channel>
	<title>Bits and Bytes</title>
	<atom:link href="http://bits.goeckeler.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bits.goeckeler.com</link>
	<description>Coding stuff that comes along ...</description>
	<pubDate>Sun, 11 Nov 2007 21:55:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>W-JAX: Secure Coding</title>
		<link>http://bits.goeckeler.com/2007/11/11/w-jax-secure-coding/</link>
		<comments>http://bits.goeckeler.com/2007/11/11/w-jax-secure-coding/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 21:55:05 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=9</guid>
		<description><![CDATA[Ma&#223;nahmen und Anregungen &#252;bernommen bzw. abgeleitet aus dem gleichnamigen Vortrag von Bruce Sams
Vermeide Random, verwende stattdessen SecureRandom
Random ist nicht wirklich zuf&#228;llig, wenn zwei aufeinanderfolgende Zufallszahlen bekannt sind, k&#246;nnen alle weiteren erraten werden. Dumm nur, wenn ein Hacker darauf spekulieren kann &#8230;
Vertraue keiner externen Quelle, insbesondere keinen Eingaben des Anwenders
Im einfachsten Fall sprechen wir von Texteingaben, [...]]]></description>
			<content:encoded><![CDATA[<p><em>Ma&#223;nahmen und Anregungen &#252;bernommen bzw. abgeleitet aus dem gleichnamigen Vortrag von Bruce Sams</em></p>
<p><span id="more-9"></span><strong>Vermeide <code>Random</code>, verwende stattdessen <code>SecureRandom</code></strong></p>
<p><code>Random</code> ist nicht wirklich zuf&#228;llig, wenn zwei aufeinanderfolgende Zufallszahlen bekannt sind, k&#246;nnen alle weiteren erraten werden. Dumm nur, wenn ein Hacker darauf spekulieren kann &#8230;</p>
<p><strong>Vertraue keiner externen Quelle, insbesondere keinen Eingaben des Anwenders</strong></p>
<p>Im einfachsten Fall sprechen wir von Texteingaben, es betrifft aber RSS-Feeds, Emails usw. Nach Analyse von (&#246;ffentlichen) Sicherheitsmeldungen konnte ein schlauer Mensch ca. 60% der Fehlfunktionen auf fehlende &#220;berpr&#252;fung der Eingabe klassifizieren - vielleicht mag ja jemand mal die Quelle nachreichen. Aus der Erfahrung von Bruce Sams heraus k&#246;nnen die meisten Sicherheitsprobleme in Webanwendungen dem Datenfluss zugeordnet werden, genauer der ungen&#252;genden Validierung von Eingaben und anderen externen Quellen. Das deckt sich mit meiner Erfahrung, dass die meisten Probleme in Webanwendungen durch &#8220;komische&#8221; Eingaben erzeugt werden.</p>
<p>L&#246;sung: Versuche m&#246;glichst nicht, die Daten im nachhinein zu validieren, sondern bestimme genau, was zul&#228;ssig ist, und was nicht. Was an der Oberfl&#228;che abgefangen werden kann, sollte da auch abgefangen werden. Vertraue der Oberfl&#228;che aber nicht bedingungslos, genau die kann in Webanwendungen manipuliert werden.</p>
<p><strong>&#220;berpr&#252;fe Deinen Code</strong></p>
<p>Die offensichtlichsten Probleme im Code lassen sich auch durch statische Analyse finden. Bevor also eine umfassende Datenflussanalyse durchgef&#252;hrt wird, oder zumindestens ganz wilde Eingabetests, lasse Tools wie <a href="http://findbugs.sourceforge.net" title="FindBugs Home Page" target="_blank">FindBugs </a>und <a href="http://clarkware.com/software/JDepend.html" title="JDepend Home Page" target="_blank">JDepend </a>auf den Code los. Ich selber mag z.B. auch <a href="http://checkstyle.sourceforge.net/" title="Checkstyle Home Page" target="_blank">Checkstyle </a>sehr gerne.</p>
<p>Erg&#228;nze dies durch JUnit-Tests, und zwar mit zuf&#228;lligen Eingaben, mit &#220;berpr&#252;fung der offensichtlichen Grenzbereiche (wie z.B. gar keine Eingabe und &#252;berlange Eingabe), sowie mit allen behobenen Fehlerf&#228;llen. Wichtig: Jeder behobene Fehler sollte wirklich in einem JUnit-Test landen, sonst kommt er irgendwann einmal wieder.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/11/w-jax-secure-coding/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: OSGi</title>
		<link>http://bits.goeckeler.com/2007/11/11/w-jax-osgi/</link>
		<comments>http://bits.goeckeler.com/2007/11/11/w-jax-osgi/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 21:17:02 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=8</guid>
		<description><![CDATA[Englische Zusammenfassung der Key-Note von Peter Kriens
Why OSGi (Open Services Gateway Initiative) ?

Wire components together, not only beans or such
Manage these components

What is OSGi?
In this case not the alliance but the specification and the API for a component framework - actually it is a SPI including the test cases. You can feel free and provide [...]]]></description>
			<content:encoded><![CDATA[<p><em>Englische Zusammenfassung der Key-Note von Peter Kriens</em></p>
<p><strong>Why <a href="http://de.wikipedia.org/wiki/OSGi" title="Erkl&#228;rung f&#252;r OSGi in der Wikipedia" target="_blank">OSGi </a>(Open Services Gateway Initiative)</strong><strong> ?</strong></p>
<ol>
<li>Wire <em><strong>components</strong></em> together, not only beans or such</li>
<li>Manage these components</li>
</ol>
<p><span id="more-8"></span><strong>What is OSGi?</strong></p>
<p>In this case not the alliance but the specification and the API for a component framework - actually it is a SPI including the test cases. You can feel free and provide your own implementation - the interfaces are all in Java. You might have heard of Equinox as the Eclipse implementation.</p>
<p><strong>What does it have in stock for you? </strong></p>
<ul>
<li>Register services (which are basically interfaces)</li>
<li>Bind implementations to a service</li>
<li>Find a service (or more precisely the bound implementation)</li>
<li>Listeners on service binding and unbinding</li>
</ul>
<p><strong>Component Life Cycle</strong></p>
<ol>
<li>install</li>
<li>start</li>
<li>stop</li>
<li>update</li>
<li>uninstall</li>
</ol>
<p>You can react on any life cycle update and do what you need to do, e.g. allocate a connection pool on install, free it on uninstall, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/11/w-jax-osgi/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Return of the Apple</title>
		<link>http://bits.goeckeler.com/2007/11/11/w-jax-return-of-the-apple/</link>
		<comments>http://bits.goeckeler.com/2007/11/11/w-jax-return-of-the-apple/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 16:32:35 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=7</guid>
		<description><![CDATA[Wenn etwas wirklich auff&#228;llig war an dieser W-JAX, au&#223;er des merklichen Zuwachses an Rednern und Teilnehmern, so doch die erh&#246;hte Pr&#228;senz von Apples. In der Vergangenheit war schon immer mal der eine oder andere Apple sowie der eine oder andere Linux-Rechner zu bestaunen gewesen, diesmal aber waren Apples &#252;berall.
Kaum ein Vortrag, wo kein Mac OS [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn etwas wirklich auff&#228;llig war an dieser W-JAX, au&#223;er des merklichen Zuwachses an Rednern und Teilnehmern, so doch die erh&#246;hte Pr&#228;senz von Apples. In der Vergangenheit war schon immer mal der eine oder andere Apple sowie der eine oder andere Linux-Rechner zu bestaunen gewesen, diesmal aber waren Apples &#252;berall.</p>
<p><span id="more-7"></span>Kaum ein Vortrag, wo kein Mac OS die Folien beisteuerte, das Verh&#228;ltnis war gef&#252;hlte 60% Apple und 40% Windows.</p>
<p>Interessant aber dass der Apple auch au&#223;erhalb der Vortragsnomaden seinen Siegeszug h&#228;lt, ob in der Lobby oder sonstwo. Nur die Aussteller hatten mehrheitlich auf Windows gesetzt. Nun ja, viele spannende Themen laufen halt auch auf der Kommandozeile ab, vor allen die Skriptsprachen wie Ruby On Rails, Groovy, etc. Und der Apple hat halt neben dem richtig sch&#246;nen und schnellen grafischen Desktop immer sofort ein Terminal parat.</p>
<p>&#220;brigens: Auf meinem Rechner l&#228;uft auf Kundenwunsch weiterhin Windows XP &#8230; man darf doch wohl noch tr&#228;umen.</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/11/w-jax-return-of-the-apple/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Domain Driven Design</title>
		<link>http://bits.goeckeler.com/2007/11/08/w-jax-domain-driven-design/</link>
		<comments>http://bits.goeckeler.com/2007/11/08/w-jax-domain-driven-design/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 13:17:24 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=6</guid>
		<description><![CDATA[Zusammenfassung des Vortrages von Arno Haase und Michael Pl&#246;d.
Domain Driven Design - Entwurf getrieben von den fachlichen Anforderungen
Warum?
Weil die Fachlichkeit i.d.R. die Aspekte sind, die am l&#228;ngesten stabil bleiben bzw. sich am wenigsten ver&#228;ndern um die sich letztendlich alles dreht.  Beispiel: Die Kontonummer eines Kunden hat immer Bestand, egal welche Anwendung darauf zur&#252;ckgreift. Aus [...]]]></description>
			<content:encoded><![CDATA[<p><em>Zusammenfassung des Vortrages von Arno Haase und Michael Pl&#246;d.</em></p>
<p>Domain Driven Design - Entwurf getrieben von den fachlichen Anforderungen</p>
<p><span id="more-6"></span><strong>Warum?</strong></p>
<p>Weil die Fachlichkeit i.d.R. die Aspekte sind, die am l&#228;ngesten stabil bleiben bzw. sich am wenigsten ver&#228;ndern um die sich letztendlich alles dreht.  Beispiel: Die Kontonummer eines Kunden hat immer Bestand, egal welche Anwendung darauf zur&#252;ckgreift. Aus Erfahrung wissen wir auch, dass Daten stabiler als Methoden sind, d.h. Artikel werden seit Jahren immer auf die gleiche Weise abgelegt, egal ob die Zugriffssoftware in COBOL oder Java erstellt wurde.</p>
<p><strong>Was sagen die Vortragenden?</strong></p>
<p>&#8220;Einige Dich auf eine Sprache!&#8221; - das ist das eigentliche Motto. <em>Domain</em> entspricht hierbei der Fachlichkeit bzw. dem Fachwissen, und zwar explizit nicht der technischen Sicht. Domain Driven hei&#223;t hierbei Orientierung am Anwender, also wird alles von der fachlichen Ebene getrieben, nicht von der technischen Umsetzung.</p>
<p>Die Modelle bzw. der Code sollte die Sprache der Fachanwender wiederspiegeln, damit die Anwender direkt mit den Entwicklern sprechen k&#246;nnen und ein gemeinsames Verst&#228;ndnis der Begriffe vorhanden ist, auch im Hinblick auf sp&#228;tere &#196;nderungen und Fluktuationen.</p>
<p>Orientiere Dich in der  technischen Umsetzung immer an der Unterst&#252;tzung der fachlichen Anforderungen, und Deine Codebasis wird stabiler und einfacher sein, sowohl in der Entwicklung als auch in der Wartung, selbst wenn die Anwendung skaliert.</p>
<p><strong>Tipps und Tricks</strong></p>
<ol>
<li>Mache die Domain Objects (Gesch&#228;ftsobjekte) als auch die Business Logic (Gesch&#228;ftslogik und -prozesse) explizit, b&#252;ndele sie und denke an die entsprechende Benennung! Factories, Composites, Strategies helfen hier.</li>
<li>Domain Driven Design ist eine notwendige Voraussetzung f&#252;r Model-Driven Software Development (MDSD), da sonst keine (stabile) formale Spezifikation m&#246;glich ist.</li>
<li>Domain Driven Design ist hilfreich f&#252;r Extreme Programming (XP), legt aber mehr Wert auf Dokumentation und kann auch in gro&#223;en Projekten von gro&#223;em Nutzen sein.</li>
<li>&#196;nderungen im Domain Model (sowie in der Domain) sind teuer, lohnen sich aber immer. Verschleppung ist noch teurer, und zwar exponential.</li>
<li>Partionierung der Domains ist ein gutes Mittel, insbesondere um die Kerndom&#228;ne herauszusch&#228;len und die logisch Dom&#228;nen zu trennen und damit beherrschbar zu machen.</li>
<li>In gro&#223;en Projekten muss die Kerndom&#228;ne identifiziert werden und kurz und pr&#228;gnant beschrieben werden, am besten in Form eines &#8220;Vision Statements&#8221;.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/08/w-jax-domain-driven-design/feed/</wfw:commentRss>
		</item>
		<item>
		<title>W-JAX: Eindr&#252;cke und Kommentare</title>
		<link>http://bits.goeckeler.com/2007/11/07/w-jax-eindruecke-und-kommentare/</link>
		<comments>http://bits.goeckeler.com/2007/11/07/w-jax-eindruecke-und-kommentare/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 16:01:30 +0000</pubDate>
		<dc:creator>Blog Administrator</dc:creator>
		
		<category><![CDATA[W-JAX]]></category>

		<guid isPermaLink="false">http://goeckeler.com/bits/?p=5</guid>
		<description><![CDATA[Die W-JAX 2007 in M&#252;nchen hat begonnen, und in den n&#228;chsten Tagen werden die beiden Teilnehmer unserer Firma Euch mit den Zusammenfassungen der Vortr&#228;ge und den Eindr&#252;cken bei Laune halten. Da wir so nebenbei entweder den Vortr&#228;gen lauschen oder dem Projektstess fr&#246;nen werden die Beitr&#228;ge h&#228;ppchenweise serviert.
Ach so: Alle Eindr&#252;cke und Zusammenfassungen sind h&#246;chst subjektiv [...]]]></description>
			<content:encoded><![CDATA[<p>Die W-JAX 2007 in M&#252;nchen hat begonnen, und in den n&#228;chsten Tagen werden die beiden Teilnehmer unserer Firma Euch mit den Zusammenfassungen der Vortr&#228;ge und den Eindr&#252;cken bei Laune halten. Da wir so nebenbei entweder den Vortr&#228;gen lauschen oder dem Projektstess fr&#246;nen werden die Beitr&#228;ge h&#228;ppchenweise serviert.</p>
<p>Ach so: Alle Eindr&#252;cke und Zusammenfassungen sind h&#246;chst subjektiv und nie ein Zitat &#8230; so haben die Herren und Damen es vorne garantiert nicht gesagt, so hat der Autor es verstanden und wollte es so verstehen.</p>
<p>Danke f&#252;r die Nachsicht!</p>
]]></content:encoded>
			<wfw:commentRss>http://bits.goeckeler.com/2007/11/07/w-jax-eindruecke-und-kommentare/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
