<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bassistance.de &#187; Getting Started</title>
	<atom:link href="http://bassistance.de/category/getting-started/feed/" rel="self" type="application/rss+xml" />
	<link>http://bassistance.de</link>
	<description>Jörn Zaefferer on Bass, Geeks and Rock'n'Roll</description>
	<lastBuildDate>Wed, 25 Jan 2012 18:34:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Welche IT darfs denn sein?</title>
		<link>http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/</link>
		<comments>http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/#comments</comments>
		<pubDate>Mon, 09 Apr 2007 10:27:56 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/</guid>
		<description><![CDATA[Mehrere Bekannte von mir sind auf bestem Wege, ihr Diplominformatikstudium abzuschließen. Sie müssen jetzt oder in einem Jahr nur noch ihre Diplomarbeit schreiben. Meine Frage, worüber sie denn schreiben wollen, oder sogar wo sie denn später sich bewerben wollen, konnte mir bisher keiner beantworten. Nun könnte es enorm helfen, die zweite Frage zu klären, um [...]]]></description>
			<content:encoded><![CDATA[<p>Mehrere Bekannte von mir sind auf bestem Wege, ihr Diplominformatikstudium abzuschließen. Sie müssen jetzt oder in einem Jahr nur noch ihre Diplomarbeit schreiben. Meine Frage, worüber sie denn schreiben wollen, oder sogar wo sie denn später sich bewerben wollen, konnte mir bisher keiner beantworten.</p>
<p>Nun könnte es enorm helfen, die zweite Frage zu klären, um dann auch die erste zu beantworten.</p>
<p>Im Laufe meiner Bewerbungen Anfang letzten Jahres ist mir einigermaßen klar geworden, welche Bereiche der IT es gibt. Ich unterscheide der Einfachheit halber zwischen zweien: Consulting und der ganze Rest.</p>
<p>Das erste Beispiel, das mir bei &#8220;dem ganzen Rest&#8221; immer einfällt, ist die IT-Abteilung von Firma XYZ. Firma XYZ ist eine Autoteilezulieferer, stellt also z.B. für Opel oder Mercedes Metall- und Plastikteile her, die später zum Zusammenbau eines kompletten PKWs verwendet werden. XYZ hat mehrere Hundert Mitarbeiter und braucht natürlich eine entsprechende Personalverwaltung. XYZ kauft natürlich Werkzeuge (gern auch mal im Tonnenbereich für ein Werkzeug) und alle möglichen Rohmaterialien ein. Benötigt also ein Warenwirtschaftssystem, z.B. SAP. All die Mitarbeiter, die mit SAP arbeiten, benötigen ihren eigenen PC, der gepflegt werden muss. Dafür gibt es zwar wieder Hilfsmittel, mit denen man zentral ein ganzes Netzwerk administrieren kann, z.B. über Nacht Rechner runterfahren und updaten, aber auch diese müssen installiert oder beherrscht werden.<br />
Alles in allem also reichlich Arbeit, um eine komplette IT-Abteilung Tag und Nacht auf Trab zu halten. Da bei XYZ natürlich in drei Schichten gearbeitet wird, muss wahrscheinlich auch nachts noch jemand aus der IT zur Stelle sein, oder wenigtens auf Bereitschaft.</p>
<p>Ich selbst arbeite jetzt seit einem Jahr im Consulting-Bereich, und bin damit auch sehr zufrieden.</p>
<p>Nehmen wir mal Consulting-Firma LLK als Beispiel: Neben zwei Mitarbeitern kümmert sich auch einer der beiden Geschäfsführer um den Vertrieb, der Kunden und Projekte ranholt. Drei Projektleiter managen diese Projekte, schreiben Angebote und verteilen Projekte an die 20 Entwickler. Sieben der Entwickler arbeiten allerdings nicht in den Büros von LLK, sondern sitzen Vollzeit bei verschiedenen Kunden vor Ort. Einige zur reinen Entwicklung, andere mehr in beratender Funktion. Von den 20 Leuten sind auch vier Subcontractors, kurz Subco, auch bekannt als Freelancer oder freie Mitarbeiter. Diese arbeiten meist nur an einzelnen Projekten mit, bekommen nicht die Sicherheit einer Festanstellung, dafür aber aufgrund ihres projektbezogenen Expertenwissens potenziell bessere Bezahlung. Ansonsten gibt es noch Mitarbeiter, die sich um Administration und Buchhaltung kümmern.</p>
<p>Die ersten Projekte von LLK waren alle Maßanfertigungen: Ein Kunde benötigte eine bestimmte Anwendung, diese wurde für ihn entwickelt und gepflegt. Bis auf die Erfahrungen, die zwischen den Entwicklern ausgetauscht wurden, gab es keine Synergien mit anderen Projekten. Nach ein paar Jahren wurde ein bestimmter Typ von Anwendungen ausgemacht, den viele Kunden von LLK benötigen. Es enstand ein Produkt. Ein prominentes Beispiel für ein Produkt wäre z.B. Microsoft Word. Weitere Jahre später hat LLK eine ganze Reihe von Produkten entwickelt und daraus eine Produktlinie gemacht. So wurde auch aus MS Word oder Excel die Office Produktlinie. Oder aus diversen Einzelprodukten das Komplettpaket SAP.<br />
Doch warum überhaupt Produkte? Es ist doch viel schwerer eine Anwendung zu entwickeln, mit denen viele Kunden zufrieden sind, als eine Anwendung zu schreiben, die auf die Wünsche eines einzelnen Kunden angefertigt wird. Mal abgesehen, das diese Ansicht bereits zweifelhaft ist, entscheidend ist der Kostenfaktor: Das Design und Entwickeln eines PKWs verursacht genauso Kosten wie die Produktion jeder einzelnen Instanz dieses Modells. Bei der Softwareentwicklung hingegen kostet die Duplizierung nichts. Eine einmal entwickelte Software kann beliebig oft verkauft werden, ohne nenneswerte Produktionskosten für jede einzelne Kopie. Dank Breitbandinternet wird heutzutage ohnehin häufig direkt über das Internet verkauft und verteilt, sei es eine Webanwendung als war-Datei oder PC-Spiele per Steam.</p>
<p>Was mich am Consulting reizt, sind die ständig wechselenden Herausforderungen. Heute entwickelt man noch J2EE-basierte Portlet-Webanwendungen, morgen auf Basis von Eclipse RCP, übermorgen muss es auf beidem laufen&#8230; Für kein Projekt steht genug Zeit zur Verfügung, um es richtig zu machen, doch macht man es falsch, ist man noch Monate mit Bugfixing beschäftigt. Und wenn man Fehlerquellen in Code suchen muss, den man ein paar Monate nicht angerührt hat, wird es noch wesentlich schwieriger.<br />
Und auch wenn sich aus den einzelnen Anwendungen kein Produkt entwickeln lässt, so sind mit Sicherheit Gemeinsamkeiten vorhanden. Lohnt es sich, die Gemeinsamkeiten in ein firmeninternes Framework zu extrahieren? Findet man die Zeit, das auch entsprechend zu dokumentieren?</p>
<p>Mittlerweile bin ich mir sehr sicher, das man mit einem Prinzip sehr viele dieser Probleme erschlagen kann, auch wenn es enorm schwer sein kann, das immer durchzuziehen: Don&#8217;t repeat yourself, kurz, DRY. Wir haben zwei Webanwendungen, die jeweils im UI eine Datumsauswahl haben? Schreiben wir doch einen Datepicker und verwenden den in beiden.</p>
<p>Noch zuletzt ein Aspekt, der durchaus ein großen Einfluss auf die Beantwortung der ersten beiden Fragen haben kann: Der Standort. Im ganzen Oberbergischen habe ich nur eine Consulting-Firma gefunden, Firmen mit IT-Abteilungen gibt es hingegen reichlich. Im Kölner Raum gibt es hingegen einen ganzen Haufen an Consulting-Firmen, was zunächst einmal die Jobsuche deutlich vereinfacht. Nun ist das Wohnen in Köln allerdings auch deutlich teurer.</p>
<p>Hoffe, hiermit bei der Beantwortung der ein oder anderen Frage behilflich gewesen zu sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/feed/</wfw:commentRss>
		<slash:comments>-5</slash:comments>
		</item>
		<item>
		<title>Unobtrusive &#8220;clear searchfield on focus&#8221;</title>
		<link>http://bassistance.de/2007/01/23/unobtrusive-clear-searchfield-on-focus/</link>
		<comments>http://bassistance.de/2007/01/23/unobtrusive-clear-searchfield-on-focus/#comments</comments>
		<pubDate>Tue, 23 Jan 2007 21:59:22 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/01/23/unobtrusive-clear-searchfield-on-focus/</guid>
		<description><![CDATA[A very common yet annoying task in daily webdeveloping is to clear the text displayed in a search field, when the field is focused. And even better, the text should be restored when the user leaves the input field empty. The naive approach uses inline onblur and onclick javascript, or maybe at least onblur and [...]]]></description>
			<content:encoded><![CDATA[<p>A very common yet annoying task in daily webdeveloping is to clear the text displayed in a search field, when the field is focused. And even better, the text should be restored when the user leaves the input field empty.</p>
<p>The naive approach uses inline onblur and onclick javascript, or maybe at least onblur and onfocus (handles both keyboard and mouse navigation). The inline script then checks for a certain value on focus, and deletes it, and restores that value on blur when the field is empty. Problematic is the hardcoded value: Once someone feels like the default value of the field should display something more helpful, the scripts have to be fixed, too.</p>
<p>At least this approached was used on this site for quite a long time. While I could blame the author of the original wordpress theme used here (or my lack of knowledge about DOM and JavaScript at that time), I&#8217;m trying to improve things, and share it.</p>
<p>So I went ahead, removed that ugly inline script, and added a bit jQuery magic:</p>
<pre><code>$("#s").focus(function() {
	if( this.value == this.defaultValue ) {
		this.value = "";
	}
}).blur(function() {
	if( !this.value.length ) {
		this.value = this.defaultValue;
	}
});</code></pre>
<p>The important idea here is to use &#8220;defaultValue&#8221;, as it provides the value as seen in the HTML markup, rather then the value entered by the user. So no matter what actual value is provided in the markup, the script works as intended. I&#8217;d call that &#8220;unobtrusive&#8221;.</p>
<p>While having unobtrusive scripts is great, reusing those scripts is even better. jQuery to the rescue, once more!</p>
<pre><code>$.fn.search = function() {
	return this.focus(function() {
		if( this.value == this.defaultValue ) {
			this.value = "";
		}
	}).blur(function() {
		if( !this.value.length ) {
			this.value = this.defaultValue;
		}
	});
};
$("#s").search();</code></pre>
<p>The transfer from a plain script to a reuseable plugin could hardly be any easier. The plugin is named &#8220;search&#8221;, contains nearly the same code as above, and is then applied to the search field (selected via id).</p>
<p>A confusing thing may be the use of &#8220;this&#8221;. Inside the plugin function, &#8220;this&#8221; refers to the jQuery object, here an object that wraps the input field with the idea &#8220;s&#8221;. The Firebug console would display it as &#8220;[input#s search]&#8220;. Square brackets because a jQuery object is, or rather pretends to be, an array, type of &#8220;input&#8221;, id of &#8220;s&#8221;, name of &#8220;search&#8221;.</p>
<p>Inside the two event handlers for &#8220;focus&#8221; and &#8220;blur&#8221;, &#8220;this&#8221; refers to the DOM element. Plain JavaScript events behave the same, therefore jQuery adopted that style of scope. In this case it is quite handy, because we can access both value and defaultValue properties directly.</p>
<p>Of course our last, or maybe even our first step should be to check if browsers really support both properties used here. To my humble knowledge, this is the case, and we don&#8217;t have to worry about any IE inconsistencies or <a href="http://jquery.com/test/">Safari memory problems</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/01/23/unobtrusive-clear-searchfield-on-focus/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>jQuery Plugin Authoring guide</title>
		<link>http://bassistance.de/2006/12/27/jquery-plugin-authoring-guide/</link>
		<comments>http://bassistance.de/2006/12/27/jquery-plugin-authoring-guide/#comments</comments>
		<pubDate>Wed, 27 Dec 2006 00:03:40 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bassistance.de/2006/12/27/jquery-plugin-authoring-guide/</guid>
		<description><![CDATA[As soon as you start writing your own jQuery plugins, which is highly recommend to organise and reuse your code, you should check out the official jQuery plugin authoring guide. It has evolved quite a lot since it&#8217;s creation and documents several patterns found in jQuery plugins by a lot of different authors. It may [...]]]></description>
			<content:encoded><![CDATA[<p>As soon as you start writing your own jQuery plugins, which is highly recommend to organise and reuse your code, you should check out the official <a href="http://docs.jquery.com/Plugins/Authoring">jQuery plugin authoring guide</a>. It has evolved quite a lot since it&#8217;s creation and documents several patterns found in jQuery plugins by a lot of different authors. It may also help to understand plugin code of other authors.</p>
<p>I added the &#8220;Custom Alias&#8221; section a few minutes ago, which provides a handy pattern that you can use even without jQuery:<br />
<span id="more-126"></span><br />
Above was stated that you should not use the $ alias inside your plugin code. This allows users of jQuery and your plugins to change the alias from &#8220;$&#8221; to something else like &#8220;jQ&#8221;. That is necessary when working with other libraries or frameworks which make use of the &#8220;$&#8221; alias.</p>
<p>On the other hand, we can simply define our own alias (and call it &#8220;$&#8221;) for our plugin code. The trick is to define all plugin code inside a function and execute this function immediatly. The construct looks like this:</p>
<pre><code>(function() {
  // put plugin code here
  var xyz; // xyz is NOT a global variable, it is only visible inside this function
})(); // execute the function immediatly!</code></pre>
<p>The additional parentheses are necessary! You can&#8217;t execute an anonymous function without them.</p>
<p>Ok, now to the fun part:</p>
<pre><code>(function($) {
  // plugin code here, use $ as much as you like
})(jQuery);</code></pre>
<p>We pass &#8220;jQuery&#8221; to the function and can now use whatever alias for jQuery we like. So instead of $ you could also any other valid javascript variable name.</p>
<p>See the <a href="/jquery-plugins/jquery-plugin-tooltip/">tooltip plugin</a> for a plugin that uses this pattern. </p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/12/27/jquery-plugin-authoring-guide/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wiimote am PC nutzen</title>
		<link>http://bassistance.de/2006/12/11/wiimote-am-pc-nutzen/</link>
		<comments>http://bassistance.de/2006/12/11/wiimote-am-pc-nutzen/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 21:48:24 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[Wii]]></category>

		<guid isPermaLink="false">http://bassistance.de/2006/12/11/wiimote-am-pc-nutzen/</guid>
		<description><![CDATA[Nachdem Tomasz mich gestern auf gewisse Videos aufmerksam machte, in denen jemand z.B. Half-Life 2 per Wiimiote steuerte, konnte ich es nicht lassen, und hab mir heute erstmal eine Wiimote mit Bluetoothempfänger gekauft. Eine Wii will ich irgendwann auch noch kaufen, da fehlt mir aber noch eine akzeptable Lösung um die Wii direkt an meinen [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem Tomasz mich gestern auf gewisse Videos <a href="http://www.baalrok.de/index.php/2006/12/10/nintendo-wii/">aufmerksam machte</a>, in denen jemand z.B. Half-Life 2 per Wiimiote steuerte, konnte ich es nicht lassen, und hab mir heute erstmal eine Wiimote mit Bluetoothempfänger gekauft. Eine Wii will ich irgendwann auch noch kaufen, da fehlt mir aber noch eine akzeptable Lösung um die Wii direkt an meinen TFT anzuschliessen.</p>
<p>Der Bluetooth-Adapter ist von &#8220;Silver-Hawk&#8221; und unterstützt Bluetooth 1.2, 10€ kostet er beim Saturn. Treiber und Software liegen auf eine Mini-CD bei. Nach Einstöpseln, Installation, nochmal aus- und wieder einstöpsel erklärt sich dann auch Windows zur Kommunikation mit dem USB-Stöpsel bereit.</p>
<p>Die Wiimote gab es beim Saturn nur im Bundle mit &#8220;Wii Play&#8221;, das mir natürlich im Moment nicht soviel nützt. Ohne das Spiel kostet sie aber wohl auch nur 40 statt 50 Euro. Zwei normale Mignon-Batterien liegen bei. Nachdem diese eingelegt sind und die Bluetooth-Software läuft, muss man die &#8220;1&#8243; und &#8220;2&#8243; tasten kurz gleichzeitig drücken, daraufhin fängt die Wiimote an nach Geräten zu suchen. Zu dem Zeitpunkt sollte die Bluetooth-Software am PC die Wiimote bereits erkennen können, und man kann eine Verbindung herstellen.</p>
<p>Um jetzt die Wiimote zur Steuerung zu nutzen, benötigt man <a href="http://carl.kenner.googlepages.com/glovepie">GlovePIE</a>. GlovePIE (PIE für Programmable Input Emulator) wurde ursprünglich entwickelt, um die Signale von Virtual-Reality (VR) Geräten zu verarbeiten, z.B. Handschuhe mit Sensoren drin. Es unterstützt nun aber auch nativ die Wii-Controller und bietet auch noch einen relativ komfortablen Editor, mit dem sich in einer sehr leicht erlernbaren Scriptsprache alles nötige recht fix programmieren lässt. Z.B. aktivieren folgende Zeilen den eingebauten &#8220;Rumble&#8221; der Wiimote, wenn man diese auf der X-Achse sehr schnell bewegt:</p>
<pre><code>if wiimote.RawForceX >= 100 then
  if var.rmbl = false
    wiimote.Rumble = 1
    wait 200 ms
    wiimote.Rumble = 0
  endif
  var.rmbl = true
else
  var.rmbl = false
endif</code></pre>
<p>GlovePIE ist auch ohne Wiimote ein sehr interessantes Programm. Es lassen sich mit Leichtigkeit Macros für Tastatur oder Maus programmieren, so kann ich z.B. das Volumnenrad an meiner Tastur direkt auf die Lautstärkesteuerung von Winamp mappen, was mit der Hersteller-Software nicht möglich ist. Laut Tomasz ist auch die Sprachsteuerung sehr einfach zu verwenden:</p>
<pre><code>if said("kommando", 2) then aktion</code></pre>
<p>Ich bin mal gespannt, was sich damit noch alles anstellen lässt.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/12/11/wiimote-am-pc-nutzen/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>position: fixed for IE &lt; 7</title>
		<link>http://bassistance.de/2006/11/02/position-fixed-for-ie-7/</link>
		<comments>http://bassistance.de/2006/11/02/position-fixed-for-ie-7/#comments</comments>
		<pubDate>Thu, 02 Nov 2006 14:41:19 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>

		<guid isPermaLink="false">http://bassistance.de/index.php/2006/11/02/position-fixed-for-ie-7/</guid>
		<description><![CDATA[Da ich auf einer gewissen englischsprachigen Mailingliste inzwischen immer bassistance.de in meine Signatur packe, gibt es hier den ersten englischen Eintrag. While IE7 now supports position: fixed, there is still the need to solve that for IE6 and below. The footer on this page is now positioned with the following CSS styles: position: fixed; bottom: [...]]]></description>
			<content:encoded><![CDATA[<p>Da ich auf einer gewissen englischsprachigen Mailingliste inzwischen immer bassistance.de in meine Signatur packe, gibt es hier den ersten englischen Eintrag.</p>
<p>While IE7 now supports position: fixed, there is still the need to solve that for IE6 and below. The footer on this page is now positioned with the following CSS styles:</p>
<pre><code>position: fixed;
bottom: 0;
</code></pre>
<p>That&#8217;s fine for Firefox and Opera. IE7 gets the vertical positioning right, it&#8217;s horizontally confused. But that&#8217;s easy to fix, too:</p>
<pre><code>left: 50%;
margin-left: -390px;
</code></pre>
<p>The value for margin-left is half the width of this layout, just an old trick.</p>
<p>Now to the exiting stuff: position: fixed for IE6 or 5.5/5.0. Starting with an additional stylesheet, included only for IE &lt; 7 via &#8220;conditional comments&#8221;:</p>
<pre><code>&lt;!--[if lt IE 7]>
&lt;link rel="stylesheet" href="path/to/stylesheet/ie-stuff.css" type="text/css" media="screen"/>
&lt;![endif]--></code></pre>
<p>Specifying &#8220;[if lt IE 7]&#8221; says something like &#8220;execute the following code only if this is an IE version below (less then) 7&#8243;.</p>
<p>In the included stylesheet you can find the following:</p>
<pre><code>#footer {
	position: absolute;
	bottom: auto;
	clear: both;
	top:expression(eval(document.compatMode &#038;&#038;
	 document.compatMode=='CSS1Compat') ?
	 documentElement.scrollTop
	 +(documentElement.clientHeight-this.clientHeight) - 1
	 : document.body.scrollTop
	 +(document.body.clientHeight-this.clientHeight) - 1);
}</code></pre>
<p>Starting with &#8220;position: absolute&#8221;, the element is positioned absolute, relative to the viewport. &#8220;bottom&#8221; is reset to &#8220;auto&#8221; and &#8220;clear: both&#8221; is necessary for my layout. The value for &#8220;top&#8221; is now calculated via an expression. This is a IE specificiy extension to use JavaScript from within stylesheet. If &#8220;Active Scripting&#8221;, that&#8217;s JavaScript for IE, is deactivated, the footer is simply positioned below the content, it therefore degrades gracefully.</p>
<p>If you are interested in what exactly that expression is doing: You can find more details in this article on <a title="Article about IE expressions and position:fixed on gunlaug.no" href="http://www.gunlaug.no/contents/wd_additions_15.html">gunlaug.no</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/11/02/position-fixed-for-ie-7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery Getting Started Guide</title>
		<link>http://bassistance.de/2006/09/12/jquery-getting-started-guide/</link>
		<comments>http://bassistance.de/2006/09/12/jquery-getting-started-guide/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 17:52:35 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bassistance.de/index.php/2006/09/12/jquery-getting-started-guide/</guid>
		<description><![CDATA[Update: This guide is now available as part of the offical jQuery documentation Ce guide est aussi disponible en version français Wer beim Webdesign Javascript einsetzen möchte, sollte sich unbedingt jQuery anschauen. jQuery ist eine sehr schlanke und gut dokumentierte Bibliothek, die sich von vergleichbaren Produkten primär durch eine spezielle Syntax absetzt. Für einen gute [...]]]></description>
			<content:encoded><![CDATA[<p>Update: <a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery">This guide is now available as part of the offical jQuery documentation</a></p>
<p><strong><a title="jQuery Getting Started Guide - french" href="http://www.jquery.info/spip.php?article21">Ce guide est aussi disponible en version français</a></strong></p>
<p><img alt="jquery-top.jpg" id="image84" style="margin-left: -15px" src="http://bassistance.de/wp-content/jquery-top.jpg" /><br />
Wer beim Webdesign Javascript einsetzen möchte, sollte sich unbedingt <a href="http://jquery.com">jQuery</a> anschauen. jQuery ist eine sehr schlanke und gut dokumentierte Bibliothek, die sich von vergleichbaren Produkten primär durch eine spezielle Syntax absetzt.</p>
<p>Für einen gute Einstieg in jQuery habe ich einen &#8220;<a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery">jQuery Getting Started Guide</a>&#8221; geschrieben. Dieser setzt lediglich Grundkenntnisse in Javascript und dem Document Object Model (DOM) voraus. Und Englischkenntnisse, da das ganze auf Englisch verfasst ist. Innerhalb des Guides sind reichlich Verweise auf weitere Dokumentationen, Downloads und Erweiterungen.</p>
<p>Empfehlenswert ist die Durcharbeitung zumindest der ersten drei Kapitel. Danach kann es sinnvoll sein, erstmal auf eigene Faust weiter zu experimentieren und z.B. ein konkretes Problem, an dem man sitzt, mit jQuery zu lösen. Die weiteren Kapitel gehen noch noch einiges weiter und behandeln AJAX, Effekte sowie die Benutzung un das Entwickeln von Plugins.</p>
<p>Bei Fragen zum Guide oder jQuery selbst kann ich gerne weiterhelfen.</p>
<p><em>Vielen Dank an Kaio für die obige Illustration, die ursprünglich für eine Präsentation entstanden war.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/09/12/jquery-getting-started-guide/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Getting Started: TeX IDE als Kochrezept</title>
		<link>http://bassistance.de/2006/09/07/getting-started-tex-ide-als-kochrezept/</link>
		<comments>http://bassistance.de/2006/09/07/getting-started-tex-ide-als-kochrezept/#comments</comments>
		<pubDate>Thu, 07 Sep 2006 15:07:07 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>

		<guid isPermaLink="false">http://bassistance.de/index.php/2006/09/07/getting-started-tex-ide-als-kochrezept/</guid>
		<description><![CDATA[Zutaten: Eclipse, z.B. &#8220;Eclipse IDE for Java Developers&#8221; MiKTeX-Distribution TeX-Plugin Foxit PDF-Reader Zubereitung: Eclipse runterladen und entpacken MiKTeX-Setup runterladen und zweimal ausführen TeX-Plugin per Update-Manager installieren Projekt erstellen und PDF-Reader verknüpfen Fertig! Zuviel zur Kurzfassung, jetzt das ganze noch im Detail: Wer TeX noch nicht kennt, dem sei der TeX Wikipedia Artikel empfohlen. Sobald dieses [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" alt="TeX-Logo" id="image78" src="http://bassistance.de/wp-content/TeX_logoVorschaubild.GIF" /><br />
<strong>Zutaten:</strong></p>
<ul>
<li><a href="http://www.eclipse.org/downloads/packages/">Eclipse, z.B. &#8220;Eclipse IDE for Java Developers&#8221;</a></li>
<li><a href="ftp://dante.ctan.org/pub/tex/systems/win32/miktex/setup/">MiKTeX-Distribution</a></li>
<li><a href="http://texlipse.sourceforge.net/">TeX-Plugin</a></li>
<li><a href="http://www.foxitsoftware.com/pdf/rd_intro.php">Foxit PDF-Reader</a></li>
</ul>
<p><strong>Zubereitung:</strong></p>
<ol>
<li>Eclipse runterladen und entpacken</li>
<li>MiKTeX-Setup runterladen und zweimal ausführen</li>
<li>TeX-Plugin per Update-Manager installieren</li>
<li>Projekt erstellen und PDF-Reader verknüpfen</li>
<li>Fertig!</li>
</ol>
<p>Zuviel zur Kurzfassung, jetzt das ganze noch im Detail:</p>
<p>Wer TeX noch nicht kennt, dem sei der <a href="http://de.wikipedia.org/wiki/TeX">TeX Wikipedia Artikel</a> empfohlen. Sobald dieses Grundwissen da ist, gilt es, die zwei Hürden zu überwinden: Zum einen TeX als Sprache zu erlenen, zum anderen einen brauchbaren Editor sowie eine Distribution zu finden. Mit diesem Kochrezept ist das Editor- und Distributionsproblem schnell im Griff.</p>
<p>Als Basis für den Editor wird Eclipse herhalten. Eclipse gibt es in <a href="http://www.eclipse.org/downloads/packages/">diversenen Packages</a>, davon ist im Moment die &#8220;Eclipse IDE for Java Developers&#8221; mit 85MB die kleinste. Wenn Eclipse schon vorhanden ist, kann das runterladen übersprungen werden.</p>
<p>Als nächstes, während Eclipse runterlädt, organisieren wir uns eine TeX-Distribution. Unter Windows sehr bequem zu installieren ist MiKTeX. Auf dem <a href="ftp://dante.ctan.org/pub/tex/systems/win32/miktex/setup/">FTP-Server von dante.de</a> findet man eine mehrere setup-x.x.xxxx.exe sowie basic-miktex-x.x.xxxx.exe. Erstere reichen für unsere Zwecke, davon die mit der aktuellsten Versionsnummer runterladen.</p>
<p>Die Setup-Datei ist knuffig klein und kann fast sofort ausgeführt werden. Während der Installation sollte man &#8220;Download MiKTeX&#8221; auswählen. Es wird nun ein Verzeichnis benötigt, in dem die Distribution zwischengespeichert wird. Ist das Setup beendet, muss man aus diesem Verzeichnis wiederum eine setup.exe starten. Diesmal wählt man dann das eigentliche Installationsverzeichnis aus (z.B. C:\Programme\MiKTeX\).</p>
<p>Das Archiv mit Eclipse sollte jetzt auch fertig heruntergeladen sein. Dieses entpacken wir in ein Verzeichnis unserer Wahl und benennen bei bedarf den Ordner noch um. Bei mir gibt es jetzt unter Programme\Eclipse drei verschiedene Eclipse-Installation, jeweils Eclipse 3.1 und 3.2 mit SDK und WTP und eben Eclipse mit TeX-Plugin.</p>
<p>TeX-Plugin? Genau, das ist unsere dritte Zutat. Die Installation ist ebenfalls recht unkompliziert, wenn man weiß, wie man an den Eclipse-Update-Manager dran kommt. Entscheidend ist die Adresse der Update-Site:</p>
<p><strong><a href="http://texlipse.sourceforge.net/">http://texlipse.sourceforge.net/</a></strong> (dies ist gleichzeitig auch die Homepage des Projekts)</p>
<p>Für Eclipse <= 3.3: Wer noch nicht mit dem Eclipse Update Manager gearbeitet hat, findet diesen unter Help -> Software Updates -> Find and Install. Dort wählt man &#8220;Search for new features to install&#8221;. Damit noch nicht genug, jetzt muss man noch den Button &#8220;New Remote Site&#8230;&#8221; oben rechts anklicken und im auftauchenden Dialog irgendwas als Name angeben (z.B. Texlipse) und als URL &#8220;http://texlipse.sourceforge.net/&#8221;. Das ist der wichtige Teil! Danach taucht in der Liste der &#8220;Sites to include in search&#8221; der neue Eintrag auf. Diesen haken wir an und klicken auf &#8220;Finish&#8221;. Unter &#8220;Select the features to install&#8221; sollte dann ein Eintrag auftauchen, den wir anwählen. Wiederum auf &#8220;Next&#8221;, auf &#8220;I accept the terms in the license agreement&#8221; und auf &#8220;Finish&#8221;. Nach dem Download muss man noch ein paar mal bestätigen und Ja sagen und dann am besten Eclipse neu starten lassen.</p>
<p>Ab Eclipse 3.4 (Ganymed) ist der Update-Manager endlich deutlich vereinfacht worden. Man findet ihn immer noch unter Help, viel mehr als die Update-Site-URL brauch man aber nicht, der Rest ist ziemlich selbsterklärend.</p>
<p>Damit sollte jetzt eine TeX-Distribution, die in der Lage ist, selbstständig fehlende Pakete nachzuladen (sehr nützlich) sowie ein guter Editor mit Outline und Content-Assist zur Verfügung stehen.</p>
<p>Das TeXlipse-Plugin erkennt automatisch die installierte TeX-Distribution, eine Verknüpfung von Hand mit den TeX-Binaries ist daher nicht nötig.</p>
<p>Unser erstes TeX-Dokument können mit File -> New -> Project&#8230; erstellen. Im Wizard Wählen wir unter Texlipse -> LaTeX Project. Unter &#8220;Project name&#8221; wird noch ein Name für das Projekt benötigt. Hier lässt sich auch das &#8220;Output Format&#8221; wählen, ich bevorzuge &#8220;pdf&#8221;. Wer will, kann auf der nächsten Seite noch die Ordnerstruktur weiter verfeinern, die Standardeinstellungen funktionieren aber gut genug.</p>
<p>Wenn wir jetzt das anlegete &#8220;document.tex&#8221; bearbeiten und speichern, wird automatisch ein neuer Output mit dem Namen &#8220;document.pdf&#8221; erstellt.</p>
<p>Betrachten lässt sich das Ergebnis zuerst einmal nur mit Rechtsklick auf die Datei -> Open With -> System Editor. Diese Einstellung merkt sich Eclipse allerdings nur auf Dateibasis. Damit alle .pdf-Dateien mit dem Systemeditor geöffnet werden, sollten wir die Verknüpfung noch ändern. Unter Window -> Preferences -> General -> Editors -> File Associations klicken wir auf &#8220;Add&#8230;&#8221; und geben als File type &#8220;*.pdf&#8221; an. Damit sollte *.pdf in der Liste der File types auftauchen. Jetzt müssen wir nur noch einen Editor damit verknüpfen: Unten auf den &#8220;Add&#8230;&#8221; Button (rechts von &#8220;Associated editors&#8221;) klicken und im sich öffnenden Editor unter &#8220;External Programs&#8221; euren bevorzugten PDF-Reader auswählen. Als PDF-Reader kann ich den <a href="http://www.foxitsoftware.com/pdf/rd_intro.php">Foxit Reader</a> sehr empfehlen. Dieser ist sehr klein und schnell, erreicht allerdings nicht ganz die optische Qualität des Adobe Readers. Die kostenlose Version reicht für den täglichen Bedarf vollkommen aus.</p>
<p>Für die Zusammenarbeit mit Texlipse ist er besonders empfehlenswert, da man leider für jede Änderung das Ausgabe-Dokument neu laden (und vorher schließen) muss. Das ist der einzige größere Schwachpunkt des Systems.</p>
<p>Ansonsten stehen einem natürlich die Vorteile der Eclipse-Plattform zur Verfügung: Ein CVS-Client ist ohnehin schon installiert, SVN lässt sich leicht <a href="http://subclipse.tigris.org/">nachrüsten</a>. Mittlerweile steht auch ein Plugin zum Export per FTP zur Verfügung. Im Update-Manager lässt es sich unter der Site &#8220;The Eclipse Project Updates&#8221; finden und sehr bequem installieren.</p>
<p>Damit sollte eine der beiden Hürden überwunden sein. Aufbauend darauf gibt es demnächst eine kleine Spracheinführung und Beispiele für einfache Artikel. Weitere Themen wären Präsentation und Bewerbungen mit TeX.</p>
<p><strong>Update:</strong><br />
Links für MiKTex (anderer Server) und Eclipse (von 3.2 auf 3.2.1) aktualisiert.</p>
<p><strong>Update 22.7.2008</strong><br />
Artikel stark überarbeitet und auf aktuellen Stand gebracht. Direkte Links für Eclipse und Miktex entfernt und mit längerlebigen Adressen ersetzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/09/07/getting-started-tex-ide-als-kochrezept/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
