








家時『Adobe Acrobat Pro』采用年費或月費租用, 冇左永久賣斷.
係網有『Adobe Acrobat Pro 2017』零售版買. 安装後顯示係『Adobe Acrobat Pro DC』2015版.妳會得兩個CD-KEY, 壹個係印包装紙袋, 另壹個係𢴇行安装時自帶.
終於可以編輯PDF文檔, 衹係版本舊D.









家時『Adobe Acrobat Pro』采用年費或月費租用, 冇左永久賣斷.
係網有『Adobe Acrobat Pro 2017』零售版買. 安装後顯示係『Adobe Acrobat Pro DC』2015版.妳會得兩個CD-KEY, 壹個係印包装紙袋, 另壹個係𢴇行安装時自帶.
終於可以編輯PDF文檔, 衹係版本舊D.












媽咪係拾年前去美國探親,帶左部Dell 筆記本电脑(Laptop).『Dell Inspiron 15 3000 Series』翻蒞. 得4GB記憶體.出廠装WIN10家庭版,慢到吾使玩.
時隔拾年,畀我抄翻出蒞,電池叉吾入電,諗住升記憶體,兼装Win10企業版.Dell仝IBM吾仝.冇諗過畀妳升『4GB記憶體』 仝『硬碟』.
衹能拆後盖. 點知掹埋條CD-ROM線, 應先掹出CD-ROM,再拆後盖.
原厰係『SAMSUNG-4GB-DDR3L』, 可以升兩條『SAMSUNG-8GB-DDR3L』.
重装Win10争D畀佢翹起,首次USB引導安將後,再次磁碟引導黑屏,重啟安將失敗.以為係Win10版本造成,買『DELL Win10-安將U盤』壹樣黑屏.好彩電池M5Y1K到貨.重装Win10乜事都冇.








媽咪多年前買SAMSUNG平板SM-T320, 電池衰老, 畀我拎翻做測試機, 睇人地换手機電池.諗住學人换平板電池.
網上有SM-T320原廠電池,掀起後冚盖,發現電池估漲, 好彩電池有插頭, 吾係D雜厰焊死. 插頭表面貼絕緣膠紙.
平板复活, 祗係Android版本太低, 要刷Android6固件先得.







Google繼係美國推出後『PayPal Hyperwallet』收款後,又係2025年10月30日起,係『中國』仝『阿根廷』境內發布商提供『PayPal Hyperwallet』,收取 『AdSense』、『AdMob』 或 『Ad Manager』 收益.
唯壹要注意係『Hyperwallet』付款一旦移除,注冊郵箱吾畀再次登記,要用新郵箱注冊『Hyperwallet』.






當『Google AdSense』仝『Google AdMod』出粮畀你, 默認通過電匯匯美金入銀行帳戶.
如果諗住將美金留係出面,投資美股,買美債,買美國未蒞.GOOGLE新增『Hyperwallet』收款, 已畀『Paypal』收購,再將美金轉去『Paypal』.
即係『AdSense』->『Hyperwallet』->『Paypal』->『美國或香港銀行』.
| 銀行名稱 | THE HONGKONG AND SHANGHAI BANKING CORPORATION LIMITED |
| 銀行代號 | 004 |
| SWIFT代碼 | HSBCHKHHHKH |
| 賬戶類型 | 儲蓄 |
| 分行地址 | 旺角/MONG KOK |
| 分行編號 | 129 旺角分行 |
| 戶口號碼 | 9位數字, 吾含分行編號, |







『PayPal』創始者正係商業天才『Elon Musk』.『PayPal』仝『支付寶』吾同, 祇係支付仝收款.經幾廿幾年發展,都吾能作為銀行替代.雖然業務穩定,每年微增,衹係股價向下沉,得$57蚊. 吾將『Elon Musk』請翻蒞,實冇運行.
『paypal』可以係手機app註冊, 衹係孻尾驗證, 綁銀行卡要網站上搞, 吾知佢點解要甘做.
| 銀行名稱 | Industrial and Commercial Bank of China |
| SWIFT代碼 | ICBKCNBJGZU |
| 分行代碼 | DEF |
| 戶口號碼 | 19位卡號 |






維護APP需要壹定成本,時間,網絡,伺服器. 需要大量資金維係. 通過購買程式,用戶規模細, 冇耐就冇心維係. 更好係免費下載,當用戶達一定規模,再通過廣告收入,維持程式日常維護.
開通『Google Play開發人員帳戶』後, 透過『Google AdMod』廣告賺美金.
| https://admob.google.com |






諗住係『Google Play』發佈app, 大展拳腳. 預足一日填表伸請, 㸃知歷時三日,争D畀佢趐起. 過程复雜,將過程記錄, 供後人参考.
| Google Play Console |
| https://play.google.com/console/signup |
| 公開電郵地址 | gmail邮箱 |
| 開發人員電郵地址 | gmail邮箱 |
| 聯絡電話號碼 | 地區+電話 |
| 註冊費 | 25 美金 |
| 開發人員姓名 | 網名 |
| 付款設定檔 | |
| 國家/地 | 國 |
| 郵遞區號 | |
| 州/省 | |
| 城市 | |
| 街道地址 | 街道 |
| 公寓或套房等(選填) | 房號 |
| 全名 | 本名 |
| 開發人員電郵地址 | gmail邮箱 |
| 使用體驗 | android 程式開發,先注册開發人員帳戶. |
| 係過去 6 個月內有冇建立「Play 管理中心」開發人員帳戶. | 祗能有壹個Google play個人帳戶. |
| 網站網址 | https://www.bookcard.net/wordpress/ |
| 應用程式數量
未來 12 個月內打算在 Google Play 發佈多少應用程式 |
1 |
| Google Play 上賺取收益 | 勾 『是』 勾『廣告』 |
| 應用程式類別 | 勾 『以上皆非』 |
| 聯絡人姓名 | 本名 |
| 聯絡電郵地址 | gmail邮箱 |
| 偏好語言 | 中文(香港) |
| 聯絡電話號碼 | +號+地區代碼+電話號碼 |
| 我確認已閱讀並同意《Google Play 開發人員發行協議》。我確認已年滿 18 歲。 |
| 我確認已閱讀並同意《Google Play 管理中心服務條款》 |
| 我很樂意不定期提供意見,協助改善 Google Play |
| 我想收到新功能公告和各種可協助我改善應用程式的提示 |
| https://payments.google.com |
| https://play.google.com |
| 驗證身分 | 上傳『駕駛執照 』『居民身分證』 |
| 驗證有權使用 Android 流動裝置 | |
| 驗證聯絡電話 |
| 駕駛執照 | |
| 護照 | |
| 居民身分證 |
| 政府簽發的身分證明文件或相片 ID | |
| 公用事業或電話費單 (日期為過去 60 天內) | |
| 銀行結單 (日期為過去 60 天內) | |
| 租賃或按揭協議 |
| 我同意 Google 根據《Google Payments 私隱聲明》收集、使用、保留並處理我的 ID 和個人資料。 |






Google終於出粮,係2025年尾12月30號睌, 填寫電匯付款, 隔日31號夜睌11點到帳. 吾使上傳收据.費事撳出蒞, 諗住買股GOOGLE作為紀念, 不過Gemini3發佈後股價升得太多.依加三百幾美金一股.
電匯付款
| 受款人編號 | 身份證ID |
| 銀行帳戶名稱 | 帳戶姓名,以英文填寫 |
| 銀行名稱 | 以英文填寫 |
| SWIFT碼 | 電匯代碼 |
| 帳戶號碼 | 銀行卡一組數字 |



之前買雜牌5號鋰電, 內阻大跌電快, 平野冇好野.
决定買日本原產『松下ENELOOP 5號鎳氢電池套装』,4粒『ENELOOP 5號電池2000mAh』+『BQ-CC85』重235克, 接近半斤.揸上手重歷歷. 愛蒞用係『Microsoft Sculpt Ergonomic mouse』.
『ENELOOP 電池』有黑色仝白色, 黑色用係大電流設備, 一般設備用白色.而且襟用.
叉機型號『BQ-CC85』, 比『BQ-CC55』新一代. 修復過放電池. 支持110v~220v.
| LED燈 | 狀態 | |
| 予備 | 兩盏赤燈自 | 修復過放電池 |
| 叉電 | 赤燈 | 電量<20% |
| 叉電 | 黄燈 | 20%<電量<80% |
| 叉電 | 綠燈 | 電量>80% |
| 叉满 | 熄燈 | 電量100% |
| 異常 | 電池異常 |

Windows程式用”LOGO.ICON”仝”SMALL.CION”.但係Photoshop默認吾支持ICON格式.
需安装icon格式擴展插件.
| ICOFormat.8bi | 32BIT版本 |
| ICOFormat64.8bi | 64BIT版本 |
穩到photoshop插件安装路徑.插件以『.8bi』為擴展名.因版本吾仝,安装路徑可能吾仝.
| C:\Program Files\Adobe\Adobe Photoshop CC 2015\Required\Plug-Ins\File Formats |
| C:\Program Files\Adobe\Adobe Photoshop CC 2014\Required\Plug-Ins\File Formats |
重啟Photoshop後,經以可載入『.ico』格式. 但係導出『.ico』格式. 解像度要小於或等於『256*256』.
撳『檔案』->『儲存檔案』
| 『.ico』解像度 | 保存 |
| 『256*256』 | |
| 『128*128』 | |
| 『64*64』 | |
| 『32*32』 | |
| 『16*16』 |








上年係『HSBC匯豐』做定期,到期收埋息. 但系『合資格新資金』鬼甘麻煩,吾做定期改買『KO』收息.『IB盈透證券』入美金, 係匯去香港『花旗銀行』免收電匯費. 講就話壹兩日, 吾使十分鐘『IB』确認電匯存款
| 存款方式 | 時間 |
| 銀行電匯 | 1個工作日 |
| 銀行發起ACH轉帳 | 1個工作日(美國銀行) |
| 關聯銀行帳戶 | 即時轉帳 |
| 在線賬單支付 | 1至6個工作日(美國銀行) |
| 從Wise餘額轉帳 | 幾個小時可以交易 |
| 郵寄支票 | 支票到達IBKR後7個工作日開始交易 |
『銀行電匯』撳『獲取指令』
| 『銀行電匯』 | |
| 保存存取款指令信息? | 是 |
| 匯出機構 | HSBC |
| 賬戶號碼 | HSBC賬戶號碼 |
| 爲您要保存的存取款指令命名 | 求其填 |
| 存款金額 | USD |
撳『下一步』得到電匯資料, 美金寄去香港CITIBANK花旗銀行,
| 支付參考 | 『IB賬號』 |
| 電匯資金至 | 『銀行賬戶』本人姓名 |
| 受益人地址 | 『銀行賬戶』居住地址 |
| SWIFT/BIC代碼 | 花旗銀行SWIFT碼CITIHKHXXXX |
| 虛擬賬戶號碼(VAN) | 存款虛擬賬號: |
| 收款行 | CITIBANK N.A. 50/F Citibank Tower Plaza 3 Garden Road, Central HK Hong Kong 中國香港特別行政區 |
| 金額 | USD |
登錄『HSBC匯豐』

『GMBA』冚世界山地生物多樣性評估計畫, 8616座山脈.登入官網
| https://www.earthenv.org/mountains |
下載數據
| Standard – All | 冚世界:8327座山脈 |
| Standard – Basic | 基础:6717座山脈 |
| Standard – ‘300 selection’ | 300: 291座山脈 |
| Broad – All | 冚世界:8616座山脈 |
| Broad – Basic | 基础:6991座山脈 |
| Broad – ‘300 selection’ | 300: 292座山脈 |
| GMBA_Definition_v2.0 | 山脈定義 |
| GMBA Inventory v2.0 standard | 標准 |
| GMBA Inventory v2.0 broad | 包埋山脉延伸 |
| 欄位 | |
| GMBA_V2_ID: | 山脈唯一識別碼,五位數.將圖斑與山脈資料聯繫. |
| GMBA_V1_ID: | GMBA Inventory v1.0圖斑ID |
| MapName: | 山脈名ASCII,用於標記圖斑(不同山脈存在重名) |
| WikiDataUR: | 唯一資源識別字URI,以字母Q開頭,標識https://www.Wikidata.org/存儲山脈. |
| MapUnit: | 分類變數(Basic/Aggregate)
Basic返回最小山地圖斑. Aggregate返回有子級圖斑,Basic多邊形聚合. |
| Hier_Lvl: | 圖斑級別,1~10 |
| Feature: | 分類變量(14個) |
| Area: | 以Mollweide投影計算山地圖斑平面面積,單位km2, 吾適用於GMBA Inventory v2.0_ broad |
| Perimeter: | 山地圖斑周長,單位km |
| Elev_Low: | DEM計最低海拔 |
| Elev_High: | DEM計最高海拔 |
| Path: | 從級別1大陸/海洋開始, 指向山脈(使用 DBaseName)完整層次路徑 |
| Path_ID: | 與GMBA_V2_ID 一致 |
| Level_01~Level_10: | 地區名 |
| Select_300: | 292個山脈定制,可用於全球和IPCC或 IPBES區域級別分析. |
| Countries: | 與山脈相交國家名/地區名 |
| CountryCodes: | 與山脈相交國家名/地區名Alpha-3 ISO代碼 |
| DBaseName: | 唯一山脈名.冇重名. |
| LocalNames: | Wikidata使用山脈所在國家的語言對山脈或地貌進行命名 |
| AsciiName: | MapName不帶變音符號 |
| Name_AR: | 阿拉伯山脈名 |
| Name_DE: | 德语山脈名 |
| Name_EN: | 英語山脈名 |
| Name_ES: | 西班牙語山脈名 |
| Name_FR: | 法語山脈名 |
| Name_PT: | 葡語山脈名 |
| Name_RU: | 俄語山脈名 |
| Name_ZH | 漢語山脈名 |
| ColorAll: | 0~5,六色,為圖斑著色,連續圖斑冇相同顏色. |
| ColorBasic: | 0~5,六色,為圖斑著色,用於Basic層 |
| Color300: | 0~5,六色,為圖斑著色,用於300層 |
ArcGIS導入『GMBA_Inventory_v2.0_standard.shp』矢量圖.
完整『.shp』矢量圖, 随附文檔有(.shp, .shx, .dbf, .prj …) 係同一資料夹下,且冇損毁.
多邊形轉㸃陣像素.
匯出㸃陣像素. 輸出『.tiff格式』


『ArcGIS地理訊息系統』米國Esri公司, 係上世紀1980年開向量地理程式.
登入『Esri官網』下載ArcGIS
| https://www.esri.com |
早期『ArcGIS.Desktop』依然支援x86/x64-Windows, 去到『ArcGIS.Pro』衹支援x64-Windows.
| 版本 | 支援Windows | |
| ESRI.ArcGIS.Desktop.FULL.v10.8.2 | x86/x64 | |
| ESRI.ArcGIS.Pro.v3.1 | x64 | |
| ESRI.ArcGIS.Pro.v3.0 | x64 | 冇使賬號 |
| ESRI.ArcGIS.Pro.v3.3 | x64 | 冇使賬號 |
| ESRI.ArcGIS.Pro.v3.5 | x64 | 賬號登錄 |
安装『ArcGIS.Pro』
| Click here to participate in the Esri User Experience Improvement program.(Recommended) |

歐洲航天局長期進行頂目, 使用衛星航拍, 分析土地表層數據.解像度300米.
登入『ESA CCI Land Cover』官網,
| http://www.esa-landcover-cci.org/ |
撳『Downloading the CCI LC Products』
撳『http://maps.elie.ucl.ac.be/CCI/viewer/download.php』
係右側填寫訪問資料
撳『Validate』
| http://maps.elie.ucl.ac.be/CCI/viewer/download.php#usertool |
依次下載
| 快速使用者指南 |
| 產品使用者指南 |
| 用戶工具5.0(壓縮) |
| 用戶工具 4.3 描述(文檔) |
下載『FileZilla』登入FTP, 連線伺服器.
| FileZilla | |
| Server: | geo10.elie.ucl.ac.be |
| User: | none |
| password: | none |
下載氣候研究資料包CCI
| ftp://geo10.elie.ucl.ac.be/CCI |
下面有三個資料夾, 冚辦闌下載落蒞.
| LandCover | 土地覆蓋 |
| Seasonality | 季節性 |
| WaterBodies | 水體 |
『.tiff』檔灰度色,photoshop轉為256色, 重新載入調色板
| index | color | text |
| 0 | 0x000000 | 冇數據 |
| 10 | 0xFFFF64 | 雨養耕地 |
| 11 | 0xFFFF64 | 草皮覆蓋 |
| 12 | 0xFFFF64 | 樹木或灌木覆蓋 |
| 20 | 0xAAF0F0 | 灌溉農田或洪水 |
| 30 | 0XDCF064 | 農田(>50%)/自然植被(喬木,灌木,草本植被)(<50%) |
| 40 | 0XC8C864 | 自然植被(喬木,灌木,草本植被)(>50%)/農田(<50%) |
| 50 | 0x006400 | 樹木覆蓋,闊葉,常綠,封閉到開放(>15%) |
| 60 | 0x00A000 | 樹木覆蓋,闊葉,落葉,封閉到開放(>15%) |
| 61 | 0x00A000 | 樹木覆蓋,闊葉,落葉,封閉(>40%) |
| 62 | 0x00A000 | 樹木覆蓋,闊葉,落葉,開放(15-40%) |
| 70 | 0x003C00 | 樹木覆蓋,針葉,常綠,封閉到開放(>15%) |
| 71 | 0x003C00 | 樹木覆蓋,針葉,常綠,封閉(>40%) |
| 72 | 0x003C00 | 樹木覆蓋,針葉,常綠,開放(15-40%) |
| 80 | 0x285000 | 樹木覆蓋,針葉,落葉,封閉到開放(>15%) |
| 81 | 0x285000 | 樹木覆蓋,針葉,落葉,封閉(>40%) |
| 82 | 0x286400 | 樹木覆蓋,針葉,落葉,開放(15-40%) |
| 90 | 0x788200 | 樹木覆蓋,混合葉型(闊葉和針葉) |
| 100 | 0x8CA000 | 混合喬木和灌木(>50%)/草本覆蓋(<50%) |
| 110 | 0xBE9600 | 混合草本覆蓋率(>50%)/喬木和灌木(<50%) |
| 120 | 0x966400 | 灌木叢Shrubland |
| 121 | 0x966400 | 常綠灌木叢 |
| 122 | 0x966400 | 落葉灌木叢 |
| 130 | 0xFFB432 | 草原 |
| 140 | 0xFFDCD2 | 地衣和苔蘚 |
| 150 | 0xFFEBAF | 稀疏植被(喬木,灌木,草本植被)(<15%) |
| 151 | 0xFFFA64 | 稀疏樹木 |
| 152 | 0xFFD278 | 稀疏灌木(<15%) |
| 153 | 0xFFEBAF | 稀疏草本植被(<15%) |
| 160 | 0x00785A | 樹木覆蓋,洪水,淡水或咸水 |
| 170 | 0x009678 | 樹木覆蓋,洪水,鹽水 |
| 180 | 0x00DC82 | 灌木或草本覆蓋物,淹沒,淡水/咸水/微咸水 |
| 190 | 0xC31400 | 都市地區 |
| 200 | 0xFFF5D7 | 裸露區域 |
| 201 | 0xDCDCDC | 合併裸露區域 |
| 202 | 0xFFF5D7 | 未加固裸露區域 |
| 210 | 0x0046CB | 水體 |
| 220 | 0xFFFFFF | 永久冰雪 |

高解像度『TIFF』圖片, 加入『BIGTIFF』規范,使用64bit支緩4GB以上圖片. 支緩『ZIP』壓縮.擴展名『.tf8』『.btf』『.tiff』.
『BIGTIFF』圖檔頭Image File Header(IFH)
| typedef struct BIGTIFF_HEAD_TYP { | BIGTIFF圖檔頭 |
| WORD ByteOrder; | 字節順序 ‘II’ / ‘MM’ |
| WORD version; | BIGTIFF圖檔版本 0x002B |
| WORD ReservedOffset; | 保留 |
| WORD Reserved; | 保留 |
| DWORD64 offset; | 首個IFD偏移量64BIT,邊界對齊4 |
| }BIGTIFF_HEAD, * BIGTIFF_HEAD_PTR; |
區分『BIGTIFF』仝『TIFF』
| #define TIFF_VERSION 0x002A | TIFF圖檔版本 |
| #define BIGTIFF_VERSION 0x002B | BIGTIFF圖檔版本 |
『BIGTIFF』新增三個數據類型
| #define BIGTIFF_TYPE_LONG8 16 | 冇符號8字節(64位)整数 |
| #define BIGTIFF_TYPE_SLONG8 17 | 有符號8字節(64 位)整数 |
| #define BIGTIFF_TYPE_IFD8 18 | 无符号8字節(64位)IFD偏移。 |
『BIGTIFF』新增ZIP壓縮類型 8
| #define TIFF_Compression_ZIP 8 | ZIP壓縮, MAX_WBITS帶 zlib 頭和尾 |
『BIGTIFF』目錄入口 Directory Entry(DE)
| typedef struct BIGTIFF_ENTER_TYP { | 即係數值 |
| WORD tag; | 標識 |
| WORD type; | 數據類型 1~12 16~17 |
| DWORD64 count; | 數量64BIT |
| union {
DWORD64 data; |
數值64BIT |
| DWORD64 offset;
}; |
偏移64BIT |
| }BIGTIFF_ENTER, * BIGTIFF_ENTER_PTR; |
『BIGTIFF』目錄 Image File Directory(IFD)
| typedef struct BIGTIFF_DIRECTORY_TYP { | |
| DWORD64 count; | 目錄數量64BIT |
| BIGTIFF_ENTER enter_array[1]; | 目錄,即係數值 |
| // DWORD64 offset; | 64BIT下壹個偏移-BIGIFD |
| }BIGTIFF_DIRECTORY, * BIGTIFF_DIRECTORY_PTR; |
『高解像圖片』組織成『Tiled瓦片』而非『條帶Strip』, 低中解像圖像用標準『TIFF』『條帶Strip』.『高解像圖片』切割成大致方正塊狀,而非長條『條帶Strip』.壓縮效果更佳.
『Tiled瓦片』取代『StripOffsets』、『StripByteCounts』『RowsPerStrip』. 切忽仝時用『Tiled瓦片』仝『條帶Strip』.
『TileWidth』仝『TileLength』『瓦片』定義寬高. 所有『瓦片』『寬高』相同, 『瓦片』邊界填充.
當『ImageWidth』=129, 『TileWidth』= 64.則分割3個『Tiled瓦片』, 最後一個填充63個像素.
平鋪邊界代價需要浪費一定空間,但係壓縮可以將填充區壓縮到接近0.
即使數據冇壓縮,『Tiled瓦片』祗适用於『高解像圖片』. 『高解像圖片』分割大量『Tiled瓦片』, 填充區祈浪費百分之幾空間,
『Tiled瓦片』被單獨壓縮, 仝『條帶Strip』壓縮一樣. 即每個『Tiled瓦片』數據被視為單獨『條帶Strip』.
『Tiled瓦片』欄位:
| 『Tiled瓦片』欄位: | ||
| TileWidth | SHORT or LONG | 瓦片寬度, 必須16倍數 |
| TileHeight | SHORT or LONG | 瓦片高度, 必須16倍數 |
| TileOffsets | LONG or LONG8 | 瓦片(數據)偏移, 從左到右從上到下的順序排列. |
| TileByteCounts | SHORT or LONG or LONG8 | 瓦片數據字節量, 從左到右從上到下的順序排列. |
載入瓦片數據
| bool Load_Tile_TIFF(TIFF_PTR tiff){ |
| PBYTE tile_buffer; // 瓦片圖像
DWORD64 tile_size; // 瓦片數據字節量 DWORD64 tile_offset;// 瓦片数据偏移 DWORD64 tiles_countX;// 瓦片橫跨 DWORD64 tiles_countY; // 瓦片縱跨 DWORD64 line_size; DWORD64 index, i, j; // 索引 DWORD64 offset;// (數據)偏移. DWORD64 count;// 數據字節量 DWORD64 size;// 寫入量 DWORD64 buffer_offset;// 圖像数据偏移 DWORD64 buffer_size;// 圖像数据字節 |
| tiles_countX = (tiff->ImageWidth + tiff->TileWidth – 1) / tiff->TileWidth;// 瓦片橫跨 |
| tiles_countY = (tiff->ImageHeight + tiff->TileHeight – 1) / tiff->TileHeight;// 瓦片縱跨 |
| tile_size = tiff->TileWidth * tiff->TileHeight * tiff->SamplesPerPixel; // 瓦片數據字節量 |
| tile_buffer = (PBYTE)malloc(tile_size);// 分配記憶體 |
| size = 0;// 寫入量 |
| // 計算圖像所占長度
buffer_size = (tiff->ImageWidth * tiff->ImageHeight) * tiff->SamplesPerPixel; |
| // 定位平鋪/瓦片图像数据
for (j = 0; j < tiles_countY; ++j){ |
| for (i = 0; i < tiles_countX; ++i){ |
| index = j * tiles_countX + i; |
| offset = tiff->TileOffsets[index]; // (數據)偏移.
count = tiff->TileByteCounts[index]; // 數據字節量 |
| // 讀瓦片數據
if (tiff->Compression == TIFF_Uncompressed) {// 未壓縮 memcpy(tile_buffer, tiff->data + offset, count);// 复制图像数据 size = size + count;// 累積寫入量 }else |
| if (tiff->Compression == TIFF_Compression_LZW)
{// LZW 解壓縮 tile_size = ((tiff->TileWidth * tiff->TileHeight) * tiff->SamplesPerPixel); UnCompress_Data_LZW(&_lzw, tile_buffer, &tile_size, tiff->data + offset, count); size = size + tile_size;// 累積寫入量 } else |
| if (tiff->Compression == TIFF_Compression_ZIP)
{// ZIP 解壓縮 DWORD _tile_size = ((tiff->TileWidth * tiff->TileHeight) * tiff->SamplesPerPixel); Uncompress_Data_ZIP(tile_buffer, &_tile_size, tiff->data + offset, (DWORD)count, MAX_WBITS); size = size + _tile_size;// 累積寫入量 } |
| // 寫入瓦片數據
for (DWORD tindex = 0; tindex < tiff->TileHeight; ++tindex) { |
| if ( (j * tiff->TileHeight + tindex) >= tiff->ImageHeight )
break;// 超出 |
| buffer_offset = ( ((j * tiff->TileHeight + tindex) * tiff->ImageWidth) + (i * tiff->TileWidth)) * tiff->SamplesPerPixel;// 圖像数据偏移 |
| tile_offset = tindex * tiff->TileWidth * tiff->SamplesPerPixel;// 瓦片数据偏移 |
| if ((tiff->TileWidth * i) > tiff->ImageWidth)
line_size = (tiff->ImageWidth – (tiff->TileWidth * (i – 1))) * tiff->SamplesPerPixel; else line_size = tiff->TileWidth * tiff->SamplesPerPixel; |
| if (buffer_offset >= buffer_size)
break;// 截斷填充區 |
| memcpy(tiff->buffer + buffer_offset, tile_buffer + tile_offset, line_size);
} } } |
| free(tile_buffer);// 释放
return true; } |

『TIFF圖檔』『Tagged Image File Format』『標記圖檔格式』.擴展名『.tif』或『.tiff』.
首先去『官網』下載tiff圖檔格式指南『tiff6.pdf』.
| https://www.itu.int/itudoc/itu-t/com16/tiff-fx/docs/tiff6.pdf |
| https://download.osgeo.org/libtiff/doc/TIFF6.pdf |
話明係『標記』. 所有數據由『標記』組成. 數據類型多, 長度可變. 支持多種壓縮, 包括『有損壓縮』仝『冇損壓縮』.
『TIFF圖檔』由三個結构體組成
| TIFF圖檔結构體 | 簡述 |
| Image File Header(IFH) | 圖檔頭 |
| Image File Directory(IFD) | 目錄, 保存Directory Entry |
| Directory Entry(DE) | 目錄項-愛蒞保存數據 |
『TIFF圖檔』必定以『Image File Header(IFH)』開始,與眾吾仝係可以保存成『little-endian』或者『big-endian』. 仲可記錄其它格式圖像.
| Image File Header(IFH) | 圖檔頭結构體 |
| WORD ByteOrder; | 字節順序 ‘II’ / ‘MM’ |
| WORD version; | TIFF版本0x002A號, BIGTIFF版本0x002B號 |
| DWORD offset; | 首個IFD偏移量 |
頭兩字節『ByteOrder』字節順序,
| ByteOrder; | 字節順序 |
| ‘II’ | 0x4949 little-endian 細端順序 主機字節 |
| ‘MM’ | 0x4D4D big-endian 大端順序 網路字節 |
『type』圖檔版本0x002A號,
『offset』 首個IFD偏移量,邊界對齊2, 即係2倍數.
壹個TIFF圖檔可能含有多個IFD, 每個IFD都是一個子圖檔.
| Image File Directory(IFD) | 目錄, 保存Directory Entry |
| WORD count; | 數據量 |
| Directory Entry [0]; | 數據0 |
| Directory Entry [1]; | 數據1 |
| Directory Entry [2]; | 數據2 |
| … | |
| DWORD offset; | 下壹IFD偏移, 冇為0. |
| Directory Entry(DE) | 目錄項, 即係數據 |
| WORD tag; | 標簽, 即係name, 下面詳解. |
| WORD type; | 數據類型1~12, 下面詳解. |
| DWORD count; | 數據量 |
| DWORD Value or Offset; | 數據或偏移 |
頭兩字節『tag』標簽.
『type』數據類型, 有12種數據類型,下面介紹.
『count』數據量.
『Value or Offset』數據小於等於4BYTE, 直接擺放數據. 超過4BYTE係偏移
TIFF有12種數據類型.
| 數據類型 | 簡述 |
| 1 | BYTE 8bit冇符號整數 |
| 2 | ASCII字符串, 以NULL結尾 |
| 3 | SHORT-16bit 冇符號短整型 |
| 4 | LONG-32bit 冇符號長整型 |
| 5 | RATIONAL-64bit冇符號分数型,兩個LONG,首LONG係分子,次LONG係分母. |
| 6 | SBYTE-8BIT 有符號整數 |
| 7 | UNDEFINED-8BIT未定義數據 |
| 8 | SSHORT-16BIT 有符號整數 |
| 9 | SLONG-32BIT 有符號整數 |
| 10 | SRATIONAL-64BIT有符號分数型,兩個SLONG,首LONG係分子,次LONG係分母. |
| 11 | FLOAT-4BIT 單精度IEEE格式 |
| 12 | DOUBLE-8BIT 雙精度IEEE格式 |
唯一要講『RATIONAL』64bit冇符號分数型,兩個LONG,首LONG係分子,次LONG係分母.
| typedef struct TIFF_SRATIONAL_TYP { | |
| DWORD molecule; | 首LONG係分子 |
| DWORD denominator; | 次LONG係分母. |
| }TIFF_SRATIONAL, * TIFF_SRATIONAL_PTR; |
『SRATIONAL』64BIT有符號分数型,兩個SLONG,首LONG係分子,次LONG係分母.
| typedef struct TIFF_SRATIONAL_TYP { | |
| int molecule; | 首LONG係分子 |
| int denominator; | 次LONG係分母. |
| }TIFF_SRATIONAL, * TIFF_SRATIONAL_PTR; |
『tag』標簽, 即係數據名.
| tag | type | 簡述 |
| PhotometricInterpretation:
262(0x0106) |
SHORT | 反色顯示.
1=WhiteIsZero白色RGB(0,0,0),黑色RGB(255,255,255). 2=BlackIsZero黑色RGB(0,0,0),白色RGB(255,255,255). 3=RGB 4=RGBPalette 5=TransparencyMask 6=CMYK 7=YCbCr 8=CIELab |
| Compression: 259(0x0103) | SHORT | 1=吾壓縮.
2=霍夫曼壓縮 3=Group 3 Fax 4=Group 4 Fax 5=LZW 6=JPEG 32773=PackBits壓縮 |
| ImageHeight: 257(0x0101) | SHORT or LONG | 圖像高 |
| ImageWidth:256(0x0100) | SHORT or LONG | 圖像寬 |
| ResolutionUnit:296 (0x0128) | SHORT | 解析度單位,計算圖像物理尺碼
1: ratio縱橫比 2: Inch.英寸(默認) 3: Centimeter.釐米 |
| XResolution: 282 (0x011A) | RATIONAL | ImageWidth解析度,X像素解析度,例航拍300m/1000m |
| YResolution:283 (0x011B) | RATIONAL | ImageHeight解析度,Y像素解析度,例航拍300m/1000m |
| RowsPerStrip: 278 (0x0116) | SHORT or LONG | 圖像掃描線長度,等於圖像高度. |
| StripOffsets: 273 (0x0111) | SHORT or LONG | 圖像掃描線(數據)偏移. |
| StripByteCounts: 279 (0x0117) | SHORT or LONG | 圖像數據字節總量 |
| BitsPerSample: 258 (0x0102) | SHORT | 每粒像素位Bit
1=1bit(單色); 4=4bit(16色); 8=8bit(256色) |
| ColorMap: 320 (0x0140) | SHORT | 調色板偏移, 256色和16色圖像先有調色板
3 * (2**BitsPerSample) |
| SamplesPerPixel: 277 (0x0115) | SHORT | 每粒像素字節BYTE
3=(24bit)RGB色 |
| Artist: 315 (0x013B) | ASCII | 創建圖像軟體 |
| CellLength: 265 (0x0109) | SHORT | Threshholding=2 |
| CellWidth: 264 (0x0108) | SHORT | Threshholding=2 |
| Copyright: 33432 (0x8298) | ASCII | 版權聲明: |
| DateTime: 306 (0x0132) | ASCII | 創建日期:
YYYY:MM:DD HH:MM:SS |
| ExtraSamplesa: 338 (0x0152) | SHORT | 說明:
0=未指定數據 1= alpha值(帶預乘顏色) 2=未關聯alpha值 |
| FillOrder: 266 (0x010A) | SHORT |
1= 2= |
| FreeByteCounts: 289 (0x0121) | LONG | free字節量 |
| FreeOffsets: 288 (0x0120) | LONG | free偏移 |
| GrayResponseCurve: 291 (0x0123) | SHORT | 灰度數據-光密度 |
| GrayResponseUnit: 290 (0x0122) | SHORT | 灰度數據-單元
1 |
| HostComputer: 316 (0x013C) | ASCII | 創建圖像操作系統 |
| ImageDescription: 270 (0x010E) | ASCII | 影像描述 |
| Make:271 (0x010F) | ASCII | 掃描儀厰商 |
| MaxSampleValue: 281 (0x0119) | SHORT | |
| MinSampleValue: 280 (0x0118) | SHORT | |
| Model: 272 (0x0110) | ASCII | 掃描儀型號 |
| NewSubfileType: 254 (0x00FE) | LONG | 子檔案中資料類型
ReducedResolution 0x00000001低分辯率; MultiPageImage 0x00000002 多頁影像; TransparencyMask 0x00000004 透明遮罩; |
| Orientation: 274 (0x0112) | SHORT | 影像相對於行和列方向
1:TopLeft 2:TopRight 3:BottomRight 4:BottomLeft 5:LeftTop 6:RightTop 7:RightBottom 8:LeftBottom |
| PhotometricInterpretation: 262 (0x0106) | SHORT | 光度解釋 |
| PlanarConfiguration: 284 (0x011C) | SHORT | 平面配置,祗适用於RGB圖像
1:Chunky塊狀-順序連續存儲RGBRGBRGB(默認) 2: Planar平面-色域獨立存儲RRR..GGG..BBB |
| Software: 305 (0x0131) | ASCII | 創建圖像軟體名稱仝版本 |
| SubfileType:255 (0x00FF) | SHORT | 子檔案中資料類型 |
| Threshholding: 263 (0x0107) | SHORT | 灰色轉黑白 |
| T4Options: 292 (0x0124) | LONG | |
| T6Options: 293 (0x0125) | LONG | |
| DocumentName: 269 (0x0010) | ASCII | 檔案名 |
| PageName:285 (0x011D) | ASCII | 掃描圖頁面名 |
| PageNumber: 297 (0x0129) | SHORT | 掃描圖頁面碼 |
| XPosition: 286 (0x011E) | RATIONAL | 影像X位置 |
| YPosition: 287 (0x011F) | RATIONAL | 影像Y位置 |
| Predictor: 317 (0x013D) | SHORT | 預測器一種數學運算-僅用於LZW壓縮
1:編碼前未使用預測方案(默認) 2:水平差分 |
| TileWidth: 322 (0x0142) | SHORT or LONG | 平鋪寬度 |
| TileLength: 323 (0x0143) | SHORT or LONG | 平鋪高度 |
| TileOffsets: 324 (0x0144) | LONG | 平鋪偏移 |
| TileByteCounts: 325 (0x0145) | SHORT or LONG |
| Compression | #259(0x0103) SHORT 壓縮類型 |
| Uncompressed | 1:未壓縮 |
| CCITT1D | 2 |
| Group3Fax | 3 |
| Group4Fax | 4 |
| LZW | 5: LZW冇損壓縮, 默認 |
| JPEG | 6: JPEG有損壓縮, |
| PackBits | 32773: |
| PhotometricInterpretation | 反色顯示 |
| WhiteIsZero | 1 |
| BlackIsZero | 2 |
| RGB | 3 |
| RGBPalette | 4 |
| TransparencyMask | 5 |
| CMYK | 6 |
| YCbCr | 7 |
| CIELab | 8 |
| ResolutionUnit | 解析度單位,計算圖像物理尺碼 |
| Ratio | 1 :縱橫比 |
| Inch | 2:英寸(默認) |
| Centimeter | 3:釐米 |
| NewSubfileType | 子檔案資料類型 |
| ReducedResolution | 0x00000001低解像 |
| MultiPageImage | 0x00000002:多頁影像 |
| TransparencyMask | 0x00000004:透明遮罩 |
| Orientation | 影像相對於行列方向 |
| TopLeft | 1 |
| TopRight | 2 |
| BottomRight | 3 |
| BottomLeft | 4 |
| LeftTop | 5 |
| RightTop | 6 |
| RightBottom | 7 |
| LeftBottom | 8 |
| BitsPerSample | 每粒像素位Bit |
| 4 | 灰階圖像4bit(16色)/調色板圖像4bit(16色) |
| 8 | 灰階圖像8bit(256色)彩色./調色板圖像8bit(256色)彩色. |
| R=8,G=8,B=8 | TIFF-(RGB Images)RGB影像 |
| R=8,G=8,B=8,A=8 | TIFF-(RGBA Images)RGBA影像 |
| PlanarConfiguration | 平面配置,祗适用於RGB圖像 |
| Chunky | 1:塊狀-順序連續存儲RGBRGBRGB(默認) |
| Planar | 2:平面-色域獨立存儲RRR..GGG..BBB |
| Predictor | 預測器一種數學運算-僅用於LZW壓縮 |
| NO | 1:壓縮前未使用預測方案(默認) |
| Horizontaldifferencing | 2:水平差分 |
如果『ByteOrder』係 ‘MM’-0x4D4D『網路字節』, 要轉為『主機字節』. 定義宏指令.
| #define TIFF_NET2HOST_WORD(_VALUE) ( ((_VALUE & 0x00FF) << 8) | ((_VALUE & 0xFF00) >> 8) ) |
| #define TIFF_NET2HOST_DWORD(_VALUE) ( ((_VALUE & 0x000000FF) << 24) | ((_VALUE & 0x0000FF00) << 8) | ((_VALUE & 0x00FF0000) >> 8) | ((_VALUE & 0xFF000000) >> 24) ) |
| #define TIFF_NET2HOST_DWORD64(_VALUE) ( ((_VALUE & 0x00000000000000FF) << 56) | ((_VALUE & 0x000000000000FF00) << 48) | ((_VALUE & 0x0000000000FF0000) << 40) | ((_VALUE & 0x0000000000FF0000) << 32) | ((_VALUE & 0x00000000FF000000) >> 8) | ((_VALUE & 0x000000FF00000000) >> 16) | ((_VALUE & 0x0000FF0000000000) >> 24) | ((_VALUE & 0x00FF000000000000) >> 32) | ((_VALUE & 0xFF00000000000000) >> 40) ) |
定義TIFF結构, 愛蒞保存分析數據.
| typedef struct TIFF_TYP { | |
| WORD ByteOrder; | 字節順序 ‘II’ / ‘MM’ |
| WORD version; | TIFF圖檔版本 |
| DWORD NewSubfileType; | 子檔案中資料類型 |
| DWORD PhotometricInterpretation; | 反色顯示. |
| DWORD Compression; | 1=吾壓縮. |
| DWORD bitCount; | 像素bits:8位,16位,24位,32位 |
| WORD BitsPerSample[4]; | 每粒像素位BitCount,1=1bit(單色);4=4bit(16色);8=8bit(256色); |
| DWORD SamplesPerPixel; | 位圖像素Bytes:2byte,3byte,4byte; |
| DWORD ImageHeight; | 圖像高 |
| DWORD ImageWidth; | 圖像寬 |
| DWORD Orientation; | 影像方向 |
| DWORD ResolutionUnit; | 解析度單位,計算圖像物理尺碼. 1:縱橫比,2英寸(默認),3釐米 |
| TIFF_RATIONAL XResolution; | ImageWidth解析度,X像素解析度,例航拍300m/1000m = molecule/denominator; |
| TIFF_RATIONAL YResolution; | ImageHeight解析度,Y像素解析度,例航拍300m/1000m = molecule/denominator;
|
| DWORD RowsPerStrip; | 圖像條帶(數據)行數(高度),可能最後一條帶除外. |
| PDWORD64 StripOffsets; | 圖像條帶(數據)偏移. |
| PDWORD64 StripByteCounts; | 圖像數據字節量 |
| DWORD64 StripCount; | 條帶數量 |
| DWORD PlanarConfiguration; | 平面配置 |
| char * ExtraSamplesa; | 說明: |
| char * Software; | 創建圖像軟體名稱仝版本 |
| char * DateTime; | 創建日期: |
| DWORD Predictor; | 預測器一種數學運算-僅用於LZW壓縮 |
| TIFF_PALETTEENTRY palette[256]; | 調色板,用於4bit/8bit模式. |
| PBYTE data; | 原始數據 |
| PBYTE buffer; | 圖像 |
| }TIFF, * TIFF_PTR; |
载入TIFF分析標簽
| bool Load_TIFF(TIFF_PTR tiff, PBYTE data, int size){ |
| TIFF_HEAD_PTR head;// 圖檔頭Image File Header(IFH) |
| tiff->data = data;// 原始數據 |
| head = (TIFF_HEAD_PTR)data;// TIFF圖檔頭 |
| if (tiff->ByteOrder != TIFF_LITTLE_ENDIAN && tiff->ByteOrder != TIFF_BIG_ENDIAN)
return false; |
| if (tiff->ByteOrder == TIFF_BIG_ENDIAN)// ‘MM’ 大端字節 網路字節 net
{ // 網路字節 轉 主機字節 head->version = TIFF_NET2HOST_WORD(head->version); head->offset = TIFF_NET2HOST_DWORD(head->offset); } |
| tiff->version = head->version;// TIFF圖檔版本
if (tiff->version == TIFF_VERSION)// TIFF圖檔版本 { TIFF_DIRECTORY_PTR directory; // 目錄 directory = (TIFF_DIRECTORY_PTR)((PBYTE)data + head->offset); Parse_Directory_TIFF(tiff, directory);// 分析數據 } |
|
// 載入8或16,32Bit圖像 if (tiff->bitCount == 16 || tiff->SamplesPerPixel == 2) Load_Grayscale_TIFF(tiff);// 載入數據 else if (tiff->bitCount == 8 || tiff->SamplesPerPixel == 1) Load_Palette_TIFF(tiff);// 載入數據 else if (tiff->bitCount == 24 || tiff->SamplesPerPixel == 3) Load_RGB_TIFF(tiff);// 載入數據 else if (tiff->bitCount == 32 || tiff->SamplesPerPixel == 4) Load_RGBA_TIFF(tiff);// 載入數據 |
| return true;
} |
分析數據
| bool Parse_Directory_TIFF(TIFF_PTR tiff, TIFF_DIRECTORY_PTR directory) { |
| if (tiff->ByteOrder == TIFF_ENDIAN_BIG)// ‘MM’ 大端字節 網路字節 net
directory->count = TIFF_NET2HOST_WORD(directory->count);// 網路字節 轉 主機字節 |
| for (int index = 0; index < directory->count; ++index)
Parse_Enter_TIFF(tiff, &directory->enter_array[index]);// 分析數據 |
| return true;
} |
分析數據
| bool Parse_Enter_TIFF(TIFF_PTR tiff, TIFF_ENTER_PTR enter)
{ |
| if (tiff->ByteOrder == TIFF_ENDIAN_BIG)// ‘MM’ 大端字節 網路字節 net
{// 網路字節 轉 主機字節 enter->tag = TIFF_NET2HOST_WORD(enter->tag);// 標識 enter->type = TIFF_NET2HOST_WORD(enter->type);// 數據類型 1~12 enter->count = TIFF_NET2HOST_DWORD(enter->count);// 數量 enter->data = TIFF_NET2HOST_DWORD(enter->data);// 數據 } |
| if (enter->tag == TIFF_TAG_NewSubfileType)//子檔案中資料類型
tiff->NewSubfileType = enter->data; else |
| if (enter->tag == TIFF_TAG_PhotometricInterpretation)// 反色顯示.
tiff->PhotometricInterpretation = enter->data; else |
| if (enter->tag == TIFF_TAG_Compression)// 壓縮.
tiff->Compression = enter->data; else |
| if (enter->tag == TIFF_TAG_ImageHeight)// 圖像高
tiff->ImageHeight = enter->data; else |
| if (enter->tag == TIFF_TAG_ImageWidth)// 圖像寬
tiff->ImageWidth = enter->data; else |
| if (enter->tag == TIFF_TAG_ResolutionUnit) // 解析度單位,計算圖像物理尺碼 . 1:縱橫比,2英寸(默認),3釐米
tiff->ResolutionUnit = enter->data; else |
| if (enter->tag == TIFF_TAG_XResolution)// ImageWidth解析度,X像素解析度,例航拍300m/1000m
Parse_XResolution_TIFF(tiff, enter); else |
| if (enter->tag == TIFF_TAG_YResolution) // ImageHeight解析度,Y像素解析度,例航拍300m/1000m
Parse_YResolution_TIFF(tiff, enter); else |
| if (enter->tag == TIFF_TAG_Orientation)// 影像相對於行和列方向
tiff->Orientation = enter->data; else |
| if (enter->tag == TIFF_TAG_ColorMap)//調色板偏移, 256色和16色圖像先有調色板
Parse_ColorMap_TIFF(tiff, enter); else |
| if (enter->tag == TIFF_TAG_BitsPerSample)// 每粒像素位BitCount,1=1bit(單色);4=4bit(16色);8=8bit(256色);
Parse_BitsPerSample_TIFF(tiff, enter); else |
| if (enter->tag == TIFF_TAG_SamplesPerPixel)// RGB圖像,每粒像素字節BYTE
tiff->SamplesPerPixel = enter->data; else |
| if (enter->tag == TIFF_TAG_StripOffsets)// 圖像掃描線(數據)偏移.
Parse_StripOffsets_TIFF(tiff, enter); else |
| if (enter->tag == TIFF_TAG_StripByteCounts) //圖像數據字節總量
Parse_StripByteCounts_TIFF(tiff, enter); else |
| if (enter->tag == TIFF_TAG_RowsPerStrip)// 圖像條帶(數據)行數(高度),可能最後一條帶除外.
tiff->RowsPerStrip = enter->data; else |
| if(enter->tag == TIFF_TAG_PlanarConfiguration)// 平面配置,祗适用於RGB圖像
tiff->PlanarConfiguration = enter->data; else |
| if(enter->tag == TIFF_TAG_ExtraSamplesa)// 說明
tiff->ExtraSamplesa = Malloc_ASCII_TIFF((const char*)(tiff->data + enter->offset)); else |
| if (enter->tag == TIFF_TAG_Software) // 創建圖像軟體名稱仝版本
tiff->Software = Malloc_ASCII_TIFF((const char*)(tiff->data + enter->offset)); else |
| if (enter->tag == TIFF_TAG_DateTime)// 創建日期:
tiff->DateTime = Malloc_ASCII_TIFF((const char*)(tiff->data + enter->offset)); else |
| if(enter->tag == TIFF_TAG_Predictor)// 僅用於LZW編碼
tiff->Predictor = enter->data; |
| return true;
} |

LZW壓縮算法, 三位發眀家『Lemple』『Ziv』『Welch』首字母組合而蒞.
LZW『壓縮』『解壓』算法極高速無損,算法基於『字符串表string_table』, 映射代碼Code』和『字符串string』,重要它極易實現. 易於嵌入程式, 壓縮數據.
|
LZW壓縮 |
|
|
STRING |
字符/數據, 文本代表字符, 圖像代表數值 |
|
prefix |
前綴字符串 |
|
suffix |
後綴字符串 |
|
+ |
連接字符串 |
|
code |
代碼,字符串代碼編號. |
|
string_table |
字典/字符串表存放–『代碼Code』和『字符串string』 |
首先定義『STRING字符串』結构.
|
typedef struct LZW_STRING_TYP { |
|
|
int code; |
代碼,代碼應盡量短,至多12Bit |
|
BYTE data[64]; |
字符/數據 |
|
int length; |
字符/數據長度 |
|
}LZW_STRING, * LZW_STRING_PTR; |
|
CODE限制12BIT代碼, 字典至多4096個字符串.
|
#define LZW_MAX_STRING 4096 |
(2^12) |
定義『LZW』結构.
|
typedef struct LZW_TYP |
|
|
PBYTE sour; |
蒞源數據 |
|
DWORD sour_position; |
蒞源數據當前位置 |
|
DWORD sour_position_bit; |
跟踪BIT邊界 |
|
DWORD sour_length; |
蒞源數據長度 |
|
PBYTE dest; |
目標數據緩存 |
|
DWORD dest_size; |
目標緩存長度 |
|
DWORD dest_position; |
目標數據當前位置 |
|
DWORD dest_position_bit; |
跟踪BIT邊界 |
|
int string_count; |
字典量 |
|
LZW_STRING string_table[LZW_MAX_STRING]; |
字典/字符串表 |
|
}LZW, * LZW_PTR; |
|
初始字典/字符串表,初值有256個,編號係0~255, 字符/數據亦係0~255, 係255之後定義兩個代碼『清除碼ClearCode=256』 仝『結束碼EoiCode=257』, 一共258.
|
#define LZW_CODE_CLEAR 0x0100 |
0x0100(256) 清除碼 ClearCode |
|
#define LZW_CODE_EOI 0x0101 |
0x0101(257) 結束碼 EoiCode |
初始字典/字符串表,
|
bool Init_StringTable_LZW(LZW_PTR lzw) { |
|
for (index = 0; index < 256; ++index){ |
|
lzw->string_table[index].code = index; |
|
lzw->string_table[index].length = 1; |
|
lzw->string_table[index].data[0] = index; |
|
} |
|
code = LZW_CODE_CLEAR; |
|
lzw->string_table[LZW_CODE_CLEAR].code = LZW_CODE_CLEAR; // 清除碼 |
|
lzw->string_table[LZW_CODE_CLEAR].length = 2; |
|
memcpy(lzw->string_table[LZW_CODE_CLEAR].data, &code, 2); |
|
code = LZW_CODE_EOI; |
|
lzw->string_table[LZW_CODE_EOI].code = LZW_CODE_EOI; // 結束碼 |
|
lzw->string_table[LZW_CODE_EOI].length = 2; |
|
memcpy(lzw->string_table[LZW_CODE_EOI].data, &code, 2); |
|
lzw->string_count = 258; |
|
} |
將代碼CODE寫入輸出流,首個代碼係『ClearCode#256』, 以『EOICode#257』結束.
因為係壓縮數據,數據将吾以8BIT/16BIT對齊, 代碼Code以字典字符量跟踪Bit邊界.首個CODE將是9Bit代碼小於512. 字典量達係#510 之後10Bit代碼小於1024. 係#1022之後11Bit代碼小於2048. 係#2046之後12Bit代碼小於4096.代碼左移至高位,接連上個代碼.
|
bool Write_Code_LZW(LZW_PTR lzw, DWORD code) { |
|
int bits = 9; |
|
PBYTE data; |
|
if (lzw->string_count <= LZW_MASK_9BIT) bits = 9; else if (lzw->string_count <= LZW_MASK_10BIT) bits = 10; else if (lzw->string_count <= LZW_MASK_11BIT) bits = 11; else if (lzw->string_count <= LZW_MASK_12BIT) bits = 12; |
|
int byte_offset = lzw->dest_position_bit / 8; int bis_offset = lzw->dest_position_bit % 8; |
|
code = code << (32 – bits); code = code >> bis_offset; |
|
data = (PBYTE) &code; |
|
for (int i = 0; i < 4; ++i){ *(lzw->dest + byte_offset + i) = *(lzw->dest + byte_offset + i) | data[4 – i – 1]; |
|
if (byte_offset + i >= lzw->sour_length) break; // 數據尾,跳出 |
|
} |
|
lzw->dest_position_bit = lzw->dest_position_bit + bits;// 蒞源數據當前位置 |
|
lzw->dest_position = lzw->dest_position_bit / 8;// 蒞源數據當前位置 |
|
return true; |
|
} |
加入字符串至字典.首個添加到字串將位於258.
|
bool Add_StringTable_LZW(LZW_PTR lzw, LZW_STRING_PTR string){ |
|
WORD index; |
|
LZW_STRING_PTR str; |
|
index = lzw->string_count; |
|
++lzw->string_count; |
|
str = &lzw->string_table[index]; |
|
str->code = index;// 代碼應盡量短,至多12Bit |
|
str->length = string->length; |
|
memcpy(str->data, string->data, string->length); |
|
return true; |
|
} |
讀蒞源CHAR字符, 未壓縮數據
|
bool Read_NextChar_LZW(LZW_PTR lzw, LZW_STRING_PTR string){ |
|
BYTE data; |
|
if (lzw->sour_position + 1 > lzw->sour_length) return false; // |
|
data = *(lzw->sour + lzw->sour_position); |
|
lzw->sour_position = lzw->sour_position + 1;// 蒞源數據當前位置 |
|
string->data[0] = data; |
|
string->length = 1; |
|
return true; } |
壓縮算法步驟:
|
bool Compress_Data_LZW(PBYTE dest, DWORD* dest_length, PBYTE sour, DWORD sour_length){ |
|
LZW lzw; LZW_STRING prefix;// 前綴字符 LZW_STRING suffix;// 後綴字符 LZW_STRING string; WORD code;// 代碼 Init_LZW(&lzw, dest, *dest_length, sour, sour_length); // 初始LZW |
|
Init_StringTable_LZW(&lzw); // 初始字典 |
|
Write_Code_LZW(&lzw,LZW_CODE_CLEAR); // 寫目標 |
|
Zero_String_LZW(&prefix);// 前綴字符串清零 |
|
while (Read_NextChar_LZW(&lzw, &suffix)) { // 讀下一字符,後綴字符 |
|
Copy_String_LZW(&string, &prefix); // 前綴 Cat_String_LZW(&string, &suffix);// 前綴+後綴 |
|
if ( Find_StringTable_LZW(&lzw, &string, &code) ){ // 字符串查代碼 Cat_String_LZW(&prefix, &suffix);// 後綴 = 前綴+後綴 } else |
|
{ |
|
Find_StringTable_LZW(&lzw, &prefix, &code);// 查找前綴 |
|
Write_Code_LZW(&lzw, code);// 將CODE代碼寫入輸出流 |
|
// 前綴+後綴 Copy_String_LZW(&string, &prefix); // 前綴 Cat_String_LZW(&string, &suffix);// 前綴+後綴 |
|
Add_StringTable_LZW(&lzw,&string);// 加入字符串至條目表 |
|
Copy_String_LZW(&prefix, &suffix); // 後綴變前綴 |
|
} } |
|
Find_StringTable_LZW(&lzw, &prefix, &code);// 查找前綴 |
|
Write_Code_LZW(&lzw, code);// 將CODE代碼寫入輸出流 |
|
Write_Code_LZW(&lzw, LZW_CODE_EOI);// 將CODE代碼寫入輸出流 |
|
*dest_length = lzw.dest_position; // 輸出压缩長度 |
|
if (lzw.dest_position_bit / 8 != 0) ++(*dest_length); |
|
return true; } |
讀壓縮CODE代碼,必須跟踪Bit邊界. 代碼右移至低位,提取代碼. 代碼Code以字典字符量跟踪Bit邊界.首個CODE將是9Bit代碼小於512. 字典量達係#510 之後10Bit代碼小於1024. 係#1022之後11Bit代碼小於2048. 係#2046之後12Bit代碼小於4096.
|
WORD Read_NextCode_LZW(LZW_PTR lzw){ |
|
DWORD data; int bits = 9; |
|
if (lzw->string_count <= LZW_MASK_9BIT) // 小於512 bits = 9; else if (lzw->string_count <= LZW_MASK_10BIT) // 小於1024 bits = 10; else if (lzw->string_count <= LZW_MASK_11BIT) // 小於2048 bits = 11; else if (lzw->string_count <= LZW_MASK_12BIT) // 小於4096 bits = 12; |
|
int byte_offset = lzw->sour_position_bit / 8; int bis_offset = lzw->sour_position_bit % 8; |
|
data = (*(lzw->sour + byte_offset)) << (24+bis_offset) | (*(lzw->sour + byte_offset + 1)) << (16+bis_offset) | (*(lzw->sour + byte_offset + 2)) << ( 8+bis_offset) ; |
|
data = data >> (32 – bits); |
|
lzw->sour_position_bit = lzw->sour_position_bit + bits;// 蒞源數據當前位置 lzw->sour_position = lzw->sour_position_bit / 8;// 蒞源數據當前位置 |
|
return (WORD)data; } |
壓縮算法步驟:
|
bool UnCompress_Data_LZW(PBYTE dest, DWORD* dest_length, PBYTE sour, DWORD sour_length){ |
|
LZW lzw; WORD code = 0; WORD OldCode = 0; LZW_STRING string; LZW_STRING OldString; |
|
if ( dest == NULL || dest_length == NULL || sour == NULL || sour_length == 0) return false; |
|
Init_LZW(&lzw, dest, *dest_length, sour, sour_length); // 初始LZW |
|
while (TRUE) { |
|
code = Read_NextCode_LZW(&lzw);// 讀蒞源數據 |
|
if (code == LZW_CODE_EOI)// 結束碼 break;// 數據結束 |
|
if (code == LZW_CODE_CLEAR) { // 清除碼 |
|
Init_StringTable_LZW(&lzw);// 初始字典 |
|
code = Read_NextCode_LZW(&lzw);// 讀蒞源數據 |
|
if (code == LZW_CODE_EOI)// 結束碼 break;// 數據結束 |
|
Find_StringTable_LZW(&lzw, code, &string); |
|
Write_String_LZW(&lzw, &string);// 將字符串寫入輸出流 |
|
OldCode = code; } |
|
else { |
|
// 代碼稳查字符串 if (Find_StringTable_LZW(&lzw, code, &string)) { |
|
Write_String_LZW(&lzw, &string); // 將字符串寫入輸出流 |
|
Find_StringTable_LZW(&lzw, OldCode, &OldString); // 代碼稳查字符串 |
|
Cat_String_LZW(&OldString, &string, 1); // 連接字符串 |
|
Add_StringTable_LZW(&lzw, &OldString); // 加入字符串至條目表 |
|
OldCode = code; } |
|
else{ // 代碼稳查字符串 Find_StringTable_LZW(&lzw, OldCode, &OldString); |
|
Cat_String_LZW(&OldString, &OldString, 1); // 連接字符串 |
|
Write_String_LZW(&lzw, &OldString); // 將字符串寫入輸出流 |
|
Add_StringTable_LZW(&lzw, &OldString); // 加入字符串至條目表 |
|
OldCode = code; |
|
} } } |
|
*dest_length = lzw.dest_position; // 輸出压缩長度 |
|
return true; } |

地球話明係球,緊係圓,地球咁大, 通過航海家通過羅盤确定航向, 但係首先要得知當前位置, 用經緯蒞定位.遠遠係希臘時代,經已識得通過矔星,得知『緯度』, 『緯度越高越接近兩極,緯度越低接近赤道, 『赤道』划分『北半球』仝『南半球』.
| 『北半球』用『北緯』表示,『北緯』係正.0°~90° |
| 『南半球』用『南緯』表示,『南緯』係負. 0°~-90° |
『經度』直至『摆动定律』發現 『飛陀』每擺壹次稳定係壹秒. 英國佬再發明『陀鐘』. 所以『經度』即『時區』. 壹目24小時就有24『時區』.『經度』仝『時區』可以相互轉换
通過『北極』仝『南極』兩點畫直線叫『子午線』, 以英國倫敦『格林威治天文台』『子午線』定『0°』,
| 『零度子午線』以東为正, 即東經.0°~360° |
| 『零度子午線』以西为負, 即西經. 0°~-360° |
地球『南北極』兩極導致气候差異, 劃分出五個气候帶
| 北寒帶-北極圈 | 北緯66°34′~北緯90° |
| 北溫帶 | 北緯23°26′~北緯66°34′ |
| 熱帶 | 北緯23°26′~南緯23°26′ |
| 南溫帶 | 南緯23°26′~南緯66°34′ |
| 南寒帶-南極圈 | 南緯66°34′~南緯90° |

開發應用程式,總要存儲大量設定.以便重啟時讀取. 係android系統分『內部』仝『外部』存儲.
內部存儲: 衹有程式能夠訪問, 屬於私人吉間. 最重要冇需額外權限. 但係吉間細, 適宜存儲程式設定. 卸載程式後數據自動清除.
外部存儲: 冚辦闌外部程式皆可訪問,屬於公眾地方. 需要額外權限. 吉間大. 適宜存儲文檔. 通常位於SD卡, 或者係磁盤獨立劃出分區實現. 卸載程式後數據保留.
| 内部存儲 | getFilesDir() |
| 外部存儲 | getExtemalFilesDir() |
『getFilesDir()』返回路徑大約如下, 需然可以手工生成, 但係有可能路徑吾仝. 所以總係調用『getFilesDir()』返回内部存儲路徑.
| /data/data/com.example.appname/files |
因『getFilesDir()』返回JAVA字符串, 要轉為C字符串.
| const char * path ; jboolean isCopy; path = (*env).GetStringUTFChars( java_path, &isCopy); |
保存路徑后, 要释放C字符串. 否則造成記憶體泄漏.
| if(path != NULL) (*env).ReleaseStringUTFChars(java_path,path ); |
C創建并寫入文檔, 用『open()』函式
| Int open(const char * pathame,int flags, … /*mode_t mode*/ ); |
引用頭文檔
| #include <fcntl.h> | open()函式 |
| #include <errno.h> | errno全局變量 |
| flags: | 訪問標記 |
| O_WRONLY | 衹寫模式 |
| O_RDONLY | 衹讀模式 |
| O_CREAT | 創建文檔 |
| O_TRUNC | 截斷文檔,長度0. |
| O_APPEND | 總係文檔屘追加數據 |
| mode | 文檔讀寫許可權 |
| S_IWUSR | 用戶-寫權限 |
| S_IRUSR | 用戶-讀權限 |
| S_IRGRP | 群組-寫權限 |
| S_IWGRP | 群組-讀權限 |
| S_IROTH | 其他用户 寫權限 |
| S_IWOTH | 其他用户 讀權限 |
開啟寫文檔要創建文檔, 所以你仲要指定文檔讀寫權限.
| 開啟寫文檔 |
| int flags = O_WRONLY | O_CREAT | O_TRUNC | O_APPEND ; |
| int mode = S_IWUSR | S_IRUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; |
| int handle = open(filename, flags, mode); |
開啟祗讀文檔,忽再設罝文檔讀寫權限, 否則『errno』返回『EACCES』許可權被拒.
| 開啟祗讀文檔 |
| int handle = open(filename, O_RDONLY); |

近排臺雜牌手機.個USB口接触吾好,叉電仲免强, 但係『android studio』真機DEBUG調試, 更係認吾到手機. 好再新版『android studio』支緩冇線WIFI, 真機DEBUG調試. 冇線叉電, 冇線偵錯, USB使用率下降, 睇以後手機壽命更長.
係『ANDROID STUDIO』
係『ANDROID 手機』
撳『使用QR code配對装置』掃上面二維碼.

近日『Android Studio』編譯C/C++項目『button.cpp』報錯,檔案非專案一部分,係『CMakeList.txt』仝『native-lib.cpp』包含建构檔案.
| This file is not part of the project. Please include it in the appropriate build file (build.gradle, CMakeLists.txt or Android.mk etc.) and sync the project |

Android Studio-支持C/C++語法分析『Clang-Tidy』, 但係默認禁用.
| Unable to execute Clang-Tidy: Clang-Tidy is not found or cannot be executed |
啟用『Clang-Tidy』語法分析.


『Android Studio』當前NDK版本吾支持『Android 19』平臺, 請將minSdk改為『Android 21』.
祗係試過『NDK』改為『16.1.4479499』仝樣吾支持『Android 19』平臺.
| D:\ANDROID\appname\app\src\main\AndroidManifest.xml |
| <uses-sdk android:minSdkVersion=”21″ android:targetSdkVersion=”36″ /> |
| D:\ANDROID\appname\app\build.gradle |
| minSdk 21 |
| A problem occurred configuring project ‘:app’.
> [CXX1110] Platform version 19 is unsupported by this NDK. Please change minSdk to at least 21 to avoid undefined behavior. To suppress this error, add android.ndk.suppressMinSdkVersionError=21 to the project’s gradle.properties or set android.experimentalProperties[“android.ndk.suppressMinSdkVersionError”]=21 in the Gradle build file. |

裝Android Studio 集成『Open JDK』同『Android SDK』『Android NDK』, 『debug』 調試要選『app』自動連手機.



CMake未将或版本號吾,導致穩吾到『cmake』,下載對應『cmake』版本.
| D:\ANDROID\appname\app\src\main\cpp\CMakeLists.txt |
| cmake_minimum_required(VERSION 3.10.2) |
| D:\ANDROID\appname\app\build.gradle |
| cmake { path file(‘src/main/cpp/CMakeLists.txt’) version ‘3.10.2’ } |
| [CXX1300] CMake ‘3.10.2’ was not found in SDK, PATH, or by cmake.dir property.
Affected Modules: app |

『buildconfig』欄位現在預設啟用,冇需顯式設定,編輯『gradle.properties』係『android.defaults.buildfeatures.buildconfig』行前加注釋符『#』.
| D:\ANDROID\appname\gradle.properties |
| # android.defaults.buildfeatures.buildconfig=true |
| The option setting ‘android.defaults.buildfeatures.buildconfig=true’ is deprecated. |
| The current default is ‘false’. |
| It will be removed in version 10.0 of the Android Gradle plugin. |
| To keep using this feature, add the following to your module-level build.gradle files: |
| android.buildFeatures.buildConfig = true |
| or from Android Studio, click: `Refactor` > `Migrate BuildConfig to Gradle Build Files`. |

Android Studio因『Gradle JDK』與『JAVA_HOME』位置吾仝導致編譯中斷,可能會生成多個Gradle守護進程. 要將項目『Gradle JDK』位置與『JAVA_HOME』一致.
| Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different.
Project ‘app’ is using the following JDK location when running Gradle: ‘C:\Users\username\.jdks\jbr-17.0.14’ The system environment variable JAVA_HOME is: ‘C:\Program Files\Android\Android Studio\jbr’ If you dont need to use different paths (or if JAVA_HOME is undefined), you can avoid spawning multiple daemons by setting JAVA_HOME and the JDK location to the same path. |
| More info… |
| Select the Gradle JDK location |
| Do not show this warning again |
Android Studio 編譯時鎖定檔案, 以免被仝時修改. 若鎖定協議版本改變,會報版本錯誤,可嘗試清除APP檔案下『gradle』資料夾, 之後再重建Project
| Unexpected lock protocol found in lock file. Expected 3, found 0. |
刪除『gradle』資料夾,之後再重建Project.
| D:\ANDROID\appname\gradle |

琴日Android Studio重新編譯舊工程, 發現 jcenter()報錯, 事源Gradle已廢棄jcenter()倉庫, 其實之前一直警告,此依賴庫即將關閉. 編輯『settings.gradle』将 jcenter() 替換為 mavenCentral()搞掂.
|
|
| D:\ANDROID\GeomanticCompass\settings.gradle |
| dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() //jcenter() // Warning: this repository is going to shut down soon } } |

下載Gradle如果網絡超時, 導致下載失敗. 可嘗改targetSdkVersion版本號. 再次啟動Gradle下載.
| Could not install Gradle distribution from ‘https://services.gradle.org/distributions/gradle-8.1-bin.zip’. |
| Reason: java.net.SocketTimeoutException: Connect timed out |
改targetSdkVersion版本號.
| <uses-sdk android:minSdkVersion=”9″ android:targetSdkVersion=”36″ /> |
再次啟動Gradle下載.
| Executing tasks: [testReleaseUnitTest] in project D:\GeomanticCompass\app |
| Downloading https://services.gradle.org/distributions/gradle-8.1-bin.zip (25.17 MB / 124.64 MB) |



前幾日『Windows10專業版』自動升級『Windows11專業版』.發現『SolidWorks2018』授權失效. 記得五六年前仝老細買『Windows10企業版LTSC』, 係網上有2021版, 內含『DVD-ROM』仝『KEY』, 細問係咪:『正版?』,老細話可以官方激活. 問價70紋,順豐快遞到付12, 一共82紋.



九龍去新界沿途經多座大山, 搭火車捐山窿, 搭汽車要爬山, 爬山落山,左轉右轉, 先到新界,, 沙田, 大埔, 粉嶺, 上水. 風景幽美, 空氣新鮮, 西人鐘意係庶起別墅, 禮拜六禮拜奉旨嘆世界, 坐汽車去別墅, 打哥夫, 玩音樂,
但係香港至新界, 必經過條猛鬼橋. 係沙田仝大埔之間, 條橋搭係半山, 長三丈. 山勢險峻, 峰迴路轉.年中吾少汽車失事, 連車帶人, 錄录落山坑當堂變鬼, 歷年死於橋底過百人, 冤鬼太多, 天未黑現身, 揾人替身.
戰前德利洋行大班『摩斯』, 揾到大把貨, 係粉嶺起閒別墅歎世界, 休假奉旨仝老婆去粉嶺別墅, 司機『李炳』忠實, 『摩斯』賞賜有加『李炳』聲行家話, 猛鬼橋好猛鬼, 時時出蒞揾人替身, 『李炳』保, 每次駛過, 必萬分小心, 缓慢駛過.
『亞奇老竇生亞奇』『摩斯』適蓬禮拜六放晏晝, 諗住仝老婆仔去粉嶺別墅度假,『摩斯』有些少事務延至晏晝四點出車, 『李炳』揸車由佐敦道碼頭過海, 跟住彌敦道, 青山道一路駛上, 駛至山上, 暮色迷離, 黑雲出岫.
揸至離猛鬼橋五六十丈,斜路收油, 李炳離遠望見有一鬼佬企正橋中, 神高神大, 將近揸埋, 望真個鬼佬, 身材高大,頭仔細細,黑影緾罩.
李炳當堂剎停臺車大呌: 有鬼.
摩斯: 哈嘮! 做乜唔去!
李炳一指橋上: 摩斯腥! 你睇嚇, 見吾見!
摩斯一睇: 冇事去囉有鬼都要去, 吾通響庶過夜咩?
李炳冇謁, 著大燈, 入一波, 吊住極力子 揸上橋,将近黐埋身,鬼嘩一聲,直撲車內.李柄一驚, 左腳一鬆, 成架車鏟落山坑. 當堂散架. 李柄大呌, 好彩天未黑齊. 後面有車蒞. 稳人救起.
『亞奇老竇生亞奇-奇上加奇』,『李炳』仝『摩斯夫人』毛都冇甩條,但係『摩斯』眼耳口鼻 五孔出血,當堂瓜得.
等朝,港府開堂研究,㸃解同一部車.『李炳』仝『摩斯夫人』冇傷,而『摩斯』慘死,研蒞研去都未知死因,好彩『摩斯夫人』做證,吾係會話『李炳』謀殺.
『三水佬睇走馬燈-陸續有蒞』,繼續發生事故. 後蒞工務司擬定計畫, 鏟平山尖, 令辟山道, 避開猛鬼橋.














上次粒『AMD Ryzen5 5600X』畀我跌彎,依鋪『AMD Ryzen7 5800X』搭『Gigabyte X570 AORUS MASTER』,預先買定『幽靈棱鏡Wraith MAX』加強散, 装『幽靈棱鏡Wraith MAX』最好落AM4防撥支架, 原厰硅脂黏性强,拆果陳容易連CPU連根撥起. 但係粒U有105W, 個舊機壹冚蓋, 播條片都過90度輕機重啟.
柝左原厰風扇,换『AVC-12038-12v-3.12A-PWM』,處於Default模式CPU(1 Core) 閂門吾輕機. 係OC模式CPU(ALL Cores) 冇冚盖通風稳定吾輕機, 冚盖依然輕機重啟.睇蒞要换機箱.
| 風扇 | 轉速PRM | 噪音 | Default-CPU(1 Core) | OC-CPU(ALL Cores) |
| AVC-12038-3.12A | 7500轉 | 猛虎呌气 | 稳定最高90℃ | 輕機重啟 |
| DELTA-12038-1.6A | 4355轉 | 可接受 | 稳定最高90℃ | 輕機重啟 |
| QISU-14038-1.45A | 4623轉 | 可接受 | 稳定最高90℃ | 輕機重啟 |
| CPU-AMD-AM4- | CPU-Z Single Thread | CPU-Z Multi Thread |
| AMD Ryzen5 1500X | 342 | 2244.2 |
| AMD Ryzen5 5600X | 512 | 4042.6 |
| AMD Ryzen7 5800X | 607.4 | 6711.1 |
| AMD Ryzen7 5800X | |
| 散熱 | 幽靈棱鏡Wraith MAX |
| TDP | 105W |
| 核芯速度Core Speed | 3600 HMz |
| 電壓Core Voltage | 1.2v |
| 基頻Bus Speed | 100HMz |
| 倍頻Multplier | 37 |
| 核芯Cores | 8核 |
| 線程Threads | 16 |
| 步進Stepping | 0 |




多年前買『3D打印機』感温頭失靈,整左幾次都係咁,唯有買過臺新機,睇蒞睇去買『DDKUN-T3040』.
冇左『SD卡』同『USB連線』得翻『USB磁碟』同『WIFI連線』,通過WIFI連線登入後臺.即可上傅『.gcode』檔,并指令打印.吾使行蒞行去.再通過摄錄機實時𥄫實.
厰商推薦『Simplify3D』比『Cura』复雜. 載入STL檔, 要符合ASCII碼, 即係『字母A~Z』『數字0~9』.
『XY軸直線导軌』加『閉環伺服電機』,比舊果臺靜幾倍,訓覺覺豬都噪吾到.
贈送『WIFI天線』驚踢踢攔. 换『蘑菇頭天線』.
平臺鋁板加厚, 熱床加熱100度起碼伍分鐘. 建議90度. 否則會因熱床升溫過慢, 導致FIRMWARE SHUTDOWN
| Heater heater_bed not heating at expected rate See the ‘verify_heater’ section in docs/Config_Reference.md for the parameters that control this check.Once the underlying issue is corrected, use the “FIRMWARE_RESTART” command to reset the firmware, reload the config, and restart the host software. Printer is shutdown |
『平臺90度』+『冷卻風扇0』+『鋼板』+『薄膠水』打印『ABS』. 即可『加熱吸附』『降温剝離』.底坐係『波浪紋』吸附剝離相而.
指南書建議冷卻風扇轉速100滿速運轉, 實測會令熱床降溫導至脫落.
平臺有摄像頭選項,實際際冇內置摄像頭. 『触摸板』有『micro-usb』, 槓底有『USB-A』.



清同治年間, 禪城四衙門『分府衙門』『五斗司衙門』『都司衙門』『千總衙門』拱衛.另設軍械火藥庫,專門製造火藥,規模偉大,連羊城守軍火炮火藥, 均由此庫供給. 當時官史都驚意外發生, 波及百姓, 特設係禪城郊外, 柵下文塔腳附近.
庫內雇工仔百廿人,日夜開工,伙頭『亞均』負責煮兩餐,飯焦哨水照例入下欄, 歸火頭所有, 百廿人飯量, 飯焦相當可觀,山大斬埋架,『亞均』家肥屋潤. 憑住飯焦喫糊.晚晚送碗後, 將飯焦鏟起,以飯籮吊係廚房中央,防畀老鼠偷食.
一晚發覺籮内飯焦 , 冚辦闌被偷. 大發牢騷, 但係冇人認,
亞均冇謁, 以為一兩晚, 有乜所謂, 點知晚晚如事,飯焦吊起,朝早冇矖. 心諗飯籮吊高 老鼠偷食? 吾!有古怪,埂係有伙計半夜偷食. 喫左吾認賬. 好, 吾出聲住, 今晚吼嚇你, 睇過邊個甘抵死至得.
當晚亞均照例吊起飯焦, 壹入黑, 揸定菜刀, 伏係廚房門內, 預備吼到天光, 吼到你.有你冇我, 一刀做瓜你至得.
亞均一直伏到三更後, 夜闌人静, 廚房出面有輕輕脚步, 由遠而近, 𦲷嘞, 揸定菜刀, 扎起尸阿屙死馬. 預備一刀斬落. 哦㖇, 腳步蒞到廚房外,廚房門𠵱一聲, 行入條細孥, 十二三歲, 著件紅衫, 梳丫角髻, 望一望飯籮, 吾够高, 擔兩張凳仔駁高企係凳上, 掹住飯籮,拿飯焦喫, 嗒嗒聲.
亞均一睇: 嘩! 你條細孥, 吾係本庫夥記. 三更半夜, 邊庶走蒞, 睇你係人定係鬼, 晚晚偷我飯焦. 勢係假, 揪住你先. 大呌一聲. 從門內撲出, 左手揪住細孥條頸, 右手舉刀正想斬落,
細孥突然跪低哀求: 大佬, 畀嚇面, 肚餓啫, 吾好殺我.
亞均: 你係人定係鬼, 係邊庶蒞.
細孥: 非人非鬼, 總之宜家唔話得畀你知, 你如果放左我, 一定報答你.
亞均: 咁晚晚整清我D飯焦, 我老婆仔女, 靠曬飯焦喫糊.
細孥: 我再亦吾蒞, 但係你都冇飯焦喫.
亞均手一松, 蔔一聲, 條細孥吾見左, 以為撞鬼, 頭發竪起, 䢰翻床, 大被冚頭.
第朝亞均起床, 見庫內人人頭插小紅旗, 哇! 問佢地都話見吾到. 咦! 咪住先, 揾塊鏡照照, 好彩頭上冇插旗. 心定翻D.
拎翻飯籮.去普君墟買餸,行到文塔腳.轟!一聲巨響,天崩地塌,磚石橫飛,火藥庫爆炸,庫內火藥眾多,威力巨大,升起蘑菇雲.
亞均大难吾死,翻去視察,庫內化為瓦礫,百幾工仔, 血內橫飛, 屍身拋至幾里, 掛係樹枝.
事後冤鬼日夜哭泣, 打風落雨, 鳴,遠近皆聞,附近蔗圍,鎮安等鄉民,醵資超度,且係原址庶起間主帥廟鎮壓.

當晚『博流』𢴇埋銀兩, 漏夜棚尾拉箱. 趯路『八排山』隱居.趯到梧州. 係客棧住落.客棧隔籬有間『嚴貳記』豆腐鋪.
五鼓隱约聽呼喝聲, 聲音蒞自係客棧後欄, 『博流』行出客房企係欄門, 一個男人打功夫. 拳馬稳健. 出手虎虎有聲, 原蒞係客棧老細, 年過四拾, 虎頭燕頜, 力大氣雄.
地上石鎖有三拾斤, 五拾斤, 八拾斤, 壹百斤, 百五斤.
老細一手一個先執五拾斤石鎖,再執壹百斤,上下舞動如飛.『博流』心諗老細硬功犀利,橋力驚人.
天色大白, 老細發覺 後面企住個後生仔, 舉手作揖: 客人吾知有麼事.
『博流』: 老細功夫犀利. 細佬 佩服 .
两人轉到客廳, 大講武林秘史, 两人仝聲仝氣. 又岩傾.
『博流』: 細佬自幼愛攻夫, 一直尋訪名師, 老細收细佬收徒弟.,
『客棧老細』: 我功夫膚淺, 仲系求學階段, 邊敢學人收徒弟.
人怕,樹怕西, 『博流』苦苦央求,
『客棧老細』: 即然把打有心學功夫,等我介紹隐世高手畀你, 佢行為低調, 鋒芒吾露, 韜光養晦,冇人知佢身懷絕世功夫, 未見過佢收徒.
『博流』開心大喜: 佢係邊遮,即刻介紹畀我.
『客棧老細』: 遠在天邊近在祇尺. 就隔離『嚴貳記』豆腐鋪. 兩父女經營. 老竇呌『嚴貳公』,年近陸拾,童顏白髮.獨生女『嚴詠春』拾捌歲. 姿容秀麗. 人見人愛, 身懷絕世功夫, 三五拾人埋到身,
『博流』: 嘩, 一個女仔功夫咁犀利.
『客棧老細』: 駛乜講, 詠春斬柴吾使刀, 手刀一劈. 手爪甘粗都斬斷.
『博流』: 咁點拜豆腐佬為師?
『客棧老細』: 把打草過心抱未?
『博流』: 末. 細佬仲係青頭仔.
『客棧老細』: 咁就恭喜賀喜. 把打帮你做媒人,草詠春做心抱. 咁先學得絕世功夫.
『博流』: 靠曬把打做媒人, 草詠春過門, 封大利事畀你.
『客棧老細』: 你住係庶, 認係我表弟, 今晚係庶擺翻圍酒.請『豆腐佬』蒞飲, 畀人一個好印像, 千祈冇心急.
老細劏雞劏鴨,買兩樽靚酒,請『豆腐佬』過蒞 前吩咐 : 等陣喫飯, 吾好亂講, 禮貌 要斯文D.
『客棧老細』行去隔離『嚴貳記』,『豆腐佬』係度磨豆腐,齋睇石磨至小三百斤. 紮正四平大馬, 右手𢴇石磨柄耳推動石磨. 左手放豆入石磨, 壹睇就知內力極深,橋手堅硬,壹定係高手.而『詠春』劈柴, 手刀一劈即斷, 手指逐條撕開.『詠春』再用布袋隔豆槳. 所以整豆腐特別幼滑.
『客棧老細』: 咦, 詠春姪女, 乜咁好幫帮手.
『詠春』: 世伯, 乜咁好蒞坐下.
『客棧老細』: 稳你老竇飲酒.
『嚴貳公』出聲: 請我飲酒?
『客棧老細』: 有個表弟蒞探我, 劏隻靚雞. 稳埋你飲杯, 得吾得閒.
『嚴貳公』: 有得喫, 時時都得閒.
『嚴貳公』即刻洗手, 並吩咐詠春 -D豆腐落鑊蒸熟應市. 仝『客棧老細』翻去客棧. 『博流』坐係庶, 諗緊默應付豆腐佬. 見 『客棧老細』仝亞伯行入蒞, 年近陸拾. 童顏白髮. 精神矍爍. 心諗壹定係『豆腐佬』, 起身招呼. 『客棧老細』介紹『梁博流』係表弟, 蒞辦貨. 『博流』態度謙恭.杉杉有禮, 『豆腐佬』對『博流』印象良好. 三人盡歡而散.
『博流』知『豆腐佬』鐘意飲酒, 特登買兩埕迴龍酒送畀『豆腐佬』. 過左半載. 『博流』托『客棧老細』做媒提出草詠春過門:
『嚴貳公』: 我年過六十得一粒女, 吾想姖嫁甘遠.
『博流』: 我入贅, 生養死葬, 跟詠春改姓嚴, 嚴博流.
『嚴貳公』見博流甘有誠意,應承頭婚事. 着手籌辦婚禮.
入贅當日, 八音齊奏, 新郎新娘拜過『豆腐佬』,送入洞房. 詠春雖然勇孟絕倫, 此终係女仔有幾怕羞, 薄紗遮面, 坐係床邊, 燭光之下, 詠春 粉頸雪白,脈脈含情, 面珠墩有两個小酒粒.
『博流』心諗今次得米. 草到個靚老婆. 行埋詠春側近, 手搭香肩, 細聲咬耳仔:
詠春妹, 夜啦,日頭應酬親友, 攰早D休息.
『詠春』低頭吾應, 『博流』伸手攬腰, 除去鳳冠. 梳著墜馬髻. 秀髮幽香, 直透丹田. 心怦怦跳. 『博流』細聲: 夜深老婆早D休息.
『詠春』微微點頭. 除大紅禮服, 『博流』躍馬揮弋.
『詠春』舉手遮攔: 老公, 我聽老竇話, 下嫁畀你. 眞係三生有幸. 祗係我地嚴家, 有個習慣. 初婚之夜, 試試你功夫, 再行洞房.
『博流』: 小生 曾跟過名師學功夫. 㸃試法? 係後園?
『詠春』笑: 傻 嘎乜. 宜家吾係上陣打仗. 我瞓係床 合埋雙比腳, 擘得開你點得, 擘吾開喫自己.
兩腳伸掂, 合櫳成一字. 『博流』壹睇, 脚瓜瓤 香鷄甘幼. 自己吾係大力, 百斤石鎖話舉就舉.
跪係詠春腳下, 一手執一隻, 盡力向左右擘. 點知詠眷大比好似鐵鑄, 郁吾得其正, 心諗跪係床止, 發吾到力.
踎係詠春腳下, 出力再擘, 郁都吾郁.
『博流』: 老婆, 係床上發吾到力, 掉轉個身, 雙腳向床口, 我企係地發力, 一定可以擘得開.
『詠春』: 又好睇你得吾得.
於是『詠春』轉身,頭向裹,腳向外. 『博流』企係床口, 立正四平大馬, 將詠春成個的起,一碌竹甘,壹樣擘吾開. 『詠春』係度kiki笑. 『博流』唯有放低『詠春』.
『博流』摊係椅上, 唞大氣. 睇望住詠春, 睇得吾喫得.
『詠春』吾忍心. 行埋『博流』安撫: 傻仔,吾使心急, 假以時日, 终得以慰藉,夜深人靜,早d瞓.
『博流』垂頭喪氣, 洞房花燭,有名冇實,乾煎成晚.天未光,去舉石鎖練橋力. 准備今晚覆灼. 係地堂上下揮動石鎖, 自覺橋力吾弱, 㸃解哀係詠春對大比度.
聽到新外父『嚴貳公』: 亞流, 未天光,甘勤力.
『博流』滿面羞愧, DU低頭吾出.
『嚴貳公』睇到甘,撚鬚微笑: 好女婿, 我知拉, 琴晚冇洞房.
『博流』低聲: 詠春动夫腰馬使得, 合埋大比, 擘極擘吾開, 講蒞都奇,我橋力有百斤以上, 點知擘極都吾都, 咪早D起身練橋力.
『嚴貳公』: 亞流, 等我慢慢教你, 橋力通過舉石鎖練, 純係外功, 力猛極都有限.. 而詠春運用內功, 運氣係大比. 三四百斤橋力,都擘吾開.
『博流』: 咁咪成世喫自己.
『嚴貳公』: 內功運氣, 係運丹田氣. 丹田氣一洩當堂擊破. 人身陸拾肆㸃動脈, 最薄弱係腰身. 畀隻鐵蒺藜你. 一篤腰身丹田氣即散. 大比一擘就開.
『嚴貳公』翻房拎隻鐵蒺藜畀『博流』, 『鐵蒺藜』用 四鋼製尖銳組成, 吉亲痛死.『博流』收埋係衫袖, 施施然當冇野.
『博流』天黑即返新房: 『詠春』我今日練左成日石鎖. 橋力大增. 今晚實擘開妳.
『詠春』笑笑口: 甘心急,今晚仝琴晚咪一樣. 練一日石鎖,想擘開我.
『詠春』上床掂訓, 『博流』飛身上馬. 右手撫摸腰身, 拎『鐵蒺藜』擺係『詠春』腰側.
『博流』: 准備啦.
『博流』一手執一隻, 將詠春腰身責向『鐵蒺藜』, 腰畀尖銳吉正, 唉喲中氣一洩, 兩脚畀『博流』擘開成大字. 『博流』乘機進馬, 雙手攬住腰身?
『詠春』放軟個身. 『博流』先洞得房.


『金庸』係『神雕俠侣』有『枣核钉』殺人暗器, 極有可能睇左,『我是山人』係 1947年11月8號『廣東商報』發表文章.『牛屎欖核戰勝老教頭』.
古仔記載肇慶洪拳師虎『劉萬慶』,兩臂有五百斤力, 虎尾剪一掌可以打斷大樹. 『劉萬慶』年己過六拾,細個吾讀書, 涵養功夫淺, 行路大摇兼大擺, 一人掗晒成條街, 拾足壹隻油炸蟹.
一日肇慶『劉萬慶』武館門口,響起彭彭打鑼聲,附近D人壹聲鑼聲,知有賣武睇, huhu聲圍埋貳叁百人,蒞左兩姊弟係庶 鳴鑼聚众,家姐廿歲撚單頭棍.着住白色連衫裙,頭插白花,肌膚雪白,笑起蒞有两個小酒粒,似梨花帶雪,今年啱啱拾捌岁.又後生靓女.細佬拾肆伍,企係隔離打鑼.
家姐:伙記慢打鑼, 打得鑼多, 鑼炒耳.
細佬:炒猪耳.
家姐:打得更多, 夜又長.
細佬:炒猪肠.
鑼聲驚動『劉萬慶』出蒞壹睇, 有貳叁百人係庶圍觀, 以鑼聲嘈雜, 上前制止. 細孥吾聼, 『劉萬慶』伸手搶鑼, 細孥一縮係『劉萬慶』脅下穿過, 激到『劉萬慶』翻入武館拎刀,
細孥: 亞伯吾好再蒞, 你打傷我固然吾好, 我打傷你就仲吾好意思.
『劉萬慶』吾聴一刀迎頭斬落, 細孥向外壹跳, 右手係袋拎粒『牛屎欖核』臺飛. 飛中『劉萬慶』左眼, 鮮血淋淋眼核爆出,『劉萬慶』知道今次撞板, 䢰翻武館, 敷藥兩月痊,盲左隻眼, 自此收招牌.

狗肉和尚『真達大師』因為鐘意飲酒, 以少林拳為基礎,自創『大醉八仙拳』.『真達』係『少林寺出家』, 拜『至善禪師』為師.『至善』有心栽培,連雲遊南越三年帶埋『真達』. 等佢細睇人間疾苦.
㸃知『真達』成日偷走私自酿酒,酒後打交,屡誡吾改,終於畀『至善』攀落山.好彩『至善』帶過佢雲遊南越,於事䢰去『羊城』『長壽寺』掛單.
朝朝企係街邊托『托鉢』,抄化所得冚辨闌拎去 『大新街』『楊巷淘沙氹』買狗肉喫酒,人人呌佢『狗肉和尚』.
宜家D人對喫『狗肉』有偏見, 其實『仗義每多屠狗輩,從蒞女俠出風塵』,『樊噲』屠狗 喫『狗肉』,助『漢高祖』定天下. 『狗肉滾三滾,神仙企吾穩』『狗肉』D香氣,令三五知己圍埋傾偈,冇猜冇忌, 喫『狗肉』過程培養仗義之氣.
仲有吾好已為『托鉢』係乞夷,自古以蒞『和尚』靠『托鉢』維生,試諗『和尚廟』擁有大量田地仝香油收入,吾使『托鉢抄化』,㸃知人間疾苦,仲係咪『和尚』.『托鉢』係『日本』『泰囯』尚存.
講翻『真達和尚』有日係『大坦尾』醉酒,聽聞人聲鼎沸, 叱咤之聲, 兵兵崩崩,檯凳横飛, ,.睇蒞兩個字頭傾吾數, 先係釘杯, 跟住郁手,兩邊兩便, 拾幾人,個個飲陪陪夫,放馬過橋,揮拳進擊,生龍活虎,以靜制動,似亂而謹.
於是 参悟而創『大醉八仙拳』.套拳一百零八勢.外功為體,內功為用,『拋掛擒拿』為主,『拳掌橋馬』為副,避實就虛,壹顛壹扑, 以退為進, 誘敵深入, 出其制勝, 功其冇備,
係一百零八勢中. 『拐李失杖』緊接『黄狗射尿』至為獨到,
『拐李失杖』束手徬徨 一顛一仆, 連續退馬, 誘敵埋身.
敵人上當,上馬追擊, 『黄狗射尿』仆街雙手撑扡, 向後起飛腳, 踢正心口, 當堂口吐鮮血瓜得.
『真達大師』後蒞將『大醉八仙拳』傳畀師弟『陸亞采』.
古仔講到依庶.










玖連山少林寺畀白湄馮迫德率清兵 攻破, 至善禪師其中徒弟,『杏隱』殺出重圍.䢰佬南月.匿係羊城西關『華林寺』挂單,隱名埋名.一日『杏隱』係方丈室瞓晏覺. 朦朧中萝見白衣觀音,從天而降仝『杏隱』講: 你功夫日漸荒費,少林派 後䜝冇人,斷子絕孫,今授拳術畀你,發揚光大.
『白衣觀音』係教『杏隱』面前打拳, 手法異常, 至善師虎冇教過, 緊記於心. 學成後驚醒. 拳法凝固腦內.朝朝試練,融會貫通,創立『白衣觀音』派.此派以『童子拜觀音』起手.
『杏隱』數傳至『成恩』.『成恩』晚年, 收黄飛鴻做閂門弟子, 係『華林寺』內教拳. 祗能以竹篾教授, 黄飛鴻苦心練習, 盡得奥義.






『金庸』係『笑傲江湖』『射雕英雄傳』中有『繡花針』殺人暗器, 極有可能睇左,『我是山人』係 1947年11月11號『廣東商報』發表文章.『惠州女俠花針懲劇盜』.
古仔記載鹅城『劉叔保』屘女『劉麗金』,嫁畀商家『趙春庭』,兩公婆搭渡蒞羊城,夜泊係石龍.當時東江匪患猖獗.『飛天火屎』偵查得知『趙春庭』條船食水深,連仝七個馬仔撑艇泊埋夜襲.
『飛天火屎』𨶙單刀, 躍上船逢,寒光一閃,打個冷震,仆街.沙蟬跌落地聲都吾聲. 其它馬仔吾識死, 繼續躍上船逢, 『劉麗金』坐係燈下缝衫.手一揚,一馬仔,喉嚨一痛,又仆街.
其餘六個大呌『水緊撑籠』,走得快好世界,走得摩冇鼻哥. 解維後『趙春庭』即刻『鬆頂』.
朝早鄉人撈起兩人屍身, 喉嚨插花針, 皮肉瘀黑, 花針淬劇毒.

詠春拳王『梁贊』先游對外講逐漸消瘦病死.以而家睇 似係心腦血管病, 導至輕微腦中風.
但係據『我係山人』孝據, 另有內情.『梁贊』身材高大,手急眼快,十個八個埋吾到身. 所以畀仇家穩個十三肆歲『細孥仔』,用『鳳眼拳』蒞暗算佢.
『梁贊』朝朝係『榮生堂/贊腥堂』睇症到晏晝,去『昇平街』『怡心樓』二樓,窗口位飲茶. 睇見細孥仔坐係隔籬,冇唯意,茶博士冲水後,趁『梁贊』舉杯, 細孥仔,右手揸起拳頭, 中指突出, 兜心輕輕一指.『梁贊』即時胸骨粉碎,喉嚨一甜,免强將啖血吞翻落肚, 睇住『細孥仔』『鬆頂』.
『梁贊』免强落樓埋單,撑翻『榮生堂/贊腥堂』即時暈低. 畀人抬翻入去, 『捏人中 捽魂精 搓心口 查藥油 貫羌汤』 救醒. 『梁贊』自知强忍啖血,撑翻蒞. 胸部積瘀. 自此肌肉漸漸消瘦, 三個月後-先游.
『梁贊』過生後『鎖子連環腿』失傳, 連『找錢華』吾識.佢兩粒仔『梁春』『梁璧』折埋『榮生堂/贊腥堂』,去香港發展, 係『乍畏街』經營洋行生意.
梁贊生死之迷講到依庶.






自六月開通『跨境支付通』,人仔入金『IB盈透』存米股,慳番兌換損失仝時間. 整個入金過程吾使拾分鐘.祗有單次兌換損失. 用『eDDA即時本地轉帳』入金祈要一步係『盈透』填轉帳金額, 資金直接從銀行轉入『盈透』. 上限係99999999, 即係冇上限.
『eDDA轉帳』有兩缺點, 壹係要確保戶口有足够結餘, 吾够錢或者填錯金額,會畀『HSBC』罰30定40紋. 貳係逢禮拜五六日, 夜晚11~6點暫停轉帳.
|
『人仔』->『跨境支付通』->『IB盈透eDDA』-> 『米金』-> 『米股』 |
以『HSBC匯豐』用『eDDA即時本地轉帳』入金為例. 係『IB盈透』登記『銀行』仝『金額』
| 銀行賬戶詳情 | |
| 『幣種』 | 揀『人仔(CNY)』 |
| 銀行所在國家或地區 | |
| 您的銀行 | 004-HSBC |
| 銀行賬戶 | |
| 銀行代碼 | HSBC-004 |
| 分行代碼 | ATM卡或銀行賬單上的前三位即爲分行代碼 |
| 賬戶號碼 | 吾含 『銀行代碼』仝 『分行代碼』 |
| 爲您要保存的存取款指令命名 | 求其或填銀行賬戶號碼 |
| 簽名 | 名 + 姓 |



自六月開通 『跨境支付通』,入金『IB盈透』證券存米股,慳兌換損失仝時間. 整入金過程吾使拾分鐘.祗有單次兌換損失.
|
『人仔』->『跨境支付通』->『HSBC匯豐』->『IB盈透』-> 『米金』-> 『米股』 |
係『IB盈透』登記『銀行』仝『金額』
| 通過轉數快(FPS) | |
| 保存存取款指令信息? | 是 |
| 您的銀行 | 004-HSBC |
| 銀行代碼 | HSBC-004 |
| 分行代碼 | ATM卡或銀行賬單上的前三位即爲分行代碼 |
| 銀行代碼 | 銀行卡凸字 |
| 爲您要保存的存取款指令命名 | 求其或填IB賬號U開頭 |
| 存款金額 | 最低金額冇 |
撳『獲取指令』
以『HSBC匯豐』用『轉數快FPS』入金. 入『人仔CNH』仝『港紙HKD』個 (FPS) 冧靶吾仝. 吾好撳錯. 超過壹萬紋港紙即係8捌千幾,要先登記受款人.
係HSBC手機APP登記受款人,『HSBC』姓名要仝『IB』姓名臺致.
| 别名 | 填『IB-CNH』 |
| 新受款人戶口所屬國家或地區 | 揀『香港』 |
| 新受款人戶口類型 | 揀『快速支付系统識別碼』 |
| 快速支付系统識別碼 | 填『166690628』 |
| 轉賬至此受款人戶口每日限額 | 最高填『3000000』 |
隔日等HSBC确認,係HSBC手機撳『轉數快』
| HKD轉數快(FPS)識別號碼 | 166690628 |
| 輸入金額 | 填翻上面金額 |
| 備註 | 填IB賬號U開頭 |
| 致收款人的信息 | 填IB賬號U開頭 |

『鎖子連環腿』係少林鎮山奧義之一, 古仔要從『鄺能/和尚能』講起,『鄺能』係南海县大鎮鄉人, 係石湾豐宁寺出家, 『和尚能』師虎 係 少林正宗嫡傅『大德禪師』. 當時『和尚能』學得佢八九成功夫. 祇係有兩手絕招冇教『和尚能』.包括『鎖子連環腿』.『和尚能』又乞又西師虎都吾肯教佢,驚『教識徒弟冇獅虎』.
有日『大德禪師』係企係寺內庶入定『發藕竇』,『和尚能』静静雞係背後偷襲, 一拳兜背脊.『大德禪師』醒水, 一轉馬同時起飛腳. 掃正『和尚能』大比,『錄錄錄』錄出兩丈.
『和尚能』跪地下拜:多謝師虎教我鎖子腿.
『大德禪師』睇住『和尚能』, 知佢係想學『鎖子腿』: 算拉…将『鎖子連環腿』腳法教畀『和尚能』,『鎖子連環腿』專破『鐵沙掌』,分陰陽兩腿, 上身吾郁, 陽腿飛起,專踢腎囊-引人防禦,分散心神, 陽腿未落, 陰腿連續飛起, 陰腿專踼中路,睇下踢正邊庶:
踢正大比: 腰馬好仲免企強得住, 吾係錄開兩丈.
踢正肚腩: 至小內傷.
踢正𣚺袋: 即瓜.
陰陽互用, 虚實相乘, 變化冇窮,檔到吾檔到.
練『鎖子連環腿』先吊起兩百斤大沙包. 係沙包下面劃圓圈,標記𣚺袋, 日日踢沙包練腳力.練到上身吾郁, 一腳飛起, 沙包當堂飛起半空, 跌落蒞再加一腳. 沙包又飛起, 起腳冇影.仲要腳腳踢正圓圈.
『和尚能』『陳開』『李文茂』發動洪門起義. 係佛山防守战『和尚能』中箭玉碎.
係起義前『和尚能』將『鎖子連環腿』傳畀『梁贊』,以免失傳.
但係『梁贊』死得突然,過生後『鎖子連環腿』失傳. 連佢粒細仔『梁碧/碧腥』都吾識.
『鎖子連環腿』講到依庶.

『梁贊』除『詠春拳』之外,仲有套『三連拳』,僅三馬三手,連環使出,一氣呵成.系少林拳演進蒞. 相傳『梁贊』至多出到第二手,對手瞓低.
第一式『獨鑽花心』-左拳護胸,右踭兜『心口』一踭.
第二式『單拳劈虎』-以右踭為支撑,右拳成半弧形,由上望空掛落, 打『眼鼻口胸』.
第三式『旱雷冲天』-右拳掛落之後 ,順勢向上冲.兜『下巴』.
三手連住使出 等我諗翻細個玩拳皇.
『梁贊』係晚年,係『榮生堂/贊腥堂』仝人睇跌打,畀『獨眼龍』黃伍暗算,以三飛梅花袖箭打正左手瓜.『梁贊』忍痛 標埋身使出『三連拳』, 首先『獨鑽花心』之勢未完緊接『單拳劈虎』.『獨眼龍』即時『眼鼻口』標血.『梁贊』收手冇出『旱雷冲天』, 吾係『獨眼龍』當堂冇命.但係『梁贊』收手都要冒險,如果『獨眼龍』即時反擊,死噶就係『梁贊』.
之所以做到幾招內制敵,講蒞講去都係要『橋手』够硬.甘點先够硬?
『梁贊』師虎『梁博流』示范吆呌『橋手』,右手𢴇柴,條柴好似細孥仔手瓜甘粗,左臂暗注內力.壹野扑落左手,條柴扑壹聲折斷.
三連拳講到依庶.







之前係『IB盈透證券』用『轉數快FPS』入金,要分兩步,先係『盈透』填轉帳金額,再係『HSBC匯豐』用『轉數快FPS』轉帳.
但係用『eDDA即時本地轉帳』入金祈要一步. 祈要係『盈透』填轉帳金額, 資金直接從銀行轉入『盈透』. 缺點係要確保戶口有足够結餘, 吾够錢或者填錯金額,會畀『HSBC』罰30定40紋.
以『HSBC匯豐』用『eDDA即時本地轉帳』入金為例.
| 銀行賬戶詳情 | |
| 『幣種』 | 揀『港紙HKD』 |
| 銀行所在國家或地區 | |
| 您的銀行 | 004-HSBC |
| 銀行賬戶 | |
| 銀行代碼 | HSBC-004 |
| 分行代碼 | ATM卡或銀行賬單上的前三位即爲分行代碼 |
| 賬戶號碼 | 吾含 『銀行代碼』仝 『分行代碼』 |
| 爲您要保存的存取款指令命名 | 求其或填銀行賬戶號碼 |
| 簽名 | 名 + 姓 |

『詠春』拳館祖師排位,『梁二梯』『黃華寶』傅畀『梁贊』,『梁贊』傅畀『陳華順/找錢華』,『陳華順』傅畀『葉繼問/葉問』,咁『梁二梯』『黃華寶』師虎就冇寫.
『詠春拳』係『禪城』繁衍靠『梁贊』.
『梁贊』原名『梁德荣』,『贊』係佢學名,大戶人家少爷仔又呌『乜官物官』, 所以『梁德荣』又呌『贊官』.
『梁德荣』排第二孻仔.大佬『梁德男』,『堂大佬』『梁德志』『梁德源』.
『梁德荣』祖籍鹤山古劳,屋企係『禪城』『清正街』,係『快子街』開藥材鋪『荣生堂』,賣藥兼睇鐵打.月語人名飆高两個音,人人呌佢『贊腥』.所以『荣生堂』又呌『贊腥堂』.
『嚴詠春』老公『梁博流』翻去鄉下, 將『詠春拳』傳畀疏堂姪仔『梁贊』.『梁贊』後蒞識左『梁二娣』, 兩人交换绝技, 『梁贊』學左『六點半棍』,『梁二娣』學左『詠春拳』. 之後識埋『黃華寶』學埋『雙飛蝴蝶掌』. 又跟『和尚能』學『鎖子連環腿』.
『梁贊』有兩粒仔『梁春』『梁碧和/璧腥』, 得意弟子『陳華順/找錢華』, 『陳桂/猪用桂』.『梁奇/流氓奇』. 『詠春拳』係『禪城』繁衍 .
甘『梁二梯』『黃華寶』師虎係邊個? 據『我是山人』考據,當時戲班子弟屬於『洪門』學『洪拳』. 源蒞『梁二娣』『黃華寶』師虎係『至善禪師』,『至善』係玖連山『少林寺』開山,即係『少林派』,成為反清复明總機關.乾龍末年『少林寺』畀清兵燒燬,『至善禪師』仝『洪熙官』殺出重圍.趯佬南越,匿埋係紅船做煲頭, 係紅船期間 『至善』收兩個徒弟『梁二娣』『黃華寶』. 呌『洪熙官』做師兄.『洪拳』仝『洪門』係壹體兩面.即係話佢地兩位都係『洪門』.傳『梁二娣』『六點半棍』. 傳『黃華寶』『十八手羅漢伏虎拳』『蝴蝶掌』. 兩個一個學棍, 一個學拳, 各有所長. 所以紅船戲班開演人山人海一票难求.點解甘旺場? 因老倌大『打真軍』.點樣『打真軍』法? 傳說『關二哥』錄『關刀』吾係重,得八亞二斤, 大老倌佢又去打錄八亞二斤『關刀』.兩個『老倌』兩支『軍器』,夾埋百幾斤,係庶『傾傾昆昆』.戲棚散甘濟.邊有吾旺場?
咸丰四年-儒略歷1854年,『陳開』白晝獄官, 夜晚洪門『洪順堂』大佬. 得知『洪秀全/全哥』係金田起義,之後仲係金陵建立『太平天國』.
『陳開』知道時機成熟,連仝 二花面『李文茂』, 『豐寧寺』主持『鄺能/和尚能』三人密謀 决定發動洪門起義. 『和尚能』議定作戰戰略『拜佛』『劏羊』『擒龍』.
咸豐四年六月十一日即係1854年7月5日,主帥『陳開』領率『洪門子弟』,副帥『李文茂』領率『梨园子弟』,『和尚能』軍師.
首戰『拜佛』壹日 占領『佛山』, 『和尚能』以『塔坡寺』為本陳. 發動『劏羊』作戰. 兩廣總督-湖南佬葉名琛-閉城待援,羊城城高糧足,圍城失利.退守佛山,係佛山防守戰『和尚能』中箭玉碎.
『陳開』仝『李文茂』退出禪城,轉戰『三水』『肇慶』.葉名琛下令火烧『塔坡寺』,拆『瓊花會館』禁月劇唱月劇都瓜得,大規模捕殺『洪門』余党.
『梁贊』生於道光五年即係1825年,死於1894年日. 享年六十有九.
『陳開』係咸豐四年即係1854年發動洪門起義.『梁贊』當年29歲.
如果『梁贊』師虎係『梁二梯』師伯『黃華寶』.甘『梁贊』必定係『洪門弟子』.『梁贊』跟過『和尚能』學過『鎖子連環腿』. 識吾識『李文茂』『陳開』?
首戰『拜佛』係正佢面前發生.事先『梁贊』知吾知,有冇預埋佢,定係個個满住佢? 如果有份,謀逆死罪㸃甩身?
『梁贊』古仔講到依庶.

關於『詠春』記載好小,據『我是山人』考據,『詠春』姓嚴,佢老竇自然都係姓嚴, 兩父女開豆腐餔,『詠春』嫁畀 老公姓『梁』, 叫『梁博流/梁博球』.
『詠春拳』係慢慢逐漸成形.傳到『嚴詠春』–『小練頭』『沉橋』『標指』基本成形.
甘『詠春拳』係點演進? 講翻『法海禪師』有伍個入室徒弟,分别『五枚』『白眉』『至善』『馮道德』『李巴山』.『至善禪師』叫『五枚師太』做大師姐. 所以『詠春拳』仝『洪拳』係『少林拳』演進出蒞.
大師姐『五枚師太』隱居大理『白鶴庵』, 話就話隱居,實際逃避清國輯捕. 『白鶴庵』之所以呌『白鶴庵』, 源於『五枚』 得閑係山睇白鶴捉蛇.鶴嘴一啄,條蛇即時 『眼癱癱成個吾盏,走去閻羅王賣鹹鴨蛋』.通過模仿『鶴瓜』『鶴嘴』『震翼』動作 ,悉心鏄研,成為今日『白鶴派』,『五枚』係桂境雲游 ,收『苗順』做徒弟,教佢『白鶴拳』. 而『苗順』将『白鶴拳』同自身功夫融合演進,自成一家.
『苗順』傳畀徒弟『嚴二公』,『嚴二公』排第二得粒女『嚴詠春』,開『嚴二記』賣豆腐,『嚴二公』收留『梁博流』.仲將粒女『嚴詠春』嫁埋畀佢. 再由『嚴詠春』傳畀『老公仔』『梁博流』.『嚴二公』過生後,折埋『嚴二記』翻去鄉下.
『梁博流』再将『詠春拳』傳畀疏堂姪仔『梁贊』. 『贊仔』係『佛山』『快子街』『杏濟堂』開藥材鋪,賣藥兼睇跌打. 因為月語人名飆高两個音,人人呌佢呌『贊腥』. 『杏濟堂』又呌『贊腥堂』.
『梁贊』将『詠春拳』發揚光大.
『嚴詠春』『橋手』練到好似鐵甘硬,以『沉橋標指』壹招制敵, 但係傳到『梁贊』多三味少林絕技.『六點半棍』『雙飛蝴蝶掌』『鎖子連環腿』.以『蝴蝶掌』壹招殺敵.
二花面『梁二娣』年老照例入住佛山大基尾瓊花會館, 識左『梁贊』, 以『棍』换『拳』, 『梁贊』學左『六點半棍』,『梁二娣』學左『詠春拳』.之後識埋武生『黃華寶』學埋『雙飛蝴蝶掌』. 又跟和尚能『悟能』學『鎖子連環腿』.
『梁贊』 傳畀得意弟子『陳華順/找錢華』
『找錢華』傳畀閂門弟子『葉繼問』.
詠春源起 大致係咁樣.




『Quectel移遠-RM520N-GL- AA版』壹間上海雜牌廠出,
| RM520N-GL |
| AA RM520NGLAA-M20-SGASA |
AP版祗支持PCIE模式,AA版支持USB仝PCIE模式,下載指南仝驅動要注册賬戶, 激活電郵收吾到,要客服後壹激活. 唯臺驚喜係Lucky2可以上網
『RM520N-GL』有肆引腳, 叁個5G天線, 壹個GPS天線.
| RM520N-GL天線 | 引腳 |
| 5G天線 | ANT0,ANT1,ANT3 |
| GPS天線 | ANT2 |
『RM520N-GL-AA』版本,支持PCIE/USB模式
裝『WWAN』驅動. remove
| opkg install kmod-mhi-wwan-ctrl |
| opkg install kmod-mhi-wwan-mbim |
| opkg install kmod-usb-net-qmi-wwan |
| opkg install kmod-usb-serial-wwan |
| opkg install kmod-wwan |
| opkg install wwan |
| opkg list | grep qmi |
裝『QMI』驅動.
| opkg install kmod-qcom-qmi-helpers |
| opkg install kmod-usb-net-qmi-wwan |
| opkg install libqmi |
| opkg install luci-proto-qmi |
| opkg install qmi-utils |
| opkg install uqmi |
係『Windows』主機cmd命令行執行
| ssh root@openwrt |
root@openwrt’s password: 填密碼.
執行更新安裝包列表
| opkg update |
下載穩定版『OpenWrt 24.10.1』,就係下載『OpenWrt 24.10.0』wifi信號時有時冇,5G模塊冇USB,搞左個大頭佛.
係『Windows』主機cmd命令行執行
| ssh root@openwrt |
root@openwrt’s password: 填密碼.
執行更新安裝包列表
| opkg update |
安装USB驅動
| opkg install kmod-usb2 | |
| opkg install kmod-usb3 | |
| opkg install kmod-usb-acm | |
| opkg install kmod-usb-core | |
| opkg install kmod-usb-net | |
| opkg install kmod-usb-net-qmi-wwan | |
| opkg install kmod-usb-net-cdc-ether | 驅動創建ECM-USB接口 |
| opkg install kmod-usb-net-cdc-ncm | 驅動創建NCM-USB接口 |
| opkg install kmod-usb-net-rndis | 驅動創建RNDIS -USB接口 |
| opkg install kmod-usb-net-cdc-subset | |
| opkg install kmod-usb-ohci | 驅動創建usb接口 |
| opkg install kmod-usb-ohci-pci | |
| opkg install kmod-usb-serial | |
| opkg install kmod-usb-serial-option | 驅動創建ttyUSB*接口 |
| opkg install kmod-usb-serial-wwan | |
| opkg install smstools3 | |
| opkg install minicom | 加入minicom |
安裝usbutils
| opkg update |
| opkg install usbutils |
埶行『lsusb』. 『Quectel RM520M-GL』
| lsusb |
檢測USB模塊装載『Quectel RM520M-GL』
| Bus 002 Device 007: ID 2c7c:0801 Quectel RM520N-GL |
檢測USB驅動装載 『/dev/ttyUSB0』『/dev/ttyUSB1』『/dev/ttyUSB2』『/dev/ttyUSB3』.USB轉串口.
| ls /dev/ttyUSB* |
通過『192.168.2.1』 登錄openwrt後臺.
撳luci ->网络->介面->装置,发现(usb0或者wwan)硬件接口.
撳『新增裝置設定』
『裝置類別』揀『橋接裝置』
『裝置名稱』填『br-wan』
『橋接連接埠』揀『eth0』『usb0』『wwan0』
撳『儲存』
撳『介面』->『wan』->『編輯』
『裝置』揀『br-wan』
%99情况插入sim卡即可上網.
| 上網模式 | 作用 | 備注 |
| 0 | RMNET接口 | 通過QMI工具發QMI命令,獲取公網IP |
| 1 | ECM接口 | 通過標準的CDC-ECM發起data call,是發送標準的ECM命令,獲取局域網ip。 |
| 2 | MBIM接口 | Mobile Broadband Interface Model,正宗的移動寬帶接口模型,專門用於3G/4G/5G模塊的,只在win8以上的windows上使用 |
| 3 | RNDIS接口 | 基於USB實現RNDIS實際上就是TCP/IP over USB,就是在USB設備上跑TCP/IP,讓USB設備看上去像一塊網卡獲取局域網ip |
插入sim卡.
執行更新安裝包列表
| opkg update |
安裝minicom 命令行界面串口終端. 仝COM口設備通信.
| opkg install minicom |
登入配置菜單
| minicom -s |
撳『Serial port setup』填寫COM配置
| COM配置 | |
| Serial Device | /dev/ttyUSB2 |
| Lockfile Location | /var/lock |
| Callin Program | |
| Callout Program | |
| Bps/Par/Bits | 115200 8N1 |
| Hardware Flow Control | Yes |
| Software Flow Control | No |
| RS485 Enable | No |
| RS485 Rts After Send | No |
| RS485 Rx During Tx | No |
| RS485 Terminate Bus | No |
| RS485 Delay Rts Before | 0 |
| RS485 Delay Rts After | 0 |
退出minicom
發下列AT指令.
| AT | 發AT指令. |
| OK | 返回 |
撥號模式『ECM模式』
| AT+QCFG =”usbnet”, 1 | ECM模式 |
| AT+QCFG =”usbnet”, 3 | NCM模式 |
設自動撥號
| AT+QMAPWAC=1 | 設置自動撥號 |
重啟模塊『RM520M』
| AT+CFUN = 1,1 | 重啟模塊『RM520M』 |
查模块IMEI編號
| AT+CGSN? | 查詢IMEI-4G/5G模块唯壹編號 |
| +CGSN: “888888888888888” | 返回 |
查模塊S/N編號
| AT+CFSN | 生產編號S/N |
| +CFSN: “XXXXXXXXXX” | 返回 |
查工作模式
| AT+CFUN? | 查 |
| +CFUN: fun, rst | 返回 |
| fun | 0: 慳電模式/飛行模式
1: 齊整模式 4: 閂射頻信號收發 |
| rst | 0: 設置工模式冇使注銷
1: 設置工模式注銷後重新注册 |
如果工作模式=0,設1, 設為齊整模式, 軟複位.
| AT+CFUN=0 | 飛行模式 |
| AT+CFUN=1 | 軟複位 |
| AT+CFUN=1,1 | 重啟 |
| AT+CFUN=4 | 閂射頻信號收發 |
查模塊固件版本
| AT+CGMR? | 查模塊固件版本 |
| +CGMR: “86600.1000.00.04.02.02” | 返回 |
查sim卡状态
| AT+CPIN? | 係咪插入 |
| +CPIN: READY | 插入SIM卡 |
查APN
| AT+CGDCONT ? | 查APN |
| AT+CGDCONT=CID,TYPE,APN,NSLPI | |
| CID:0~10 | APN |
| AT+CGDCONT=1, “IPV4V6”, 0,0,0 | |
| AT+CGDCONT=1, “IP”, “CMNET”,0,0 | TCP/IP协议-NET接入点 |
| AT+CGDCONT=0, “IP”, “INTERNET”,0,0 | TCP/IP协议-INTERNET接入点 |
| AT+CGDCONT=1,”PPP”,”cmwap” | 点对点协议 wap 接入点 |
查模塊5G信号
| AT+CESQ | 信號指標 |
| +CESQ: 99,99, 255,255, 255,255, 60,46,47 | 5G信號 |
| 99,99, | 2G: 大於0且小於99 |
| 255,255, | 3G: 大於0且小於255 |
| 255,255, | 4G: 大於0且小於255 |
| 60,46,47 | 5G: 大於0且小於255 |
查模塊4G信号
| AT+CSQ? | 查模塊4G信号 |
| +CSQ:rssi,ber | 返回 |
| +CSQ:28,99 | |
| rssi: 信號强度 | 0~33: 信號最强
99: 冇信號 |
| ber: 误码率 | 0/99: 冇誤碼 |
查詢網絡註冊狀態
| AT+CGREG? | 查詢GPRS網絡註冊狀態 |
| AT+CEREG? | 查詢LTE網絡註冊狀態『4G』 |
| AT+CREG? | 查詢冚辦爛網絡註冊狀態 2g/3g/4g |
| +CREG?mode,stat,lac,ci | 返回 |
| +CREG:0,5 | 漫遊 |
| MODE模式 | 0:禁止網絡註冊主動提供結果代碼(默認)
1:允許網絡註冊主動提供結果代碼(+CREG:stat) 2:啟用網絡註冊和位置信息結果碼主動上報(+CREG:STAT,LAC,CI) |
| STAT状态 | 0:未註冊,終端當前未搜尋新營運商
1:已註冊本地網絡 2:未註冊,終端正在搜尋基站 4:未知代碼 5:已註冊,處於漫遊狀態 |
| +CREG: 1,0 | 註冊失敗 |
| +CREG: 1,1 | 註冊成功 |
設置網絡註冊狀態為2.
| AT+CREG=2 | 主動提供結果碼 |
查營運商設置
| AT+COPS? | 設置營運商 |
模塊IP地址, 得到IP講明經已上網
| AT+CGPADDR | 查模塊IP地址 |
| +CGPADDR:10.153.120.21 |
| AT&W | 保存 |
| AT&F | 出廠設定 |
| ATZ | 用戶設定 |
| AT+CFUN=0 | 飛行模式 |
| AT+CFUN=1 | 軟複位 |

係OpenWrt插USB磁碟,要執行『挂載』指令.
『挂載』係指將磁碟映射到指定資料夾. 讀寫資料夾等於讀寫磁碟.
係『Windows』主機cmd命令行執行SSH
| ssh root@openwrt |
root@openwrt’s password: 填密碼.
執行更新安裝包列表
| opkg update |
安裝fdisk架撑
| opkg install fdisk |
執行『fdisk -l』得知USB磁碟路徑 『/dev/sdb1』
| fdisk -l |
創建臨時資料夾『usbdisk1』
| mkdir /mnt/usbdisk1 |
執行『挂載』指令.
| mount /dev/sdb1 /mnt/usbdisk1 |
定位資料夾.
| cd /mnt/usbdisk1 |
寫入數據後,執行刷新,寫入緩存
| sync |
猛出USB磁碟前卸載
| cd / |
| umount /mnt/usbdisk1 |


仝老細冚臺新電腦,豪華配置,使左皮幾.老細要拎翻屋企用,注册新『microsoft』賬戶. 幾年前買『windows10企業版』畀佢吾見左.系『microsoft』官網下載『windows10企業版』得90日評估.
啟用『windows10』
| C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe |
| irm https://get.activated.win | iex |
指令詳解
| irm | 係invoke-restMethod縮寫,埶行URL下載. |
| https://get.activated.win | URL脚本地埗 |
| | iex | 渠道符號, 脚本交畀iex埶行. |
| [1]HWID-Windows | 啟用Windows |
| [2]Ohook-Office | 啟用Office |
| [3]TSforge-Windows/Office/ESU | 啟用Windows/Office/ESU |
| [4]KMS38-Windows | 啟用Windows至2038 |
| [5]Online-Windows/Office | 啟用Windows/Office |
| [6]Check Activaton Status | 啟用状態. |
| [7]Change Windows Edition | |
| [8]Change Office Edition | |
| [9]Troubleshoot | |
| [E]Extrans | |
| [H]help | 救濟 |
| [0]Exit | 退出 |
『Windows10專業版』仝埋『Office2021專業版』成功啟用.祗係『Windows10企業評估版』係啟用吾到. 衹能啟用『Windows10企業版』, 即係出面買光碟正式版本.



『STEAM』遊戲商鋪, 遊戲玩家集中地. 99%遊戲開發商擺庶賣. 『付款方式』支持『VISA』『MasterCard』『Alipay』『WeChat pay』
首先註冊『STEAM』賬戶. 祗係『網業版』仝『Windows版』註冊.
| Windows版 | SteamSetup.exe |
| Android版 | steam-3.10.0.apk |
| 網業版 | 建立帳戶 |
係android手機, 用GOOGLE PLAY下載『STEAM』. 或者係官網下載『steam-3.10.0.apk』. 以後通過掃QRCODE登錄





『Fibocom廣和通FM650-CN』壹間深圳雜牌廠出口品,其實中古『SIERRA WIRELESS EM9190 5G』仲正.
係『openwrt』装『4G/5G模塊』通過撥號連運營商網絡.撥號通過com發出AT指令完成. 吾使装驅動.
下載穩定版『OpenWrt 24.10.1』,就係下載『OpenWrt 24.10.0』wifi信號時有時冇,5G模塊冇USB,搞左個大頭佛.
『撥號』有『ECM』 『NCM』『RNDIS』三種.
| 撥號模式 | 簡介 |
| ECM-Ethernet Networking control Model | 以太網網絡控制模型 |
| NCM-Network Control Model | 網絡控制模型 |
| RNDIS-Remote Network Driver Interface specification | 遠程網絡驅動介面規範 |
建議用ECM模式
| 撥號模式 | 簡介 |
| ECM | 『5G模塊』變USB網卡,行『TCP/IP』協議 |
| NCM | ECM改良版 |
| RNDIS | 『5G模塊』變USB網卡,行『TCP/IP』協議. |
『RNDIS』撥號係最新式.
| 撥號 | ECM模式 | NCM模式 | RNDIS模式 |
| Linux | 支持 | 支持 | 支持 |
| Windows | 吾支持 | 吾支持 | 支持 |
| 硬件加速 | 吾支持 | 支持 | 支持 |
USB端口信息,『39』係下面設定模式
| USB Compositions | ||
| USB Mode | VID/PID | Compositions |
| 34 | 0x2CB7/0x0A04 | ECM+AT+DIAG+LOG |
| 35 | 0x2CB7/0x0A04 | ECM+AT+DIAG+LOG+ADB |
| 36 | 0x2CB7/0x0A05 | NCM+AT+MODEM+DIAG+LOG |
| 37 | 0x2CB7/0x0A05 | NCM+AT+MODEM+DIAG+LOG+ADB |
| 38 | 0x2CB7/0x0A06 | RNDIS+AT+MODEM+DIAG+LOG |
| 39 | 0x2CB7/0x0A06 | RNDIS+AT+MODEM+DIAG+LOG+ADB |
『ECM』模式端口枚舉順序
| Vendor ID:0x2CB7 / Product ID:0x0A04 (USBMODE 34/35) | ||
| Interface Number | Interface Function | Interface Name |
| 0~1 | USB NET | CDC ECM |
| 2 | USB Serial | Fibocom AT |
| 3 | USB Serial | Fibocom Diag |
| 4 | USB Serial | Fibocom Log |
『NCM』模式端口枚舉順序
| Vendor ID:0x2CB7 / Product ID:0x0A05 (USBMODE 36/37) | ||
| Interface Number | Interface Function | Interface Name |
| 0~1 | USB NET | CDC ECM |
| 2 | USB Serial | Fibocom AT |
| 3 | USB Serial | Fibocom Modem |
| 4 | USB Serial | Fibocom Diag |
| 5 | USB Serial | Fibocom Log |
『RNDIS』模式端口枚舉順序
| Vendor ID:0x2CB7 / Product ID:0x0A06 (USBMODE 38/39) | ||
| Interface Number | Interface Function | Interface Name |
| 0~1 | USB NET | CDC ECM |
| 2 | USB Serial | Fibocom AT |
| 3 | USB Serial | Fibocom Modem |
| 4 | USB Serial | Fibocom Diag |
執行更新安裝包列表
| opkg update |
安装USB驅動
| opkg install kmod-usb-acm | |
| opkg install kmod-usb-core | |
| opkg install kmod-usb-net | |
| opkg install kmod-usb-net-cdc-ether | 驅動創建ECM-USB接口 |
| opkg install kmod-usb-net-cdc-ncm | 驅動創建NCM-USB接口 |
| opkg install kmod-usb-net-rndis | 驅動創建RNDIS -USB接口 |
| opkg install kmod-usb-net-cdc-subset | |
| opkg install kmod-usb-ohci | 驅動創建usb接口 |
| opkg install kmod-usb-ohci-pci | |
| opkg install kmod-usb-serial | |
| opkg install kmod-usb-serial-option | 驅動創建ttyUSB*接口 |
| opkg install kmod-usb-serial-wwan | |
| opkg install smstools3 | |
| opkg install minicom | 加入minicom |
安裝usbutils
| opkg install usbutils |
埶行『lsusb』.
| lsusb |
檢測USB模塊装載『Fbocom Wireless Inc. FM650 Module』
| Bus 002 Device 007: ID 2cb7:0a06 Fbocom Wireless Inc. FM650 Module |
| Bus 003 Device 001: ID 1d6b:0002 Linux 6.6.87 ehci_hcd EHCI Host Controller |
| Bus 003 Device 002: ID 8087:8008 |
| Bus 004 Device 001: ID 1d6b:0003 Linux 6.6.87 xhci_hcd xHCI Host Controller |
檢測USB驅動装載 『/dev/ttyUSB0』『/dev/ttyUSB1』『/dev/ttyUSB2』.USB轉串口.
| ls /dev/ttyUSB* |
返回
| 設備 | 作用 | 備注 |
| /dev/ttyUSB0 | ||
| /dev/ttyUSB1 | ||
| /dev/ttyUSB2 |
執行『vim /etc/config/network』修改有線網絡配置文檔.
| config device | |
| option type ‘bridge’ | 橋接,交換機模式 |
| option name ‘br-lan’ | 網橋『br-lan』 |
| list ports ‘eth1’ | |
| list ports ‘usb0’ |
插入sim卡.
執行更新安裝包列表
| opkg update |
安裝minicom 命令行界面串口終端. 仝COM口設備通信.
| opkg install minicom |
登入配置菜單
| minicom -s |
撳『Serial port setup』填寫COM配置
| COM配置 | |
| Serial Device | /dev/ttyUSB0 |
| Lockfile Location | /var/lock |
| Callin Program | |
| Callout Program | |
| Bps/Par/Bits | 115200 8N1 |
| Hardware Flow Control | Yes |
| Software Flow Control | No |
| RS485 Enable | No |
| RS485 Rts After Send | No |
| RS485 Rx During Tx | No |
| RS485 Terminate Bus | No |
| RS485 Delay Rts Before | 0 |
| RS485 Delay Rts After | 0 |
撳『ESC』鍵返回
撳『Sava setup as dfl』保存
撳『Exit』進入
發下列AT指令.
| AT | 發AT指令. |
| OK | 返回 |
查詢『FM650』撥號模式
| AT+GTUSBMODE ? | 查詢『FM650』撥號模式 |
撥號模式『ECM模式』
| AT+GTUSBMODE = 34 | 設置撥號模式『ECM模式』 |
設自動撥號
| AT+GTAUTOCONNECT = 1 | 設置自動撥號 |
重啟模塊『FM650』
| AT+CFUN = 15 | 重啟模塊『FM650』 |
查模块IMEI編號
| AT+CGSN? | 查詢IMEI-4G/5G模块唯壹編號 |
| +CGSN: “888888888888888” | 返回 |
查模塊S/N編號
| AT+CFSN | 生產編號S/N |
| +CFSN: “XXXXXXXXXX” | 返回 |
查工作模式
| AT+CFUN? | 查 |
| +CFUN: fun, rst | 返回 |
| fun | 0: 慳電模式/飛行模式
1: 齊整模式 4: 閂射頻信號收發 |
| rst | 0: 設置工模式冇使注銷
1: 設置工模式注銷後重新注册 |
如果工作模式=0,設1
| AT+CFUN=1,1 | 設工作模式 |
查模塊固件版本
| AT+CGMR? | 查模塊固件版本 |
| +CGMR: “86600.1000.00.04.02.02” | 返回 |
查sim卡状态
| AT+CPIN? | 係咪插入 |
| +CPIN: READY | 插入SIM卡 |
查APN
| AT+CGDCONT? | 查APN |
| AT+CGDCONT=CID,TYPE,APN,NSLPI | |
| CID:0~10 | APN |
| AT+CGDCONT=1, “IPV4V6”, 0,0,0 | |
| AT+CGDCONT=1, “IP”, “CMNET”,0,0 | TCP/IP协议-NET接入点 |
| AT+CGDCONT=0, “IP”, “INTERNET”,0,0 | TCP/IP协议-INTERNET接入点 |
| AT+CGDCONT=1,”PPP”,”cmwap” | 点对点协议 wap 接入点 |
查信號指標
| AT+CESQ | 信號指標 |
| +CESQ: 99,99, 255,255, 255,255, 60,46,47 | 5G信號 |
| 99,99, | 2G: 大於0且小於99 |
| 255,255, | 3G: 大於0且小於255 |
| 255,255, | 4G: 大於0且小於255 |
| 60,46,47 | 5G: 大於0且小於255 |
查模塊4G信号
| AT+CSQ? | 查模塊4G信号 |
| +CSQ:rssi,ber | 返回 |
| +CSQ:28,99 | |
| rssi: 信號强度 | 0~33: 信號最强
99: 冇信號 |
| ber: 误码率 | 0/99: 冇誤碼 |
查詢網絡註冊狀態
| AT+CGREG? | 查詢GSM網絡註冊狀態 |
| AT+CEREG? | 查詢LTE網絡註冊狀態 |
| AT+CREG? | 查詢GPRS網絡註冊狀態 |
| +CREG?mode,stat,lac,ci | 返回 |
| +CREG:0,5 | 漫遊 |
| MODE模式 | 0:禁止網絡註冊主動提供結果代碼(默認)
1:允許網絡註冊主動提供結果代碼(+CREG:stat) 2:啟用網絡註冊和位置信息結果碼(+CREG:STAT,LAC,CI) |
| STAT状态 | 0:未註冊,終端當前未搜尋新營運商
1:已註冊本地網絡 2:未註冊,終端正在搜尋基站 4:未知代碼 5:已註冊,處於漫遊狀態 |
| +CREG: 0,0 | 搜尋網絡 |
| +CREG: 0,2 |
設置網絡註冊狀態為2.
| AT+CREG=2 | 主動提供結果碼 |
| AT+CGREG=2 | |
| AT+CEREG=2 |
查營運商設置
| AT+COPS? | 設置營運商 |
| +COPS: 0 | 自動注册 |
| +COPS: 1 | 手動注册 |
| +COPS: 2 | 强行注销网络 |
| +COPS: 3 | 祗設置格式 |
| +COPS: 4 | 先手動後自動 |
自動注册營運商. 要係
| AT+COPS=0,0
AT+COPS=0 |
自動注册吾指定營運商 |
查運營商,可能要等分鐘.
| AT+COPS=? | 發送AT指令查營運商, |
| +COPS: | 返回 |
| (1,”CHN-UNICOM”,”UNICOM”,”46001″,7) | 聯通 |
| (1,”CHN-CT”,”CT”,”46011″,7) | 電信 |
| (1,”CHN-CT”,”CT”,”46011″,11) | 電信 |
| (2,”CHN-UNICOM”,”UN) | 聯通 |
查模塊IP地址, 得到IP講明經已上網
| AT+GTRNDIS ? | 查模塊IP地址 |
| +GTRNDIS:1,1, | IP地址 |
| “10.213.186.83,0000:0000:0000:0000:0000: 0000:0000:0000:”, | |
| “172.20.164.2,0000:0000:0000:0000:0000: 0000:0000:0000:” |
%99情况吾使搞甘多,插入sim卡即可上網.
退出minicom


『SSH』即係『Secure Shell』,基於命令行界面遠程登錄,吾使妳係『OpenWrt』面前操作,壹旦使用妳离吾開佢.
首先『OpenWrt』主機配置SSH,編輯『dropbear』檔
| vim /etc/config/dropbear |
編輯『dropbear』, 行頭『#』係注釋,刪左佢.
| config dropbear | |
| option enable ‘1’ | 1:使能SSH
0:禁制SSH |
| option PasswordAuth ‘on’ | on: 允許用密碼登錄 |
| option RootPasswordAuth ‘on’ | on: 允許root帳戶用密碼登錄 |
| option RootLogin ‘1’ | 1: 允許root帳戶登錄
0: 禁制root帳戶登錄 |
| option Port ’22’ | SSH埠默認22 |
| option BannerFile ‘/etc/banner’ | 歡迎界面 |
撳『esc』鍵填『:wq』保存後退出vim.
如果root帳戶未設定密碼, 『SSH』係登錄吾到.
| Prrmission denied, please try again. |
如果重装『OpenWrt』, 係linux端要重置密鈅,『username』帳戶名
| ssh-keygen -f ‘/home/username/.ssh/known_hosts’ -R ‘openwrt’ |
係『OpenWrt』主機用『passwd』命令改root帳戶密碼.
| passwd | |
| Changing password for root | |
| new password: | 填root帳戶密碼 |
| Retype password: | 再填壹次 |
| Password for root changed by root |
重啟『SSH』服務
| /etc/init.d/dropbear restart |
係『Linux』主機撳『ctrl+alt+t』開啟端終端
| ssh root@openwrt |
係『Windows』主機cmd命令行填
| ssh root@openwrt |



編譯『OpenWrt』要部『Ubuntu』電腦.編譯過程吾單祗時間長,仲錯誤多.
係『Windows10』用命令行模式埶行SSH指令,遠程登錄『Ubuntu』,
| ssh username@hostname |
填賬戶密碼
| password: |
執行下載命令.
| sudo apt-get update |
| sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses-dev ncurses-term gawk asciidoc zlib1g-dev git rar meson |
| sudo apt-get install git |
| sudo apt-get install rar |
| sudo apt-get install meson |
| sudo apt-get install fakeroot |
訪問根目錄
| cd / |
創建openwrt資料夾
| sudo mkdir /openwrt |
下載openwrt源碼
| sudo git clone https://git.openwrt.org/openwrt/openwrt.git |
改『/openwrt』資料夾下冚辦爛讀寫權限
| sudo chmod 777 -R /openwrt |
下載後安装feeds程式包.『feeds』係指外圍程式包. 下載到『feeds/』資料夾.
| sudo /openwrt/scripts/feeds update -a |
| sudo /openwrt/scripts/feeds install -a |
登入openwrt程式編譯配置清單
| sudo make menuconfig |
撳鍵盤上下鍵更换選項,『—>』代表有子清單.
撳鍵盤左右鍵更换功能.『save存儲』『exit退出』『load載入』.
| Enter鍵 | 登入清單 |
| ESC鍵 | 返回清單 |
| SPACE鍵 | 切换選擇『*編譯』『N吾編譯』『M動態編譯』. |
| /鍵 | 搜尋 |
| OpenWrt Configuration | 編譯配置清單 |
| Target System | 目標系統 |
| Subtarget | 系統子類 |
| Target Profile | |
| Target Images | 固件格式 |
| Enable experimental features by default | 啟用實驗功能 |
| Global build settings | 編譯参數 |
| Advanced configuration options | 高級配置選項. |
| Builds the OpenWrt Image Builder | 編譯固件環境編譯 |
| Builds the OpenWrt SDK | 編譯OpenWrt SDK |
| Builds the OpenWrt based Toolchain | 編譯交叉編譯架撑 |
| Image configuration | 固件配置選項. |
| Package features | 程式包特性 |
| Base system | 基礎系統命令程式包 |
| Administration | 高級管理命令程式包 |
| Boot Loaders | 引導程序 |
| Development | 開發架撑包 |
| Extra packages | |
| Firmware | 外圍芯片固件 |
| Fonts | |
| Kernel modules | 內核編譯參數 |
| Languages | 編程語言程式包 |
| Libraries | 庫程式包 |
| LuCI | 網絡後臺圖形界面 |
| 電郵程式包 | |
| Multimedia | 多媒體程式包 |
| Network | 網絡程式包 |
| Sound | 聲音程式包 |
| Utilities | 架撑程式包 |
| Xorg | 圖形界面 |
冚辦爛勾選,編譯時間極長, 而可能磁碟容量吾够.祇能根據系統應用蒞擇. 清單選擇可揀『*』或『M』. 撳『space』鍵切換. 撳『esc』鍵返回.
| 清單選擇 | |
| * | build-in绑定,直接編譯入固件. |
| M | module模塊.動態編譯,opkg命令安装 |
| Target System | 目標系統 |
| x86 | pc系統 |
| subtarget | 系統子類 |
| X86_64 | 64bit-cpu,2007年後出所CPU都係64BIT. |
| Generic | i586體系, Pentium 4及之後32BIT-CPU. |
| Legacy | i386體系, Pentium 4之前32BIT-CPU- |
| AMD Geode based systems | 定制老舊網絡設備. |
登入openwrt內核編譯配置清單,埶行『sudo make menuconfig』命令之後埶行.
| sudo make kernel_menuconfig |
| Kernel Configuration | 內核配置清單 |
| 64-bit kernel | 64bit 內核 |
| Processor type and features | 處理器類型和功能 |
| Mitigations for CPU vulnerabilities | CPU漏洞緩解措施 |
| Power management and ACPI options | 電源管理仝ACPI選項 |
| Bus options (PCI etc.) | PCI匯流排選項 |
| Binary Emulations | 二進位模擬 |
| Virtualization | 虛擬化 |
| General architecture-dependent options | 通用架構相關選項 |
| Enable loadable module support | 可加載模塊支持 |
| Enable the block layer | 啟用塊層 |
| ASN1 | |
| Executable file formats | 可執行檔案格式 |
| Memory Management options | 記憶體管理選項 |
| Networking support | 網路支援 |
| Device Drivers | 設備驅動程序 |
| File systems | 檔案系統 |
| Security options | |
| Cryptographic API | |
| Library routines | |
| Kernel hacking |
設定掂就編譯, 時間可能
| 編譯 | |
| sudo make V=sc FORCE_UNSAFE_CONFIGURE=1 | 前臺顯示詳細信息. |
| sudo make v=99 FORCE_UNSAFE_CONFIGURE=1 | 單核編譯,前臺顯示信息. |
| sudo make v=99 -j2 FORCE_UNSAFE_CONFIGURE=1 | 雙核編譯,前臺顯示信息. |
| sudo make menuconfig | 程式編譯配置 |
| sudo make kernel_menuconfig | 內核編譯配置 |
編譯掂後係『/openwrt/bin』穩出『openwrt-x86-64-generic-ext4-combined-efi.img.gz』解壓『openwrt-x86-64-generic-ext4-combined-efi.img』檔. 佢就係編譯『openwrt』鏡像.
| /openwrt/bin/targets/x86/64/openwrt-x86-64-generic-ext4-combined-efi.img.gz |
| 清除編譯 | |
| sudo make clean | 清除 『固件bin』 『程式包』 |
| sudo make dirclean | 清除『交叉編譯架撑』『固件bin』『程式包』 |
| sudo make distclean | 冚辦爛清除, 返回配置原始状態. |
| 簡介 | |
| Build編譯 | 将源代碼生成CPU可執行二進制代碼. |
| Based Toolchain交叉編譯 | 係WINDOWS平臺編譯LINUX/ANDROID代碼 |
| 宿主機HOST | 編譯平臺 |
| 目標機TARGET | 執行平臺 |
| feeds | 係指外圍程式包. |
| * | 編譯 |
| M | 動態編譯,opkg命令安装 |

新版『OpenWrt』用『apk』替換『opkg』命令.
| apk | opkg | 簡述 |
| apk update | opkg update | 更新索引 |
| apk add pkg | opkg install pkg | 安装apk |
| apk del pkg | opkg remove pkg | 卸載apk |
| apk info | grep name | opkg list | grep name | 查詢apk |
| apk upgrade | opkg upgrade | 冚辦爛更新apk |
| https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet |

『LuCI』基於WEB圖形界面, 用戶通過手機或電腦遠程登錄『OpenWrt』. 吾使發出指令直接管理. 有兩種方法安裝『LuCI』.
『OpenWrt』用命令安裝.
執行『opkg update』更新安裝包列表
執行『opkg install luci』安裝圖形界面
執行『opkg install luci-i18n-base-zh-tw』OpenWRT漢化
執行『/etc/init.d/uhttpd enable』打開uhttpd服務
執行『/etc/init.d/uhttpd start』讓uhttpd自啟動
連網線電腦打開瀏覽器,連接軟路郵192.168.2.1, 登入openwrt後臺
或者係『OpenWrt編譯』『sudo make menuconfig』時加入
| Luci->Collections->luci |
| Luci->Modules->Translations->Chinese Traditional(zh_Hant) |
| Luci->Themes->luci-theme-bootstrap |
樣式有四款
| 樣式 | |
| luci-theme-bootstrap | Bootstrap Theme(默認) |
| luci-theme-material | Material Theme |
| luci-theme-openwrt | LuCI OpenWrt.org theme |
| luci-theme-openwrt-2020 | LuCI modern OpenWrt theme |
如果初次登錄,連線有錯異常.更新『luci』.
| opkg upgrade |
新版『openwrt』改用『apk』命令
| apk upgrade |


係『Ubuntu』安装『SSH』後, 以終端遠程訪問『Ubuntu』.吾使行蒞行去.
首先係『Ubuntu』撳『CTRL+ALT+T』啟動『終端』
| CTRL+ALT+T |
更新系統程式包列表.
| sudo apt update |
安装SSH服務, 可能要輸入管理者密碼, 安全考慮密碼吾顯示.
| sudo apt install openssh-server |
啟動SSH服務
| sudo systemctl start ssh |
重啟SSH服務, 修正配置後要重啟SSH.
| sudo systemctl restart ssh |
檢查SSH状态, 運行返回state:running
| sudo systemctl status |
配置SSH服務, 修正配置後要重啟SSH.
| sudo vim /etc/ssh/sshd_config | |
| prot 22 | 埠默認22 |
設置SSH著機自啟動
| sudo systemctl enable ssh |
允許SSH連線通過防火墙,port默認22
| sudo ufw allow ssh |
指定SSH服務port: 例如改為2200
| sudo ufw allow 2200 |
係『Windows10』用『PuTTY終端』遠程登錄SSH
| HostName | ubuntu |
| Port | 22 |
係『Windows10』用命令行模式遠程登錄SSH
| ssh username@hostname | |
| username | 賬戶名 |
| hostname | Ubuntu主機名 |


『COM口』即係『串口』,祗有9針『9PIN』.係上世紀八九拾年代電腦. 記得有個手寫板係『COM口』. 家時電腦都冇『COM口』, 祗有伺服器主板有『COM口』.『SUPERMICR X10SDV-4C-TLN2F』.
宜家改用網絡仝『COM串口』設備通信,改用『minicom』程式.
安装『minicom』
| opkg install minicom |
或者『OpenWrt編譯』『sudo make menuconfig』時加入
| Utilities->Terminal->minicom |
登入配置菜單
| minicom -s |
| configuration | 配置界面 |
| Filenames and paths | |
| File transfer protocols | |
| Serial port setup | 串口設定 |
| Modem and dialing | |
| Screen | |
| Keyboard and Misc | |
| Save setup as dfl | 存儲配置參數係minirc.dfl |
| Save setup as.. | 另存配置參數 |
| Exit | 返回minicom |
| Exit from Minicom | 退出minicom返回Linux |
撳『Serial port setup』填寫COM配置
| COM配置 | 參數 | |
| Serial Device | /dev/ttyUSB0 | USB0 |
| Lockfile Location | /var/lock | |
| Callin Program | ||
| Callout Program | ||
| Bps/Par/Bits | 115200 8N1 | 波特率 |
| Hardware Flow Control | Yes | |
| Software Flow Control | No | |
| RS485 Enable | No | |
| RS485 Rts On Send | No | |
| RS485 Rts After Send | No | |
| RS485 Terminate Bus | No | |
| RS485 Delay Rts Before | 0 | |
| RS485 Delay Rts After | 0 |
發送AT指令
| AT+GTUSBMODE ? | 查詢撥號模式 |
| AT+GTUSBMODE = 39 | 設置撥號模式 |
| AT+GTAUTOCONNECT = 1 | 設自動撥號 |
| AT+CFUN = 15 | 重啟模塊 |
| ATI | 返回版本番號 |
| AT+CPIN ? | 插入SIN卡未? |
| AT+CEREG ? | 網絡註冊狀態 |
| AT+COPS ? | 運營商信息 |
| AT+CESQ | 信号質量 |
| ATI+GMI ? | 返回製造商 |
| ATI+CGMI ? | 返回製造商 |
| AT+GMM ? | 返回模塊型號 |
| AT+CGMM ? | 返回模塊型號 |
| AT+GMR ? | 軟件版本型號 |
| AT+CGMR ? | 軟件版本型號 |
| AT+GSN ? | 返回模塊IMEI碼 |
| AT+CGSN ? | 返回模塊IMEI碼 |
| AT$QCRMCALL = 0,1 | 斷開連線 |
| AT+CDGCONT = 1,”IPV4V6”,“3GNET” | 撥號設置 |
| 1 | |
| IPV4V6 | ipv4,ipv6 |
| 3GNET | 聯通 |
| CMNET | 移動 |
| CTNET | 電信 |
| AT$QCRMCALL = 1,1,3,2,1 | |
| 3 | IPV4 |
| 1 | IPV6 |
| 2, | IPV4,IPV6 |
撳『q』鍵退出minicom

Linux文檔權限以『-』『d』『r』『w』『x』標示.
| 文檔權限 | 權限編號 | 簡介 |
| – | 0 | 非 |
| d | 目錄/資料夾 | |
| r | 4 | 讀 |
| w | 2 | 寫 |
| x | 1 | 埶行 |
係SHELL執行『ls -l』命令, 細寫
| ls -l |
列出當前資料夾下冚辦爛『文檔』仝『資料夾』『詳細清單』
| drwxr-xr-x 2 root root 4096 Feb 3 23:09 bin |
| drwxr-xr-x 3 root root 2048 Feb 3 23:09 boot |
| drwxr-xr-x 3 root root 2760 Apr 19 04:08 dev |
| …… |
| drwxr-xr-x | 文檔權限 |
| d | 『d』表示目錄, 『-』表示文檔, 『l』表示影射 |
| rwx | 拥有者user-可讀可寫可埶行. |
| r-x | 仝群組group-可讀可埶行. |
| r-x | 非群組other-可讀可埶行. |
| root root | 拥有者 |
| 首root | user帳戶 |
| 次root | group群組 |
| 文檔容量 | |
| 4096 | 4096byte即3.3KB |
| 2048 | 2048 byte即2KB |
| 孻屘修改日期 | |
| Feb 3 23:09 | 2月3日23:09 |
| Apr 19 04:08 | 4月19日04:08 |
| bin | 目錄 |
| chown param user path | 改『目錄』『文檔』拥有權 |
| user | 帳戶 |
| chown -Rv admin ./* | 祇root帳號,可以修改其它帳號權限 |
| -R | 递歸執行改拥有權『目錄』『子目錄』『文檔』 |
| -v | 顯示執行過程. |
| chmod user group other filename | 改『目錄』『文檔』權限 |
| user | 拥有者帳戶-數字權限 |
| group | 仝群組-數字權限 |
| other | 非群組-數字權限 |
『user』『group』『other』以數字代表權限
| r=4 | 可讀 |
| w=2 | 可寫 |
| x=1 | 可埶行 |
| -=0 | 禁 |
例:數字權限
| rwx | 4+2+1=7可讀可寫可埶行 |
| rw- | 4+2+0=6可讀可寫權禁埶行 |
| r-x | 4+0+1=5可讀禁寫可埶行 |
| r– | 4+0+0=4可讀禁寫禁埶行 |
| –x | 0+0+1=1禁讀禁寫可埶行 |
| — | 0+0+0=0禁讀禁寫禁埶行 |
例:改『文檔』權限為760
| Chmod 760 run.log | 改『文檔』權限 |
| 7 | 拥有者user-可讀可寫可埶行 |
| 6 | 群組group-可讀可寫權禁埶行 |
| 0 | 非群組other-禁讀禁寫禁埶行 |
| chgrp param group path | 改『目錄』『文檔』所屬群組 |
| group | 群組 |
| chgrp -Rv admin ./* | 祇root帳號,可以修改其它群組權限 |
| -R | 递歸執行『目錄』『子目錄』『文檔』改群組 |
| -v | 顯示執行過程. |


『vi』出現係『UNIX』時代,蒞到『Linux』時代出現加强版『vim』, 宜加係『Linux』系統『vim』指令等仝於『vi』.
| vim option filename |
| 執行vi/vim指令編輯文本文檔 |
| Insert mode | 編輯/插入模式 |
| 撳細寫『i』鍵 | 係光標處插入 |
| 撳大寫『I』鍵 | 光標非吉格處插入 |
| 撳細寫『a』鍵 | 係光標下壹字符處插入 |
| 撳大寫『A』鍵 | 係光標最後壹個字符處插入 |
| 撳細寫『o』鍵 | 係光標上壹行,新插壹行 |
| 撳大寫『O』鍵 | 係光標下壹行,新插壹行 |
| Last line mode | 撳『ESC』鍵進入底行模式 |
| 輸入『:w』->撳『Enter』鍵 | 存檔 |
| 輸入『:wq』->撳『Enter』鍵 | 存檔後退出 |
| 輸入『:q!』->撳『Enter』鍵 | 吾存,直接退出 |
| 輸入『:w filename』->撳『Enter』鍵 | 另存為 |
| 撳『ctrl+c』鍵 | 吾存,直接退出 |
| Last line mode | 撳『ESC』鍵進入底行模式 |
| 撳細寫『x』鍵 | 向後刪光標字符 |
| 撳大寫『X』鍵 | 向后刪光標字符 |
| 撳『dd』鍵 | 刪光標整行字符 |
| 撳『yy』鍵 | 复制光標行 |
| 撳細寫『p』鍵 | 粘貼係光標上壹行 |
| 撳大寫『p』鍵 | 粘貼係光標下壹行 |

『Linux』命令通過『terminal終端』執行. PuTTY終端遠程登錄SSH.
『Linux』以『樹型結構』組織『資料夾』,『樹型結構』頂端係根目錄. 用『/』表示.根目錄『/』下『資料夾』有各自用庶.『Linux』分配『資料夾』畀佢.
Linux命令由三部分組成.
| prompt Command param1 param2 … |
Linux命令語法, linux區分大細寫. 且細寫.
| prompt | 提示符/前缀, 由linux畀出 |
| command | 命令/指令,linux命令大多係細寫. |
| param | 参數,可能多於壹個. 以吉格分隔 |
每行行頭顯示類提示符,由linux畀出蒞:
| username@hostname:~# |
行頭提示符:
| 提示符: | |
| Username | 當前用戶 |
| @ | 所屬主機 |
| Hostname | 主機名 |
| : | 分隔路徑 |
| path | 當前工作路徑.『~』:用戶主目錄. |
| # | 分隔命令 |
Linux命令
| apt 命令 | ubuntu |
| sudo apt install name | 安裝程式 |
| sudo apt update | 更新本地程式包列表 |
| apt list –upgradable | 列舉本地程式包列表 |
| sudo apt upgrade | 升級冚辦闌已安裝程式 |
| apt search name | 搜索程式包 |
| apt show name | 顯示程式包信息 |
| sudo apt remove name | 移除已安裝程式 |
| sudo apt autoclean | 清理已下載程式 |
| sudo apt autoremove | 清理冇用依賴 |
| pwd | 顯示當前工作目录 ,返回類似『/dev/cpu』 |
| cd / | 訪問根目錄 |
| cd ~ | 訪問用戶主目錄 |
| cd .. | 上一級目錄 |
| cd – | 回褪 |
| cd path | 指定訪間目錄, 例『cd /dev/cpu』 |
| cp sour dest | 复制文檔或資料夾 |
| cp -a sour dest | 复制,保留原有權限. |
| cp -af sour dest | 复制冚辦爛文檔或資料夾,保留原有權限. |
| cp -avf sour dest | 复制冚辦爛文檔或資料夾,保留原有權限.顯示進度. |
| mv sour dest | 移動或改名-文檔或資料夾 |
| mv -f sour dest | 移勳或改名-文檔或資料夾.强行吾使确認. |
| rm path | 刪文檔或吉資料夾 |
| rm -f path | 刪文檔或吉資料夾, 强行吾使确認. |
| rm -r path | 递歸刪-冚辦爛文檔或資料夾. |
| rm -rf path | 递歸强行刪-冚辦爛文檔或資料夾. |
| ls | 列出當前資料夾下冚辦爛『文檔』仝『資料夾』 |
| ls -l | 文檔+資料夾+詳細清單 |
| ls -al | 文檔+資料夾+隱藏文檔+詳細清單 |
| chown param user path | 改『目錄』『文檔』拥有權 |
| user | 帳戶 |
| chown -Rv admin ./* | 祇有root帳號,可以修改其它帳號權限 |
| -R | 递歸執行改拥有權『目錄』『子目錄』『文檔』 |
| -v | 顯示執行過程. |
| chgrp param group path | 改『目錄』『文檔』所屬群組 |
| group | 群組 |
| chgrp -Rv admin ./* | 祇root帳號,可以修改其它群組權限 |
| -R | 递歸執行『目錄』『子目錄』『文檔』改群組 |
| -v | 顯示執行過程. |
| chmod user group other filename | 改『目錄』『文檔』權限 |
| chmod 760 run.log | 改『文檔』權限 |
| 7 | 拥有者user-可讀可寫可埶行 |
| 6 | 群組group-可讀可寫權禁埶行 |
| 0 | 非群組other-禁讀禁寫禁埶行 |
| sudo chmod 777 -R /openwrt | 改資料夾下冚辦爛讀寫權限可讀可寫可埶行 |
| mkdir name | 創建資料夾 |
| rmdir name | 刪除資料夾,資料夾要吉, 有『文檔』仝『資料夾』改用 『rm -r path』 |
齋睇文本
| cat filename | 齋睇文本, 祗讀模式. 通過SSH終端回褪. |
| cat filename | more | 撳『Enter』鍵遂行彈出.
撳『CTRL+C』鍵退出. |
| Tal -n linenum filename | 文本定位 |
| date | 日期 |
| cal | 日歷 |
| shutdown | 閂機 |
| reboot | 重啟 |
| sync | 强行緩存寫入磁碟,冇消息返回.以仿輕機造成文檔損壞. |
| dmesg | 系統啟動信息,通過SSH終端回褪. |
| dmesg | more | 撳『Enter』鍵遂行展示.
撳『CTRL+C』鍵退出. |
| df | 磁碟詳情,以『bit』為單位 |
| df -h | 磁碟詳情,轉換為 『mb』 『gb』單位 |
| free | 記憶體,以『bit』為單位 |
| free -r | 記憶體,轉換為 『mb』 單位 |
| uname | 系統 |
| uname -r | 版本 |
| uname -a | 系統+內核+版本 |
| ps | 系統進程 |
| top | 實時系統進程
撳『CTRL+C』鍵退出. |
| uptime | 工作/運行時長 |
| ifconfig | 有線網路接口信息 |
| iwconfig | 冇線網路接口信息 |
| lspci | PCI/PCIE總線 |
| lsusb | USB總線 |
| lshal | 設備硬件抽象層(HAL) |
| lshw | 系統硬件信息 |
| dmesg | 檢測內核啟動信息 |
| sudo | 獲得系統管理賬號root權限 |
| netstat -lnp | 網路端口 |
| mount | 已挂載分區 |
| fdisk -l | 可用磁碟分區. |
| command –help | 幫助 |
| apk –help | 幫助 |
| find / -name “ttyUSB*” | 搜索含ttyUSB文檔, 區分大細寫 |
| find / -iname “ttyUSB*” | 搜索含ttyUSB文檔, 吾分大細寫 |

『Linux』仝『Windows』相繼係上世未90年代誕生,用慣『Windows』初接觸『Linux』吾慣目錄組織.
係『Windows』系統,磁碟都會分配盤符.1.44磁碟『A:』, WINDOWS系統磁碟『C:』.
係『Linux』系統『USB磁碟』『SATA磁碟』『M.2磁碟』『CD-ROM』…冚辦爛硬件都被分配『資料夾』畀佢.吾分大細寫.
係『Linux』以『樹型結構』組織『資料夾』,『樹型結構』頂端係根目錄. 用『/』表示.根目錄下『資料夾』有各自用庶. 區分大細寫.
| / | 根目錄 |
| /boot | 啟動引導配置, 內核文檔 |
| /dev | 每個硬體設備係『/dev』下分配壹個『資料夾』, 通過『資料夾』下『文檔』訪問硬體設備. |
| /etc | 軟體程式配置檔 |
| /home | 存儲用戶帳號.帳號 『exos』資料夾路徑『home/exos』. |
| /usr/lib | 系統程式配置 |
| /mddia | 媒體設備,『CD-ROM』仝『USB磁碟』係庶訪問 |
| /mnt | 掛載設備 |
| /opt | |
| /proc/sys | 系統運行狀態信息 |
| /root | root帳號目錄 |
| /sbin | root帳號專用程式. |
| /usr | 通用軟體程式 |
| /var | 軟體程式日誌文檔 |


















将『linux』仝幾千『app』測試結合成『ubuntu』. 仝windows吾仝, 『Ubuntu』免費.
係裝『Ubuntu』過程,應得單獨壹隻磁碟,以免引導扇區寫係递庶.特別係M.2磁碟安裝,引導扇區寫入它首隻穩到sata磁碟.
登錄『ubuntu官網』
| https://ubuntu.com/ |
| https://ubuntu.com/download/desktop |
下載桌面版『ubuntu-24.04.2-desktop-amd64.iso』约莫6GB.至小穩隻8GB-USB磁碟蒞刻錄鏡像.
| https://mirror-hk.koddos.net/ubuntu-releases/24.04.2/ubuntu-24.04.2-desktop-amd64.iso |
『balenaEtcher』或『Rufus』刻錄『.iso』鏡像.『Ubuntu』徑已係USB磁碟.
插入USB磁碟.著機撳『DELETE』鍵登入BIOS.以『UEFI: SMI USB DISK 1100,Partition』引導.
| UEFI: SMI USB DISK 1100,Partition 2 |
試用或安装Ubuntu .
| *Try or Install Ubuntu |
等壹陳登錄桌面,但系統存係『USB磁碟』速度慢.
装『Ubuntu』入『M.2磁碟』以提高運行速度.撳下角『Install Ubuntu 24.04.2 LTS』.
| 分區 | 格式 | 掛載 |
| NVME0n1p1 | fat32 | /boot/efi |
| NVME0n1p2 | ext4 | / |







OpenWrt_SSH_PuTTY
OpenWRT-SSH遠程登錄-PuTTY終端
『SSH』全名『Secure Shell』,遠程網絡登錄系統,『shell』係指命令行模式. 『OpenWRT』可能冇顯示器,係自已台電腦,通過『SSH』遠程網絡登錄『OpenWRT』.
查『OpenWRT』IPv4地埗.
| ifconfig br-lan |
例如
| Inet addr:192.168.2:1 |
配置『SSH』,『openwrt』通過『dropbear』實現.
| vim /etc/config/dropbear |
編輯『dropbear』
| config dropbear | |
| option enable ‘1’ | 1:SSH使能
0:禁制 |
| option PasswordAuth ‘on’ | 密碼驗證 |
| option RootPasswordAuth ‘on’ | 允許root賬戶憑密碼登錄 |
| option RootLogin ‘ on ‘ | 允許root賬戶登錄 |
| option Port ’22’ | SSH連接埠默認22 |
| option Interface ‘lan’ | |
| option BannerFile ‘/etc/banner’ | 登錄Logo |
| option SSHKeepAlive ‘300’ | 心跳300 |
| option IdleTimeout ‘0’ | 休閑超時,0禁用. |
設置root賬戶密碼,執行『passwd』
| passwd | |
| Changing password for root | |
| new password: | 填root帳戶密碼 |
| Retype password: | 再填壹次 |
| Password for root changed by root |
重啟SSH
| /etc/init.d/dropbear restart |
下載『PuTTY』輕量級SSH客戶端, 先登入官網
| https://www.putty.org/ |
| https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html |
最新0.83版. 下載『putty.exe』可直執行,仝『installer.msi』安将包.
| https://the.earth.li/~sgtatham/putty/latest/w64/putty-64bit-0.83-installer.msi |
| https://the.earth.li/~sgtatham/putty/0.83/w64/putty.exe |
或者係『Windows10』用命令行模式直接埶行 ssh
| ssh username@hostname |








砌WIFI軟路郵,買WIFI冇線網卡做AP熱點,『Intel-AX210/EB200』閹左祇發射2.4G信號. 改買『MediaTek-MT7925』發射5G信號.
『MT7925』係『M.2-KEY E』接口,插係MVME槽要買『MVME TO M.2 WIFI』轉接卡,因『SUPERMICR X10SDV-4C-TLN2F』得壹條PCIE槽, 留番畀5G模塊.
壹定要下載穩定版『OpenWrt 24.10.1』,就係下載『OpenWrt 24.10.0』搞到WIFI信號時有時冇,.
係『OpenWrt』搜索『MT7925』驅動.
| opkg list | grep mt792 |
安裝『MT7925』驅動.
| opkg install kmod-mt7925-common |
| opkg install kmod-mt7925-firmware |
| opkg install kmod-mt7925e |
| opkg install kmod-mt7925u |
| opkg install kmod-mt792x-common |
| opkg install kmod-mt792x-usb |
| opkg install mt7925bt-firmware |
wifi密碼加密
| opkg install wpa-supplicant | 用戶端模式 |
| opkg install hostapd | AP模式或AD-HOC模式 |
『vim /etc/config/wireless』冇線網絡配置文檔
| wifi-device | 驅動設備名 |
| radio0 | WIFI冇線網卡驅動1 |
| radio1 | WIFI冇線網卡驅動2 |
設備類型
| type | 設備類型 |
| mac80211 | 驅動類型固定為mac80211 |
冇線信道
| channel | 冇線信道 |
| 1~13之間 | 2.4G默認信道1 |
| 36,40,44,48,52,56,60,64,149,153,157,161,165 | 中國產手機限制5G信道,得幾條揀, 吾係手機穩吾到5G-WIFI |
| auto | 自動揀最優信道 |
冇線頻寬htmode
| htmode | 冇線頻寬 |
| HT20 | 20MHz頻寬,支持1-13信道 |
| HT40 | 40MHz頻寬,支持1-7信道 |
| VHT20 | 20MHz頻寬 |
| VHT40 | 40MHz頻寬 |
| VHT80 | 80MHz頻寬 |
冇線协議 hwmode
| hwmode | 冇線协議 |
| 11b/11g/11n | 2.4G |
| 11n/11a/11ac | 5G |
帶寬共存
| ht_coex | |
| 1 | 帶寬20MHZ/40MHZ共存 |
| 0 |
2.4G模式『冇線协議 hwmode』『冇線頻寬htmode』『ht_coex』對應關係
冇線網卡驅動路徑
| path | 冇線網卡驅動路徑 |
| 自動生成 |
閂冇線設备
| disabled | 閂冇線設备 |
| 0 | 禁制wifi |
| 1 | 使能wifi |
地區
| country | |
| US | 美國 |
| GB | 英國 |
| JP | 日本 |
| KR | 韩國 |
| HK | 香港 |
| US | 冇線信道1~12 |
| CN | 冇線信道1~13 |
冇線發射功率
| txpower | 冇線發射功率 |
| 0~20 | 單位dBm |
掃描信道
| noscan | 吾扫描信道 |
| 0 | 扫描信道 |
| 1 | 禁止掃描信道 |
節點名
| wifi-iface | wifi-iface節點名 |
驅動名
| device | wifi-device驅動名 |
| radio0 | 默認2.4G |
| radio1 | 默認5G |
冇線網卡名
| ifname | 冇線網卡名/ifconfig顯示名 |
| wlan0 | Wifi1 |
| wlan1 | Wifi2 |
網絡設備類型
| network | 網絡設備類型,對應網橋 |
| lan | 橋接內網 |
| wwan | 冇線中繼 |
冇線工作模式
| mode | 冇線工作模式 |
| ap | 訪問點模式 |
| sta | 容戶端模式 |
| minotor | 監聽模式 |
WIFI名
| ssid | WIFI名 |
| Openwrt-5G | 最長32字符 |
WIFI密碼加密模式
| encryption | WIFI密碼加密模式 |
| none | 明文 |
| psk | WPA-PSK密文 |
| psk2 | WPA-PSK2密文 |
| psk-mixed | WPA-PSK/ WPA-PSK2混合 |
| psk2+ccmp |
WIFI密碼
| key | 密碼 |
| 12345678 | psk2加密模式:8~64個字符 |
| none加密模式時:密碼冇效 |
隱藏熱點
| hidden | 隱藏熱點 |
| 1 | 隐藏 |
| 0 | 可畀搜索 |
執行『vim /etc/config/wireless』修改WIFI-mt7925冇線網絡配置文檔.
WIFI-mt7925冇線網卡驅動
| config wifi-device ‘radio0’ | WIFI-2.4g冇線網卡驅動,編號0 |
| option type ‘mac80211’ | 驅動類型固定為mac80211 |
| option path ‘pci0000:00/0000:00:01.0/0000:01:00.0’ | mt7925冇線網卡驅動路徑 |
| option band ‘6g’ | |
| option channel ‘auto’ | 冇線信道 |
| option htmode ‘HT80’ | 40MHZ |
| option txpower ’20’ | 冇線發射功率 |
| option country ‘CN’ | 地區 |
| option disabled ‘0’ | 1:禁制wifi
0:使能wifi |
WIFI冇線網卡接口信息.『lan』設備用網橋『br-lan』. 吾用網橋『br-lan』手機連wifi會一直處於『正在獲取IP位址』.
| config wifi-iface ‘default_radion0’ | WIFI冇線網卡接口信息 |
| option device ‘radio0’ | 冇線網卡驅動 |
| option network ‘lan’ | 內網 |
| option mode ‘ap’ | ap |
| option ssid ‘OpenWrt’ | wifi名 |
| option encryption ‘psk2’ | 加密方式 |
| option key ‘12345678’ | 密碼 |
重啟網絡
| service network restart |
冇線wifi配置生效
| wifi |
列出所有無線網絡信息
| iwinfo |
軟路郵與主路郵網線相連, 係手機連『OpenWrt』密碼『12345678』.




『OpenWrt』嵌入式路郵設計Linux系統,市面大部分路郵都係用佢,提供『防火牆』『VPN』『IPv6』『WIFI』『4G/5G』.
依甫係itx臺式電腦將『OpenWrt』,要2網口一個WAN口一個LAN口.
登入『OpenWrt官網』下載穩定版『OpenWrt 24.10.1』,就係下載『OpenWrt 24.10.0』wifi信號時有時冇,5G模塊冇USB,搞左個大頭佛.
| https://downloads.openwrt.org/ |
硬件版本區別
| X86架構 | |
| 64 | 64bit-cpu,2007年後出所CPU都係64BIT. |
| Generic | i586體系, Pentium 4及之後32BIT-CPU. |
| Legacy | i386體系, Pentium 4之前32BIT-CPU- |
| Geode | 定制老舊網絡設備. |
文檔系統
| 文檔系統 | |
| squashfs | 傳統佈局, openwrt系統自帶程式,存儲設定仝程式分區得230mb |
| ext4 | 適合擴容展,後期加裝程式. |
引導標記
| 引導標記 | |
| 標efi | uefi引導-新bios |
| 冇efu | legacy引導-舊bios |
引導模式
| uefi引導 | legacy引導 |
| 新式bios , 圖形介面 | 舊式bios |
| 啟動速度快 | 較慢 |
| 32Bit/64Bit 電腦 | 32Bit電腦 |
| GPT磁碟分區,支緩高達9.4ZB磁碟 | MBR磁碟分區,僅支緩2.1TB磁碟 |
| 支緩USB鍵盤鼠標, 觸控. | 僅支緩PS2鍵盤 |
撳『OpenWrt 24.10.1』->『x86』->『64』
下載『generic-ext4-combined-efi.img.gz』,
用『Physdiskwrite』刻錄『OpenWrt』 鏡像,
將『generic-ext4-combined-efi.img.gz』解壓出『openwrt-24.10.0-x86-64-generic-ext4-combined-efi.img』
磁碟清零
刻錄『openwrt.img』鏡像
安將『OpenWrt』
| passwd | |
| Changing password for root | |
| new password: | 填root帳戶密碼 |
| Retype password: | 再填壹次 |
| Password for root changed by root |
| br-lan | 虛擬設備,內網網口集合 |
| eth0 | 真實設備, 網口0 |
| eth1 | 真實設備, 網口1 |
| io | 虛擬設備,回環設備. |
| wlan0 | 真實設備,啟動wifi後產生 |
| wwan0 | 真實設備,啟動4G/5G模塊後產生 |
| pppoe-wan | 虛擬設備,pppoe撥號上網後產生 |
執行『brctl show』查『br-lan』橋狀態
| brctl show |
『vim』編輯文檔
| 撳『i』或『a』鍵 | 進入編輯模式. |
| 撳『esc』鍵, | 退出綸輯模式. |
| 執行『:wq』撳『enter』鍵 | 儲存後退出,帶冒號. |
| 執行『:q!』撳『enter』鍵 | 吾儲存直接退出. |
網絡配置文檔
| vim /etc/config/network | 有線網絡配置文檔. |
| vim /etc/config/wireless | 冇線網絡配置文檔. |
設備名
| Ifname | 設備名 |
| eth0 | 網口0 |
| eth1 | 網口1 |
協議類型
| proto | 協議類型 |
| static | 靜態IP地圵 |
| dhcp | 動態獲取IPv4地圵 |
| dhcpv6 | 動態獲取IPv6地圵 |
| pppoe | 撥號上網 |
| pptp | 遠程VPN伺服機 |
| 3g | 連接3G/4G冇線電話網絡 |
網卡6字節唯一編碼
| macaddr | 網卡MAC編碼 |
| XX:XX:XX:XX:XX:XX | 6字節唯一編碼 |
type網絡類型
| type | 網絡類型 |
| bridge | 橋接,交換機模式 |
| mac80211 |
首先用eth0網口連上互聯網, 軟路郵與主路郵網線相連,下載相關驅動.
執行『vim /etc/config/network』修改有線網絡配置文檔.
| config interface ‘wan’ | 外網 |
| option ifname ‘eth0’ | 設備名 |
| option type ‘bridge’ | 橋接,交換機模式 |
| option device ‘eth0’ | |
| option proto ‘dhcp’ | 動態獲取IP地圵192.168.1.x |
| option metric ’64’ | |
| option delegate ‘0’ | |
| list ports ‘eth0’ |
| config interface ‘wan6’ | 外網ipv6 |
| option proto ‘dhcpv6’ | |
| option device ‘eth0’ | |
| option type ‘bridge’ | 橋接,交換機模式 |
『lan’內網』設備改用網橋『br-lan』. 吾用網橋『br-lan』手機連wifi會一直處於『正在獲取IP位址』
| config interface ‘lan’ | 內網 |
| option type ‘bridge’ | 橋接,交換機模式 |
| option device ‘br-lan’ | 網橋『br-lan』 |
| option proto ‘static’ | 靜態IP地圵 |
| option ipaddr ‘192.168.2.1’ | 假定主由路郵ip地圵192.168.1.1 |
| option netmask ‘255.255.255.0’ | 掩碼 |
| option ip6assign ’60’ | |
| list ports ‘eth1’ |
壹定要有網橋『br-lan』, 網橋下可加入多接口『wwan』『eth0』『eth1』『…』, 冇左網橋『br-lan』連wifi會一直處於『正在獲取IP位址』
| config device | |
| option type ‘bridge’ | 橋接,交換機模式 |
| option name ‘br-lan’ | 網橋『br-lan』 |
| list ports ‘eth1’ |
網橋『br-wan』
| config device | |
| option type ‘bridge’ | 橋接,交換機模式 |
| option name ‘br-wan’ | 網橋『br-wan』 |
| list ports ‘eth0’ | |
| list ports ‘usb0’ |
重啟網絡, 軟路郵與主路郵網線相連
| service network restart |
執行『ifconfig』指令,如果『br-wan』接口有ip地址『192.168.1.x』,家時連網線可以上網.
| 路郵 | ip |
| 主路郵ip | 192.168.1.1 |
| 軟路郵-wan | 192.168.1.x |
| 軟路郵-lan | 192.168.2.1 |
| 電腦ip | 192.168.2.x |
執行『opkg update』更新安裝包列表
執行『opkg install luci』安裝圖形界面
執行『opkg install luci-i18n-base-zh-tw』OpenWRT漢化
執行『/etc/init.d/uhttpd enable』打開uhttpd服務
執行『/etc/init.d/uhttpd start』讓uhttpd自啟動
連網線電腦打開瀏覽器連接軟路郵192.168.2.1, 登入openwrt後臺
| wifi | 冇線配置生效 |
| iwinfo | 列出所有無線網絡信息 |
| ifconfig | 有線網絡 |
| service network restart | 重啟網絡 |
| reboot | 重啟OPENWRT |
| route | 查路郵 |
| ping ip | Ping 撳『ctrl+z』褪. |





『WISE』係間英國倫敦公司, 標榜即時到賬,匯率低. 『wise』官網『https://wise.com/』
| 名字 | 必須與身份證相同 |
| 姓氏 | 必須與身份證相同 |
| 出生日期 | |
| 手機號碼 |
| 居住國家/地區 | |
| 住址 | |
| 城市 | |
| 郵政編號 |








『IB』盈透證券入金,以『HSBC匯豐』用轉數快FPS入金. 『HSBC』姓名要仝『IB』姓名臺致.
| 存款方式 | 時間 |
| 通過eDDA的即時本地轉帳 | 即時完成至幾粒鐘内
從香港銀行賬戶進行即時轉帳 |
| 銀行-經紀商轉帳 | 1-3個工作日 |
| 銀行轉帳 | 1個工作日 |
| 從Wise餘額轉帳 | 幾個小時可以交易 |
| 郵寄支票 | 支票到達IBKR後2個工作日開始交易 |
| 通過轉數快(FPS) | 即時完成至幾粒鐘内
從香港銀行賬戶進行即時轉帳 |
| 轉帳證券
|
建議用轉數快(FPS)入金
| 通過轉數快(FPS) | |
| 保存存取款指令信息? | 是 |
| 您的銀行 | 004-HSBC |
| 銀行代碼 | HSBC-004 |
| 分行代碼 | ATM卡或銀行賬單上的前三位即爲分行代碼 |
| 銀行代碼 | 銀行卡凸字 |
| 爲您要保存的存取款指令命名 | 求其或填IB賬號U開頭 |
| 存款金額 | 最低10,000.00 |
撳『獲取指令』
係HSBC手機APP登記受款人
| 别名 | 填『IB』 |
| 新受款人戶口所屬國家或地區 | 揀『香港』 |
| 新受款人戶口類型 | 揀『快速支付系统識別碼』 |
| 快速支付系统識別碼 | 填『166885715』 |
| 轉賬至此受款人戶口每日限額 | 最高填『3000000』 |
隔日等HSBC确認,係HSBC手機撳『轉數快』
| HKD轉數快(FPS)識別號碼 | 166885715 |
| 輸入金額 | 填翻上面金額 |
| 備註 | 填IB賬號U開頭 |
| 致收款人的信息 | 填IB賬號U開頭 |


















世人祈知『巴菲特』係股神,卻忽略佢係美國發達,買美國股票,買美國公司,買美國未来,買美國贏.『IB盈透證券』纯正美國血统, 插美國佬支花旗.
登入『Interactive Brokers LLC盈透證券有限公司』官網,撳『開立賬戶』->『開始申請』,如果中途中斷撳『開立賬戶』->『繼續完成申請』.
| 建立用戶名和密碼 | |
| 電郵地埗 | 開outlook郵箱 |
| 用戶名稱 | 僅允許小寫字母和數字
長度吾少於9個字符 至少包含3個字母 |
| 密碼 | 吾得與用戶名相同
8至40位字符長度 至少包含1個字母 至少包含1個數字 |
| 國家/地區 | 有稅務協定國家可免30%稅 |
IB 發确認電郵, 撳『确認電子郵箱』
選擇賬戶類型
撳『個人經紀賬戶揀』->『個人』->『由一名賬戶持有人所有的賬戶』
鍵盤輸入語言
| 輸入語言 | 輸入語言係申請過程中輸入信息語言,壹經選擇有法修改.輸入語言獨立於顯示語言,顯示語言可隨時改變. |
填『基本信息』
| 聯絡資料 | |
| 姓 | 證件上『姓』 |
| 稱呼 | 求其 |
| 名 | 證件上『名』 |
| Last Name | 證件 『名』拼音 |
| First Name | 證件 『姓』拼音 |
| 地址(第一行) | 證件地址 |
| 地址(第二行) | |
| 城市 | 證件城市 |
| 郵區編號 | |
| 我的郵寄地址與此不同 | 吾使理 |
| 我的國籍/戶籍所在地與中國不同,或我在前述國家/地區以外還有其它國籍。 | 吾使理 |
| 我出生於中國之外 | 吾使理 |
| 電話號碼 |
| 個人資料 | |
| 出生日期 | 與身份一致 |
| 婚姻狀況 | 照填 |
| 供養人數 | 照填 |
| 稅務居住地 | 與身份一致 |
| 納稅識別號碼 | 與身份一致 |
| 我有納稅人識別號 | 勾 |
| 您的证件有有效期限吗 | 與身份一致 |
| 身份證明 | 您在下方身份證明上輸入的姓名必須與您之前輸入的姓名完全一致。 |
| 簽發國家 | |
| 文件類型 | 居民身份證號碼(RIC)(優先) |
| 國民身份證號碼 | 身份證號碼 |
| 您的證件有有效期限嗎? | |
| 到期 | 身份證到期日 |
| 雇傭 | 潛在利益 |
| 受雇狀況 | 受雇 |
| 您或您的任何直系親屬是否受雇於任何經紀交易商、投資顧問、期貨佣金商、對沖基金、交易所或其它金融服務公司(即“金融公司”)、或在該等機構進行過登記? | 否 |
| 僱傭關係 | |
| 完整的雇佣單位名稱 | 職工卡公司名 |
| 國家/地區 | |
| 地址(第一行) | 職工卡公司地址 |
| 地址(第二行) | |
| 城市 | |
| 州/省 | |
| 郵區編號 | 吾知填市郵編 |
| 業務性質 | 照填 |
| 職業 | 照填 |
| 职位(请填写具体的岗位名称) | 照填 |
| 財富來源 | 收入 |
| 津貼/配偶收入 | |
| 殘疾/離職補償/失業金 | |
| 工作收入 | 勾 |
| 繼承/禮物 | |
| 利息/股息收入 | |
| 市場交易利潤 | |
| 養老金/政府退休福利 | |
| 房産 | |
| 其它 |
| 基礎貨幣 | |
| 基礎貨幣 | 建議揀美金USD,之後改隔且生效 |
| 安全問題 | |
| 問題1 | |
| 問題2 | |
| 問題3 |
配置交易賬,確定交易資格
| 賬戶類型 | |
| 現金 | 現金帳戶是基於您賬戶已結算現金值購買資產, 現金帳戶不能貨款購買資產 |
| 保證金(最常見) | 保證金帳戶是基於規則并可使用未結算資金購買資產 |
| 投資组合保證金 | 投資组合保證金賬戶是以風險為基礎并需要取得期權許可, 以及至少擁有11萬美元浄清算價值. |
資産值,買債券資産淨值要高於20000
| 收入和資産值 | 請在下面提供財務信息,我公司合規部門將通過這些信息確定您是否有資格交易現在或將來所選的投資産品。 |
| 年度淨收入(USD) | 40000~45000 |
| 資産淨值(USD) | 20000~50000(債券要高資産值) |
| 流動資産淨值(USD) | 20000~50000 |
投資目標和交易目標,將决定獲批交易産品類型。
| 交易的産品類型 | 風險承受能力 |
| 資本保值及創收 | 低 |
| 增長 | 中等 |
| 對沖 | 高 |
| 從活躍交易和投機中盈利 | 超高 |
交易經驗與許可, 將决定您可獲批交易的投資産品.
| 交易經驗與許可 | |
| 債券 | 添加 |
| 股票 | 添加 |
| 貨幣/外匯 | 添加 |
規管信息
| 賬戶的所有者或賬戶中列出的其他非所有者是否是上市公司的雇員? | 否
|
| 賬戶的持有人或其它列出的非持有人是否“控制”了任意上市公司? | 否
|
| “控制”指直接或間接擁有 對一家公司管理和政策的决策權,不論是通過持有有投票權的股票、通過訂立合約,還是通過其它方式。 | 否
|
| 任何擁有一家公司10%以上的股權、或擔任公司的高管、董事的人士均被認爲“控制”該公司。 | 否
|
賬戶附加功能
| 賬戶附加功能 | |
| 股票收益增強計畫
|
借股票畀人沽空, 收息. |
| 您是由何種途徑得知我們的? | YOUTUBE |
| 協定優惠資格 | |
| 我申明,我是下方國家的居民,屬於美國與該國之間達成的所得稅協定的作用范圍之內 | 祗交10%稅 |
| 我不能享受美國稅務協定優惠。 | 要交30%稅 |
| 簽名 | 祗能鍵盤輸入,吾得手寫或复制 |
閱讀&簽署協議
| 賬戶信息 | |
| 本人同意, 上述每一項聲明均準確無誤, 如有不實受偽證罪處罰, 且本人確認已閱讀W-8BEN表格內信息(包括任何預先填寫信息) 信息均準確無誤 | 是 |
| 本人同意所有稅務表格均通過電子形式而非紙質形式收集和發送, 包括通過賬戶管理收集和發送 | 是 |
| 簽名 | 祗能用鍵盤輸入, 吾得手寫或复制 |
撳『創建存款通知』
| 創建存款通知 | 入金 |
入金
| 轉數快(FPS)入金 |
入金後掃描證件正反面,通過郵件上傳畀IB.等兩分鐘後覆翻你收到, 話盡快審核.
| IB郵箱 | newaccounts@interactivebrokers.com |
| 主題行註明賬戶號碼: | U開頭 |
| 附件 | 證件正反面 |
冇意外IB當日開通,通過網頁或手機登錄.
下載盈透平台
| 盈透證券平台 | 难度 | 操作系統 |
| 交易者工作站(TWS) | 旗艦 | Win64 |
| 盈透卓尚平台 | 入門 | Win64 |
| IBKR移動端 | 資深交易 | Android |
| IBKR GlobalTrader | 简洁流畅 | Android |
| IB網關 | ||
| 網頁端 | 無需下載 | Web |
建議下載交易者工作站(TWS)離線穩定版


『physdiskwrite』刻錄『.img』鏡像, 佢幾乎萬能. 支緩『sata磁碟』『usb磁碟』.
登錄『physdiskwrite』官網. 佢有『圖形版』仝『命令行版』.
| https://m0n0.ch/wall/physdiskwrite.php |
| https://m0n0.ch/wall/downloads/physdiskwrite-0.5.3-PhysGUI-bundle.zip |
| https://m0n0.ch/wall/downloads/physdiskwrite-0.5.3.zip |
磁碟清零
刻錄『.img』鏡像



當插USB磁碟提示要格式化, 可能係磁碟分區遵至. 此法經已修复多隻USB磁碟.


『Additional Networks』插件 簡稱AddNet.任意實時融合至多5個LoRA模型, 權重係『0~0.5』LoRA模型先發揮作用. LoRA觸發詞要加到prompt.
| https://github.com/kohya-ss/sd-webui-additional-networks |
裝『Additional Networks』插件
| https://github.com/kohya-ss/sd-webui-additional-networks.git |
指定LoRa模型資料夾路徑
| C:\stable-diffusion-webui\models\Lora |
指定LoRa模型權重









靚仔『吳世系』,『吳老竇』係富農, 近排米價飛升.『吳老竇』身家瀑漲. 『世系』本蒞讀扑扑齋. 『吳老竇』送『世系』去羊城讀中學.
『世系』日日落課後仝老友去海角紅樓-雪屐場-滑雪屐. 壹晚雪屐場,有拾捌玖岁後生女,面圓圓大眼睛,笑起蒞两粒酒窩 , 著黑褶裙,白衫.白絲襪,紮辮孖仔.
『世系』係佢側近飛過, 後生女媚笑: 靚仔你甘叻, 教下我.
靚女采佢『世系』: 得得,吾嫌糞咪壹齊玩.
靚女伸手扶『世系』, 两人飛蒞飛去, 『世系』老友: 衰仔行桃運.
两人直到拾壹點.『世系』提出喫宵夜,两人拖住手仔. 係『海角紅樓』搭舢板去『荔枝灣』, 係菜艇宵夜, 傾落, 女仔呌吳玉冰. 屋企係惠愛中路, 老竇係國泰對面開電器鋪, 係第十鋪有間金鋪. 『世系』心諗識到有錢女, 仲吾財色兼收. 竭力討好, 一晚使五百萬.
喫宵夜後送『玉冰』翻屋企.行至惠愛中路, 『玉冰』壹指:我老竇間電器鋪.
『世系』壹睇規模極大,衹係閂左門
行到惠愛西路, 『玉冰』壹指紅樓: 我屋企到啦, 老母家教好嚴. 畀佢睇到甘夜仝男朋友翻屋企, 吾便.
『世系』信到拾足. 約定聽晚新華戲院頭揚. 當睌心羅羅攣, 典床典席. 銀牙咬碎.
翌晚, 『世系』著西装, 載手錶戒指港紙, 博女仔歡心. 行『新華戲院』. 『玉冰』企係門口,手表手袋成個有錢女.拖手入摥睇戲,拾壹點散摥. 拖住手仔 行去紀念堂轉入條僻静小行, 咿挹.
突然有两大隻佬擁出,撥槍: 郁親打瓜.
两大隻佬将『玉冰』『世系』手錶手鏈港紙搶去, 仲剥埋『世系』套新西装.
之後兩個係街撞見,『玉冰』詐帝吾識『世系』.
古仔原著『我是山人』.
『玉冰』即係『玉冰烧』,『烧』音近『肅』.
『世系』即係『世系假』,『假』音近『賈』.
我估女仔姓『肅』, 男仔姓『賈』.


上次張『Lucky2上網卡-中台澳5GB-香港10G』用曬5GB高速後,低速後用吾够壹個月,張卡切底用吾到.祈有買過張.
『Lucky2上網卡-港澳中台25GB高速數據』.25GB高速用曬後降為512kbps低速任用, 140紋. 希望可以用一年.
插卡後開通『數據漫遊』.即插即用吾使實名登記.
你必須登入才能發表留言。