<?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>blog &#124; wdeu &#187; code</title>
	<atom:link href="http://writedown.eu/tag/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://writedown.eu</link>
	<description>words &#039; n &#039; code</description>
	<lastBuildDate>Thu, 24 Nov 2011 14:59:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Node.js &#8211; IP Lookup HttpServer</title>
		<link>http://writedown.eu/2011/11/node-js-ip-lookup-httpserver/</link>
		<comments>http://writedown.eu/2011/11/node-js-ip-lookup-httpserver/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 17:11:39 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Node JS]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[lookup]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=337</guid>
		<description><![CDATA[Meine erste Node.js &#8211; Anwendung ist nun fertig. Nach ein paar kniffen und viel kämpfen mit den Scopes habe ich eine Anwendung fertig gestellt, welche die IP einer Website sucht und findet. Die Eingabe im Browser erfolgt so: http://localhost:3000/domain Beispiele: &#8230; <a href="http://writedown.eu/2011/11/node-js-ip-lookup-httpserver/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Meine erste <a href="http://nodejs.org/">Node.js</a> &#8211; Anwendung ist nun fertig. Nach ein paar kniffen und viel kämpfen mit den Scopes habe ich eine <a href="https://gist.github.com/1360795">Anwendung</a> fertig gestellt, welche die IP einer Website sucht und findet.</p>
<p>Die Eingabe im Browser erfolgt so: http://localhost:3000/domain</p>
<p>Beispiele:<br />
<a href="http://localhost:3000/https://gist.github.com/1360795">http://localhost:3000/https://gist.github.com/1360795</a><a href="http://localhost:3000/google.de"></p>
<p>http://localhost:3000/google.de</p>
<p></a><a href="http://localhost:3000/writedown.eu">http://localhost:3000/writedown.eu<br />
</a><a href="http://localhost:3000/de-de.facebook.com">http://localhost:3000/de-de.facebook.com<br />
</a><a href="http://localhost:3000/www.inf.h-brs.de">http://localhost:3000/www.inf.h-brs.de</a></p>
<p><span id="more-337"></span></p>
<p>Ausgabe:</p>
<pre>Die IP von 'nodejs.org' ist 8.12.44.238

Weiter IP Adressen:

localhost: 127.0.0.1
google.de: 209.85.148.106
writedown.eu: 80.67.17.127
de-de.facebook.com: 66.220.158.53
www.inf.h-brs.de: 194.95.64.18</pre>
<p>&nbsp;</p>
<p>Dazu muss einfach nur der Node.js &#8211; Server laufen mit folgendem Code:</p>
<pre class="brush:js">var http = require("http");
var dns = require("dns");
var u = require("util");

var urls = { length: 0 }

http.createServer(function(req,res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    var url = req.url.replace(/^\/(https?:\/\/)?/i,"");
    url = url.split("/")[0];

    var writeIp = function(wurl, wip) {
        res.write(String(wurl) + ": " + String(wip) + "\n");
    };

    var finished = function() {
        if(urls[url] == "undefined") {
            res.write("Die IP von '" + url + "' konnte nicht gefunden werden.\n");
        } else {
            res.write("Die IP von '" + url + "' ist " + String(urls[url]) + "\n");
        }
        if(url != "favicon.ico")
            console.log("Die IP von '" + url + "' wurde nachgeschaut. Die IP ist " + urls[url]);
        if(urls.length &gt; 1 || ( urls.length &gt; 0 &amp;&amp; urls[url] == "undefined" )  ) {
            res.write("\n\n\nWeiter IP Adressen:\n\n");
        };

        for( var key in urls ) {
            if( key != "undefined" &amp;&amp; key != url &amp;&amp; key != "length" &amp;&amp; urls[key] != "undefined") {
                writeIp(key, urls[key]);
            };
        };
        res.end("");
    };

    var cb = function(err, adress, family) {
        if(url != "favicon.ico") {
            if( urls[url] == undefined &amp;&amp; String(adress) != "undefined") {
                urls.length += 1;
            };
            urls[url] = String(adress);
        };
        finished();
    };

    dns.lookup(url, cb);

}).listen(3000);</pre>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2011/11/node-js-ip-lookup-httpserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>genChoices.rb</title>
		<link>http://writedown.eu/2011/10/genchoices-rb/</link>
		<comments>http://writedown.eu/2011/10/genchoices-rb/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 21:49:00 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=331</guid>
		<description><![CDATA[# # genChoices &#124; Gibt alle Kombinationsmöglichkeiten der Argumentenliste zurück. @ writedown.eu # def genChoices(*args) choices = [] return args if args.length &#60;= 1 (0...args.length).each { &#124;pos&#124; if pos &#62; 0 temp = choices.dup temp.each { &#124;e&#124; restOfArgs = e[(pos+1)...args.length].dup &#8230; <a href="http://writedown.eu/2011/10/genchoices-rb/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span id="more-331"></span></p>
<pre class="brush:ruby"></pre>
<pre class="brush:ruby">    #
    # genChoices | Gibt alle Kombinationsmöglichkeiten der Argumentenliste zurück. @ writedown.eu
    #
    def genChoices(*args)
        choices = []
        return args if args.length &lt;= 1
        (0...args.length).each { |pos|
            if pos &gt; 0
                temp = choices.dup
                temp.each { |e|
                    restOfArgs = e[(pos+1)...args.length].dup
                    toRework = e[0...pos]
                    pointsTo = [e[pos]].dup
                    # puts "-"*10
                    # puts "#{ toRework.inspect } | #{ pointsTo.inspect } | #{ restOfArgs.inspect }"
                    (0...pos).reverse_each { |pointer|
                        # generieren der bereiche
                        leftToPointer = toRework[0...pointer].dup
                        rightToPointer = toRework[pointer..pos].dup
                        #
                        choices &lt;&lt; (leftToPointer + pointsTo + rightToPointer + restOfArgs).dup
                    }
                }
            elsif pos == 0
                choices &lt;&lt; args.dup
            end
        }
        return choices
    end

    puts "genChoices(:a,:b,:c) =&gt; " + genChoices(:a,:b,:c).inspect
    # =&gt; "genChoices(:a,:b,:c) =&gt; [[:a, :b, :c], [:b, :a, :c], [:a, :c, :b], [:c, :a, :b], [:b, :c, :a], [:c, :b, :a]]"
    #
    print "genChoices( *( (0...10).to_a ) ) Time: #{ Time.now }"
    elementCount = genChoices( *( (0...10).to_a ) ).length
    puts " - #{ Time.now } Elements: #{ elementCount }"
    # =&gt; "genChoices( *( (0...10).to_a ) ) Time: 2011-10-23 23:29:16 +0200 - 2011-10-23 23:30:09 +0200 Elements: 3628800"
    #
    puts "fak(10) = #{ (1..10).inject { |x,y| x*y } }"
    # =&gt; "fak(10) = 3628800"
    #</pre>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2011/10/genchoices-rb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Der Code des Blogbanners hat einen Bug</title>
		<link>http://writedown.eu/2011/10/der-code-des-blogbanners-hat-einen-bug/</link>
		<comments>http://writedown.eu/2011/10/der-code-des-blogbanners-hat-einen-bug/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 19:01:23 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[Zwischendurch]]></category>
		<category><![CDATA[banner]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=325</guid>
		<description><![CDATA[# encoding: UTF-8 class Blog def initialize(name="the nameless blog") @name = name @articles = {} end def add_article(title=:default, story="", tag="uncategorized") @articles[title] = { text: story, tags: tag.split, posted: Time.now } end def show_blog puts "\n"*15 puts "___#{ @name.upcase }___\n\n\n\n" @articles.keys.reverse[0...10&#124;&#124;@articles.keys.length].each &#8230; <a href="http://writedown.eu/2011/10/der-code-des-blogbanners-hat-einen-bug/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span id="more-325"></span></p>
<pre class="brush:ruby"># encoding: UTF-8

    class Blog
        def initialize(name="the nameless blog")
            @name = name
            @articles = {}
        end
        def add_article(title=:default, story="", tag="uncategorized")
            @articles[title] = { text: story, tags: tag.split, posted: Time.now }
        end
        def show_blog
            puts "\n"*15
            puts "___#{ @name.upcase }___\n\n\n\n"
            @articles.keys.reverse[0...10||@articles.keys.length].each { |title|
                puts "+++ #{ title } +++ #{ @articles[title][:posted] }\n"
                puts "#{ @articles[title][:text] }\n"
                puts "(#{ @articles[title][:tags].sort.join(", ") })"
                puts "\n"*2
            }
        end
    end

myblog = Blog.new "addis world | addisaden"
myblog.add_article "Say hello to the world!",
"Das ist ein wundervoller Blog und so simples Design \
das ich mich doch gleich darin verlieben könnte ...",
"first say hello world"

myblog.add_article "Ein zweiter Test", "..,) fertig ist das mondgesicht", "trash"

myblog.show_blog
Dies ist die korrekte (ein wenig modifizierte) Fassung. Der Fehler liegt darin, dass man nur mit sehr aktiven Bloggern zutun hat die mehr als 10 Artikel veröffentlicht haben. Ansonsten kommt es zur Fehlermeldung:

test.rb:12:in `show_blog': undefined method `each' for nil:NilClass (NoMethodError)
	from test.rb:28:in `&lt;main&gt;'

Shell beendet 1
Korrektur:

# out
@articles.keys[-10..-1].each

# in
@articles.keys.reverse[0...10||@articles.keys.length].each
Das Ergebnis läuft:

___ADDIS WORLD | ADDISADEN___

+++ Ein zweiter Test +++ 2011-10-22 20:47:18 +0200
..,) fertig ist das mondgesicht
(trash)

+++ Say hello to the world! +++ 2011-10-22 20:47:18 +0200
Das ist ein wundervoller Blog und so simples Design das ich mich doch gleich darin verlieben könnte ...
(first, hello, say, world)</pre>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2011/10/der-code-des-blogbanners-hat-einen-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby: &#8220;example&#8221;.tag(:p) =&gt; &#8220;&lt;p&gt;example&lt;/p&gt;&#8221;</title>
		<link>http://writedown.eu/2011/06/ruby-example-tagp-pexamplep/</link>
		<comments>http://writedown.eu/2011/06/ruby-example-tagp-pexamplep/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 16:33:15 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[snippets]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=286</guid>
		<description><![CDATA[class String def tag(t = :p, p = {}) props = "" p.each { &#124;key,val&#124; props += " " + key.to_s + '="' + val.to_s + '"' } return "&#60;" + t.to_s + props + "&#62;" + self + "&#60;/" &#8230; <a href="http://writedown.eu/2011/06/ruby-example-tagp-pexamplep/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre class="brush:ruby">class String
  def tag(t = :p, p = {})
    props = ""
    p.each { |key,val|
      props += " " + key.to_s + '="' + val.to_s + '"'
    }
    return "&lt;" + t.to_s + props + "&gt;" + self + "&lt;/" + t.to_s + "&gt;"
  end
end</pre>
<p>Des öfteren hat mich der Codeschnipsel, bei der Generierung von Html weiter gebracht.</p>
<p>Ein paar Beispiele:</p>
<p>Links:</p>
<pre class="brush:applescript">"Google".tag(:a, { :href =&gt; "http://www.google.de/" })

=&gt; &lt;a href="http://www.google.de/"&gt;Google&lt;/a&gt;

"Absatz".tag(:p)

=&gt; &lt;p&gt;Absatz&lt;/p&gt;

...</pre>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2011/06/ruby-example-tagp-pexamplep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>23 g &#124; solve . Sudoku</title>
		<link>http://writedown.eu/2011/06/23-g-solve-sudoku/</link>
		<comments>http://writedown.eu/2011/06/23-g-solve-sudoku/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 20:01:16 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[doc]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[solve]]></category>
		<category><![CDATA[sudoku]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=282</guid>
		<description><![CDATA[Unter 23g &#124; solve.Sudoku habe ich eine Rubyklasse veröffentlicht, die ein Sudokurätsel als Objekt verwalten und dieses auch lösen kann. Auf der Seite findet ihr auch eine passende Dokumentation der Klasse und könnt auch auf der Seite ein beliebiges Sudokurätsel &#8230; <a href="http://writedown.eu/2011/06/23-g-solve-sudoku/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Unter <a href="http://23g.eu/sudoku/">23g | solve.Sudoku</a> habe ich eine Rubyklasse veröffentlicht, die ein Sudokurätsel als Objekt verwalten und dieses auch lösen kann. Auf der Seite findet ihr auch eine passende Dokumentation der Klasse und könnt auch auf der Seite ein beliebiges Sudokurätsel lösen lassen.</p>
<p>Viel Spaß damit</p>
<p>addi</p>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2011/06/23-g-solve-sudoku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Experimental FMSynth in PD</title>
		<link>http://writedown.eu/2010/07/experimental-fmsynth-in-pd/</link>
		<comments>http://writedown.eu/2010/07/experimental-fmsynth-in-pd/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:46:22 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[mp3]]></category>
		<category><![CDATA[musik]]></category>
		<category><![CDATA[PureData]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[pd]]></category>
		<category><![CDATA[sound]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=236</guid>
		<description><![CDATA[addis&#124;aden fmOsc nice Jamaround 2 :: addis&#124;aden fmOsc nice Jamaround :: addis&#124;aden FmSynth :: addis&#124;aden FmSynth JamAround :: addis&#124;aden FmSynth first Take Download :: addisaden_fmsynth.pd]]></description>
			<content:encoded><![CDATA[<p><a class="wpaudio" href="http://mp3.adrianenns.de/playaround-jam2.mp3">addis|aden fmOsc nice Jamaround 2</a> :: <a class="wpaudio" href="http://mp3.adrianenns.de/playaround-jam.mp3">addis|aden fmOsc nice Jamaround</a> :: <a class="wpaudio" href="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth2.mp3">addis|aden FmSynth</a> :: <a class="wpaudio" href="http://writedown.eu/wp-content/uploads/2010/07/jam_addisaden_fmsynth.mp3">addis|aden FmSynth JamAround</a> :: <a class="wpaudio" href="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth.mp3">addis|aden FmSynth first Take</a></p>
<p><a href="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth.jpg"><img class="aligncenter size-large wp-image-238" title="addisaden_fmsynth" src="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth-1024x602.jpg" alt="" width="640" height="376" /></a></p>
<p><a href="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth.pd_.txt" target="_self">Download :: addisaden_fmsynth.pd</a></p>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/07/experimental-fmsynth-in-pd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth2.mp3" length="3340456" type="audio/mpeg" />
<enclosure url="http://writedown.eu/wp-content/uploads/2010/07/jam_addisaden_fmsynth.mp3" length="6705446" type="audio/mpeg" />
<enclosure url="http://writedown.eu/wp-content/uploads/2010/07/addisaden_fmsynth.mp3" length="4535820" type="audio/mpeg" />
<enclosure url="http://mp3.adrianenns.de/playaround-jam.mp3" length="0" type="audio/mpeg" />
<enclosure url="http://mp3.adrianenns.de/playaround-jam2.mp3" length="0" type="audio/mpeg" />
		</item>
		<item>
		<title>Erste Visualisierung mit PD / GEM</title>
		<link>http://writedown.eu/2010/07/erste-visualisierung-mit-pd-gem/</link>
		<comments>http://writedown.eu/2010/07/erste-visualisierung-mit-pd-gem/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 21:42:48 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[musik]]></category>
		<category><![CDATA[PureData]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[pd]]></category>
		<category><![CDATA[visual]]></category>

		<guid isPermaLink="false">http://writedown.eu/?p=200</guid>
		<description><![CDATA[Die einzelnen Blöcke reagieren auf das Midisignal, ändern dabei die Höhe und die Farbe. (Modulo c-h)]]></description>
			<content:encoded><![CDATA[<p><a href="http://writedown.eu/wp-content/uploads/2010/07/000.jpg"><img class="alignleft size-medium wp-image-201" title="000" src="http://writedown.eu/wp-content/uploads/2010/07/000-300x181.jpg" alt="" width="300" height="181" /></a><a href="http://writedown.eu/wp-content/uploads/2010/07/001.jpg"><img class="alignleft size-large wp-image-202" title="001" src="http://writedown.eu/wp-content/uploads/2010/07/001-1024x428.jpg" alt="" width="640" height="267" /></a>Die einzelnen Blöcke reagieren auf das Midisignal, ändern dabei die Höhe und die Farbe. (Modulo c-h)</p>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/07/erste-visualisierung-mit-pd-gem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curse in Python</title>
		<link>http://writedown.eu/2010/02/curse-in-python/</link>
		<comments>http://writedown.eu/2010/02/curse-in-python/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 10:59:53 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Bildschirmausgabe]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Curse]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://blog.adrianenns.de/?p=166</guid>
		<description><![CDATA[Nachdem ich mich einige Zeit mit Python auseinander gesetzt habe, bin ich auf Curse in Python gestoßen und habe eine nützliche Klasse zur Bildschirmausgabe geschrieben. Diese erkennt die Größe des Terminals und ermöglicht ein einfaches schreiben auf dem Bildschirm, auslesen &#8230; <a href="http://writedown.eu/2010/02/curse-in-python/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.adrianenns.de/wp-content/uploads/2010/02/curstest.png"><img class="aligncenter size-medium wp-image-167" title="curstest" src="http://blog.adrianenns.de/wp-content/uploads/2010/02/curstest-300x58.png" alt="" width="300" height="58" /></a>Nachdem ich mich einige Zeit mit Python auseinander gesetzt habe, bin ich auf Curse in Python gestoßen und habe eine nützliche Klasse zur Bildschirmausgabe geschrieben. Diese erkennt die Größe des Terminals und ermöglicht ein einfaches schreiben auf dem Bildschirm, auslesen der gedrückten Taste und dem einlesen eines Befehls (Rückgabe als String).</p>
<p>Ein kleines Beispielprogramm lässt ein AsciiBild über den Bildschirm wandern. <a href="http://blog.adrianenns.de/wp-content/uploads/2010/02/curstest.zip">[.ZIP]</a></p>
<p>Ein weiteres Beispielprogramm zeigt andere Aspekte der Klasse und zeigt auch die Steuerung über die Pfeiltasten. <a href="http://blog.adrianenns.de/wp-content/uploads/2010/02/curstest2.zip">[.ZIP]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/02/curse-in-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pdsend Projekt 0.1 &#8211; in Python</title>
		<link>http://writedown.eu/2010/02/pdsend-projekt-01-in-python/</link>
		<comments>http://writedown.eu/2010/02/pdsend-projekt-01-in-python/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 22:14:18 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[musik]]></category>
		<category><![CDATA[PureData]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[pdsend]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://blog.adrianenns.de/?p=156</guid>
		<description><![CDATA[Mein neues Projekt kombiniert PureData und Python. Es setzt sich zum Ziel bestimmte Objekte in PureData über Python anzusteuern. Ziel ist es (vorrerst) BpmMachine, Sequenzer, Synthesizer, Beatsequenzer und Beatmachine als Objekte zur verfügung zu machen und diese komplett über Python &#8230; <a href="http://writedown.eu/2010/02/pdsend-projekt-01-in-python/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="attachment_157" class="wp-caption alignleft" style="width: 344px"><a href="http://blog.adrianenns.de/wp-content/uploads/2010/02/bpmmachine.png"><img class="size-full wp-image-157 " title="bpmmachine" src="http://blog.adrianenns.de/wp-content/uploads/2010/02/bpmmachine.png" alt="Creator Adrian Enns" width="334" height="235" /></a><p class="wp-caption-text">Creator Adrian Enns</p></div>
<p>Mein neues Projekt kombiniert PureData und Python. Es setzt sich zum Ziel bestimmte Objekte in PureData über Python anzusteuern. Ziel ist es (vorrerst) BpmMachine, Sequenzer, Synthesizer, Beatsequenzer und Beatmachine als Objekte zur verfügung zu machen und diese komplett über Python zu steuern. Lediglich Data und Soundstreaming wird noch verbunden.</p>
<p>Fertig ist schon die BpmMachine, lässt sich komplett steuern und sieht in der Gui noch gut aus. linker Ausgang bekommt einen Bang auf jeder eins. Rechts befindet sich ein integrierter Zähler von 0 &#8211; 31, Der quasi einen Takt (4/4) in 32 Steps unterteilt.</p>
<p>Die Dateien veröffentliche ich aber vorerst nur in *.pd und *.pyc. Wer allerdings an dem Projekt hat, kann mich allerdings auch gerne anschreiben. Antesten könnt ihr das ganze aber mit den Files. Python und PureData sollten nur lafen. <a href="http://blog.adrianenns.de/wp-content/uploads/2010/02/pdsend1.zip">[.ZIP]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/02/pdsend-projekt-01-in-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>livePD</title>
		<link>http://writedown.eu/2010/02/livepd/</link>
		<comments>http://writedown.eu/2010/02/livepd/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 07:59:15 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[musik]]></category>
		<category><![CDATA[PureData]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[pd]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[textfile]]></category>

		<guid isPermaLink="false">http://blog.adrianenns.de/?p=141</guid>
		<description><![CDATA[Dies ist ein kleines aber mächtiges Programm, welches eine Textdatei (rechts) in Messages splittet und an requests sendet (z.B. &#8220;r tempo&#8221;). Durch das Metro 1000 wird die Textdatei einmal in der Sekunde gelesen, was bedeutet, wenn man die Textdatei absichert, geht &#8230; <a href="http://writedown.eu/2010/02/livepd/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://picasaweb.google.de/lh/photo/z-mVcrsBXMm0JwtfumKd4w?feat=directlink"><img class="alignnone" title="First step to get Live in PD" src="http://lh6.ggpht.com/_zaTt-c8-3fg/S2snwpII_KI/AAAAAAAAADg/-JgFXIHMW1g/livePD.png" alt="" width="477" height="242" /></a></p>
<p>Dies ist ein kleines aber mächtiges Programm, welches eine Textdatei (rechts) in Messages splittet und an requests sendet (z.B. &#8220;r tempo&#8221;). Durch das Metro 1000 wird die Textdatei einmal in der Sekunde gelesen, was bedeutet, wenn man die Textdatei absichert, geht der Inhalt mit dem nächsten BANG in das Programm.</p>
<p>Das eröffnet mir mehr Möglichkeiten, Live etwas zu machen ohne viele Midicontroller (die ich aber auch vorteilhafterweise verwenden kann). Ausserdem könnte man für Synthesizer Sets auf diese Weise konfigurieren und nachhaltig speichern.</p>
<p>Ich muss sicher noch einiges über Puredata lernen, aber man lernt ja auch immer nur Schritt für Schritt.</p>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/02/livepd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grauwertberechnung in Java</title>
		<link>http://writedown.eu/2010/02/grauwertberechnung-in-java/</link>
		<comments>http://writedown.eu/2010/02/grauwertberechnung-in-java/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 21:41:29 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[grauwert]]></category>
		<category><![CDATA[h-brs]]></category>
		<category><![CDATA[übung]]></category>

		<guid isPermaLink="false">http://blog.adrianenns.de/?p=125</guid>
		<description><![CDATA[import java.util.Scanner; public class LearningByDoing { public static void main(String[] args) { // Uebung 4 Aufgabe 7 // MAKE Grauwert int farbwert = 0xff3344; System.out.println("Der Farbwert ist: " + farbwert); // Filter der einzelnen Farben int rot = farbwert % &#8230; <a href="http://writedown.eu/2010/02/grauwertberechnung-in-java/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre lang="java">import java.util.Scanner;

public class LearningByDoing {
	public static void main(String[] args) {
		// Uebung 4 Aufgabe 7
		// MAKE Grauwert

		int farbwert = 0xff3344;
		System.out.println("Der Farbwert ist: " + farbwert);

		// Filter der einzelnen Farben

		int rot = farbwert % 0x100;
		System.out.println("Der Rotwert ist: " + rot);
		farbwert = farbwert / 0x100;

		int gruen = farbwert % 0x100;
		System.out.println("Der Gruenwert ist: " + gruen);
		farbwert = farbwert / 0x100;

		int blau = farbwert % 0x100;
		System.out.println("Der Blauwert ist: " + blau);

		//Berechnung des Grauwertes

		int grauwert = ((54 * rot) + (183*gruen) + (19*blau)) / 256;

		// Ausgabe

		System.out.println("Der Grauwert ist " + grauwert);

	}
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/02/grauwertberechnung-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schlanke Quersummenfunktion in Java</title>
		<link>http://writedown.eu/2010/02/schlanke-quersummenfunktion-in-java/</link>
		<comments>http://writedown.eu/2010/02/schlanke-quersummenfunktion-in-java/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:29:50 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[h-brs]]></category>
		<category><![CDATA[quersumme]]></category>
		<category><![CDATA[übung]]></category>

		<guid isPermaLink="false">http://blog.adrianenns.de/?p=119</guid>
		<description><![CDATA[import java.util.Scanner; public class LearningByDoing { // Quersummefunktion public static int quersum(int x) { if ( x > 9 ) { return (( x % 10 ) + quersum(x/10)); } else { return x ;} } public static void main(String[] &#8230; <a href="http://writedown.eu/2010/02/schlanke-quersummenfunktion-in-java/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<pre lang="java" line="1">import java.util.Scanner;

public class LearningByDoing {

	// Quersummefunktion
	public static int quersum(int x) {
		if ( x > 9 ) {
			return (( x % 10 ) + quersum(x/10));
		}
		else { return x ;}
	}

	public static void main(String[] args) {
		// Uebung 4 Aufgabe 4
		// Quersumme einer nauerlichen Zahl
		System.out.println("::: Quersumme berechnen :::");
		System.out.println();
		System.out.print("Bitte geben Sie eine Zahl ein: ");

		// Zahl einlesen
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();

		// Ausgabe der Quersumme
		System.out.println("Die Quersumme von " + x + " ist " + quersum(x));
	}
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://writedown.eu/2010/02/schlanke-quersummenfunktion-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

