<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tech on JackKuo's Blog</title><link>https://jackkuo.org/categories/tech/</link><description>Recent content in Tech on JackKuo's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><lastBuildDate>Sun, 07 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jackkuo.org/categories/tech/index.xml" rel="self" type="application/rss+xml"/><item><title>Windows, macOS, Linux 的 dynamic loader 對於全域變數的處理差異</title><link>https://jackkuo.org/post/loader_diff_on_diff_os/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/loader_diff_on_diff_os/</guid><description>前言 移植某個專案到 Linux 的時候，注意到原本在 Windows 跟 macOS 都運作的好好的，但在 Linux 上 gRPC 卻會遇到遍歷全域 Linked List 時出現無窮迴圈問題。網路上諸多討論[1][2]，</description></item><item><title>中國醫健檢 PDF 下載教學</title><link>https://jackkuo.org/post/cmuh_health_check_download/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/cmuh_health_check_download/</guid><description>Why 中國醫要求要想報告電子檔，只能使用中國醫點通 App，且不開放下載該 PDF 檔案。 我都花錢健檢了，還加不少錢驗 IgE 過敏，怎麼不給我下載？ How 使用 Android App (iOS</description></item><item><title>CancelIoEx Needs Twice Enter for Input</title><link>https://jackkuo.org/post/win_console_cancelio_getline/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/win_console_cancelio_getline/</guid><description>Investigation CancelIoEx is a Windows API to cancel I/O blocking operation.
However, once you use it to cancel the blocking getline() or getchar() and resume getline() or getchar() again, the first input (hit Enter key) will not be caught by your code… It’s weird.
#include &amp;lt;iostream&amp;gt; #include &amp;lt;thread&amp;gt; #include &amp;lt;string&amp;gt; #include &amp;lt;windows.h&amp;gt; using namespace std; HANDLE hStdin = nullptr; void readInput() { string input; while (true) { cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; &amp;#34;input: &amp;#34;; getline(std::cin, input); if (cin.</description></item><item><title>motionEye 監視器自動偵測+發送通知</title><link>https://jackkuo.org/post/motioneye_intro/</link><pubDate>Sun, 24 Sep 2023 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/motioneye_intro/</guid><description>前言 家中監視器裝設多年，每次出遊時擔心遭小偷，總得三不五時連回家中看一下監視器串流。 想到現在影像辨識技術那麼成熟，應該有好心人士釋出免費的監</description></item><item><title>Python Popen 成功卻回傳非 0</title><link>https://jackkuo.org/post/popen_return_non_zero/</link><pubDate>Mon, 17 Jul 2023 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/popen_return_non_zero/</guid><description>現象 有位 user 使用 Python subprocess.Popen() 來執行程式時，明明該程式顯示成功，且回傳 0，但是在 Python 中卻拿到非 0 回傳值，這是為什麼哩？ # 範例程式 import subprocess proc = subprocess.Popen(&amp;#34;calc.exe&amp;#34;, shell=True) proc.communicate() print(proc.returncode) 調查 該 Python 腳</description></item><item><title>Learning from Developing Console App</title><link>https://jackkuo.org/post/learning_from_dev_console_app/</link><pubDate>Thu, 29 Jun 2023 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/learning_from_dev_console_app/</guid><description>Preface Recently, I was tasked with developing a console application. Yes, you read that right, a console application. Senior software engineers may find this quite familiar, but as time marches on, the web has taken center stage in the software world. Nowadays, most software jobs revolve around web development, and console applications may seem like a relic of the past. Nevertheless, I am here, writing this blog post, to document</description></item><item><title>在 Visual Studio 2022 打開 AddressSanitizer (CMake+MSVC)</title><link>https://jackkuo.org/post/vs2022_cmake_sanitizer/</link><pubDate>Mon, 08 May 2023 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/vs2022_cmake_sanitizer/</guid><description>前言 AddressSanitizer (ASAN) 是記憶體除錯利器，除了 MSVC 實做的，比較知名的元老是 Google 實做的版本。 面對一些比較基礎的記憶體問題如 buffer overflow，許多 IDE 內建的掃描即可</description></item><item><title>網路相關指令速查表</title><link>https://jackkuo.org/post/network_command_cheatsheet/</link><pubDate>Wed, 29 Mar 2023 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/network_command_cheatsheet/</guid><description>前言 前份工作在雲端產業當網路技術客服，記錄一下當時會用到的一些指令，避免自己忘記。 TCPdump sudo tcpdump -i eth0 -n dst host x.x.x.x -w output.pcap tcpdump -nnvvXSr my_capture.pcap Capturing packets with A particular TCP Flag URG ACK PSH RST SYN FIN 32 16</description></item><item><title>Matomo - 自架網頁流量分析與繞過阻擋器</title><link>https://jackkuo.org/post/matomo_tutorial_bypass_blocker/</link><pubDate>Sun, 20 Jun 2021 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/matomo_tutorial_bypass_blocker/</guid><description>前言 談到網頁流量分析，第一個想到的一定是 Google Analytics，非常好用，但同時也有隱私考量，加上部分使用者會使用擋廣告外掛如 AdBlock、</description></item><item><title>未連接螢幕時使用 VNC 連線</title><link>https://jackkuo.org/post/vnc_without_monitor/</link><pubDate>Thu, 27 May 2021 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/vnc_without_monitor/</guid><description>以下在 Ubuntu 20.04 LTS 測試成功。 傀儡影像驅動 系統預主機得接上螢幕，才能夠顯示畫面；當一台機器只有一個螢幕（或沒有螢幕），卻要多人使用 GUI 時，就需要假裝有</description></item><item><title>Chromium 透過 SSH Port Forwarding 造訪網站失敗調查</title><link>https://jackkuo.org/post/chromium_based_failed_via_ssh_port_forwarding_investigation/</link><pubDate>Wed, 24 Mar 2021 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/chromium_based_failed_via_ssh_port_forwarding_investigation/</guid><description>前言 將遠端網頁伺服器 SSH Port Forwarding 到本地端後，Firefox、Safari 可以正常瀏覽該 port 的網頁，Chromium 的瀏覽器都不行（顯示 ERR_EMP</description></item><item><title>QEMU 速查表</title><link>https://jackkuo.org/post/qemu_cheatsheet/</link><pubDate>Thu, 12 Nov 2020 00:00:00 +0000</pubDate><guid>https://jackkuo.org/post/qemu_cheatsheet/</guid><description>安裝 QEMU Notion 筆記 sudo apt-get install qemu-kvm \ qemu \ virt-manager \ virt-viewer \ libvirt-daemon-system \ libvirt-clients \ libvirt-daemon-driver-lxc 基本操作 建立虛擬磁碟 qemu-img create -f qcow2 hw1-ubuntu.qcow2 20G 掛載開機碟、開機 掛載與開機 qemu-system-x86_64 -smp 4,sockets=1,cores=4,threads=1 \ -cpu host \ -m 2G \ -boot d \ -cdrom ./ubuntu-16.04.6-desktop-amd64.iso \ -hda my_ubuntu.qcow2 \</description></item></channel></rss>