2026-09-23

紀錄:Golang 自動整理 import

go fmt 雖然是官方文件直接告訴你的修正格式工具,但go fmt並不會幫你自動修正 import

例如

package main

import "fmt"

func main(){}

這段 code ,如果執行 go fmt,他不會自動幫你刪除 import "fmt"

但 golang playground 和 vs code 的 go 插件都能做到……

2026-09-14

資料庫 SELECT VALUES 語法

有時候,為了測試,需要 select 一組範例資料,例如我需要一組有 id、account 的使用者假資料

id account
10 lorem_ipsum
11 morbi_vitae
12 mauris
13 morbi_fermentum
14 curabitur

我會這樣處理:

SELECT 10 AS id, 'lorem_ipsum' AS name
UNION ALL
SELECT 11, 'morbi_vitae'
UNION ALL
SELECT 12, 'mauris'
UNION ALL
SELECT 13, 'morbi_fermentum'
UNION ALL
SELECT 14, 'curabitur'

2026-09-08

[版控] 整理專案的 flow

紀錄一下自己整理開發分支的動作

在專案開發時,當時間一長,就會出現許多 hotfix / feature 分支,合併至開發或正式分支上,導致整個變得紊亂。

2026-08-14

[Oracle 11] 發生系統例外: ORA-00923: 在應出現的位置找不到 FROM 關鍵字

先說一下,我的 Oracle DB 與 SQL 引擎版本如下

Oracle Database 11g Release 11.2.0.2.0 - 64bit Production 
PL/SQL Release 11.2.0.2.0 - Production

這是我最近遇到的狀況。

我的 SQL 如下

SELECT FOO01 AS name,
       FOO02 AS foo_value
FROM FOO_TABLE

結果就出現錯誤了

2026-08-13

SQL 中 NOT IN 的陷阱

這是我的 SQL

WITH T AS (
	SELECT 1 AS id 
	UNION ALL 
	SELECT 2 
	UNION ALL
	SELECT 3 
	UNION ALL
	SELECT 4
),
S AS (
	SELECT 10 AS id
	UNION ALL 
	SELECT 11 
	UNION ALL 
	SELECT 12
	UNION ALL 
	SELECT 4
)
SELECT * FROM S
WHERE id NOT IN (SELECT id FROM T)

這段 SQL 執行完畢後,會得到

id
10
11
12

但是,如果今天 T 加上一筆 null 資料,即:

id
1
2
3
4
(null)

2026-08-10

SQL Server ,僅修改時間欄位的年/月/日

假設我的 table 如下

id foo_date ……
123 2020-01-05 ……
124 2020-02-16 ……
125 2020-11-21 ……

如果我要更新 foo_date,將月份改成 6 月,則可以

2026-06-15

git 查找 branch 合併狀況

記錄自己常用的 git 小技巧。

假設我 git 紀錄如下

*   5a5a7de6e1dd21123ef8348e81fb60e0651629f9 (HEAD -> master) Merge branch 'feature/foo'
|\
| * 1183a01ad3f246801b978cad341958ae61c014db (feature/foo) add file
* | eed52969748a01082308d922c5500281a3d24abb ...
* |   1b4089b3fc6fd79cebeb7569e56156c65e68e309 Merge branch 'feature/bar'
|\ \
| |/
|/|
| * 6ed0449194220f2bd1d0e73881075f74ddf921a0 (feature/bar) .
|/
| * 5c65ffa567b1e52f61df6dbbef797c074884e70e (feature/example) add file
|/
* 2e6b164aa6a8042bfa4b11cf4c4ab4fefb7fc66c Init

哪些 branch 包含指定 branch / commit

要知道「那些 branch 有指定 branch / commit」的話,使用git branch --contains

git branch --contains feature/bar
  feature/bar
* master
git branch --contains feature/foo
  feature/foo
* master 

從中可知,feature/bar、feature/foo都已經合併至 master

指定 branch / commit有包含哪些 branch

如果要知道,「有哪些 branch 合併至指定 branch」,則

git branch --merged master
  feature/bar
  feature/foo
* master
git branch --merged eed52969748a01082308d922c5500281a3d24abb
  feature/bar

eed52969748a01082308d922c5500281a3d24abb 雖然是 master 的 commit,但因為現在 master 的版本更新,所以沒有把 master 列入

2026-05-28

golang 要如何使用 json v2

最近嘗試一下 go1.25 新增的 json v2。不過沒想到一下子就卡關了

我程式如下

package main

import (
	json "encoding/json/v2"
	"log"
)

func main() {
	out, err := json.Marshal(
		struct {
			N  string
			ID string
		}{N: "John"},
	)
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("%s", out)
}

然而,執行 go run {這個 go 檔案}時,卻出現以下錯誤

imports encoding/json/v2: build constraints exclude all Go files in %USERPROFILE%\AppData\Local\go\src\encoding\json\v2

這主要原因是因為 json v2 是個實驗性 package,不在 golang v1 的相容性保證中。

所以需要特殊處理。

2026-05-27

cURL 小技巧:顯示連線的時間……等資訊

cURL 在默認情況下,有很多資訊是不會顯示,例如你連線的時間、上傳以及下載的速度……等等。

2026-05-05

Git 倉庫無法以 SSH 連線,導致無法 clone

因為各種原因(例如 Git Server 是公司自架的,因此憑證被判定為不受信任的來源)沒辦法正常 clone 專案。


這裡記錄幾種可嘗試方案

2026-03-12

JavaFX 編譯成可執行程式

以前有寫過接手 JavaFX 專案的筆記。這篇則是從 0 建置 JavaFX 後的筆記紀錄。

我這次使用以下面的指令建立 javaFX 專案(windows 的話要把\改成^):

mvn archetype:generate \
    -DarchetypeGroupId=org.openjfx \
    -DarchetypeArtifactId=javafx-archetype-simple \
    -DarchetypeVersion=0.0.6 \
    -DgroupId=com.example \
    -DartifactId=jfxsample \
    -Dversion=0.0.0-SNAPSHOT \
    -Djavafx-version=17.0.14

生出來的專案架構如下:

│  pom.xml
│
└─src
    └─main
        └─java
            │  module-info.java
            │
            └─com
                └─example
                        App.java
                        SystemInfo.java

如果我執行 mvn javafx:run,可以啟動專案。

但是 mvn package的話,執行 java -jar target/jfxsample-0.0.0-SNAPSHOT.jar會出現以下錯誤訊息

Error: Unable to access jarfile target/jfxsample-0.0.0-SNAPSHOT.jar

如果你的 jre 是中文版,錯誤訊息則會是

target/jfxsample-0.0.0-SNAPSHOT.jar 中沒有主要資訊清單屬性

2026-02-23

更新 maven 專案版本

可以直接使用指令來更新版本

mvn versions:set -DnewVersion={ 版本號 }

例如我原本是

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.foo</groupId>
  <artifactId>bar-app</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>bar-app</name>
  <!-- 中略 -->
</project>

執行 mvn versions:set -DnewVersion=1.0.3-SNAPSHOT,就會變成

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.foo</groupId>
  <artifactId>bar-app</artifactId>
  <version>1.0.3-SNAPSHOT</version> <!-- 這邊更新了 -->

  <name>bar-app</name>
  <!-- 中略 -->
</project>

2026-02-10

2026-01-22

Oracle 的特殊 SQL 紀錄

最近因為工作需要,去接觸老系統的資料庫

該資料庫是 Oracle 11,裡面有很多特殊的 SQL 語法。

在此紀錄一下

2026-01-09

ebiten 在 linux 編譯的坑

我今天有個 golang 專案使用 🦐ebiten。

這個專案在 windows 上測試、編譯都好好的。

結果到了 linux 環境就沒法編譯了。

2026-01-08

ERR_UNSAFE_PORT

先前我在開發軟體時,我設定讓他以 localhost:6000 開啟,結果出現 ERR_UNSAFE_PORT 錯誤,然而用 cURL 卻又一切正常。

經查詢,這是因為 6000 在瀏覽器中被列為 unsafe port。

這個 port 是 linux X11 桌面系統所用的,所以瀏覽器將之限制了。