<?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>Consulting, Integration &#38; Entwicklung</title>
	<atom:link href="http://www.fhcon.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fhcon.de/blog</link>
	<description></description>
	<lastBuildDate>Tue, 29 Jun 2010 15:04:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>IDMLlib 1.1 Release Notes</title>
		<link>http://www.fhcon.de/blog/2010/06/23/idmllib-1-1-release-notes/</link>
		<comments>http://www.fhcon.de/blog/2010/06/23/idmllib-1-1-release-notes/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 14:56:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IDML]]></category>
		<category><![CDATA[IDMLlib]]></category>

		<guid isPermaLink="false">http://www.fhcon.de/blog/?p=121</guid>
		<description><![CDATA[Go to the english version of this article. Wir freuen uns über das bevorstehende Release der IDMLlib® 1.1 Die IDMLlib® ist eine Java Library, mit der das Verarbeiten von InDesign® IDML Dokumenten einfacher ist als jemals zuvor. Mit einer einfachen aber leistungsstarken Schnittstelle zu allen Informationen innerhalb eines IDML Dokuments ist es Softwareentwicklern möglich, Inhalte [...]]]></description>
			<content:encoded><![CDATA[<p><a title="IDMLlib Blog" href="http://blog.idmllib.com/2010/06/23/idmllib-1-1-release-notes/" target="_blank">Go to the english version of this article.</a></p>
<p><strong>Wir freuen uns über das bevorstehende Release der IDMLlib</strong>®<strong> 1.1</strong></p>
<p>Die IDMLlib® ist eine Java Library, mit der das Verarbeiten von InDesign® IDML Dokumenten einfacher ist als jemals zuvor.</p>
<p>Mit einer einfachen aber leistungsstarken Schnittstelle zu allen Informationen innerhalb eines IDML Dokuments ist es Softwareentwicklern möglich, Inhalte zu extrahieren, zu modifizieren und neue Inhalte zu erstellen, ohne die komplette IDML Spezifikation zu lesen. Dabei bleibt die Kompatibilität zu InDesign vollständig erhalten.</p>
<p>Entwickler sind mit der IDMLlib in der Lage, aus vorhandenen Inhalten neue IDML Dokumente zu erstellen oder zu entwerfen – und das nur mit Hilfe von Java Befehlen und ohne direkt in die XML Dateien eingreifen zu müssen.</p>
<p>Egal, ob Sie InDesign kompatible Snippets aus Ihrem Content Management System exportieren, ein auf IDML basierendes Marketing Portal erstellen oder einen webbasierten Übersetzungsworkflow entwickeln möchten – mit der IDML Technologie reduzieren Sie Ihre Ausgaben und verkürzen die Zeit bis zur Markteinführung Ihrer Lösung.</p>
<p>Weitere Informationen über die IDMLlib erhalten Sie unter den folgenden Links:</p>
<ul>
<li>IDMLlib Webseite (englisch) : <a href="http://idmllib.com" target="_blank">http://idmllib.com</a></li>
<li>IDMLlib Blog (englisch): <a href="http://blog.idmllib.com">http://blog.idmllib.com</a></li>
<li>FHCon Webseite: <a href="http://www.fhcon.de">http://www.fhcon.de</a></li>
<li>FHCon Blog: <a href="http://www.fhcon.de/blog/">http://www.fhcon.de/blog/</a></li>
</ul>
<p><strong>Die IDMLlib 1.1 ist ab dem 25. Juni 2010 verfügbar. </strong></p>
<p>Wenn Sie bereits Kunde der IDMLlib 1.0 sind, werden wir Sie rechtzeitig darüber informieren, wo Sie das neue Release herunterladen können. Weiterhin haben Sie als Interessent die Möglichkeit, die IDMLlib 30 Tage lang kostenlos zu testen. Fordern Sie dazu einfach Ihre Testversion über unser <a title="IDMLlib Evaluation License" href="http://idmllib.com/ILWebsite/licenses/evaluation" target="_blank">Kontaktformular</a> an.</p>
<p><span id="more-121"></span></p>
<h2>Neue Funktionen der Version 1.1</h2>
<h3>Laden, Modifizieren und Speichern von IDML Dokumenten</h3>
<p>Die IDMLlib 1.1 unterstützt das Modifizieren und Schreiben von IDML Dokumenten. Das folgende einfache Beispiel läd ein Dokument mit vier Seiten (1, 2/3,  4), erstellt zwei Kopien der Seiten 2/3, die nach der Seite 2/3 im Dokument angehangen werden, und sichert ein neues Dokument mit acht Seiten (1, 2/3, 4/5, 6/7, 8).</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Create an 8-pager from a 4-pager</span>
Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;4pager.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread spread <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpread</span><span style="color: #009900;">&#40;</span>idml.<span style="color: #006633;">getAbstractDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  DocumentUtil.<span style="color: #006633;">addSpread</span><span style="color: #009900;">&#40;</span>idml.<span style="color: #006633;">getAbstractDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAsDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,spread,<span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
idml.<span style="color: #006633;">saveAs</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;8pager.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Unterstützung von IDML Snippets</h3>
<p>Die IDMLlib 1.1 unterstützt die Verarbeitung von IDML Snippet Dateien. Snippets können auf dem gleichen Weg geladen werden wie ein IDML Container. Es ist möglich, Teile aus dem IDML Dokument oder den ganzen Spread mit allen PageItems von einem Snippet in ein Container Dokument zu kopieren:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Catalog.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Idml idms <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ProductSnippet.idms&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
SpreadIterator spreadIterator <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpreadIterator</span><span style="color: #009900;">&#40;</span>idms<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread firstSpread <span style="color: #339933;">=</span> spreadIterator.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
DocumentUtil.<span style="color: #006633;">addSpread</span><span style="color: #009900;">&#40;</span>idml.<span style="color: #006633;">getAbstractDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAsDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,firstSpread<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
idml.<span style="color: #006633;">saveAs</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;NewCatalog.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Es ist sogar möglich, neue Snippets von Grund auf zu erzeugen:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Catalog.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread spread <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpreadIterator</span><span style="color: #009900;">&#40;</span>idml<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Idml snippet <span style="color: #339933;">=</span> Idml.<span style="color: #006633;">createEmptySnippet</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;FirstPage.idms&quot;</span>, DocumentPreset.<span style="color: #006633;">CS4_605_PAGEITEM</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
snippet.<span style="color: #006633;">getAbstractDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAsSnippetDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">setSpreadList</span><span style="color: #009900;">&#40;</span>ListUtil.<span style="color: #006633;">getAsGenericList</span><span style="color: #009900;">&#40;</span>spread<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
snippet.<span style="color: #006633;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Der schnellste Weg, ein Snippet in den ersten Spread zu importieren (index 0):</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DemoDocuments/EmptyA4.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Idml idms <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DemoDocuments/ProductSnippet.idms&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
DocumentUtil.<span style="color: #006633;">importSnippet</span><span style="color: #009900;">&#40;</span>idml, idms, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Erstellen von neuen IDML Objekten von Grund auf</h3>
<p>Mit der IDMLlib 1.1 ist es möglich, alle IDML Objekte von Grund auf zu erzeugen, zum Beispiel eine Ebene (Layer):</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Layer layer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Layer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setSelf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ILJ11&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;My new Layer&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setLayerColor</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> InDesignUIColorType<span style="color: #009900;">&#40;</span>UIColors.<span style="color: #006633;">Red</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setExpendable</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setIgnoreWrap</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setLockGuides</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setPrintable</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setLocked</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setShowGuides</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
layer.<span style="color: #006633;">setUI</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Oder vielleicht ein mehr alltäglicher Fall wie die Erstellung von PageItems, wie zum Beispiel ein Rechteck (Rectangle):</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Rectangle</span> rectangle <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Rectangle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rectangle.<span style="color: #006633;">setSelf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ILJ1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rectangle.<span style="color: #006633;">setFillColor</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Color/Magenta&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rectangle.<span style="color: #006633;">setStrokeWeight</span><span style="color: #009900;">&#40;</span>0d<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rectangle.<span style="color: #006633;">setItemTransform</span><span style="color: #009900;">&#40;</span>TransformationMatrixType.<span style="color: #006633;">getIdentityMatrix</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">List</span> geometryPathTypeList <span style="color: #339933;">=</span> PageItemUtil.<span style="color: #006633;">createPathGeometryList</span><span style="color: #009900;">&#40;</span>idml,
    <span style="color: #000000; font-weight: bold;">new</span> PathPointType<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>, <span style="color: #666666; font-style: italic;">//upperleft point</span>
    <span style="color: #000000; font-weight: bold;">new</span> PathPointType<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">40</span><span style="color: #009900;">&#41;</span>, <span style="color: #666666; font-style: italic;">//lowerleft point</span>
    <span style="color: #000000; font-weight: bold;">new</span> PathPointType<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">40</span>, <span style="color: #cc66cc;">40</span><span style="color: #009900;">&#41;</span>, <span style="color: #666666; font-style: italic;">//lowerright point</span>
    <span style="color: #000000; font-weight: bold;">new</span> PathPointType<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">40</span>, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">//upperright point</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
rectangle.<span style="color: #006633;">setPathGeometryList</span><span style="color: #009900;">&#40;</span>geometryPathTypeList<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>Der Utility Framework</h3>
<p>Der IDMLlib Utility Framework ist aus dem Wunsch unserer Kunden heraus entstanden, die Komplexität aus wiederkehrenden Tätigkeiten wie dem Hinzufügen, Anhängen und Bewegen von PageItems, dem Klonen von Spreads oder dem Importieren von Snippets in Dokumente herauszunehmen. Das Resultat dieses Ansatzes ist im<strong> de.fhcon.idmllib.api.util</strong> Paket zu finden, welches zur Zeit folgende Utility Klassen enthält:</p>
<ul>
<li>DocumentUtil</li>
<li>GraphicUtil</li>
<li>GroupUtil</li>
<li>IdmlLibUtil</li>
<li>LabelUtil</li>
<li>ListUtil</li>
<li>PageItemUtil</li>
<li>SpreadUtil</li>
<li>StoryUtil</li>
<li>TransformationMatrixUtil</li>
<li>UnitConverterUtil</li>
</ul>
<p>Der IDMLlib Utility Framework ist ein &#8220;work in progress&#8221; und wird mit neuen Anforderungen weiter wachsen.</p>
<p>Hier ein paar kleine Beispiele dafür, wie diese Klassen dabei helfen können, den Javacode deutlich zu verkürzen:</p>
<p>Den ersten Spread aus einem Dokument holen</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DemoDocuments/RectanglesAndTextFrames.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread spread <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpreadIterator</span><span style="color: #009900;">&#40;</span>idml<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Das erste PageItem holen</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">AbstractIdmlPageItem pageItem <span style="color: #339933;">=</span> SpreadUtil.<span style="color: #006633;">getPageItemIterator</span><span style="color: #009900;">&#40;</span>spread<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ein Label überprüfen und setzen</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>PageItemUtil.<span style="color: #006633;">hasLabel</span><span style="color: #009900;">&#40;</span>pageItem, <span style="color: #0000ff;">&quot;Marked&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   KeyValuePair label <span style="color: #339933;">=</span> PageItemUtil.<span style="color: #006633;">getLabel</span><span style="color: #009900;">&#40;</span>pageItem, <span style="color: #0000ff;">&quot;Marked&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ein PageItem verschieben und das UnitConverterUtil nutzen, um Millimeter Werte in Points zu konvertieren</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">PageItemUtil.<span style="color: #006633;">movePageItem</span><span style="color: #009900;">&#40;</span>pageItem,<span style="color: #cc66cc;">100</span>,<span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">double</span> pointValue <span style="color: #339933;">=</span> UnitConverterUtil.<span style="color: #006633;">mmToPoint</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
PageItemUtil.<span style="color: #006633;">movePageItem</span><span style="color: #009900;">&#40;</span>pageItem,pointValue,pointValue<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Alle PageItems einer Gruppe in einen Spread einfügen und alle eingefügten PageItems um 200 Points nach rechts unten verschieben.<br />
Diese Methode erstellt automatisch neue Story Dateien, wenn ein Textrahmen eingefügt wird.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>pageItem.<span style="color: #006633;">isGroup</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   PageItemIterator pageItemIterator <span style="color: #339933;">=</span> GroupUtil.<span style="color: #006633;">getPageItemIterator</span><span style="color: #009900;">&#40;</span>pageItem.<span style="color: #006633;">getAsGroup</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   SpreadUtil.<span style="color: #006633;">appendPageItems</span><span style="color: #009900;">&#40;</span>spread,pageItemIterator,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Den kompletten Inhalt eines Dokumentes per Durchlauf über alle ParagraphStyleRanges/CharacterStyleRanges/Content in allen Stories extrahieren.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DocWithContent.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
StoryIterator storyIterator <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getStoryIterator</span><span style="color: #009900;">&#40;</span>idml<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>storyIterator.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #003399;">String</span> content <span style="color: #339933;">=</span> StoryUtil.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span>storyIterator.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>content<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Durchlaufen und Filtern von PageItems</h3>
<p>Einfaches Durchlaufen aller Top Level PageItems</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DocWithPageItems.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread spread <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpreadIterator</span><span style="color: #009900;">&#40;</span>idml<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
PageItemIterator pageItemIterator <span style="color: #339933;">=</span> SpreadUtil.<span style="color: #006633;">getPageItemIterator</span><span style="color: #009900;">&#40;</span>spread<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>pageItemIterator.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  AbstractIdmlPageItem pageItem <span style="color: #339933;">=</span> pageItemIterator.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//do something with the pageitem</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Durchlaufen mit einem LabelFilter</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DocWithPageItems.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread spread <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpreadIterator</span><span style="color: #009900;">&#40;</span>idml<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
LabelFilter labelFilter <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> LabelFilter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Marked&quot;</span>,<span style="color: #0000ff;">&quot;true&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
PageItemIterator pageItemIterator <span style="color: #339933;">=</span> SpreadUtil.<span style="color: #006633;">getPageItemIterator</span><span style="color: #009900;">&#40;</span>spread,labelFilter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//the iterator only contains PageItems with a Label of: Key &quot;Marked&quot; with value &quot;true&quot;</span>
<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>pageItemIterator.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  AbstractIdmlPageItem pageItem <span style="color: #339933;">=</span> pageItemIterator.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//do something with the pageitem</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Durchlaufen mit Hilfe eines eigenen Filters, der als innere Klasse implemetiert wurde und nur Textrahmen zulässt</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DocWithPageItems.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Spread spread <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">getSpreadIterator</span><span style="color: #009900;">&#40;</span>idml<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
&nbsp;
PageItemIterator pageItemIterator <span style="color: #339933;">=</span> SpreadUtil.<span style="color: #006633;">getPageItemIterator</span><span style="color: #009900;">&#40;</span>spread,<span style="color: #000000; font-weight: bold;">new</span> IPageItemFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> accept<span style="color: #009900;">&#40;</span>AbstractIdmlPageItem pageItem<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> pageItem.<span style="color: #006633;">isTextFrame</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//the iterator only contains TextFrames</span>
<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>pageItemIterator.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  AbstractIdmlPageItem pageItem <span style="color: #339933;">=</span> pageItemIterator.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">assert</span><span style="color: #009900;">&#40;</span>pageItem.<span style="color: #006633;">isTextFrame</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Arbeiten mit verschiedenen PageItem Typen</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>pageItem.<span style="color: #006633;">getPageItemType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #003399;">Button</span><span style="color: #339933;">:</span>
    <span style="color: #003399;">Button</span> button <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsButton</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> EPSText<span style="color: #339933;">:</span>
    EPSText epsText <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsEPSText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> FormField<span style="color: #339933;">:</span>
    FormField formField <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsFormField</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> GraphicLine<span style="color: #339933;">:</span>
    GraphicLine graphicLine <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsGraphicLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #003399;">Group</span><span style="color: #339933;">:</span>
    <span style="color: #003399;">Group</span> group <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsGroup</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> Oval<span style="color: #339933;">:</span>
    Oval oval <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsOval</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #003399;">Polygon</span><span style="color: #339933;">:</span>
    <span style="color: #003399;">Polygon</span> polygon <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsPolygon</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #003399;">Rectangle</span><span style="color: #339933;">:</span>
    <span style="color: #003399;">Rectangle</span> rectangle <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsRectangle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">case</span> TextFrame<span style="color: #339933;">:</span>
    TextFrame textFrame <span style="color: #339933;">=</span> pageItem.<span style="color: #006633;">getAsTextFrame</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Ein austauschbarer IdGenerator zur Erstellung eigener Self ids</h3>
<p>Es ist sehr wichtig zu wissen, dass die Self Attribute von IDML Objekten wie z.B. PageItems eindeutig bleiben müssen, damit sie identifiziert werden können. Weil ein großer Teil der Utility Klassen neue PageItems oder andere IDML Objekte mit Self Attributen erzeugt, müssen beim Hinzufügen zu einem Dokument eindeutige Self Zeichenketten erstellt werden.</p>
<p>Da wir wissen, dass unser Ansatz, diese Self ids zu erzeugen, von dem anderer Entwickler abweichen wird, haben wir den IdGenerator austauschbar gemacht.</p>
<p>Sie können also den DefaultIdGenerator nutzen, müssen es aber nicht. Dazu haben wir ein IdGenerator Interface definiert, welches Sie implementieren können, um einen eigenen ID Generator zu erstellen.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MyCustomIdGenerator <span style="color: #000000; font-weight: bold;">implements</span> IdGenerator <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getSequence<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> existingId<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//implement your code here</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Wie Sie sehen können, bekommt die IdGenerator#getSequence() Methode immer die Self reference des gerade verarbeiteten PageItems als Parameter zurück. Unsere Klassen geben immer die Self reference zurück, so lange sie existiert. So können die alten IDs in anderer Form genutzt werden.</p>
<p>Damit unsere Klassen Ihren eigenen IdGenerator nutzen, müssen Sie die Implementierung verfügbar machen:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MyDoc.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
idml.<span style="color: #006633;">setIdGenerator</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> MyCustomIdGenerator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Wenn Sie selber Self ids erstellen müssen, können Sie den gerade aktiven IdGenerator der Idml Instanz, mit der Sie gerade arbeiten, beziehen:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MyDoc.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
IdGenerator generator <span style="color: #339933;">=</span> idml.<span style="color: #006633;">getIdGenerator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>15 dokumentierte Beispiele</h3>
<p>Wir haben 15 dokumentierte Beispiele erstellt die Ihnen zeigen, wie Sie die IDMLlib erfolgreich nutzen können. Fast alle Beispiele sind aus Kundenanfragen heraus entstanden oder zeigen alltägliche Fallbeispiele für die IDMLlib. Diese Beispiel-Bibliothek ist ein &#8220;work in progress&#8221; und wird mit neuen Anforderungen und Fragen weiter wachsen.</p>
<p>Liste von Beispielen, die Teil des 1.1 Releases sind:</p>
<ul>
<li>CopyTextFramesAndManipulatePSR</li>
<li>CreateNewStory</li>
<li>CreateRectangles</li>
<li>CreateRectangleWithImage</li>
<li>CreateSimpleTable</li>
<li>CreateSpreadsFromScratch</li>
<li>CreateTextFrameCopiesOnNewLayers</li>
<li>GetStoryContent</li>
<li>IdmlLoader</li>
<li>ImportSnippet</li>
<li>InsertSpread</li>
<li>LoadModifySaveIdml</li>
<li>PageItemExamples</li>
<li>PutPageItemOnDifferentLayers</li>
<li>SimpleDatabasePublishing</li>
</ul>
<p>Alle Beispiele wurden getestet und werden mit vorbereiteten IDML Dokumenten geliefert, mit denen das Beispiel veranschaulicht wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fhcon.de/blog/2010/06/23/idmllib-1-1-release-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sprachwechsel im Flash Builder 4 auf dem Mac</title>
		<link>http://www.fhcon.de/blog/2010/05/30/sprachwechsel-im-flash-builder-4-auf-dem-mac/</link>
		<comments>http://www.fhcon.de/blog/2010/05/30/sprachwechsel-im-flash-builder-4-auf-dem-mac/#comments</comments>
		<pubDate>Sun, 30 May 2010 14:35:14 +0000</pubDate>
		<dc:creator>afink</dc:creator>
				<category><![CDATA[CS-SDK]]></category>
		<category><![CDATA[CS5]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Flash Builder 4]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Sprache]]></category>

		<guid isPermaLink="false">http://www.fhcon.de/blog/?p=155</guid>
		<description><![CDATA[Go to the english version of this article. Dieser Beitrag hat nicht viel zu tun mit der IDMLlib oder unserer sonstigen täglichen Arbeit, aber einige von Ihnen könnten irgendwann einmal vor dem gleichen Problem stehen: dem Wechsel der Sprache in einer lokalisierten Flash Builder 4 Installation. Wenn Sie eine lokalisierte Version der Creative Suite 5 [...]]]></description>
			<content:encoded><![CDATA[<p><a title="IDMLlib Blog" href="http://blog.idmllib.com/2010/05/30/changing-the-language-in-flash-builder-4-on-mac/" target="_blank">Go to the english version of this article.</a></p>
<p>Dieser Beitrag hat nicht viel zu tun mit der IDMLlib oder unserer sonstigen täglichen Arbeit, aber einige von Ihnen könnten irgendwann einmal vor dem gleichen Problem stehen: dem Wechsel der Sprache in einer lokalisierten Flash Builder 4 Installation. Wenn Sie eine lokalisierte Version der Creative Suite 5 besitzen ist es (meiner Meinung nach) unumgänglich, dass der Flash Builder 4 ebenfalls in einer lokalisierten Version auf Ihrem System vorliegt.<span id="more-155"></span></p>
<p>Da es &#8211; soweit ich weiss &#8211; keinen Weg gibt, die Sprache in irgendeiner Voreinstellung zu ändern, habe ich angefangen, mir die ini-Dateien genauer anzusehen. Zu meiner Entschuldigung muss ich gestehen, dass ich zu der Minderheit der Softwareentwickler gehöre, die nicht die Eclipse IDE für die Java-Entwicklung nutzen. Wenn dies also zur Allgemeinbildung gehört, ignorieren Sie diesen Blogartikel und gehen Sie über zum nächsten.</p>
<p>Wenn Sie also die Flash Builder 4 GUI auf eine andere Sprache umstellen möchten, navigieren Sie zum Flash Builder Programmpaket und wählen Sie im Kontext-Menü (rechte Maustaste bzw. CRTL-Klick) &#8220;Paketinhalt zeigen&#8221;, um das Programmverzeichnis zu öffnen.</p>
<p>Öffnen Sie im Programmverzeichnis die ini-Datei unter Contents/MacOS/Adobe Flash Builder 4.ini in einem Editor Ihrer Wahl, ich benutze dazu TextWrangler. Die Datei sollte so ähnlich aussehen wie meine:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">-</span>nl
de_DE
<span style="color: #339933;">-</span>startup
<span style="color: #339933;">../../../</span>plugins<span style="color: #339933;">/</span>org<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>equinox<span style="color: #339933;">.</span>launcher_1<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>201<span style="color: #339933;">.</span>R35x_v20090715<span style="color: #339933;">.</span>jar
<span style="color: #339933;">--</span>launcher<span style="color: #339933;">.</span>library
<span style="color: #339933;">../../../</span>plugins<span style="color: #339933;">/</span>org<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>equinox<span style="color: #339933;">.</span>launcher<span style="color: #339933;">.</span>carbon<span style="color: #339933;">.</span>macosx_1<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>200<span style="color: #339933;">.</span>v20090520<span style="color: #339933;">-</span><span style="color: #cc66cc;">1835</span>
<span style="color: #339933;">-</span>vmargs
<span style="color: #339933;">-</span>Xms256m
<span style="color: #339933;">-</span>Xmx512m
<span style="color: #339933;">-</span>XX<span style="color: #339933;">:</span>MaxPermSize<span style="color: #339933;">=</span>256m
<span style="color: #339933;">-</span>XX<span style="color: #339933;">:</span>PermSize<span style="color: #339933;">=</span>64m
<span style="color: #339933;">-</span>Xdock<span style="color: #339933;">:</span>name<span style="color: #339933;">=</span>Flash Builder
<span style="color: #339933;">-</span>Xdock<span style="color: #339933;">:</span>icon<span style="color: #339933;">=../</span>Resources<span style="color: #339933;">/</span>fb_app<span style="color: #339933;">.</span>icns
<span style="color: #339933;">-</span>XstartOnFirstThread
<span style="color: #339933;">-</span>Dorg<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>swt<span style="color: #339933;">.</span>internal<span style="color: #339933;">.</span>carbon<span style="color: #339933;">.</span>noFocusRing
<span style="color: #339933;">-</span>Dorg<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>swt<span style="color: #339933;">.</span>internal<span style="color: #339933;">.</span>carbon<span style="color: #339933;">.</span>smallFonts</pre></div></div>

<p>In Zeile 2 können Sie sehen, dass die aktuelle Sprache auf &#8220;de_DE&#8221; gesetzt ist, was die Java locale für deutsch ist. Um die Sprache auf englisch umzustellen, ändern Sie diese Zeile in &#8220;en_US&#8221; um.</p>
<p>Die ini-Datei enthält ebenso Speichereinstellungen für Ihre Flash Builder Installation. Verändern Sie die Zeilen 8 bis 11 nach Ihren Belangen, um zusätzlichen Speicherplatz zuzuweisen. Als Beispiel sehen Sie hier meine komplette ini-Datei mit englisch als Sprachvorgabe und 1024mb zugewiesenem Speicher für die Eclipse Instanz &#8211; was ratsam ist, wenn Sie weitere Plugins wie beispielsweise den Extension Builder installiert haben:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">-</span>nl
en_US
<span style="color: #339933;">-</span>startup
<span style="color: #339933;">../../../</span>plugins<span style="color: #339933;">/</span>org<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>equinox<span style="color: #339933;">.</span>launcher_1<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>201<span style="color: #339933;">.</span>R35x_v20090715<span style="color: #339933;">.</span>jar
<span style="color: #339933;">--</span>launcher<span style="color: #339933;">.</span>library
<span style="color: #339933;">../../../</span>plugins<span style="color: #339933;">/</span>org<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>equinox<span style="color: #339933;">.</span>launcher<span style="color: #339933;">.</span>carbon<span style="color: #339933;">.</span>macosx_1<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>200<span style="color: #339933;">.</span>v20090520<span style="color: #339933;">-</span><span style="color: #cc66cc;">1835</span>
<span style="color: #339933;">-</span>vmargs
<span style="color: #339933;">-</span>Xms512m
<span style="color: #339933;">-</span>Xmx1024m
<span style="color: #339933;">-</span>XX<span style="color: #339933;">:</span>MaxPermSize<span style="color: #339933;">=</span>256m
<span style="color: #339933;">-</span>XX<span style="color: #339933;">:</span>PermSize<span style="color: #339933;">=</span>64m
<span style="color: #339933;">-</span>Xdock<span style="color: #339933;">:</span>name<span style="color: #339933;">=</span>Flash Builder
<span style="color: #339933;">-</span>Xdock<span style="color: #339933;">:</span>icon<span style="color: #339933;">=../</span>Resources<span style="color: #339933;">/</span>fb_app<span style="color: #339933;">.</span>icns
<span style="color: #339933;">-</span>XstartOnFirstThread
<span style="color: #339933;">-</span>Dorg<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>swt<span style="color: #339933;">.</span>internal<span style="color: #339933;">.</span>carbon<span style="color: #339933;">.</span>noFocusRing
<span style="color: #339933;">-</span>Dorg<span style="color: #339933;">.</span>eclipse<span style="color: #339933;">.</span>swt<span style="color: #339933;">.</span>internal<span style="color: #339933;">.</span>carbon<span style="color: #339933;">.</span>smallFonts</pre></div></div>

<p>Alle Dokumentationen bleiben so, wie sie installiert worden sind, und auch die Beispiele und Startbildschirme bleiben in der gleichen Sprache wie auch die Creative Suite Installation. Wenn es einen einfacheren Weg gibt, die UI-Sprache zu ändern, teilen Sie uns das bitte über die Kommentarfunktion mit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fhcon.de/blog/2010/05/30/sprachwechsel-im-flash-builder-4-auf-dem-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InDesign CS5 und der fehlende INX Export</title>
		<link>http://www.fhcon.de/blog/2010/05/23/indesign-cs5-und-der-fehlende-inx-export/</link>
		<comments>http://www.fhcon.de/blog/2010/05/23/indesign-cs5-und-der-fehlende-inx-export/#comments</comments>
		<pubDate>Sun, 23 May 2010 13:10:16 +0000</pubDate>
		<dc:creator>afink</dc:creator>
				<category><![CDATA[CS5]]></category>
		<category><![CDATA[IDML]]></category>
		<category><![CDATA[INX]]></category>

		<guid isPermaLink="false">http://www.fhcon.de/blog/?p=145</guid>
		<description><![CDATA[Go to the english version of this article. Viele Benutzer scheinen sehr überrascht gewesen zu sein, dass Adobe die INX Unterstützung für InDesign 7.0 entfernt hat, was an folgenden oder ähnlich lautenden Twitter Mitteilungen zu erkennen war: &#8220;Ich habe es endlich geschafft, ein CS5 InDesignDokument in CS4 zu öffnen!&#8221; oder &#8220;Wie exportiere ich ohne INX [...]]]></description>
			<content:encoded><![CDATA[<p><a title="IDMLlib Blog" href="http://blog.idmllib.com/2010/05/23/indesign-cs5-and-the-missing-inx-export/" target="_blank">Go to the english version of this article.</a></p>
<p>Viele Benutzer scheinen sehr überrascht gewesen zu sein, dass Adobe die INX Unterstützung für InDesign 7.0 entfernt hat, was an folgenden oder ähnlich lautenden Twitter Mitteilungen zu erkennen war:</p>
<p><strong>&#8220;Ich habe es endlich geschafft, ein CS5 InDesignDokument in CS4 zu öffnen!&#8221; oder<br />
&#8220;Wie exportiere ich ohne INX Export Option ein CS5 Dokument zu CS3?&#8221;</strong></p>
<p>Dieser Artikel ist für alle Benutzer, die sich die gleichen Fragen stellen, bisher aber noch keine Antwort darauf gefunden haben.<span id="more-145"></span></p>
<p>Der IDML Export wurde mit InDesign CS4 eingeführt, ist aber selten zum Dokumentenaustasch genutzt worden, weil CS4 die erste Version überhaupt war, die es unterstützt hat – und der INX Export war ja weiterhin verfügbar. Deshalb hat es bisher keinen Sinn gemacht, ein InDesign Dokument für den Datenaustausch als IDML zu exportieren.</p>
<p>Mit dem Erscheinen der CreativeSuite 5 und InDesign 7.0 hat sich das geändert. Der INX Export ist aus den Export Optionen verschwunden, und IDML wurde zum primären Austauschformat für InDesign. Für Anwender, die der <a href="http://blogs.adobe.com/indesignchannel/2008/10/the_most_important_new_feature.html">Einführung von IDML (englisch)</a> gefolgt sind, war dies keine große Überraschung.</p>
<p>Was hat sich jetzt also geändert? Grundsätzlich gibt es für den Anwender keine großen Umstellungen bei der Benutzung von IDML im Gegensatz zu INX – der Arbeitsablauf ist genau der gleiche, wie er es mit INX war:</p>
<p>* Exportiere ein IDML aus CS5 über Datei/Export<br />
* Lade das IDML in CS4 über Datei/Öffnen (wie eine normale InDesign .indd Datei)</p>
<p>Es gelten die gleichen Regeln wie auch für den INX Austausch in früheren Versionen: Solange keine neuen Funktionalitäten verwendet werden, ist alles in Ordnung. Aber wir raten trotzdem zu einer Überprüfung der Dokumente, um auf der sicheren Seite zu stehen.</p>
<p>Wenn das Dokument für CS3 exportiert werden soll, wird einfach das in CS4 geladene IDML als INX exportiert und dann in CS3 geöffnet. Das wird für einfach aufgebaute Dokumente  gut funktionieren, aber jedes Dokument, welches von CS5 nach CS3 runterkonvertiert wurde, sollte sehr genau auf Konvertierungsfehler hin überprüft werden.</p>
<p>IDML ist viel mehr, als INX jemals war – wenn wir Sie also neugierig auf IDML gemacht haben, schauen Sie sich in diesem Blog nach anderen IDML Fallbeispielen um.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fhcon.de/blog/2010/05/23/indesign-cs5-und-der-fehlende-inx-export/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mit der IDMLlib 1.1 Snippets in ein IDML Dokument importieren</title>
		<link>http://www.fhcon.de/blog/2010/05/20/mit-der-idmllib-1-1-snippets-in-ein-idml-dokument-importieren/</link>
		<comments>http://www.fhcon.de/blog/2010/05/20/mit-der-idmllib-1-1-snippets-in-ein-idml-dokument-importieren/#comments</comments>
		<pubDate>Thu, 20 May 2010 12:22:59 +0000</pubDate>
		<dc:creator>afink</dc:creator>
				<category><![CDATA[IDML]]></category>
		<category><![CDATA[IDMLlib]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://www.fhcon.de/blog/?p=131</guid>
		<description><![CDATA[Go to the english version of this article. Eine der am häufigsten gestellten Fragen unserer Kunden ist diese: &#8220;Ist die IDMLlib in der Lage, Snippets (.idms) in ein IDML Dokument zu importieren?&#8221;. Glücklicherweise können darauf wir seit dem ersten Milestone der IDMLlib 1.1 mit ja antworten, allerdings war dies bis jetzt eine sehr Sourcecode intensive [...]]]></description>
			<content:encoded><![CDATA[<p><a title="IDMLlib Blog" href="http://blog.idmllib.com/2010/05/20/import-idms-into-idml/" target="_blank">Go to the english version of this article.</a></p>
<p>Eine der am häufigsten gestellten Fragen unserer Kunden ist diese: &#8220;Ist die IDMLlib in der Lage, Snippets (.idms) in ein IDML Dokument zu importieren?&#8221;. Glücklicherweise können darauf wir seit dem ersten Milestone der IDMLlib 1.1 mit <strong>ja</strong> antworten, allerdings war dies bis jetzt eine sehr Sourcecode intensive Aufgabe. Wir werden Ihnen später zeigen, wie einfach die Lösung mit unserem neuen IDMLlib Utility Framework ist. Aber zuerst ein paar Erklärungen, was die Idee hinter Snippets ist und was Sie brauchen, um ein Snippet zu importieren.<span id="more-131"></span></p>
<p>Das Arbeiten mit Snippets ist ein geeigneter Weg, InDesign Seiten zu modularisieren. Die Idee dahinter ist, ein oder mehrere PageItems in eine externe Datenstruktur zu exportieren, um sie auf verschiedenen Seiten und Dokumenten wiederzuverwenden. PageItems können exportiert werden, indem im InDesign Dokument ein oder mehrere Elemente mit dem Auswahlwerkzeug angewählt und über Datei/Exportieren exportiert werden. Wählen Sie das Format InDesign-Snippet (nur möglich, wenn das Auswahlwerkzeug benutzt wurde) und exportieren Sie die PageItems als .idml Datei.</p>
<p>Das exportierte Snippet ist nichts anderes als eine XML-Datei, die auf dem Schema der InDesignMarkupLanguage beruht, und alle Informationen über die exportierten PageItems enthält. <span style="color: #ff0000;"><span style="color: #000000;">Im Grunde genommen ist ein IDML-Snippet eine XML Datei, die das ganze IDML Schema abbilden kann. </span><span style="color: #000000;">Das Snippet kann über den Menübefehl Datei/Platzieren in das gleiche oder in ein anderes Dokument importiert werden.</span></span></p>
<p>Was hat das Arbeiten mit Snippets also für Vorteile? So wie ein IDML Dokument enthält das Snippet nur Referenzen zu allen enthaltenen Werten wie Schriften oder Bilder, und ist dadurch sehr klein (Dateigröße) und einfach weiterzuverwenden. Es ist ein mächtiges Konzept in InDesign, aber es wird noch leistungsfähiger in einem IDML Workflow. Stellen Sie sich zum Beispiel eine Anzeigenkampagne mit verschiedenen Werbeaussagen und/oder Bildern vor, die außerhalb von InDesign zusammengestellt und später in einem InDesign Server verarbeitet und fertiggestellt wird. Eine mögliche Realisierung wäre über einen Anzeigen-Baukasten, der über eine Webapplikation zur Verfügung gestellt wird und so keiner Standortbeschränkung unterliegt.</p>
<p>Einen weiteren Vorteil, den Sie durch die Verwendung von IDML und Snippets außerhalb von InDesign haben, ist die Möglichkeit, Snippets nach Ihren Wünschen zu modifizieren: ändern Sie im Snippet verwendete Bilder oder Texte oder fügen Sie weitere PageItems hinzu.</p>
<p>Was müssen wir also tun, um ein Snippet außerhalb von InDesign in ein IDML Dokument einzufügen und so den Datei/Platzieren Befehl zu simulieren?</p>
<p>Die folgenden Schritte sind nötig, um das Snippet zu importieren. Dies kann entweder programmatisch geschehen oder mit einem Werkzeug wie <a href="http://www.oxygenxml.com/" target="_blank">Oxygen XML</a>, welches die Verarbeitung von IDML Dokumenten vereinfacht, indem es IDML Container Dateien unterstützt:</p>
<ul>
<li>Das IDML Dokument entpacken</li>
<li>Den Spread lokalisieren, an den die Snippet-PageItems angehangen werden sollen</li>
<li>Das IDMS Snippet laden und die zu importierenden PageItems lokalisieren</li>
<li>Die PageItems an de gewählten Spread anfügen</li>
<li>Neue Stories/Story_xxx.xml Dateien für jedes importierte TextFrame PageItem erstellen</li>
<li>Jede Story vom Snippet zum korrespondierenden Stories/Story_xxx.xml kopieren</li>
<li>Self-ID Kollisionen für jedes importierte Objekt überprüfen, neue IDs für kollidierte PageItems erstellen und Self-IDs der PageItems aktualisieren</li>
<li>Einen neuen IDML Container (.idml) erstellen</li>
</ul>
<p><span style="color: #ff0000;"><span style="color: #000000;">Wir haben dies hier vereinfacht dargestellt, indem das Snippet in das Dokument importiert wird, aus dem es exportiert worden ist. Daher brauchen keine Stile, Farben und Ähnliches importiert werden.</span></span><em><span style="color: #999999;"><br />
</span></em></p>
<p>Sogar mit Hilfe der IDMLlib wären es 20-30 Zeilen Code gewesen. Aber mit der aktuellen Version der IDMLlib sind wir in der Lage, die Länge des Codes enorm zu verkürzen, ohne dabei die Flexibilität zu verlieren.<em></em></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Idml idml <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;docs/4pager.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Idml idms <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Idml<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;docs/product.idms&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
DocumentUtil.<span style="color: #006633;">importSnippet</span><span style="color: #009900;">&#40;</span>idml,idms,<span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
idml.<span style="color: #006633;">saveAs</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;processes/merged.idml&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
idml.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
idms.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><span style="color: #000000;">Der eigentliche Import ist nur eine einzige Zeile Code, welcher alle oben gelisteten Schritte beinhaltet</span> &#8211; der Rest ist das Laden, Speichern und Schließen des IDML Dokuments:<em><span style="color: #999999;"><br />
</span></em></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">DocumentUtil.<span style="color: #006633;">importSnippet</span><span style="color: #009900;">&#40;</span>idml,idms,<span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><span style="color: #000000;">Die importSnippet() Methode nimmt 3 oder 5 Parameter an:</span><em><span style="color: #999999;"><br />
</span></em></p>
<ul>
<li>targetIdml</li>
<li>sourceIdms</li>
<li>targetSpreadIndex</li>
<li>xOffset (optional)</li>
<li>yOffset (optional)</li>
</ul>
<p>Mit dem x- und y-Offset sind Sie in der Lage, importierte PageItems von ihrer ursprünglichen Position an eine andere Position auf dem Spread zu verschieben.</p>
<p>Aber was ist, wenn man importierte PageItems vorab bearbeiten muss, z.B. Text- und Bildänderungen oder zusätzliche Ebenen? Und woher weiss man, welche PageItems importiert worden sind? Nichts einfacher als das: die DocumentUtil.importSnippet() Methode gibt einen PageItemIterator zurück, mit welchem es ganz einfach möglich ist, über alle importierten PageItems zu iterieren und alle PageItems so zu modifizieren, wie es gewünscht ist.</p>
<p>Ein Beispiel, wie man alle PageItems auf die Ebene u3b stellt:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">PageItemIterator pageItemIterator <span style="color: #339933;">=</span> DocumentUtil.<span style="color: #006633;">importSnippet</span><span style="color: #009900;">&#40;</span>idml, idms, <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>pageItemIterator.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  AbstractIdmlPageItem pageItem <span style="color: #339933;">=</span> pageItemIterator.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pageItem.<span style="color: #006633;">setItemLayer</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;u3b&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Dies war der erste Blogbeitrag über unseren neuen IDMLlib-Utility-Framework innerhalb der IDMLlib, welcher das Arbeiten mit IDML einfacher macht als jemals zuvor. In den nächsten Tagen und Wochen werden wir an dieser Stelle weitere Teile dieses Frameworks vostellen.</p>
<p>Wir hoffen, dass Ihnen dieser Beitrag über IDML Snippets gefallen hat und Sie bemerkt haben, wir einfach es ist, mit Hilfe der IDMLlib mit Snippets zu arbeiten. Ihr Feedback nehmen wir gerne an, und auch die Kommentarfunktion steht zur Verfügung.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fhcon.de/blog/2010/05/20/mit-der-idmllib-1-1-snippets-in-ein-idml-dokument-importieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IDMLlib für Java mit PHP</title>
		<link>http://www.fhcon.de/blog/2010/05/20/idmllib-fur-java-mit-php/</link>
		<comments>http://www.fhcon.de/blog/2010/05/20/idmllib-fur-java-mit-php/#comments</comments>
		<pubDate>Thu, 20 May 2010 11:46:14 +0000</pubDate>
		<dc:creator>ohaeuser</dc:creator>
				<category><![CDATA[IDMLlib]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[IDML]]></category>
		<category><![CDATA[PHP5]]></category>

		<guid isPermaLink="false">http://www.fhcon.de/blog/?p=214</guid>
		<description><![CDATA[Go to the english version of this article. Da wir zur Zeit einige Anfragen von PHP-Entwicklern bezüglich der Arbeit mit IDML, der IDMLib und PHP bekommen, haben wir einen Blick auf das PHP/Java Bridge Projekt bei Sourceforge geworfen, und es scheint zu funktionieren. Wir werden mit ein paar komplexeren Beispielen testen, wie stabil alles läuft. [...]]]></description>
			<content:encoded><![CDATA[<p><a title="IDMLlib Blog" href="http://blog.idmllib.com/2010/05/20/idmllib-for-java-with-php/" target="_blank">Go to the english version of this article.</a></p>
<p>Da wir zur Zeit einige Anfragen von PHP-Entwicklern bezüglich der Arbeit mit IDML, der IDMLib und PHP bekommen, haben wir einen Blick auf das PHP/Java Bridge Projekt bei Sourceforge geworfen, und es scheint zu funktionieren. Wir werden mit ein paar komplexeren Beispielen testen, wie stabil alles läuft.</p>
<p>Hier ist mein Vorschlag, die IDMLlib für Java mit Apache 2, Tomcat 6, Java 6 und PHP 5  zum Laufen zu bringen.<span id="more-214"></span></p>
<p>Um die IDMLlib für Java mit PHP nutzen zu können, benötigen Sie folgende Komponenten:</p>
<ul>
<li>Die IDMLlib für Java, die Sie über <a rel="nofollow" href="http://idmllib.com/">http://idmllib.com</a> beziehen können</li>
<li>Ein laufendes Apache 2 und PHP 5 Setup mit einer Tomcat 6 Installation</li>
<li>Und natürlich die PHP/Java Bridge</li>
</ul>
<p>Für diese Anleitung werde ich ein Debian 5 Lenny Setup nutzen. Aber Sie können ebenso die Konfigurationshinweise<span style="color: #ff0000;"><span style="color: #000000;"> für beispielsweise </span></span>Windows, Mac OS X, Redhat Linux, Suse Linux oder wo auch immer Java,  Apache 2, Tomcat 6 und PHP laufen, nutzen.</p>
<h4>1 Installation Debian Linux</h4>
<p>Installieren Sie eine einfache debian Lenny <span style="color: #000000;">Distribution</span>.</p>
<p>Stellen Sie sicher, dass Sie <span style="color: #000000;">&#8216;non-free</span>&#8216; in Ihren apt.sources Liste stehen haben.</p>
<blockquote><p>deb http://debian.uni-essen.de/debian/ lenny main non-free<br />
deb-src http://debian.uni-essen.de/debian/ lenny main non-free</p>
<p>deb http://security.debian.org/ lenny/updates main contrib non-free<br />
deb-src http://security.debian.org/ lenny/updates main contrib non-free</p></blockquote>
<h4>2 Installation Apache 2 and PHP 5</h4>
<div>
<div>
<blockquote>
<pre> apt-get install apache2 php5 libapache2-mod-php5 php5-cli php5-common php5-cgi</pre>
</blockquote>
</div>
</div>
<h4>3 Installation  Tomcat 6</h4>
<p>Da es kein Tomcat 6 debian Packet gibt, installieren wir Tomcat 6 von Hand.</p>
<div>
<blockquote>
<pre>apt-get install sun-java6-jdk
echo 'JAVA_HOME="/usr/lib/jvm/java-6-sun"' | tee -a /etc/environment</pre>
</blockquote>
</div>
<p>Nach &#8216;wget&#8217; die URL zur letzten Tomcat Version einfügen!</p>
<div>
<div>
<blockquote>
<pre>wget http://tomcat.apache.org/download-60.cgi
tar xfvz apache-tomcat-6.0.24.tar.gz
mkdir /opt/tomcat6
groupadd -g 109 tomcat6
useradd -b /opt/tomcat6 -g tomcat6 -s /bin/false -u 109 tomcat6</pre>
</blockquote>
</div>
</div>
<p>Jakarta Commons Daemon installieren.</p>
<div>
<div>
<blockquote>
<pre>apt-get install jsvc</pre>
</blockquote>
</div>
</div>
<p>Ein Initscript erstellen, um Tomcat 6 zu starten und zu stoppen.</p>
<p>/etc/init.d/tomcat6</p>
<blockquote>
<pre>#!/bin/sh
#
# /etc/init.d/tomcat6 -- startup script for the Tomcat 5 servlet engine
#
# Written by Miquel van Smoorenburg &lt;miquels@cistron.nl&gt;.
# Modified for Debian GNU/Linux by Ian Murdock &lt;imurdock@gnu.ai.mit.edu&gt;.
# Modified for Tomcat by Stefan Gybas &lt;sgybas@debian.org&gt;.
# Modified for Tomcat 6 by ohaeuser - 16.02.2009
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO

set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=tomcat6
DESC="Tomcat servlet engine"
DAEMON=/usr/bin/jsvc
CATALINA_HOME=/opt/$NAME
DEFAULT=/etc/default/$NAME

if [ `id -u` -ne 0 ]; then
        echo "You need root privileges to run this script"
        exit 1
fi

# Make sure tomcat is started with system locale
if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG
fi

. /lib/lsb/init-functions
. /etc/default/rcS

# The following variables can be overwritten in $DEFAULT

# Run Tomcat 5 as this user ID
TOMCAT6_USER=tomcat6

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm /usr/lib/j2sdk1.4-sun /usr/lib/j2sdk1.4-blackdown
/usr/lib/j2se/1.4 /usr/lib/j2sdk1.4-ibm /usr/lib/j2sdk1.3-sun /usr/lib/j2sdk1.3-blackdown /usr/lib/jvm/java-gcj /usr/lib/kaffe"

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
    if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
        JAVA_HOME_TMP="$jdir"
        # checks for a real JDK like environment, needed to check if
        # really the java-gcj-compat-dev package is installed
        if [ -r "$jdir/bin/jdb" ]; then
            JAVA_HOME="$JAVA_HOME_TMP"
        fi
    fi
done
export JAVA_HOME

# Directory for per-instance configuration files and webapps
CATALINA_BASE=/opt/$NAME

# Use the Java security manager? (yes/no)
TOMCAT6_SECURITY=yes

# Timeout in seconds for the shutdown of all webapps
TOMCAT6_SHUTDOWN=30

# End of variables that can be overwritten in $DEFAULT

# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
        . "$DEFAULT"
fi

test -f $DAEMON || exit 0

[ -z "$TOMCAT6_USER" ] &amp;&amp; TOMCAT6_USER=tomcat6

# Check if we use gij
gij=no
"$JAVA_HOME/bin/java" -version 2&gt;&amp;1 | grep -q "^gij (GNU libgcj)" &amp;&amp; gij=yes

# gij doesn't support a security manager yet (see bug #399595)
if [ "$gij" = "yes" ]; then
    printf "The java-gcj-compat-dev environment currently doesn't\nsupport a security manager. See README.Debian." | logger -p daemon.warning -t $NAME
fi

# Set java.awt.headless=true if JAVA_OPTS is not set so the
# Xalan XSL transformer can work without X11 display on JDK 1.4+
# It also looks like the default heap size of 64M is not enough for most cases
# se the maximum heap size is set to 128M
if [ -z "$JAVA_OPTS" ]; then
        JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
fi

JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME
-Djava.io.tmpdir=$CATALINA_BASE/temp"

# Set the JSP compiler if set in the tomcat6.default file
if [ -n "$JSP_COMPILER" ]; then
        JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=$JSP_COMPILER"
fi

if [ "$TOMCAT6_SECURITY" = "yes" ]; then
        JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$CATALINA_BASE/conf/catalina.policy"
fi

# juli LogManager disabled if running under gij (see bug #395167)
if [ "$gij" != "yes" ]; then
        JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
                   -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
fi

# Define other required variables
CATALINA_PID="/var/run/$NAME.pid"
BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap
JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar"

# Look for Java Secure Sockets Extension (JSSE) JARs
if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then
    JSSE_HOME="${JAVA_HOME}/jre/"
fi
export JSSE_HOME

echo $JSSE_HOME

case "$1" in
  start)
        if [ -z "$JAVA_HOME" ]; then
                log_failure_msg "no JDK found - please set JAVA_HOME"
                exit 1
        fi

        if [ ! -d "$CATALINA_BASE/conf" ]; then
                log_failure_msg "invalid CATALINA_BASE specified"
                exit 1
        fi

 log_daemon_msg "Starting $DESC" "$NAME"
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
                --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
                &gt;/dev/null; then

                # Create catalina.policy (for the security manager)
                rm -f "$CATALINA_BASE/conf/catalina.policy"
                umask 022
                echo "// AUTO-GENERATED FILE -- DO NOT EDIT!" \
                        &gt; "$CATALINA_BASE/conf/catalina.policy"
                echo "// Edit the files in /opt/tomcat6/conf/policy.d/ instead" \
                        &gt;&gt; "$CATALINA_BASE/conf/catalina.policy"
                echo ""  &gt;&gt; "$CATALINA_BASE/conf/catalina.policy"
                cat /opt/tomcat6/conf/policy.d/*.policy \
                        &gt;&gt; "$CATALINA_BASE/conf/catalina.policy"

                # Clean up and set permissions on required files
                find "$CATALINA_BASE"/temp/ -mindepth 1 -exec rm -fr {} +
                REQUIRED_FILES='"$CATALINA_BASE/conf"
                        "$CATALINA_BASE/logs" "$CATALINA_BASE/temp"
                        "$CATALINA_BASE/webapps" "$CATALINA_BASE/work"'
                if [ -e "$CATALINA_BASE/conf/tomcat-users.xml" ]; then
                        REQUIRED_FILES=$REQUIRED_FILES'
                                "$CATALINA_BASE/conf/tomcat-users.xml"'
                fi
                eval chown --dereference "$TOMCAT6_USER" $REQUIRED_FILES \
                        || true

                cd "$CATALINA_BASE/temp"

                $DAEMON -user "$TOMCAT6_USER" -cp "$JSVC_CLASSPATH" \
                    -outfile SYSLOG -errfile SYSLOG \
                    -pidfile "$CATALINA_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS"

else
                log_progress_msg "(already running)"
        fi
        log_end_msg 0
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
                --user "$TOMCAT6_USER" --startas "$JAVA_HOME/bin/java" \
                &gt;/dev/null; then
                log_progress_msg "(not running)"
        else
                $DAEMON -cp "$JSVC_CLASSPATH" -pidfile "$CATALINA_PID" \
                     -stop "$BOOTSTRAP_CLASS"
        fi
        log_end_msg 0
        ;;
   status)
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
                --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
                &gt;/dev/null; then

                if [ -f "$CATALINA_PID" ]; then
                    log_success_msg "$DESC is not running, but pid file exists."
                else
                    log_success_msg "$DESC is not running."
                fi
        else
                log_success_msg "$DESC is running with pid `cat $CATALINA_PID`"
        fi
        ;;

restart|force-reload)
        if start-stop-daemon --test --stop --pidfile "$CATALINA_PID" \
                --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
                &gt;/dev/null; then
                $0 stop
                sleep 1
        fi
        $0 start
        ;;
  try-restart)
        if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \
                --user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \
                &gt;/dev/null; then
                $0 start
        fi
        ;;
  *)
        log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
        exit 1
        ;;
esac

exit 0</pre>
</blockquote>
<p>Grundlegende Einstellungen unter /etc/defaults/tomcat6:</p>
<blockquote>
<pre># Modified for tomcat6 16.02.2009 - ohaeuser
# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat6.
#TOMCAT6_USER=tomcat6

# The home directory of the Java development kit (JDK). You need at least
# JDK version 1.4. If JAVA_HOME is not set, some common directories for
# the Sun JDK, various J2SE 1.4 versions, and the free runtimes
# java-gcj-compat-dev and kaffe are tried.
JAVA_HOME=/usr/lib/jvm/java-6-sun

# Directory for per-instance configuration files and webapps. It contain the
# directories conf, logs, webapps, work and temp. See RUNNING.txt for details.
# Default: /var/lib/tomcat5.5
CATALINA_BASE=/opt/tomcat6

# Arguments to pass to the Java virtual machine (JVM).
#JAVA_OPTS="-Djava.awt.headless=true -Xmx128M"
JAVA_OPTS="-Djava.awt.headless=true -Xms256m -Xmx512m -XX:MaxPermSize=256m -Dlog.home=$CATALINA_BASE -Dsolr.solr.home=/home/solr -Dcom.idmllib.license=ILJD10-xxxx-xxxx-xxxx-xxxx"

# Java compiler to use for translating JavaServer Pages (JSPs). You can use all
# compilers that are accepted by Ant's build.compiler property.
#JSP_COMPILER=jikes

# Use the Java security manager? (yes/no, default: yes)
# WARNING: Do not disable the security manager unless you understand
# the consequences!
# NOTE: java-gcj-compat-dev currently doesn't support a security
# manager.
TOMCAT6_SECURITY=no
#Export for AWT
#export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/</pre>
</blockquote>
<p>Die wichtigste Zeile dabei ist folgende:</p>
<p><strong>JAVA_OPTS=&#8221;-Djava.awt.headless=true -Xms256m -Xmx512m  -XX:MaxPermSize=256m -Dlog.home=$CATALINA_BASE  -Dsolr.solr.home=/home/solr  -Dcom.idmllib.license=ILJD10-xxxx-xxxx-xxxx-xxxx&#8221;</strong></p>
<p>Mit dieser werden Speichereinstellungen festgelegt, außerdem setzt sie den IDMLlib Lizenzcode.</p>
<p><strong>-Dcom.idmllib.license=ILJD10-xxxx-xxxx-xxxx-xxxx</strong></p>
<p>Sie benötigen einen gültigen Lizenzkey, den Sie unter <a rel="nofollow" href="http://idmllib.com/">http://idmllib.com</a> bekommen können.</p>
<h4>4 Überprüfen, ob das grundlegende Setup läuft</h4>
<p>Erstellen Sie eine info.php Datei in Ihrem Apache 2 web root&#8230;</p>
<div>
<div>
<blockquote>
<pre> &lt;?php phpinfo() ?&gt;</pre>
</blockquote>
</div>
</div>
<p>&#8230; und testen Sie, ob Apache 2 und PHP laufen: <a rel="nofollow" href="http://server_ip/index.php">http://server_ip/index.php</a></p>
<p>Wenn Sie die PHP Informationsseite sehen, sollte alles funktionieren!</p>
<p><a href="http://blog.idmllib.com/wp-content/uploads/2010/05/phpinfo.jpg"><img class="alignnone size-full wp-image-49" title="phpinfo" src="http://blog.idmllib.com/wp-content/uploads/2010/05/phpinfo.jpg" alt="phpinfo Apache2 status page" width="604" height="735" /></a></p>
<p>Nun testen Sie, ob der Tomcat 6 installiert ist: <a rel="nofollow" href="http://server_ip:8080/">http://server_ip:8080/</a></p>
<p>Wenn Sie die Standard Tomcat Statusseite sehen, können wir damit anfangen, die PHP/Java Bridge aufzusetzen.</p>
<h4>5 PHP/Java Bridge Templatedatei erstellen</h4>
<p>Dies ist die Hauptseite des PHP/Java Bridge Projektes:  <a rel="nofollow" href="http://php-java-bridge.sourceforge.net/">http://php-java-bridge.sourceforge.net/</a></p>
<p>Sie benötigen eine JavaBridgeTemplate.war Datei: <a rel="nofollow" href="http://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_6.1.2.1/JavaBridgeTemplate6121.war/download">http://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_6.1.2.1/JavaBridgeTemplate6121.war/download</a></p>
<p>Benennen Sie diese Datei um in IDML.war und kopieren die diese in Ihren Webapps Ordner. Tomcat sollte es so automatisch nutzen können.</p>
<p>Kopieren Sie die idmllib.jar Datei nach /opt/tomcat6/webapps/IDML/WEB-INF/lib</p>
<div>
<div>
<blockquote>
<pre>olitest:/root/# ls -l /opt/tomcat6/webapps/IDML/WEB-INF/lib/
total 4040
-rw-r--r-- 1 root    root    3554086 2010-05-20 11:34 idmllib-1.1.106.jar
-rw-r--r-- 1 tomcat6 tomcat6  405003 2010-05-02 13:22 JavaBridge.jar
-rw-r--r-- 1 tomcat6 tomcat6   41347 2010-05-02 13:22 php-script.jar
-rw-r--r-- 1 tomcat6 tomcat6  114991 2010-05-02 13:22 php-servlet.jar</pre>
</blockquote>
</div>
</div>
<h4>6 Konfiguration Apache und PHP</h4>
<p>URL_FOPEN auf &#8216;On&#8217; stellen.</p>
<div>
<div>
<blockquote>
<pre>;Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = On</pre>
</blockquote>
</div>
</div>
<p>Sie können Ihr Setup mit suhosin schützen, so dass URL_FOPEN auf eine spezifische Adresse beschränkt ist:</p>
<p>suhosin.executor.include.whitelist=<a rel="nofollow" href="http://localhost:8080/">http://localhost:8080</a></p>
<p>Besuchen Sie <a rel="nofollow" href="http://www.hardened-php.net/suhosin/configuration.html">http://www.hardened-php.net/suhosin/configuration.html</a> für weitere interessanten Einstellungen.</p>
<h4>7 Testen Sie die IDMLlib</h4>
<p>Wenn Sie alle vorhergehenden Schritte ausgeführt haben, starten Sie Adobe InDesign, nehmen Sie irgendein InDesign Dokument und exportieren Sie es über Datei/Export als IDML Datei. Sie können auch ein neues InDesign Dokument erstellen, allerdings benötigen Sie zumindest eine Textbox mit Inhalt.</p>
<p>Laden Sie die IDML Datei in ihren Webordner und steuern Sie es mit einem kleinen PHP Script an:</p>
<div>
<div>
<blockquote>
<pre>&lt;?php
require_once("http://localhost:8080/IDML/java/Java.inc");

echo "This is a Test - this is PHP";

$idml = new java("de.fhcon.idmllib.api.elements.Idml", "/var/www/java/text.idml");
$document = $idml-&gt;getDocument();
$cmykProfile = $document-&gt;getCMYKProfile();
$rgbProfile = $document-&gt;getRGBProfile();

echo "&lt;br&gt;This is the cmyk Profile: ".$cmykProfile;
echo "&lt;br&gt;And the RGB Profile: ".$rgbProfile;

$story = $idml-&gt;getAbstractDocument()-&gt;getStoryById("uec");
$content  = java("de.fhcon.idmllib.api.util.StoryUtil")-&gt;getContent($story);
echo "&lt;br&gt;This is the Content from the Textbox: &lt;br&gt;".$content;
echo "&lt;br&gt;";
?&gt;</pre>
</blockquote>
</div>
</div>
<p>Achtung: Sie müssen einen Pfad für die IDML Datei zur Verfügung stellen. Außerdem fragen wir nicht alle Stories ab, sondern &#8220;schummeln&#8221; ein wenig und stellen nur die korrekte Story ID aus der IDML Datei zur Verfügung. Entpacken Sie die IDML Datei und navigieren Sie zum Stories Ordner. Natürlich gibt es auch  einige nützliche Funktionen in der IDMLlib, um die Story IDs aus den Spreads zu bekommen und über sie zu iterieren.</p>
<div>
<div>
<blockquote>
<pre>olitest:/var/www/java/test# ls -l
total 84
-rw-r--r-- 1 root root 24210 2010-01-22 15:50 designmap.xml
drwxr-xr-x 2 root root  4096 2010-05-20 13:46 MasterSpreads
-rw-r--r-- 1 root root 30060 2010-05-20 11:51 mein.zip
drwxr-xr-x 2 root root  4096 2010-05-20 13:46 META-INF
-rw-r--r-- 1 root root    43 2010-01-22 15:50 mimetype
drwxr-xr-x 2 root root  4096 2010-05-20 13:46 Resources
drwxr-xr-x 2 root root  4096 2010-05-20 13:46 Spreads
drwxr-xr-x 2 root root  4096 2010-05-20 13:46 Stories
drwxr-xr-x 2 root root  4096 2010-05-20 13:46 XML
olitest:/var/www/java/test# ls -l Stories/
total 4
-rw-r--r-- 1 root root 924 2010-01-22 15:50 Story_uec.xml</pre>
</blockquote>
</div>
</div>
<p>Demnächst werden wir Ihnen zeigen, wie Sie Story Inhalte modifizieren und in eine IDML Datei zurückschreiben können.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fhcon.de/blog/2010/05/20/idmllib-fur-java-mit-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Überwachung mit Hyperic</title>
		<link>http://www.fhcon.de/blog/2009/10/02/ueberwachung-mit-hyperic/</link>
		<comments>http://www.fhcon.de/blog/2009/10/02/ueberwachung-mit-hyperic/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 11:42:40 +0000</pubDate>
		<dc:creator>ohaeuser</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Hyperic]]></category>
		<category><![CDATA[Überwachung]]></category>

		<guid isPermaLink="false">http://www.fhcon.de/blog/?p=88</guid>
		<description><![CDATA[Überwachung von komplexen IT Strukturen und Applikationen ist bei unserer Arbeit ein absolutes Muss. Wenn es vor ein paar Jahren noch ausreichte zu wissen, ob ein Server an ist oder nicht, sind die heutigen Anforderungen immens gestiegen. Nehmen wir das Beispiel einer typischen Mediendatenbank: Hier müsste man eigentlich zu jeder Zeit wissen, ob der eigentliche [...]]]></description>
			<content:encoded><![CDATA[<p>Überwachung von komplexen IT Strukturen und Applikationen ist bei unserer Arbeit ein absolutes Muss.</p>
<p style="display: none;">
<p>Wenn es vor ein paar Jahren noch ausreichte zu wissen, ob ein Server an ist oder nicht, sind die heutigen Anforderungen immens gestiegen.</p>
<p style="display: none;">
<p>Nehmen wir das Beispiel einer typischen Mediendatenbank: Hier müsste man eigentlich zu jeder Zeit wissen, ob der eigentliche Server läuft und natürlich über das Netzwerk erreichbar ist. Nur, was heißt &#8220;laufen&#8221;? Meistens reicht dies nicht aus. Sobald die Applikation z.B. zu langsam wird, weil bestimmte Ressourcen nicht zur Verfügung stehen oder ausgebaut werden müssten, häufen sich Beschwerden von Benutzern. Diese Anfragen laufen bei der IT auf und müssen bearbeitet werden. Das heißt, der Admnistrator wird auf der einen Seite mit Fragen bombardiert und auf der anderen Seite soll er das Problem lösen.</p>
<p style="display: none;">
<p><span id="more-88"></span><br />
<strong>Anforderungen:</strong></p>
<ul>
<li>Plattformunabhängig</li>
<li>Viele Dienste, Applikationen automatisch erkennen</li>
<li>Einfache Konfiguration</li>
<li>Komplexe IT Strukturen überwachen und kontrollieren</li>
<li>Auswertung, Reporting &amp; Berichtswesen</li>
</ul>
<p style="display: none;">
<p style="display: none;">
<p style="display: none;">
<p>Besser wäre es natürlich, der Administrator wird proaktiv gewarnt oder aber ein Dienst reagiert auf bestimmte Sachen selbsttätig und informiert den Admin lediglich. Aber auch hier ist die Tücke im Detail. Insbesondere, wenn die Mediendatenbank z.B. unter einer Applikationsserver läuft, der wiederum mit einer SQL Datenbank kommunizieren muss. Die binären Daten liegen zudem auf einem separaten Fileserver. So gesehen muss ein Überwachungsdienst in der Lage sein zu erkennen, welche dieser Komponenten ausgefallen ist und was getan werden muss.</p>
<p style="display: none;">
<p>Fällt z.B. der Applikationsserver der Mediendatenbank aus, genügt es, diesen neu zu starten. Ist die Verbindung zum SQL Server unterbrochen, muss in jedem Fall der SQL Server neu gestartet werden. Vorab wäre es jedoch ratsam, den Mediendatenbankserver herunter zu fahren und erst dann neu zu starten, wenn der SQL Server wieder funktioniert.</p>
<p style="display: none;">
<p>Wird der Speicher des Fileserver zu knapp, hilft kein Neustart – hier muss der Admin dann eine Benachrichtigung erhalten, damit er eine Erweiterung der Speicherkapazitäten einplanen kann.</p>
<p style="display: none;">
<p>Als Schwierigkeit dazu kann es sehr gut sein, dass die Mediendatenbank unter Mac oder Windows läuft, der SQL Server unter Linux und der Fileserver unter Solaris.</p>
<p style="display: none;">
<p style="display: none;">
<p>Ein modernes Überwachungswerkzeug muss also plattformunabhängig sein, dem Admin genaue Kennzahlen geben, z.B. wie viel Speicherplatz für Daten pro Woche zusätzlich hinzukommt, und eine Warnung auswerfen, falls ein Dateisystem zu 85% ausgelastet ist.</p>
<p style="display: none;">
<p>Für eine plattforumübergreifende Überwachung setzen wir Hyperic ein. Über einen zentralen Hyperic HQ Server werden Server und Dienste über ein Agentenmodell überwacht. Auf dem Zielsystem sammelt ein Java-Agent Daten und leitet diese zum Hyperic Server weiter. Server und Agenten verfügen über eine Vielzahl von mitgelieferten Modulen und Templates, um bestimmte Dienste wie z.B. MySQL, Oracle, Apache Webserver, Tomcat 6 etc. zu überwachen und Informationen zu sammeln. Vorgefertigte Installer für Linux, Windows, Mac OS X und Solaris, wo eine Java 1.5 JRE mitgeliefert wird, sind verfügbar. Man kann jedoch auch ein plattformunabhängiges Paket ohne mitgelieferte Java Version herunter laden.</p>
<p style="display: none;">
<p>Das Setup ist hierbei äußerst einfach. Sobald der Server einmal installiert ist, kann man anfangen, die Agenten auf den zu überwachenden Server zu installieren. Sobald ein Agent sich mit dem Server verbunden hat, erkennt er automatisch die meisten laufenden Standarddienste und Applikationen. Tomcat und MySQL Dienste werden normalerweise sofort erkannt. In den Konfigurationstabs im Server erhält man nun Tipps und Informationen, wie man z.B. bei einer Tomcat Instanz JMX zur Überwachung aktiviert.</p>
<p style="display: none;">
<p>Man kann jedoch auch jederzeit manuell Dienste hinzufügen und über eigene Skripte so ziemlich alles überwachen, was man benötigt.</p>
<p style="display: none;">
<p style="display: none;">
<p>Wenn einmal die Server und Dienste erkannt wurden, kann man nun festlegen, wann was für Aktionen ausgeführt werden sollen, z.B. kann man eine Benachrichtigung konfigurieren, wenn der Tomcat nicht mehr verfügbar ist (Availability &lt; 100%) oder Fehler in den Logdateien auftauchen.</p>
<p style="display: none;">
<p>Somit kann man relativ einfach seine Applikationen und Server zentral überwachen.</p>
<p style="display: none;">
<p>In der Opensource Variante werden hier nur Benachrichtigungen ausgelöst und Dienste können dann manuell über den Hyperic HQ Server neu gestartet werden.</p>
<p style="display: none;">
<p>In der Enterprise Variante erhält man die Möglichkeit, auch Aktionen &#8211; wie z.B. ein Restart des Tomcat Dienstes &#8211; als Reaktionen zu Warnungen zu definieren. Zudem erhält man Zugriff zu einem umfangreichne Reporting Tool, womit man detaillierte Listen und Charts mit einer genauen Auswertungen über Auslastungen und Nutzung auf Knopfdruck erstellen kann.</p>
<p style="display: none;">
<p>Und das ganze zum kleinen Preis. Es wird nach Anzahl der Agenten abgerechnet – also Servern – und der Preis richtet sich nach dem gewünschten Support Level.</p>
<p style="display: none;">
<p>So würde die Überwachung unseres Beispiels mit 3 Servern unter 1.000 Euro Lizenzsumme pro Jahr kosten.</p>
<p>Weitere Informationen finden Sie unter <a title="Hyperic" href="http://www.hyperic.com/" target="_blank">www.hyperic.com</a></p>

<div class="ngg-galleryoverview" id="ngg-gallery-1-88">


	<!-- Piclense link -->
	<div class="piclenselink">
		<a class="piclenselink" href="javascript:PicLensLite.start({feedUrl:'http://www.fhcon.de/blog/wp-content/plugins/nextgen-gallery/xml/media-rss.php?gid=1&amp;mode=gallery'});">
			[Mit PicLens anzeigen]		</a>
	</div>
	
	<!-- Thumbnails -->
		
	<div id="ngg-image-1" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.fhcon.de/blog/wp-content/gallery/hyperic/hq_browseresources.jpg" title=" " class="shutterset_set_1" >
								<img title="hq_browseresources" alt="hq_browseresources" src="http://www.fhcon.de/blog/wp-content/gallery/hyperic/thumbs/thumbs_hq_browseresources.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-2" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.fhcon.de/blog/wp-content/gallery/hyperic/hq_dashboard.jpg" title=" " class="shutterset_set_1" >
								<img title="hq_dashboard" alt="hq_dashboard" src="http://www.fhcon.de/blog/wp-content/gallery/hyperic/thumbs/thumbs_hq_dashboard.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-3" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.fhcon.de/blog/wp-content/gallery/hyperic/hq_viewautogroupmonitor.jpg" title=" " class="shutterset_set_1" >
								<img title="hq_viewautogroupmonitor" alt="hq_viewautogroupmonitor" src="http://www.fhcon.de/blog/wp-content/gallery/hyperic/thumbs/thumbs_hq_viewautogroupmonitor.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-4" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.fhcon.de/blog/wp-content/gallery/hyperic/hq_viewservermonitor.jpg" title=" " class="shutterset_set_1" >
								<img title="hq_viewservermonitor" alt="hq_viewservermonitor" src="http://www.fhcon.de/blog/wp-content/gallery/hyperic/thumbs/thumbs_hq_viewservermonitor.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


]]></content:encoded>
			<wfw:commentRss>http://www.fhcon.de/blog/2009/10/02/ueberwachung-mit-hyperic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

