<?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>KOPIS.DE</title>
	<atom:link href="http://blog.kopis.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kopis.de</link>
	<description>Persönliches &#38; Programmiertes</description>
	<lastBuildDate>Wed, 10 Mar 2010 11:00:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Learning Golang #4, oder FizzBuzz Kata</title>
		<link>http://blog.kopis.de/2010/03/09/learning-golang-4-oder-fizzbuzz-kata/</link>
		<comments>http://blog.kopis.de/2010/03/09/learning-golang-4-oder-fizzbuzz-kata/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 08:38:58 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[golang]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4541</guid>
		<description><![CDATA[
			
				
			
		
Heute habe ich mir eine Kata vorgenommen, und zwar FizzBuzz. Ich schreibe mein Golang immer noch extrem kurz und unleserlich. Solche Dinge wie r[v] = list[v] lösen ein schlechtes Gewissen bei mir aus, aber trotzdem bekommt ihr hier den Sourcecode ohne irgendwelche Verschönerungen. Wie bei einer Kata üblich kommt erst der Test, dann der Code:
fizzbuzz_test.go

package [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F09%2Flearning-golang-4-oder-fizzbuzz-kata%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F09%2Flearning-golang-4-oder-fizzbuzz-kata%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">H</span>eute habe ich mir eine <a href="http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue">Kata</a> vorgenommen, und zwar FizzBuzz. Ich schreibe mein Golang immer noch extrem kurz und unleserlich. Solche Dinge wie <code>r[v] = list[v]</code> lösen ein schlechtes Gewissen bei mir aus, aber trotzdem bekommt ihr hier den Sourcecode ohne irgendwelche Verschönerungen. Wie bei einer Kata üblich kommt erst der Test, dann der Code:</p>
<p><strong>fizzbuzz_test.go</strong></p>
<pre class="brush: perl">
package fizzbuzz

import (
    &quot;testing&quot;
)

func TestAnswer(t *testing.T) {
    actual := Answer([]int{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,60})
    expected := []interface{}{1,2,&quot;fizz&quot;,4,&quot;buzz&quot;,&quot;fizz&quot;,7,8,&quot;fizz&quot;, &quot;buzz&quot;,11,&quot;fizz&quot;,13,14,&quot;fizzbuzz&quot;,&quot;fizzbuzz&quot;}
    for a := range(actual) {
        if actual[a] != expected[a] {
            error(t, &quot;Wrong&quot;, expected[a], actual[a])
        }
    }
}
func error(t *testing.T, message string, expected interface{}, actual interface{}) {
    t.Errorf(&quot;%s: &#039;%s&#039; != &#039;%s&#039;&quot;, message, expected, actual)
}
</pre>
<p><strong>fizzbuzz.go</strong></p>
<pre class="brush: perl">
package fizzbuzz

func Answer(list []int) []interface{} {
    r := make([]interface{}, len(list))
    for v := range(list) {
        switch {
            case list[v] % 3 == 0 &amp;&amp; list[v] % 5 == 0:
                r[v] = &quot;fizzbuzz&quot;
            case list[v] % 3 == 0:
                r[v] = &quot;fizz&quot;
            case list[v] % 5 == 0:
                r[v] = &quot;buzz&quot;
            default:
                r[v] = list[v]
        }
    }
    return r
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/09/learning-golang-4-oder-fizzbuzz-kata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein paar Gedanken zur Trainingsfrequenz</title>
		<link>http://blog.kopis.de/2010/03/08/ein-paar-gedanken-zur-trainingsfrequenz/</link>
		<comments>http://blog.kopis.de/2010/03/08/ein-paar-gedanken-zur-trainingsfrequenz/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 18:14:38 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Sport]]></category>
		<category><![CDATA[Bodybuilding]]></category>
		<category><![CDATA[Ego]]></category>
		<category><![CDATA[Trainingsplan]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4537</guid>
		<description><![CDATA[
			
				
			
		
Nachdem ich die letzten Wochen einen Ganzkörperplan befolgt habe und damit Montags, Mittwochs und Freitags sowohl Kreuzheben als auch Kniebeugen als auch Klimmzüge gemacht habe, muss ich heute mein Training ausfallen lassen. Mein Rücken zieht, und zwar genau an der Ansatzstelle des Lattissimus. Wahrscheinlich werde ich auch am Mittwoch noch nicht wieder trainieren können.
Am Wochenende [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F08%2Fein-paar-gedanken-zur-trainingsfrequenz%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F08%2Fein-paar-gedanken-zur-trainingsfrequenz%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">N</span>achdem ich die letzten Wochen einen Ganzkörperplan befolgt habe und damit Montags, Mittwochs und Freitags sowohl Kreuzheben als auch Kniebeugen als auch Klimmzüge gemacht habe, muss ich heute mein Training ausfallen lassen. Mein Rücken zieht, und zwar genau an der Ansatzstelle des Lattissimus. Wahrscheinlich werde ich auch am Mittwoch noch nicht wieder trainieren können.</p>
<p>Am Wochenende hatte ich auch noch einen Rückfall in die Kohlenhydrate. Das alles passt natürlich nicht so gut, denn eigentlich hatte ich mir was anderes vorgenommen. Aber jetzt zurück zum Thema:</p>
<p>Ich konnte mich nur minimal beim Kreuzheben steigern, von 80kg auf 85kg. Und in der letzten Woche habe ich in meinem Trainingslog gesehen, dass meine Wiederholungszahlen bei jedem Training weiter nach unten gingen: 18, 15, dann 12 und den letzten Wert erspare ich euch jetzt. Bei dem 4. Training musste ich dann auch die Kniebeugen weglassen.</p>
<p>Bei <a href="http://leangains.blogspot.com/2010/03/10-random-thoughts-on-weight-training.html">Leangains gibt es gerade einen Artikel mit einigen Gedanken zum Krafttraining</a> und der erste Satz lautet:</p>
<blockquote><p>The deadlift is poorly suited to a high training frequency. I&#8217;ve never derived any benefit from training the lift more than once per week; and even that is pushing it in terms of recovery if I&#8217;m squatting heavy within that same week. Generally speaking, I&#8217;ve had my best deadlift-sessions while training the no more than once every 8-12th day</p></blockquote>
<p>Zu Deutsch: Öfter als 1x pro Woche Kreuzheben zu trainieren bringt gar nichts. Jedenfalls nicht ab einem gewissen Level. Ein Einsteiger kann mit leichten bis moderaten Gewichten auch mehrmals trainieren, aber ich denke, sobald man bei dem eigenen Körpergewicht angekommen ist, sollte man etwas mehr Regenerationszeit einplanen. Und das werde ich jetzt machen.</p>
<p>Mein Trainingsplan wird als nächstes wieder auf einen Splitplan gewechselt. Da ich demnächst in meinem Keller trainieren will, muss ich den Plan noch ein wenig anpassen und auf die erst nach und nach dazukommenden Geräte einstellen. Wie ich das mache, weiß ich noch nicht. Bis zum Ende des Monats trainiere ich noch im Fitnessstudio und muss ich mich nicht einschränken, also werde ich wieder auf meinen Plan mit einzelnen Einheiten für PUSH/PULL/Beine zurückwechseln.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/08/ein-paar-gedanken-zur-trainingsfrequenz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Golang #3, oder Wie hänge ich ein Element an eine Map?</title>
		<link>http://blog.kopis.de/2010/03/08/learning-golang-3-oder-wie-fuge-ich-ein-element-zu-einer-map/</link>
		<comments>http://blog.kopis.de/2010/03/08/learning-golang-3-oder-wie-fuge-ich-ein-element-zu-einer-map/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 12:00:43 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[golang]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4528</guid>
		<description><![CDATA[
			
				
			
		
Es mag offensichtlich sein, aber ich will es hier doch noch festhalten: Um ein Element an eine map anzuhängen, genügt eine Zuweisung.

package main

import (
    &#34;fmt&#34;
)

func main() {
    var m = map[string]string{&#34;1&#34;:&#34;eins&#34;}
    m[&#34;2&#34;] = &#34;zwei&#34;
    fmt.Println(m)
}

Diese kleine Programm gibt folgende Ausgabe:

map[1:eins 2:zwei]

Daraufhin habe ich [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F08%2Flearning-golang-3-oder-wie-fuge-ich-ein-element-zu-einer-map%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F08%2Flearning-golang-3-oder-wie-fuge-ich-ein-element-zu-einer-map%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">E</span>s mag offensichtlich sein, aber ich will es hier doch noch festhalten: Um ein Element an eine <code>map</code> anzuhängen, genügt eine Zuweisung.</p>
<pre class="brush: perl">
package main

import (
    &quot;fmt&quot;
)

func main() {
    var m = map[string]string{&quot;1&quot;:&quot;eins&quot;}
    m[&quot;2&quot;] = &quot;zwei&quot;
    fmt.Println(m)
}
</pre>
<p>Diese kleine Programm gibt folgende Ausgabe:</p>
<pre class="brush: bash">
map[1:eins 2:zwei]
</pre>
<p>Daraufhin habe ich diese kleine Testanwendung geschrieben, die eine <code>map[string]string</code> nimmt, ein Argument hinzufügt und anschliessend einen String ausgibt, in dem alle Inhalte der <code>map</code> sortiert enthalten sind.</p>
<pre class="brush: perl">
package main

import (
    &quot;fmt&quot;
    &quot;strings&quot;
    &quot;sort&quot;
)

func gq(m map[string]string) string {
    ma := make([]string, len(m))
    i := 0
    for key,value := range(m) {
        ma[i] = key + &quot;=&quot; + value
        i++
    }
    sort.SortStrings(ma)
    query := strings.Join(ma, &quot;&amp;amp;&quot;)
    return query
}

func main() {
    var m = map[string]string{&quot;1&quot;:&quot;eins&quot;, &quot;acht&quot;:&quot;8&quot;}
    m[&quot;2&quot;] = &quot;zwei&quot;
    query := gq(m)
    fmt.Printf(&quot;result: ?%s\n&quot;, query)
}
</pre>
<p>Und ja, brauche ich so für meine erste kleine Anwendung von <a href="http://golang.org">golang</a>. <img src='http://blog.kopis.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/08/learning-golang-3-oder-wie-fuge-ich-ein-element-zu-einer-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Golang #2, oder Wie erstelle ich eine MD5-Hashsumme?</title>
		<link>http://blog.kopis.de/2010/03/05/learning-golang-2-oder-wie-erstelle-ich-eine-md5-hashsumme/</link>
		<comments>http://blog.kopis.de/2010/03/05/learning-golang-2-oder-wie-erstelle-ich-eine-md5-hashsumme/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 14:32:41 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[golang]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4523</guid>
		<description><![CDATA[
			
				
			
		
Weiter geht&#8217;s. Diesmal mit der Erstellung einer MD5-Hashsumme. Diese Funktion brauchte ich für die Validierung einer API-Anfrage. Dort sollte neben der Argumentliste auch eine Hashsumme der Argumente plus einem geheimen Schlüssel übermittelt werden. Nach ein paar erfolglosen Versuchen, aus der Package Documentation schlau zu werden, half mir (wieder einmal) Stackoverflow weiter.
Das ist übrigens auch der [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F05%2Flearning-golang-2-oder-wie-erstelle-ich-eine-md5-hashsumme%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F05%2Flearning-golang-2-oder-wie-erstelle-ich-eine-md5-hashsumme%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">W</span>eiter geht&#8217;s. Diesmal mit der Erstellung einer <a href="http://de.wikipedia.org/wiki/Message-Digest_Algorithm_5">MD5-Hashsumme</a>. Diese Funktion brauchte ich für die Validierung einer API-Anfrage. Dort sollte neben der Argumentliste auch eine Hashsumme der Argumente plus einem geheimen Schlüssel übermittelt werden. Nach ein paar erfolglosen Versuchen, aus der <a href="http://golang.org/pkg/crypto/md5/">Package Documentation</a> schlau zu werden, <a href="http://stackoverflow.com/questions/2377881/how-to-get-a-md5-hash-from-a-string-in-golang">half mir (wieder einmal) Stackoverflow weiter</a>.</p>
<p>Das ist übrigens auch der schwierigste Teil von Golang bis jetzt: Herausfinden, welche Funktion man aus einem Package gerade benötigt und vor allem wie man sie aufruft.</p>
<pre class="brush: perl">
package main

import (
    &quot;fmt&quot;
    &quot;crypto/md5&quot;
    &quot;hash&quot;
)

func main() {
    original := &quot;my string comes here&quot;
    var h hash.Hash = md5.New()
    h.Write([]byte(original))
    fmt.Printf(&quot;%s: %x\n&quot;, original, h.Sum())
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/05/learning-golang-2-oder-wie-erstelle-ich-eine-md5-hashsumme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning Golang #1, oder Wie sortiere ich eine map?</title>
		<link>http://blog.kopis.de/2010/03/05/learning-golang-1-oder-wie-sortiere-ich-eine-map/</link>
		<comments>http://blog.kopis.de/2010/03/05/learning-golang-1-oder-wie-sortiere-ich-eine-map/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 08:34:58 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[golang]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4514</guid>
		<description><![CDATA[
			
				
			
		
Gestern habe ich weiter an meiner ersten Applikation in golang gearbeitet und dabei stellte sich mir die Frage, wie man eine map[string]string sortiert. Stackoverflow hat (wie immer) weiter geholfen, nachdem ich ein paar Versuche selbst unternommen hatte.
Ich denke, die folgende Lösung ist nicht das schickste. Sicherlich gibt es eine nette Möglichkeit, eine map auch mit [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F05%2Flearning-golang-1-oder-wie-sortiere-ich-eine-map%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F05%2Flearning-golang-1-oder-wie-sortiere-ich-eine-map%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">G</span>estern habe ich weiter an meiner ersten Applikation in <a href="http://golang.org/">golang</a> gearbeitet und dabei stellte sich mir die Frage, wie man eine <code>map[string]string</code> sortiert. <a href="http://stackoverflow.com/questions/2377881/how-to-get-a-md5-hash-from-a-string-in-golang">Stackoverflow hat (wie immer) weiter geholfen</a>, nachdem ich ein paar Versuche selbst unternommen hatte.</p>
<p>Ich denke, die folgende Lösung ist nicht das schickste. Sicherlich gibt es eine nette Möglichkeit, eine <code>map</code> auch mit <code>Channels</code> zu sortieren. Ein <a href="http://de.wikipedia.org/wiki/Bubblesort">BubbleSort</a> sollte damit schnell erstellt sein. Das werde ich beim nächsten Mal ausprobieren.</p>
<pre class="brush: python">
package main

import (
    &quot;fmt&quot;
    &quot;sort&quot;
)

func main() {
    m := map[string]string{&quot;b&quot;:&quot;15&quot;, &quot;z&quot;:&quot;123123&quot;, &quot;x&quot;:&quot;sdf&quot;, &quot;a&quot;:&quot;12&quot;}
    mk := make([]string, len(m))
    i := 0
    for k, _ := range m {
        mk[i] = k
        i++
    }
    sort.SortStrings(mk)
    fmt.Println(mk)
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/05/learning-golang-1-oder-wie-sortiere-ich-eine-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>golang: Erste Schritte</title>
		<link>http://blog.kopis.de/2010/03/03/golang-erste-schritte/</link>
		<comments>http://blog.kopis.de/2010/03/03/golang-erste-schritte/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 13:05:52 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4486</guid>
		<description><![CDATA[
			
				
			
		
Ich bin in den letzten Tagen wieder öfter auf Go gestossen, Googles neue Programmiersprache. Und jetzt habe ich beschlossen, das ganze auch auszuprobieren &#8211; obwohl mir die Syntax erstmal nicht gefällt. Zu nah an C, zu viele Pointer&#8230;   Aber trotzdem bin ich an neuen Inputs in Sachen Softwareentwicklung interessiert und gerade die Ausrichtung [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F03%2Fgolang-erste-schritte%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F03%2Fgolang-erste-schritte%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">I</span>ch bin in den letzten Tagen wieder öfter auf <a href="http://golang.org/">Go</a> gestossen, <a href="http://www.google.com/">Googles</a> neue Programmiersprache. Und jetzt habe ich beschlossen, das ganze auch auszuprobieren &#8211; obwohl mir die Syntax erstmal nicht gefällt. Zu nah an C, zu viele Pointer&#8230; <img src='http://blog.kopis.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Aber trotzdem bin ich an neuen Inputs in Sachen Softwareentwicklung interessiert und gerade die Ausrichtung auf Mehrprozessorsysteme und message-basierte Anwendungen hat eine große Anziehungskraft. Also richte ich mir eine kleine Linux-VM ein und installiere alle notwendigen Pakete für <strong>Go</strong> (und ab jetzt werde ich mit <em>golang</em> auf die Sprache verweisen, denn 2 Buchstaben sind einfach zu wenig für eine Suchmaschine&#8230;).</p>
<p><strong>Mercurial</strong></p>
<p>Als erstes wird <a href="http://mercurial.selenic.com/">Mercurial</a> installiert, da ich auf die neuste Version von Golang zugreifen möchte. Unter <a href="http://www.debian.org/">Debian</a> geht das mit folgendem Kommando:</p>
<pre class="brush: bash">
$ apt-get install mercurial
</pre>
<p><strong>Golang</strong></p>
<p>Seltsamerweise konnte ich nicht zu 100% der <a href="http://golang.org/doc/install.html">offiziellen Installationsanleitung</a> folgen. Meine Installation von Mercurial wollte das Repository partout nicht über <a href="http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure">HTTPS</a> klonen. Aber <a href="http://code.google.com">Google Code</a> liefert <a href="http://go.googlecode.com/hg">das Golang-Repository auch über HTTP</a> und damit bin ich schliesslich zum Ziel gekommen:</p>
<pre class="brush: bash">
$ export GOROOT=/pfad/zu/go # Standard ist $HOME/go
$ export GOARCH=386
$ export GOOS=linux
$ hg clone -r release http://go.googlecode.com/hg/ $GOROOT
</pre>
<p>Um Golang selbst zu bauen, müssen noch ein paar Tools der <a href="http://gcc.gnu.org/">GCC</a> Toolchain installiert werden:</p>
<pre class="brush: bash">
$ apt-get install bison gcc libc6-dev ed gawk make
</pre>
<p>Da ich zum Zeitpunkt der Installation hinter einem Proxy sass, musste ich die Testcases für die Pakete <strong>http</strong> und <strong>net</strong> in der Datei <tt>$GOROOT/src/pkg/Makefile</tt> deaktivieren:</p>
<pre class="brush: bash">
NOTEST = \ # nach dieser Zeile einfügen
    http\
    net\
    ... # hier geht das Original weiter
</pre>
<p>Anschliessend kann muss das Zielverzeichnis für die Binaries erstellt und Golang gebaut werden:</p>
<pre class="brush: bash">
$ mkdir $HOME/bin # Standardverzeichnis, umzusetzen über $GOBIN
$ cd $GOROOT/src
$ ./all.bash
</pre>
<p>Wenn alles glatt geht, dann sollte folgende Ausgabe kommen:</p>
<pre class="brush: bash">
--- cd ../test
0 known bugs; 0 unexpected bugs
</pre>
<p><strong>Hallo Welt</strong></p>
<p>Jetzt folgt das erste Programm, in schöner Tradition natürlich ein <em>Hello World</em>. Einfach den Lieblingseditor starten und folgenden Text eingeben:</p>
<pre class="brush: perl">
package main

import fmt &#039;fmt&#039;  // Package implementing formatted I/O.

func main() {
    fmt.Printf(&#039;Hello, World!&#039;)
}
</pre>
<p>Anschliessend wird das Programm kompiliert:</p>
<pre class="brush: bash">
$ ~/bin/8g helloworld.go
$ ~/bin/8l helloworld.8
$ ./8.out
Hello, World!
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/03/golang-erste-schritte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Stöckchen: 41 Wörter</title>
		<link>http://blog.kopis.de/2010/03/03/stockchen-41-woerter/</link>
		<comments>http://blog.kopis.de/2010/03/03/stockchen-41-woerter/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 06:15:26 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Ego]]></category>
		<category><![CDATA[Stöckchen]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4481</guid>
		<description><![CDATA[
			
				
			
		
Ich folge dem Herdentrieb. Naja, eigentlich nur Markus. Aber sein Artikel tauchte gerade im Feedreader auf, deshalb mach ich einfach bei diesem Stöckchen mit.  

Wo ist Dein Handy? – Hosentasche
Deine Partnerin? – unglaublich
Deine Haare? – kurz
Deine Mama? – immer beschäftigt
Dein Papa? – Flieger
Lieblingsgegenstand? – Iphone
Dein Traum von letzter Nacht? – vergessen
Dein Lieblingsgetränk? – Kaffee
Dein [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F03%2Fstockchen-41-woerter%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F03%2Fstockchen-41-woerter%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">I</span>ch folge dem Herdentrieb. Naja, eigentlich nur <a href="http://pupillenknick.wordpress.com/">Markus</a>. Aber <a href="http://pupillenknick.wordpress.com/2010/03/02/41-x-nur-ein-wort/">sein Artikel</a> tauchte gerade im Feedreader auf, deshalb mach ich einfach bei diesem Stöckchen mit. <img src='http://blog.kopis.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<ul>
<li><strong>Wo ist Dein Handy?</strong> – Hosentasche</li>
<li><strong>Deine Partnerin?</strong> – unglaublich</li>
<li><strong>Deine Haare?</strong> – kurz</li>
<li><strong>Deine Mama?</strong> – immer beschäftigt</li>
<li><strong>Dein Papa?</strong> – Flieger</li>
<li><strong>Lieblingsgegenstand?</strong> – Iphone</li>
<li><strong>Dein Traum von letzter Nacht?</strong> – vergessen</li>
<li><strong>Dein Lieblingsgetränk?</strong> – Kaffee</li>
<li><strong>Dein Traumauto?</strong> – Metronom (Ja, ist ein Zug, schon gut&#8230;)</li>
<li><strong>Der Raum, in dem Du Dich befindest?</strong> – Büro (für noch 3 Wochen <img src='http://blog.kopis.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</li>
<li><strong>Deine Ex?</strong> – unwichtig</li>
<li><strong>Deine Angst?</strong> – Hunde</li>
<li><strong>Was möchtest Du in 10 Jahren sein?</strong> – gesund</li>
<li><strong>Mit wem verbrachtest Du den gestrigen Abend?</strong> – mit meinem Macbook</li>
<li><strong>Was bist Du nicht?</strong> – nachtragend</li>
<li><strong>Das letzte was Du getan hast?</strong> – Trainiert</li>
<li><strong>Was trägst Du?</strong> – das übliche</li>
<li><strong>Dein Lieblingsbuch?</strong> – EINS?</li>
<li><strong>Das letzte, was Du gegessen hast?</strong> – Proteinshake+Müsli</li>
<li><strong>Dein Leben?</strong> – unruhig (bis nächsten Monat)</li>
<li><strong>Deine Stimmung?</strong> – ruhig</li>
<li><strong>Deine Freunde?</strong> – weit weg</li>
<li><strong>Woran denkst Du gerade?</strong> – an Stöckchen</li>
<li><strong>Was machst Du gerade?</strong> – schreiben</li>
<li><strong>Dein Sommer?</strong> – Probezeit</li>
<li><strong>Was läuft in Deinem TV?</strong> – Konsolenspiele</li>
<li><strong>Wann hast Du das letzte Mal gelacht?</strong> – gestern</li>
<li><strong>Das letzte Mal geweint?</strong> – Januar</li>
<li><strong>Schule?</strong> – (fast) vergessen</li>
<li><strong>Was hörst Du gerade?</strong> –meine Kollegen</li>
<li><strong>Liebste Wochenendbeschäftigung?</strong> – rumhängen</li>
<li><strong>Traumjob?</strong> – Softwareentwickler <img src='http://blog.kopis.de/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </li>
<li><strong>Dein Computer?</strong> – Macbook!</li>
<li><strong>Außerhalb Deines Fensters?</strong> – Sonne</li>
<li><strong>Bier?</strong> – nie</li>
<li><strong>Mexikanisches Essen?</strong> – klar!</li>
<li><strong>Winter?</strong> – schön</li>
<li><strong>Religion?</strong> – überflüssig</li>
<li><strong>Urlaub?</strong> – später</li>
<li><strong>Auf Deinem Bett?</strong> – Bücher</li>
<li><strong>Liebe?</strong> – ja</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/03/stockchen-41-woerter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Trainingsutensilien</title>
		<link>http://blog.kopis.de/2010/03/02/neue-trainingsutensilien/</link>
		<comments>http://blog.kopis.de/2010/03/02/neue-trainingsutensilien/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:06:05 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Sport]]></category>
		<category><![CDATA[Equipment]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4472</guid>
		<description><![CDATA[
			
				
			
		



]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F02%2Fneue-trainingsutensilien%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F02%2Fneue-trainingsutensilien%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: center;"><a title="Nachfüllpack Optimum Nutrition von cringe bei Flickr" href="http://www.flickr.com/photos/cringe/4381856051/"><img class="aligncenter" src="http://farm3.static.flickr.com/2759/4381856051_2ca32c583b_m.jpg" alt="Nachfüllpack Optimum Nutrition" width="180" height="240" /></a><br />
<a title="Klimmzughaken von cringe bei Flickr" href="http://www.flickr.com/photos/cringe/4382643412/"><img src="http://farm3.static.flickr.com/2798/4382643412_c38112200b_m.jpg" alt="Klimmzughaken" width="180" height="240" /></a><br />
<a title="Klimmzughaken von cringe bei Flickr" href="http://www.flickr.com/photos/cringe/4381878179/"><img src="http://farm5.static.flickr.com/4012/4381878179_171d2dba3c_m.jpg" alt="Klimmzughaken" width="240" height="180" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/02/neue-trainingsutensilien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jetzt aber!</title>
		<link>http://blog.kopis.de/2010/03/01/jetzt-aber/</link>
		<comments>http://blog.kopis.de/2010/03/01/jetzt-aber/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 12:50:25 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Ernährung]]></category>
		<category><![CDATA[Sport]]></category>
		<category><![CDATA[Ego]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Trainingsplan]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4467</guid>
		<description><![CDATA[
			
				
			
		
Es ist mal wieder soweit: Nach ein paar eher schlechten Wochen mit vielen Kohlenhydraten, muss ich heute meine Ernährung wieder neustarten. Los geht&#8217;s mit ein paar Tagen konsequentem low carb. Das heißt: unter 60g. In der letzten Zeit habe ich immer öfter Süsskram gegessen, hab meine täglichen Kalorienmenge nicht eingehalten und rund ums Training schlecht [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F01%2Fjetzt-aber%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F03%2F01%2Fjetzt-aber%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">E</span>s ist mal wieder soweit: Nach ein paar eher schlechten Wochen mit vielen Kohlenhydraten, muss ich heute meine Ernährung wieder neustarten. Los geht&#8217;s mit ein paar Tagen konsequentem <em>low carb</em>. Das heißt: unter 60g. In der letzten Zeit habe ich immer öfter Süsskram gegessen, hab meine täglichen Kalorienmenge nicht eingehalten und rund ums Training schlecht gegessen. Damit ist jetzt wieder schluss!</p>
<p>Ab sofort führe ich wieder Ernährungstagebuch. Ab sofort bleibe ich in meinem gesetzten Kalorienlimit. Ab sofort trainiere ich wieder anständig.</p>
<p>Auch wenn der Umzug gerade an meiner Konsequenz und meiner Sturheit nagt, werde ich das jetzt nicht weiter schleifen lassen. Meine nächsten Ziele sind:</p>
<ul>
<li>Bis Ende April: die überflüssigen 2kg loswerden</li>
<li>Bis Ende Juni: 100kg Kreuzheben</li>
</ul>
<p><strong>Update:</strong> Und hier kommt noch mein aktueller Trainingsplan, bis Ende März ist das ein Ganzkörperplan:</p>
<ul>
<li>Kreuzheben</li>
<li>Bankdrücken Schräg (Maschine)</li>
<li>Kniebeugen</li>
<li>Klimmzüge</li>
<li>Dips</li>
<li>Seitheben</li>
<li>Bizep Curls (Kabel)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/03/01/jetzt-aber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ich lese RSS per eMail</title>
		<link>http://blog.kopis.de/2010/02/28/ich-lese-rss-per-email/</link>
		<comments>http://blog.kopis.de/2010/02/28/ich-lese-rss-per-email/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 12:00:00 +0000</pubDate>
		<dc:creator>Carsten</dc:creator>
				<category><![CDATA[Technik]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PlugPc]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[SheevaPlug]]></category>

		<guid isPermaLink="false">http://blog.kopis.de/?p=4458</guid>
		<description><![CDATA[
			
				
			
		
Wieso? Weil ich immer noch großer Fan von eMail bin. Asynchrone Kommunikation, trotzdem Quasi-Echtzeit und kostenlos. Und weil ich auf meine eMail von überall Zugriff habe, Iphone sei Dank.
Nachdem ich schon den Service FeedMyInbox ausprobiert habe und mit dem Amazon Kindle einen sinnvollen Endpunkt für so einen Dienst in meiner Reisetasche habe, wollte ich mal [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F02%2F28%2Fich-lese-rss-per-email%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.kopis.de%2F2010%2F02%2F28%2Fich-lese-rss-per-email%2F&amp;source=carstenringe&amp;style=compact&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><span class="dropCap">W</span>ieso? Weil ich immer noch großer Fan von eMail bin. Asynchrone Kommunikation, trotzdem Quasi-Echtzeit und kostenlos. Und weil ich auf meine eMail von überall Zugriff habe, Iphone sei Dank.</p>
<p>Nachdem ich schon den Service <a href="http://www.feedmyinbox.com/">FeedMyInbox</a> ausprobiert habe und mit dem <a href="http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C/kopisde-21">Amazon Kindle</a> einen sinnvollen Endpunkt für so einen Dienst in meiner Reisetasche habe, wollte ich mal sehen, ob ich das ganze nicht auch auf meinen eigenen Rechnern und damit unter meiner Kontrolle aufsetzen kann. Gesagt, getan: <a href="http://www.allthingsrss.com/rss2email/">rss2email</a> erledigt genau diese Aufgabe.</p>
<p>Unter Debian ist das Programm schnell installiert:</p>
<pre class="brush: bash">
apt-get install rss2email
</pre>
<p>Voraussetzung ist <a href="http://python.org/">Python</a>, aber das ist mittlerweile ja schon fast Pflicht bei einer Linuxinstallation&#8230; :-} Danach kann man mit folgenden Befehlen die ersten Feeds hinzufügen:</p>
<pre class="brush: bash">
r2e new email@domain.org
r2e add http://url/fuer/den/feed
r2e run --no-send
</pre>
<p>Damit ist der erste Feed hinzugefügt und der erste Lauf hat den aktuellen Stand des Feeds geholt. Der Parameter <tt>--no-send</tt> verhindert das Versenden aller Feedartikel, erst bei einem Aufruf ohne diesen Parameter werden eMails verschickt. Das sollte man aber einem <a href="http://de.wikipedia.org/wiki/Cron">cronjob</a> überlassen, der zyklisch läuft. Bei mir ist das alle 30 Minuten:</p>
<pre class="brush: bash">
crontab -l
*/30 * * * * r2e run
</pre>
<p>Ab sofort fliessen also einige Feeds direkt in mein Postfach. Ob ich wirklich die <a href="http://www.amazon.com/gp/help/customer/display.html?nodeId=200375630&amp;#fees">Gebühren für die Mobilfunkübertragung</a> zum <a href="http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C/kopisde-21">Amazon Kindle</a> bezahlen will, weiß ich noch nicht. Möglich wäre das ganze aber mit rss2email, dafür müsste ich bloss eine neue Feeddatei mit meiner privaten Kindle-eMail anlegen und Feeds hinzufügen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kopis.de/2010/02/28/ich-lese-rss-per-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
