acme.sh 的项目,它是一个实现 ACME 协议的客户端,能够向支持 ACME 协议的 CA 申请证书(如 Letsencrypt)。 最重要的是它对接了大多数的域名服务商,能够通过域名服务商提供的 API,自动的添加 DNS 验证记录进行全自动颁发证书,还可以模拟 HTTP 服务器进行文件验证。so,不管你的证书期限是 90 天,还是更短,再也不用担心证书过期的问题了。 至于 ACME 协议是什么?Automatic Certificate Management Environment 自动化证书管理环境,通过它我们可以实现证书的自动申请以及部署,可以大大的节省人员的管理及额外的配置工作。 ACME 的通信过程通过一系列的 API 进行,你可以通过类似 https://example.com/directory 获取可以请求的 API 列表,如 Letsencrypt。当然再通信过程中采取了很多的安全措施,如在 RFC 文档中你可能会看 JWT、JWS、JOSE、JWK、reply-nonce等名词,看起来就陌生。如果你不是技术人员,也大可不必去研究那些东西,知道怎么用就行。 1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh 推荐root用户安装。如普通用户,需要修改sudoer确保运行sudo无密码。 然后重新载入一下 .bashrc source ~/.bashrc 或重新登陆 2.… Continue Reading 使用 acme.sh 给 Nginx 安装 Let’ s Encrypt 提供的免费 SSL 证书

通过网页链接启动本地程序,总结起来主要有几种方法: 1.自定义外部协议url,通过写注册表将url与本地应用程序关联,然后通过一个网页的超链接点击即可启动,这种方法非常实用简单 2.chrome extension,通过chrome native messaging机制,可以取得与本地程序连接,具体参见谷歌官方文档中的native messaging例子,但这种方法需要打包成crx传到谷歌的webstore才能使用或者是通过开发者模式加载 3.ppapi,由于谷歌已经禁用了npapi,只能通过ppapi编写插件,需要一个nacl平台,生成pexe等配置文件部署到服务端使用,比较难用 4.IE浏览器,通过ActiveXObject实现 (只适用于IE浏览器)在IE下用ActiveXObject,可以启动外部应用程序,甚至可以读取硬盘数据等 5.非IE浏览器,通过NPAPI实现 (已禁用,不推荐)如FF和Chrome,不支持ActiveXObject,就需要使用NPAPI实现。比如支付宝的安全插件、安全证书,就是通过NPAPI实现,所以可以支持各种浏览器。 下面介绍主流的自定义外部协议url方式。 URL Scheme是类似http://,ftp://,afp://这样的东西,通常是用传输协议作为URL Scheme。不过事实上,你可以在iOS和Mac中注册任何类型的URL Scheme。当用户在浏览器中访问你的自定义URL Scheme的链接的时候,操作系统就会打开你的程序,响应这个请求。 常见的诸如网页点击某个链接启动了本地的迅雷、Q旋风等下载工具,亦或者是在某网页点击某QQ头像弹出本地QQ。其实方法比较简单,就是windows下注册表里面写好了,如果浏览器的开头(协议标识符)是tencent://之类的就打开QQ,其他也类似。 具体做法: 1.1 Windows 在注册表添加一个新的key以及相关的value到HKEY_CLASSES_ROOT中,来使应用程序可以处理特殊的URL协议。 把以下内容记在文本中,并重命名为xxx.reg,双击运行。 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CustomLink] @=”URL:CustomLink Protocol” “URL Protocol”=”C:\\Program Files (x86)\\BingoSoft\\CustomLink\\CustomLink.exe” [HKEY_CLASSES_ROOT\CustomLink\DefaultIcon] @=”C:\\Program Files (x86)\\BingoSoft\\CustomLink\\CustomLink.exe,1″ [HKEY_CLASSES_ROOT\CustomLink\shell] @=”open” [HKEY_CLASSES_ROOT\CustomLink\shell\open] @=”open” [HKEY_CLASSES_ROOT\CustomLink\shell\open\command] @=”\”C:\\Program Files (x86)\\BingoSoft\\CustomLink\\CustomLink.exe\” \”%1\”” 第一行是注册表工具的版本信息,可以自己改一改,或者自己导入任意一个注册信息,把这一行复制过来就行了;… Continue Reading 通过网页链接启动本地程序总结

CONTINUOUS DELIVERY: GoCD VS SPINNAKER Sheroy Marker (Head of Technology), ThoughtWorks Products With Continuous Delivery (CD) adoption on the rise, tools that help teams with CD are becoming popular too. GoCD and Spinnaker are two sought after tools in this space. We are often asked how they compare – “GoCD… Continue Reading CONTINUOUS DELIVERY: GoCD VS SPINNAKER

很给力的一篇关于CSS 预处理器和CSS后处理器的分析文章,介绍了CSS预处理器的框架(SASS、LESS和Stylus)和CSS后处理器框架(rework和postcss)。受益匪浅,文章来自赵雷的博客。 说到 CSS 预处理器,大家都很熟悉了,本文的重点是介绍从中抽出的 CSS 后处理器,这也是近一年多以来,前端社区的一些新趋势。 将 CSS 后处理器 抽象出来之后,会对 CSS 的 开发模式 带来一些变化,下面从概念开始说起。 CSS 预处理器 广义上说,目标格式为 CSS 的 预处理器 是 CSS 预处理器,但本文 特指 以最终生成 CSS 为目的的 领域特定语言。 Sass、LESS、Stylus 是目前最主流的 CSS 预处理器。 示例 下面以 LESS 为例: LESS .opacity(@opacity: 100) { opacity: @opacity / 100; filter: ~”alpha([email protected]{opacity})”; } .sidebar {… Continue Reading CSS 预处理器与 CSS 后处理器

A small gem to lubricate your testing workflow with prettier than usual diffs. Enable fancy colored diffs in your minitest assertions https://github.com/angelkar/pretty-diffs 1. Motivation When you make assertions between large strings with Minitest, for example JSON responses, it is laborious to identify what has changed. The usual workflow involves copy-pasting… Continue Reading Ruby Gem – angelkar/pretty-diffs

ComfortableMexicanSofa ComfortableMexicanSofa is a powerful Ruby on Rails 5.2+ CMS (Content Management System) Engine      Features Simple drop-in integration with Rails 5.2+ apps with minimal configuration CMS stays away from the rest of your application Powerful page templating capability using Content Tags Multiple Sites from a single installation Multi-Language Support (i18n) (ca,… Continue Reading Ruby Gem – comfy/comfortable-mexican-sofa: ComfortableMexicanSofa is a powerful Ruby on Rails 5.2+ CMS (Content Management System) Engine

近些年来,越来越多的JavaScript框架(即AngularJS,BackboneJS,ReactJS)变得越来越流行。许多公司和开发人员使用这些JavaScript框架开发应用程序。这些框架有很多的优势: 前端和后端独立开发 JavaScript框架+RESTFUL的API(或微服务架构) SPA(Single Page Application) 某种程度上有利于提高开发效率 但是使用JavaScript框架对前台尤其是需要支持搜索引擎的页面是很有问题的,这是因为我们使用这些框架基本上都是基于虚拟元素或属性和JavaScript绑定JSON对象,都是SEO不友好的。很多搜索引擎,社交媒体,爬虫甚至不支持抓取JavaScript的网页。 很庆幸的是,我们可以使用PreRender预渲染页面(PreRender通过执行页面上的JavaScript,然后呈现给搜索引擎爬虫)。 PreRender 预渲染解决方案 根据PreRender逻辑,有3个不同的级别的解决方案来实施prerender 方案1:应用层 通过中间件实现对应用程序级别prerender逻辑(即Express NodeJS中间件,Ruby on Rails的中间件,ASP.NET MVC中间件,…) Http请求到达 应用程序将检查Http请求是否来自爬虫(User Agent)。 如果请求来自爬虫,那么appliaction将调用prerender服务,把原来的URL作为查询字符串。 预渲染服务将调用应用程序 应用程序返回原始的HTML用JavaScript逻辑的prerender服务 预渲染服务将执行内部HTML的JavaScript(与浏览器类似) 预渲染服务将最终的HTML返回到应用程序。 Appliaction将最终的HTML返回到浏览器。 如果Http请求来自普通用户,应用程序将执行输出,并发送回浏览器。 方案2:服务器容器级别 通过使用URL重写中间件,实施服务器容器级别prerender逻辑(i.e. Apache,Nginx,IIS)。 Http请求到达 服务器容器(如Apache,Nginx,IIS)将检查Http请求是否来自爬虫(User Agent)。 如果Http请求来自爬虫,然后重写URL(将原始URL作为查询字符串)预呈现服务。 预渲染服务将调用应用程序 应用程序返回JavaScript逻辑原始的HTML 预渲染服务将执行内部HTML的JavaScript,与浏览器类似 预渲染服务将返回最终的HTML服务器容器(Apache,Nginx,IIS)。 如果Http请求来自普通用户,然后将流量重定向到应用程序。应用程序将执行并返回输出到服务器容器。 方案3:网络级别 我们通过负载均衡的代理实现网络级prerender逻辑,i.e. HAProxy: Http请求到达 负载均衡代理会检查Http请求是否来自爬虫(User Agent)。 如果Http来自爬虫,然后将流量重定向(将原始URL作为查询字符串)预呈现服务。 预渲染服务将调用应用程序 应用程序返回包含JavaScript原始的HTML 预渲染服务将执行内部HTML的JavaScript,与浏览器类似… Continue Reading PreRender 预渲染解决方案