2026年3月3日 星期二

使用 umount 遇到 Device or resource busy, 強制 umount 的 command

 Linux 底下當遇到
# umount  /dev/disk/by-partlabel/data
Can not mount /dev/disk/by-partlabel/data to /opt/cust/init: Device or resource busy

這有可能是因為前一次掛載著,並且有人在使用當中的資料,所以系統不讓你卸載

如果要想要強制卸載的話,可以使用以下的參數 -l (小寫 L)
需要搭配 mount -l 就可以強制 umount

=>
umount -l /dev/disk/by-partlabel/data


2025年11月4日 星期二

台新銀行信用卡,延遲繳款違約金

 今天信用卡帳單,多出一筆 "延遲繳款違約金",以及 "循環信用利息"

網路查詢了一下,得知,如果當月信用卡扣款,餘額不足,或是你的信用卡繳款日,但你沒有繳交最低額度,就會出現這筆款項,如果你只是遲繳了1~3天,通常也不會有這個款項要付

我於是打客服詢問一下情況,客服人員是說,9/7 需要繳款,但是我 10/18 才繳清,時格有點久了,所以會有這筆費用產生,然後就問我,是因為沒收到帳單? 還是工作太忙碌?

因為我以往沒有這樣的紀錄,所以這次可以通融,會幫我把這筆$312的費用消除

客服人員真的滿好的,另外收到這樣的帳單,記得打電話給客服人員溝通一下,有機會可以省下這一筆小錢 XD

上傳進度:已上傳 119478 個位元組 (共 119478 個位元組)。



2025年8月6日 星期三

Linux kernel minor upgrade

 今天嘗試把 kernel v4.19.98 作微升級,要升級到 v4.19.325,因為我們原本的 kernel 並不是原生最乾淨的 Linux kernel v4.19.98(是拿MTK平台的 SDK),先講我打上了這兩個版本中間的 patch,但最終編譯,卻有一堆error,解不完

 但我認為,作這件事情,中間的過程,是值得作個記錄的,因此寫了這篇文章,來記錄中間所做的步驟。

1. 下載 Linux 的 branch,使用指令如下:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

2. 每個版本都有打上tag,因此我們可以先 checkout 到 v4.19.325
git checkout v4.19.325

3. git log 確認一下 v4.19.325 與 v4.19.98 分別的 commit hash 號碼是多少










4. 使用指令,把 98 ~ 325 這中間的 commit 都作成 patch 檔,指令如下:
git format-patch d183c8e2647a7d45202c14a33631f6c09020f8ac..a67e7cdde7cc7984ae24c3c81a70dc1aa34424b1 -o patch/

5. 可以看到,目前目錄底下,會產出資料夾 patch/ ,裡面有 19xxx個patch 檔,依序都做好了編號

6. 接著我們準備要來打 patch,先說明一下,我目前的目錄環境是這樣,
apps/src/kernel/linux/4.19/,我目前專案的 repository 是在 apps底下,也就是我可以在 apps底下執行 git log,可以看到以往的 commit 資訊,而目前是要把 linux patch 打到   apps/src/kernel/linux/4.19/ 底下

7. 因為第6.的關係,我們把 patch/ 移動到 apps底下,我們打patch 的指令會如下:
cd apps/
git am --directory=src/kernel/linux/v4.19 patch/* -3  

(加上 -3(或 --3way)後,如果直接套用失敗,Git 會嘗試用三方合併的方式來解決衝突,這樣有時候可以自動解決一些簡單的衝突)

8. 打patch 的途中,會遇到許多的 conflict,你會需要開啟檔案,去解衝突,但我發現 19xxx筆patch,要解的 conflict 實在太多了,後來遇到 conflict 直接使用以下command,意思是直接幫我把衝突的舊檔案的部分刪除,把新的patch 新增的內容,改到檔案裡面: 
git checkout --theirs $file (file帶入中途的檔案路徑 與 名稱)

9. 途中會遇到一些,甚麼都沒改的 patch,會需要手動執行 git am --skip 來繼續,另外解完 conflict 的檔案,要手動執行 git am --continue 來讓 git am 繼續跑

10. 另外有遇到一個,git am 打patch,我發現有一個限制,就是打到 9999個 patch的時候,你再輸入 git am --continue 會沒辦法繼續,如下圖,這時候你必須要先 git push,把先前打的patch 都git push,然後再繼續從第 10000筆繼續打,我的作法是




   







   a. 在作第4部的時候,也順便把檔案列表資訊,輸出到一個檔案:
git format-patch d183c8e2647a7d45202c14a33631f6c09020f8ac..a67e7cdde7cc7984ae24c3c81a70dc1aa34424b1 -o patch/ > patch_list.txt
   b. 想辦法使用 note 或是 Notepad++ 把這些列表改成
rm 0001-xxxx
rm 0002-xxxx
..
rm 9999-xxxx
   c. 切換到 patch/ 資料夾,把 0001~9999 的patch 檔案都刪除
   d. 在接著使用git am 的命令繼續打剩餘的 patch:
git am --directory=src/kernel/linux/v4.19 patch/* -3  


結論: 
   1. 我在這次的過程中,寫了以下兩隻script,當發生conflict,就使用git checkout --theirs $file 去解conflict,因此可以一直遞迴去處理patch,但遇到 git am --continue 無法繼續的空內容,目前就是手動去下 git am --skip
   2. 其實比較好的做法,應該要是以下步驟
        a. 先 git checkout 到 linux pure v4.19.98
        b. 把vendor最一開始給的 kernel 覆蓋到
 linux pure v4.19.98
        c. git diff 看一下改了那些檔案
        d. 直接把 
linux pure v4.19.98,checkout 到 v4.19.325,然後試著把 前一步驟,git diff 的改回去,但如果真的差異太大,就是一個很大的工程了....

以下分享我的兩個 shell script: (主要就是執行 ./for_loop.sh)

主程式:  for_loop.sh

#!/bin/sh
for i in {1..20000}
do
    ./fail_process.sh
    if [ $? -eq 2 ]; then
        echo "fail_process.sh failed, stopping loop."
        break
    fi
done

副程式:  fail_process.sh

#!/bin/sh

# Get the list of files marked as "both modified" from gg (git status)
files0=$(git status | grep "both modified:" | awk -F: '{print $2}' | xargs)

# For each file, run git add
for file in $files0; do
    echo "Processing $file ..."
    git checkout --theirs $file
    git add $file
done


# Get the list of files marked as "deleted by them:" from gg (git status)
files1=$(git status | grep "deleted by them:" | awk -F: '{print $2}' | xargs)

# For each file, run git add
for file in $files1; do
    echo "Processing $file ..."
    git add $file
done

# Get the list of files marked as "deleted by us:" from gg (git status)
files2=$(git status | grep "deleted by us:" | awk -F: '{print $2}' | xargs)

# For each file, run git add
for file in $files2; do
    echo "Processing $file ..."
    git add $file
done


# Get the list of files marked as "both added" from gg (git status)
files3=$(git status | grep "both added:" | awk -F: '{print $2}' | xargs)

# For each file, run git add
for file in $files3; do
    echo "Processing $file ..."
    git checkout --theirs $file
    git add $file
done

if [ -z "$files0" ] && [ -z "$files1" ] && [ -z "$files2" ] && [ -z "$files3" ]; then
        exit 2
fi

git status
git am --continue



2025年8月3日 星期日

C 語言裡面 Static 宣告 function或變數,的用途與意義

 static 在 C/C++ 有幾個不同的用途,根據用在不同地方意義不同:

(A) 用在函式或變數前面(檔案層級)
作用範圍只限於本檔案,其他檔案無法看到或使用這個函式/變數。
常用來避免命名衝突,或是只在本檔案內部使用的工具函式。

(B) 用在區域變數前面(函式內部)
變數只會初始化一次,之後的呼叫會保留上次的值(類似全域變數,但作用範圍只在這個函式內)。

2025年6月25日 星期三

core dump 以及透過 gdb 來debug,問題點出在哪

 今天我們拿 systemd-journald 的 core dump 來當範例
 解壓縮 core_systemd-journald.tar 可以看到資料夾內有以下檔案


我們這篇,主要是去拿 exe.lz4 與 core.lz4 來放到 gdb 裡面,來做debug

所以我們先把者兩個 lz4 檔案,放到linux 系統中使用以下 command 把他解開,得到兩個檔案,分別是 core 與 exe,
core 是 core dump 紀錄的錯誤資訊,exe 則是此執行檔(systemd-journald)
=>
lz4 -d core.lz4 core
lz4 -d exe.lz4 exe

接著我們把 core 與 exe 丟到有gdb 的 device上,如果編譯的時候,也有編譯出 symbol 的 library 或是 執行檔,也可以準備一下,等等 gdb 會使用到 (symbol 就是沒有被 strip 的檔案)
symbol資料夾如下:


接著到平台上,執行 gdb,command 如下:
=>
gdb exe core


可以看到Core was generated by `/lib/systemd/systemd-journald'.
Program terminated with signal SIGABRT, Aborted.
=> systemd-journald 因為 SIGABRT造成的 crash

接著可以用 bt full 印出完整的資訊

目前只能知道,在 libc.so.6 這個 library的 function,writev() 出了問題,下面指出
No symbol table info available
我們就去找 symbol folder,試試看用 systemd-journald 的 binary跑gdb 試試看


gdb systemd-journald core
會看到多了一些資訊,gdb似乎有載入一些資訊


此時,在重新執行剛剛的指令,可以看到更完整的資訊
=>
gdb exe core
  








2025年6月20日 星期五

指令,把read-only 的filesystem,remount 成 read/write

使用mount指令,先看一下,目前 / 掛載為 read-only,ext4 的 filesystem
root@:# mount
/dev/mmcblk0p16 on / type ext4 (ro,relatime,norecovery)


把 root folder 重新掛載成可 read/write
 mount -o remount,rw /

再用mount看一次
root@:~# mount
/dev/mmcblk0p16 on / type ext4 (rw,relatime,norecovery)

2025年3月7日 星期五

馬桶水箱的水一 直滿出來,解決方法

 家裡馬桶水箱的水,一直太滿,從水箱中的一根管子溢出
 因為馬桶水箱,是靠浮球浮起來,來止水灌進水箱的

這裡提供兩個簡易的解決方法,可以先試試看能不能解決

1. 檢查浮球是否進水,導致浮不起來,
=> 有的浮球是可以轉開來的,可以看看裡面是否有進水
     把水甩掉,或是弄掉,再試試

2. 把連接浮球的鐵桿,弄彎一點,看看能不能止水

2025年1月7日 星期二

Linux Tool, taskset 可以用來限制程式,只去使用特定 CPU

 Linux 當中有個Tool,叫做 taskset,可以限制某個Daemon只跑在規定的CPU編號之下,這邊會先簡單介紹 taskset使用方式,不免俗的,最後會附上一個實際操作

首先簡單寫一個 while迴圈,打印test的字樣,但不顯示在螢幕上,這支來當我們的Daemon,並且使用以下command,讓他在背景執行
=> sh loop_test.sh &
======= loop_test.sh 小程式 =========
#!/bin/sh
while [ 1 ]
do
   echo "test" > /dev/null
done



======= 使用方式 =======

首先我們可以用以下的指令,來得知目前設備的 CPU核心數目
=> cat /proc/cpuinfo

查詢目前的 Daemon,所配置的 CPU編號,這有兩種查詢方式
1. 直接列出,此Daemon使用的CPU編號,這邊Daemon的 PID=5622 (ps -aux | grep loop_test.sh)
=>
root:~# taskset -cp 5622
pid 5622's current affinity list: 0,1

2. 以mask方式列出,此Daemon使用的CPU編號,這邊Daemon的 PID=5622
=>
root:~# taskset -p 5622
pid 5622's current affinity mask: 3

這邊的3,為Hex,需要把他換成二進制來解讀,所以為 0x11,表示CPU0,CPU1目前會讓此Daemon使用(如果CPU為8 core,得到的數值為FF(hex),則表示 CPU0~7都會分配)


======= 使用方式 & 實驗 =======
設置目前的 Daemon,只分配CPU1 來做

=>
root:~# taskset -cp 1 5622
pid 5622's current affinity list: 0,1
pid 5622's new affinity list: 1

"top -d 1" 觀察一下cpu 與 process 狀態

=> 可以看到 CPU1 的 idle為0%,loop_test.sh 把整個CPU1用盡了,而CPU0是完全閒置的











這時候,我們再使用指令把 loop_test.sh 平均分配給 CPU0 & CPU1
=>
root@auto2735evb-ivt-vp2:~# taskset -cp 0,1 5622
pid 5622's current affinity list: 1
pid 5622's new affinity list: 0,1

"top -d 1" 觀察一下cpu 與 process 狀態
=> 可以看到 CPU0與CPU1,都有分配給 loop_test.sh使用



2024年12月6日 星期五

在adb shell 執行一個背景程式,如何讓 adb shell中斷後,此背景程式不會被中斷

 今天遇到有客人問一個問題
 他想要用 tcpdump 抓封包,指令如下:
tcpdump -i any -C 100 -W 10 -U -w /tmp/tcpdump.cap &

但因為,我們的device,在拔除usb之後,device可以進入 suspend
他想要在 wakeup的時候,抓到是甚麼樣的封包,

另外他想要透過 adb shell 去執行這個指令,所以當下完上面指令,adb shell 斷線之後
tcpdump 也終止了

查詢與嘗試了一下,可以使用以下指令解決
nohup tcpdump -i any -C 100 -W 10 -U -w /tmp/tcpdump.cap > /tmp/tcpdump.log 2>&1 &

只要確保 /tmp 目錄是可寫的,這樣 tcpdump 的輸出和錯誤信息將被寫入到 /tmp/tcpdump.log 文件中


2021年11月22日 星期一

Yocto Project 如何編譯出 ToolChain,如何使用 Toolchain編譯

 Yocto 目前已經是各大IC廠在使用的專案類型,與之相似的,有OpenWRT 或是 BuildRoot

今天要介紹如何從Yocto Project 編譯出ToolChain,並且會說明如何使用ToolChain,最後會說明如何編譯一個簡單的Hello World.

如何編譯出ToolChain
首先我們可以使用以下的Command來編譯出 ToolChain
# bitbake meta-toolchain

編譯完成後,在 build/tmp/deploy/ 資料夾底下,會多出 sdk 資料夾,而裡面會有 ToolChain安裝檔,如下圖:








如何安裝ToolChain

把上面編譯出來的ToolChain安裝檔,執行並且加上參數 -h ,可以看到此安裝檔的使用說明,如下所示:

./oecore-x86_64-aarch64-toolchain-nodistro.0.sh -h
Usage: oecore-x86_64-aarch64-toolchain-nodistro.0.sh [-y] [-d <dir>]
  -y         Automatic yes to all prompts
  -d <dir>   Install the SDK to <dir>
======== Extensible SDK only options ============
  -n         Do not prepare the build system
  -p         Publish mode (implies -n)
======== Advanced DEBUGGING ONLY OPTIONS ========
  -S         Save relocation scripts
  -R         Do not relocate executables
  -D         use set -x to see what is going on
  -l         list files that will be extracted

如果沒有使用 "-d" 來指定安裝路徑,則系統預設會安裝在 /usr/local/oecore-x86_64/
簡單的安裝指令如下,會把ToolChain安裝在 /opt/ 路徑下:
# ./oecore-x86_64-aarch64-toolchain-nodistro.0.sh -d /opt/

可以看到 /opt/ 底下有一些檔案,有一些是環境變數設定檔,而ToolChain都在 sysroot資料夾底下

如何編譯可以放在開發版上的 HelloWorld 程式
假設剛剛我們把ToolChain安裝在 /opt/ 底下,我們可以先使用下面指令來設定一些環境變數
# 
source /opt/environment-setup-aarch64-poky-linux

環境變數設定好之後,變數 $CC 會是預設的ToolChain執行檔,印出 $CC 這個變數,可以看到如下圖片:




接著先撰寫好簡單的helloWorld.c 小程式,用下面的Command編譯,就可以編譯出開發板可以Run的小程式
# 
$CC helloWorld.c -o hello


由這邊也可以發現,當要自己加入Package 到 Yocto Project,通常這個Package的 Makefile裡面,不能指定CC的值,不然編譯會出問題,關於這個議題,我再開一篇文章來講解如何加一個Package到 Yocto Project...

2021年9月27日 星期一

vi / vim 常用的搜尋方法

以下方式都是在command 模式,(按小寫i 就會切換到編輯模式,在按一次ESC會切到command模式)

1. 將游標移到字串上,直接按"*" ,可以直接做向下搜尋

2. 輸入"/", 接著輸入字串,可以向下搜尋此字串,接著按"n",可以向下搜尋,按"N",可以向上搜尋

3. 按下"?", 接著輸入字串,可以向上搜尋字串,接著按"n",可以向上搜尋,按"N",可以向下搜尋

4. 按下":",輸入"set num",可以列出整篇文字檔的"行號" 

2021年9月23日 星期四

insert BT module hci_uart.ko 的時候,遇到 Unknown symbol in module 的 Error 訊息

 今天在開發platform的時候,準備要把編譯好的 NXP BT module 做insert的動作,卻出現了如下面所列的錯誤訊息:

insmod: ERROR: could not insert module hci_uart.ko: Unknown symbol in module
[   79.719642] .(1)[5227:insmod]hci_uart: Unknown symbol hci_free_dev (err -2)
[   79.719810] .(1)[5227:insmod]hci_uart: Unknown symbol hci_alloc_dev (err -2)
[   79.719875] .(1)[5227:insmod]hci_uart: Unknown symbol hci_unregister_dev (err -2)
[   79.719889] .(1)[5227:insmod]hci_uart: Unknown symbol hci_recv_frame (err -2)
[   79.719927] .(1)[5227:insmod]hci_uart: Unknown symbol hci_register_dev (err -2)

以下我們將一步步來說明,如何找出這個問題的原因

1. 首先我們先到linux kernel driver底下,我們使用grep 來找一下,到底哪裡實作了 hci_free_dev()
# grep -rn hci_free_dev
結果找到的都是呼叫此function的地方,於是我們再往上一層路徑去尋找














2. 我們在kernel底下,再次輸入grep 指令來尋找看看哪裡實作了 hci_free_dev()
# grep -rn hci_free_dev
結果發現,此function實作在 net/bluetooth/hci_core.c 當中









3. 因為是Unkown Symbol錯誤,其原因可能是 kernel config 沒有開到需要的功能,導致找不到function實作的地方。
所以我們可以切換到 net資料夾底下,查看Makefile檔案,看看 bluetooth/hci_core.c 要開啟那些 config才會被編譯到。於是,我們發現,CONFIG_BT必須在Kernel Config當中被開啟才行













4. 接著準備去開啟kernel的config檔案。依據每個專案不同,位置與檔案名稱不一定相同,一般原生linux會是在 kernel/linux/v4.19/.config,我們編輯.config來查看CONFIG_BT的設定。
我們發現這邊設定為m,表示module的意思,Linux在開機過程,不會自動insert此 module,除非自己手動 insmod。因此我們把 "CONFIG_BT=m" 改為 "CONFIG_BT=y",然後重新編譯。
*如果找不到 CONFIG_BT,則必須自己加入字串CONFIG_BT=y,來做設定










5. 在重新編譯過後,再去insert hci_uart.ko,就沒有再報錯誤,問題就解決了!

2021年9月14日 星期二

git 打 patch的方法

 假設我現在的Source code有git資訊,也就是可以用 "git status" 或是 "git diff" 等指令來查看目前狀態或是差異

 假設我目前修改了檔案,路徑與檔名為
  /home/danny/src/example/aaa.c
 當前所在目錄為 /home/danny/ 底下

打一個patch(讓別人Merge你的修改) 
於是我們可以很簡單的,使用下面的命令,先打一個patch檔案
 git diff src/example/aaa.c > aaa.c.patch
於是就會多出一個檔案,位於 /home/danny/aaa.c.patch

 aaa.c.patch大概內容會如下,可以看到差異:

--- a/src/example/aaa.c
+++ b/src/example/aaa.c
@@ -33,7 +33,11 @@
-      printf("Hello\n");
+     printf("Hello World\n");

如何把patch檔Merge入自己的code
假設我現在是在 /home/andy/ 目錄下,先把 aaa.c.patch 複製到此目錄底下
接著確定此檔案確實存在 src/example/aaa.c
使用以下指令把patch檔打入
  patch -p1 < aaa.c.patch

這樣就可以了!!

2021年8月23日 星期一

編譯遇到 error: braces around scalar initializer [-Werror] 的解決方法

首先 braces 中文意思為 "大括號",

而編譯出現這個錯誤訊息時,十之八九問題出在少了對稱的大括號,

因此請仔細檢查一下,是否漏了"{" 或是加錯地方.

2021年8月20日 星期五

當要 export GPIO, 或是使用 gpio_request 遇到 write error: Device or resource busy 的解決方法

 當使用  echo 0 > /sys/class/gpio/export
kernel卻拋出 -sh: echo: write error: Device or resource busy

這表示此GPIO正被某個driver占用,因此你沒辦法申請這個GPIO來使用
而這個問題的解決方法,只能找出是哪個driver code, 做完 gpio_request()之後 卻沒有做 gpio_free()的地方

另外可以使用下面指令來查看那些gpio被占用

cat /sys/kernel/debug/gpio

=======================================================

另外下面記錄一些gpio操作的指令

第一步可以先ls /sys/class/gpio,有的可以從這邊看到gpio的base值 

(例如base=268, gpio0在下面的操作就要echo 268+0, gpio10就會是 268+10)

1. request gpio
echo 0 > /sys/class/gpio/export

2. check dicrection value
cat /sys/class/gpio/gpio0/direction

3. change direction
echo out > /sys/class/gpio/gpio0/direction

4. check output value
cat /sys/class/gpio/gpio0/value

5. change output value to high
echo 1 > /sys/class/gpio/gpio0/value

6. free the gpio
echo 0 > /sys/class/gpio/unexport




Linux Terminal 顯示亂碼

 如果再Linux teminal底下,遇到顯示亂碼的問題,可以用下面的指令解決

$ export LANG=zh_CN.UTF-8 

2021年6月30日 星期三

用Paypal購買Switch(NS)遊戲,設定使用信用卡匯率

前一篇文章有提過,跨區買eShop Switch 數位版遊戲,如果區域是俄羅斯聯邦,會有信用卡刷不過的問題,這時候就必須透過Paypal來付款 

而Paypal綁定信用卡,會有兩種匯率可以選擇,預設會是使用Paypal的匯率,但這樣換算下來,會被收比較多的錢(Paypal收一次,信用卡收一次?),因此我們通常會設定成使用信用卡匯率,下面就一步一步以圖片來告知怎麼設定


Step1:
先登入Paypal官網 https://www.paypal.com/tw/home 登入後,如下頁面,接著點選左上角選單:













Step2:
接著點選齒輪圖案:





















Step3:
點選上面的"交易款項"去作設定





















Step4:
接著點選"管理自動付款"





















Step5:
已經在任天堂綁定過Paypal付款,到了這頁就可以看到有任天堂的選項,點選這個圖案進去設定





















Step6:
點選下方綁定的信用卡,旁邊的編輯圖案





















Step7:
點選"查看貨幣轉換選項"





















Step8:
最後一個步驟,把這個頁面的設定改為信用卡轉換,再按下同意,就成功了!





















2021年6月27日 星期日

在Switch(NS)的eShop商店,跨區購買便宜數位版遊戲的方法

這篇跟大家介紹購買便宜的數位版"煮過頭1+2"的方法

首先你必須要有一個任天堂帳號,因為數位版遊戲,必須綁定此帳號,請用手機或電腦,至下面任天堂網站先註冊一個帳號: 登入or註冊

註冊完成後,我們可以透過這個網站去切換所在的區域,操作如下圖:
有一件事,要先提醒使用者,台灣地區是沒有提供eShop,所以你會發現,當地區為台灣,你從Switch登入後,到eShop會提示你無法進入~
















上圖當中可以看到,我把區域切成日本,因為我本身有Paypal帳號,eShop除了可以透過信用卡刷卡之外,也提供使用paypal付款,而切成日本區域之後,我們可以在"商店選單"裡面來作設定,設定完成後,在eShop裡面除了可以選信用卡付款之外,也可以選擇透過Paypal來付款,操作如下圖:
而Paypal的好處,則是可以在俄羅斯聯邦這類國家,當信用卡刷不過,就可以透過Paypal來付款














接下來要示範如何透過跨區,用最低價來購買一個數位版遊戲 (煮過頭1+2合輯)
首先我們先從"遊戲盒子"APP,看到煮過頭1+2只需要台幣375,而且必須跨區到"俄羅斯",所以第一部,必須利用上面的方法,先切換到俄羅斯區域,"遊戲盒子"的資訊,如下圖:














接下來的操作是在你的Switch上面,請選擇Nintendo eShop,接著會要求你選擇任天堂帳號,請選擇上面步驟建立好,並且已經跨區的帳號,如下圖:
















接著會進入到eShop的頁面,也就是購買數位版遊戲的頁面,頁面會是看不懂的文字(俄羅斯文),不過我幫你翻譯好了,可以從"減價"或"排行榜"去找你要買的遊戲,可能會無法搜尋,不過最近減價的,都可以從減價頁面找到












選擇遊戲之後,會到下面這個購買的頁面,選擇右邊頁面第一個選項,也就是"購買",然後記得確認一下金額,是否與遊戲盒子看到的價錢相同。有些遊戲會有兩個選項,我這邊以NBA 2021舉例(香港區的頁面),可以看到第二個選項是"下載體驗版"
















按了購買之後,接著會跳下個頁面,選擇付款方式,可以看到下圖,付款方式有信用卡,與Paypal可以選擇,此次我是選擇Paypal付款,因為我跨區到俄羅斯聯邦,有很多人嘗試用信用卡,遇到刷不過的問題,因此這邊教學是用Paypal購買,如果是要用信用卡付款,則更簡單,選擇第一個"信用卡"選項即可。











選擇Paypal付款,則會到接下來的頁面,這邊會有好幾個選項,是在詢問你要透過Paypal綁定的信用卡,加值多少金額來作付款,我們選第一個選項就可以,也就是儲值此次需要的金額即可










接下來會跳到這個頁面,我們需要去右邊的頁面打勾,表示同意,接著點選購買的按鈕,如下圖











最後有這個頁面,表示購買成功,然後出現感謝您的畫面。這樣就表示你有成功透過Paypal付款了,最後記得先把任天堂帳號的區域選項,再改回台灣,接著回玩遊戲的頁面,就會看到遊戲正在下載了,台幣375元的煮過頭1+2就入手了,語言也是繁體中文! 









在這個頁面,選第一個選項,就會開始下載了


2021年6月20日 星期日

購買便宜的Switch數位遊戲(NS),跨區購買,遊戲箱子App介紹

 入坑Switch的玩家,應該都會發現,會不停的買新的遊戲來玩,這些遊戲都很燒錢,一片動輒1000元起跳,我先來比較一下實體遊戲片,與數位遊戲的優缺點

==== 實體遊戲片====
優點: 玩膩了可以便宜轉賣,尤其是馬利歐系列的遊戲,都很好轉賣
缺點: 價錢昂貴

==== 數位遊戲 ====
優點: 價格比較便宜,有時候特價會折到2折3折
缺點: 必須綁定自己的任天堂帳號,無法轉售

接下來,假設你還是會想買數位版遊戲,我會推薦你安裝"遊戲箱子" APP,Android與Iphone都有,是免費的APP,這個APP會幫我們整理出,有哪些遊戲是正在特價的

這些數位的遊戲,任天堂在每個國家賣價都不太一樣,這個APP也會幫我們整理出哪個國家價錢最低,我們就可以切換到那個國家區域來用最低的價錢買遊戲,接下來我們介紹一下怎麼去看跨區的價錢,以及那個區域買的遊戲是否有支援我們要的語言











安裝完成之後,進到APP頁面,可以看到有哪些特價的遊戲,我們可以點選"更多",或是透過搜尋找看看有沒有自己想要的













這邊我們用"航海王"為介紹的範例,這邊可以看到墨西哥賣台幣196元,另外美國賣台幣222元,加拿大則賣TWD.234元,看不懂國旗或是看更詳細的價錢,點選總覽旁邊的"價格"












點選價格後,可以看到下圖,列出了更詳細的價錢,以及更多國家的價錢,可以看到最便宜的是墨西哥,墨西哥幣是145.8元,換算台幣為196TWD,另外也可以看到各國家的價錢












接下來,要看的是資訊,如下圖,"資訊"會列出各個區域買的遊戲,可以支援哪一些語言,這邊沒有寫墨西哥的資訊,但在上上一張圖片,墨西哥後面有寫支援"繁體中文",但如果想保守一點,確定買的遊戲有支援繁體中文,這邊有寫了美洲有支援繁體中文,,就花TWD.222跨美國去購買吧












接著是討論的部分,這部分是網友們的留言,有時候會有有用的資訊,你也可以在這上面留言發問












再來是影音,這邊就會介紹遊戲中的圖片,還有官方的遊戲影片












以上是"遊戲箱子"幫忙整理出來的訊息,對於想要跨區購買便宜遊戲的朋友,真的是很有幫助,下一篇文章再來介紹,如何實際來跨區購買遊戲~

2021年6月11日 星期五

新冠疫苗的一些介紹影片,看完就知道為什麼

 最近從網路上看到一些影片在講Covid-19疫苗的一些知識,我把兩部影片連結放在下面,看完真的長知識了~


1. 為什麼買不到疫苗,不是說要買就可以買到
https://m.bilibili.com/video/BV1eK4y1X7TQ


2. 各種新冠疫苗的效力 是怎麼統計出來的
https://youtu.be/rS6S5vK77pA