<?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: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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>BigBastis Blog</title>
	
	<link>http://blog.bigbasti.com</link>
	<description>About Me &amp; my Digital Lifestyle</description>
	<lastBuildDate>Sat, 30 Mar 2013 15:50:03 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/bigbasti/yEFJ" /><feedburner:info uri="bigbasti/yefj" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Clover: Tabs für den Windows Explorer</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/pO6pwWwP9Qg/</link>
		<comments>http://blog.bigbasti.com/clover-tabs-fur-den-windows-explorer/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 08:56:40 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Gut zu Wissen]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2223</guid>
		<description><![CDATA[Ich glaube schon seit Windows 98 habe ich mich gefragt, warum Microsoft dem Windows Explorer keine Tabs spendiert. Auch Apple bekommt es unter Mac OS nicht hin den Finder Tab-Fähig zu machen. Warum eigentlich nicht? Clover zeigt wie es gehen könnte. Dieses einfache kleine Tool kombiniert alle Windows Explorer Fenster unter einem Dach und lässt sich dabei so flüssig bedienen, dass es schon fast wie eine native Lösung wirkt. Auf den ersten Blick fällt sofort auf, dass hier einige Teile vom Google Chrome eingeflossen sind. So gleicht das Look and Feel der Tabs und auch deren Bedienung bis ins Detail dem von Chrome. Alles ist super Flüssig und funktioniert komplett ohne Konfiguration [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.bigbasti.com/uploads/clover_screenshot1.png"><img class="aligncenter  wp-image-2228" alt="clover_screenshot" src="http://blog.bigbasti.com/uploads/clover_screenshot1.png" width="518" height="372" /></a></p>
<p>Ich glaube schon seit Windows 98 habe ich mich gefragt, warum Microsoft dem Windows Explorer keine Tabs spendiert. Auch Apple bekommt es unter Mac OS nicht hin den Finder Tab-Fähig zu machen. Warum eigentlich nicht?</p>
<p>Clover zeigt wie es gehen könnte. Dieses einfache kleine Tool kombiniert alle Windows Explorer Fenster unter einem Dach und lässt sich dabei so flüssig bedienen, dass es schon fast wie eine native Lösung wirkt.</p>
<p>Auf den ersten Blick fällt sofort auf, dass hier einige Teile vom Google Chrome eingeflossen sind. So gleicht das Look and Feel der Tabs und auch deren Bedienung bis ins Detail dem von Chrome. Alles ist super Flüssig und funktioniert komplett ohne Konfiguration sofort so wie man es gewohnt ist.</p>
<p>So lassen sich neue Tabs mit STRG+T öffnen und mit STRG+TAB durchschalten. Mit einem Doppelklick während man die STRG-Taste gedrückt hält wird der gewählte Ordner in einem neuen Tab geöffnet. Die Tabs selbst integrieren sich in die Titelleiste des Fensters und verbrauchen so gut wie keinen Platz.</p>
<p>Optional kann man auch noch (wie auch im Chrome) eine Lesezeichenleiste einblenden lassen, in der man seine Lieblingsordner speichern kann. Ich finde aber, dass es die Optik etwas stört.</p>
<p>Das Icon des Programms könnt ihr ebenfalls verändern, wenn euch das Kleeblatt nicht zusagt. Eine Anleitung dafür gibts auf der Homepage des Entwicklers.</p>
<p><a href="http://ejie.me/clover-wings-for-explorer" target="_blank">Weitere Infos und Download</a>.</p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2223&amp;md5=0f118ececeef62ae6a74da74d59e02dd" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2223&amp;md5=0f118ececeef62ae6a74da74d59e02dd" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/pO6pwWwP9Qg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/clover-tabs-fur-den-windows-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fclover-tabs-fur-den-windows-explorer%2F&amp;language=de_DE&amp;category=text&amp;title=Clover%3A+Tabs+f%C3%BCr+den+Windows+Explorer&amp;description=Ich+glaube+schon+seit+Windows+98+habe+ich+mich+gefragt%2C+warum+Microsoft+dem+Windows+Explorer+keine+Tabs+spendiert.+Auch+Apple+bekommt+es+unter+Mac+OS+nicht+hin+den+Finder+Tab-F%C3%A4hig...&amp;tags=.NET%2CComputer%2CWindows%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/clover-tabs-fur-den-windows-explorer/</feedburner:origLink></item>
		<item>
		<title>iPhone Webapp-Links nicht im Safari öffnen</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/7u_8ScuGYaM/</link>
		<comments>http://blog.bigbasti.com/iphone-webapp-links-nicht-im-safari-offnen/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 10:29:50 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Gut zu Wissen]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2203</guid>
		<description><![CDATA[iOS bietet euch eine nette Funktion mit der ihr Webseiten als Verknüpfung auf eurem Homescreen ablegen könnt. Wenn ihr eure Seite darauf noch etwas vorbereitet, könnt ihr sogar euer eigenes Logo hinterlegen und auch die Webseite später im Fullscreen Modus laufen lassen. Dazu müsst ihr lediglich ein paar Ressourcen hinterlegen: &#60;!-- Setzen der Icons für die verschiedenen Auflösungen --&#62; &#60;link rel=&#34;apple-touch-icon-precomposed&#34; sizes=&#34;144x144&#34; href=&#34;/Content/grafik/icons/apple-touch-icon-144-precomposed.png&#34;&#62; &#60;link rel=&#34;apple-touch-icon-precomposed&#34; sizes=&#34;114x114&#34; href=&#34;/Content/grafik/icons/apple-touch-icon-114-precomposed.png&#34;&#62; &#60;link rel=&#34;apple-touch-icon-precomposed&#34; sizes=&#34;72x72&#34; href=&#34;/Content/grafik/icons/apple-touch-icon-72-precomposed.png&#34;&#62; &#60;link rel=&#34;apple-touch-icon-precomposed&#34; href=&#34;/Content/grafik/icons/apple-touch-icon-57-precomposed.png&#34;&#62; &#60;!-- sorgt dafür dass die App im Vollbild ausgeführt wird --&#62; &#60;meta name=&#34;apple-mobile-web-app-capable&#34; content=&#34;yes&#34;&#62; &#60;!-- Farbe der Statuszeile --&#62; &#60;meta name=&#34;apple-mobile-web-app-status-bar-style&#34; content=&#34;black&#34;&#62; Safari erkennt dann diese Tags und zeigt euer Icon und führt die Seite dann [...]]]></description>
				<content:encoded><![CDATA[<p>iOS bietet euch eine nette Funktion mit der ihr Webseiten als Verknüpfung auf eurem Homescreen ablegen könnt. Wenn ihr eure Seite darauf noch etwas vorbereitet, könnt ihr sogar euer eigenes Logo hinterlegen und auch die Webseite später im Fullscreen Modus laufen lassen.</p>
<p>Dazu müsst ihr lediglich ein paar Ressourcen hinterlegen:</p>
<pre class="brush: html; ">

    &lt;!-- Setzen der Icons für die verschiedenen Auflösungen --&gt;
    &lt;link rel=&quot;apple-touch-icon-precomposed&quot; sizes=&quot;144x144&quot; href=&quot;/Content/grafik/icons/apple-touch-icon-144-precomposed.png&quot;&gt;
    &lt;link rel=&quot;apple-touch-icon-precomposed&quot; sizes=&quot;114x114&quot; href=&quot;/Content/grafik/icons/apple-touch-icon-114-precomposed.png&quot;&gt;
    &lt;link rel=&quot;apple-touch-icon-precomposed&quot; sizes=&quot;72x72&quot; href=&quot;/Content/grafik/icons/apple-touch-icon-72-precomposed.png&quot;&gt;
    &lt;link rel=&quot;apple-touch-icon-precomposed&quot; href=&quot;/Content/grafik/icons/apple-touch-icon-57-precomposed.png&quot;&gt;
    &lt;!-- sorgt dafür dass die App im Vollbild ausgeführt wird --&gt;
    &lt;meta name=&quot;apple-mobile-web-app-capable&quot; content=&quot;yes&quot;&gt;
    &lt;!-- Farbe der Statuszeile --&gt;
    &lt;meta name=&quot;apple-mobile-web-app-status-bar-style&quot; content=&quot;black&quot;&gt;


</pre>
<p>Safari erkennt dann diese Tags und zeigt euer Icon und führt die Seite dann auch im Vollbildmodus aus. Ein weiteres Goodie ist, dass die Webseite als "App" läuft und im Taskmanager sogar ein eigenes Icon bekommt.</p>
<p>Hier am Beispiel meiner kleinen F1-Tippspiel Seite:</p>
<a href="http://blog.bigbasti.com/iphone-webapp-links-nicht-im-safari-offnen/#gallery-2203-1-slideshow">Anklicken um </a>
<p><strong>Der Haken</strong><br />
Ein kleines Problem bleibt dann aber noch. Sobald ihr einen Link auf die Seite setzt und der Benutzer diesen antippt wird der Link ein einer neuen Safari Instanz geöffnet. Das Liegt daran, dass iOS euere Seite als App betrachtet und alle Links werden in iOS vom Safari behandelt.</p>
<p>Zum Glück kann man dieses Verhalten sehr einfach mit etwas Javascript umgehen:</p>
<pre class="brush: javascript; ">

&lt;script&gt;(function(a,b,c){if(c in b&amp;&amp;b[c]){var d,e=a.location,f=/^(a|html)$/i;a.addEventListener(&quot;click&quot;,function(a){d=a.target;while(!f.test(d.nodeName))d=d.parentNode;&quot;href&quot;in d&amp;&amp;(d.href.indexOf(&quot;http&quot;)||~d.href.indexOf(e.host))&amp;&amp;(a.preventDefault(),e.href=d.href)},!1)}})(document,window.navigator,&quot;standalone&quot;)&lt;/script&gt;

</pre>
<p>Weitere Infos und Quelle zu der Lösung findet ihr bei <a href="http://stackoverflow.com/questions/2898740/iphone-safari-web-app-opens-links-in-new-window" target="_blank">Stackoverflow</a>.</p>
<p>Nun werden alle Links in eurer "App" geöffnet und alles funktioniert wie gewohnt <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2203&amp;md5=eb1f0083b6a9b01a8ce472eda9079dff" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2203&amp;md5=eb1f0083b6a9b01a8ce472eda9079dff" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/7u_8ScuGYaM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/iphone-webapp-links-nicht-im-safari-offnen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fiphone-webapp-links-nicht-im-safari-offnen%2F&amp;language=de_DE&amp;category=text&amp;title=iPhone+Webapp-Links+nicht+im+Safari+%C3%B6ffnen&amp;description=iOS+bietet+euch+eine+nette+Funktion+mit+der+ihr+Webseiten+als+Verkn%C3%BCpfung+auf+eurem+Homescreen+ablegen+k%C3%B6nnt.+Wenn+ihr+eure+Seite+darauf+noch+etwas+vorbereitet%2C+k%C3%B6nnt+ihr+sogar+euer+eigenes...&amp;tags=Apple%2CHTML5%2CInternet%2CJavaScript%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/iphone-webapp-links-nicht-im-safari-offnen/</feedburner:origLink></item>
		<item>
		<title>Nice 2 Know: Razor ViewEngine ausserhalb von MVC nutzen</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/kAychOrUxEY/</link>
		<comments>http://blog.bigbasti.com/nice-2-know-razor-viewengine-ausserhalb-von-mvc-nutzen/#comments</comments>
		<pubDate>Tue, 29 Jan 2013 07:53:41 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Gut zu Wissen]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2186</guid>
		<description><![CDATA[Wenn ihr ASP.NET MVC ab Version 3 schon mal benutzt habt dann wird euch die Razor ViwEngine kein Fremdword mehr sein. Oft kommt man aber gar nicht drauf, dass man diese praktische Templating-Engine auch außerhalb von MVC benutzen kann. So kann man dieses Feature super gebrauchen wenn die App E-Mails versenden soll und man größere E-Mail Templates nutzen will. Das Schöne an der Razor Engine ist, dass man diese sehr einfach integrieren kann und der Code sehr verständlich und sauber bleibt. Die Installation erfolgt hier wie so oft sehr einfach über NuGet: Jetzt ist man im Grunde schon fertig und kann sofort loslegen. Starten wir mit dem Model, das die [...]]]></description>
				<content:encoded><![CDATA[<p>Wenn ihr ASP.NET MVC ab Version 3 schon mal benutzt habt dann wird euch die Razor ViwEngine kein Fremdword mehr sein. Oft kommt man aber gar nicht drauf, dass man diese praktische Templating-Engine auch außerhalb von MVC benutzen kann.</p>
<p>So kann man dieses Feature super gebrauchen wenn die App E-Mails versenden soll und man größere E-Mail Templates nutzen will. Das Schöne an der Razor Engine ist, dass man diese sehr einfach integrieren kann und der Code sehr verständlich und sauber bleibt.</p>
<p>Die Installation erfolgt hier wie so oft sehr einfach über NuGet:</p>
<p><a href="http://blog.bigbasti.com/uploads/nuget_razorengine.png"><img class="aligncenter size-full wp-image-2187" title="nuget_razorengine" src="http://blog.bigbasti.com/uploads/nuget_razorengine.png" alt="" width="439" height="84" /></a></p>
<p>Jetzt ist man im Grunde schon fertig und kann sofort loslegen. Starten wir mit dem Model, das die Razor Engine für uns verarbeiten wird. Dies ist eine gewöhnliche Klasse (POCO):</p>
<pre class="brush: csharp; ">

public class TipReminder
{
	public string DisplayName { get; set; }

	public string EmailAdress { get; set; }

	public DateTime LastLogin { get; set; }
}

</pre>
<p>Jetzt legen wir uns ein kleines Template an, das den Inhalt der Email darstellen soll:</p>
<pre class="brush: html; ">

@model Projekt.Domain.AppUser
&lt;!DOCTYPE html&gt;

&lt;head&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; /&gt;
    &lt;title&gt;Newsletter&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div&gt;
        &lt;h2&gt;Hallo @Model.DisplayName&lt;/h2&gt;
        &lt;p&gt;Es ist wieder Zeit für einen Newsletter&lt;/p&gt;
        &lt;p&gt;Dein letzter Login war am @Model.LastLogin - das ist schon lange her!&lt;/p&gt;
        &lt;p&gt;Schau doch mal wieder vorbei.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;Bitte antworten Sie nicht auf diese EMail&lt;/p&gt;
        &lt;p&gt;Viel Spaß weiterhin!&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;

</pre>
<p>Man beachte hier besonders die Zeilen 10 und 12 wo wir auf das Model zugreifen.</p>
<p>Wenn ihr ASP.NET MVC 3 oder 4 schon mal genutzt habt, werdet ihr feststellen, dass alles exakt der Syntax einer View gleicht, sogar die Definition der strickten Typisierung auf das Model oben.</p>
<p>Die eigentliche Nutzung ist dann ein Kinderspiel:</p>
<pre class="brush: csharp; ">

foreach (AppUser user in db.Users)
{
    string renderedEmail = Razor.Parse(File.ReadAllText(pathToEmailTemplate), user);
    EMailHelper.SendEmail(renderedEmail, user.EmailAdress);
}

</pre>
<p>Wirklich interessant ist hier nur Zeile 3 wo wir den eigentlichen Aufruf an die RazorEngine tätigen. Die Parse-methode benötigt lediglich das Template als String und ein Model zur Verarbeitung.</p>
<p>Das ist ein wirklich praktisches Feature um die Templates auf einfachste Weise aus dem Programm herauszulösen. Das Ganze ist nicht neu (gibt’s schon seit fast 2 Jahren) man muss nur wissen, dass es möglich ist. <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2186&amp;md5=2df4d6db5cb4ac84e161419ae89d3cd9" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2186&amp;md5=2df4d6db5cb4ac84e161419ae89d3cd9" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/kAychOrUxEY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/nice-2-know-razor-viewengine-ausserhalb-von-mvc-nutzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fnice-2-know-razor-viewengine-ausserhalb-von-mvc-nutzen%2F&amp;language=de_DE&amp;category=text&amp;title=Nice+2+Know%3A+Razor+ViewEngine+ausserhalb+von+MVC+nutzen&amp;description=Wenn+ihr+ASP.NET+MVC+ab+Version+3+schon+mal+benutzt+habt+dann+wird+euch+die+Razor+ViwEngine+kein+Fremdword+mehr+sein.+Oft+kommt+man+aber+gar+nicht+drauf%2C+dass+man...&amp;tags=.NET%2CCSharp%2CMicrosoft%2CMVC%2CProgrammierung%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/nice-2-know-razor-viewengine-ausserhalb-von-mvc-nutzen/</feedburner:origLink></item>
		<item>
		<title>Nuetzliche Maven Parameter</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/Ez0Qk6kb-98/</link>
		<comments>http://blog.bigbasti.com/nuetzliche-maven-parameter/#comments</comments>
		<pubDate>Fri, 02 Nov 2012 09:13:05 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2173</guid>
		<description><![CDATA[Maven ist ein sehr mächtiges und praktisches Werkzeug, aber manchmal ist das vordefinierte Verhalten etwas nervig. Glücklicherweise kann man so ziemlich alles über Parameter beeinflussen. Test-Fehler ingnorieren Oft will man alle Testfälle eines Projekts ausführen um einen Überblick zu erhalten, Maven bricht per Default aber nach dem ersten Testfehler ab, dieses Verhalten kann man Maven ganz leicht über diesen Parameter abgewöhnen: mvn test -Dmaven.test.failure.ignore=true Wenn man will kann man dieses Verhalten auch für ein Projekt vorschreiben, sodass es bei jedem Testdurchlauf so bleibt. Dazu definiert man folgendes Plugin: &#60;plugin&#62; &#60;groupId&#62;org.apache.maven.plugins&#60;/groupId&#62; &#60;artifactId&#62;maven-surefire-plugin&#60;/artifactId&#62; &#60;configuration&#62; &#60;testFailureIgnore&#62;true&#60;/testFailureIgnore&#62; &#60;/configuration&#62; &#60;/plugin&#62; Tests beim install überspringen Standardmäßig führt Maven beim install auch alle Tests aus und bricht bei [...]]]></description>
				<content:encoded><![CDATA[<p>Maven ist ein sehr mächtiges und praktisches Werkzeug, aber manchmal ist das vordefinierte Verhalten etwas nervig. Glücklicherweise kann man so ziemlich alles über Parameter beeinflussen.</p>
<p><strong>Test-Fehler ingnorieren</strong></p>
<p>Oft will man alle Testfälle eines Projekts ausführen um einen Überblick zu erhalten, Maven bricht per Default aber nach dem ersten Testfehler ab, dieses Verhalten kann man Maven ganz leicht über diesen Parameter abgewöhnen:</p>
<pre>mvn test -Dmaven.test.failure.ignore=true</pre>
<p>Wenn man will kann man dieses Verhalten auch für ein Projekt vorschreiben, sodass es bei jedem Testdurchlauf so bleibt. Dazu definiert man folgendes Plugin:</p>
<pre class="brush: xml; ">

  &lt;plugin&gt;
    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
    &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
    &lt;configuration&gt;
      &lt;testFailureIgnore&gt;true&lt;/testFailureIgnore&gt;
    &lt;/configuration&gt;
  &lt;/plugin&gt;

</pre>
<p><strong>Tests beim install überspringen</strong></p>
<p>Standardmäßig führt Maven beim install auch alle Tests aus und bricht bei dem ersten nicht bestandenen Test den install ab. Dies kann je nach Projektbröße auch eine ganze Weile dauern. So kann es viel Zeit sparen wenn man die Tests weglässt. Dieses einfache Kommando hilft uns hier aus:</p>
<pre>mvn install -Dmaven.test.skip=true</pre>
<p>Habt ihr noch nützliche Maven Parameter? Lasst es mich wissen. .)</p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2173&amp;md5=d719dcb5c2f71800cb5440d435efe786" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2173&amp;md5=d719dcb5c2f71800cb5440d435efe786" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/Ez0Qk6kb-98" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/nuetzliche-maven-parameter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fnuetzliche-maven-parameter%2F&amp;language=de_DE&amp;category=text&amp;title=Nuetzliche+Maven+Parameter&amp;description=Maven+ist+ein+sehr+m%C3%A4chtiges+und+praktisches+Werkzeug%2C+aber+manchmal+ist+das+vordefinierte+Verhalten+etwas+nervig.+Gl%C3%BCcklicherweise+kann+man+so+ziemlich+alles+%C3%BCber+Parameter+beeinflussen.+Test-Fehler+ingnorieren+Oft+will+man...&amp;tags=Java%2CMaven%2CProgrammierung%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/nuetzliche-maven-parameter/</feedburner:origLink></item>
		<item>
		<title>ASP.NET MVC: Aktuellen Menülink hervorheben</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/4F2xjGtAvMQ/</link>
		<comments>http://blog.bigbasti.com/asp-net-mvc-aktuellen-menulink-hervorheben/#comments</comments>
		<pubDate>Mon, 08 Oct 2012 18:06:57 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2146</guid>
		<description><![CDATA[Dieses "Problem" müsste eigentlich jeder kennen der schon mein eine Webseite mit mehreren Bereichen erstellt hat. Wie kann ich den Menüpunkt der aktuell angezeigten Seite hervorheben? Hier gibt es viele Ansätze. Ich hatte schon Seiten, die die CSS Klassen ins HTML hardcoden, irgendwelche anderen Schandtaten betreiben oder nicht wirklich schöne If-Abfragen um die Menüpunkte legen. &#60;li @if (activeMenu.Equals(&#34;Home&#34;)) { &#60;text&#62;class=&#34;active&#34;&#60;/text&#62; }&#62;@Html.ActionLink(&#34;Home&#34;, &#34;index&#34;, &#34;home&#34;)&#60;/li&#62; Hier muss man natürlich noch bedenken, dass ein entsprechender ViewBag-Eintrag namens "activeMenu" in jeder Action gesetzt werden muss. urgs Ich möchte diese ganze Logik nicht in den Views haben. Daher habe ich eine kleine ExtensionMethot für den HtmlHelper geschrieben. Diese Extension generiert für mich die Menülinks und prüft [...]]]></description>
				<content:encoded><![CDATA[<p>Dieses "Problem" müsste eigentlich jeder kennen der schon mein eine Webseite mit mehreren Bereichen erstellt hat. Wie kann ich den Menüpunkt der aktuell angezeigten Seite hervorheben?</p>
<p>Hier gibt es viele Ansätze. Ich hatte schon Seiten, die die CSS Klassen ins HTML <a href="http://en.wikipedia.org/wiki/Hard_coding" target="_blank">hardcoden</a>, irgendwelche <a href="http://developerstyle.posterous.com/highlighting-current-page-in-mvc-3-slick-tric" target="_blank">anderen Schandtaten</a> betreiben oder nicht wirklich schöne If-Abfragen um die Menüpunkte legen.</p>
<pre class="brush: csharp; ">

            &lt;li @if (activeMenu.Equals(&quot;Home&quot;))
                {
                    &lt;text&gt;class=&quot;active&quot;&lt;/text&gt;
                }&gt;@Html.ActionLink(&quot;Home&quot;, &quot;index&quot;, &quot;home&quot;)&lt;/li&gt;

</pre>
<p>Hier muss man natürlich noch bedenken, dass ein entsprechender ViewBag-Eintrag namens "activeMenu" in jeder Action gesetzt werden muss. urgs</p>
<p>Ich möchte diese ganze Logik nicht in den Views haben. Daher habe ich eine kleine ExtensionMethot für den HtmlHelper geschrieben.</p>
<p>Diese Extension generiert für mich die Menülinks und prüft beim Generieren des Links ob das Ziel des Links mit dem aktuellen Controller und der aktuellen View übereinstimmt. Wenn das der Fall ist wird dieser Link als aktiv markiert. So sieht das Ganze aus:</p>
<pre class="brush: csharp; ">

public static MvcHtmlString NavigationActionLink(
    this HtmlHelper htmlHelper, string linkText,
    string actionName, string controllerName, object routeValues = null,
    object htmlAttributes = null, 
    string wrapperElement = &quot;li&quot;, string flag = &quot;active&quot;)
{
    var generatedLink = HtmlHelper.GenerateLink(
                    htmlHelper.ViewContext.RequestContext,
                    htmlHelper.RouteCollection, linkText,
                    (string)null, actionName, controllerName,
                    new RouteValueDictionary(routeValues), 
                    (IDictionary&lt;string, object&gt;)HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));

    var wrappedElement = WrapGeneratedLink(
                    htmlHelper, actionName, 
                    controllerName, wrapperElement, flag, generatedLink);

    return MvcHtmlString.Create(wrappedElement.ToString(TagRenderMode.Normal));
}

private static TagBuilder WrapGeneratedLink(
    HtmlHelper htmlHelper, string actionName, string controllerName,
    string wrapper, string flag, string generatedLink)
{
    var wrapperElement = new TagBuilder(wrapper)
                                {
                                    InnerHtml = generatedLink
                                };

    if (CurrentRouteMatchesGeneratedUrl(actionName, controllerName, htmlHelper))
    {
        wrapperElement.AddCssClass(flag);
    }
    return wrapperElement;
}

private static bool CurrentRouteMatchesGeneratedUrl(
    string actionName, string controllerName, HtmlHelper htmlHelper)
{
    var currentAction = (string)htmlHelper.ViewContext.RouteData.Values[&quot;action&quot;];
    var currentController = (string)htmlHelper.ViewContext.RouteData.Values[&quot;controller&quot;];

    return string.Equals(currentAction, actionName, 
                        StringComparison.CurrentCultureIgnoreCase) &amp;amp;&amp;amp;
            string.Equals(currentController, controllerName, 
                        StringComparison.CurrentCultureIgnoreCase);
}

</pre>
<p><a href="http://d.pr/i/xfww" target="_blank">Hier der Code</a> nochmal etwas schöner formatiert.</p>
<p>Dieser Helper orientiert sich an dem gewöhnlichen ActionLink und hat die gleichen Parameter bis auf die letzten zwei, mit denen man bestimmen kann wie der Link hervorgehoben werden soll.</p>
<p>So könnte man nun die Menülinks verwenden am Beispiel Twitter Bootstrap:</p>
<pre class="brush: html; ">

&lt;div class=&quot;navbar navbar-inverse navbar-fixed-top&quot;&gt;
    &lt;div class=&quot;navbar-inner&quot;&gt;
        &lt;div class=&quot;container&quot;&gt;
            &lt;div class=&quot;nav-collapse&quot;&gt;
                &lt;ul class=&quot;nav&quot;&gt;
                @Html.NavigationActionLink(&quot;meinlink&quot;, &quot;index&quot;, &quot;home&quot;)
                @Html.NavigationActionLink(&quot;meinlink&quot;, &quot;index&quot;, &quot;account&quot;, null, null, &quot;div&quot;, &quot;selected&quot;)
                &lt;/ul&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;    

</pre>
<p>So würde der erste Link folgendes generieren:</p>
<pre class="brush: html; ">

&lt;li class=&quot;active&quot;&gt;&lt;a href=&quot;/&quot;&gt;meinlink&lt;/a&gt;&lt;/li&gt;

</pre>
<p>Und der zweite Link das hier:</p>
<pre class="brush: html; ">

&lt;div class=&quot;selected&quot;&gt;&lt;a href=&quot;/&quot;&gt;meinlink&lt;/a&gt;&lt;/div&gt;

</pre>
<p>Auf diese Weise kann mann etwas Einfluss darauf nehmen was da generiert wird und mit welcher Klasse das erzeugte Feld markiert wird.</p>
<p>Der zweite Link macht natürlich keinen Sinn in dem Twitter Bootstrap Beispiel und wurde nur zu Demonstrationszwecken genutzt <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So entfernt man den hässlichen Code aus den Views und muss sich darum keinen Kopf mehr machen.</p>
<p>Übrigens: In dem meisten Fällen reicht es wenn man nur nach dem Controller prüft, da häufig mehrere Actions zu einem Menüpunkt gehören und man dann einen Menüpunkt mit einem Controller abdeckt.</p>
<p><strong>Wie macht ihr das?</strong></p>
<p>Wie ist eure Methode um diese kleine Problematik zu lösen? Habt ihr vielleicht einen schöneren/einfacheren Ansatz? Dann würde ich mich sehr freuen wenn ihr mich belehren würdet <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2146&amp;md5=d8484451fd207552e84a5611d0e47040" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2146&amp;md5=d8484451fd207552e84a5611d0e47040" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/4F2xjGtAvMQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/asp-net-mvc-aktuellen-menulink-hervorheben/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fasp-net-mvc-aktuellen-menulink-hervorheben%2F&amp;language=de_DE&amp;category=text&amp;title=ASP.NET+MVC%3A+Aktuellen+Men%C3%BClink+hervorheben&amp;description=Dieses+%22Problem%22+m%C3%BCsste+eigentlich+jeder+kennen+der+schon+mein+eine+Webseite+mit+mehreren+Bereichen+erstellt+hat.+Wie+kann+ich+den+Men%C3%BCpunkt+der+aktuell+angezeigten+Seite+hervorheben%3F+Hier+gibt+es+viele...&amp;tags=.NET%2Casp.net%2CMVC%2CProgrammierung%2CTutorials%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/asp-net-mvc-aktuellen-menulink-hervorheben/</feedburner:origLink></item>
		<item>
		<title>App.net – der Neue auf dem Schulhof</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/ecCgSJOpeAw/</link>
		<comments>http://blog.bigbasti.com/app-net-der-neue-auf-dem-schulhof/#comments</comments>
		<pubDate>Fri, 05 Oct 2012 11:16:32 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[App.Net]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[app.net]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2132</guid>
		<description><![CDATA[Ich konnte meine Neugier doch nicht unter Kontrolle halten und habe mich auch bei dem neuen Twitter Konkurrenten registriert. Hier berichte ich von meinen ersten Erfahrungen und meinem Eindruck von dem Dienst. Twitter mit Geschäftsmodell  Es ist DAS Problem, das Twitter, Facebook und alle anderen Dienste haben, wie mache ich Geld damit? Dieses Problem scheint bei App.net sich gar nicht zu stellen, denn jeder Nutzer muss eine jährliche oder monatliche Gebühr zahlen um den Dienst nutzen zu können. Das finde ich persönlich sehr gut, denn das löst ziemlich viele Probleme, nicht nur aus der Sicht der Betreiber und Entwickler. Das Feeling Wenn man App.net nutzt erinnert das einen an die Anfänge von [...]]]></description>
				<content:encoded><![CDATA[<p>Ich konnte meine Neugier doch nicht unter Kontrolle halten und habe mich auch bei dem neuen Twitter Konkurrenten registriert. Hier berichte ich von meinen ersten Erfahrungen und meinem Eindruck von dem Dienst.</p>
<p><strong>Twitter mit Geschäftsmodell </strong></p>
<p>Es ist DAS Problem, das Twitter, Facebook und alle anderen Dienste haben, wie mache ich Geld damit? Dieses Problem scheint bei App.net sich gar nicht zu stellen, denn jeder Nutzer muss eine jährliche oder monatliche Gebühr zahlen um den Dienst nutzen zu können.</p>
<p>Das finde ich persönlich sehr gut, denn das löst ziemlich viele Probleme, nicht nur aus der Sicht der Betreiber und Entwickler.</p>
<p><iframe src="http://player.vimeo.com/video/48111032" frameborder="0" width="500" height="281"></iframe></p>
<p><strong>Das Feeling</strong></p>
<p>Wenn man App.net nutzt erinnert das einen an die Anfänge von Twitter, als alles noch neu war und Twitter noch auf das Feedback der Nutzer hörte und zb. Features aus der Community übernahm wie die RT-Funktion.</p>
<p>Man merkt deutlich dass alle noch mit den Möglichkeiten spielen, alles ist sauber und aufgeräumt, keine (oder kaum) SEO-Agenturen und Bots die einem sofort followen, wenn man das falsche Buzzword <del>twittert</del> postet. Aber das wird sicherlich auch noch folgen <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Vorteile von App.net</strong></p>
<p>Bereits nach kurzer Nutzung, fällt auf, dass es auf App.net zivilisierter zugeht. Ok, das könnte auch daran liegen, dass es erst 23,000 Nutzer gibt, aber ich denke, dass es an dem Bezahlsystem liegt. Denn bei Twitter kann sich jeder 10x Accounts machen, mit denen er dann unnötigen Spam verbreiten oder irgendwelche Bots laufen lassen kann.</p>
<p>Wenn man für jeden Account, der dann auch an eine Kreditkarte gebunden ist Geld zahlen muss wird sich jeder sicherlich fragen ob das wirklich nötig ist und der Aufwand sich überhaupt lohnt.</p>
<p>Ich denke die echten Vorteile werden sich erst später mit der Zeit herauskristallisieren. Und wenn Twitter weiterhin so aggressiv die Dritthersteller absägt und immer mehr Werbung in die Timeline schaltet werden die Leute scharenweise überlaufen.</p>
<p><strong>Die Unterschiede</strong></p>
<p>Das Erste was auffällt ist natürlich das <strong>Zeichenlimit von 256 Zeichen</strong>. Dies verdoppelt fast den Wert von Twitter mit 140 erlaubten Zeichen. Hier bin ich mir ehrlich gesagt nicht sicher ob das wirklich besser ist. (Auch wenn es definitiv die nerdigere Zahl ist <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p>Meine Erfahrung hat jedenfalls gezeigt, dass sich Menschen mehr Gedanken machen wenn sie sich kurz fassen müssen und das ist genau das was Twitter so besonders macht. Man hat alle Infos schnell auf einen schnellen Blick.</p>
<p>Weiterhin fällt auch die sehr <strong>minimalistische Oberfläche</strong> auf, die größtenteils auf Farben verzichtet. Auch wenn es nicht schlecht aussieht, denke ich dass sich hier demnächst vieles ändern wird, da das Ganze noch in den Kinderschuhen steckt.</p>
<p>Alles andere hat wirklich sehr viel Ähnlichkeit mit Twitter, nicht nur optisch auch funktionell:</p>
<p style="text-align: center;"><a href="http://blog.bigbasti.com/uploads/appnet.png"><img class="aligncenter  wp-image-2133" title="appnet" src="http://blog.bigbasti.com/uploads/appnet.png" alt="" width="509" height="154" /></a></p>
<p>Man sieht Funktionen wie "Repost" und "Favorite", was so ziemlich den Funktionen bei Twitter entspricht. Alle Posts die eine Antwort haben kann kann man auch in einer Konversation darstellen. Noch erkennt das System nicht die geposteten Links zu Bildern und Videos wie Twitter es tut, aber ich denke mal es ist nur eine Frage der Zeit.</p>
<p><strong>Clients</strong></p>
<p>Im Vergleich zu Twitter will App.Net Dritthersteller dafür belohnen Software für ihre Plattform zu erstellen. <a href="https://github.com/appdotnet/api-spec/wiki/Directory-of-third-party-devs-and-apps" target="_blank">So gibt es schon diverse Clients für alle Systeme</a>. Es macht sogar der Running-Gag die Runde, dass App.Net mehr Apps hat als User <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Auf dem iPhone gibt es schon diverse Clients die alle im Schnitt 4€ kosten. Auch Browser Plugins und Standalone Programme sind vorhanden. Hier geht es definitiv in die richtige Richtung.</p>
<p><strong>Was ist nicht so toll</strong></p>
<p>Wenn man Twitter kennt gibt es leider nicht viel neues zu entdecken, ein paar Sachen gibt es aber, die man nicht einfach aus Twitter übernehmen kann, und das ist hauptsächlich der Name.</p>
<p>Der Dienst hat leider einen ziemlich nichtssagenden Namen, unter App.Net kann man sich alles mögliche vorstellen. Wie nennt man die Posts die man veröffentlicht? "Tweets" oder "Twittern" sind Begriffe die sich inzwischen richtig eingebürgert haben. Mit so etwas kann App.Net leider nicht dienen.</p>
<p>Wie nennt man nun so ein Statusupdate bei App.Net? Keine Ahnung, manche sprechen von Posts, andere sagen Updates - etwas einheitliches muss her, aber der Name lässt leider nichts schlüssiges zu, denn "Apps" würde man sicherlich falsch verstehen <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Fazit</strong></p>
<p>Bisher hat man mit App.Net ein Twitter ohne Werbung - nicht mehr und nicht weniger. Potential ist definitiv vorhanden und die Entwicklung wird sicherlich rasch vorangehen, denn der Dienst wächst mit knapp 10% pro Tag.</p>
<p>Weiter ins Detail gehen kann ich jetzt noch nicht, da ich einfach zu frisch auf dem System bin, aber das werde ich später gerne noch nachholen <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Seid ihr auch auf App.Net unterwegs? Sagt mir was ihr davon haltet und fügt mich hinzu wenn ihr mögt <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  -&gt; <a href="https://alpha.app.net/bigbasti" target="_blank">@bigbasti</a></p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2132&amp;md5=571b1b3eaf353545beb271fc2c00f6b3" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2132&amp;md5=571b1b3eaf353545beb271fc2c00f6b3" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/ecCgSJOpeAw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/app-net-der-neue-auf-dem-schulhof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fapp-net-der-neue-auf-dem-schulhof%2F&amp;language=de_DE&amp;category=text&amp;title=App.net+%26%238211%3B+der+Neue+auf+dem+Schulhof&amp;description=Ich+konnte+meine+Neugier+doch+nicht+unter+Kontrolle+halten+und+habe+mich+auch+bei+dem+neuen+Twitter+Konkurrenten+registriert.+Hier+berichte+ich+von+meinen+ersten+Erfahrungen+und+meinem+Eindruck+von...&amp;tags=app.net%2CInternet%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/app-net-der-neue-auf-dem-schulhof/</feedburner:origLink></item>
		<item>
		<title>iOS6 Smart App Banner auf eurer Seite nutzen</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/LPQfahXOeL0/</link>
		<comments>http://blog.bigbasti.com/ios6-smart-app-banner-auf-eurer-seite-nutzen/#comments</comments>
		<pubDate>Wed, 08 Aug 2012 11:04:20 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Gut zu Wissen]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[asp.net]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2115</guid>
		<description><![CDATA[Sicherlich kennt ihr diese hässlichen Popups auf größeren Seiten wie Welt.de die auch eine (Bezahl-)App im Appstore haben. Diese Popups sind nicht nur unschön, sondern nerven auch extrem! In iOS6 will Apple das Ganze nun etwas verschönern und bietet den Webseiten an ein Banner über dem Seiteninhalt anzuzeigen, das die gewünschte App inklusive ein paar Informationen wie Bewertung und Hersteller enthält. Wie das aussehen kann seht ihr in dem oberen Screenshot des Safari unter iOS6. Statt einem Popup zeigt ted.com den neuen Banner an. Implementierung Wenn ihr eure Seite auch mit einer App verknüpfen wollt könnt ihr das ziemlich einfach gestalten: &#60;meta name=&#34;apple-itunes-app&#34; content=&#34;app-id=%APPID%, app-argument=%APPPARAMETER%&#34;&#62; Ihr bindet einfach den oberen [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.iphoneblog.de/2012/08/08/ted-com-zeigt-unter-ios-6-bereits-einen-smart-app-banner/"><img class="aligncenter  wp-image-2116" title="Bilder von iphoneblog.de" src="http://blog.bigbasti.com/uploads/tedsmartapp.png" alt="Bilder von iphoneblog.de" width="521" height="338" /></a></p>
<p>Sicherlich kennt ihr diese hässlichen Popups auf größeren Seiten wie Welt.de die auch eine (Bezahl-)App im Appstore haben. Diese Popups sind nicht nur unschön, sondern nerven auch extrem!</p>
<p>In iOS6 will Apple das Ganze nun etwas verschönern und bietet den Webseiten an ein Banner über dem Seiteninhalt anzuzeigen, das die gewünschte App inklusive ein paar Informationen wie Bewertung und Hersteller enthält.</p>
<p>Wie das aussehen kann seht ihr in dem oberen Screenshot des Safari unter iOS6. Statt einem Popup zeigt ted.com den neuen Banner an.</p>
<p><strong>Implementierung</strong></p>
<p>Wenn ihr eure Seite auch mit einer App verknüpfen wollt könnt ihr das ziemlich einfach gestalten:</p>
<pre class="brush: html; ">

&lt;meta name=&quot;apple-itunes-app&quot; content=&quot;app-id=%APPID%, app-argument=%APPPARAMETER%&quot;&gt;

</pre>
<p>Ihr bindet einfach den oberen Meta-Tag in eurem Header ein und der mobile Safari erledigt den Rest. Ihr habt hier dabei zwei Parameter zu befüllen, wobei der zweite optional ist.</p>
<p>Die App-ID ist die Id der App im Appstore. Diese findet ihr in der URL der App im iTunes Store:</p>
<blockquote><p><a href="http://itunes.apple.com/de/app/doodle-jump-achtung-hochste/id307727765?mt=8">http://itunes.apple.com/de/app/doodle-jump-achtung-hochste/id<strong>307727765</strong>?mt=8</a></p></blockquote>
<p>Dabei gebt ihr nur die Zahl an (ohne "id").</p>
<p>Der zweite Parameter wird der App (falls die verlinkte App bereits installiert ist) übergeben. So könnt ihr den Besucher nahtlos in die App wechseln lassen und automatisch an die Stelle in der App springen auf der der Besucher auf der Webseite war.</p>
<p>Da iOS6 sich wenn es bald raus ist ziemlich schnell verbreiten wird lohnt es sich sicher schon mal die Header anzupassen <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2115&amp;md5=aaeda6774a6686b1f8937451b0b3ac16" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2115&amp;md5=aaeda6774a6686b1f8937451b0b3ac16" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/LPQfahXOeL0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/ios6-smart-app-banner-auf-eurer-seite-nutzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fios6-smart-app-banner-auf-eurer-seite-nutzen%2F&amp;language=de_DE&amp;category=text&amp;title=iOS6+Smart+App+Banner+auf+eurer+Seite+nutzen&amp;description=Sicherlich+kennt+ihr+diese+h%C3%A4sslichen+Popups+auf+gr%C3%B6%C3%9Feren+Seiten+wie+Welt.de+die+auch+eine+%28Bezahl-%29App+im+Appstore+haben.+Diese+Popups+sind+nicht+nur+unsch%C3%B6n%2C+sondern+nerven+auch+extrem%21+In+iOS6...&amp;tags=.NET%2CApple%2Casp.net%2CInternet%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/ios6-smart-app-banner-auf-eurer-seite-nutzen/</feedburner:origLink></item>
		<item>
		<title>Log4Net in einem ASP.NET MVC Projekt nutzen</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/3r9swoGjWTE/</link>
		<comments>http://blog.bigbasti.com/log4net-in-einem-asp-net-mvc-projekt-nutzen/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 13:52:38 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[Gut zu Wissen]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[CSharp]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2099</guid>
		<description><![CDATA[Nutzt ihr eigentlich Logging Systeme? Ja? Wirklich? Jaja, das hätte ich jetzt auch gesagt Wenn ihr noch kein Logging in euren Web Projekten habt solltet ihr das schleunigst nachholen, denn es ist oft einfachste und schnellste Weg genaue Informationen darüber zu erhalten was in der Applikation los war als es zu einem Fehler oder Absturz kam. Eine der einfachsten und schnellsten Möglichkeiten Logging zu implementieren ist es die fertige und sehr mächtige Library Log4Net zu nutzen. Java Entwickler werden diese als Log4J kennen und schätzen. Am schnellsten geht es wenn ihr Log4Net über NuGet installiert: Nun habt ihr schon mal die Assembly in eurem Projekt. Als nächstes müssen wir Log4Net [...]]]></description>
				<content:encoded><![CDATA[<p>Nutzt ihr eigentlich Logging Systeme? Ja? Wirklich? Jaja, das hätte ich jetzt auch gesagt <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Wenn ihr noch kein Logging in euren Web Projekten habt solltet ihr das schleunigst nachholen, denn es ist oft einfachste und schnellste Weg genaue Informationen darüber zu erhalten was in der Applikation los war als es zu einem Fehler oder Absturz kam.</p>
<p>Eine der einfachsten und schnellsten Möglichkeiten Logging zu implementieren ist es die fertige und sehr mächtige Library Log4Net zu nutzen. Java Entwickler werden diese als Log4J kennen und schätzen.</p>
<p>Am schnellsten geht es wenn ihr Log4Net über NuGet installiert:</p>
<p><a href="http://blog.bigbasti.com/uploads/log4net_demo1.png"><img class="aligncenter size-full wp-image-2100" title="log4net_demo1" src="http://blog.bigbasti.com/uploads/log4net_demo1.png" alt="" width="487" height="80" /></a></p>
<p>Nun habt ihr schon mal die Assembly in eurem Projekt. Als nächstes müssen wir Log4Net konfigurieren. Das kann man zum Beispiel in der web.config machen:</p>
<pre class="brush: xml; ">

    &lt;configSections&gt;
        &lt;section name=&quot;log4net&quot; type=&quot;log4net.Config.Log4NetConfigurationSectionHandler, log4net&quot;/&gt;
    &lt;/configSections&gt;

    &lt;log4net&gt;
        &lt;root&gt;
            &lt;level value=&quot;ALL&quot; /&gt;
            &lt;appender-ref ref=&quot;RollingFile&quot; /&gt;
        &lt;/root&gt;
        &lt;appender name=&quot;RollingFile&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
            &lt;file value=&quot;app.log&quot; /&gt;
            &lt;appendToFile value=&quot;true&quot; /&gt;
            &lt;maximumFileSize value=&quot;1000KB&quot; /&gt;
            &lt;maxSizeRollBackups value=&quot;2&quot; /&gt;
            &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
                &lt;conversionPattern value=&quot;%date [%thread] %-5p %c - %message%newline&quot; /&gt;
            &lt;/layout&gt;
        &lt;/appender&gt;
    &lt;/log4net&gt;

</pre>
<p>Interessant ist hier eigentlich der Appender-Teil, denn hier definiert ihr wie geloggt werden soll. In diesem Beispiel werden alle Ausgaben in eine Datei namens app.log geloggt, weiterhin werden Informationen wie Datum, Zeit, Thread, Log-Level, Klasse und Lognachricht angezeigt. Hier gibt es unendlich viele Kombinationen.</p>
<p><a href="http://logging.apache.org/log4net/release/config-examples.html" target="_blank">Auf der Homepage von Log4Net</a> findet ihr noch viele andere Beispiele für Appender-Configs, mit denen ihr direkt in eine Datenbank loggen könnt, oder die Nachrichten an einen SMTP Server senden könnt, die dann per Mail versendet werden. Natürlich kann auch auf die Konsole geloggt werden, sucht euch einfach die Appender aus die ihr benötigt und tragt diese ein, ihr könnt auch mehrere Appender kombinieren.</p>
<p>Bevor ihr nun losloggen könnt müsst ihr den Logger noch laden. Das macht ihr in der Application_Start-Methode in der Global.asax.cs. Hierzu reicht eine einfach Zeile:</p>
<pre class="brush: csharp; ">

log4net.Config.XmlConfigurator.Configure();

</pre>
<p>Wenn ihr die Konfiguration von Log4Net in eine Extra Datei auslagern wollt, könnt ihr hier auch den Pfad zu dieser Konfiguration angeben.</p>
<pre class="brush: csharp; ">

log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(filename));

</pre>
<p>Nun wechseln wir mal in einen Controller und loggen mal etwas:</p>
<pre class="brush: csharp; ">

    public ActionResult Index()
    {
        ILog logger = LogManager.GetLogger(typeof(HomeController));

        logger.Info(&quot;Index Action wurde aufgerufen.....&quot;);

        try
        {
            logger.Debug(&quot;Don&#039;t mess with math dude...&quot;);
            int zero = 0;
            int endOfWorld = 12 / zero;
        }
        catch (Exception ex)
        {
            logger.Error(&quot;Ohh noez, you&#039;re dead now!&quot;, ex);
        }

        return View();
    }

</pre>
<p>Wie man sieht funktioniert das Ganze ziemlich einfach und effektiv. Der Logger lässt euch zwischen verschiedenen Log-Leveln auswählen. In der XML-Konfiguration definiert ihr den Loglevel, dann werden nur bestimmte Dinge geloggt. So könnt ihr für Diagnosezwecke den DEBUG-Level setzen um alle wichtigen Infos zu erhalten, und später wenn alles erledigt ist den Level wieder auf INFO senken.</p>
<p>So sieht übrigens die Ausgabe zu dem oberen Code aus:</p>
<p><a href="http://blog.bigbasti.com/uploads/log4net_demo2.png"><img class="aligncenter size-full wp-image-2106" title="log4net_demo2" src="http://blog.bigbasti.com/uploads/log4net_demo2.png" alt="" width="936" height="111" /></a></p>
<p>Im Grunde ziemlich simpel, aber sehr effektiv. Alternativ kann man auch <a href="http://blog.bigbasti.com/nice2know-errorlogging-mit-elmah/" target="_blank">ELMAH</a> verwenden.</p>
<p>Ein Demo-Projekt <a href="https://github.com/bigbasti/Code-Samples/tree/master/ASP.NET%20MVC/log4net/log4net_demo" target="_blank">findet ihr hier</a>.</p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2099&amp;md5=b976d088b975e53ded583e7447e4057c" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2099&amp;md5=b976d088b975e53ded583e7447e4057c" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/3r9swoGjWTE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/log4net-in-einem-asp-net-mvc-projekt-nutzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Flog4net-in-einem-asp-net-mvc-projekt-nutzen%2F&amp;language=de_DE&amp;category=text&amp;title=Log4Net+in+einem+ASP.NET+MVC+Projekt+nutzen&amp;description=Nutzt+ihr+eigentlich+Logging+Systeme%3F+Ja%3F+Wirklich%3F+Jaja%2C+das+h%C3%A4tte+ich+jetzt+auch+gesagt+Wenn+ihr+noch+kein+Logging+in+euren+Web+Projekten+habt+solltet+ihr+das+schleunigst+nachholen%2C+denn...&amp;tags=.NET%2Casp.net%2CCSharp%2CMVC%2CProgrammierung%2CTutorials%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/log4net-in-einem-asp-net-mvc-projekt-nutzen/</feedburner:origLink></item>
		<item>
		<title>Entity Framework Code First und Datenbank Migration</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/qvbHA5KeScg/</link>
		<comments>http://blog.bigbasti.com/entity-framework-code-first-und-datenbank-migration/#comments</comments>
		<pubDate>Mon, 06 Aug 2012 11:04:29 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2073</guid>
		<description><![CDATA[Das Entity Framework Code First ist ein feine Sache wenn man keine Lust auf SQL hat und diese lästigen CRUD Funktionen für die Datenbank jemand anders machen lassen will. Besonders zu Beginn eines Projekts ist es super bequem den DropCreateDatabaseAlways-Initialisierer zu benutzen, der einem bei jeder Modeländerung eine frische und an das neue Model aktuelle Datenbank generiert. Doch irgendwann läuft die Applikation und man hat diverse Testdaten gespeichert die man nicht verlieren will, oder die App wurde nun schon installiert und ein Update steht bevor - was nun? Natürlich kann man die Datenbank nicht mehr einfach neu erstellen mit DropCreateDatabaseAlways da dann auch alle Daten verloren gehen. Man muss die Datenbank aktualisieren, [...]]]></description>
				<content:encoded><![CDATA[<p>Das Entity Framework Code First ist ein feine Sache wenn man keine Lust auf SQL hat und diese lästigen CRUD Funktionen für die Datenbank jemand anders machen lassen will.</p>
<p>Besonders zu Beginn eines Projekts ist es super bequem den DropCreateDatabaseAlways-Initialisierer zu benutzen, der einem bei jeder Modeländerung eine frische und an das neue Model aktuelle Datenbank generiert. Doch irgendwann läuft die Applikation und man hat diverse Testdaten gespeichert die man nicht verlieren will, oder die App wurde nun schon installiert und ein Update steht bevor - was nun?</p>
<p>Natürlich kann man die Datenbank nicht mehr einfach neu erstellen mit DropCreateDatabaseAlways da dann auch alle Daten verloren gehen. Man muss die Datenbank aktualisieren, und genau hier kommen die Entity Framework Migrations ins Spiel, die seit der Version 4.3 Bestandteil des EF sind.</p>
<p>Falls ihr noch eine alte Version von EF verwendet solltet ihr NuGet anschmeißen und die neue Version installieren:</p>
<p><a href="http://blog.bigbasti.com/uploads/ef.png"><img title="ef" src="http://blog.bigbasti.com/uploads/ef.png" alt="" width="487" height="76" /></a></p>
<p>Ich würde euch empfehlen nun den CreateDatabaseIfNotExists-Initialisierer für eure Datenbank zu nutzen, um eure Daten nach der Modeländerung nicht zu verlieren.</p>
<p>Wenn ihr nun euer model ändert und versucht die App zu starten solltet ihr diesen Fehler zu sehen bekommen:</p>
<blockquote><p><em>”The model backing the 'YourDBContext' context has changed since the database was created. Consider using Code First Migrations to update the database (</em><a href="http://go.microsoft.com/fwlink/?LinkId=238269"><em>http://go.microsoft.com/fwlink/?LinkId=238269</em></a><em>).” </em></p></blockquote>
<p><strong>1. Nun müssen wir aktiv werden und die Datenbank-Migration aktivieren</strong></p>
<p>Dazu führen wir den Befehl <strong>"Enable-Migrations" </strong>auf der NuGet Konsole aus. Dieses Kommando legt einen neuen Ordner namens "Migrations" in eurem Projekt an.</p>
<p>In diesem Ordner werdet ihr eine "Configurations"-Klasse finden, die ca so aussehen sollte:</p>
<pre class="brush: csharp; ">

internal sealed class Configuration : DbMigrationsConfiguration
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(DB context)
    {
        //  This method will be called after migrating to the latest version.

        //  You can use the DbSet.AddOrUpdate() helper extension method 
        //  to avoid creating duplicate seed data. E.g.
        //
        //    context.People.AddOrUpdate(
        //      p =&gt; p.FullName,
        //      new Person { FullName = &quot;Andrew Peters&quot; },
        //      new Person { FullName = &quot;Brice Lambson&quot; },
        //      new Person { FullName = &quot;Rowan Miller&quot; }
        //    );
        //
    }
}

</pre>
<p>Dies sollte euch an eure Initialisierungs Klasse erinnern, denn hier habt ihr auch eine Seed-Methode, die nach der Migration ausgeführt wird und euch die Möglichkeit gibt direkt Daten in die Datenbank zu schreiben.</p>
<p>Ich würde weiterhin empfehlen den Konstruktor der Klasse um folgende Anweisung zu erweitern:</p>
<pre class="brush: csharp; ">

AutomaticMigrationDataLossAllowed = false;

</pre>
<p>Dies sorgt dafür, dass ihr keine Daten verliert wenn die Datenbank aktualisiert wird.</p>
<p><strong>2. Erste Migration anlegen</strong></p>
<p>Nun wind wir soweit, dass wir unsere erste Migration anlegen können, dies geschieht ebenfalls über die NuGet Konsole mit dem Befehl: <strong>"Add-Migration"</strong> Anschließend werdet ihr noch nach einem Namen für die Migration gefragt, hier könnt ihr eure Fantasie benutzen <img src='http://blog.bigbasti.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Es wird nun eine weitere Klasse in eurem Migrations-Ordner angelegt, diese hat ein Timestamp und eure Bezeichnung im Namen. Die Klasse ist in eine Up- &amp; Down-Methode aufgeteilt, in der jeweils die Aktionen gespeichert sind, die nötig sind um die gewünschten Änderungen an der Datenbank durchzuführen oder diese Änderungen wieder rückgängig zu machen.</p>
<pre class="brush: csharp; ">

public partial class Initial : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}

</pre>
<p><strong>3. Migration durchführen</strong></p>
<p>Nun können wir damit beginnen die Datenbank zu verändern. Hier haben wir nun zwei Möglichkeiten.</p>
<p>1. Direktes Update durchführen über die NuGet Konsole<br />
2. Ein SQL Skript erzeugen und dieses dann auf dem SQl-Server ausführen</p>
<p>Da ich auf meinem Entwicklungsrechner keine Verbindung zu der Produktivumgebung habe, erzeuge ich eigentlich immer SQL Skripte, die ich dann auf der Remote-Maschine benutze um die Datenbank zu aktualisieren.</p>
<p><strong>1. Direkt Update</strong></p>
<p>Dazu nutzen wir den Befehl <strong>"Update-Database"</strong>.  Dadurch wird die Datenbank auf die neueste Version aktualisiert. Wenn ihr auf einen Spezifischen Stand updaten oder downgraden wollt könnt ihr den Stand über den Parameter <strong>"-TargetMigration=$</strong>" machen. <strong>"Update-Database -TargetMigration=XXX</strong>".</p>
<p>Falls ihr einen älteren Stand angebt, werden die Down-Methoden der aktuelleren Migrationsklassen aufgerufen.</p>
<p><strong>2. SQL Skript erzeugen</strong></p>
<p>Wenn ihr dem<strong> "Update-Database"</strong> Befehl den <strong>"-Script"</strong> Parameter übergebt, wird für euch ein Migrations Skript angelegt, dass alle nötigen Änderungen enthält. Diese betreffen auch die Downgrades, falls ihr einen älderen Stand als Ziel angebt.</p>
<p>Dieses SQL Skript kann dann problemlos auf dem SQL Server eingespielt werden und verhält sich genau wie eine "Direkte" Migration.</p>
<p><strong>Zusammenfassung</strong></p>
<p>Die Entity Framework Datenbank Migration ist eine sehr bequeme Art die Datenbank auf seinem Testsystem und auch auf dem Zielsystem zu aktualisieren. Vor Allem ist es cool, dass ich jederzeit auch Zwischenreleases wiederherstellen kann.</p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2073&amp;md5=50fcd81976129c5fdef6eadfc4c54738" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2073&amp;md5=50fcd81976129c5fdef6eadfc4c54738" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/qvbHA5KeScg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/entity-framework-code-first-und-datenbank-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Fentity-framework-code-first-und-datenbank-migration%2F&amp;language=de_DE&amp;category=text&amp;title=Entity+Framework+Code+First+und+Datenbank+Migration&amp;description=Das+Entity+Framework+Code+First+ist+ein+feine+Sache+wenn+man+keine+Lust+auf+SQL+hat+und+diese+l%C3%A4stigen+CRUD+Funktionen+f%C3%BCr+die+Datenbank+jemand+anders+machen+lassen+will.+Besonders...&amp;tags=.NET%2CDatenbank%2CProgrammierung%2CTutorials%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/entity-framework-code-first-und-datenbank-migration/</feedburner:origLink></item>
		<item>
		<title>Office oder Windows Lizenzschluessel aus einer anderen Windows Installation wiederherstellen</title>
		<link>http://feedproxy.google.com/~r/bigbasti/yEFJ/~3/AeA4gH4whYw/</link>
		<comments>http://blog.bigbasti.com/office-oder-windows-lizenzschluessel-aus-einer-anderen-windows-installation-wiederherstellen/#comments</comments>
		<pubDate>Wed, 02 May 2012 12:27:35 +0000</pubDate>
		<dc:creator>Sebastian Gross</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mocrosoft Office]]></category>
		<category><![CDATA[Tipps & Tricks]]></category>
		<category><![CDATA[Support]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.bigbasti.com/?p=2056</guid>
		<description><![CDATA[Die Beiträge hier im Blog darüber wie man den Office und Windows Key aus der Registry lesen kann erfreuen sich sich großer Beliebtheit, weswegen ich auch das kleine Tool Get My Keys Back erstellt habe. Doch erreichen mich immer mehr Mails mit der Frage danach wie man den Schlüssel wiederherstellen kann wenn man Windows neuinstalliert hat, wenn die Installation beschädigt ist oder wenn die Daten auf einer anderen Festplatte liegen. Manchmal passiert es auch, dass Get My Keys Back es nicht schafft den Office Key auszulesen, obwohl Office installiert ist. Mit dieser Anleitung könnt ihr es nun manuell machen. Get My Keys Back funktioniert hier natürlich nicht, da es nur in [...]]]></description>
				<content:encoded><![CDATA[<p>Die Beiträge hier im Blog darüber wie man den <a href="http://blog.bigbasti.com/den-office-lizenzschlussel-aus-der-registry-auslesen/" target="_blank">Office</a> und <a href="http://blog.bigbasti.com/windows-lizenzschlussel-aus-der-registry-auslesen/" target="_blank">Windows Key</a> aus der Registry lesen kann erfreuen sich sich großer Beliebtheit, weswegen ich auch das kleine Tool <a href="http://hp.bigbasti.com/de/software.aspx?show=gmkb" target="_blank">Get My Keys Back</a> erstellt habe.</p>
<p><strong>Doch erreichen mich immer mehr Mails mit der Frage danach wie man den Schlüssel wiederherstellen kann wenn man Windows neuinstalliert hat, wenn die Installation beschädigt ist oder wenn die Daten auf einer anderen Festplatte liegen.</strong></p>
<p><strong>Manchmal passiert es auch, dass Get My Keys Back es nicht schafft den Office Key auszulesen, obwohl Office installiert ist. Mit dieser Anleitung könnt ihr es nun manuell machen.</strong></p>
<p>Get My Keys Back funktioniert hier natürlich nicht, da es nur in der gerade aktiven Registry nach dem Schlüssel sucht. Ich habe mich mit dieser Frage etwas beschäftigt und hoffe euch mit diesem Beitrag eine Hilfestellung geben zu können.</p>
<p><strong>SerialDecoder</strong></p>
<p>Um es euch möglichst einfach zu machen habe ich das kleine Tool "SerialDecoder" geschrieben, das ihr <a href="http://bigbasti.com/de/projects/serial" target="_blank">ab sofort auf meiner Homepage herunterladen und testen könnt</a>. Dieses Programm benötigt aber auch die Werte aus der Registry, und zwar aus der Registry die nicht mehr aktiv ist, z.B. die auf eurer anderen Festplatte von der ihr die Seriennummer haben wollt.</p>
<p>Der Prozess den Schlüssel zu beschaffen unterteilt sich in drei Schritte:</p>
<ol>
<li>Beschaffen der Registrydaten von der alten Festplatte</li>
<li>Beschaffen der Daten aus der alten Registry</li>
<li>Umwandeln der Daten in den schlüssel</li>
</ol>
<div><strong>Schritt 1</strong></div>
<p>An euch liegt es nun diese Daten aus der anderen Festplatte zu lesen. Dies ist relativ einfach, folgt einfach dieser kleinen Anleitung:</p>
<ol>
<li>Schließt die alte Festplatte an und öffnet diese im Windows Explorer</li>
<li>Navigiert dort in das Verzeichnis: \Windows\System32\config</li>
<li>Kopiert aus diesem Verzeichnis die Datei "SOFTWARE" in ein Verzeichnis auf eurer aktiven Festplatte.
<p><div class="wp-caption aligncenter" style="width: 490px"><a href="http://blog.bigbasti.com/uploads/decoder_picture1.jpg"><img class=" " src="http://blog.bigbasti.com/uploads/decoder_picture1.jpg" alt="" width="480" height="314" /></a><p class="wp-caption-text">Die gesuchte Datei </p></div></li>
<li>Startet nun die Registry, indem ihr die Windows-Taste und die R-Taste gleichzeitig drückt.
<p><div class="wp-caption aligncenter" style="width: 437px"><a href="http://blog.bigbasti.com/uploads/decoder_picture2.jpg"><img src="http://blog.bigbasti.com/uploads/decoder_picture2.jpg" alt="" width="427" height="235" /></a><p class="wp-caption-text">Windows-Taste + R drücken</p></div></li>
<li>In das nun erscheinende Fenster tippt ihr "regedit" ohne "" und drückt auf OK.</li>
<li>Im Regestrierungseditor klickt ihr auf Datei und dann auf Struktur laden... (Tipp: Struktur laden ist nur anklickbar, wenn ihr den passenden Knoten (HKEY_LOCAL_MACHINE) auswählt)
<p><div class="wp-caption aligncenter" style="width: 480px"><a href="http://blog.bigbasti.com/uploads/decoder_picture3.jpg"><img src="http://blog.bigbasti.com/uploads/decoder_picture3.jpg" alt="" width="470" height="310" /></a><p class="wp-caption-text">Struktur laden</p></div></li>
<li> Wählt nun die eben kopierte Datei "SOFTWARE" aus.
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="http://blog.bigbasti.com/uploads/decoder_picture4.jpg"><img class=" " src="http://blog.bigbasti.com/uploads/decoder_picture4.jpg" alt="" width="500" height="347" /></a><p class="wp-caption-text">Datei laden</p></div></li>
<li>Gebt nun einen schlüssigen Namen ein z.B. "Alte Festplatte"</li>
<li>Nun wird diese Registry Datei geladen und ihr seht sie in eurem Registry-Explorer. Öffnet diese nun.</li>
</ol>
<p><strong>Schritt 2: Auslesen der Schlüssel</strong></p>
<p>Navigiert in der nun geladenen Struktur an folgende Stellen um die Keys zu erhalten:</p>
<p>Office auf 32-Bit Systemen:</p>
<blockquote><p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office</p></blockquote>
<p>Office auf 64-Bit Systemen:</p>
<blockquote><p>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office</p></blockquote>
<p>Bei Office wählt ihr nun eure Version, wobei</p>
<ul>
<li>11 = 2003</li>
<li>12 = 2007</li>
<li>14 = 2010</li>
<li>15 = 2013</li>
</ul>
<p>Im Normalfall solltet ihr einfach die größte Zahl auswählen. In diesem Verzeichnis wählt ihr nun den Ordner Registration. Hier werden wahrscheinlich einige Ordner mit sehr kryptischen Namen sein, sucht den wo der Schlüssel namens "DigitalProductId" auftaucht:</p>
<p><a href="http://blog.bigbasti.com/uploads/decoder_picture5.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture5.jpg" alt="" width="649" height="493" /></a>Probiert die Ordner einfach durch, der richtige Ordner ist meist der mit den meisten Schlüsseln.</p>
<p><a href="http://blog.bigbasti.com/uploads/decoder_picture6.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture6.jpg" alt="" width="454" height="244" /></a>Klickt nun mit der rechten Maustaste auf den passenden Ordner und wählt "Exportieren". Speichert die Datei nun ab.</p>
<p>(Falls ihr nur diesen Key benötigt springt zum Schritt 3 Schlüssel umwandeln weiter unten)</p>
<p>Windows Key:</p>
<blockquote><p>SOFTWARE\Microsoft\Windows NT\CurrentVersion</p></blockquote>
<p><a href="http://blog.bigbasti.com/uploads/decoder_picture7.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture7.jpg" alt="" width="613" height="405" /></a></p>
<p>Hier seht ihr nun einige Schlüssel, unter Anderem auch den DigitalProductId, der uns interessiert (Beispiel für Windows Key).</p>
<p><a href="http://blog.bigbasti.com/uploads/decoder_picture8.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture8.jpg" alt="" width="396" height="260" /></a></p>
<p>Klickt nun mir der rechten Maustaste auf den Ordner "CurrentVersion" in der rechten Übersicht und wählt "Exportieren" und speichert die Daten an einem für euch leicht wieder findbaren Ort.</p>
<p><strong>Schritt 3: Schlüssel umwandeln</strong></p>
<p>Da ihr nun die Daten zum Windows und/oder zum Office Key gesichert habt könnt ihr diese nun nutzen um den Key wiederherzustellen.</p>
<p>Nun müsst ihr mein kleines Tool namens <a href="http://bigbasti.com/de/projects/serial" target="_blank">"SerialDecoder" von meiner Homepage laden</a> und starten.</p>
<p><a href="http://blog.bigbasti.com/uploads/decoder_picture9.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture9.jpg" alt="" width="599" height="236" /></a>Öffnet nun eine der Dateien die ihr eben durch das Exportieren erstellt habt in einem Texteditor:<br />
<a href="http://blog.bigbasti.com/uploads/decoder_picture10.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture10.jpg" alt="" width="669" height="429" /></a>Sucht den Eintrag namens "DigitalProductId" und markiert alle Zeichen ab hex: bis zum Ende des Eintrags. Ein Beispiel wie es aussehen kann seht ihr in dem Oberen Bild. Wichtig: Markiert wirklich nur diesen Bereich ohne das hex: und ohne den Eigenschaften-Namen, wirklich genauso wie es oben in dem Bild gezeigt ist.</p>
<p>Das Bild zeigt ein Beispiel für einen Windows Key, die Office-Keys sind für gewöhnlich länger, lasst euch davon also nicht verwirren.</p>
<p>Kopiert diesen Markierten Text nun in die Zwischenablage und fügt diesen Text nun im SerialDecoder ein:</p>
<p><a href="http://blog.bigbasti.com/uploads/decoder_picture11.jpg"><img class="aligncenter" src="http://blog.bigbasti.com/uploads/decoder_picture11.jpg" alt="" width="599" height="236" /></a>Nicht erschrecken: Der SerialDecoder entfernt alle unnötigen Zeichen wie Leerzeichen und Zeilenumbrüche.</p>
<p>Klickt nun auf "Schlüssel auslesen" unten im Fenster und wählt die Art von Schlüssel die ihr auslesen wollt. (Hier Windows Key)</p>
<p>Der SerialDecoder wandelt nun die Daten in euren Key um.</p>
<p>ACHTUNG: SerialDecoder kann nicht feststellen ob ihr die Daten korrekt eingefügt habt, also ob ihr vielleicht zuviel kopiert habt oder zu wenig. Deswegen achtet sehr genau was ihr reinkopiert! Des Weiteren kann ich natürlich nicht für die Korrektheit des ausgelesenen Keys garantieren. Das Programm ist grad in der Testphase und lebt momentan von eurem Feedback, damit ich es weiter verbessern kann.</p>
 <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2056&amp;md5=3ca4bdd6e6cda0d8f47b4df742607d4c" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattrss/img/flattr-badge-large.png" alt="flattr this!"/></a></p> <p><a href="http://blog.bigbasti.com/?flattrss_redirect&amp;id=2056&amp;md5=3ca4bdd6e6cda0d8f47b4df742607d4c" title="Flattr" target="_blank"><img src="http://blog.bigbasti.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><img src="http://feeds.feedburner.com/~r/bigbasti/yEFJ/~4/AeA4gH4whYw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bigbasti.com/office-oder-windows-lizenzschluessel-aus-einer-anderen-windows-installation-wiederherstellen/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=14720&amp;popout=1&amp;url=http%3A%2F%2Fblog.bigbasti.com%2Foffice-oder-windows-lizenzschluessel-aus-einer-anderen-windows-installation-wiederherstellen%2F&amp;language=de_DE&amp;category=text&amp;title=Office+oder+Windows+Lizenzschluessel+aus+einer+anderen+Windows+Installation+wiederherstellen&amp;description=Die+Beitr%C3%A4ge+hier+im+Blog+dar%C3%BCber+wie+man+den+Office+und+Windows+Key+aus+der+Registry+lesen+kann+erfreuen+sich+sich+gro%C3%9Fer%C2%A0Beliebtheit%2C+weswegen+ich+auch+das+kleine+Tool+Get+My...&amp;tags=Computer%2CMicrosoft%2CSupport%2CTutorials%2CWindows%2Cblog" type="text/html" />
	<feedburner:origLink>http://blog.bigbasti.com/office-oder-windows-lizenzschluessel-aus-einer-anderen-windows-installation-wiederherstellen/</feedburner:origLink></item>
	</channel>
</rss>
