<?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>Allgemein &#8211; Karl Jepertinger IT Consulting</title>
	<atom:link href="https://www.jepertinger-itconsulting.de/category/allgemein/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.jepertinger-itconsulting.de</link>
	<description>Consultant as a Service!</description>
	<lastBuildDate>Wed, 08 Aug 2018 08:09:37 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.1</generator>
	<item>
		<title>Sphinx: Unexpected unindent</title>
		<link>https://www.jepertinger-itconsulting.de/2018/08/08/sphinx-unexpected-unindent/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Wed, 08 Aug 2018 20:58:31 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://www.jepertinger-itconsulting.de/?p=873</guid>

					<description><![CDATA[Sphinx ist das Standardtool zur Dokumentation von Python Code. Sphinx liest direkt DocStrings aus dem Quellcode aus und bereitet dabei eine Dokumentation auf. Ideal wäre es wenn das natürlich ganz ohne Änderungen am Code oder der Dokumentation abläuft und man &#8230; <a href="https://www.jepertinger-itconsulting.de/2018/08/08/sphinx-unexpected-unindent/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Sphinx ist das Standardtool zur Dokumentation von Python Code. Sphinx liest direkt DocStrings aus dem Quellcode aus und bereitet dabei eine Dokumentation auf.</p>
<p>Ideal wäre es wenn das natürlich ganz ohne Änderungen am Code oder der Dokumentation abläuft und man nicht noch mehr syntatktische Regeln beachten muss.</p>
<blockquote><p>WARNING: Block quote ends without a blank line; unexpected unindent.</p></blockquote>
<p>Diese Fehlermeldung sagt allerdings etwas anderes. Dies ist ein Warning das Sphinx beim Kommando &#8222;make html&#8220; ausgespuckt hat.</p>
<p>Ursache dafür war dieser Docstring mit Einrückungen:</p>
<pre class="brush: python; title: ; notranslate">

def dummyfunction():

'''Das ist ein langer Kommentar mit mehreren Punkten:

   - Punkt1 : Lorem ipsum
     dolor il

   - Punkt2: ....

'''

....

</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>GIT-Cheatsheet</title>
		<link>https://www.jepertinger-itconsulting.de/2017/10/08/git-cheatsheet/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Sun, 08 Oct 2017 16:23:29 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tortoise]]></category>
		<category><![CDATA[versionsverwaltung]]></category>
		<guid isPermaLink="false">https://www.jepertinger-itconsulting.de/?p=820</guid>

					<description><![CDATA[Wer bereits mit den Grundsätzen der Versionsverwaltung in SVN vertraut ist, wird sich auch in GIT schnell zurecht finden. Einer der Hauptunterschiede ist, dass nun jeder zur Working-Copy auch noch das komplette Repository lokal hält. Änderungen am Code werden also &#8230; <a href="https://www.jepertinger-itconsulting.de/2017/10/08/git-cheatsheet/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Wer bereits mit den Grundsätzen der Versionsverwaltung in SVN vertraut ist, wird sich auch in GIT schnell zurecht finden. Einer der Hauptunterschiede ist, dass nun jeder zur Working-Copy auch noch das komplette Repository lokal hält.</p>
<p>Änderungen am Code werden also erst an das lokale Repository und dann an ein entferntes verteilt. Deswegen sind auch die Begrifflichkeiten für SVN-Umsteiger erst verwirrend.</p>
<h3>Wichtige GIT-Begriffe im Schnellcheck:</h3>
<p><span id="more-820"></span></p>
<ul>
<li><em>clone</em><br />
Kopieren/checkout eines entfernten Repositories (komplettes Repository wird kopiert)</li>
<li><em>add</em><br />
Dateien der GIT-Verwaltung im lokalen Repository hinzufügen.</li>
<li><em>commit</em><br />
Änderungen an Dateien im lokalen Repository festschreiben.</li>
<li><em>push</em><br />
Die Commits des eigenen Repositories in ein entferntes Repository schreiben. Im SVN-Jargon ist dies ein &#8222;commit&#8220;.</li>
<li><em>pull</em><br />
Update des lokalen Repositories mit Änderungen aus dem entfernten Repo (fetch+ merge). Im SVN-Jargon ist dies ein &#8222;update&#8220;.</li>
<li><em>fetch</em><br />
Nur Download der Änderungen, kein automatischer Merge</li>
<li><em>merge</em><br />
Zusammenführen verschiedener Zweige (zb. Änderungen aus entferntem Repo mit eigenen Änderungen)</li>
<li><em>stash</em><br />
temporäres, lokales Speichern eines Arbeitsstandes (wichtig z.B. vor Pull mit Änderungen an eigenen Dateien)</li>
</ul>
<h3>Links:</h3>
<p>Walkthrough: <a href="https://rogerdudler.github.io/git-guide/index.de.html" target="_blank" rel="noopener">https://rogerdudler.github.io/git-guide/index.de.html</a><br />
Best Practises: <a href="http://sethrobertson.github.io/GitBestPractices/" target="_blank" rel="noopener">http://sethrobertson.github.io/GitBestPractices/</a><br />
Stashes: <a href="http://de.gitready.com/beginner/2009/01/10/stashing-your-changes.html" target="_blank" rel="noopener">http://de.gitready.com/beginner/2009/01/10/stashing-your-changes.html</a><br />
Grafischer Client: <a href="https://git-scm.com/download/win" target="_blank" rel="noopener">https://git-scm.com/download/win</a> + <a href="https://tortoisegit.org/" target="_blank" rel="noopener">https://tortoisegit.org/</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Neue Downloads verfügbar!</title>
		<link>https://www.jepertinger-itconsulting.de/2017/02/15/neue-downloads-verfuegbar/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Wed, 15 Feb 2017 18:23:35 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://www.jepertinger-itconsulting.de/?p=736</guid>

					<description><![CDATA[Ab sofort finden Sie im Download Bereich das neue Tool &#8222;jeperti.Mailer&#8220; zum Versand von EMails  &#8211; schnell und einfach. z.B. aus der Kommandozeile heraus.]]></description>
										<content:encoded><![CDATA[<p>Ab sofort finden Sie im Download Bereich das neue Tool <a href="https://www.jepertinger-itconsulting.de/jeperti-mailer/">&#8222;jeperti.Mailer&#8220;</a> zum Versand von EMails  &#8211; schnell und einfach. z.B. aus der Kommandozeile heraus.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Extension Methods vs. Reflection</title>
		<link>https://www.jepertinger-itconsulting.de/2015/04/21/extension-methods-vs-reflection/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Tue, 21 Apr 2015 09:11:23 +0000</pubDate>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://www.jepertinger-itconsulting.de/?p=547</guid>

					<description><![CDATA[Reflection bezeichnet (nicht nur im .Net Bereich) die Möglichkeit, zur Laufzeit die Metainformationen einer Anwendung zu nutzen. Fragestellungen wie &#8222;Wieviele Properties hat die Klasse?&#8220; können beantwortet werden, ohne dass die reflektierte Klasse zur Programmierzeit bekannt ist/war. Für die alltägliche Businesslogik &#8230; <a href="https://www.jepertinger-itconsulting.de/2015/04/21/extension-methods-vs-reflection/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Reflection bezeichnet (nicht nur im .Net Bereich) die Möglichkeit, zur Laufzeit die Metainformationen einer Anwendung zu nutzen. Fragestellungen wie &#8222;Wieviele Properties hat die Klasse?&#8220; können beantwortet werden, ohne dass die reflektierte Klasse zur Programmierzeit bekannt ist/war. Für die alltägliche Businesslogik eignet sich Reflection nur bedingt &#8211;  wohl aber für allerlei Querschnittsaufgaben. Auditing, Logging oder dynamische Oberflächen werden damit möglich.<span id="more-547"></span></p>
<p>Extension Methods wurden mit .Net 3.5 eingeführt und erlauben es einen Type zu erweitern ohne von ihm abzuleiten. So können bequem sogar &#8222;sealed&#8220; Types wie System.String erweitert werden &#8211; z.B. um eigene Substring Funktionen. Eine ebenfalls sehr nützliche Funktionalität ist es (generische) Interfaces mit konkretem Code zu hinterlegen, ohne alle Ableitungen des Interfaces zu überarbeiten zu müssen. Eine Extension Method zu IList erweitert also sofort alle Klassen die darauf aufbauen.</p>
<p>Das alles macht im ersten Moment den Eindruck einer <a title="Mehrfachvererbung in Wikipedia" href="https://de.wikipedia.org/wiki/Mehrfachvererbung" target="_blank">Mehrfachvererbung</a>. Das suggeriert auch Visual Studio, indem es die Extension- mit den Instanz-Methoden zusammen anzeigt:<a href="http://www.jepertinger-itconsulting.de/wp-content/uploads/2015/03/extensionmethod_multipleinheritance_visualstudio.jpg" rel="lightbox-0"><img loading="lazy" class="aligncenter wp-image-554 size-full" src="http://www.jepertinger-itconsulting.de/wp-content/uploads/2015/03/extensionmethod_multipleinheritance_visualstudio.jpg" alt="extensionmethod_multipleinheritance_visualstudio" width="471" height="174" srcset="https://www.jepertinger-itconsulting.de/wp-content/uploads/2015/03/extensionmethod_multipleinheritance_visualstudio.jpg 471w, https://www.jepertinger-itconsulting.de/wp-content/uploads/2015/03/extensionmethod_multipleinheritance_visualstudio-300x111.jpg 300w" sizes="(max-width: 471px) 100vw, 471px" /></a>In Wirklichkeit handelt es sich aber nur um &#8222;<a title="Syntax Sugar in der Wikipedia" href="https://en.wikipedia.org/wiki/Syntactic_sugar" target="_blank">Syntax Sugar</a>&#8222;, also einer reinen Vereinfachung für den Programmierer &#8211; intern sind das verschiedene Klassen.</p>
<p>Das hat mehrere Konsequenzen:</p>
<ul>
<li>Extension Methods können keine Interfaces implementieren</li>
<li>sie können keine abstracten Methoden ausprogrammieren</li>
<li>per Reflection sind Extensions nicht in der eigentlichen Klasse zu finden</li>
</ul>
<p>Der Versuch die Extension auf normalem Wege per Reflection zu finden scheitert:</p>
<pre class="brush: csharp; highlight: [20]; title: ; notranslate">
MethodInfo method = typeof(MyClass)
   .GetType()
   .GetMethod(&quot;ExtensionMethod&quot;);
Assert.IsNotNull(method); //Dieser Test wird scheitern
</pre>
<p>Die gesuchte Methode ist eben nicht im gleichen Typ definiert, sondern in einer beliebigen anderen Klasse.</p>
<p>Um alle Extension Methods zu einer bestimmten Klasse zu finden, ist es notwendig alle Typen der Assembly (oder AppDomain) nach Methoden zu durchsieben die zum gesuchten Type (&#8222;TypeToSearchFor&#8220;) erfüllen:</p>
<pre class="brush: csharp; highlight: [20]; title: ; notranslate">
var methods = TypeToSearchFor.Assembly
  .GetTypes()
  .Where(t =&gt;
       t.CustomAttributes
       .where(a =&gt; a.AttributeType == typeof(ExtensionAttribute))
       .Count() == 1
       )
  .SelectMany(t =&gt; t.GetMethods())
  .Where(m=&gt;m.IsStatic == true)
  .Where(m =&gt; m.GetParameters().Count() != 0)
  .Where(m =&gt; m.GetParameters()[0].ParameterType == TypeToSearchFor)
  ;
</pre>
<p>Als Anhang befindet sich ein <a href="https://www.jepertinger-itconsulting.de/?download=566" title="Testprojekt" rel="nofollow" class="ddownload-link id-566 ext-zip">Testprojekt</a> mit :</p>
<ul>
<li>BeispielKlasse und Extension dazu</li>
<li>TestProjekt mit Reflection zum Suchen der Methoden</li>
<li>ReflectionHelper Klasse zum Suchen aller Extension Methods</li>
</ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Profiling bei Visual Studio 2013 und lokalem IIS : Website Metabase Fehler</title>
		<link>https://www.jepertinger-itconsulting.de/2015/01/19/profiling-bei-visual-studio-2013-und-lokalem-iis-website-metabase-fehler/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Mon, 19 Jan 2015 20:27:06 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://www.jepertinger-itconsulting.de/?p=525</guid>

					<description><![CDATA[Bei meinem letzten ASP.NET Projekt wollte ich mit dem lokalen IIS und Visual Studio 2013 Professional ein Performance Profiling durchführen. Normalerweise verwendet Visual Studio seinen eigenen IIS Express. Der hat aber diversere Einschränkungen; z.B. kann er keine reinen x64 Anwendungen ausführen. &#8230; <a href="https://www.jepertinger-itconsulting.de/2015/01/19/profiling-bei-visual-studio-2013-und-lokalem-iis-website-metabase-fehler/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Bei meinem letzten ASP.NET Projekt wollte ich mit dem lokalen IIS und Visual Studio 2013 Professional ein Performance Profiling durchführen.</p>
<p>Normalerweise verwendet Visual Studio seinen eigenen IIS Express. Der hat aber diversere Einschränkungen; z.B. kann er keine reinen x64 Anwendungen ausführen. So führt nun der lokal auf Windows 8.1 installierte IIS die Anwendung aus, und Visual Studio übernimmt das Debugging. Ebenso das Performance Profiling muss sich beim IIS bedienen.</p>
<p>Beim Start der Profiling Session gab es folgende Fehlermeldung:</p>
<blockquote><p><a href="http://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Fehler.jpg" rel="lightbox-0"><img loading="lazy" class="  aligncenter wp-image-526 size-full" src="http://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Fehler.jpg" alt="Die Website-Metabase enthält unerwartete Informationen, oder Sie sind nicht berechtigt, auf die Metabase zuzugfreifen. Sie müssen ein Mitglied der Administratorgruppe auf dem lokalen Computer sein, um auf die IIS-Metabasis zuzugreifen. Daher können Sie keine lokale IIS-Website erstellen oder öffnen. Wenn Sie Berechtigungen  zum Lesen, Schreiben und Ändern für den Ordner besitzen, in dem sich die Dateien befinden, können Sie eine Dateisystem-Website erstellen, die auf den Ordner zeigt, um mit dem Vorgang fortzufahren." width="497" height="260" srcset="https://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Fehler.jpg 497w, https://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Fehler-300x157.jpg 300w" sizes="(max-width: 497px) 100vw, 497px" /></a>Die Website-Metabase enthält unerwartete Informationen, oder Sie sind nicht berechtigt, auf die Metabase zuzugfreifen. Sie müssen ein Mitglied der Administratorgruppe auf dem lokalen Computer sein, um auf die IIS-Metabasis zuzugreifen. Daher können Sie keine lokale IIS-Website erstellen oder öffnen. Wenn Sie Berechtigungen  zum Lesen, Schreiben und Ändern für den Ordner besitzen, in dem sich die Dateien befinden, können Sie eine Dateisystem-Website erstellen, die auf den Ordner zeigt, um mit dem Vorgang fortzufahren.</p></blockquote>
<p><span id="more-525"></span></p>
<p>Die Fehlermeldung legt nahe, dass es ein Berechtigungsproblem in meiner MVC Anwendung ist. In Wirklichkeit fehlt aber ein Teil der IIS Installation. Der ist in der Systemsteuerung nachzuinstallieren: System-&gt; Programme -&gt; Windows Features aktivieren oder deaktivieren.</p>
<p><a href="http://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Nachinstallation.jpg" rel="lightbox-1"><img loading="lazy" class="aligncenter wp-image-527 size-full" src="http://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Nachinstallation.jpg" alt="IIS Metabase Fehler Systemsteuerung Nachinstallation" width="462" height="537" srcset="https://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Nachinstallation.jpg 462w, https://www.jepertinger-itconsulting.de/wp-content/uploads/2015/01/IIS_Profiling_Metabase_Nachinstallation-258x300.jpg 258w" sizes="(max-width: 462px) 100vw, 462px" /></a>Installieren Sie &#8222;Kompatiblität mit IIS-Metabasis und IIS 6-Konfiguration&#8220;. Starten Sie dann Visual Studio und das Performance Profiling neu, und der Metabasis Fehler verschwindet.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kommentare komplett in WordPress ausschalten</title>
		<link>https://www.jepertinger-itconsulting.de/2014/10/26/kommentare-komplett-in-wordpress-ausschalten/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Sun, 26 Oct 2014 20:22:58 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://www.jepertinger-itconsulting.de/?p=475</guid>

					<description><![CDATA[Das Abschalten von WordPress-Kommentaren geht eigentlich ganz einfach. Beim Schreiben des Beitrags die Kommentare einfach deaktivieren. Damit ist der Kommentar aber nur bei diesem Beitrag deaktiviert. Schwieriger ist es allerdings für bereits bestehende Beiträge die Kommentare zu deaktivieren und noch &#8230; <a href="https://www.jepertinger-itconsulting.de/2014/10/26/kommentare-komplett-in-wordpress-ausschalten/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Das Abschalten von WordPress-Kommentaren geht eigentlich ganz einfach. Beim Schreiben des Beitrags die Kommentare einfach deaktivieren. Damit ist der Kommentar aber nur bei diesem Beitrag deaktiviert. Schwieriger ist es allerdings für bereits bestehende Beiträge die Kommentare zu deaktivieren und noch schwieriger für Seiten.<span id="more-475"></span></p>
<p>Für Kommentare zu neuen Beiträgen hat WordPress jede Menge Einstellungen:</p>
<p><a href="http://www.jepertinger-itconsulting.de/wp-content/uploads/2014/10/wordpress_kommentare.jpg" rel="lightbox-0"><img loading="lazy" class="alignnone wp-image-476 size-full" src="http://www.jepertinger-itconsulting.de/wp-content/uploads/2014/10/wordpress_kommentare.jpg" alt="wordpress_kommentare" width="952" height="318" srcset="https://www.jepertinger-itconsulting.de/wp-content/uploads/2014/10/wordpress_kommentare.jpg 952w, https://www.jepertinger-itconsulting.de/wp-content/uploads/2014/10/wordpress_kommentare-300x100.jpg 300w" sizes="(max-width: 952px) 100vw, 952px" /></a></p>
<p>Mit der letzten Option (&#8222;Kommentare zu Beiträgen schliessen, die älter als 14 Tage sind&#8220;) lassen sich für alte Beiträge die Funktionen deaktiveren. Das gilt nur leider nicht für alte Seiten/Pages.</p>
<p>Eine Möglichkeit ist es nun für jede Seite durch bearbeiten die Kommentare zu deaktivieren, aber mit zunehmender Anzahl ist dies keine Alternative.</p>
<p>Wenn aber die Oberfläche keine weiteren Funktionen bietet, gibt es die Möglichkeit das in der Datenbank direkt zu regeln.</p>
<p>WordPress baut i.d.R. auf einer MySql-Datenbanken auf und speichert darin auch die Seiten und Kommentare. Mit dem folgenden Update Statement, ausgeführt im phpMyAdmin Ihres Webspaces, wird bei allen Seiten die Kommentarfunktion deaktiviert:</p>
<pre class="brush: sql; highlight: [20]; title: ; notranslate">
UPDATE `wp_posts` SET comment_status = 'closed'
where comment_status = 'open'
and post_type = 'page'
and post_parent = 0
</pre>
<p>Als valider Wert für die Set-Klause bietet sich auch &#8222;open&#8220; an, um die Kommentare für alle Seiten wieder zu aktivieren.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>jeperti.web.services.pdf veröffentlicht!</title>
		<link>https://www.jepertinger-itconsulting.de/2014/10/17/jeperti-web-services-pdf-veroeffentlicht/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Fri, 17 Oct 2014 20:53:47 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://www.jepertinger-itconsulting.de/?p=466</guid>

					<description><![CDATA[Unter der Rubrik &#8222;Downloads und Services&#8220; finden Sie den neuen Webservice zur Verarbeitung von PDF-Dokumenten. Dieser Service ist für Sie frei zu benutzen und lässt sich in Ihre .Net-Projekte integrieren ohne eigene Lösungen zu implementieren. Klicken Sie hier für mehr &#8230; <a href="https://www.jepertinger-itconsulting.de/2014/10/17/jeperti-web-services-pdf-veroeffentlicht/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.jepertinger-itconsulting.de/wp-content/uploads/2014/10/application-pdf-2.png" rel="lightbox-0"><img loading="lazy" class="alignleft wp-image-470 size-full" src="http://www.jepertinger-itconsulting.de/wp-content/uploads/2014/10/application-pdf-2.png" alt="application-pdf-2" width="128" height="128" /></a>Unter der Rubrik &#8222;<a title="Downloads und Services" href="http://www.jepertinger-itconsulting.de/downloads-und-services/">Downloads und Services</a>&#8220; finden Sie den neuen Webservice zur Verarbeitung von PDF-Dokumenten. Dieser Service ist für Sie frei zu benutzen und lässt sich in Ihre .Net-Projekte integrieren ohne eigene Lösungen zu implementieren.</p>
<p>Klicken Sie hier für <a title="jeperti.web.services.pdf" href="http://www.jepertinger-itconsulting.de/jeperti-web-services-pdf/">mehr</a> Informationen!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Windows Update Fehler 80072EFD</title>
		<link>https://www.jepertinger-itconsulting.de/2014/06/11/windows-update-fehler-80072efd/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Wed, 11 Jun 2014 21:33:57 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">http://www.jepertinger-itconsulting.de/?p=342</guid>

					<description><![CDATA[Das Upgrade von Windows Server 2008R2 auf Windows Server 2012 R2 hat gut funktioniert. Abgesehen davon, dass bei dem Upgrade auf IIS 8 die Konfiguration nochmals zu erstellen war, hielten die Änderungen sich im Rahmen des Erwarteten (z.B. Software wie &#8230; <a href="https://www.jepertinger-itconsulting.de/2014/06/11/windows-update-fehler-80072efd/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Das Upgrade von Windows Server 2008R2 auf Windows Server 2012 R2 hat gut funktioniert. Abgesehen davon, dass bei dem Upgrade auf IIS 8 die Konfiguration nochmals zu erstellen war, hielten die Änderungen sich im Rahmen des Erwarteten (z.B. Software wie <a title="Visual SVN Server" href="http://www.visualsvn.com/server" target="_blank">Visual SVN Server</a> upgraden).</p>
<p>Was allerdings nicht zu erwarten war, Microsoft Update funktionierte nicht mehr:</p>
<p><a href="http://www.jepertinger-itconsulting.de/wp-content/uploads/2014/06/windows_update_80072EFD.jpg" rel="lightbox-0"><img loading="lazy" class="aligncenter wp-image-343 size-full" src="http://www.jepertinger-itconsulting.de/wp-content/uploads/2014/06/windows_update_80072EFD.jpg" alt="windows_update_80072EFD" width="534" height="128" srcset="https://www.jepertinger-itconsulting.de/wp-content/uploads/2014/06/windows_update_80072EFD.jpg 534w, https://www.jepertinger-itconsulting.de/wp-content/uploads/2014/06/windows_update_80072EFD-300x71.jpg 300w" sizes="(max-width: 534px) 100vw, 534px" /></a><span id="more-342"></span>Zum Fehlercode 80072EFD finden sich im Internet viele mögliche Fehlerursachen:</p>
<ul>
<li>fehlerhafte Internetverbindung</li>
<li>Firewalls</li>
<li>Tuning Tools</li>
<li>Konfiguration/Treiber der Netzwerkkarte</li>
</ul>
<p>Es finden sich auch Anleitungen um den Fehler zu beseitigen:</p>
<ul>
<li><a href="http://windows.microsoft.com/de-de/windows/windows-update-error-80072efd#1TC=windows-7" target="_blank">Windows Update Fehler 80072EFD</a></li>
<li><a href="http://www.mcseboard.de/topic/166188-auf-allen-servern-windows-update-fehler-fehler-80072efd/" target="_blank">Update Cache löschen</a></li>
</ul>
<p>Als weitere Fehlerursachen kommen weiterhin in Betracht:</p>
<ul>
<li>Konfiguration von DNS; DNS Weiterleitungen</li>
<li>DNS Server</li>
<li>Standard-Gateway</li>
<li>Proxy-Konfiguration</li>
<li>Router und deren Firewalls, Routing etc.</li>
</ul>
<p>In diesem Fall war das alles in Ordnung. Der Test mit Netzwerk-Sniffern wie <a href="http://www.telerik.com/fiddler" target="_blank">Fiddler2</a> zeigte, dass die Verbindung grundsätzlich aufgebaut wurde &#8211; also DNS und Gateways richtig waren &#8211; aber die SSL Verbindung nicht zustande kam.</p>
<p>Eine nicht zustande gekommene Verbindung kann viele Ursachen haben &#8211; Probleme mit Root-Zertifikaten, eine verstellte Systemzeit oder nicht unterstützte Cipher Suites.</p>
<p>Die Cipher Suites lassen sich mit <a href="https://www.nartac.com/Products/IISCrypto/" target="_blank">IISCrypto </a>einstellen um so den Server zu härten &#8211; z.B. für <a href="http://de.wikipedia.org/wiki/Forward_Secrecy" target="_blank">Forward Secrecy</a>. Dafür waren alle unsicheren Protokolle (z.B. <a href="https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.3.pdf" target="_blank">SSLv2</a> ) und auch Cipher Suites ohne Foward Secrecy deaktiviert.</p>
<p>Auf der anderen Seite offenbart ein Test von <a href="https://www.ssllabs.com" target="_blank">SSLLabs </a>auf die Adresse <a href="https://www.ssllabs.com/ssltest/analyze.html?d=update.microsoft.com&amp;s=65.55.163.221" target="_blank">update.microsoft.com</a>, dass diese Server dahinter nur eine sehr begrenzte Zahl von Cipher Suiten &#8211; darunter keine einzige mit FS &#8211; anbieten.<br />
Beim Abfragen der Updates bietet der Update Server also seine Auswahl an Cipher Suites an, von denen der durch IISCrypto konfigurierte Server alle ablehnt. So scheitert der Handshake beim Aufbauen der Verbindung.</p>
<p>Wie ist dier Fehler also nun zu beheben ? Durch Freigabe der entpsrechenden Cipher Suites, die der Microsoft Server anbietet:</p>
<ul>
<li>TLS_RSA_WITH_RC4_128_SHA</li>
<li>TLS_RSA_WITH_AES_128_CBC_SHA256</li>
<li>TLS_RSA_WITH_AES_256_CBC_SHA256</li>
<li>TLS_RSA_WITH_AES_256_CBC_SHA</li>
<li>TLS_RSA_WITH_AES_128_CBC_SHA</li>
<li>TLS_RSA_WITH_3DES_EDE_CBC_SHA</li>
</ul>
<p>Damit funktioniert dann auch Microsoft Update wieder. Nicht nur die Updates laufen wieder, auch die Server unter msdn.microsoft.com und weitere sind ähnlich konfiguriert und verursachten im Internet Explorer Verbindungsprobleme.</p>
<p>Um Probleme mit Microsoft Update zu überbrücken oder offline zu installieren empfiehlt sich <a href="http://www.wsusoffline.net/" target="_blank">WsusOffline</a>.<br />
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- WindowsFehler --><br />
<ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-9420011762624649" data-ad-slot="6473887217" data-ad-format="auto"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Component Properties</title>
		<link>https://www.jepertinger-itconsulting.de/2011/01/10/component-properties-2/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Mon, 10 Jan 2011 09:50:00 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://blog.jepertinger-itconsulting.de/?p=95</guid>

					<description><![CDATA[Eine der vielen Möglichkeiten von NHibernate sind Component Properties. Das sind Klassen die mehrere Properties zusammenfassen, die dann wiederrum als Property in anderen Klassen verwendet werden können. Das ist vor allem dann sinnvoll, wenn es mehrere Entities/Tabellen gibt, die die &#8230; <a href="https://www.jepertinger-itconsulting.de/2011/01/10/component-properties-2/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Eine der vielen Möglichkeiten von NHibernate sind Component Properties.</p>
<p>Das sind Klassen die mehrere Properties zusammenfassen, die dann wiederrum als Property in anderen Klassen verwendet werden können. Das ist vor allem dann sinnvoll, wenn es mehrere Entities/Tabellen gibt, die die gleichen Properties/Spalten beeinhalten.<br />
Ich benutze das sehr gerne für Spalten die Änderungs- oder Löschinformationen o.ä. abzulegen.</p>
<p>Wir starten mit einer einfachen Klasse: Primary Key, zwei Strings, und besagte Component Property. Natürlich nur mit der minimalen Attributierung. Hervorgehoben ist die ComponentProperty, die gleich noch definiert wird.</p>
<pre class="brush: csharp; highlight: [20]; title: ; notranslate">
[NHibernate.Mapping.Attributes.Class]
 public class Employee
 {
  public Employee()
  {
    DeletedInformation = new DeletedComponent();
  }

 [NHibernate.Mapping.Attributes.Id(TypeType = typeof(Int64), Name = &quot;Id&quot;)]
 [NHibernate.Mapping.Attributes.Generator(Class = &quot;native&quot;)]
 public virtual long Id { get; set; }

 [NHibernate.Mapping.Attributes.Property]
 public virtual string Firstname { get; set; }

 [NHibernate.Mapping.Attributes.Property]
 public virtual string Lastname { get; set; }

 [NHibernate.Mapping.Attributes.ComponentProperty]
 public virtual DeletedComponent DeletedInformation { get; set; }
 }
</pre>
<p>Und hier die Definition der Komponente, bestehend aus zwei Nullable Properties. Diese Komponente lässt sich nun in jeder Klasse als Property hinzufügen, und erweitert deren Datenbanktabelle um zwei Spalten (siehe Create Statement). Am einfachsten funktioniert es, wenn eine gemeinsame Oberklasse besteht, in der die Property definiert wird.</p>
<pre class="brush: csharp; title: ; notranslate">

[NHibernate.Mapping.Attributes.Component]
public class DeletedComponent
{
[NHibernate.Mapping.Attributes.Property]
public DateTime? DeletedOn{ get; set; }

[NHibernate.Mapping.Attributes.Property]
public string UserName { get; set; }
}

</pre>
<p>Aus diesen beiden Klassen lässt sich nun folgendes Create Statement generieren . Hervorgehoben ist wieder die Component-Property.</p>
<pre class="brush: sql; highlight: [5,6]; title: ; notranslate">
create table Employee (
Id INT IDENTITY NOT NULL,
Firstname NVARCHAR(255) null,
Lastname NVARCHAR(255) null,
DeletedOn DATETIME null,
UserName NVARCHAR(255) null,
primary key (Id));

</pre>
<p>Fertig!</p>
<p>Auf eins möchte ich hinweisen.<br />
Im folgenden Programm wird ein Employee erzeugt, abgespeichert und sofort wieder geladen.</p>
<pre class="brush: csharp; title: ; notranslate">

Employee emp = new Employee();
 emp.Firstname = &quot;Heinz&quot;;
 emp.Lastname = &quot;Huber&quot;;
 emp.Save();

 emp = Employee.GetByPK(emp.Id);
 if (emp.DeletedInformation == null)
 throw new NullReferenceException();

</pre>
<p>Da die beiden Properties der Komponente nicht gefüllt waren, ist jetzt die ganze DeletedInformation-Property im Employee null. Und das obwohl der Konstruktor in der Employee Klasse eben genau das verhindern sollte.<br />
Wer das nicht haben möchte (z.B. ich) ändert einfach die Spaltendefinition so, dass Default-Werte abgespeichert werden :</p>
<pre class="brush: csharp; highlight: [6,10]; title: ; notranslate">
[NHibernate.Mapping.Attributes.Component]
    public class DeletedComponent
    {
        public DeletedComponent()
        {
            DeletedOn = DateTime.MaxValue;
        }

        [NHibernate.Mapping.Attributes.Property]
        public DateTime DeletedOn { get; set; }

        [NHibernate.Mapping.Attributes.Property]
        public string UserName { get; set; }
    }
</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SQLite und NHibernate</title>
		<link>https://www.jepertinger-itconsulting.de/2010/12/16/sqlite-und-nhibernate/</link>
		
		<dc:creator><![CDATA[Karl Jepertinger]]></dc:creator>
		<pubDate>Thu, 16 Dec 2010 18:49:53 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">http://jepertinger-itconsulting.de/wordpress/?p=7</guid>

					<description><![CDATA[Nicht immer hat man in den Projekten die Möglichkeit einen großen SQL Server oder Oracle zu benutzen. Für diese Fälle gibt es das ganze eine Nummer kleiner: SQLite. Das funktioniert ganz ohne Serverdienste, die Datenbank besteht aus einer Datei. Natürlich &#8230; <a href="https://www.jepertinger-itconsulting.de/2010/12/16/sqlite-und-nhibernate/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Nicht immer hat man in den Projekten die Möglichkeit einen großen SQL Server oder Oracle zu benutzen.<br />
Für diese Fälle gibt es das ganze eine Nummer kleiner: SQLite.</p>
<p>Das funktioniert ganz ohne Serverdienste, die Datenbank besteht aus einer Datei. Natürlich hat diese Einfachheit auch seine Einschränkungen, die auf der <a href="http://www.sqlite.org">Hersteller Seite</a> dokumentiert sind (<a href="http://www.sqlite.org/limits.html">Limitations</a>).</p>
<p>Nun gilt es SQLite mit NHibernate zusammen zum Laufen zu bringen.<br />
Der erste Treffer bei Google fördert <a href="http://community.jboss.org/wiki/DatabasessupportedbynHibernate">diesen</a> Link aus dem Jboss Wiki zutage, der auch schon die wichtigsten Konfigurationsdetails liefert :</p>
<pre class="brush: xml; highlight: [4]; title: ; notranslate">
...
&lt;property name=&quot;connection.provider&quot;&gt; NHibernate.Connection.DriverConnectionProvider &lt;/property&gt;
&lt;property name=&quot;connection.driver_class&quot;&gt; NHibernate.Driver.SQLiteDriver &lt;/property&gt;
&lt;property name=&quot;connection.connection_string&quot;&gt; Data Source=sqlite.db3;Version=3 &lt;/property&gt;
&lt;property name=&quot;dialect&quot;&gt; NHibernate.Dialect.SQLiteDialect &lt;/property&gt;
&lt;property name=&quot;query.substitutions&quot;&gt; true=1;false=0 &lt;/property&gt;
...
</pre>
<p>Leider ist der Link zu den Treibern auf Sourceforge wohl schon veraltet, bzw das Projekt wird nicht mehr gepflegt.</p>
<p><a href="http://sourceforge.net/projects/sqlite-dotnet2/">Dieser</a> Link ist der richtige, und führt auch zu einem gepflegten Projekt. Also einfach die Dateien herunterladen, und die System.Data.SQLite.DLL ins Projekt einbinden.</p>
<p>Die Konfiguration wird noch geringfügig modifiziert:</p>
<pre class="brush: xml; highlight: [3]; title: ; notranslate">
...
&lt;property name=&quot;connection.provider&quot;&gt; NHibernate.Connection.DriverConnectionProvider &lt;/property&gt;
&lt;property name=&quot;connection.driver_class&quot;&gt; NHibernate.Driver.SQLite20Driver &lt;/property&gt;
&lt;property name=&quot;connection.connection_string&quot;&gt; Data Source=sqlite.db3;Version=3 &lt;/property&gt;
&lt;property name=&quot;dialect&quot;&gt; NHibernate.Dialect.SQLiteDialect &lt;/property&gt;
...
</pre>
<p>Als Datenbankdatei reicht es eine leere Datei mit dem entsprechenden Namen zu erzeugen  &#8211;  und es kann losgehen.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
