<?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>ugotit.de &#187; Tutorial</title>
	<atom:link href="http://ugotit.de/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://ugotit.de</link>
	<description>and I say &#34;It&#039;s all right&#34;</description>
	<lastBuildDate>Fri, 09 Sep 2011 07:16:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Noch mehr Python</title>
		<link>http://ugotit.de/2011/06/20/noch-mehr-python/</link>
		<comments>http://ugotit.de/2011/06/20/noch-mehr-python/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 08:36:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Buch]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=317</guid>
		<description><![CDATA[Normalerweise schaue ich mir ja genauer an, was ich hier verlinke aber da der Oliver richtig Ahnung hat, empfehle ich seinen Link zu einem Python Tutorial mal bedenkenlos hier im Blog. : http://learnpythonthehardway.org/ Kennt ihr noch weitere, gute, Kurse? Oder Bücher, die man mal vorstellen sollte? Ich habe ja schon seit ein paar Monaten Coding [...]]]></description>
			<content:encoded><![CDATA[<p>Normalerweise schaue ich mir ja genauer an, was ich hier verlinke aber da der <a href="https://twitter.com/#!/oliverandrich">Oliver</a> richtig Ahnung hat, empfehle ich seinen Link zu einem Python Tutorial mal bedenkenlos hier im Blog. : <a href="http://learnpythonthehardway.org/">http://learnpythonthehardway.org/</a></p>
<p>Kennt ihr noch weitere, gute, Kurse? Oder Bücher, die man mal vorstellen sollte? Ich habe ja schon seit ein paar Monaten <a href="http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-2260?GPP=webs">Coding for fun mit Python</a> auf dem Schreibtisch liegen und bin begeistert: Genau das Buch, was ich gesucht habe um einen Überblick über eine schöne Auswahl der Möglichkeiten, die Python bietet, zu bekommen ohne den sonst üblichen Einsteigerteil. Also ein echtes Buch für Fortgeschrittene.</p>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2011/06/20/noch-mehr-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein Blog in der Cloud</title>
		<link>http://ugotit.de/2011/05/16/ein-blog-in-der-cloud/</link>
		<comments>http://ugotit.de/2011/05/16/ein-blog-in-der-cloud/#comments</comments>
		<pubDate>Mon, 16 May 2011 19:14:52 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Nettuts]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=304</guid>
		<description><![CDATA[Bei nettuts gibt es einen Beitrag, wie man den eigenen Blog auf den Servern von Amazon also in der Cloud speichern kann. Finde das zunächst einmal spannend glaube aber, es lohnt sich preislich noch nicht. Der Vorteil ist natürlich die passende Performance abhängig von den Besuchern auf der eigenen Seite aber die Preise sprengen dann [...]]]></description>
			<content:encoded><![CDATA[<p>Bei nettuts gibt es einen Beitrag, <a href="http://net.tutsplus.com/tutorials/wordpress/deploy-your-wordpress-blog-to-the-cloud/" title="Deploy your WordPress Blog to the Cloud | Nettuts+">wie man den eigenen Blog auf den Servern von Amazon also in der Cloud speichern kann</a>. Finde das zunächst einmal spannend glaube aber, es lohnt sich preislich noch nicht. Der Vorteil ist natürlich die passende Performance abhängig von den Besuchern auf der eigenen Seite aber die Preise sprengen dann doch relativ den Rahmen von herkömmlichen Webhostern.</p>
<p>Interessant könnte das natürlich für kommerziell erfolgreiche Blogs sein: Die Leistung passt sich den Besucherströmen an und man hat wohl keine Downtime, wenn viel los ist. Ob sich das dann rechnet kann ich natürlich nicht beurteilen.</p>
<p>Wie seht ihr das? Wäre das für Euch interessant oder hat da schon jemand irgendwelche Erfahrungen?</p>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2011/05/16/ein-blog-in-der-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erste Schritte mit Python</title>
		<link>http://ugotit.de/2011/05/08/erste-schritte-mit-python/</link>
		<comments>http://ugotit.de/2011/05/08/erste-schritte-mit-python/#comments</comments>
		<pubDate>Sun, 08 May 2011 10:33:21 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Python Tutorial]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=284</guid>
		<description><![CDATA[Gut, das Feedback bisher war eher mau aber ich fang jetzt einfach mal an zu schreiben. Gibt natürlich schon viele Tutorials zu Python (z.B. hier) und auch gute Bücher (z.B. als openbook hier oder, wenn ihr ein richtiges Buch wollt, hier &#8211; für den Verlag schreibe ich auch selber) aber vielleicht wecke ich ja so [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ugotit.de/wp-content/uploads/2011/05/python.jpg" alt="" title="python" width="200" height="68" class="right" />Gut, das Feedback bisher war eher mau aber ich fang jetzt einfach mal an zu schreiben. Gibt natürlich schon viele Tutorials zu Python (z.B. <a href="http://docs.python.org/tutorial/" title="The Python Tutorial &mdash; Python v2.7.1 documentation">hier</a>) und auch gute Bücher (z.B. <a href="http://openbook.galileocomputing.de/python/" title="Galileo Computing :: Python">als openbook hier</a> oder, wenn ihr ein richtiges Buch wollt, <a href="http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-2640?GPP=webs" title="Einstieg in Python. Ideal f&uuml;r Programmieranf&auml;nger geeignet - Das Buch von Galileo Computing">hier</a> &#8211; für den Verlag schreibe ich auch selber) aber vielleicht wecke ich ja so das Interesse des einen oder anderen zukünftigen Programmierers und mache diese schöne Sprache ein wenig populärer.<span id="more-284"></span></p>
<h3>Welche Version</h3>
<p>Python gibt es momentan in zwei Version 2.x und 3.x. Normalerweise mag ich ja eher hohe Versionsnummern aber gerade bei Python ist die 2.x verbreiteter. Ihr könnt natürlich gerne eine höhere Version bei Euch lokal installieren und mit dieser arbeiten, es wird dann aber ein paar kleine aber feine Unterschiede geben, die ihr Euch selbst beibringen müsst. Soweit mir bekannt kann die Version 2.x auch fast alles, was 3.x kann und für den Einstieg steigen wir ja auch nicht so tief in die Sprache ein.</p>
<h3>Installation</h3>
<p>Unter Mac OS X und Ubuntu habt ihr Python vorab installiert und müsst nicht viel machen. Unter Windows schaut einfach mal <a href="http://www.python.org/download/windows/" title="Python for Windows">hier</a> nach (Ich selber nutze kein Windows, kann also auch kaum Support geben).</p>
<h3>Entwicklungsumgebung</h3>
<p>Hier gibt es zahlreiche Möglichkeiten wobei ich mich mal auf die beschränken möchte, die ich kenne</p>
<ul>
<li><a href="http://eclipse.org/" title="Eclipse - The Eclipse Foundation open source community website.">Eclipse</a> mit <a href="http://pydev.org/" title="PyDev">PyDev</a> (Windows, Linux, Mac OS X) &#8211; für Anfänger sicherlich überdimensioniert. Für erfahrene Entwickler eine tolle IDE. Ich nutze diese Umgebung besonders gerne da ich unter Eclipse auch Java entwickle</li>
<li><a href="http://pythonide.blogspot.com/" title="SPE IDE - Stani's Python Editor">SPE IDE</a> (Stani&#8217;s Python Editor) (Windows, Linux, Mac OS X) &#8211; nette IDE die für Anfänger und Profis gleichermaßen geeignet sein sollte.</li>
<li>Texteditor Deiner Wahl &#8211; reicht absolut. Man braucht nur Syntaxhighlighting. Ich nutze hier unter Ubuntu gerne Geany (ist in den Paketquellen drin)</li>
</ul>
<p>Für die ersten Schritte braucht man nicht wirklich eine IDE. Bestenfalls vielleicht einen Texteditor.</p>
<h3>Hallo Welt</h3>
<p>Ich beziehe mich jetzt mal auf die Linux und Mac OS X Welt: Um loszulegen müsst ihr erstmal nur ein Terminal öffnen und dort folgenden Befehl eingeben:</p>
<ol class="code">
<li><code>python</code></li>
</ol>
<p>Dieser sollte die Python Shell öffnen. Wenn ihr diese wieder schließen wollt gebt einfach folgendes eins:</p>
<ol class="code">
<li><code>quit()</code></li>
</ol>
<p>Wenn ihr nun eine einfache Ausgabe im Terminal haben wollt (der Klassiker: &#8220;Hallo Welt&#8221;) geht dies mit dem Befehl <code>print()</code></p>
<ol class="code">
<li><code>print("Hallo Welt")</code></li>
</ol>
<p>Im Gegensatz zu vielen anderen Programmiersprachen ist nichts weiter nötig um ein Programm auszuführen.</p>
<p>Nun können wir ja etwas mehr ausprobieren und Python ein wenig für uns rechnen lassen. Startet die Python Shell mit <code>python</code> und gebt folgende Zeilen ein:</p>
<ol class="code">
<li><code>a = 7</code></li>
<li><code>b = 6</code></li>
<li><code>c = a * b</code></li>
<li><code>print(&quot;Answer to the Ultimate Question of Life, the Universe, and Everything: &quot;, c)</code></li>
</ol>
<p>Wir haben erstmal drei Variablen, die wir anlegen (a, b und c) wobei a den Wert 7, b den Wert 6 und c den Wert a*b zugewiesen bekommt. Natürlich wollen wir unsere Zahl am Ende auch ausgeben können und nutzen hierfür <code>print()</code>. Hier wäre auch ein einfaches <code>print c</code> möglich aber ich möchte Text und Variable mal kombinieren. Die Zeichenkette (einen <em>String</em>) schreibe ich in Anführungszeichen und hänge mit dem Komma die Variable an. Mehr zu <code>print()</code> kann ich später mal schreiben. Wir sind ja noch am Anfang.</p>
<h3>Ausführbares Programm</h3>
<p>Auch ausführbare Programme lassen sich mit Python relativ einfach erstellen. Erstellt hierfür erstmal eine Datei <em>answer.py</em> und schreibt den Code aus dem vorherigen Beispiel in diese Datei. Speichert diese Datei und wechselt im Terminal (nachdem ihr die Python Shell mit <code>quit()</code> beendet habt) in den Ordner, in dem die Datei <em>answer.py</em> liegt. Dort gebt ihr dann ein:</p>
<ol class="code">
<li><code>python answer.py</code></li>
</ol>
<p>Wenn ihr alles richtig gemacht habt sollte die Ausgabe &#8220;Answer to the Ultimate Question of Life, the Universe, and Everything: 42&#8243; erscheinen.</p>
<p>Nun könnt ihr Eurer erstes Programm auch relativ einfach ausführbar machen: Schreibt in die erste Zeile der Datei <em>answer.py</em> <code>#! /usr/bin/env python</code> damit das Programm so aussieht:</p>
<ol class="code">
<li><code>#! /usr/bin/env python</code></li>
<li></li>
<li><code>a = 7</code></li>
<li><code>b = 6</code></li>
<li><code>c = a * b</code></li>
<li><code>print (&quot;Answer to the Ultimate Question of Life, the Universe, and Everything: &quot;, c)</code></li>
</ol>
<p>Macht die Datei nun im Terminal ausführbar:</p>
<ol class="code">
<li><code>chmod +x answer.py</code></li>
</ol>
<p>Ihr könnt Eurer Programm nun mit folgendem Befehl starten</p>
<ol class="code">
<li><code>./answer.py</code></li>
</ol>
<h3>Und jetzt?</h3>
<p>Also wir haben einen relativ schnellen Einstieg in Python gewählt und die ersten Dinge schon oberflächlich betrachtet. Hier kann man in vielen Bereichen noch ins Detail gehen und ich habe mich mal für eine einfache Einführung entschieden.</p>
<p>Was ihr schon könnt:</p>
<ul>
<li>Text ausgeben</li>
<li>Einfache Berechnungen</li>
<li>ein Programm starten</li>
<li>ein Programm ausführbar machen</li>
</ul>
<h3>Ein paar Aufgaben</h3>
<p>Die Aufgaben basieren auf dem Java Vorkurs, der an der Universität Koblenz-Landau von Dr. Riediger gehalten wird (<a href="http://www.uni-koblenz-landau.de/koblenz/fb4/institute/IST/AGEbert/teaching/ss2011/javakurs" title="Java Blockkurs &mdash; Universität Koblenz-Landau">Link</a>). Sie wiederholen das gelernte ein wenig und vertiefen die ersten Grundlagen. </p>
<ol>
<li>Name ausgeben: Gib Deinen Namen auf der Konsole aus</li>
<li>Berechne, wie viel Euro der DM-Betrag 1234,56 entspricht. (1 Euro = 1,95583 DM)</li>
<li>Vertausche die Werte von zwei Variablen. Wenn am Anfang a=5 und b=3 ist, dann soll nach dem Programm a=3 und b=5 sein</li>
<li>Vertauschen 2: Man kann zwei Werte auch ohne Hilfsvariablen vertauschen&#8230;</li>
</ol>
<p>Ich hoffe diese erste Einführung war für Euch interessant und verleitet zu mehr Interesse an Python.</p>
<h3>Weitere Quellen</h3>
<ul>
<li>Wer gleich mit Python 3 einsteigen möchte: <a href="http://docs.python.org/py3k/tutorial/index.html">http://docs.python.org/py3k/tutorial/index.html</a>. Die Unterschiede sind aber, gerade am Anfang, überschaubar.</li>
<li>Noch eine kostenlose Quelle für den Einstieg in Python: <a href="http://diveintopython3.org/">http://diveintopython3.org/</a></li>
</ul>
<h3>Update(s)</h3>
<p>Der Code sollte nun auch funktionieren, wenn man Python 3 nutzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2011/05/08/erste-schritte-mit-python/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MAC OS X: Installing VTK and develop with Java and Eclipse</title>
		<link>http://ugotit.de/2011/03/04/mac-os-x-installing-vtk-and-develop-with-java-and-eclipse/</link>
		<comments>http://ugotit.de/2011/03/04/mac-os-x-installing-vtk-and-develop-with-java-and-eclipse/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 11:16:02 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[VTK]]></category>
		<category><![CDATA[CMake]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=246</guid>
		<description><![CDATA[Ok, my english ist not the best but I think there are many people outside, who maybe want to install VTK under OS X or use VTK with Java and Eclipse. Sources The informations, written down in this post, base on some other great postings in the web. First of all Drew McCormack, who has [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, my english ist not the best but I think there are many people outside, who maybe want to install VTK under OS X or use VTK with Java and Eclipse.<span id="more-246"></span></p>
<h3>Sources</h3>
<p>The informations, written down in this post, base on some other great postings in the web. First of all Drew McCormack, who has written a <a href="http://www.macresearch.org/installing_vtk_on_mac_os_x">very helpful tutorial on MacResearch.org</a>.</p>
<p>My second source, Simones Blog, describes <a href="http://www.simoneschaefer.de/post/3526247486/vtk-with-java-wrapper-with-ubuntu">how to install VTK with Java Wrapper under Ubuntu</a>.</p>
<h3>Installing VTK under Mac OS X 10.6 &#8211; Snow Leopard</h3>
<h4>CMake</h4>
<p>Before we can install VTK we need <a href="http://en.wikipedia.org/wiki/CMake">CMake</a>. You can get the latest release on the <a href="http://www.cmake.org/cmake/resources/software.html">CMake download site</a>. Open the disk image and install the package.</p>
<h4>VTK</h4>
<p>Download the latest release of VTK on the <a href="http://www.vtk.org/VTK/resources/software.html#latest">VTK download page</a>. I picked <a href="http://www.vtk.org/files/release/5.4/vtk-5.4.2.zip">vtk-5.4.2.zip</a>. Now you have to unpack the .zip (or .tar.gz). I unpacked the source to <em>/Users/daniel/Develop/VTKSource/</em>.</p>
<p>Now, we need two more folders. I created those in my terminal with:</p>
<ol class="code">
<li><code>mkdir /Users/daniel/Develop/VTKBuild</code></li>
<li><code>mkdir /Users/daniel/Develop/VTKBin</code></li>
</ol>
<p>Next step is to run <em><code>cmake</code></em> to configure everything for building:</p>
<ol class="code">
<li><code>cd /Users/daniel/Develop/VTKBuild</code></li>
<li><code>cmake ../VTKSource</code></li>
</ol>
<p>Now we must modify the CMakeCache.txt and edit the following parameter (don&#8217;t forget to change the path):</p>
<ol class="code">
<li><code>CMAKE_INSTALL_PREFIX:PATH=/Users/daniel/Develop/VTKBin</code></li>
</ol>
<p>If you are going to develop with VTK and Java you should edit the following lines as well</p>
<ol class="code">
<li><code>BUILD_SHARED_LIBS:BOOL=ON</code></li>
<li><code>VTK_WRAP_JAVA:BOOL=ON</code></li>
</ol>
<p>To update your build settings run again</p>
<ol class="code">
<li><code>cmake ../VTKSource</code></li>
</ol>
<p>set the Mac OS X deployment target to your version of OS X (Snow Leopard = 10.6)</p>
<ol class="code">
<li><code>export MACOSX_DEPLOYMENT_TARGET=10.6</code></li>
</ol>
<p>and run</p>
<ol class="code">
<li><code>make</code></li>
<li><code>make install</code></li>
</ol>
<p>to create the binaries in your build-folder.</p>
<h3>Using VTK and Java</h3>
<p>To get VTK running under eclipse I had to add the vtk.jar to the build-path and add two environment variables.</p>
<p>First of all I added <em>vtk.jar</em> to the build path of my eclipse project. I found it in <em>/Users/daniel/Develop/VTKBin/lib/vtk-5.4/java/vtk/</em>. After this I changed my run configurations: Right-click on the class you want to run, choose &#8220;run as&#8221; &gt; &#8220;run configurations&#8221;: Choose the &#8220;Environments&#8221;-Tab and add two variables:</p>
<ul>
<li>LD_LIBRARY_PATH: /Users/daniel/Develop/VTKBin/lib/vtk-5.4/</li>
<li>DYLD_LIBRARY_PATH: /Users/daniel/Develop/VTKBin/lib/vtk-5.4/</li>
</ul>
<p>If there are any questions (I started using VTK with Java today <img src='http://ugotit.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) you can use the comments. I hope this article was helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2011/03/04/mac-os-x-installing-vtk-and-develop-with-java-and-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mit regulären Ausdrücken Links in Twitter einfügen</title>
		<link>http://ugotit.de/2010/02/22/mit-regularen-ausdrucken-links-in-twitter-einfugen/</link>
		<comments>http://ugotit.de/2010/02/22/mit-regularen-ausdrucken-links-in-twitter-einfugen/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 10:26:52 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[some lines of code]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Reguläre Ausdrücke]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=102</guid>
		<description><![CDATA[Statt vieler Worte heute mal nur ein paar Zeilen Code und eine kurze Erklärung: Wenn Ihr über die Twitter-API Nachrichten von Twitter abfragt bestehen diese nur aus Text. Schöner wären hier natürlich anklickbare Links, Hashtags und Nutzernamen, was ihr mit folgendem Code einfach bewerkstelligen könnt. Die Regulären Ausdrücke lassen sich natürlich auch in anderen Sprachen [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ugotit.de/wp-content/uploads/2009/12/jquery-logo.gif" alt="jQuery - write less do more" title="jQuery - write less do more" width="168" height="146" class="right" />Statt vieler Worte heute mal nur ein paar Zeilen Code und eine kurze Erklärung:</p>
<p>Wenn Ihr über die Twitter-API Nachrichten von Twitter abfragt bestehen diese nur aus Text. Schöner wären hier natürlich anklickbare Links, Hashtags und Nutzernamen, was ihr mit folgendem Code einfach  bewerkstelligen könnt. Die Regulären Ausdrücke lassen sich natürlich auch in anderen Sprachen realisieren. Gefunden habe ich sie bei <a href="http://blog.andreaolivato.net/programming/using-regular-expressions-to-add-links-to-tweets.html">Andrea Olivato</a></p>
<ol class="code">
<li><code>var tweet = 'woohoo dank @ugotit von http://www.ugotit.de hab ich ein paar tolle #regular #expressions gefunden.';</code></li>
<li><code>tweet = tweet.replace(/http([s]?):\/\/([^\ \)$]*)/,'&lt;a href=&quot;http$1://$2&quot; rel=&quot;nofollow&quot; title=&quot;$2&quot;&gt;http$1://$2&lt;/a&gt;');</code></li>
<li><code>tweet = tweet.replace(/@([a-zA-Z0-9_]*)/,'&lt;a href=&quot;http://twitter.com/$1&quot; title=&quot;$1 profile on Twitter&quot; rel=&quot;nofollow&quot;&gt;@$1&lt;/a&gt;');</code></li>
<li><code>tweet = tweet.replace(/\#([a-zA-Z0-9_]*)/,'&lt;a href=&quot;http://search.twitter.com/search?q=%23$1&quot; title=&quot;search for $1 on Twitter&quot; rel=&quot;nofollow&quot;&gt;\#$1&lt;/a&gt;');</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2010/02/22/mit-regularen-ausdrucken-links-in-twitter-einfugen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lesestoff: Weave #1.2010</title>
		<link>http://ugotit.de/2010/01/12/lesestoff-weave-1-2010/</link>
		<comments>http://ugotit.de/2010/01/12/lesestoff-weave-1-2010/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 10:41:13 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Artikel]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Johannes Kretzschmar]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Weave]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=68</guid>
		<description><![CDATA[Das neue Jahr beginnt gleich mit etwas Werbung: Johannes und ich haben mal wieder ein Tutorial für die Weave geschrieben, welches ihr ab dem 18.01. am Kiosk Eures Vertrauens erstehen könnt. Diesmal beschäftigen wir uns mit twitternden Karten: Wir haben mit ein wenig jQuery Google Maps und Twitter kombiniert und zeigen Euch, wie man Tweets [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ugotit.de/wp-content/uploads/2010/01/weave-012009.png" alt="Blick in die Weave #1.2010" title="Blick in die Weave #1.2010" width="262" height="338" class="right withLegend" />Das neue Jahr beginnt gleich mit etwas Werbung: <a href="http://blog.beetlebum.de" title="beetlebum.de">Johannes</a> und ich haben mal wieder ein Tutorial für die <a href="http://www.weave.de" title="Weave">Weave</a> geschrieben, welches ihr ab dem 18.01. am Kiosk Eures Vertrauens erstehen könnt. Diesmal beschäftigen wir uns mit <a href="http://www.weave.de/addons/twittermaps0110" title="Weave: Twitternde Karten">twitternden Karten</a>: Wir haben mit ein wenig jQuery Google Maps und Twitter kombiniert und zeigen Euch, wie man Tweets für einen Ort auf einer Karte anzeigen lassen kann. Den passenden Quellcode der Demo findet Ihr auch auf der Homepage.</p>
<p>Was es sonst noch so zu entdecken gibt <a href="http://www.weave.de/allgemeines/content-weave-01-2010" title="Inhalt der Weave 1.2010">könnt Ihr auf der Homepage der Weave sehen</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2010/01/12/lesestoff-weave-1-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein jQuery Plug-in erstellen</title>
		<link>http://ugotit.de/2009/12/29/ein-jquery-plugin-erstellen/</link>
		<comments>http://ugotit.de/2009/12/29/ein-jquery-plugin-erstellen/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 10:32:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=34</guid>
		<description><![CDATA[Dieser Beitrag stammt aus meinem alten Blog. Da ich sehr viel positives Feedback auf diesen bekommen habe stelle ich ihn hier wieder zur Verfügung. Wenn man, wie ich, viel mit jQuery arbeitet gibt es immer wieder Funktionen die man häufiger braucht und daher natürlich auch gerne wieder verwenden würde. An einem sehr einfachen Beispiel möchte [...]]]></description>
			<content:encoded><![CDATA[<p class="infobox">
Dieser Beitrag stammt aus meinem alten Blog. Da ich sehr viel positives Feedback auf diesen bekommen habe stelle ich ihn hier wieder zur Verfügung.
</p>
<p><a href="http://www.jquery.com" title="jQuery: The Write Less, Do More, JavaScript Library"><img src="http://ugotit.de/wp-content/uploads/2009/12/jquery-logo.gif" alt="jQuery - write less do more" title="jQuery - write less do more" width="168" height="146" class="right" /></a>Wenn man, wie ich, viel mit jQuery arbeitet gibt es immer wieder Funktionen die man häufiger braucht und daher natürlich auch gerne wieder verwenden würde. An einem sehr einfachen Beispiel möchte ich Euch daher mal zeigen, wie man ein eigenes jQuery Plug-In schreibt.</p>
<p>Der Ansatz ist hier ein sehr einfacher: Wir hätten gerne unter unseren Bildern einen Text zum Bild der über jQuery eingebunden werden soll. Unser erster Ansatz hier ist folgender:</p>
<ol>
<li>Um das Bild einen <code>div</code>-Container setzen mit <code>.wrap()</code></li>
<li>dann unter das Bild einen Absatz (<code>&lt;p&gt;</code>) in dem der Inhalt des <code>alt</code>-Attributs steht</li>
</ol>
<p><span id="more-34"></span><br />
Umsetzen könnte man das u.a. so:</p>
<ol id="beispiel1" class="code">
<li><code>var alt = $('img.addCaption').attr("alt");</code></li>
<li class="odd"><code>$('img.addCaption').wrap('&lt;div class="image"&gt;&lt;/div&lt;').after('&gt;p&lt;');</code></li>
<li><code>$('.image p').text(alt);</code></li>
</ol>
<p>Wir gehen bei diesem sehr einfachen Beispiel davon aus das wir nur ein Bild mit der Klasse <code>.addCaption</code> im HTML-Dokument haben und speichern zunächst dessen <code>alt</code>-Attribut in einer Variable <code>var</code> ab. In der zweiten Zeile des Codes umschliessen wir das Bild (<code>.wrap()</code>) mit einem div-Container mit der Klasse <code>.image</code> und fügen dann noch hinter dem Bild einen leeren Absatz ein (<code>.after()</code>).<br />
In der dritten und letzten Zeile bekommt dann der Absatz innerhalb von <code>div.image</code> den in <code>alt</code> gespeicherten Text eingesetzt (<code>.text()</code>).</p>
<p>Dieser Code hat einige Nachteile: Er klappt nur bei einem Bild da er bei mehreren Bildern mit der Klasse <code>.addCaption</code> immer den Text des letzten <code>alt</code>-Attributs einfügen würde und wenn ich schon so eine Funktion einfüge muss diese auch alternative Texte anbieten können.</p>
<p>Viel von den fehlenden Bedingungen könnte ich auch ohne Plug-In machen aber darum geht es hier ja nicht.</p>
<p>Bevor wir unsere Funktion nun in ein Plug-In stecken und ein wenig erweitern schauen wir uns den Rahmen an:</p>
<ol class="code">
<li><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent1 odd"><code>return this.each(function(){});</code></li>
<li><code>};</code></li>
</ol>
<p>In der ersten Zeile definieren wir unsere Funktion und geben ihr den Namen <code>.addCaption()</code>. Das Gerüst erklärt sich fast von selbst. Für Euch ist erstmal nur interessant das ihr mit <code>$.fn.funktionsname =function(){}</code> eine Funktion definiert die Ihr später wie die bekannten jQuery-Funktionen verwenden könnt. Auf <code>options</code> innerhalb der Funktion gehe ich weiter unten ein.</p>
<p>Sehr wichtig ist dann noch die zweite Zeile. Wir möchten ja, das unsere Funktion für beliebig viele Bilder verwendet werden kann und daher müssen wir, in unserem Fall für jedes einzelne Bild, ein eigenes Ergebnis liefern.</p>
<p>Dabei bedeutet <code>return</code> erstmal das die Funktion etwas zurückgibt (für die Programmierer unter Euch nix neues). Interessanter ist da der folgende Code (also das, das wir zurückgeben): <code>this.each(function(){})</code> bezieht sich erstmal auf die ausgewählten Elemente. Genauer gesagt: <code>this</code> bezeichnet quasi alle ausgewählten Elemente die von unserer Funktion bearbeitet werden. Mit <code>.each()</code> geben wir an jedes einzelne Element bearbeiten zu wollen. hr könnt Euch das so vorstellen als ob der Browser im Hintergrund jedes einzelne Element nimmt und dann die Schritte mit diesem durchgeht die wir innerhalb von <code>function(){}</code> durchgehen.</p>
<p>Bevor es jetzt richtig losgeht noch eine Absicherung: Eigentlich sollte man <code>$</code> nicht verwenden wenn man ein Plug-In schreibt da es hier durchaus Probleme mit anderen Bibliotheken geben kann. Ich persönlich habe mich aber an <code>$</code> gewöhnt und möchte das auch in meinem Plug-In verwenden. Wenn es Euch ähnlich geht hilft Euch folgender Code der nur zum Ziel hat das sich <code>$</code> auf jQuery bezieht. Wenn Ihr Euch die zwei Zeilen sparen wollt setzt an die Stelle von <code>$</code> einfach <code>jQuery</code>:</p>
<ol class="code">
<li class="new"><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2"><code>return this.each(function() {});</code></li>
<li class="indent1 odd"><code>};</code></li>
<li class="new"><code>})(jQuery);</code></li>
</ol>
<p>Nun wollen wir die Funktionalität aus unserem Code <a title="erstes Codebeispiel" href="#beispiel1">weiter oben</a> erstmal in unser Plug-In einbauen. Schon jetzt ist unser Plug-In etwas besser da wir mit dem Plug-In gleich schon mehrere Bilder bearbeiten können.</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2"><code>return this.each(function() {</code></li>
<li class="indent3 odd new"><code>var obj = $(this);</code></li>
<li class="indent3 new"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3 odd new"><code>obj.wrap('&lt;div class="image"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2"><code>});</code></li>
<li class="indent1 odd"><code>};</code></li>
<li><code>})(jQuery);</code></li>
</ol>
<p>Neu ist erstmal die Zeile 4 in der wir einer Variable <code>obj</code> <code>$(this)</code> zuweisen. Das heisst nicht mehr als das wir mit <code>obj</code> nun das momentane Element auswählen können. Also statt <code>$(this).funktion()</code> klappt innerhalb der Schleife auch <code>obj.funktion()</code>. Demnach schreiben wir nun auch <code>var capText = obj.attr('alt');</code> um den Wert des <code>alt</code>-Attributs zu speichern.</p>
<p>Der Rest ist analog zu unserem Beispiel. Herzlichen Glückwunsch unser Plug-In ist fertig &#8230; fast&#8230;</p>
<p>Wir haben bei Plug-Ins noch die Möglichkeit Optionen einzubauen um das Plug-In etwas anpassbarer zu machen. Schliesslich sollten Nutzer unserer Plug-Ins nicht selber am Plug-In schrauben müssen sondern möglichst einfach anpassen können. Bei diesem Beispiel werden wir zwei Dinge dynamischer machen: Die Klasse des umschliessenden <code>div</code>-Containers und den Text der unter einem Bild angezeigt wird, wenn kein <code>alt</code>-Attribut definiert wurde.</p>
<p>Innerhalb de Plug-Ins definieren wir nun erstmal Standardwerte für beide Optionen. Dafür nehmen wir die Variable <code>defaults</code>.</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2 new"><code>var defaults = {</code></li>
<li class="indent3 odd new"><code>wrapClass: 'image',</code></li>
<li class="indent3 new"><code>altText: 'entweder ein leeres oder kein alt-Attribut verwendet'</code></li>
<li class="indent2 odd new"><code>};</code></li>
<li class="indent2"><code>return this.each(function() {</code></li>
<li class="indent3 odd"><code>var obj = $(this);</code></li>
<li class="indent3"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3 odd"><code>obj.wrap('&lt;div class="image"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2"><code>});</code></li>
<li class="indent1 odd"><code>};</code></li>
<li><code>})(jQuery);</code></li>
</ol>
<p>Diese neuen Zeilen bringen noch nichts und erzeugen eigentlich nur ein Objekt <code>defaults</code> dessen Werte man nun verwenden könnte. So liefert <code>defaults.wrapClass</code> den String &#8216;image&#8217;. Wir benötigen diese Standardwerte für den Fall das der Nutzer selber keine Optionen angegeben hat (<code>options</code>) und müssen nun im nächsten Schritt den Wert von <code>options</code> durch die Werte von <code>defaults</code> ergänzen. jQuery bietet hierfür die Funktion <code>.extend()</code> mit der wir ein Objekt vervollständigen können. Wenn also ein Wert innerhalb von <code>options</code> nicht gesetzt wird nehmen wir hier den Wert aus <code>defaults</code>.</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1 odd"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2"><code>var defaults = {</code></li>
<li class="indent3 odd"><code>wrapClass: 'image',</code></li>
<li class="indent3"><code>altText: 'entweder ein leeres oder kein alt-Attribut verwendet'</code></li>
<li class="indent2 odd"><code>};</code></li>
<li class="indent2 new"><code>var options = $.extend(defaults, options);</code></li>
<li class="indent2 odd"><code>return this.each(function() {</code></li>
<li class="indent3"><code>var obj = $(this);</code></li>
<li class="indent3 odd"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3"><code>obj.wrap('&lt;div class="image"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2 odd"><code>});</code></li>
<li class="indent1"><code>};</code></li>
<li class="odd"><code>})(jQuery);</code></li>
</ol>
<p>Da wir nun einige Variablen haben (Klasse des <code>div</code>-Containers und der Text für ein leeres <code>alt</code>-Attribut) müssen diese noch in unserem Plug-In eingebaut werden:</p>
<ol class="code">
<li><code>(function($){</code></li>
<li class="indent1"><code>$.fn.addCaption = function(options) {</code></li>
<li class="indent2 odd"><code>var defaults = {</code></li>
<li class="indent3"><code>wrapClass: 'image',</code></li>
<li class="indent3 odd"><code>altText: 'entweder ein leeres oder kein alt-Attribut verwendet'</code></li>
<li class="indent2"><code>};</code></li>
<li class="indent2 odd"><code>var options = $.extend(defaults, options);</code></li>
<li class="indent2"><code>return this.each(function() {</code></li>
<li class="indent3 odd"><code>var obj = $(this);</code></li>
<li class="indent3"><code>var capText = obj.attr('alt');</code></li>
<li class="indent3 odd new"><code>if(capText == '') capText = options.altText;</code></li>
<li class="indent3 new"><code>obj.wrap('&lt;div class="'+options.wrapClass+'"&gt;').after('&lt;p&gt;').next("p").text(capText);</code></li>
<li class="indent2 odd"><code>});</code></li>
<li class="tab"><code>};</code></li>
<li class="odd"><code>})(jQuery);</code></li>
</ol>
<p>In Zeile 11 wird die Länge des <code>alt</code>-Attributs abgefragt. Wenn dies leer ist wird als Bildunterschrift der Wert von <code>options.altText</code> (aus <code>options</code> oder <code>defaults</code>, je nachdem was der User möchte). Die Klasse des <code>div</code>-Containers setzen wir in Zeile 12 dynamisch ein.</p>
<p>So fertig ist ein kleines Plug-In. Der Aufruf funktioniert dann entweder über:</p>
<ol class="code">
<li><code>$("img").addCaption();</code></li>
</ol>
<p>dann werden die Standardwerte genommen, oder über</p>
<ol class="code">
<li><code>$("img").addCaption({</code></li>
<li class="indent1 odd"><code>wrapClass='klassenname',</code></li>
<li class="indent1"><code>altText='Ein anderer Text'</code></li>
<li><code>});</code></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2009/12/29/ein-jquery-plugin-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome Extensions: Hello World</title>
		<link>http://ugotit.de/2009/12/28/chrome-extensions-hello-world/</link>
		<comments>http://ugotit.de/2009/12/28/chrome-extensions-hello-world/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 15:11:36 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Erweiterungen]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mozilla]]></category>

		<guid isPermaLink="false">http://ugotit.de/?p=12</guid>
		<description><![CDATA[Langsam aber sicher gewinnt Googles neuer Browser Chrome (für die, die Google nicht vertrauen gibt es noch Chromium) mehr und mehr an Beliebtheit was sicherlich an der schnellen Ladezeit (sowohl des Programms als auch von Webseiten) liegt. Auch wenn noch nicht klar ist, wo genau Google mit Chrome hin will (Chrome OS ist hier ja [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ugotit.de/wp-content/uploads/2009/12/chromium-browser.jpg" alt="" title="chromium-browser" width="200" height="200" class="right" />Langsam aber sicher gewinnt Googles neuer Browser Chrome (für die, die Google nicht vertrauen gibt es noch Chromium) mehr und mehr an Beliebtheit was sicherlich an der schnellen Ladezeit (sowohl des Programms als auch von Webseiten) liegt. Auch wenn noch nicht klar ist, wo genau Google mit Chrome hin will (Chrome OS ist hier ja eine Variante) habe ich das Gefühl, dass Google der Konkurrenz zeigt, wie sich ein Browser verhalten sollte.</p>
<p>Besonders gut gefällt mir bei Chrome der Ansatz, den die Entwickler bei den Erweiterungen gehen: Mozillas Firefox zeigte hier ja schon vor einigen Jahren, wie interessant Erweiterungen für Nutzer sein können. Angefangen bei Werbeblockern, E-Mail Benachrichtungen bis zu vollwertigen Twitter-Clients findet man allerlei nützliches (aber auch überflüssiges) um den eigenen Browser zu verbessern.<br />
<span id="more-12"></span><br />
Googles Chrome geht hier einen interessanten Weg denn im Prinzip basieren die Extensions erstmal auf HTML, CSS und JavaScript und nutzen die Möglichkeiten, die diese Sprachen liefern (u.a. auch client-side data storage in HTML5), vollständig. Es lässt sich also, mit Kenntnissen in diesen drei Sprachen schon eine eigene Erweiterung programmieren, was ich Euch an einem einfachen beispiel demonstrieren möchte.</p>
<h3>Vorbereitungen</h3>
<ol>
<li>Lade Dir Chrome oder <a href="http://code.google.com/intl/de-DE/chromium/" title="Chromium - Google Code">Chromium</a> (wenn Du ein wenig Googlest ersparst Du Dir ggf. den Browser selber compilieren zu müssen) auf Deinen Rechner: (<a href="http://www.google.com/landing/chrome/beta/" title="Google Chrome (BETA)">Windows/Linux</a> / <a href="http://www.chromium.org/getting-involved/dev-channel#TOC-Mac" title="Early Access Release Channels (The Chromium Projects)">Mac</a>)</li>
<li>Erstelle einen Ordner &quot;HelloWorld&quot; auf Deinem Rechner der den Code beinhalten wird.</li>
<li>Erstelle eine Datei <em>manifest.json</em>, die einige Informationen zu Deiner Erweiterung beinhalten wird.</li>
</ol>
<h4>manifest.json</h4>
<ol class="code">
<li><code>{</code></li>
<li class="indent1"><code>&quot;name&quot;: &quot;Hallo Welt&quot;,</code></li>
<li class="indent1"><code>&quot;version&quot;: &quot;1.0&quot;,</code></li>
<li class="indent1"><code>&quot;description&quot;: &quot;Meine erste Erweiterung.&quot;,</code></li>
<li class="indent1"><code>&quot;browser_action&quot;: {</code></li>
<li class="indent2"><code>&quot;default_icon&quot;: &quot;icon.png&quot;</code></li>
<li class="indent1"><code>}</code></li>
<li><code>}</code></li>
</ol>
<p>Die Bezeichnungen in der JSON-Datei sollten selbsterklärend sein. Die einzigen Punkte hier sind &quot;browser_action&quot; und &quot;default_icon&quot; welche wir brauchen, damit unsere Erweiterung auch ein Icon neben der Adressleiste in Chrome bekommt.</p>
<h4>icon.png</h4>
<p>Natürlich brauchen wir auch ein passendes Icon für unsere Anwendung. Ich greife hier auf ein Iconset von Manuela Hoffmann zurück, welches ihr unter <a href="http://www.pixelgraphix.de/weblog/artikel/kleines-weblog-iconset/" title="Kleines Weblog Iconset - pixelgraphix Weblog - pixelgraphix">www.pixelgraphix.de</a> findet. Das Icon Eurer Wahl wandelt Ihr dann noch schnell in png um und nennt es icon.png. Sowohl <em>manifest.json</em> als auch <em>icon.png</em> kommen in den Ordner <em>HelloWorld</em>.</p>
<h3>Erster Test</h3>
<p>Und schon können wir die Erweiterung testen:</p>
<ol>
<li>Öffne Chrome und dort die Seite mit den Erweiterungen. (Unter Linux findet man diese, wenn man auf das Icon mit dem Schraubenschlüssel klickt. Am Mac unter dem Menüpunkt &quot;Fenster.&quot;)</li>
<li>Klicke auf &quot;Entwicklermodus&quot;</li>
<li>Importiere den Ordner <em>HelloWorld</em> indem Du auf &quot;Entpackte Erweiterung laden&#8230;&quot; klickst</li>
</ol>
<p><img src="http://ugotit.de/wp-content/uploads/2009/12/Entwicklermodus.jpg" alt="Blick auf den Entwicklermodus in Googles Chrome" title="Blick auf den Entwicklermodus in Googles Chrome" width="570" height="125" class="withLegend" /></p>
<p>Du solltest jetzt, wenn Du alles richtig gemacht hast, das Icon oben neben der Adressleiste sehen. Du kannst zwar schon auf das Icon klicken aber noch bringt Dich das nicht weiter.</p>
<h3>Etwas anzeigen</h3>
<p>Interessanter wird es jetzt, wenn wir die Erweiterung ein wenig ausbauen. Es geht uns jetzt erstmal nur um ein kleines Fenster in dem, wie der Name des Tutorials schon vermuten lässt, &quot;Hallo Welt&quot; steht.</p>
<p>Damit unsere Erweiterung auch weiß, welche HTML-Datei sie anzeigen soll, ergänzen wir die <em>manifest.json</em> nun um eine neue Zeile:</p>
<ol class="code">
<li><code>...</code></li>
<li class="indent1"><code>&quot;browser_action&quot;: {</code></li>
<li class="indent2"><code>&quot;default_icon&quot;: &quot;icon.png&quot;,</code></li>
<li class="indent2"><code>&quot;popup&quot;: &quot;popup.html&quot;</code></li>
<li class="indent1"><code>},</code></li>
<li><code>...</code></li>
</ol>
<h4>popup.html</h4>
<p>Bei der Datei <em>popup.html</em>, die wir ebenfalls in unserem Ordner <em>HelloWorld</em> speichern, handelt es sich um eine simple HTML5-Datei:</p>
<ol class="code">
<li><code>&lt;!DOCTYPE HTML&gt;</code></li>
<li><code>&lt;html&gt;</code></li>
<li><code>&lt;head&gt;</code></li>
<li class="indent1"><code>&lt;meta charset=&quot;utf-8&quot;&gt;</code></li>
<li class="indent1"><code>&lt;title&gt;Hallo Welt&lt;/title&gt;</code></li>
<li><code>&lt;/head&gt;</code></li>
<li><code>&lt;body&gt;</code></li>
<li class="indent1"><code>&lt;p&gt;</code></li>
<li class="indent2"><code>Hallo Welt.</code></li>
<li class="indent1"><code>&lt;/p&gt;</code></li>
<li><code>&lt;/body&gt;</code></li>
<li><code>&lt;/html&gt;</code></li>
</ol>
<p>Wenn Du diese Erweiterung jetzt installierst (deinstallier die allte Version besser vorher &#8211; habe ich schon erwähnt, wie toll es ist nicht bei jeder Änderung an Erweiterungen den Browser neu starten zu müssen?) solltest Du bei einem klick auf Dein Icon den Text &quot;Hallo Welt&quot; lesen können.</p>
<h3>Optimierungen</h3>
<p><img src="http://ugotit.de/wp-content/uploads/2009/12/extension-fertig.png" alt="Die fertige Erweiterung im Einsatz" title="Die fertige Erweiterung im Einsatz" width="391" height="162" class="withLegend right" />Damit unsere Ausgabe nun etwas schöner ist formatieren wir sie jetzt noch mit etwas CSS. Auf die Möglichkeiten die JavaScript uns noch bietet gehe ich vielleicht später mal ein.</p>
<h4 class="cl">HTML</h4>
<ol class="code">
<li><code>&lt;head&gt;</code></li>
<li class="indent1"><code>...</code></li>
<li class="indent1"><code>&lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; type=&quot;text/css&quot; /&gt;</code></li>
<li><code>&lt;/head&gt;</code></li>
</ol>
<h4>CSS</h4>
<ol class="code">
<li><code>body {</code></li>
<li class="indent1"><code>font-size: 150%;</code></li>
<li class="indent1"><code>font-family: Helvetica,Arial,Verdana,sans-serif;</code></li>
<li class="indent1"><code>color: #fff;</code></li>
<li class="indent1"><code>text-shadow: 0px 2px 3px #555;</code></li>
<li class="indent1"><code>font-weight: bold;</code></li>
<li class="indent1"><code>background: #cdd9e6;</code></li>
<li class="indent1"><code>width: 350px;</code></li>
<li class="indent1"><code>height: 75px;</code></li>
<li><code>}</code></li>
<li></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ugotit.de/2009/12/28/chrome-extensions-hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)

Served from: ugotit.de @ 2012-05-18 02:02:12 -->
