快來點我 👉👉👉 https://hahow.in/cr/kewang-backend 👈👈👈
大家好,小編這次籌備的新課「專為前端工程師準備的 Node.js 後端實戰課程」開始在 Hahow 好學校 上架募資啦!
在 2021/7/14 之前,在這篇文章按讚,並且公開分享這篇文章,及 tag 一位你的好朋友,除了可以用超優惠價格購買這門課程外,還有機會獲得 8 折的 coupon 喔!
---
這門課主要是從小編在這六七年來對於後端開發的集大成,以 Node.js+VS Code 做為開發環境。
會開這門課程的原因,主要是因為後端運用廣泛,但是門檻高、人才難找。而前端工程師經過了 MVVM 框架及 JavaScript 的洗禮後,再加上 Node.js 的流行,轉職到後端會比其他語言多了一層優勢。所以這門課程希望能讓已經有 JavaScript 基礎的前端工程師,也能輕鬆進入後端開發的大門。
課程內容主要是從 Express.js 開始著手,以 TODO list 做為貫穿整門課程的專案,其中可以學到許多內容,像是:
🔥 如何活用 package.json 及 dotenv 讓你快速開發
🔥 express.js 最重要的 middleware 開發及如何擴充 req/res
🔥 如何使用 Heroku 讓你快速部署網站上雲
🔥 如何使用 New Relic 來觀測網站運作狀況
其中也會教大家如何撰寫 API 文件及 RESTful API 的串接實戰,像是:
🔥 request 失敗到底要用 200 還是 400 回應
🔥 使用 mock server 快速串接 API
🔥 使用 Markdown 快速撰寫 API 文件
而資料庫則會搭配 MongoDB 及 Redis 做為快速開發使用:
🔥 MongoDB 的 schema 設計、CRUD 及最重要的 aggregate 使用方式
🔥 Redis 的 set/get 及 expire 功能簡易使用
---
這門課也有兩個募資解鎖單元,分別是「如何使用 Redis 開發 autocomplete 功能」、「如何使用 BullMQ 縮短 API 的回應時間」,歡迎大家踴躍報名這門課程,對課程有任何疑問都可以在課程網頁留言喔!
#nodejs #expressjs #javascript
同時也有3部Youtube影片,追蹤數超過12萬的網紅prasertcbs,也在其Youtube影片中提到,การติดตั้ง Node.js package ด้วย npm (Node Package Manager) การสร้าง package.json ด้วย npm init เข้าใจ package dependencies เชิญสมัครเป็นสมาชิกของช่องน...
「nodejs https server」的推薦目錄:
- 關於nodejs https server 在 Kewang 的資訊進化論 Facebook 的最佳貼文
- 關於nodejs https server 在 Kewang 的資訊進化論 Facebook 的最佳貼文
- 關於nodejs https server 在 軟體開發學習資訊分享 Facebook 的最讚貼文
- 關於nodejs https server 在 prasertcbs Youtube 的最佳貼文
- 關於nodejs https server 在 prasertcbs Youtube 的精選貼文
- 關於nodejs https server 在 prasertcbs Youtube 的最佳貼文
- 關於nodejs https server 在 How to create an HTTPS server in Node.js? 的評價
- 關於nodejs https server 在 Create a Secure HTTPS Server with Node JS! - YouTube 的評價
- 關於nodejs https server 在 Win 10 安裝Node.js 和http-server | AnnKuoQ Blog 的評價
- 關於nodejs https server 在 Nodejs https server的問題包括PTT、Dcard、Mobile01 的評價
- 關於nodejs https server 在 Nodejs https server的問題包括PTT、Dcard、Mobile01 的評價
- 關於nodejs https server 在 Nodejs https server的問題包括PTT、Dcard、Mobile01 的評價
- 關於nodejs https server 在 nodejs https server的推薦與評價,STACKOVERFLOW ... 的評價
nodejs https server 在 Kewang 的資訊進化論 Facebook 的最佳貼文
最近 Funliday-旅遊規劃 常發一些精選旅遊回憶的 App 通知給使用者,在去年十一二月的時候發通知 Server 還能撐的了瞬時大流量的 request。
但今年開始發這類通知,總共發了三次,三次都造成 Server 被打掛,而且重開 AP 還緩解不了,瞬間手足無措。大概都要等過了十分鐘左右,Server 才將這些 request 消化完。
這裡就來簡單整理一下時間軸,順便分享一下 Funliday 是如何解決這個問題。
---
* 1/6 1900:系統排程發送精選旅遊回憶的 App 通知
* 1/6 1900+10s 開始:Server 收到極大量的 request
* 1/6 1900+20s:Nginx 出現錯誤訊息 1024 worker not enough,並回傳 http status code 503
* 1/6 1900+25s:PostgreSQL 出現錯誤訊息 could not fork new process for connection (cannot allocate memory)
* 1/6 1900+38s:Node.js 收到 PostgreSQL 的 exception。There was an error establishing an SSL connection error
* 1/6 1900+69s:PostgreSQL 出現錯誤訊息 database system is shut down
* 1/6 1900+546s:PostgreSQL 出現錯誤訊息 the database system is starting up
---
看了時間軸就覺得奇怪,先不論 10s 的時候發了極大量 request,造成 20s 在 Nginx 出現 worker not enough 的錯誤訊息。而是要關注 25s 時的 PostgreSQL 出現 could not fork new process for connection 的錯誤訊息。
Funliday 用了同時可承載 n 個 connection 的資料庫,而且程式碼又有加上 connection pool,理論上根本不該出現這個錯誤訊息。但整個時間軸看下來感覺就是 PostgreSQL 的 capacity 問題,造成系統無法運作。
因為就算將 Nginx 的 worker connection size 再加大 10 倍,只是造成 PostgreSQL 要接受的 request 也跟著被加大 10 倍,但 PostgreSQL 那裡因為 request 變多,原本在 69s 直接關機的時間點只會提早,而無法真正緩解這個狀況。
基於以上狀況,小編就開始回去看自己的程式碼是不是哪裡寫錯了。會這樣想也是覺得 PostgreSQL 應該沒這麼弱,一下就被打掛,一定是自己程式碼的問題 Orz
---
這邊來分享一下自己程式碼的寫法,圖一是原始寫法,在每個 API 都 create 一個 db client instance 來處理該 API 層的所有 db request。這是蠻單純的做法,也是 day 1 開始的處理方式。但有個小問題,就是每個 API 層都要自己 create instance,不好管理,且浪費資源。
後來因為想要做 graceful shutdown 的關係,所以調整了一下 db client instance 的建立方式,用 inject 將 instance 綁在 request 上面,如圖二。這樣只要在 middleware 建立 db client instance 就好,好管理,而且只要有 req 就可以取得 instance,非常方便。而這也是 1/6 時的程式碼,就從這裡開始研究吧。
---
直接切入 node-postgres 的文件,認真讀了一下 pool 有下面兩種使用方式:
1. pool.connect, pool.release:文件寫著 checkout, use, and return,光看描述就應該用這個沒錯。
2. pool.query:適用於不需要 pool 的連線方式,文件上也清楚寫著內部實作是直接 call client.query,所以用了這個方式是完全跟 pool 扯不上邊。
但偏偏小編從 day 1 用的就是第 2 種方式 Orz,雖然看起來應該是寫錯,但也是要修改後實測,才知道是不是真的可以解決問題。
---
如圖三,這是修改後的程式碼。想了一下子,覺得目前在 API 層使用 req.pool.query 還不錯,不想用官方的建議做法:先 create client,然後 query 之後,再使用 release。
如果照官方建議做法,API 層的程式碼會多一堆與商業邏輯無關的程式碼,也不好維護。所以在不想動到 API 層的程式碼,只能使用 monkey patch 的方式來達到這個需求。
monkey patch 可以將原方法利用類似 override 的方式,將整個方法改掉,而不改變 caller 的程式碼,這也是 JavaScript, Ruby, Python 這類動態語言的特性之一,但真的要慎用,一不小心就會把原方法改成完全不同意義的方法了。
所以原本應該要在 API 層實作 connect, query, release 一大堆程式碼,可以用 monkey patch 完美解決這一大堆程式碼。
---
在 dev 壓測後至少 capacity 可以達到原本的 4 倍以上,隔天實際上 production 之後也確實如壓測般的數據,可以承載目前的流量。
其實這篇分享的重點只有一點,文件看仔細才是最重要的事啦!如果沒把文件看仔細,然後開發經驗也不足的話,什麼 RCA、monkey patch 都幫不上忙啦!
---
後記:有夠丟臉,其實完全用不到圖三,只要把圖二的 pool creation 放到最外層就好了,因為 pool.query 的內部實作已經有做 connect, query, release 了。
感謝下面的 Mark T. W. Lin 及 Rui An Huang 的幫忙,實在是太搞笑了 Orz
* Pool 的文件:https://node-postgres.com/features/pooling
* 官方建議寫法:https://node-postgres.com/guides/project-structure
* pool.query 的內部實作:https://github.com/brianc/node-postgres/blob/master/packages/pg-pool/index.js#L332
#expressjs #nodejs #javascript #postgresql
nodejs https server 在 軟體開發學習資訊分享 Facebook 的最讚貼文
你是開發人員,並且想了解有關 DevOps 更多資訊嗎?
你是否正在尋找實用指南以開始進行持續整合( CI )和持續佈署( CD )?
你是否正在從事 Web、Mobile,Container 或 Database 專案,並且想要實現 CI/CD?
本課程將呈現如何為不同類型的專案建立 CI/CD管道的演示。
你將從 Web 應用程式開始:Java,.NET Core 和 NodeJS。 然後,你將看到用Xamarin 開發的行動應用程式並佈署到 App Center。
接下來,你將看到如何為 Docker 應用程式建立 CI /CD 並將其佈署到 Kubernetes。
之後,你將把資料庫含入管道中。你將看到一個 SQL Server 演示,將其佈署到Microsoft Azure Cloud 上。 然後,你將使用 ARM 樣板在 Azure 中置備資源。
這些管道將使用 Sonar Cloud 執行單元測試、功能測試和靜態原始碼分析。
你還將看到使用 Azure Key Vault 保護金鑰和機密的良好做法。
https://softnshare.com/azure-devops-ci-cd-pipelines/
nodejs https server 在 prasertcbs Youtube 的最佳貼文
การติดตั้ง Node.js package ด้วย npm (Node Package Manager)
การสร้าง package.json ด้วย npm init
เข้าใจ package dependencies
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
สอน Node.js ► https://www.youtube.com/playlist?list=PLoTScYm9O0GERtEdsPHK5Q-cdor5ADnyM
สอน PostgreSQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH
สอน MySQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GFmJDsZipFCrY6L-0RrBYLT
สอน Microsoft SQL Server 2012, 2014, 2016, 2017 ► https://www.youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn
สอน SQLite ► https://www.youtube.com/playlist?list=PLoTScYm9O0GHjYJA4pfG38M5BcrWKf5s2
สอน SQL สำหรับ Data Science ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGq8M6HO8xrpkaRhvEBsQhw
การเชื่อมต่อกับฐานข้อมูล (SQL Server, MySQL, SQLite) ด้วย Python ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEdZtHwU3t9k3dBAlxYoq59
การใช้ Excel ในการทำงานร่วมกับกับฐานข้อมูล (SQL Server, MySQL, Access) ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGA2sSqNRSXlw0OYuCfDwYk
#prasertcbs_nodejs #prasertcbs

nodejs https server 在 prasertcbs Youtube 的精選貼文
ดาวน์โหลด Node.js ► https://nodejs.org/en/download/
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
สอน Node.js ► https://www.youtube.com/playlist?list=PLoTScYm9O0GERtEdsPHK5Q-cdor5ADnyM
สอน PostgreSQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH
สอน MySQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GFmJDsZipFCrY6L-0RrBYLT
สอน Microsoft SQL Server 2012, 2014, 2016, 2017 ► https://www.youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn
สอน SQLite ► https://www.youtube.com/playlist?list=PLoTScYm9O0GHjYJA4pfG38M5BcrWKf5s2
สอน SQL สำหรับ Data Science ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGq8M6HO8xrpkaRhvEBsQhw
การเชื่อมต่อกับฐานข้อมูล (SQL Server, MySQL, SQLite) ด้วย Python ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEdZtHwU3t9k3dBAlxYoq59
การใช้ Excel ในการทำงานร่วมกับกับฐานข้อมูล (SQL Server, MySQL, Access) ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGA2sSqNRSXlw0OYuCfDwYk
#prasertcbs_nodejs #prasertcbs

nodejs https server 在 prasertcbs Youtube 的最佳貼文
ดาวน์โหลด Node.js ► https://nodejs.org/en/download/
เชิญสมัครเป็นสมาชิกของช่องนี้ได้ที่ ► https://www.youtube.com/subscription_center?add_user=prasertcbs
สอน Node.js ► https://www.youtube.com/playlist?list=PLoTScYm9O0GERtEdsPHK5Q-cdor5ADnyM
สอน PostgreSQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGi_NqmIu43B-PsxA0wtnyH
สอน MySQL ► https://www.youtube.com/playlist?list=PLoTScYm9O0GFmJDsZipFCrY6L-0RrBYLT
สอน Microsoft SQL Server 2012, 2014, 2016, 2017 ► https://www.youtube.com/playlist?list=PLoTScYm9O0GH8gYuxpp-jqu5Blc7KbQVn
สอน SQLite ► https://www.youtube.com/playlist?list=PLoTScYm9O0GHjYJA4pfG38M5BcrWKf5s2
สอน SQL สำหรับ Data Science ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGq8M6HO8xrpkaRhvEBsQhw
การเชื่อมต่อกับฐานข้อมูล (SQL Server, MySQL, SQLite) ด้วย Python ► https://www.youtube.com/playlist?list=PLoTScYm9O0GEdZtHwU3t9k3dBAlxYoq59
การใช้ Excel ในการทำงานร่วมกับกับฐานข้อมูล (SQL Server, MySQL, Access) ► https://www.youtube.com/playlist?list=PLoTScYm9O0GGA2sSqNRSXlw0OYuCfDwYk
#prasertcbs_nodejs #prasertcbs

nodejs https server 在 Create a Secure HTTPS Server with Node JS! - YouTube 的推薦與評價

If you are developing a secure site or application, you'll want to set up a test server to match your production environment. With Node JS ... ... <看更多>
nodejs https server 在 Win 10 安裝Node.js 和http-server | AnnKuoQ Blog 的推薦與評價
Node.js 可以讓後端伺服器跑JavaScript,而http-server 可以讓我們的電腦提供Web Service,首先到Node.js 官網下載目前最新的穩定版本,然後檢查環境 ... ... <看更多>
nodejs https server 在 How to create an HTTPS server in Node.js? 的推薦與評價
... <看更多>