0%

简单说明

消息推送需求,服务器监控、系统发布、爬虫执行等等这些情况都可能用到消息推送,消息推送要尽量保证实时及成功,之前用过这些方案:

  • 邮件,使用微信绑定QQ或者企业邮箱接收消息
  • 自己写APP集成极光等推送平台
  • Server酱

自己可以APP可以灵活控制消息格式,但是APP包活是主要问题;Server酱通过微信发送可以保证到达及实时性,简单消息个人一直使用Server酱发送,缺点是消息格式单一

企业微信方案

这个方案无需安装企业微信APP,使用普通微信就可以接收消息,而且消息格式支持文本、图片、音频、视频、Markdown等。

阅读全文 »

travis ci方案

个人选择自动化部署方案的原则之一是不自行搭建类似jenkins这样的持续集成系统,选择travis是因为使用相对简单灵活,而且与github有很好的集成。

关于使用外部云存储,最开始也用过scp直接上传部署包到vps的方案,当时vps在海外,后来vps更换到国内aliyun,方案就基本不可行了,主要是两点,上传速度慢;安全性(海外ip登录服务器的警告,当然也可以用http上传替代)。考虑外部云存储无外乎两个选择,选择七牛/又拍/oss等国内;选择s3这些海外存储,前者上传慢,后者下载慢(挂代理就不说了)。

关于vps接收webhook,这个看个人,我是用flask随便写的服务,里面调用shell脚本部署。

docker 方案

travis 方案如果非要说缺点,只有最后上传部署包到云存储比较慢,docker 方案主要是了解到multi-stage builds,这个方案就可以不依赖云存储。

相比travis方案,这个方案依赖少,而且镜像拉取可以通过aliyun内网,要调整的有两点:

  • Dockfile编写,这个各凭本事了,spring boot gradle可以参考我的admin项目
  • 服务调整为使用docker部署,接收到 webhook 请求后拉去新版本镜像

原文斯坦福 CS007:写给工程师的理财指南(三)

本文是这个公开课系列的最后一篇,前两篇在:

Know Your Worth-资产流动性

流通性

如何在需要时快速获得现金?市场流动性指市场允许资产以稳定的价格买卖。资产流动性是衡量个人或公司能用其现有的流动资产满足其财务义务的程度。不要低估流动性的价值,资产的流通性是投资的力量之源。
流通性与收益率呈典型的负相关,比如现金的流动性很好而私募股票的流动性很差。流动性并不等于安全性,一张五年的 CD 很安全但是流动性很差,特斯拉的股票流动性很好,但是很容易蒸发。

应急资金

美联储在 2015 报告说,47% 的美国人没有足够的储蓄来支付 400 美元的紧急开支。流动性意味着当你需要资金时就可以获得资金。应急资金可以在短期内保护你的长期资产或计划,以免出意外。应急资金通常建议至少有 3 个月的生活费用。
不要把应急资金放在投资上,它是一种缓冲和保险,而不是资产,并且不到万不得已的时候不要使用它。

资产与负债

资产是任何具有经济价值的资源,比如投资于现金、债券、股票等的金融资产和房地产、收藏品、商品等的固定资产。除此之外,你的技能和能力是你最大的资产,这种“无形的资产”是最好的投资。
负债是一种财务义务,通常是债务,如房屋贷款、汽车贷款、学生贷款、信用卡、税务责任等。良好的信用评分会对大多数贷款的资格至关重要。
债务是坏事吗?MM 模型认为公司市值由营收能力和风险资产决定,而不是资本结构的组成(是否负债)。权衡理论认为存在企业的最优资本结构。
通过绘制资产负债表来知道你的净资产,这对评估个人资产也很有帮助。

阅读全文 »

原文斯坦福 CS007:写给工程师的理财指南(二)
前一篇 写给工程师的理财指南(一)——行为经济学

Getting Paid - 薪水的构成

  • 基本工资:主要受职位、等级、地理位置等影响,基本工资的调整主要受年度通货膨胀、内部审计、市场竞争力、晋升等因素的影响。
  • 奖金:签字费(通常有追回条件)、年度/季度奖金(通常是基于绩效的固定普调)、短期激励(不太常见)。
  • 股权:在 IT 行业内几乎所有等级和职位上都很常见,其他行业倾向于偏向高管。两种常见形式是股票期权和限制性股票。
  • 员工福利:税收福利、健康保险、退休保障、股票优惠等,在大型资金充裕的科技公司中,能够普遍地看到相当昂贵的津贴(食品、交通、健身等)。

什么是股权?

股权就是员工分享公司拥有权的价值,有许多种类之分,最简单的情况是,你的股份除以公司总股份。

  • 上市公司(Public Company):上市公司往往试图发展更大,对其财务结果和内容的公开透明有严格的规定,股票和股票期权的市场价格极其透明。
  • 私有公司(Private Company):大多数公司都是私有的,有多种股票类别,通常当公司是私人的时候,你不能出售你的股票。
阅读全文 »

原文斯坦福 CS007:写给工程师的理财指南(一)——行为经济学

这个系列是Stanford CS007 的笔记,一共十节课的内容,我准备分三篇文章来记录它。

讲师 Adam Nash 是硅谷顶级风投 Greylock Partners(早期投资过 Facebook, LinkedIn, Instagram, Pandora, Dropbox, Airbnb 等一系列著名公司) 的入驻企业家(EIR)。他认为校园课程缺少对“财商”的教育(即使是世界顶级大学),因此希望通过这门课让人们树立起个人财富管理的意识。

为什么是面向“工程师”的呢?作者也在 slide 中给与了解答:

  • 工程师数学好
  • 工程师赚得多
  • 自认为能够做出理性的决策
  • 能够创造出影响经济和金融的产品

虽然这几点原因没什么不对,但是实际上整个课程的内容跟你所从事的行业没什么关系,也就是说这些知识是非常通用的,唯一的一点不同可能就是关于 IT 公司(尤其是初创)的股票,因为在传统行业中可能只有高管才有,而在一个创业的科技公司内人人手里都有股票(期权)也不是什么奇怪的事情(后续会专门介绍)。

这门课有很多理论内容,有些是 MBA 的知识,还有一些是更基础的概念,说白了就是”正确的废话“,比如说第十课的一张 slide 是:

人们为什么租房(买房)?

  • 需要一个居住的地方
  • 寻找生活的灵活性
  • 对大量财务承诺的想法产生了情感上的恐惧
  • 缺乏财政资源
  • 现金的管理要简单得多

那么学习这样一门课,我们应该更关心哪方面呢?我认为,

  • 第一是基本的金融学、经济学(可能包括心理学和哲学)概念,这些对了解投资理财和商业资本运作等很有帮助。
  • 第二是个人的财富管理,包括资产、负债、财务规划等。

因此我会围绕这两个方面去总结我认为有价值的地方,所以对内容做了大幅删减,同时也忽略了一些与我们关系不大的内容(比如美国的养老保险)。

行为经济学——预见不理性

你觉得自己的花费都是理性的吗?

实际上很多情况下人们的消费是不理性的,行为经济学(Behavioral Economics )认为:

正常生活中的经济个体是非理性的,这样一个非理性的人,即使知道效益最大化的最优解也有可能因为自我控制意志力等方面的原因而无法做出最优决策。
行为经济学包含了以“非理性人”为立论依据的一系列经济学框架。

阅读全文 »

接上文 starter及工程化模块化及理解

命名问题

schema可以按模块划分写在不同文件中,但是解析时其实是合并解析的,type、query及mutation的各自命名必须唯一,多人协作时需要注意。

公用type问题

由第一个问题引出,不同模块可能有公用的type,放在哪个schema中都不合适,可以将所有type定义放到同一个文件中。

泛型结构

graphql 不支持泛型,目前没有好的解决方法,暂时使用以下数据结构代替:

1
class Example {
2
    ...
3
}
4
class ExampleWrapper {
5
    int code;
6
    String msg;
7
    Example data;
8
}
1
type Example {
2
    ...
3
}
4
5
type ExampleWrapper {
6
    code: Int
7
    msg: String
8
    data: Example
9
}

项目地址

Github: dongfg/api

依赖

1
<!-- 提供servlet入口 -->
2
<dependency>
3
    <groupId>com.graphql-java</groupId>
4
    <artifactId>graphql-spring-boot-starter</artifactId>
5
    <version>LATEST</version>
6
</dependency>
7
<!-- graphiql 提供查询界面-->
8
<dependency>
9
    <groupId>com.graphql-java</groupId>
10
    <artifactId>graphiql-spring-boot-starter</artifactId>
11
    <version>LATEST</version>
12
</dependency>
13
<!-- 解析schema文件,resolver等 -->
14
<dependency>
15
    <groupId>com.graphql-java</groupId>
16
    <artifactId>graphql-java-tools</artifactId>
17
    <version>LATEST</version>
18
</dependency>
阅读全文 »