本篇纯粹只讲hostingranking.cn网站的技术架构,也就是怎么做到的,达到什么效果。至于它是什么,为什么要做暂且不说,另篇会分享。

技术组成

首先hostingranking.cn是基于ghost博客平台而构建的,ghost最强大的部分就是可以最大限度的让你DIY网站,能力特别强。如下是技术组成图:

技术讲解

运行环境 用途
Ghost Nodejs 博客平台,可供主题创作的环境,博客管理,SEO等一系列可插拔的功能
JQuery Javascript 前端js交互
handlebar - 网页模板
spring boot java 提供后端服务,连接第三方服务
typeform 第三方问卷调查服务
mailchimp 第三方邮件服务

主要功能

  1. ghost主题制作,呈现网站基本内容
  2. 个性化主机推荐
  3. 博客

ghost主题制作

ghost主题制作非常简单,只要你会写js+html+css即可制作,另外最好要学会handlebar模板语言,会让你制作主题事半功倍,入门制作教程参考我另一篇文章:https://cmlanche.com/2018/08/26/%E5%88%B6%E4%BD%9Cghost%E4%B8%BB%E9%A2%98/

个性化主机推荐

基本流程如下
  1. 采用typeform来制作表单
  2. 开启typeform的webhook,意思就是当客户提交表单的时候,会往这个webhook url发送一个post请求,来告诉你有用户提交了,以及提交的数据。
  3. spring boot是我们的后端服务,专门用来制作webhook接口的,不要把webhook想的很神圣,没什么难的,webhook接口其实就是一个普通接口,只是它被用来处理webhook发送来的数据罢了。
  4. spring boot收到typeform提交的问卷信息后,去调用mailchimp的api,创建邮件,发送给客户。
活动图如下

我最终通过spring Boot接收webhook传递过来的不同数据,生成不同的推荐结果。

你可以在hostingranking.cn的实现效果,看自己是否能收到邮件,收到的是什么。

typeform

强大的问卷调查产品,体验无与伦比,生成的文件简单简洁,完整的api支撑,对刚起步的新手产品免费支持,更重要的是,支持中文!在国内访问畅通无阻!下图是我hostingranking.cn产品涉及到的问卷设计:

mailchimp

世界上最常用的邮箱市场营销工具,好处如下:

  1. 完全的开放,完整的api支持,支持用zapper连接上百款常用产品
  2. 中国访问速度还可以,用api调用无碍
  3. 诚意满满的新手产品扶助计划,帮助新产品达到足够规模再收费!

按照上面说的个性化功能,当你提交问卷之后,我的mailchimp后台会看到发送状态,以及打开和点击的状态,如下图:

一点吐槽:看到typeform和mailchimp,我想国外的东西做的真是开放,各种api都支持,反观国内,则各种保护,就比如知乎、博客园、segmentfault等都是不开放api的,这点让我觉得国内还不够开放。

博客

博客功能是ghost内置的核心功能,目前我没有在hostingranking.cn中开放,因为博客页面和详情页面的功能还没做好,等做好了再贴图了。

先用我的个人博客网站代替了:https://cmlanche.com (托管在github pages上的)

hostingranking.cn网站托管在Vultr主机上,买的最低配的VPS,每个月5美金

如果你要买它的主机并且你的主要客户在大陆的话,你一定要买日本的主机,不要买美国和新加坡的,因为日本的平均ping值是最低的,大约一百多,新加坡的主机会绕过日本再到中国,慢一些,而美国的大概两三百。

产品炼成记·hostingranking.cn·基于ghost的轻量技术架构整理的更多相关文章

  1. 分表需要解决的问题 & 基于MyBatis 的轻量分表落地方案

    分表:垂直拆分.水平拆分 垂直拆分:根据业务将一个表拆分为多个表. 如:将经常和不常访问的字段拆分至不同的表中.由于与业务关系密切,目前的分库分表产品均使用水平拆分方式. 水平拆分:根据分片算法将一个 ...

  2. 测度论--长度是怎样炼成的[zz]

    http://www.58pic.com/newpic/27882296.html http://www.58pic.com/newpic/27893137.html http://699pic.co ...

  3. 老杜告诉你java小白到大神是怎么炼成的(转载)

    老杜告诉你java小白到大神是怎么炼成的 1. 学习前的准备 一个好的学习方法(应该怎么学习更高效): 一个合格的程序员应该具备两个能力 有一个很好的指法速度(敲代码快) 有一个很好的编程思想(编程思 ...

  4. UCloud首尔机房整体热迁移是这样炼成的

    小结: 1.把两个机房在逻辑上变成一个机房: 2.新老机房的后端服务使用同一套 ZooKeeper,但是配置的却是不同的 IP: 3.UCloud内部服务所使用的数据库服务为MySQL, 内部MySQ ...

  5. 自由是有代价的:聊聊这几年尝试的道路 要想生活好,别看哲学书和思想书。简单看看可以,看多了问题就大了。还是要去研究研究些具体的问题。别jb坐在屋子里,嘴里念着海子的诗,脑袋里想康德想的事情,兜里屁都没有,幻想自己是大国总理,去想影帝是怎么炼成的。

    自由是有代价的:聊聊这几年尝试的道路 现在不愿意写过多的技术文章了,一点是现在做的技术比较偏,写出来看的人也不多,二来是家庭事务比较繁多,没以前那么有时间写了.最近,园子里多了一些写经历的文章,我也将 ...

  6. PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品,产品设计严格遵循国际数据挖掘标准CRISP-DM(跨行业数据挖掘过程标准),具备完备的数据准备、模型构建、模型评估、模型管理、海量数据处理和高纬数据可视化分析能力。

    http://www.meritdata.com.cn/article/90 PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品, ...

  7. 开会不用把人都轰进一个小黑屋子——《Office妖精是怎样炼成的》续2

    <Office妖精是怎样炼成的>http://blog.sina.com.cn/s/articlelist_1446470001_6_1.html 一本不是技术图书却含有技术内容的图书,一 ...

  8. 学习型的“文山表海无限发展公司”——《Office妖精是怎样炼成的》续1

    本篇无故事情节版:https://www.cnblogs.com/officeplayer/p/14841590.html <Office妖精是怎样炼成的>http://blog.sina ...

  9. fir.im Weekly - 论个人技术影响力是如何炼成的

    每个圈子都有一群能力强且懂得经营自己的人,技术圈也是如此.本期 fir.im Weekly 一如往期精选了一些实用的 iOS,Android 开发工具和源码分享,还有一些关于程序员的成长 Tips 和 ...

随机推荐

  1. vue 实现图片上传与预览,以及清除图片

    vue写原生的上传图片并预览以及清除图片的效果,下面是demo,其中里面有vue获取input框value值的方法以及vue中函数之间的调用 <!DOCTYPE html> <htm ...

  2. Spring Cloud下微服务权限方案

    背景从传统的单体应用转型Spring Cloud的朋友都在问我,Spring Cloud下的微服务权限怎么管?怎么设计比较合理?从大层面讲叫服务权限,往小处拆分,分别为三块:用户认证.用户权限.服务校 ...

  3. swust oj 1012

    哈希表(链地址法处理冲突) 1000(ms) 10000(kb) 2542 / 6517 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法.建立链表的时候采用尾插法 ...

  4. 在vue项目中mock数据

    第一步:安装: 在命令行中执行: npm install mockjs; 第二步:定义index.js文件 我们新建一个mock文件夹,此文件夹中建一个index.js文件:在index.js中输入以 ...

  5. Hadoop 操作常见问题解决

    1. 安全模式下不可操作 提示信息: Hadoop "Cannot create directory .Name node is in safe mode." 解决方法: $ ha ...

  6. JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...

  7. [Java]LeetCode237. 删除链表中的节点 | Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  8. [Swift]LeetCode532. 数组中的K-diff数对 | K-diff Pairs in an Array

    Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in t ...

  9. [Swift]LeetCode982. 按位与为零的三元组 | Triples with Bitwise AND Equal To Zero

    Given an array of integers A, find the number of triples of indices (i, j, k) such that: 0 <= i & ...

  10. [C#]批量修改文件后缀名

    代码: /// <summary> /// 修改文件后缀 /// </summary> /// <param name="extension"> ...