<?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>Wer A Sagt</title>
	<atom:link href="http://werasagt.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://werasagt.de</link>
	<description>Tägliche Beobachtungen</description>
	<lastBuildDate>Thu, 22 Dec 2011 18:02:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Warum wir bei Links das Rel- statt dem Class-Attribut verwenden sollten</title>
		<link>http://werasagt.de/2011/12/22/warum-wir-bei-links-das-rel-statt-dem-class-attribut-verwenden-sollten/</link>
		<comments>http://werasagt.de/2011/12/22/warum-wir-bei-links-das-rel-statt-dem-class-attribut-verwenden-sollten/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 17:49:38 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=285</guid>
		<description><![CDATA[Um Elemente eines HTML Dokuments zu Adressieren, z.B. fuer Event Handler in JavaScript, oder fuer Tests der Benutzerschnittstelle mit Capybara oder Selenium verwendet man ueblicherweise entweder das ID Attribut, oder das Class Attribut. Beide haben Nachteile, bzw. sind nicht optimal. &#8230; <a href="http://werasagt.de/2011/12/22/warum-wir-bei-links-das-rel-statt-dem-class-attribut-verwenden-sollten/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://werasagt.de/wp-content/uploads/2011/12/relation.png"><img src="http://werasagt.de/wp-content/uploads/2011/12/relation.png" alt="" title="Beziehung" width="309" height="50" class="alignleft size-full wp-image-292" /></a>
<p class="p1">Um Elemente eines HTML Dokuments zu Adressieren, z.B. fuer <a href="http://api.jquery.com/click/">Event Handler</a> in JavaScript, oder fuer Tests der Benutzerschnittstelle mit <a href="https://github.com/jnicklas/capybara">Capybara</a> oder <a href="http://seleniumhq.org/">Selenium</a> verwendet man ueblicherweise entweder das <a href="http://de.selfhtml.org/html/attribute/allgemeine.htm">ID Attribut</a>, oder das <a href="http://www.w3.org/TR/html5/elements.html#classes">Class Attribut</a>.</p>
<p class="p1">Beide haben Nachteile, bzw. sind nicht optimal. Ein ID Attribut kann man pro Seite nur ein Mal verwenden. Das Class Attribut ist eigentlich dazu gedacht das Aussehen eines Elements festzulegen und nicht den Zweck anzuzeigen. Dies fuehrt dann dazu das man eine Menge Klassen hat, zu der man keine entsprechende Definition in der CSS Datei findet.</p>
<p class="p1">In dem Artikel „<a href="http://blog.steveklabnik.com/2011/12/20/write-better-cukes-with-the-rel-attribute.html">Write better cukes with the rel attribute</a>“ schlaegt Steve Klabnik nun vor, dieses Attribut statt dem Class Attribut zu verwenden um Links eine Bedeutung zuzuweisen.</p>
<p class="p1">Eigentlich ist es erstaunlich das das Rel Attribut in dieser Hinsicht nicht haeufiger verwendet wird. Denn das Attribut exisitiert seit <a href="http://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt">HTML 1</a> und ist uns allen vom <a href="http://de.selfhtml.org/html/kopfdaten/beziehungen.htm">Link Element</a> gelaeufig. Dort wird es mit dem Wert „stylesheet“ verwendet um CSS-Dateien einzubinden.</p>
<p class="p2"><span class="s1">Ein Grund fuer die geringe Verwendung mag der sperrige Selektor sein. Der sieht naemlich beispielsweise in <a href="http://api.jquery.com/category/selectors/attribute-selectors/"><span class="s2">jQuery</span></a> so aus: </span><span class="s3">$(&#8216;a[rel="edit-article"]&#8216;)</span><span class="s4">, bei einer Klasse wuerde </span><span class="s3">$(&#8216;.edit-article&#8217;) </span>ausreichen.<br />
Ein weiterer Grund ist sicher, dass der Link durch das Rel Attribut, allgemein verstaendlich sein sollte. So das auch die Suchmaschienen, den Link interpretieren koennen und nicht nur der Web Developer, der die Seite erstellt hat. Daher gibt es inzwischen eine recht lange <a href="http://microformats.org/wiki/existing-rel-values">Liste mit registrierten Link Typen</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/12/22/warum-wir-bei-links-das-rel-statt-dem-class-attribut-verwenden-sollten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EnChange &#8211; Konfigurations Manager fuer Enfinity Application Server</title>
		<link>http://werasagt.de/2011/11/27/enchange-konfigurations-manager-fuer-enfinity-application-server/</link>
		<comments>http://werasagt.de/2011/11/27/enchange-konfigurations-manager-fuer-enfinity-application-server/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 17:10:27 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=272</guid>
		<description><![CDATA[Wenn man an verschiedenen Enfinity Projekten arbeitet, oder auch nur mit verschiedenen Code-Zweigen, muessen immer Konfigurationsdateien geaendert werden, wenn man zwischen ihnen wechseln moechte. Damit dies einfacher wird habe ich ein, durchaus noch ausbaufaehiges, Ruby Skript erstellt mit dem man &#8230; <a href="http://werasagt.de/2011/11/27/enchange-konfigurations-manager-fuer-enfinity-application-server/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://werasagt.de/wp-content/uploads/2011/11/verschiedene_enfinity_projekte.png"><img src="http://werasagt.de/wp-content/uploads/2011/11/verschiedene_enfinity_projekte.png" alt="" title="Unterschiedliche Enfinity Projekte" width="301" height="294" class="alignleft size-full wp-image-277" /></a>Wenn man an verschiedenen Enfinity Projekten arbeitet, oder auch nur mit verschiedenen Code-Zweigen, muessen immer Konfigurationsdateien geaendert werden, wenn man zwischen ihnen wechseln moechte.<br />
Damit dies einfacher wird habe ich ein, durchaus noch ausbaufaehiges, Ruby Skript erstellt mit dem man dies tun kann.<br />
<a href="https://github.com/RainerBlessing/enchange" title="EnChange auf Github">EnChange</a> ermoeglicht es Dateien und komplette Verzeichnisse ins eserver Verzeichnis zu kopieren. Vor dem Installieren werden die existierenden Dateien in einem backup Verzeichnis gesichert, um den urspruenglichen Zustand wieder herzustellen.<br />
Man kann das EnChange natuerlich nicht nur zum Wechseln von Konfigurationen verwenden. Es kann auch beim Setup eines Projekts helfen.</p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/11/27/enchange-konfigurations-manager-fuer-enfinity-application-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sproutcore 2.0 und Tabellen</title>
		<link>http://werasagt.de/2011/11/13/sproutcore-2-0-und-tabellen/</link>
		<comments>http://werasagt.de/2011/11/13/sproutcore-2-0-und-tabellen/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 12:02:22 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=261</guid>
		<description><![CDATA[Fast eine Woche habe ich versucht herauszufinden wie man Daten in einer Collection, fuer eine Sproutcore Anwendung in einer Tabelle darstellt. Alle Beispiele, die ich gefunden habe, auch die Tests im Quellcode verwenden nur eine Liste (tagName=&#8221;ul&#8221;). Kurz bevor ich &#8230; <a href="http://werasagt.de/2011/11/13/sproutcore-2-0-und-tabellen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fast eine Woche habe ich versucht herauszufinden wie man Daten in einer Collection, fuer eine Sproutcore Anwendung in einer Tabelle darstellt. Alle Beispiele, die ich gefunden habe, auch die Tests im Quellcode verwenden nur eine Liste (tagName=&#8221;ul&#8221;).</p>
<p>Kurz bevor ich aufgeben und auf eine andere Templating Loesung zurueckgreifen wollte, habe ich doch noch ein sehr <a href="http://blog.chililog.org/2011/11/03/sproutcore-v2-crud-tutorial-part-2/" target="_blank">ausfuehrliches Tutorial</a> fuer eine Anwendung in Sproutcore 1 und 2 gefunden, die eine Tabelle enthaelt.</p>
<p>Durch die Aufteilung der Table-Tags in den HTML Code und die Handlebar-Elemente finde ich es schwierig das &#8220;intuitiv&#8221; hinzubekommen.</p>
<p>Lange Rede, kurzer Sinn. So bekommt man in Sproutcore 2 eine Tabelle hin:<br />
<script src="https://gist.github.com/1362012.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/11/13/sproutcore-2-0-und-tabellen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CoffeeScript ohne CoffeeScript</title>
		<link>http://werasagt.de/2011/08/07/coffeescript-ohne-coffeescript/</link>
		<comments>http://werasagt.de/2011/08/07/coffeescript-ohne-coffeescript/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 10:40:04 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=227</guid>
		<description><![CDATA[JavaScript -> CoffeeScript -> JavaScript Wenn man sich im Web mit JavaScript beschäftigt, begegnet man zur Zeit ständig CoffeeScript. Das führt zwangsläufig dazu, daß man sich CoffeeScript ein mal anschaut und es ausprobieren moöchte. Bevor man gleich mit CoffeeScript beginnt &#8230; <a href="http://werasagt.de/2011/08/07/coffeescript-ohne-coffeescript/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>JavaScript -> CoffeeScript -> JavaScript</h2>
<p>Wenn man sich im Web mit JavaScript beschäftigt, <a href="http://javascriptshow.com/episodes/5" title="The Javascript Show Podcast">begegnet</a> man zur Zeit ständig CoffeeScript. Das führt zwangsläufig dazu, daß man sich CoffeeScript ein mal anschaut und es ausprobieren moöchte. Bevor man gleich mit CoffeeScript beginnt und es sich installiert, kann man es Online interaktiv testen. Auf der <a href="http://jashkenas.github.com/coffee-script/">CoffeeScript Site</a> gibt es die Möglichkeit CoffeeScript in JavaScript umzuwandeln (dazu im Menü auf &#8220;TRY COFFEESCRIPT&#8221; klicken), dabei sieht man beim Tippen im linken Fenster, den entsprechenden JavaScript Code im rechten Fenster.<br />
Das Ganze gibt es dann auch andersherum, allerdings auf einer anderen <a href="http://ricostacruz.com/js2coffee/">Site</a> (js2coffee). Dort gibt man JavaScript ein und es entsteht CoffeeScript.<br />
<img src="http://werasagt.de/wp-content/uploads/2011/08/jscsjs.png" alt="" title="JS -&gt; CS -&gt; JS" width="486" height="76" class="alignleft size-full wp-image-228" />Wenn man jetzt beides zusammen nimmt bekommt man die Moöglichkeit Online JavaScript in CoffeeScript und wieder zurück in JavaScript umzuwandeln. Wozu soll das jetzt gut sein? Man kann nun die Vorteile von CoffeeScript verwenden, ohne das man direkt CoffeeScript einsetzt.<br />
Laut der CoffeeScript Site ist der von CoffeeScript generierte Code mindestens gleich schnell wie handgeschriebenes JavaScript und das ist auch plausibel, wenn man bedenkt wie flexibel JavaScript ist.</p>
<h2>Günstig zur Klasse</h2>
<p>Wenn man mit älterem JavaScript Code arbeitet findet man häufig <a href="http://de.wikipedia.org/wiki/Prozedurale_Programmierung" title="Prozedurale Programmierung">prozeduralen Code</a>, also Code der nur aus Funktionen besteht. Alle Funktionen sind öffentlich, man hat globale Variablen. Mit der Umwandlung zu CoffeeScript und wieder zurück kann man diese Funktionen schnell zu Klassen, genauer gesagt klassenartigen Objekten, zusammenfassen und den Code so an den &#8220;Stand der Technik&#8221; anpassen.<br />
<img src="http://werasagt.de/wp-content/uploads/2011/08/funktion_klasse.png" alt="" title="Von der Funktion zur Klasse" width="377" height="529" class="alignleft size-full wp-image-232" />Man muss nur ein „class &lt;Klassenname&gt;“ den Funktionen voranstellen und am Ende die öffentlichen Funktionen definieren. Man spart sich damit einiges an Tipparbeit und sieht auch gleich wie man in JavaScript Klassen erstellt, falls man es vorher noch nicht wusste.<br />
Im linken Beispiel sieht man am Anfang eine Funktion namens &#8220;a&#8221;. Im Schritt zwei wurde der JavaScript Code mit js2coffee nach CoffeeScript umgewandelt. Es wurde eine Klasse erstellt mit &#8220;class Klasse&#8221;. Die Funktion wurden eingerückt, damit sie der Klasse zugeordnet ist. Am Ende der Klasse wird die Funktion &#8220;a&#8221; mit der Zuweisung: this.a = a als öffentlich deklariert. Die Klasse ist damit vollständig und wurde im letzten Schritt wieder in JavaScript umgewandelt.<br clear="both"/></p>
<h2>Codequalität</h2>
<p><iframe style="margin-right: 20px" class="alignleft" src="http://player.vimeo.com/video/25606006" width="400" height="225" frameborder="0"></iframe>Wie schon angesprochen ist JavaScript recht flexibel. Es macht nicht unbedingt etwas, wenn man ein Semikolon am Ende vergisst, die meisten kennen den Unterschied zwischen == und === nicht, oder das &#8220;<a href="http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/" title="Hoisting erklärt">Hoisting</a>&#8221; der Variablendeklarationen. Diese Ungenauigkeiten in JavaScript können zu subtilen Fehlern führen, daher ist es <a href="http://vimeo.com/pixi/txjs11a1" title="TXJS 2011 A1 - Douglas Crockford - JavaScript Programming Style and Your Brain">ratsam</a> den Code mit einem Syntaxchecker wie <a href="http://www.jslint.com/">JSLint</a> zu prüfen.<br />
Diese Arbeit nimmt einem CoffeeScript ab, denn CoffeeScript generiert gleich JSLint konformen Code.</p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/08/07/coffeescript-ohne-coffeescript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sproutcore 2.0 und Sinatra</title>
		<link>http://werasagt.de/2011/06/20/sproutcore-2-0-und-sinatra/</link>
		<comments>http://werasagt.de/2011/06/20/sproutcore-2-0-und-sinatra/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 17:46:24 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sinatra]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=214</guid>
		<description><![CDATA[Nachdem ich gezeigt habe wie man Sproutcore 2.0 in Rails 3.1 integriert habe ich mir nun Sinatra angeschaut. Wie bei Rails 3.1 war es auch bei Sinatra am Schwierigsten Compass dazu zu bringen scss Dateien in css umzuwandeln. Was daran &#8230; <a href="http://werasagt.de/2011/06/20/sproutcore-2-0-und-sinatra/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich <a href="http://werasagt.de/?p=175">gezeigt habe</a> wie man Sproutcore 2.0 in Rails 3.1 integriert habe ich mir nun Sinatra angeschaut.<br />
Wie bei Rails 3.1 war es auch bei Sinatra am Schwierigsten Compass dazu zu bringen scss Dateien in css umzuwandeln. Was daran lag, daß ich erstmal Anleitungen gefunden habe, in denen die Compass Konfiguration über eine separate Datei eingelesen wurde. Damit habe ich es leider dann nicht geschafft, daß Sass scss-Dateien verwenden wollte statt sass-Dateien.<br />
Irgendwann entdeckte ich dann das Sass Rack Plugin und damit war es dann total einfach. Man muss nur in <a href="https://github.com/RainerBlessing/Sproutcore-2.0-Sinatra-HTML5-Boilerplate/blob/master/config.ru">config.ru</a> folgendes einfügen:</p>
<div class="code_block">
<div class="code_header">
    config.ru
  </div>
<div class="code">
<pre name="code" class="ruby">require 'sass/plugin/rack'
use Sass::Plugin::Rack
Sass::Plugin.options = Compass.sass_engine_options</pre>
</div>
</div>
<p>Dann werden bei einer Anfrage die Dateien aus <a href="https://github.com/RainerBlessing/Sproutcore-2.0-Sinatra-HTML5-Boilerplate/tree/master/public/stylesheets/sass">public/stylesheets/sass</a> nach public/stylesheets übersetzt.</p>
<p>Im <a href="https://github.com/RainerBlessing/Sproutcore-2.0-Sinatra-HTML5-Boilerplate/blob/master/my_sinatra_app.rb">Sinatra Controller</a> benötigt man dann natürlich noch folgende Funktion für die CSS Dateien:</p>
<div class="code_block">
<div class="code">
<pre name="code" class="ruby">
get "/stylesheets/:name.css" do
   content_type 'text/css'
   File.read(File.join('public/stylesheets', "#{params[:name]}.css"))
end
</pre>
</div>
</div>
<p>Den <a href="https://github.com/RainerBlessing/Sproutcore-2.0-Sinatra-HTML5-Boilerplate">kompletten Code</a> gibt es auf Github.</p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/06/20/sproutcore-2-0-und-sinatra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schwierigkeiten mit git svn clone &#8230;</title>
		<link>http://werasagt.de/2011/06/19/schwierigkeiten-mit-git-svn-clone/</link>
		<comments>http://werasagt.de/2011/06/19/schwierigkeiten-mit-git-svn-clone/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 09:58:32 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=206</guid>
		<description><![CDATA[Git ist ja eigentlich ganz toll. Nur die SVN Anbindung könnte man noch verbessern. Als ich mit git-svn unter Windows ein neues Git Repository erstellen wollte, gab es erstmal Speicherprobleme und der checkout brach immer ab. Nach Anwendung dieses Patch &#8230; <a href="http://werasagt.de/2011/06/19/schwierigkeiten-mit-git-svn-clone/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://git-scm.com/">Git</a> ist ja eigentlich ganz toll. Nur die SVN Anbindung könnte man noch verbessern. Als ich mit <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn</a> unter Windows ein neues Git Repository erstellen wollte, gab es erstmal Speicherprobleme und der checkout brach immer ab. Nach Anwendung dieses <a href="http://groups.google.com/group/msysgit/browse_thread/thread/113f5b76f349b036">Patch</a> war das behoben.<br />
Nun kam das nächste Problem: &#8220;git-svn died with signal 13&#8243;. Ich konnte dann git svn clone nicht mehr ausführen, da schon mit dem Auschecken begonnen wurde. Weiter ging es daher mit &#8220;git fetch&#8221;.  Nach ein paar mal &#8220;git fetch&#8221; war das Repository da.<br />
Der Out Of Memory fehler trat nun am Ende des Checkouts, beim Komprimieren, wieder auf. Daher habe ich den Prozess, mit &#8220;<a href="http://www.kernel.org/pub/software/scm/git/docs/git-gc.html">git gc</a>&#8220;,manuell gestartet.<br />
Überrascht war ich jetzt, daß nur das .git Verzeichnis vorhanden war. Nicht aber die Dateien aus dem SVN Repository.<br />
Der letzte Schritt hat nun für mich am Längsten gedauert. git checkout und git branch funktionierten nicht. Ich wusste das der Code da war und das es eine Möglichkeit geben musste heranzukommen.<br />
Was war jetzt anders gegenüber einem herkömmlichen Checkout? Ich habe &#8220;git fetch&#8221; verwendet. Daher suchte ich also nach der Bedeutung von git fetch und fand, wie so oft, eine gute Erklärung auf <a href="http://http://stackoverflow.com/questions/292357/whats-the-difference-between-git-pull-and-git-fetch">Stackoverflow</a>:</p>
<blockquote><p> In the simplest terms, &#8220;git pull&#8221; does a &#8220;git fetch&#8221; followed by a &#8220;git merge&#8221;.</p></blockquote>
<p>Ich musste also ein git merge ausführen. Die nächste Klippe: Wie heisst der zu mergende Branch? Ich probierte &#8220;git merge git-svn&#8221; und das klappte dann tatsächlich. Nach dem Ausführen hatte ich den master Branch und der Checkout Prozess war endlich abgeschlossen.</p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/06/19/schwierigkeiten-mit-git-svn-clone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sinatra Anwendungsvorlage</title>
		<link>http://werasagt.de/2011/06/17/sinatra-anwendungsvorlage/</link>
		<comments>http://werasagt.de/2011/06/17/sinatra-anwendungsvorlage/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 20:08:56 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sinatra]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=202</guid>
		<description><![CDATA[Man möchte ja nicht für jede Webanwendung Ruby On Rails verwenden. Zum Ausprobieren und für kleinere Anwendungen ist Sinatra gut geeignet. Der folgenden Zeilen reichen schon für ein &#8220;Hello World!&#8221;]]></description>
			<content:encoded><![CDATA[<p>Man möchte ja nicht für jede Webanwendung Ruby On Rails verwenden. Zum Ausprobieren und für kleinere Anwendungen ist <a href="http://www.sinatrarb.com/">Sinatra</a> gut geeignet. Der folgenden Zeilen reichen schon für ein &#8220;Hello World!&#8221;</p>
<p><script src="https://gist.github.com/1032178.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/06/17/sinatra-anwendungsvorlage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screencasten ist gar nicht so schwierig</title>
		<link>http://werasagt.de/2011/06/15/screencasten-ist-gar-nicht-so-schwierig/</link>
		<comments>http://werasagt.de/2011/06/15/screencasten-ist-gar-nicht-so-schwierig/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 19:38:17 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=197</guid>
		<description><![CDATA[Was ist eigentlich die deutsche Übersetzung von Screencast? Wahrscheinlich ist das ähnlich schlecht Übersetzbar wie Podcast. Gregg Pollack, bekannt geworden durch den Railsenvy Podcast, ist mit einer Online Learning Site beschäftigt und hat dazu nicht uneigennützig einen Screencast über das &#8230; <a href="http://werasagt.de/2011/06/15/screencasten-ist-gar-nicht-so-schwierig/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/liewcf/2427204350/"><img alt="" src="http://farm4.static.flickr.com/3064/2427204350_0ced1b5a44_m.jpg" class="alignleft" width="240" height="180" /></a>Was ist eigentlich die deutsche Übersetzung von Screencast? Wahrscheinlich ist das ähnlich schlecht Übersetzbar wie Podcast.<br />
Gregg Pollack, bekannt geworden durch den Railsenvy Podcast, ist mit einer <a href="http://www.codeschool.com/">Online Learning Site</a> beschäftigt und hat dazu nicht uneigennützig einen <a href="http://www.codeschool.com/code_tv/screencasting">Screencast</a> über das Erstellen von Screencasts gemacht. Er stellt darin die Vorgehensweise unter OSX vor. Er zeigt aus welchen Teilen ein Screencast bestehen kann und stellt die verwendeten Hilfsmittel vor, also Soft- und Hardware.<br />
Das muß ich mal ausprobieren, wenn ich Zeit habe. Vielleicht ist <a href="http://www.apple.com/downloads/macosx/video/screenflow.html">Screenflow</a> ja meine <a href="http://de.wikipedia.org/wiki/Killerapplikation">Killerapp</a> für OSX. Themen für Screencasts gibt es ja genug: Ein Blog in Ruby on Rails in 15 Minuten, oder ein Screencast über das machen von Screencasts unter Ubuntu in OSX mit VirtualBox, oder so <img src='http://werasagt.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/06/15/screencasten-ist-gar-nicht-so-schwierig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails 3.1, Sproutcore und Jasmine</title>
		<link>http://werasagt.de/2011/06/14/rails-3-1-sproutcore-und-jasmine/</link>
		<comments>http://werasagt.de/2011/06/14/rails-3-1-sproutcore-und-jasmine/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 17:54:32 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=175</guid>
		<description><![CDATA[Im Bereich Webprogrammierung ist zur Zeit das JavaScript Umfeld sehr interessant und gewinnt mehr und mehr an Fahrt. Nach den DOM Libraries wie JQuery und Prototype entstehen nun JavaScript MVC Frameworks wie Backbone und Sproutcore, die das DOM wegabstrahieren und &#8230; <a href="http://werasagt.de/2011/06/14/rails-3-1-sproutcore-und-jasmine/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Im Bereich Webprogrammierung ist zur Zeit das JavaScript Umfeld sehr interessant und gewinnt mehr und mehr an Fahrt. Nach den DOM Libraries wie JQuery und Prototype entstehen nun JavaScript MVC Frameworks wie<br />
<a href="http://documentcloud.github.com/backbone/">Backbone</a> und <a href="http://www.sproutcore.com/">Sproutcore</a>, die das DOM wegabstrahieren und es ermöglichen auch in JavaScript im gewohnten MVC Paradigma zu<br />
programmieren.<br />
Da es ab <a href="http://blog.sproutcore.com/announcing-sproutcore-2-0/">Sproutcore 2.0</a> möglich ist, Sproutcore Views als Schnipsel in HTML <a href="http://blog.sproutcore.com/dispatches-from-the-edge-dropping-in-a-sproutcore-2-0-application">einzubetten</a> habe ich mir angesehen, was nötig ist um Sproutcore in eine Rails 3.1 Anwendung zu integrieren.<br />
Als Basis habe ich den Tutorial Code für eine <a href="https://github.com/sproutcore/todos">Todo Anwendung</a> genommen.</p>
<h2>Compass und SASS</h2>
<p>Damit das richtige CSS generiert wird fügt muß das <a href="http://compass-style.org/">compass</a> Gem hinzugefügt werden. Bisher ist dafür noch eine spezielle Version für Rails 3.1 nötig.</p>
<div class="code_block">
<div class="code_header">Gemfile</div>
<div class="code">
<pre class="ruby">gem 'compass', :git =&gt; 'https://github.com/chriseppstein/compass.git',:branch =&gt; 'rails31'</pre>
</div>
</div>
<p>Nun bindet man noch ein sass-rails Gem ein:</p>
<div class="code_block">
<div class="code_header">Gemfile</div>
<div class="code">
<pre class="ruby">gem 'sass-rails', :git =&gt; 'https://github.com/rails/sass-rails.git'</pre>
</div>
</div>
<p><strong>Update:</strong> Inzwischen ist es nicht mehr nötig die Git repositories anzugeben. Ein &#8220;gem &#8216;compass&#8217;&#8221; und &#8220;gem &#8216;sass&#8217;&#8221; reichen aus.</p>
<p>Die Compass Stylesheets müssen noch dem Sass Ladepfad hinzuzufügt werden.<br />
Für sass-rails macht man dies in config/application.rb:</p>
<div class="code_block">
<div class="code_header">config/application.rb</div>
<div class="code">
<pre class="ruby">config.sass.load_paths ||= []
config.sass.load_paths &lt;&lt; "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"</pre>
</div>
</div>
<p>Im Rails Wurzelverzeichnis gibt man nun:</p>
<pre class="ruby">compass init rails .</pre>
<p>ein, was die Datei config/compass.rb erzeugt.</p>
<h2>Sproutcore.js einbinden</h2>
<p>Für Sproutcore gibt es das Gem <a href="https://github.com/kiskolabs/sproutcore-rails">sproutcore-rails</a>, das ähnlich wie jquery-rails, Sproutcore.js in einem Gem zur Verfügung stellt.<br />
Es wird dann nur ein</p>
<pre class="ruby">//= require sproutcore</pre>
<p>in app/assets/javascripts/application.js benötigt.<br />
Möchte man den Javascript Code jedoch noch testen sollte man sich <a href="https://github.com/sproutcore/starter-kit/tree/master/js/libs">sproutcore.js</a> seperat in das assets/javascripts Verzeichnis kopieren.<br />
Nun ist Sproutcore in die Rails Anwendung integriert und man kann beginnen Sproutcore zu verwenden.</p>
<h2>Jasmine</h2>
<p>Zum Testen der Sproutcore Anwendung habe ich <a href="http://pivotal.github.com/jasmine/">Jasmine</a> verwendet, das in der <a href="http://railscasts.com/episodes/261-testing-javascript-with-jasmine">Railscasts Folge 261</a> vorgestellt wurde. Damit Jasmine mit Rails 3.1 funktioniert, müssen lediglich die JavaScript-Dateien in spec/javascripts/support/jasmine.yml angegeben werden.</p>
<div class="code_block">
<div class="code_header">spec/javascripts/support/jasmine.yml</div>
<div class="code">
<pre class="ruby">src_files:
- app/assets/javascripts/sproutcore-2.0.a.3.js
- app/assets/javascripts/todos.js</pre>
</div>
</div>
<p>Nun kann man mit den Tests beginnen:</p>
<div class="code_block">
<div class="code_header">spec/javascripts/todos_spec.js</div>
<div class="code">
<pre class="ruby">describe("Todos", function() {
  it("should add a todo element", function(){
    var todosController=Todos.todosController;
    todosController.createTodo("new Todo");
    expect(todosController.content.objectAt(0).title).toEqual("new Todo");
  });
});</pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/06/14/rails-3-1-sproutcore-und-jasmine/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SASS</title>
		<link>http://werasagt.de/2011/05/31/168/</link>
		<comments>http://werasagt.de/2011/05/31/168/#comments</comments>
		<pubDate>Tue, 31 May 2011 17:22:06 +0000</pubDate>
		<dc:creator>Rainer</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://werasagt.de/?p=168</guid>
		<description><![CDATA[Das man bei SASS Variablen benutzen und die Deklarationen schachteln kann, war mir bekannt, aber wie Ryan Bates in diesem Railscast vorstellt, gibt es bei SASS auch Funktionen, mit denen man z.B. Farbwerte verändern kann.]]></description>
			<content:encoded><![CDATA[<p><img src="http://werasagt.de/wp-content/uploads/2011/05/sass.gif" alt="SASS" title="sass" width="217" height="238" class="alignleft size-full wp-image-169" /> Das man bei <a href="http://sass-lang.com">SASS</a> Variablen benutzen und die Deklarationen schachteln kann, war mir bekannt, aber wie Ryan Bates in diesem <a href="http://railscasts.com/episodes/268-sass-basics">Railscast</a> vorstellt, gibt es bei SASS auch <a href="http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html">Funktionen</a>, mit denen man z.B. Farbwerte verändern kann.</p>
]]></content:encoded>
			<wfw:commentRss>http://werasagt.de/2011/05/31/168/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.530 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-05 05:05:20 -->

