<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>My Information Centre</title>
    <link>https://my.center-of.info/</link>
    <description>Recent content on My Information Centre</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>blog@haddouti.com (Hafid Haddouti)</managingEditor>
    <webMaster>blog@haddouti.com (Hafid Haddouti)</webMaster>
    <lastBuildDate>Sun, 17 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://my.center-of.info/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Why SDD fails without harness engineering</title>
      <link>https://my.center-of.info/post/2026/2026-05-17-why-sdd-fails/</link>
      <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2026/2026-05-17-why-sdd-fails/</guid>
      <description>&lt;p&gt;You adopted spec-driven development. You write specs now, you&amp;rsquo;re careful, you also review them. You generate code from specs. You stopped doing &amp;ldquo;only&amp;rdquo; vibe coding.&lt;/p&gt;&#xA;&lt;p&gt;It works better than before. But it&amp;rsquo;s still not&amp;hellip; right.&lt;/p&gt;&#xA;&lt;p&gt;Then you realize: you&amp;rsquo;re doing SDD without harness engineering. Specs aren&amp;rsquo;t enough. You need enforcement.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vibe coding is dead (but your org still does it)</title>
      <link>https://my.center-of.info/post/2026/2026-05-03-vibecoding-is-dead/</link>
      <pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2026/2026-05-03-vibecoding-is-dead/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Vibe coding&lt;/strong&gt; is what happens when you treat AI as a code typewriter instead of a partner.&lt;/p&gt;&#xA;&lt;p&gt;You skip the specs. Skip the design thinking. Skip telling the AI what your architecture actually is. Then you&amp;rsquo;re shocked when:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hallucinations stack&lt;/strong&gt; — The AI guessed once. Now that guess is &amp;ldquo;the pattern.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Knowledge vanishes&lt;/strong&gt; — Nobody wrote down why. Good luck when the person who prompted it moves on.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Quality has no guardrails&lt;/strong&gt; — You&amp;rsquo;ll find the bugs after deployment, not before.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Use, Adapt and Integrate Enterprise-Grade Agentic AI Frameworks: A Series</title>
      <link>https://my.center-of.info/post/2026/2026-01-01-enterprise-agentic-ai-series/</link>
      <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2026/2026-01-01-enterprise-agentic-ai-series/</guid>
      <description>&lt;p&gt;Agentic AI represents a paradigm shift in enterprise automation. Unlike traditional AI that responds to queries, agentic systems autonomously plan, execute multi-step tasks, use tools, and adapt to changing conditions while maintaining business alignment. This article introduces a comprehensive evaluation framework for assessing enterprise-grade agentic AI solutions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updating Terminal layout - hoho oh oh my zsh</title>
      <link>https://my.center-of.info/post/2024/2024-12-25-update-terminal/</link>
      <pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2024/2024-12-25-update-terminal/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://ohmyz.sh&#34;&gt;Oh My Zsh&lt;/a&gt; is one of the most famous solutions for enhancing your terminal with additional features, plugins, and themes. After my last setup and configuration in 2017/2018, I decided it was time to update my entire configuration. I also took this opportunity to explore new plugins and themes that have become available.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Efficient resource management of a fleet of OpenShift cluster with Hosted Control Planes / HyperShift</title>
      <link>https://my.center-of.info/work/2023/2023-03-06-openshift-form-factor-hypershift/</link>
      <pubDate>Mon, 06 Mar 2023 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/work/2023/2023-03-06-openshift-form-factor-hypershift/</guid>
      <description>&lt;p&gt;When managing several Kubernetes/OpenShift clusters, one must also deal with issues like resource and cost optimisation. How can we establish a more effective balance between the resources that are available and those that are allotted to workloads? How can you achieve that new clusters are provisioned more quickly? What steps can be taken to create a more independent lifecycle management for a fleet of clusters?&#xA;All those questions have a significant impact on how to maintain and manage a large number of clusters. This article gives an overview of the solution that is being pursued with HyperShift.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java Flight Recording / Cryostat and OpenShift</title>
      <link>https://my.center-of.info/post/2022/2022-07-10-java-flight-recording-and-openshift/</link>
      <pubDate>Sun, 10 Jul 2022 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2022/2022-07-10-java-flight-recording-and-openshift/</guid>
      <description>&lt;p&gt;Java and JVM performance monitoring and application profiling is essential not only for critical production workload. JDK Flight Recorder (JFR) and JDK Mission Control are the established solutions here. This article covers the Kubernetes/OpenShift solution Cryostat to bridge the gap to JVM applications in a Kubernetes runtime.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overview of Secret injection solutions</title>
      <link>https://my.center-of.info/post/2021/2021-10-31-overview-secrets-injection-solutions/</link>
      <pubDate>Sun, 31 Oct 2021 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2021/2021-10-31-overview-secrets-injection-solutions/</guid>
      <description>&lt;p&gt;Secrets management in a cloud/Kubernetes and CI/CD context is crucial and should covers various aspect like&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;how to maintain secrets in a secured way and avoid persistence in insecure repositories like git&lt;/li&gt;&#xA;&lt;li&gt;administrate access using a RBAC and enable segregation of duties&lt;/li&gt;&#xA;&lt;li&gt;life cycle management of secrets&lt;/li&gt;&#xA;&lt;li&gt;inject secrets automatically into application runtime&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Existing solutions provides features to some of the mentioned aspects. One of the most widespread solution is &lt;a href=&#34;https://www.vaultproject.io/&#34;&gt;HashiCorp Vault&lt;/a&gt;. HashiCorp Vault provides a solution to manage and protect secrets. Additional extensions and open source solutions interacts with HashiCorp Vault to inject secrets into an application context running in a Kubernetes/OpenShift runtime. This article explains some of the options and ends with a comparison.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quarkus and IBM Cloud Code Engine</title>
      <link>https://my.center-of.info/post/2021/2021-09-11-quarkus-code-engine/</link>
      <pubDate>Sat, 11 Sep 2021 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2021/2021-09-11-quarkus-code-engine/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://quarkus.io/&#34;&gt;Quarkus&lt;/a&gt; is one of the famous framework for modern Kubernetes native solutions. &lt;a href=&#34;https://cloud.ibm.com/docs/codeengine&#34;&gt;IBM Cloud Code Engine&lt;/a&gt; is the managed offering for serverless platforms. Let&amp;rsquo;s bring this together and build and run a Quarkus application with IBM Cloud Code Engine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrate from Docker to Podman on macOS</title>
      <link>https://my.center-of.info/post/2021/2021-09-05-replace-desktop-docker-with-podman-on-macos/</link>
      <pubDate>Sun, 05 Sep 2021 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2021/2021-09-05-replace-desktop-docker-with-podman-on-macos/</guid>
      <description>&lt;p&gt;Docker &lt;a href=&#34;https://www.docker.com/blog/updating-product-subscriptions/&#34;&gt;announced&lt;/a&gt; the license and subscription plan changes for the Desktop Docker apps. Now at the latest, one can look for alternatives that have been around for a while. This article covers the replacement of Desktop Docker with podman on macOS.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrate from Wordpress to Gatsby and Netlify</title>
      <link>https://my.center-of.info/post/2020/2020-10-31-migrate-from-wordpress-to-gatsby-netlify/</link>
      <pubDate>Sat, 31 Oct 2020 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2020/2020-10-31-migrate-from-wordpress-to-gatsby-netlify/</guid>
      <description>&lt;p&gt;After many years I have migrated my Wordpress to Gatsby and Netlify. This short article is a sum up of the main steps how to migrate all the existing articles (and images) and what tools I used. Therefor I moved away from Wordpress to Gatsby and Netlify.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Showcase: Node.js and App ID</title>
      <link>https://my.center-of.info/post/2020/2020-07-08-showcase-node-js-and-app-id/</link>
      <pubDate>Wed, 08 Jul 2020 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2020/2020-07-08-showcase-node-js-and-app-id/</guid>
      <description>&lt;p&gt;This showcase covers securing a Node.js application with &lt;a href=&#34;https://cloud.ibm.com/docs/appid?topic=appid-getting-started&#34;&gt;IBM App ID&lt;/a&gt; which is a facade for &lt;a href=&#34;https://openid.net/&#34;&gt;OpenID&lt;/a&gt; and &lt;a href=&#34;https://oauth.net/&#34;&gt;OAuth&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Einführung Apache Kafka mit Docker und Spring Boot</title>
      <link>https://my.center-of.info/post/2018/2018-06-30-einfuehrung-apache-kafka-mit-docker-und-spring-boot/</link>
      <pubDate>Sat, 30 Jun 2018 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2018/2018-06-30-einfuehrung-apache-kafka-mit-docker-und-spring-boot/</guid>
      <description>&lt;p&gt;Apache Kafka ist eine distributed streaming platform – generell heißt das, Apache Kafka unterstützt bei der Erstellung einer Publisher-Subscriber Umgebung in dem Kafka eine Streaming Pipeline zwischen den Teilnehmern aufbaut. Diese Platform erfüllt die Kriterien bezüglich Verteilung, Echtzeitfähigkeit und Zuverlässigkeit.&lt;/p&gt;&#xA;&lt;p&gt;Diese Einführung betrachtet dabei die Einrichtung von Kafka mit Docker und den gängigsten Anwendungsfällen in Spring Boot realisiert.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenShift Einführung mit automatischen Deployments</title>
      <link>https://my.center-of.info/post/2018/2018-05-13-openshift-einfuehrung-und-automatische-deployments/</link>
      <pubDate>Sun, 13 May 2018 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2018/2018-05-13-openshift-einfuehrung-und-automatische-deployments/</guid>
      <description>&lt;p&gt;Eine neue Applikation kann man doch gleich in der Cloud betreiben. Dabei sollte Automatisierung eine wichtige Rolle spielen und idealerweise bis zum Deployment angewendet werden; ganz im Sinne von CD. Im diesem Artikel wird beschrieben wie eine Spring Boot Application in eine OpenShift Instanz betrieben wird und dabei die Konfiguration so vorgenommen wird, dass jede Änderung des Source Codes automatisch zu einem neuen Build führt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generierung von UI und Requests anhand eines JSON Schema</title>
      <link>https://my.center-of.info/post/2017/2017-12-03-generierung-von-ui-und-requests-anhand-eines-json-schema/</link>
      <pubDate>Sun, 03 Dec 2017 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2017/2017-12-03-generierung-von-ui-und-requests-anhand-eines-json-schema/</guid>
      <description>&lt;p&gt;In diesem Artikel möchte ich veranschaulichen, wie anhand eines JSON Schema eine UI dynamisch generiert werden kann. Diese UI soll dann bei der Zusammenstellung eines Modells dienen, welches wiederum als Basis für die Erstellung eines Request-Objekts herangezogen wird. Damit lässt sich eine dynamische Oberfläche für eine REST-Schnittstelle erstellen, welches mind. JSON unterstützt. Dieser Anwendungsfall ist dann hilfreich, wenn die REST-Schnittstelle eine komplexe Domain-Struktur besitzt und die Mittel von swagger-ui nicht ausreichen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloud Foundry Einführung mit IBM Bluemix</title>
      <link>https://my.center-of.info/post/2017/2017-11-22-cloud-foundry-einfuehrung-mit-ibm-bluemix/</link>
      <pubDate>Wed, 22 Nov 2017 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2017/2017-11-22-cloud-foundry-einfuehrung-mit-ibm-bluemix/</guid>
      <description>&lt;p&gt;Cloud Foundry (CF) ist eine OpenSource Platform, welches auf ein gängige IaaS bereitgestellt werden kann, um ein PaaS zu errichten, in dem dann unterschiedliche Applikationen und Services bereitgestellt werden können. Natürlich gibt es verschiedene Anbieter die ein PaaS auf Cloud Foundry basierend anbieten, dazu gehören u.a. &lt;a href=&#34;https://pivotal.io/de/platform&#34;&gt;Pivotal CF&lt;/a&gt;, &lt;a href=&#34;https://console.ng.bluemix.net/&#34;&gt;IBM Bluemix&lt;/a&gt;. In dieser Einführung wird CF mit IBM Bluemix vorgestellt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dokumentation einfach gemacht</title>
      <link>https://my.center-of.info/post/2017/2017-06-26-dokumentation-einfach-gemacht/</link>
      <pubDate>Mon, 26 Jun 2017 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2017/2017-06-26-dokumentation-einfach-gemacht/</guid>
      <description>&lt;p&gt;Dokumentation - es gibt nichts schlimmeres als nicht aktuelle und falsche Dokumentation. Da ist sogar keine Dokumentation besser. Keine Dokumentation ist spätestens dann keine Option, wenn mehrere Teilnehmer existieren und die Software für einen breiten/öffentlichen Nutzerkreis angedacht ist. Hier möchte ich mal aufzeigen, wie einfach Dokumentation sein kann. Spaß kann es sogar auch machen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ELK Stack im Cluster-Betrieb</title>
      <link>https://my.center-of.info/post/2017/2017-05-25-elk-stack-im-cluster-betrieb/</link>
      <pubDate>Thu, 25 May 2017 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2017/2017-05-25-elk-stack-im-cluster-betrieb/</guid>
      <description>&lt;p&gt;Mit dem ELK Stack bekommt man eine abgestimmte Umgebung um Log-Einträge per Logstash abzuholen, diese in Elasticsearch vorzuhalten und dann per Kibana anzuzeigen. Das Aufsetzen des ELK Stack wird mit den Docker Images von Elastic vereinfacht. Um diese jedoch im Cluster zu nutzen müssen ein paar Anpassungen durchgeführt werden, welche hier dargestellt werden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DevEnv: Docker und Elasticsearch</title>
      <link>https://my.center-of.info/post/2016/2016-01-16-devenv-docker-und-elasticsearch/</link>
      <pubDate>Sat, 16 Jan 2016 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2016/2016-01-16-devenv-docker-und-elasticsearch/</guid>
      <description>&lt;p&gt;Docker, eine simple Art seine Umgebung modular und wiederverwendbar aufzubauen. Da ich schrittweise exemplarisch eine ganze Entwicklungsumgebung auf Docker darstellen möchte, stelle ich heute vor, wie man Elasticsearch innerhalb eines eigenen Docker Container zum Einsatz bringt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DevEnv: Docker und AppServer</title>
      <link>https://my.center-of.info/post/2015/2015-04-26-docker-und-appserver/</link>
      <pubDate>Sun, 26 Apr 2015 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2015/2015-04-26-docker-und-appserver/</guid>
      <description>&lt;p&gt;Docker ist aktuell in aller Munde und das Ökosystem um Docker wächst kontinuierlich weiter. Somit lohnt sich mal ein genauerer Blick. Ich werde hier schildern, wie ein Docker Image mit einem Application Server erstellt werden kann. Als Application Server werde ich WildFly verwenden, jedoch ist jegliche andere Software denkbar.&lt;/p&gt;&#xA;&lt;h1 id=&#34;überblick&#34;&gt;Überblick&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-toc&#34; data-lang=&#34;toc&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# This code block gets replaced with the TOC&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Im einem Softwareprojekt strebt man an, dass alle Umgebungen (Entwicklung, Integration und Produktion) die selben Systeme, Versionen und Einstellungen besitzen. Dies kann man mit sehr genauen Installations- und Konfigurations-Anleitung bewerkstelligen. Jedoch ist der manuelle Aufwand hoch, genauso auch sehr fehleranfällig. Eine andere Möglichkeit ist es, immer das selbe VM Image zu verwenden. Dies kann einheitlich erstellt werde und dann auf allen Umgebungen verwendet werden. Ein solches VM Image beinhaltet jedoch neben der für das Projekt benötigte Software auch mind. das Betriebssystem. Dieser Sachverhalt verursacht ein verhältnismäßig zu großes Artefakt, was dann auch nicht schnell mal auf einer neuen Umgebung kopiert und bereitgestellt werden kann. Hier kommt dann Docker ins Spiel [1]. Docker kapselt die Software in einem Container und erwartet auf dem Host-System eine Docker Engine um den Container zum Laufen zu bringen. D.h. der Container beinhaltet nur die „projekt-relevanten“ Softwareprodukte. Dieser Container ist leichtgewichtiger als ein komplettes VM Image. Einmal erstellt, können diese Docker Container überall eingesetzt werden können, wo ein Docker Engine zur Verfügung steht – für Windows-User gibt es hier auch eine Lösung ;-).&lt;/p&gt;</description>
    </item>
    <item>
      <title>JEE: Arquillian</title>
      <link>https://my.center-of.info/post/2014/2014-04-27-jee-arquillian/</link>
      <pubDate>Sun, 27 Apr 2014 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2014/2014-04-27-jee-arquillian/</guid>
      <description>&lt;h1 id=&#34;überblick&#34;&gt;Überblick&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-toc&#34; data-lang=&#34;toc&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# This code block gets replaced with the TOC&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Arquillian ist ein Framework für Integration Tests. Es bietet die Möglichkeit für bestimmte Testfälle ein Deployment bereitzustellen, was die nur die relevanten Klassen besitzt. Diese sogenannten Micro-Deployments können mittels Arquillian einfach definiert werden und dann in einem embedded or existierenden Container eingesetzt werden. In diesem werden dann die Testfälle durchgeführt. Zur Vollständigkeit ist noch erwähnt, dass Arquillian auch für client-seitige Tests verwendet werden kann, in solchen Fällen ist ein Deployment nicht notwendig. Als Deployment-Format stehen verschiedene zur Verfügung, z.B. Jar, War, Ear etc. Genauso stehen als Container verschiedene Alternativen zur Verfügung. Arquillian bietet hierfür die gängigsten Adapter an, siehe [2].&lt;/p&gt;</description>
    </item>
    <item>
      <title>CDI in JavaSE</title>
      <link>https://my.center-of.info/post/2011/2011-10-22-cdi-in-javase/</link>
      <pubDate>Sat, 22 Oct 2011 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2011/2011-10-22-cdi-in-javase/</guid>
      <description>&lt;p&gt;CDI – Contexts and Dependency Injection for the Java(tm) EE platform [1] - ist nicht neu und man findet im Netz auch genug gute Einführungen (z.B. [2] und natürlich immer auch bei [3], [4] etc). Möchte man jedoch CDI außerhalb eines Container (AppServer) verwenden, sprich in einer Java SE Umgebung, sucht man schon etwas länger. Bei CDI gibt es u.a. folgende Implementierungen: Weld [5] und OpenWebBeans [6]. Bei der Referenzimplementierung Weld ist die Dokumentation vorbildlich und es gibt auch ein Kapitel [7] welches den Einsatz in einer Java SE Umgebung beschreibt. Solch ein Kapitel sucht man bei OpenWebBeans leider vergebens – das Kapitel an sich existiert schon, leider ohne Inhalt. Zum Glück findet man im SVN jedoch ein SE-Bespiel [8]. Für Version 1.1.2 ersetzt man folgende Zeil:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nodejs HTTP-Server</title>
      <link>https://my.center-of.info/post/2011/2011-05-14-nodejs-http-server/</link>
      <pubDate>Sat, 14 May 2011 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2011/2011-05-14-nodejs-http-server/</guid>
      <description>&lt;p&gt;Schreibt man eine Client-Anwendung, die mit einem Server kommunizieren soll, weclhes zum Testing nicht zur Verfügung steht, muss man schauen, wie man die Kommunikation simulieren kann. Am besten wäre eine Test-Implementierung des Servers, der die Spezifikation/API unterstützt. Bevor die Spezifikation zum Test implementiert werden kann, muss jedoch die Grundfunktionalität (HTTP) des Server implementiert werden. Um sich das zu ersparen, kann man z.B. &lt;a href=&#34;http://nodejs.org&#34;&gt;nodejs&lt;/a&gt; verwenden.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;require&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http&amp;#39;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;require&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;url&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;results&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;status=OK&amp;amp;desc=Alles paletti&amp;amp;url=http://www.heise.de/&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;   &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;status=NOK&amp;amp;desc=Oh, problem&amp;amp;url=&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;httpServer&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;http&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;createServer&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;httpServer&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;on&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;request&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#75715e&#34;&gt;// Parse the entire URI to get just the query&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;parse&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;request&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;url&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#75715e&#34;&gt;// parse the query parameters&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;param1&lt;/span&gt; &#x9;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;p1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;param2&lt;/span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;p2&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;param3&lt;/span&gt;&#x9;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;query&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;p3&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#75715e&#34;&gt;// Do something with the parameters to generate the response.....&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#x9;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#75715e&#34;&gt;// return random response&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#x9;&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;writeHead&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;, {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Content-Type&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;text/plain&amp;#39;&lt;/span&gt;});&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rnd&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Math.&lt;span style=&#34;color:#a6e22e&#34;&gt;floor&lt;/span&gt;(Math.&lt;span style=&#34;color:#a6e22e&#34;&gt;random&lt;/span&gt;() &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;results&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;end&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;results&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;rnd&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;httpServer&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;listen&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1337&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;- Server running at http://127.0.0.1:1337/&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wie man sehen kann, wird in wenigen Zeilen JavaScript ein HTTP-Server geschrieben, der auf den &amp;ldquo;request&amp;rdquo;-Event horcht. Bei jedem Request werden die Parameter ermittelt und die Response generiert. Nodejs bietet verschiedene Events an, für die ein Callback-Funktion registriert werden kann. Beim HTTP-Server sind das z.B.: request, connection, close. Weitere Details sind in der &lt;a href=&#34;http://nodejs.org/docs/v0.4.7/api/all.html&#34;&gt;Docu&lt;/a&gt; zu finden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>REST JMX Monitoring</title>
      <link>https://my.center-of.info/post/2011/2011-05-02-rest-jmx-monitoring/</link>
      <pubDate>Mon, 02 May 2011 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2011/2011-05-02-rest-jmx-monitoring/</guid>
      <description>&lt;p&gt;Ich bin wieder auf der &lt;a href=&#34;http://jax.de/&#34;&gt;JAX&lt;/a&gt; und auch bei &lt;a href=&#34;http://adam-bien.com/roller/abien/&#34;&gt;Adam Bien&lt;/a&gt;. Beides ist nur zu empfehlen! ;-) Während des Workshops kamen wir auf REST und JMX und das es eigentlich eine gute Idee wäre, JMX Monitoring mittels REST anzubieten. Klingt interessant. Sofort ausprobiert.&lt;/p&gt;&#xA;&lt;p&gt;Mit Eclipse mal fix ein dynamisches Webprojekt erstellt. Drauf geachtet, dass REST (JAX-RS) ausgewählt wird. &lt;a href=&#34;http://glassfish.java.net/&#34;&gt;Glassfish&lt;/a&gt; ist schon vom letzten Projekt in Eclipse integriert. Während der Projekterstellung bietet der Wizard u.a. die Konfiguration für REST an. Da kann u.a. das URL matching pattern eingeben werden (default: /rest/*)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Derby Export</title>
      <link>https://my.center-of.info/post/2011/2011-04-22-derby-export/</link>
      <pubDate>Fri, 22 Apr 2011 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2011/2011-04-22-derby-export/</guid>
      <description>&lt;p&gt;Beim Einsatz der Java Derby Datenbank kommt irgendwann der Wunsch einzelne Daten oder eine komplette Tabelle zu exportieren. Hierfür bietet Derby verschiedene Procedures an:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SYSCS_UTIL.SYSCS_EXPORT_TABLE: Zum exportieren einer kompletten Tabelle&lt;/li&gt;&#xA;&lt;li&gt;SYSCS_UTIL.SYSCS_EXPORT_QUERY: Exportiert die Daten, die dem mitgegebenen SELECT entsprechen&lt;/li&gt;&#xA;&lt;li&gt;SYSCS_UTIL.SYSCS_BACKUP_DATABASE: Kompletter Backup der DB.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Die Export-Procedures liefern eine CSV-Datei, wobei man die Trennzeichen definieren kann. Beim Backup-Procedure wird die ganze Ordnerstruktur in einen gewünschten Ordner kopiert.&lt;/p&gt;&#xA;&lt;p&gt;Zum Exportieren einer ganzen Tabelle sieht die Signatur der Procedure wie folgt aus:&lt;/p&gt;</description>
    </item>
    <item>
      <title>JPA: Dynamic Datasource Routing</title>
      <link>https://my.center-of.info/post/2011/2011-03-04-jpa-dynamic-datasource-routing/</link>
      <pubDate>Fri, 04 Mar 2011 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2011/2011-03-04-jpa-dynamic-datasource-routing/</guid>
      <description>&lt;p&gt;Man stelle sich vor, in einer (Web-)Anwendung müssen verschiedene Datasources verwendet werden. Ob bei den unterschiedlichen Datasourcen es sich immer um die andere/gleiche Datenbank handelt, sei mal dahingestellt. Die Datasourcen unterscheiden sich mind. in einer Eigenschaft, z.B. User.&lt;/p&gt;&#xA;&lt;p&gt;Im Spring-Kontext gilt folgendes: In JPA braucht man pro EntityManagerFactory eine Datasource. Der EMF ist einen TransactionManager zugeordnet.&lt;/p&gt;&#xA;&lt;p&gt;Man könnte alle Datasource, EMF, TX-Manager und PUs in Spring konfigurieren. Man hat jedoch ein Problem, wenn man n verschiedene Datasourcen hat, die zur Laufzeit ausgewählt werden müssen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET: XmlSerializer ohne dynamische Code-Generierung</title>
      <link>https://my.center-of.info/post/2009/2009-09-28-xmlserializer-pre-generation/</link>
      <pubDate>Mon, 28 Sep 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-09-28-xmlserializer-pre-generation/</guid>
      <description>&lt;p&gt;Unter C# kann man mittels &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx&#34; title=&#34;MSDN: XmlSerializer Class&#34;&gt;XmlSerializer&lt;/a&gt; XML Daten zu Objekten deserialisieren oder den umgekehrten Weg, Objekte zu XML umwandeln. Hier hat die Dokumentation jedoch eine beachtliche Lücke. XmlSerialiser generiert nämlich jedesmal on-the-fly eine DLL um den XML Stream typ-sicher umwandeln zu können. Hierfür wird eine C# Source-Datei generiert und &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/78f4aasd.aspx&#34; title=&#34;MSDN: Command-line Building With csc.exe&#34;&gt;csc.exe&lt;/a&gt; aufgerufen. Die erstellten Dateien werden im %TEMP%-Verzeichnis erstellt und in der Standardeinstellung sofort wieder gelöscht, wenn sie nicht mehr benötigt werden. Das automatische Löschen kann man umgehen, wenn man z.B. in &lt;code&gt;WINDOWS\Microsoft.NET\Framework\v2.0...\CONFIG\maschine.config&lt;/code&gt; folgenden Eintrag hinzufügt:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring AOP &amp; Ehcache</title>
      <link>https://my.center-of.info/post/2009/2009-09-25-spring-aop-ehcache/</link>
      <pubDate>Fri, 25 Sep 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-09-25-spring-aop-ehcache/</guid>
      <description>&lt;p&gt;Caching ist ja bekanntlich eine Querschnitts-Anforderung (cross cutting concern), was man eigentlich nicht direkt in die Business-Logik integrieren möchte/sollte. Hier bietet es sich an, die Cache-Funktionalität mittels AOP (Aspektorientierte Programmierung) zu realisieren. Dieser Beitrag erklärt das exemplarisch realisieren der Cache-Funktionalität mittels &lt;a href=&#34;http://static.springsource.org/spring/docs/2.5.x/reference/aop-api.html&#34; title=&#34;Spring 2.5.x Reference Doc: Spring AOP&#34;&gt;Spring AOP&lt;/a&gt; und &lt;a href=&#34;http://ehcache.org/&#34; title=&#34;Ehcache&#34;&gt;Ehcache&lt;/a&gt;. &lt;strong&gt;Einführung&lt;/strong&gt; Vorweg. Es gibt natürlich bei den &lt;a href=&#34;https://springmodules.dev.java.net/&#34; title=&#34;Springmodules&#34;&gt;springmodules&lt;/a&gt; ein &lt;a href=&#34;https://springmodules.dev.java.net/docs/reference/0.9/html/cache.html&#34; title=&#34;Springmodules: Cache&#34;&gt;Cache-Modul&lt;/a&gt;. Dieses wird, wenn überhaupt, nur sehr langsam weiterentwickelt. Das neue &lt;a href=&#34;http://www.springsource.org/extensions&#34; title=&#34;Spring Source: Spring Extensions&#34;&gt;Spring Extensions Projekt&lt;/a&gt; beinhaltet leider kein Cache-Modul. Hinzu kommen noch fehlende Funktionalitäten wie z.B. das Löschen von nur einem Objekt aus dem Cache. Falls man jedoch doch Springmodules Cache nutzen will, kann man sich mein altes &lt;a href=&#34;http://my.center-of.info/2009/04/07/cache-method-results-with-ehcache-and-spring/&#34; title=&#34;Centre of information: Cache method results with Ehcache and Spring&#34;&gt;Beispiel&lt;/a&gt; anschauen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spec 2.0: JSF 2 Überblick</title>
      <link>https://my.center-of.info/post/2009/2009-08-26-jsf2overview/</link>
      <pubDate>Wed, 26 Aug 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-08-26-jsf2overview/</guid>
      <description>&lt;p&gt;JSF ist ja nicht jedermanns Sache. Ich fand JSF 1.x auch mit den &amp;ldquo;Problemen&amp;rdquo; toll. Die Implementierung (&lt;a href=&#34;https://javaserverfaces.dev.java.net/&#34; title=&#34;Mojarra: JSF SUN RI&#34;&gt;Mojarra&lt;/a&gt; und &lt;a href=&#34;http://myfaces.apache.org/&#34; title=&#34;MyFaces Project&#34;&gt;MyFaces&lt;/a&gt;) hatten so manche Fehler und zusätzliche Funktionalitäten, welche in der Spec nicht definiert wurden. Aber im Großen und Ganzen ein gutes und solides Konzept. Leider jedoch ein Framework, was ein paar Jährchen und Trends hinter sich hat - JSF 1.1 (&lt;a href=&#34;http://www.jcp.org/en/jsr/detail?id=127&#34; title=&#34;JSR 127:JavaServer Faces&#34;&gt;JSR 127&lt;/a&gt;, 03.2001) und JSF 1.2 (&lt;a href=&#34;http://www.jcp.org/en/jsr/detail?id=252&#34; title=&#34;JSR 252:JavaServer Faces&#34;&gt;JSR 252&lt;/a&gt;, 05.2006). Seit 07.2009 gibt es nun das Final Release der JSF 2.0 Spezifikation (&lt;a href=&#34;http://www.jcp.org/en/jsr/detail?id=314&#34; title=&#34;JSR 314:JavaServer Faces&#34;&gt;JSR 314&lt;/a&gt;). Die &lt;a href=&#34;https://javaserverfaces.dev.java.net/servlets/ProjectDocumentList?folderID=11662&#34; title=&#34;Mojarra: 2.0.0-RC&#34;&gt;RI von SUN&lt;/a&gt; steht auch bald bereit und auch die Truppe um MyFaces hat einen &lt;a href=&#34;http://matthiaswessendorf.wordpress.com/2008/08/29/myfaces-goes-jsf-20/&#34; title=&#34;Matthias Wessendorf&#39;s Weblog: MyFaces goes JSF 2.0&#34;&gt;JSF 2.0 Branch&lt;/a&gt; erstellt. Spätestens jetzt sollte man einen Blick auf die Neuerungen und Verbesserungen, die mit 2.0 eingeführt werden, werfen. Möchte man sich nun mit JSF 2.0 auseinander setzen, könnte man sich die ersten Bücher besorgen, aber ob diese aktuell und praxistauglich sind, sei jedem überlassen. Die vielleicht komplette und aktuelle Information kriegt man zur Zeit, wenn man sich direkt die APIs anschaut und verschiedene Blogs verfolgt. Hier folgt erstmal eine unvollständige Liste von Informationsquellen (wird aktualisiert):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tutorial: JSF 2.0 Beispielanwendung</title>
      <link>https://my.center-of.info/post/2009/2009-08-26-tutorial-jsf2-beipielanwendung/</link>
      <pubDate>Wed, 26 Aug 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-08-26-tutorial-jsf2-beipielanwendung/</guid>
      <description>&lt;p&gt;Wie schon &lt;a href=&#34;http://my.center-of.info/2009/08/26/jsf2overview/&#34; title=&#34;IC: JSF 2 Überblick&#34;&gt;erwähnt&lt;/a&gt;, erscheinen bald die ersten Releases von JSF 2.0. Entsprechend wird nun eine kleine Beispielanwendung erstellt, um einen ersten Eindruck zu bekommen. Technologie:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;JSF 2.0: Mojarra in Version 2.0.0-b16&lt;/li&gt;&#xA;&lt;li&gt;Tomcat 6&lt;/li&gt;&#xA;&lt;li&gt;Maven&lt;/li&gt;&#xA;&lt;li&gt;Eclipse&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Voraussetzung:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://java.sun.com/javase/downloads/index.jsp&#34; title=&#34;SUN: Java Download&#34;&gt;JDK 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://tomcat.apache.org/download-60.cgi&#34; title=&#34;Apache Tomcat 6 Download&#34;&gt;Tomcat 6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/galileor&#34; title=&#34;Eclipse Download: Galileor&#34;&gt;Eclipse inklusive WTP&lt;/a&gt;, Maven (&lt;a href=&#34;http://m2eclipse.sonatype.org/&#34; title=&#34;Sonatype: Maven Eclipse Plugin&#34;&gt;m2eclipse&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Beim m2eclipse-Plugin &amp;ldquo;&lt;strong&gt;Maven integration for WTP&lt;/strong&gt;&amp;rdquo; in Eclipse nachinstallieren, falls nicht vorhanden&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Vorbereitung:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Commons-IO: DirectoryWalker</title>
      <link>https://my.center-of.info/post/2009/2009-07-19-commons-io-directorywalker/</link>
      <pubDate>Sun, 19 Jul 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-07-19-commons-io-directorywalker/</guid>
      <description>&lt;p&gt;Commons-IO bzw. allg. &lt;a href=&#34;http://commons.apache.org/&#34; title=&#34;Apache Commons&#34;&gt;Apache Commons&lt;/a&gt; ist eine schöne Ansammlung von nützlichen Bibliotheken und Funktionen. Darunter ist auch Commons-IO zu finden. Daraus will ich heute eine spezielle Lösung vorstellen. Hat man folgendes Problem: Möchte man einen Ordner, inklusive dessen Unterordner, nach bestimmten Dateien suchen und dann diese vielleicht nach Last-Modified sortiert, bietet Commons-IO eine Lösung an.&lt;/p&gt;&#xA;&lt;p&gt;Um den/die Ordner durchzulaufen existiert ein &lt;a href=&#34;http://commons.apache.org/io/api-release/org/apache/commons/io/DirectoryWalker.html&#34; title=&#34;Commons-IO API: DirectoryWalker&#34;&gt;DirectoryWalker&lt;/a&gt;. Um den abstrakten DirectoryWalker nutzen zu können könnte man z.B. eine folgende Implementierung nutzen:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java JMS MQ Beispiel</title>
      <link>https://my.center-of.info/post/2009/2009-06-23-java-jms-mq-beispiel/</link>
      <pubDate>Tue, 23 Jun 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-06-23-java-jms-mq-beispiel/</guid>
      <description>&lt;p&gt;Vor einiger Zeit wurde &lt;a href=&#34;http://my.center-of.info/2008/10/28/mq-install-on-linux/&#34;&gt;MQ installiert&lt;/a&gt;. Nun folgt endlich ein Beispiel wie man in Java MQ ansprechen kann. Dabei wird JMS (Java Message Servic) ohne JNDI (Java Naming and Directory Interface) verwendet. Ein JNDI-Beispiel folgt in einem späteren Blog.&lt;/p&gt;&#xA;&lt;p&gt;Das Beispiel zeigt wie man mittels JMS eine MQ Nachricht verschicken und empfangen kann. Die Architektur steht hier nicht im Vordergrund, das nur die MQ Kommunikation.&lt;/p&gt;&#xA;&lt;p&gt;Für das Versenden von MQ Nachrichten ist ein MQQueueSender verantwortlich, entsprechendes gilt für das Empfangen (MQQueueReceiver). Da bei MQ mehrere Clients Nachrichten verschicken können und jedem Client nur seine Antworten interessieren, gibt es die Möglichkeit dem Receiver einen Filter (Selector) anzugeben. Mit diesem Selector werden dann nur die MQ Nachrichten geliefert (empfangen), welche die Kriterien erfüllen. Hier lohnt es sich (nur) Correlation und Message ID zu nutzen, da andere Eigenschaften zu langsam in der Filterung sind. Bei der Correlation ID muss noch das Präfix &amp;lsquo;ID:&amp;rsquo; angehangen werden, welches bei der Message ID schon automatisch vorhanden ist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL: Constraints hinzufügen</title>
      <link>https://my.center-of.info/post/2009/2009-05-18-sql-constraints-hinzufuegen/</link>
      <pubDate>Mon, 18 May 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-05-18-sql-constraints-hinzufuegen/</guid>
      <description>&lt;p&gt;Beim Leeren von Datenbank-Tabellen müssen immer die vorhandenen Constraints beachtet werden. Das Löschen von Tabellen-Zeilen, obwohl andere darauf verweisen, ist nicht erlaubt (referenzielle Integrität). Versucht man es doch (mittels TRUNCATE [1]) kriegt man eine Fehlermeldung. Hier kann man nun entweder DELETE Statements [2] nutzen, was länger dauern kann, oder man verwendet doch TRUNCATE und muss die vorhandenen Constraints löschen.&lt;/p&gt;&#xA;&lt;p&gt;ALTER TABLE TableName DROP CONSTRAINT FK_ConstraintName&lt;/p&gt;&#xA;&lt;p&gt;Durch das Löschen aller Constraints der betroffenen Tabelle kann diese dann mit TRUNCATE geleert werden. Zum Hinzufügen der Constraints:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cache method results with Ehcache and Spring</title>
      <link>https://my.center-of.info/post/2009/2009-04-07-cache-method-results-with-ehcache-and-spring/</link>
      <pubDate>Tue, 07 Apr 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-04-07-cache-method-results-with-ehcache-and-spring/</guid>
      <description>&lt;p&gt;Caching ist eins der Aspekte welches man nicht unbedingt direkt in der Businesslogik verankern möchte. Hierzu empfehlt es sich eine AOP-Lösung. Mit AOP kann die Funktionalität einer Cache-Realisierung genutzt werden. Eins der populärsten Cache-Provider ist &lt;a href=&#34;http://ehcache.sourceforge.net/&#34; title=&#34;Ehcache&#34;&gt;Ehcache&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In dem Umfeld von &lt;a href=&#34;http://www.springsource.org/&#34; title=&#34;SpringSource: Spring Framework&#34;&gt;Spring&lt;/a&gt; kann man Ehcache folgendermaßen integrieren:&lt;/p&gt;&#xA;&lt;p&gt;Man nutzt das aus dem nicht mehr gewarteten &lt;a href=&#34;https://springmodules.dev.java.net/&#34; title=&#34;Spring-Modules&#34;&gt;spring-modules&lt;/a&gt;-Projekt das &lt;a href=&#34;https://springmodules.dev.java.net/docs/reference/0.8/html/cache.html&#34; title=&#34;Spring-Modules: Cache&#34;&gt;cache&lt;/a&gt;-Modul. Ja, spring-modules wird durch Spring-Extensions abgelöst, jedoch werden nicht alle Projekte übernommen. D.h. manche Unterprojekte (wohl auch Cache) werden nicht nach &lt;a href=&#34;http://www.springsource.org/extensions&#34; title=&#34;Spring: Extensions&#34;&gt;Spring-Extensions&lt;/a&gt; übernommen. Wo da der Sinn liegt, ist wohl nur den Betreibern klar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JSF: Method not called</title>
      <link>https://my.center-of.info/post/2009/2009-03-10-jsf-method-not-called/</link>
      <pubDate>Tue, 10 Mar 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-03-10-jsf-method-not-called/</guid>
      <description>&lt;p&gt;Java Server Faces (JSF) ist eine schöne Technologie für den Web-JEE-Bereich.&lt;/p&gt;&#xA;&lt;p&gt;Es bietet eine gute Möglichkeit die Entkopplung der einzelnen Schichten einzuhalten und mit der Kombination von Facelets, kann sogar ein Grafiker einfacher damit arbeiten.&lt;/p&gt;&#xA;&lt;p&gt;Bei JSF sind bestimmte &amp;ldquo;Aktionen&amp;rdquo; einer Methode zugeordnet. (Methode aus dem ManagedBean, normale Klasse welche in faces-config.xml festgeleg wird, bzw. bei Spring-Einsatz kann man das auch weglassen). D.h. eine Aktion &amp;ldquo;Kunde anlegen&amp;rdquo;, welches als Button dargestellt wird, wird mit der Methode CustomerController.add() gebunden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebSphere &#43; JSF 1.2 &#43; Facelets</title>
      <link>https://my.center-of.info/post/2009/2009-01-28-websphere-jsf12-facelets/</link>
      <pubDate>Wed, 28 Jan 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-01-28-websphere-jsf12-facelets/</guid>
      <description>&lt;p&gt;Möchte man ein JSF Projekt unter IBM WebSphere Application Server 6.x nutzen, muss man ein paar Sachen bedenken:&lt;/p&gt;&#xA;&lt;p&gt;Wie man bei [1] sehen kann, unterstüzt WebSphere 6.1 Servlet 2.4 und JSP 2.0 - das entspricht etwa einem Tomcat 5.5.x [2]. Möchte man nun JSF 1.2 (mittels MyFaces 1.2.x) nutzen hat man da ein kleines Problem. JSF 1.2 benötigt nämlich Servlet 2.5, JSP 2.1 und Java 5 oder später. Genau das kann WebSphere 6.1 mit seiner integrierten JSF 1.1 Implementierung nicht bieten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IE: Change Event und Autocompletion</title>
      <link>https://my.center-of.info/post/2009/2009-01-17-ie-change-event-und-autocompletion/</link>
      <pubDate>Sat, 17 Jan 2009 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2009/2009-01-17-ie-change-event-und-autocompletion/</guid>
      <description>&lt;p&gt;Im IE (7) gibt es Probleme mit dem Change-Event bei einem Input-Feld, wenn dies auch Autocompletion von script.aculo.us[1] beinhaltet.&lt;/p&gt;&#xA;&lt;p&gt;Wird ein Input-Feld bezüglich den Veränderungen beobachtet (&lt;code&gt;$(&#39;field&#39;).observe(&#39;change&#39;, ...&#39;)&lt;/code&gt;) wird beim IE dieser Event dann gefeuert, wenn der Focus das Feld verlässt.&lt;/p&gt;&#xA;&lt;p&gt;Hat das Input-Feld nun auch Autocompletion, wird dieser Event nicht mehr gefeuert, wenn, der Nutzer mit Tab oder Enter ein Eintrag aus der Autocompletion-Liste auswählt.&lt;/p&gt;&#xA;&lt;p&gt;Hier muss man den Event selbst feuern, wenn der Eintrag aus der Autocompletion-Liste ausgewählt wurde. Da man bei Prototype keine native Events abfeuern kann, nutzt man die eigenen Events [2] nutzen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaFX 1.0</title>
      <link>https://my.center-of.info/post/2008/2008-12-07-javafx-10/</link>
      <pubDate>Sun, 07 Dec 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-12-07-javafx-10/</guid>
      <description>&lt;p&gt;Seit dem 04.12.2008 gibt es nun endlich die Version 1.0 von &lt;a href=&#34;http://www.javafx.com/&#34; title=&#34;SUN JavaFX&#34;&gt;JavaFX&lt;/a&gt;. JavaFX ist eine Plattform um Rich Internet Applications für verschiedene End-Geräte zu erstellen. Im Idealfall realisiert man eine Anwendung, die dann später im Browser, auf dem Desktop und auf dem mobilen Gerät läuft. Für weitere Details sei auf die JavaFX-Seiten verwiesen [1] und [2].&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Überblick&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Um JavaFX-Anwendung zu nutzen, braucht man standardmäßig nur die aktuelle Java Version. Hier ist Java 1.6.0_11 [3] passend, da diese Version die Fähigkeit anbietet, Applets auf den Desktop zu ziehen. Beim ersten Aufruf einer JavaFX-Anwendung werden die Runtime-Bibliotheken beim ersten Mal runtergeladen, wenn sie nicht vorhanden sind. Bei entsprechender Implimentierung der JavaFX-Anwendung (was ja ein Applet ist), kann man sich das Applet auf den Desktop ziehen. Schließt man dann den Browser, bekommt man die Möglichkeit ein Verweis auf den Desktop zu erstellen, um später das Applet - und nur das Applet, nicht auch den Browser - wieder zu nutzen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaFX 1.0 Example</title>
      <link>https://my.center-of.info/post/2008/2008-12-07-javafx-10-example/</link>
      <pubDate>Sun, 07 Dec 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-12-07-javafx-10-example/</guid>
      <description>&lt;p&gt;Im &lt;a href=&#34;http://my.center-of.info/2008/12/07/javafx-10/&#34; title=&#34;Information Centre: JavaFX 1.0&#34;&gt;letzten Beitrag&lt;/a&gt; habe ich kurz &lt;a href=&#34;http://www.javafx.com&#34; title=&#34;SUN JavaFX&#34;&gt;JavaFX&lt;/a&gt; vorgestellt. Zu den theoretischen Daten folgt nun ein kleines praktisches Beispiel.&lt;/p&gt;&#xA;&lt;p&gt;Das Beispiel basiert auf das Tutorial von SUN [1] und wurde um die Eigenschaft erweitert, dass das Applet auch auf dem Desktop verwendet werden kann.&lt;/p&gt;&#xA;&lt;p&gt;Das Beispiel erstellt eine analoge Uhr, welche man sich auf den Desktop ziehen kann. Der Fokus liegt auf die Implementierung und nicht auf jegliche graphische Feinheiten.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prototype each(), IE und null</title>
      <link>https://my.center-of.info/post/2008/2008-11-26-prototype-each-ie-und-null/</link>
      <pubDate>Wed, 26 Nov 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-11-26-prototype-each-ie-und-null/</guid>
      <description>&lt;p&gt;Bei der Arbeit mit JavaScript kommt man irgendwann in die Situation durch ein Array zu iterieren. Dabei nutzt man nicht immer einfach indizierte Arrays, sondern oft auch Arrays mit Lücken in den Indizes oder sogar assoziative Arrays. Diese letzten Varianten kann man eigentlich genauso durchlaufen, wie die erste, wenn da nicht der IE wäre. Der IE hat Probleme mit Lücken in Arrays. Wie man im folgenden Listing sehen kann, gibt es beim Firefox fast die erwartbaren Ergebnisse. Nur fast. Denn beim ersten Output stimmen die Indizes nicht. Das gleiche Problem hat man jedoch auch beim IE. [lang=js] var ar1 = new Array(); ar1[2] = &amp;lsquo;A&amp;rsquo;; ar1[13] = &amp;lsquo;B&amp;rsquo;; ar1[23] = &amp;lsquo;C&amp;rsquo;; var out = &amp;lsquo;&amp;rsquo;; ar1 = ar1.compact(); ar1.each(function(item, index) { out += index + &amp;lsquo;: &amp;rsquo; + item + &amp;lsquo;, &amp;lsquo;; }); // =&amp;gt; out = 0: A, 1: B, 2: C, out = &amp;lsquo;&amp;rsquo;; for(i in ar1) { if( (typeof ar1[i]) != &amp;lsquo;function&amp;rsquo; ) out += i + &amp;lsquo;: &amp;rsquo; + ar1[i] + &amp;lsquo;, &amp;lsquo;; } // =&amp;gt; out = 2: A, 13: B, 23: C, var ar2 = { a: &amp;lsquo;Part_1&amp;rsquo;, b: &amp;lsquo;Part_2&amp;rsquo;, sum: &amp;lsquo;Part_1_2&amp;rsquo; }; out = &amp;lsquo;&amp;rsquo;; for(a in ar2) { out += a + &amp;lsquo;: &amp;rsquo; + ar2[a] + &amp;lsquo;, &amp;lsquo;; } // =&amp;gt; out = a: Part_1, b: Part_2, sum: Part_1_2, [/lang]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox Add-on Pencil</title>
      <link>https://my.center-of.info/post/2008/2008-11-12-firefox-add-on-pencil/</link>
      <pubDate>Wed, 12 Nov 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-11-12-firefox-add-on-pencil/</guid>
      <description>&lt;p&gt;Um schnell Diagramme bzw. Screendesign zu erstellen, empfehlt es sich das Firefox Add-on &amp;ldquo;&lt;a href=&#34;http://www.evolus.vn/Pencil/Home.html&#34; title=&#34;Pencil Homepage&#34;&gt;Pencil&lt;/a&gt;&amp;rdquo; zu nutzen. Pencil bietet die gängisten HTML-Elemente (Inputfeld, Tabellenstruktur, Select-Boxen etc.) und ein paar zusätzliche Elemente (Notizen, Pfeile etc.) um somit in kurzester Zeit schöne Screendesigns zusammen zu klicken. Die einzelnen Elemente können gruppiert werden und an andere Elemten ausgerichtet werden. Jedes Element beinhaltet ein paar Einstellungsmöglichkeiten wie Farbe, Schriftart und Größe.&lt;/p&gt;&#xA;&lt;p&gt;Die erstellten Designs können dann als PNG exportiert werden.&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebDav ganz simpel</title>
      <link>https://my.center-of.info/post/2008/2008-10-28-webdav-ganz-simpel/</link>
      <pubDate>Tue, 28 Oct 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-10-28-webdav-ganz-simpel/</guid>
      <description>&lt;p&gt;Ja, WebDav ist leichter zu installieren als man denkt. Wobei installieren hier zu hoch gegriffen ist. Hat man schon ein Apache installiert muss man nur noch ein paar Konfigurationen durchführen und schon funktioniert es - simple.&lt;/p&gt;&#xA;&lt;p&gt;In Apache benötigt man die Module (siehe httpd.conf):&lt;/p&gt;&#xA;&lt;p&gt;[lang=&amp;rsquo;&amp;rsquo;] LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so [/lang]&lt;/p&gt;&#xA;&lt;p&gt;Nun könnte man z.B. in einer &lt;a href=&#34;http://httpd.apache.org/docs/2.2/mod/core.html#location&#34; title=&#34;Apache2.2: Location-Direktive&#34;&gt;&lt;!-- raw HTML omitted --&gt;&lt;/a&gt; oder &lt;a href=&#34;http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost&#34; title=&#34;Apache2.2: VirtualHost-Direktive&#34;&gt;&lt;!-- raw HTML omitted --&gt;&lt;/a&gt; folgendes definieren: [lang=&amp;rsquo;&amp;rsquo;] # WebDav Modul aktivieren Dav On&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Update] MQ install on Linux</title>
      <link>https://my.center-of.info/post/2008/2008-10-27-mq-install-on-linux/</link>
      <pubDate>Mon, 27 Oct 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-10-27-mq-install-on-linux/</guid>
      <description>&lt;p&gt;Aus gegebenem Anlass wird WebSphere MQ benötigt. Da IBM eine 90tägige Trail-Version anbietet und man lieber zuerst ausprobiert, bevor etwas produktiv genutzt werden soll, habe ich testweise WebSphere MQ 7 unter Ubuntu installiert. Es wird keine direkte Ubuntu-Version angeboten, aber die rpm-Pakete lassen sich auch unter Ubuntu installieren. Man muss nicht alle rpm-Pakete installieren, erst recht nicht die mitgelieferte Java-Umgebung (IBM Java SDK). Hier reicht die SUN Version völlig aus (Paket: sun-java6-jdk).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comeback</title>
      <link>https://my.center-of.info/post/2008/2008-10-23-comeback/</link>
      <pubDate>Thu, 23 Oct 2008 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/post/2008/2008-10-23-comeback/</guid>
      <description>&lt;p&gt;so, nach ein paar Monaten gibt es wieder einen neuen Blog.&lt;/p&gt;&#xA;&lt;p&gt;Themen sind u.a.:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Architektur und Entwicklung&lt;/li&gt;&#xA;&lt;li&gt;IT Sicherheit&lt;/li&gt;&#xA;&lt;li&gt;Webentwicklung&lt;/li&gt;&#xA;&lt;li&gt;JEE, PHP etc&lt;/li&gt;&#xA;&lt;li&gt;Brainstorming&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Auf ein Neues!&lt;/p&gt;</description>
    </item>
    <item>
      <title>About me / Impressum</title>
      <link>https://my.center-of.info/page/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/page/about/</guid>
      <description>&lt;p&gt;Consultant, Developer, IT Architect, Cloud Specialist - and this is my personal space to talk about different IT topics, like GenAI, Cloud, Kubernetes, OpenShift, Cloud-Native development, Cloud/IT Transformation and much more. All pictures were taken be myself.&lt;/p&gt;&#xA;&lt;p&gt;Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer’s view in any way.&lt;/p&gt;&#xA;&lt;h2 id=&#34;impressum&#34;&gt;Impressum&lt;/h2&gt;&#xA;&lt;p&gt;Eine Haftung oder Garantie für die Aktualität, Richtigkeit und Vollständigkeit der in diesem Blog zur Verfügung gestellten Informationen kann nicht übernommen werden. Gleiches gilt auch für alle anderen Webseiten, auf die mittels Hyperlink verwiesen wird. Ich bin für den Inhalt der Webseiten, die aufgrund einer solchen Verbindung erreicht werden, nicht verantwortlich.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Datenschutzerklärung / Privacy Policy</title>
      <link>https://my.center-of.info/page/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/page/privacy/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://my.center-of.info/page/privacy_en/&#34;&gt;For English&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;präambel&#34;&gt;Präambel&lt;/h2&gt;&#xA;&lt;p&gt;Mit der folgenden Datenschutzerklärung möchten wir Sie darüber aufklären, welche Arten Ihrer personenbezogenen Daten (nachfolgend auch kurz als &amp;ldquo;Daten&amp;rdquo; bezeichnet) wir zu welchen Zwecken und in welchem Umfang verarbeiten. Die Datenschutzerklärung gilt für alle von uns durchgeführten Verarbeitungen personenbezogener Daten, sowohl im Rahmen der Erbringung unserer Leistungen als auch insbesondere auf unseren Webseiten, in mobilen Applikationen sowie innerhalb externer Onlinepräsenzen, wie z. B. unserer Social-Media-Profile (nachfolgend zusammenfassend bezeichnet als &amp;ldquo;Onlineangebot&amp;rdquo;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Privacy Policy / Datenschutzerklärung</title>
      <link>https://my.center-of.info/page/privacy_en/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>blog@haddouti.com (Hafid Haddouti)</author>
      <guid>https://my.center-of.info/page/privacy_en/</guid>
      <description>&lt;p&gt;This version is translated based on the German version - &lt;a href=&#34;https://my.center-of.info/page/privacy/&#34;&gt;Für Deutsch&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;preamble&#34;&gt;Preamble&lt;/h2&gt;&#xA;&lt;p&gt;With the following privacy policy, we would like to inform you about which types of your personal data (hereinafter also referred to as &amp;ldquo;data&amp;rdquo;) we process for which purposes and to what extent. The privacy policy applies to all processing of personal data carried out by us, both in the context of providing our services and in particular on our websites, in mobile applications, and within external online presences, such as our social media profiles (hereinafter collectively referred to as &amp;ldquo;online offering&amp;rdquo;).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
