程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 造一個Badge Service(徽章)的輪子,badgeservice

造一個Badge Service(徽章)的輪子,badgeservice

編輯:C#入門知識

造一個Badge Service(徽章)的輪子,badgeservice


什麼是Badge Service

細心的讀者朋友一定在很多Github的Repo,npm的package頁面看到過諸如Dependence DevDependence的徽章。這些徽章是干什麼用的?

大家看到上文中我引用的Badge的左側,是DownloadsBuildDependency之類的,不難猜出,這些Badge是用於一些信息的統計,然後以圖片的形式展示出來。比如我的一個小項目Delta是用js寫的,我使用了Travis CI來進行持續的編譯和測試。每次我checkin了新的代碼,Travis CI就會對最新的代碼進行build,然後把build的結果,畫成一張矢量圖,放在https://travis-ci.org/rebornix/delta.svg下。於是同學們就能及時地從我的項目主頁看到該項目的最近build情況,如果掛了,就可以肆意地爆我。

其實這就是個把numbers變成圖片的小玩意。

Shield Badge

為了讓.NET世界的朋友也和前端朋友們一樣酷,我們決定在Visual Studio Gallery中也提供這樣的服務。很快我寫了一個版本,用來生成PNG。效果還不錯,但是PNG唯一的缺點就是無法scale,如果能生成矢量圖會更好。由於.NET在繪制矢量圖上天生殘疾,我嘗試著找找有沒有現成的方案。於是我發現了Sheild.io.

Shield提供了一套繪制badge的方案,並且開源了nodejs、php、go等語言的實現方式,甚至他們提供了一個服務Shield.io方便大家使用。這幾乎是完美的。

那為啥我要造輪子

原因也挺簡單的,shield並不可能像Azure,AWS那樣提供SLA(我們也不該要求他們提供)。我們要盡可能地為我們的網站減少這樣的external dependency。既然他們開源了,我干脆就寫了一個.NET版本,通過Nuget管理Assembly,然後把這個服務run在我們自己的機器上。我給它取了個很俗的名字,叫DotBadge,大家可以前去Github圍觀。

如何使用

大家可以通過nuget下載dll來引用,另外為了大家更好地玩耍已經體驗,我寫了個小小的命令行工具。

命令行工具

下載

打開命令行,到DotBadge的目錄下,執行 DotBadge.exe --help.

例子

DotBadge.exe -sb "Downloads" -st "1000" -c "Green" -sl 0

demo1

DotBadge.exe -sb "Build" -st "fail" -c "Red" -sl 0 

demo2

DotBadge.exe -sbhttps://github.com/rebornix/DotBadge/edit/master/Readme.md# "Star" -st "234" -c "#ddf" -sl 1 

demo3

如何放到你自己的項目裡面

在Nuget的 Package Manager Console裡面運行

PM> Install-Package DotBadge

 或者使用Nuget的UI tool搜索下載。

例子

using DotBadge;
using System.IO;

namespace Badge
{
    class Program
    {
        static void Main(string[] args)
        {
            var bp = new BadgePainter();
            File.WriteAllText(@"C:\Users\peng\Desktop\nuget.svg", bp.DrawSVG("Badge", ".Net", ColorScheme.Red, Style.Flat));

        }
    }
}

造輪子充滿樂趣

Yeah

Report Bug

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved