<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel><generator>http://textpattern.com/?v=4.4.1</generator>
<title>software-entwicklung und programmierung :: dominic scheurer :: webhome</title>
<link>http://www.dominic-scheurer.de/</link>

<description>Personal Notes to Computer Sciences</description>
<pubDate>Fri, 11 May 2012 08:58:24 GMT</pubDate>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/software-informatik-dominic-scheurer" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="software-informatik-dominic-scheurer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>PDF2PPT</title>
<description>
<![CDATA[<p>Die Präsentation zu meinem letzten Talk habe ich, aufgrund der zahlreichen Vorteile dieses Ansatzes für das Layout, mit LaTeX (<em>Beamer</em>) erstellt.</p>

	<p>Dennoch wollte ich während der Präsentation selbst nicht auf die erweiterten Vortragsoptionen von PowerPoint verzichten &#8211; diese beinhalten (unter anderem) Anzeige von Kommentaren, Folienlaufleiste und Stoppuhr.</p>

	<p>Nachdem ich kein anderes Tool gefunden habe, das all diese Funktionen bei angemessener Stabilität und Qualität bieten würde, entschied ich mich für den Ansatz, jede Folie aus der <span class="caps">PDF</span>-Datei, die LaTeX mir erstellt hat, in eine PowerPoint-Folie zu kopieren. Um den Mehraufwand dieser Methode erträglich zu machen, hier ein kleines Java-Programm, welches die Aufgabe der Transformation von <span class="caps">PDF</span>s in <span class="caps">PPTX</span>-Dateien automatisiert:</p>

	<p><a href="http://www.dominic-scheurer.de/file_download/13/PDF2PPT.jar">PDF2PPT.jar [21,69MB]<br />
(35 mal heruntergeladen)<br />
</a></p>

	<p>Dieses Programm steht unter der <a href="http://www.gnu.de/documents/gpl.de.html"><span class="caps">GNU</span> General Public License 3.0</a></p>

	<p>Zur Vereinfachung kann man sich einfach ein kleines Batch-Skript erstellen, welches Dateien, die per <strong>Drag&amp;Drop</strong> auf selbiges gezogen werden, an das Java-Programm weiterreicht &#8211; dieses kann z.B. den folgenden Inhalt haben:</p>

<pre><code>@echo off
java -jar PDF2PPT.jar %1
</code></pre>

	<p>Mein Programm benutzt die folgenden Bibliotheken:</p>

	<ul>
		<li><a href="http://www.ghostscript.com/">GhostScript</a> (binäre Windows-Version) und <a href="http://ghost4j.sourceforge.net/">ghost4j</a> als Java-Brücke zum Rendern der <span class="caps">PDF</span>-Datei in Images</li>
		<li><a href="http://www.imagemagick.org/">ImageMagick</a> (binäre Windows-Version) und Java-Brücke <a href="http://im4java.sourceforge.net/">im4java</a> zum Herunterrechnen der von GhostScript extrahierten Images</li>
		<li><a href="http://http://poi.apache.org/">Apache <span class="caps">POI</span></a> zum Erstellen der <span class="caps">PPTX</span>-Dokumente (Pure Java-Bibliothek)</li>
	</ul>

	<p><strong>Ich bitte zu beachten:</strong></p>

	<ul>
		<li>Die aktuelle Version ist noch fast völlig <em>ungetestet</em> und kann, muss aber nicht, zum gewünschten Erfolg führen.</li>
		<li>Aufgrund der relativ vielen externen Bibliotheken und deren Requirements ist das Programm sehr groß: 21,6 MB. Dies mag für ein solch kleines Tool übertrieben erscheinen, war allerdings der einfachste Weg für mich, möglichst schnell etwas zu entwickeln, das einigermaßen vernünftige Ergebnisse liefert</li>
	</ul>

	<p>Zusätzlich gilt: Ich hatte nur den oben genannten Use-Case im Sinne; die erstellte <span class="caps">PDF</span>-Datei besteht aus einer Aneinanderreihung von Bildern &#8211; enthaltene Texte etc. können nicht mit PowerPoint-Mitteln editiert werden!</p>

	<p>Ansonsten wünsche ich viel Erfolg bei der Verwendung.</p>

	<p>/edit:<br />
Jetzt habe ich tatsächlich doch noch ein (Freeware-)Tool gefunden, das denselben Job erledigt wie meines (und dabei evtl. schon etwas stabiler und auf jeden Fall viel kleiner ist): <a href="http://soft.rubypdf.com/software/pdf2ppt/pdf2ppt-acrobat-free">PDF2PPT von RubyPDF Technologies</a>. Nun &#8211; wer in den Kommentaren eine vergleichende Evaluation posten möchte, immer gern ;-)</p>]]>
</description>
<link>http://www.dominic-scheurer.de/studium/21/pdf2ppt</link>
<pubDate>Fri, 09 Mar 2012 08:43:34 GMT</pubDate>
<dc:creator>Dominic Scheurer</dc:creator>
<guid isPermaLink="false">tag:www.dominic-scheurer.de,2012-03-08:9ca5a82446678c37a8e3d47e1a5f3a41/9f060269abcd5fe84b2501a44e696ade</guid>
</item>
<item><title>Automatische Aktualisierung von DynDNS-Adresse und Eintragung in Windows-Firewall</title>
<description>
<![CDATA[<p>Folgender Fall: Aus Sicherheitsgründen soll der zugelassene IP-Bereich für den Zugriff auf einen Webserver per <acronym title="Remote Desktop Protocol"><span class="caps">RDP</span></acronym> mit der Windows-Firewall eingeschränkt werden. Das Problem ist, dass nur die wenigsten Internet-Nutzer über eine eigene feste IP zu Hause verfügen.</p>

	<p>Die Lösung: Einrichten einer <strong>dynamischen Internet-Adresse per DynDNS</strong> und eine <strong>automatische Aktualisierung des Eintrags in der Firewall mit einem Batch-Skript</strong>, das dann per Cronjob regelmäßig ausgeführt wird. Glücklicherweise werden damit auch nur Windows-Bordmittel benötigt (neben der DynDNS-Adresse). Auch wenn ich hier keine detaillierte Sicherheitsanalyse anbieten kann, bin ich doch überzeugt, dass dieser Ansatz pragmatisch ist und eine höhere Sicherheit gewährleistet als die Unterlassung einer IP-Bereichs-Einschränkung.</p>

	<p>Das folgende Skript sieht die Einbindung einer einzelnen festen IP-Adresse vor, für den Fall, dass ein Zugriffsberechtigter über eine solche verfügt. Falls dies nicht der Fall ist, lässt sich dies leicht wieder entfernen.</p>

<pre><code>@echo off
</code></pre>

<pre><code>REM --------------- KONFIGURATION ---------------
SET DynAddr=your-name.dyndns.org
SET StaticIP=123.123.123.123
REM ------------- ENDE KONFIGURATION ------------
</code></pre>

<pre><code>echo Skript zur Aufloesung der IP der DynDNS-
echo Adresse und Eintragung in die Firewall
echo.
</code></pre>

<pre><code>FOR /F &quot;tokens=3 delims= &quot; %%A IN (&#39;nslookup %DynAddr%
↳ ^| findstr &quot;[0-9].[0-9].[0-9].[0-9]&quot;&#39;) DO SET
↳ ResolvedIP=%%A
echo IP: %ResolvedIP%
</code></pre>

<pre><code>netsh advfirewall firewall set rule name=&quot;Remotedesktop
↳ (TCP eingehend)&quot; new remoteip=%StaticIP%/32,
↳ %ResolvedIP%/32
</code></pre>

	<p>Der Knackpunkt ist das Herumexperimentieren mit dem <code>netsh</code>-Befehl &#8211; für mich persönlich war allerdings der lästige Teil die Sache mit der <code>for</code>-Schleife, die an sich nur einen Substring extrahiert. Workarounds, die man erst lange suchen muss, wenn man sonst keine Batch-Skripte schreibt&#8230;</p>

	<p>Wenn ein Fehler enthalten ist, bitte schreibt mir &#8211; ich benutze die paar Zeilen schließlich selbst auch ;-)</p>

	<p>Hier nochmal die Datei zum Download: <a href="http://www.dominic-scheurer.de/file_download/4/DynDNS_FW_Rewrite.bat">DynDNS_FW_Rewrite.bat [0,00MB]<br />
(109 mal heruntergeladen)<br />
</a></p>]]>
</description>
<link>http://www.dominic-scheurer.de/arbeit/20/automatische-aktualisierung-von-dyndns-adresse-in-windows-firewall</link>
<pubDate>Wed, 26 Oct 2011 10:06:55 GMT</pubDate>
<dc:creator>Dominic Scheurer</dc:creator>
<guid isPermaLink="false">tag:www.dominic-scheurer.de,2011-10-26:9ca5a82446678c37a8e3d47e1a5f3a41/043bcc2d34bd6100ed8ef17209bb89a5</guid>
</item>
<item><title>Grundlagen der Modellierung und Simulation</title>
<description>
<![CDATA[<p>Während des Lernens für die Veranstaltung <strong>Grundlagen der Modellierung und Simulation</strong> (Einführung in Computational Engineering) habe ich eine recht ausführliche Zusammenfassung erstellt, die ich hiermit der Öffentlichkeit zur Verfügung stellen möchte. Die Inhalte sind den Folien zur Veranstaltung entnommen. Enthalten sind unter anderem die Themen</p>

	<ul>
		<li>Differentialgleichungen
	<ul>
		<li>Gewöhnliche und partielle Differentialgleichungen</li>
		<li>Transformation auf 1. Ordnung, Autonomisierung</li>
		<li>Lösbarkeit</li>
		<li>Variation der Konstanten</li>
	</ul></li>
		<li>Grundbegriffe der Simulation</li>
		<li>Diskrete Modellierung und Simulation
	<ul>
		<li>Ereignisgesteuerte Simulation</li>
		<li>Petrinetze</li>
	</ul></li>
		<li>Zeitkontinuierliche Modellierung und Simulation
	<ul>
		<li>Allgemeine, lineare Systemdynamik</li>
		<li>Linearisierung um Ruhelagen</li>
		<li>Steife Systeme</li>
		<li>&#8230;</li>
	</ul></li>
		<li>Numerische Simulation
	<ul>
		<li>Gleitpunktzahlen</li>
		<li>Numerische Lösung nichtlinearer Differentialgleichungen
	<ul>
		<li>Euler-Verfahren (explizit/implizit)</li>
		<li>Heun-Verfahren</li>
	</ul></li>
	</ul></li>
		<li>Teilschritte einer Simulationsstudie</li>
		<li>Modulare Modellbildung</li>
	</ul>

	<p><a href="http://www.dominic-scheurer.de/file_download/3/CEZusammenfassung.pdf">CE-Zusammenfassung [1,19MB]<br />
(472 mal heruntergeladen)<br />
</a></p>

	<p><strong>Changelog</strong>:</p>

	<ul>
		<li>Erweiterung des Modellbegriffs (Auszug aus Probeklausur)</li>
		<li>Ergänzung zur mathematischen Modellierung von Petrinetzen</li>
		<li>Kleine Typographiefehler behoben</li>
		<li>Kleine Ergänzung zur Relaxationsmatrix beim Fixpunktverfahren; Zeichensetzungsfehler behoben</li>
	</ul>]]>
</description>
<link>http://www.dominic-scheurer.de/studium/18/grundlagen-der-modellierung-und-simulation</link>
<pubDate>Wed, 02 Mar 2011 17:23:40 GMT</pubDate>
<dc:creator>Dominic Scheurer</dc:creator>
<guid isPermaLink="false">tag:www.dominic-scheurer.de,2011-03-02:9ca5a82446678c37a8e3d47e1a5f3a41/382d03d5c48ad7a060eaf232802e5ab1</guid>
</item>
<item><title>Redeanalyse: Vorgehensweise, Gliederung</title>
<description>
<![CDATA[<p>Erstaunlicherweise ist eines meiner populärsten Suchergebnisse bei Google ein <span class="caps">PDF</span>-Dokument, dass ich in der 10. Klasse erstellt und auf meinen neuen Webspace migriert habe: Ein <strong>Leitfaden zur Redeanalyse</strong> mit den Themen</p>

	<ul>
		<li>Vorgehensweise</li>
		<li>Gliederung</li>
		<li>Texttypische Kommunikationssituation</li>
		<li>Stilmittel</li>
	</ul>

	<p>Da dieses Dokument offensichtlich recht gefrage ist (<a href="http://www.dominic-scheurer.de/file_download/2/redeanalyse_rindphi.pdf">5897 Downloads</a>), möchte ich es hiermit erneut kommunizieren.</p>

	<p>Download: <a href="http://www.dominic-scheurer.de/file_download/2/redeanalyse_rindphi.pdf">Leitfaden zur Redeanalyse</a></p>]]>
</description>
<link>http://www.dominic-scheurer.de/z-literaturempfehlungen/17/redeanalyse-vorgehensweise-gliederung</link>
<pubDate>Wed, 13 Oct 2010 14:50:32 GMT</pubDate>
<dc:creator>Dominic Scheurer</dc:creator>
<guid isPermaLink="false">tag:www.dominic-scheurer.de,2010-10-13:9ca5a82446678c37a8e3d47e1a5f3a41/26738501d93d8b8a76b332c8d3e6c7fc</guid>
</item>
<item><title>ASP.NET: Einen Web-Service nutzen mit WSDL-File und Proxy-Klasse</title>
<description>
<![CDATA[<p><span class="caps">ASP</span>.NET ist für mich Neuland. Geschäftlich habe ich mich lange mit der Programmierung unter &#8220;Classic&#8221; <span class="caps">ASP</span> beschäftigt, Skriptsprache JScript, und wer sich damit auskennt, wird verstehen, warum ich sehr begeistert von <span class="caps">ASP</span>.NET bin ;-)</p>

	<p>Es kostete mich dennoch etwas Einarbeitungszeit, erfolgreich einen Web-Service unter Verwendung einer von diesem Service bereitgestellten <strong><acronym title="Web Services Description Language"><span class="caps">WSDL</span></acronym><sup class="footnote"><a href="http://www.dominic-scheurer.de/#fn12078597524ca33b8a12b2b">1</a></sup>-Datei</strong> mit <strong><span class="caps">ASP</span>.NET</strong> (Skriptsprache C#) unter dem Microsoft-Webserver <strong><acronym title="Internet Information Services"><span class="caps">IIS</span></acronym></strong> anzusprechen und nutzen zu können.</p>

	<p>Daher dieses kleine Tutorial. Ich werde kurz erklären:</p>

	<ul>
		<li>Was man zum Ansprechen eines Web-Services unter <span class="caps">ASP</span>.NET <strong>benötigt</strong></li>
		<li>Wie man zum Webservice passende <strong>Proxyklassen</strong> erzeugt und kompiliert</li>
		<li>Wie man mittels der neu erstellen Proxyklassen auf den Web-Service <strong>zugreift</strong></li>
	</ul>

	<h2>Voraussetzungen</h2>

	<p>Benötigt werden</p>

	<ul>
		<li>das Microsoft .NET Framework</li>
		<li>das &#8220;Microsoft Windows <span class="caps">SDK</span> for Windows 7 and .NET Framework&#8221;<sup class="footnote"><a href="http://www.dominic-scheurer.de/#fn7600486514ca33b8a1387a">2</a></sup> in der zum Framework passenden Version</li>
		<li>ein beliebiger Quelltexteditor<sup class="footnote"><a href="http://www.dominic-scheurer.de/#fn19551267724ca33b8a138c1">3</a></sup></li>
	</ul>

	<h2>Proxyklassen</h2>

	<p>Proxyklassen erleichtern den Zugriff auf den Web-Service, indem sie eine <strong>objektorientierte Schnittstelle</strong> bieten. Praktischerweise gibt es im oben angeführten <acronym title="Software Development Kit"><span class="caps">SDK</span></acronym> ein Programm &#8220;wsdl.exe&#8221;, das diese automatisch generieren kann! Das Took liegt im Bin-Verzeichnis des <span class="caps">SDK</span>s, also beispielsweise &#8220;C:\Program Files\Microsoft <span class="caps">SDK</span>s\Windows\v7.1\Bin\wsdl.exe&#8221;. Eine genauere Übersicht über die Möglichkeiten von wsdl.exe und das Erstellen von Proxyklassen findet sich im OpenBook von Galileo Press zu <span class="caps">ASP</span>.NET<sup class="footnote"><a href="http://www.dominic-scheurer.de/#fn15496066214ca33b8a13c67">4</a></sup>.</p>

	<p>Ein Beispielaufruf des Tools ist<br />
<code>wsdl /l:cs /n:myWebServiceConsumer /o:proxyklasse.cs http://www.domain.tl/webservice.asmx?WSDL</code>,<br />
wobei <code>/l:cs</code> besagt, dass die Zielsprache C# sein soll. Ebenso denkbar ist z.B. <code>/l:vb</code> für VB.NET; ich finde VB (Visual Basic) aber sehr hässlich ;-). Der Name für die Proxyklasse, unter dem sie später verwendet wird, ist als <code>myWebServiceConsumer</code> angegeben und kann beliebig variiert werden &#8211; man sollte ihn sich nur merken. Das Hauptargument ist die <span class="caps">URL</span> zur <span class="caps">WSDL</span>-Beschreibung des Web-Services.</p>

	<p>Das Ergebnis dieses Aufrufes ist die Datei &#8220;proxyklasse.cs&#8221;, deren Namen unabhängig vom angegebenen Namen (Namespace) der Proxyklasse über den Parameter <code>/o</code> angegeben werden kann.</p>

	<p>Nun muss die Proxyklasse nur noch <strong>kompiliert</strong> werden. Dazu liefert das .NET-Framework den C#-Compiler csc, der bei mir unter &#8220;C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe&#8221; liegt. Ein möglicher Aufruf ist<br />
<code>csc /t:library /out:myWebServiceConsumer.dll /r:System.dll 
/r:System.Xml.dll /r:System.Web.Services.dll proxyklasse.cs</code></p>

	<p>Das Ergebnis ist die <acronym title="Dynamic Link Library"><span class="caps">DLL</span></acronym>-Datei myWebServiceConsumer.dll: Unsere fertig kompilierte Proxyklasse, die wir im nächsten Schritt direkt einbinden können.</p>

	<h2>Einbindung</h2>

	<p>Benutzt werden kann die im letzten Schritt erstellte Proxyklasse, indem sie in den bin-Ordner der <span class="caps">IIS</span>-Site kopiert wird, in der sie verwendet werden soll. Der Ordner &#8220;bin&#8221; muss gegebenenfalls neu erstellt werden. Bei einer Standardkonfiguration der Site werden die dort enthaltenen Bibliotheken automatisch geladen. Ich empfehle, die Site über den <span class="caps">IIS</span>-Manager neu zu starten, um sicherzugehen, dass die Proxyklasse auch geladen wird.</p>

	<p>Die Klasse kann nun in einer aspx-Datei, in der sie benötigt wird, mit der Direktive</p>

<pre><code>&lt;%@ Import Namespace=&quot;myWebServiceConsumer&quot; %&gt;
</code></pre>

	<p>eingebunden werden. Danach kann man objektorientiert auf den Web-Service zugreifen; besitzt dieser bspw. eine Klasse <code>StringPrinter</code> mit der Methode <code>printSomeString()</code>, kann einfach eine neue Instanz angelegt und auf die Methode zugegriffen werden:<br />
<code>StringPrinter sp = new StringPrinter(); sp.printSomeString();</code></p>

	<p>Auskunft darüber, welche Klassen und Methoden der Web-Service und damit die Proxyklasse zur Verfügung stellt, erhält man entweder über die Dokumentation des Web-Services, über den Inhalt der <span class="caps">WSDL</span>-Datei (diese liegt im <acronym title="Extensible Markup Language"><span class="caps">XML</span></acronym>-Format vor und kann mit einem Browser gelesen werden) oder über den Quelltext der Proxyklasse selbst, also über die Datei &#8220;proxyklasse.cs&#8221;.</p>

	<h2>Fußnoten</h2>

	<p id="fn12078597524ca33b8a12b2b" class="footnote"><sup>1</sup> <a href="http://de.wikipedia.org/wiki/WSDL">http://de.wikipedia.org/wiki/WSDL</a></p>

	<p id="fn7600486514ca33b8a1387a" class="footnote"><sup>2</sup> Version 3.5 <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;displaylang=en">Download von Microsoft</a></p>

	<p id="fn19551267724ca33b8a138c1" class="footnote"><sup>3</sup> Der Quelltexteditor ist wirklich beliebig, Windows Notepad genügt vollkommen. Praktischer und auch kostenlos ist allerdings <a href="http://www.microsoft.com/germany/express/products/web.aspx">Microsoft Visual Web Developer 2010 Express</a></p>

	<p id="fn15496066214ca33b8a13c67" class="footnote"><sup>4</sup> <a href="http://openbook.galileocomputing.de/asp/asp160002.htm">OpenBook zu <span class="caps">ASP</span>.NET</a></p>]]>
</description>
<link>http://www.dominic-scheurer.de/arbeit/16/aspnet-einen-web-service-nutzen-mit-wsdl-file-und-proxy-klasse</link>
<pubDate>Wed, 29 Sep 2010 13:12:22 GMT</pubDate>
<dc:creator>Dominic Scheurer</dc:creator>
<guid isPermaLink="false">tag:www.dominic-scheurer.de,2010-09-25:9ca5a82446678c37a8e3d47e1a5f3a41/03ca9281fe6831c4b5a41ed2d0629626</guid>
</item></channel>
</rss>

