Hero Image
[Keycloak] docker 安裝

採用的映象檔是 bitnami/keycloak ,因為我需要使用網址來區分服務(同一個 port 的情況下),所以採取反向代理的方式,一方面讓之後要部屬其他應用、加上憑證、等等操作都交給 nginx 比較方便。 建立 docker 網路 mynetwork,如果設定其他名稱,以下步驟再自行調整對應。 docker create network mynetwork 建立 docker-compose 環境 keycloak/.env KEYCLOCK_IMAGE=bitnami/keycloak:23.0.3 KEYCLOAK_DATABASE_VENDOR=postgresql KEYCLOAK_DATABASE_PORT=5432 KEYCLOAK_DATABASE_USER=keycloak KEYCLOAK_DATABASE_PASSWORD=password KEYCLOAK_DATABASE_NAME=keycloak KEYCLOAK_ADMIN_USER=admin KEYCLOAK_ADMIN_PASSWORD=admin keycloak/docker-compose.yml version: '3' volumes: postgres_data: driver: local services: keycloak_db: image: postgres restart: always volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_DB: ${KEYCLOAK_DATABASE_NAME} POSTGRES_USER: ${KEYCLOAK_DATABASE_USER} POSTGRES_PASSWORD: ${KEYCLOAK_DATABASE_PASSWORD} networks: - mynetwork keycloak: image: ${KEYCLOCK_IMAGE} environment: KEYCLOAK_DATABASE_VENDOR: ${KEYCLOAK_DATABASE_VENDOR} KEYCLOAK_DATABASE_HOST: keycloak_db KEYCLOAK_DATABASE_PORT: ${KEYCLOAK_DATABASE_PORT} KEYCLOAK_DATABASE_NAME: ${KEYCLOAK_DATABASE_NAME} KEYCLOAK_DATABASE_USER: ${KEYCLOAK_DATABASE_USER} KEYCLOAK_DATABASE_PASSWORD: ${KEYCLOAK_DATABASE_PASSWORD} KEYCLOAK_DATABASE_SCHEMA: public KEYCLOAK_ADMIN_USER: ${KEYCLOAK_ADMIN_USER} KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD} KEYCLOAK_ENABLE_HEALTH_ENDPOINTS: 'true' KEYCLOAK_ENABLE_STATISTICS: 'true' KC_PROXY: edge KC_PROXY_ADDRESS_FORWARDING: 'true' KC_HTTP_ENABLED: 'true' restart: unless-stopped networks: - mynetwork depends_on: - keycloak_db networks: mynetwork: external: true 建立 nginx/nginx.conf,這裡我把 keycloak.docker.vm 給 keycloak,裡面有一些設置 ssl 用得到的區塊放置在註解。

Hero Image
[Web] 把電腦的難字造字檔用 FontForge 轉為字型放到網頁上使用

Web 在顯示姓名的時候常會遇到中文難字無法顯示, 此時開發者在本機端如果有安裝造字檔 EUDC.TTE 就可以轉為 woff、woff2、ttf 讓網頁正確顯示難字。 過程需要字型工具軟體 FontForge, 步驟如下: 拿到造字檔 EUDC.TTE 用 cmd 打開 regedit (win10 搜尋圖示點下後,輸入 cmd,出現小黑窗後再輸入 regedit) 找到機碼 HKEY_CURRENT_USER -> EUDC -> 950 資料夾下的 SystemDefaultEUDCFont 設定檔。 從設定檔的值就是 EUDC 的存放位址取出 EUDC.tte,我這裡是 C:\CIBEN\EUDC.tte 安裝 FontForge,找到 fontforge.exe 的位址 (注意,跟桌面捷徑呼叫的執行檔不一樣!),我的是在 C:/Program Files (x86)/FontForgeBuilds/bin/fontforge.exe 建立一個轉檔腳本 tte-extract.pe,內容如下 # Open EUDC TTE Open("EUDC.tte", 4) # CHANGE TTFNAME 2 EUDC SetTTFName(0x409,1,"EUDC") SetTTFName(0x409,2,"EUDC") SetTTFName(0x409,3,"EUDC") SetTTFName(0x409,4,"EUDC") SetTTFName(0x404,1,"EUDC") SetTTFName(0x404,2,"EUDC") SetTTFName(0x409,3,"") SetTTFName(0x404,4,"EUDC") SetFontNames("EUDC", "EUDC", "EUDC", "Regular", "655", "1.0.0") Generate("EUDC.ttf") Generate("EUDC.woff") Generate("EUDC.woff2") Close() 把 EUDC.tte、tte-extract放在同一個位址,在該目錄下用指令執行轉檔 (fontforge.exe 的位址可能需要修改): C:/Program\ Files\ \(x86\)/FontForgeBuilds/bin/fontforge.exe -script tte-extract.pe 得到的 woff、woff2、ttf 用 css 設定為網頁字形: 設定網頁字形 font-family: "EUDC"; font-style: normal; src: url('./fonts/EUDC.woff2') format('woff2'), url('./fonts/EUDC.woff') format('woff'), url('./fonts/EUDC.ttf') format('truetype'); } 套用網頁字形 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-family: '其他優先使用的字型', 'EUDC', sans-serif; font-display: auto; } 其他:讓 RDLC 可顯示字造難字 windows ttf 丟到 C:\Windows\Fonts,可能要重啟 IDE 才抓得到字型。 report 裡面的字型選擇 EUDC