Soft & Share 開源報報 243 – 更輕鬆地為基礎架構程式碼編寫自動化測試

這是 Soft & Share 為訂閱會員所推出的服務,小編週一到週五會每天整理一篇開源專案的摘要說明整理 (早上 8 點前會發佈在 Soft & Share 網站 ) ,讓你可以利用上班前快速掌握目前開源專案的焦點。( 之前出版的開源報報 )。想體驗開源報報,可先參考開放閱讀

🔥以主題方式整理出相關的開源專案 – 開源報報主題報導

為什麼需要 Soft & Share 開源報報?

每天快速瀏覽開源報報具備有什麼效益?

  1. 增加自己的學習動力,提升自己的視野
  2. 從開源專案中獲得 side project 靈感與想法
  3. 利用開源專案提升自己的生產力

每天使用 NT8.3 元,你可以使用 Soft & Share 開源報報省下掌握每天開源資訊焦點的時間,這是一個很划算的時間槓桿投資

訂閱網址

開源報報內容

工具

使用 Javascript 開發的 YouTube 下載器

使用 Javascript 和 node 友善的串流介面開發的

用法

const fs = require('fs'); const ytdl = require('ytdl-core'); 
// TypeScript: import ytdl from 'ytdl-core'; with --esModuleInterop 
// TypeScript: import * as ytdl from 'ytdl-core'; with --allowSyntheticDefaultImports 
// TypeScript: import ytdl = require('ytdl-core'); with neither of the above 
ytdl('http://www.youtube.com/watch?v=aqz-KE-bpKQ')   .pipe(fs.createWriteStream('video.mp4'));

‘git diff’的擴充套件,提供了對影象差異的支援

這是對“ git diff” 的擴充套件,它提供了比對影像差異的支援。 也可以將其作為直接命令列工具執行,以比較兩個影像檔案。

範例

$ git diff 
--- a/anImageThatHasChanged.jpg 
+++ b/anImageThatHasChanged.jpg 
@@ -1,5 +1,5 @@
  ExifTool Version Number         : 9.76 
-File Size                       : 133 kB 
+File Size                       : 54 kB  
File Access Date/Time           : 2015:05:02 20:01:21-07:00  File Type                       : JPEG  
MIME Type                       : image/jpeg 
$ git diff-image 
# The same output as above, *and* a montage of the visual differences will be 
# generated and opened in Preview. 

$ diff-image anImageThatHasChanged1.jpg anImageThatHasChanged2.jpg 
# The same as above, only using files on disk not git differences.

用於Excel的GUI差異工具

ExcelMerge 是用於 Excel 或 CSV Diff 的圖形顯示工具。 當前功能僅限於Diff的顯示,但目標是實現合併功能。 它也可以用作 Git 或 Mercurial 的 Diff 工具。

這個工具是使用 C# 開發的

GitHub 的 MySQL schema 線上遷移工具

gh-ost 是 MySQL 的無觸發線上 schema 遷移解決方案。 它是可測試的,並提供暫停,動態控制/重新配置,稽核和許多操作特權。

gh-ost 在整個遷移過程中對主伺服器產生的工作量很小,與 migrated table 上的現有工作量分離。

它是基於多年使用現有解決方案的經驗而設計的,並且改變了 table migration 的典範。

原理?

所有現有的線上 schema 更改工具都以類似的方式操作:它們以與原始 table 相似的方式建立 ghost table,在空的 table 中遷移,將資料從原始 table 緩慢地增量複製到 ghost table 中,同時傳播正在進行的更改 (將任何 INSERT,DELETE,UPDATE 應用於你的 Table )新增到Ghost table。 最後,在適當的時候,他們用Ghost table 替換了原始的 table 。

gh-ost 使用相同的模式。 但是,它與所有現有工具的不同之處在於不使用觸發器。 我們已經認識到觸發器是許多限制和風險的根源。

相反,gh-ost 使用 binary log stream 來捕獲 table 的更改,並將它們非同步應用到 Ghost table。 gh-ost 自行承擔一些其他工具留給資料庫執行的任務。 結果,gh-ost 可以更好地控制遷移過程。 可以真正暫停它; 可以真正將遷移的寫入負載與主伺服器的工作負載分離。

此外,它還提供了許多操作特權( operational perks ),使其更安全,可信賴且有趣。

Web 應用程式開發

Javascript UI組成框架

layerJS.org是一個開放原始碼 Javascript UI / UX 程式庫,可為 Web 應用程式和網站提供直覺,視覺密集的,類似於行動應用程式的體驗。

UX模式(如選單,sliders, layers & light boxes,視差效果,頁面滑動,縮放效果等)實際上只是互動式動畫圖層。 layerJS 提供了一個簡單的通用概念在純粹的 HTML 中建立這種模式:Stage-Frame 概念。 框架是包含你的內容的容器,例如 子頁面,螢幕,menu panes,light boxes,卡片,幻燈片等。Stage 是 viewports,框架內容可以動態地放入其中。  root Stage 通常是瀏覽器視窗,其框架代表子頁面或應用程式螢幕。 可以在 Stage 內使用滑動,淡入淡出等動畫過渡來交換 frame。 Stage 和 Frames 可以巢狀,因此在應用程式螢幕(frame)中可以存在一個滑塊(stage),其中包含一組幻燈片(frame)。 stage 可以具有一個或多個具有不同 frame 的重疊層,從而可以實現諸如浮動選單或視差背景之類的效果。

layerJS 的概念類似於 material design 的原理。 特別是,layerJS 的 frames 是 material design 中的 papers/surfaces。 這些 stages 是定義曲面的佈局和主要運動的便捷方式。 使用 stage,可以簡單地定義使用者介面的動畫過場特效,方法是在下一步的哪個階段應顯示哪個 frame。

過場效果是透過純HTML連結觸發的,這些HTML連結簡單地命名了應瀏覽到的frame。 layerJS 還支援定向觸控和觸控板手勢以觸發過場效果。 用手指下拉選單或在子頁面列表中滑動。 過場效果也可以透過API觸發。

有興趣可以從閱讀這篇 blog 開始 – Getting started with layerJS

行動應用程式設計

在 Web 瀏覽器中遠端除錯iOS應用

iOS APP 在脫離Xcode後,難以進行現場除錯。已有一些原生的解決方案,如 FLEX,受限於行動裝置本身,影響除錯效率。

通過一些第三方工具,如 CocoaHTTPServerGCDWebServer,iOS APP 可以執行伺服器。受此啟發,HSD(HttpServerDebug)基於 Http Server,思考高效的現場除錯解決方案,提供了豐富的除錯工具,如檔案瀏覽、資料庫、檢視除錯、傳送資訊、顯示 console 的輸出等。​​​

HSD 非常輕量級,響應快速,不需要安裝額外的軟體,對原本的 APP 執行幾乎沒有影響。利用 HSD 你可以打破 iOS APP 黑箱除錯的困境,透過 PC 或其它終端遠端除錯 APP,提升開發效率。

可參考 Wiki 整合方法,瞭解整合方式。

程式設計語言/程式庫

Terratest是一個 Go 程式庫,可以更輕鬆地為基礎架構程式碼編寫自動化測試。

Terratest 為常見的基礎架構測試任務提供了多種幫助程式功能和模式,包括:

  • 測試 Terraform 程式碼
  • 測試 Packer 樣板
  • 測試 Docker 映像檔
  • 透過 SSH 在伺服器上執行命令
  • 可以與 AWS APIs 一起運作
  • 可以與 Azure APIs 一起運作
  • 可以與 GCP APIs 一起運作
  • 可以與 Kubernetes APIs 一起運作
  • 測試 Helm 圖表
  • 製作 HTTP 請求
  • 執行 shell 命令
  • 還有更多

C 語言中最快的 JSON 程式庫

使用 ANSI C 編寫的高效率 JSON 程式庫

效能比較

人性化的函數參數驗證

可以在程式執行中檢查傳入函數的參數是否符合期望的範圍,如果沒有會發出錯誤,例如以下的程式碼示範檢查傳入的參數字串長度至少為 5

import ow from 'ow'; 
const unicorn = input => { 
    ow(input, ow.string.minLength(5)); 
     // … 
}; 
unicorn(3); 
//=> ArgumentError: Expected `input` to be of type `string` but received type `number` 

unicorn('yo'); 
//=> ArgumentError: Expected string `input` to have a minimum length of `5`, got `yo`

也可以用來檢查物件的形狀

import ow from 'ow'; 
const unicorn = { 
          rainbow: '🌈', 
          stars: { 
             value: '🌟' } 
}; 
ow(unicorn, ow.object.exactShape({ 
      rainbow: ow.string, 
      stars: { 
          value: ow.number 
       } 
})); 
//=> ArgumentError: Expected property `stars.value` to be of type `number` but received type `string` in object `unicorn`

使用這個程式庫可以省下不少程式執行中因為傳入錯誤的值或是非期望的物件所產生的 runtime error

遊戲

VS Code 外掛小霸王遊戲倉庫

小霸王是一個 VS Code 的外掛,讓你可以在 VS Code 中玩 nes 遊戲,這個 repository 則放了遊戲的 rom 檔案

訂閱網址

喜歡今天小編整理的開源報報嗎?歡迎給小編意見與回饋

Comments are closed.

Powered by WordPress.com.

Up ↑

探索更多來自 Soft & Share 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

Continue reading