SCSS calc variable error

今天遇到了一個詭異的問題。想用css variable來計算transform-origin的z軸,因此在scss中輸入:

transform-origin: 50% 50% calc(var(--board-width * -0.5));

當在dev模式中,一切沒問題,但production build時,就會噴Syntax Error。但更奇怪的是,其他地方一樣也有用到 calc(var()) 這樣的寫法,卻沒有錯。應該是dart-sass (v1.52.2)的bug吧。

最後把 calc(var(–board-width * -0.5)); 在包成一個variable,竟然就可以了。

--depth: calc(var(--board-width * -0.5));
transform-origin: 50% 50% var(--depth);

CURL筆記

加上Header

當我們在使用API時,應該都會需要我們透過header傳送token,或是指定所需要的格式(例如:json, xml),亦或是所需要的語系⋯⋯等等。我們可以透過 -H “Key: Value” 這樣的指令格式來輸入想要的Header。

curl -H "Authorization: Bearer mytoken...." -X GET https://xxx.xxx.xxx

加上多個Header

要加入多筆Header時也很簡單,只要再加一個 -H {header內容} 即可:

curl -H "Authorization: Bearer mytoken...." -H "Content-Type: application/json" -X GET https://xxx.xxx.xxx

利用CURL POST Form Data

當我們需要POST資料給server時,我們可以透過 -X 指令指定 method,要POST的話就輸入 -X POST {url},要PUT的話就輸入-X PUT {url},其他的methods就依此類推。然後,我們可以用 -d 指令來指定要傳輸的資料。form data的格式就像query string一樣是key=value,多筆時中間以&相連。

curl -d 'a=1&b=2' -X POST https://xxx.xxx.xxx

利用CURL POST JSON

與POST form data 的方式一樣,只是 -d 中的格式不是query string而是json,且可能會需要在header指定Content-Type為application/json。

curl -d '{"a":1,"b":2}' -H "Content-Type: application/json" -X POST https://xxx.xxx.xxx

跟硬碟使用量以及記憶體使用狀態有關的linux command line指令

前陣子因為用了六年多的DigitalOcean主機顯示硬碟容量不足,因此開始清理裡面的垃圾。清理完畢後發現MySql竟然記憶體飆高到40%,重啟服務、更新版本能試的方法試過一輪還是一樣。最後才發現原來自己誤刪了swap(類似Window的虛擬記憶體)。以下是當時在檢查問題點時常用到的command,我把他整理起來,免得之後要用又忘掉。注意:有些在mac上可用,有些不行。且有些雖然可用,但options可能會有點出入。

閱讀全文 跟硬碟使用量以及記憶體使用狀態有關的linux command line指令

JS浮點運算問題

Javascript在小數點的運算上,常常會出現無限小數的情況,這是因為Javascript依照IEEE754浮點數運算標準,因此在做運算時,會先把十進制轉成二進制,然而小數點在轉換到二進制時,會出現無限小數,例如:

// 將十進制的 0.1 轉為二進制
Number(0.1).toString(2) // '0.0001100110011001100110011001100110011001100110011001101'

因此在做 0.1 + 0.2 這樣的運算時,才會產生 0.30000000000000004 這樣的結果。遇到這個情況時,我們可以用 toFixed() 來解決。 number.toFixed(n) 會回傳一個 n 位內小數點的「五捨六入」的「字串」,n可為0-20,預設值為0,例如:

0.12366.toFixed(4) // '0.1237'
(0.1 + 0.3).toFixed(4) // '0.4000'

然後,因為輸出的是字串,我們可以再以 parseFloat() 轉回數字。例如:

parseFloat(0.12366.toFixed(4)) // 0.1237
parseFloat((0.1 + 0.3).toFixed(4)) // 0.4

宇多田光 First Love 歌詞翻譯

最近看Netflix「初戀」時,注意到主題曲 —— 宇多田光的 First Love 的歌詞翻譯部分,有一句讓我覺得應該有點超譯:

今はまだ悲しい love song
新しい歌 歌えるまで

這一句也是我在網路上看到大家翻得最有趣的一個段落。很多人堅持要一行一行翻,但因為上下兩句是有關的,翻譯時若順序不調換,或是不增加一些連接詞的情況下,翻出來的結果就會變得不太自然。

「今はまだ悲しい love song」的意思是「現在還是悲傷的情歌」,雖然這句沒有動詞,但看到下一句「新しい歌 歌えるまで」「到可以唱新的歌為止」這句,就可以理解到上一句的動詞應該也是唱。我的解讀是「悲傷的情歌」=上一段戀情,「新歌」=新戀情,「唱」=談(感情)。「在能唱(或是:有辦法唱)新歌之前,都還是只能唱著悲傷的情歌。」也就是說「在進入下一段戀情之前,都還只能思思念念著上一段戀情」的意思。於是拆開翻似乎就很難感受到這層意義。

印象中,這邊的「新しい歌 歌えるまで」 Netflix 好像是翻譯成「直到我出新歌為止」之類的。如果歌詞中有表明宇多田光就是歌詞裡的主角,那就似乎不會有什麼問題。但歌詞中並沒有關於主角是誰的暗示,所以直接這樣翻,似乎有點牽強。

以下是我完整的日文部分翻譯:

最後のキスはタバコの flavor がした
最後的親吻,有著香菸的「風味」

ニガくてせつない香り
那是苦澀且心痛的味道

明日の今頃には
あなたはどこにいるんだろう
誰を思ってるんだろう
明天的現在這個時候,你應該會在某個地方想著某個人吧?

You are always gonna be my love
いつか誰かとまた恋に落ちても
就算未來再喜歡上某個人

I’ll remember to love
You taught me how
You are always gonna be the one
今はまだ悲しい love song
新しい歌 歌えるまで
目前的我,還是唱著悲傷的情歌
直到我能唱新的歌為止


立ち止まる時間が
動き出そうとしてる
忘れたくないことばかり
靜止的時間,好像又要開始轉動
但腦裡盡是不想忘記的事情


明日の今頃には
私はきっと泣いている
あなたを思ってるんだろう yeah-yeah-yeah
明天的現在這個時候,我一定是邊哭邊想著你吧

You will always be inside my heart
いつもあなただけの場所があるから
因為我心裡總是有保留一個只屬於你的地方

I hope that I have a place in your heart too
Now and forever you are still the one
今はまだ悲しい love song
新しい歌 歌えるまで oh, oh-oh
目前的我還是唱著悲傷的情歌
直到我能唱新的歌為止


You are always gonna be my love
いつか誰かとまた恋に落ちても
就算未來會再喜歡上某個人

I’ll remember to love
You taught me how
You are always gonna be the one
まだ悲しい love song, yeah-yeah
還是唱著悲傷的情歌

Now and forever