2022年12月12日星期一

[shell script] 排除特定檔案,複製其餘的檔案or資料夾,到另一個路徑的方法

 ===== 狀況描述 ======

目錄底下,分別有AAA資料夾與 BBB 資料夾

AAA目錄底下分別有以下的資料夾與路徑



 


現在我們寫一個script,可以讓AAA底下的 111, 333, 666 不要複製到 BBB 資料夾

============ cp_exclude.sh ================

#!/bin/sh
rsync -r --exclude '111' --exclude '333' --exclude '666' AAA/ BBB/

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

很簡單的一行指令,就可以完成
下面我們看一下 BBB/ 資料夾底下,複製了哪些東西




*註: 雖然排除了要複製的東西,剩餘都複製過去了,但是發現,原本555資料夾底下的的檔案,卻無法一起複製到 BBB/ ,如果以後有解決方法,再上來更新...

2022年11月17日星期四

Google AdSense審核失敗,必須修正問題,網站才能開始使用 AdSense,解決方法

 Google blog 想要申請廣告,卻遇到審核失敗,請先檢查是不是沒有做下面這件事情,將您的網站連結AdSense。 

要如何做才能夠連結AdSense? 請依照以下步驟

Step1: 請先到您的 AdSense頁面,作以下步驟

1) 點選左邊 "廣告"

2) 點選 "取得程式碼"











Step2: 接著會看到切換到這個頁面,作以下步驟

1) 點選 "複製程式碼片段"

2) 點選 "完成"


















Step3: 接著請切換到您的 Blog 管理頁面,作以下步驟

1) 點選左邊 "主題"

2) 點選自訂右邊的 "箭頭"

3) 點選 "編輯HTML"













Step4: 接著會看到切換到程式碼的頁面如下,不用擔心看不懂,只需作以下步驟

1) 在 <head>下方,貼上剛剛複製的程式碼

2) 點選右邊的 "儲存" 圖案










Step5: 最後再回到 AdSense的頁面,再次請Google審核


就以上的步驟,希望這篇文章對於要加入廣告行列的各位有幫助!!!

2022年9月24日星期六

辦理護照需要注意的事項,包含大頭照的格式

 

必備文件

  1. 委任書 (D式;本人【未成年人由其法定代理人】委任旅行社代為申請護照時填用)**如附檔**
  2. 電子檔照片請先mail + 1張彩色實體照片規格需符合規定(6個月內白底彩色近照、頭頂至下巴長度介於 3.2-3.6 公分需露耳朵、眉毛,不可露齒、不可配戴粗框眼鏡、不可以有反光
  3. ※電子檔照片規格重點-限定JPGJPEG格式,色彩模式為RGB(需至少24位元),檔案大小不得大於5MB解析高度至少需達531像素,寬度至少需達413像素。
  4. 身分證正本14歲以下, 改以戶口名簿正本 3個月內戶謄正本 18歲以下需監護人身份證正本)
  5. (換發申請)舊護照未過期須繳回
  6. (遺失件申請)警察機關核發之「護照遺失申報表」正本
  7. 首次申請需先至 戶政事務所作「人別確認
  8. 工作天:普通件5+2天郵寄 費用NT:1300-

使用手機DIY,製作證件護照用的大頭照方法與步驟,並且洗出照片,

首先安裝兩個APP,我是使用Iphone手機
1. APP名稱: 照片去背












2. APP名稱: 證件照應用












首先先說明[照片去背]APP用法,可以幫你把你自拍的照片背景,替換成全白

Step1: 打開APP之後,選擇"證件照"
Step2: 選擇"換底色"
Step3: 選擇已經使用手機自拍好的大頭照,按下此照片
Step4: 會要求你選擇背景色,請選擇"白色",就會看到妳的照片背景,已經被換成白色
Step5: 這邊我們無法選擇"保存",因為直接"保存"需要付費,為了免費,我們使用手機截圖的方式
Step6: 截圖之後,圖的下方會有一行文字"支付後不顯示此文字",請用照片修圖的方式,把此存文字截掉
最後就完成第一階段,得到了一張去背證件大頭照


使用[證件照應用]APP,可以幫你的上一步產生的大頭照,改成符合政府的格式,另外可以幫你組成一張4x6照片有8個大頭照

Step1: 打開APP之後,選擇"從圖庫中選擇",並選擇去背好的照片
Step2: 點進去後,會詢問你"使用此照片?",請選擇""
Step3: 接著選擇"台灣身分證,護照"的規格選項
Step4: 按下"應用此尺寸"的選項
Step5: 在"指南"的欄位,看到"1","2","3"選項,選擇"2"之後,再去調整需要的大小,請參考政府規定的證件照格式 (參考https://gigidandan.blogspot.com/2022/09/blog-post.html)
Step6: 確定調整好之後,按下"完成調整",會跳出一些提示文字,關閉就可以了
Step7: 接下會出現"以實際尺寸顯示,這樣行嗎?",直接按""
Step8: 接下來會看到調整好的大頭照,會顯示"請指定張數",請設定成8張,
Step9: 最下方要勾選"僅限照片",在此範圍的右上角,有個小框框,點此小框框可以調整洗出來的格式,最後再按下最上面的"下一步"選項
Step10: 會顯示最後要洗的照片,按下右上角的"儲存"選項,存到手機當中


洗照片

到全省有設置"立可得"的便利商店,按照機台所指示的步驟,把照片洗出,即完成

據點查詢: http://www.likoda.com.tw/info/store/

2022年7月22日星期五

linux當中,查詢ubi的一些相關資訊,以及一些ubi製作與掛載指令

 在Linux的作業系統當中,UBI的相關資訊都會在 /sys/class/ubi
 這些資訊會包含
 - 對應的 MTD編號  =>  cat /sys/class/ubi/ubi0/mtd_num
 - Volum名稱  =>  cat /sys/class/ubi/ubi0/ubi0_0/name
 等等....

接下來講幾個UBI的指令,並說明其用途

ubinfo -a /dev/ubi0
這個指令可以列出此ubi0詳細的訊息,其資訊如下圖所示:








ubidetach -m 0
這個指令可以把掛在ubi0的 ubi卸載的指令

ubiformat /dev/mtd0
這個指令可以把mtd0格式化成ubi可以用的格式

ubiattach /dev/ubi_ctrl -m 0 -b 1  (底線表示mtd0,若是 -m 1則為 mtd1)
把mtd0 attach為 ubi

ubimkvol /dev/ubi0 -m -N rootfs (建立後,就會出現ubi0_0)
把ubi0建立Volum名稱為rootfs

mount -t ubifs /dev/ubi0_0 /tmp
把ubi0掛載到 /tmp資料夾


實際上要讓一個ubi可以使用,也就是做下面這幾個步驟

ubidetach -m 0
ubiformat /dev/mtd0
ubiattach /dev/ubi_ctrl -m 0 -b 1
ubimkvol /dev/ubi0 -m -N rootfs
mount -t ubifs /dev/ubi0_0 /tmp


2022年7月21日星期四

[shell script] mv 所有的檔案,排除特定檔案,移動到同一層的特定目錄內

 今天遇到一個用法,這邊來記錄一下
 在目前路徑下有以下這些檔案,包含 6個檔案,以及兩個資料夾










假設我想要把除了333的所有的資料,全部移往final資料夾,該怎麼做呢?
可以使用下面的作法

# mv $(ls --ignore=333 --ignore=final) final

我們來看一下執行結果
可以在mv執行之後,原本路徑只留下 333 與 final資料夾
另外印出final資料夾,該移動的檔案都移動過去了!





2022年7月20日星期三

gstreamer 簡單介紹,以及如何透過文件,正確使用plug-in and element

 首先介紹一下 gstreamer,會有三個可執行黨,分別如下

gst-inspect-1.0 可以查看當前gst-launch-1.0 有哪些 element可以使用
        gst-discoverer-1.0 後面帶入音檔名稱,可以查看音檔的詳細格式
        gst-launch-1.0 gstreamer主要的程式,可以帶入很多的element用pipeline實現


另外會有幾個比較重要的library,這些Library也可以認知為plug-in,分別如下

gstreamer1.0-plugins-base
gstreamer1.0-plugins-good
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-ugly
gstreamer1.0-libav
gstreamer1.0-omx
gstreamer1.0-rtsp-server
gstreamer1.0-vaapi


使用 gstreamer時,我們會看到有 pipeline的作法,gstreamer的pipeline是用 "!" 來做串接,下面指令是播放 wav音檔,並把聲音導到 hw:0,0的介面:
=> gst-launch-1.0 filesrc location=Track1.wav ! decodebin ! audioconvert ! audioresample ! audio/x-raw,rate=32000,channels=1,format=S16LE ! alsasink device="hw:0,0"

上面的指令當中,我們會看到很多個驚嘆號"!",驚嘆號後面,會跟著一行英文字,我們稱他為 "element",
這些element,我們都可以在 gstreamer文件中找到,文件中也會跟你說這個 element,是屬於哪個 plug-in,當gst-launch-1.0有某個 element無法使用時,你就可以透過文件,知道要去哪個plug-in來開啟這個element來使用!

gstreamer文件,關於element & plug-in的介紹,請參考此 link:

接著我們舉個例子,講解一下怎麼對照來看,假設現在我們想要使用到 voamrwbenc 這個功能



這個element的功能,主要是用來把wav音檔,轉換成 amr-wb的格式,
我們可以注意到 Module的欄位為 gst-plugins-bad
因此我們就可以知道,要使用此element的功能,你的gstreamer必須要有安裝 gstreamer1.0-plugins-bad 這個plug-in ,並且有開啟 voamrwbenc這個element

另外如果想知道這個 element怎麼使用,可以直接點選 voamrwbenc,會link到這個 element的介紹與使用範例,如下圖
這邊就有直接把使用的指令,列在example裡面



需要特別注意的是,文件中有一行不起眼的文字,"Please note that the above stream misses the header, that is needed to play the stream"
他這行的意思是,你轉出來的 AMR音檔,是無法直接播放的,需要再自行加上 AMR的 Header才可以正確撥放

所以這邊順邊介紹一下兩種 AMR的 Header,以下都是單聲道的Header
1. AMR-WB
0x2321414d522d57420a in hex ("#!AMR-WB/n")

2. AMR-NB
0x2321414d520a in hex  ("#!AMR/n")

我這邊也有確認過,轉檔完成之後,在檔案最前面append header,確實是可以播放的
順便紀錄我如何用shell的方式把header append上去的,使用以下的指令
######## Add AMR-WB Header ##########
echo -n -e '\x23\x21\x41\x4d\x52\x2d\x57\x42\x0a' | cat - test_wb.amr > temp && mv temp test_wb.amr


######## Add AMR-NB Header #########
echo -n -e '\x23\x21\x41\x4d\x52\x0a' | cat - test_nb.amr > temp && mv temp test_nb.amr

2022年7月9日星期六

使用vim貼上多行內容,如何避免換行(使用putty)

 現在vim(vi) 越做越聰明,有時候輸入Enter,下一行還會自動幫你對齊
但有時卻會造成困擾,例如你需要貼入多行內容的時候,若當中有一些tab
那接下面的那行,也會自動幫你tab,而造成困擾

解決方法就是,進入vim之後,下面幾個步驟
1. 先在command模式,輸入":r! cat"
2. 貼上想貼的文字(使用putty,按滑鼠右鍵貼上)
3. 輸入Enter,會看到換行
4. 按鍵盤 Ctrl+D

以上步驟做完,你就會看到可以正確地貼上



shell script 一行一行讀檔案,並且以變數方式印出

 假設有個檔案file_list.txt,內容如下:
# cat file_list.txt
1111
2222
3333

範例如下:

================== echo_value_from_file.sh ==================

#!/bin/sh
echo_file() {
    exec < "file_list.txt"
    while read want_param    #把檔案內的值,assing給want_param參數
    do
            echo $
want_param
    done
}
echo_file

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

執行結果如下:








用shell script 撰寫一支function,在呼叫function時,後面帶入未知個數的數值,把變數寫到檔案內

首先說明,我的系統是 dash
# ls -al /bin/sh 
/bin/sh -> dash

範例如下:

===================== get_dynamic_value.sh ===========================

#!/bin/sh

get_dynamic_value() {
    total=$#          #取得帶入參數的個數
    array=($*)      #宣告陣列,把get到的參數,assign給陣列
    
    for ((i=1;i<=$total;i++));
    do
            echo ${array[$i-1]} >> file_list.txt    #把參數一行一行寫入檔案
    done
}

get_dynamic_value    1111    2222    3333

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

執行結果,會產生檔案 file_list.txt



2022年6月25日星期六

umount 遇到 Device or resource is busy

 如果想要卸載裝置,卻遇到 "Device or resource busy",而無法卸載
 可以依照下面兩個步驟解決 (ex: umount /mnt/test)

1. 會遇到這個問題的原因,可能因為某個背景程式正在使用這個device
    ex: 可能是正在存取其中的檔案 

我們可以先使用下面指令來查看,哪個程式正在占用它

# lsof        
找到後,先停止使用他的程式(kill -9) or (killall),就可以正常umount


2.  如果都找不到誰占用這個device,那就使用下面command,來強制卸載吧

umount -l [path]

# umount -l /mnt/test      



PS. 關於第1點,網路上有提到另一個方法如下: (待查證)
ex: umount /mnt/test 遇到 "Device or resource busy"

使用以下command 可以直接自動找出並kill掉占用程式 (-k 表示 kill)

# fuser -km /u01/mount/    

2022年6月19日星期日

[教學] 如何下載備份google空間上的相簿,影音

1. 請先到 google 匯出,其網址如下
https://takeout.google.com/

2. 請先取消全選,如下圖,google預設會幫你選取所有資料,此次我們只想備份相簿




3. 只勾選相簿的部分,相簿大約在第28個













4. 你也可以接著點選 "已包含所有相簿",來選擇你想下載的相簿類別,如下圖,預設也是全幫你勾選的













5. 接下來選擇頁面最下方 "下一步"按鈕











6. 接著會到 "選擇檔案類型、匯出的頻率和目標" 步驟,通常我都選擇 "以電子郵件傳送下載連結"還可以選擇 "壓縮格式",以及"壓縮大小",看家裡網路的速度,下載時間過久的話,很容易下載失敗,我預設都選 "2GB"













7. 最後選擇 "建立匯出作業",等待google幫你準備好之後,會以email的方式,寄信到你的這個帳戶的gmail,信件內容會有下載的link,google幫我分成了20個2GB的檔案,大概內容如下:












2022年6月13日星期一

房屋貸款繳清,塗銷,終止地震火險的步驟

這裡先簡單說明要做的步驟,這些步驟都須攜帶借款人的"身分證"

1. 至銀行繳清房貸
2. 至當初貸款的銀行塗銷房貸紀錄
3. 至"地政事務所"塗銷貸款紀錄
4. 到地震火災保險公司,終止合約 

Step1:
當你的房屋貸款,剩最後一筆錢要繳清的時候
假設你平常都是使用帳戶"額外還本"來繳房貸,你會發現最後一筆錢會無法繳這時候你就必須親自到原本貸款的那間銀行一趟,做最終"繳清"的動作

Step2:
在當初貸款的銀行(必須同一分行),申請"塗銷"的動作,申請完之後,必須2-3天的時間才會完成,這些工作天數之後,你必須再跑一趟,領取質押在銀行的一些文件,包含當初貸款的借據,這些資料還包含必須繳給地政事務所的資料

Step3:
到地政事務所,做房屋貸款塗銷的動作(清償),必須攜帶銀行塗銷之後所給予的資料,當天就可以完成清償的動作,另外"抵押權塗銷同意書",在這個步驟需要先影印一份,保險退保時,需要使用

Step4:
直接到保險公司,攜帶Step2銀行退還的資料,裡面會包含保險的保單,另外再攜帶Step3影印的"抵押權塗銷同意書",告知保險公司要退保,保險公司會跟你要銀行帳本(本人帳戶即可,沒限制哪家),會把合約剩餘的保險費用,退回帳戶


沒想到要繳清房貸,還有這麼多步驟要做,以上作個紀錄~



2022年2月21日星期一

minicom只有Output訊息,無法input訊息 解決方法

 今天我在作業系統為Ubuntu的PC上面,連接Device,想使用Ubuntu上面的minicom軟體,來透過UART與device溝通,但是遇到只能夠看到Device Output的訊息,無法Input,因此來記錄一下,按照下面步驟,可以解決此問題

1. 首先透過下面command可以進入minicom設定選單
=> minicom -s
















2. 看到選單畫面,如下圖,接著選擇 "Serial port setup",按Enter鍵進入

















3. 選擇 F- Hardware Flow Control,設定為 "No"












經過以上的設定之後,minicom就可以透過UART輸入與輸出了,如下圖:

















另外有以下兩點,這邊也特別紀錄
1. 當在minicom UART模式時,ctrl+a 可以離開UART模式,進入 minicom操作選單模式

2. 設定minicom Baud Rate,是在選單中選擇 E - Bps/Par/Bits 這個選項,進入選項之後,如果選單上沒有你要的Baud Rate(例如下圖,沒有我要的 921600),可以透過 A 或 B 來調整到你需要的 Baud Rate













使用 lsblk 印出 emmc 每個 partition的"名字"與"size"

使用以下的command可以印出 eMMC的 partition資訊 lsblk --bytes --output name,partlabel,size   參數說明 --bytes: partition的大小,以byte的方式輸出 --output: 後面可以指定要輸出的內容...