








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









家時『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乜事都冇.







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位數字, 吾含分行編號, |






維護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 和個人資料。 |

『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; } |

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; } |














上次粒『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 |

『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』褪. |


『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紋. 希望可以用一年.
插卡後開通『數據漫遊』.即插即用吾使實名登記.
首先利用『Stable Diffusion WebUI』生成人像同背景.
| Mercury Playback Engine GPU Acceleration | GPU加速 |
| Mercury Playback Engine Software Only | CPU加速 |
| Timecode時間碼 | |
| Feet+frames 16mm | 16mm菲冧 |
| Feet+frames 35mm | 35mm菲冧 |
| Frames畫格 | 祗計影片格數量 |
| Audio Samples | 音頻采樣(時:分:秒:幀) |
| Milliseconds | 亳秒(時:分:秒:亳秒) |
| DV | DV摄录機 |
| HDV | HDV摄录機 |
| Documents文檔 | 用戶檔䅁夾 |
| Same As Project項目 | 工程路徑 |
| Custom自定 | 自定檔䅁夾 |
| C:\Program Files\Python310\Scripts\transparent-background-gui.exe |
| 格式Format | H.264 |
| 預設PRESET | Youtube 720p HD |


Adetailer自動檢測人臉,針對人臉自動生成遮罩,自動重繪修復臉形扭曲.一氣呵成, 吾使人工幹預.
| https://github.com/Bing-su/adetailer |
| https://github.com/Bing-su/adetailer.git |
| CD C:\stable-diffusion-webui\extensions\ |
| git clone https://github.com/Bing-su/adetailer.git |
| C:\stable-diffusion-webui\extensions\sd-webui-animatediff |
| C:\stable-diffusion-webui\tmp\sd-webui-animatediff |
勾ADetailer激活
揀Detection model检测模型,8s比8n說耗時長,修圖效果更佳.
| Detection model检测模型 | |
| Face_yolov8n.pt | 檢測重繪人面 |
| Face_yolov8s.pt | 檢測重繪人面 |
| Hand_yolov8n.pt | 檢測重繪手 |
| Person_yolov8n-seg.pt | 檢測重繪整個人 |
| Person_yolov8s-seg.pt | 檢測重繪整個人 |
| Yolov8x-worldv2.pt | |
| Mediapipe_face_full | 檢測重繪人臉 |
| Mediapipe_face_short | |
| mediapipe_face_mesh | |
| mediapipe_face_eyes_only | 檢測重繪人眼 |
通過1st,2nd,3rd,4th, 叠加多個模型檢測并重繪














注册『WhatsApp』,要HK電話冧靶, SIM咭可『收短信』同埋『上網』流動數據.















注冊Google帳號即注冊Gmail郵箱,要諗定個名6字母,仲畀人注册到.仲有畫埋定logo 解像512px*512px. 揀『源界明朝』體. Google公司條列定明Gmail郵箱閑2年注消

鴨寮街Lucky2上網卡,冇電話冧靶,自然冇得接打電話,冇得收發短信.插卡後開通『數據漫遊』.即插即用吾使實名登記.
香港10GB高速數據,中台澳5GB高速數據.用曬後降為低速任用,即係365日冇限數據,鴨寮街價70蚊,SIM卡+卡針.
張卡用曬5GB高速後,低速後用吾够壹個月,張卡切底用吾到.
部主力機插左雙卡,手頭有部老竇舊手機,開熱點畀屋企手機電腦上網,等遲D先買插sim卡wifi郵路.實测youtube係畫質240p流畅.
電腦

加時電腦腦冇配DVD,機箱冇5.25寸口,取而代之係家用NAS伺服機,16TB容量够存幾千DVD碟.用『FFmpeg』將DVD入面VOB轉MP4. 例
| G:\VIDEO_TS\VTS_01_1.VOB |
| ffmpeg -i G:\VIDEO_TS\VTS_01_1.VOB -c:v libx265 -c:a aac -preset medium -crf 23 D:\OUTPUT.MP4 |
| ffmpeg -i G:\VIDEO_TS\VTS_01_1.VOB -c:v h264_nvenc -c:a aac -preset medium -crf 23 D:\OUTPUT.MP4 |
用上面指令,壓肆條片, 『H.254』畀『H.265』大肆倍.
| H.254 | H.265 | 片長 | |
| 小念頭.MP4 | 660 MB | 119 MB | 46:11 |
| 木人桩.MP4 | 669 MB | 114 MB | 43:44 |
| 尋橋.MP4 | 783 MB | 142 MB | 51:08 |
| 標指.MP4 | 770 MB | 132 MB | 50:23 |
| 参式簡介 | |
| -i | 輸入檔 |
| -c:v | 視頻編碼 |
| -c:a | 音頻編碼 |
| -preset | 编码速度和质量 |
| -crf | 視頻編碼質量 |
| 視頻編碼 -c:v | |
| flv | 速度快,視頻文檔大 |
| vp6 | |
| libx264 | 同等清晰度下,视频文檔細,缺点係转换慢. |
| h264_qsv | Intel-GPU 硬件编码 |
| h264_nvenc | NVIDIA-GPU 硬件编码 |
| h264_amf | AMD-GPU 硬件编码 |
| h264_vaapi | Intel AMD NVIDIA-GPU硬件编码 |
| libx265 | 比264壓缩仲高 |
| 音頻編碼 -c:a | |
| mp3 | 速度快,視頻文檔大 |
| aac | 比MP3音檔細30% |
| 編碼 -preset | 编码速度和质量之间权衡 |
| ultrafast | 編碼速度最快,輸出質量最較低。 |
| superfast | 編碼速度飛快 |
| veryfast | 編碼速度飛快 |
| faster | 編碼速度較快 |
| fast | 編碼速度較快 |
| medium | 默認預設,平衡編碼速度和質量 |
| slow | 編碼速度較慢,輸出質量較高. |
| slower | 編碼速度更慢,輸出質量更高. |
| veryslow | 編碼速度最慢,輸出質量最高. |
| 視頻編碼質量-crf | |
| 0 | 無損壓縮 質量最高 文檔最大 |
| 18 | 視覺無損 質量非常高 文檔大細適中 |
| 23 | 默認值 平衡質量和文檔大細 |
| 51 | 質量最低 文檔最小 |



超微X10SDV簡化板,缺两個千兆口,有两個萬兆口.CPU係『D-1521』,插两條『32GB-2R*4』,著機自檢耐.
超微底板有5個藍色SATA口, 1個橙色SATA口. 仝供電有關.橙色SATA口吾使額外供電,靠第7PIN供電.藍色SATA口靠額外5V供電.
網卡芯片散熱阻擋M.2散熱,唯有用冇下托架散熱,用銅箔胶紙固定.
超微主板有前置面板插口,『超微機箱』皆有止插口Front panel Header.
有兩個『USB2.0-9Pin』,臺個左上邊,另臺個例右下邊.
祗适宜做NAS, 冇『USB3.0-19PIN』吾岩做Route.

本蒞諗住係『truenas』,用虛擬機装『Windows10』做『下載機』.實制未能充份利用CPU同Memory.更好係直接装『Windows10』.摆係角落用WIFI做冇線『下載機』.
配置都係淘汰件.最衰『ITX機箱』密吾透氣, 粒『XEON E5-2630LV3』係幾分鐘內超過壹百度.裝『AVC 9025』疏風.拆com口擋版透氣.裝『AVC 5020』直吹CPU.
| 下載機 | 配置 |
| 火牛 | 臺逵flex-500w |
| CPU | INTEL XEON E5-2630LV3 |
| CPU散熱 | SOCKET2011-纯銅散熱風扇 |
| CPU風扇 | AVC 5020 |
| 底板 | 雜牌X99-ITX |
| 機箱 | 3槽ITX機箱 |
| WIFI | Intel Wi-Fi 7 BE200 |
| Memory | SAMSUNG 32GB DDR4 2400T |
| HDD | SAMSUNG SM961 256GB |
| SSD | SAMSUNG 1000GB |
| 顯卡 | MSI GT710 1G |
| 下載機 | 配置 |
| 火牛 | 臺逵flex-500w |
| CPU | INTEL XEON E5-2630LV3 |
| CPU散熱 | SOCKET2011-纯銅散熱風扇 |
| CPU風扇 | AVC 4020 |
| 底板 | 雜牌X99-ITX |
| 機箱 | 3槽ITX機箱 |
| WIFI | Intel Wi-Fi 7 BE200 |
| Memory | SAMSUNG 32GB DDR4 2400T |
| HDD | SAMSUNG SM961 256GB |
| SSD | SAMSUNG 1000GB |
| 顯卡 | MSI GT710 1G |








係舊時網卡附有『3pin-WOL』插主板,實現『網絡喚醒』, 好彩依時主板附帶網口吾使『3pin-WOL』線. 『網絡喚醒』通過網線發送『喚醒魔術包』將『休眠』『睡眠』『閂機』電腦呌醒, 『閂機』後呌吾醒,可能Windows10電源管理引起.冇線WIFI吾得『網絡喚醒』,有線網卡先得『網絡喚醒』.
係主板BIOS設置『網絡喚醒』
Windows10網卡設置
Windows10電源選項,混合式關機停用 WOL.
Windows10電源選項
Windows10網絡喚醒
| 睡眠(S3) | |
| 休眠(S4) | |
| 關機(S5) |





臺『ITX機箱』密吾透氣,粒『XEON E5-2630LV3』係幾分鐘內超壹百度.之前買拆機銅底鋁片散熱,打印風扇支架.裝『AVC 5020』直吹CPU.冚埋盖免强吾死機.
係網買『AVC 5020』睇蒞係拆機,線極短. 標『0.25a』但係噪聲大.



上世紀末已有電腦摄像頭,一直冇買蒞玩,前排買過中古『Microsoft LifeCam Studio』條線根斷退貨.後蒞睇中Logitech摄像頭『MX BRIO』同『MX BRIO705 for Business』.包装吾同性能冇分别,
『MX BRIO』可用『Logi Options+』『Logitech G HUB』『Logi Tune』設置. 建議用『Logi Tune』.
壹定要插係『USB3.0-TYPE C』吾係吾上4K,『相片品質』『8.3MP 16:9(3840*2160)』, 『影片品質』『2160p 16:9(30fps)』.
插係『USB2.0』『相片品質』得翻『2.1MP 16:9(1920*1080)』,『影片品質』得翻『1080p 16:9(30fps)』.
| Logi Options+ |
| https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.exe |
| Logitech G HUB |
| https://download01.logi.com/web/ftp/pub/techsupport/gaming/lghub_installer.exe |
『MX BRIO705 for Business』要用『Logi Tune』.
| Logi Tune |
| https://software.vc.logitech.com/downloads/tune/LogiTuneInstall.exe |



雜牌ITX機箱買蒞諗住做『影音機』,肆面密吾透氣.得『4020風扇』抽風.貪佢有3條槽.
『RYZEN5-1500X』+『原裝幽靈風扇』仲免强頂得住. 換左『XEON E5-2630LV3』+『纯銅散熱』+『猫頭鷹NF-A6x25』慶過辣雞.幾分鐘內超百度.两粒U都係功耗60w,睇蒞此類機箱CPU極限60w.
加裝两個『AVC 9025』疏風.冚辦闌COM口擋版拆蒞透氣.裝埋『AVC 12025』直吹CPU.




使Windows10作為『網盤』『BT』下載機, 再蒞用『Microsoft 遠端桌面』
遠程控制下載機.
『下載機』開啟遠端桌面
『下載機』設定電源與睡眠




新買『SEAGATE-16TB』同之前剩低两個组成raid0,插两『SEAGATE-16TB』. 同舊版本『trueNAS』有小小吾同.
通過網络訪問NAS『Sharing共用』
| Stripe | Raid0 |
| Mirror鏡像 | Raid1 |
| Raid-Z | Raid5 |

Stable_Diffusion_share
Stable Diffusion外網訪問–share
之前利用『–listen』係內網訪問『Stable Diffusion』電腦,利用『–share』係外網訪問『Stable Diffusion』.
| C:\stable-diffusion-webui\webui-user.bat |
| set COMMANDLINE_ARGS=–share |
| https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_windows_amd64.exe |
| C:\stable-diffusion-webui\venv\lib\site-packages\gradio |
| https://684da9579597aa77c4.gradio.live |
| 1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_windows_amd64.exe |
| 2. Rename the downloaded file to: frpc_windows_amd64_v0.2 |
| 3. Move the file to this location: C:\stable-diffusion-webui\venv\lib\site-packages\gradio |
| This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces) |



『ControlNet』含『插件』『模型』分開下載.
『Stable Diffusion』裝『插件』需編輯『webui-user.bat』,加入命令行参式『–enable-insecure-extension-access』啟用插件訪問.
| C:\stable-diffusion-webui\webui-user.bat |
| set COMMANDLINE_ARGS=–listen –enable-insecure-extension-access |
下載插件方式1:
| https://github.com/Mikubill/sd-webui-controlnet.git |
下載插件方式2:
| https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json |
| C:\stable-diffusion-webui\extensions\sd-webui-controlnet |
| C:\stable-diffusion-webui\tmp\sd-webui-controlnet |
『雙精度模型』『ControlNet-v1-1』
| https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main |
下載『ControlNet』雙精度模型.
『單精度模型』
| https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main |
下載『ControlNet』單精度模型.
下载支持SDXL1.0-ControlNet模型
| https://huggingface.co/lllyasviel/sd_control_collection/tree/main |
下載『ControlNet』SDXL1.0模型
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/diffusers_xl_canny_full.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/diffusers_xl_depth_full.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ioclab_sd15_recolor.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ip-adapter_sd15.pth?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ip-adapter_sd15_plus.pth?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/ip-adapter_xl.pth?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_blur.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_blur_anime.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_blur_anime_beta.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_canny.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_canny_anime.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_depth.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_depth_anime.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_openpose_anime.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_openpose_anime_v2.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/kohya_controllllite_xl_scribble_anime.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_canny_128lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_canny_256lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_depth_128lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_depth_256lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_recolor_128lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_recolor_256lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_sketch_128lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sai_xl_sketch_256lora.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_depth.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_depth_faid_vidit.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_depth_zeed.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/sargezt_xl_softedge.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_canny.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_depth_midas.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_depth_zoe.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_lineart.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_openpose.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_diffusers_xl_sketch.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_xl_canny.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_xl_openpose.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/t2i-adapter_xl_sketch.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/thibaud_xl_openpose.safetensors?download=true |
| https://huggingface.co/lllyasviel/sd_control_collection/resolve/main/thibaud_xl_openpose_256lora.safetensors?download=true |
將下載『.pth模型』『.yaml描述』『.safetensors模型』复制至models檔䅁夾
『C:\stable-diffusion-webui\extensions\sd-webui-controlnet\models』
| 模型標記 | 模型版本 | 品質 | SD版本 | 預處理 | 文檔擴展名 |
| control | v11-1.1版 | e實驗品 | sd15 | ip2p | .pth模型 |
| v11f1修正版1 | p正品 | sd21 | .yaml描述 | ||
| u半成品 | .safetensors模型 |
下载VAE模型
| https://huggingface.co/stabilityai/sdxl-vae |
| sdxl_vae.safetensors |
擺係
| C:\stable-diffusion-webui\models\VAE |
係『txt2img』『img2img』下側『ControlNet』
| Enable使能 | 勾選後撳『ControlNet』先啟用. |
| Low VRAM低顯存 | 顯存細過4GB,勾選 |
| Pixel Perfect完美像素 | 自動匹配解像,實現最佳效果 |
| Allow Preview | 允許預覽 |
| Effective Region Mask有效區遮擋 | |
| Upload independent control image上傳獨立控制影畫 | |
| Preprocessor預處理 | |
| Model模型 | |
| Control Weight權重 | ControlNet對影像影響值, 權重值設0.6~1.1 |
| Starting Control Step | 開始介入時機,默認0,叢開始影響影像. |
| Ending Control Step | 結束介入時機,默認1,對影像影響至結束 |
| Annotator resolution | 影像解像 |
| Canny-Low threshold | 值越低越細致 |
| Canny-High threshold | 值越高越粗糙 |
| Control類型 | |
| all | 冚辦闌 |
| Canny | 硬邊緣 |
| Depth | 深度 |
| IP-Adapter | 圖生圖 |
| Inpaint | 局部重繪 |
| Instant-ID | |
| InstructP2P | 指導圖生圖 |
| Lineart | 線稿 |
| MLSD | 直線 |
| NormalMAP | 法線貼圖 |
| OpenPose | 姿勢 |
| Recolor | 重新上色 |
| Reference | 引用 |
| Revision | 修正 |
| Scribble | 涂鴉 |
| Segmentation | 語義分割 |
| Shuffle | |
| SoftEdge | |
| SparseCTRL | |
| T2I-Adapter | 文生圖 |
| Tile | 平鋪 |





中古『NETGEAR® GS108』得8網口,諗住買16口『NETGEAR® GS116EV2』.两百幾紋.
『NETGEAR』網口左右各壹眼LED燈.左燈著『100m/bps』带寬,右燈著『10m/bps』带寬, 左右燈著『1000m/bps』带寬.
電腦網卡左燈著係『通電』燈,右燈係信號指示燈.
點知『GS116EV2』有壹個網口得『100m/bps』带寬,可熊係網線造成,重新夾CAT8頭.也可能另壹邊網卡『100m/bps』带寬造成,『JBL-L75MS』係『100m/bps』带寬.








本蒞諗住買『惠威M-80W』,聽講質量麻麻一直冇落手.
睇中『JBL-L75MS』, 兩個5.25寸低音, 兩個1寸高音, 壹個4寸中音. 總合係單壹箱內.搞特價4798果斷落手.
順風寄蒞,三重紙箱, 『音箱』長790MM摆吾入書架.
附件有『電池』『摇控』『勾』『指南書』『電線』. 冇畀『3.5MM音頻線』, 好在支持『RJ45網線』『WIFI』『USB線』『藍牙』
『藍牙』連線
『AUX3.5MM』音箱線
Windows10藍牙連線-吾知係咪藍牙驅動造成,間歇冇聲斷聲,後蒞買两頭3.5MM插頭連線.
『WLAN』網口
插網線後,通過手機電腦連線『192.168.1.5』,有可能係其它ip,登錄『音箱』後台. 可以連『wifi』.
『USB』口
插USB線冇反應,事因佢插USB磁碟.
連『WIFI』
插網線後,通過手機電腦連線『192.168.1.5』
『SFX』聲場增強
摇控『SFX』鍵-加强室內立體聲寬廣聲場,冇效果.
『接地』
有獨立接地口,閉環接地線,屋企接地係邊?
『低音』BASS CONTOUR
『低音調節』撥『-3DB』加重低音輸出. 聽人聲吾使撥.




有舊『ATX火牛』230W, 諗住用係『B450-ITX』配『RYZEN5-1500X』得60W岩岩够. 但係舊『ATX火牛』20pin. 冇左4pin插係『B450-ITX』照樣著機.多出4pin分别係『3.3v』『5V』『12V』『地』. 理論蒞講通過係飛線增加『4PIN』.網有20PIN轉24PIN線,直頭吾著機,好彩冇燒底板.





新買ITX機箱諗住用翻『益衡FLEX-600W火牛』, 點知装得『atx』同『sfx』火牛, 唯有買『益衡SFX火牛』總功率750瓦,『SFX』同係為『itx』細機箱設計, 方體更适合係細機箱.
配線齊但係主板24PIN偏短,後蒞買30CM長24PIN駁線.且功耗下火牛風轉减小噪聲.
㸃知雜牌『X99-itx』掉失『M.2-SSD』, 以為係火牛引起.又再買『EVGA SFX 650W』㸃知仲衰. 後蒞换左amphenol-sata線先搞掂.




壹臺『Stable Diffusion』電腦,可以有多塊『NVIDIA-GPU顯卡』,發熱噪聲犀利, 唯有擺係機房仔,係內網用『手機』『平板』『電腦』訪問『Stable Diffusion』.
| C:\stable-diffusion-webui\webui-user.bat |
| set COMMANDLINE_ARGS=–listen |
係win10仲要防火牆加網埠監聽.

更新『AMI-BIOS』有『AFUWIN』同埋『AFUDOS』, 但係『AFUWIN』吾支緩『win10』, 得翻『AFUDOS』 .
| 示例 | |
| AFUDOS.EXE BIOS.BIN /0 | 導出BIOS |
| AFUDOS.EXE BIOS.BIN /P | 寫入MAIN BIOS |
| AFUDOS.EXE BIOS.BIN /B | 寫入啟動块Boot Block |
| AFUDOS.EXE BIOS.BIN /santa | 强制寫BIOS |
| AFUDOS.EXE F BIOS.BIN | 强制寫BIOS |

『華南X99-F8D Plus』開機蓝屏『TeeDriverW8x64.sys』, 可禁節能模式『CPU C3/C6』修复,但系冇左『睡眠模式』.諗住試更新BIOS修复.但系雜牌主板『Q-FLASH』冇『BIOS』更新程式.更新『AMI-BIOS』用『AFUDOS.EXE』,係Win10冇DOS啟動磁碟,利用『Rufus』制『MS-DOS』開機磁碟. 同『Etcher』壹樣, 但係『Rufus』內含『MS-DOS』同『FreeDOS』映像.
登入『http://rufus.ie』下載『rufus-4.5.exe』.
| http://rufus.ie |
| https://github.com/pbatard/rufus/releases/download/v4.5/rufus-4.5.exe |

當睇到下面信息『Stable Diffusion』已装掂,但係缺『基礎模型』.
| No checkpoints found. When searching for checkpoints, looked at: |
| – file C:\stable-diffusion-webui\model.ckpt |
| – directory C:\stable-diffusion-webui\models\Stable-diffusion |
| Can’t run without a checkpoint. Find and place a .ckpt file into any of those locations. The program will exit. |
先去『civitai.com』下載模型
| https://civitai.com/ |
| https://huggingface.co/ |
係『Stable Diffusion』左上角揀基礎模型.擴展名『.safetensors』『.ckpt』, 大細係6GB~4GB之間. 『基礎模型』吾可叠加.
『基礎模型』擺係指定檔案夾.
| Model模型 | 檔案夾位置 |
| Checkpoint『.ckpt』 | C:\stable-diffusion-webui\models\Stable-diffusion |
| .safetensors | C:\stable-diffusion-webui\models\Stable-diffusion |
『基礎模型』添加封面,圖檔名與模型名壹致,同『基礎模型』模型擺係壹起,之後撳『refresh page』刷新.
| 基礎模型 | model.safetensors |
| 封面圖 | model.png |



『Stable Diffusion』開源AI划畫畵程式. 輕易係網络下載,部署係電腦行.
| https://github.com/AUTOMATIC1111/stable-diffusion-webui |
『提示詞』畀『Clip』解讀, 『Diffusion』逐步生成圖像.
| 『提示詞』->『Clip』->『Diffusion』->『VAE』->『畵』 |
硬件要求
部署運行環境.
部署Stable Diffusion
| git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui |
| “C:\Program Files\Python310\python.exe” |
| @echo off |
| set PYTHON=”C:\Program Files\Python310\python.exe” |
| set GIT= |
| set VENV_DIR= |
| set COMMANDLINE_ARGS=–xformers |
| call webui.bat |
| ERROR:Could not find a version that satisfies the requirement torch |
| ERROR:NO matching distribution found for torch |
| WARNING:There was an error checking the latest version of pip. |
| python -m pip install –upgrade pip |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install –upgrade pip |
| RuntimeError: Torch is not able to use GPU; add –skip-torch-cude-test to COMMANDLINE_ARGS variable to disable this check |
| set COMMANDLINE_ARGS=–xformers –skip-torch-cuda-test |
| RuntimeError: Couldn’t install gfpgan. |
| RuntimeError: Couldn’t install clip. |
| RuntimeError: Couldn’t install open_clip. |
| OSError: Can’t load tokenizer for ‘openai/clip-vit-large-patch14’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘openai/clip-vit-large-patch14’ is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer. |
| TypeError: AsyncConnectionPool.__init__() got an unexpected keyword argument ‘socket_options’ |
| ImportError: cannot import name ‘_compare_version’ from ‘torchmetrics.utilities.imports’ (C:\stable-diffusion-webui\venv\lib\site-packages\torchmetrics\utilities\imports.py) |
| Downloading: “https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors” to C:\stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors |
| C:\stable-diffusion-webui\venv |
| Running on local URL: http://127.0.0.1:7860 |

安裝『Stable Diffusion』時未有安裝『open-clip-torch』
| changing setting sd_model_checkpoint to v1-5-pruned-emaonly.safetensors [6ce0161689]: AttributeError
Traceback (most recent call last): |
| AttributeError: ‘NoneType’ object has no attribute ‘lowvram’ |
| pip install open-clip-torch==2.20.0 |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install open-clip-torch==2.20.0 |

『Stable Diffusion』冇自带模型,需自行下載,當妳睇到下面信息,下載『v1-5-pruned-emaonly.safetensors』, 之后擺係『C:\stable-diffusion-webui\models\Stable-diffusion\』資料夾.
| Downloading: “https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors” to C:\stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors |
| https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors | Sour |
| C:\stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors | dest |


當妳『Stable Diffusion』睇到下面信息,未有裝『transformers』模型分詞器.或版本舊.
| OSError: Can’t load tokenizer for ‘openai/clip-vit-large-patch14’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘openai/clip-vit-large-patch14’ is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer. |
| pip install transformers |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install transformers |
| pip install –upgrade transformers |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install –upgrade transformers |

安裝『Stable Diffusion』時未有裝『torchmetrics』.
| ImportError: cannot import name ‘_compare_version’ from ‘torchmetrics.utilities.imports’ (C:\stable-diffusion-webui\venv\lib\site-packages\torchmetrics\utilities\imports.py) |
進入『命令行模式CMD』
查版本號
| pip show torchmetrics |
缷載
| pip uninstall torchmetrics |
下載0.11.4版本
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install torchmetrics==0.11.4 |

安裝『Stable Diffusion』時報錯
| TypeError: AsyncConnectionPool.__init__() got an unexpected keyword argument ‘socket_options’ |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install httpx==0.24.1 -force-reinstall |
| python.exe -m pip install httpx==0.24.1 -force-reinstall |

安裝『Stable Diffusion』時未裝『open_clip』. 其實亦係『clip』
| RuntimeError: Couldn’t install open_clip. |
進入『open_clip』
| https://github.com/mlfoundations/open_clip |
或者下載『open_clip』落『C:』碟
| git clone https://github.com/openai/open_clip.git |
下載『open_clip-main.zip』後解壓本地安裝
| https://codeload.github.com/mlfoundations/open_clip/zip/refs/heads/main |
复制『C:\open_clip』到『C:\stable-diffusion-webui\venv\Scripts』
| C:\open_clip | Sour |
| C:\stable-diffusion-webui\venv\Scripts | dest |
進入『命令行模式CMD』
CD去『CLIP』檔䅁夾, 作為本地路徑
| cd C:\stable-diffusion-webui\venv\Scripts\open_clip |
执行下列安裝指令
| C:\stable-diffusion-webui\venv\Scripts\python.exe setup.py build install |
常試通過pip指令安裝
| pip install open_clip_torch |













諗住買3090Ti點知連成萬,孖2080Ti送NVLink先陸千有找.
登入NVIDIA官網下載嘉時至新驅動
| https://www.nvidia.com/Download/index.aspx?lang=en-us |
| 填NVIDIA Driver Downloads | |
| NVIDIA Driver Downloads | 揀 |
| Product Type | GeForce |
| Product Series | GeForce RTX 40 Series |
| Product | GeForce RTX 4090 Ti |
| Operating System | Windows 10 64-bit |
| Download Type | NVIDIA Studio Driver |
撳Search下載驅動
| https://us.download.nvidia.com/Windows/552.22/552.22-desktop-win10-win11-64bit-international-nsd-dch-whql.exe |
新顯卡NVLINK金手指有封膜,撕左插入NVLINK桥即掂.冇使搞BIOS.
下載『NVLinkTestCUDA11』測試NVLINK桥造總線带寛
| https://www.pugetsystems.com/support/guides/how-to-enable-and-test-nvidia-nvlink-on-quadro-and-geforce-rtx-cards-in-windows-10-1266/ |
| https://puget.systems/go/NVLinkTestCUDA11 |
孖『NVIDIA GeForce RTX 2080 Ti』都插係PCIEx16,鋪頭送『GeForce NVLINK』桥造總線带寛得『48.08GB/S』, 可能要『Quadro Nvlink』先有『100GB/S』带寛.


『clip』建构圖像文字之間連系模型,安裝『Stable Diffusion』時未有安裝『clip』.
| RuntimeError: Couldn’t install clip. |
進入『clip』
| https://github.com/openai/clip/ |
下載『clip』落『C:』碟
| git clone https://github.com/openai/CLIP.git |
或者下載『CLIP-main.zip』後解壓
| https://codeload.github.com/openai/CLIP/zip/refs/heads/main |
复制『C:\CLIP』到『C:\stable-diffusion-webui\venv\Scripts』
| C:\CLIP | Sour |
| C:\stable-diffusion-webui\venv\Scripts | dest |
進入『命令行模式CMD』
CD去『CLIP』檔䅁夾, 作為本地路徑
| cd C:\stable-diffusion-webui\venv\Scripts\CLIP |
执行下列安裝指令
| C:\stable-diffusion-webui\venv\Scripts\python.exe setup.py build install |

安裝『Stable Diffusion』時未有安裝『gfpgan』人樣修复.
| RuntimeError: Couldn’t install gfpgan. |
進入『GFPGAN』
| https://github.com/TencentARC/GFPGAN |
下載『GFPGAN』落『C:』碟
| git clone https://github.com/TencentARC/GFPGAN.git |
复制『C:\GFPGAN』到『C:\stable-diffusion-webui\venv\Scripts』
| C:\GFPGAN | Sour |
| C:\stable-diffusion-webui\venv\Scripts | dest |
進入『命令行模式CMD』
CD去『GFPGAN』檔䅁夾, 作為本地路徑
| cd C:\stable-diffusion-webui\venv\Scripts\GFPGAN |
执行下列安裝指令
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install basicsr |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install facexlib |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install -r requirements.txt |
| C:\stable-diffusion-webui\venv\Scripts\python.exe setup.py develop |
| C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install realesrgan |


『Torch』基於神經網络人工智慧輵, 『PyTorch』係『Python』版本
首先确認NVIDIA顯卡支持CUDA版本. 下載最新顯卡驅動『552.22-desktop-win10-win11-64bit-international-nsd-dch-whql.exe』
網络安装『PyTorch』
| pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu121 |
本地安装『PyTorch』
| https://download.pytorch.org/whl/torch/ |
| https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-win_amd64.whl#sha256=002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e |
| WARNING:There was an error checking the latest version of pip. |
| Defaulting to user installation because normal site-packages is not writeable |
| python -m pip install –upgrade pip |
測試『Pytorch』返回true,表示可調用GPU-CUDA指令, 進入『Pytho3.10』.
| import torch |
| print(torch.__version__) |
| torch.cuda.is_available() |
缷載tcrch
| Pip uninstall torch |
| Pip uninstall torchaudio torchvision |
| Pip uninstall torch-geometric torch-scatter torch-sparse torch-cluster torch-spline-conv |
| https://pytorch.org/get-started/locally/ |
| https://pytorch.org/get-started/previous-versions/ |















睇人AI繪畫,諗住買NVIDIA顯卡,中古RTX3060都要兩千幾,
可能係機房大批淘汰,Tesla P40-24GB係網大量焦拋售,柒百伍包郵,成色麻麻.配NVIDIA-8pin專用供電線,睇佢散熱槽,應該係風道式散熱. 係屎窟裝涡輪風扇, 點知電流大噪䡰大,再加30%降壓線壓低風.
使能PCIE-Above 4G
驅動下載
| 填NVIDIA Driver Downloads | |
| NVIDIA Driver Downloads | 揀 |
| Product Type | Data Center Tesla |
| Product Series | P-Series |
| Product | Tesla P40 |
| Operating System | Windows 10 64-bit |
『Tesla P40』裝驅動 默認係『TCC計算模式』, 需改為『WDDM圖形模式』.
| Computer \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318} |
| DriverDesc | |
| 0000 | NVIDIA Tesla P40 |
| 0001 | NVIDIA Quadro K6000 |
| NAME | TYPE | VALUE |
| AdapterType | REG_DWORD | 1 – DELETE |
| FeatureScore | REG_DWORD | 0Xcf->0Xd1 |
| GridLicensedFeatures | REG_DWORD | 7 (强制開啟GRID圖形模式) |
| EnableMsHybrid | REG_DWORD | 1 |
| NAME | TYPE | VALUE |
| EnableMsHybrid | REG_DWORD | 2 |
圖形設定指定-GPU: NVIDIA Tesla P40
NVIDIA GPU指定『Tesla P40』

『nvidia-smi.exe』, 係nvidia公司開發蒞睇gpu. 基於命令行界面, 而非圖形界面. 可能考慮兼容同稳定.随nvidia顯卡驅動安裝自動复制,路徑如下.
| C:\Windows\System32\nvidia-smi.exe |
| 講解 | |
| Nvidia-smi | 程式版本號 |
| Driver version | 顯卡驅動版本號 |
| CUDA Version | CUDA至高支援版本號 |
| GPU | 顯卡編號, 0開如始編址, |
| FAN | 風扇轉速(0~100%),冇風扇(N/A) |
| NAME | 顯卡型號 |
| Temp | GPU温度,0C ~ 100C |
| Perf | 性能, 至高p0級~至低p12級 |
| Pwr: Usage/Cap | 顯卡能耗, 『usage』 使用率,『Cap』能耗牆 |
| Bus-ID | 顯卡總線地埗 |
| Disp.A | 圖像顯示輸出,OFF閂, ON著 |
| Memory-Usage | 顯存使用率 |
| GPU-Util | GPU使用率 |
| Compute M. | 計算模式DEFAULT/EXCLUSIVE_PROCESS/PROHIBITED |
| ECC | 顯存校驗糾錯 |

CUDA係NVIDIA為GPU并行運算而開發,用C語言調用GPU-CUDA指令集進行大規模并行運行.
虽然上世紀以經有『INTEL-SEE』并行運算指令集,但係『NVIDIA-CUDA』青出於蓝.
『PyTorch』暫時至高支持『CUDA 12.1』.
登入『CUDA官網』, 下載『CUDA Toolkit 12.1.1』
| https://developer.nvidia.com/cuda-toolkit-archive/ |



github
gitHub攻略
git系統等於『檔案伺服』外加『版本管理』,
『Linux』安裝git
通過SSH登入
| ssh username@ubuntu |
root@ubuntu’s password: 填密碼. 冇字符顯示, 撳Enter鍵.
安裝git架撑
| sudo apt update |
| sudo apt install git |
| sudo apt update git |
下載『Quectel_MHI』
| sudo git clone https://github.com/ChaingTsung/Quectel_MHI/ |
『OpenWRT』安装『git』從缺小http傳輸支
| git: ‘remote-https’ is not a git command. See ‘git –help’. |
安装『git-http』修复
| sudo apt install git-http |
| sudo apt install curl |
| sudo apt install libcurl4 |
| git –version | 版本號 |
『windows10』下載祗安裝『Git-2.45.0-64-bit.exe』,家時最新2.45.0版.
| Additional icons on the Desktop | 桌面捷徑 |
| Windows Explorer integration Git Bash Here | 右鍵菜單 |
| Windows Explorer integration Git GUI Here | 右鍵菜單 |
| Git LFS (Large File Support) | 支援大檔䅁 |
| Associate .git* configuration files with the default text edito | 配置檔䅁.git關聯edito |
| Associate .sh files to be run with Bash | 關聯.sh檔䅁 |
| Check daily for Git for Windows updates | 日日檢查更新 |
| Add a Git Bash Profile to Windows Terminal | 將Git Bash設定檔新增到Windows終端 |
| Scalar(Git add-on to manage large-scale repositories) | 管理大型儲存庫 |
注册GitHub賬戶
| 賬戶信息 | |
| EMAIL電郵 | 電子郵箱, 用蒞收驗證電郵. |
| Username | 字母+字符 混合, 唯壹未被利用. |
| PASSWORD密碼 | 字母+數字+字符混合 |
下載GitHub卓面版『GitHubDesktopSetup-x64.exe』





『Python』其實係『虛擬機』, 先裝『.py』源碼編譯為字節碼『.pyc』. 『Python虛擬機』再執行『Python字節碼』. 同『java』壹樣.
登入『Python』官網『https://www.python.org/』.
| Documentation | 文檔 |
| Pip | (必揀)下載和管理python包 |
| Tcl/tk and IDLE | 裝IDLE包 |
| Python test suite | 裝測試包 |
| Py launcher For all users(requires admin privileges) | 裝‘py’啟動程式 |
| Install python 3.12 for all users | 冚辦闌帳號裝python程式 |
| Associate files with python(requires the ‘py’ launcher) | 關聯‘py’文檔 |
| Create shortcuts for installed applications | 制作python捷徑檔 |
| Add Python to environment variables | 將Python路徑添加到環境變量 |
| Precompile standard library | 預編譯標準庫 |
| Download debugging symbols | 下載調試符號 |
| Download debug binaries(requires VS 2017 or later) | 下載調試庫 |
| C:\Users\bookc\AppData\Roaming\Python\Python310\ |
| C:\Users\bookc\AppData\Roaming\Python\Python310\Scripts\ |
| C:\Users\bookc\AppData\Roaming\Python\Python310\site-packages\ |
| C:\Program Files\Python310\Scripts\ |
| C:\Program Files\Python310\ |
檢查最新版pip時出錯.
| WARNING:There was an error checking the latest version of pip. |
需手動升級pip至最新版.
| python -m pip install –upgrade pip |
| https://www.python.org/ |
| https://www.python.org/downloads/windows/ |
| https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe |









買雜牌『B450-ITX』配『RYZEN5-1500X』砌臺ITX,摆係老竇屋企睇片.點知『BE200』WIFI吾認識. 早期版本,篮牙要更新BIOS.
壹年後……
平時冇點用,拎翻蒞諗住插支咪試下,壹插塊主板烧左,前后寄翻去3次,先肯换塊新RGBA版本,前後各壹條m.2磁碟,插4pin小喇叭著機BOOT.
以雜牌蒞講都算好,保养3年,壹年後烧左换新. 祗係記憶體吾兼容,間隙輕機. AID64記憶體測試報錯.舊版本返宜兼容記憶體.唯有降低頻率加大時序.
用『Ryzen DRAM Calculator』睇時序配置.
| 記憶體 | 默認值 | 修定後 |
| MEM FREQUENCY(Mhz) 頻率 | 2400 | 2133 |
| 主時序配置 | ||
| Tcl | 15 | 20 |
| Trcdrd | 15 | 20 |
| Trcdwr | 15 | 20 |
| Trp | 15 | 20 |
| Tras | 35 | 38 |
| 副時序配置 | ||
| Trc | 0 | |
| Trrds | 4 | |
| Trrdl | 6 | |
| Tfaw | 23 | |
| Twtrs | 3 |
休眠喚醒後顯示器黑屏,要撳『power』鍵重啟.BIOS 已UPADAE.『Win10/Linux』皆係.
| B450-ITX | RGBA版 |
| m.2磁碟 | 2 |
| BOOT-4pin | 1 |
| rgba燈 | 2 |
| 4pin風扇 | 2 |
| 3pin風扇 | 2 |
| DEBUG | 1 |



之前係老竇屋企砌臺ITX電腦愛蒞睇片,『BE200』新出買蒞試試, 點知係係『b450-itx』可以認藍牙,唔認WIFI.反而係『x99-itx』藍牙WIFI都認.
唯有『AX210』配『b450-itx』, 『BE200』配『x99-itx』.
下載最新Intel WiFi驅動.

係電腦發展初時定義左套『ASCII碼』,得128字符,英文加數字用單字節BYTE. 後蒞各國皆自定『字符編碼』,『Shift-JIS/EUC-KR/BIG5/GB2312』皆占两字節WORD,结果係編碼重叠.所以先有亂碼.
| 字 | Low 8bit | Height 8bit |
| ASCII-128 | 0 ~ 0x7F | N/A |
| BIG5漢字 | 0xA1 ~ 0xF9 | 0x40 ~ 0x7E
0xA1 ~ 0xFE |
| SHIFT-JIS日字 | 0x81~0x9f
0xe0~0xef |
0x40~0x7e
0x80~0xfc |
| EUC-KR韓字 | 0xA1~0xFE | 0xA1~0xFE |
| GB2312中字 | 0xA1 ~ 0xF7 | 0xA1 ~ 0xFE |
| GBK中字 | 0x81 ~ 0xFE | 0x40 ~ 0xFE |
『UTF-8』係Unicode『萬國碼』變體,首byte前缀標記字符長度.前缀0長度1, 前缀110長度2, 前缀1110長度3.以此类推.尾随byte前缀皆標記01.
| 『UTF-8』bin | 長度 |
| bin:0xxxxxxx | 1 |
| bin:110xxxxx 10xxxxxx | 2 |
| bin:1110xxxx 10xxxxxx 10xxxxxx | 3 |
| bin:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | 4 |
| bin:111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx | 5 |
| bin:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx | 6 |
UTF-8判定
| if ((utf8[0] & 0x80) == 0x00)
return 1; |
值小於0x80的ASCII字元 |
| if ((utf8[0] & 0xE0) == 0xC0 &&
(utf8[1] & 0xC0) == 0x80) return 2; |
2字節UTF-8字符 |
| if ((utf8[0] & 0xF0) == 0xE0 &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80) return 3; |
3字節UTF-8字符 |
| if ((utf8[0] & 0xF8) == 0xF0 &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80 && (utf8[3] & 0xC0) == 0x80) return 4; |
4字節UTF-8字符 |
| if ((utf8[0] & 0xFC) == 0xF8 &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80 && (utf8[3] & 0xC0) == 0x80 && (utf8[4] & 0xC0) == 0x80) return 5; |
5字節UTF-8字符 |
| if ((utf8[0] & 0xFE) == 0xFC &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80 && (utf8[3] & 0xC0) == 0x80 && (utf8[4] & 0xC0) == 0x80 && (utf8[5] & 0xC0) == 0x80) return 6; |
6字节UTF-8字符 |
值小於0x80係ASCII字符集
| if ((string[0] & 0x80) == 0x00)
return 1; |
BIG5漢字符集編碼范圍
| if ((string[0] >= 0xA1 && string[0] <= 0xF9) &&
(string[1] >= 0x40 && string[1] <= 0x7E || string[1] >= 0xA1 && string[1] <= 0xFE) ) return 2; |
SHIFT-JIS日字符集編碼范圍
| if ((string[0] >= 0x81 && string[0] <= 0xF9 ||
string[0] >= 0xe0 && string[0] <= 0xef) && (string[1] >= 0x40 && string[1] <= 0x7E || string[1] >= 0xA1 && string[1] <= 0xFE) ) return 2; |
EUC-KR韓字符集編碼范圍
| if ((string[0] >= 0xA1 && string[0] <= 0xFE) &&
(string[1] >= 0xA1 && string[1] <= 0xFE)) return 2; |
GB2312中字符集編碼范圍
| if ((string[0] >= 0xA1 && string[0] <= 0xF7) &&
(string[1] >= 0XA1 && string[1] <= 0XFE) ) return 2; |
GBK中字符集編碼范圍
| if ((string[0] >= 0x81 && string[0] <= 0xFE) &&
(string[1] >= 0XA0 && string[1] <= 0XFE) ) return 2; |

係電腦發展初時.定義左套『ASCII碼』,得128字符,英文加數字用單字節BYTE. 後蒞各國皆自定『字符編碼』,『BIG5/GB2312』皆占两字節WORD,结果係編碼重叠.所以先有亂碼.
UNICODE『萬國碼』,各國各自有獨立編碼段,吾重叠,同『ASCII碼』兼容.
『UNICODE』係設計之初每字符占『2 BYTE』即『USC2』字符集. 但係『2 BYTE』够支持65535字符.所以後蒞有『USC4』占『4 BYTE』.
係同壹字符串USC2同USC4會混合出現.
但係『ASCII碼』只需單字節『1 BYTE』. 所以發明左『UTF-8』以節約地方.
『UTF-8』同『UNICODE』按照下表互為轉换.
| Unicode『USC2』字符集HEX | 『UTF-8』bin |
| 0x0000~0x007F | 0xxxxxxx |
| 0x0080~0x07FF | 110xxxxx 10xxxxxx |
| 0x0800~0xFFFF | 1110xxxx 10xxxxxx 10xxxxxx |
為左係同壹字符串『USC2』同『USC4』混合出現.係『USC4』字符『低16bit』同『高16bit』分別加前缀標記.
『低16bit』加『0xD800』,『高16bit』加『0xDC00』,再加壹區域0x10000.
前缀標記『0xD800』『0xDC00』各占6bit,各净低10bit加埋有『20bit』.够支持 『1048576』字符
| USC4-低16bit前缀標記 | 0xD800 | BIN:110110 00000 00000 |
| USC4-高16bit前缀標記 | 0xDC00 | BIN:110111 00000 00000 |
| USC4 | 前缀標記 | USC4=前缀標記+字符 |
| 低16bit | 0xD800 | BIN:110110 00000 00000 + BIN:xxxxxxxxxx |
| 高16bit | 0xDC00 | BIN:110111 00000 00000 + BIN:xxxxxxxxxx |
utf8 轉 usc4
| 首字節 | value = utf8[sour] & (0xFF >> (bytes + 1));
++sour; |
| 尾随字節 | for (int i = 1; i < bytes; ++i) {
value = value << 6; value = value | (utf8[sour] & 0x3f);// 提低6bit ++sour; } |
| 减壹區域 | value = value – 0x10000 |
| 低16bit | unicode[dest] = 0xD800 | ((value >> 10) & 0x3ff ); |
| 高16bit | unicode[dest+1] = 0xDC00 | ((value) & 0x3ff);
dest = dest + 2; |
utf8 轉 usc2
| 首字節 | value = utf8[sour] & (0xFF >> (bytes + 1));
++sour; |
| 尾随字節 | for (int i = 1; i < bytes; ++i) {
value = value << 6; value = value | (utf8[sour] & 0x3f); ++sour; } |
| 反轉字節 | v = (value >> 24) & 0xFF;
unicode[dest] = v; v = (value >> 16) & 0xFF; if (v != 0) { unicode[dest] = (unicode[dest] << 8) + v; ++dest; } |
| 反轉字節 | v = (value >> 8) & 0xFF;
unicode[dest] = v; v = value & 0xFF; if (v != 0) { unicode[dest] = (unicode[dest] << 8) + v; ++dest; } |
Usc4轉utf8
| 提取字符 | value = (unicode[sour] – 0xD800) << 10 | (unicode[sour + 1] – 0xDC00); |
| 加壹區域 | value = value + 0x10000; |
Usc2轉utf8
| 提取字符 | value = unicode[sour]; |
| 首字節 | utf8[dest] = (0xFF << (8 – bytes)) | (value >> ((bytes – 1) * 6));
++dest; |
| 尾随字節 | for (int i = 1; i < bytes; ++i) {
utf8[dest] = 0x80 | (value >> ((bytes – i – 1) * 6) & 0x3F); ++dest; } ++sour; |
『UTF-8』首byte,前缀標記字符長度. 前缀0長度1, 前缀110長度2, 前缀1110長度3. 以此类推.尾随byte前缀皆標記01.
| 『UTF-8』bin | 長度 |
| bin:0xxxxxxx | 1 |
| bin:110xxxxx 10xxxxxx | 2 |
| bin:1110xxxx 10xxxxxx 10xxxxxx | 3 |
| bin:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | 4 |
| bin:111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx | 5 |
| bin:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx | 6 |
按首BIT符號,計算UTF8字符長度,返回0非UFT8字符.
| 『UTF-8』字符 | |
| if ((utf8[0] & 0x80) == 0x00)
return 1; |
0xxxxxxx |
| if ((utf8[0] & 0xE0) == 0xC0 &&
(utf8[1] & 0xC0) == 0x80) return 2; |
110xxxxx 10xxxxxx |
| if ((utf8[0] & 0xF0) == 0xE0 &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80) return 3; |
1110xxxx
10xxxxxx 10xxxxxx |
| if ((utf8[0] & 0xF8) == 0xF0 &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80 && (utf8[3] & 0xC0) == 0x80) return 4; |
11110xxx
10xxxxxx 10xxxxxx 10xxxxxx |
| if ((utf8[0] & 0xFC) == 0xF8 &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80 && (utf8[3] & 0xC0) == 0x80 && (utf8[4] & 0xC0) == 0x80) return 5; |
111110xx
10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
| if ((utf8[0] & 0xFE) == 0xFC &&
(utf8[1] & 0xC0) == 0x80 && (utf8[2] & 0xC0) == 0x80 && (utf8[3] & 0xC0) == 0x80 && (utf8[4] & 0xC0) == 0x80 && (utf8[5] & 0xC0) == 0x80) return 6; |
1111110x
10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
unicode轉utf8 , ASCII碼相等.
| int UnicodeToUTF8(char * utf8, const wchar_t * unicode)
{ int unicodeLength = 0; int bytes; int dest, sour; DWORD value; unicodeLength = Unicode_Length(unicode) ; sour = dest = 0; while (sour < unicodeLength) { bytes = 1; if (unicode[sour] >= 0xD800 && unicode[sour + 1] >= 0xDC00) bytes = 4; else if (unicode[sour] >= 0x00 && unicode[sour] <= 0x7F) bytes = 1; else if (unicode[sour] >= 0x80 && unicode[sour] <= 0x7FF) bytes = 2; else if (unicode[sour] >= 0x800 && unicode[sour] <= 0xFFFF) bytes = 3; else if (((unicode[sour + 1] << 16) | unicode[sour]) >= 0x10000 && ((unicode[sour + 1] << 16) | unicode[sour]) <= 0x1FFFFF) bytes = 4; else if (((unicode[sour + 1] << 16) | unicode[sour]) >= 0x200000 && ((unicode[sour + 1] << 16) | unicode[sour]) <= 0x3FFFFFF) bytes = 5; else if (((unicode[sour + 1] << 16) | unicode[sour]) >= 0x4000000 && ((unicode[sour + 1] << 16) | unicode[sour]) <= 0x7FFFFFFF) bytes = 6; else if (((unicode[sour + 1] << 16) | unicode[sour]) >= 0x80000000) bytes = 7;
if (bytes == 1) { utf8[dest] = unicode[sour]; ++dest; ++sour; } else if (unicode[sour] >= 0xD800 && unicode[sour + 1] >= 0xDC00) { value = (unicode[sour] – 0xD800) << 10 | (unicode[sour + 1] – 0xDC00); value = value + 0x10000; utf8[dest] = (0xFF << (8 – bytes)) | (value >> ((bytes – 1) * 6)); ++dest; for (int i = 1; i < bytes; ++i) { utf8[dest] = 0x80 | (value >> ((bytes – i – 1) * 6) & 0x3F); ++dest; } sour = sour + 2; } else if (bytes == 2 || bytes == 3) { value = unicode[sour]; utf8[dest] = (0xFF << (8 – bytes)) | (value >> ((bytes – 1) * 6)); ++dest; for (int i = 1; i < bytes; ++i) { utf8[dest] = 0x80 | (value >> ((bytes – i – 1) * 6) & 0x3F); ++dest; } ++sour; } else if (bytes >= 4) { value = (unicode[sour + 1] << 16) | unicode[sour]; utf8[dest] = (0xFF << (8 – bytes)) | (value >> ((bytes – 1) * 6)); ++dest; for (int i = 1; i < bytes; ++i) { utf8[dest] = 0x80 | (value >> ((bytes – i – 1) * 6) & 0x3F); ++dest; } sour = sour + 2; } } utf8[dest] = NULL; return dest; } |
utf8 轉 unicode
| int UTF8ToUnicode(wchar_t * unicode, const char* utf8)
{ int utf8Length; int sour, dest; int bytes; dest = sour = 0; DWORD value; BYTE v; utf8Length = strlen(utf8); while (sour < utf8Length) { if ((utf8[sour] & 0x80) == 0x00) bytes = 1; else if ((utf8[sour] & 0xE0) == 0xC0) bytes = 2; else if ((utf8[sour] & 0xF0) == 0xE0) bytes = 3; else if ((utf8[sour] & 0xF8) == 0xF0) bytes = 4; else if ((utf8[sour] & 0xFC) == 0xF8) bytes = 5; else if ((utf8[sour] & 0xFE) == 0xFC) bytes = 6; else bytes = 7; if (bytes == 1) { unicode[dest] = utf8[sour]; ++dest; ++sour; } else if (bytes == 2 || bytes == 3) { value = utf8[sour] & (0xFF >> (bytes + 1)); ++sour; for (int i = 1; i < bytes; ++i) { value = value << 6; value = value | (utf8[sour] & 0x3f); ++sour; }
v = (value >> 24) & 0xFF; unicode[dest] = v; v = (value >> 16) & 0xFF; if (v != 0) { unicode[dest] = (unicode[dest] << 8) + v; ++dest; }
v = (value >> 8) & 0xFF; unicode[dest] = v; v = value & 0xFF; if (v != 0) { unicode[dest] = (unicode[dest] << 8) + v; ++dest; } } else if (bytes >= 4 ) { value = utf8[sour] & (0xFF >> (bytes + 1)); ++sour; for (int i = 1; i < bytes; ++i) { value = value << 6; value = value | (utf8[sour] & 0x3f); ++sour; } value = value – 0x10000; unicode[dest] = 0xD800 | ((value >> 10) & 0x3ff ); unicode[dest+1] = 0xDC00 | ((value) & 0x3ff); dest = dest + 2; } }
unicode[dest] = NULL; return dest; } |

『Android Studio』默認utf8編碼. 而『Visual Studio』按『地區設定』,轉本地字符編碼. 係VC6年代直頭吾直持『utf8』.
要强轉utf8可以係字加『u8』前缀
| char utf8[MAX_CHAR] = u8″abcdef屌㞗𡳞杘屄”; |
加『u8』前缀後,代碼移稙『Android Studio』繁鎖.可以加編譯詣令.
| #pragma execution_character_set(“utf-8”) |
适宜字符寫死係代碼. 若将字符保存係外部文檔,存為utf8即軟代碼.唔使諗編碼.
要强轉unicode係字加『L』前缀.USC2同USC4混埋.
| wchar_t unicode[MAX_CHAR] = L”屌㞗𡳞杘屄”; |

經緯度座標有叄種格式,『度分秒』『度分』『度』.
『度分秒』等於『時分秒』, 『1度=60分=3600秒』『1分=60秒』
| 經緯度座標 | |
| 度分秒DMS | DDD°MM’SS” |
| 度分DM | DDD°MM.MMM’ |
| 度D | DDD.DDDDD° |
| 度分秒 | 轉换 |
| 分轉度 | 除60 |
| 秒轉度 | 除3600 |
| 秒轉分 | 除60 |
| 度轉分 | 度小數乘60 |
| 分轉秒 | 分小數乘60 |
『度分秒』轉『度』
| 例『35°41′37.5″』即係『35度41分37.5秒』 |
| 41分轉度= 41/60 |
| 37.5秒轉度=37.5/3600 |
| 35 + 41/60 + 37.5/3600=35.69375度 |
| void DMS_TO_DD(float D,float M,float S,double * DD)
{ *DD = D + M/60.0f + S/3600.0f; } |
『度分』轉『度』
| 例『35°41.625』即係『35度41.625分』 |
| 41.625分轉度= 41/60 |
| 35 + 41.625/60 =35.69375度 |
| void DM_TO_DD(float D, float M, double* DD)
{ *DD = D + M / 60.0f; // 除60 } |
『度』轉『度分』
| 例『35.6937632°』即係『35度41.625792分』 |
| 『0.6937632°』度轉分 0.6937632*60=41.625792′ |
| 35 + 0.6937632*60=『35°41.625792’』=『35度41.625792分』 |
| void DD_TO_DM(double DD,int * D,float * M)
{ *D = (int)DD; // 度取整 *M = (DD – *D) * 60; // 度小數乘60 } |
『度』轉『度分秒』
| 例『35.6937632°』度即係『35度, 41分, 37.54秒』 |
| 取度小數『0.6937632°』度轉分 0.6937632°*60=41.625792′ |
| 取分小數『0.625792’』分轉秒 0.625792’*60=37.54752″ |
| 35°+ 0.6937632°*60 + 0.625792’*60=『35°41′37.5″』=『35度, 41分, 37.54秒』 |
| void DD_TO_DMS(double DD, float* D, float* M, float* S)
{ float MM; *D = (int)DD; // 度取整 MM = (DD – *D) * 60; // 度小數乘60 *M = (int)MM;// 分 *S = (*M – MM) * 60;// 分小數乘60 } |
| 1日 | 360度 |
| 1度 | 60分=3600秒 |
| 1分 | 60秒 |

係Windows拖拽或者縮放窗口, 會造成窗體閃爍, 啟用象筋拖放, 即係非實時拖放,可避免窗體閃爍.
| 進入像筋拖放 |
| SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, true, &drag_full_windows, NULL); |
| 退出像筋拖放 |
| SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, false, &drag_full_windows, NULL); |
通過監聽『WM_ENTERSIZEMOVE』進入拖拽, 『WM_EXITSIZEMOVE』退出像筋拖拽, 實施像筋象筋拖放
| LRESULT CALLBACK WindowProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){ |
| if (msg == WM_ENTERSIZEMOVE)
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, true, &drag_full_windows, NULL);// 進入像筋拖放 else |
| if (msg == WM_EXITSIZEMOVE)
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, false, &drag_full_windows, NULL);// 退出像筋拖放 |
| return(DefWindowProc(hWnd, msg, wParam, lParam));
} |












WD BLACK AN1500原配两條SN730仲有ARGB燈,有人拆出蒞䶒賣殼.睇中佢自動组建Raid0,讀寫至高達『6500MB/S』,諗住買翻『SN730-1TB』, 睇到『PC300-1TB』特價,仲係『MLC SSD』. 1TB仲係1024GB.
打孖插入『PC300-1TB』自建Raid0. 温度高達65℃. 讀『3800 MB/S』,寫『2194MB/S』. 比『SN730』慢.
| WD BLACK AN1500-Raid0 | PC300 NVMe SK Hynix 1TB*2 |
| CrystalDiskMark讀 | 2800 MB/S |
| CrystalDiskMark寫 | 2194MB/S |
| CrystalDiskInfo | 69℃. |
| MLC SSD | SK Hynix H2702T8C0B3A |
| WD AN1500 | |
| 上行 | 6500MB/S |
| 下行 | 6500MB/S |
| 總線 | PCIe Gen3*4 SSD |




『ZLIB』係開源『壓縮』同『解壓』程式庫, 支持『DEFLATE』冇損壓縮算法,混合『LZ77算法』同『霍夫曼編碼』.
『Visual studio』冇內置『ZLIB』,下載『zlib-1.2.13.tar.gz』再編譯.
| http://www.zlib.net/ |
| http://www.zlib.net/zlib-1.2.13.tar.gz |
| 路徑 | 版本 |
| C:\Program Files (x86)\zlib-1.2.13\build\Debug | Debug |
| C:\Program Files (x86)\zlib-1.2.13\build\Release | Release |
| Debug調試版 | Release發行版 | |
| zlibstaticd.lib | zlibstatic.lib | 静態庫, 唔使dll |
| zlibd.lib | zlib.lib | 動態庫, 要dll |
| zlibd.dll | zlib.dll | 動態連结 |
| C:\Program Files\zlib\include\zconf.h | Zlib-API |
| C:\Program Files\zlib\include\zlib.h |
| #include <zlib.h> | Zlib-api |
| #include <zconf.h> |
| #if _DEBUG | |
| #pragma comment(lib, “..\\ZLIB\\zlibstaticd.lib”)
#else |
|
| #pragma comment(lib, “..\\ZLIB\\zlibstatic.lib”)
#endif |


『CMake』愛蒞生成makefile或project文件, 畀Visual studio編譯代碼.
登入『CMake官網』下載『cmake-3.27.7-windows-x86_64.msi』安装包.
驗証CMake安装
| https://cmake.org/ |
| https://cmake.org/download/ |
| cmake-3.28.0-rc3-windows-x86_64.msi |
| cmake-3.27.7-windows-x86_64.msi |




上次『USB3.0壹拆貳』插『SD讀卡機』冇反應,改買臺彎汤銘TERMINUS-FE2.1芯片,『USB2.0 壹拆肆』.聽講兼容冚辦闌USB2.0機體.
冇定位窿, 3D打印磁吸底座,吸係機槓壁.配線够長.
部『SD讀卡機』係USB3.0-19PIN,要轉9PIN.好彩識認.


華南X99-F8D Plus
臺X570冇定時輕機,睇翻佢本天書,要用『1R8/2R8-DDR4』記憶體,買两條32GB成千幾紋,索性買雜牌X99玩,開機慢到以為吾著. 壹分鐘先睇到bios logo
配置如下
雜牌X99-F8D Plus有捌條DDR4槽, 單條支持至高64GB.捌條槽最高512GB.DDR4-64GB依然偏貴.块X99話支持肆通道.買两條用住先.




買左雜牌『X99-F8D PLUS』, 睇岩『E5-2637 V4』支持雙U,頻率至高.『基頻3.5GHZ』畀『E5-1630V4』低200HZ.
用CPU-Z測單線程相若. 多線程跑分接近壹倍. 可能同雙CPU有關.
| INTEL XEON | E5-2637V4 | E5-1630V4 | E5-2630LV3 |
| CPU-Z單線程 | 462.4 | 470.7 | 233.2 |
| CPU-Z多線程 | 4368.2 | 2350.2 | 2136.7 |
| 主頻 | 3.5GHZ | 3.7GHZ | 1.8GHZ |
| 核心 | 4核 | 4核 | 8核 |
| 線程 | 8線程 | 8線程 | 16線程 |
| TDW | 140W | 140W | 55W |

買左雜牌『x99-EATX』,舊式ATX機槓要拆左光驅位支架.冇臺鉆拆拉釘驚拆爛.索性新買EATX機槓W100,分左右腔.10條PCIE槽位,有主板要11條PCIE槽位.
左腔裝主板同風扇,為左装『23030風扇』要移有機玻璃去門板外側.
右腔得86mm寬,装3.5寸機體同埋atx火牛都掹水,早知買W200吾使搞甘耐.
你必須登入才能發表留言。