Skip to content

Commit

Permalink
Generate Pelican site
Browse files Browse the repository at this point in the history
  • Loading branch information
nevillelyh committed May 6, 2017
1 parent e4102f5 commit bdab5ae
Show file tree
Hide file tree
Showing 44 changed files with 1,561 additions and 287 deletions.
6 changes: 5 additions & 1 deletion archives.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@
<section id="content">
<h1>Archives for Das Keyboard Shredder</h1>
<div id="archives">
<p>
<span class="categories-timestamp"><time datetime="2017-05-06T17:14:00-04:00">Sat 06 May 2017</time></span>
<a href="http://www.lyh.me/decompiling-scala-code.html">Decompiling Scala&nbsp;code</a>
</p>
<p>
<span class="categories-timestamp"><time datetime="2017-04-21T08:48:00-04:00">Fri 21 April 2017</time></span>
<a href="http://www.lyh.me/implicits.html">Implicits</a>
Expand Down Expand Up @@ -199,11 +203,11 @@ <h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Social</span></h4>
<li class="list-group-item">
<h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Recent Posts</span></h4>
<ul class="list-group" id="recentposts">
<li class="list-group-item"><a href="http://www.lyh.me/decompiling-scala-code.html">Decompiling Scala&nbsp;code</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/implicits.html">Implicits</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/scio-at-philly-ete.html">Scio at Philly <span class="caps">ETE</span></a></li>
<li class="list-group-item"><a href="http://www.lyh.me/joins.html">Joins</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/for-comprehensions.html">For&nbsp;comprehensions</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/scio-at-scala-by-the-bay.html">Scio at Scala by the&nbsp;Bay</a></li>
</ul>
</li>
<!-- End Sidebar/Recent Posts -->
Expand Down
99 changes: 71 additions & 28 deletions author/neville-li.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,76 @@
<div class="container">
<div class="row">
<div class="col-sm-9">
<article>
<h2><a href="http://www.lyh.me/decompiling-scala-code.html">Decompiling Scala&nbsp;code</a></h2>
<div class="well well-sm">
<footer class="post-info">
<span class="label label-default">Date</span>
<span class="published">
<i class="fa fa-calendar"></i><time datetime="2017-05-06T17:14:00-04:00"> Sat 06 May 2017</time>
</span>



<span class="label label-default">Category</span>
<a href="http://www.lyh.me/category/code.html">code</a>


<span class="label label-default">Tags</span>
<a href="http://www.lyh.me/tag/scala.html">scala</a>
/
<a href="http://www.lyh.me/tag/fp.html">fp</a>

</footer><!-- /.post-info --> </div>
<div class="summary"><p>I was bored today and decided to decompile some Scala code for fun and profit. I&#8217;m using Scala 2.12.2 and Java&nbsp;1.8.0_121.</p>
<h2>Scala&nbsp;object</h2>
<div class="highlight"><pre><span></span><span class="k">package</span> <span class="nn">javap</span>

<span class="k">object</span> <span class="nc">Test01</span> <span class="o">{</span>
<span class="k">def</span> <span class="n">main</span><span class="o">(</span><span class="n">args</span><span class="k">:</span> <span class="kt">Array</span><span class="o">[</span><span class="kt">String</span><span class="o">])</span><span class="k">:</span> <span class="kt">Unit</span> <span class="o">=</span> <span class="nc">Unit</span>
<span class="o">}</span>
</pre></div>


<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="nc">javap</span><span class="o">.</span><span class="na">Test01$</span> <span class="o">{</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="n">javap</span><span class="o">.</span><span class="na">Test01$</span> <span class="n">MODULE$</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="o">{};</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">java</span><span class="o">.</span><span class="na">lang</span><span class="o">.</span><span class="na">String</span><span class="o">[]);</span>
<span class="kd">private</span> <span class="n">javap</span><span class="o">.</span><span class="na">Test01$</span><span class="o">();</span>
<span class="o">}</span>

<span class="kd">public</span> <span class="kd">final</span> <span class="kd">class</span> <span class="nc">javap</span><span class="o">.</span><span class="na">Test01</span> <span class="o">{</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">java</span><span class="o">.</span><span class="na">lang</span><span class="o">.</span><span class="na">String</span><span class="o">[]);</span>
<span class="o">}</span>
</pre></div>


<p>As we can see a Scala object is compiled to 2 Java classes, <code>Test01</code> with static methods for Java compatibility and a <code>Test01$</code> with a static instance of itself as <code>MODULE$</code>, so that <code>Test01</code> can be used as an instance value in&nbsp;Scala.</p>
<h2>Class&nbsp;constructors</h2>
<div class="highlight"><pre><span></span><span class="k">package</span> <span class="nn">javap</span>

<span class="k">class</span> <span class="nc">Test02</span><span class="o">(</span><span class="k">val</span> <span class="n">x</span><span class="k">:</span> <span class="kt">Int</span><span class="o">,</span> <span class="k">val</span> <span class="n">y</span><span class="k">:</span> <span class="kt">Int</span><span class="o">,</span> <span class="n">z</span><span class="k">:</span> <span class="kt">Int</span><span class="o">)</span> <span class="o">{</span>
<span class="k">def</span> <span class="k">this</span><span class="o">(</span><span class="n">x</span><span class="k">:</span> <span class="kt">Int</span><span class="o">,</span> <span class="n">y</span><span class="k">:</span> <span class="kt">Int</span><span class="o">)</span> <span class="k">=</span> <span class="k">this</span><span class="o">(</span><span class="n">x</span><span class="o">,</span> <span class="n">y</span><span class="o">,</span> <span class="mi">0</span><span class="o">)</span>
<span class="o">}</span>
</pre></div>


<div class="highlight"><pre><span></span><span class="kd">public</span> <span class="kd">class</span> <span class="nc">javap</span><span class="o">.</span><span class="na">Test02</span> <span class="o">{</span>
<span class="kd">private</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">x</span><span class="o">;</span>
<span class="kd">private</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">y</span><span class="o">;</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="nf">x</span><span class="o">();</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="nf">y</span><span class="o">();</span>
<span class="kd">public</span> <span class="n">javap</span><span class="o">.</span><span class="na">Test02</span><span class="o">(</span><span class="kt">int</span><span class="o">,</span> <span class="kt">int</span><span class="o">,</span> <span class="kt">int</span><span class="o">);</span>
<span class="kd">public</span> <span class="n">javap</span><span class="o">.</span><span class="na">Test02</span><span class="o">(</span><span class="kt">int</span><span class="o">,</span> <span class="kt">int</span><span class="o">);</span>
<span class="o">}</span>
</pre></div>


<p>Looks like the default constructor <code>(val x: Int, val y: Int, z: Int)</code> and the overloaded one <code>(x: Int, y: Int)</code> each generated a Java constructor. However only <code>x</code> and <code>y …</code></p>
<a class="btn btn-default btn-xs" href="http://www.lyh.me/decompiling-scala-code.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="http://www.lyh.me/implicits.html">Implicits</a></h2>
<div class="well well-sm">
Expand Down Expand Up @@ -394,33 +464,6 @@ <h2><a href="http://www.lyh.me/primitives.html">Primitives</a></h2>
</div>
</article>
<hr/>
<article>
<h2><a href="http://www.lyh.me/type-classes.html">Type&nbsp;Classes</a></h2>
<div class="well well-sm">
<footer class="post-info">
<span class="label label-default">Date</span>
<span class="published">
<i class="fa fa-calendar"></i><time datetime="2015-04-20T15:39:00-04:00"> Mon 20 April 2015</time>
</span>



<span class="label label-default">Category</span>
<a href="http://www.lyh.me/category/code.html">code</a>


<span class="label label-default">Tags</span>
<a href="http://www.lyh.me/tag/scala.html">scala</a>
/
<a href="http://www.lyh.me/tag/fp.html">fp</a>

</footer><!-- /.post-info --> </div>
<div class="summary"><p>I started giving more Scala talks internally at <a href="http://www.spotify.com/">Spotify</a>. The first one is on type classes and here are the <a href="/slides/type-classes.html">slides</a></p>
<iframe src="/slides/type-classes.html" width="800" height="450"></iframe>
<a class="btn btn-default btn-xs" href="http://www.lyh.me/type-classes.html">more ...</a>
</div>
</article>
<hr/>

<ul class="pagination">
<li class="prev disabled"><a href="#">&laquo;</a></li>
Expand Down Expand Up @@ -469,11 +512,11 @@ <h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Social</span></h4>
<li class="list-group-item">
<h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Recent Posts</span></h4>
<ul class="list-group" id="recentposts">
<li class="list-group-item"><a href="http://www.lyh.me/decompiling-scala-code.html">Decompiling Scala&nbsp;code</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/implicits.html">Implicits</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/scio-at-philly-ete.html">Scio at Philly <span class="caps">ETE</span></a></li>
<li class="list-group-item"><a href="http://www.lyh.me/joins.html">Joins</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/for-comprehensions.html">For&nbsp;comprehensions</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/scio-at-scala-by-the-bay.html">Scio at Scala by the&nbsp;Bay</a></li>
</ul>
</li>
<!-- End Sidebar/Recent Posts -->
Expand Down
73 changes: 28 additions & 45 deletions author/neville-li2.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,33 @@
<div class="container">
<div class="row">
<div class="col-sm-9">
<article>
<h2><a href="http://www.lyh.me/type-classes.html">Type&nbsp;Classes</a></h2>
<div class="well well-sm">
<footer class="post-info">
<span class="label label-default">Date</span>
<span class="published">
<i class="fa fa-calendar"></i><time datetime="2015-04-20T15:39:00-04:00"> Mon 20 April 2015</time>
</span>



<span class="label label-default">Category</span>
<a href="http://www.lyh.me/category/code.html">code</a>


<span class="label label-default">Tags</span>
<a href="http://www.lyh.me/tag/scala.html">scala</a>
/
<a href="http://www.lyh.me/tag/fp.html">fp</a>

</footer><!-- /.post-info --> </div>
<div class="summary"><p>I started giving more Scala talks internally at <a href="http://www.spotify.com/">Spotify</a>. The first one is on type classes and here are the <a href="/slides/type-classes.html">slides</a></p>
<iframe src="/slides/type-classes.html" width="800" height="450"></iframe>
<a class="btn btn-default btn-xs" href="http://www.lyh.me/type-classes.html">more ...</a>
</div>
</article>
<hr/>
<article>
<h2><a href="http://www.lyh.me/nescala-2015-talk.html">NEScala 2015&nbsp;talk</a></h2>
<div class="well well-sm">
Expand Down Expand Up @@ -400,50 +427,6 @@ <h2><a href="http://www.lyh.me/why-functional-why-scala.html">Why Functional? Wh
</div>
</article>
<hr/>
<article>
<h2><a href="http://www.lyh.me/light-table.html">Light&nbsp;Table</a></h2>
<div class="well well-sm">
<footer class="post-info">
<span class="label label-default">Date</span>
<span class="published">
<i class="fa fa-calendar"></i><time datetime="2014-07-28T00:01:00-04:00"> Mon 28 July 2014</time>
</span>



<span class="label label-default">Category</span>
<a href="http://www.lyh.me/category/code.html">code</a>


<span class="label label-default">Tags</span>
<a href="http://www.lyh.me/tag/clojure.html">clojure</a>
/
<a href="http://www.lyh.me/tag/intellij-idea.html">intellij-idea</a>
/
<a href="http://www.lyh.me/tag/light-table.html">light-table</a>

</footer><!-- /.post-info --> </div>
<div class="summary"><p>I recently picked up <a href="http://www.lighttable.com/">Light Table</a> for <a href="http://clojure.org/">Clojure</a> development and liked it. Form evaluation works out of the box and indentation is better than that in <a href="http://plugins.jetbrains.com/plugin/?id=4050">La Clojure</a> plugin for <a href="http://www.jetbrains.com/idea/">IntelliJ <span class="caps">IDEA</span></a>.</p>
<p>I particularly like the idea of command bar, which allows you to search for Light Table commands by name and execute them quickly. I was already used to <span class="caps">IDEA</span>&#8217;s key map though (<code>Mac OS X 10.5+</code> which is more natural to Mac users than the default <code>Mac OS X</code>), and wanted something similar. The setting files are in Clojure so it&#8217;s easy to customize. This is what I got so far for <code>user.keymap</code>:</p>
<div class="highlight"><pre><span></span><span class="p">{</span><span class="ss">:+</span> <span class="p">{</span><span class="ss">:app</span> <span class="p">{</span><span class="s">&quot;alt-space&quot;</span> <span class="p">[</span><span class="ss">:show-commandbar-transient</span><span class="p">]}</span>

<span class="ss">:editor</span> <span class="p">{</span><span class="s">&quot;alt-w&quot;</span> <span class="p">[</span><span class="ss">:editor.watch.watch-selection</span><span class="p">]</span>
<span class="s">&quot;alt-shift-w&quot;</span> <span class="p">[</span><span class="ss">:editor.watch.unwatch</span><span class="p">]</span>
<span class="s">&quot;ctrl-alt-i&quot;</span> <span class="p">[</span><span class="ss">:smart-indent-selection</span><span class="p">]</span>
<span class="s">&quot;ctrl-alt-c&quot;</span> <span class="p">[</span><span class="ss">:toggle-console</span><span class="p">]</span>
<span class="s">&quot;ctrl-shift-j&quot;</span> <span class="p">[</span><span class="ss">:editor.sublime.joinLines</span><span class="p">]</span>
<span class="s">&quot;pmeta-d&quot;</span> <span class="p">[</span><span class="ss">:editor.sublime.duplicateLine</span><span class="p">]</span>
<span class="s">&quot;pmeta-shift-up&quot;</span> <span class="p">[</span><span class="ss">:editor.sublime.swapLineUp</span><span class="p">]</span>
<span class="s">&quot;pmeta-shift-down&quot;</span> <span class="p">[</span><span class="ss">:editor.sublime.swapLineDown</span><span class="p">]</span>
<span class="s">&quot;pmeta-/&quot;</span> <span class="p">[</span><span class="ss">:toggle-comment-selection</span> <span class="ss">:editor.line-down</span><span class="p">]}}}</span>
</pre></div>


<p>Apart from these, I found myself using <code>"pmeta-enter" [:eval-editor-form]</code> and <code>"ctrl-d" [:editor.doc.toggle]</code> most when writing Clojure code. After all they are probably the most essential ones no matter what editor you use&nbsp;:)</p>
<a class="btn btn-default btn-xs" href="http://www.lyh.me/light-table.html">more ...</a>
</div>
</article>
<hr/>

<ul class="pagination">
<li class="prev"><a href="http://www.lyh.me/author/neville-li.html">&laquo;</a>
Expand Down Expand Up @@ -493,11 +476,11 @@ <h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Social</span></h4>
<li class="list-group-item">
<h4><i class="fa fa-home fa-lg"></i><span class="icon-label">Recent Posts</span></h4>
<ul class="list-group" id="recentposts">
<li class="list-group-item"><a href="http://www.lyh.me/decompiling-scala-code.html">Decompiling Scala&nbsp;code</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/implicits.html">Implicits</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/scio-at-philly-ete.html">Scio at Philly <span class="caps">ETE</span></a></li>
<li class="list-group-item"><a href="http://www.lyh.me/joins.html">Joins</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/for-comprehensions.html">For&nbsp;comprehensions</a></li>
<li class="list-group-item"><a href="http://www.lyh.me/scio-at-scala-by-the-bay.html">Scio at Scala by the&nbsp;Bay</a></li>
</ul>
</li>
<!-- End Sidebar/Recent Posts -->
Expand Down
Loading

0 comments on commit bdab5ae

Please sign in to comment.