Ed

@edlo43

Joined on Feb 26, 2019

  • Doc: Official Website Document Github Medium What is BullMQ?
     Like  Bookmark
  • 最近剛好同事的 PR 遇到一個 bug, 和 Node.JS import(require) 有關, 大致上的狀況是這樣: 有一個 lib 名稱為 A.js, 但是在使用的時候不小心變成小寫: const a = require('lib/a'); 神奇的是, 在開發階段, 這個錯誤並沒有被偵測到 換句話說, 在本機開發的情況下, 不論是在 VS code 或是 透過 command line 下指令, 程式都會正常運行 也就是, 檔案名稱的大小寫不會影響到 import 但是在線上的環境執行, 就直接噴錯誤了:
     Like  Bookmark
  • 最近工作上會維護一個滿舊的專案,是用 Python2.7 開發的,用的是 web2py framework 基於習慣,不管是 new feature / refactoring,我都會寫 uniit test 不過我對於 python 比較陌生,而且還是 v2,一開始很擔心找不到輔助資料,幸好網路上還是有一些基於 v2 的就資料,搭配自己 try and error,算是順利解決 new feature 是一個很簡單的 http request,需要依照 response 的 status code 和 content result 作一些不同的 action 看起來是一個很尋常的 case,我也是這麼想,就到 google 上找 mock http request in Python2.7,第一個 stackoverflow 就有很不錯的討論
     Like  Bookmark
  • 利用 koa - A NodeJS framework 開發 RESTful API 的筆記 事前準備 因為過去的開發經驗, 一開始預想要使用的開發架構是: koa(2) + Typescript + openapi 在看了 npm trend 之後, 花了點時間研究了這個最熱門的 tsoa tsoa is a framework with integrated OpenAPI compiler to build Node.js serve-side applications using TypeScript. It can target express, hapi, koa and more frameworks at runtime. tsoa applications are type-safe by default and handle runtime validation seamlessly. 根據官網的說法, 他整合了 Typescript, OpenAPI, 並且支援各種 web framwork, 包含 express, hapi, 以及 koa
     Like  Bookmark
  • Sequence Diagram title: Mutual Fund System User->Bank: 1. create user Bank->User Management: 1.1 create user User Management-->Bank: 1.2 return result Bank->Account Management: 1.4 create account Account Management-->Bank: 1.5 return result Bank-->User: 1.6 return result User->Bank: 2. sign agreement
     Like  Bookmark
  • 示範如何利用 Postman 連接到 Salesforce ,並發送 REST API 請求 Setup 取得帳號/密碼 若是使用 Trailhead Playground,可以到 Setup > Users 重置密碼,之後 Postman 會透過 redirect URL 進行登入取得授權 已經有的可以跳過這步驟 開啟 Cross-Origin Resource Sharing (CORS) 白名單 CORS 可以允許透過特定 domain name,利用 web browser 向 Salesforce 請求資源
     Like  Bookmark
  • Trailhead Trailhead 是 Salesforce 官方提供給開發者的線上學習平台,和 Google 的 qwiklabs,AWS 的 training and certification 等服務類似,讓開發者透過線上互動的方式來學習特定的主題,解成就並取得相關認證,而且是完全免費的 Trailhead 還有一個公開的社群 Trailhead Community,是一個類似 stackoverflow 的服務,Trailhead 的使用者可以在上面訂閱感興趣的貼文或主題,也可以發問,讓其他有相關經驗的用戶回答,提問者可以選擇最佳答案並投票給他,讓答題者賺取聲望,是一個滿常見的互動方式 另外,Trailhead 還加入了一些遊戲成分,每個用戶有經驗值點數,每個學習主題(module)都有屬於自己的徽章,賺取足夠的經驗點數及徽章,就可以提升到下一個階級 (Rank) Trailhead 也提供了技能認證的服務,部分基礎的認證有提供免費參與,收費認證的部分有官方背書,這點和 AWS/Google 一樣 Playground
     Like  Bookmark
  • 首先到 設定 > 轉寄和 POP/IMAP > 新增轉寄地址 輸入要轉寄的地址後按下一步,等待轉寄通知 轉寄對象會收到這封通知,進去點擊驗證連結即可 下一步是設定過濾器 先勾選特定的郵件,然後點上方的 點點點 按鈕,之後選擇 篩選這類的郵件
     Like  Bookmark
  • Prisma 是一套支援 nodejs 與 TypeScript 的 ORM library目前在工作上有使用到它 Prisma 在使用 MySQL 為 database source,轉換資料型態時預設會將 string 轉為 varchar(191),這篇筆記主要在紀錄研究這個 191 的為何而來 根據 Prisma 的 Default type mappings,string 對應到 MySQL 的 varchar(191) 在 Prisma 的 github issues #623 #1940 #1952 #1975 中可以發現,在 2020 以前, Prisma 並不支援自訂長度的 varchar,並且也不支援大於 191 長度的資料型態轉換(例如: LONGTEXT),這些功能都是在之後陸續加進去的 相關討論統一收錄在#446
     Like  Bookmark
  • 來源是 gin-contrib 底下的 zap 專案,將 uber 貢獻的 zap log 工具整合進 gin,近期又有熱心人士將專案優化成可以加入客製化的 log field,這個對我來說非常有吸引力,配合 jq 工具可以達到快速查找特定 log 的需求這篇筆記主要在紀錄目前使用後的心得 :::warning 由於這個 PR 的改動較大,貢獻者可能忘記修改相對的測試案例,所以這個 PR 目前還沒通過,因此直接 import lib 只會看到舊版的功能,因此我是直接 fork 到我的專案當作 lib 使用 ::: 使用方式 Example // Add a ginzap middleware, which: // - Logs all requests, like a combined access and error log.
     Like  Bookmark
  • 昨天到新公司報到,有點意外,拿到的筆電是 lenovo thinkpad t14s 雖然是 AMD APU ,但是跟過去開發用的 MBP 還是差很多 各方面,包括硬體及軟體支援,不得不說 MBP 對開發者來說真的是神器 這邊筆記了整個開發環境的建置及踩坑的過程 Docker desktop 在安裝 Docker Desktop for Windows 的過程中,才發現如果用的是家用版,預設是無法安裝的,原因在於新版的 docker for win 是利用 windows 的 Hyper-V 技術,但是這個玩意兒在家用版沒有...所以安裝完後會發生 Docker engine 啟動不能
     Like 1 Bookmark
  • Codeshot (mac only) How to share code as an image on Twitter gist {%gist Edwardz43/a45572b70f12874672c0eb2177b6c06e?file=demo%} Ray.so vscode extention - CodeSnap
     Like  Bookmark
  • 在M件物品裡取出若干件放在負重為W的背包裡,每件物品的重量為W1,W2,W3····Wn,與這些物品對應的價值分別對應為P1,P2,P3·· ···Pn,如何求出這個背包能裝的最大價值? 圖解法 解這類的提問,一般會先用圖解法,畫表格來解 方便起見,先將題目定為 : $M = 5, W = 16$ $W_1, W_2, W_3, W_4, W_5 = [3, 4, 7, 8, 9]$ $P_1, P_2, P_3, P_4, P_5 = [4, 5, 10, 11, 13]$
     Like  Bookmark
  • Container 容器簡介:什麼是容器?(google) 重點節錄 容器提供一種邏輯封裝機制,能夠將應用程式從實際執行所在環境抽取出來。無論目標環境是私人資料中心、公用雲端還是開發人員的個人筆記型電腦,這種分離的方式都可以==輕鬆、一致地部署==容器型應用程式。容器化提供了一種俐落的==分工模式==,當==開發人員專注於應用程式邏輯與依附元件==時,==IT 營運團隊可將注意力集中到部署與管理==上,而不用擔心諸如特定軟體版本與應用程式特定設定之類的應用程式細節。 容器不像虛擬機器會將==硬體堆疊虛擬化==,而是會在==作業系統層級進行虛擬化==,讓多個容器直接在 OS 核心之上執行。這表示==容器遠比虛擬機器輕量==,不但共用 OS 核心、啟動速度較快,而且使用的記憶體量也比啟動完整 OS 要少很多。 容器讓開發人員能夠建立可以預測的環境,而且這個==環境是與其他應用程式隔離開的==。容器也可能包含應用程式需要的軟體依附元件,例如特定版本的程式設計語言執行階段與其他軟體程式庫。從開發人員的角度來看,無論最終應用程式將部署到何處,這==一切都能保證一致==。這一切全都代表生產力:開發人員與 IT 營運團隊可以==減少花費在偵錯與診斷環境差異上的時間,而將更多時間用在為使用者提供新功能==。而且開發人員現在可以在開發與測試環境中,做出同樣適用於實際工作環境的假設,因此錯誤的發生機率也會隨之降低。
     Like 2 Bookmark
  • 這篇筆記主要目的,是讓開發人員可以在本機 local 環境下架設私有鏈,以供開發及測試遊戲。 Prerequisite Docker Desktop for Mac EOSIO binaries EOSIO Contract Development Toolkit(CDT) 在正式環境下,因為 os 是 RedHat 7.x,而且是最乾淨的那種,所以需要另外安裝套件才有辦法安裝 eosio bin,這部份最後再補充。
     Like  Bookmark
  • ELK 是由三個服務 - Elasticsearch、Logstash、Kibana 組合起來的開源日誌管理方案,提供 Log 蒐集、分析、查詢系統等,以下簡單介紹這三個服務: Elasticsearch:是一個實時的分佈式搜索分析引擎,它能讓你以前所未見的速度和規模,去探索你的數據。它被用作全文檢索、結構化搜索、分析以及這三個功能的組合。 logstash:是一款輕量級的日誌搜集處理框架,可以方便的把分散的、多樣化的日誌搜集起來,並進行自定義的處理,然後傳輸到指定的位置,比如某個伺服器或者文件。 Kibana:開源的數據分析和可視化平台,它是 Elastic Stack 成員之一,設計用於和 Elasticsearch 協作。您可以使用 Kibana 對 Elasticsearch 索引中的數據進行搜索,查看,交互操作。您可以很方便的利用圖表,表格及地圖對數據進行多元化的分析和呈現,基於瀏覽器的界面便於您快速創建和分享動態數據儀表板來追踪 Elasticsearch 的實時數據變化。 目前所使用的 ELK 為 opensource 的 docker 版本,最新支援到 Elasticsearch 7.8.0,可以永久使用 Basic license。 Log 搜集方式 因為開發、測試站都是使用 GCP 的虛擬機,有權限及網路控管,為了更方便查詢 log,所以就使用 ngrok 做 webhook 中繼
     Like 3 Bookmark
  • 何謂 Terraform ? 根據 IBM Cloud 學習中心的介紹,terraform 是一套宣告式編碼工具,他可以讓開發人員安全有效地建置與變更基礎架構並對其進行版本化,是知名軟體公司 hashicorp 的產品 類似的工具: pulumi 特色 開放原始碼:Terraform 獲得大型貢獻者社群支援,他們為平台建置了外掛程式。 無論您使用哪一個雲端提供者,都可以輕鬆找到外掛程式、延伸及專業支援。 這也意味著 Terraform 發展迅速,不斷增加新的好處和改進。 平台中立:表示您可以搭配它與任何 的雲端服務提供者一起使用。大部分其他的 IaC 工具都設計成與單一雲端提供者合作。 不可變基礎架構:大部分的「基礎架構即程式碼(IaC)」工具會建立可變==基礎架構==,這表示基礎架構可進行變更以因應變動,例如中介軟體升級或新的儲存伺服器。 可變基礎架構的危險是配置漂移,隨著變更逐漸增多,實際佈建不同的伺服器或其他基礎架構元素將會進一步從原始配置「漂移」,使得錯誤或效能問題難以診斷及更正。 Terraform 佈建的是不可變基礎架構,這表示隨著環境每一次變更,將現行配置取代為因應變更的新配置,然後重新佈建基礎架構。 更棒的是,先前的配置可以保留為不同版本,以在必要或需要時啟用回復。
     Like  Bookmark
  • 一個有趣的問題: a=10 b=15 c=a+b print(c) #25 a=0 print(c) #25
     Like  Bookmark
  • 轉錄 : BackendTaiwan 版主 Triton Ho === 前言: 最近有人提好的系統架構原則中,絕對不應使用 stored procedure。 我再補充一下好了。 --- 先破一下對SP的迷思。 1. ***使用 SP 不會有 SQL injection,所以比較安全。*** 我的回應: **沒有這回事。不信你想拿多少份雞排跟我賭?** (雞:怎也是我輸好嗎!!!) 2. ***SP執行效能比較高。*** 我的回應: SP 執行效能比一般 SQL 高,主因都是那個不能說的 M 什麼的 SQL Server 引起的都市傳說…… SP 比一般 SQL 快的**唯一原因,是 SP 是早已經 compiled 放在 DB 內。而 SQL 要執行時要先做 parsing 工作。** 但是,今天 CPU 速度很很高,對一般的 SQL statement 的 parsing 所需時間。在一般的 OLTP 可以安全地忽略不考慮。 另外重點,像 Oracle 這些比較正常的 RDBMS,會對常用的 SQL statement 的 parsing resul
     Like 1 Bookmark