Linux目錄組織結構

Linux目錄組織結構
Linux目錄組織結構

『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 軟體程式日誌文檔

 

Ubuntu攻略

Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略
Ubuntu攻略

 

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

  1. 選擇語言, 指桌面GNONE語言.
  2. 無障礙功能, 吾使變更設定.
  3. 選擇鍵盤配置, 擇『英語(美式)』
  4. 連接網際網路, 揀『有線網路』,『WIFI網路』装掂後設定.
  5. 『安装程式有可用更新』撳『跳過』. 吾係又要重新蒞過.
  6. 撳『安裝Ubuntu』
  7. 撳『互動式安裝』
  8. 撳『完整安裝』
  9. 勾『安裝等三方軟體使用顯示卡, 無線網络等硬體』
  10. 勾『安裝等三方軟體以提供媒體格式支援』
  11. 撳『清除磁碟並安裝Ubuntu』,自動分兩個區,分區1掛載『/boot/efi』引導配置.分區2掛載『/』系統.『手動硬碟分割』同樣要甘樣分割.『Ubuntu』默認『ext4』格式.
分區 格式 掛載
NVME0n1p1 fat32 /boot/efi
NVME0n1p2 ext4 /
  1. 『name』名: 人名
  2. 『USERNAME』用戶名: 吾畀用『admin』『root』.要易記吾超4字母.
  3. 『PSSSWORD』密碼: 字母數字混合.
  4. 『Hostname』主機名: 以『系统-主板』命名, 類似『Ubuntu-x450itx』
  5. 揀『city城市』『time zne時區』
  6. 撳『開始安裝』, 可以去喫茶,壹粒鐘後…
  7. 『Ubuntu 24.04.2 LTS装完』.撳『立即重新啟動』
  8. 猛『USB磁碟』撳『enter』鍵重啟.

 

OpenWRT-SSH遠程登錄-PuTTY終端

OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
OpenWRT-SSH遠程登錄-PuTTY終端
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  xxxxx』

passwd   xxxxx xxxxx係密碼

重啟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
  1. 執行『exe
  2. 『Host Name(or IP address)』: OpenWrt地埗-例『168.2:1』
  3. 『Port』:SSH連接埠默認『22』
  4. 『Connection type』:揀『SSH』
  5. 撳『Open』.
  6. 首次連線提示『PuTTY Security Alert』,OpenWtr密鈅未存儲,係咪信賴佢,撳『Accept』接受.彈出黑色命令行窗口.
  7. 『Login as』賬號填『root』
  8. 『root@192.168.2.1’s passwort:』撳鍵盤吾會顯示密碼, 撳『Enter』登入.

 

OpenWRT漢化

OpenWRT漢化
OpenWRT漢化
OpenWRT漢化
OpenWRT漢化

『OpenWRT』安裝圖形界面後,語言祈有英文揀,可再線下載漢化包.

更新安裝包列表

opkg  update

安裝圖形界面

opkg  install  luci

OpenWRT漢化

opkg  install  luci-i18n-base-zh-tw

登入後台luci經已漢化

  1. 撳『System』->『system』
  2. 撳『Lanuage and style』 ->『language』
  3. 揀『繁體中文(Chinese Traditional)』

 

MediaTek聯發科-MT7925- WIFI7冇線網卡

MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MVME TO M.2 WIFI
MVME TO M.2 WIFI
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡
MediaTek聯發科-MT7925- WIFI7冇線網卡

砌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』搜索『MT7925』驅動.執行『opkg list | grep mt7925』.返回驅動名以kmod開頭.

opkg list | grep mt7925

安裝『MT7925』驅動.

opkg install kmod-mt7925-common
opkg install kmod-mt7925-firmware
opkg install kmod-mt7925e
opkg install kmod-mt7925u

『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』對應關係

hwmode htmode ht_coex 2.4G模式
option hwmode 11b 刪除 刪除 11b
option hwmode 11g 刪除 刪除 11g
option hwmode 11g option htmode HT20 option ht_coex 1 11n-

20MHz/40MHz混合模式

option hwmode 11g option htmode HT40 option ht_coex 1 11n-

20MHz/40MHz混合模式

option hwmode 11g option htmode HT20 option ht_coex 0 11n-20MHz
option hwmode 11g option htmode HT40 option ht_coex 0 11n-40MHz

 

5G模式『冇線协議 hwmode』『冇線頻寬htmode』『ht_coex』對應關係

hwmode htmode ht_coex 5G模式
option hwmode 11a 刪除 刪除 11a
option hwmode 11a option htmode HT40 option ht_coex 1 11n-20MHz/40MHz混合模式
option hwmode 11a option htmode HT40 option ht_coex 1 11n-20MHz/40MHz混合模式
option hwmode 11a option htmode HT20 option ht_coex 0 11n-20MHz
option hwmode 11a option htmode HT40 option ht_coex 0 11n-40MHz
option hwmode 11a option htmode VHT20 刪除 11ac-20MHz
option hwmode 11a option htmode VHT40 刪除 11ac-40MHz
option hwmode 11a option htmode VHT80 刪除 11ac-80MHz

冇線網卡驅動路徑

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 ‘1’ 0禁制wifi/1使能wifi

WIFI冇線網卡接口信息

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旁郵路攻略-x86/x64電腦版

OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版
OpenWRT旁郵路攻略-x86/x64電腦版

OpenWrt』嵌入式路郵設計Linux系統,市面大部分路郵都係用佢,提供『防火牆』『VPN』『IPv6』『WIFI』『4G/5G』.

依甫係itx臺式電腦將『OpenWrt』,要2網口一個WAN口一個LAN口.

  1. itx底板『SUPERMICR X10SDV-4C-TLN2F
  2. 磁碟『SUPERMICR-SATA-DOM-G4GB
  3. 下載『OpenWrt』x86/x64版鏡像
  4. 刻錄『OpenWrt』鏡像SATA磁碟
  5. 安將『OpenWrt』此過程自動執行
  6. 配置網絡『vim /etc/config/network』

首先下載新穩定版『OpenWrt 24.10.1』, 登入『OpenWrt官網』下載

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』,

https://downloads.openwrt.org/releases/24.10.0/targets/x86/generic/openwrt-24.10.0-x86-generic-generic-ext4-combined.img.gz
https://downloads.openwrt.org/releases/24.10.0/targets/x86/generic/openwrt-24.10.0-x86-generic-generic-ext4-combined-efi.img.gz
https://downloads.openwrt.org/releases/24.10.0/targets/x86/64/openwrt-24.10.0-x86-64-generic-ext4-combined.img.gz
https://downloads.openwrt.org/releases/24.10.0/targets/x86/64/openwrt-24.10.0-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』

磁碟清零

  1. 插『SUPERMICR-SATA-DOM-G4GB』磁碟系
  2. 系統管理員身份執行命令視窗CMD
  3. 執行『diskpart』登錄
  4. 執行『list disk』列出磁碟番號
  5. 執行『select disk x』擇當前操作磁碟.『x』替換為磁碟番號,此庶係
  6. 執行『clean』清除.

刻錄『openwrt.img』鏡像

  1. 將『openwrt-24.10.0-x86-64-generic-ext4-combined-efi.img』仝『exe』擺係『c:』
  2. 系統管理員身份執行命令視窗CMD
  3. 執行『.』當前資料夾『c:』
  4. 執行『physdiskwrite -u openwrt.img』
  5. 揀磁碟番號,此庶係
  6. 撳『y』鍵確認, 等待寫入結束.

 

安將『OpenWrt

  1. 插『SUPERMICR-SATA-DOM-G4GB』系路郵主板.
  2. 顯示『OpenWrt』3秒後自動安將.
  3. 當命令行停止吾鬱,撳『Enter』鍵進入命令行.
  4. 睇到『OpenWrt』幾隻字, 掂.
  5. 設置root密碼,執行『passwd xxxxx』
passwd   xxxxx xxxxx係密碼
  1. 執行『ifconfig』指令,默認LAN1網口是LAN口,LAN2網口是WAN口
br-lan 虛擬設備,內網網口集合
Eth0 真實設備,CPU內部到交換芯片之間接口
eth0.1 虛擬設備,VLAN劃分有線內網LAN口,VLAN編號1.
eth0.2 虛擬設備, VLAN劃分有線外網WAN口, VLAN編號2.
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  
eth1  

協議類型

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 proto ‘dhcp’ 動態獲取IP地圵192.168.1.x
option metric ’64’  
option delegate ‘0’  

內網

config interface ‘lan’ 內網
option ifname ‘eth1’ 設備名
option type ‘bridge’ 橋接,交換機模式
option proto ‘static’ 靜態IP地圵
option ipaddr ‘192.168.2.1’ 假定主由路郵ip地圵192.168.1.1
option netmask ‘255.255.255.0’ 掩碼
option gateway ‘192.168.2.1’  
option dns ‘192.168.2.1’  
option ip6assign ’60’  

重啟網絡, 軟路郵與主路郵網線相連

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後臺

 

 

 

 

 

ITX機箱-兩槽

ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽
ITX機箱-兩槽

ITX機箱-買蒞砌臺5G-WIFI路郵,仝前兩部ITX機箱比,設計用心,做工尚佳,两條半高槽,壹條全高槽,祗係漏左起牙, 改用4MM鑼絲鑼帽壓死檔板.

PCIE轉向卡要另外買. 适配轉向卡高61.8MM.

換左6025-0.15A-4PIN風扇, 原配風扇冇得調速.

两個2.5寸磁碟架, 吾頂CPU風扇.

缺點係装吾到『加長ITX底板』好似『X10SDV-TP8F』,祗能装『標准ITX底板』.

 

Physdiskwrite刻錄img鏡像

Physdiskwrite刻錄img鏡像
Physdiskwrite刻錄img鏡像
Physdiskwrite刻錄img鏡像
Physdiskwrite刻錄img鏡像

 

physdiskwrite』刻錄『.img』鏡像, 佢幾乎萬能. 支緩『sata磁碟』『usb磁碟』.

登錄『physdiskwrite』官網. 佢有『圖形版』仝『命令行版』.

https://m0n0.ch/wall/physdiskwrite.php

下載『physdiskwrite-0.5.3.zip

https://m0n0.ch/wall/downloads/physdiskwrite-0.5.3-PhysGUI-bundle.zip
https://m0n0.ch/wall/downloads/physdiskwrite-0.5.3.zip

 

磁碟清零

  1. 系統管理員身份執行命令視窗CMD
  2. 執行『diskpart』登錄
  3. 執行『list disk』列出磁碟番號
  4. 執行『select disk x』擇當前操作磁碟..『x』替换為磁碟番號,此庶係0.
  5. 執行『clean』清除.

 

刻錄『.img』鏡像

  1. 将『.img』仝『physdiskwrite.exe』擺係『c:』
  2. 系統管理員身份執行命令視窗CMD
  3. 執行『cd..』. 當前資料夾『c:』
  4. 執行『physdiskwrite -u openwrt.img』
  5. 揀磁碟番號,此庶係0.
  6. 撳『y』鍵确認, 等待寫入結束.

USB磁碟-格式化提示修复

USB磁碟-格式化提示修复
USB磁碟-格式化提示修复
USB磁碟-格式化提示修复
USB磁碟-格式化提示修复
USB磁碟-格式化提示修复
USB磁碟-格式化提示修复

當插USB磁碟提示要格式化, 可能係磁碟分區遵至.

 

  1. 系統管理員身份執行命令視窗CMD
  2. 執行『diskpart』登錄
  3. 執行『list disk』列出磁碟番號
  4. 執行『select disk x』擇當前操作磁碟..『x』替换為磁碟番號,
  5. 執行『clean』清除.
  6. 撳『控制台』->『系統管理工具』->『電腦管理』
  7. 撳『電腦管理(本機)』->『存放装置』->『磁碟管理』
  8. 系『未配置』撳『新增簡單磁碟區』重建磁碟分區
  9. 『簡單磁碟區大小』默認吾使改
  10. 『指定下列磁碟機代號』默認吾使改
  11. 勾『用下列設定將这個磁碟格式化』
  12. 『檔案系統』揀『FAT32』
  13. 『配置單位太小』揀『預設』
  14. 『磁碟區標籤』默認吾使改
  15. 勾『執行快速格式化』
  16. 格式化後成功修复USB磁碟.

 

 

Stable Diffusion插件-AddNet融合LoRA模型

Stable Diffusion插件-AddNet融合LoRA模型
Stable Diffusion插件-AddNet融合LoRA模型
Stable Diffusion插件-AddNet融合LoRA模型
Stable Diffusion插件-AddNet融合LoRA模型

『Additional Networks』插件 簡稱AddNet.任意實時融合至多5個LoRA模型, 權重係『0~0.5』LoRA模型先發揮作用.  LoRA觸發詞要加到prompt.

https://github.com/kohya-ss/sd-webui-additional-networks

裝『Additional Networks』插件

  1. 撳『Extensions擴展』->『Install from URL網絡安裝』
  2. 『URL for extension’s git repository』填『https://github.com/kohya-ss/sd-webui-additional-networks.git』
https://github.com/kohya-ss/sd-webui-additional-networks.git
  1. 撳『Install』下載
  2. 撳『Extensions擴展』->『Installed已裝』
  3. 撳『Apply and restart UI應用後重啟界面』

 

 

指定LoRa模型資料夾路徑

  1. 撳『Settings』->『Uncategorized』->『Additional Networks』
  2. 填『Extra paths to scan for LoRA models』
C:\stable-diffusion-webui\models\Lora
  1. 撳『Apply settings』應用設定
  2. 撳『Reload UI』重啟

 

 

 

指定LoRa模型權重

  1. 撳『Txt2img』->『Additional Networks』
  2. 勾『Enable』使能.
  3. 撳『refresh models』
  4. 設置LoRA模型.
  5. LoRA觸發詞要加到
  6. 權重設『0~0.5』,0係禁用, 多試幾次降低權重, 修正異常.
  7. 嘗試降低『Denoising strength』重繪幅度『1~0.2』, 修正異常.

SUPERMICR-SATA-DOM-G4GB

SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB
SUPERMICR-SATA-DOM-G4GB

『SATA-DOM』即係SATA插頭迷理磁碟. 細到可以直插係SATA口. 諗住買蒞將openwrt. 讓m.2畀wifi.

上面印『SVFM Compact』, 用超微底板3pin供電.64GB- MLC固態磁盤.

超微底板有5個藍色SATA口, 1個橙色SATA口. 仝供電有關.

橙色SATA口吾使額外供電,靠第7PIN供電.

藍色SATA口靠額外5V供電.

電話咭-Lucky2攻略-港澳中台25GB

電話咭-Lucky2攻略-港澳中台25GB
電話咭-Lucky2攻略-港澳中台25GB
電話咭-Lucky2攻略-港澳中台25GB
電話咭-Lucky2攻略-港澳中台25GB

上次張『Lucky2上網卡-中台澳5GB-香港10G』用曬5GB高速後,低速後用吾够壹個月,張卡切底用吾到.祈有買過張.

『Lucky2上網卡-港澳中台25GB高速數據』.25GB高速用曬後降為512kbps低速任用, 140紋. 希望可以用一年.

插卡後開通『數據漫遊』.即插即用吾使實名登記.

 

Premiere剪接駁片

 

首先利用『Stable Diffusion WebUI』生成人像同背景.

  1. 『Premiere』
  2. 撳『File』->『new』->『Project』新建工程.填『location位置』『name名prpject』.
  3. 『Video Rendering and playback視頻渲染回放』揀GPU加速
Mercury Playback Engine GPU Acceleration GPU加速
Mercury Playback Engine Software Only CPU加速
  1. 『Video Display Format視頻顯示格式』揀『Timecode時間碼』
Timecode時間碼  
Feet+frames 16mm 16mm菲冧
Feet+frames 35mm 35mm菲冧
Frames畫格 祗計影片格數量
  1. 『Audio Display Format音頻顯示格式』
Audio Samples 音頻采樣(時:分:秒:幀)
Milliseconds 亳秒(時:分:秒:亳秒)
  1. 『Capture Format捕捉格式』揀『HDV』, 借助IEEE1394火線.
DV DV摄录機
HDV HDV摄录機
  1. 勾『Display the project item name and label color for all instances』針對所有實例項目名同標簽顏色.
  2. 『暫存盤(scratch disk) 』吾使搞
Documents文檔 用戶檔䅁夾
Same As Project項目 工程路徑
Custom自定 自定檔䅁夾
  1. 『收錄設置(Ingest settings)』
  2. 撳『确定ok』新建工程.
  3. 撳『窗口window』->『工作區workspaces』->『所有面版all panels』.
  4. 創建『序列』, 存放『短片』『聲音』『圖片』.
  5. 直接拖『圖片』入『Project』.
  6. 『時間軸』上層短片軌道覆盖下層短片軌道. 即係前景擺上層, 背景擺下層.
  7. 『圖片Project』拖入『時間軸』.
  8. 制作水印圖,解像與短片一致,係右下角填域名網名帶陰影.透明圖層.輸出 擺係『時間軸』上層.
  9. 制作人像, 借『transparent-background』背景透明人像圖. 解像與短片一致,輸出png圖檔
C:\Program Files\Python310\Scripts\transparent-background-gui.exe
  1. 咪頭錄『配音』. 拖入『Project』. 再拖入『時間軸』.
  2. 撳『space吉格』->『PLAY/STOP』
  3. 撳『file文件』->『導出export』->『媒體MEDIA』
格式Format H.264
預設PRESET Youtube 720p HD
  1. 撳『導出export』.

 

 

 

 

Stable Diffusion插件-Adetailer修復臉形扭曲

Stable Diffusion插件-Adetailer修復臉形扭曲
Stable Diffusion插件-Adetailer修復臉形扭曲
Stable Diffusion插件-Adetailer修復臉形扭曲
Stable Diffusion插件-Adetailer修復臉形扭曲
Stable Diffusion插件-Adetailer修復臉形扭曲

Adetailer自動檢測人臉,針對人臉自動生成遮罩,自動重繪修復臉形扭曲.一氣呵成, 吾使人工幹預.

https://github.com/Bing-su/adetailer
  1. 撳『Extensions擴展』->『Install from URL網絡安裝』
  2. 『URL for extension’s git repository』填『https://github.com/Mikubill/sd-webui-controlnet
https://github.com/Bing-su/adetailer.git
  1. 撳『Install』下載
  2. 撳『Extensions擴展』->『Installed已裝』
  3. 撳『Apply and restart UI應用後重啟界面』

 

  1. 手動下載『adetailer』
  2. 登入CMD命令行模式
  3. 指定當前資料夾
CD C:\stable-diffusion-webui\extensions\
  1. 下載『adetailer
git clone https://github.com/Bing-su/adetailer.git
  1. 如出錯刪下列檔䅁夾,再重新下載
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攻略

WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略
WhatsApp攻略

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

  1. 係『Google Play』下載『WhatsApp』.
  2. 輸入手機冧靶『+852 8888 8888』, 填錯隔機粒鐘先重發.
  3. 等收短訊,6位驗證代碼.
  4. 允許存取『聯絡人』『相片』『媒體』『google帳戶』權限.
  5. 填名.
  6. 上轉頭像.
  7. 設定->帳户->雙重認證. 設6位數字pin碼.
  8. 設定->帳户->電郵地址. 用翻『Google帳户』.

 

 

Google-HK電話冧靶注冊Gmail郵箱

Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱

Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱
Google-注冊Gmail郵箱

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

  1. 撳手機Gmail
  2. 撳『新增郵地址』
  3. 撳『Google』
  4. 『請重新輸入pin碼』
  5. 撳『建立帳戶』, 揀『工作或管理個人業務用途』
  6. 填『姓氏』『名字』
  7. 填『姓別』『出生曰期』
  8. 填Gmail地址, 6個ascii字母『xxxxxx@gmail.com 』
  9. 填Gmail密碼, 分大細寫字母(A~Z)+字符().
  10. 用HK電話冧靶,绑定備援電話.

 

 

 

 

 

 

 

 

 

 

 

 

電話咭-Lucky2攻略-中台澳5GB-香港10GB

電話咭-Lucky2攻略-中台澳5GB-香港10GB
電話咭-Lucky2攻略-中台澳5GB-香港10GB

鴨寮街Lucky2上網卡,冇電話冧靶,自然冇得接打電話,冇得收發短信.插卡後開通『數據漫遊』.即插即用吾使實名登記.

香港10GB高速數據,中台澳5GB高速數據.用曬後降為低速任用,即係365日冇限數據,鴨寮街價70蚊,SIM卡+卡針.

張卡用曬5GB高速後,低速後用吾够壹個月,張卡切底用吾到.

部主力機插左雙卡,手頭有部老竇舊手機,開熱點畀屋企手機電腦上網,等遲D先買插sim卡wifi郵路.實测youtube係畫質240p流畅.

  1. 手機插入『sim卡』
  2. 開『數據漫遊』
  3. 開『熱點』命名為『Lucky2』, 分享畀電腦.

 

電腦

  1. 切斷有線網络絡, 至簡單係猛條網線, 或者撳『控制台\所有控制台項目\網路連線』->停用『乙太網路』.
  2. 『WIFI』連『Lucky2』.

 

 

FFmpeg-DVD轉MP4

FFmpeg-DVD轉MP4
FFmpeg-DVD轉MP4

加時電腦腦冇配DVD,機箱冇5.25寸口,取而代之係家用NAS伺服機,16TB容量够存幾千DVD碟.用『FFmpeg』將DVD入面VOB轉MP4. 例

G:\VIDEO_TS\VTS_01_1.VOB
  1. 首先部署『FFmpeg
  2. 登录『命令行CMD
  3. 填下列指令將DVD轉MP4
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 質量最低 文檔最小

 

SUPERMICR X10SDV-4C-TLN2F

SUPERMICR X10SDV-4C-TLN2F
SUPERMICR X10SDV-4C-TLN2F
SUPERMICR X10SDV-4C-TLN2F
SUPERMICR X10SDV-4C-TLN2F
M.2-2280純銅散熱
M.2-2280純銅散熱

超微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.

 

Windows10下載機

Windows10下載機
Windows10下載機

本蒞諗住係『truenas』,用虛擬機装『Windows10』做『下載機』.實制未能充份利用CPU同Memory.更好係直接装『Windows10』.摆係角落用WIFI做冇線『下載機』.

配置都係淘汰件.最衰『ITX機箱』密吾透氣, 粒『XEON E5-2630LV3』係幾分鐘內超過壹百度.裝『AVC 9025』疏風.拆com口擋版透氣.裝『AVC 5020』直吹CPU.

  1. 网络唤醒
  2. Windows-SMB共享
  3. Microsoft 遠端桌面

 

下載機 配置
火牛 臺逵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

 

 

 

Windows10-WakeOnLAN網絡喚醒

Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒
Windows10-WakeOnLAN網絡喚醒

係舊時網卡附有『3pin-WOL』插主板,實現『網絡喚醒』, 好彩依時主板附帶網口吾使『3pin-WOL』線. 『網絡喚醒』通過網線發送『喚醒魔術包』將『休眠』『睡眠』『閂機』電腦呌醒, 『閂機』後呌吾醒,可能Windows10電源管理引起.冇線WIFI吾得『網絡喚醒』,有線網卡先得『網絡喚醒』.

 

係主板BIOS設置『網絡喚醒』

  1. 著機撳『Delete』鍵登錄BIOS
  2. 撳『Advanced』->『Wake Up Function』
  3. 撳『Lan Wake Up』揀『Enabled』
  4. 撳『Advanced』->『Network stack Configuration』
  5. 撳『Network Stack』揀『Enabled』
  6. 撳『IPv4 PXE Support』揀『Enabled』
  7. 撳『IPv4 PXE Support』揀『Enabled』
  8. 『save』後退出

 

Windows10網卡設置

  1. 撳『控制台』->『裝置管理員』->『網路介面卡』
  2. 撳『有線網卡』似『Ethernet』
  3. 勾『允許電腦關閉這個裝置以節省電源』
  4. 勾『允許這個裝置喚醒電腦』
  5. 勾『只允許magic封包喚醒電腦』後『WakeOnLAN』睇吾電腦醒未.吾勾『WakeOnLAN』發送PING包可能會自動著機.
  6. 撳 『確定』

 

Windows10電源選項,混合式關機停用 WOL.

  1. 撳 『控制台』->『電源選項』
  2. 撳 『選擇電源按鈕的功能 』
  3. 禁止『開啟快速啟動 (建議選項) 』. 事因『混合式關機』停用
  4. 撳 『儲存變更』

 

Windows10電源選項

  1. 撳『控制台』->『電源選項』->『進階設定』
  2. 撳『睡眠』->『允許混合式睡眠』設定 『關閉』. 事因『混合式關機』停用
  3. 撳『PCI Express』->『連結狀熊電源管理』設定 『關閉』. 閂機後令網依然通電.
  4. 撳 『儲存變更』

 

Windows10網絡喚醒

  1. 下載『11.11.0.exe』後裝.
  2. 進『命令行模式CMD』用『ipconfig /all』得網卡『MAC位圵』同埋『主機名稱』. 『MAC位圵』6字節『xx:xx:xx:xx:xx:xx』.
  3. 𢴇行『exe』
  4. 撳『檔案FILE』->『新增主機New Host』
  5. 『Name名稱』求其填.
  6. 『Group群組』填『WORKGROUP』
  7. 『MAC Address位圵』似『xx:xx:xx:xx:xx:xx』6字節.
  8. 勾『Broadcast IP廣播位址IP』
  9. 『Broadcast子網路遮罩』填『168.1.255』
  10. 『FQDN/IP電腦名稱』填『主機名』或『IPV4地圵』
  11. 『UDP Port端口』填『9』
  12. 撳 『確定』
  13. 撳 『喚醒主機』
  14. 撳『遠端桌面』控制主機
  15. 撳『PING』後發送PING包可能會自動著機.

 

睡眠(S3)  
休眠(S4)  
關機(S5)  

 

 

 

 

ITX機箱-側透

ITX機箱-側透
ITX機箱-側透
ITX機箱-側透
ITX機箱-側透
ITX機箱-側透
ITX機箱-側透

諗住買『ITX機箱』蒞装翻『X99-ITX』同埋『QUADRO K6000』,需配『益衡SFX模組火牛750W 』,機箱背板係標准內凹設計.揀佢.

整體尚可, 叁條槽3090ti,最多可装肆12CM風扇.

  1. 電源線駁長成條賓洲. 重新造220v插頭,
  2. 『5寸磁碟』装肆粒磁石吸係火牛.
  3. 『5寸磁碟』可借助水冷支架.

x99-50mm風扇散熱支架

x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架
x99-50mm風扇散熱支架

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

係網買『AVC 5020』睇蒞係拆機,線極短. 標『0.25a』但係噪聲大.

Logitech MX BRIO

Logitech MX BRIO
Logitech MX BRIO
Logitech MX BRIO
Logitech MX BRIO
Logitech MX BRIO
Logitech MX BRIO

上世紀末已有電腦摄像頭,一直冇買蒞玩,前排買過中古『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

 

SAMSUNG SM961-512GB

SAMSUNG SM961-512GB
SAMSUNG SM961-512GB
SAMSUNG SM961-512GB
SAMSUNG SM961-512GB

『SM961-512GB』買蒞做下載機系統碟,健康得78%.比之前買『SM961-256GB』平一半. 『讀』3553MB/S『寫』1639MB/S. 比『SM961-256GB』讀寫仲快.

SAMSUNG SM961 叁數
型號 SM961
SIZE 512GB
3553mb/s
1639mb/s
協議 NVME
插口 M.2 PCIE3.0X4
顆粒 MLC

 

ITX機箱-3槽

ITX機箱-3槽
ITX機箱-3槽
ITX機箱-3槽
ITX機箱-3槽
ITX機箱-3槽
ITX機箱-3槽

雜牌ITX機箱買蒞諗住做『影音機』,肆面密吾透氣.得『4020風扇』抽風.貪佢有3條槽.

RYZEN5-1500X』+『原裝幽靈風扇』仲免强頂得住. 換左『XEON E5-2630LV3』+『纯銅散熱』+『猫頭鷹NF-A6x25』慶過辣雞.幾分鐘內超百度.两粒U都係功耗60w,睇蒞此類機箱CPU極限60w.

加裝两個『AVC 9025』疏風.冚辦闌COM口擋版拆蒞透氣.裝埋『AVC 12025』直吹CPU.

 

 

 

 

 

Microsoft 遠端桌面

Microsoft 遠端桌面
Microsoft 遠端桌面
Microsoft 遠端桌面
Microsoft 遠端桌面
Microsoft 遠端桌面
Microsoft 遠端桌面
Microsoft 遠端桌面
Microsoft 遠端桌面

使Windows10作為『網盤』『BT』下載機, 再蒞用『Microsoft 遠端桌面

遠程控制下載機.

 

『下載機』開啟遠端桌面

  1. 撳『設定』->『系統』->『關於』->『遠端桌面』
  2. 『啟用遠端桌面』撳『開啟』

 

『下載機』設定電源與睡眠

  1. 『螢幕 插電時, 在下列時間後關閉』揀『永不』
  2. 『睡眠 當電腦連接電源時, 會在下列時間後進入睡眠狀態』揀『永不』
  3. 撳『設定』->『系統』->『關於』->『進階系統設空』
  4. 撳『遠端』
  5. 勾『允許到這部電腦的遠端栛助連線』
  6. 勾『允許遠端連線到此電腦』
  7. 撳『套用』

 

Microsoft 遠端桌面

  1. 撳『+新增』
  2. 『電腦名稱』填『下載機』名稱
  3. 『使用者帳戶』填『下載機』登入帳戶

TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像

TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像
TrueNAS RAID1-SEAGATE-16TBx2-Create Pool砌Raid1鏡像

新買『SEAGATE-16TB』同之前剩低两個组成raid0,插两『SEAGATE-16TB』. 同舊版本『trueNAS』有小小吾同.

  1. 撳『Storage Dashboard儲存』.
  2. 撳『Create Pool建立儲存集區』.
  3. 『name』填『pool0』,以『pool0/pool1/pool2』命名.
  4. 『Layout』揀『Mirror鏡像』即係『Raid1』.
  5. 『Width』揀『2』,两個磁碟.
  6. 『Log』吾使設置
  7. 『Spare』吾使設置
  8. 『Cache』吾使設置
  9. 『Metadata』吾使設置
  10. 『Dedup重複資料刪除』吾使設置
  11. 撳『Create Pool建立儲存集區』.

 

通過網络訪問NAS『Sharing共用』

  1. 創建User
  2. 創建Dataset
  3. Windows (SMB) Shares
  4. UNIX (NFS) Shares
  5. Block (iSCSI) Shares Targets

 

 

 

Stripe Raid0
Mirror鏡像 Raid1
Raid-Z Raid5

 

Stable Diffusion外網訪問–share

Stable Diffusion外網訪問--share
Stable Diffusion外網訪問–share

Stable_Diffusion_share

Stable Diffusion外網訪問–share

之前利用『–listen』係內網訪問『Stable Diffusion』電腦,利用『–share』係外網訪問『Stable Diffusion』.

  1. 編缉『webui-user.bat』
C:\stable-diffusion-webui\webui-user.bat
  1. 對『bat』添加『– share』参數.
set COMMANDLINE_ARGS=–share
  1. 下載『frpc_windows_amd64.exe』.
https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_windows_amd64.exe
  1. 重命名為『frpc_windows_amd64_v0.2』,冇擴展名.
  2. 复制到『gradio』資料夾
C:\stable-diffusion-webui\venv\lib\site-packages\gradio
  1. 得到『https://684da9579597aa77c4.gradio.live』 此鏈接在72小時後過期
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)

 

Stable Diffusion下載安裝-ControlNet

Stable Diffusion下載安裝-ControlNet
Stable Diffusion下載安裝-ControlNet
Stable Diffusion下載安裝-ControlNet
Stable Diffusion下載安裝-ControlNet
Stable Diffusion下載安裝-ControlNet
Stable Diffusion下載安裝-ControlNet

『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:

  1. 撳『Extensions擴展』->『Install from URL係網裝』
  2. 『URL for extension’s git repository』填『https://github.com/Mikubill/sd-webui-controlnet
https://github.com/Mikubill/sd-webui-controlnet.git
  1. 撳『Install』下載

 

下載插件方式2:

  1. 撳『Extensions擴展』->『Available可下載』
https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json
  1. 撳『Load from:加載擴展列表』搜索下載列表.
  2. 『sd-webui-controlnet』撳『Install』下載

 

  1. 撳『Extensions擴展』->『Installed已裝』
  2. 撳『Check for updates檢查更新』
  3. 撳『Apply and restart UI應用後重啟界面』
  4. 係『txt2img』『img2img』下側『ControlNet』
  5. 如果出錯刪下列檔䅁夾, 在重新下載
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』雙精度模型.

control_v11e_sd15_ip2p.pth InstructP2P
control_v11e_sd15_ip2p.yaml  
control_v11e_sd15_shuffle.pth Shuffle随機洗牌
control_v11e_sd15_shuffle.yaml  
control_v11f1e_sd15_tile.pth Tile/Blur
control_v11f1e_sd15_tile.yaml  
control_v11f1p_sd15_depth.pth Depth深度
control_v11f1p_sd15_depth.yaml  
control_v11p_sd15_canny.pth Canny硬邊緣
control_v11p_sd15_canny.yaml  
control_v11p_sd15_inpaint.pth Inpaint局部重繪
control_v11p_sd15_inpaint.yaml  
control_v11p_sd15_lineart.pth Lineart線稿
control_v11p_sd15_lineart.yaml  
control_v11p_sd15_mlsd.pth MLSD直線
control_v11p_sd15_mlsd.yaml  
control_v11p_sd15_normalbae.pth NormalMap法線貼圖
control_v11p_sd15_normalbae.yaml  
control_v11p_sd15_openpose.pth OpenPose姿勢
control_v11p_sd15_openpose.yaml  
control_v11p_sd15_scribble.pth Scribble䓍圖
control_v11p_sd15_scribble.yaml  
control_v11p_sd15_seg.pth Segmentation語義分割
control_v11p_sd15_seg.yaml  
control_v11p_sd15_softedge.pth SoftEdge軟邊緣
control_v11p_sd15_softedge.yaml  
control_v11p_sd15s2_lineart_anime.pth Lineart anime動圖線稿
control_v11p_sd15s2_lineart_anime.yaml  

 

『單精度模型』

https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main

下載『ControlNet』單精度模型.

control_lora_rank128_v11e_sd15_ip2p_fp16.safetensors
control_lora_rank128_v11e_sd15_shuffle_fp16.safetensors
control_lora_rank128_v11f1e_sd15_tile_fp16.safetensors
control_lora_rank128_v11f1p_sd15_depth_fp16.safetensors
control_lora_rank128_v11p_sd15_canny_fp16.safetensors
control_lora_rank128_v11p_sd15_inpaint_fp16.safetensors
control_lora_rank128_v11p_sd15_lineart_fp16.safetensors
control_lora_rank128_v11p_sd15_mlsd_fp16.safetensors
control_lora_rank128_v11p_sd15_normalbae_fp16.safetensors
control_lora_rank128_v11p_sd15_openpose_fp16.safetensors
control_lora_rank128_v11p_sd15_scribble_fp16.safetensors
control_lora_rank128_v11p_sd15_seg_fp16.safetensors
control_lora_rank128_v11p_sd15_softedge_fp16.safetensors
control_lora_rank128_v11p_sd15s2_lineart_anime_fp16.safetensors
control_v11e_sd15_ip2p_fp16.safetensors
control_v11e_sd15_shuffle_fp16.safetensors
control_v11f1e_sd15_tile_fp16.safetensors
control_v11f1p_sd15_depth_fp16.safetensors
control_v11p_sd15_canny_fp16.safetensors
control_v11p_sd15_inpaint_fp16.safetensors
control_v11p_sd15_lineart_fp16.safetensors
control_v11p_sd15_mlsd_fp16.safetensors
control_v11p_sd15_normalbae_fp16.safetensors
control_v11p_sd15_normalbae_fp16.safetensors
control_v11p_sd15_openpose_fp16.safetensors
control_v11p_sd15_scribble_fp16.safetensors
control_v11p_sd15_seg_fp16.safetensors
control_v11p_sd15_softedge_fp16.safetensors
control_v11p_sd15s2_lineart_anime_fp16.safetensors
control_v11u_sd15_tile_fp16.safetensors

 

下载支持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

 

  1. 撳『Settings』->『Stable Diffusion』
  2. 『Random number generator source.亂數生成源』揀『CPU』.
  3. 撳『Settings』->『Sampler parameters』
  4. 勾『SGM noise multiplier』將初始雜訊與官方SDXL實現相配-僅適用於再現影像.
  5. 撳『Settings』->『Compatibility』
  6. 勾『Do not make DPM++ SDE deterministic across different batch sizes.』保留 DPM++SDE采样器在不同批量之间结果差异.
  7. 撳『Apply settings』應用設定.
  8. 撳『Reload UI』重置圖形界面.

 

 

係『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® GS116EV2千兆交換機

NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
NETGEAR® GS116EV2千兆交換機
CAT8
CAT8

中古『NETGEAR® GS108』得8網口,諗住買16口『NETGEAR® GS116EV2』.两百幾紋.

『NETGEAR』網口左右各壹眼LED燈.左燈著『100m/bps』带寬,右燈著『10m/bps』带寬, 左右燈著『1000m/bps』带寬.

電腦網卡左燈著係『通電』燈,右燈係信號指示燈.

點知『GS116EV2』有壹個網口得『100m/bps』带寬,可熊係網線造成,重新夾CAT8頭.也可能另壹邊網卡『100m/bps』带寬造成,『JBL-L75MS』係『100m/bps』带寬.

 

 

蒞電著機

『AC Power Loss』『Power On』蒞電著機
『AC Power Loss』『Power On』蒞電著機

仲係『pentium Ⅱ』年代,『INTEL原廠』底板識插電著機, 砌『NAS』『Router』係斷電後『蒞電著機』. 以保障『網络』.

  1. 著機撳『del』鍵, 进入『BIOS』.
  2. 『Advanced』->『Wake Up Function』->『AC Power Loss』
  3. 揀『Power On』蒞電著機.
  4. 揀『Last State』恢复電前状態.

 

JBL-L75MS總合音樂系統

JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統

 

AUX3.5MM
AUX3.5MM
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統
JBL-L75MS總合音樂系統

本蒞諗住買『惠威M-80W』,聽講質量麻麻一直冇落手.

睇中『JBL-L75MS』, 兩個5.25寸低音, 兩個1寸高音, 壹個4寸中音. 總合係單壹箱內.搞特價4798果斷落手.

順風寄蒞,三重紙箱, 『音箱』長790MM摆吾入書架.

附件有『電池』『摇控』『勾』『指南書』『電線』. 冇畀『3.5MM音頻線』, 好在支持『RJ45網線』『WIFI』『USB線』『藍牙』

 

『藍牙』連線

  1. 首先撳『音箱』頂『中間䭈』, 至『藍牙』燈閃
  2. 撳『中間制』3秒吾放
  3. 依加先著『藍牙』,連『JBL-L75ms』.

 

『AUX3.5MM』音箱線

Windows10藍牙連線-吾知係咪藍牙驅動造成,間歇冇聲斷聲,後蒞買两頭3.5MM插頭連線.

 

『WLAN』網口

插網線後,通過手機電腦連線『192.168.1.5』,有可能係其它ip,登錄『音箱』後台. 可以連『wifi』.

 

『USB』口

插USB線冇反應,事因佢插USB磁碟.

  1. 將古仔錄入USB磁碟.
  2. 撳搖控『雲』鍵
  3. 通過『手機』『電腦』連線『http://192.168.1.5/webclient/』
  4. 撳『USB』擇古仔.
  5. 閂網頁後音箱依然播放.
  6. 撳搖控『Play/Pause』鍵

 

 

連『WIFI』

插網線後,通過手機電腦連線『192.168.1.5』

  1. 撳『Network Settings』
  2. 撳『Start scan』
  3. 勾『SSID』-wifi名
  4. 填『Password』密碼
  5. 撳『Configure』儲存

 

 

『SFX』聲場增強

摇控『SFX』鍵-加强室內立體聲寬廣聲場,冇效果.

 

『接地』

有獨立接地口,閉環接地線,屋企接地係邊?

 

『低音』BASS CONTOUR

『低音調節』撥『-3DB』加重低音輸出. 聽人聲吾使撥.

 

 

 

 

 

 

 

 

 

ATX火牛20PIN轉24PIN

ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN
ATX火牛20PIN轉24PIN

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

 

益衡SFX模組750W火牛ENP-8175

益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
益衡SFX模組750W火牛ENP-8175
24PIN
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網絡共享

Stable Diffusion網絡共享
Stable Diffusion網絡共享
Stable Diffusion網絡共享
Stable Diffusion網絡共享
Stable Diffusion網絡共享
Stable Diffusion網絡共享
Stable Diffusion網絡共享
Stable Diffusion網絡共享

壹臺『Stable Diffusion』電腦,可以有多塊『NVIDIA-GPU顯卡』,發熱噪聲犀利, 唯有擺係機房仔,係內網用『手機』『平板』『電腦』訪問『Stable Diffusion』.

  1. 編缉『webui-user.bat』
C:\stable-diffusion-webui\webui-user.bat
  1. 對『bat』添加『–listen』参數.
set COMMANDLINE_ARGS=–listen
  1. 𢴇行『webui-user.bat』 ip地埗『http://0.0.0.0:7860』
  2. 『http://0.0.0.0』指本機ip地埗
  3. 進入『命令行模式CMD
  4. 用『ipconfig』睇ipv4地埗係『http://192.168.1.8』, 台台機吾同.
  5. 『http://192.168.1.8:7860』訪問『Stable Diffusion』

 

係win10仲要防火牆加網埠監聽.

  1. 『控制台』->『windows defender防火牆』->『進皆設定』
  2. 『輸入規則』->『新增規則』
  3. 勾『連接埠』
  4. 勾『TCP(T) 』
  5. 勾『特定本機連接埠』填『7860』
  6. 勾『允許連線』
  7. 勾『網域(D)』『私人(P)』『公用(U)』
  8. 『名稱』填『Stable Diffusion』

AFUDOS

AFUDOS.EXE
AFUDOS.EXE

更新『AMI-BIOS』有『AFUWIN』同埋『AFUDOS』, 但係『AFUWIN』吾支緩『win10』, 得翻『AFUDOS』 .

  1. 用『Rufus』制作『MS-DOS』引導『USB磁碟』.
  2. 將『EXE』同埋『BIOS.BIN』复制入USB磁碟.
  3. 登入BIOS以『USB磁碟』引導進入『MS-DOS』.
  4. 以『EXE BIOS.BIN /P』更新BIOS.
  5. 更新BIOS過程,切勿停電或重啟電腦,導致BIOS寫神,未能BOOT機.
示例
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

 

Rufus-USB開機磁碟

Rufus-USB開機磁碟
Rufus-USB開機磁碟

華南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』.

  1. 『開機模式』揀『MS-DOS』
  2. 『資料分割配置』揀『MS-DOS』
  3. 『目标系統』揀『BIOS(uefi-CSM)』
  4. 撳『執行』
  5. 复制『exe』『bios.bin』入usb磁碟
  6. 重啟撳『DELETE』入『BIOS』.
  7. 撳『USB開機磁碟』入『MS-DOS』.
  8. 輸『exe bios.bin』撳『ENTER』, 更新『BIOS』.

 

http://rufus.ie
https://github.com/pbatard/rufus/releases/download/v4.5/rufus-4.5.exe

 

Sound Forge聲音處理程式

Sound Forge聲音處理程式
Sound Forge聲音處理程式

諗住剪日語五辻聲带片頭,係學電腦初年『andre LaMothe』講過『Sound Forge』易入門,且聲音處理佢至掂.拖入原始聲音檔

  1. 用滑鼠拖選聲带片頭
  2. 撳『EDIT』->『CUT』
  3. 撳『File』->『Save As』
  4. 『存檔類型揀』揀『MP3 Audio(*.mp3)』
  5. 撳『Save』存為

Stable Diffusion模型下載

Stable Diffusion模型下載『基礎模型』
Stable Diffusion模型下載『基礎模型』

當睇到下面信息『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-下載安裝

Stable Diffusion下載安裝
Stable Diffusion下載安裝
Stable Diffusion下載安裝
Stable Diffusion下載安裝
Stable Diffusion下載安裝
Stable Diffusion下載安裝

Stable Diffusion』開源AI划畫畵程式. 輕易係網络下載,部署係電腦行.

https://github.com/AUTOMATIC1111/stable-diffusion-webui

『提示詞』畀『Clip』解讀, 『Diffusion』逐步生成圖像.

『提示詞』->『Clip』->『Diffusion』->『VAE』->『畵』

 

硬件要求

  1. NVIDIA RTX孖2080Ti-組NVLink.
  2. 固態磁碟吾細於20gb

 

部署運行環境.

  1. Python下載安装, 必需裝『Python 3.10.6
  2. git下載安装
  3. PyTorch下載安裝
  4. gfpgan
  5. Clip
  6. open_clip
  7. httpx
  8. transformers』模型分詞器.
  9. torchmetrics
  10. open-clip-torch
  11. v1-5-pruned-emaonly.safetensors
  12. Stable Diffusion模型下載

 

部署Stable Diffusion

  1. 撳『Win+r』填cmd
  2. 碟符『c:』撳『enter』
  3. 撳『.』入『c:』碟根
  4. 『GIT』克隆『Stable Diffusion』, 填下面克隆碼.
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
  1. 等待克隆结束, 出現100%-done
  2. 吾对下載『stable-diffusion-webui-1.0.0-pre.zip』版本過舊.
  3. 复制『exe』路徑,『Stable Diffusion』自動复制python. 非『Python 3.10.6』唔匹配.
“C:\Program Files\Python310\python.exe”
  1. 以記事本编輯『C:\stable-diffusion-webui\webui-user.bat』
  2. 编輯『webui-user.bat』
@echo off
set PYTHON=”C:\Program Files\Python310\python.exe”
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=–xformers
call webui.bat
  1. 刪『C:\stable-diffusion-webui\venv』資料夾.
  2. 執行『C:\stable-diffusion-webui\webui-user.bat』.
  3. 非『Python 3.10.6』唔匹配.
ERROR:Could not find a version that satisfies the requirement torch
ERROR:NO matching distribution found for torch
  1. 檢查最新版pip時出錯.
WARNING:There was an error checking the latest version of pip.
  1. 手動升級pip至最新版.
python -m pip install –upgrade pip
C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install –upgrade pip
  1. PyTorch未稳到gpu
RuntimeError: Torch is not able to use GPU; add –skip-torch-cude-test to COMMANDLINE_ARGS variable to disable this check
  1. 跳過gpu檢測, 編輯『webui-user.bat』.
set COMMANDLINE_ARGS=–xformers –skip-torch-cuda-test
  1. 未有裝gfpgan
RuntimeError: Couldn’t install gfpgan.
  1. 未有裝Clip
RuntimeError: Couldn’t install clip.
  1. 未有裝open_clip
RuntimeError: Couldn’t install open_clip.
  1. 未有裝『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.
  1. 未有裝httpx
TypeError: AsyncConnectionPool.__init__() got an unexpected keyword argument ‘socket_options’
  1. 未有裝torchmetrics
ImportError: cannot import name ‘_compare_version’ from ‘torchmetrics.utilities.imports’ (C:\stable-diffusion-webui\venv\lib\site-packages\torchmetrics\utilities\imports.py)
  1. 『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
  1. 若中斷可刪『venv』重构
C:\stable-diffusion-webui\venv
  1. 當妳睇到『http://127.0.0.1:7860』網頁,証明掂左, 『Stable Diffusion』奉行『輵』『殼』分离哲學. 『http://127.0.0.1:7860』係『殼』, 『殼』崩潰吾會會影影響『輵』.
Running on local URL:  http://127.0.0.1:7860

 

 

open-clip-torch下載安裝

open-clip-torch下載安裝
open-clip-torch下載安裝

安裝『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’
  1. 進入『命令行模式CMD
  2. 執行下列安裝指令
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

 

v1-5-pruned-emaonly.safetensors下載安裝

v1-5-pruned-emaonly.safetensors下載安裝
v1-5-pruned-emaonly.safetensors下載安裝

『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

 

transformers更新安裝

更新transformers模型分詞器
更新transformers模型分詞器
安裝transformers模型分詞器.
安裝transformers模型分詞器.

當妳『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.
  1. 進入『命令行模式CMD
  2. 裝『transformers』模型分詞器.
pip install transformers
C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install transformers
  1. 更新『transformers』 模型分詞器
pip install –upgrade transformers
C:\stable-diffusion-webui\venv\Scripts\python.exe -m pip install –upgrade transformers

 

 

torchmetrics下載安裝

torchmetrics下載安裝
torchmetrics下載安裝

安裝『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

 

httpx下載安裝

httpx下載安裝
httpx下載安裝

安裝『Stable Diffusion』時報錯

TypeError: AsyncConnectionPool.__init__() got an unexpected keyword argument ‘socket_options’
  1. 進入『命令行模式CMD
  2. 執行下列安裝指令
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

 

 

 

OpenCLIP下載安裝

OpenCLIP下載安裝
OpenCLIP下載安裝

安裝『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

 

NVIDIA RTX孖2080Ti-組NVLink

NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX孖2080Ti-組NVLink
NVIDIA RTX 2080Ti NVLink Nvidia-smi
NVIDIA RTX 2080Ti NVLink Nvidia-smi
552.22-desktop-win10-win11-64bit-international-nsd-dch-whql
552.22-desktop-win10-win11-64bit-international-nsd-dch-whql
NVLinkTest
NVLinkTest

諗住買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
  1. 登入『命令列介面cmd』.
  2. 撳『nvidia-smi
  3. 睇到孖『NVIDIA GeForce RTX 2080 Ti』

 

新顯卡NVLINK金手指有封膜,撕左插入NVLINK桥即掂.冇使搞BIOS.

  1. 撳『NVIDIA控制面板』
  2. 撳『3D設定』->『設定SLI,Surround,PhysX』->『SLI設定』
  3. 勾『最大3D效能』

 

下載『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下載安裝

Clip下載安裝
Clip下載安裝
Clip下載安裝
Clip下載安裝

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

 

GFPGAN下載安裝

gfpgan下載安裝
gfpgan下載安裝

安裝『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

 

PyTorch下載安裝

PyTorch下載安裝
PyTorch下載安裝
PyTorch下載安裝
PyTorch下載安裝

『Torch』基於神經網络人工智慧輵, 『PyTorch』係『Python』版本

首先确認NVIDIA顯卡支持CUDA版本. 下載最新顯卡驅動『552.22-desktop-win10-win11-64bit-international-nsd-dch-whql.exe』

 

網络安装『PyTorch

  1. 進『命令行模式CMD
pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu121

 

本地安装『PyTorch

  1. 進『命令行模式CMD
  2. 行『NVIDIA-SMI.exe
  3. 确認『torch版』+『cuda版』+『python版』+『win/linux版』
  4. 部機『torch-2.3.0』+『cuda-12.4』+『python-3.10.6』+ 『Win-x64』
  5. 版本配對『cp=python』,『cu<=cuda』
https://download.pytorch.org/whl/torch/
  1. 直接将『.whl』下載落蒞直接本地安裝『torch-2.3.0+cu121-cp310-cp310-win_amd64.whl
https://download.pytorch.org/whl/cu121/torch-2.3.0%2Bcu121-cp310-cp310-win_amd64.whl#sha256=002027d18a9c054f08fe9cf7a729e041229e783e065a71349015dcccc9a7137e
  1. 將『.whl』摆係『D:』碟.
  2. 管現員身份進入命令行模式cmd
  3. 『pip install whl “d:\torch-2.3.0+cu121-cp310-cp310-win_amd64.whl”』
  4. 檢查最新版pip時出錯.
WARNING:There was an error checking the latest version of pip.
  1. 管現員身份進入命令行模式cmd
Defaulting to user installation because normal site-packages is not writeable
  1. 手動升級pip至最新版. 以管理員身份𢴇行.
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/

 

NVIDIA TESLA P40

NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40
NVIDIA TESLA P40 GPU REGEDIT
NVIDIA TESLA P40 GPU REGEDIT
NVIDIA TESLA P40 GPU
NVIDIA TESLA P40 GPU
NVIDIA TESLA P40 GPUZ
NVIDIA TESLA P40 GPUZ
NVIDIA TESLA P40 NVIDIA-SMI
NVIDIA TESLA P40 NVIDIA-SMI
NVIDIA TESLA P40 NVIDIA GPU
NVIDIA TESLA P40 NVIDIA GPU
NVIDIA TESLA P40 NVIDIA GPU
NVIDIA TESLA P40 NVIDIA GPU

睇人AI繪畫,諗住買NVIDIA顯卡,中古RTX3060都要兩千幾,

可能係機房大批淘汰,Tesla P40-24GB係網大量焦拋售,柒百伍包郵,成色麻麻.配NVIDIA-8pin專用供電線,睇佢散熱槽,應該係風道式散熱. 係屎窟裝涡輪風扇, 點知電流大噪䡰大,再加30%降壓線壓低風.

 

使能PCIE-Above 4G

  1. 著機撳DEL鍵,BIOS
  2. ENABLED PCIE-Above 4G

 

驅動下載

  1. 登入https://www.nvidia.com/Download/index.aspx?lang=en-us
填NVIDIA Driver Downloads
NVIDIA Driver Downloads
Product Type Data Center Tesla
Product Series P-Series
Product Tesla P40
Operating System Windows 10 64-bit
  1. 撳Search
  2. 下載『33-data-center-tesla-desktop-win10-win11-64bit-dch-international.exe
  3. 重裝『Quadro K6000』驅動會自動裝埋『Tesla P40』
  4. 登入『命令行界面cmd』.
  5. 撳『nvidia-smi
  6. 分別係『Tesla P40』『Quadro K6000

 

『Tesla P40』裝驅動 默認係『TCC計算模式』, 需改為『WDDM圖形模式』.

  1. 撳『Win+r』鍵,著『exe』
  2. 左側展開
Computer \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}
  1. 展開左側
  DriverDesc
0000 NVIDIA Tesla P40
0001 NVIDIA Quadro K6000
  1. 修改『0000』-『NVIDIA Tesla P40』
NAME TYPE VALUE
AdapterType REG_DWORD 1  – DELETE
FeatureScore REG_DWORD 0Xcf->0Xd1
GridLicensedFeatures REG_DWORD 7   (强制開啟GRID圖形模式)
EnableMsHybrid REG_DWORD 1
  1. 修改『0001』-『NVIDIA Quadro K6000
NAME TYPE VALUE
EnableMsHybrid REG_DWORD 2
  1. 重啟電腦
  2. 登入『命令行界面cmd』.
  3. 撳『ctrl+alt+del』鍵, 入『工作管理員』
  4. 撳『效能』,睇到『GPU0-NVIDIA Tesla P40』同埋『GPU0-NVIDIA Quadro K6000』. 『掂』
  5. 撳『nvidia-smi
  6. 『NVIDIA Tesla P40』改為『WDDM圖形模式』
  7. 進入『GPU-Z』
  8. 下面框框冚辦闌打勾勾

 

圖形設定指定-GPU: NVIDIA Tesla P40

  1. 撳『設定』
  2. 撳『系统』->『顯示器』->『圖形設定』
  3. 『硬體加速GPU排程』撳『開啟』
  4. 揀『傅统型應用程式』
  5. 撳『瀏覧』揀『.EXE』
  6. 撳『選項』
  7. 勾『GPU: NVIDIA Tesla P40』

 

NVIDIA GPU指定『Tesla P40』

  1. 入『NVIDIA控制面板』
  2. 撳『3D設定』->『管理3D設定』
  3. 『廣域設定』
  4. 『CUDA-GPU』揀『Tesla P40』
  5. 『OpenGL呈現GPU』揀『Tesla P40』

 

 

 

nvidia-smi

nvidia-smi
nvidia-smi

『nvidia-smi.exe』, 係nvidia公司開發蒞睇gpu. 基於命令行界面, 而非圖形界面. 可能考慮兼容同稳定.随nvidia顯卡驅動安裝自動复制,路徑如下.

C:\Windows\System32\nvidia-smi.exe
  1. 撳『win+r』, 填cmd, 登入『命令行界面』.
  2. 撳『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下載安装

CUDA下載安装
CUDA下載安装

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/

 

git下載安裝

 

git系統等於『檔案伺服』外加『版本管理』,家時最新2.45.0版.

  1. 連入git官網
  2. 撳Download
  3. 撳Windows
  4. 下載最新版
  5. 執行『Git-2.45.0-64-bit.exe
  6. 走勾『only show new options』只顯示新選項,撳『next』
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) 管理大型儲存庫

 

 

 

 

https://git-scm.com/
https://git-scm.com/download/win
https://github.com/git-for-windows/git/releases/download/v2.45.0.windows.1/Git-2.45.0-64-bit.exe

 

Python下載安裝

Python下載安裝
Python下載安裝
Python下載安装
Python下載安装
Python下載安装
Python下載安装
Python下載安裝
Python下載安裝
Python下載安裝
Python下載安裝

Python』其實係『虛擬機』, 先裝『.py』源碼編譯為字節碼『.pyc』. 『Python虛擬機』再執行『Python字節碼』. 同『java』壹樣.

登入『Python』官網『https://www.python.org/』.

  1. Stable Diffusion需下載10.6版係『python-3.10.6-amd64.exe
  2. 勾『Use admin privileges when installing py.exe』管理帳號安装程式
  3. 勾『Add python.exe to PATH』将路徑加入『環境變量』
  4. 撳『Customize installation』定制安装.
  5. 『Optional features』選項
Documentation 文檔
Pip (必揀)下載和管理python包
Tcl/tk and IDLE 裝IDLE包
Python test suite 裝測試包
Py launcher For all users(requires admin privileges) 裝‘py’啟動程式
  1. 『Advanced Optionsa』高级選項
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) 下載調試庫
  1. 『環境變量』->『系統變量』->『Path』
  2. 撳『新增』分别加入.
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

B450-ITX-RGBA
B450-ITX
B450-ITX
B450-ITX
B450-ITX
B450-ITX
B450-ITX
B450-ITX
B450-ITX
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA
B450-ITX-RGBA

買雜牌『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

 

Intel Wi-Fi 7 BE200

Intel Wi-Fi 7 BE200
Intel Wi-Fi 7 BE200
Intel Wi-Fi 7 BE200
Intel Wi-Fi 7 BE200
Intel Wi-Fi 7 BE200
Intel Wi-Fi 7 BE200

之前係老竇屋企砌臺ITX電腦愛蒞睇片,『BE200』新出買蒞試試, 點知係係『b450-itx』可以認藍牙,唔認WIFI.反而係『x99-itx』藍牙WIFI都認.

唯有『AX210』配『b450-itx』, 『BE200』配『x99-itx』.

下載最新Intel WiFi驅動.

https://downloadmirror.intel.com/812774/WiFi-23.20.0-Driver64-Win10-Win11.exe
https://downloadmirror.intel.com/812775/WiFi-23.20.0-Driver64-Win10-Win11.zip
https://downloadmirror.intel.com/794069/BT-23.10.0-64UWD-Win10-Win11.exe
https://downloadmirror.intel.com/794708/BT-23.10.0-64UWD-Win10-Win11.zip

 

UTF8/BIG5/Shift-JIS/EUC-KR/GB2312判定

UTF8/BIG5/Shift-JIS/EUC-KR/GB2312判定
UTF8/BIG5/Shift-JIS/EUC-KR/GB2312判定

係電腦發展初時定義左套『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;

 

UNICODE-UTF8轉換

UNICODE-UTF8轉換
UNICODE-UTF8轉換

係電腦發展初時.定義左套『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;

}

 

Visual Studio 2022-設定UTF8編碼

Visual Studio 2022-設定UTF8編碼
Visual Studio 2022-設定UTF8編碼

『Android Studio』默認utf8編碼. 而『Visual Studio』按『地區設定』,轉本地字符編碼.

要强轉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”屌㞗𡳞杘屄”;

 

Windows Hello臉部

Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部
Windows Hello臉部

『Kensington指紋』冇拉拉神左,睇到『Windows Hello臉部』相機模块,集成RGB&IR.Microsoft認証Win10自帶驅動. 分别係『Integrated Camera』『Integrated IR Camera』.打印相機殼,配两粒磁鐵,吸係屏上則.

發热量大,短時間臉容識別就得.

  1. 撳『設定』
  2. 撳『帳戶』
  3. 撳『登入選項』->『Windows Hello臉部』

 

經緯度座標『度分秒』轉换

經緯度座標度分秒轉换
經緯度座標度分秒轉换

經緯度座標有叄種格式,『度分秒』『度分』『度』.

『度分秒』等於『時分秒』, 『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秒

 

Windows10象筋拖放

Windows10象筋拖放
Windows10象筋拖放

係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 打孖插PC300-1TB

WD BLACK AN1500

WD BLACK AN1500 PC300 NVMe SK Hynix 1TB*2 CrystalDiskMark
WD BLACK AN1500 PC300 NVMe SK Hynix 1TB*2 CrystalDiskMark

WD BLACK AN1500 PC300 NVMe SK Hynix 1TB*2 CrystalDiskInfo

PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
PC300 NVMe SK Hynix 1TB
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500
WD BLACK AN1500

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

 

 

Visual Studio編譯『zlib-1.2.13.tar.gz』

CMake ZLIB
CMake ZLIB
CMake ZLIB
CMake ZLIB
Visual Studio編譯『zlib-1.2.13.tar.gz』
Visual Studio編譯『zlib-1.2.13.tar.gz』
Visual Studio編譯『zlib-1.2.13.tar.gz』
Visual Studio編譯『zlib-1.2.13.tar.gz』

ZLIB』係開源『壓縮』同『解壓』程式庫, 支持『DEFLATE』冇損壓縮算法,混合『LZ77算法』同『霍夫曼編碼』.

『Visual studio』冇內置『ZLIB』,下載『zlib-1.2.13.tar.gz』再編譯.

  1. 下载『ZLIB
http://www.zlib.net/
http://www.zlib.net/zlib-1.2.13.tar.gz
  1. 安装『CMake』帮『zlib-1.2.13.tar.gz』生成Visual studio工程.
  2. 解壓『zlib-1.2.13.tar.gz』到『C:\Program Files (x86)\zlib-1.2.13』
  3. 以管理員身份執行『cmake-gui.exe』.
  4. 『Where is the source code:』填『C:\Program Files (x86)\zlib-1.2.13』
  5. 『Where to build the binaries:』填『C:/Program Files (x86)/zlib-1.2.13/build』, 資料夾『build』要架自新建.
  6. 勾『Grouped』
  7. 勾『Grouped』
  8. 撳『Configure』
  9. 『Specify the generator for this project』揀『Visual Studio 17 2022』
  10. 『Optional platform for generator(if empty, generator uses:x64)』揀『x64』.
  11. 撳『Finish』
  12. 撳『Generate』
  13. 撳『Open Project』開啟Visual studio工程
  14. 『INSTALL』撳右鍵, 『設定為啟動專案』.
  15. 撳『F7』鍵, 分別『Debug』/『Release』建置工程,編譯後生成
路徑 版本
C:\Program Files (x86)\zlib-1.2.13\build\Debug Debug
C:\Program Files (x86)\zlib-1.2.13\build\Release Release
  1. 生成
Debug調試版 Release發行版  
zlibstaticd.lib zlibstatic.lib 静態庫, 唔使dll
zlibd.lib zlib.lib 動態庫, 要dll
zlibd.dll zlib.dll 動態連结
  1. 『Visual studio』識复制『ZLIB』頭文檔去『C:\Program Files\zlib』
C:\Program Files\zlib\include\zconf.h Zlib-API
C:\Program Files\zlib\include\zlib.h  
  1. 係工程包含『ZLIB』頭文檔
#include <zlib.h> Zlib-api
#include <zconf.h>  
  1. 係工程包含静態庫
#if _DEBUG  
#pragma comment(lib, “..\\ZLIB\\zlibstaticd.lib”)

#else

 
#pragma comment(lib, “..\\ZLIB\\zlibstatic.lib”)

#endif

 

 

CMake安裝

CMake安裝
CMake安裝
CMake版本
CMake版本

『CMake』愛蒞生成makefile或project文件, 畀Visual studio編譯代碼.

登入『CMake官網』下載『cmake-3.27.7-windows-x86_64.msi』安装包.

  1. 運行『cmake-3.27.7-windows-x86_64.msi
  2. 勾『I accept the terms in License Agreement』撳『Next』
  3. 勾『Add CMake to system PATH for all users』撳『Next』
  4. 『Install Cmake to:』填『C:\Program Files\CMake\』或填英文路徑.撳『Next』
  5. 撳『Install』安装

 

驗証CMake安装

  1. 撳『win+r』填 进入命令行模式.
  2. 填『cmake -version』撳enter鍵
  3. 顯示cmake版本『cmake version 3.27.7』.
https://cmake.org/
https://cmake.org/download/
cmake-3.28.0-rc3-windows-x86_64.msi
cmake-3.27.7-windows-x86_64.msi

 

USB2.0 壹拆肆 FE2.1

USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1
USB2.0 壹拆肆 FE2.1

上次『USB3.0壹拆貳』插『SD讀卡機』冇反應,改買臺彎汤銘TERMINUS-FE2.1芯片,『USB2.0 壹拆肆』.聽講兼容冚辦闌USB2.0機體.

冇定位窿, 3D打印磁吸底座,吸係機槓壁.配線够長.

部『SD讀卡機』係USB3.0-19PIN,要轉9PIN.好彩識認.

華南X99-F8D Plus

華南X99-F8D Plus
華南X99-F8D Plus
華南X99-F8D Plus
華南X99-F8D Plus

華南X99-F8D Plus

X570冇定時輕機,睇翻佢本天書,要用『1R8/2R8-DDR4』記憶體,買两條32GB成千幾紋,索性買雜牌X99玩,開機慢到以為吾著. 壹分鐘先睇到bios logo

  1. 『PWM-4PIN』得两個岩岩够两粒其它冚辦闌係『3PIN』.
  2. 两『USB2.0-9PIN』, 壹『USB3.0-19PIN』.唔够使緊.
  3. 仲有TeeDriverW8x64.sys蓝屏
  4. 唔係EATX窿位,要整過主板腳撑
  5. 两條2支援22110規格,插槽底座起碼高左4mm.可能詅住畀你『两面散熱』.

 

 

配置如下

  1. EATX機槓W100
  2. Intel XEON E5-2637V4 3.50GHZ*2
  3. SAMSUNG 64GB 4DR4 PC4-2400T
  4. 台達火牛GM1300
  5. Seagate XM1440 960Gb
  6. PC-FAN 14025
  7. PC-FAN 23030
  8. PC-FAN 4pin PWM集線磁吸底座
  9. USB 3.1一分二磁吸底座

 

 

Intel XEON E5-2637V4 3.50GHZ

Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ
Intel XEON E5-2637V4 3.50GHZ

買左雜牌『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

 

EATX機槓-W100

EATX機槓-W100
EATX機槓-W100

買左雜牌『x99-EATX』,舊式ATX機槓要拆左光驅位支架.冇臺鉆拆拉釘驚拆爛.索性新買EATX機槓W100,分左右腔.10條PCIE槽位,有主板要11條PCIE槽位.

左腔裝主板同風扇,為左装『23030風扇』要移有機玻璃去門板外側.

右腔得86mm寬,装3.5寸機體同埋atx火牛都掹水,早知買W200吾使搞甘耐.

  1. 5寸機體支架
  2. 火牛支架
  3. PC-FAN 14025
  4. PC-FAN 23030 BNFENIX電腦風扇
  5. PC-FAN 4pin PWM集線磁吸底座
  6. USB 3.1一分二磁吸底座
  7. 門磁吸
  8. 主板腳撑

 

3D打印-火牛延伸支架

3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架
3D打印-火牛延伸支架

『W100機槓』將ATX火牛移去右腔,好似細機箱甘,愛蒞装風扇,右腔得86MM寬,要打棟放ATX火牛,剷埋右門『加强撑』先岩岩够位.早知買『W200機槓』唔使甘煩. 收屘買60*30鋁磁鐵攝住火牛.

3D打印-3.5寸機體支架

3.5寸面板支架
3.5寸面板支架
3.5寸面板支架
3.5寸面板支架
3.5寸面板支架
3.5寸面板支架
手提DVD-ROM支架
手提DVD-ROM支架
手提DVD-ROM支架
手提DVD-ROM支架
手提DVD-ROM支架
手提DVD-ROM支架
SD讀卡機支架
SD讀卡機支架

SD讀卡機支架
SD讀卡機支架

新買eatx機槓W100分左右腔,左腔裝主板,右腔裝3.5寸機體.

  1. 5寸面板支架
  2. 5寸磁碟支架
  3. 手提DVD-ROM支架
  4. SD讀卡機支架
3.25寸支架 尺碼
DISK-width 101.60mm
DVD-width 103mm
length 147mm
Dest-width 113.5

 

PC-FAN 4pin-PWM拆分

PC-FAN 4pin-PWM壹分辻
PC-FAN 4pin-PWM壹分辻
PC-FAN 4pin-PWM壹分辻
PC-FAN 4pin-PWM壹分辻
PC-FAN 4pin-PWM壹分辻
PC-FAN 4pin-PWM壹分辻
PC-FAN 4pin-PWM
PC-FAN 4pin-PWM

雜牌eatx主板得两個4pin-pwm供電,岩岩够畀两粒CPU.『EATX機槓』裝得落8把『140風扇』加9把『200風扇』.要靠『PC-FAN 4pin集線』,占主板壹個4pin供電接温控調速線,拆分成辻『4pin-pwm』.得插赤色『4pin』扇速傳畀主板.

装肆粒磁石係底座,吸附機身壁.

USB3.0 GEN1拆分

USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分
USB3.0 GEN1拆分

新買雜牌x99-eatx, 得壹個『USB3.0-19PIN』两個『USB2.0-9PIN』.

機箱占两個『USB3.0-19PIN』,WIFI藍牙壹個『USB2.0-9PIN』,SD讀卡機『USB3.0-19PIN』. 得求助『USB3.0-19PIN』拆分雙『USB3.0-19PIN』. 速率保持5Gbps.意外發現支持『USB2.0-9PIN』拆分雙『USB3.0-19PIN』, 速率得翻480Mbps.

用两粒磁石摄係機槓壁.比用雙面膠合适.

Windows10-TeeDriverW8x64.sys蓝屏

TeeDriverW8x64.sys
TeeDriverW8x64.sys

雜牌x99-eatx係登入Win10間謁會Te

Windows10-TeeDriverW8x64.sys蓝屏
Windows10-TeeDriverW8x64.sys蓝屏

eDriverW8x64.sys蓝屏. 心諗雜牌都係信唔過.

『TeeDriverW8x64.sys』係『Intel(R) Management Engine Interface』英特爾®管理引擎介面驅動程式.

『剷TeeDriverW8x64.sys』

  1. 撳『WIN+PAUSE BREAK』鍵
  2. 撳『裝置管理員』
  3. 右鍵撳『Intel(R) Management Engine Interface』
  4. 撳『解除安装装置』
  5. 勾『刪除此裝置驅動程式軟體』
  6. 撳『解除安装』

PC-FAN 23030 BNFENIX 機槓風扇

PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇
PC-FAN 23030 BNFENIX 機槓風扇

新EATX機槓裝9把『200風扇』. BNFENIX-3PIN白色『230風扇』,為左装係『200扇位』削去两側. 9扇葉設計,扇速慢得800轉.9把『230風扇』要風扇集線器.

230扇葉大易斷扇軸,冇适合鐵網保謢扇葉.

PC-FAN 23030 數值
尺碼 230*30mm
電壓 12V
電流 0.18A
Materials PBT
Speed(R.P.M.) 700~900轉/分
噪聲 20(dB-A)
25MM
窿徑 4MM

 

PC-FAN 14025

PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025
PC-FAN 14025

新EATX機槓,可装8把『140風扇』加9把『200風扇』.支援PWM-4PIN白色『140風扇』,設計上為左装係『120扇位』削去肆角.為左裝『140䕶網』補番肆角.電壓12V,冇標電流.扇速慢静音,7扇葉設計,大扇葉風量大. 其中之壹時轉時吾轉.8把『140風扇』需PWM集線.

PC-FAN 數據
電壓 12V
12025風扇 窿距105*105MM
14025風扇 窿距124.5*124.5MM
25MM
窿徑 4MM

 

X99-EATX SOCKET2011-纯銅散熱風扇

X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇
X99-EATX SOCKET2011-纯銅散熱風扇

X99-EATX愛两正方SOCKET-2011散熱. 唔諗買『熱導管散熱』.學上次咁買两拆機銅散熱,正方『90mm*90mm』, 配两『AVC-9025-12V-0.13A』.風扇底座用3D打印. 尺寸太大ABS容易收縮變形.

圖檔-PNG解析

圖檔-PNG解析
圖檔-PNG解析

舊時『游戲紋理』再用『.bmp格式』, 冇壓缩即使256色盤依然佔用吉間.

『.PNG格式』利LZ77且冇失真壓縮. 且壓縮極高, 配合256色盤,适宜作『游戲紋理』.

數據塊 數值
PNG圖檔標誌 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
圖檔頭 IHDR
调色板 PLTE
图像数据 IDAT
图像结束 IEND

PNG數據塊基本結构.

數據塊結构 size 簡介
LENGTH 整數4字節 數據長度
CHUNK TYPE 整數4字節 類型標記
CHUNK DATA 0~2^32字節 數據
CRC32 整數4字節 CRC32校驗

两字節肆字節數據,冚辦闌用『網络字節』存儲,需轉『主機字節』.

『網络字節』轉『主機字節』
#define  PNG_VALUE32(v)  ((v & 0xff000000) >> 24 | (v & 0x00ff0000) >> 8 | (v & 0x0000ff00) << 8 | (v & 0x000000ff) << 24)
#define  PNG_VALUE16(v)  ((v & 0xff00) >> 8 | (v & 0x00ff) << 8)

游戲引擎需讀PNG 伍個數據塊

PNG數據塊 功能簡介
IHDR 文檔頭
PLTE 色盤
IDAT 圖像數值
IEND 結束
tRNS 圖像透明
bKGD 背景色

PNG圖檔頭捌字節標記,愛蒞識别PNG

0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
137 P N G \r \n 26 \n

對比PNG標識

    if(memcmp(data,  0x0A1A0A0D474E5089, 8) != 0)

return false;// 非png圖檔

CRC32計算必需計『CHUNK TYPE + CHUNK DATA』, 長度『length + 4』而得.

DWORD length = PNG_VALUE32(chunk->length) + 4;
DWORD64 crc = CRC32((PBYTE)(chunk) + 4,length); CRC32計算
DWORD64 crc_ = PNG_VALUE32(chunk->crc_); 轉主機字節
  if(crc_ == crc)

return true;

 

比較crc值

首先定義PNG結构

typedef struct PNG_TAG{  
int   width; 圖宽
int   height; 圖高
int  bitCount; 位圖像素bits 8位,16位,24位,32位
PNG_RGBA       palette[256]; 调色板
PBYTE        buffer; 圖像数据
int               buffer_size; 圖像数据長度
int               length; 临時變量
z_stream stream; ZLIB解壓
} PNG, *PNG_PTR;  

文檔頭結构 IHDR

typedef struct PNG_IHDR_TAG{ 文檔頭 IHDR
int length; Data長度
DWORD type; 標記’IHDR’
DWORD width; 像素寬
DWORD height; 像素高
BYTE  BitDepth; 圖像深度
BYTE  ColorType; 顏色類型
BYTE  Compression; LZ77派生演算法 ,壹定係0
BYTE  Filter; 濾波,止值定0. 事實『0,1,2,3,4』伍種濾波
BYTE  Interlace; 隔行掃描0=冇掃描,1=(Adam7 interlace)
DWORD CRC32; CRC32校驗
}PNG_IHDR,*PNG_IHDR_PTR;  

PNG支緩伍款顏色類型

ColorType 顏色類型 像素
0=Greyscale 灰度圖像 1,2,4,8,16bit
2=Truecolour 真彩色圖像 8,16bit
3=Indexed-colour 索引彩色圖像 1,2,4,8bit
4=Greyscale with alpha 帶α通道資料灰度圖像 8,16bit
6=Truecolour with alpha 帶α通道資料真彩色圖像 8,16bit

像素排列

ColorType 像素排列
Greyscale Y
Truecolour RGB
Indexed-colour i
Greyscale with alpha RGBA
Truecolour with alpha YA

解析文檔頭 IHDR, 分配圖像時分, 每行像素多壹字節,記錄『Filter』濾波值,『0,1,2,3,4』伍種濾波;

if(IHDR->ColorType == 0)

png->bitCount = IHDR->BitDepth;

0:Greyscale:灰度圖像,1,2,4,8,16bit
if(IHDR->ColorType == 2)

png->bitCount = IHDR->BitDepth * 3;

2:Truecolour:真彩色圖像,8,16bit
if(IHDR->ColorType == 3)

png->bitCount = IHDR->BitDepth;

3:Indexed-colour:索引彩色圖像,1,2,4,8bit
if(IHDR->ColorType == 4)

png->bitCount = IHDR->BitDepth * 2;

4:Greyscale with alpha:帶α通道資料灰度圖像,8,16bit
if(IHDR->ColorType == 6)

png->bitCount = IHDR->BitDepth * 4;

6:Truecolour with alpha:帶α通道資料真彩色圖像,8,16bit
png->width  = PNG_VALUE32(IHDR->width); 像素寬
png->height = PNG_VALUE32(IHDR->height); 像素高
int byte_count  = (float)png->bitCount / 8.0f; 像素大小 BIT to BYTE
png->buffer_size = (png->width * png->height * byte_count) + (png->height * 1); 圖像数据長度,每行多壹字節
png->buffer = (PBYTE)malloc(png->buffer_size); 圖像数据

定義色盤RGB

typedef struct PNG_RGB_TYP { 色盤3字節
    BYTE red;
    BYTE green;
    BYTE blue;
} PNG_RGB, *PNG_RGB_PTR;  

定義色盤RGBA

typedef struct PNG_RGBA_TYP { 色盤4字節
    BYTE red;
    BYTE green;
    BYTE blue;
    BYTE alpha; 透明混合,透明0x00~實體0xFF
} PNG_RGBA, *PNG_RGBA_PTR;  

定義PNG色盤結构 ‘PLTE’

typedef struct PNG_PLTE_TYP {  
int length; Data長度
DWORD type; 標記’PLTE’
PNG_RGB palette[256]; 至多256色盤
DWORD CRC32; CRC32校驗
} PNG_PLTE, *PNG_PLTE_PTR;  

分析PNG色盤 ‘PLTE’

int length = PNG_VALUE32(chunk->length); 長度
int count = length / 3; 色盤量
for(int index = 0; index < count; ++index){  
png->palette[index].red      = PLTE->palette[index].red ;
png->palette[index].green  = PLTE->palette[index].green ;
png->palette[index].blue    = PLTE->palette[index].blue ;
png->palette[index].alpha  = 0xff;    } 透明0x00~實體0xFF

定義透明像素結构’tRNS’

typedef struct PNG_tRNS_TYP{  
int length; 數據長度
DWORD type; 標記’tRNS’
union {  
WORD grey; 顏色類型 0
struct {WORD Red,Green,Blue;}; 顏色類型  2
BYTE palette[256]; 顏色類型  3
DWORD CRC32; CRC32校驗
}PNG_tRNS,*PNG_tRNS_PTR;  

分析透明像素

PNG_tRNS_PTR tRNS; 透明像素
tRNS->length = PNG_VALUE32(tRNS->length); 數據長度
if(IHDR->ColorType == 0 )

tRNS->grey = PNG_VALUE16(tRNS->grey);

0:Greyscale:灰度圖像,1,2,4,8,16bit
if(IHDR->ColorType == 2  ) {

tRNS->Red   = PNG_VALUE16(tRNS->Red);

tRNS->Green = PNG_VALUE16(tRNS->Green);

tRNS->Blue  = PNG_VALUE16(tRNS->Blue);

}

2:Truecolour:真彩色圖像,8,16bit
if(IHDR->ColorType == 3) {

length = tRNS->length;

for(int i = 0; i < length; ++i) {

index = tRNS->palette[i];

png->palette[index].alpha = 0x00;

}

3:Indexed-colour:索引彩色圖像,1,2,4,8bit

透明0x00~實體0xFF

定義背景色結构 ‘bKGD’

typedef struct PNG_bKGD_TYP{  
int length; Data長度
DWORD type; 標記’bKGD’
union {  
WORD Greyscale; 顏色類型0 and 4灰度
struct{WORD Red,Green,Blue;}; 顏色類型2 and 6 -RGB三色
BYTE Palette_Index;}; 顏色類型3色盤索引
DWORD CRC32; CRC32校驗
}PNG_bKGD,*PNG_bKGD_PTR;  

分析背景色’bKGD’

int length = PNG_VALUE32(bKGD->length); 長度
if(IHDR->ColorType == 0 || IHDR->ColorType == 4)

bKGD->Greyscale = PNG_VALUE16(bKGD->Greyscale);

灰度圖像 – 帶α通道資料灰度圖像
if(IHDR->ColorType == 2 || IHDR->ColorType == 6) {

bKGD->Red = PNG_VALUE16(bKGD->Red);

bKGD->Green = PNG_VALUE16(bKGD->Green);

bKGD->Blue = PNG_VALUE16(bKGD->Blue);

}

真彩色圖像 – 帶α通道資料真彩色圖像
if(IHDR->ColorType == 3)

bKGD->Palette_Index = bKGD->Palette_Index;

索引彩色圖像

定義圖像數值結构 ‘IDAT’, 止數據塊可能有多個.

typedef struct PNG_IDAT_TYP {  
int length;  Data長度
DWORD type; 標記’PLTE’
BYTE data[1]; 經壓縮圖像數據
DWORD CRC32; CRC32校驗
} PNG_IDAT, *PNG_IDAT_PTR;  

每行像素多壹字節,記錄『Filter』濾波值,『0,1,2,3,4』伍種濾波;

int length = PNG_VALUE32(IDAT->length); 長度
int size = png->buffer_size – png->length; 剩余記憶體
Uncompress_Data_gZip(png->buffer + png->length, &size,

IDAT->data,length,

&png->stream);

解压
png->length =  png->length + size; 累積積數據長度

結束 IEND,檢測到’IEND’數據塊,己到文檔未端.

typedef struct PNG_IEND_TAG{  
int length; Data長度0
DWORD type; 標記’IEND’
DWORD CRC32; CRC32校驗
}PNG_IEND, *PNG_IEND_PTR;  

以顏色類型分別進行『反濾波』, 係每行像素首字節『濾波』值,有『0,1,2,3,4』伍款濾波, 以每粒像素單獨『復位』,帶α通道真彩色圖像8bit為例.

以cbax像素排列支缓伍款濾波

c b
a x

濾波算法

filter濾波 濾波 復位
0= None Filt(x) = Orig(x) Recon(x) = Filt(x)
1= Sub Filt(x) = Orig(x) – Orig(a) Recon(x) = Filt(x) + Recon(a)
2= Up Filt(x) = Orig(x) – Orig(b) Recon(x) = Filt(x) + Recon(b)
3= Average Filt(x) = Orig(x) – floor((Orig(a) + Orig(b)) / 2) Recon(x) = Filt(x) + floor((Recon(a) + Recon(b)) / 2)
4= Paeth Filt(x) = Orig(x) – PaethPredictor(Orig(a), Orig(b), Orig(c)) Recon(x) = Filt(x) + PaethPredictor(Recon(a), Recon(b), Recon(c))

復位算法

int byte_count   = 4; 每粒像素4字節
int pixel_size = png->width * png->height; 總像素量
int buffer_size = png->width * png->height * byte_count; 總字節量
PBYTE buffer = (PBYTE)malloc(buffer_size); 反濾波影像數據
int col_size_recon = (png->width * 4) ; 復位後每行字節量
int col_size_filt  = (png->width * 4)  + 1; 濾波後每行字節量
for(int j = 0; j < png->height ; ++j) 每行像素
int filter = png->buffer[col_size_filt * j]; 行首濾波=1 byte

處理filter濾波0= None

if(filter == 0) { None
for(int i = 0; i < png->width; ++i){ 逐像素復位
Red = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 0]; x像素紅色
Green = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 1]; x像素藍色
Blue = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 2]; x像素錄色
Alpha = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 3]; x像素透明
buffer[(col_size_recon * j) + (i * 4) + 0] = Red; 復位像素紅色
buffer[(col_size_recon * j) + (i * 4) + 1] = Green; 復位像素藍色
buffer[(col_size_recon * j) + (i * 4) + 2] = Blue; 復位像素綠色
buffer[(col_size_recon * j) + (i * 4) + 3] = Alpha;         }} 復位像素透明

處理filter濾波1 =Sub

if(filter == 1)          { Sub
for(int i = 0; i < png->width; ++i){ 逐像素復位
Red = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 0]; x像素紅色
Green = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 1]; x像素藍色
Blue = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 2]; x像素錄色
Alpha = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 3]; x像素透明
aRed = aGreen = aBlue = aAlpha = 0; 清零
if(i > 0) {  
aRed = buffer[(col_size_recon * j) + ((i-1) * 4) + 0]; a像素紅色
aGreen = buffer[(col_size_recon * j) + ((i-1) * 4) + 1]; a像素藍色
aBlue = buffer[(col_size_recon * j) + ((i-1) * 4) + 2]; a像素綠色
aAlpha = buffer[(col_size_recon * j) + ((i-1) * 4) + 3]; } a像素透明
buffer[(col_size_recon * j) + (i * 4) + 0] = Red + aRed; 復位像素紅色
buffer[(col_size_recon * j) + (i * 4) + 1] = Green + aGreen; 復位像素藍色
buffer[(col_size_recon * j) + (i * 4) + 2] = Blue + aBlue; 復位像素綠色
buffer[(col_size_recon * j) + (i * 4) + 3] = Alpha + aAlpha; }} 復位像素透明

處理filter濾波2 =Up

if(filter == 2){ Up
for( i = 0; i < png->width; ++i){ 逐像素復位
Red = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 0]; x像素紅色
Green = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 1]; x像素藍色
Blue = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 2]; x像素錄色
Alpha = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 3]; x像素透明
bRed = bGreen = bBlue = bAlpha = 0; 清零
if(j > 0) {  
bRed = buffer[(col_size_recon * (j-1)) + (i * 4) + 0]; b像素紅色
bGreen = buffer[(col_size_recon * (j-1)) + (i * 4) + 1]; b像素藍色
bBlue = buffer[(col_size_recon * (j-1)) + (i * 4) + 2]; b像素綠色
bAlpha = buffer[(col_size_recon * (j-1)) + (i * 4) + 3];} b像素透明
buffer[(col_size_recon * j) + (i * 4) + 0] = Red + bRed; 復位像素紅色
buffer[(col_size_recon * j) + (i * 4) + 1] = Green + bGreen; 復位像素藍色
buffer[(col_size_recon * j) + (i * 4) + 2] = Blue + bBlue; 復位像素綠色
buffer[(col_size_recon * j) + (i * 4) + 3] = Alpha + bAlpha; }} 復位像素透明

處理filter濾波3 = Average

if(filter == 3)          { Average
for( i = 0; i < png->width; ++i){ 逐像素復位
Red = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 0]; x像素紅色
Green = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 1]; x像素藍色
Blue = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 2]; x像素錄色
Alpha = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 3]; x像素透明
aRed = aGreen = aBlue = aAlpha = 0; 清零
bRed = bGreen = bBlue = bAlpha = 0; 清零
if(i > 0) {  
aRed = buffer[(col_size_recon * j) + ((i-1) * 4) + 0]; a像素紅色
aGreen = buffer[(col_size_recon * j) + ((i-1) * 4) + 1]; a像素藍色
aBlue = buffer[(col_size_recon * j) + ((i-1) * 4) + 2]; a像素綠色
aAlpha = buffer[(col_size_recon * j) + ((i-1) * 4) + 3]; } a像素透明
if(j > 0) {  
bRed = buffer[(col_size_recon * (j-1)) + (i * 4) + 0]; b像素紅色
bGreen = buffer[(col_size_recon * (j-1)) + (i * 4) + 1]; b像素藍色
bBlue = buffer[(col_size_recon * (j-1)) + (i * 4) + 2]; b像素綠色
bAlpha = buffer[(col_size_recon * (j-1)) + (i * 4) + 3];} b像素透明
buffer[(col_size_recon * j) + (i * 4) + 0] = Red + ((aRed+bRed)/2); 復位像素紅色
buffer[(col_size_recon * j) + (i * 4) + 1] = Green + ((aGreen+bGreen)/2); 復位像素藍色
buffer[(col_size_recon * j) + (i * 4) + 2] = Blue + ((aBlue+bBlue)/2); 復位像素綠色
buffer[(col_size_recon * j) + (i * 4) + 3] = Alpha + ((aAlpha+bAlpha)/2); }} 復位像素透明

Paeth預測函式

BYTE PaethPredictor_PNG(BYTE a,BYTE b,BYTE c){ 預測函式
int p;  
int pa,pb,pc;  
p = a + b – c;  
pa = abs(p – a);  
pb = abs(p – b);  
pc = abs(p – c);  
if (pa <= pb && pa <= pc )  return a;  
else if (pb <= pc ) return b;  
else return c;}  

處理filter濾波4 =Paeth預測

if(filter == 3)          { Average
for( i = 0; i < png->width; ++i){ 逐像素復位
Red = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 0]; x像素紅色
Green = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 1]; x像素藍色
Blue = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 2]; x像素錄色
Alpha = png->buffer[(col_size_filt * j) + 1 + (i * 4) + 3]; x像素透明
aRed = aGreen = aBlue = aAlpha = 0; 清零
bRed = bGreen = bBlue = bAlpha = 0; 清零
cRed = cGreen = cBlue = cAlpha = 0; 清零
if(i > 0) {  
aRed = buffer[(col_size_recon * j) + ((i-1) * 4) + 0]; a像素紅色
aGreen = buffer[(col_size_recon * j) + ((i-1) * 4) + 1]; a像素藍色
aBlue = buffer[(col_size_recon * j) + ((i-1) * 4) + 2]; a像素綠色
aAlpha = buffer[(col_size_recon * j) + ((i-1) * 4) + 3]; } a像素透明
if(j > 0) {  
bRed = buffer[(col_size_recon * (j-1)) + (i * 4) + 0]; b像素紅色
bGreen = buffer[(col_size_recon * (j-1)) + (i * 4) + 1]; b像素藍色
bBlue = buffer[(col_size_recon * (j-1)) + (i * 4) + 2]; b像素綠色
bAlpha = buffer[(col_size_recon * (j-1)) + (i * 4) + 3];} b像素透明
if(i > 0 && j > 0) {  
cRed = buffer[(col_size_recon * (j-1)) + ((i-1) * 4) + 0]; c像素紅色
cGreen = buffer[(col_size_recon * (j-1)) + ((i-1) * 4) + 1]; c像素藍色
cBlue = buffer[(col_size_recon * (j-1)) + ((i-1) * 4) + 2]; c像素綠色
cAlpha = buffer[(col_size_recon * (j-1)) + ((i-1) * 4) + 3];} c像素透明
buffer[(col_size_recon * j) + (i * 4) + 0] = Red + PaethPredictor_PNG(aRed,bRed,cRed); 復位像素紅色
buffer[(col_size_recon * j) + (i * 4) + 1] = Green + PaethPredictor_PNG(aGreen,bGreen,cGreen); 復位像素藍色
buffer[(col_size_recon * j) + (i * 4) + 2] = Blue + PaethPredictor_PNG(aBlue,bBlue,cBlue); 復位像素綠色
buffer[(col_size_recon * j) + (i * 4) + 3] = Alpha + PaethPredictor_PNG(aAlpha,bAlpha,cAlpha);}} 復位像素透明

释放圖像

free(png->buffer); 释放
png->buffer = buffer; 替换復位圖像
png->bitCount = 32; rgba
png->buffer_size = buffer_size;  

 

3D打印-電腦主板腳柱

3D打印-電腦主板腳柱
3D打印-電腦主板腳柱
3D打印-電腦主板腳柱
3D打印-電腦主板腳柱
3D打印-電腦主板腳柱
3D打印-電腦主板腳柱

買块雜牌X99-EATX主板,玖鑼𢇁竉位,有叁鑼𢇁竉位唔對竉.為装工業鋁型材, 斬脚指避沙蟲. EATX主板300*330mm太大,缺鑼𢇁撥插影響主板變形.冇計.唯重搭脚柱.

 

Windows10-解除更新

Windows10-解除更新
Windows10-解除更新
Windows10-解除更新
Windows10-解除更新

『Win10』自動更新後頻頻輕機,舊时『Win9x/WinXP』係著機果陣『F8鍵』入『安全模式』修復系统.係『Win10』時代入『修復』卸載更新.

  1. 著機睇見『Win10-logo』後撳『reset鍵』.重复三次登入『修復』
  2. 『高級選項』->『疑难解答』->『高級選項』->『解除更新』
  3. 解除更新.
  4. 入『Win10』
  5. 『設定』->『Windows Update』
  6. 連繼撳『將更新暫停7天』,

Android Studio-ZLIB壓縮同解壓

Android Studio-ZLIB壓縮同解壓
Android Studio-ZLIB壓縮同解壓

ZLIB』開源『壓縮』同『解壓』程式庫, 支持『DEFLATE』冇損壓縮算法,佢混合『LZ77算法』同『霍夫曼編碼』.

『DEFLATE』壓縮算法冇專利權.畀人大量應用係『網络』『圖檔』『文檔』『影片』.

.PNG/ Libpng 圖檔解壓
.ZIP 壓縮檔
.tar 壓縮檔
.gz 壓縮檔
HTTP 壓縮傅送
FFmpeg 影片解壓

下载『ZLIB

http://www.zlib.net/
http://www.zlib.net/zlib-1.2.13.tar.gz

『Android studio』內置『ZLIB』, 唔使下載.但要係『CMakeLists.txt』增添『zlib』庫.

CMakeLists.txt文檔  
find_library( z-lib z ) 搜索zlib
target_link_libraries( ${z-lib} ) 連接zlib

包含『ZLIB』頭文檔

#include <zlib.h> Zlib-api
#include <zconf.h>  

『z_stream』壓縮同解壓皆需此結构體

z_stream stream; zlib流結构體
stream.zalloc = Z_NULL; NULL用默認記憶體分配函数
stream.zfree  = Z_NULL; NULL用默認記憶體释放函数
stream.opaque = Z_NULL;  
stream.next_in  = (Bytef*)sour; 蒞源
stream.avail_in = (uInt)sour_length; 蒞源長
stream.next_out = dest; 輸出
stream.avail_out = (uInt)*dest_length; 輸出長

ZLIB』壓縮分叁步

壓縮  
deflateInit(&stream, level) 分配記憶體,level壓縮等級
deflate(&stream, flush); 壓縮數據, flush設0
deflateEnd(&stream); 释放記憶體

 

int deflateInit2( deflateInit()加强版
z_streamp strm, zlib流結构體
int  level, level壓縮等級0~9.

0:速度快,唔壓縮.

9:速度慢,壓縮率高.

int  method, 壓縮算法僅支緩Z_DEFLATED
int  windowBits, 處理RAW DEFLATE手法.
int  memLevel, 指定記憶體分配MAX_MEM_LEVEL
int  strategy)); 壓縮策略,僅影響壓縮比.默認Z_DEFAULT_STRATEGY

 

level 壓縮等級
#define Z_NO_COMPRESSION         0 唔壓縮
#define Z_BEST_SPEED             1 高速,低壓縮率
#define Z_BEST_COMPRESSION       9 高壓縮率, 慢速
#define Z_DEFAULT_COMPRESSION  (-1) 默認壓縮

 

windowBits 處理RAW DEFLATE手法.
8~15: 純deflate壓縮
-8~-15: zlib頭 + deflate + zlib尾
> 16: Gzip頭+ deflate + Gzip尾

 

method 壓縮算法
#define Z_DEFLATED   8 DEFLATE冇損壓縮

 

memLevel 記憶體分配
MemLevel=1 最小記憶體,速度慢壓縮比低
MemLevel=9

#define MAX_MEM_LEVEL 9

最大記憶體,最佳速度
MemLevel=8 默認值

 

strategy 壓縮算法設定
#define Z_FILTERED            1 僅FILTERED生成數據
#define Z_HUFFMAN_ONLY        2 僅霍夫曼編碼
#define Z_RLE                 3 匹配長度=1
#define Z_FIXED               4 禁霍夫曼編碼
#define Z_DEFAULT_STRATEGY    0 默認壓縮設定

ZLIB』解壓分叁步

解壓  
inflateInit(&stream) 分配記憶體
inflate(&stream, Z_NO_FLUSH); 解压數據
inflateEnd(stream); 释放記憶體

 

返回碼  
#define Z_OK            0  
#define Z_STREAM_END    1 結束
#define Z_NEED_DICT     2 愛密碼
#define Z_ERRNO        (-1)  
#define Z_STREAM_ERROR (-2)  
#define Z_DATA_ERROR   (-3) 加密數據損壞壞,或缺失.
#define Z_MEM_ERROR    (-4) 唔够記憶體
#define Z_BUF_ERROR    (-5) 唔够緩存
#define Z_VERSION_ERROR (-6)  

 

解壓示例

int Uncompress(PBYTE dest,int * dest_length,PBYTE sour,int sour_length)

{

z_stream stream;

int ret;

stream.zalloc = (alloc_func)0;

stream.zfree  = (free_func)0;

stream.opaque = (voidpf)0;

stream.next_in  = (Bytef*)sour;

stream.avail_in = (uInt)sour_length;

stream.next_out = dest;

stream.avail_out = (uInt)*dest_length;

MAX_MEM_LEVEL

ret = inflateInit2(&stream, 16+MAX_WBITS);

if (ret != Z_OK)

return ret;

 

ret = inflate(&stream, Z_NO_FLUSH);// 解压

*dest_length = stream.total_out;

inflateEnd(&stream);

return ret;

}

 

壓缩示例

bool Compress(PBYTE dest,int * dest_length,PBYTE sour,int sour_length, int level)

{

int ret, flush;

int sour_offset,dest_offset;

int have;

z_stream stream;

BYTE in[ZIP_CHUNK];

BYTE out[ZIP_CHUNK];

 

stream.zalloc = Z_NULL;// 内存分配函数

stream.zfree  = Z_NULL;// 内存释放函数

stream.opaque = Z_NULL;

stream.next_in  = (Bytef*)sour;

stream.avail_in = (uInt)sour_length;

stream.next_out = dest;

stream.avail_out = (uInt)*dest_length;

 

ret = deflateInit(&stream, level);// 内存分配

if (ret != Z_OK)

return false;

 

ret = deflate(&stream, flush);  // 进行压缩

*dest_length = stream.total_out;

 

deflateEnd(&stream);// 释放内存

return ret;

}

CRC32校驗

CRC32校驗
CRC32校驗

『CRC32』同『MD5』『SHA1』壹樣,計『貳进制』數值『指紋』,佢速度快,HASH校验值肆字節.两DWORD值相等比較. 适宜網络數據傳輸, 校驗數據係咪完璧.

DWORD CRC32_Table[256] = {
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
};

DWORD CRC32(PBYTE buf, int len){
int i;
DWORD crc;

crc = 0xffffffffL;
for (i = 0; i < len; ++i )
crc = CRC32_Table[(crc ^ buf[i]) & 0xff] ^ (crc >> 8);

crc = crc ^ 0xffffffffL;
return crc;
}