<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Misc on KK's Blog (fromkk)</title><link>https://fromkk.com/categories/misc/</link><description>Recent content in Misc on KK's Blog (fromkk)</description><generator>Hugo</generator><language>en</language><managingEditor>bebound@gmail.com (KK)</managingEditor><webMaster>bebound@gmail.com (KK)</webMaster><lastBuildDate>Fri, 06 Feb 2026 21:02:53 +0800</lastBuildDate><atom:link href="https://fromkk.com/categories/misc/index.xml" rel="self" type="application/rss+xml"/><item><title>Kindle Paperwhite 5 Review</title><link>https://fromkk.com/posts/kindle-paperwhite-5-review/</link><pubDate>Fri, 09 Jan 2026 21:49:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/kindle-paperwhite-5-review/</guid><description>&lt;p&gt;I bought a Kindle Paperwhite 1 in 2013, when I still in the university. I like it very much and I&amp;rsquo;ve read many programming books with it. It still works fine after 10 years, but I want to tries the new model with larger screen and faster fresh speed. So I bought a used Kindle Paperwhite 5 signature version for only 620 Yuan (about $90) recently. Here is my review.&lt;/p&gt;</description></item><item><title>Run Synology in QNAP NAS with PVE</title><link>https://fromkk.com/posts/run-synology-in-qnap-nas-with-pve/</link><pubDate>Sun, 29 Jun 2025 20:53:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/run-synology-in-qnap-nas-with-pve/</guid><description>&lt;p&gt;Three years ago, I bought a QNAP TS-453Dmini NAS. Although it has a slow WEB UI and slow restart, it still fits my needs as all of the applications I need are running in Docker.&lt;/p&gt;
&lt;p&gt;Recently, I want to move some files from my Mac to NAS to save space. I need a application behave like Dropbox, which can show all the files in the NAS and only download the files I need. I have tried the QSync, but it does not have thumbnails for cloud image and it does not have icons to show the file status. I also tried the &lt;a href="https://www.seafile.com/home/" target="_blank" rel="noopener noreffer "&gt;Seafile&lt;/a&gt;, it&amp;rsquo;s a powerful application, which requires 4G RAM to run, and there is bug in the thumbnail. I used to have a Synology ARM NAS, the Synology Drive has all the features I need, so I want to run it on my QNAP NAS. After some research, I managed to run Synology and QNAP together on my NAS. Here is the guide.&lt;/p&gt;</description></item><item><title>Improve Git speed in WSL</title><link>https://fromkk.com/posts/speed-up-git-speed-in-wsl/</link><pubDate>Tue, 26 Dec 2023 11:16:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/speed-up-git-speed-in-wsl/</guid><description>&lt;p&gt;The disk performance in WSL2 is poor, it takes a long time to run &lt;code&gt;git status&lt;/code&gt; in a host&amp;rsquo;s repo. Moreover, if you set a fancy shell prompt, it will take a long time to show the prompt. This article will introduce how to speed up Git in WSL2.&lt;/p&gt;
&lt;h2 id="how-to-speed-up-git-command"&gt;How to speed up Git Command&lt;/h2&gt;
&lt;p&gt;The performance of file system in WSL2 is poor, it takes a long time to run &lt;code&gt;git status&lt;/code&gt; in a host&amp;rsquo;s repo. The solution is to use &lt;code&gt;git.exe&lt;/code&gt; in Windows folder. You can add this into your &lt;code&gt;bashrc&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>iPod Video Review</title><link>https://fromkk.com/posts/ipod-video-review/</link><pubDate>Tue, 26 Dec 2023 11:16:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/ipod-video-review/</guid><description>&lt;p&gt;I bought a iPod Video 5.5th Gen 80G recently. It&amp;rsquo;s only 200 Yuan (about $30) and I&amp;rsquo;m satisfied with it.&lt;/p&gt;
&lt;h2 id="rockbox"&gt;Rockbox&lt;/h2&gt;
&lt;p&gt;The original firmware supports few audio format, it even can&amp;rsquo;t play FLAC. I install rockbox on it, which support FLAC and other format and I can transfer music without using iTunes or Finder. It also support theme and plugin, which makes it more powerful.&lt;/p&gt;
&lt;h3 id="macpod-error"&gt;MacPod error&lt;/h3&gt;
&lt;p&gt;If you restore the iPod on macOS, it raises &lt;code&gt;Warning: This is a MacPod, Rockbox only runs on WinPods. See http://www.rockbox.org/wiki/IpodConversionToFAT32&lt;/code&gt; during installation. The easiest way to fix this is to restore it on Windows.&lt;/p&gt;</description></item><item><title>Line Ending in Git</title><link>https://fromkk.com/posts/line-ending-in-git/</link><pubDate>Sat, 21 Oct 2023 15:40:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/line-ending-in-git/</guid><description>&lt;p&gt;When working on a project with multiple developers, the line ending can be troublesome. This article will explain how to configure line ending in Git.&lt;/p&gt;
&lt;h2 id="basic-configuration"&gt;Basic configuration&lt;/h2&gt;
&lt;p&gt;The line ending on Windows is &lt;code&gt;CRLF&lt;/code&gt;, on Linux is &lt;code&gt;LF&lt;/code&gt;. To prevent the line ending issue, we can set &lt;code&gt;core.autocrlf&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; on Windows to let git convert &lt;code&gt;CRLF&lt;/code&gt; to &lt;code&gt;LF&lt;/code&gt; when commit, and convert &lt;code&gt;LF&lt;/code&gt; to &lt;code&gt;CRLF&lt;/code&gt; when checkout. It is automatically configured if you install git on Windows.&lt;/p&gt;</description></item><item><title>How to copy files temporarily in Dockerfile</title><link>https://fromkk.com/posts/how-to-copy-files-temporarily-in-dockerfile/</link><pubDate>Thu, 24 Aug 2023 11:49:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/how-to-copy-files-temporarily-in-dockerfile/</guid><description>&lt;p&gt;It&amp;rsquo;s very common to copy a local file into the container when build docker image. In general, we use &lt;code&gt;COPY&lt;/code&gt; command. But it creates a new layer and increase the final image size. If this is a temporal file and we don&amp;rsquo;t want users waste their storage space, how can we remove it? Here are some approaches.&lt;/p&gt;
&lt;h2 id="download-the-file-dynamically"&gt;Download the File Dynamically&lt;/h2&gt;
&lt;p&gt;If the file can be download from URL or you can create a local HTTP server to share the file, you can download the file, use it and delete it in one &lt;code&gt;RUN&lt;/code&gt; command. For example:&lt;/p&gt;</description></item><item><title>Emacs Chinese-related Settings</title><link>https://fromkk.com/posts/emacs-chinese-related-settings/</link><pubDate>Thu, 17 Feb 2022 01:27:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/emacs-chinese-related-settings/</guid><description>&lt;h2 id="auto-switch-input-method-in-evil"&gt;Auto Switch Input Method in Evil&lt;/h2&gt;
&lt;p&gt;This setting makes it possible to switch input method based on the context of cursor when entering insert mode.&lt;/p&gt;
&lt;h3 id="sis"&gt;sis&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;m using &lt;code&gt;sis&lt;/code&gt; package with this configuration. You may need to install &lt;code&gt;macism&lt;/code&gt; if you&amp;rsquo;re not using &lt;code&gt;railwaycat/emacsmacport&lt;/code&gt;. More settings can be found in &lt;a href="https://github.com/laishulu/emacs-smart-input-source" target="_blank" rel="noopener noreffer "&gt;emacs-smart-input-source&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(sis-ism-lazyman-config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;com.apple.keylayout.US&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;com.apple.inputmethod.SCIM.ITABC&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(sis-global-cursor-color-mode &lt;span style="color:#66d9ef"&gt;t&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(sis-global-respect-mode &lt;span style="color:#66d9ef"&gt;t&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(sis-global-context-mode &lt;span style="color:#66d9ef"&gt;t&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(sis-global-inline-mode &lt;span style="color:#66d9ef"&gt;t&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fcitx"&gt;fcitx&lt;/h3&gt;
&lt;p&gt;You can also install &lt;a href="https://github.com/xcodebuild/fcitx-remote-for-osx" target="_blank" rel="noopener noreffer "&gt;fcitx-remote for-osx&lt;/a&gt; and use &lt;code&gt;cute-jumper/fcitx.el&lt;/code&gt; to do so. As &lt;code&gt;homebrew&lt;/code&gt; no longer support some build options, you need to follow the install instructions in the GitHub repository to build &lt;code&gt;fcitx&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>QNAP TS-453Dmini Review</title><link>https://fromkk.com/posts/qnap-ts-453dmini-review/</link><pubDate>Wed, 19 Jan 2022 00:17:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/qnap-ts-453dmini-review/</guid><description>&lt;p&gt;My first NAS is Synology DS120j, which is ARM based entry level product. It&amp;rsquo;s okay to use it for downloading and backup, but not power enough for running docker and virtual machine.&lt;/p&gt;
&lt;p&gt;So I bought this NAS last month, and I&amp;rsquo;m satisfied with it. Here are the advantages and disadvantages.&lt;/p&gt;
&lt;h2 id="advantages"&gt;Advantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;High performance.&lt;/p&gt;
&lt;p&gt;It is equipped with J4125 quad-core 2.0 GHz processor, 8G RAM, two 2.5G Ports and 4 bays. Here is the &lt;a href="https://www.qnap.com/zh-cn/product/ts-453dmini/specs/hardware" target="_blank" rel="noopener noreffer "&gt;spec&lt;/a&gt;. Although J4125 is not the fastest CPU in 2022(the newer model coming with N5105), it is still able to run several docker containers together, and I can even run Synology and Windows 10 inside build-in &lt;code&gt;Virtualization Station&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Internet Account Keeps Coming Back after deletion on MacOS</title><link>https://fromkk.com/posts/internet-account-keeps-coming-back-after-deletion-on-macos/</link><pubDate>Sat, 08 Jan 2022 00:09:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/internet-account-keeps-coming-back-after-deletion-on-macos/</guid><description>&lt;p&gt;Today I tried to delete an inactive Internet account on system preference. It was deleted successfully but come back again after 20 seconds. This drives me nuts.&lt;/p&gt;
&lt;p&gt;I tried these methods, but none of them works.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boot in &lt;a href="https://support.apple.com/en-us/HT201262" target="_blank" rel="noopener noreffer "&gt;safe mode&lt;/a&gt;, delete account.&lt;/li&gt;
&lt;li&gt;Delete record in &lt;code&gt;ZACCOUNT&lt;/code&gt; table in &lt;code&gt;~/Library/Accounts/Accounts4.sqlite&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Delete related items in Keychain Access app.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Later, &lt;code&gt;RedHatDude&lt;/code&gt;&amp;rsquo;s answer gives me a clue, it looks like a iCloud sync problem. I tried to delete the account on my 3 MacBooks together. Thank goodness! It does not show up again.&lt;/p&gt;</description></item><item><title>Dynamic Allocate Executors when Executing Jobs in Spark</title><link>https://fromkk.com/posts/dynamic-allocate-executors-when-executing-jobs-in-spark/</link><pubDate>Sun, 18 Jul 2021 16:52:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/dynamic-allocate-executors-when-executing-jobs-in-spark/</guid><description>&lt;p&gt;I wrote a Spark program to process logs. The number of logs always changes as time goes by. To ensure logs can be processed instantly, the number of executors is calculated by the maximum of logs per minutes. As a consequence, the CPU usage is low in executors. In order to decrease resource waste, I tried to find a way to schedule executors during the execution of program.&lt;/p&gt;
&lt;p&gt;As shown below, the maximum number of logs per minutes can be a dozen times greater than the minimum number in one day.&lt;/p&gt;</description></item><item><title>Improve Kafka throughput</title><link>https://fromkk.com/posts/improve-kafka-throughput/</link><pubDate>Fri, 28 May 2021 00:57:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/improve-kafka-throughput/</guid><description>&lt;p&gt;Kafka is a high-performance and scalable messaging system. Sometimes when handling big data. The default configuration may limit the maximum performance. In this article, I&amp;rsquo;ll explain how messages are generate and saved in Kafka, and how to improve performance by changing configuration.&lt;/p&gt;
&lt;h2 id="kafka-internals"&gt;Kafka Internals&lt;/h2&gt;
&lt;h3 id="how-does-producer-send-messages"&gt;How does Producer Send Messages?&lt;/h3&gt;
&lt;p&gt;In short, messages will assembled into batches (named &lt;code&gt;RecordBatch&lt;/code&gt;) and send to broker.&lt;/p&gt;
&lt;p&gt;The producer manages some internal queues, and each queue contains &lt;code&gt;RecordBatch&lt;/code&gt; that will send to one broker. When calling &lt;code&gt;send&lt;/code&gt; method, the producer will look into the internal queue and try to append this message to &lt;code&gt;RecordBatch&lt;/code&gt; which is smaller than &lt;code&gt;batch.size&lt;/code&gt; (default value is 16KB) or create new &lt;code&gt;RecordBatch&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Fix Error: Cask 'java' is unavailable in Homebrew</title><link>https://fromkk.com/posts/fix-error-cask-java-is-unavailable-in-homebrew/</link><pubDate>Sun, 07 Mar 2021 00:10:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/fix-error-cask-java-is-unavailable-in-homebrew/</guid><description>&lt;p&gt;After update brew to latest version, when calling &lt;code&gt;cask&lt;/code&gt; related command, it always outputs &lt;code&gt;Error: Cask 'java' is unavailable: No Cask with this name exists.&lt;/code&gt;, such as &lt;code&gt;brew list --cask&lt;/code&gt;. However, the &lt;code&gt;brew&lt;/code&gt; command works.&lt;/p&gt;
&lt;p&gt;After doing some research, I found &lt;a href="https://github.com/Homebrew/homebrew-cask/pull/72284" target="_blank" rel="noopener noreffer "&gt;Java has been moved to homebrew/core&lt;/a&gt;. This makes sense now. I installed java by cask, but it&amp;rsquo;s not available now and cask throw this error. If I uninstall java from cask, the error should disappear.&lt;/p&gt;</description></item><item><title>Timezone in JVM</title><link>https://fromkk.com/posts/timezone-in-jvm/</link><pubDate>Sun, 18 Oct 2020 23:49:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/timezone-in-jvm/</guid><description>&lt;p&gt;I wrote a Scala code to get the current time. However, the output is different on the development server and docker.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-scala" data-lang="scala"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; java.util.Calendar
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;println&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;Calendar&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;getInstance&lt;span style="color:#f92672"&gt;().&lt;/span&gt;getTime&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On my development server, it outputs &lt;code&gt;Sun Oct 18 18:01:01 CST 2020&lt;/code&gt;, but in docker, it print a UTC time.&lt;/p&gt;
&lt;p&gt;I guess it related to the timezone setting and do a research, here is the result.&lt;/p&gt;
&lt;h2 id="how-did-jvm-detect-timezone"&gt;How Did JVM Detect Timezone&lt;/h2&gt;
&lt;p&gt;All of the code can be found in this function: &lt;code&gt;private static synchronized TimeZone setDefaultZone()&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Retrieve Large Dataset in Elasticsearch</title><link>https://fromkk.com/posts/retrieve-large-dataset-in-elasticsearch/</link><pubDate>Sun, 21 Jun 2020 20:33:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/retrieve-large-dataset-in-elasticsearch/</guid><description>&lt;p&gt;It&amp;rsquo;s easy to get small dataset from Elasticsearch by using &lt;code&gt;size&lt;/code&gt; and &lt;code&gt;from&lt;/code&gt;. However, it&amp;rsquo;s impossible to retrieve large dataset in the same way.&lt;/p&gt;
&lt;h2 id="deep-paging-problem"&gt;Deep Paging Problem&lt;/h2&gt;
&lt;p&gt;As we know it, Elasticsearch data is organised into indexes, which is a logical namespace, and the real data is stored into physical shards. Each shard is an instance of Lucene. There are two kind of shards, primary shards and replica shards. Replica shards is the copy of primary shards in case nodes or shards fail. By distributing documents in an index across multiple shards, and distributing those shards across multiple nodes, Elasticsearch can ensure redundancy and scalability. By default, Elasticsearch create &lt;strong&gt;5&lt;/strong&gt; primary shards and one replica shard for each primary shards.&lt;/p&gt;</description></item><item><title>C-m, RET and Return Key in Emacs</title><link>https://fromkk.com/posts/c-m-ret-and-return-key-in-emacs/</link><pubDate>Sat, 11 Apr 2020 21:23:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/c-m-ret-and-return-key-in-emacs/</guid><description>&lt;p&gt;I use Emacs to write blog. In the recent update, I found &lt;code&gt;M-RET&lt;/code&gt; no longer behave as leader key in org mode, but behave as &lt;code&gt;org-meta-return&lt;/code&gt;. And even more strange is that in other mode, it behave as leader key. And &lt;code&gt;M-RET&lt;/code&gt; also works in terminal in org mode. In GUI, pressing &lt;code&gt;C-M-m&lt;/code&gt; can trigger leader key.&lt;/p&gt;
&lt;p&gt;SO I opened this &lt;a href="https://github.com/syl20bnr/spacemacs/issues/13374" target="_blank" rel="noopener noreffer "&gt;issue&lt;/a&gt;, with the help of these friends, the issue has been fixed. Here is the cause of the bug.&lt;/p&gt;</description></item><item><title>Time boundary in InfluxDB Group by Time Statement</title><link>https://fromkk.com/posts/time-boundary-in-influxdb-group-by-time-statement/</link><pubDate>Sun, 29 Mar 2020 22:30:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/time-boundary-in-influxdb-group-by-time-statement/</guid><description>&lt;p&gt;These days I use InfluxDB to save some time series data. I love these features it provides:&lt;/p&gt;
&lt;h4 id="high-performance"&gt;High Performance&lt;/h4&gt;
&lt;p&gt;According to to it&amp;rsquo;s &lt;a href="https://docs.influxdata.com/influxdb/v1.7/guides/hardware_sizing/#single-node-or-cluster" target="_blank" rel="noopener noreffer "&gt;hardware guide&lt;/a&gt;, a single node will support more than 750k point write per second, 100 moderate queries per second and 10M series cardinality.&lt;/p&gt;
&lt;h4 id="continuous-queries"&gt;Continuous Queries&lt;/h4&gt;
&lt;p&gt;Simple aggregation can be done by InfluxDB&amp;rsquo;s continuous queries.&lt;/p&gt;
&lt;h4 id="overwrite-duplicated-points"&gt;Overwrite Duplicated Points&lt;/h4&gt;
&lt;p&gt;If you submit a new point with same measurements, tag set and timestamp, the new data will overwrite the old one.&lt;/p&gt;</description></item><item><title>Jaeger Code Structure</title><link>https://fromkk.com/posts/jaeger-code-structure/</link><pubDate>Sun, 22 Sep 2019 17:07:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/jaeger-code-structure/</guid><description>&lt;p&gt;Here is the main logic for jaeger agent and jaeger collector. (Based on &lt;a href="https://github.com/jaegertracing/jaeger" target="_blank" rel="noopener noreffer "&gt;jaeger&lt;/a&gt; 1.13.1)&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://fromkk.com/images/jaeger.svg" width="600"&gt;
&lt;/figure&gt;

&lt;h2 id="jaeger-agent"&gt;Jaeger Agent&lt;/h2&gt;
&lt;p&gt;Collect UDP packet from 6831 port, convert it to &lt;code&gt;model.Span&lt;/code&gt;, send to collector by gRPC&lt;/p&gt;
&lt;h2 id="jaeger-collector"&gt;Jaeger Collector&lt;/h2&gt;
&lt;p&gt;Process gRPC or process packet from Zipkin(port 9411).&lt;/p&gt;
&lt;h2 id="jaeger-query"&gt;Jaeger Query&lt;/h2&gt;
&lt;p&gt;Listen gRPC and HTTP request from 16686.&lt;/p&gt;</description></item><item><title>Build Your Own Tiny Tiny RSS Service</title><link>https://fromkk.com/posts/build-your-own-tiny-tiny-rss-service/</link><pubDate>Mon, 10 Jun 2019 00:25:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/build-your-own-tiny-tiny-rss-service/</guid><description>&lt;p&gt;After Inoreader change the free plan, which limit the max subscription to 150, I begin to find an alternative. Finally, I found Tiny Tiny RSS. It has a nice website and has the fever API Plugin which was supported by most of the RSS reader app, so you can read RSS on all of you devices.&lt;/p&gt;
&lt;p&gt;This post will tell you how to deploy it on your server.&lt;/p&gt;
&lt;h2 id="prerequisite"&gt;Prerequisite&lt;/h2&gt;
&lt;p&gt;You need to install &lt;a href="https://docs.docker.com/install/" target="_blank" rel="noopener noreffer "&gt;Docker&lt;/a&gt; and &lt;a href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener noreffer "&gt;Docker Compose&lt;/a&gt; before using &lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Preview LaTeX in Org Mode with Emacs in MacOS</title><link>https://fromkk.com/posts/preview-latex-in-org-mode-with-emacs-in-macos/</link><pubDate>Sun, 12 May 2019 20:26:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/preview-latex-in-org-mode-with-emacs-in-macos/</guid><description>&lt;h2 id="using-the-right-emacs-version"&gt;Using the right Emacs Version&lt;/h2&gt;
&lt;p&gt;I failed to preview LaTeX with &lt;code&gt;emacs-plus&lt;/code&gt;. If you have installed &lt;code&gt;d12frosted/emacs-plus&lt;/code&gt;, uninstall it and use &lt;code&gt;emacs-mac&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nil" data-lang="nil"&gt;brew tap railwaycat/emacsmacport
brew install emacs-mac
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you like the fancy spacemacs icon, install it with cask: &lt;code&gt;brew cask install emacs-mac-spacemacs-icon&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="install-tex"&gt;Install Tex&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Download and install BasicTeX.pkg &lt;a href="http://www.tug.org/mactex/morepackages.html" target="_blank" rel="noopener noreffer "&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;/Library/TeX/texbin&lt;/code&gt; to PATH.&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;dvisvgm&lt;/code&gt; by &lt;code&gt;sudo tlmgr update --self &amp;amp;&amp;amp; sudo tlmgr install dvisvgm collection-fontsrecommended&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="emacs-settings"&gt;Emacs settings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add TeX related bin to path: &lt;code&gt;(setenv &amp;quot;PATH&amp;quot; (concat (getenv &amp;quot;PATH&amp;quot;) &amp;quot;:/Library/TeX/texbin&amp;quot;))&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tell Org Mode to create svg images: &lt;code&gt;(setq org-latex-create-formula-image-program 'dvisvgm)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you can see the rendered LaTeX equation by calling &lt;code&gt;org-preview-latex-fragment&lt;/code&gt; or using shortcut &lt;code&gt;,Tx&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Some Useful Shell Tools</title><link>https://fromkk.com/posts/some-useful-shell-tools/</link><pubDate>Sun, 07 May 2017 15:34:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/some-useful-shell-tools/</guid><description>&lt;p&gt;Here are some shell tools I use, which can boost your productivity. &lt;a href="https://github.com/johnalanwoods/maintained-modern-unix" target="_blank" rel="noopener noreffer "&gt;Mordern-unix&lt;/a&gt; is a great repo that list lots of modern unix tools.&lt;/p&gt;
&lt;h2 id="prezto"&gt;&lt;a href="https://github.com/sorin-ionescu/prezto" target="_blank" rel="noopener noreffer "&gt;Prezto&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A zsh configuration framework. Provides auto completion, prompt theme and lots of modules to work with other useful tools. I extremely love the &lt;code&gt;agnoster&lt;/code&gt; theme.&lt;/p&gt;
&lt;figure class="image-size-s"&gt;&lt;img src="https://fromkk.com/images/shell_agnoster.png"&gt;
&lt;/figure&gt;

&lt;h2 id="fasd"&gt;&lt;a href="https://github.com/clvv/fasd" target="_blank" rel="noopener noreffer "&gt;Fasd&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Help you to navigate between folders and launch application.&lt;/p&gt;
&lt;p&gt;Here are the official usage example:&lt;/p&gt;</description></item><item><title>Start</title><link>https://fromkk.com/posts/start/</link><pubDate>Tue, 18 Apr 2017 15:46:00 +0800</pubDate><author>bebound@gmail.com (KK)</author><guid>https://fromkk.com/posts/start/</guid><description>&lt;p&gt;Over the years, I have read so many programmers’ blogs, which has helped me a lot. Now I think it’s the time to start my own blog.&lt;/p&gt;
&lt;p&gt;I hope this can enforce myself to review what I have learned, and it would even be better if someone can benefit from it.&lt;/p&gt;</description></item></channel></rss>