2023-06-29

如何用 npx 來使用不同版本的 npm

以下是一個簡單的 package.json

{
	"name": "Lorem ipsum dolor sit amet",
	"version": "1.0.0",
	"description": "Ac odio tempor orci dapibus.",
	"main": "index.js",
	"scripts": {
		"start": "webpack",
		"dev": "webpack-dev-server --open"
	},
	"engines": {
		"node": "v8.6.0"
	}
}

如果我的 Node.js 是最新版,那就無法執行該專案了。

2023-01-11

紀錄:Go 如何將 SVG 轉成 image.Image

因為在 Go 中,圖片是靠 image package 來處理的。

而在原生 library 中,並沒有針對 svg 的處理。


我在網路上有找到相關 library ,特此紀錄。


2022-12-05

golang 的 init()

之前就很好奇,像是 github.com/go-sql-driver/mysql 到底是如何做到只需寫以下幾行,就能夠連線 mysql

import (
	"database/sql"

	_ "github.com/go-sql-driver/mysql"
)

// ...

db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306/my-db)")

2022-11-25

Golang slice 研究筆記

以前有研究過 Go silce 的指針,後來看了一些文章,才知道說 Go 本身在底層還有一個 array 來處理 slice。


簡單說,我今天建立一個 slice,實際上同時建立了一個 array

而array 實際上就是個指針


所以執行以下 code 會 print 出同樣的值


arr1 := []int{1, 2, 3}
arr2 := arr1

fmt.Printf("%p\n", &arr1[2])
fmt.Printf("%p\n", &arr2[2])

換言之,arr1[1] = 10 同時會更改到 arr2[1],因為兩者底層的 array 是同一個。

2022-11-02

Shell script 在執行程式時,遇到詢問時,如何自動回應

某些程式在執行的過程中,會進行詢問,舉例來說:

$ some-program 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mattis velit purus, et bibendum neque dapibus ut. Aliquam erat volutpat. Sed vulputate fermentum eros eu consequat. Vivamus in tellus sit amet dui fringilla tempor sed in lectus. Vestibulum dapibus justo elit, imperdiet vehicula nisi varius id. Nulla posuere ante eu augue commodo ultricies. Nulla nec mauris elit. Donec dolor dolor, interdum eget eleifend ac, rhoncus sit amet libero. Proin ullamcorper luctus libero, id porta tellus ultricies venenatis. Nunc lobortis vulputate diam, in dictum libero scelerisque eget. In et est nulla. Integer venenatis vitae ligula ac faucibus.

----------

Accept? (y/N):

詢問你是否同意,如果同意才能繼續進行。


如果我只是自己開終端機執行也就算了,鍵盤輸入 y 就好,但如果是寫 shell script 就不一樣了


2022-10-28

Deno 如何保留 cookie

自己試著用 Deno 寫小機器人

不過不管試幾次,登入後去其他 request 都做不到


我的 code 大致如下

const account = "foo@example.com"
const password = "bar123456789"
const host = "http://localhost:8080"

let cookie = await fetch(`${host}/login`, {
	body: `account=${account}&password=${password}`,
	method: "POST",
	headers: {"Content-type": "application/x-www-form-urlencoded"}
})
	.then(function(resp){
		return resp.headers.get("Set-cookies") || "" 	// 不加上 || "" 的話,cookie 就會被視作 nullable 變數,在 deno 可能會說 warning 或 error
	})

fetch(`${host}/some-request`, {
	headers: {"Cookie": cookie}
})
	.then(function(resp){
		return resp.text()
	}).then(function(data){
		console.log(data)
	})

以上這段 code 最終會 redirect 到首頁而已

因為 cookie 取不到(換言之, cookie 變數一直都會是空字串)