guiyumin 发布的文章

没什么可说的。
文档不清晰,示例代码是垃圾,被迫要去看源代码。

而且很多用法,竟然都他妈必须通过查别人的博客才能看得到。

首先,PM2对文件路径的处理有些问题,所以我被迫把所有用到path.resolve()的地方全改为相对路径。
其次,PM2不认dotenv,也就是说,默认的require('dotenv').config()是不行的,会报错,所以不得已又加了一个路径的配置,require('dotenv').config({path: '../.env'})。结果开发环境下又报错,然后又搞了一个if-else

Golang其实非常之怪异的。
好,废话不多说,我终于搞明白这些问题:

  • GOROOT: 这个就是Golang的安装路径,UNIX-like系统,一般是/usr/local/go,Windows一般就是C:\Go。 一般不需要设置。
  • GOPATH : 这个就是你的workspace,比如你放在D盘,比如哈,D:\goworks或者/home/yumin/goworks。那么,这个目录下,会有三个目录,src, bin, pkg。那么呢,你需要在环境变量里设置export GOPATH=/home/yumin/goworks,以及export PATH=$PATH:$GOROOT/bin:$GOPATH/bin。Windows同样道理,自己手动设置环境变量GOPATHD:\goworks, PATH环境变量要添加2个:C:\GO\bin(这个一般是安装golang的时候已经帮你设置了),D:\goworks\bin(需自己手动设置)。

- 阅读剩余部分 -

这里有以下几个注意点:
1、这个validation只是在Model层面,而不是在Migration,因为Migration是对数据库进行操作,而Model层是对数据本身进行校验;所以其实db:seed是绕开了validation。这是个坑。
2、seeder里写的东西,直接写入数据库,不经过Model层的validation
3、 sequelize真的不行

其实这是因为mysql这个数据库User表里的root User,不是用密码链接的

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

解决方案:

- 阅读剩余部分 -

继上篇讨论开源软件的程序员怎么赚钱之后,我又总结了一下,开源软件无非以下几种盈利模式,当然,这和这个具体的开源软件本身是什么、面向的客户群体也有关系,而且一般不是仅仅一个盈利点,而是多种多样的盈利模式混合在一起的。

1、Linux Kernel等基础设施类open source project:

由于类似Linux Kernel这样的基础设施软件如此之重要,所以肯定没法成为某一个人、某一个公司私有,必须有成为公器的觉悟,所以肯定是成立基金会的形式了,比如著名的Linux Foundation。

想一下,如果这个Linux Kernel是阿里巴巴或者腾讯或者百度私有,他们来维护和运营,你敢用吗?

这种情况下,没所谓盈利不盈利了,基金会嘛,不以盈利为目的,但对于参与的个人,待遇肯定不错了。比如Linus Torvalds,Linux Foundation在2016年支付给他1.6M美元(160万美元),而且很多公司都赠送给他股票的,比如Redhat。据说现在他的身家已经达到1.5亿美元了。虽然比不上盖茨乔布斯什么的,但已经非常可以了。他自己也对此非常满意。

这一类也显然也包括Apache Software Foundation, OpenSSL, OpenBSD等,都属于核心基础设施。除了接受各种捐款,或者邀请企业成为会员(会员费),也没什么好办法了。

2、 Vuejs,Vuetify等热门开源软件:

这也可以归结于基础设施类,毕竟很多公司的产品都是基于这些东西来开发的。因此,他们需要这样的好东西能持续改进、持续运营下去。所以会捐款。
所以Evan You能够成为独立开发者,拿到各种捐款,比如公开的数据是,2018年时,Evan的Patreon账号每月获得16K美元的赞助。
而且Evan出席很多会议,在会议上演讲,我相信是有演讲费的。
当然了,给他们赞助了,也会在网站上显示出自己的logo,也是很划算的。

这些优秀的独立开发者们,显然也会提供商业支持的,只要你给钱,都OK的。比如Vuetify在README里就搞了一个badge,要雇佣他们,150美元一小时。

当然,对于财大气粗的Reactjs和Angular,是不需要搞外块赚钱的。然而,正是因为Reactjs和Angular后面有Facebook、Google等大公司,那么其他大公司在使用这俩库的时候,也不是没有顾虑的。上次Reactjs闹出来的license事件,可以说明这个问题。

3、Freemium模式:适用于很多不是那么热门,但也足够实用的开源软件

这一类已经不算基础设施了,可以理解为重要的实用功能,

  • 例如wildfire Chat这个开源IM软件,
  • 或者某些开源的电子商务软件,
  • 某些开源Blog程序等

这一类,基本上就是利用开源吸引人气,卖商业支持服务,面向business卖license,或者卖生态周边,比如theme,plugin等。不是大热门,但能够让开发者生活得很好了。

开源版本,提供基本的功能;Pro版本,提供高级功能。 Nginx、OpenResty也是这样的,你可以用开源免费版本,他们也有商业公司,提供收费的商业支持服务。然而这里有个矛盾,就是你的开源版本,到底做到什么程度。比如Nginx由于开源版本做的如此之好,以至于只有很少人购买他们的商业服务。虽然最终卖身成功,但显然Nginx Inc不是一个成功的商业公司。

显然,如果你开源版本提供了太少的功能,也就没人愿意去尝试了。

Jekyll Pay目前属于这一类,暂时考虑定位于这个层次,也面临类似的问题。

4、本身自己不开发开源软件,但基于热门开源软件的周边生态来开发

  • 最著名的显然是Redhat了,Linux Kernel是免费的啊,可以随便用,但你不会维护啊,所以我来帮你啊,这就是卖subscription,卖的是服务。
  • 再比如说,Wordpress那么流行,你就可以开发一套主题,一个插件,而且是freemium的模式,就是说这主题或者插件免费给你用,但也提供pro版本,要收费的。
  • Vuetify其实就是Vuejs的周边生态
  • 其实VueMastery也是Vuejs的周边,似乎和Evan You关系不错,应该大概率是有参股的
  • WordPress的host服务,其实这个属于云服务范畴了,但现在似乎开源软件和云服务供应商之间的矛盾越来额越多了

5、混的比较惨的开源项目也不少。

  • OpenSSL,在HeartBleed漏洞爆出来之前,其实混得挺惨的,当初几个核心维护者甚至日常还是给别人做IT咨询赚钱,都快经营不下去了。后来这个漏洞让他们终于在业界引发了一些讨论,再加上来自罗永浩的捐款,还是让他们好过了很多。
  • 所以技术和钱之间没有必然关系。而且如果不能通过技术赚钱,这个技术其实就很难继续投入资源去改进。