<?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>Thu, 22 Dec 2011 13:57:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Gaming 2.0</title>
		<link>http://leine.info/2011/12/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="https://ssl-account.com/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/</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/</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/</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/</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/</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/</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/</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/</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>
		<item>
		<title>MySQL Referenzarchitekturen</title>
		<link>http://leine.info/2011/06/mysql-referenzarchitekturen/</link>
		<comments>http://leine.info/2011/06/mysql-referenzarchitekturen/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 09:47:39 +0000</pubDate>
		<dc:creator>jleine</dc:creator>
				<category><![CDATA[Architektur]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[White Paper]]></category>

		<guid isPermaLink="false">http://leine.info/?p=381</guid>
		<description><![CDATA[Da ich schon immer ein MySQL Fan gewesen bin und so ziemlich jeder Entwickler eine MySQL DB irgendwie im Einsatz hat, und sei es nur über seinen Webspace, beschäftige ich mich hin und wieder mit den Whitepapers von MySQL. Diese &#8230; <a href="http://leine.info/2011/06/mysql-referenzarchitekturen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Da ich schon immer ein <a href="http://www.mysql.de/">MySQL</a> Fan gewesen bin und so ziemlich jeder Entwickler eine MySQL DB irgendwie im Einsatz hat, und sei es nur über seinen Webspace, beschäftige ich mich hin und wieder mit den Whitepapers von MySQL. Diese sind, meiner Meinung nach, wirklich sehr gut gemacht.</p>
<p>Heute kam auch wieder ein Whitepaper heraus und dieses beschäftigt sich mit dem Thema <a href="http://www.mysql.de/why-mysql/white-papers/mysql_wp_web_refarchs.php.de">&#8220;MySQL Referenzarchitekturen für hoch skalierbare Webinfrastrukturen&#8221;</a>. Ok, meistens ist die eigene Referenzarchitektur für den Privatanwender relativ simpel. Ein Webserver trifft auf eine DB. Fertig. Doch das ist ja nicht alles. Beschäftigt man sich mit MySQL im professionellen Umfeld reicht das natürlich bei weitem nicht aus. Falls man sich jetzt noch nie mit dem Thema beschäftigt hat oder schon immer einmal wissen wollte wie die großen Player, z.B. Flickr, Facebook, etc, ihre DB Systeme aufsetzen, dann müsst ihr euch dieses <a href="http://www.mysql.de/why-mysql/white-papers/mysql_wp_web_refarchs.php.de">Whitepaper</a> einmal anschauen. Sehr schön gemacht. </p>
<p>Ich persönlich kam leider nur mit den mittelgroßen Architekturen in Berührung. Aber zumindest habe ich jetzt einen Überblick darüber was mich bei einem Think Big Projekt erwartet.</p>
]]></content:encoded>
			<wfw:commentRss>http://leine.info/2011/06/mysql-referenzarchitekturen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

