feat: re-gen all

main
sudo pacman -Syu 2023-11-19 22:59:21 +07:00
parent 64c0ddfe80
commit b12f163266
36 changed files with 2234 additions and 1288 deletions

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-backup-my-way"> <h1>
<a class="heading-link" href="#backup-my-way" <a
>Backup my way<span id="user-content-backup-my-way"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#backup-my-way"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Backup my way
</h1> </h1>
<p> <p>
First thing first, I want to list my own devices, which I have through the First thing first, I want to list my own devices, which I have through the
@ -149,13 +151,15 @@
<strong>How to backup</strong>, the second is <strong>How to backup</strong>, the second is
<strong>Recovery strategy</strong>. <strong>Recovery strategy</strong>.
</p> </p>
<h2 id="user-content-how-to-backup"> <h2>
<a class="heading-link" href="#how-to-backup" <a
>How to backup<span id="user-content-how-to-backup"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#how-to-backup"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>How to backup
</h2> </h2>
<p> <p>
Before I talk about backup, I want to talk about data. In specifically, Before I talk about backup, I want to talk about data. In specifically,
@ -256,13 +260,15 @@ restic -r rclone:remote:PrivateData restore latest --target <span class="pl-k">~
<li>Store locally in my laptop</li> <li>Store locally in my laptop</li>
<li>Don't store locally in phone (can not keep track easily)</li> <li>Don't store locally in phone (can not keep track easily)</li>
</ul> </ul>
<h3 id="user-content-backup-work-related-data"> <h3>
<a class="heading-link" href="#backup-work-related-data" <a
>Backup work related data<span id="user-content-backup-work-related-data"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#backup-work-related-data"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Backup work related data
</h3> </h3>
<p>APIs tools:</p> <p>APIs tools:</p>
<ul> <ul>
@ -277,13 +283,15 @@ restic -r rclone:remote:PrivateData restore latest --target <span class="pl-k">~
Stay away from Postman, it's lag and you can accidentally upload private Stay away from Postman, it's lag and you can accidentally upload private
data publicly. data publicly.
</p> </p>
<h2 id="user-content-recovery-strategy"> <h2>
<a class="heading-link" href="#recovery-strategy" <a
>Recovery strategy<span id="user-content-recovery-strategy"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#recovery-strategy"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Recovery strategy
</h2> </h2>
<p> <p>
There are many strategies that I process to react as if something strange There are many strategies that I process to react as if something strange
@ -306,10 +314,15 @@ restic -r rclone:remote:PrivateData restore latest --target <span class="pl-k">~
master password and OTP from Gmail, which I log in previously. master password and OTP from Gmail, which I log in previously.
</li> </li>
</ul> </ul>
<h2 id="user-content-misc"> <h2>
<a class="heading-link" href="#misc" <a
>Misc<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-misc"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#misc"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Misc
</h2> </h2>
<p> <p>
To backup everything is hard, so keep it simple and only backup important To backup everything is hard, so keep it simple and only backup important
@ -319,10 +332,15 @@ restic -r rclone:remote:PrivateData restore latest --target <span class="pl-k">~
<li>TODOis, Evernote, ... -&gt; Google Keep / Notion</li> <li>TODOis, Evernote, ... -&gt; Google Keep / Notion</li>
<li>Dropbox, OneDrive, ... -&gt; Google Drive</li> <li>Dropbox, OneDrive, ... -&gt; Google Drive</li>
</ul> </ul>
<h2 id="user-content-the-end"> <h2>
<a class="heading-link" href="#the-end" <a
>The end<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-the-end"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#the-end"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>The end
</h2> </h2>
<p>This guide will be updated regularly I promise.</p> <p>This guide will be updated regularly I promise.</p>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-dockerfile-for-go"> <h1>
<a class="heading-link" href="#dockerfile-for-go" <a
>Dockerfile for Go<span id="user-content-dockerfile-for-go"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#dockerfile-for-go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Dockerfile for Go
</h1> </h1>
<p> <p>
Each time I start a new Go project, I repeat many steps. Like set up Each time I start a new Go project, I repeat many steps. Like set up
@ -163,10 +165,15 @@
<span class="pl-k">ENTRYPOINT</span> [<span class="pl-s">"/app"</span>]</pre> <span class="pl-k">ENTRYPOINT</span> [<span class="pl-s">"/app"</span>]</pre>
</div> </div>
<p>Finally, I copy <code>app</code> to Distroless base image.</p> <p>Finally, I copy <code>app</code> to Distroless base image.</p>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-bootstrap-go"> <h1>
<a class="heading-link" href="#bootstrap-go" <a
>Bootstrap Go<span id="user-content-bootstrap-go"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#bootstrap-go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Bootstrap Go
</h1> </h1>
<p> <p>
It is hard to write bootstrap tool to quickly create Go service. So I It is hard to write bootstrap tool to quickly create Go service. So I
@ -42,10 +44,15 @@
I need to write a Go service from scratch. Also, this is my personal I need to write a Go service from scratch. Also, this is my personal
opinion, so feel free to comment. opinion, so feel free to comment.
</p> </p>
<h2 id="user-content-structure"> <h2>
<a class="heading-link" href="#structure" <a
>Structure<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-structure"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#structure"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Structure
</h2> </h2>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
<pre> <pre>
@ -128,13 +135,15 @@ internal
<code>business</code>. <code>business</code>.
</li> </li>
</ul> </ul>
<h2 id="user-content-do-not-repeat"> <h2>
<a class="heading-link" href="#do-not-repeat" <a
>Do not repeat!<span id="user-content-do-not-repeat"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#do-not-repeat"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Do not repeat!
</h2> </h2>
<p>If we have too many services, some of the logic will be overlapped.</p> <p>If we have too many services, some of the logic will be overlapped.</p>
<p> <p>
@ -148,21 +157,25 @@ internal
Another bad practice is adapter service. No need to write a new service if Another bad practice is adapter service. No need to write a new service if
what we need is just common pkg libs. what we need is just common pkg libs.
</p> </p>
<h2 id="user-content-taste-on-style-guide"> <h2>
<a class="heading-link" href="#taste-on-style-guide" <a
>Taste on style guide<span id="user-content-taste-on-style-guide"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#taste-on-style-guide"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Taste on style guide
</h2> </h2>
<h3 id="user-content-stop-using-global-var"> <h3>
<a class="heading-link" href="#stop-using-global-var" <a
>Stop using global var<span id="user-content-stop-using-global-var"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#stop-using-global-var"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Stop using global var
</h3> </h3>
<p> <p>
If I see someone using global var, I swear I will shoot them twice in the If I see someone using global var, I swear I will shoot them twice in the
@ -173,13 +186,15 @@ internal
<li>Can not write unit test.</li> <li>Can not write unit test.</li>
<li>Is not thread safe.</li> <li>Is not thread safe.</li>
</ul> </ul>
<h3 id="user-content-use-functional-options-but-dont-overuse-it"> <h3>
<a class="heading-link" href="#use-functional-options-but-dont-overuse-it" <a
>Use functional options, but don't overuse it!<span id="user-content-use-functional-options-but-dont-overuse-it"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#use-functional-options-but-dont-overuse-it"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use functional options, but don't overuse it!
</h3> </h3>
<p> <p>
For simple struct with 1 or 2 fields, no need to use functional options. For simple struct with 1 or 2 fields, no need to use functional options.
@ -225,15 +240,19 @@ internal
<code>WithB</code> option. No need to pass direct field inside <code>WithB</code> option. No need to pass direct field inside
<code>s</code>. <code>s</code>.
</p> </p>
<h3 id="user-content-use-errgroup-as-much-as-possible"> <h3>
<a class="heading-link" href="#use-errgroup-as-much-as-possible">Use </a <a
><a href="https://pkg.go.dev/golang.org/x/sync/errgroup" rel="nofollow" id="user-content-use-errgroup-as-much-as-possible"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-errgroup-as-much-as-possible"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use
<a href="https://pkg.go.dev/golang.org/x/sync/errgroup" rel="nofollow"
>errgroup</a >errgroup</a
> >
as much as possible<span as much as possible
aria-hidden="true"
class="octicon octicon-link"
></span>
</h3> </h3>
<p> <p>
If business logic involves calling too many APIs, but they are not depend If business logic involves calling too many APIs, but they are not depend
@ -266,33 +285,35 @@ internal
<span class="pl-c">// Handle error</span> <span class="pl-c">// Handle error</span>
}</pre> }</pre>
</div> </div>
<h3 id="user-content-use-semaphore-when-need-to-implement-workerpool"> <h3>
<a <a
class="heading-link" id="user-content-use-semaphore-when-need-to-implement-workerpool"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-semaphore-when-need-to-implement-workerpool" href="#use-semaphore-when-need-to-implement-workerpool"
>Use </a ><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://pkg.go.dev/golang.org/x/sync/semaphore" rel="nofollow" >Use
<a href="https://pkg.go.dev/golang.org/x/sync/semaphore" rel="nofollow"
>semaphore</a >semaphore</a
> >
when need to implement WorkerPool<span when need to implement WorkerPool
aria-hidden="true"
class="octicon octicon-link"
></span>
</h3> </h3>
<p> <p>
Please don't use external libs for WorkerPool, I don't want to deal with Please don't use external libs for WorkerPool, I don't want to deal with
dependency hell. dependency hell.
</p> </p>
<h3 <h3>
id="user-content-use-syncpool-when-need-to-reuse-object-mainly-for-bytesbuffer"
>
<a <a
class="heading-link" id="user-content-use-syncpool-when-need-to-reuse-object-mainly-for-bytesbuffer"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-syncpool-when-need-to-reuse-object-mainly-for-bytesbuffer" href="#use-syncpool-when-need-to-reuse-object-mainly-for-bytesbuffer"
>Use </a ><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://pkg.go.dev/sync#Pool" rel="nofollow">sync.Pool</a> when >Use
<a href="https://pkg.go.dev/sync#Pool" rel="nofollow">sync.Pool</a> when
need to reuse object, mainly for <code>bytes.Buffer</code> need to reuse object, mainly for <code>bytes.Buffer</code>
<span aria-hidden="true" class="octicon octicon-link"></span>
</h3> </h3>
<p>Example:</p> <p>Example:</p>
<div class="highlight highlight-source-go"> <div class="highlight highlight-source-go">
@ -322,15 +343,17 @@ internal
<span class="pl-k">return</span> <span class="pl-s1">result</span>, <span class="pl-c1">nil</span> <span class="pl-k">return</span> <span class="pl-s1">result</span>, <span class="pl-c1">nil</span>
}</pre> }</pre>
</div> </div>
<h3 id="user-content-generics-with-some-tricks"> <h3>
<a class="heading-link" href="#generics-with-some-tricks"> </a <a
><a href="https://go.dev/doc/tutorial/generics" rel="nofollow" id="user-content-generics-with-some-tricks"
>Generics</a class="anchor"
>
with some tricks<span
aria-hidden="true" aria-hidden="true"
class="octicon octicon-link" tabindex="-1"
></span> href="#generics-with-some-tricks"
><span aria-hidden="true" class="octicon octicon-link"></span
></a>
<a href="https://go.dev/doc/tutorial/generics" rel="nofollow">Generics</a>
with some tricks
</h3> </h3>
<p> <p>
Take value then return pointer, useful with database struct full of Take value then return pointer, useful with database struct full of
@ -349,33 +372,39 @@ internal
<span class="pl-k">return</span> <span class="pl-s1">zero</span> <span class="pl-k">return</span> <span class="pl-s1">zero</span>
}</pre> }</pre>
</div> </div>
<h2 id="user-content-external-libs"> <h2>
<a class="heading-link" href="#external-libs" <a
>External libs<span id="user-content-external-libs"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#external-libs"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>External libs
</h2> </h2>
<h3 id="user-content-no-need-vendor"> <h3>
<a class="heading-link" href="#no-need-vendor" <a
>No need <code>vendor</code> id="user-content-no-need-vendor"
<span aria-hidden="true" class="octicon octicon-link"></span class="anchor"
></a> aria-hidden="true"
tabindex="-1"
href="#no-need-vendor"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>No need <code>vendor</code>
</h3> </h3>
<p> <p>
Only need if you need something from <code>vendor</code>, to generate mock Only need if you need something from <code>vendor</code>, to generate mock
or something else. or something else.
</p> </p>
<h3 id="user-content-use-buildgo-to-include-build-tools-in-gomod"> <h3>
<a <a
class="heading-link" id="user-content-use-buildgo-to-include-build-tools-in-gomod"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-buildgo-to-include-build-tools-in-gomod" href="#use-buildgo-to-include-build-tools-in-gomod"
>Use <code>build.go</code> to include build tools in go.mod<span ><span aria-hidden="true" class="octicon octicon-link"></span></a
aria-hidden="true" >Use <code>build.go</code> to include build tools in go.mod
class="octicon octicon-link"
></span
></a>
</h3> </h3>
<p>To easily control version of build tools.</p> <p>To easily control version of build tools.</p>
<p>For example <code>build.go</code>:</p> <p>For example <code>build.go</code>:</p>
@ -398,16 +427,18 @@ internal
We always get the version of build tools in <code>go.mod</code> each time We always get the version of build tools in <code>go.mod</code> each time
we install it. Future contributors will not cry anymore. we install it. Future contributors will not cry anymore.
</p> </p>
<h3 <h3>
id="user-content-dont-use-cli-libs-spf13cobra-urfavecli-just-for-go-service"
>
<a <a
class="heading-link" id="user-content-dont-use-cli-libs-spf13cobra-urfavecli-just-for-go-service"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#dont-use-cli-libs-spf13cobra-urfavecli-just-for-go-service" href="#dont-use-cli-libs-spf13cobra-urfavecli-just-for-go-service"
>Don't use cli libs (</a ><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/spf13/cobra">spf13/cobra</a>, >Don't use cli libs (<a href="https://github.com/spf13/cobra"
<a href="https://github.com/urfave/cli">urfave/cli</a>) just for Go >spf13/cobra</a
service<span aria-hidden="true" class="octicon octicon-link"></span> >, <a href="https://github.com/urfave/cli">urfave/cli</a>) just for Go
service
</h3> </h3>
<p> <p>
What is the point to pass many params (<code>do-it</code>, What is the point to pass many params (<code>do-it</code>,
@ -420,13 +451,18 @@ internal
<a href="https://12factor.net/" rel="nofollow">The Twelve Factors</a> <a href="https://12factor.net/" rel="nofollow">The Twelve Factors</a>
guide. guide.
</p> </p>
<h3 id="user-content-dont-use-grpc-ecosystemgrpc-gateway"> <h3>
<a class="heading-link" href="#dont-use-grpc-ecosystemgrpc-gateway" <a
>Don't use </a id="user-content-dont-use-grpc-ecosystemgrpc-gateway"
><a href="https://github.com/grpc-ecosystem/grpc-gateway" class="anchor"
aria-hidden="true"
tabindex="-1"
href="#dont-use-grpc-ecosystemgrpc-gateway"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Don't use
<a href="https://github.com/grpc-ecosystem/grpc-gateway"
>grpc-ecosystem/grpc-gateway</a >grpc-ecosystem/grpc-gateway</a
> >
<span aria-hidden="true" class="octicon octicon-link"></span>
</h3> </h3>
<p>Just don't.</p> <p>Just don't.</p>
<p> <p>
@ -439,21 +475,31 @@ internal
Write 1 for both gRPC, REST sounds good, but in the end, it is not worth Write 1 for both gRPC, REST sounds good, but in the end, it is not worth
it. it.
</p> </p>
<h3 id="user-content-dont-use-uberprototool-use-bufbuildbuf"> <h3>
<a class="heading-link" href="#dont-use-uberprototool-use-bufbuildbuf" <a
>Don't use </a id="user-content-dont-use-uberprototool-use-bufbuildbuf"
><a href="https://github.com/uber/prototool">uber/prototool</a>, use class="anchor"
<a href="https://github.com/bufbuild/buf">bufbuild/buf</a> aria-hidden="true"
<span aria-hidden="true" class="octicon octicon-link"></span> tabindex="-1"
href="#dont-use-uberprototool-use-bufbuildbuf"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Don't use <a href="https://github.com/uber/prototool">uber/prototool</a>,
use <a href="https://github.com/bufbuild/buf">bufbuild/buf</a>
</h3> </h3>
<p> <p>
prototool is deprecated, and buf can generate, lint, format as good as prototool is deprecated, and buf can generate, lint, format as good as
prototool. prototool.
</p> </p>
<h3 id="user-content-use-gin-gonicgin-for-rest"> <h3>
<a class="heading-link" href="#use-gin-gonicgin-for-rest">Use </a <a
><a href="https://github.com/gin-gonic/gin">gin-gonic/gin</a> for id="user-content-use-gin-gonicgin-for-rest"
REST.<span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-gin-gonicgin-for-rest"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use <a href="https://github.com/gin-gonic/gin">gin-gonic/gin</a> for
REST.
</h3> </h3>
<p>With <code>c *gin.Context</code>:</p> <p>With <code>c *gin.Context</code>:</p>
<ul> <ul>
@ -474,11 +520,16 @@ internal
} }
}()</pre> }()</pre>
</div> </div>
<h3 id="user-content-if-you-want-log-just-use-uber-gozap"> <h3>
<a class="heading-link" href="#if-you-want-log-just-use-uber-gozap" <a
>If you want log, just use </a id="user-content-if-you-want-log-just-use-uber-gozap"
><a href="https://github.com/uber-go/zap">uber-go/zap</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#if-you-want-log-just-use-uber-gozap"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>If you want log, just use
<a href="https://github.com/uber-go/zap">uber-go/zap</a>
</h3> </h3>
<p>It is fast!</p> <p>It is fast!</p>
<ul> <ul>
@ -501,11 +552,16 @@ internal
for easily debug. for easily debug.
</li> </li>
</ul> </ul>
<h3 id="user-content-to-read-config-use-spf13viper"> <h3>
<a class="heading-link" href="#to-read-config-use-spf13viper" <a
>To read config, use </a id="user-content-to-read-config-use-spf13viper"
><a href="https://github.com/spf13/viper">spf13/viper</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#to-read-config-use-spf13viper"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>To read config, use
<a href="https://github.com/spf13/viper">spf13/viper</a>
</h3> </h3>
<p> <p>
Only init config in main or cmd layer. Do not use Only init config in main or cmd layer. Do not use
@ -520,17 +576,15 @@ internal
Also, be careful if config value is empty. You should decide to continue Also, be careful if config value is empty. You should decide to continue
or stop the service if there is empty config. or stop the service if there is empty config.
</p> </p>
<h3 <h3>
id="user-content-dont-overuse-orm-libs-no-need-to-handle-another-layer-above-sql"
>
<a <a
class="heading-link" id="user-content-dont-overuse-orm-libs-no-need-to-handle-another-layer-above-sql"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#dont-overuse-orm-libs-no-need-to-handle-another-layer-above-sql" href="#dont-overuse-orm-libs-no-need-to-handle-another-layer-above-sql"
>Don't overuse ORM libs, no need to handle another layer above SQL.<span ><span aria-hidden="true" class="octicon octicon-link"></span></a
aria-hidden="true" >Don't overuse ORM libs, no need to handle another layer above SQL.
class="octicon octicon-link"
></span
></a>
</h3> </h3>
<p> <p>
Each ORM libs has each different syntax. To learn and use those libs Each ORM libs has each different syntax. To learn and use those libs
@ -552,11 +606,16 @@ internal
those cases. I hear that those cases. I hear that
<a href="https://github.com/go-gorm/gorm">go-gorm/gorm</a> is good. <a href="https://github.com/go-gorm/gorm">go-gorm/gorm</a> is good.
</p> </p>
<h3 id="user-content-connect-redis-with-redisgo-redis"> <h3>
<a class="heading-link" href="#connect-redis-with-redisgo-redis" <a
>Connect Redis with </a id="user-content-connect-redis-with-redisgo-redis"
><a href="https://github.com/redis/go-redis">redis/go-redis</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#connect-redis-with-redisgo-redis"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Connect Redis with
<a href="https://github.com/redis/go-redis">redis/go-redis</a>
</h3> </h3>
<p> <p>
Be careful when use Be careful when use
@ -618,11 +677,16 @@ internal
<ul> <ul>
<li><code>ReadTimeout</code>, <code>WriteTimeout</code></li> <li><code>ReadTimeout</code>, <code>WriteTimeout</code></li>
</ul> </ul>
<h3 id="user-content-connect-mysql-with-go-sql-drivermysql"> <h3>
<a class="heading-link" href="#connect-mysql-with-go-sql-drivermysql" <a
>Connect MySQL with </a id="user-content-connect-mysql-with-go-sql-drivermysql"
><a href="https://github.com/go-sql-driver/mysql">go-sql-driver/mysql</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#connect-mysql-with-go-sql-drivermysql"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Connect MySQL with
<a href="https://github.com/go-sql-driver/mysql">go-sql-driver/mysql</a>
</h3> </h3>
<p>Remember to config:</p> <p>Remember to config:</p>
<ul> <ul>
@ -634,13 +698,18 @@ internal
<li><code>CheckConnLiveness</code> to true.</li> <li><code>CheckConnLiveness</code> to true.</li>
<li><code>ReadTimeout</code>, <code>WriteTimeout</code></li> <li><code>ReadTimeout</code>, <code>WriteTimeout</code></li>
</ul> </ul>
<h3 id="user-content-connect-sqlite-with-moderncorgsqlite"> <h3>
<a class="heading-link" href="#connect-sqlite-with-moderncorgsqlite" <a
>Connect SQLite with </a id="user-content-connect-sqlite-with-moderncorgsqlite"
><a href="https://gitlab.com/cznic/sqlite" rel="nofollow" class="anchor"
aria-hidden="true"
tabindex="-1"
href="#connect-sqlite-with-moderncorgsqlite"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Connect SQLite with
<a href="https://gitlab.com/cznic/sqlite" rel="nofollow"
>modernc.org/sqlite</a >modernc.org/sqlite</a
> >
<span aria-hidden="true" class="octicon octicon-link"></span>
</h3> </h3>
<p>Remember to config:</p> <p>Remember to config:</p>
<ul> <ul>
@ -654,11 +723,15 @@ internal
<a href="https://github.com/mattn/go-sqlite3">mattn/go-sqlite3</a>, it's <a href="https://github.com/mattn/go-sqlite3">mattn/go-sqlite3</a>, it's
required <code>CGO_ENABLED</code>. required <code>CGO_ENABLED</code>.
</p> </p>
<h3 id="user-content-connect-kafka-with-ibmsarama"> <h3>
<a class="heading-link" href="#connect-kafka-with-ibmsarama" <a
>Connect Kafka with </a id="user-content-connect-kafka-with-ibmsarama"
><a href="https://github.com/IBM/sarama">IBM/sarama</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#connect-kafka-with-ibmsarama"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Connect Kafka with <a href="https://github.com/IBM/sarama">IBM/sarama</a>
</h3> </h3>
<p> <p>
Use <code>sarama.V1_0_0_0</code>, because IBM decide to upgrade default Use <code>sarama.V1_0_0_0</code>, because IBM decide to upgrade default
@ -670,26 +743,32 @@ internal
>confluentinc/confluent-kafka-go</a >confluentinc/confluent-kafka-go</a
>, it's required <code>CGO_ENABLED</code>. >, it's required <code>CGO_ENABLED</code>.
</p> </p>
<h3 id="user-content-if-you-want-test-just-use-stretchrtestify"> <h3>
<a class="heading-link" href="#if-you-want-test-just-use-stretchrtestify" <a
>If you want test, just use </a id="user-content-if-you-want-test-just-use-stretchrtestify"
><a href="https://github.com/stretchr/testify">stretchr/testify</a>.<span class="anchor"
aria-hidden="true" aria-hidden="true"
class="octicon octicon-link" tabindex="-1"
></span> href="#if-you-want-test-just-use-stretchrtestify"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>If you want test, just use
<a href="https://github.com/stretchr/testify">stretchr/testify</a>.
</h3> </h3>
<p> <p>
It is easy to write a suite test, thanks to testify. Also, for mocking, It is easy to write a suite test, thanks to testify. Also, for mocking,
there are many options out there. Pick 1 then sleep peacefully. there are many options out there. Pick 1 then sleep peacefully.
</p> </p>
<h3 id="user-content-if-need-to-mock-choose-matryermoq-or-ubermock"> <h3>
<a <a
class="heading-link" id="user-content-if-need-to-mock-choose-matryermoq-or-ubermock"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#if-need-to-mock-choose-matryermoq-or-ubermock" href="#if-need-to-mock-choose-matryermoq-or-ubermock"
>If need to mock, choose </a ><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/matryer/moq">matryer/moq</a> or >If need to mock, choose
<a href="https://github.com/matryer/moq">matryer/moq</a> or
<a href="https://github.com/uber/mock">uber/mock</a> <a href="https://github.com/uber/mock">uber/mock</a>
<span aria-hidden="true" class="octicon octicon-link"></span>
</h3> </h3>
<p> <p>
The first is easy to use but not powerful as the later. If you want to The first is easy to use but not powerful as the later. If you want to
@ -701,11 +780,15 @@ internal
<span class="pl-c">// https://jonwillia.ms/2019/12/22/conditional-gomock-mockgen</span> <span class="pl-c">// https://jonwillia.ms/2019/12/22/conditional-gomock-mockgen</span>
<span class="pl-c">//go:generate sh -c "test service_mock_generated.go -nt $GOFILE &amp;&amp; exit 0; moq -rm -out service_mock_generated.go . Service"</span></pre> <span class="pl-c">//go:generate sh -c "test service_mock_generated.go -nt $GOFILE &amp;&amp; exit 0; moq -rm -out service_mock_generated.go . Service"</span></pre>
</div> </div>
<h3 id="user-content-be-careful-with-spf13cast"> <h3>
<a class="heading-link" href="#be-careful-with-spf13cast" <a
>Be careful with </a id="user-content-be-careful-with-spf13cast"
><a href="https://github.com/spf13/cast">spf13/cast</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#be-careful-with-spf13cast"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Be careful with <a href="https://github.com/spf13/cast">spf13/cast</a>
</h3> </h3>
<p>Don't cast proto enum:</p> <p>Don't cast proto enum:</p>
<div class="highlight highlight-source-go"> <div class="highlight highlight-source-go">
@ -715,22 +798,21 @@ internal
<span class="pl-c">// Good</span> <span class="pl-c">// Good</span>
<span class="pl-s1">a</span> <span class="pl-c1">:=</span> <span class="pl-en">int32</span>(<span class="pl-s1">servicev1</span>.<span class="pl-c1">ReasonCode_ABC</span>)</pre> <span class="pl-s1">a</span> <span class="pl-c1">:=</span> <span class="pl-en">int32</span>(<span class="pl-s1">servicev1</span>.<span class="pl-c1">ReasonCode_ABC</span>)</pre>
</div> </div>
<h3 <h3>
id="user-content-use-stringer-if-you-want-your-type-enum-can-be-print-as-string"
>
<a <a
class="heading-link" id="user-content-use-stringer-if-you-want-your-type-enum-can-be-print-as-string"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-stringer-if-you-want-your-type-enum-can-be-print-as-string" href="#use-stringer-if-you-want-your-type-enum-can-be-print-as-string"
>Use </a ><span aria-hidden="true" class="octicon octicon-link"></span></a
><a >Use
<a
href="https://pkg.go.dev/golang.org/x/tools/cmd/stringer" href="https://pkg.go.dev/golang.org/x/tools/cmd/stringer"
rel="nofollow" rel="nofollow"
>stringer</a >stringer</a
> >
if you want your type enum can be print as string<span if you want your type enum can be print as string
aria-hidden="true"
class="octicon octicon-link"
></span>
</h3> </h3>
<div class="highlight highlight-source-go"> <div class="highlight highlight-source-go">
<pre><span class="pl-k">type</span> <span class="pl-smi">Drink</span> <span class="pl-smi">int</span> <pre><span class="pl-k">type</span> <span class="pl-smi">Drink</span> <span class="pl-smi">int</span>
@ -747,40 +829,51 @@ internal
<span class="pl-c"><span class="pl-c">#</span> Run inside directory which contains Drink</span> <span class="pl-c"><span class="pl-c">#</span> Run inside directory which contains Drink</span>
stringer -type=Drink</pre> stringer -type=Drink</pre>
</div> </div>
<h3 <h3>
id="user-content-dont-waste-your-time-rewrite-rate-limiter-if-your-use-case-is-simple-use-rate-or-go-redisredis_rate"
>
<a <a
class="heading-link" id="user-content-dont-waste-your-time-rewrite-rate-limiter-if-your-use-case-is-simple-use-rate-or-go-redisredis_rate"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#dont-waste-your-time-rewrite-rate-limiter-if-your-use-case-is-simple-use-rate-or-go-redisredis_rate" href="#dont-waste-your-time-rewrite-rate-limiter-if-your-use-case-is-simple-use-rate-or-go-redisredis_rate"
>Don't waste your time rewrite rate limiter if your use case is simple, ><span aria-hidden="true" class="octicon octicon-link"></span></a
use </a >Don't waste your time rewrite rate limiter if your use case is simple,
><a href="https://pkg.go.dev/golang.org/x/time/rate" rel="nofollow" use
<a href="https://pkg.go.dev/golang.org/x/time/rate" rel="nofollow"
>rate</a >rate</a
> >
or or
<a href="https://github.com/go-redis/redis_rate">go-redis/redis_rate</a> <a href="https://github.com/go-redis/redis_rate">go-redis/redis_rate</a>
<span aria-hidden="true" class="octicon octicon-link"></span>
</h3> </h3>
<p> <p>
<strong>rate</strong> if you want rate limiter locally in your single <strong>rate</strong> if you want rate limiter locally in your single
instance of service. <strong>redis_rate</strong> if you want rate limiter instance of service. <strong>redis_rate</strong> if you want rate limiter
distributed across all your instances of service. distributed across all your instances of service.
</p> </p>
<h3 id="user-content-replace-go-fmt-goimports-with-mvdangofumpt"> <h3>
<a class="heading-link" href="#replace-go-fmt-goimports-with-mvdangofumpt" <a
>Replace <code>go fmt</code>, <code>goimports</code> with </a id="user-content-replace-go-fmt-goimports-with-mvdangofumpt"
><a href="https://github.com/mvdan/gofumpt">mvdan/gofumpt</a>.<span class="anchor"
aria-hidden="true" aria-hidden="true"
class="octicon octicon-link" tabindex="-1"
></span> href="#replace-go-fmt-goimports-with-mvdangofumpt"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Replace <code>go fmt</code>, <code>goimports</code> with
<a href="https://github.com/mvdan/gofumpt">mvdan/gofumpt</a>.
</h3> </h3>
<p><code>gofumpt</code> provides more rules when format Go codes.</p> <p><code>gofumpt</code> provides more rules when format Go codes.</p>
<h3 id="user-content-use-golangcigolangci-lint"> <h3>
<a class="heading-link" href="#use-golangcigolangci-lint">Use </a <a
><a href="https://github.com/golangci/golangci-lint" id="user-content-use-golangcigolangci-lint"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-golangcigolangci-lint"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use
<a href="https://github.com/golangci/golangci-lint"
>golangci/golangci-lint</a >golangci/golangci-lint</a
>.<span aria-hidden="true" class="octicon octicon-link"></span> >.
</h3> </h3>
<p>No need to say more. Lint or get the f out!</p> <p>No need to say more. Lint or get the f out!</p>
<p> <p>
@ -799,13 +892,15 @@ go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignme
<span class="pl-c"><span class="pl-c">#</span> Fix</span> <span class="pl-c"><span class="pl-c">#</span> Fix</span>
fieldalignment -fix ./internal/business/<span class="pl-k">*</span>.go</pre> fieldalignment -fix ./internal/business/<span class="pl-k">*</span>.go</pre>
</div> </div>
<h2 id="user-content-snippetscript"> <h2>
<a class="heading-link" href="#snippetscript" <a
>Snippet/script<span id="user-content-snippetscript"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#snippetscript"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Snippet/script
</h2> </h2>
<p>Change import:</p> <p>Change import:</p>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
@ -815,10 +910,15 @@ fieldalignment -fix ./internal/business/<span class="pl-k">*</span>.go</pre>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>go clean -cache -testcache -modcache -fuzzcache -x</pre> <pre>go clean -cache -testcache -modcache -fuzzcache -x</pre>
</div> </div>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-uuid-or-else"> <h1>
<a class="heading-link" href="#uuid-or-else" <a
>UUID or else<span id="user-content-uuid-or-else"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#uuid-or-else"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>UUID or else
</h1> </h1>
<p> <p>
There are many use cases where we need to use a unique ID. In my There are many use cases where we need to use a unique ID. In my
@ -54,15 +56,15 @@
<li><a href="https://github.com/segmentio/ksuid">segmentio/ksuid</a></li> <li><a href="https://github.com/segmentio/ksuid">segmentio/ksuid</a></li>
<li><a href="https://github.com/oklog/ulid">oklog/ulid</a></li> <li><a href="https://github.com/oklog/ulid">oklog/ulid</a></li>
</ul> </ul>
<h2 id="user-content-first-use-case-is-trace-id-or-context-aware-id"> <h2>
<a <a
class="heading-link" id="user-content-first-use-case-is-trace-id-or-context-aware-id"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#first-use-case-is-trace-id-or-context-aware-id" href="#first-use-case-is-trace-id-or-context-aware-id"
>First use case is trace ID, or context aware ID<span ><span aria-hidden="true" class="octicon octicon-link"></span></a
aria-hidden="true" >First use case is trace ID, or context aware ID
class="octicon octicon-link"
></span
></a>
</h2> </h2>
<p> <p>
The ID is used only for trace and log. If same ID is generated twice The ID is used only for trace and log. If same ID is generated twice
@ -74,15 +76,15 @@
My choice for this use case is <strong>rs/xid</strong>. Because it is My choice for this use case is <strong>rs/xid</strong>. Because it is
small (not span too much on log line) and copy friendly. small (not span too much on log line) and copy friendly.
</p> </p>
<h2 id="user-content-second-use-case-is-primary-key-also-hard-choice"> <h2>
<a <a
class="heading-link" id="user-content-second-use-case-is-primary-key-also-hard-choice"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#second-use-case-is-primary-key-also-hard-choice" href="#second-use-case-is-primary-key-also-hard-choice"
>Second use case is primary key, also hard choice<span ><span aria-hidden="true" class="octicon octicon-link"></span></a
aria-hidden="true" >Second use case is primary key, also hard choice
class="octicon octicon-link"
></span
></a>
</h2> </h2>
<p> <p>
Why I don't use auto increment key for primary key? The answer is simple, Why I don't use auto increment key for primary key? The answer is simple,
@ -99,19 +101,29 @@
database is sensitive subject, and I need more testing and battle test database is sensitive subject, and I need more testing and battle test
proof to trust those libs. proof to trust those libs.
</p> </p>
<h2 id="user-content-what-else"> <h2>
<a class="heading-link" href="#what-else" <a
>What else?<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-what-else"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#what-else"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>What else?
</h2> </h2>
<p> <p>
I think about adding prefix to ID to identify which resource that ID I think about adding prefix to ID to identify which resource that ID
represents. represents.
</p> </p>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,11 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-migrate-to-buf-from-prototool"> <h1>
<a class="heading-link" href="#migrate-to-buf-from-prototool" <a
>Migrate to <code>buf</code> from <code>prototool</code> id="user-content-migrate-to-buf-from-prototool"
<span aria-hidden="true" class="octicon octicon-link"></span class="anchor"
></a> aria-hidden="true"
tabindex="-1"
href="#migrate-to-buf-from-prototool"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Migrate to <code>buf</code> from <code>prototool</code>
</h1> </h1>
<p> <p>
Why? Because <code>prototool</code> is outdated, and can not run on M1 Why? Because <code>prototool</code> is outdated, and can not run on M1
@ -142,10 +146,15 @@
sed -i "" -e "s/import \"marshal-zap\.proto\";//g" ./raw/api.proto sed -i "" -e "s/import \"marshal-zap\.proto\";//g" ./raw/api.proto
sed -i "" -e "s/\[(marshal_zap\.mask) = true]//g" ./raw/api.proto</pre> sed -i "" -e "s/\[(marshal_zap\.mask) = true]//g" ./raw/api.proto</pre>
</div> </div>
<h2 id="user-content-faq"> <h2>
<a class="heading-link" href="#faq" <a
>FAQ<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-faq"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#faq"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>FAQ
</h2> </h2>
<p> <p>
Remember <code>bufbuild/protoc-gen-validate</code>, Remember <code>bufbuild/protoc-gen-validate</code>,
@ -195,10 +204,15 @@
compatibility. compatibility.
</li> </li>
</ul> </ul>
<h1 id="user-content-tips"> <h1>
<a class="heading-link" href="#tips" <a
>Tips<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-tips"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#tips"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Tips
</h1> </h1>
<p>Some experience I got after writing proto files for a living:</p> <p>Some experience I got after writing proto files for a living:</p>
<ul> <ul>
@ -211,10 +225,15 @@
<code>sed</code> to fix the damn things. <code>sed</code> to fix the damn things.
</li> </li>
</ul> </ul>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li><a href="https://github.com/uber/prototool">uber/prototool</a></li> <li><a href="https://github.com/uber/prototool">uber/prototool</a></li>

View File

@ -28,29 +28,29 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-experiment-go"> <h1>
<a class="heading-link" href="#experiment-go" <a
>Experiment Go<span id="user-content-experiment-go"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#experiment-go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Experiment Go
</h1> </h1>
<p> <p>
There come a time when you need to experiment new things, new style, new There come a time when you need to experiment new things, new style, new
approach. So this post serves as it is named. approach. So this post serves as it is named.
</p> </p>
<h2 <h2>
id="user-content-design-api-by-trimming-down-the-interfacestruct-or-whatever"
>
<a <a
class="heading-link" id="user-content-design-api-by-trimming-down-the-interfacestruct-or-whatever"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#design-api-by-trimming-down-the-interfacestruct-or-whatever" href="#design-api-by-trimming-down-the-interfacestruct-or-whatever"
>Design API by trimming down the interface/struct or whatever<span ><span aria-hidden="true" class="octicon octicon-link"></span></a
aria-hidden="true" >Design API by trimming down the interface/struct or whatever
class="octicon octicon-link"
></span
></a>
</h2> </h2>
<p>Instead of:</p> <p>Instead of:</p>
<div class="highlight highlight-source-go"> <div class="highlight highlight-source-go">
@ -104,11 +104,16 @@
This pattern is used by This pattern is used by
<a href="https://github.com/google/go-github">google/go-github</a>. <a href="https://github.com/google/go-github">google/go-github</a>.
</p> </p>
<h2 id="user-content-find-alternative-to-grpcgrpc-go"> <h2>
<a class="heading-link" href="#find-alternative-to-grpcgrpc-go" <a
>Find alternative to </a id="user-content-find-alternative-to-grpcgrpc-go"
><a href="https://github.com/grpc/grpc-go">grpc/grpc-go</a> class="anchor"
<span aria-hidden="true" class="octicon octicon-link"></span> aria-hidden="true"
tabindex="-1"
href="#find-alternative-to-grpcgrpc-go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Find alternative to
<a href="https://github.com/grpc/grpc-go">grpc/grpc-go</a>
</h2> </h2>
<p> <p>
Why? Why?
@ -141,10 +146,15 @@
<li><a href="https://github.com/twitchtv/twirp">twitchtv/twirp</a></li> <li><a href="https://github.com/twitchtv/twirp">twitchtv/twirp</a></li>
<li><a href="https://github.com/storj/drpc">storj/drpc</a></li> <li><a href="https://github.com/storj/drpc">storj/drpc</a></li>
</ul> </ul>
<h1 id="user-content-thanks"> <h1>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h1> </h1>
<ul> <ul>
<li> <li>

View File

@ -28,10 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-sql"> <h1>
<a class="heading-link" href="#sql" <a
>SQL<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-sql"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#sql"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>SQL
</h1> </h1>
<p> <p>
Previously in my fresher software developer time, I rarely write SQL, I Previously in my fresher software developer time, I rarely write SQL, I
@ -43,25 +48,29 @@
This guide is not kind of guide which cover all cases. Just my little This guide is not kind of guide which cover all cases. Just my little
tricks when I work with SQL. tricks when I work with SQL.
</p> </p>
<h2 id="user-content-stay-away-from-database-unique-id"> <h2>
<a class="heading-link" href="#stay-away-from-database-unique-id" <a
>Stay away from database unique id<span id="user-content-stay-away-from-database-unique-id"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#stay-away-from-database-unique-id"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Stay away from database unique id
</h2> </h2>
<p> <p>
Use UUID instead. If you can, and you should, choose UUID type which can Use UUID instead. If you can, and you should, choose UUID type which can
be sortable. be sortable.
</p> </p>
<h2 id="user-content-stay-away-from-database-timestamp"> <h2>
<a class="heading-link" href="#stay-away-from-database-timestamp" <a
>Stay away from database timestamp<span id="user-content-stay-away-from-database-timestamp"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#stay-away-from-database-timestamp"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Stay away from database timestamp
</h2> </h2>
<p> <p>
Stay away from all kind of database timestamp (MySQL timestmap, SQLite Stay away from all kind of database timestamp (MySQL timestmap, SQLite
@ -80,13 +89,15 @@
[Business] time, data -&gt; convert to unix timestamp milliseconds -&gt; [Database] int64</pre [Business] time, data -&gt; convert to unix timestamp milliseconds -&gt; [Database] int64</pre
> >
</div> </div>
<h2 id="user-content-extra-field-for-extra-things"> <h2>
<a class="heading-link" href="#extra-field-for-extra-things" <a
>Extra field for extra things<span id="user-content-extra-field-for-extra-things"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#extra-field-for-extra-things"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Extra field for extra things
</h2> </h2>
<p> <p>
Create new column in database is scary, so I suggest avoid it if you can. Create new column in database is scary, so I suggest avoid it if you can.
@ -95,13 +106,15 @@
</p> </p>
<p>I always use MySQL json data type for extra field.</p> <p>I always use MySQL json data type for extra field.</p>
<p>JSON data type also used for dumping request, response data.</p> <p>JSON data type also used for dumping request, response data.</p>
<h2 id="user-content-use-index"> <h2>
<a class="heading-link" href="#use-index" <a
>Use index!!!<span id="user-content-use-index"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#use-index"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use index!!!
</h2> </h2>
<p> <p>
You should use index for faster query, but not too much. Don't create You should use index for faster query, but not too much. Don't create
@ -144,13 +157,15 @@
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-be-careful-with-utf-8"> <h2>
<a class="heading-link" href="#be-careful-with-utf-8" <a
>Be careful with UTF-8<span id="user-content-be-careful-with-utf-8"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#be-careful-with-utf-8"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Be careful with UTF-8
</h2> </h2>
<p>TLDR with MySQL:</p> <p>TLDR with MySQL:</p>
<div class="highlight highlight-source-sql"> <div class="highlight highlight-source-sql">
@ -161,13 +176,15 @@
) ENGINE <span class="pl-k">=</span> InnoDB ) ENGINE <span class="pl-k">=</span> InnoDB
DEFAULT CHARSET <span class="pl-k">=</span> utf8mb4;</pre> DEFAULT CHARSET <span class="pl-k">=</span> utf8mb4;</pre>
</div> </div>
<h2 id="user-content-be-careful-with-null"> <h2>
<a class="heading-link" href="#be-careful-with-null" <a
>Be careful with NULL<span id="user-content-be-careful-with-null"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#be-careful-with-null"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Be careful with NULL
</h2> </h2>
<p> <p>
If compare with field which can be NULL, remember to check NULL for If compare with field which can be NULL, remember to check NULL for
@ -187,36 +204,46 @@
<span class="pl-k">WHERE</span> (field_something IS <span class="pl-k">NULL</span> <span class="pl-k">OR</span> field_something <span class="pl-k">!=</span> <span class="pl-c1">1</span>)</pre> <span class="pl-k">WHERE</span> (field_something IS <span class="pl-k">NULL</span> <span class="pl-k">OR</span> field_something <span class="pl-k">!=</span> <span class="pl-c1">1</span>)</pre>
</div> </div>
<p>Need clarify why this happpen? Idk :(</p> <p>Need clarify why this happpen? Idk :(</p>
<h2 id="user-content-varchar-or-text"> <h2>
<a class="heading-link" href="#varchar-or-text"> <a
<code>VARCHAR</code> or <code>TEXT</code> id="user-content-varchar-or-text"
<span aria-hidden="true" class="octicon octicon-link"></span class="anchor"
aria-hidden="true"
tabindex="-1"
href="#varchar-or-text"
><span aria-hidden="true" class="octicon octicon-link"></span
></a> ></a>
<code>VARCHAR</code> or <code>TEXT</code>
</h2> </h2>
<p> <p>
Prefer <code>VARCHAR</code> if you need to query and of course use index, Prefer <code>VARCHAR</code> if you need to query and of course use index,
and make sure size of value will never hit the limit. Prefer and make sure size of value will never hit the limit. Prefer
<code>TEXT</code> if you don't care, just want to store something. <code>TEXT</code> if you don't care, just want to store something.
</p> </p>
<h2 id="user-content-limit"> <h2>
<a class="heading-link" href="#limit" <a
><code>LIMIT</code id="user-content-limit"
><span aria-hidden="true" class="octicon octicon-link"></span class="anchor"
></a> aria-hidden="true"
tabindex="-1"
href="#limit"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><code>LIMIT</code>
</h2> </h2>
<p> <p>
Prefer <code>LIMIT 10 OFFSET 5</code> to <code>LIMIT 5, 10</code> to avoid Prefer <code>LIMIT 10 OFFSET 5</code> to <code>LIMIT 5, 10</code> to avoid
misunderstanding. misunderstanding.
</p> </p>
<h2 <h2>
id="user-content-be-super-careful-when-migrate-update-database-on-production-and-online"
>
<a <a
class="heading-link" id="user-content-be-super-careful-when-migrate-update-database-on-production-and-online"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#be-super-careful-when-migrate-update-database-on-production-and-online" href="#be-super-careful-when-migrate-update-database-on-production-and-online"
>Be super careful when migrate, update database on production and ><span aria-hidden="true" class="octicon octicon-link"></span></a
online!!!<span aria-hidden="true" class="octicon octicon-link"></span >Be super careful when migrate, update database on production and
></a> online!!!
</h2> </h2>
<p> <p>
Plase read docs about online ddl operations before do anything online Plase read docs about online ddl operations before do anything online
@ -249,16 +276,26 @@
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-heathcheck"> <h2>
<a class="heading-link" href="#heathcheck" <a
>Heathcheck<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-heathcheck"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#heathcheck"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Heathcheck
</h2> </h2>
<p>Use <code>SELECT 1</code> to check if database failed yet.</p> <p>Use <code>SELECT 1</code> to check if database failed yet.</p>
<h2 id="user-content-tools"> <h2>
<a class="heading-link" href="#tools" <a
>Tools<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-tools"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#tools"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Tools
</h2> </h2>
<ul> <ul>
<li> <li>
@ -271,10 +308,15 @@
database reality :) database reality :)
</li> </li>
</ul> </ul>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,16 +28,26 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-gitignore"> <h1>
<a class="heading-link" href="#gitignore" <a
>gitignore<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-gitignore"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#gitignore"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>gitignore
</h1> </h1>
<p>My quick check for <code>.gitignore</code>.</p> <p>My quick check for <code>.gitignore</code>.</p>
<h2 id="user-content-base"> <h2>
<a class="heading-link" href="#base" <a
>Base<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-base"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#base"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Base
</h2> </h2>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
<pre><span class="pl-c"># macOS</span> <pre><span class="pl-c"># macOS</span>
@ -52,10 +62,15 @@
<span class="pl-c"># VSCode</span> <span class="pl-c"># VSCode</span>
.vscode/</pre> .vscode/</pre>
</div> </div>
<h2 id="user-content-go"> <h2>
<a class="heading-link" href="#go" <a
>Go<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-go"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Go
</h2> </h2>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
<pre><span class="pl-c"># Go</span> <pre><span class="pl-c"># Go</span>
@ -65,10 +80,15 @@ coverage.out
<span class="pl-c"># Should ignore vendor</span> <span class="pl-c"># Should ignore vendor</span>
vendor</pre> vendor</pre>
</div> </div>
<h2 id="user-content-python"> <h2>
<a class="heading-link" href="#python" <a
>Python<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-python"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#python"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Python
</h2> </h2>
<div class="highlight highlight-text-adblock"><pre>venv</pre></div> <div class="highlight highlight-text-adblock"><pre>venv</pre></div>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-reload-config"> <h1>
<a class="heading-link" href="#reload-config" <a
>Reload config<span id="user-content-reload-config"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#reload-config"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Reload config
</h1> </h1>
<p>This serves as design draft of reload config system</p> <p>This serves as design draft of reload config system</p>
<div class="highlight highlight-source-wsd"> <div class="highlight highlight-source-wsd">

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-install-arch-linux"> <h1>
<a class="heading-link" href="#install-arch-linux" <a
>Install Arch Linux<span id="user-content-install-arch-linux"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#install-arch-linux"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Install Arch Linux
</h1> </h1>
<p> <p>
Install Arch Linux is thing I always want to do for my laptop/PC since I Install Arch Linux is thing I always want to do for my laptop/PC since I
@ -44,21 +46,29 @@
This is not a guide for everyone, this is just save for myself in a future This is not a guide for everyone, this is just save for myself in a future
and for anyone who want to walk in my shoes. and for anyone who want to walk in my shoes.
</p> </p>
<h2 id="user-content-installation-guide"> <h2>
<a class="heading-link" href="#installation-guide"></a <a
id="user-content-installation-guide"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#installation-guide"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a ><a
href="https://wiki.archlinux.org/index.php/Installation_guide" href="https://wiki.archlinux.org/index.php/Installation_guide"
rel="nofollow" rel="nofollow"
>Installation guide</a >Installation guide</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<h3 id="user-content-pre-installation"> <h3>
<a class="heading-link" href="#pre-installation" <a
>Pre-installation<span id="user-content-pre-installation"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#pre-installation"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Pre-installation
</h3> </h3>
<p>Check disks carefully:</p> <p>Check disks carefully:</p>
<div class="highlight highlight-source-shell"><pre>lsblk</pre></div> <div class="highlight highlight-source-shell"><pre>lsblk</pre></div>
@ -69,37 +79,43 @@
>USB flash installation medium</a >USB flash installation medium</a
> >
</p> </p>
<h4 id="user-content-verify-the-boot-mode"> <h4>
<a class="heading-link" href="#verify-the-boot-mode" <a
>Verify the boot mode<span id="user-content-verify-the-boot-mode"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#verify-the-boot-mode"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Verify the boot mode
</h4> </h4>
<p>Check UEFI mode:</p> <p>Check UEFI mode:</p>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>ls /sys/firmware/efi/efivars</pre> <pre>ls /sys/firmware/efi/efivars</pre>
</div> </div>
<h4 id="user-content-connect-to-the-internet"> <h4>
<a class="heading-link" href="#connect-to-the-internet" <a
>Connect to the internet<span id="user-content-connect-to-the-internet"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#connect-to-the-internet"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Connect to the internet
</h4> </h4>
<p> <p>
For wifi, use For wifi, use
<a href="https://wiki.archlinux.org/index.php/Iwd" rel="nofollow">iwd</a>. <a href="https://wiki.archlinux.org/index.php/Iwd" rel="nofollow">iwd</a>.
</p> </p>
<h4 id="user-content-partition-the-disks"> <h4>
<a class="heading-link" href="#partition-the-disks" <a
>Partition the disks<span id="user-content-partition-the-disks"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#partition-the-disks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Partition the disks
</h4> </h4>
<p> <p>
<a href="https://wiki.archlinux.org/index.php/GPT_fdisk" rel="nofollow" <a href="https://wiki.archlinux.org/index.php/GPT_fdisk" rel="nofollow"
@ -224,13 +240,15 @@ mount --mkdir /dev/efi_system_partition /mnt/efi
<span class="pl-c"><span class="pl-c">#</span> boot</span> <span class="pl-c"><span class="pl-c">#</span> boot</span>
mount --mkdir /dev/extended_boot_loader_partition /mnt/boot</pre> mount --mkdir /dev/extended_boot_loader_partition /mnt/boot</pre>
</div> </div>
<h3 id="user-content-installation"> <h3>
<a class="heading-link" href="#installation" <a
>Installation<span id="user-content-installation"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#installation"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Installation
</h3> </h3>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacstrap -K /mnt base linux linux-firmware <pre>pacstrap -K /mnt base linux linux-firmware
@ -250,32 +268,53 @@ pacstrap -K /mnt lvm2
<span class="pl-c"><span class="pl-c">#</span> Text editor</span> <span class="pl-c"><span class="pl-c">#</span> Text editor</span>
pacstrap -K /mnt neovim</pre> pacstrap -K /mnt neovim</pre>
</div> </div>
<h3 id="user-content-configure"> <h3>
<a class="heading-link" href="#configure" <a
>Configure<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-configure"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#configure"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Configure
</h3> </h3>
<h4 id="user-content-fstab"> <h4>
<a class="heading-link" href="#fstab"></a <a
id="user-content-fstab"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#fstab"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.archlinux.org/index.php/Fstab" rel="nofollow" ><a href="https://wiki.archlinux.org/index.php/Fstab" rel="nofollow"
>fstab</a >fstab</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h4> </h4>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>genfstab -U /mnt <span class="pl-k">&gt;&gt;</span> /mnt/etc/fstab</pre> <pre>genfstab -U /mnt <span class="pl-k">&gt;&gt;</span> /mnt/etc/fstab</pre>
</div> </div>
<h4 id="user-content-chroot"> <h4>
<a class="heading-link" href="#chroot" <a
>Chroot<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-chroot"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#chroot"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Chroot
</h4> </h4>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>arch-chroot /mnt</pre> <pre>arch-chroot /mnt</pre>
</div> </div>
<h4 id="user-content-time-zone"> <h4>
<a class="heading-link" href="#time-zone" <a
>Time zone<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-time-zone"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#time-zone"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Time zone
</h4> </h4>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre> <pre>
@ -284,13 +323,15 @@ ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc</pre hwclock --systohc</pre
> >
</div> </div>
<h4 id="user-content-localization"> <h4>
<a class="heading-link" href="#localization" <a
>Localization:<span id="user-content-localization"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#localization"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Localization:
</h4> </h4>
<p>Edit <code>/etc/locale.gen</code>:</p> <p>Edit <code>/etc/locale.gen</code>:</p>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
@ -302,20 +343,27 @@ hwclock --systohc</pre
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
<pre>LANG=en_US.UTF-8</pre> <pre>LANG=en_US.UTF-8</pre>
</div> </div>
<h4 id="user-content-network-configuration"> <h4>
<a class="heading-link" href="#network-configuration" <a
>Network configuration<span id="user-content-network-configuration"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#network-configuration"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Network configuration
</h4> </h4>
<p>Edit <code>/etc/hostname</code>:</p> <p>Edit <code>/etc/hostname</code>:</p>
<div class="highlight highlight-text-adblock"><pre>myhostname</pre></div> <div class="highlight highlight-text-adblock"><pre>myhostname</pre></div>
<h4 id="user-content-initramfs"> <h4>
<a class="heading-link" href="#initramfs" <a
>Initramfs<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-initramfs"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#initramfs"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Initramfs
</h4> </h4>
<p>Edit <code>/etc/mkinitcpio.conf</code>:</p> <p>Edit <code>/etc/mkinitcpio.conf</code>:</p>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
@ -327,25 +375,38 @@ HOOKS=(base udev ... block lvm2 filesystems)
<span class="pl-c"># Replace udev with systemd</span></pre> <span class="pl-c"># Replace udev with systemd</span></pre>
</div> </div>
<div class="highlight highlight-source-shell"><pre>mkinitcpio -P</pre></div> <div class="highlight highlight-source-shell"><pre>mkinitcpio -P</pre></div>
<h4 id="user-content-root-password"> <h4>
<a class="heading-link" href="#root-password" <a
>Root password<span id="user-content-root-password"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#root-password"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Root password
</h4> </h4>
<div class="highlight highlight-source-shell"><pre>passwd</pre></div> <div class="highlight highlight-source-shell"><pre>passwd</pre></div>
<h4 id="user-content-addition"> <h4>
<a class="heading-link" href="#addition" <a
>Addition<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-addition"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#addition"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Addition
</h4> </h4>
<h5 id="user-content-networkmanager-wip"> <h5>
<a class="heading-link" href="#networkmanager-wip"></a <a
id="user-content-networkmanager-wip"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#networkmanager-wip"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.archlinux.org/title/NetworkManager" rel="nofollow" ><a href="https://wiki.archlinux.org/title/NetworkManager" rel="nofollow"
>NetworkManager (WIP)</a >NetworkManager (WIP)</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h5> </h5>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacman -Syu networkmanager dhcpcd iwd <pre>pacman -Syu networkmanager dhcpcd iwd
@ -380,35 +441,56 @@ noarp
nohook resolv.conf</pre nohook resolv.conf</pre
> >
</div> </div>
<h5 id="user-content-bluetooth"> <h5>
<a class="heading-link" href="#bluetooth" <a
>Bluetooth<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-bluetooth"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#bluetooth"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Bluetooth
</h5> </h5>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacman -Syu bluez <pre>pacman -Syu bluez
systemctl <span class="pl-c1">enable</span> bluetooth.service</pre> systemctl <span class="pl-c1">enable</span> bluetooth.service</pre>
</div> </div>
<h5 id="user-content-clock"> <h5>
<a class="heading-link" href="#clock" <a
>Clock<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-clock"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#clock"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Clock
</h5> </h5>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>timedatectl set-ntp <span class="pl-c1">true</span></pre> <pre>timedatectl set-ntp <span class="pl-c1">true</span></pre>
</div> </div>
<h4 id="user-content-boot-loader"> <h4>
<a class="heading-link" href="#boot-loader" <a
>Boot loader<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-boot-loader"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#boot-loader"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Boot loader
</h4> </h4>
<h5 id="user-content-systemd-boot"> <h5>
<a class="heading-link" href="#systemd-boot"></a <a
id="user-content-systemd-boot"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#systemd-boot"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a ><a
href="https://wiki.archlinux.org/index.php/Systemd-boot" href="https://wiki.archlinux.org/index.php/Systemd-boot"
rel="nofollow" rel="nofollow"
>systemd-boot</a >systemd-boot</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h5> </h5>
<p>Install using XBOOTLDR:</p> <p>Install using XBOOTLDR:</p>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
@ -456,25 +538,33 @@ initrd /initramfs-linux.img
<span class="pl-c"># nvidia-drm.modeset=1</span> <span class="pl-c"># nvidia-drm.modeset=1</span>
options root="LABEL=ROOT" rw</pre> options root="LABEL=ROOT" rw</pre>
</div> </div>
<h2 id="user-content-general-recommendations"> <h2>
<a class="heading-link" href="#general-recommendations"></a <a
id="user-content-general-recommendations"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#general-recommendations"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a ><a
href="https://wiki.archlinux.org/index.php/General_recommendations" href="https://wiki.archlinux.org/index.php/General_recommendations"
rel="nofollow" rel="nofollow"
>General recommendations</a >General recommendations</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<p> <p>
Always remember to check <strong>dependencies</strong> when install Always remember to check <strong>dependencies</strong> when install
packages. packages.
</p> </p>
<h3 id="user-content-system-administration"> <h3>
<a class="heading-link" href="#system-administration" <a
>System administration<span id="user-content-system-administration"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#system-administration"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>System administration
</h3> </h3>
<p> <p>
<a href="https://wiki.archlinux.org/index.php/sudo" rel="nofollow">Sudo</a <a href="https://wiki.archlinux.org/index.php/sudo" rel="nofollow">Sudo</a
@ -514,13 +604,15 @@ homectl update joker --shell=/usr/bin/zsh</pre>
<strong>Note</strong>: Can not run <code>homectl</code> when install Arch <strong>Note</strong>: Can not run <code>homectl</code> when install Arch
Linux. Should run on the first boot. Linux. Should run on the first boot.
</p> </p>
<h3 id="user-content-desktop-environment"> <h3>
<a class="heading-link" href="#desktop-environment" <a
>Desktop Environment<span id="user-content-desktop-environment"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#desktop-environment"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Desktop Environment
</h3> </h3>
<p> <p>
Install Install
@ -530,11 +622,17 @@ homectl update joker --shell=/usr/bin/zsh</pre>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacman -Syu xorg-server</pre> <pre>pacman -Syu xorg-server</pre>
</div> </div>
<h4 id="user-content-gnome"> <h4>
<a class="heading-link" href="#gnome"></a <a
id="user-content-gnome"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#gnome"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.archlinux.org/index.php/GNOME" rel="nofollow" ><a href="https://wiki.archlinux.org/index.php/GNOME" rel="nofollow"
>GNOME</a >GNOME</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h4> </h4>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacman -Syu gnome-shell \ <pre>pacman -Syu gnome-shell \
@ -557,19 +655,31 @@ systemctl <span class="pl-c1">enable</span> gdm.service</pre>
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-list-of-applications"> <h2>
<a class="heading-link" href="#list-of-applications"></a <a
id="user-content-list-of-applications"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#list-of-applications"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a ><a
href="https://wiki.archlinux.org/index.php/List_of_applications" href="https://wiki.archlinux.org/index.php/List_of_applications"
rel="nofollow" rel="nofollow"
>List of applications</a >List of applications</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<h3 id="user-content-pacman"> <h3>
<a class="heading-link" href="#pacman"></a <a
id="user-content-pacman"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#pacman"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.archlinux.org/index.php/pacman" rel="nofollow" ><a href="https://wiki.archlinux.org/index.php/pacman" rel="nofollow"
>pacman</a >pacman</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h3> </h3>
<p>Uncomment in <code>/etc/pacman.conf</code>:</p> <p>Uncomment in <code>/etc/pacman.conf</code>:</p>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
@ -577,11 +687,17 @@ systemctl <span class="pl-c1">enable</span> gdm.service</pre>
Color Color
ParallelDownloads</pre> ParallelDownloads</pre>
</div> </div>
<h3 id="user-content-pipewire-wip"> <h3>
<a class="heading-link" href="#pipewire-wip"></a <a
id="user-content-pipewire-wip"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#pipewire-wip"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.archlinux.org/title/PipeWire" rel="nofollow" ><a href="https://wiki.archlinux.org/title/PipeWire" rel="nofollow"
>Pipewire (WIP)</a >Pipewire (WIP)</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h3> </h3>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre> <pre>
@ -601,22 +717,34 @@ pacman -Syu pipewire wireplumber \
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacman -Syu sof-firmware</pre> <pre>pacman -Syu sof-firmware</pre>
</div> </div>
<h3 id="user-content-flatpak-wip"> <h3>
<a class="heading-link" href="#flatpak-wip"></a <a
id="user-content-flatpak-wip"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#flatpak-wip"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.archlinux.org/title/Flatpak" rel="nofollow" ><a href="https://wiki.archlinux.org/title/Flatpak" rel="nofollow"
>Flatpak (WIP)</a >Flatpak (WIP)</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h3> </h3>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pacman -Syu flatpak</pre> <pre>pacman -Syu flatpak</pre>
</div> </div>
<h2 id="user-content-improving-performance"> <h2>
<a class="heading-link" href="#improving-performance"></a <a
id="user-content-improving-performance"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#improving-performance"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a ><a
href="https://wiki.archlinux.org/index.php/improving_performance" href="https://wiki.archlinux.org/index.php/improving_performance"
rel="nofollow" rel="nofollow"
>Improving performance</a >Improving performance</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<ul> <ul>
<li> <li>
@ -679,13 +807,15 @@ pacman -Syu pipewire wireplumber \
<pre><span class="pl-c"># https://lwn.net/Articles/911219/</span> <pre><span class="pl-c"># https://lwn.net/Articles/911219/</span>
kernel.split_lock_mitigate = 0</pre> kernel.split_lock_mitigate = 0</pre>
</div> </div>
<h2 id="user-content-hardware-dependent"> <h2>
<a class="heading-link" href="#hardware-dependent" <a
>Hardware dependent<span id="user-content-hardware-dependent"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#hardware-dependent"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Hardware dependent
</h2> </h2>
<ul> <ul>
<li> <li>
@ -704,10 +834,15 @@ kernel.split_lock_mitigate = 0</pre>
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-experiment"> <h2>
<a class="heading-link" href="#experiment" <a
>Experiment<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-experiment"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#experiment"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Experiment
</h2> </h2>
<p>Do it at your own risk!!!</p> <p>Do it at your own risk!!!</p>
<ul> <ul>
@ -729,10 +864,15 @@ kernel.split_lock_mitigate = 0</pre>
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-in-the-end"> <h2>
<a class="heading-link" href="#in-the-end" <a
>In the end<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-in-the-end"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#in-the-end"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>In the end
</h2> </h2>
<p>This guide is updated regularly I promise.</p> <p>This guide is updated regularly I promise.</p>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-speed-up-writing-go-test-asap"> <h1>
<a class="heading-link" href="#speed-up-writing-go-test-asap" <a
>Speed up writing Go test ASAP<span id="user-content-speed-up-writing-go-test-asap"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#speed-up-writing-go-test-asap"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Speed up writing Go test ASAP
</h1> </h1>
<p> <p>
Imagine your project currently have 0% unit test code coverage. And your Imagine your project currently have 0% unit test code coverage. And your
@ -55,13 +57,15 @@
just make sure your code is running excatly as you intent it to be. If you just make sure your code is running excatly as you intent it to be. If you
don't think about edge case before, unit test won't help you. don't think about edge case before, unit test won't help you.
</p> </p>
<h2 id="user-content-first-rewrite-the-impossible-to-test-out"> <h2>
<a class="heading-link" href="#first-rewrite-the-impossible-to-test-out" <a
>First, rewrite the impossible (to test) out<span id="user-content-first-rewrite-the-impossible-to-test-out"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#first-rewrite-the-impossible-to-test-out"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>First, rewrite the impossible (to test) out
</h2> </h2>
<p> <p>
When I learn programming, I encounter very interesting idea, which become When I learn programming, I encounter very interesting idea, which become
@ -85,13 +89,15 @@
all global var to fields inside some struct. all global var to fields inside some struct.
</li> </li>
</ul> </ul>
<h2 id="user-content-let-the-fun-writing-test-begin"> <h2>
<a class="heading-link" href="#let-the-fun-writing-test-begin" <a
>Let the fun (writing test) begin<span id="user-content-let-the-fun-writing-test-begin"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#let-the-fun-writing-test-begin"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Let the fun (writing test) begin
</h2> </h2>
<p> <p>
If you code Go long enough, you know table driven tests and how is that so If you code Go long enough, you know table driven tests and how is that so

View File

@ -28,22 +28,26 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-incident-come-and-go"> <h1>
<a class="heading-link" href="#incident-come-and-go" <a
>Incident come and go<span id="user-content-incident-come-and-go"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#incident-come-and-go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Incident come and go
</h1> </h1>
<p>This is collect of all incidents I created in the past :(</p> <p>This is collect of all incidents I created in the past :(</p>
<h2 id="user-content-service-starts-with-empty-port"> <h2>
<a class="heading-link" href="#service-starts-with-empty-port" <a
>Service starts with empty port<span id="user-content-service-starts-with-empty-port"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#service-starts-with-empty-port"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Service starts with empty port
</h2> </h2>
<p>Because all configs is read from file.</p> <p>Because all configs is read from file.</p>
<p> <p>
@ -54,13 +58,15 @@
<strong>Solution</strong>: For some configs, make sure to failed first if <strong>Solution</strong>: For some configs, make sure to failed first if
it's empty. it's empty.
</p> </p>
<h2 id="user-content-race-condition-of-series-of-apis"> <h2>
<a class="heading-link" href="#race-condition-of-series-of-apis" <a
>Race condition of series of APIs<span id="user-content-race-condition-of-series-of-apis"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#race-condition-of-series-of-apis"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Race condition of series of APIs
</h2> </h2>
<p>For example I have 2 APIs:</p> <p>For example I have 2 APIs:</p>
<ul> <ul>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-ekyc---the-battle-never-ends"> <h1>
<a class="heading-link" href="#ekyc---the-battle-never-ends" <a
>EKYC - The battle never ends<span id="user-content-ekyc---the-battle-never-ends"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#ekyc---the-battle-never-ends"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>EKYC - The battle never ends
</h1> </h1>
<p>TODO</p> <p>TODO</p>

View File

@ -28,10 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-fonts"> <h1>
<a class="heading-link" href="#fonts" <a
>Fonts<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-fonts"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#fonts"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Fonts
</h1> </h1>
<p> <p>
I always want the best fonts for my terminal, my text editor, my ... But I always want the best fonts for my terminal, my text editor, my ... But
@ -63,10 +68,15 @@
All images belows is either official images I got from fonts website or my All images belows is either official images I got from fonts website or my
own screenshots. I'm too lazy to screenshot anw :D own screenshots. I'm too lazy to screenshot anw :D
</p> </p>
<h2 id="user-content-jetbrains-mono"> <h2>
<a class="heading-link" href="#jetbrains-mono"></a <a
><a href="https://github.com/JetBrains/JetBrainsMono">JetBrains Mono</a id="user-content-jetbrains-mono"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#jetbrains-mono"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/JetBrains/JetBrainsMono">JetBrains Mono</a>
</h2> </h2>
<p>JetBrains branding font.</p> <p>JetBrains branding font.</p>
<ul> <ul>
@ -91,10 +101,15 @@
<code>cv16</code>, <code>cv18</code>, <code>cv19</code>, <code>cv16</code>, <code>cv18</code>, <code>cv19</code>,
<code>cv20</code>. <code>cv20</code>.
</p> </p>
<h2 id="user-content-iosevka"> <h2>
<a class="heading-link" href="#iosevka"></a <a
><a href="https://github.com/be5invis/Iosevka">Iosevka</a id="user-content-iosevka"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#iosevka"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/be5invis/Iosevka">Iosevka</a>
</h2> </h2>
<p>I often choose SS08 variant because I also love PragmataPro too.</p> <p>I often choose SS08 variant because I also love PragmataPro too.</p>
<ul> <ul>
@ -108,10 +123,15 @@
Font is narrow, can display much more on small screen. But too much Font is narrow, can display much more on small screen. But too much
config/variant for ligatures scares me. config/variant for ligatures scares me.
</p> </p>
<h2 id="user-content-recursive"> <h2>
<a class="heading-link" href="#recursive"></a <a
><a href="https://github.com/arrowtype/recursive">Recursive</a id="user-content-recursive"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#recursive"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/arrowtype/recursive">Recursive</a>
</h2> </h2>
<p>I often choose Casual variant.</p> <p>I often choose Casual variant.</p>
<ul> <ul>
@ -123,10 +143,15 @@
</ul> </ul>
<p>Ligatures I prefer: <code>ss10</code>, <code>ss12</code>.</p> <p>Ligatures I prefer: <code>ss10</code>, <code>ss12</code>.</p>
<p>Looks good on my phone.</p> <p>Looks good on my phone.</p>
<h2 id="user-content-agave"> <h2>
<a class="heading-link" href="#agave"></a <a
><a href="https://github.com/blobject/agave">agave</a id="user-content-agave"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#agave"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/blobject/agave">agave</a>
</h2> </h2>
<ul> <ul>
<li>No Vietnamese</li> <li>No Vietnamese</li>
@ -139,10 +164,15 @@
Font is small, can display much more on small screen. I like its curved Font is small, can display much more on small screen. I like its curved
look. look.
</p> </p>
<h2 id="user-content-sudo"> <h2>
<a class="heading-link" href="#sudo"></a <a
><a href="https://github.com/jenskutilek/sudo-font">Sudo</a id="user-content-sudo"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#sudo"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/jenskutilek/sudo-font">Sudo</a>
</h2> </h2>
<p>Small fonts, saving space.</p> <p>Small fonts, saving space.</p>
<ul> <ul>
@ -156,11 +186,17 @@
Unique to me. Strange <code>#</code>, looks same as <code>4</code> (I Unique to me. Strange <code>#</code>, looks same as <code>4</code> (I
don't like it for now). don't like it for now).
</p> </p>
<h2 id="user-content-fantasque-sans-mono"> <h2>
<a class="heading-link" href="#fantasque-sans-mono"></a <a
id="user-content-fantasque-sans-mono"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#fantasque-sans-mono"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/belluzj/fantasque-sans" ><a href="https://github.com/belluzj/fantasque-sans"
>Fantasque Sans Mono</a >Fantasque Sans Mono</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<p>Comic vibe. Look smoothly and too much curve.</p> <p>Comic vibe. Look smoothly and too much curve.</p>
<ul> <ul>
@ -179,11 +215,17 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h2 id="user-content-apl-385-and-apl386"> <h2>
<a class="heading-link" href="#apl-385-and-apl386"> </a <a
><a href="https://apl385.com/fonts/index.htm" rel="nofollow">APL-385</a> id="user-content-apl-385-and-apl386"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#apl-385-and-apl386"
><span aria-hidden="true" class="octicon octicon-link"></span
></a>
<a href="https://apl385.com/fonts/index.htm" rel="nofollow">APL-385</a>
and <a href="https://github.com/abrudz/APL386">APL386</a> and <a href="https://github.com/abrudz/APL386">APL386</a>
<span aria-hidden="true" class="octicon octicon-link"></span>
</h2> </h2>
<ul> <ul>
<li>No Vietnamese</li> <li>No Vietnamese</li>
@ -192,10 +234,15 @@
<li>Has display font (APL333)</li> <li>Has display font (APL333)</li>
</ul> </ul>
<p>I love its wide look, also it's feel nostalgic.</p> <p>I love its wide look, also it's feel nostalgic.</p>
<h2 id="user-content-ibm-plex"> <h2>
<a class="heading-link" href="#ibm-plex"></a <a
><a href="https://github.com/IBM/plex">IBM Plex</a id="user-content-ibm-plex"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#ibm-plex"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/IBM/plex">IBM Plex</a>
</h2> </h2>
<p> <p>
IBM branding font, good alternative for Inter, has both monospace and IBM branding font, good alternative for Inter, has both monospace and
@ -209,10 +256,15 @@
<li>Has display font</li> <li>Has display font</li>
</ul> </ul>
<p>Looks fancy. Strange <code>#</code>.</p> <p>Looks fancy. Strange <code>#</code>.</p>
<h2 id="user-content-hermit"> <h2>
<a class="heading-link" href="#hermit"></a <a
><a href="https://github.com/pcaro90/hermit">Hermit</a id="user-content-hermit"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#hermit"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/pcaro90/hermit">Hermit</a>
</h2> </h2>
<ul> <ul>
<li>No Vietnamese</li> <li>No Vietnamese</li>
@ -220,10 +272,15 @@
<li>No ligatures</li> <li>No ligatures</li>
</ul> </ul>
<p>Looks unique to me, with some sharp look.</p> <p>Looks unique to me, with some sharp look.</p>
<h2 id="user-content-martian-mono"> <h2>
<a class="heading-link" href="#martian-mono"></a <a
><a href="https://github.com/evilmartians/mono">Martian Mono</a id="user-content-martian-mono"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#martian-mono"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/evilmartians/mono">Martian Mono</a>
</h2> </h2>
<ul> <ul>
<li>No Vietnamese</li> <li>No Vietnamese</li>
@ -246,21 +303,27 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h2 id="user-content-nerd-fonts"> <h2>
<a class="heading-link" href="#nerd-fonts"></a <a
><a href="https://github.com/ryanoasis/nerd-fonts">Nerd Fonts</a id="user-content-nerd-fonts"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#nerd-fonts"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/ryanoasis/nerd-fonts">Nerd Fonts</a>
</h2> </h2>
<p>For fancy terminal, only need <code>NerdFontsSymbolsOnly</code></p> <p>For fancy terminal, only need <code>NerdFontsSymbolsOnly</code></p>
<h2 <h2>
id="user-content-murr-fonts-but-i-dont-use-much-now-some-fonts-i-already-try-in-the-past"
>
<a <a
class="heading-link" id="user-content-murr-fonts-but-i-dont-use-much-now-some-fonts-i-already-try-in-the-past"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#murr-fonts-but-i-dont-use-much-now-some-fonts-i-already-try-in-the-past" href="#murr-fonts-but-i-dont-use-much-now-some-fonts-i-already-try-in-the-past"
>Murr fonts, but I don't use much now (some fonts I already try in the ><span aria-hidden="true" class="octicon octicon-link"></span></a
past)<span aria-hidden="true" class="octicon octicon-link"></span >Murr fonts, but I don't use much now (some fonts I already try in the
></a> past)
</h2> </h2>
<ul> <ul>
<li> <li>
@ -291,13 +354,15 @@
font. font.
</li> </li>
</ul> </ul>
<h3 id="user-content-bitmapoldschool"> <h3>
<a class="heading-link" href="#bitmapoldschool" <a
>Bitmap/Oldschool<span id="user-content-bitmapoldschool"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#bitmapoldschool"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Bitmap/Oldschool
</h3> </h3>
<ul> <ul>
<li> <li>
@ -319,13 +384,15 @@
>: old school >: old school
</li> </li>
</ul> </ul>
<h3 id="user-content-only-display"> <h3>
<a class="heading-link" href="#only-display" <a
>Only display<span id="user-content-only-display"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#only-display"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Only display
</h3> </h3>
<ul> <ul>
<li> <li>
@ -338,10 +405,15 @@
>: for reading ebook. >: for reading ebook.
</li> </li>
</ul> </ul>
<h3 id="user-content-trendy"> <h3>
<a class="heading-link" href="#trendy" <a
>Trendy<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-trendy"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#trendy"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Trendy
</h3> </h3>
<ul> <ul>
<li> <li>

View File

@ -28,10 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-games-4-fun"> <h1>
<a class="heading-link" href="#games-4-fun" <a
>Games 4 fun<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-games-4-fun"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#games-4-fun"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Games 4 fun
</h1> </h1>
<p> <p>
Just a little note about apps, games, settings for next time playing :D Just a little note about apps, games, settings for next time playing :D
@ -42,13 +47,15 @@
<li>My work laptop (Macbook Pro M1 (2020)).</li> <li>My work laptop (Macbook Pro M1 (2020)).</li>
</ul> </ul>
<p>If below links die, I will try to scrape Internet to get a new link.</p> <p>If below links die, I will try to scrape Internet to get a new link.</p>
<h2 id="user-content-ps2-emulator"> <h2>
<a class="heading-link" href="#ps2-emulator" <a
>PS2 emulator<span id="user-content-ps2-emulator"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#ps2-emulator"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>PS2 emulator
</h2> </h2>
<p> <p>
I use <a href="https://github.com/PCSX2/pcsx2">PCSX2</a>. Currently it I use <a href="https://github.com/PCSX2/pcsx2">PCSX2</a>. Currently it
@ -96,11 +103,17 @@
For cover art of games, please use For cover art of games, please use
<a href="https://github.com/xlenore/ps2-covers">xlenore/ps2-covers</a>. <a href="https://github.com/xlenore/ps2-covers">xlenore/ps2-covers</a>.
</p> </p>
<h3 id="user-content-resident-evil-4"> <h3>
<a class="heading-link" href="#resident-evil-4"></a <a
id="user-content-resident-evil-4"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#resident-evil-4"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://wiki.pcsx2.net/Resident_Evil_4" rel="nofollow" ><a href="https://wiki.pcsx2.net/Resident_Evil_4" rel="nofollow"
>Resident Evil 4</a >Resident Evil 4</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h3> </h3>
<p> <p>
<a <a
@ -173,13 +186,15 @@ patch=1,EE,2012009C,extended,00000000</pre
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h3 id="user-content-mega-man-x-collection"> <h3>
<a class="heading-link" href="#mega-man-x-collection" <a
>Mega Man X Collection<span id="user-content-mega-man-x-collection"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#mega-man-x-collection"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Mega Man X Collection
</h3> </h3>
<p> <p>
<a <a
@ -188,20 +203,30 @@ patch=1,EE,2012009C,extended,00000000</pre
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h3 id="user-content-mega-man-x8"> <h3>
<a class="heading-link" href="#mega-man-x8" <a
>Mega Man X8<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-mega-man-x8"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#mega-man-x8"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Mega Man X8
</h3> </h3>
<p> <p>
<a href="https://cdromance.com/ps2-iso/mega-man-x8-usa/" rel="nofollow" <a href="https://cdromance.com/ps2-iso/mega-man-x8-usa/" rel="nofollow"
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h3 id="user-content-god-of-war"> <h3>
<a class="heading-link" href="#god-of-war" <a
>God of War<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-god-of-war"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#god-of-war"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>God of War
</h3> </h3>
<p> <p>
<a href="https://cdromance.com/ps2-iso/god-of-war-usa/" rel="nofollow" <a href="https://cdromance.com/ps2-iso/god-of-war-usa/" rel="nofollow"
@ -233,13 +258,15 @@ patch=1,EE,2012009C,extended,00000000</pre
<a href="https://ko-fi.com/pandavenom" rel="nofollow">Panda Venom</a> for <a href="https://ko-fi.com/pandavenom" rel="nofollow">Panda Venom</a> for
his work. his work.
</p> </p>
<h3 id="user-content-god-of-war-ii"> <h3>
<a class="heading-link" href="#god-of-war-ii" <a
>God of War II<span id="user-content-god-of-war-ii"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#god-of-war-ii"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>God of War II
</h3> </h3>
<p> <p>
<a <a
@ -273,13 +300,15 @@ patch=1,EE,2012009C,extended,00000000</pre
<a href="https://ko-fi.com/pandavenom" rel="nofollow">Panda Venom</a> for <a href="https://ko-fi.com/pandavenom" rel="nofollow">Panda Venom</a> for
his work. his work.
</p> </p>
<h3 id="user-content-shadow-of-the-colossus"> <h3>
<a class="heading-link" href="#shadow-of-the-colossus" <a
>Shadow of the Colossus<span id="user-content-shadow-of-the-colossus"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#shadow-of-the-colossus"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Shadow of the Colossus
</h3> </h3>
<p> <p>
<a <a
@ -288,13 +317,15 @@ patch=1,EE,2012009C,extended,00000000</pre
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h2 id="user-content-ps3-emulator"> <h2>
<a class="heading-link" href="#ps3-emulator" <a
>PS3 emulator<span id="user-content-ps3-emulator"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#ps3-emulator"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>PS3 emulator
</h2> </h2>
<p> <p>
I use <a href="https://github.com/RPCS3/rpcs3">RPCS3</a>. Currently it I use <a href="https://github.com/RPCS3/rpcs3">RPCS3</a>. Currently it
@ -319,6 +350,85 @@ patch=1,EE,2012009C,extended,00000000</pre
> >
</li> </li>
</ul> </ul>
<h2>
<a
id="user-content-windows-games"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#windows-games"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Windows games
</h2>
<ul>
<li>
<a
href="https://fitgirl-repacks.site/resident-evil-village/"
rel="nofollow"
>Resident Evil: Village</a
>
</li>
<li>
<a
href="https://fitgirl-repacks.site/resident-evil-4-hd-project/"
rel="nofollow"
>Resident Evil 4</a
>
</li>
<li>
<a
href="https://fitgirl-repacks.site/resident-evil-7-biohazard/"
rel="nofollow"
>Resident Evil 7: Biohazard</a
>
</li>
<li>
<a href="https://fitgirl-repacks.site/resident-evil-3/" rel="nofollow"
>Resident Evil 3</a
>
</li>
<li>
<a
href="https://fitgirl-repacks.site/resident-evil-2-deluxe-edition/"
rel="nofollow"
>RESIDENT EVIL 2</a
>
</li>
<li>
<a href="https://fitgirl-repacks.site/god-of-war/" rel="nofollow"
>God of War</a
>
</li>
<li>
<a
href="https://fitgirl-repacks.site/dark-souls-remastered/"
rel="nofollow"
>Dark Souls Remastered</a
>
</li>
<li>
<a href="https://fitgirl-repacks.site/dark-souls-3/" rel="nofollow"
>Dark Souls 3</a
>
</li>
<li>
<a
href="https://fitgirl-repacks.site/sekiro-shadows-die-twice/"
rel="nofollow"
>Sekiro: Shadows Die Twice</a
>
</li>
<li>
<a href="https://fitgirl-repacks.site/elden-ring/" rel="nofollow"
>ELDEN RING</a
>
</li>
<li>
<a href="https://fitgirl-repacks.site/cyberpunk-2077/" rel="nofollow"
>Cyberpunk 2077</a
>
</li>
</ul>
<div> <div>
Feel free to ask me via Feel free to ask me via

View File

@ -28,38 +28,52 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-keeb"> <h1>
<a class="heading-link" href="#keeb" <a
>Keeb<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-keeb"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#keeb"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Keeb
</h1> </h1>
<p>My collection of mechanical keyboards.</p> <p>My collection of mechanical keyboards.</p>
<h2 id="user-content-keyboard"> <h2>
<a class="heading-link" href="#keyboard" <a
>Keyboard<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-keyboard"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#keyboard"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Keyboard
</h2> </h2>
<p> <p>
QMK custom keymaps is QMK custom keymaps is
<a href="https://github.com/haunt98/qmk_keymaps">here</a> <a href="https://github.com/haunt98/qmk_keymaps">here</a>
</p> </p>
<h3 id="user-content-ikbc-cd87-cherry-mx-blue"> <h3>
<a class="heading-link" href="#ikbc-cd87-cherry-mx-blue" <a
>iKBC CD87 Cherry MX Blue<span id="user-content-ikbc-cd87-cherry-mx-blue"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#ikbc-cd87-cherry-mx-blue"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>iKBC CD87 Cherry MX Blue
</h3> </h3>
<p>My first keeb.</p> <p>My first keeb.</p>
<p>Damn it's so loud :D</p> <p>Damn it's so loud :D</p>
<h3 id="user-content-kbdfans-x-lazurite-d60lite"> <h3>
<a class="heading-link" href="#kbdfans-x-lazurite-d60lite" <a
>KBDfans X Lazurite D60Lite<span id="user-content-kbdfans-x-lazurite-d60lite"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#kbdfans-x-lazurite-d60lite"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>KBDfans X Lazurite D60Lite
</h3> </h3>
<p>I bought it from my friend.</p> <p>I bought it from my friend.</p>
<p> <p>
@ -100,10 +114,15 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4 id="user-content-specs"> <h4>
<a class="heading-link" href="#specs" <a
>Specs<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-specs"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#specs"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Specs
</h4> </h4>
<p> <p>
<a <a
@ -165,10 +184,15 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h4 id="user-content-layout"> <h4>
<a class="heading-link" href="#layout" <a
>Layout<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-layout"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#layout"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Layout
</h4> </h4>
<p>My layout is based on:</p> <p>My layout is based on:</p>
<ul> <ul>
@ -199,10 +223,15 @@
</li> </li>
<li>1 <code>Space</code> 7U.</li> <li>1 <code>Space</code> 7U.</li>
</ul> </ul>
<h4 id="user-content-review"> <h4>
<a class="heading-link" href="#review" <a
>Review<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-review"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#review"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Review
</h4> </h4>
<p> <p>
Things I don't like, also Things I don't like, also
@ -229,13 +258,15 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h4 id="user-content-support-links"> <h4>
<a class="heading-link" href="#support-links" <a
>Support links<span id="user-content-support-links"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -294,10 +325,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-sofle-v2"> <h3>
<a class="heading-link" href="#sofle-v2" <a
>Sofle V2<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-sofle-v2"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#sofle-v2"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Sofle V2
</h3> </h3>
<p> <p>
I bought it from I bought it from
@ -308,20 +344,30 @@
> >
with the cheapest option. with the cheapest option.
</p> </p>
<h4 id="user-content-review-1"> <h4>
<a class="heading-link" href="#review-1" <a
>Review<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-review-1"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#review-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Review
</h4> </h4>
<p>Things I don't like:</p> <p>Things I don't like:</p>
<ul> <ul>
<li>Sandwhich style is meh when typing.</li> <li>Sandwhich style is meh when typing.</li>
<li>The left case is so tight to put switch in.</li> <li>The left case is so tight to put switch in.</li>
</ul> </ul>
<h3 id="user-content-guide"> <h3>
<a class="heading-link" href="#guide" <a
>Guide<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-guide"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#guide"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Guide
</h3> </h3>
<ul> <ul>
<li> <li>
@ -337,18 +383,25 @@
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-switch"> <h2>
<a class="heading-link" href="#switch" <a
>Switch<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-switch"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#switch"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Switch
</h2> </h2>
<h3 id="user-content-ktt-strawberry"> <h3>
<a class="heading-link" href="#ktt-strawberry" <a
>KTT Strawberry<span id="user-content-ktt-strawberry"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#ktt-strawberry"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>KTT Strawberry
</h3> </h3>
<p> <p>
Buy it from ShopeeVN. I choose this switch because I prefer linear (please Buy it from ShopeeVN. I choose this switch because I prefer linear (please
@ -365,10 +418,15 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4 id="user-content-specs-1"> <h4>
<a class="heading-link" href="#specs-1" <a
>Specs<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-specs-1"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#specs-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Specs
</h4> </h4>
<ul> <ul>
<li>Type: Linear</li> <li>Type: Linear</li>
@ -380,13 +438,15 @@
<li>Spring: Gold plated spring</li> <li>Spring: Gold plated spring</li>
<li>Total travel: 4.0mm</li> <li>Total travel: 4.0mm</li>
</ul> </ul>
<h4 id="user-content-support-links-1"> <h4>
<a class="heading-link" href="#support-links-1" <a
>Support links<span id="user-content-support-links-1"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -411,13 +471,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-skyloong-glacier-silent-red-switch"> <h3>
<a class="heading-link" href="#skyloong-glacier-silent-red-switch" <a
>SKYLOONG Glacier Silent Red Switch<span id="user-content-skyloong-glacier-silent-red-switch"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#skyloong-glacier-silent-red-switch"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>SKYLOONG Glacier Silent Red Switch
</h3> </h3>
<p> <p>
I was given this switch by my friend. Currently using for alpha keys. Love I was given this switch by my friend. Currently using for alpha keys. Love
@ -434,10 +496,15 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4 id="user-content-specs-2"> <h4>
<a class="heading-link" href="#specs-2" <a
>Specs<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-specs-2"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#specs-2"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Specs
</h4> </h4>
<ul> <ul>
<li>Type: Linear</li> <li>Type: Linear</li>
@ -450,13 +517,15 @@
<li>Pre travel: 1.5-2.0mm</li> <li>Pre travel: 1.5-2.0mm</li>
<li>Total travel: 3.8mm</li> <li>Total travel: 3.8mm</li>
</ul> </ul>
<h4 id="user-content-support-links-2"> <h4>
<a class="heading-link" href="#support-links-2" <a
>Support links<span id="user-content-support-links-2"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links-2"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -467,13 +536,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-jwick-yellow-linear-switch"> <h3>
<a class="heading-link" href="#jwick-yellow-linear-switch" <a
>JWICK Yellow Linear Switch<span id="user-content-jwick-yellow-linear-switch"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#jwick-yellow-linear-switch"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>JWICK Yellow Linear Switch
</h3> </h3>
<p> <p>
<a <a
@ -487,10 +558,15 @@
/></a> /></a>
</p> </p>
<p>I was given this switch by my friend, full mod (lube + film).</p> <p>I was given this switch by my friend, full mod (lube + film).</p>
<h4 id="user-content-specs-3"> <h4>
<a class="heading-link" href="#specs-3" <a
>Specs<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-specs-3"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#specs-3"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Specs
</h4> </h4>
<ul> <ul>
<li>Type: Linear</li> <li>Type: Linear</li>
@ -502,13 +578,15 @@
<li>Spring: ???</li> <li>Spring: ???</li>
<li>Total travel: 4 mm</li> <li>Total travel: 4 mm</li>
</ul> </ul>
<h4 id="user-content-support-links-3"> <h4>
<a class="heading-link" href="#support-links-3" <a
>Support links<span id="user-content-support-links-3"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links-3"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -517,13 +595,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-c3-equalz-tangerine-v2"> <h3>
<a class="heading-link" href="#c3-equalz-tangerine-v2" <a
>C3 Equalz Tangerine V2<span id="user-content-c3-equalz-tangerine-v2"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#c3-equalz-tangerine-v2"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>C3 Equalz Tangerine V2
</h3> </h3>
<p> <p>
<a <a
@ -548,10 +628,15 @@
<p> <p>
Buy it from ShopeeVN, friends told it's smooth. I buy the heavier aka 67g. Buy it from ShopeeVN, friends told it's smooth. I buy the heavier aka 67g.
</p> </p>
<h4 id="user-content-specs-4"> <h4>
<a class="heading-link" href="#specs-4" <a
>Specs<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-specs-4"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#specs-4"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Specs
</h4> </h4>
<ul> <ul>
<li>Type: Linear</li> <li>Type: Linear</li>
@ -562,13 +647,15 @@
<li>Spring: ???</li> <li>Spring: ???</li>
<li>Total travel: ???</li> <li>Total travel: ???</li>
</ul> </ul>
<h4 id="user-content-support-links-4"> <h4>
<a class="heading-link" href="#support-links-4" <a
>Support links<span id="user-content-support-links-4"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links-4"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -591,10 +678,15 @@
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-keycap"> <h2>
<a class="heading-link" href="#keycap" <a
>Keycap<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-keycap"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#keycap"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Keycap
</h2> </h2>
<p> <p>
Currently, I use Akko 9009 Cherry Profile and EnjoyPBT 9009 Cherry Currently, I use Akko 9009 Cherry Profile and EnjoyPBT 9009 Cherry
@ -609,13 +701,15 @@
</li> </li>
<li>Check is keycap is tight on switch or not.</li> <li>Check is keycap is tight on switch or not.</li>
</ul> </ul>
<h3 id="user-content-enjobpbt-9009"> <h3>
<a class="heading-link" href="#enjobpbt-9009" <a
>EnjobPBT 9009<span id="user-content-enjobpbt-9009"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#enjobpbt-9009"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>EnjobPBT 9009
</h3> </h3>
<p>I buy vim kit first then base later.</p> <p>I buy vim kit first then base later.</p>
<p> <p>
@ -640,13 +734,15 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4 id="user-content-support-links-5"> <h4>
<a class="heading-link" href="#support-links-5" <a
>Support links<span id="user-content-support-links-5"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links-5"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -664,10 +760,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-pbtfans-bow"> <h3>
<a class="heading-link" href="#pbtfans-bow" <a
>PBTfans BOW<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-pbtfans-bow"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#pbtfans-bow"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>PBTfans BOW
</h3> </h3>
<p>I only buy 40s kit.</p> <p>I only buy 40s kit.</p>
<p> <p>
@ -681,13 +782,15 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4 id="user-content-support-links-6"> <h4>
<a class="heading-link" href="#support-links-6" <a
>Support links<span id="user-content-support-links-6"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#support-links-6"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -698,13 +801,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-color-i-love"> <h3>
<a class="heading-link" href="#color-i-love" <a
>Color I love<span id="user-content-color-i-love"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#color-i-love"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Color I love
</h3> </h3>
<ul> <ul>
<li> <li>
@ -791,10 +896,15 @@
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-tools"> <h2>
<a class="heading-link" href="#tools" <a
>Tools<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-tools"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#tools"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Tools
</h2> </h2>
<ul> <ul>
<li><a href="https://github.com/bloznelis/kbt">bloznelis/kbt</a></li> <li><a href="https://github.com/bloznelis/kbt">bloznelis/kbt</a></li>
@ -810,10 +920,15 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,21 +28,25 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-naming-things"> <h1>
<a class="heading-link" href="#naming-things" <a
>Naming things<span id="user-content-naming-things"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#naming-things"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Naming things
</h1> </h1>
<h2 id="user-content-filename-in-storage-s3-"> <h2>
<a class="heading-link" href="#filename-in-storage-s3-" <a
>Filename in storage (S3, ...)<span id="user-content-filename-in-storage-s3-"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#filename-in-storage-s3-"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Filename in storage (S3, ...)
</h2> </h2>
<p>Always have year, month, day in filename to easily sort it out.</p> <p>Always have year, month, day in filename to easily sort it out.</p>
<p> <p>
@ -63,13 +67,15 @@
backup (as they say, idk if true or not, but less folder mean less backup (as they say, idk if true or not, but less folder mean less
complicated to me). complicated to me).
</p> </p>
<h2 id="user-content-time-variable"> <h2>
<a class="heading-link" href="#time-variable" <a
>Time variable<span id="user-content-time-variable"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#time-variable"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Time variable
</h2> </h2>
<p>Add time postfix to make sense.</p> <p>Add time postfix to make sense.</p>
<p>Instead of <code>create_at</code>, use <code>create_at_ms</code>.</p> <p>Instead of <code>create_at</code>, use <code>create_at_ms</code>.</p>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-my-neovim-workflow"> <h1>
<a class="heading-link" href="#my-neovim-workflow" <a
>My neovim workflow<span id="user-content-my-neovim-workflow"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#my-neovim-workflow"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>My neovim workflow
</h1> </h1>
<p> <p>
<a <a
@ -51,13 +53,15 @@
All configs are in All configs are in
<a href="https://github.com/haunt98/dotfiles">my dotfiles</a>. <a href="https://github.com/haunt98/dotfiles">my dotfiles</a>.
</p> </p>
<h2 id="user-content-trick-or-treat"> <h2>
<a class="heading-link" href="#trick-or-treat" <a
>Trick or treat<span id="user-content-trick-or-treat"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#trick-or-treat"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Trick or treat
</h2> </h2>
<p>Search current word: <code>*</code></p> <p>Search current word: <code>*</code></p>
<p>Search multiple words:</p> <p>Search multiple words:</p>
@ -94,10 +98,15 @@
<div class="highlight highlight-source-viml"> <div class="highlight highlight-source-viml">
<pre>:<span class="pl-k">!</span>column <span class="pl-k">-</span><span class="pl-c1">t</span></pre> <pre>:<span class="pl-k">!</span>column <span class="pl-k">-</span><span class="pl-c1">t</span></pre>
</div> </div>
<h2 id="user-content-jumpo"> <h2>
<a class="heading-link" href="#jumpo" <a
>Jumpo<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-jumpo"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#jumpo"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Jumpo
</h2> </h2>
<p>Basic:</p> <p>Basic:</p>
<ul> <ul>
@ -137,19 +146,29 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h2 id="user-content-fold"> <h2>
<a class="heading-link" href="#fold" <a
>Fold<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-fold"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#fold"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Fold
</h2> </h2>
<ul> <ul>
<li><code>zR</code>: open all folds.</li> <li><code>zR</code>: open all folds.</li>
<li><code>za</code>, <code>zA</code>: toggle fold</li> <li><code>za</code>, <code>zA</code>: toggle fold</li>
</ul> </ul>
<h2 id="user-content-keymap"> <h2>
<a class="heading-link" href="#keymap" <a
>Keymap<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-keymap"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#keymap"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Keymap
</h2> </h2>
<p>Use both <code>\</code> and <code>;</code> as leader key:</p> <p>Use both <code>\</code> and <code>;</code> as leader key:</p>
<div class="highlight highlight-source-lua"> <div class="highlight highlight-source-lua">
@ -305,13 +324,15 @@ vim.<span class="pl-smi">keymap</span>.<span class="pl-c1">set</span>(<span clas
</ul> </ul>
</li> </li>
</ul> </ul>
<h2 id="user-content-references--thanks"> <h2>
<a class="heading-link" href="#references--thanks" <a
>References / Thanks<span id="user-content-references--thanks"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#references--thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>References / Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,21 +28,25 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-things-i-like"> <h1>
<a class="heading-link" href="#things-i-like" <a
>Things I like<span id="user-content-things-i-like"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#things-i-like"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Things I like
</h1> </h1>
<h2 id="user-content-discord-old-naming"> <h2>
<a class="heading-link" href="#discord-old-naming" <a
>Discord (old) naming<span id="user-content-discord-old-naming"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#discord-old-naming"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Discord (old) naming
</h2> </h2>
<p> <p>
The way Discord naming user like<code>Joker#1234</code> is so interesting. The way Discord naming user like<code>Joker#1234</code> is so interesting.
@ -54,13 +58,15 @@
Why it's interesting? Each time I join a new platform, all names I want Why it's interesting? Each time I join a new platform, all names I want
are taken :D are taken :D
</p> </p>
<h2 id="user-content-interesting-website"> <h2>
<a class="heading-link" href="#interesting-website" <a
>Interesting website<span id="user-content-interesting-website"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#interesting-website"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Interesting website
</h2> </h2>
<ul> <ul>
<li><a href="https://deskto.ps/" rel="nofollow">deskto.ps</a></li> <li><a href="https://deskto.ps/" rel="nofollow">deskto.ps</a></li>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-swagger-or-openapi"> <h1>
<a class="heading-link" href="#swagger-or-openapi" <a
>Swagger or OpenAPI<span id="user-content-swagger-or-openapi"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#swagger-or-openapi"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Swagger or OpenAPI
</h1> </h1>
<p>My company currently use Swagger 2 to document API.</p> <p>My company currently use Swagger 2 to document API.</p>
<p> <p>
@ -63,10 +65,15 @@ bunx prettier --write ./docs/swagger.yaml ./docs/swagger.json
<span class="pl-c"><span class="pl-c">#</span> Render locally</span> <span class="pl-c"><span class="pl-c">#</span> Render locally</span>
bunx @redocly/cli preview-docs ./docs/swagger.json</pre> bunx @redocly/cli preview-docs ./docs/swagger.json</pre>
</div> </div>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li><a href="https://github.com/mikefarah/yq">mikefarah/yq</a></li> <li><a href="https://github.com/mikefarah/yq">mikefarah/yq</a></li>

View File

@ -28,37 +28,45 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-my-terminal-workflow"> <h1>
<a class="heading-link" href="#my-terminal-workflow" <a
>My terminal workflow<span id="user-content-my-terminal-workflow"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#my-terminal-workflow"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>My terminal workflow
</h1> </h1>
<p> <p>
All configs are in All configs are in
<a href="https://github.com/haunt98/dotfiles">my dotfiles</a>. <a href="https://github.com/haunt98/dotfiles">my dotfiles</a>.
</p> </p>
<h2 id="user-content-use-junegunnfzf"> <h2>
<a class="heading-link" href="#use-junegunnfzf">Use </a <a
><a href="https://github.com/junegunn/fzf">junegunn/fzf</a> id="user-content-use-junegunnfzf"
<span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-junegunnfzf"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use <a href="https://github.com/junegunn/fzf">junegunn/fzf</a>
</h2> </h2>
<ul> <ul>
<li><code>CTRL-T</code> to fuzzy find files.</li> <li><code>CTRL-T</code> to fuzzy find files.</li>
<li><code>ALT-C</code> to fuzzy find directories.</li> <li><code>ALT-C</code> to fuzzy find directories.</li>
</ul> </ul>
<h2 id="user-content-use-zellij-orgzellij-as-alternative-to-tmux"> <h2>
<a <a
class="heading-link" id="user-content-use-zellij-orgzellij-as-alternative-to-tmux"
href="#use-zellij-orgzellij-as-alternative-to-tmux" class="anchor"
>Use </a
><a href="https://github.com/zellij-org/zellij">zellij-org/zellij</a> as
alternative to tmux<span
aria-hidden="true" aria-hidden="true"
class="octicon octicon-link" tabindex="-1"
></span> href="#use-zellij-orgzellij-as-alternative-to-tmux"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use
<a href="https://github.com/zellij-org/zellij">zellij-org/zellij</a> as
alternative to tmux
</h2> </h2>
<p> <p>
<a <a
@ -80,10 +88,15 @@
<li><code>ALT-]</code>/<code>ALT-[</code>: next/previous tab</li> <li><code>ALT-]</code>/<code>ALT-[</code>: next/previous tab</li>
<li>Hold <code>SHIFT</code> and click on links, text, ...</li> <li>Hold <code>SHIFT</code> and click on links, text, ...</li>
</ul> </ul>
<h2 id="user-content-use-wezwezterm"> <h2>
<a class="heading-link" href="#use-wezwezterm">Use </a <a
><a href="https://github.com/wez/wezterm">wez/wezterm</a> id="user-content-use-wezwezterm"
<span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-wezwezterm"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use <a href="https://github.com/wez/wezterm">wez/wezterm</a>
</h2> </h2>
<ul> <ul>
<li><code>CTRL-SHIFT-F</code>/<code>CMD-F</code>: search mode</li> <li><code>CTRL-SHIFT-F</code>/<code>CMD-F</code>: search mode</li>
@ -91,10 +104,15 @@
<li><code>CTRL-SHIFT-X</code>: copy mode</li> <li><code>CTRL-SHIFT-X</code>: copy mode</li>
<li><code>CMD-SHIFT-[</code>/<code>CMD-SHIFT-]</code>: switch tabs</li> <li><code>CMD-SHIFT-[</code>/<code>CMD-SHIFT-]</code>: switch tabs</li>
</ul> </ul>
<h2 id="user-content-use-nnn"> <h2>
<a class="heading-link" href="#use-nnn">Use </a <a
><a href="https://github.com/jarun/nnn">nnn</a> id="user-content-use-nnn"
<span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-nnn"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Use <a href="https://github.com/jarun/nnn">nnn</a>
</h2> </h2>
<ul> <ul>
<li><code>;-p</code>: preview mode</li> <li><code>;-p</code>: preview mode</li>

View File

@ -28,20 +28,27 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-another-day-another-incident-02"> <h1>
<a class="heading-link" href="#another-day-another-incident-02" <a
>Another day another incident #02<span id="user-content-another-day-another-incident-02"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#another-day-another-incident-02"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Another day another incident #02
</h1> </h1>
<p>Today's incident is all about Go context.</p> <p>Today's incident is all about Go context.</p>
<p>TLDR: context got canceled, but it shouldn't.</p> <p>TLDR: context got canceled, but it shouldn't.</p>
<h2 id="user-content-the-problem"> <h2>
<a class="heading-link" href="#the-problem" <a
>The problem<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-the-problem"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#the-problem"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>The problem
</h2> </h2>
<p>Imagine a chain of APIs:</p> <p>Imagine a chain of APIs:</p>
<ul> <ul>
@ -116,13 +123,15 @@ doB context deadline exceeded</pre
> >
</div> </div>
<p>As you see both <code>doA</code> and <code>doB</code> are canceled.</p> <p>As you see both <code>doA</code> and <code>doB</code> are canceled.</p>
<h2 id="user-content-the-temporary-solution"> <h2>
<a class="heading-link" href="#the-temporary-solution" <a
>The (temporary) solution<span id="user-content-the-temporary-solution"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#the-temporary-solution"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>The (temporary) solution
</h2> </h2>
<p> <p>
Quick Google search leads me to Quick Google search leads me to
@ -237,10 +246,15 @@ doB</pre
As you see only <code>doA</code> is canceled, <code>doB</code> is done As you see only <code>doA</code> is canceled, <code>doB</code> is done
perfectly. And that what we want in this case. perfectly. And that what we want in this case.
</p> </p>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-khoan-cắt-bê-tông-101"> <h1>
<a class="heading-link" href="#khoan-cắt-bê-tông-101" <a
>Khoan cắt bê tông 101<span id="user-content-khoan-cắt-bê-tông-101"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#khoan-cắt-bê-tông-101"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Khoan cắt bê tông 101
</h1> </h1>
<p>The title is a joke.</p> <p>The title is a joke.</p>
<p> <p>

View File

@ -28,24 +28,36 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-userful-tools"> <h1>
<a class="heading-link" href="#userful-tools" <a
>Userful tools<span id="user-content-userful-tools"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#userful-tools"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Userful tools
</h1> </h1>
<p>This just a raw list.</p> <p>This just a raw list.</p>
<h2 id="user-content-tools"> <h2>
<a class="heading-link" href="#tools" <a
>Tools<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-tools"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#tools"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Tools
</h2> </h2>
<h3 id="user-content-terminal"> <h3>
<a class="heading-link" href="#terminal" <a
>Terminal<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-terminal"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#terminal"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Terminal
</h3> </h3>
<ul> <ul>
<li> <li>
@ -372,10 +384,15 @@
> >
</li> </li>
</ul> </ul>
<h4 id="user-content-windows"> <h4>
<a class="heading-link" href="#windows" <a
>Windows<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-windows"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#windows"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Windows
</h4> </h4>
<ul> <ul>
<li> <li>
@ -394,10 +411,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-ui"> <h3>
<a class="heading-link" href="#ui" <a
>UI<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-ui"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#ui"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>UI
</h3> </h3>
<ul> <ul>
<li> <li>
@ -447,10 +469,15 @@
> >
</li> </li>
</ul> </ul>
<h4 id="user-content-macos"> <h4>
<a class="heading-link" href="#macos" <a
>macOS<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-macos"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#macos"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>macOS
</h4> </h4>
<ul> <ul>
<li> <li>
@ -541,18 +568,25 @@
> >
</li> </li>
</ul> </ul>
<h2 id="user-content-developement"> <h2>
<a class="heading-link" href="#developement" <a
>Developement<span id="user-content-developement"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#developement"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Developement
</h2> </h2>
<h3 id="user-content-terminal-1"> <h3>
<a class="heading-link" href="#terminal-1" <a
>Terminal<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-terminal-1"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#terminal-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Terminal
</h3> </h3>
<ul> <ul>
<li> <li>
@ -693,10 +727,15 @@
> >
</li> </li>
</ul> </ul>
<h4 id="user-content-go"> <h4>
<a class="heading-link" href="#go" <a
>Go<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-go"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Go
</h4> </h4>
<ul> <ul>
<li> <li>
@ -740,10 +779,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-ui-1"> <h3>
<a class="heading-link" href="#ui-1" <a
>UI<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-ui-1"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#ui-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>UI
</h3> </h3>
<ul> <ul>
<li> <li>
@ -797,10 +841,15 @@
> >
</li> </li>
</ul> </ul>
<h3 id="user-content-macos-1"> <h3>
<a class="heading-link" href="#macos-1" <a
>macOS<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-macos-1"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#macos-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>macOS
</h3> </h3>
<ul> <ul>
<li> <li>
@ -815,10 +864,15 @@
<a href="https://gpgtools.org/" rel="nofollow">https://gpgtools.org/</a> <a href="https://gpgtools.org/" rel="nofollow">https://gpgtools.org/</a>
</li> </li>
</ul> </ul>
<h2 id="user-content-notes"> <h2>
<a class="heading-link" href="#notes" <a
>Notes<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-notes"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#notes"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Notes
</h2> </h2>
<p> <p>
Prefer <code>nix</code>/<code>go</code>/<code>rust</code>/<code Prefer <code>nix</code>/<code>go</code>/<code>rust</code>/<code
@ -842,16 +896,26 @@
<li>Docker Desktop</li> <li>Docker Desktop</li>
<li>Any JetBrains IDE beside DataGrip</li> <li>Any JetBrains IDE beside DataGrip</li>
</ul> </ul>
<h2 id="user-content-misc"> <h2>
<a class="heading-link" href="#misc" <a
>Misc<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-misc"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#misc"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Misc
</h2> </h2>
<p>Don't enable plugin <code>git</code> in ohmyzsh.</p> <p>Don't enable plugin <code>git</code> in ohmyzsh.</p>
<h3 id="user-content-macos-2"> <h3>
<a class="heading-link" href="#macos-2" <a
>macOS<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-macos-2"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#macos-2"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>macOS
</h3> </h3>
<p>Hide Developer in Spotlight:</p> <p>Hide Developer in Spotlight:</p>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
@ -872,10 +936,15 @@ xcode-select --install</pre>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>pbcopy <span class="pl-k">&lt;</span> /dev/null</pre> <pre>pbcopy <span class="pl-k">&lt;</span> /dev/null</pre>
</div> </div>
<h3 id="user-content-firefox"> <h3>
<a class="heading-link" href="#firefox" <a
>Firefox<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-firefox"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#firefox"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Firefox
</h3> </h3>
<p><code>about:config</code>:</p> <p><code>about:config</code>:</p>
<ul> <ul>
@ -913,10 +982,15 @@ xcode-select --install</pre>
</ul> </ul>
</li> </li>
</ul> </ul>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,20 +28,26 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-throw-away-pastebin"> <h1>
<a class="heading-link" href="#throw-away-pastebin" <a
>Throw away pastebin<span id="user-content-throw-away-pastebin"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#throw-away-pastebin"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Throw away pastebin
</h1> </h1>
<p>Just a place to throw away some text.</p> <p>Just a place to throw away some text.</p>
<h2 id="user-content-gitignore"> <h2>
<a class="heading-link" href="#gitignore" <a
><code>.gitignore</code id="user-content-gitignore"
><span aria-hidden="true" class="octicon octicon-link"></span class="anchor"
></a> aria-hidden="true"
tabindex="-1"
href="#gitignore"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><code>.gitignore</code>
</h2> </h2>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
<pre><span class="pl-c"># macOS</span> <pre><span class="pl-c"># macOS</span>
@ -63,13 +69,15 @@ vendor
<span class="pl-c"># GoReleaser</span> <span class="pl-c"># GoReleaser</span>
dist</pre> dist</pre>
</div> </div>
<h2 id="user-content-github-actions"> <h2>
<a class="heading-link" href="#github-actions" <a
>GitHub Actions<span id="user-content-github-actions"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#github-actions"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>GitHub Actions
</h2> </h2>
<p><code>dependabot.yml</code>:</p> <p><code>dependabot.yml</code>:</p>
<div class="highlight highlight-source-yaml"> <div class="highlight highlight-source-yaml">
@ -144,10 +152,15 @@ dist</pre>
<span class="pl-ent">with</span>: <span class="pl-ent">with</span>:
<span class="pl-ent">version</span>: <span class="pl-s">latest</span></pre> <span class="pl-ent">version</span>: <span class="pl-s">latest</span></pre>
</div> </div>
<h2 id="user-content-go"> <h2>
<a class="heading-link" href="#go" <a
>Go<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-go"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Go
</h2> </h2>
<p><code>.golangci.yml</code>:</p> <p><code>.golangci.yml</code>:</p>
<div class="highlight highlight-source-yaml"> <div class="highlight highlight-source-yaml">
@ -269,13 +282,15 @@ dist</pre>
<span class="pl-ent">skip</span>: <span class="pl-c1">false</span> <span class="pl-ent">skip</span>: <span class="pl-c1">false</span>
<span class="pl-ent">use</span>: <span class="pl-s">github</span></pre> <span class="pl-ent">use</span>: <span class="pl-s">github</span></pre>
</div> </div>
<h1 id="user-content-git-clean-up"> <h1>
<a class="heading-link" href="#git-clean-up" <a
>Git clean up<span id="user-content-git-clean-up"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#git-clean-up"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Git clean up
</h1> </h1>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre><span class="pl-c"><span class="pl-c">#</span> Delete untracked</span> <pre><span class="pl-c"><span class="pl-c">#</span> Delete untracked</span>
@ -283,11 +298,15 @@ git clean -fdx
git gc</pre> git gc</pre>
</div> </div>
<h2 id="user-content-delete-ds_store"> <h2>
<a class="heading-link" href="#delete-ds_store" <a
>Delete <code>.DS_Store</code> id="user-content-delete-ds_store"
<span aria-hidden="true" class="octicon octicon-link"></span class="anchor"
></a> aria-hidden="true"
tabindex="-1"
href="#delete-ds_store"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Delete <code>.DS_Store</code>
</h2> </h2>
<p> <p>
With With
@ -300,19 +319,29 @@ git gc</pre>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>fd -H <span class="pl-s"><span class="pl-pds">'</span>^\.DS_Store$<span class="pl-pds">'</span></span> -tf -X rm</pre> <pre>fd -H <span class="pl-s"><span class="pl-pds">'</span>^\.DS_Store$<span class="pl-pds">'</span></span> -tf -X rm</pre>
</div> </div>
<h2 id="user-content-fdupes"> <h2>
<a class="heading-link" href="#fdupes"></a <a
><a href="https://github.com/adrianlopezroche/fdupes">fdupes</a id="user-content-fdupes"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#fdupes"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/adrianlopezroche/fdupes">fdupes</a>
</h2> </h2>
<p>Remove duplicated files:</p> <p>Remove duplicated files:</p>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>fdupes -rdN <span class="pl-c1">.</span></pre> <pre>fdupes -rdN <span class="pl-c1">.</span></pre>
</div> </div>
<h2 id="user-content-rsync"> <h2>
<a class="heading-link" href="#rsync"></a <a
><a href="https://github.com/WayneD/rsync">rsync</a id="user-content-rsync"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#rsync"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/WayneD/rsync">rsync</a>
</h2> </h2>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre><span class="pl-c"><span class="pl-c">#</span> Result is dst/src</span> <pre><span class="pl-c"><span class="pl-c">#</span> Result is dst/src</span>
@ -342,20 +371,30 @@ rsync -avzP src/ dst</pre>
in <strong>src</strong>, useful to sync dst with src in <strong>src</strong>, useful to sync dst with src
</li> </li>
</ul> </ul>
<h2 id="user-content-f2"> <h2>
<a class="heading-link" href="#f2"></a <a
><a href="https://github.com/ayoisaiah/f2">F2</a id="user-content-f2"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#f2"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/ayoisaiah/f2">F2</a>
</h2> </h2>
<p>Rename:</p> <p>Rename:</p>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre><span class="pl-c"><span class="pl-c">#</span> If want dry run, remove -x</span> <pre><span class="pl-c"><span class="pl-c">#</span> If want dry run, remove -x</span>
f2 -r <span class="pl-s"><span class="pl-pds">"</span>{mtime.YYYY}{mtime.MM}{mtime.DD}.{mtime.H}{mtime.mm}{mtime.ss}{ext}<span class="pl-pds">"</span></span> -x</pre> f2 -r <span class="pl-s"><span class="pl-pds">"</span>{mtime.YYYY}{mtime.MM}{mtime.DD}.{mtime.H}{mtime.mm}{mtime.ss}{ext}<span class="pl-pds">"</span></span> -x</pre>
</div> </div>
<h2 id="user-content-instaloader"> <h2>
<a class="heading-link" href="#instaloader"></a <a
><a href="https://github.com/instaloader/instaloader">Instaloader</a id="user-content-instaloader"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#instaloader"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/instaloader/instaloader">Instaloader</a>
</h2> </h2>
<p><code>args.txt</code>:</p> <p><code>args.txt</code>:</p>
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
@ -381,10 +420,15 @@ f2 -r <span class="pl-s"><span class="pl-pds">"</span>{mtime.YYYY}{mtime.MM}{mti
<div class="highlight highlight-text-adblock"> <div class="highlight highlight-text-adblock">
<pre>instaloader +login.txt +args.txt +targets.txt</pre> <pre>instaloader +login.txt +args.txt +targets.txt</pre>
</div> </div>
<h2 id="user-content-grpcurl"> <h2>
<a class="heading-link" href="#grpcurl"></a <a
><a href="https://github.com/fullstorydev/grpcurl">gRPCurl</a id="user-content-grpcurl"
><span aria-hidden="true" class="octicon octicon-link"></span> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#grpcurl"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://github.com/fullstorydev/grpcurl">gRPCurl</a>
</h2> </h2>
<div class="highlight highlight-source-shell"> <div class="highlight highlight-source-shell">
<pre>grpcurl -proto path/file.proto \ <pre>grpcurl -proto path/file.proto \

View File

@ -28,21 +28,28 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-fan-android"> <h1>
<a class="heading-link" href="#fan-android" <a
>F(an) android<span id="user-content-fan-android"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#fan-android"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>F(an) android
</h1> </h1>
<p>You know what I mean :D</p> <p>You know what I mean :D</p>
<p>Just a collection/checklist while using Android phone.</p> <p>Just a collection/checklist while using Android phone.</p>
<p>All Android phones are bloat.</p> <p>All Android phones are bloat.</p>
<h2 id="user-content-apps"> <h2>
<a class="heading-link" href="#apps" <a
>Apps<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-apps"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#apps"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Apps
</h2> </h2>
<p> <p>
Use <a href="https://f-droid.org/en/" rel="nofollow">F-Droid</a> with Use <a href="https://f-droid.org/en/" rel="nofollow">F-Droid</a> with

View File

@ -28,19 +28,26 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-redis"> <h1>
<a class="heading-link" href="#redis" <a
>Redis<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-redis"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#redis"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Redis
</h1> </h1>
<p>Just to save my noted for future me using Redis again.</p> <p>Just to save my noted for future me using Redis again.</p>
<h2 id="user-content-redis-does-not-store-creation-time-of-keys"> <h2>
<a class="heading-link" href="#redis-does-not-store-creation-time-of-keys" <a
>Redis does not store creation time of keys<span id="user-content-redis-does-not-store-creation-time-of-keys"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#redis-does-not-store-creation-time-of-keys"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Redis does not store creation time of keys
</h2> </h2>
<p>Why? Because TODO</p> <p>Why? Because TODO</p>
<p> <p>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-cache-shenanigan"> <h1>
<a class="heading-link" href="#cache-shenanigan" <a
>Cache shenanigan<span id="user-content-cache-shenanigan"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#cache-shenanigan"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Cache shenanigan
</h1> </h1>
<p> <p>
My notes/mistakes/... when using cache (mainly Redis) from time to time My notes/mistakes/... when using cache (mainly Redis) from time to time
@ -82,10 +84,15 @@
database has new value, but cache has old value Then when we read again, database has new value, but cache has old value Then when we read again,
we read cache first with old value, and that is disaster. we read cache first with old value, and that is disaster.
</p> </p>
<h2 id="user-content-thanks"> <h2>
<a class="heading-link" href="#thanks" <a
>Thanks<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-thanks"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#thanks"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,10 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-vscode"> <h1>
<a class="heading-link" href="#vscode" <a
>VSCode<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-vscode"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#vscode"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>VSCode
</h1> </h1>
<p>Favortite settings everytime I install VSCode.</p> <p>Favortite settings everytime I install VSCode.</p>
<p> <p>

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-hardware-101"> <h1>
<a class="heading-link" href="#hardware-101" <a
>Hardware 101<span id="user-content-hardware-101"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#hardware-101"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Hardware 101
</h1> </h1>
<p> <p>
Just kidding. It's only my collect data about which hardware to use/buy. Just kidding. It's only my collect data about which hardware to use/buy.

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-real-world-crypto-101"> <h1>
<a class="heading-link" href="#real-world-crypto-101" <a
>Real World Crypto 101<span id="user-content-real-world-crypto-101"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#real-world-crypto-101"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Real World Crypto 101
</h1> </h1>
<p> <p>
My notes when reading My notes when reading
@ -44,16 +46,16 @@
>Real-World Cryptography</a >Real-World Cryptography</a
> >
</p> </p>
<h2 id="user-content-hash-function-convert-from-input-to-digest"> <h2>
<a <a
class="heading-link" id="user-content-hash-function-convert-from-input-to-digest"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#hash-function-convert-from-input-to-digest" href="#hash-function-convert-from-input-to-digest"
> ><span aria-hidden="true" class="octicon octicon-link"></span
<strong>Hash</strong> function convert from input to digest<span
aria-hidden="true"
class="octicon octicon-link"
></span
></a> ></a>
<strong>Hash</strong> function convert from input to digest
</h2> </h2>
<ul> <ul>
<li>Pre-image resistance: Given digest, can not find input</li> <li>Pre-image resistance: Given digest, can not find input</li>
@ -63,19 +65,17 @@
</li> </li>
<li>Collision resistance: Can not find 2 input produce same digest.</li> <li>Collision resistance: Can not find 2 input produce same digest.</li>
</ul> </ul>
<h2 <h2>
id="user-content-mac-aka-message-authentication-code-produce-from-key-message-to-authentication-tag"
>
<a <a
class="heading-link" id="user-content-mac-aka-message-authentication-code-produce-from-key-message-to-authentication-tag"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#mac-aka-message-authentication-code-produce-from-key-message-to-authentication-tag" href="#mac-aka-message-authentication-code-produce-from-key-message-to-authentication-tag"
> ><span aria-hidden="true" class="octicon octicon-link"></span
<strong>MAC</strong> aka Message Authentication Code produce from key,
message to authentication tag.<span
aria-hidden="true"
class="octicon octicon-link"
></span
></a> ></a>
<strong>MAC</strong> aka Message Authentication Code produce from key,
message to authentication tag.
</h2> </h2>
<ul> <ul>
<li>A send B message with MAC (generate from message and A key).</li> <li>A send B message with MAC (generate from message and A key).</li>
@ -141,10 +141,15 @@
<span class="pl-ent">bob </span><span class="pl-k">--&gt;&gt;</span> <span class="pl-ent">alice</span><span class="pl-k">:</span> <span class="pl-s">return ERROR</span></pre> <span class="pl-ent">bob </span><span class="pl-k">--&gt;&gt;</span> <span class="pl-ent">alice</span><span class="pl-k">:</span> <span class="pl-s">return ERROR</span></pre>
</div> </div>
<p><strong>HMAC</strong> is MAC using hash</p> <p><strong>HMAC</strong> is MAC using hash</p>
<h2 id="user-content-aes"> <h2>
<a class="heading-link" href="#aes" <a
>AES<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-aes"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#aes"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>AES
</h2> </h2>
<p> <p>
Currently (2023) the world using AES-128 which take a key 128 bits == 16 Currently (2023) the world using AES-128 which take a key 128 bits == 16

View File

@ -28,13 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-vietnam-survivor"> <h1>
<a class="heading-link" href="#vietnam-survivor" <a
>Vietnam survivor<span id="user-content-vietnam-survivor"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#vietnam-survivor"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Vietnam survivor
</h1> </h1>
<p>Written by Vietnamese for Vietnamese.</p> <p>Written by Vietnamese for Vietnamese.</p>
<p>Every Vietnamese person must/should has:</p> <p>Every Vietnamese person must/should has:</p>

View File

@ -28,10 +28,15 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-bloguru"> <h1>
<a class="heading-link" href="#bloguru" <a
>Bloguru<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-bloguru"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#bloguru"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Bloguru
</h1> </h1>
<p>No intro, this is list of RSS reader I follow:</p> <p>No intro, this is list of RSS reader I follow:</p>
<p>Not personal blogs:</p> <p>Not personal blogs:</p>

View File

@ -28,25 +28,33 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1 id="user-content-unrelated-engineer"> <h1>
<a class="heading-link" href="#unrelated-engineer" <a
>Unrelated engineer<span id="user-content-unrelated-engineer"
aria-hidden="true" class="anchor"
class="octicon octicon-link" aria-hidden="true"
></span tabindex="-1"
></a> href="#unrelated-engineer"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Unrelated engineer
</h1> </h1>
<p> <p>
This is collect of thoughts after I travel around the Internet. Not This is collect of thoughts after I travel around the Internet. Not
engineering related though. engineering related though.
</p> </p>
<h2 id="user-content-give-it-five-minutes"> <h2>
<a class="heading-link" href="#give-it-five-minutes"></a <a
id="user-content-give-it-five-minutes"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#give-it-five-minutes"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a ><a
href="https://signalvnoise.com/posts/3124-give-it-five-minutes" href="https://signalvnoise.com/posts/3124-give-it-five-minutes"
rel="nofollow" rel="nofollow"
>Give it five minutes</a >Give it five minutes</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<blockquote> <blockquote>
<p> <p>
@ -68,11 +76,17 @@
there too: It may be worth it. there too: It may be worth it.
</p> </p>
</blockquote> </blockquote>
<h2 id="user-content-never-say-no-but-rarely-say-yes"> <h2>
<a class="heading-link" href="#never-say-no-but-rarely-say-yes"></a <a
id="user-content-never-say-no-but-rarely-say-yes"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#never-say-no-but-rarely-say-yes"
><span aria-hidden="true" class="octicon octicon-link"></span></a
><a href="https://longform.asmartbear.com/say-yes/" rel="nofollow" ><a href="https://longform.asmartbear.com/say-yes/" rel="nofollow"
>Never say “no,” but rarely say “yes.”</a >Never say “no,” but rarely say “yes.”</a
><span aria-hidden="true" class="octicon octicon-link"></span> >
</h2> </h2>
<blockquote> <blockquote>
<p> <p>

View File

@ -25,10 +25,15 @@
} }
</style> </style>
<body class="markdown-body"> <body class="markdown-body">
<h1 id="user-content-index"> <h1>
<a class="heading-link" href="#index" <a
>Index<span aria-hidden="true" class="octicon octicon-link"></span id="user-content-index"
></a> class="anchor"
aria-hidden="true"
tabindex="-1"
href="#index"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Index
</h1> </h1>
<p>This is where I dump my thoughts.</p> <p>This is where I dump my thoughts.</p>
<ul> <ul>

View File

@ -123,3 +123,17 @@ Links to download games, ... for PS3:
- [NoPayStation](https://nopaystation.com/) - [NoPayStation](https://nopaystation.com/)
- [PS3 Games Updates](http://demo.aldostools.org/updates.html) - [PS3 Games Updates](http://demo.aldostools.org/updates.html)
## Windows games
- [Resident Evil: Village](https://fitgirl-repacks.site/resident-evil-village/)
- [Resident Evil 4](https://fitgirl-repacks.site/resident-evil-4-hd-project/)
- [Resident Evil 7: Biohazard](https://fitgirl-repacks.site/resident-evil-7-biohazard/)
- [Resident Evil 3](https://fitgirl-repacks.site/resident-evil-3/)
- [RESIDENT EVIL 2](https://fitgirl-repacks.site/resident-evil-2-deluxe-edition/)
- [God of War](https://fitgirl-repacks.site/god-of-war/)
- [Dark Souls Remastered](https://fitgirl-repacks.site/dark-souls-remastered/)
- [Dark Souls 3](https://fitgirl-repacks.site/dark-souls-3/)
- [Sekiro: Shadows Die Twice](https://fitgirl-repacks.site/sekiro-shadows-die-twice/)
- [ELDEN RING](https://fitgirl-repacks.site/elden-ring/)
- [Cyberpunk 2077](https://fitgirl-repacks.site/cyberpunk-2077/)