2020年1月14日 星期二

冷水坑 一遊

陽明山 除了國中畢業旅行來台北有上去外
在台北住了10幾年大概也只去過一次

要上班的禮拜二 8點50分的高鐵上
除了要去台北開會上班的上班族
大多是上了年紀悠閒生活的長輩

出了板橋車站 馬路上看起來剛下了一點雨
往新莊的99號公車 少了趕上班趕上課的學生
這是平日休假可以享受到的輕鬆

看著窗外 過了大漢橋 一站一站
下車在中華路與幸福路口
沿著幸福路 慢慢的走 轉過了中平路
再走到麥當勞
點了個早餐
才吃完 你就出現了
滿臉笑意的你 我知道你現在心情不錯

開著車 上陽明山 本來說去擎天岡看看
山上霧濃 到冷水坑已經看不到再往上的路
四處霧茫茫的一片 看不到更遠的地方
往夢幻湖的路上 公共澡堂外
許多上了年紀的阿公阿嬤 在這裡泡腳
繼續往上走 雖說 指標只是大概一公里的路程
全部都是上坡路 還是要停下來休息一下
路上 已經有許多櫻花開了
想起了 踏浪歌詞的那段

山上的山花兒開啊 我才到山上來
原來你也是上山 看那山花開

夢幻湖到了 好像不太夢幻
不過要的是一起走這段路的過程
終點 其實 不是重點

要下山了 也到冷水坑泡泡腳
不過水溫 太低 沒有泡溫泉的舒服
開著車往北投 泡真正的溫泉



2020年1月3日 星期五

Linux中文檔名亂碼

系統轉到Linux上
部份在mac或window上壓縮的中文檔名檔案
包括繁體 簡體 變成亂碼檔名無法辨識
參考這篇 可以簡單的解出正確的檔案名稱

sudo apt-get install convmv
LANG=C unzip file.zip

參考連結

2019年12月31日 星期二

nodejs 錯誤處理

當在開發nodejs 程式 規模越來越大時
功能可能就被切割到多個function內
各階段的錯誤處理 有統一標準的作法
會便於建立標準的工作流程
整理一下關於錯誤的處理的注意要點

1.完全不處理 系統會自動以throw將錯誤丟出
2.若要對error資訊做處理或是加工 錯誤資訊
  請用try catch包起來
3.丟出錯誤 請統一用Error物件丟出
  catch攔截到的一定是Error物件
  發生錯誤自動throw出去的也一定是Error物件
4.當使用catch攔截到error物件處理後
  若寫了catch攔截錯誤
  在catch內執行throw將錯誤往外丟
  否則程式會繼續往下走
5.自訂Error物件
  e= new Error('messagxxxxxe') 可透過e.message 取得資訊
  系統throw出的錯誤訊息都會是在e.message
  若要加入自訂的資料屬性可以用 ex: e.info = sql ..
  Error物件屬性只有message是通用跨browser通用
6.系統已經加上error 處理的middleware
  若錯誤沒有被處理回到route上
  會被error handler接收

參考Error物件

2019年12月24日 星期二

supertest server執行時間過長 timeout問題排除

supertest 做api 的route測試
通常會在before內建立連線
再交由後續it進行測試

建立連線的過程
通常可能會是
const server = app.listen(5000,...)
api = supertest(server)
產生api 物件做後續的測試
如果產生server時間過長 (預設限制是2000ms)
則會因timeout而讓測試無法進行
在執行 mocha時 可以透過設定 加長timeout的時間
mocha --timeout 5000

2019年12月2日 星期一

mongodb建立使用者錯誤 Error: couldn't add user: Use of SCRAM-SHA-256 requires undigested passwords

mongo db 預設是不需要密碼連線的
要使用密碼連線須 先建立使用者帳號
原本3.x版建立使用者

db.createUser(
{
    user: "ozzysun",
    pwd: "xxxx",
    roles: [{ role: "root", db: "admin" }]
})

在4.x版後會有錯誤發生
須加上宣告密碼encode方式
db.createUser(
{
    user: "ozzysun",
    pwd: "xxx",
    roles: [{ role: "root", db: "admin" }],
    mechanisms:[  
      "SCRAM-SHA-1"
    ]
})