feat: re gen

main
sudo pacman -Syu 2023-09-22 23:40:26 +07:00
parent 580959d7f8
commit 68582e14b7
34 changed files with 1214 additions and 1960 deletions

View File

@ -28,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-backup-my-way">
<a <a class="heading-link" href="#backup-my-way"
id="user-content-backup-my-way" >Backup my way<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#backup-my-way" ></a>
><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
@ -153,15 +151,13 @@
<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> <h2 id="user-content-how-to-backup">
<a <a class="heading-link" href="#how-to-backup"
id="user-content-how-to-backup" >How to backup<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#how-to-backup" ></a>
><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,
@ -262,15 +258,13 @@ 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> <h3 id="user-content-backup-work-related-data">
<a <a class="heading-link" href="#backup-work-related-data"
id="user-content-backup-work-related-data" >Backup work related data<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#backup-work-related-data" ></a>
><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>
@ -285,15 +279,13 @@ 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> <h2 id="user-content-recovery-strategy">
<a <a class="heading-link" href="#recovery-strategy"
id="user-content-recovery-strategy" >Recovery strategy<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#recovery-strategy" ></a>
><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
@ -316,15 +308,10 @@ 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> <h2 id="user-content-misc">
<a <a class="heading-link" href="#misc"
id="user-content-misc" >Misc<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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
@ -334,15 +321,10 @@ 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> <h2 id="user-content-the-end">
<a <a class="heading-link" href="#the-end"
id="user-content-the-end" >The end<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-dockerfile-for-go">
<a <a class="heading-link" href="#dockerfile-for-go"
id="user-content-dockerfile-for-go" >Dockerfile for Go<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#dockerfile-for-go" ></a>
><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
@ -165,15 +163,10 @@
<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> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-bootstrap-go">
<a <a class="heading-link" href="#bootstrap-go"
id="user-content-bootstrap-go" >Bootstrap Go<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#bootstrap-go" ></a>
><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
@ -44,15 +42,10 @@
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> <h2 id="user-content-structure">
<a <a class="heading-link" href="#structure"
id="user-content-structure" >Structure<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -135,15 +128,13 @@ internal
<code>business</code>. <code>business</code>.
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-do-not-repeat">
<a <a class="heading-link" href="#do-not-repeat"
id="user-content-do-not-repeat" >Do not repeat!<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#do-not-repeat" ></a>
><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>
@ -157,25 +148,21 @@ 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> <h2 id="user-content-taste-on-style-guide">
<a <a class="heading-link" href="#taste-on-style-guide"
id="user-content-taste-on-style-guide" >Taste on style guide<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#taste-on-style-guide" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Taste on style guide
</h2> </h2>
<h3> <h3 id="user-content-stop-using-global-var">
<a <a class="heading-link" href="#stop-using-global-var"
id="user-content-stop-using-global-var" >Stop using global var<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#stop-using-global-var" ></a>
><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
@ -186,15 +173,13 @@ 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> <h3 id="user-content-use-functional-options-but-dont-overuse-it">
<a <a class="heading-link" href="#use-functional-options-but-dont-overuse-it"
id="user-content-use-functional-options-but-dont-overuse-it" >Use functional options, but don't overuse it!<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#use-functional-options-but-dont-overuse-it" ></a>
><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.
@ -240,19 +225,15 @@ 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> <h3 id="user-content-use-errgroup-as-much-as-possible">
<a <a class="heading-link" href="#use-errgroup-as-much-as-possible">Use </a
id="user-content-use-errgroup-as-much-as-possible" ><a href="https://pkg.go.dev/golang.org/x/sync/errgroup" rel="nofollow"
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 as much as possible<span
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
@ -285,35 +266,33 @@ internal
<span class="pl-c">// Handle error</span> <span class="pl-c">// Handle error</span>
}</pre> }</pre>
</div> </div>
<h3> <h3 id="user-content-use-semaphore-when-need-to-implement-workerpool">
<a <a
id="user-content-use-semaphore-when-need-to-implement-workerpool" class="heading-link"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-semaphore-when-need-to-implement-workerpool" href="#use-semaphore-when-need-to-implement-workerpool"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Use </a
>Use ><a href="https://pkg.go.dev/golang.org/x/sync/semaphore" rel="nofollow"
<a href="https://pkg.go.dev/golang.org/x/sync/semaphore" rel="nofollow"
>semaphore</a >semaphore</a
> >
when need to implement WorkerPool when need to implement WorkerPool<span
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
id="user-content-use-syncpool-when-need-to-reuse-object-mainly-for-bytesbuffer" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Use </a
>Use ><a href="https://pkg.go.dev/sync#Pool" rel="nofollow">sync.Pool</a> when
<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">
@ -343,39 +322,33 @@ 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>
<h2> <h2 id="user-content-external-libs">
<a <a class="heading-link" href="#external-libs"
id="user-content-external-libs" >External libs<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#external-libs" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>External libs
</h2> </h2>
<h3> <h3 id="user-content-no-need-vendor">
<a <a class="heading-link" href="#no-need-vendor"
id="user-content-no-need-vendor" >No need <code>vendor</code>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span
aria-hidden="true" ></a>
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> <h3 id="user-content-use-buildgo-to-include-build-tools-in-gomod">
<a <a
id="user-content-use-buildgo-to-include-build-tools-in-gomod" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Use <code>build.go</code> to include build tools in go.mod<span
>Use <code>build.go</code> to include build tools in go.mod aria-hidden="true"
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,18 +371,16 @@ 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
id="user-content-dont-use-cli-libs-spf13cobra-urfavecli-just-for-go-service" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Don't use cli libs (</a
>Don't use cli libs (<a href="https://github.com/spf13/cobra" ><a href="https://github.com/spf13/cobra">spf13/cobra</a>,
>spf13/cobra</a <a href="https://github.com/urfave/cli">urfave/cli</a>) just for Go
>, <a href="https://github.com/urfave/cli">urfave/cli</a>) just for Go service<span aria-hidden="true" class="octicon octicon-link"></span>
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>,
@ -422,18 +393,13 @@ 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> <h3 id="user-content-dont-use-grpc-ecosystemgrpc-gateway">
<a <a class="heading-link" href="#dont-use-grpc-ecosystemgrpc-gateway"
id="user-content-dont-use-grpc-ecosystemgrpc-gateway" >Don't use </a
class="anchor" ><a href="https://github.com/grpc-ecosystem/grpc-gateway"
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>
@ -446,31 +412,21 @@ 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> <h3 id="user-content-dont-use-uberprototool-use-bufbuildbuf">
<a <a class="heading-link" href="#dont-use-uberprototool-use-bufbuildbuf"
id="user-content-dont-use-uberprototool-use-bufbuildbuf" >Don't use </a
class="anchor" ><a href="https://github.com/uber/prototool">uber/prototool</a>, use
aria-hidden="true" <a href="https://github.com/bufbuild/buf">bufbuild/buf</a>
tabindex="-1" <span aria-hidden="true" class="octicon octicon-link"></span>
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> <h3 id="user-content-use-gin-gonicgin-for-rest">
<a <a class="heading-link" href="#use-gin-gonicgin-for-rest">Use </a
id="user-content-use-gin-gonicgin-for-rest" ><a href="https://github.com/gin-gonic/gin">gin-gonic/gin</a> for
class="anchor" REST.<span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -491,16 +447,11 @@ internal
} }
}()</pre> }()</pre>
</div> </div>
<h3> <h3 id="user-content-if-you-want-log-just-use-uber-gozap">
<a <a class="heading-link" href="#if-you-want-log-just-use-uber-gozap"
id="user-content-if-you-want-log-just-use-uber-gozap" >If you want log, just use </a
class="anchor" ><a href="https://github.com/uber-go/zap">uber-go/zap</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -523,16 +474,11 @@ internal
for easily debug. for easily debug.
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-to-read-config-use-spf13viper">
<a <a class="heading-link" href="#to-read-config-use-spf13viper"
id="user-content-to-read-config-use-spf13viper" >To read config, use </a
class="anchor" ><a href="https://github.com/spf13/viper">spf13/viper</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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
@ -547,15 +493,17 @@ 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
id="user-content-dont-overuse-orm-libs-no-need-to-handle-another-layer-above-sql" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Don't overuse ORM libs, no need to handle another layer above SQL.<span
>Don't overuse ORM libs, no need to handle another layer above SQL. aria-hidden="true"
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
@ -577,16 +525,11 @@ 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> <h3 id="user-content-connect-redis-with-redisgo-redis">
<a <a class="heading-link" href="#connect-redis-with-redisgo-redis"
id="user-content-connect-redis-with-redisgo-redis" >Connect Redis with </a
class="anchor" ><a href="https://github.com/redis/go-redis">redis/go-redis</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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
@ -648,16 +591,11 @@ internal
<ul> <ul>
<li><code>ReadTimeout</code>, <code>WriteTimeout</code></li> <li><code>ReadTimeout</code>, <code>WriteTimeout</code></li>
</ul> </ul>
<h3> <h3 id="user-content-connect-mysql-with-go-sql-drivermysql">
<a <a class="heading-link" href="#connect-mysql-with-go-sql-drivermysql"
id="user-content-connect-mysql-with-go-sql-drivermysql" >Connect MySQL with </a
class="anchor" ><a href="https://github.com/go-sql-driver/mysql">go-sql-driver/mysql</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -669,18 +607,13 @@ 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> <h3 id="user-content-connect-sqlite-with-moderncorgsqlite">
<a <a class="heading-link" href="#connect-sqlite-with-moderncorgsqlite"
id="user-content-connect-sqlite-with-moderncorgsqlite" >Connect SQLite with </a
class="anchor" ><a href="https://gitlab.com/cznic/sqlite" rel="nofollow"
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>
@ -694,15 +627,11 @@ 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> <h3 id="user-content-connect-kafka-with-ibmsarama">
<a <a class="heading-link" href="#connect-kafka-with-ibmsarama"
id="user-content-connect-kafka-with-ibmsarama" >Connect Kafka with </a
class="anchor" ><a href="https://github.com/IBM/sarama">IBM/sarama</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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
@ -714,32 +643,26 @@ 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> <h3 id="user-content-if-you-want-test-just-use-stretchrtestify">
<a <a class="heading-link" href="#if-you-want-test-just-use-stretchrtestify"
id="user-content-if-you-want-test-just-use-stretchrtestify" >If you want test, just use </a
class="anchor" ><a href="https://github.com/stretchr/testify">stretchr/testify</a>.<span
aria-hidden="true" aria-hidden="true"
tabindex="-1" class="octicon octicon-link"
href="#if-you-want-test-just-use-stretchrtestify" ></span>
><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> <h3 id="user-content-if-need-to-mock-choose-matryermoq-or-ubermock">
<a <a
id="user-content-if-need-to-mock-choose-matryermoq-or-ubermock" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >If need to mock, choose </a
>If need to mock, choose ><a href="https://github.com/matryer/moq">matryer/moq</a> or
<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
@ -751,15 +674,11 @@ 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> <h3 id="user-content-be-careful-with-spf13cast">
<a <a class="heading-link" href="#be-careful-with-spf13cast"
id="user-content-be-careful-with-spf13cast" >Be careful with </a
class="anchor" ><a href="https://github.com/spf13/cast">spf13/cast</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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">
@ -769,21 +688,22 @@ 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
id="user-content-use-stringer-if-you-want-your-type-enum-can-be-print-as-string" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Use </a
>Use ><a
<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 if you want your type enum can be print as string<span
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>
@ -800,51 +720,40 @@ 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
id="user-content-dont-waste-your-time-rewrite-rate-limiter-if-your-use-case-is-simple-use-rate-or-go-redisredis_rate" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Don't waste your time rewrite rate limiter if your use case is simple,
>Don't waste your time rewrite rate limiter if your use case is simple, use </a
use ><a href="https://pkg.go.dev/golang.org/x/time/rate" rel="nofollow"
<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> <h3 id="user-content-replace-go-fmt-goimports-with-mvdangofumpt">
<a <a class="heading-link" href="#replace-go-fmt-goimports-with-mvdangofumpt"
id="user-content-replace-go-fmt-goimports-with-mvdangofumpt" >Replace <code>go fmt</code>, <code>goimports</code> with </a
class="anchor" ><a href="https://github.com/mvdan/gofumpt">mvdan/gofumpt</a>.<span
aria-hidden="true" aria-hidden="true"
tabindex="-1" class="octicon octicon-link"
href="#replace-go-fmt-goimports-with-mvdangofumpt" ></span>
><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> <h3 id="user-content-use-golangcigolangci-lint">
<a <a class="heading-link" href="#use-golangcigolangci-lint">Use </a
id="user-content-use-golangcigolangci-lint" ><a href="https://github.com/golangci/golangci-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>
@ -863,15 +772,13 @@ 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> <h2 id="user-content-snippetscript">
<a <a class="heading-link" href="#snippetscript"
id="user-content-snippetscript" >Snippet/script<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#snippetscript" ></a>
><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">
@ -881,15 +788,10 @@ 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> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-uuid-or-else">
<a <a class="heading-link" href="#uuid-or-else"
id="user-content-uuid-or-else" >UUID or else<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#uuid-or-else" ></a>
><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
@ -56,15 +54,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> <h2 id="user-content-first-use-case-is-trace-id-or-context-aware-id">
<a <a
id="user-content-first-use-case-is-trace-id-or-context-aware-id" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >First use case is trace ID, or context aware ID<span
>First use case is trace ID, or context aware ID aria-hidden="true"
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
@ -76,15 +74,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> <h2 id="user-content-second-use-case-is-primary-key-also-hard-choice">
<a <a
id="user-content-second-use-case-is-primary-key-also-hard-choice" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Second use case is primary key, also hard choice<span
>Second use case is primary key, also hard choice aria-hidden="true"
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,
@ -101,29 +99,19 @@
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> <h2 id="user-content-what-else">
<a <a class="heading-link" href="#what-else"
id="user-content-what-else" >What else?<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,11 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-migrate-to-buf-from-prototool">
<a <a class="heading-link" href="#migrate-to-buf-from-prototool"
id="user-content-migrate-to-buf-from-prototool" >Migrate to <code>buf</code> from <code>prototool</code>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span
aria-hidden="true" ></a>
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
@ -146,15 +142,10 @@
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> <h2 id="user-content-faq">
<a <a class="heading-link" href="#faq"
id="user-content-faq" >FAQ<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>,
@ -204,15 +195,10 @@
compatibility. compatibility.
</li> </li>
</ul> </ul>
<h1> <h1 id="user-content-tips">
<a <a class="heading-link" href="#tips"
id="user-content-tips" >Tips<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -225,15 +211,10 @@
<code>sed</code> to fix the damn things. <code>sed</code> to fix the damn things.
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h1 id="user-content-experiment-go">
<a <a class="heading-link" href="#experiment-go"
id="user-content-experiment-go" >Experiment Go<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#experiment-go" ></a>
><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>
<h1> <h1
id="user-content-design-api-by-trimming-down-the-interfacestruct-or-whatever"
>
<a <a
id="user-content-design-api-by-trimming-down-the-interfacestruct-or-whatever" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Design API by trimming down the interface/struct or whatever<span
>Design API by trimming down the interface/struct or whatever aria-hidden="true"
class="octicon octicon-link"
></span
></a>
</h1> </h1>
<p>Instead of:</p> <p>Instead of:</p>
<div class="highlight highlight-source-go"> <div class="highlight highlight-source-go">
@ -104,16 +104,11 @@
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> <h2 id="user-content-find-alternative-to-grpcgrpc-go">
<a <a class="heading-link" href="#find-alternative-to-grpcgrpc-go"
id="user-content-find-alternative-to-grpcgrpc-go" >Find alternative to </a
class="anchor" ><a href="https://github.com/grpc/grpc-go">grpc/grpc-go</a>
aria-hidden="true" <span aria-hidden="true" class="octicon octicon-link"></span>
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?
@ -146,15 +141,10 @@
<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> <h1 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,10 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-sql">
<a <a class="heading-link" href="#sql"
id="user-content-sql" >SQL<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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
@ -48,29 +43,25 @@
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> <h2 id="user-content-stay-away-from-database-unique-id">
<a <a class="heading-link" href="#stay-away-from-database-unique-id"
id="user-content-stay-away-from-database-unique-id" >Stay away from database unique id<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#stay-away-from-database-unique-id" ></a>
><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> <h2 id="user-content-stay-away-from-database-timestamp">
<a <a class="heading-link" href="#stay-away-from-database-timestamp"
id="user-content-stay-away-from-database-timestamp" >Stay away from database timestamp<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#stay-away-from-database-timestamp" ></a>
><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
@ -89,15 +80,13 @@
[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> <h2 id="user-content-extra-field-for-extra-things">
<a <a class="heading-link" href="#extra-field-for-extra-things"
id="user-content-extra-field-for-extra-things" >Extra field for extra things<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#extra-field-for-extra-things" ></a>
><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.
@ -106,15 +95,13 @@
</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> <h2 id="user-content-use-index">
<a <a class="heading-link" href="#use-index"
id="user-content-use-index" >Use index!!!<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#use-index" ></a>
><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
@ -157,15 +144,13 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-be-careful-with-null">
<a <a class="heading-link" href="#be-careful-with-null"
id="user-content-be-careful-with-null" >Be careful with NULL<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#be-careful-with-null" ></a>
><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
@ -185,46 +170,36 @@
<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> <h2 id="user-content-varchar-or-text">
<a <a class="heading-link" href="#varchar-or-text">
id="user-content-varchar-or-text" <code>VARCHAR</code> or <code>TEXT</code>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span
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> <h2 id="user-content-limit">
<a <a class="heading-link" href="#limit"
id="user-content-limit" ><code>LIMIT</code
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span
aria-hidden="true" ></a>
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
id="user-content-be-super-careful-when-migrate-update-database-on-production-and-online" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Be super careful when migrate, update database on production and
>Be super careful when migrate, update database on production and online!!!<span aria-hidden="true" class="octicon octicon-link"></span
online!!! ></a>
</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
@ -257,26 +232,16 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-heathcheck">
<a <a class="heading-link" href="#heathcheck"
id="user-content-heathcheck" >Heathcheck<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h2 id="user-content-tools">
<a <a class="heading-link" href="#tools"
id="user-content-tools" >Tools<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#tools"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Tools
</h2> </h2>
<ul> <ul>
<li> <li>
@ -289,15 +254,10 @@
database reality :) database reality :)
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,26 +28,16 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-gitignore">
<a <a class="heading-link" href="#gitignore"
id="user-content-gitignore" >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
>gitignore
</h1> </h1>
<p>My quick check for <code>.gitignore</code>.</p> <p>My quick check for <code>.gitignore</code>.</p>
<h2> <h2 id="user-content-base">
<a <a class="heading-link" href="#base"
id="user-content-base" >Base<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -62,15 +52,10 @@
<span class="pl-c"># VSCode</span> <span class="pl-c"># VSCode</span>
.vscode/</pre> .vscode/</pre>
</div> </div>
<h2> <h2 id="user-content-go">
<a <a class="heading-link" href="#go"
id="user-content-go" >Go<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -80,15 +65,10 @@ 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> <h2 id="user-content-python">
<a <a class="heading-link" href="#python"
id="user-content-python" >Python<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-reload-config">
<a <a class="heading-link" href="#reload-config"
id="user-content-reload-config" >Reload config<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#reload-config" ></a>
><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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-install-arch-linux">
<a <a class="heading-link" href="#install-arch-linux"
id="user-content-install-arch-linux" >Install Arch Linux<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#install-arch-linux" ></a>
><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
@ -46,29 +44,21 @@
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> <h2 id="user-content-installation-guide">
<a <a class="heading-link" href="#installation-guide"></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> <h3 id="user-content-pre-installation">
<a <a class="heading-link" href="#pre-installation"
id="user-content-pre-installation" >Pre-installation<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#pre-installation" ></a>
><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>
@ -79,43 +69,37 @@
>USB flash installation medium</a >USB flash installation medium</a
> >
</p> </p>
<h4> <h4 id="user-content-verify-the-boot-mode">
<a <a class="heading-link" href="#verify-the-boot-mode"
id="user-content-verify-the-boot-mode" >Verify the boot mode<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#verify-the-boot-mode" ></a>
><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> <h4 id="user-content-connect-to-the-internet">
<a <a class="heading-link" href="#connect-to-the-internet"
id="user-content-connect-to-the-internet" >Connect to the internet<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#connect-to-the-internet" ></a>
><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> <h4 id="user-content-partition-the-disks">
<a <a class="heading-link" href="#partition-the-disks"
id="user-content-partition-the-disks" >Partition the disks<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#partition-the-disks" ></a>
><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"
@ -240,15 +224,13 @@ 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> <h3 id="user-content-installation">
<a <a class="heading-link" href="#installation"
id="user-content-installation" >Installation<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#installation" ></a>
><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
@ -268,53 +250,32 @@ 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> <h3 id="user-content-configure">
<a <a class="heading-link" href="#configure"
id="user-content-configure" >Configure<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#configure"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Configure
</h3> </h3>
<h4> <h4 id="user-content-fstab">
<a <a class="heading-link" href="#fstab"></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> <h4 id="user-content-chroot">
<a <a class="heading-link" href="#chroot"
id="user-content-chroot" >Chroot<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h4 id="user-content-time-zone">
<a <a class="heading-link" href="#time-zone"
id="user-content-time-zone" >Time zone<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -323,15 +284,13 @@ ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc</pre hwclock --systohc</pre
> >
</div> </div>
<h4> <h4 id="user-content-localization">
<a <a class="heading-link" href="#localization"
id="user-content-localization" >Localization:<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#localization" ></a>
><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">
@ -343,27 +302,20 @@ 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> <h4 id="user-content-network-configuration">
<a <a class="heading-link" href="#network-configuration"
id="user-content-network-configuration" >Network configuration<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#network-configuration" ></a>
><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> <h4 id="user-content-initramfs">
<a <a class="heading-link" href="#initramfs"
id="user-content-initramfs" >Initramfs<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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">
@ -375,38 +327,25 @@ 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> <h4 id="user-content-root-password">
<a <a class="heading-link" href="#root-password"
id="user-content-root-password" >Root password<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#root-password" ></a>
><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> <h4 id="user-content-addition">
<a <a class="heading-link" href="#addition"
id="user-content-addition" >Addition<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#addition"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Addition
</h4> </h4>
<h5> <h5 id="user-content-networkmanager-wip">
<a <a class="heading-link" href="#networkmanager-wip"></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
@ -441,56 +380,35 @@ noarp
nohook resolv.conf</pre nohook resolv.conf</pre
> >
</div> </div>
<h5> <h5 id="user-content-bluetooth">
<a <a class="heading-link" href="#bluetooth"
id="user-content-bluetooth" >Bluetooth<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h5 id="user-content-clock">
<a <a class="heading-link" href="#clock"
id="user-content-clock" >Clock<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h4 id="user-content-boot-loader">
<a <a class="heading-link" href="#boot-loader"
id="user-content-boot-loader" >Boot loader<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#boot-loader"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Boot loader
</h4> </h4>
<h5> <h5 id="user-content-systemd-boot">
<a <a class="heading-link" href="#systemd-boot"></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">
@ -538,33 +456,25 @@ 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> <h2 id="user-content-general-recommendations">
<a <a class="heading-link" href="#general-recommendations"></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> <h3 id="user-content-system-administration">
<a <a class="heading-link" href="#system-administration"
id="user-content-system-administration" >System administration<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#system-administration" ></a>
><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
@ -604,15 +514,13 @@ 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> <h3 id="user-content-desktop-environment">
<a <a class="heading-link" href="#desktop-environment"
id="user-content-desktop-environment" >Desktop Environment<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#desktop-environment" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Desktop Environment
</h3> </h3>
<p> <p>
Install Install
@ -622,17 +530,11 @@ 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> <h4 id="user-content-gnome">
<a <a class="heading-link" href="#gnome"></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 \
@ -645,31 +547,19 @@ homectl update joker --shell=/usr/bin/zsh</pre>
pacman -Syu gdm pacman -Syu gdm
systemctl <span class="pl-c1">enable</span> gdm.service</pre> systemctl <span class="pl-c1">enable</span> gdm.service</pre>
</div> </div>
<h2> <h2 id="user-content-list-of-applications">
<a <a class="heading-link" href="#list-of-applications"></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> <h3 id="user-content-pacman">
<a <a class="heading-link" href="#pacman"></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">
@ -677,17 +567,11 @@ systemctl <span class="pl-c1">enable</span> gdm.service</pre>
Color Color
ParallelDownloads</pre> ParallelDownloads</pre>
</div> </div>
<h3> <h3 id="user-content-pipewire-wip">
<a <a class="heading-link" href="#pipewire-wip"></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>
@ -707,34 +591,22 @@ 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> <h3 id="user-content-flatpak-wip">
<a <a class="heading-link" href="#flatpak-wip"></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> <h2 id="user-content-improving-performance">
<a <a class="heading-link" href="#improving-performance"></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>
@ -787,15 +659,13 @@ pacman -Syu pipewire wireplumber \
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-hardware-dependent">
<a <a class="heading-link" href="#hardware-dependent"
id="user-content-hardware-dependent" >Hardware dependent<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#hardware-dependent" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Hardware dependent
</h2> </h2>
<ul> <ul>
<li> <li>
@ -814,15 +684,10 @@ pacman -Syu pipewire wireplumber \
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-experiment">
<a <a class="heading-link" href="#experiment"
id="user-content-experiment" >Experiment<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -837,15 +702,10 @@ pacman -Syu pipewire wireplumber \
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-in-the-end">
<a <a class="heading-link" href="#in-the-end"
id="user-content-in-the-end" >In the end<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-speed-up-writing-go-test-asap">
<a <a class="heading-link" href="#speed-up-writing-go-test-asap"
id="user-content-speed-up-writing-go-test-asap" >Speed up writing Go test ASAP<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#speed-up-writing-go-test-asap" ></a>
><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
@ -57,15 +55,13 @@
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> <h2 id="user-content-first-rewrite-the-impossible-to-test-out">
<a <a class="heading-link" href="#first-rewrite-the-impossible-to-test-out"
id="user-content-first-rewrite-the-impossible-to-test-out" >First, rewrite the impossible (to test) out<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#first-rewrite-the-impossible-to-test-out" ></a>
><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
@ -89,15 +85,13 @@
all global var to fields inside some struct. all global var to fields inside some struct.
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-let-the-fun-writing-test-begin">
<a <a class="heading-link" href="#let-the-fun-writing-test-begin"
id="user-content-let-the-fun-writing-test-begin" >Let the fun (writing test) begin<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#let-the-fun-writing-test-begin" ></a>
><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,26 +28,22 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-incident-come-and-go">
<a <a class="heading-link" href="#incident-come-and-go"
id="user-content-incident-come-and-go" >Incident come and go<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#incident-come-and-go" ></a>
><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> <h2 id="user-content-service-starts-with-empty-port">
<a <a class="heading-link" href="#service-starts-with-empty-port"
id="user-content-service-starts-with-empty-port" >Service starts with empty port<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#service-starts-with-empty-port" ></a>
><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>
@ -58,15 +54,13 @@
<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> <h2 id="user-content-race-condition-of-series-of-apis">
<a <a class="heading-link" href="#race-condition-of-series-of-apis"
id="user-content-race-condition-of-series-of-apis" >Race condition of series of APIs<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#race-condition-of-series-of-apis" ></a>
><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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-ekyc---the-battle-never-ends">
<a <a class="heading-link" href="#ekyc---the-battle-never-ends"
id="user-content-ekyc---the-battle-never-ends" >EKYC - The battle never ends<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#ekyc---the-battle-never-ends" ></a>
><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,15 +28,10 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-fonts">
<a <a class="heading-link" href="#fonts"
id="user-content-fonts" >Fonts<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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
@ -68,15 +63,10 @@
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> <h2 id="user-content-jetbrains-mono">
<a <a class="heading-link" href="#jetbrains-mono"></a
id="user-content-jetbrains-mono" ><a href="https://github.com/JetBrains/JetBrainsMono">JetBrains Mono</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -101,15 +91,10 @@
<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> <h2 id="user-content-iosevka">
<a <a class="heading-link" href="#iosevka"></a
id="user-content-iosevka" ><a href="https://github.com/be5invis/Iosevka">Iosevka</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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> <p>
I often choose SS08 variant because I also love I often choose SS08 variant because I also love
@ -140,15 +125,10 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h2> <h2 id="user-content-recursive">
<a <a class="heading-link" href="#recursive"></a
id="user-content-recursive" ><a href="https://github.com/arrowtype/recursive">Recursive</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -171,15 +151,10 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h2> <h2 id="user-content-martian-mono">
<a <a class="heading-link" href="#martian-mono"></a
id="user-content-martian-mono" ><a href="https://github.com/evilmartians/mono">Martian Mono</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -202,15 +177,10 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h2> <h2 id="user-content-agave">
<a <a class="heading-link" href="#agave"></a
id="user-content-agave" ><a href="https://github.com/blobject/agave">agave</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -223,15 +193,10 @@
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> <h2 id="user-content-hermit">
<a <a class="heading-link" href="#hermit"></a
id="user-content-hermit" ><a href="https://github.com/pcaro90/hermit">Hermit</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -239,17 +204,11 @@
<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> <h2 id="user-content-apl-385-and-apl386">
<a <a class="heading-link" href="#apl-385-and-apl386"> </a
id="user-content-apl-385-and-apl386" ><a href="https://apl385.com/fonts/index.htm" rel="nofollow">APL-385</a>
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>
@ -258,15 +217,10 @@
<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> <h2 id="user-content-sudo">
<a <a class="heading-link" href="#sudo"></a
id="user-content-sudo" ><a href="https://github.com/jenskutilek/sudo-font">Sudo</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -280,16 +234,15 @@
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> <h2
id="user-content-murr-fonts-but-i-dont-use-much-now-some-fonts-i-already-try-in-the-past"
>
<a <a
id="user-content-murr-fonts-but-i-dont-use-much-now-some-fonts-i-already-try-in-the-past" class="heading-link"
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"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Murr fonts, but I don't use much now (some fonts I already try in the
>Murr fonts, but I don't use much now (some fonts I already try in the past)<span aria-hidden="true" class="octicon octicon-link"></span
past) ></a>
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,15 +28,10 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-games-4-fun">
<a <a class="heading-link" href="#games-4-fun"
id="user-content-games-4-fun" >Games 4 fun<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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
@ -47,15 +42,13 @@
<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> <h2 id="user-content-ps2-emulator">
<a <a class="heading-link" href="#ps2-emulator"
id="user-content-ps2-emulator" >PS2 emulator<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#ps2-emulator" ></a>
><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
@ -103,17 +96,11 @@
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> <h3 id="user-content-resident-evil-4">
<a <a class="heading-link" href="#resident-evil-4"></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
@ -228,15 +215,13 @@ patch=1,EE,2012009C,extended,00000000</pre
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h3> <h3 id="user-content-mega-man-x-collection">
<a <a class="heading-link" href="#mega-man-x-collection"
id="user-content-mega-man-x-collection" >Mega Man X Collection<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#mega-man-x-collection" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Mega Man X Collection
</h3> </h3>
<p> <p>
<a <a
@ -245,45 +230,33 @@ patch=1,EE,2012009C,extended,00000000</pre
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h3> <h3 id="user-content-mega-man-x8">
<a <a class="heading-link" href="#mega-man-x8"
id="user-content-mega-man-x8" >Mega Man X8<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h3 id="user-content-god-of-war">
<a <a class="heading-link" href="#god-of-war"
id="user-content-god-of-war" >God of War<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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"
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h3> <h3 id="user-content-god-of-war-ii">
<a <a class="heading-link" href="#god-of-war-ii"
id="user-content-god-of-war-ii" >God of War II<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#god-of-war-ii" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>God of War II
</h3> </h3>
<p> <p>
<a <a
@ -292,15 +265,13 @@ patch=1,EE,2012009C,extended,00000000</pre
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h3> <h3 id="user-content-shadow-of-the-colossus">
<a <a class="heading-link" href="#shadow-of-the-colossus"
id="user-content-shadow-of-the-colossus" >Shadow of the Colossus<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#shadow-of-the-colossus" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Shadow of the Colossus
</h3> </h3>
<p> <p>
<a <a
@ -309,15 +280,13 @@ patch=1,EE,2012009C,extended,00000000</pre
>CDROMANCE</a >CDROMANCE</a
> >
</p> </p>
<h2> <h2 id="user-content-ps3-emulator">
<a <a class="heading-link" href="#ps3-emulator"
id="user-content-ps3-emulator" >PS3 emulator<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#ps3-emulator" ></a>
><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

View File

@ -28,52 +28,38 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-keeb">
<a <a class="heading-link" href="#keeb"
id="user-content-keeb" >Keeb<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h2 id="user-content-keyboard">
<a <a class="heading-link" href="#keyboard"
id="user-content-keyboard" >Keyboard<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h3 id="user-content-ikbc-cd87-cherry-mx-blue">
<a <a class="heading-link" href="#ikbc-cd87-cherry-mx-blue"
id="user-content-ikbc-cd87-cherry-mx-blue" >iKBC CD87 Cherry MX Blue<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#ikbc-cd87-cherry-mx-blue" ></a>
><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> <h3 id="user-content-kbdfans-x-lazurite-d60lite">
<a <a class="heading-link" href="#kbdfans-x-lazurite-d60lite"
id="user-content-kbdfans-x-lazurite-d60lite" >KBDfans X Lazurite D60Lite<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#kbdfans-x-lazurite-d60lite" ></a>
><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>
@ -114,15 +100,10 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4> <h4 id="user-content-specs">
<a <a class="heading-link" href="#specs"
id="user-content-specs" >Specs<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#specs"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Specs
</h4> </h4>
<p> <p>
<a <a
@ -184,15 +165,10 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h4> <h4 id="user-content-layout">
<a <a class="heading-link" href="#layout"
id="user-content-layout" >Layout<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -223,15 +199,10 @@
</li> </li>
<li>1 <code>Space</code> 7U.</li> <li>1 <code>Space</code> 7U.</li>
</ul> </ul>
<h4> <h4 id="user-content-review">
<a <a class="heading-link" href="#review"
id="user-content-review" >Review<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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
@ -258,15 +229,13 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h4> <h4 id="user-content-support-links">
<a <a class="heading-link" href="#support-links"
id="user-content-support-links" >Support links<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#support-links" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -325,15 +294,10 @@
> >
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-guide">
<a <a class="heading-link" href="#guide"
id="user-content-guide" >Guide<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#guide"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Guide
</h3> </h3>
<ul> <ul>
<li> <li>
@ -349,25 +313,18 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-switch">
<a <a class="heading-link" href="#switch"
id="user-content-switch" >Switch<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#switch"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Switch
</h2> </h2>
<h3> <h3 id="user-content-ktt-strawberry">
<a <a class="heading-link" href="#ktt-strawberry"
id="user-content-ktt-strawberry" >KTT Strawberry<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#ktt-strawberry" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>KTT Strawberry
</h3> </h3>
<p>I choose this switch because I prefer linear (please be silent).</p> <p>I choose this switch because I prefer linear (please be silent).</p>
<p> <p>
@ -381,15 +338,10 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4> <h4 id="user-content-specs-1">
<a <a class="heading-link" href="#specs-1"
id="user-content-specs-1" >Specs<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -401,15 +353,13 @@
<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> <h4 id="user-content-support-links-1">
<a <a class="heading-link" href="#support-links-1"
id="user-content-support-links-1" >Support links<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#support-links-1" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -434,15 +384,13 @@
> >
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-skyloong-glacier-silent-red-switch">
<a <a class="heading-link" href="#skyloong-glacier-silent-red-switch"
id="user-content-skyloong-glacier-silent-red-switch" >SKYLOONG Glacier Silent Red Switch<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#skyloong-glacier-silent-red-switch" ></a>
><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
@ -459,15 +407,10 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4> <h4 id="user-content-specs-2">
<a <a class="heading-link" href="#specs-2"
id="user-content-specs-2" >Specs<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -477,15 +420,13 @@
<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> <h4 id="user-content-support-links-2">
<a <a class="heading-link" href="#support-links-2"
id="user-content-support-links-2" >Support links<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#support-links-2" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -496,15 +437,13 @@
> >
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-jwick-yellow-linear-switch">
<a <a class="heading-link" href="#jwick-yellow-linear-switch"
id="user-content-jwick-yellow-linear-switch" >JWICK Yellow Linear Switch<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#jwick-yellow-linear-switch" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>JWICK Yellow Linear Switch
</h3> </h3>
<p> <p>
<a <a
@ -518,15 +457,10 @@
/></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> <h4 id="user-content-specs-3">
<a <a class="heading-link" href="#specs-3"
id="user-content-specs-3" >Specs<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -537,15 +471,13 @@
<li>Actuation force: 65g</li> <li>Actuation force: 65g</li>
<li>Total travel: 4 mm</li> <li>Total travel: 4 mm</li>
</ul> </ul>
<h4> <h4 id="user-content-support-links-3">
<a <a class="heading-link" href="#support-links-3"
id="user-content-support-links-3" >Support links<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#support-links-3" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -554,15 +486,10 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-keycap">
<a <a class="heading-link" href="#keycap"
id="user-content-keycap" >Keycap<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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
@ -577,15 +504,13 @@
</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> <h3 id="user-content-enjobpbt-9009">
<a <a class="heading-link" href="#enjobpbt-9009"
id="user-content-enjobpbt-9009" >EnjobPBT 9009<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#enjobpbt-9009" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>EnjobPBT 9009
</h3> </h3>
<p> <p>
<a <a
@ -609,15 +534,13 @@
style="max-width: 100%" style="max-width: 100%"
/></a> /></a>
</p> </p>
<h4> <h4 id="user-content-support-links-4">
<a <a class="heading-link" href="#support-links-4"
id="user-content-support-links-4" >Support links<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#support-links-4" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Support links
</h4> </h4>
<ul> <ul>
<li> <li>
@ -635,15 +558,13 @@
> >
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-color-i-love">
<a <a class="heading-link" href="#color-i-love"
id="user-content-color-i-love" >Color I love<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#color-i-love" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Color I love
</h3> </h3>
<ul> <ul>
<li> <li>
@ -725,15 +646,10 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,25 +28,21 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-naming-things">
<a <a class="heading-link" href="#naming-things"
id="user-content-naming-things" >Naming things<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#naming-things" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Naming things
</h1> </h1>
<h2> <h2 id="user-content-filename-in-storage-s3-">
<a <a class="heading-link" href="#filename-in-storage-s3-"
id="user-content-filename-in-storage-s3-" >Filename in storage (S3, ...)<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#filename-in-storage-s3-" ></a>
><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>
@ -67,15 +63,13 @@
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> <h2 id="user-content-time-variable">
<a <a class="heading-link" href="#time-variable"
id="user-content-time-variable" >Time variable<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#time-variable" ></a>
><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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-my-neovim-workflow">
<a <a class="heading-link" href="#my-neovim-workflow"
id="user-content-my-neovim-workflow" >My neovim workflow<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#my-neovim-workflow" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>My neovim workflow
</h1> </h1>
<p> <p>
<a <a
@ -53,15 +51,13 @@
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> <h2 id="user-content-trick-or-treat">
<a <a class="heading-link" href="#trick-or-treat"
id="user-content-trick-or-treat" >Trick or treat<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#trick-or-treat" ></a>
><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>
@ -98,15 +94,10 @@
<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> <h2 id="user-content-jumpo">
<a <a class="heading-link" href="#jumpo"
id="user-content-jumpo" >Jumpo<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -146,29 +137,19 @@
</ul> </ul>
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-fold">
<a <a class="heading-link" href="#fold"
id="user-content-fold" >Fold<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h2 id="user-content-keymap">
<a <a class="heading-link" href="#keymap"
id="user-content-keymap" >Keymap<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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">
@ -327,15 +308,13 @@ vim.<span class="pl-smi">keymap</span>.<span class="pl-c1">set</span>(<span clas
</ul> </ul>
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-references--thanks">
<a <a class="heading-link" href="#references--thanks"
id="user-content-references--thanks" >References / Thanks<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#references--thanks" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>References / Thanks
</h2> </h2>
<ul> <ul>
<li> <li>

View File

@ -28,25 +28,21 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-things-i-like">
<a <a class="heading-link" href="#things-i-like"
id="user-content-things-i-like" >Things I like<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#things-i-like" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Things I like
</h1> </h1>
<h2> <h2 id="user-content-discord-old-naming">
<a <a class="heading-link" href="#discord-old-naming"
id="user-content-discord-old-naming" >Discord (old) naming<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#discord-old-naming" ></a>
><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.
@ -58,15 +54,13 @@
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> <h2 id="user-content-interesting-website">
<a <a class="heading-link" href="#interesting-website"
id="user-content-interesting-website" >Interesting website<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#interesting-website" ></a>
><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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-swagger-or-openapi">
<a <a class="heading-link" href="#swagger-or-openapi"
id="user-content-swagger-or-openapi" >Swagger or OpenAPI<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#swagger-or-openapi" ></a>
><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>
@ -65,15 +63,10 @@ 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> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,45 +28,37 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-my-terminal-workflow">
<a <a class="heading-link" href="#my-terminal-workflow"
id="user-content-my-terminal-workflow" >My terminal workflow<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#my-terminal-workflow" ></a>
><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> <h2 id="user-content-use-junegunnfzf">
<a <a class="heading-link" href="#use-junegunnfzf">Use </a
id="user-content-use-junegunnfzf" ><a href="https://github.com/junegunn/fzf">junegunn/fzf</a>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span>
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> <h2 id="user-content-use-zellij-orgzellij-as-alternative-to-tmux">
<a <a
id="user-content-use-zellij-orgzellij-as-alternative-to-tmux" class="heading-link"
class="anchor"
aria-hidden="true"
tabindex="-1"
href="#use-zellij-orgzellij-as-alternative-to-tmux" href="#use-zellij-orgzellij-as-alternative-to-tmux"
><span aria-hidden="true" class="octicon octicon-link"></span></a >Use </a
>Use ><a href="https://github.com/zellij-org/zellij">zellij-org/zellij</a> as
<a href="https://github.com/zellij-org/zellij">zellij-org/zellij</a> as alternative to tmux<span
alternative to tmux aria-hidden="true"
class="octicon octicon-link"
></span>
</h2> </h2>
<p> <p>
<a <a
@ -88,15 +80,10 @@
<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> <h2 id="user-content-use-wezwezterm">
<a <a class="heading-link" href="#use-wezwezterm">Use </a
id="user-content-use-wezwezterm" ><a href="https://github.com/wez/wezterm">wez/wezterm</a>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -104,15 +91,10 @@
<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> <h2 id="user-content-use-nnn">
<a <a class="heading-link" href="#use-nnn">Use </a
id="user-content-use-nnn" ><a href="https://github.com/jarun/nnn">nnn</a>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span>
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,27 +28,20 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-another-day-another-incident-02">
<a <a class="heading-link" href="#another-day-another-incident-02"
id="user-content-another-day-another-incident-02" >Another day another incident #02<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#another-day-another-incident-02" ></a>
><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> <h2 id="user-content-the-problem">
<a <a class="heading-link" href="#the-problem"
id="user-content-the-problem" >The problem<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -123,15 +116,13 @@ 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> <h2 id="user-content-the-temporary-solution">
<a <a class="heading-link" href="#the-temporary-solution"
id="user-content-the-temporary-solution" >The (temporary) solution<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#the-temporary-solution" ></a>
><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
@ -246,15 +237,10 @@ 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> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-khoan-cắt-bê-tông-101">
<a <a class="heading-link" href="#khoan-cắt-bê-tông-101"
id="user-content-khoan-cắt-bê-tông-101" >Khoan cắt bê tông 101<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#khoan-cắt-bê-tông-101" ></a>
><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,36 +28,24 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-userful-tools">
<a <a class="heading-link" href="#userful-tools"
id="user-content-userful-tools" >Userful tools<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#userful-tools" ></a>
><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> <h2 id="user-content-tools">
<a <a class="heading-link" href="#tools"
id="user-content-tools" >Tools<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#tools"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Tools
</h2> </h2>
<h3> <h3 id="user-content-terminal">
<a <a class="heading-link" href="#terminal"
id="user-content-terminal" >Terminal<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#terminal"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Terminal
</h3> </h3>
<ul> <ul>
<li> <li>
@ -364,15 +352,32 @@
> >
</li> </li>
</ul> </ul>
<h3> <h4 id="user-content-windows">
<a <a class="heading-link" href="#windows"
id="user-content-ui" >Windows<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true" </h4>
tabindex="-1" <ul>
href="#ui" <li>
><span aria-hidden="true" class="octicon octicon-link"></span></a <a href="https://github.com/abbodi1406/KMS_VL_ALL_AIO"
>UI >https://github.com/abbodi1406/KMS_VL_ALL_AIO</a
>
</li>
<li>
<a href="https://github.com/massgravel/Microsoft-Activation-Scripts"
>https://github.com/massgravel/Microsoft-Activation-Scripts</a
>
</li>
<li>
<a href="https://github.com/abbodi1406/vcredist"
>https://github.com/abbodi1406/vcredist</a
>
</li>
</ul>
<h3 id="user-content-ui">
<a class="heading-link" href="#ui"
>UI<span aria-hidden="true" class="octicon octicon-link"></span
></a>
</h3> </h3>
<ul> <ul>
<li> <li>
@ -422,15 +427,10 @@
> >
</li> </li>
</ul> </ul>
<h4> <h4 id="user-content-macos">
<a <a class="heading-link" href="#macos"
id="user-content-macos" >macOS<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#macos"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>macOS
</h4> </h4>
<ul> <ul>
<li> <li>
@ -516,25 +516,18 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-developement">
<a <a class="heading-link" href="#developement"
id="user-content-developement" >Developement<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#developement" ></a>
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Developement
</h2> </h2>
<h3> <h3 id="user-content-terminal-1">
<a <a class="heading-link" href="#terminal-1"
id="user-content-terminal-1" >Terminal<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -669,15 +662,10 @@
> >
</li> </li>
</ul> </ul>
<h4> <h4 id="user-content-go">
<a <a class="heading-link" href="#go"
id="user-content-go" >Go<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#go"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Go
</h4> </h4>
<ul> <ul>
<li> <li>
@ -721,15 +709,10 @@
> >
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-ui-1">
<a <a class="heading-link" href="#ui-1"
id="user-content-ui-1" >UI<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -783,15 +766,10 @@
> >
</li> </li>
</ul> </ul>
<h3> <h3 id="user-content-macos-1">
<a <a class="heading-link" href="#macos-1"
id="user-content-macos-1" >macOS<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#macos-1"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>macOS
</h3> </h3>
<p>Memory</p> <p>Memory</p>
<ul> <ul>
@ -799,15 +777,10 @@
<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> <h2 id="user-content-games">
<a <a class="heading-link" href="#games"
id="user-content-games" >Games<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#games"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Games
</h2> </h2>
<ul> <ul>
<li> <li>
@ -826,15 +799,10 @@
> >
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-notes">
<a <a class="heading-link" href="#notes"
id="user-content-notes" >Notes<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#notes"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Notes
</h2> </h2>
<p>MacPorts/native package manager &gt; go/rust/pip.</p> <p>MacPorts/native package manager &gt; go/rust/pip.</p>
<p>Ignore HomeBrew, nix (for now).</p> <p>Ignore HomeBrew, nix (for now).</p>
@ -846,26 +814,16 @@
<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> <h2 id="user-content-misc">
<a <a class="heading-link" href="#misc"
id="user-content-misc" >Misc<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h3 id="user-content-macos-2">
<a <a class="heading-link" href="#macos-2"
id="user-content-macos-2" >macOS<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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">
@ -875,15 +833,10 @@ touch Xcode.app
<span class="pl-c"><span class="pl-c">#</span> Xcode mini version</span> <span class="pl-c"><span class="pl-c">#</span> Xcode mini version</span>
xcode-select --install</pre> xcode-select --install</pre>
</div> </div>
<h3> <h3 id="user-content-linux">
<a <a class="heading-link" href="#linux"
id="user-content-linux" >Linux<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
aria-hidden="true"
tabindex="-1"
href="#linux"
><span aria-hidden="true" class="octicon octicon-link"></span></a
>Linux
</h3> </h3>
<p> <p>
Fix black screen when open game in fullscreen in external monitor with Fix black screen when open game in fullscreen in external monitor with
@ -892,15 +845,10 @@ xcode-select --install</pre>
>kazysmaster/gnome-shell-extension-disable-unredirect</a >kazysmaster/gnome-shell-extension-disable-unredirect</a
> >
</p> </p>
<h3> <h3 id="user-content-firefox">
<a <a class="heading-link" href="#firefox"
id="user-content-firefox" >Firefox<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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>
@ -938,15 +886,10 @@ xcode-select --install</pre>
</ul> </ul>
</li> </li>
</ul> </ul>
<h2> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,26 +28,20 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-throw-away-pastebin">
<a <a class="heading-link" href="#throw-away-pastebin"
id="user-content-throw-away-pastebin" >Throw away pastebin<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#throw-away-pastebin" ></a>
><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> <h2 id="user-content-gitignore">
<a <a class="heading-link" href="#gitignore"
id="user-content-gitignore" ><code>.gitignore</code
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span
aria-hidden="true" ></a>
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>
@ -69,15 +63,13 @@ vendor
<span class="pl-c"># GoReleaser</span> <span class="pl-c"># GoReleaser</span>
dist</pre> dist</pre>
</div> </div>
<h2> <h2 id="user-content-github-actions">
<a <a class="heading-link" href="#github-actions"
id="user-content-github-actions" >GitHub Actions<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#github-actions" ></a>
><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">
@ -152,15 +144,10 @@ 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> <h2 id="user-content-go">
<a <a class="heading-link" href="#go"
id="user-content-go" >Go<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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">
@ -282,15 +269,13 @@ 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> <h1 id="user-content-git-clean-up">
<a <a class="heading-link" href="#git-clean-up"
id="user-content-git-clean-up" >Git clean up<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#git-clean-up" ></a>
><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>
@ -298,15 +283,11 @@ git clean -fdx
git gc</pre> git gc</pre>
</div> </div>
<h2> <h2 id="user-content-delete-ds_store">
<a <a class="heading-link" href="#delete-ds_store"
id="user-content-delete-ds_store" >Delete <code>.DS_Store</code>
class="anchor" <span aria-hidden="true" class="octicon octicon-link"></span
aria-hidden="true" ></a>
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
@ -319,29 +300,19 @@ 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> <h2 id="user-content-fdupes">
<a <a class="heading-link" href="#fdupes"></a
id="user-content-fdupes" ><a href="https://github.com/adrianlopezroche/fdupes">fdupes</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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> <h2 id="user-content-rsync">
<a <a class="heading-link" href="#rsync"></a
id="user-content-rsync" ><a href="https://github.com/WayneD/rsync">rsync</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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>
@ -371,30 +342,20 @@ 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> <h2 id="user-content-f2">
<a <a class="heading-link" href="#f2"></a
id="user-content-f2" ><a href="https://github.com/ayoisaiah/f2">F2</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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> <h2 id="user-content-instaloader">
<a <a class="heading-link" href="#instaloader"></a
id="user-content-instaloader" ><a href="https://github.com/instaloader/instaloader">Instaloader</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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">
@ -420,15 +381,10 @@ 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> <h2 id="user-content-grpcurl">
<a <a class="heading-link" href="#grpcurl"></a
id="user-content-grpcurl" ><a href="https://github.com/fullstorydev/grpcurl">gRPCurl</a
class="anchor" ><span aria-hidden="true" class="octicon octicon-link"></span>
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,28 +28,21 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-fan-android">
<a <a class="heading-link" href="#fan-android"
id="user-content-fan-android" >F(an) android<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#fan-android" ></a>
><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> <h2 id="user-content-apps">
<a <a class="heading-link" href="#apps"
id="user-content-apps" >Apps<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,26 +28,19 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-redis">
<a <a class="heading-link" href="#redis"
id="user-content-redis" >Redis<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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> <h2 id="user-content-redis-does-not-store-creation-time-of-keys">
<a <a class="heading-link" href="#redis-does-not-store-creation-time-of-keys"
id="user-content-redis-does-not-store-creation-time-of-keys" >Redis does not store creation time of keys<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#redis-does-not-store-creation-time-of-keys" ></a>
><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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-cache-shenanigan">
<a <a class="heading-link" href="#cache-shenanigan"
id="user-content-cache-shenanigan" >Cache shenanigan<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#cache-shenanigan" ></a>
><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
@ -84,15 +82,10 @@
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> <h2 id="user-content-thanks">
<a <a class="heading-link" href="#thanks"
id="user-content-thanks" >Thanks<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,10 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-vscode">
<a <a class="heading-link" href="#vscode"
id="user-content-vscode" >VSCode<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-hardware-101">
<a <a class="heading-link" href="#hardware-101"
id="user-content-hardware-101" >Hardware 101<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#hardware-101" ></a>
><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,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-real-world-crypto-101">
<a <a class="heading-link" href="#real-world-crypto-101"
id="user-content-real-world-crypto-101" >Real World Crypto 101<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#real-world-crypto-101" ></a>
><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
@ -46,16 +44,16 @@
>Real-World Cryptography</a >Real-World Cryptography</a
> >
</p> </p>
<h2> <h2 id="user-content-hash-function-convert-from-input-to-digest">
<a <a
id="user-content-hash-function-convert-from-input-to-digest" class="heading-link"
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>
@ -65,17 +63,19 @@
</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
id="user-content-mac-aka-message-authentication-code-produce-from-key-message-to-authentication-tag" class="heading-link"
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>

View File

@ -28,15 +28,13 @@
<h2> <h2>
<a href="index.html"><code>~</code></a> <a href="index.html"><code>~</code></a>
</h2> </h2>
<h1> <h1 id="user-content-vietnam-survivor">
<a <a class="heading-link" href="#vietnam-survivor"
id="user-content-vietnam-survivor" >Vietnam survivor<span
class="anchor" aria-hidden="true"
aria-hidden="true" class="octicon octicon-link"
tabindex="-1" ></span
href="#vietnam-survivor" ></a>
><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

@ -25,15 +25,10 @@
} }
</style> </style>
<body class="markdown-body"> <body class="markdown-body">
<h1> <h1 id="user-content-index">
<a <a class="heading-link" href="#index"
id="user-content-index" >Index<span aria-hidden="true" class="octicon octicon-link"></span
class="anchor" ></a>
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

@ -69,6 +69,12 @@ Fun memory
- https://github.com/instaloader/instaloader - https://github.com/instaloader/instaloader
- https://gitlab.com/phoneybadger/pokemon-colorscripts - https://gitlab.com/phoneybadger/pokemon-colorscripts
#### Windows
- https://github.com/abbodi1406/KMS_VL_ALL_AIO
- https://github.com/massgravel/Microsoft-Activation-Scripts
- https://github.com/abbodi1406/vcredist
### UI ### UI
- https://github.com/kovidgoyal/kitty - https://github.com/kovidgoyal/kitty