Posts
Event Store - Writing events with HTTP API
要透過 HTTP API 去發送 event,可以朝以下位置發送 Post。
http://<URL>/streams/<STREAM_ID> MediaType 可以是 JSON。
application/vnd.eventstore.events+json 也可以是 XML。
application/vnd.eventstore.events+xml Post 的內容需包含 eventId、eventType、data。
像是如果要發送個 Event 給 Event Store,就可以像下面這樣準備要發送的 Event 內容。
[ { "eventId": "fbf4a1a1-b4a3-4dfe-a01f-ec52c34e16e4", "eventType": "event-type", "data": { "a": "1" } } ] 然後使用 CURL 發送給 Event Store。
curl -i -d "@event.json" "http://127.0.0.1:2113/streams/newstream" -H "Content-Type:application/vnd.eventstore.events+json" Event Store 就會接收到剛發送的 Event。
read morePosts
Event Store - Install with docker
要透過 Docker 使用 Event Store,可以調用下列命令:
docker run --name eventstore-node -it -p 2113:2113 -p 1113:1113 eventstore/eventstore Docker 會下載 eventstore-node image。
然後會運行 Event Store 服務。
訪問 http://127.0.0.1:2113 即可看到 Event Store 的 Web 介面,若要登入可用帳號 admin 密碼 changeit 登入。
Link eventstore/eventstore - Docker Hub Step 1 - Install, run, and write your first event | Event Store
read morePosts
Event Store - Writing events with web interface
要透過 Web interface 去發送 event,可以將 Web interface 切換至 Stream Browser 頁面。
點擊 Add Event 按鈕。
填入要發送的 Event 資訊。
按下 Add 按鈕發送設定的 Event。
發送完回到 Stream Broser 頁面,可以看到剛剛所發送的 Event,點選即可查閱。
要查閱更為細部的資訊可點選 Event 後方的 JSON 字樣。
即可看到更為細部的資訊。
也可以透過點選 Event name 字樣。
一樣可看到更為細部的資訊。
read morePosts
Event Store - Install on Windows
要在 Windows 下使用 Event Store,首先需確定環境已安裝:
NET Framework 4.0+ Windows platform SDK with compilers (v7.1) or Visual C++ installed (Only required for a full build) 若環境已備妥,我們可選擇透過 Chocolatey 安裝 eventstore-oss 套件。
choco install eventstore-oss 或是至下載頁下載壓縮檔。
將之解壓縮也可以。
安裝完可調用下列命令將 Event Store 服務啟動。
EventStore.ClusterNode.exe --db ./db --log ./logs 服務啟動後訪問 http://127.0.0.1:2113,沒意外的話可以看到 Event Store 的 Web 介面,若要登入可用帳號 admin 密碼 changeit 登入。
透過這 Web 介面可以觀察到服務的狀況、發送 Event、管理帳號…等。
Link Event Store
read morePosts
>-
使用 Visual Studio Code 撰寫 JavaScript,如果要加上 jsdoc comment,可以考慮為 Visual Studio Code 加裝 Add jsdoc comments 套件。
按下熱鍵 Ctrl-Shift-P / Cmd-Shift-P 開啟 command palette,輸入 Extensions:Install Extensions,輸入 Add jsdoc comments 找到擴充套件進行安裝。
安裝後重啟 Visual Studio Code。
在要加上 jsdoc comment 的程式碼上按下熱鍵 Ctrl-Shift-P / Cmd-Shift-P,或是透過滑鼠右鍵快顯選單開啟 command palette。
選取 Add Doc Comments。
jsdoc comment 即會被加到程式碼上,再視需要做些調整就可以了。
Link Add jsdoc comments - Visual Studio Marketplace
read morePosts
Oracle SQL Developer - Import data modeler from DDL file
在維護 Data Modeler 時,若已有現成的 DDL File,可以點選 [File | Data Modeler | Import | DDL File] 主選單選項。
將要匯入的 DDL File 加入,按下 OK 按鈕。
選取資料庫類型,按下 OK 按鈕繼續。
這邊會帶出匯入的資訊,按下 Close 按鈕關閉。
然後會帶出 Compare Models 視窗。
透過該視窗可以清楚知道有什麼會被匯入,我們也可以視需要調整要匯入的東西,匯入前可以按下 DDL Preview 按鈕確認一下會做的調動,若無問題則按下 Merge 按鈕進行匯入。
匯入完成就可以在 Data Modeler 上看到匯入的東西。
read morePosts
>-
cheerio 是一用來解析 HTML 的套件,該套件使用方式跟 jQuery 類似。
使用前需先用安裝套件。
npm install cherrio 安裝完後載入 cherrio 模組。
const cheerio = require('cheerio'); 然後用 load 方法將 HTML 載入,載入後就可以像一般使用 jQuery 般帶入 Selector 去選取元素操作。
const $ = cheerio.load(html) 像是下面這樣:
const cheerio = require('cheerio'); const $ = cheerio.load('<h2 class="title">Hello world</h2>') console.log($('h2').text()); 使用起來跟在一般網頁上用 jQuery 是差不多的。更多操作可參閱 cheeriojs/cheerio: Fast, flexible, and lean implementation of core jQuery designed specifically for the server. 這邊。
const cheerio = require('cheerio'); const $ = cheerio.load('<div class="title"><h2>Hello world</h2></div>') console.
read morePosts
Node.js - Transform stream
Transform stream 可以將輸入串流的資料讀入,將讀入的內容轉換,然後輸出到輸出串流。
像是內建的 Gzip transform stream 就能將輸入的資料做 Gzip 壓縮然後輸出。
const zlib = require('zlib'); const gzip = zlib.createGzip(); const fs = require('fs'); const input = fs.createReadStream('index.js'); const output = fs.createWriteStream('index.js.gz'); input.pipe(gzip).pipe(output); 如果要自行撰寫 Transform stream,我們可以撰寫個繼承自 Transform 的類別,然後在 _transform 內撰寫每次收到資料要做的處理,以及在 _flush 內撰寫清空緩衝區時要做的處理,在撰寫這兩個方法時,如果資料轉換完畢,可以用 this.push 將資料輸出。如果處理完成,則要記得調用 callback 方法。
'use strict'; const Transform = require('stream').Transform; class MyTransformStream extends Transform { _transform(data, encoding, callback) { ... //this.push(data); ... callback(); } _flush(callback) { ... //this.push(data); ... callback(); } } 像是筆者寫的這隻 AnalyzeStream,其功能為將 HTML 輸入,依照檢查的 Rule 分析,最後將分析的結果輸出。因為要分析的資料需要完整的 HTML,所以 _transform 這邊只有很簡單的將收到的資料存放起來,然後調用 callback 告知處理完成。在 _flush 這邊會將存放的資料套用 Rule 分析,將分析的結果用 this.
read morePosts
Mochawesome - A Gorgeous HTML/CSS Reporter for Mocha.js
Mochawesome 能讓 Mocha 支援產出 HTML 的測試報告。
使用前需安裝 Mochawesome 套件。
npm install --save-dev mochawesome 調用 Mocha 並使用 -reporter 參數指定使用 Mochawesome 產出測試報告。
mocha --reporter mochawesome 產出的測試報告會存放在 mochawesome-report 下的 mochawesome.html。
Link Mochawesome
read morePosts
bulk-require - require whole directory of trees in bulk
在撰寫 Node.js 時需要的模組我們需要載入才可以使用,bulk-require 套件能讓我們快速的載入目錄內的模組,不需要一個一個載入。
使用上需先安裝 bulk-require 套件。
npm install bulk-require 接著載入 bulk-require 模組。
const bulk = require('bulk-require'); 然後指定模組所在的目錄位置以及要載入的檔案 pattern 即可。
const sections = bulk(folderPath, ['*.js']); 像是下面這樣簡單的程式,我們載入了 folderPath 下所有副檔名為 js 的模組,並將載入的資訊顯示出來。
const bulk = require('bulk-require'); ... const sections = bulk(folderPath, ['*.js']); console.log(sections); 可看到載入的資訊會像下面這樣。
我們可以進一步利用這些載入的模組資訊,將載入的類別都建置實體,便於後續使用。
const bulk = require('bulk-require'); ... const sections = bulk(folderPath, ['*.js']); Object.keys(sections).forEach((element) => this.rules.push(new sections[element]()) ); Link substack/bulk-require: require whole directory of trees in bulk
read more