這本書算是蠻暢銷的,應該有其價值在,不過跟我預期的實在落差很大。原本以為是一個提點你如何找尋工作上適合的位置,結果大概只有第一章有「提到」,接下來的二三四章都是教你「如何工作」。我不是否定本書觀點,裡面也有很多值得思考的項目,後面會有一點筆記,只是內容與書名有極大的落差,讓我很失望。

想再次強調這篇文章只是隨興的筆記,並非完整的精華摘要,有些我已經知道或理解的,就不會特別列出來了


CH1

強調找尋自己的特長,而特長是會轉移、變動,且隨時間年紀而不同的。

  • 不要低估自己,因為消極面對決策而減少面對失敗的話,會讓自己過於自卑
  • 確認自己的目標,將之分為多個小項目,逐漸邁進
  • 生命中最重要的決定:
    • 你將用甚麼方式來謀生?甚麼職業?
    • 你將朝甚麼方向發展?找到一個立足點、熱愛的工作開始前進
    • 你將以甚麼方式工作?是積極還消極..等

CH2

  • 不要以社會地位、威望、體面、金錢等來評估一個工作的位置
  • 每個人都有選擇的權利!你的任何抉擇都是在選擇
  • 每一個位置都有其價值,如果不能給老闆創造價值,那就有可能失去工作的地位
  • 選擇最佳位置而非最佳行業
  • 每個人生階段都有最佳位置
  • 每一個工作都是值得尊敬的,沒人能夠貶低你,關鍵在於你如何看待自己的工作

CH3

  • 老闆眼中每個位置都有其價值,也絕對不會是一人獨占
  • 在甚麼位置就該做好那個位置的本分,創造價值
  • 主動、自發的工作
  • 自律,即使無人監管下,也要如同平常一樣勤奮
  • 別帶情緒工作。也許我們不能控制環境,但我們能夠控制面對環境的反應
閱讀全文 »

2022/10/03 Updated…

看到以前的文章,發現把這功能想得太複雜了,通常在批量調整索引時,數量也不會太多,直接從系統取得 Index 名稱,再進行刪除或建立即可。

1
2
3
4
5
db.getCollection("your.collection").getIndexes().forEach(doc => {
if(doc.name.indexOf("_id") != -1) return;
// or if(doc.name == "_id_" ) return;
db.getCollection("your.collection").dropIndex(doc.name);
});

非常簡單明瞭要做什麼。
雖然之前寫的做法可以開發出不同功能,不過簡單操作的話,上面這一段即可。


最近因為部署有些狀況,反而需要因應各環境 index 不同,分別有不同的調整,查了一下 MongoDB 並沒有類似的語法,只要是

  • Create 時名稱重複
  • Drop 不存在的 index

都會噴錯,導致後續語法不能繼續執行,因此自己寫了一個概念類似 upsert index 或者像是 insert ignore 的方法。

思路

  • 建立時,遇到
    • 名稱不重複:
      • 欄位一樣,可刪除舊的或者忽略新的
      • 欄位不同,建立新的
    • 名稱重複:
      • 欄位一樣,略過此建立
      • 欄位不同,先 drop 舊的再建新的
閱讀全文 »

本書就是隨性紀錄一下個人覺得注意的項目,大部分還都是常見的老生常談,就作為一個 memo,期許也提醒未來可以使用這些方式帶人。

這本書面向單純是 主管 對 部屬,其他方面就完全沒提到,想看其他內容就能直接忽略這本書了。


全書技巧

  1. 放手讓部屬執行
  2. 掌握部屬類型,採取不同對應方式
  3. 提供足夠的嘗試空間
  4. 打造自動自發的環境與心態
  5. 確認工作目標與步驟

CH1

  • 放手讓部屬去做,千萬別事必躬親

職責

  • 部屬:執行與報告
  • 主管:命令與承擔結果

CH2

閱讀全文 »

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

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


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

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

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

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


防衛心態

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

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

兒童自我狀態(Child Ego State)

閱讀全文 »

這篇文章會有三個部分:

  • 以 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 檔案,並貼上以下內容

閱讀全文 »

本篇將初次體驗 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

閱讀全文 »

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


應用場景

  • Scenario1

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

  • Scenario2

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

  • Scenario3

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

  • Scenario4
閱讀全文 »

建議搭配第一篇 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 前面。

閱讀全文 »

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

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

Step0 Prerequisite

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

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

Step1 購買網域

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

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

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

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

閱讀全文 »

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

Case1

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

$match -> $project

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

Case2

$match -> $sort

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

Case4

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

閱讀全文 »