<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://singularity-code.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://singularity-code.github.io/" rel="alternate" type="text/html" /><updated>2026-11-02T09:07:25+11:00</updated><id>https://singularity-code.github.io/feed.xml</id><title type="html">DB 0003</title><subtitle>javascript, java, python, android, unity, computing, windows disk 100%, disk 100%</subtitle><author><name>D</name></author><entry><title type="html">[Python] Credit Card Validation</title><link href="https://singularity-code.github.io/python/credit/card/validation/cs50-sentimental-credit/" rel="alternate" type="text/html" title="[Python] Credit Card Validation" /><published>2022-10-27T23:00:00+11:00</published><updated>2022-10-27T23:00:00+11:00</updated><id>https://singularity-code.github.io/python/credit/card/validation/cs50-sentimental-credit</id><content type="html" xml:base="https://singularity-code.github.io/python/credit/card/validation/cs50-sentimental-credit/"><![CDATA[<p>This is a credit card validation with Luhn’s Algorithm</p>

<ol>
  <li>Multiply every other digit by 2, starting with the number’s second-to-last digit, and then add those products’ digits together.</li>
  <li>Add the sum to the sum of the digits that weren’t multiplied by 2.</li>
  <li>If the total’s last digit is 0 (or, put more formally, if the total modulo 10 is congruent to 0), the number is valid.</li>
</ol>

<p>Ex)</p>

<p>Card Number: 4003600000000014</p>

<p>Multiply each of the underlined digits by 2:</p>

<p><code class="language-plaintext highlighter-rouge">1•2 + 0•2 + 0•2 + 0•2 + 0•2 + 6•2 + 0•2 + 4•2</code></p>

<p>That gives us:</p>

<p><code class="language-plaintext highlighter-rouge">2 + 0 + 0 + 0 + 0 + 12 + 0 + 8</code></p>

<p>Now let’s add those products’ digits (i.e., not the products themselves) together:</p>

<p><code class="language-plaintext highlighter-rouge">2 + 0 + 0 + 0 + 0 + 1 + 2 + 0 + 8 = 13</code></p>

<p>Add that sum (13) to the sum of the digits that weren’t multiplied by 2 (starting from the end):</p>

<p><code class="language-plaintext highlighter-rouge">13 + 4 + 0 + 0 + 0 + 0 + 0 + 3 + 0 = 20</code></p>

<p>The last digit in that sum (20) is a 0, then the card number is valid.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">cs50</span> <span class="kn">import</span> <span class="n">get_int</span>
<span class="kn">import</span> <span class="nn">re</span>

<span class="n">divider</span> <span class="o">=</span> <span class="mi">10000000000000</span>


<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
    <span class="n">card_number</span> <span class="o">=</span> <span class="n">get_int</span><span class="p">(</span><span class="s">"Enter credit card number: "</span><span class="p">)</span>
    <span class="n">size</span> <span class="o">=</span> <span class="n">validate_card_type</span><span class="p">(</span><span class="n">card_number</span><span class="p">)</span>
    <span class="n">is_valid</span> <span class="o">=</span> <span class="n">validate_card_numbers</span><span class="p">(</span><span class="n">card_number</span><span class="p">)</span>

    <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">is_valid</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"INVALID"</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">validate_card_type</span><span class="p">(</span><span class="n">card_number</span><span class="p">):</span>
    <span class="n">size</span> <span class="o">=</span> <span class="n">is_amex</span><span class="p">(</span><span class="n">card_number</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">return</span> <span class="n">size</span>

    <span class="n">size</span> <span class="o">=</span> <span class="n">is_master</span><span class="p">(</span><span class="n">card_number</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">return</span> <span class="n">size</span>

    <span class="n">size</span> <span class="o">=</span> <span class="n">is_visa</span><span class="p">(</span><span class="n">card_number</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">return</span> <span class="n">size</span>

    <span class="k">return</span> <span class="n">size</span>


<span class="k">def</span> <span class="nf">validate_card_numbers</span><span class="p">(</span><span class="n">card_number</span><span class="p">):</span>
    <span class="n">odds</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">card_number</span><span class="p">)[</span><span class="mi">0</span><span class="p">::</span><span class="mi">2</span><span class="p">]</span>
    <span class="n">evens</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">card_number</span><span class="p">)[</span><span class="mi">1</span><span class="p">::</span><span class="mi">2</span><span class="p">]</span>

    <span class="n">result</span> <span class="o">=</span> <span class="mi">0</span>
    <span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="n">odds</span><span class="p">:</span>
        <span class="n">multiplied</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="o">*</span> <span class="mi">2</span>
        <span class="k">if</span> <span class="p">(</span><span class="n">multiplied</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">):</span>
            <span class="n">result</span> <span class="o">+=</span> <span class="n">multiplied</span>
        <span class="k">else</span><span class="p">:</span>
            <span class="n">str_num</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">multiplied</span><span class="p">)</span>
            <span class="n">result</span> <span class="o">+=</span> <span class="nb">int</span><span class="p">(</span><span class="n">str_num</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
            <span class="n">result</span> <span class="o">+=</span> <span class="nb">int</span><span class="p">(</span><span class="n">str_num</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>

    <span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="n">evens</span><span class="p">:</span>
        <span class="n">result</span> <span class="o">+=</span> <span class="nb">int</span><span class="p">(</span><span class="n">num</span><span class="p">)</span>

    <span class="k">return</span> <span class="n">result</span> <span class="o">%</span> <span class="mi">10</span>


<span class="k">def</span> <span class="nf">is_amex</span><span class="p">(</span><span class="n">card_number</span><span class="p">):</span>
    <span class="n">number</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">card_number</span> <span class="o">/</span> <span class="n">divider</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">number</span> <span class="o">+</span> <span class="mi">66</span> <span class="o">==</span> <span class="mi">100</span> <span class="ow">or</span> <span class="n">number</span> <span class="o">+</span> <span class="mi">63</span> <span class="o">==</span> <span class="mi">100</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"AMEX"</span><span class="p">)</span>
        <span class="k">return</span> <span class="mi">15</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">0</span>


<span class="k">def</span> <span class="nf">is_master</span><span class="p">(</span><span class="n">card_number</span><span class="p">):</span>
    <span class="c1"># Master 16 digit and start 51,52,53,54, 55
</span>    <span class="n">r</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="n">search</span><span class="p">(</span><span class="s">"^[5][1-5]"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">card_number</span><span class="p">))</span>

    <span class="k">if</span> <span class="n">r</span><span class="p">:</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"MASTERCARD"</span><span class="p">)</span>
        <span class="k">return</span> <span class="mi">16</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">0</span>


<span class="k">def</span> <span class="nf">is_visa</span><span class="p">(</span><span class="n">card_number</span><span class="p">):</span>
    <span class="c1"># Visa 13 16 digit and start with 4
</span>    <span class="n">r</span> <span class="o">=</span> <span class="n">re</span><span class="p">.</span><span class="n">match</span><span class="p">(</span><span class="s">"^[4]"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">card_number</span><span class="p">))</span>
    <span class="n">l</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">card_number</span><span class="p">))</span>

    <span class="k">if</span> <span class="n">r</span> <span class="ow">and</span> <span class="p">(</span><span class="n">l</span> <span class="o">==</span> <span class="mi">16</span> <span class="ow">or</span> <span class="n">l</span> <span class="o">==</span> <span class="mi">13</span><span class="p">):</span>
        <span class="k">print</span><span class="p">(</span><span class="s">"VISA"</span><span class="p">)</span>
        <span class="k">return</span> <span class="mi">16</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">0</span>


<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
    <span class="n">main</span><span class="p">()</span>
    
</code></pre></div></div>]]></content><author><name>D</name></author><category term="python" /><category term="credit" /><category term="card" /><category term="validation" /><summary type="html"><![CDATA[This is a credit card validation with Luhn’s Algorithm]]></summary></entry><entry><title type="html">[Python] Readability</title><link href="https://singularity-code.github.io/python/readability/cs50/cs50-sentimental-readability/" rel="alternate" type="text/html" title="[Python] Readability" /><published>2022-10-27T23:00:00+11:00</published><updated>2022-10-27T23:00:00+11:00</updated><id>https://singularity-code.github.io/python/readability/cs50/cs50-sentimental-readability</id><content type="html" xml:base="https://singularity-code.github.io/python/readability/cs50/cs50-sentimental-readability/"><![CDATA[<p>Python version of Readability</p>

<p>The Coleman-Liau index of a text is designed to output that (U.S.) grade level that is needed to understand some text</p>

<p>Formula
<code class="language-plaintext highlighter-rouge">index = 0.0588 * L - 0.296 * S - 15.8</code></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">cs50</span> <span class="kn">import</span> <span class="n">get_string</span>
<span class="kn">import</span> <span class="nn">re</span>


<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
    <span class="n">text</span> <span class="o">=</span> <span class="n">get_string</span><span class="p">(</span><span class="s">"Text: "</span><span class="p">)</span>

    <span class="n">cnt_l</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">re</span><span class="p">.</span><span class="n">findall</span><span class="p">(</span><span class="s">"[a-zA-Z]"</span><span class="p">,</span> <span class="n">text</span><span class="p">))</span>
    <span class="n">cnt_w</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">.</span><span class="n">split</span><span class="p">())</span>
    <span class="n">cnt_s</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">re</span><span class="p">.</span><span class="n">split</span><span class="p">(</span><span class="s">'[.]|[?]|[!]'</span><span class="p">,</span> <span class="n">text</span><span class="p">))</span>
    <span class="n">cnt_s</span> <span class="o">-=</span> <span class="mi">1</span>

    <span class="c1"># get avg of letters per 100 words
</span>    <span class="n">L</span> <span class="o">=</span> <span class="nb">round</span><span class="p">((</span><span class="n">cnt_l</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> <span class="o">/</span> <span class="n">cnt_w</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
    <span class="c1"># get avg of sentences per 100 words
</span>    <span class="n">S</span> <span class="o">=</span> <span class="nb">round</span><span class="p">((</span><span class="n">cnt_s</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span> <span class="o">/</span> <span class="n">cnt_w</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
    <span class="n">index</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="mf">0.0588</span> <span class="o">*</span> <span class="n">L</span> <span class="o">-</span> <span class="mf">0.296</span> <span class="o">*</span> <span class="n">S</span> <span class="o">-</span> <span class="mf">15.8</span><span class="p">)</span>
    <span class="n">print_grade</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">print_grade</span><span class="p">(</span><span class="n">index</span><span class="p">):</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">):</span>
        <span class="k">return</span> <span class="k">print</span><span class="p">(</span><span class="s">"Before Grade 1"</span><span class="p">)</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">&gt;=</span> <span class="mi">16</span><span class="p">):</span>
        <span class="k">return</span> <span class="k">print</span><span class="p">(</span><span class="s">"Grade 16+"</span><span class="p">)</span>
    <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"Grade </span><span class="si">{</span><span class="n">index</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>


<span class="n">main</span><span class="p">()</span>

</code></pre></div></div>]]></content><author><name>D</name></author><category term="python" /><category term="readability" /><category term="cs50" /><summary type="html"><![CDATA[Python version of Readability]]></summary></entry><entry><title type="html">[JS] Promise Basics</title><link href="https://singularity-code.github.io/js/promise/es6/js-promise-basic/" rel="alternate" type="text/html" title="[JS] Promise Basics" /><published>2021-12-16T01:00:00+11:00</published><updated>2021-12-16T01:00:00+11:00</updated><id>https://singularity-code.github.io/js/promise/es6/js-promise-basic</id><content type="html" xml:base="https://singularity-code.github.io/js/promise/es6/js-promise-basic/"><![CDATA[<h3 id="1-resolve-case">1. Resolve case</h3>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">//resolve</span>
<span class="kd">var</span> <span class="nx">promise</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Promise</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">resolve</span><span class="p">,</span> <span class="nx">reject</span><span class="p">)</span> <span class="p">{</span>
  <span class="nx">setTimeout</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="nx">resolve</span><span class="p">(</span><span class="dl">'</span><span class="s1">done!</span><span class="dl">'</span><span class="p">),</span> <span class="mi">1000</span><span class="p">);</span>
<span class="p">});</span>

<span class="nx">promise</span><span class="p">.</span><span class="nx">then</span><span class="p">(</span>
  <span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 1</span><span class="dl">'</span><span class="p">,</span> <span class="nx">result</span><span class="p">),</span>
  <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 1</span><span class="dl">'</span><span class="p">,</span><span class="nx">error</span><span class="p">.</span><span class="nx">message</span><span class="p">)</span>
<span class="p">);</span>
</code></pre></div></div>

<h3 id="2-reject-case">2. Reject case</h3>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">//reject</span>
<span class="kd">var</span> <span class="nx">promise</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Promise</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">resolve</span><span class="p">,</span> <span class="nx">reject</span><span class="p">)</span> <span class="p">{</span>
  <span class="nx">setTimeout</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="nx">reject</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">failed!</span><span class="dl">'</span><span class="p">)),</span> <span class="mi">2000</span><span class="p">);</span>
<span class="p">});</span>

<span class="nx">promise</span><span class="p">.</span><span class="nx">then</span><span class="p">(</span>
  <span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 2</span><span class="dl">'</span><span class="p">,</span><span class="nx">result</span><span class="p">),</span>
  <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 2</span><span class="dl">'</span><span class="p">,</span><span class="nx">error</span><span class="p">.</span><span class="nx">message</span><span class="p">)</span>
<span class="p">);</span>
</code></pre></div></div>

<h3 id="3-handling-only-error-with-passing-null-in-resolve">3. Handling only error with passing null in resolve</h3>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// handle only error</span>
<span class="kd">var</span> <span class="nx">promise</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Promise</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">resolve</span><span class="p">,</span> <span class="nx">reject</span><span class="p">)</span> <span class="p">{</span>
  <span class="nx">setTimeout</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="nx">reject</span><span class="p">(</span><span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">handle failed!</span><span class="dl">'</span><span class="p">)),</span> <span class="mi">2000</span><span class="p">);</span>
<span class="p">});</span>

<span class="nx">promise</span><span class="p">.</span><span class="nx">then</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 3</span><span class="dl">'</span><span class="p">,</span><span class="nx">e</span><span class="p">.</span><span class="nx">message</span><span class="p">));</span>

<span class="c1">// or you can use catch</span>
<span class="nx">promise</span><span class="p">.</span><span class="k">catch</span><span class="p">((</span><span class="nx">e</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 3</span><span class="dl">'</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">message</span><span class="p">));</span>
</code></pre></div></div>

<h3 id="4-finally---execute-always-without-result-of-resolve-or-reject">4. Finally - Execute always without result of resolve or reject</h3>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">//finally (good for cleanup)</span>
<span class="k">new</span> <span class="nb">Promise</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">resolve</span><span class="p">,</span> <span class="nx">reject</span><span class="p">)</span> <span class="p">{</span>
  <span class="nx">setTimeout</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="nx">resolve</span><span class="p">(</span><span class="dl">'</span><span class="s1">Resolved</span><span class="dl">'</span><span class="p">),</span> <span class="mi">1000</span><span class="p">);</span>
<span class="p">})</span>
  <span class="p">.</span><span class="k">finally</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 4 Finally! I always run!</span><span class="dl">'</span><span class="p">))</span>
  <span class="p">.</span><span class="nx">then</span><span class="p">(</span>
    <span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 4</span><span class="dl">'</span><span class="p">,</span> <span class="nx">result</span><span class="p">),</span>
    <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">CASE 4</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">.</span><span class="nx">message</span><span class="p">)</span>
  <span class="p">);</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="js" /><category term="promise" /><category term="es6" /><summary type="html"><![CDATA[1. Resolve case]]></summary></entry><entry><title type="html">[Node.js] Koa Server initialization with formatter</title><link href="https://singularity-code.github.io/js/node.js/koa/server/template/node-koa-basic-formatter/" rel="alternate" type="text/html" title="[Node.js] Koa Server initialization with formatter" /><published>2021-12-10T23:00:00+11:00</published><updated>2021-12-10T23:00:00+11:00</updated><id>https://singularity-code.github.io/js/node.js/koa/server/template/node-koa-basic-formatter</id><content type="html" xml:base="https://singularity-code.github.io/js/node.js/koa/server/template/node-koa-basic-formatter/"><![CDATA[<h2 id="step-1-setup-packages-required">Step 1. Setup packages required</h2>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># generate package.json</span>
yarn init <span class="nt">-y</span>

<span class="c"># add koa</span>
yarn add koa

<span class="c"># add eslint</span>
yarn add <span class="nt">--dev</span> eslint

yarn run esline <span class="nt">--init</span> <span class="c"># Answer the questions</span>
</code></pre></div></div>

<h2 id="step-2-create-prettier-connfig-file">Step 2. Create Prettier connfig file.</h2>

<p>Change this settings upto your flavour.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// create .prettierrc file on the root of source folder</span>
<span class="p">{</span>
    <span class="dl">"</span><span class="s2">singleQuote</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">trailingComma</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">all</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">semi</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">useTabs</span><span class="dl">"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">tabWidth</span><span class="dl">"</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">printWidth</span><span class="dl">"</span><span class="p">:</span> <span class="mi">80</span>
<span class="p">}</span>
</code></pre></div></div>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Set ESLint does not control prettier styled</span>
<span class="nv">$ </span>yarn add eslint-config-prettier
</code></pre></div></div>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// create .eslintrc.json on the root of source folder</span>
<span class="p">{</span>
  <span class="dl">"</span><span class="s2">env</span><span class="dl">"</span><span class="p">:</span> <span class="p">{</span>
    <span class="dl">"</span><span class="s2">commonjs</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">node</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">es6</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span>
  <span class="p">},</span>
  <span class="dl">"</span><span class="s2">extends</span><span class="dl">"</span><span class="p">:</span> <span class="p">[</span><span class="dl">"</span><span class="s2">eslint:recommended</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">prettier</span><span class="dl">"</span><span class="p">],</span>
  <span class="dl">"</span><span class="s2">globals</span><span class="dl">"</span><span class="p">:</span> <span class="p">{</span>
    <span class="dl">"</span><span class="s2">Atomics</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">readonly</span><span class="dl">"</span><span class="p">,</span>
    <span class="dl">"</span><span class="s2">SharedArrayBuffer</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">readonly</span><span class="dl">"</span>
  <span class="p">},</span>
  <span class="dl">"</span><span class="s2">parserOptions</span><span class="dl">"</span><span class="p">:</span> <span class="p">{</span>
    <span class="dl">"</span><span class="s2">ecmaVersion</span><span class="dl">"</span><span class="p">:</span> <span class="mi">2018</span>
  <span class="p">},</span>
  <span class="dl">"</span><span class="s2">rules</span><span class="dl">"</span><span class="p">:</span> <span class="p">{</span>
    <span class="dl">"</span><span class="s2">no-unused-vars</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">warn</span><span class="dl">"</span><span class="p">,</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div>

<h2 id="step-3-setup-koa-server">Step 3. Setup Koa server</h2>

<p>Inital template of koa server running on port 4000. 
Two middle ware included as an example.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">Koa</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="dl">'</span><span class="s1">koa</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Koa</span><span class="p">();</span>

<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="k">async</span> <span class="p">(</span><span class="nx">ctx</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">ctx</span><span class="p">.</span><span class="nx">body</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">Hello World</span><span class="dl">'</span><span class="p">;</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
  <span class="k">await</span> <span class="nx">next</span><span class="p">();</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">END</span><span class="dl">'</span><span class="p">)</span>
<span class="p">});</span>

<span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">((</span><span class="nx">ctx</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
  <span class="nx">next</span><span class="p">();</span>
<span class="p">});</span>

<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="mi">4000</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">server is running at http://localhost:4000</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>
</code></pre></div></div>

<h2 id="step-4-run-the-server">Step 4. Run the server</h2>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>node src

<span class="c"># Check on the browser - http://localhost:4000</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="js" /><category term="node.js" /><category term="koa" /><category term="server" /><category term="template" /><summary type="html"><![CDATA[Step 1. Setup packages required]]></summary></entry><entry><title type="html">[Java] Custom HTTP RequestURL XSS Filter</title><link href="https://singularity-code.github.io/java/http/request/xss/filter/prevent/cross/scripting/attack/java-XSSfilter/" rel="alternate" type="text/html" title="[Java] Custom HTTP RequestURL XSS Filter" /><published>2021-12-10T06:00:00+11:00</published><updated>2021-12-10T06:00:00+11:00</updated><id>https://singularity-code.github.io/java/http/request/xss/filter/prevent/cross/scripting/attack/java-XSSfilter</id><content type="html" xml:base="https://singularity-code.github.io/java/http/request/xss/filter/prevent/cross/scripting/attack/java-XSSfilter/"><![CDATA[<p>Sample to show how to check requestURL and prevent Croos-Site-Script Attack
Using common XSS Filter to convert URL to clean string.</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">package</span> <span class="nn">com.handler.filter</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="o">;</span>

<span class="kn">import</span> <span class="nn">javax.servlet.Filter</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.servlet.FilterChain</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.servlet.FilterConfig</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.servlet.ServletException</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.servlet.ServletRequest</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.servlet.ServletResponse</span><span class="o">;</span>
<span class="kn">import</span> <span class="nn">javax.servlet.http.HttpServletRequest</span><span class="o">;</span>

<span class="kd">public</span> <span class="kd">class</span> <span class="nc">XSSFilter</span> <span class="kd">implements</span> <span class="nc">Filter</span> <span class="o">{</span>
	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">init</span><span class="o">(</span><span class="nc">FilterConfig</span> <span class="n">filterConfig</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">ServletException</span> <span class="o">{</span>
	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">destroy</span><span class="o">()</span> <span class="o">{</span>
	<span class="o">}</span>

	<span class="nd">@Override</span>
	<span class="kd">public</span> <span class="kt">void</span> <span class="nf">doFilter</span><span class="o">(</span><span class="nc">ServletRequest</span> <span class="n">request</span><span class="o">,</span> <span class="nc">ServletResponse</span> <span class="n">response</span><span class="o">,</span> <span class="nc">FilterChain</span> <span class="n">chain</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">IOException</span><span class="o">,</span> <span class="nc">ServletException</span> <span class="o">{</span>
		<span class="nc">String</span> <span class="n">requestURI</span> <span class="o">=</span> <span class="o">((</span><span class="nc">HttpServletRequest</span><span class="o">)</span> <span class="n">request</span><span class="o">).</span><span class="na">getRequestURI</span><span class="o">();</span>
		<span class="nc">String</span> <span class="n">newURI</span> <span class="o">=</span> <span class="n">cleanXSS</span><span class="o">(</span><span class="n">requestURI</span><span class="o">);</span>
		<span class="n">request</span><span class="o">.</span><span class="na">getRequestDispatcher</span><span class="o">(</span><span class="n">newURI</span><span class="o">).</span><span class="na">forward</span><span class="o">(</span><span class="n">request</span><span class="o">,</span> <span class="n">response</span><span class="o">);</span>
		<span class="n">chain</span><span class="o">.</span><span class="na">doFilter</span><span class="o">(</span><span class="n">request</span><span class="o">,</span> <span class="n">response</span><span class="o">);</span>
	<span class="o">}</span>

	<span class="kd">private</span> <span class="nc">String</span> <span class="nf">cleanXSS</span><span class="o">(</span><span class="nc">String</span> <span class="n">value</span><span class="o">)</span> <span class="o">{</span>
		<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"&lt;"</span><span class="o">,</span> <span class="s">"&amp; lt;"</span><span class="o">).</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"&gt;"</span><span class="o">,</span> <span class="s">"&amp; gt;"</span><span class="o">);</span>
		<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"\\("</span><span class="o">,</span> <span class="s">"&amp; #40;"</span><span class="o">).</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"\\)"</span><span class="o">,</span> <span class="s">"&amp; #41;"</span><span class="o">);</span>
		<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"'"</span><span class="o">,</span> <span class="s">"&amp; #39;"</span><span class="o">);</span>
		<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"eval\\((.*)\\)"</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span>
		<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']"</span><span class="o">,</span> <span class="s">"\"\""</span><span class="o">);</span>
		<span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="na">replaceAll</span><span class="o">(</span><span class="s">"script"</span><span class="o">,</span> <span class="s">""</span><span class="o">);</span>
		<span class="k">return</span> <span class="n">value</span><span class="o">;</span>
	<span class="o">}</span>

<span class="o">}</span>
</code></pre></div></div>

<p>Then set filter in the <code class="language-plaintext highlighter-rouge">web.xml</code></p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;filter&gt;</span>
    <span class="nt">&lt;filter-name&gt;</span>XSSFilter<span class="nt">&lt;/filter-name&gt;</span>
    <span class="nt">&lt;filter-class&gt;</span>com.handler.filter.XSSFilter<span class="nt">&lt;/filter-class&gt;</span>
<span class="nt">&lt;/filter&gt;</span>
<span class="nt">&lt;filter-mapping&gt;</span>
    <span class="nt">&lt;filter-name&gt;</span>XSSFilter<span class="nt">&lt;/filter-name&gt;</span>
    <span class="nt">&lt;url-pattern&gt;</span>/*<span class="nt">&lt;/url-pattern&gt;</span>
<span class="nt">&lt;/filter-mapping&gt;</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="java" /><category term="http" /><category term="request" /><category term="XSS" /><category term="filter" /><category term="prevent" /><category term="cross" /><category term="scripting" /><category term="attack" /><summary type="html"><![CDATA[Sample to show how to check requestURL and prevent Croos-Site-Script Attack Using common XSS Filter to convert URL to clean string.]]></summary></entry><entry><title type="html">[JS] Slice Strings</title><link href="https://singularity-code.github.io/js/string/slice/js-string-slice/" rel="alternate" type="text/html" title="[JS] Slice Strings" /><published>2021-12-08T06:00:00+11:00</published><updated>2021-12-08T06:00:00+11:00</updated><id>https://singularity-code.github.io/js/string/slice/js-string-slice</id><content type="html" xml:base="https://singularity-code.github.io/js/string/slice/js-string-slice/"><![CDATA[<p>Example codes of <code class="language-plaintext highlighter-rouge">String.slice()</code></p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">let</span> <span class="nx">str</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">stringify</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// 'strin', from 0 to 5</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// 's', from 0 to 1</span>

<span class="nx">str</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">stringify</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// ringify, from 2 to end</span>

<span class="nx">str</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">stringify</span><span class="dl">'</span><span class="p">;</span>

<span class="c1">// from last 4 to last 1</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// gif</span>
<span class="nx">str</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">stringify</span><span class="dl">'</span><span class="p">;</span>
</code></pre></div></div>

<p>Please aware that <code class="language-plaintext highlighter-rouge">String.substring()</code> and <code class="language-plaintext highlighter-rouge">String.slice</code> result is not same</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// same value will be returned</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// "ring"</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// "ring"</span>

<span class="c1">// slice result is not same as substring</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// "ring"</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="p">);</span> <span class="c1">// ""</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="js" /><category term="string" /><category term="slice" /><summary type="html"><![CDATA[Example codes of String.slice()]]></summary></entry><entry><title type="html">[JS] Cut string into limited length</title><link href="https://singularity-code.github.io/js/string/cut/limit/js-string-cut-limit/" rel="alternate" type="text/html" title="[JS] Cut string into limited length" /><published>2021-12-06T23:00:00+11:00</published><updated>2021-12-06T23:00:00+11:00</updated><id>https://singularity-code.github.io/js/string/cut/limit/js-string-cut-limit</id><content type="html" xml:base="https://singularity-code.github.io/js/string/cut/limit/js-string-cut-limit/"><![CDATA[<p>Sample function to cut string into desired limit value.</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">limitTitle</span> <span class="o">=</span> <span class="p">(</span><span class="nx">title</span><span class="p">,</span> <span class="nx">limit</span> <span class="o">=</span> <span class="mi">17</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="kd">const</span> <span class="nx">newTitle</span> <span class="o">=</span> <span class="p">[];</span>
  <span class="k">if</span><span class="p">(</span><span class="nx">title</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">limit</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">title</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nx">reduce</span><span class="p">((</span><span class="nx">acc</span><span class="p">,</span> <span class="nx">cur</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
      <span class="k">if</span> <span class="p">(</span><span class="nx">acc</span> <span class="o">+</span> <span class="nx">cur</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;=</span> <span class="nx">limit</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">newTitle</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">cur</span><span class="p">);</span>
      <span class="p">}</span>
      <span class="k">return</span> <span class="nx">acc</span> <span class="o">+</span> <span class="nx">cur</span><span class="p">.</span><span class="nx">length</span>
    <span class="p">},</span> <span class="mi">0</span><span class="p">);</span>
    <span class="k">return</span> <span class="s2">`</span><span class="p">${</span><span class="nx">newTitle</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">)}</span><span class="s2"> ...`</span><span class="p">;</span>
  <span class="p">}</span>
  <span class="k">return</span> <span class="nx">title</span><span class="p">;</span>
<span class="p">}</span>

<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">limitTitle</span><span class="p">(</span><span class="dl">"</span><span class="s2">This is an example title</span><span class="dl">"</span><span class="p">));</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="js" /><category term="string" /><category term="cut" /><category term="limit" /><summary type="html"><![CDATA[Sample function to cut string into desired limit value.]]></summary></entry><entry><title type="html">[JS] Formatting console output</title><link href="https://singularity-code.github.io/web/js/console/css/web-browser-console-CSS/" rel="alternate" type="text/html" title="[JS] Formatting console output" /><published>2021-12-03T23:00:00+11:00</published><updated>2021-12-03T23:00:00+11:00</updated><id>https://singularity-code.github.io/web/js/console/css/web-browser-console-CSS</id><content type="html" xml:base="https://singularity-code.github.io/web/js/console/css/web-browser-console-CSS/"><![CDATA[<p>You can pass arguments to the console.log like a C printf();</p>

<p>With <code class="language-plaintext highlighter-rouge">%c</code> and second parameter, you can inject CSS style to the text.</p>

<hr />

<p><code class="language-plaintext highlighter-rouge">%s</code>	Formats the value as a string</p>

<p><code class="language-plaintext highlighter-rouge">%i</code> or <code class="language-plaintext highlighter-rouge">%d</code>	Formats the value as an integer</p>

<p><code class="language-plaintext highlighter-rouge">%f</code>	Formats the value as a floating point value</p>

<p><code class="language-plaintext highlighter-rouge">%o</code>	Formats the value as an expandable DOM element</p>

<p><code class="language-plaintext highlighter-rouge">%O</code>	Formats the value as an expandable JavaScript object</p>

<p><code class="language-plaintext highlighter-rouge">%c</code>	Applies CSS style rules to the output string as specified by the second parameter</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">%s is %i</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Pie</span><span class="dl">"</span><span class="p">,</span> <span class="mf">3.1415926535</span><span class="p">);</span>
<span class="c1">// Pie is 3</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">%s is %f</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">Pie</span><span class="dl">"</span><span class="p">,</span> <span class="mf">3.1415926535</span><span class="p">);</span>
<span class="c1">// Pie is 3.1415926535</span>

<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">%c CSS text</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">color: blue; font-size: 13px</span><span class="dl">"</span><span class="p">);</span>
<span class="c1">// Check out in the browser console</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="web" /><category term="js" /><category term="console" /><category term="CSS" /><summary type="html"><![CDATA[You can pass arguments to the console.log like a C printf();]]></summary></entry><entry><title type="html">[React] Routing</title><link href="https://singularity-code.github.io/react/routing/dom/react-router-dom/" rel="alternate" type="text/html" title="[React] Routing" /><published>2021-12-02T08:00:00+11:00</published><updated>2021-12-02T08:00:00+11:00</updated><id>https://singularity-code.github.io/react/routing/dom/react-router-dom</id><content type="html" xml:base="https://singularity-code.github.io/react/routing/dom/react-router-dom/"><![CDATA[<p>Example of React DOM Router usage.</p>

<p>Here assume that you already have <code class="language-plaintext highlighter-rouge">Menu</code> and <code class="language-plaintext highlighter-rouge">Page</code> Component to render.</p>

<p>Configure index.js to wrap <code class="language-plaintext highlighter-rouge">&lt;App/&gt;</code> in the <code class="language-plaintext highlighter-rouge">&lt;BrowserRouter/&gt;</code></p>

<p>index.js</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="nx">React</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">react</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="nx">ReactDOM</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">react-dom</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="nx">App</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">./App</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">BrowserRouter</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">react-router-dom</span><span class="dl">"</span><span class="p">;</span>

<span class="nx">ReactDOM</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span>
  <span class="o">&lt;</span><span class="nx">React</span><span class="p">.</span><span class="nx">StrictMode</span><span class="o">&gt;</span>
    <span class="o">&lt;</span><span class="nx">BrowserRouter</span><span class="o">&gt;</span>
      <span class="o">&lt;</span><span class="nx">App</span> <span class="o">/&gt;</span>
    <span class="o">&lt;</span><span class="sr">/BrowserRouter</span><span class="err">&gt;
</span>  <span class="o">&lt;</span><span class="sr">/React.StrictMode&gt;</span><span class="err">,
</span>  <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">root</span><span class="dl">"</span><span class="p">)</span>
<span class="p">);</span>
</code></pre></div></div>

<p>Then place each path <code class="language-plaintext highlighter-rouge">&lt;Route/&gt;</code> in the <code class="language-plaintext highlighter-rouge">&lt;Routes/&gt;</code> and declare the <code class="language-plaintext highlighter-rouge">path</code> and the <code class="language-plaintext highlighter-rouge">element</code>.</p>

<p>App.js</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="p">{</span> <span class="nx">Routes</span><span class="p">,</span> <span class="nx">Route</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">react-router-dom</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="nx">Menu</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">./components/Menu</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="nx">Page1</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">./pages/Page1</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="nx">Page2</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">./pages/Page2</span><span class="dl">"</span><span class="p">;</span>

<span class="kd">function</span> <span class="nx">App</span><span class="p">()</span> <span class="p">{</span>
  <span class="k">return</span> <span class="p">(</span>
    <span class="o">&lt;</span><span class="nx">div</span><span class="o">&gt;</span>
      <span class="o">&lt;</span><span class="nx">Menu</span> <span class="o">/&gt;</span>
      <span class="o">&lt;</span><span class="nx">hr</span> <span class="o">/&gt;</span>
      <span class="o">&lt;</span><span class="nx">Routes</span><span class="o">&gt;</span>
        <span class="o">&lt;</span><span class="nx">Route</span> <span class="nx">path</span><span class="o">=</span><span class="dl">"</span><span class="s2">/page1</span><span class="dl">"</span> <span class="nx">element</span><span class="o">=</span><span class="p">{</span><span class="o">&lt;</span><span class="nx">Page1</span><span class="o">/&gt;</span><span class="p">}</span> <span class="sr">/</span><span class="err">&gt;
</span>        <span class="o">&lt;</span><span class="nx">Route</span> <span class="nx">path</span><span class="o">=</span><span class="dl">"</span><span class="s2">/page2</span><span class="dl">"</span> <span class="nx">element</span><span class="o">=</span><span class="p">{</span><span class="o">&lt;</span><span class="nx">Page2</span><span class="o">/&gt;</span><span class="p">}</span> <span class="sr">/</span><span class="err">&gt;
</span>      <span class="o">&lt;</span><span class="sr">/Routes</span><span class="err">&gt;
</span>    <span class="o">&lt;</span><span class="sr">/div</span><span class="err">&gt;
</span>  <span class="p">);</span>
<span class="p">}</span>

<span class="k">export</span> <span class="k">default</span> <span class="nx">App</span><span class="p">;</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="react" /><category term="routing" /><category term="dom" /><summary type="html"><![CDATA[Example of React DOM Router usage.]]></summary></entry><entry><title type="html">[Python] Pandas export as a csv file</title><link href="https://singularity-code.github.io/python/pandas/export/csv/pandas-export-csv/" rel="alternate" type="text/html" title="[Python] Pandas export as a csv file" /><published>2021-11-30T02:00:00+11:00</published><updated>2021-11-30T02:00:00+11:00</updated><id>https://singularity-code.github.io/python/pandas/export/csv/pandas-export-csv</id><content type="html" xml:base="https://singularity-code.github.io/python/pandas/export/csv/pandas-export-csv/"><![CDATA[<p>Sample code that how to export data as a csv using pandas library.
this function will create <code class="language-plaintext highlighter-rouge">filename</code> string with date as a actual filename.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
<span class="kn">import</span> <span class="nn">pandas</span>

<span class="k">def</span> <span class="nf">export_csv</span><span class="p">(</span><span class="n">_data</span><span class="p">,</span> <span class="n">_headers</span><span class="p">,</span> <span class="n">_filename</span><span class="p">):</span>
	<span class="n">date</span> <span class="o">=</span> <span class="n">datetime</span><span class="p">.</span><span class="n">today</span><span class="p">().</span><span class="n">date</span><span class="p">()</span>
	<span class="n">df</span> <span class="o">=</span> <span class="n">pandas</span><span class="p">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">_data</span><span class="p">)</span>
	<span class="n">path</span> <span class="o">=</span> <span class="s">'C:</span><span class="se">\\</span><span class="s">download</span><span class="se">\\</span><span class="s">csv</span><span class="se">\\</span><span class="s">'</span> <span class="o">+</span> <span class="n">_filename</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">date</span><span class="p">)</span> <span class="o">+</span> <span class="s">'.csv'</span>
	<span class="n">df</span><span class="p">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="n">_headers</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">'utf-8-sig'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Usage
</span><span class="n">headers</span> <span class="o">=</span> <span class="p">[</span><span class="s">'A'</span><span class="p">,</span> <span class="s">'B'</span><span class="p">,</span> <span class="s">'C'</span><span class="p">];</span>
<span class="n">data</span> <span class="o">=</span> <span class="p">[];</span>
<span class="n">export_csv</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">headers</span><span class="p">,</span> <span class="s">'sample'</span><span class="p">);</span>
</code></pre></div></div>]]></content><author><name>D</name></author><category term="python" /><category term="pandas" /><category term="export" /><category term="csv" /><summary type="html"><![CDATA[Sample code that how to export data as a csv using pandas library. this function will create filename string with date as a actual filename.]]></summary></entry></feed>