造一个Badge Service(徽章)的轮子
什么是Badge Service
细心的读者朋友一定在很多Github的Repo,npm的package页面看到过诸如
的徽章。这些徽章是干什么用的?
大家看到上文中我引用的Badge的左侧,是Downloads,Build,Dependency之类的,不难猜出,这些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
DotBadge.exe -sb "Build" -st "fail" -c "Red" -sl 0
DotBadge.exe -sbhttps://github.com/rebornix/DotBadge/edit/master/Readme.md# "Star" -st "234" -c "#ddf" -sl 1
如何放到你自己的项目里面
在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)); }
}
}
造轮子充满乐趣
造一个Badge Service(徽章)的轮子的更多相关文章
- RPC基础以及造一个RPC的轮子需要注意些什么
RPC基础以及造一个RPC的轮子需要注意些什么 前言 rpc即远程过程调用,是分布式系统常用的通信方法.远程可以是在一台机器上的不同进程或在不同一个机器上的不同进程.rpc更看重速度,像调用本地方法一 ...
- dva的effect那么难用,自己造一个轮子吧
背景 对于dva这个开发框架,国内从事react的前端工程师多半不会感到陌生,dva完善的开发体系和简单的api,让其被广泛运用到实际工作中.我所在的公司也是长期使用dva作为基础的开发框架,虽然好用 ...
- 我造了个好大的"轮子",居然还不是"圆"的!
我造的这个"轮子"指的是集低代码开发与运维为一体的平台,为什么说它不是"圆"的,因为它有些与众不同,甚至可以说是有些另类.至于为什么造这个"轮子& ...
- 【记录】如何造一个vite插件(1)
在看文章前,先做个定位,这不是一篇纯粹的技术性文章,可以把它理解成一个叙述文章,记录我开发插件的过程. 开始前简单的吹个牛 vue2 也写了很多年了,多人合作始终避不开用到别人的组件.关键是有些组件没 ...
- Step by Step 创建一个WCF Service
原创地址:http://www.cnblogs.com/jfzhu/p/4025448.html 转载请注明出处 (一)创建WCF Service (1)创建WCF Service类库 创建一个Cla ...
- C#创建一个Windows Service
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...
- 造一个轮子然后安装到pypi上
之前写了一个爬虫的包,主要是根据自己写爬虫的情况总结一下. 因为每次都要重复写一些代码,所以提炼出来,类似一个框架的样子吧. 开始是放在自己的项目里引用,但如果换了一个项目,就得重新拷一遍,很麻烦. ...
- Step by Step 创建一个 Web Service
原创地址:http://www.cnblogs.com/jfzhu/p/4022139.html 转载请注明出处 (一)创建Web Service 创建第一个项目,类型选择ASP.NET Empty ...
- 使用Windows Service Wrapper快速创建一个Windows Service
前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...
随机推荐
- ProcessStartInfo.UseShellExecute 属性
获取或设置一个值,该值指示是否使用操作系统外壳程序启动进程. 命名空间:System.Diagnostics程序集:System(在 system.dll 中) 语法 C# C++ VB ...
- Maven学习:Eclipse使用maven构建web项目(转)
Maven学习:Eclipse使用maven构建web项目(转) 8.更改class路径:右键项目,Java Build Path -> Source 下面应该有4个文件夹.src/main/j ...
- Xmanager Enterprise 4 使用说明
Xmanager Enterprise 4 使用说明 安装Xmanager Enterprise 4操作步骤比较简单,下一步即可完成. Xbrowser 使用xdcmp 协议通过图形化桌面远程连接到l ...
- c#生成注册码的两种方法(mac地址与IP地址)
using System; using System.Management; using System.Security.Cryptography; using System.IO; using Sy ...
- 【转】 Android SDK无法更新解决方法---不错
原文网址:http://blog.csdn.net/shi_weihappy/article/details/41847997 自己的修改: 203.208.39.238 dl.google.com7 ...
- 创建用于自定义SharePoint解决方案部署的Visual Studio项目
转:http://soft.zdnet.com.cn/software_zone/2007/0903/488083.shtml 在基于SharePoint的开发中,我们通常会在WSS的TEMPLATE ...
- C#入门经典学习笔记一
这篇主要讲C#的一些语法. 1.委托 委托类型声明的格式如下: public delegate void TestDelegate(string message); delegate 关键字用于声明一 ...
- ASP.NET生命周期详解 [转]
最近一直在学习ASP.NET MVC的生命周期,发现ASP.NET MVC是建立在ASP.NET Framework基础之上的,所以原来对于ASP.NET WebForm中的很多处理流程,如管道事件等 ...
- poj 3237 Tree(树链剖分,线段树)
Tree Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 7268 Accepted: 1969 Description ...
- Lattice Diamond安装
1.下载:到Lattice官网 http://www.latticesemi.com/ 注册一个lattice的账号后就可以去下载Diamond,登陆后如下图,根据自己系统情况选择对应的版本,我用的是 ...