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

<channel>
	<title>leine.info</title>
	<atom:link href="http://leine.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://leine.info</link>
	<description>Discover my public and private World.</description>
	<lastBuildDate>Fri, 20 Apr 2012 09:06:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Tomcat Performance Tuning</title>
		<link>http://leine.info/2012/04/tomcat-performance-tuning/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tomcat-performance-tuning</link>
		<comments>http://leine.info/2012/04/tomcat-performance-tuning/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 08:29:26 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">https://ssl-account.com/leine.info/?p=453</guid>
		<description><![CDATA[Um die Performance seines eigenen Tomat Servers zu steigern sollte man sowohl an den JVM Optionen feilen, als auch an der Log Konfiguration. Generell sollte man dem Tomcat Prozess ausreichend Speicher geben. Dabei haben sich, nach meiner Erfahrung, z.B. folgende &#8230; <a href="http://leine.info/2012/04/tomcat-performance-tuning/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um die Performance seines eigenen Tomat Servers zu steigern sollte man sowohl an den JVM Optionen feilen, als auch an der Log Konfiguration.</p>
<p>Generell sollte man dem Tomcat Prozess ausreichend Speicher geben. Dabei haben sich, nach meiner Erfahrung, z.B. folgende Parameter bewährt.</p>
<pre>JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC"</pre>
<p>Kurz zur Erklärung:</p>
<ul>
<li><strong>Xms</strong> ist die initiale Größe des Heap Speichers. Die eingestellte Speichergröße ist natürlich von dem verwendeten OS abhängig.</li>
<li><strong>Xmx</strong> ist die maximale Größe des Heap Speichers. Dieser Wert sollte, laut offizieller Empfehlung von Oracle, dem des Xms entsprechen, damit die JVM schneller starten kann.</li>
<li><strong>UseConcMarkSweepGC</strong> ist der sogenannte &#8220;concurrent low pause collector&#8221;. Dieser Garabage Collector sollte dann verwendet werden, wenn es sich um einen Webserver handelt, der auf einem MultiCore OS läuft. Der Standard GC einer JVM ist nämlich der &#8220;serial garbage collector&#8221;, welcher den verbrauchten Speicher seriell mit nur einem Core freigibt.</li>
</ul>
<p>Darüber hinaus kann man am Tomcat Connector selbst noch die ein oder andere Schraube drehen. Folgende Auflistung soll einen kurzen Hinweis darauf geben:</p>
<ul>
<li><strong>maxThreads</strong>: Anzahl der maximalen HTTP Connector Threads.</li>
<li><strong>maxSpareThreads</strong>: Maximale Anzahl der Threads, die immer existieren, auch wenn sie nichts zu tun haben. (Default: 50)</li>
<li><strong>minSpareThreads</strong>: Minimale Anzahl der Thread, die immer existieren sollen. (Default: 4)</li>
<li><strong>tcpNoDelay</strong>: Falls true, dann wird TCP_NO_DELAY für network sockets eingeschaltet. In diesem Falle werden kleine TCP Pakete nicht mit anderen zusammengelegt und versendet, sondern sofort verschickt.</li>
<li><strong>maxKeepAliveRequest</strong>: Anzahl der HTTP Verbindungen, die das keep-alive Flag nutzen dürfen. (Default: 100)</li>
<li><strong>socketBuffer</strong>: Bytegröße des Output Buffers. (Default: 9000)</li>
<li><strong>enableLookups</strong>: wenn false, dann werden DNS Lookups für request.getRemoteHost() abgeschalten.</li>
</ul>
<p><strong>Beispiel:</strong></p>
<pre name="code" class="xml">
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector acceptCount=”100” connectionTimeout=”20000” debug=”0” disableUploadTimeout=”true” enableLookups=”false” maxSpareThreads=”75” maxThreads=”150” minSpareThreads=”25” port=”8080” redirectPort=”8443”/>
</pre>
<h2>Logging</h2>
<p>Wenn mehrere Threads versuchen parallel viel in Logs zu schreiben, kommt es öfters zu Locks. In diesem Falle sollte man den &#8220;normalen Logger&#8221; gegen einen asynchronen austauschen. Dadurch werden die Protokolle erst in einen Buffer abgelegt und dann asynchron von Zeit zu Zeit geschrieben.</p>
<p>Um den asynchronen Logger einzustellen, muss die log4j.properties Datei in eine log4j.xml umgeschrieben werden.</p>
<p><strong>Beispiel:</strong></p>
<pre name="code" class="xml">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

        <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="10"/>
	  <appender-ref ref="FILE"/>
        </appender>

        <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/cadenza-web.log"/>
<param name="DatePattern" value="'_'yyyy-MM-dd'.log'"/>
<param name="encoding" value="UTF-8" />
          <layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %-c - %m%n" />
          </layout>
        </appender>

        <logger name="de.disy" additivity="false">
  	  <level value="warn"/>
          <appender-ref ref="ASYNC"/>
	</logger>

        <logger name="gis.gisterm" additivity="false">
  	  <level value="warn"/>
          <appender-ref ref="ASYNC"/>
	</logger>

        <logger name="net.disy" additivity="false">
  	  <level value="warn"/>
          <appender-ref ref="ASYNC"/>
	</logger>

        <logger name="org.springframework" additivity="false">
  	  <level value="warn"/>
          <appender-ref ref="ASYNC"/>
	</logger>

        <logger name="org.directwebremoting" additivity="false">
  	  <level value="warn"/>
          <appender-ref ref="ASYNC"/>
	</logger>

        <logger name="net.jawr" additivity="false">
  	  <level value="warn"/>
          <appender-ref ref="ASYNC"/>
	</logger>

        <root>
<priority value="error"/>
          <appender-ref ref="ASYNC"/>
        </root>

</log4j:configuration>
</pre>
<p>Diese Einstelllungen sind allerdings noch nicht alles. Wer einen fundierten Einblick in die Möglichkeiten von TOMCAT erhalten will, dem empfehle ich das Buch &#8220;<a title="Professional Apache Tomcat" href="http://www.amazon.de/Professional-Apache-Tomcat-WROX-Guides/dp/0471753610/" target="_blank">Professional Apache Tomcat</a>&#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2012/04/tomcat-performance-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gaming 2.0</title>
		<link>http://leine.info/2011/12/gaming-2-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gaming-2-0</link>
		<comments>http://leine.info/2011/12/gaming-2-0/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 09:23:00 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Online Gaming]]></category>

		<guid isPermaLink="false">http:/leine.info//leine.info/ssl-account.com/leine.info/?p=444</guid>
		<description><![CDATA[Heute morgen erhielt ich eine E-Mail von Gaiki mit der Ankündigung, daß endlich ein Showcase online wäre. Gaiki? Showcase? WTF? Beinahe wäre die E-Mail sofort in meinem Papierkorb verschwunden, aber dann fiel es mir doch wieder ein. Gaiki ist eine &#8230; <a href="http://leine.info/2011/12/gaming-2-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute morgen erhielt ich eine E-Mail von <a href="http://www.gaikai.com">Gaiki</a> mit der Ankündigung, daß endlich ein Showcase online wäre. Gaiki? Showcase? WTF? Beinahe wäre die E-Mail sofort in meinem Papierkorb verschwunden, aber dann fiel es mir doch wieder ein. Gaiki ist eine Platform, die es Spielepublishern ermöglicht ihre Spiele zum Endanwender zu streamen. Damit sollen die Zeiten von Windows und potenter Hardware endgültig gezählt sein.</p>
<p>Nun gut, ich hatte im Vorfeld immer mal wieder darüber gelesen, allerdings war ich nie in der Lage das Ganze auch mal auszuprobieren. Nun ja, bis heute zumindest. Also schnell mal die <a href="http://www.gaikai.com/games">Showcase Site von Gaiki</a> angeklickt und siehe da, dort gibt es die ein oder andere Hightech Demo, wie z.B. Crsysis 2.</p>
<p><a href="http://leine.info/wordpress/wp-content/uploads/2011/12/GAIKI-Showcase.png"><img class="aligncenter size-medium wp-image-446" title="GAIKI-Showcase" src="http://leine.info/wordpress/wp-content/uploads/2011/12/GAIKI-Showcase-300x258.png" alt="" width="300" height="258" /></a></p>
<p>Ein Klick auf das Cover fordert einen noch schnell dazu auf den Java Client von Gaiki zu installieren und dann ging es auch schon los und ich muss wirklich sagen ich war BEGEISTERT! Nicht nur, dasß ich Crysis 2 unter LINUX ausprobieren konnte, nein, die Grafik war ebenfalls der Hammer! Ein Blick ins Optionsmenü bestätigte meinen persönlichen Eindruck. Maximale Detailstufe bei einer Auflösung von 1600 x 1200. Der Hammer! Latenzprobleme beim spielen? Fehlanzeige! Sollte sich dieser erste Eindruck in nächster Zeit bestätigen, dann muss ich wirklich ernsthaft darüber nachdenken, warum ich eigentlich noch eine potente Garfikkarte mein Eigen nenne???</p>
<p>In diesem Sinne Happy Gaming und en guten Rutsch!</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/12/gaming-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Websockets in JSF 2.0</title>
		<link>http://leine.info/2011/12/websockets-in-jsf-2-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=websockets-in-jsf-2-0</link>
		<comments>http://leine.info/2011/12/websockets-in-jsf-2-0/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 08:00:55 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[JSF 2.0]]></category>
		<category><![CDATA[Websokets]]></category>

		<guid isPermaLink="false">https://ssl-account.com/leine.info/?p=450</guid>
		<description><![CDATA[HTML5 rückt immer näher und die Unterstützung auf Endgeräten wird allmählich marktreif. Höchste Zeit sich einmal mit JSF 2.0 und Websockets auseinanderzusetzen. Das alles wird einem schön in einer JAX Session näher gebracht. Building next-generation Web Apps with WebSocket and &#8230; <a href="http://leine.info/2011/12/websockets-in-jsf-2-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>HTML5 rückt immer näher und die Unterstützung auf Endgeräten wird allmählich marktreif. Höchste Zeit sich einmal mit JSF 2.0 und Websockets auseinanderzusetzen. Das alles wird einem schön in einer JAX Session näher gebracht.</p>
<p><iframe src="http://player.vimeo.com/video/34071289?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="225"></iframe></p>
<p><a href="http://vimeo.com/34071289">Building next-generation Web Apps with WebSocket and HTML5</a> from <a href="http://vimeo.com/jaxtv">JAX TV</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/12/websockets-in-jsf-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grails UI, gui:dataTable und i18n</title>
		<link>http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=grails-ui-guidatatable-und-i18n</link>
		<comments>http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 11:02:31 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[dataTable]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[grails ui]]></category>
		<category><![CDATA[gui:dataTable]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http:/leine.info//leine.info/ssl-account.com/leine.info/?p=418</guid>
		<description><![CDATA[Vor kurzem habe ich mich mit Grails beschäftigt. Eigentlich eine ziemlich nettes Framework, mit dem man schnell einen Prototyp programmieren kann. Für meinen Geschmack war die Unterstützung für Rich UI allerdings etwas dürftig, doch das ist kein Problem, denn in &#8230; <a href="http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem habe ich mich mit <a href="http://grails.org/">Grails</a> beschäftigt. Eigentlich eine ziemlich nettes Framework, mit dem man schnell einen Prototyp programmieren kann. Für meinen Geschmack war die Unterstützung für Rich UI allerdings etwas dürftig, doch das ist kein Problem, denn in diese Lücke springen in Grails die sogenannten <a href="http://www.grails.org/plugins/">Plugins</a>.</p>
<p>In meinem Fall habe ich mich für das <a href="http://www.grails.org/plugin/grails-ui">Grails-UI Plugin</a> entschieden. Dieses Plugin bietet eine schöne Integration von <a href="http://developer.yahoo.com/yui/">YUI</a> und YUI wiederum bietet ein umfangreiches Set an Rich UI Komponenten.</p>
<p>Das Plugin war schnell installiert und die Integration in Grails war auch relativ leicht umzusetzen. Vor allem das Tag <strong>&lt;gui:dataTable&gt;</strong> kam bei mir stark zum Einsatz. Irgendwann allerdings kam ich zu dem Punkt, wo ich mich mit Internationalisierung auseinandersetzen musste und dieses Problem war leider nur sehr dürftig beschrieben. Aus diesem Grund will ich heute kurz aufzeigen was man hierfür alles tun muss.</p>
<p><span id="more-418"></span></p>
<h2>i18n für YUI</h2>
<p>Um YUI zu internationalisieren muss man ein wenig in der offiziellen Doku suchen. Leider habe ich kein durchgängiges Konzept erkennen können. Teilweise müssen einfach statische JS Variablen umdefiniert werden, teilweise muss eine Variable im prototype überschrieben werden und teilweise müssen sog. Data Formatter definiert werden, die z.B. eine Datumszelle entsprechend formatieren.</p>
<pre name="code" class="javascript">  YAHOO.widget.Calendar.DEFAULT_CONFIG.NAV.value = true;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.CLOSE.value = "Schlie\u00DFen"

  // Correct formats for Germany: dd.mm.yyyy, dd.mm, mm.yyyy
  YAHOO.widget.Calendar.DEFAULT_CONFIG.DATE_FIELD_DELIMITER.value = ".";

  YAHOO.widget.Calendar.DEFAULT_CONFIG.MDY_DAY_POSITION.value = 1;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MDY_MONTH_POSITION.value = 2;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MDY_YEAR_POSITION.value = 3;

  YAHOO.widget.Calendar.DEFAULT_CONFIG.MD_DAY_POSITION.value = 1;
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MD_MONTH_POSITION.value = 2;

  // Date labels for German locale
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MONTHS_SHORT.value = ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.MONTHS_LONG.value = ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_1CHAR.value = ["S", "M", "D", "M", "D", "F", "S"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_SHORT.value = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_MEDIUM.value = ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"];
  YAHOO.widget.Calendar.DEFAULT_CONFIG.WEEKDAYS_LONG.value = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];

  // Start the week on a Monday (Sunday == 0)
  YAHOO.widget.Calendar.DEFAULT_CONFIG.START_WEEKDAY.value = 1;

  //CalendarNavigator show up if clicked on the current month
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.submit = "OK"
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.cancel = "Abbr."
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.invalidYear = "Das Jahr muss eine Zahl sein."
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.month = "Monat"
  YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG.strings.year = "Jahr"

    YAHOO.widget.BaseCellEditor.prototype.LABEL_SAVE = "OK"
    YAHOO.widget.BaseCellEditor.prototype.LABEL_CANCEL = "Abbr."

    /*
     * BUGFIX for YUI &lt; 2.9
     * If a date cell contains a null value the cell editor calendar does not show up.
     * Till we're not using YUI 2.9 and above this is the fix for it.
     *
     * http://yuilibrary.com/projects/yui2/ticket/2529117
     */
    YAHOO.widget.DateCellEditor.prototype.resetForm = function() {
      var value = this.value || new Date();
      var selectedValue = (value.getMonth()+1)+"/"+value.getDate()+"/"+value.getFullYear();
      this.calendar.cfg.setProperty("selected",selectedValue,false);
      this.calendar.render();
    };

    YAHOO.widget.DataTable.Formatter.date = function(elCell, oRecord, oColumn, oData) {
      var oDate = oData;
      if(oDate instanceof Date) {
        elCell.innerHTML = YAHOO.util.Date.format(oDate, { format: "%d.%m.%Y"});
      } else {
        elCell.innerHTML = '';
      }
    };</pre>
<p>Damit hat man zumindest den reinen YUI DataTable umgestellt. Der große Teil ist hier einfach die Übersetzung der englischen Strings in die jeweilige Zielsprache. Ein kleinerer Teil ist die Verwendung eines speziellen DateFormatters, damit in der Zelle selbst ein deutsches Format verwendet wird, und zum Schluss noch ein Bugfix für YUI selbst, denn das Grails Plugin verwendet momentan noch YUI in der Version 2.8. In dieser Version ist es unmöglich für eine leere Datums Tabellenzelle einen neuen Wert zu definieren. Sollte das Grails Plugin irgendwann YUI die Version 2.9 verwenden entfällt dieser Bugfix.</p>
<h2>i18n für Grails</h2>
<p>Hat man YUI nun eine andere Sprache beigebracht, muss man sich jetzt noch um den Grails Teil kümmern. Folgender Template Code demonstriert dies kurz.</p>
<pre name="code" class="html">        &lt;!-- http://jira.grails.org/browse/GPUI-250 --&gt;
        &lt;g:set var="i18nfirstName" value="${message(code: 'user.firstName.label', default: 'First Name')}"/&gt;
        &lt;g:set var="i18nlastName" value="${message(code: 'user.lastName.label', default: 'Last Name')}" /&gt;
        &lt;g:set var="i18ndate" value="${message(code: 'user.date.label', default: 'Date')}" /&gt;

        &lt;g:set var="i18nfirstPage" value="${message(code: 'disy.paginator.firstPage.label', default: 'First Page')}" /&gt;
        &lt;g:set var="i18npreviousPage" value="${message(code: 'disy.paginator.previousPage.label', default: 'Previous Page')}" /&gt;
        &lt;g:set var="i18nnextPage" value="${message(code: 'disy.paginator.nextPage.label', default: 'Next Page')}" /&gt;
        &lt;g:set var="i18nlastPage" value="${message(code: 'disy.paginator.lastPage.label', default: 'Last Page')}" /&gt;

        &lt;gui:dataTable
          id="myList"
          selectionMode="standard"
          draggableColumns="true"
          sortedBy="lastName"
          columnDefs="[
                  [id:'Id',
                   hidden: true ],

                  [lastName: i18nlastName,
                   formatter:  'text' ,
                   editor:[controller:'myController', action:'tableChange', onSuccess:'successCallback', onFailure:'failureCallback'],
                   sortable:true,
                   resizeable: true],

                  [firstName: i18nfirstName,
                   formatter:  'text' ,
                   editor:[controller:'myController', action:'tableChange', onSuccess:'successCallback', onFailure:'failureCallback'],
                   sortable:true,
                   resizeable: true],

                  [date: i18ndate,
                   formatter:  'date',
                   editor:[controller:'myController', action:'tableChange', onSuccess:'successCallback', onFailure:'failureCallback'],
                   sortable:true,
                   resizeable: true]]"
          allowExclusiveSort='true'
          controller="myController" action="listJSON"
          rowsPerPage="30"
          MSG_EMPTY="${message(code: 'dataTable.empty.label', default: 'No records found.')}"
          MSG_ERROR="${message(code: 'dataTable.error.label', default: 'Data error.')}"
          MSG_LOADING="${message(code: 'dataTable.loading.label', default: 'Loading...')}"
          paginatorConfig="[
            firstPageLinkLabel: '&amp;lt;&amp;lt;',
            firstPageLinkTitle: i18nfirstPage,
            previousPageLinkLabel: '&amp;lt;',
            previousPageLinkTitle: i18npreviousPage,
            nextPageLinkLabel: '&amp;gt;',
            nextPageLinkTitle: i18nnextPage,
            lastPageLinkLabel: '&amp;gt;&amp;gt;',
            lastPageLinkTitle: i18nlastPage
          ]" /&gt;</pre>
<p>HIerbei fällt folgendes auf:</p>
<ul>
<li>Der Pager wird als paginatorConfig umdefiniert, damit dieser auch in der gewünschten Zielsprache ist.</li>
<li>Die Default Texte für einen leeren DataTable (MSG_EMPTY, MSG_ERROR, MSG_LOADING) werden ebenfalls definiert.</li>
<li>Alle Zellenüberschriften werden zuvor als Grails Variable angelegt und verwendet. Dies ist leider noch ein Feature Request für gui:dataTable und vielleicht wird dies in absehbarer Zeit umgesetzt.</li>
</ul>
<p>Damit hat man nun einen DataTable, der fast fertig ist. Fast deswegen, weil die übermittelten Werte des YUI DataTable auf Controller Seite noch formatiert werden müssen. Werden neue Datumswerte ausgewählt, dann überträgt YUI dies in einem bestimmten DateFormat, welches wir auf Grails Seite bei einem AJAX Update entsprechend in unser Date parsen müssen.</p>
<pre name="code" class="Java">    //Parse param
    if (params.field == 'date') {
      SimpleDateFormat formatter = new java.text.SimpleDateFormat("E MMM dd yyyy HH:mm:ss ZZZZZZZ", Locale.ROOT);
      myObject."$params.field" = formatter.fomrmat(params.newValue)
    }</pre>
<p>Haben wir all diese Schritte entsprechend umgesetzt, sollten wir nun in der Lage sein einen internationalisierten gui:dataTable zu verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/12/grails-ui-guidatatable-und-i18n/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven Tutorials</title>
		<link>http://leine.info/2011/12/maven-tutorials/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=maven-tutorials</link>
		<comments>http://leine.info/2011/12/maven-tutorials/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 16:45:15 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://leine.info/?p=416</guid>
		<description><![CDATA[Da ich in letzter Zeit mich verstärkt mit dem Thema Android Programmierung beschäftige möchte ich euch kurz auf eine Seite aufmerksam machen, die wirklich gut geschrieben ist. Es handelt sich hierbei um den Blog von Lars Vogel und hier hat es &#8230; <a href="http://leine.info/2011/12/maven-tutorials/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Da ich in letzter Zeit mich verstärkt mit dem Thema Android Programmierung beschäftige möchte ich euch kurz auf eine Seite aufmerksam machen, die wirklich gut geschrieben ist.</p>
<p>Es handelt sich hierbei um den Blog von <a href="http://www.vogella.de/">Lars Vogel</a> und hier hat es mir vor allem die <a href="http://www.vogella.de/articles/Android/article.html">Android Tutorials Seite</a> schwer angetan. Ein Blick lohnt sich in jedem Fall!</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/12/maven-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven, Spring und STS</title>
		<link>http://leine.info/2011/11/maven-spring-und-sts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=maven-spring-und-sts</link>
		<comments>http://leine.info/2011/11/maven-spring-und-sts/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 19:20:39 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[M2E]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Maven Annotations]]></category>
		<category><![CDATA[STS]]></category>

		<guid isPermaLink="false">http://leine.info/?p=414</guid>
		<description><![CDATA[Durch Zufall bin ich heute im Spring Blog auf einen guten Artikel gestoßen, der sich mit dem Problem von STS (2.8), M2E (1.0) und Android beschäftigt. Für all diejenigen, die nun wissen was ich meine, rate ich dringend diesem Eintrag &#8230; <a href="http://leine.info/2011/11/maven-spring-und-sts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Durch Zufall bin ich heute im <a title="Spring Blog" href="http://blog.springsource.com">Spring Blog</a> auf einen guten Artikel gestoßen, der sich mit dem Problem von <a title="STS" href="http://www.springsource.com/developer/sts">STS</a> (2.8), <a title="M2E" href="http://www.eclipse.org/m2e/">M2E</a> (1.0) und <a title="Android" href="http://developer.android.com/sdk">Android</a> beschäftigt. Für all diejenigen, die nun wissen was ich meine, rate ich dringend diesem Eintrag zu lesen. Für alle anderen, die ihr Android Project mit Hilfe von Maven, Spring und STS bauen wollen, empfehle ich zumindest einen Blick darauf zu werfen. Mir hat es endlich geholfen meine Build Probleme in den Griff zu bekommen.</p>
<p><a title="Los geht's!" href="http://blog.springsource.com/2011/11/07/updated-maven-support-for-android-projects/">Los gehts!</a></p>
<p>Und wenn wir schon beim Thema Android Entwicklung sind. Wenn euch unter dem Stichwort <a title="Android Annotations" href="http://code.google.com/p/androidannotations/">Android Annotations</a> nichts einfällt, dann werft unbedingt auch ein Blick hierauf. Gerade am Anfang erleichtert es einem die App Entwicklung enorm!</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/11/maven-spring-und-sts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JPA Optimierungen</title>
		<link>http://leine.info/2011/09/jpa-optimierungen/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jpa-optimierungen</link>
		<comments>http://leine.info/2011/09/jpa-optimierungen/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 13:52:56 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://leine.info/?p=407</guid>
		<description><![CDATA[Da ich im Allgemeinen ein großer Fan von JPA bin, und überdies bei meinen privaten Projekten gerne Spring Data einsetze, ist es für mich unabdingbar mich auch näher mit dessen Optimierung zu beschäftigen. Nichts ist schlimmer als wenn man ein &#8230; <a href="http://leine.info/2011/09/jpa-optimierungen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Da ich im Allgemeinen ein großer Fan von <a title="JPA" href="http://en.wikipedia.org/wiki/Java_Persistence_API" target="_blank">JPA</a> bin, und überdies bei meinen privaten Projekten gerne <a title="Spring Data" href="http://www.springsource.org/spring-data" target="_blank">Spring Data</a> einsetze, ist es für mich unabdingbar mich auch näher mit dessen Optimierung zu beschäftigen. Nichts ist schlimmer als wenn man ein schönes OR-Mapping mit entsprechenden Repositories aufweisen kann, die zu Grunde liegende DB Schicht allerdings eine schlechte Performance aufweist.</p>
<p>Also tut euch und dem DB Admin einen Gefallen und werft einen kurzen Blick auf folgendes Video. Schaden kann es nicht ;)</p>
<p><iframe src="http://player.vimeo.com/video/29416491?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="225"></iframe></p>
<p><a href="http://vimeo.com/29416491">Optimierung von JPA-Anwendungen</a> from <a href="http://vimeo.com/jaxtv">JAX TV</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/09/jpa-optimierungen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache 2 Header Bug führt zum System Stillstand</title>
		<link>http://leine.info/2011/08/apache-2-header-fehler-fuhrt-zum-system-stillstand/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apache-2-header-fehler-fuhrt-zum-system-stillstand</link>
		<comments>http://leine.info/2011/08/apache-2-header-fehler-fuhrt-zum-system-stillstand/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 13:20:44 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Header]]></category>

		<guid isPermaLink="false">http://leine.info/?p=393</guid>
		<description><![CDATA[Leider musste ich heute auf heise.de einen ziemlich beunruhigend Artikel über den apache 2 lesen. Momentan gibt es einen Bug im Apache, der das komplette System zum Stillstand bringt. Nachzulesen hier: http://www.heise.de/newsticker/meldung/Tool-bringt-Apache-Webserver-zum-Stillstand-1329986.html Da ich ebenfalls davon betroffen bin, hab ich &#8230; <a href="http://leine.info/2011/08/apache-2-header-fehler-fuhrt-zum-system-stillstand/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Leider musste ich heute auf <a href="http://www.heise.de" title="heise.de" target="_blank">heise.de</a> einen ziemlich beunruhigend Artikel über den apache 2 lesen. Momentan gibt es einen Bug im Apache, der das komplette System zum Stillstand bringt.</p>
<p>Nachzulesen hier:<br />
<a href="http://www.heise.de/newsticker/meldung/Tool-bringt-Apache-Webserver-zum-Stillstand-1329986.html" target="_blank">http://www.heise.de/newsticker/meldung/Tool-bringt-Apache-Webserver-zum-Stillstand-1329986.html</a></p>
<p>Da ich ebenfalls davon betroffen bin, hab ich gleich mal ein paar Foren und Blogs nach einer Lösung durchsucht, um letztendlich auf folgende header Modul Lösung zu stoßen.</p>
<p>in <strong>/etc/apache2/conf.d</strong> eine Datei header.conf mit folgendem Inhalt anlegen:</p>
<pre name="code">
SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range
</pre>
<p>Anschließend muss man, falls nicht aktiv, noch das headers Modul des Apaches aktivieren.</p>
<pre name="code">
a2enmod headers
/etc/init.d/apache2 restart
</pre>
<p>Damit sollte man vor diesem Bug sicher sein, zumindest wenn man Root Zugriff hat. Wir immer keine Garantie oder Gewährleistung von mir. Falls ihr was besseres habt immer her damit.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/08/apache-2-header-fehler-fuhrt-zum-system-stillstand/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java 7 Video Tutorials</title>
		<link>http://leine.info/2011/07/java-7-video-tutorials/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-7-video-tutorials</link>
		<comments>http://leine.info/2011/07/java-7-video-tutorials/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 08:02:55 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Java 7]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://leine.info/?p=387</guid>
		<description><![CDATA[Nach einer gefühlten Ewigkeit ist es nun soweit. Java erscheint in der Version 7. Zumindest hoffe ich das wenn wir endlich den 28 Juli haben. Umfangreiche Änderungen oder neue Killer Features sucht man leider vergeblich. Allerdings gibt es die ein &#8230; <a href="http://leine.info/2011/07/java-7-video-tutorials/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nach einer gefühlten Ewigkeit ist es nun soweit. Java erscheint in der Version 7. Zumindest hoffe ich das wenn wir endlich den 28 Juli haben.</p>
<p>Umfangreiche Änderungen oder neue Killer Features sucht man leider vergeblich. Allerdings gibt es die ein oder andere Verbesserung, die einem die tägliche Entwicklerarbeit erleichtert. Derjenige, der sich noch nicht mit den neuen Features von Java 7 beschäftigt hat, empfehle ich die zugeschnitten Videos des Java Launch Events. Sie bieten eine kurze Einführung und Übersicht über die neuen Features, wie z.B.:</p>
<ul>
<li>Strings in switch</li>
<li>Multi-Catch</li>
<li>try-with-resources</li>
<li>Varargs Warnungen</li>
<li>Diamond Operatoren</li>
</ul>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168642001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168642001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168643001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168643001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168644001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168644001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168645001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168645001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
<p><object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1041168646001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" bgcolor="#FFFFFF" flashVars="videoId=1041168646001&#038;playerID=1640183659&#038;playerKey=AQ~~,AAAAAFcSbzI~,OkyYKKfkn3za9MF0qI3Ufg1AerdkqfR3&#038;domain=embed&#038;dynamicStreaming=true" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/07/java-7-video-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Application und Webserver Security</title>
		<link>http://leine.info/2011/07/web-application-und-webserver-security/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=web-application-und-webserver-security</link>
		<comments>http://leine.info/2011/07/web-application-und-webserver-security/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 08:28:56 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://leine.info/?p=385</guid>
		<description><![CDATA[In letzter Zeit habe ich mich mit der Sicherheit von Webapplikationen beschäftigt. Eine erste Adresse ist das Open Web Application Security Project, kurz OWASP. Die OWASP veröffentlicht pro Jahr immer eine TOP 10 Liste der meisten Gefahren für Webentwickler. In &#8230; <a href="http://leine.info/2011/07/web-application-und-webserver-security/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In letzter Zeit habe ich mich mit der Sicherheit von Webapplikationen beschäftigt. Eine erste Adresse ist das <a href="https://www.owasp.org">Open Web Application Security Project, kurz OWASP.</a> Die OWASP veröffentlicht pro Jahr immer eine <a href="https://www.owasp.org/index.php/Top_10_2010">TOP 10 Liste</a> der meisten Gefahren für Webentwickler. In dieser Liste findet man neben den üblichen Verdächtigen wie <a href="https://www.owasp.org/index.php/Top_10_2010-A1">SQL-Injection</a>, <a href="https://www.owasp.org/index.php/Top_10_2010-A5">CSRF</a> und <a href="https://www.owasp.org/index.php/Top_10_2010-A2">XSS</a> auch eher vernachlässigte Themen wie z.B. <a href="https://www.owasp.org/index.php/Top_10_2010-A10">&#8220;Unvalidated Redirects and Forwards&#8221;</a>.<br />
Jeder Sicherheitsaspekt wird hierbei kurz erläutert. Neben Hinweisen, um überhaupt festzustellen ob die eigene Webapplikation anfällig dafür ist, werden auch noch Lösungswege aufgezeichnet. Doch nicht nur die Entwicklung von Webapplikationen wird durchleuchtet. Neben dieser TOP 10 Liste werden noch andere Themenbereiche angesprochen. Dabei hat mir der Artikel <a href="https://www.owasp.org/index.php/Securing_tomcat">&#8220;Securing Tomcat&#8221;</a> sehr gut gefallen. Der Artikel geht dabei auf die Sicherheitseinstellungen des Servers ein und liefert zahlreiche Anleitungen zur Absicherung. Jeder der einen eigenen Tomcat betreibt sollte diesen Artikel gelesen haben.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/07/web-application-und-webserver-security/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

