2024年12月17日 星期二

📧E-Mail 研究:Outlook 字體設定

最近被 Outlook 弄的一個頭兩個大……( ̄┰ ̄*)

我知道 Outlook 之類的 E-Mail 軟體,對 CSS 、HTML 支援度不高,不過我沒想到 Outlook 光是字體就這麼複雜……

我的電腦有以下字體

字體 別名 備註
思源黑體 Source Han Sans TC 這是從 Adobe那下載下來的,所以 font name 不是 Noto Sans CJK TC 或是 Noto Sans TC
微軟正黑體 Microsoft Jheng Hei Windows 默認字體
Arial

2024年11月27日 星期三

📝 紀錄一下幾個不同 JDK

這邊記錄一下幾個常見的 JDK(Java Development Kit)與其差異

JDK與其下載頁 License 備註
Oracle JDK 有商用限制。
除此之外,JDK 8、11和之後的版本 License有所不同。
詳細請參見 Oracle 的說明
有 Open JDK 不包含的額外功能。
Oracle Open JDK GPLv2 + CPE
BellSoft Liberica JDK GPLv2 + CPE Spring 推薦使用
有提供
  1. Full version 
  2. Standard version 
  3. Lite version 
三種版本的 JDK 可供下載
Microsoft JDK GPLv2 + CPE
Eclipse Temurin™ Open JDK GPLv2 + CPE
OpenLogic Open JDK GPLv2 + CPE 由 Open Logic 所建置的 JDK
內部已經包含了 JavaFX 相關 libraries 了
IBM Semeru Runtime™ GPLv2 + CPE 有特別針對性能進行優化
RedHat GPLv2 + CPE
SAP Machine GPLv2 + CPE 與 Open JDK 的差異可參見官方 wiki

除了上述的幾種以外,其實還有其他像是毕昇 JDK(華為建的)、Dragonwell JDK (阿里巴巴建的)、Kona JDK(騰訊)……等等的,就不列舉了。


我看了一下,有很多公司會特別建 JDK 就是要用在自家公司的服務之中,例如微軟的 JDK 適合部屬在 Azure 上、Red Hat JDK 會和自家平台整合……等等。


2024年10月18日 星期五

📝紀錄:Go 語言一些我常需要用到的資訊

Go 各版本的 Windows 支援程度

參閱官方Wiki:《Go for Microsoft Windows

安裝多版本的 Go

參閱官方說明:«Download and install»

首先先執行以下指令

go install golang.org/dl/go{你要的版本}@latest

然後再執行

go{你要的版本}} download

列出所有支援操作系統及架構

指令:

go tool dist list
輸出結果
js/wasm
linux/386
linux/amd64
linux/arm
windows/386
windows/amd64
windows/arm
windows/arm64

可以在後面加上-json 以 JSON格式輸出

加上-json後的輸出結果
[
        {
                "GOOS": "linux",
                "GOARCH": "386",
                "CgoSupported": true,
                "FirstClass": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "amd64",
                "CgoSupported": true,
                "FirstClass": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "arm",
                "CgoSupported": true,
                "FirstClass": true
        },
        
        // 下略……
]

參考自:impluse:《go列出所有支持的系统平台及其架构》

2024年9月11日 星期三

做 Hibernate envers 設定時遇到的坑

這篇算是延續先前《SpringBoot 使用多個資料庫連線》的狀況

我今天想要使用Hibernate envers來處理資料的版控。

原先我是這樣處理的:

  1. pom.xml 加上library

    <dependency>
    	<groupId>org.hibernate</groupId>
    	<artifactId>hibernate-envers</artifactId>
    </dependency>
  2. application.properties 加上設定

    spring.jpa.properties.hibernate.envers.audit_table_suffix=_rev
    spring.jpa.properties.hibernate.envers.revision_field_name=rev
    spring.jpa.properties.hibernate.envers.revision_type_field_name=revtype
    
  3. Hibernate Entity 加上 @Audit
    import javax.persistence.Entity;
    import javax.persistence.Table;
    
    import org.hibernate.envers.Audited;
    
    @Entity
    @Audit
    @Table(name = "my_entity")
    class MyEntity{
    	// 中略
    }

然而,實際執行時,Hibernate 處理版控資料時,都想要存入 my_entity_AUD,即

insert into `my_entity_AUD` 
# 下略

2024年8月16日 星期五

以數字開頭的 class element

如果 HTML code 如下

<span>Hello</span>&nbsp;
<span class="123">John Smith</span>

而 CSS 寫成如下,是無法作用的

.123{
	font-weight: bold;
	color: CornflowerBlue;
}

2024年8月12日 星期一

Logback 設定

最近在調整自己開發的系統的 log。程式使用 Spring Boot,log 使用 logback。

我的目的是要讓其 log 到一定量就自動壓縮成 .gz檔、每天壓縮。

2024年7月19日 星期五

OAuth 2.0 的 PKCE 筆記

PKCE 詳細規格請參閱 RFC7636

我在撰寫 OAuth 2.0 的登入時,會遇到 code_verifiercode_challenge 一直對不起來的狀況。

舉例來說,我請求 token 的參數為

client_id=aaa&
client_secret=bbb&
code=thisisasimpletoken&
code_verifier=HelloWorld&
grant_type=authorization_code

按照規範,我取得 authorization code 的 request 應該是 

client_id=aaa&
response_type=code&
scope=User.Read.All&
response_mode=form_post&
code_challenge_method=S256&
code_challenge=<將“HelloWorld”以 S256 加密後的字串>

2024年6月7日 星期五

SVG 文字置中

首先是個普通的 SVG:

Hi! quick fox
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200" width="300">
	<g fill="none" stroke="rgba(22, 22, 22, 0.5)">
		<path d="M 90 90 L 110 110 Z"/>
		<path d="M 110 90 L 90 110 Z"/>
	</g>
	<text font-family="Arial, sans-serif" x="100" y="100" font-size="30">Hi! quick fox</text>
</svg>

為了方便辨識,在 (100, 100) 的位置打了個叉。



上面的 SVG 可以看出來,文字無論是 x 軸還是 y 軸都沒有置中。

2024年5月29日 星期三

Microsoft Email SMTP 設定

不知為何還蠻難找到 MS 365 的 SMTP 設定,在此紀錄

host outlook-apaccentral.office365.com
port 587
protocol smtp
username 你的 Outlook mail,例如 john.smith@live.com
password Outlook 密碼
from username


另外,我是使用 Java + spring, spring 有兩個參數不確定是在其他程式語言對應的數值,所以在這邊先列一下:

spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.auth=true

2024年5月8日 星期三

multipart Email 的 Content-Disposition 差異

如果我今天要寄一封 E-Mail,內文要有圖片,那整封信的內容可能如下:

Subject: This is a test mail!
From: test@example.com
Content-Type: multipart/mixed; boundary="qwertyuio"

--qwertyuio
Content-Type: text/html; name="example.html"

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8"/>
		<title>Example</title>
	</head>
	<body>
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p>
		<img alt="" src="cid:28ce9652-4476-4e3c-8e9a-5d1bbae4cd05" />
	</body>
</html>

--qwertyuio
Content-Type: image/jpeg; name="example.jpg"
Content-Disposition: attachment; filename="example.jpg"
Content-ID: 28ce9652-4476-4e3c-8e9a-5d1bbae4cd05

<image content>

--qwertyuio--

2024年5月3日 星期五

SASS/SCSS處理 CSS 變數的問題

這是我使用他人套件時遇到的坑。

在使用 SASS / SCSS 時,遇到如下的 code

$red: #DB055E;

:root {
	--red: $red
}

.danger {
	color: var(--red)
}

我預期他應該會生成

:root {
	--red: #DB055E;
}
.danger {
	color: var(--red);
}

但實際上卻是生成

:root {
	--red: $red;
}
.danger {
	color: var(--red);
}

2024年1月29日 星期一

WebDriver 使用筆記

紀錄一下自己在使用瀏覽器 Web Driver 的筆記。

Web Driver 上網查的話,基本上都會告訴你這東西就是模擬瀏覽器,你可以在那進行各種操作。

但,網路上的範例都是 python code,對於厭惡 python 的人,例如我,就非常不友好。

2024年1月18日 星期四

Maven 自動 Compile SASS/SCSS (使用 us.hebi.sass plugin)

前一篇文章《Maven 自動 Compile SASS/SCSS (使用 nl.geodienstencentrum.maven plugin)》中提到使用 nl.geodienstencentrum.maven 這個 plugin 可以自動 compile SASS。

但這 plugin 是使用已經淘汰的 Ruby SASS(現在推薦使用 Dart SASS),且經過測試,只能支援到 Java 11(我自己是沒有 Java 12 ~ 16),Java 17(含)以上都會出現 Error。

於是我又另外去找,找到 us.hebi.sass 這個 plugin 。

2024年1月9日 星期二

Golang 需要不同 Go 版本有不同處理

如果我今天有 go code 需要不同版本有不同處理,要如何寫?

例如說, go 1.18 支援泛型了,但我的 code 要舊版,例如 1.17,也能執行。要如何處理

2024年1月5日 星期五

Maven 自動 Compile SASS/SCSS (使用 nl.geodienstencentrum.maven plugin)

SASS / SCSS 太強了
而且他還沒有使出全力的樣子
對方就算沒有 @mixin 或是 @include 也會贏
我甚至覺得有點對不起他……

不得不說,SCSS 真的太好用了。

就算沒有 @mixin 或是 @include,光是巢狀架構的處理就夠好用了。

雖然現在 CSS 也開始要支援巢狀寫法(Using CSS nesting - CSS: Cascading Style Sheets | MDN (mozilla.org)),但是現在 CSS 的複雜度都已經媲美 JS 了,還要追加巢狀架構,我真心覺得這些 web 委員會是不是沒事找事做啊。


不提這個,這邊只是要記錄一下,如何在 Java Maven 讓其在 compile / package 時,自動編譯 SASS

2024年1月4日 星期四

An invalid form control is not focusable

完整訊息是像這樣:

An invalid form control with name='' is not focusable

或是

An invalid form control with name='user-name' is not focusable

這是填完表單後,按下送出卻一直沒法送出,畫面也沒有跳出任何 invalid input 警示,打開瀏覽器的「開發人員工具」時,看到的錯誤訊息。