在這個資訊爆炸時代、過於強調科技與成果的年代,每個人或多或少都有一些抑鬱或憂鬱,端看個人如何去面對這些情緒。這本書屬於入門等級的心理諮商書籍,內容中的故事都用動物來取代人,使整個故事多一些親和力與可愛的成分。

「蛤蟆先生去看心理師」,本書就是描述蛤蟆因為內心各種壓抑,進而影響到他的人生與社交生活。透過十次諮商的過程了解自己,面對自己並去解決問題。


  • 朋友不用多,但一定要有願意對你說實話的人

  • 你不用十全十美,但一定要有接納別人意見的心

  • 誰都無法主動趨使你改變,只有你自己可以

上面並不是本書內容,只是在剛開始閱讀時的感受,蛤蟆不是完美,但糟糕的狀態讓朋友們都看不下去,認真地「請」他去心理諮商,雖然蛤蟆滿是不願意,還是接受了朋友的要求。


防衛心態

人要靜下心來與自己溝通需要一個非常完美的環境,獨處、沒有手機的打擾、沒有其他打斷你的聲音,才有「可能」面對真實的自己。另一個方法會比較強制,就是諮商,所以每個人剛開始都是頑強抵抗,並且在內心築起防禦的高牆,畢竟要完全敞開心胸對他人是非常困難的。

  • 防衛心太強,代表你還沒辦法理解他人意見,絕對無法與他人進行有效的溝通,包含憤怒狀態

兒童自我狀態(Child Ego State)

Read more »

這篇文章會有三個部分:

  • 以 node.js 的 express 來建立 Hello world 伺服器
  • 撰寫 dockerfile
  • 編譯成 docker image

安裝 Node.js

Node.js 官方網站下載 LTS 版本並且安裝。

使用指令 node -v 會顯示當前版本

1
2
➜  first_dockerfile node -v
v13.14.0

建立 express 伺服器

首先使用指令 npm install,再輸入 npm install express 安裝 express 套件

最後是建立一個 server.js 檔案,並貼上以下內容

Read more »

本篇將初次體驗 docker 的操作


初次學習一項新的技術或語言 hello world 已經是一個慣例了,而 docker 官方也有提供此 image 供大家體驗。

docker hello world

輸入指令 docker run hello-world

1
2
3
4
5
6
7
8
9
10
11
 ✗ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:97a379f4f88575512824f3b352bc03cd75e239179eea0fecc38e597b2209f49a
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

...下略

可以看到我們電腦並沒有此 image,因此會自動從網路上下載你想啟用的 image

輸入指令 docker image ls hello-world
可以看到 image 已經下載回來了。

1
2
3
➜  blog git:(master) ✗ docker image ls hello-world
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 4 months ago 13.3kB

輸入指令 docker run hello-world

Read more »

本篇僅介紹基本的 docker 概念與架構,不會涉及到實作與指令等。


應用場景

  • Scenario1

機器數量很多正在安裝,數天到數周後才能交付

  • Scenario2

工程師:「這在我的電腦是好的」
QA、User、PM:「在我電腦看就是壞的啊!」

  • Scenario3

專案用開發/測試環境很複雜,與其幫你安裝,不如我建立好 VM,拷貝給你後使用
VM 開太多了,電腦不太能動

  • Scenario4
Read more »

建議搭配第一篇 MongoDB 不懂 ESR 別說你會用 Index !! 一起閱讀


我們建立 MongoDB 索引時需要掌握 ESR 原則,所謂的 ESR 代表的是 E(quality)、S(ort)、R(Range),也就是説,索引欄位順序必須是這個順序,才能達到最佳效能。

這是一個大原則,相同類型的欄位可以重複,例如:

  • EESR (O)
  • ESRR (O)
  • ER (O)
  • EER (O)
  • ESER (X) 像這種違反大原則的就不符合規則

我們遵循 ESR 規則的原因是使得每次查詢都能夠以最少的 KEY 掃描次數就能找到文件為目標,這樣速度會是最快的。大家可能受到 RDB 觀念影響,就很容易發生未遵照 ESR 原則的情況,這樣會使得查詢未達最佳化。

如果沒按照 ESR 規則,MongoDB 的查詢速度肯定會受到影響,其次是第一階段會使用 RAM 進行索引排序,也就是後面會提到的 sortsort_key_generator; 第二階段,一但超過記憶體使用上限,就必須使用硬碟排序,此時必需啟用 allowDisk 設定,速度會再更慢。附帶一提,MongoDB find 查詢的參數順序是沒影響的,例如 .find({ fieldA: true, fieldB: 3 }) 等同於 .find({ fieldB: 3, fieldA: true })

這邊要強調,實務上並非所有情境都需要即時得到查詢結果,例如週期性產生報表的排程作業就沒有這麼高的即時性,刻意建立相關的索引會換來寫入速度降低。

使用測試資料來演示 ESR

這邊我們先建立了五筆資料與一把索引,特別注意索引刻意先把 Range 建立在 Equality 前面。

Read more »

這篇文章將會一步一步教學從買網域開始,到修改自己 Github 網誌的網址。

網路發展至今,很多東西都大幅開放與提升,而服務也是日新月異,如今要擁有自己的網域,是一件非常簡單的事情,重點是非常便宜,何不先創立自己的品牌呢~

Step0 Prerequisite

  • 在 Github 有建立 Blog
  • 想使用自己的網域名稱

其實購買網域的用途都不一樣,只是我的用途是這個,而這篇文章純粹想紀錄比較新的版本。

Step1 購買網域

網路上有很多提供網域購買的網站服務,常見的像是 GoogleNameCheapAzureAWS,好了要講可能講不完,挑一個你覺得順眼的就對了。

只想特別提醒,有些品牌打著超低價,但是第二年的續約價錢卻拉高不少,雖然這是一種行銷手法,但個人非常不喜歡,沒注意到的人可能就上當了,畢竟域名這種東西較少說改就改,辛苦經營了一年後發現續約價格高了不少,會很不舒服。

本篇介紹的域名商是 Cloudflare,本身也能夠處理 DNS 問題,剛好滿足需求。印象之前有出了個大包,但不影響我決定就是了。

註冊後就能看到 Dashboard,依序點擊圖中的 購買網域

Read more »

寫 MQL aggregation 有一些要注意的地方,雖然蠻多部分 MongoDB 都幫你優化了,但還是要注意一下小地方,讓你的 MQL 效能更好

Case1

絕對優先使用 $match 減少資料量

$match -> $project

  • $match 過濾不必要的資料,減少記憶體與CPU消耗
  • $project 過濾不必要的欄位,同上,若你預期的結果不需要使用某些欄位時,就先移除再進行其他操作

Case2

$match -> $sort

基本上是上面的變形,先減少資料量再排序

Case4

這邊是比較少用到的狀況,但也很好理解

Read more »

MongoDB Index Intersection,索引交集


MongoDB 索引交集,初次看到這個東西覺得很神奇,查了一下是在 2.6 版本提供的新功能。

用途是一個查詢中,可以使用兩把 Index 進行協助查詢,注意,至多只能是兩把!所以你想把每個欄位都單獨建立索引,讓他能夠自由組合就錯了。

說明文件開頭也聲明:

  • 請使用 Compound Index 而非使用 Index Intersection
  • explain 上也不會優先使用它
  • 若查詢中有排序,就不能使用它

看了上述三項,應該很多情境都不會用了。


在更細去探討之前,先了解 Index。

例如我們現有一把 Index

Read more »

Environment

  • macOS Monterey
  • DotNet SDK 6.0.101
  • Rider IDE 2021.3.2
  • DotNet Core Project

升級 DotNet Core 版本後,有遇到某些專案會無法建置,錯誤如下:

NETSDK1177: Failed to sign apphost with error code 0

解法 1

  • Step1: 刪除專案底下的 obj 資料夾
  • Step2: 執行 Nuget restore

通常就可以解決了,如果還是無法,還有第二種…

解法2

直接輸入 xcode-select --install,等待安裝完畢即可

Read more »

Postman 發展至今已經是很強大的 API 測試工具,早期為單純的 API 測試,接著陸續加入了腳本、整合多個測試、個人同步、團隊協作甚至是開發 API 與 Mock server(模擬伺服器),讓你不需要熟稔程式也能開發自己的 API。


前置作業

  1. Postman官網 下載並安裝好 Postman
  2. 選擇以下任一個 API 測試網站,挑一個覺得順眼的就可以了

接下來我們練習的 API 會直接打到這些網站之一的接口


本篇會著重在介紹基本的使用。

打開 Postman 後會長這個樣子,點擊左方的 Collection,這個 Collection 像是一個測試資料夾,可以放置多個 API 測試之後,陸續執行。先來建立一個屬於這次測試的資料夾吧!

alt

Read more »