<?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>Gamlor</title>
	<atom:link href="http://www.gamlor.info/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gamlor.info/wordpress</link>
	<description>thoughts about programming, tv-series and other geeky stuff.</description>
	<lastBuildDate>Tue, 21 Feb 2012 21:31:29 +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>Modify Annotations in Scala</title>
		<link>http://www.gamlor.info/wordpress/2012/02/modify-annotations-in-scala/</link>
		<comments>http://www.gamlor.info/wordpress/2012/02/modify-annotations-in-scala/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 20:44:24 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software-development]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2296</guid>
		<description><![CDATA[In Scala I rarely use annotations. However when you need to interoperate with a framework which relies on annotations you need use them. So lately I wanted to store some simple case classes with JPA. As you know, JPA relies quite heavily on annotations, unless you move everything out to XML descriptors. I wanted to [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_2299" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/ScalaAnnotations.png"><img class="size-medium wp-image-2299" title="ScalaAnnotations" src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/ScalaAnnotations-300x193.png" alt="Best Organized Kitchen Ever?" width="300" height="193" /></a><p class="wp-caption-text">Best Organized Kitchen Ever?</p></div>
<p>In Scala I rarely use annotations. However when you need to interoperate with a framework which relies on annotations you need use them. So lately I wanted to store some simple case classes with JPA. As you know, JPA relies quite heavily on annotations, unless you move everything out to XML descriptors.</p>
<p>I wanted to store something like this:</p>
<div id="gist-1878790" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nd">@Entity</span></div><div class='line' id='LC2'><span class="k">case</span> <span class="k">class</span> <span class="nc">MyStoredData</span><span class="o">(</span><span class="n">userName</span><span class="k">:</span><span class="kt">String</span><span class="o">,</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">realName</span><span class="k">:</span><span class="kt">String</span><span class="o">,</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nd">@Id</span> <span class="n">id</span><span class="k">:</span><span class="kt">Long</span> <span class="o">=</span><span class="mi">0</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC5'>&nbsp;&nbsp;<span class="c1">// JPA requires a parameter-free constructor</span></div><div class='line' id='LC6'>&nbsp;&nbsp;<span class="k">def</span> <span class="k">this</span><span class="o">()</span> <span class="k">=</span> <span class="k">this</span><span class="o">(</span><span class="s">&quot;&quot;</span><span class="o">,</span><span class="s">&quot;&quot;</span><span class="o">)</span></div><div class='line' id='LC7'><span class="o">}</span></div><div class='line' id='LC8'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1878790/67e02a8d50192323d58f5b5174c71a9d6b180487/MyStoredData.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1878790#file_my_stored_data.scala" style="float:right;margin-right:10px;color:#666">MyStoredData.scala</a>
            <a href="https://gist.github.com/1878790">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Unfortunately this results in exceptions like the one below. Basically the annotation is not placed on the ‘field’ but rather on the parameter of the constructor.</p>
<div id="gist-1878790" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'>Caused by: com.versant.jpa.enhancer.exceptions.MissingIdException: missing ID annotation or mapping for info.gamlor.vjpa.model.MyStoredData</div><div class='line' id='LC2'>	at com.versant.jpa.enhancer.JpaClassEnhancer.enhance(JpaClassEnhancer.java:123)</div><div class='line' id='LC3'>	at com.versant.jpa.enhancer.JpaClassEnhancer.enhance(JpaClassEnhancer.java:50)</div><div class='line' id='LC4'>	at com.versant.jpa.enhancer.JpaClassTransformer.transform(JpaClassTransformer.java:51)</div><div class='line' id='LC5'>	at sun.instrument.TransformerManager.transform(TransformerManager.java:169)</div><div class='line' id='LC6'>	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)</div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1878790/df5d457f7f4c57219aab65d4eac3e25cd7919604/Exception.txt" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1878790#file_exception.txt" style="float:right;margin-right:10px;color:#666">Exception.txt</a>
            <a href="https://gist.github.com/1878790">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Now you actually can specify on which elements such an annotation is added. So in this situation we can tell the Scala to ensure that the annotation is also placed on the id field:</p>
<div id="gist-1878790" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nd">@Entity</span></div><div class='line' id='LC2'><span class="k">case</span> <span class="k">class</span> <span class="nc">MyStoredData</span><span class="o">(</span><span class="n">userName</span><span class="k">:</span><span class="kt">String</span><span class="o">,</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">realName</span><span class="k">:</span><span class="kt">String</span><span class="o">,</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// ensure that the field is also annotated</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">@(</span><span class="nc">Id</span> <span class="nd">@field</span><span class="o">)</span> <span class="n">id</span><span class="k">:</span><span class="kt">Long</span> <span class="o">=</span><span class="mi">0</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC6'>&nbsp;&nbsp;<span class="c1">// JPA requires a parameter-free constructor</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">def</span> <span class="k">this</span><span class="o">()</span> <span class="k">=</span> <span class="k">this</span><span class="o">(</span><span class="s">&quot;&quot;</span><span class="o">,</span><span class="s">&quot;&quot;</span><span class="o">)</span></div><div class='line' id='LC8'><span class="o">}</span></div><div class='line' id='LC9'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1878790/9304fbb71c9a3d238b983ce4b03df7b5065054fa/FixedAnnotation.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1878790#file_fixed_annotation.scala" style="float:right;margin-right:10px;color:#666">FixedAnnotation.scala</a>
            <a href="https://gist.github.com/1878790">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>This will fix the issue. There are more possible targets, like Scala accessors and Java Beans getter/setters for @BeanProperty annotated fields. Take a look at <a href="http://www.gamlor.info/@BeanProperty">the documentation here</a>.</p>
<p>That’s all. Nothing more to tell =)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/02/modify-annotations-in-scala/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ScalaQuery, a Small Database Library</title>
		<link>http://www.gamlor.info/wordpress/2012/02/scalaquery-a-small-database-library/</link>
		<comments>http://www.gamlor.info/wordpress/2012/02/scalaquery-a-small-database-library/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 23:14:36 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[software-development]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2284</guid>
		<description><![CDATA[On this blog I usually talk about no relational databases, like RavenDB or db4o. But guess what, I still like regular relational databases. A while back I needed to read some data from a relational database in Scala. What I wanted was a small library, which removes most of the JDBC boiler plate, but not [...]]]></description>
			<content:encoded><![CDATA[<p>On this blog I usually talk about no relational databases, like RavenDB or db4o. But guess what, I still like regular relational databases.<div id="attachment_2291" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/relational-scala.png"><img src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/relational-scala-300x182.png" alt="Relational Stuff fits Scala well" title="relational-scala" width="300" height="182" class="size-medium wp-image-2291" /></a><p class="wp-caption-text">Relational Stuff fits Scala well</p></div></p>
<p>A while back I needed to read some data from a relational database in Scala. What I wanted was a small library, which removes most of the JDBC boiler plate, but not a full blown ORM. I ended up using is <a href="http://scalaquery.org/">ScalaQuery</a>. </p>
<p>This library gives you a thin, rational layer on top of JDBC. This is how it works. First you define a &#8216;table&#8217;. This is done extending a table class and adding field definitions to it:<br />
<div id="gist-1839338" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">val</span> <span class="nc">ApiKeys</span> <span class="k">=</span> <span class="k">new</span> <span class="nc">ExtendedTable</span><span class="o">[(</span><span class="kt">String</span>, <span class="kt">String</span><span class="o">)](</span><span class="s">&quot;googleApiKeys&quot;</span><span class="o">)</span> <span class="o">{</span></div><div class='line' id='LC2'>	<span class="k">def</span> <span class="n">deviceId</span> <span class="k">=</span> <span class="n">column</span><span class="o">[</span><span class="kt">String</span><span class="o">](</span><span class="s">&quot;deviceId&quot;</span><span class="o">,</span> <span class="n">O</span><span class="o">.</span><span class="nc">PrimaryKey</span><span class="o">)</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'>	<span class="k">def</span> <span class="n">apiKey</span> <span class="k">=</span> <span class="n">column</span><span class="o">[</span><span class="kt">String</span><span class="o">](</span><span class="s">&quot;apiKey&quot;</span><span class="o">)</span></div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'>	<span class="k">def</span> <span class="o">*</span> <span class="k">=</span> <span class="n">deviceId</span> <span class="o">~</span> <span class="n">apiKey</span></div><div class='line' id='LC7'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1839338/2c2a3091048aeece850d3612bfdb5febc45b2738/TableDefinition.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1839338#file_table_definition.scala" style="float:right;margin-right:10px;color:#666">TableDefinition.scala</a>
            <a href="https://gist.github.com/1839338">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>Afterwards you need to create a database instance:<br />
<div id="gist-1839338" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">val</span> <span class="n">database</span><span class="k">:</span> <span class="kt">Database</span> <span class="o">=</span> <span class="nc">Database</span><span class="o">.</span><span class="n">forURL</span><span class="o">(</span><span class="s">&quot;jdbc:h2:~/apiKeyStore&quot;</span><span class="o">,</span> <span class="n">driver</span> <span class="k">=</span> <span class="s">&quot;org.h2.Driver&quot;</span><span class="o">)</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1839338/cf5c1f0b03de11dcdeae8c2a33193f6439fcd4f5/DatabaseInstance.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1839338#file_database_instance.scala" style="float:right;margin-right:10px;color:#666">DatabaseInstance.scala</a>
            <a href="https://gist.github.com/1839338">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>To do an operation we need a transaction / session. On way to create such a session is to use the withSession method. Basically all operations require a session. We can manually pass the session to the methods. Or we can declare an implicit session which is used. For example the built in thread local session:<br />
<div id="gist-1839338" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c1">// We use the thread local session management</span></div><div class='line' id='LC2'><span class="c1">// So we import this implicit parameter which returns the current session</span></div><div class='line' id='LC3'><span class="c1">// Of course we pass any other session / use our own implicits</span></div><div class='line' id='LC4'><span class="k">import</span> <span class="nn">org.scalaquery.session.Database.threadLocalSession</span></div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'><span class="c1">// and we do stuff in our session</span></div><div class='line' id='LC8'><span class="n">database</span> <span class="n">withSession</span> <span class="o">{</span></div><div class='line' id='LC9'>&nbsp;&nbsp;<span class="c1">// do stuff</span></div><div class='line' id='LC10'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1839338/1efa85ed4af414b762213f23cbb0af4176d69480/SessionManagement.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1839338#file_session_management.scala" style="float:right;margin-right:10px;color:#666">SessionManagement.scala</a>
            <a href="https://gist.github.com/1839338">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>For example we can create the database schema:<br />
<div id="gist-1839338" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">database</span> <span class="n">withSession</span> <span class="o">{</span></div><div class='line' id='LC2'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nc">ApiKeys</span><span class="o">.</span><span class="n">ddl</span><span class="o">.</span><span class="n">create</span></div><div class='line' id='LC3'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1839338/2d1bec8910272a5a92845c54f2b38b1416ed6651/CreateSchema.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1839338#file_create_schema.scala" style="float:right;margin-right:10px;color:#666">CreateSchema.scala</a>
            <a href="https://gist.github.com/1839338">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>Now to the important part: We can query and update data with our table object. The cool thing is that we just can use the Scala for-construct to do so. The library will transform our code into the appropriate SQL statement. Everything lives in the &#8216;Scala&#8217; world, no strings and casts etc. are required. Also not that some imports are required for these API features:<br />
<div id="gist-1839338" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c1">// Imports for the query API</span></div><div class='line' id='LC2'><span class="k">import</span> <span class="nn">org.scalaquery.ql.extended.H2Driver.Implicit._</span></div><div class='line' id='LC3'><span class="k">import</span> <span class="nn">org.scalaquery.session.</span><span class="o">{</span><span class="nc">Session</span><span class="o">,</span> <span class="nc">Database</span><span class="o">}</span></div><div class='line' id='LC4'><span class="k">import</span> <span class="nn">org.scalaquery.ResultSetInvoker</span></div><div class='line' id='LC5'><span class="k">import</span> <span class="nn">org.scalaquery.simple.StaticQuery</span></div><div class='line' id='LC6'><span class="k">import</span> <span class="nn">org.scalaquery.ql.Query</span></div><div class='line' id='LC7'><br/></div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'><span class="c1">// Query</span></div><div class='line' id='LC10'><span class="k">val</span> <span class="n">devicesByApiKey</span> <span class="k">=</span> <span class="k">for</span> <span class="o">{</span></div><div class='line' id='LC11'>	<span class="n">a</span> <span class="k">&lt;-</span> <span class="nc">ApiKeys</span> <span class="k">if</span> <span class="n">a</span><span class="o">.</span><span class="n">deviceId</span><span class="o">.</span><span class="n">like</span><span class="o">(</span><span class="n">deviceId</span><span class="o">)</span></div><div class='line' id='LC12'><span class="o">}</span> <span class="k">yield</span> <span class="n">a</span><span class="o">.</span><span class="n">apiKey</span></div><div class='line' id='LC13'><br/></div><div class='line' id='LC14'><span class="c1">// Do stuff with the result</span></div><div class='line' id='LC15'><span class="n">devicesByApiKey</span><span class="o">.</span><span class="n">foreach</span><span class="o">(</span><span class="n">i</span><span class="o">=&gt;</span><span class="n">doStuff</span><span class="o">(</span><span class="n">i</span><span class="o">))</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1839338/0cde61a12cd6d5153eb7746986b61f03a42033e1/QueryForAKey.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1839338#file_query_for_a_key.scala" style="float:right;margin-right:10px;color:#666">QueryForAKey.scala</a>
            <a href="https://gist.github.com/1839338">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>We also can insert and update tables:<br />
<div id="gist-1839338" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">val</span> <span class="n">devicesByApiKey</span> <span class="p">=</span> <span class="k">for</span> <span class="p">{</span></div><div class='line' id='LC2'>	<span class="n">a</span> <span class="p">&lt;-</span> <span class="n">ApiKeys</span> <span class="k">if</span> <span class="n">a</span><span class="p">.</span><span class="n">deviceId</span><span class="p">.</span><span class="n">like</span><span class="p">(</span><span class="n">deviceId</span><span class="p">)</span></div><div class='line' id='LC3'><span class="p">}</span> <span class="k">yield</span> <span class="n">a</span><span class="p">.</span><span class="n">apiKey</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'><span class="n">devicesByApiKey</span><span class="p">.</span><span class="n">firstOption</span> <span class="n">match</span> <span class="p">{</span></div><div class='line' id='LC6'>	<span class="k">case</span> <span class="n">None</span> <span class="p">=&gt;</span> <span class="p">{</span></div><div class='line' id='LC7'>	  <span class="n">ApiKeys</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">deviceId</span><span class="p">,</span> <span class="n">googleKey</span><span class="p">)</span></div><div class='line' id='LC8'>	<span class="p">}</span></div><div class='line' id='LC9'>	<span class="k">case</span> <span class="nf">Some</span><span class="p">(</span><span class="n">_</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span></div><div class='line' id='LC10'>	  <span class="n">query</span><span class="p">.</span><span class="n">update</span><span class="p">(</span><span class="n">googleKey</span><span class="p">)</span></div><div class='line' id='LC11'>	<span class="p">}</span></div><div class='line' id='LC12'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1839338/c096b67e7afb6516943d17b23d8b035c37b5c91e/UpdateOrInsert.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1839338#file_update_or_insert.cs" style="float:right;margin-right:10px;color:#666">UpdateOrInsert.cs</a>
            <a href="https://gist.github.com/1839338">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<h2>My Opinion &#038; State of the Library</h2>
<p>I really like the approach of this library. It is lightweight, close the SQL-metal and yet it blends perfectly with the Scala code. It really doesn&#8217;t feel like you entering into a new domain when talking to the database. It only surfaces operations which work in SQL and doesn’t do any operations behind the scenes. For many use cases this works way better than heavy weight ORM frameworks. </p>
<p>However I have to point out that many features are not there and there doesn&#8217;t seem any active development going on. For example you cannot check if a table already exists before calling the &#8216;create schema&#8217; method. I also miss a nice method for using raw SQL in case you need a missing feature. </p>
<p>So right now I only would use it for pet projects, or when you are willing to invest your time to patch and improve things. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/02/scalaquery-a-small-database-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>음악이 좋아요 : Machinae Supremacy / Good Music: Machinae Supremacy</title>
		<link>http://www.gamlor.info/wordpress/2012/02/machinae-supremacy/</link>
		<comments>http://www.gamlor.info/wordpress/2012/02/machinae-supremacy/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 00:47:45 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[Media Zap Oh Snap]]></category>
		<category><![CDATA[한국어 배우기]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[한국어]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2267</guid>
		<description><![CDATA[(English Version down below) Machinae Supremacy는 메탈-밴드 이고 스웨덴에 왔어요. 메탈-음악이랑 전자-음악을 쳐요. 낡은 8비트-신시사이저 자주 쳐서 컴퓨터게임-음악 저람이에요. 저는 신시사이저랑 전기-기타 음악 매우 좋아해요. 당신는 메탈가 좋아할 떼 한번 들어보세요. 이거 내가 Machinae Supremacy의 노래 몇개 좋아해요: Gimme More: Britney Spears의 노래 커버 이고 재미있어요: Indiscriminate Murder Is Counter-Productive: 이 노래의 가사 재미있어요. 그래서 [...]]]></description>
			<content:encoded><![CDATA[<p>(<a href="#MachinaeSupremacyEnglish">English Version down below</a>)<br />
<div id="attachment_2279" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/machinea-supremecy.png"><img src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/machinea-supremecy-300x284.png" alt="" title="machinea-supremecy" width="300" height="284" class="size-medium wp-image-2279" /></a><p class="wp-caption-text">Machinae Supremacy의 시작</p></div><br />
Machinae Supremacy는 메탈-밴드 이고 스웨덴에 왔어요. 메탈-음악이랑 전자-음악을 쳐요. 낡은 8비트-신시사이저 자주 쳐서 컴퓨터게임-음악 저람이에요. 저는 신시사이저랑 전기-기타 음악 매우 좋아해요. 당신는 메탈가 좋아할 떼 한번 들어보세요.</p>
<p>이거 내가 Machinae Supremacy의 노래 몇개 좋아해요:</p>
<p>Gimme More: Britney Spears의 노래 커버 이고 재미있어요:<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/UGUqTa04Z6o" frameborder="0" allowfullscreen></iframe></p>
<p>Indiscriminate Murder Is Counter-Productive: 이 노래의 가사 재미있어요. 그래서 주의하고 들어주세요:<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/8Y05TDInaeU" frameborder="0" allowfullscreen></iframe></p>
<p>Force Feedback: 노래의 비디오 있어요:<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/EYt3HRzxYAY" frameborder="0" allowfullscreen></iframe></p>
<p><a name="MachinaeSupremacyEnglish"/><br />
<div id="attachment_2280" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/machinea-supremecy-en.png"><img src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/machinea-supremecy-en-300x284.png" alt="Machinae Supremacy&#039;s Beginning" title="machinea-supremecy-en" width="300" height="284" class="size-medium wp-image-2280" /></a><p class="wp-caption-text">Machinae Supremacy&#039;s Beginning</p></div>Machinae Supremacy is an alternative Metal band from Sweden. They play Metal with electronic music. They often use old 8-bit synthesizer so it sound a bit like computer game music. I like really like the guitars and synthesizer together. When you like Metal you listen to them once.</p>
<p>Here are a few Machinae Supremacy songs I like:</p>
<p>Gimme More: It&#8217;s a Britney Spears cover:<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/UGUqTa04Z6o" frameborder="0" allowfullscreen></iframe></p>
<p>Indiscriminate Murder Is Counter-Productive: The lyrics of this song are fun, so listen carefully:<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/8Y05TDInaeU" frameborder="0" allowfullscreen></iframe></p>
<p>Force Feedback: Well it has a official video:<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/EYt3HRzxYAY" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/02/machinae-supremacy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>티비-드라마: 혼 / TV-Series: Soul</title>
		<link>http://www.gamlor.info/wordpress/2012/02/tv-series-soul/</link>
		<comments>http://www.gamlor.info/wordpress/2012/02/tv-series-soul/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 00:59:14 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[Media Zap Oh Snap]]></category>
		<category><![CDATA[한국어 배우기]]></category>
		<category><![CDATA[2-rating]]></category>
		<category><![CDATA[horror]]></category>
		<category><![CDATA[Soul]]></category>
		<category><![CDATA[tv series]]></category>
		<category><![CDATA[드라마]]></category>
		<category><![CDATA[한국어]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2257</guid>
		<description><![CDATA[(저는 한국어 아직 잘 못 해서 한국어로 블로그-포스트 짧아요. 근데 긴 영어로 밑에 있어요.) 저는 공포-영화 정말 좋아해, 그래서 이 공포-드라마 (위키백과) 봤을 때 봐야 돼요. 이 드라마에서 윤하나는 여동생 죽을 때부터 동생의 귀신 있다고 만나요. 그리고 시작 귀신 많아 지고  있다. 정말, 윤하나는 너무 뭇어워서 도움 필요해요. 그래서 프로파일러 신류 도워요. 근데 신류 하고 [...]]]></description>
			<content:encoded><![CDATA[<p>(저는 한국어 아직 잘 못 해서 한국어로 블로그-포스트 짧아요. 근데 긴 <a href="#Soul-In-English">영어로 밑에 있어요</a>.)</p>
<p>저는 공포-영화 정말 좋아해, 그래서 이 공포-드라마 (<a href="http://ko.wikipedia.org/wiki/혼">위키백과</a>) 봤을 때 봐야 돼요. 이 드라마에서 윤하나는 여동생 죽을 때부터 동생의 귀신 있다고 만나요. 그리고 시작 귀신 많아 지고  있다. 정말, 윤하나는 너무 뭇어워서 도움 필요해요. 그래서 프로파일러 신류 도워요. 근데 신류 하고 귀신가 나쁜 사람을 죽이고 싶어요.<br />
<div id="attachment_2263" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/soul.png"><img src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/soul-300x177.png" alt="귀신이 항상 얘기해요" title="soul" width="300" height="177" class="size-medium wp-image-2263" /></a><p class="wp-caption-text">귀신이 항상 얘기해요</p></div></p>
<p>이 드라마는 좋아세요? 괜찮아요. 근대 저는 이야기가 조금 이해 못하고 조금 심심해요.<br />
<a name="Soul-In-English"></a><br />
제 평가: (2/5)</p>
<p>Ok, here‘s the longer version my little review of Soul (혼)(<a href="http://www.hancinema.net/korean_movie_HON_-_Soul.php">Hancinema</a>), a horror drama. I personally love Horror movies, so when I stumbled upon Soul I had to check it out.</p>
<p>It&#8217;s about Yoon Hana whose sister dies and shortly after starts to appear as ghost. Later on Yoon Hana starts to see more and more ghosts. Of course she is scared to death and seeks for help. So Shinryu, a Crime-Profiler, starts to help her. But Shinryu and the ghost also have other plans: To kill bad guys.<br />
<div id="attachment_2264" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/soul-en.png"><img src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/02/soul-en-300x177.png" alt="" title="soul-en" width="300" height="177" class="size-medium wp-image-2264" /></a><p class="wp-caption-text">Ghosts always tell stories</p></div></p>
<p>Well the series starts with this stereo typical scary, black haired ghost girl stuff. At the beginning it is quite confusing and cuts between different flashbacks which make no sense what so ever. However after a few episodes a story starts to crystallize, which is actually kind of neat. It also moves away from the horror theme start to become more thriller style. Unfortunately the story is told very slowly, so it gets somewhat boring sometimes. I think this series would be much better with faster storytelling and more focus on the thriller elements.</p>
<p>Now is it scary? No not really, but I didn&#8217;t expect that from a TV series. But it has some nice atmospheric and cool scenes. I also have to mention one very strange scene from the beginning, the suicide-scene. Well, this scene is strange to me because it nearly celebrates the suicide by matrix-style slow-motion camera work. Quite unusual to put that much focus on this kind of scene.</p>
<p>All in all, Soul is all right, but not all that great. I recommend other series  <a href="http://www.gamlor.info/wordpress/2009/02/jekyll/">Jekyll</a>, <a href="http://www.gamlor.info/wordpress/2008/11/dead-set/">Dead Set</a> etc. with a horror theme. Even some recent Doctor Who episodes have a moody horror atmosphere to them.</p>
<p>Star-O-Meter: (2/5)</p>
<p>The trailer is strange, because I think that many scenes are not present in the series:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/EHb6ZqvuPdI" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/02/tv-series-soul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Running Akka 2.0 On Android (WIP)</title>
		<link>http://www.gamlor.info/wordpress/2012/01/running-akka-2-0-on-android-wip/</link>
		<comments>http://www.gamlor.info/wordpress/2012/01/running-akka-2-0-on-android-wip/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 23:12:27 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[akka-mobile]]></category>
		<category><![CDATA[software-development]]></category>
		<category><![CDATA[akka]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2246</guid>
		<description><![CDATA[This information here is allready quite outdated. With the current Akka 2.0 master snapshot some issues are gone, while new pitfalls introduced. I will update / create a new post when Akka 2.0 is close to the final release. Akka 2.0 is available as a preview version. Here’s a short guide how to get it [...]]]></description>
			<content:encoded><![CDATA[<p><strong>This information here is allready quite outdated. With the current Akka 2.0 master snapshot some issues are gone, while new pitfalls introduced. I will update / create a new post when Akka 2.0 is close to the final release.</strong></p>
<p>Akka 2.0 is available as a preview version. Here’s a short guide how to get it to run on Android. This pretty much work in progress. Maybe someone else has even has a better strategy. Let me know if that’s the case=). Also I didn’t do much with Akka 2.0 on Android yet, so maybe there are major issues yet to discover =).</p>
<div id="attachment_2249" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/akka20onDroid.png"><img class="size-medium wp-image-2249" title="akka20onDroid" src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/akka20onDroid-300x226.png" alt="Let's master this Akka beast, little Android =)" width="300" height="226" /></a><p class="wp-caption-text">Let&#39;s master this Akka-beast, little Android =)</p></div>
<p>In general I just assume that you have a working Scala build and know how to include new Scala libraries. And I also assume that you are using Proguard to shrink the jar file. I use a build based on <a href="https://github.com/pboos/scala-on-android-example">this</a>. In case you are having trouble, just ask for help =).</p>
<p>First add the Akka 2.0 M3 jar-file to the project (The M2 bits won’t work). Make sure that it is in your directories of libraries which are compacted by Proguard. Unfortunately you will get tons of warnings by Proguard about classes which couldn’t be found, because they are not part of the Android platform. These are three categories of classes which are not available:</p>
<ul>
<li>‘ akka.util.JMX’: There is no JMX on Android.</li>
<li>‘sun.misc.Unsafe’: Well at first sight Android doesn’t have this implementation-detail class. Luckily it actually does have it (at least in newer versions), but it’s only available at runtime. The jars which you compile against do not have this class.</li>
<li>‘org.omg.CORBA’-stuff. The Akka library has a UUID implementation which implements some interfaces from CORBA.</li>
</ul>
<p>So it is time for some Proguard trickery to get rid of warnings.</p>
<h2>Bye Bye JMX</h2>
<p>Well there is definitely no JMX on Android. So I just excluded the JMX stuff from Akka:</p>
<div id="gist-1706858" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c">## No JMX for Android</span></div><div class='line' id='LC2'><span class="err">-dontwarn</span> <span class="err">akka.util.JMX*</span></div><div class='line' id='LC3'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1706858/5a340c0919a6c6284f281c25afbb3108e6d26f00/NoJMXForYou.cfg" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1706858#file_no_jmx_for_you.cfg" style="float:right;margin-right:10px;color:#666">NoJMXForYou.cfg</a>
            <a href="https://gist.github.com/1706858">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<h2>Ignoring ‘sun.misc.Unsafe’ Warnings</h2>
<p>The next step is to configure Proguard to ignore the ‘sun.misc.Unsafe’ warnings. It is there on the device (If not, please tell me).</p>
<div id="gist-1706858" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c">## Unsafe is there at runtime</span></div><div class='line' id='LC2'><span class="err">-dontwarn</span> <span class="err">sun.misc.Unsafe</span></div><div class='line' id='LC3'><span class="err">-keep</span> <span class="err">class</span> <span class="err">sun.misc.Unsafe{</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="err">*</span><span class="c">;</span></div><div class='line' id='LC5'><span class="err">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1706858/48f4299d45efd0aca4a47df961f8e634c06f3070/UnsafeIsThere.cfg" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1706858#file_unsafe_is_there.cfg" style="float:right;margin-right:10px;color:#666">UnsafeIsThere.cfg</a>
            <a href="https://gist.github.com/1706858">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<h2>Fixing the CORBA Stuff</h2>
<div>
<div>
<div id="982189de-8479-41c6-9cec-ab6cfca78500">
<p>Well, just exclude the ‘com.eaio.uuid’ stuff and you should be fine. At least is looks like it when you are only using the basic functionality. (In Akka 1.2 the UUID class is central, in Akka 2.0 it has been replaced with the path system.):</p>
</div>
</div>
</div>
<div id="gist-1706858" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c">## UUID helpers are not used</span></div><div class='line' id='LC2'><span class="err">-dontwarn</span> <span class="err">com.eaio.uuid.**</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1706858/2a8296993ff7435b6dfb05040145cd52013210f3/UUIDHelpersNotNeeded.cfg" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1706858#file_uuid_helpers_not_needed.cfg" style="float:right;margin-right:10px;color:#666">UUIDHelpersNotNeeded.cfg</a>
            <a href="https://gist.github.com/1706858">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<h2>Remove the FSM Forward Reference</h2>
<p>The core Akka library contains a forward reference to its finite state machine (FSM) implementation. In a usual class loader environment this doesn’t matter, since classes are lazily loaded. However Proguard is going to bitch about it. So in case you are not using the FSM library remove that reference with Proguard:</p>
<div id="gist-1706858" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c">## No Finate State Machines Support needed</span></div><div class='line' id='LC2'><span class="err">-dontwarn</span> <span class="err">akka.actor.FSM</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1706858/ae19d052d7712dbb3732d09e2cea54a805bac811/FSM.cfg" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1706858#file_fsm.cfg" style="float:right;margin-right:10px;color:#666">FSM.cfg</a>
            <a href="https://gist.github.com/1706858">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<h2>Keep Important Classes</h2>
<p>Also we need to keep some classes which are loaded at runtime. Maybe there are more required for some features, just watch for class loader errors. These are the ones you need for sure:</p>
<div id="gist-1706858" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c">## Stuff referenced at runtime</span></div><div class='line' id='LC2'><span class="err">-keep</span> <span class="err">public</span> <span class="err">class</span> <span class="err">akka.actor.LocalActorRefProvider</span> <span class="err">{</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;<span class="err">public</span> <span class="err">&lt;init&gt;(...)</span><span class="c">;</span></div><div class='line' id='LC4'><span class="err">}</span></div><div class='line' id='LC5'><span class="err">-keep</span> <span class="err">class</span> <span class="err">akka.event.Logging*</span></div><div class='line' id='LC6'><span class="err">-keep</span> <span class="err">class</span> <span class="err">akka.event.Logging$LogExt{</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="err">*</span><span class="c">;</span></div><div class='line' id='LC8'><span class="err">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1706858/65184b9b60e52c265146b956c90ded944122f945/KeepStuff.cfg" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1706858#file_keep_stuff.cfg" style="float:right;margin-right:10px;color:#666">KeepStuff.cfg</a>
            <a href="https://gist.github.com/1706858">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<h2>Work Around the Reference Configuration Issue?</h2>
<p>I’m not sure what exactly the issue is here and probably I’m doing something wrong. At least with my setup Akka cannot find its internal reference.conf resource file. Looks like resources are only loaded from the *.apk file? Anyway, for now I just copied the reference.conf file from the Akka source code to my project (Or do it with a build task). Then everything runs.</p>
<h2>Conclusion</h2>
<p>Yes, it is a little hairy to get Akka 2.0 to run on Android. I certainly will work a little more on it. And in case it gets too bad I’ll do a shallow fork of Akka <img src='http://www.gamlor.info/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/01/running-akka-2-0-on-android-wip/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>리믹스하고 매시업이 만드는 사람 좋아해요: DJs From Mars / Favorite Remixer and Mashupers: DJs From Mars</title>
		<link>http://www.gamlor.info/wordpress/2012/01/djs-from-mars/</link>
		<comments>http://www.gamlor.info/wordpress/2012/01/djs-from-mars/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 01:13:13 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[한국어 배우기]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[한국어]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2235</guid>
		<description><![CDATA[리믹스하고 매시업이 만드는 사람이 너무 많아. 그리고 DJs From Mars는 가장 좋은 리믹스를 만들었어. Soundcloud에서 매달 음악-믹스를 업로드해요. 그 음악-믹스가는 항상 새로운 리믹스하고 매시업이 있오요. DJs From Mars는 유명한 팝 노래가  하우스 음악를 되는 걸 해요. 그래서 저 하우스 음악아랑 알려진 노래가 매우 재미있어요. 그리고 난 DJs From Mars의 한번 음악-믹스 들어봤을 때  하우스-음악을 진짜 좋아해요. 여기 음악-믹스가 하나 [...]]]></description>
			<content:encoded><![CDATA[<p>리믹스하고 매시업이 만드는 사람이 너무 많아. 그리고 DJs From Mars는 가장 좋은 리믹스를 만들었어. <a href="http://soundcloud.com/djsfrommars/">Soundcloud에서</a> 매달 음악-믹스를 업로드해요. 그 음악-믹스가는 항상 새로운 리믹스하고 매시업이 있오요.</p>
<p>DJs From Mars는 유명한 팝 노래가  하우스 음악를 되는 걸 해요. 그래서 저 하우스 음악아랑 알려진 노래가 매우 재미있어요.</p>
<p>그리고 난 DJs From Mars의 한번 음악-믹스 들어봤을 때  하우스-음악을 진짜 좋아해요.</p>
<div id="attachment_2240" class="wp-caption aligncenter" style="width: 228px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/djsfromMars.png"><img class="size-medium wp-image-2240" title="djsfromMars" src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/djsfromMars-218x300.png" alt="DJs From Mars" width="218" height="300" /></a><p class="wp-caption-text">DJs From Mars</p></div>
<p>여기 음악-믹스가 하나 있어요:</p>
<p><iframe width="100%" height="166" scrolling="no" frameborder="no" src="http://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F28856814&#038;show_artwork=true"></iframe></p>
<p>&nbsp;</p>
<p>There are many remixers and mashup creaters. And so DJs From Mars are one of the best remix makers. On Souncloud they monthly upload a music-mix. That music-mix has always new remixes and mashups.</p>
<p>DJs From Mars turn popular pop songs into house music. That house music with known songs is fun.</p>
<p>And after listening to their mixes I started to really like House music.</p>
<p>There such a music mix above.</p>
<p>Translation of the Comic:</p>
<p>Happy-guy: I like Pop music but don&#8217;t like House music.<br />
Evil-guy: I like House Music and Noise. More Noise please.<br />
Happy-guy: Should we make a Remix together?<br />
Evil-guy: Allright.<br />
Together: We are a good team!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/01/djs-from-mars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soundcloud이 좋아요 / Soundcloud rocks</title>
		<link>http://www.gamlor.info/wordpress/2012/01/soundcloud-is-cool/</link>
		<comments>http://www.gamlor.info/wordpress/2012/01/soundcloud-is-cool/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 13:18:52 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[한국어 배우기]]></category>
		<category><![CDATA[Korean]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[Soundcloud]]></category>
		<category><![CDATA[한국어]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2213</guid>
		<description><![CDATA[나는 Soundcloud을 진짜 좋아해요. Soundcloud는 음악 웹사이트으로, 사용자가 음악을 들을 수 있고 업로드할 수 있어요. Soundcloud에서 좋은 전자 음악가하고, 리믹스가 만드는 게하고, 매시업 만드는 게  많아요. 그라고 Soundcloud는 많이 기능이  있어요: 검색엔진하고, 태그 구름하고,  그룹 있어서 , 새로운 음악 발견하기 쉬워요. 댓글 쓰기 쉬워요. 그리고, 어떤 시간에 댓글 할 수 있어요. 업로드하고 공유하기 쉬워요. 트위터처럼  음악가를 팔로우해요. 광고가 없어요. 당신은 전자 [...]]]></description>
			<content:encoded><![CDATA[<p>나는 <a href="http://soundcloud.com/">Soundcloud을 </a>진짜 좋아해요. Soundcloud는 음악 웹사이트으로, 사용자가 음악을 들을 수 있고 업로드할 수 있어요. Soundcloud에서 좋은 전자 음악가하고, 리믹스가 만드는 게하고, 매시업 만드는 게  많아요. 그라고 Soundcloud는 많이 기능이  있어요:</p>
<ul>
<li>검색엔진하고, 태그 구름하고,  그룹 있어서 , 새로운 음악 발견하기 쉬워요.</li>
<li>댓글 쓰기 쉬워요. 그리고, 어떤 시간에 댓글 할 수 있어요.</li>
<li>업로드하고 공유하기 쉬워요.</li>
<li>트위터처럼  음악가를 팔로우해요.</li>
<li>광고가 없어요.</li>
</ul>
<p>당신은 전자 음악이 좋아서  <a href="http://soundcloud.com/">Soundcloud을</a> 봐보세요! 그리고<a href="http://soundcloud.com/gamlor"> 내 믹스 테이프기 Soundcloud에</a> 있어요 =).</p>
<p>다음 블로그 포스트에 난 좋은 <a href="http://soundcloud.com/">Soundcloud</a>의 사람 얘기할 거에요.</p>
<div id="attachment_2221" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/soundcloud.png"><img class="size-medium wp-image-2221" title="soundcloud" src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/soundcloud-300x172.png" alt="" width="300" height="172" /></a><p class="wp-caption-text">Soundcloud 끝내줘요</p></div>
<p>I really like Soundcloud. Soundcloud is a music website where users can listen and upload music. There are many good electronic music composers, remixers and mashup creators on Souncloud. And Soundcloud itself has some nice featueres:</p>
<ul>
<li>It is easy to discover music with its search, tag-clouds and group featuers.</li>
<li>Commenting is easy. And you even can leave a comment at a particular time.</li>
<li>Uploading and sharing is easy.</li>
<li>Like Twitter, you can follow artists.</li>
<li>There are no ads.</li>
</ul>
<p>When you like electronic music you should check out <a href="http://soundcloud.com/">Soundcloud</a>. And <a href="http://soundcloud.com/gamlor">my mixtapes</a> are on there!</p>
<p>In the next blog post I&#8217;m going to talk about some of my favorite people on Soundcloud.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/01/soundcloud-is-cool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flower Boy Ramyun Shop</title>
		<link>http://www.gamlor.info/wordpress/2012/01/flower-boy-ramyun-shop/</link>
		<comments>http://www.gamlor.info/wordpress/2012/01/flower-boy-ramyun-shop/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 00:38:35 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[Media Zap Oh Snap]]></category>
		<category><![CDATA[2-rating]]></category>
		<category><![CDATA[4-rating]]></category>
		<category><![CDATA[comedy]]></category>
		<category><![CDATA[Flower Boz Ramyun Shop]]></category>
		<category><![CDATA[romance]]></category>
		<category><![CDATA[tv series]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2199</guid>
		<description><![CDATA[Boy meets Girl…trouble and fun…fall in love…yada yada yada … Yes, Boy Ramyun Shop doesn’t need a plot description, it is a cliché driven romantic-comedy. I mean really cliché driven. This show goes along with every cheesy and formula plot point. Basically our two main characters first meet in an ‘accident’-situation. Later on they meet [...]]]></description>
			<content:encoded><![CDATA[<p>Boy meets Girl…trouble and fun…fall in love…yada yada yada …<br />
<div id="attachment_2206" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/flower-boy-ramyun-shop.png"><img src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/flower-boy-ramyun-shop-300x224.png" alt="Ramyun, yummie" title="flower-boy-ramyun-shop" width="300" height="224" class="size-medium wp-image-2206" /></a><p class="wp-caption-text">Ramyun, yummie</p></div></p>
<p>Yes, Boy Ramyun Shop doesn’t need a plot description, it is a cliché driven romantic-comedy. I mean really cliché driven. This show goes along with every cheesy and formula plot point. Basically our two main characters first meet in an ‘accident’-situation. Later on they meet again in a more permanent situation. They argue and hate each other, but can&#8217;t really let go of each other and fall in love. Finally they live happily ever after. Oooooooohhhh, how cute.</p>
<p>Given this kind of show, there are countless cheesy and silly scenes. The characters are mostly naïve and fulfill some stereotype. Additionally there is a tons of overacting. Especially the lead actress overacts the shit out of her role. When you think this isn’t enough, they sometimes add small cartoon animations and comic-sound effects to underline scenes. All in all, it is way over the top.</p>
<p>This all sounds negative, and it kind of is. However I nevertheless love ‘Flower Boy Ramyun Shop’. For me it has the exact right balance of ‘over-the-topless’, silliness, foreseeable jokes and enjoyable badness. It is somewhat a guilty pleasure. What makes this show it work for me are the likable characters. I liked all characters, including the ‘asshole’-characters. I don’t mind stereotype characters as long as I enjoy them =).</p>
<p>Can I recommend it? Rationally: NO WAY. Had I fun watching it? HELL YES. It’s one off the funniest series I’ve watched for quite a long time. I think this series has a sharp line between being liked and hated. If you like over-the-top stuff, watch the first (half) episode and decide. Or maybe your already put off by the scenes I’ve liked below =)</p>
<p>Rational-Star-O-Meter: (2/5)<br />
Enjoyment-Star-O-Meter: (4/5)</p>
<p>&nbsp;</p>
<p>Trailers: Again, there are no good trailers around =(</p>
<p>Dead-boring English subtitled trailer:</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/OoUddZS7Nig" frameborder="0" allowfullscreen></iframe></p>
<p>Super silly over the top scene. No subtitles, but gives a better impression. (Well, there are also normal scenes =) ):</p>
<p><iframe src="http://www.youtube.com/embed/iVSwq7YkC5E" frameborder="0" width="420" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/01/flower-boy-ramyun-shop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Annoying Void in C# / Java / alike</title>
		<link>http://www.gamlor.info/wordpress/2012/01/annoying-void-in-c-java-alike/</link>
		<comments>http://www.gamlor.info/wordpress/2012/01/annoying-void-in-c-java-alike/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 23:26:27 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2191</guid>
		<description><![CDATA[One thing which regularly annoys me in C# and Java is the void type. Basically the void type is not a subtype of object, which makes it giant. Now when you write something which accepts a function as an argument you need two version: A version which accepts a function which returns something and a [...]]]></description>
			<content:encoded><![CDATA[<p>One thing which regularly annoys me in C# and Java is the void type. Basically the void type is not a subtype of object, which makes it giant. Now when you write something which accepts a function as an argument you need two version: A version which accepts a function which returns something and a version which accepts a ‘void-returning’-function (the Action delegates in C#).</p>
<div id="attachment_2195" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/void-oh-void.png"><img class="size-medium wp-image-2195" title="void-oh-void" src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/void-oh-void-300x187.png" alt="Void Is Not Cool Enough" width="300" height="187" /></a><p class="wp-caption-text">Void Is Not Cool Enough </p></div>
<p>In my code I often end up doing something like this:</p>
<div id="gist-1597380" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">class</span> <span class="nc">Example</span></div><div class='line' id='LC2'><span class="p">{</span></div><div class='line' id='LC3'>	<span class="c1">// Stuff like transactions, run in contexts, binding methods etc etc.</span></div><div class='line' id='LC4'>	<span class="k">public</span> <span class="n">T</span> <span class="n">WithSomeContext</span><span class="p">&lt;</span><span class="n">T</span><span class="p">&gt;(</span><span class="n">Func</span><span class="p">&lt;</span><span class="n">T</span><span class="p">&gt;</span> <span class="n">runInContext</span><span class="p">)</span></div><div class='line' id='LC5'>	<span class="p">{</span></div><div class='line' id='LC6'>		<span class="c1">// do magic and stuff</span></div><div class='line' id='LC7'>		<span class="n">var</span> <span class="n">result</span> <span class="p">=</span> <span class="n">runInContext</span><span class="p">();</span></div><div class='line' id='LC8'>		<span class="c1">// do other stuff</span></div><div class='line' id='LC9'>		<span class="k">return</span> <span class="n">result</span><span class="p">;</span></div><div class='line' id='LC10'>	<span class="p">}</span></div><div class='line' id='LC11'><br/></div><div class='line' id='LC12'>	<span class="c1">// Doublicate to also accept Void returns</span></div><div class='line' id='LC13'>	<span class="k">public</span> <span class="k">void</span> <span class="nf">WithSomeContext</span><span class="p">(</span><span class="n">Action</span> <span class="n">runInContext</span><span class="p">)</span></div><div class='line' id='LC14'>	<span class="p">{</span></div><div class='line' id='LC15'>		<span class="n">WithSomeContext</span><span class="p">&lt;</span><span class="kt">object</span><span class="p">&gt;(()</span> <span class="p">=&gt;</span></div><div class='line' id='LC16'>			<span class="p">{</span></div><div class='line' id='LC17'>				<span class="n">runInContext</span><span class="p">();</span></div><div class='line' id='LC18'>				<span class="k">return</span> <span class="k">null</span><span class="p">;</span></div><div class='line' id='LC19'>			<span class="p">});</span></div><div class='line' id='LC20'>	<span class="p">}</span></div><div class='line' id='LC21'><br/></div><div class='line' id='LC22'>	<span class="k">public</span> <span class="k">void</span> <span class="nf">UseIt</span><span class="p">()</span></div><div class='line' id='LC23'>	<span class="p">{</span></div><div class='line' id='LC24'>		<span class="n">var</span> <span class="n">valueOne</span> <span class="p">=</span> <span class="m">1</span><span class="p">;</span></div><div class='line' id='LC25'>		<span class="n">var</span> <span class="n">valueTwo</span> <span class="p">=</span> <span class="m">2</span><span class="p">;</span></div><div class='line' id='LC26'>		<span class="c1">// with return value</span></div><div class='line' id='LC27'>		<span class="n">var</span> <span class="n">sum</span> <span class="p">=</span> <span class="n">WithSomeContext</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="n">valueOne</span> <span class="p">+</span> <span class="n">valueTwo</span><span class="p">);</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'>		<span class="n">WithSomeContext</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s">&quot;Hi-There&quot;</span><span class="p">));</span></div><div class='line' id='LC30'>	<span class="p">}</span></div><div class='line' id='LC31'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1597380/2c7baf9becb16465b3109433f82e7965b942a407/InCSharp.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1597380#file_in_c_sharp.cs" style="float:right;margin-right:10px;color:#666">InCSharp.cs</a>
            <a href="https://gist.github.com/1597380">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>That’s just boilerplate which I really don’t need. In many other languages, for example Scala, this is handled more elegantly. The void-type (often called Unit) is a regular type. And void/unit values just represent ‘void/unit‘:</p>
<div id="gist-1597380" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">class</span> <span class="nc">Example</span><span class="o">{</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'>&nbsp;&nbsp;<span class="k">def</span> <span class="n">withContext</span><span class="o">[</span><span class="kt">T</span><span class="o">](</span><span class="n">runInContext</span><span class="k">:</span><span class="o">()=&gt;</span><span class="n">T</span><span class="o">)</span><span class="k">:</span><span class="kt">T</span> <span class="o">={</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// do magic and stuff</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">val</span> <span class="n">result</span> <span class="k">=</span> <span class="n">runInContext</span><span class="o">();</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1">// do other stuff</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">result</span><span class="o">;</span></div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="o">}</span></div><div class='line' id='LC9'>&nbsp;&nbsp;</div><div class='line' id='LC10'>&nbsp;&nbsp;<span class="c1">// no need for another method. </span></div><div class='line' id='LC11'>&nbsp;&nbsp;<span class="c1">// Our withContext also can accept &#39;void&#39;-returns aka Unit </span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'>&nbsp;&nbsp;<span class="k">def</span> <span class="n">useIt</span><span class="o">()</span> <span class="o">{</span></div><div class='line' id='LC14'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">val</span> <span class="n">valueOne</span> <span class="k">=</span> <span class="mi">1</span><span class="o">;</span></div><div class='line' id='LC15'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">val</span> <span class="n">valueTwo</span> <span class="k">=</span> <span class="mi">2</span><span class="o">;</span></div><div class='line' id='LC16'>&nbsp;&nbsp;&nbsp;&nbsp;</div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">var</span> <span class="n">sum</span> <span class="k">=</span> <span class="n">withContext</span><span class="o">(()</span> <span class="k">=&gt;</span> <span class="n">valueOne</span> <span class="o">+</span> <span class="n">valueTwo</span><span class="o">);</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">withContext</span><span class="o">(()</span> <span class="k">=&gt;</span> <span class="n">println</span><span class="o">(</span><span class="s">&quot;Hi-There&quot;</span><span class="o">));</span></div><div class='line' id='LC20'><br/></div><div class='line' id='LC21'>&nbsp;&nbsp;<span class="o">}</span></div><div class='line' id='LC22'><span class="o">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1597380/bef752273b24b5861e717cb26f9f34d2654c2bbd/InScala.scala" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1597380#file_in_scala.scala" style="float:right;margin-right:10px;color:#666">InScala.scala</a>
            <a href="https://gist.github.com/1597380">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Yes, I know, it’s not the end of the (programming) world. There are tons of other issues which lead to more boiler-plate. Anyhow, it is such a little thing and still so god damn annoying. God help us that no new programming includes the same little weakness =).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/01/annoying-void-in-c-java-alike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>한국어 배우기 / Learning Korean for Fun and Profit</title>
		<link>http://www.gamlor.info/wordpress/2012/01/learning-korean/</link>
		<comments>http://www.gamlor.info/wordpress/2012/01/learning-korean/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 23:14:43 +0000</pubDate>
		<dc:creator>gamlerhart</dc:creator>
				<category><![CDATA[42]]></category>
		<category><![CDATA[한국어 배우기]]></category>
		<category><![CDATA[Korean]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[한국어]]></category>

		<guid isPermaLink="false">http://www.gamlor.info/wordpress/?p=2176</guid>
		<description><![CDATA[난 미쳤어요 그리고 한국어 배워요. 그래서 아직 많이 몰라요. 근데, 한국어를 배우는게 재미있어요. 먼저 난 한국 드라마하고 음악-비디오 봤어요. 잠시 후에 넌 문자를 알고 싶어서 한글을 배워봤어요. 그러면 첫 단어하고 첫 문장 배왔어요 그리고 그만둬야 안돼요. 그래서, 난 이 블로그-포스트를 써요. 더 많은 블로그-포스트를 한국어로 쓸 거에요. Ah yes, I&#8217;m learning Korean. How the hell [...]]]></description>
			<content:encoded><![CDATA[<p>난 미쳤어요 그리고 한국어 배워요. 그래서 아직 많이 몰라요. 근데, 한국어를 배우는게 재미있어요. 먼저 난 한국 드라마하고 음악-비디오 봤어요. 잠시 후에 넌 문자를 알고 싶어서 한글을 배워봤어요. 그러면 첫 단어하고 첫 문장 배왔어요 그리고 그만둬야 안돼요. 그래서, 난 이 블로그-포스트를 써요. 더 많은 블로그-포스트를 한국어로 쓸 거에요.</p>
<div id="attachment_2183" class="wp-caption aligncenter" style="width: 590px"><a href="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/learning-korean.png"><img class="size-full wp-image-2183" title="learning-korean" src="http://www.gamlor.info/wordpress/wp-content/uploads/2012/01/learning-korean.png" alt="" width="580" height="374" /></a><p class="wp-caption-text">한글 쉬워요!</p></div>
<p>Ah yes, I&#8217;m learning Korean. How the hell did I end up learning that? Well I wanted to learn something non-technical like a language for a long time. First wanted to relearn French or learn something easy (close to German/English) like Dutch, but never could motivate me. Then I thought that I should learn something completely different, like Russian, Chinese or whatever. Of course I never started to do it.</p>
<p>So how did I end up with Korean? Well that one kind of sneaked onto me. While watching Korean movies and stuff I started to wonder what strange writing system they use. It didn&#8217;t look anything like Chinese or Japanese, nor like anything &#8216;European&#8217;-like. So one day I looked it up and learned the basics of the <a href="http://en.wikipedia.org/wiki/Hangul">Hangul </a>writing system. And because Hangul is damn easy I kept going. Of course a writing system without words is useless, so I started to learn the first basic words. And I kind of never stopped learning. Now I find it fun to learn some bits here and there and I keep going.</p>
<p>The original purpose of this blog was to practise English, so now I come back its roots and start practising Korean here =). For the readers sake I will add a English translation to each post. Also because my Korean is probably so wrong that it is not understandable XD. Of course the content will be very trivial, since I&#8217;m a beginner.</p>
<h2>Comic-Content</h2>
<p>On the Board: Hangul &#8216;characters&#8217; with there &#8216;pronounciation&#8217;. Don&#8217;t use this as a reference XD</p>
<p>The Guy: What is Hangul? Learning Korean was a bad idea!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamlor.info/wordpress/2012/01/learning-korean/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

