<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2germanfull.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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>anrichter</title>
	
	<link>http://www.anrichter.net/blog</link>
	<description>Softwareentwickler</description>
	<lastBuildDate>Thu, 11 Mar 2010 18:41:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/anrichter/content" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="anrichter/content" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=de&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://us.i1.yimg.com/us.yimg.com/i/de/my/addtomyyahoo4.gif">Subscribe with Mein Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/anrichter/content" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fanrichter%2Fcontent" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Programmieren wir bald nur noch in Blasen?</title>
		<link>http://www.anrichter.net/blog/2010/03/11/programmieren-wir-bald-nur-noch-in-blasen/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=programmieren-wir-bald-nur-noch-in-blasen</link>
		<comments>http://www.anrichter.net/blog/2010/03/11/programmieren-wir-bald-nur-noch-in-blasen/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 18:41:15 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code-Bubbles]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Forschung]]></category>
		<category><![CDATA[IDE]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1542</guid>
		<description><![CDATA[Seit der grafischen Revolution auf den Computern Ende der 80er Jahre des vergangenen Jahrhunderts ist das Fenster die Präsentationseinheit, wenn es darum geht Dateien darzustellen. So auch in Entwicklungsumgebungen. Moderne und auch nicht ganz so moderne Entwicklungsumgebungen können mehrere Dateien gleichzeitig darstellen. Diese werden dann in eigenen Fenstern oder Tabs präsentiert. Das hat sich eingeschliffen [...]]]></description>
			<content:encoded><![CDATA[<p>Seit der grafischen Revolution auf den Computern Ende der 80er Jahre des vergangenen Jahrhunderts ist das Fenster die Präsentationseinheit, wenn es darum geht Dateien darzustellen. So auch in Entwicklungsumgebungen. Moderne und auch nicht ganz so moderne Entwicklungsumgebungen können mehrere Dateien gleichzeitig darstellen. Diese werden dann in eigenen Fenstern oder Tabs präsentiert. Das hat sich eingeschliffen und scheint fest zu sein. Mit allen Vor- und Nachteilen. Das es auch anders gehen kann, zeigen uns die Forscher vom Department of Computer Science der US-amerikanischen Brown University in Providence. Sie setzen beim Entwickeln auf Code Bubbles und wollen so das Handling von Dateien in IDEs revolutionieren und vereinfachen. </p>
<p><span id="more-1542"></span></p>
<p>Das neue Konzept sieht vor, alles in miteinander verbundenen Blasen auf dem Bildschirm  darzustellen. Dabei öffnet der Programmierer einen Quellcodeteil in einer Blase. Ausgehend von dieser können weiter Blasen geöffnet werden. Dort können z.B. die Implementierungen von Methoden der ersten Blase gezeigt werden. Damit besteht zwischen den zwei Blasen eine Beziehung, die auch visualisiert wird. </p>
<p>Wobei wir beim Thema währen. Bilder sagen schließlich mehr als tausend Worte. Das Entwicklerteam hinter der Idee hat ein Video online gestellt, in dem die Funktionsweise von Code Bubbles sehr schön gezeigt wird. </p>
<p><object width="600" height="475"><param name="movie" value="http://www.youtube.com/v/PsPX0nElJ0k&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PsPX0nElJ0k&#038;fs=1" type="application/x-shockwave-flash" width="600" height="475" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Wem nun das Wasser im Munde zusammenläuft und das neue Paradigma selber ausprobieren möchte, kann dies mit einer <a href="http://www.cs.brown.edu/people/acb/codebubbles_beta_signup.htm">Beta von Code Bubbles für Eclipse</a> tun. Laut <a href="http://entwickler.com/itr/news/psecom,id,52413,nodeid,82.html">Entwickler</a> sollen die Code Bubbles mit jedem Eclipse-Projekt zusammenarbeiten. Weiterführende Informationen findet ihr auf den <a href="http://www.cs.brown.edu/people/acb/codebubbles_site.htm">Projektseiten der Code Bubbles</a>.</p>
<p>Ich finde diesen Ansatz durchaus interessant. Wie oft kämpf ich mich durch eine Vielzahl an Quellcodedateien, die auf diversen Tabs übereinander dargestellt werden. Da geht der Überblick<br />
 beim Browsen im Code oftmals schnell verloren. Weiterhin lenken Codefragemente, die nicht zur Problemlösung beitragen, aber durchaus Aufmerksamkeit bedürfen, oftmals vom eigentlichen Ziel  der Arbeit ab. Mit Hilfe der Code Bubbles würden nur die Codeteile auf dem Bildschirm erscheinen, die auch aktuell relevant sind. Noch dazu mit einem visualisierten Pfad der Reise durch die Quellen und alles nebeneinander. Vorausgesetzt der Monitor ist groß genug <img src='http://www.anrichter.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Leider habe ich kein Eclipse installiert und somit auch kein Projekt zur Hand, um die <a href="http://www.cs.brown.edu/people/acb/codebubbles_beta_signup.htm">Betaversion der Code Bubbles</a> ausprobieren zu können. Wie sieht das bei euch aus? Hat einer von Euch bereits Erfahrung sammeln können? Mich würde die Bedienbarkeit interessieren. Kann man sich an diese Art der Codebearbeitung schnell gewöhnen? Oder ist das absoluter Nonsens, der nur im Video primaprächtig aussieht?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/7F2jnK54eU_OlhvAsAtVANwsNoo/0/da"><img src="http://feedads.g.doubleclick.net/~a/7F2jnK54eU_OlhvAsAtVANwsNoo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7F2jnK54eU_OlhvAsAtVANwsNoo/1/da"><img src="http://feedads.g.doubleclick.net/~a/7F2jnK54eU_OlhvAsAtVANwsNoo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=YK_6naYex8A:QwYqRu2jCRE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=YK_6naYex8A:QwYqRu2jCRE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=YK_6naYex8A:QwYqRu2jCRE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=YK_6naYex8A:QwYqRu2jCRE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=YK_6naYex8A:QwYqRu2jCRE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=YK_6naYex8A:QwYqRu2jCRE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=YK_6naYex8A:QwYqRu2jCRE:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/YK_6naYex8A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/03/11/programmieren-wir-bald-nur-noch-in-blasen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Cheat Sheet für den schnellen Überblick</title>
		<link>http://www.anrichter.net/blog/2010/03/10/git-cheat-sheet-fur-den-schnellen-uberblick/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=git-cheat-sheet-fur-den-schnellen-uberblick</link>
		<comments>http://www.anrichter.net/blog/2010/03/10/git-cheat-sheet-fur-den-schnellen-uberblick/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 20:46:00 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cheat]]></category>
		<category><![CDATA[Dokumente]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Sheet]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1537</guid>
		<description><![CDATA[Wer kennt das nicht? Da beschäftigt man sich mit einer neuen Versionsverwaltung und hat einige Begriffe und Befehle neu zu erlernen. Da hilft meistens die Lektüre von einschlägigen Howtos, Readmees und Man-Pages. Doch hat man die ersten Hürden genommen, folgt die tägliche oder nicht so alltägliche Arbeit mit dem System. Und genau dann braucht man [...]]]></description>
			<content:encoded><![CDATA[<p>Wer kennt das nicht? Da beschäftigt man sich mit einer neuen Versionsverwaltung und hat einige Begriffe und Befehle neu zu erlernen. Da hilft meistens die Lektüre von einschlägigen Howtos, Readmees und Man-Pages. Doch hat man die ersten Hürden genommen, folgt die tägliche oder nicht so alltägliche Arbeit mit dem System. Und genau dann braucht man eine schnell verfügbare Übersicht über das System.</p>
<p><span id="more-1537"></span></p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/03/git-cheat-sheet.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/03/git-cheat-sheet-500x386.png" alt="" title="Git Cheat Sheet" width="500" height="386" class="aligncenter size-large wp-image-1539" /></a></p>
<p>Und genau da kommt das von Zack Rusin erstellte Git Cheat Sheet ins Spiel. Auf einer gut strukturierten Übersichtsseite, die locker als Desktophintergrund ihren Dienst verrichten kann, werden alle wichtigen Begrifflichkeiten, Konzepte und Befehle beim Umgang mit Git aufgezeigt. Ein hervorragendes Nachschlagewerk für den täglichen Gebrauch. Das Sheet steht als <a href="http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png">PNG</a> und <a href="http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg">SVG</a> zum Download bereit. </p>
<p>Danke an <a href="http://www.allesk.de">Kai</a> für den Hinweis.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/r-9iFGNuTKC7y7z4LnJ36FmeBks/0/da"><img src="http://feedads.g.doubleclick.net/~a/r-9iFGNuTKC7y7z4LnJ36FmeBks/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/r-9iFGNuTKC7y7z4LnJ36FmeBks/1/da"><img src="http://feedads.g.doubleclick.net/~a/r-9iFGNuTKC7y7z4LnJ36FmeBks/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KVmNhHZ5WeI:L3z-XVX_yak:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KVmNhHZ5WeI:L3z-XVX_yak:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=KVmNhHZ5WeI:L3z-XVX_yak:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KVmNhHZ5WeI:L3z-XVX_yak:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=KVmNhHZ5WeI:L3z-XVX_yak:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KVmNhHZ5WeI:L3z-XVX_yak:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=KVmNhHZ5WeI:L3z-XVX_yak:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/KVmNhHZ5WeI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/03/10/git-cheat-sheet-fur-den-schnellen-uberblick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[MS SQL] Datenbanksnapshots für Entwickler und Supporter</title>
		<link>http://www.anrichter.net/blog/2010/02/28/ms-sql-datenbanksnapshots-fur-entwickler-und-supporter/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ms-sql-datenbanksnapshots-fur-entwickler-und-supporter</link>
		<comments>http://www.anrichter.net/blog/2010/02/28/ms-sql-datenbanksnapshots-fur-entwickler-und-supporter/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 17:46:31 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datenbanksnapshot]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1522</guid>
		<description><![CDATA[Bei der Entwicklung und dem Support von Datenbankanwendungen kommt es des Öfteren vor, dass Daten- oder Strukturänderungen in Datenbanken wiederholt nachvollzogen werden müssen. Sei es um eine neue Funktionalität ausgiebig zu testen oder einen vorhandenen Fehler mit Kundendaten nachzustellen. Was also tun, wenn die vorhandenen Daten nach einem Testlauf in den Ausgangszustand zurückgesetzt werden müssen? [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Entwicklung und dem Support von Datenbankanwendungen kommt es des Öfteren vor, dass Daten- oder Strukturänderungen in Datenbanken wiederholt nachvollzogen werden müssen. Sei es um eine neue Funktionalität ausgiebig zu testen oder einen vorhandenen Fehler mit Kundendaten nachzustellen. Was also tun, wenn die vorhandenen Daten nach einem Testlauf in den Ausgangszustand zurückgesetzt werden müssen? Eine sehr beliebte und wohl häufig anzutreffende Möglichkeit ist das Zurückspielen eines kompletten Backups. Das kann je nach Umfang der Daten jedoch sehr zeitaufwendig sein. Und genau hier kommen Datenbanksnapshots ins Spiel.</p>
<p><span id="more-1522"></span></p>
<p>Mit dem SQL Server 2005 hat Microsoft die Datenbanksnapshots eingeführt. Ein Snapshot ist eine nur lesbare Kopie der Datenbank zum Zeitpunkt seiner Erstellung. Dieser Snapshot kann nun nach Änderungen an den Daten oder der Struktur der Datenbank genutzt werden, um den Ursprünglichen Zustand von Zeilen, Objekten oder der ganzen Datenbank wieder herzustellen. Oder einfach nur um zu gucken, was geändert wurde. Dabei könen pro Datenbank mehrere Snapshots angelegt werden.</p>
<p>Bevor wir nun Änderungen an unserer Datenbank vornehmen, muss ein Snapshot zum späteren Zurücknehmen der Änderungen erstellt werden. Einen Wizard dazu sucht man im SQL Server Management Studio vergebens. Hier ist etwas Handarbeit gefragt. </p>
<p>Als erstes benötigen wir den logischen Namen der Datenbankdatei. Dazu wird im Objektexplorer des Management Studios zu der gewünschten Datenbank gewechselt und von dieser die Eigenschaften per Kontextmenü aufgerufen. In dem Eigenschaftendialog wechseln wir auf die Seite Dateien und kopieren uns den logischen Namen der Datenbankdatei. Ebenfalls von Interesse ist der Speicherort im Dateisystem. </p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/02/LogischerName.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/02/LogischerName-500x413.png" alt="" title="Den logischen Namen einer Datenbank bestimmen" width="500" height="413" class="aligncenter size-large wp-image-1532" /></a></p>
<p>Mit beiden Informationen bewaffnet können wir uns nun in ein Abfragefenster begeben und mit folgendem T-SQL Befehl einen Datenbanksnapshot anlegen.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">USE</span> master;
GO
&nbsp;
<span style="color: #0000FF;">CREATE</span> <span style="color: #0000FF;">DATABASE</span> AdventureWorks_DBSS_1330 <span style="color: #0000FF;">ON</span>
  <span style="color: #808080;">&#40;</span> NAME <span style="color: #808080;">=</span> AdventureWorks_Data, 
    FILENAME <span style="color: #808080;">=</span> <span style="color: #FF0000;">'C:<span style="color: #000099; font-weight: bold;">\P</span>rogram Files<span style="color: #000099; font-weight: bold;">\M</span>icrosoft SQL Server<span style="color: #000099; font-weight: bold;">\M</span>SSQL10.MSLEARNING<span style="color: #000099; font-weight: bold;">\M</span>SSQL<span style="color: #000099; font-weight: bold;">\D</span>ata<span style="color: #000099; font-weight: bold;">\A</span>dventureWorks_Data_DBSS_1330.ss'</span> <span style="color: #808080;">&#41;</span>
<span style="color: #0000FF;">AS</span> SNAPSHOT <span style="color: #0000FF;">OF</span> AdventureWorks;
GO</pre></div></div>

<p>Danach steht uns der eben erstellte Snapshot als Abbild der Datenbank zur Verfügung. Der Snapshot verhält sich ähnlich einer normalen Datenbank im Objektexplorer und in T-SQL Skripten. So können wir die Daten direkt aus dem Snapshot per <code>SELECT</code> Statement abfragen und diese zum Vergleich der geänderten Daten oder zum Wiederherstellen einzelner Zeilen unserer eigentlichen Datenbank nutzen.</p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/02/SnapshotImObjektExplorer.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/02/SnapshotImObjektExplorer.png" alt="" title="Datenbanksnapshot im Objektexplorer" width="289" height="383" class="aligncenter size-full wp-image-1529" /></a></p>
<p>Ausgehend von unserem oben beschriebenen Szenario möchten wir aber nach umfangreichen Änderungen am Datenbestand und/oder der Datenstruktur die Datenbank auf den Zustand des Snapshots zurücksetzen. Das erledigt das folgende Skript:</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">USE</span> master;
GO
&nbsp;
<span style="color: #0000FF;">RESTORE</span> <span style="color: #0000FF;">DATABASE</span> AdventureWorks
<span style="color: #0000FF;">FROM</span> DATABASE_SNAPSHOT <span style="color: #808080;">=</span> <span style="color: #FF0000;">'AdventureWorks_DBSS_1330'</span>;</pre></div></div>

<p>Datenbanksnapshots stellen eine sehr schnelle und einfache Möglichkeit dar sich Zustände von Datenbanken zu sichern. Darüberhinaus stehen diese Zustände für Abfragezwecke zur Verfügung. Als Krönung kann eine komplette Datenbank auf den Zustand eines Snapshots zurückgesetzt werden. Dabei ist zu beachten, dass das Zurücksetzen nur funktioniert, wenn nur ein einziger Snapshot vorhanden ist. Das liegt in der Datenspeicherung der Snapshots begründet. </p>
<p>Ein sehr schönes Feature wie ich finde, welches hervorragend für Entwickler und Supporter geeignet ist, die oft Datenbankänderungen schnell rückgängig machen müssen. Leider setzen Datenbanksnapshots einen SQL Server der Enterprise Klasse voraus. Was zumindest bei Entwicklern, dank der Developer Edition gegeben sein dürfte.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/gmuPa6ckB6p6tCj1k1b93hRbIfI/0/da"><img src="http://feedads.g.doubleclick.net/~a/gmuPa6ckB6p6tCj1k1b93hRbIfI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gmuPa6ckB6p6tCj1k1b93hRbIfI/1/da"><img src="http://feedads.g.doubleclick.net/~a/gmuPa6ckB6p6tCj1k1b93hRbIfI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=W5cfm1uT68g:Pptfo8po-Fg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=W5cfm1uT68g:Pptfo8po-Fg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=W5cfm1uT68g:Pptfo8po-Fg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=W5cfm1uT68g:Pptfo8po-Fg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=W5cfm1uT68g:Pptfo8po-Fg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=W5cfm1uT68g:Pptfo8po-Fg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=W5cfm1uT68g:Pptfo8po-Fg:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/W5cfm1uT68g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/02/28/ms-sql-datenbanksnapshots-fur-entwickler-und-supporter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter liebt Open Source</title>
		<link>http://www.anrichter.net/blog/2010/02/24/twitter-liebt-open-source/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=twitter-liebt-open-source</link>
		<comments>http://www.anrichter.net/blog/2010/02/24/twitter-liebt-open-source/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 19:38:54 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1510</guid>
		<description><![CDATA[Was wäre Twitter ohne Open Source? Nicht existent. Der erfolgreiche Kurznachrichtendienst ist wohl eine der bekanntesten Anwendungen die größten Teils mit Ruby on Rails geschrieben sind. Bei solch einem Projekt bleiben Änderungen an vorhandener Software oder Komponenten nicht aus. Und über genau diese Änderungen an Open Source Projekten sowie Eigenentwicklungen von Twitter berichtet eine neu [...]]]></description>
			<content:encoded><![CDATA[<p>Was wäre Twitter ohne Open Source? Nicht existent. Der erfolgreiche Kurznachrichtendienst ist wohl eine der bekanntesten Anwendungen die größten Teils mit Ruby on Rails geschrieben sind. Bei solch einem Projekt bleiben Änderungen an vorhandener Software oder Komponenten nicht aus. Und über genau diese Änderungen an Open Source Projekten sowie Eigenentwicklungen von Twitter berichtet eine neu eingerichtete Website. </p>
<p><span id="more-1510"></span></p>
<p>Auf der <a href="http://twitter.com/about/opensource">Twitter loves Open Source</a> genannten Seite listet der Kurnachrichtendienst alle Projekte auf, an denen die Entwickler mitgearbeitet haben. In erster Linie sind dies einige Ruby GEMs wie <a href="http://github.com/ryanking/simple_uuid">simple_uuid</a>, <a href="http://github.com/nkallen/cache-money">cache_money</a> oder <a href="http://github.com/fauna/cassandra">cassandra</a>. Aber Twitter setzt nicht nur auf Ruby on Rails, sondern auch auf Tools, die in Scala, Java oder C/C++ geschrieben sind. Unter anderem findet man in der Liste auch eine Beteiligung an der <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> samt Passenger. Diese Kombination setze ich übrigens erfolgreich auf meinem eigenen Server ein. </p>
<p>Es ist schön zu sehen, dass Unternehmen mit Open Source Großes leisten können. Und es ist umso erfreulicher zu sehen, dass einige der erfolgreichen Firmen der Community Teile ihrer Arbeit zurückgeben. Eine Win-win-Situation. </p>
<p><a href="http://www.golem.de/1002/73266.html">via</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/G5ucSRNJg4eoWYrGVcvgDvGYs80/0/da"><img src="http://feedads.g.doubleclick.net/~a/G5ucSRNJg4eoWYrGVcvgDvGYs80/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/G5ucSRNJg4eoWYrGVcvgDvGYs80/1/da"><img src="http://feedads.g.doubleclick.net/~a/G5ucSRNJg4eoWYrGVcvgDvGYs80/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=zkl42FRA4_Y:uZjWb8dhZAM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=zkl42FRA4_Y:uZjWb8dhZAM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=zkl42FRA4_Y:uZjWb8dhZAM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=zkl42FRA4_Y:uZjWb8dhZAM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=zkl42FRA4_Y:uZjWb8dhZAM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=zkl42FRA4_Y:uZjWb8dhZAM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=zkl42FRA4_Y:uZjWb8dhZAM:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/zkl42FRA4_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/02/24/twitter-liebt-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welche Plugins laufen bereits mit Rails 3?</title>
		<link>http://www.anrichter.net/blog/2010/02/21/welche-plugins-laufen-bereits-mit-rails-3/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=welche-plugins-laufen-bereits-mit-rails-3</link>
		<comments>http://www.anrichter.net/blog/2010/02/21/welche-plugins-laufen-bereits-mit-rails-3/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 10:36:40 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1506</guid>
		<description><![CDATA[Die nächste große Version von Rails steht vor der Tür. Eine erste öffentliche Beta ist bereit zum Testen. Rails 3 bringt viele Änderungen an der API mit, sodass eigene Projekte vor dem Laufen mit dem neuen Rails angepasst werden müssen. Bei eigenen Projekten stellt das in der Regel nicht solch ein großes Problem dar. Anders [...]]]></description>
			<content:encoded><![CDATA[<p>Die nächste große Version von Rails steht vor der Tür. Eine <a href="http://www.anrichter.net/blog/2010/02/05/rails-3-0-wirft-seine-schatten-voraus/">erste öffentliche Beta ist bereit zum Testen</a>. Rails 3 bringt viele Änderungen an der API mit, sodass eigene Projekte vor dem Laufen mit dem neuen Rails angepasst werden müssen. Bei eigenen Projekten stellt das in der Regel nicht solch ein großes Problem dar. Anders sieht es bei den eingesetzten Plugins Dritter aus. Sind diese bereits mit Rails 3 lauffähig?</p>
<p><span id="more-1506"></span></p>
<p>Diese Frage stellten sich auch die Entwickler von <a href="http://www.engineyard.com/">Engine Jard</a> und haben kurzerhand eine neue Communityseite ins Leben gerufen, die Licht ins Dunkel bringen soll. Auf <a href="http://railsplugins.org">RailsPlugins.org</a> sind bereits etliche Plugins mit entsprechenden Hinweise zur Lauffähigkeit auf Rails 3, Ruby 1.9, JRuby sowie zur Threadsicherheit gelistet. Jeder Entwickler kann seine eigenen oder seine genutzten Plugins auf der Plattform registrieren und die gemachten Erfahrungen zur Lauffähigkeit hinterlegen. Somit entsteht ein Nachschlagewerk für die Rails-Gemeinschaft. </p>
<p>Ein schönes und vor allem einfaches Projekt mit einem hohen Nutzwert, wie ich finde.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/IKeG7kIy3Y_OCww0AGvw9-nA_Uw/0/da"><img src="http://feedads.g.doubleclick.net/~a/IKeG7kIy3Y_OCww0AGvw9-nA_Uw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/IKeG7kIy3Y_OCww0AGvw9-nA_Uw/1/da"><img src="http://feedads.g.doubleclick.net/~a/IKeG7kIy3Y_OCww0AGvw9-nA_Uw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RNc_ytgHG4w:0QYuggNxdFA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RNc_ytgHG4w:0QYuggNxdFA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RNc_ytgHG4w:0QYuggNxdFA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RNc_ytgHG4w:0QYuggNxdFA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RNc_ytgHG4w:0QYuggNxdFA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RNc_ytgHG4w:0QYuggNxdFA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RNc_ytgHG4w:0QYuggNxdFA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/RNc_ytgHG4w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/02/21/welche-plugins-laufen-bereits-mit-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[MS SQL] Kein Zugriff mehr mit sysadmin Rechten</title>
		<link>http://www.anrichter.net/blog/2010/02/20/ms-sql-kein-zugriff-mehr-mit-sysadmin-rechten/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ms-sql-kein-zugriff-mehr-mit-sysadmin-rechten</link>
		<comments>http://www.anrichter.net/blog/2010/02/20/ms-sql-kein-zugriff-mehr-mit-sysadmin-rechten/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 16:11:19 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1490</guid>
		<description><![CDATA[Es musste ja irgendwann passieren. Da spiele ich mit den Anmeldungen einer meiner SQL Server Instanzen herum, um einer Kollegin die Rechteverwaltung zu zeigen und schwupps, habe ich meinem einzigen Zugang mit sysadmin Rechten eben genau diese entfernt. Der Versuch, meinem Benutzer die Rechte wiederzugeben schlägt logischerweise fehl. Ich habe ja keine Rechte mehr dafür. [...]]]></description>
			<content:encoded><![CDATA[<p>Es musste ja irgendwann passieren. Da spiele ich mit den Anmeldungen einer meiner SQL Server Instanzen herum, um einer Kollegin die Rechteverwaltung zu zeigen und schwupps, habe ich meinem einzigen Zugang mit sysadmin Rechten eben genau diese entfernt. Der Versuch, meinem Benutzer die Rechte wiederzugeben schlägt logischerweise fehl. Ich habe ja keine Rechte mehr dafür. </p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/02/FehlendeRechte.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/02/FehlendeRechte-500x176.png" alt="" title="Keine sysadmin Rechte mehr vorhanden" width="500" height="176" class="aligncenter size-large wp-image-1495" /></a></p>
<p>Was also tun? Die Instanz neu aufsetzen wäre eine Möglichkeit gewesen. Wichtige Daten sind dort nicht vorhanden, da ich die Instanz zum Entwickeln nutze. Aber es muss doch auch einen anderen Weg geben. Vergleichbares kann ja durchaus auch auf einem produktiven System passieren. Und ja &#8211; es gibt einen Weg seinem Benutzer wieder die sysadmin Rolle zu geben. Das Zauberworte hier heissen Einzelbenutzermodus und dedizierte Administratorverbindung.</p>
<p><span id="more-1490"></span></p>
<p>Zur Wiederherstellung meiner Rechte benötige ich auf dem Rechner, auf dem der SQL Server läuft einen Zugang mit Administratorrechten. Ohne die habe ich keine Möglichkeit gefunden. Zuerst beende ich den Dienst der betroffenen Instanz und starte ihn danach im Einzelbenutzermodus. Das ganze geschieht von einer Eingabeaufforderung mit Administratorrechten aus.</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">net stop MSSQL$INSTANZNAME
<span style="color: #b1b100; font-weight: bold;">cd</span> C:\Program Files\Microsoft SQL Server\MSSQL10.INSTANZNAME\MSSQL\Binn&gt;
sqlservr.exe -m -s INSTANZNAME</pre></div></div>

<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/02/Einzelbenutzermodus.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/02/Einzelbenutzermodus-500x258.png" alt="" title="SQL Server im Einzelbenutzermodus" width="500" height="258" class="aligncenter size-large wp-image-1497" /></a></p>
<p>Der letzte Befehl gibt mir einige Statusmeldungen der SQL Server Instanz in der Konsole aus. Diese darf nicht geschlossen werden, da sonst der Serverprozess beendet wird. Also benötige ich für die Verbindung zum SQL Server eine zweite Eingabeaufforderung mit Administratorrechten. Von der aus verbinde ich mich mit der im Einzelbenutzermodus laufenden Instanz über eine dedizierte Administratorverbindung.</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">sqlcmd -A -S SQLSERVER\MSLEARNING</pre></div></div>

<p>Über diese Verbindung habe ich administrativen Zugriff auf die SQL Server Instanz und kann per T-SQL meinem Benutzer wieder die Rolle sysadmin zuweisen.</p>

<div class="wp_syntax"><div class="code"><pre class="tsql" style="font-family:monospace;"><span style="color: #0000FF;">EXEC</span> master..<span style="color: #AF0000;">SP_ADDSRVROLEMEMBER</span> @loginame <span style="color: #808080;">=</span> N<span style="color: #FF0000;">'DOMAINE<span style="color: #000099; font-weight: bold;">\b</span>enutzer'</span>, @rolename <span style="color: #808080;">=</span> N<span style="color: #FF0000;">'sysadmin'</span>
GO
quit</pre></div></div>

<p>Danach kann ich die beiden Eingabeaufforderungen schliessen, den SQL Server Dienst ganz normal starten und mich wieder über administrative Rechte mit meiner Benutzerkennung freuen.</p>
<p>Ich finde den Weg durchaus gangbar und vor allem schneller und schmerzfreier als eine Neuinstallation. Wenn ihr einen noch einfacheren Weg kennt, dann rein damit in die Kommentare. Die eingesparte Zeit kann schließlich jeder gut gebrauchen <img src='http://www.anrichter.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/Bles0PsGD33VOL7jkwko9EiGtkE/0/da"><img src="http://feedads.g.doubleclick.net/~a/Bles0PsGD33VOL7jkwko9EiGtkE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Bles0PsGD33VOL7jkwko9EiGtkE/1/da"><img src="http://feedads.g.doubleclick.net/~a/Bles0PsGD33VOL7jkwko9EiGtkE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=XYgtVxb_bmk:0V3eQSsDh20:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=XYgtVxb_bmk:0V3eQSsDh20:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=XYgtVxb_bmk:0V3eQSsDh20:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=XYgtVxb_bmk:0V3eQSsDh20:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=XYgtVxb_bmk:0V3eQSsDh20:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=XYgtVxb_bmk:0V3eQSsDh20:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=XYgtVxb_bmk:0V3eQSsDh20:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/XYgtVxb_bmk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/02/20/ms-sql-kein-zugriff-mehr-mit-sysadmin-rechten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails 3.0 wirft seine Schatten voraus</title>
		<link>http://www.anrichter.net/blog/2010/02/05/rails-3-0-wirft-seine-schatten-voraus/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rails-3-0-wirft-seine-schatten-voraus</link>
		<comments>http://www.anrichter.net/blog/2010/02/05/rails-3-0-wirft-seine-schatten-voraus/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:23:20 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1485</guid>
		<description><![CDATA[Viele Rails-Entwickler warten sehnsüchtig auf die neue Version 3.0. Die soll neben etlichen Fehlerbehebungen auch viele neue und überarbeitete Features bieten. Allen voran die Integration von MERB, ein überarbeiteter Router für bessere RESTful Anwendungen, eine neue Mailer API, die die Angst vor Multipart Nachrichten nimmt und eine überarbeitete Abfragesprache in ActiveRecord. 

Wer bereits jetzt einen [...]]]></description>
			<content:encoded><![CDATA[<p>Viele Rails-Entwickler warten sehnsüchtig auf die neue Version 3.0. Die soll neben etlichen Fehlerbehebungen auch viele neue und überarbeitete Features bieten. Allen voran die Integration von MERB, ein überarbeiteter Router für bessere RESTful Anwendungen, eine neue Mailer API, die die Angst vor Multipart Nachrichten nimmt und eine überarbeitete Abfragesprache in ActiveRecord. </p>
<p><span id="more-1485"></span></p>
<p>Wer bereits jetzt einen Blick auf die kommende Version werfen möchte, kann sich ab sofort über die erste offizielle Beta von Ruby on Rails 3.0 freuen. Diese kann bequem per GEM installiert werden.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails <span style="color: #660033;">--pre</span></pre></div></div>

<p>Aber Vorsicht: Laut <a href="http://weblog.rubyonrails.org/2010/2/5/rails-3-0-beta-release">Ankündigung im Rails Weblog</a> hat RubyGems derzeit Probleme stabile und Vorabversionen von Rails auf dem gleichen System laufen zu lassen. Es empfiehlt sich also die Installation in einer virtuellen Maschine.</p>
<p>Mit der Beta Version können dann neue Webanwendungen erstellt oder alte auf Rails 3.0 portiert werden. Gefundene Fehler möchten die Entwickler gerne gemeldet bekommen, damit sie bis zur finalen Version von Rails 3.0 noch ausgebügelt werden können. Welche Neuerungen es nun im Detail gibt, verraten die <a href="http://guides.rails.info/3_0_release_notes.html">offiziellen Release Notes</a>.</p>
<p>Ich werde in den nächsten Tagen Rails 3.0 zumindest antesten. Produktive Webanwendungen bleiben aber vorerst auf Rails 2.3.5. Auch wenn ein Screencast von PeepCode zeigt, wie man seine Anwendung innerhalb von <a href="http://blog.peepcode.com/tutorials/2010/live-coding-rails-3-upgrade">25 Minuten auf Rails 3 aktualisieren</a> kann. </p>
<p>Wer ist mutiger als ich? Wer wagt den Sprung ins kalte Wasser und wechselt bereits jetzt zu Rails 3.0?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/sdkPOJ7rnI71dNR4f-BR4NDEDMo/0/da"><img src="http://feedads.g.doubleclick.net/~a/sdkPOJ7rnI71dNR4f-BR4NDEDMo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/sdkPOJ7rnI71dNR4f-BR4NDEDMo/1/da"><img src="http://feedads.g.doubleclick.net/~a/sdkPOJ7rnI71dNR4f-BR4NDEDMo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=rOsrD5p28z0:qcyPfeOpjsA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=rOsrD5p28z0:qcyPfeOpjsA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=rOsrD5p28z0:qcyPfeOpjsA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=rOsrD5p28z0:qcyPfeOpjsA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=rOsrD5p28z0:qcyPfeOpjsA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=rOsrD5p28z0:qcyPfeOpjsA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=rOsrD5p28z0:qcyPfeOpjsA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/rOsrD5p28z0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/02/05/rails-3-0-wirft-seine-schatten-voraus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trac Ticketsystem in die NetBeans IDE integrieren</title>
		<link>http://www.anrichter.net/blog/2010/01/29/trac-ticketsystem-in-die-netbeans-ide-integrieren/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=trac-ticketsystem-in-die-netbeans-ide-integrieren</link>
		<comments>http://www.anrichter.net/blog/2010/01/29/trac-ticketsystem-in-die-netbeans-ide-integrieren/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 11:41:32 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1470</guid>
		<description><![CDATA[Für die Entwicklung mit Ruby on Rails habe ich vor ein paar Wochen NetBeans für mich entdeckt und für die Ticket-Verwaltung setze ich schon seit geraumer Zeit auf Trac. Was liegt nun näher als beide System zu verbinden? Nach einer Suche im Netz bin ich auf das Cubeon genannte Plugin für NetBeans gestoßen. Das verspricht [...]]]></description>
			<content:encoded><![CDATA[<p>Für die Entwicklung mit Ruby on Rails habe ich vor ein paar Wochen <a href="http://www.anrichter.net/blog/2010/01/03/netbeans-als-ruby-on-rails-ide/">NetBeans für mich entdeckt</a> und für die Ticket-Verwaltung setze ich schon seit <a href="http://www.anrichter.net/blog/2007/07/17/neue-projektseite-fur-qsvn/">geraumer Zeit auf Trac</a>. Was liegt nun näher als beide System zu verbinden? Nach einer Suche im Netz bin ich auf das <a href="http://code.google.com/p/cubeon/">Cubeon</a> genannte Plugin für NetBeans gestoßen. Das verspricht die Intergration von Trac-Tickets direkt in die NetBeans IDE.</p>
<p><span id="more-1470"></span></p>
<p>Cubeon nutzt zur Kommunikation mit dem Trac-System XML-RPC. Damit Trac die Anfragen auch ordnungsgemäß beantworten kann, muss eine aktuelle Version vom <a href="http://trac-hacks.org/wiki/XmlRpcPlugin">Trac XML-RPC Plugin</a> installiert werden. Das erledigt man am schnellsten durch das Herunterladen eines vorgefertigten PythonEggs und anschließendes Kopieren in den Plugin-Ordner vom Trac-System. Auf den Cubeon Seiten zum <a href="http://code.google.com/p/cubeon/wiki/GSTracRepository">Trac Repository Connector</a> finden sich Downloads für Python 2.5 und 2.6 Eggs. Einfacher geht es nicht mehr. </p>
<p>Als nächstes muss das Plugin in die NetBeans IDE installiert werden. Da die letzte öffentliche Version 1.0.3.6 einige Probleme mit aktuellen Trac-Versionen hat, muss man sich den letzten Entwicklungsstand installieren. Dazu lädt man sich das <code>cubeon-dev-23-12.zip</code> oder ein neueres von der <a href="http://code.google.com/p/cubeon/">Cubeon Projektseite</a> herunter und entpackt die ZIP-Datei. Die enthaltenen NetBeans Plugins können danach in der IDE über <code>Tools -> Plugins  -> Downloaded</code> installiert werden. Ein anschließender Neustart tut gut, ist aber nicht zwingend notwendig.</p>
<p>Als nächstes kann die Verbindung zum Trac hergestellt werden. Dazu öffnet man über <code>Window -> Cubeon -> Task Repositories</code> ein Fenster zur Verwaltung von Repositories. Dort angelangt kann über das Kontextmenü ein neues Task Repository registriert werden. Der Assisten fragt dabei alle wichtigen Information wie Typ, Alias, Host URL und die Login-Daten ab. Danach erscheint das Repository in der Liste der registrierten.</p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/01/TracRepositoryHinzufuegen.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/01/TracRepositoryHinzufuegen-465x500.png" alt="" title="Ein neues Trac Repository registrieren" width="465" height="500" class="aligncenter size-large wp-image-1473" /></a></p>
<p>Aber damit allein sieht man noch keine Tickets. Dazu müssen Abfragen, analog zu denen aus dem Trac Webinterface, erstellt werden. Über das Kontextmenü zu einem Repository können neue Abragen angelegt werden. In dem Bearbeitungsfenster fragT das Plugin nach einem Namen für die Abfrage sowie den Filterkriterien. Dort stehen alle Filter aus der Trac Umgebung wie Status der Tickets, Meilensteine, Komponenten oder Typen zur Auswahl. Nach dem Speichern der Abfrage startet NetBeans die Synchronisierung und lädt alle zur Abfrage passenden Tickets herunter.</p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/01/QueryBuilder.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/01/QueryBuilder-500x471.png" alt="" title="Eine Abfrage erstellen" width="500" height="471" class="aligncenter size-large wp-image-1474" /></a></p>
<p>Tickets können dann direkt in der IDE bearbeitet und neue angelegt werden. Sämtliche Änderungen werden vorerst lokal durchgeführt und erst auf Wunsch mit dem Trac System abgeglichen. Das erlaubt die Arbeit auch ohne aktive Internetverbindung. Ein super Feature, wie ich finde.</p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/01/NeuesTicket.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/01/NeuesTicket-500x439.png" alt="" title="Neues Ticket anlegen" width="500" height="439" class="aligncenter size-large wp-image-1475" /></a></p>
<p>Wer mit NetBeans und Trac arbeitet sollte sich das Plugin auf alle Fälle einmal ansehen. Der erste Eindruck ist schon recht gut. In den nächsten Tagen und Wochen wird sich die Praxistauglichkeit zeigen. Einzig die Verbindung zu einem HTTPS-Host mit einem privaten Zertifikat wollte nicht klappen. Vielleicht hat dazu jemand einen Tip für mich?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/gGA__haGAOmxnmdDe7p8WgTJUPM/0/da"><img src="http://feedads.g.doubleclick.net/~a/gGA__haGAOmxnmdDe7p8WgTJUPM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gGA__haGAOmxnmdDe7p8WgTJUPM/1/da"><img src="http://feedads.g.doubleclick.net/~a/gGA__haGAOmxnmdDe7p8WgTJUPM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KXVJFnUZZvQ:ugosn559Bpc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KXVJFnUZZvQ:ugosn559Bpc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=KXVJFnUZZvQ:ugosn559Bpc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KXVJFnUZZvQ:ugosn559Bpc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=KXVJFnUZZvQ:ugosn559Bpc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=KXVJFnUZZvQ:ugosn559Bpc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=KXVJFnUZZvQ:ugosn559Bpc:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/KXVJFnUZZvQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/01/29/trac-ticketsystem-in-die-netbeans-ide-integrieren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kostenlose Webinare der Linux Foundation</title>
		<link>http://www.anrichter.net/blog/2010/01/28/kostenlose-webinare-der-linux-foundation/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=kostenlose-webinare-der-linux-foundation</link>
		<comments>http://www.anrichter.net/blog/2010/01/28/kostenlose-webinare-der-linux-foundation/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 17:33:00 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Foundation]]></category>
		<category><![CDATA[Wissen]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1459</guid>
		<description><![CDATA[Wissen ist immer gut. Und noch besser ist es, wenn das Wissen kostenlos zur Verfügung steht. Das denken sich auch einige Leute bei der Linux Foundation. Die Organisation rund um den Linux Kernel startet zum 1. März eine Reihe kostenloser Webinare zum Linux Kernel, der Community und verwandten Themen.

Das erste Webinar lautet &#8220;How to contribute [...]]]></description>
			<content:encoded><![CDATA[<p>Wissen ist immer gut. Und noch besser ist es, wenn das Wissen kostenlos zur Verfügung steht. Das denken sich auch einige Leute bei der Linux Foundation. Die Organisation rund um den Linux Kernel startet zum 1. März eine Reihe kostenloser Webinare zum Linux Kernel, der Community und verwandten Themen.</p>
<p><span id="more-1459"></span></p>
<p>Das erste Webinar lautet <a href="http://training.linuxfoundation.org/lp/sign-up-for-the-free-linux-training-webinar-1">&#8220;How to contribute to the Linux Community&#8221;</a> und wird vom Kernel-Entwickler Jon Corbet gehalten. Wer am Webinar teilnehmen möchte, muss sich auf den Seiten der Linux Foundation dazu <a href="http://training.linuxfoundation.org/lp/sign-up-for-the-free-linux-training-webinar-1">anmelden</a>. Einmal registriert, wird man über künftige Webinare informiert. Und die Liste der bisher geplanten Vorträge ist beachtlich:</p>
<ul>
<li>&#8220;How to Work with the Linux community&#8221; von Jon Corbet</li>
<li>&#8220;An Introduction to Git&#8221; von James Bottomley</li>
<li>“Linux System Troubleshooting and Tuning” von Joe “Zonker” Brockmeier</li>
<li>“Linux Administration 101” von Joe “Zonker” Brockmeier</li>
<li>“A Linux Filesystem Overview” von Christoph Hellwig</li>
<li>“Linux Virtualized Storage” von Christoph Hellwig</li>
<li>“Btrfs: An Intro and Update” von Chris Mason</li>
<li>“Linux Performance Tuning” von Ted Ts’o</li>
</ul>
<p><a href="http://training.linuxfoundation.org/lp/sign-up-for-the-free-linux-training-webinar-series"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/01/SingUpNow-499x92.png" alt="" title="Sing up now" width="499" height="92" class="aligncenter size-large wp-image-1465" /></a></p>
<p>Meine Registrierung ist unterwegs. Einige der Themen sind wirklich interessant für mich.</p>
<p><a href="http://www.golem.de/1001/72696.html">via</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/dzH89Ou2gnEIvBVq-Z_GyYLiD7M/0/da"><img src="http://feedads.g.doubleclick.net/~a/dzH89Ou2gnEIvBVq-Z_GyYLiD7M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dzH89Ou2gnEIvBVq-Z_GyYLiD7M/1/da"><img src="http://feedads.g.doubleclick.net/~a/dzH89Ou2gnEIvBVq-Z_GyYLiD7M/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RFsx9lxnLOQ:x1Mt4ILCONI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RFsx9lxnLOQ:x1Mt4ILCONI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RFsx9lxnLOQ:x1Mt4ILCONI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RFsx9lxnLOQ:x1Mt4ILCONI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RFsx9lxnLOQ:x1Mt4ILCONI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RFsx9lxnLOQ:x1Mt4ILCONI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RFsx9lxnLOQ:x1Mt4ILCONI:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/RFsx9lxnLOQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/01/28/kostenlose-webinare-der-linux-foundation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paketbau mit dem openSUSE Buildservice</title>
		<link>http://www.anrichter.net/blog/2010/01/27/paketbau-mit-dem-opensuse-buildservice/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=paketbau-mit-dem-opensuse-buildservice</link>
		<comments>http://www.anrichter.net/blog/2010/01/27/paketbau-mit-dem-opensuse-buildservice/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:45:44 +0000</pubDate>
		<dc:creator>anrichter</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Buildservice]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[Paketbau]]></category>
		<category><![CDATA[QSvn]]></category>
		<category><![CDATA[RPM]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.anrichter.net/blog/?p=1411</guid>
		<description><![CDATA[Jeder Open-Source-Entwickler möchte seine Software so weit wie möglich verbreiten. Dazu braucht er viele Anwender. Nun sollte man als Entwickler dem Anwender die Installation der eigenen Software so einfach wie möglich machen. Dazu bieten sich die distributionseigenen Paketsystem geradezu an. Nun ist es möglich, für jedes Zielsystem eine eigene virtuelle Maschine aufzusetzen und dort die [...]]]></description>
			<content:encoded><![CDATA[<p>Jeder Open-Source-Entwickler möchte seine Software so weit wie möglich verbreiten. Dazu braucht er viele Anwender. Nun sollte man als Entwickler dem Anwender die Installation der eigenen Software so einfach wie möglich machen. Dazu bieten sich die distributionseigenen Paketsystem geradezu an. Nun ist es möglich, für jedes Zielsystem eine eigene virtuelle Maschine aufzusetzen und dort die jeweiligen Pakete zu bauen. Jedoch ist der Aufwand sehr hoch und auch unnötig. Es geht auch einfacher.</p>
<p><span id="more-1411"></span></p>
<p>Der <a href="https://build.opensuse.org/">openSUSE Buildserver</a> ist schon seit geraumer Zeit im Netz verfügbar. Jedoch habe ich bisher noch keine nähere Bekanntschaft mit der Buildumgebung gemacht. Bis heute. Endlich habe ich es geschafft für die nächste <a href="http://www.anrichter.net/projects/qsvn/">QSvn-Version</a> den Bau von RPM-Paketen vorzubereiten. </p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/01/openSUSEBuildService.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/01/openSUSEBuildService-499x454.png" alt="" title="openSUSE Buildservice" width="499" height="454" class="aligncenter size-large wp-image-1422" /></a></p>
<p>Der openSUSE Buildservice organisiert seine Builds in Projekten und Paketen. Dabei kann jedes Projekt mehrere Pakete beinhalten. Jedes Paket baut ein RPM. Soweit die einfachste Struktur. Da das <a href="http://www.opensuse.org/de/">openSUSE Projekt</a> den Buildservice auch zum Erstellen der eigenen Distribution nutzt, gibt es eine sehr große und ordentlich sortierte Liste öffentlicher Projekte. </p>
<p>Um eigene Pakete bauen lassen zu können, benötigt man als erstes einen <a href="https://secure-www.novell.com/selfreg/jsp/createOpenSuseAccount.jsp?target=https://opensusestage.provo.novell.com">Novell Login</a>. Mit diesem kann man sich dann <a href="https://build.opensuse.org/ICSLogin/?%22https://build.opensuse.org/%22">am Buildservice anmelden</a>. Nach der Anmeldung hat man Zugriff auf das eigene Homeprojekt. In diesem kann man nun nach Belieben weitere Unterprojekte anlegen und Pakete hinzufügen. </p>
<p>Für die Entwicklung der nächsten QSvn-Version habe ich mir als erstes ein Development Projekt samt qsvn-Paket angelegt. Als nächstes musste ich die aktuellen Quellen als -src.tar.gz Paket hochladen. Anschließend braucht der Buildserver noch eine .spec Datei mit Angaben zum RPM-Paket. Wie so eine spec-Datei auszusehen hat, kann man in den <a href="http://en.opensuse.org/Packaging/SUSE_Package_Conventions">SUSE Package Conventions</a> nachlesen. </p>
<p>Nachdem die Quellen und das spec-File hochgeladen sind, bleibt nur noch die gewünschten Build Repositories für die verschiedenen Distributionen zum Projekt hinzuzufügen. Dabei stehen derzeit mehrere Versionen von SUSE, Fedora, Red Hat, CentOS und Mandriva zur Auswahl. Sind die gewünschten Repositories hinzugefügt, werden die Builds in eine riesige Warteliste eingefügt und sobald möglich gebaut. </p>
<p><a href="http://www.anrichter.net/blog/wp-content/uploads/2010/01/RepositoryHinzufuegen.png"><img src="http://www.anrichter.net/blog/wp-content/uploads/2010/01/RepositoryHinzufuegen-499x457.png" alt="" title="Build Repository hinzufügen" width="499" height="457" class="aligncenter size-large wp-image-1420" /></a></p>
<p>Zum Bauen der einzelnen Pakete startet der Buildservice jeweils eine sauber, mit XEN virtualisierte Distribution. Danach werden die benötigten Pakete installiert und der Compilier- und Packvorgang gestartet. Somit ist sichergestellt, dass jedes Paket in einer sauberen Umgebung erstellt wird. Ohne Störeinflüsse von dritten ausgesetzt zu sein. Perfekt.</p>
<p>Die erstellten Pakete landen nach erfolgreichem Bauen in Paketrepositories und können von dort über die <a href="http://software.opensuse.org">Softwaresuche</a> ganz bequem auf den Rechnern der Anwender installiert werden. Und wer weiß, vielleicht landet somit das eigene Programm irgendwann in einer der offiziellen Distribution. <img src='http://www.anrichter.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ich finde den frei verfügbaren Service, den Novell dort aufgebaut hat, hervorragend. Zum Einen bringt es enorme Vorteile und Erleichterungen für den einzelnen Entwickler und zum Anderen haben Anwender eine zentrale Anlaufstelle zum Installieren von Software. Übrigens kann der Buildservice auch DEB-Pakete für Debian und xUbuntu erstellen. </p>

<p><a href="http://feedads.g.doubleclick.net/~a/rb0sO78KILEonEWHIeFUiedpXn8/0/da"><img src="http://feedads.g.doubleclick.net/~a/rb0sO78KILEonEWHIeFUiedpXn8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rb0sO78KILEonEWHIeFUiedpXn8/1/da"><img src="http://feedads.g.doubleclick.net/~a/rb0sO78KILEonEWHIeFUiedpXn8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RIpQxGV9IX4:QG7oIqyfuM0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/anrichter/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RIpQxGV9IX4:QG7oIqyfuM0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RIpQxGV9IX4:QG7oIqyfuM0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RIpQxGV9IX4:QG7oIqyfuM0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RIpQxGV9IX4:QG7oIqyfuM0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/anrichter/content?a=RIpQxGV9IX4:QG7oIqyfuM0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/anrichter/content?i=RIpQxGV9IX4:QG7oIqyfuM0:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/anrichter/content/~4/RIpQxGV9IX4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anrichter.net/blog/2010/01/27/paketbau-mit-dem-opensuse-buildservice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
