分类 运营 下的文章

一人公司方法论

作者和授权信息
本文由 Easy 撰写。

Weibo: https://weibo.com/easy
Twitter: https://twitter.com/easychen
Youtube: https://www.youtube.com/c/Easychen
(欢迎大家关注和订阅,等 Youtube 订阅过 1000 ,我会试试制作本方法论的视频版)

本文在 cc-by-nc-sa 协议发布。

您可以复制、发行、展览、表演、放映、广播或通过信息网络传播本作品,但必须署名作者并添加链接到本文。
不得为商业目的而使用本作品。
仅在遵守与本作品相同的许可条款下,您才能散布由本作品产生的派生作品
为什么有这篇文章
不管是独立开发还是IT课程,一个人做业务也好几年了,最近开始回过头整理通过实践获得的认知,并尝试将其梳理为一个方法论。

当然这个体系还不完善,但一直没有找到同一个方向又更为完善的。所以不如自己来整理和维护,对自己而言可以定期回顾修正,读过的大家也可以来参与补充。

什么是一人公司
这个方法论,我把它叫做「一人公司方法论」。那首先什么是「一人公司」呢?

字面的理解就是一个人运营的公司,但实际上它指代的是比较少的人运营的小公司,一般来说1~3个人运营的公司,也可以把它放到一人公司的范围以内。其他一些形式,比如说一个人再加上很多的兼职一块运营的公司,其实也可以看成一人公司。

所以从人数上来定义一个公司,实际上并不是很准确。我更喜欢另外一个层面的定义:

「 一人公司就是建立在个人品牌之上的公司。」

这个定义更为准确,它是说整个公司的业务和品牌影响力都主要源于基于一个人。它周围可能有一些辅助运营的团队,有一些外包、有一些兼职,甚至全职助理的角色,那也是一人公司。

为什么要单独来观察这一类公司呢?因为我觉得它是以个体创造财富的典型。之前我翻译过一篇趋势报告,叫做「百万美金的一人公司」。说的就是越来越多的一人公司,可以做到百万美金的价值。当然,直接盈利达到百万美金的不多,但是以 100 万美金估值卖掉的却不少,而且正变得越来越多。

一人公司的特点
优点
下面我们来看看一人公司的特点。先看优点。

第一个显而易见的优点就是成本低。因为整个公司只有一个人,所以无需办公场所等硬性成本;也没有长期雇员,所以它没有固定人工成本。

这里需要注意,固定人工成本,实际上是一个会引入风险的成本。很多程序员创业副业喜欢做外包,但是如果你做一家外包公司,就会纠结于固定人工成本。比如在你规模小的时候,接到几个大单子,就需要扩展人员来完成开发。但是如果做完这些项目以后,接不到同样数量的活,你还却依然需要支付同样的薪资来维持团队。这就成为了一个很高的风险。

你又不能把员工开掉,下次需要时再招。先不说这样干下次还能不能招到人,每次团队磨合和培养的成本就非常高。

回到低成本上来,因为你只有一个人,你不需要协同,所以没有沟通成本,很多事情可以保质保量的快速完成。

再一个,因为你没有团队,个人的话,想在哪个城市就可以在哪个城市。现在一些新一线和二线城市的生活成本非常低,生活环境也非常舒适,如果可以把业务放在一线城市,然后生活在其他城市的话,不但生活成本低,而且生活品质反而会得到提高,这也是一个非常划算的地方。

因为成本低,相应的对收入的压力就小。一个每月只能挣 10 万的业务,对大公司来讲可能成本都收不回来,但对于一人公司来讲,去掉成本和税都是自己的,很可能可以活得挺滋润。也正是因为存在这些结构性的市场空白,才让一人公司可以存在并得到发展。

缺点
一个人的精力是有限的
说完优点,下面我们来说一下缺点。

首先就是一个人的时间和精力是非常有限的。因为如果我们一天工作10个小时,一周工作5天,那一周其实就50个小时的工作时间。如果把这50个小时的工作时间均摊到各种要做的事情上边,就会发现其实每一件事都分不了太多时间,这会造成整体业务进展慢。

同时,因为就一个人,所以必须在多种业务之间来回切换,这会带来一些额外成本。

比如说我们正在编程、正在做架构设计的时候,是在进行深度思考,如果这时候有一些紧急但不重要的事情插入进来,就会把我们从深度思考中拉出来,之后需要再花很多时间才能重新进入到这个状态里边去,甚至可能再也回不到当时的状态,从而丢失掉一些很好的想法。尤其是对一些创造性高的工作来讲,这是非常可惜的。

一个人需要做全部事
第二个缺点就是,一人公司往往要求我们一个人把整个链条上的所有事情都做了。原因很简单,因为整个公司就你一个人,你不做就没有人做。

这样带来的一个非常明显的问题,就是工作量的大额增加。即使很多没有难度的事情,处理细节也会消耗大量的时间。

另外还有一个更严重的问题,「麻雀虽小、五脏俱全」。它不但要求工作量,还对技能有要求。如果你缺乏特定的技能,就需要投入上百个小时的学习时间,而且还不一定能学得好。

更有一些大型公司具有的资源,一人公司可能是不具备的,比如像做运营和销售时候的人脉资源。如果持续解决不了,就只能调整策略去绕开。

矛盾和解决
这里就出现了一个非常明显的矛盾:一方面是我们个人的时间精力非常有限(一周就50~60个小时);另外一方面,我们又有非常大量的事情要做,因为公司就我们一个人,所有的事情都是要有人来做的。

这个矛盾不解决,一人公司就运转不好。怎么解决呢?还是从矛盾的双方分别入手。

提升效率

第一个方向,一个人的时间和精力是有限的,那我们能不能提升效率。

这个对于其他的行业来讲,可能会比较难,但是对于程序员来讲,可以考虑自动化和人工智能。如果在这两个方向上有突破的话,我们就可以把个人的时间和精力从重复劳动里面解放出来,让机器高效率的去处理重复的事情,把我们仅有的精力放到创造性的、开创性的业务上面来。

对于通用业务而言,这个难度可能很大,但如果针对某些特定的业务,还是有可能构造出一人+机器人的效率放大结构的。这个结构一旦完成,就可以极大的提升效率。

选择要做的市场

另一个方面,我们还可以从选择要做的市场入手。虽然每个公司都有各种业务,但对于不同的市场,每一种业务的工作量是完全不同的。如果我们对进入的市场进行取舍,就可以把精力集中到那些工作量小的细分市场或者小众市场。比如我们只针对一个小众人群去做一个功能简单的软件,产品和开发的工作量就会小很多。

但小众市场往往伴随获客问题。

通用渠道
首先是通用渠道的相对获客成本变高。比如同样是花一百万买开屏广告,面向大众的快消类产品,100 万人看,其中有 80 万都是潜在目标用户,最后点击可能是 20 万。但小众产品如果以同样价格去投放,100 万人中很可能只有 10 万人是目标用户,这样点击和转化就非常低了。相对而已,小众人群的获客成本反而高很多。

定向投放
除了通用渠道,我们还可以考虑做定向投放。所谓定向投放是说,对这个小众市场的行业网站和社区投放广告,或者向这个小众市场相关的意见领袖(KOL)做营销推广,再或者购买搜索关键字来导流。这部分的效果会好一些,但成本就要看这个行业竞争如何了,竞争激烈的比通用渠道投放还要贵。

自制内容
以上两种方式都是需要相当的市场预算的,对于一个刚刚启动还没有盈利的产品,更多的是没有什么预算的情况。这时候我们更多的会考虑自己来做内容、自媒体、成为 KOL。

但做内容是需要持续不断投入的事情,在精力上的投入比较大。如果我们是一个人的公司,那一周50个小时的时间,花在视频录制剪辑加字幕发布上的时间,很可能高达20个小时。40%的时间花在做视频上,而这个视频它还不是立竿见影的,需要很长的时间去积累用户。

这也是为什么你会看到很多的程序员,不是靠写软件挣钱,而是靠公众号卖广告挣钱。因为做内容就很费时间了,如果还要去开发一个软件,精力上很难支持住。

自传播
除了做内容,我们还可以在产品设计上发力。如果我们能让产品做到自传播 —— 就是让用户能不断地邀请来新用户,我们就不用花自己的精力在上边了。

有网络效应类的产品比较适合做自传播相关功能,因为用户的收益和用户数量成正比的。有的产品不一定适合传播,比如定位是一个非常私密的个人数据类产品,就不一定适合通过分享内容来拉新。

当然除了直接整合在产品中,我们也可以通过积分、物质回报来激励。比如现在已经很常用的分销返利或者邀请用户送付费会员等。

小结
对比以上方案,自传播应该是最好的渠道。需要付出的成本低,效果相对的也好。但它的问题在于如何优化产品,实现持续不断的自传播。这个是非常考验产品能力的。

选择成为平台或生态的一部分
除了选择市场以外,我们也可以选择成为平台或者生态的一部分。因为有平台在,我们就可以少做很多事情,甚至只需要关心业务逻辑。

对于早年的苹果市场来讲,只要会开发应用可能就OK了。苹果商店会帮你进行销售,其他的事情都不用管。

但这其实是理想状态,随着市场慢慢的从蓝海变成一个红海,我们会发现即使应用写完了,在市场里已经有很多同样的应用。我们又只能想办法去做营销相关的优化,在其他渠道去做一些推广。最后之前要做的事情,又回来了。因为对于每一个产品来讲,平台能提供的入口大家都能拿到,只能在这个基础上再竞争。用现在的词就是「内卷」,市场「卷」起来以后,我们就必须去做更多的事情。

当然我们也可以不做海,选择去做一个小池塘 —— 就是说这个市场非常小,不太可能变成红海,因为没有那么多的人看得上它。但相应的,这种市场一是很难发现,二是往往随着趋势的发展,它可能会消失掉。可能短期内还能挣点钱,但最后这个市场可能就没了,你又不得不从头来重新寻找新市场,这也是非常痛苦的。

苹果商店已经很成熟,所以比较卷。我们也可以去找一些新的平台和生态。比如 toB 的 SaaS 的话,国内可以看看企业微信和钉钉,国外的话可以看看 Airtable 这种新兴生态。如果进入的时间点合适,就能分到很多流量。

当然,还是想之前说的,一旦市场竞争变激烈后,红利就会消失,剩下的就是大家真刀真枪的竞争,要做的事情又会变多,如此往复。

分离非核心业务
确定了市场以后,我们还可以对自己的业务进行取舍。比如,我们把非核心业务给分离出来。这些业务,我们可以外包、可以兼职。对于一些基础设施,我们可以「以租代建」。

所谓「以租代建」,就是说以前我们需要什么系统都要自己开发,但是现在有各种各样的云平台、行业SaaS、以及不少按量付费的商业服务。比如商品代发,就已经有平台可以帮你来做。只要付一点钱,就可以让他们帮发货,自己就不用再搞个仓库或者店面来做中转。

基础设施和制造业也正在逐渐的成熟和开放,比如3d打印、周边印制。最后它们都会抽象成一些API接口,我们在网上去调用它,付费,剩下的事情就自动完成了。这样的话,很多非核心的业务都可以被分离出来。当然这个是一个过程。不同国家和地区的市场、不同的行业成熟度都不同,需要自己去考察。

强调「以租代建」对于程序员有特殊意义,因为对我们来讲写程序是很容易的事情,自己建一套系统也很方便的,而租用别人的还要花钱。以租代建的核心是节省时间和精力,如果我们只是通过不断开发各种系统来省钱,那这样跟我们去接外包挣钱不会有太大的区别。

(这也是我自己经常犯的错误,需要时刻提醒自己)

这里还有一个概念要明确,前面我们有提到说要分离非核心业务,那什么样的业务是核心业务呢。

这里有一个简单的判断标准。在我们做的这个业务中,最稀缺的资源应该成为我们的核心业务。比如对网课平台来讲,能持续不断生产优势课程的讲师就是稀缺资源,如何聚集和维护这个群体就是核心业务。只要保证这点,其他资源都会慢慢聚集过来。而其他的部分,比如课程平台的开发,就是非核心业务,可以通过租用或者购买的方式来解决。

增强优势
除了降低工作量,我们更需要想办法来增强优势。因为降低工作量只是保证我们能把产品完成,但如果产品和其他竞品一样的话,并不会具有优势。

从用户的角度来讲,大部分的用户并不关心产品背后的开发者是个人还是大企业,更看重付出的成本和得到的收益。所以我们最终还是要回到产品价值上来,为用户提供不可或缺的价值。

从标准品到独立品类
我们可以给一些标准化的产品去添加独有的特色功能,从而把它变成一个独立的品类。比如我之前做过一个软件叫做福利单词,它是一个背单词的软件。在任何一个市场上,这类软件都是一大堆。但福利单词有一个额外的功能,就是在输入单词正确时,会给你显示一张高清的萌妹子福利图。这就带来了完全不同的体验,在它和那些千篇一律的背单词软件中划出了界限,成为了一个同时融合叫教育和娱乐功能的独立品类。

如果你觉得这点小功能还不足使其以成为一个独立品类的话,可能我之前做的学前端 RPG 游戏 更明显一些。

副产品优势
另外一点就是,我之前在「从精益开发到精益副业」的视频 中提到的「副产品优势」。

虽然是在运营一人公司,但不一定非要全职来做这件事情。也可以一边上班,一边把一人公司作为副业来做。

在这种情况下,我们就会多出来一个优势,我叫它「副产品优势」。核心是说,因为有主业,所以可以保证基本收入和生活品质;在主业工作里边产生的副产品,可以进一步加工为商品,作为副业来销售。这样既没有生活压力,又降低了副业的制作成本。虽然刚开始可能收益的绝对值不大,但可以慢慢把它做大,直到有了充足的现金流,再把它当成主业来做。

营销优先还是开发优先
除了上边提到的这些,在实际运营中,我们还经常会遇到很多其他需要选择的地方。比如,在优先度上,到底是应该营销优先还是开发优先。

对于大一点的公司,有足够的人力,营销和开发都是不同的部门去做,所以可能不存在这个问题。但是对于一人公司来讲,其实很难一边做营销,一边不停的去给产品开发新功能。因为营销和运营不是一个短时间的事情,需要持续不断的进行。如果你不去做,很可能流量就没有了,没有流量就没有转化、也就没有收益。

另一方面,如果我们不断的开发新功能,时间长了就会有一堆项目需要维护,维护成本累加起来会很大。假设有 50 个项目,平均每个项目一年升级维护一次,每次两天,那么就会花掉我们工作时间的 40%。如果这些项目是免费的还好,可以随时关闭。但如果每个项目都有那么几十个付费用户,既不挣钱就要不断的提供维护和客服,是非常麻烦的。

这之间的取舍,会对我们的一人公司的运营产生很大的影响。

营销优先
营销优先模式是说,我们只开发一个很简单的产品,维持一个很小的功能集。然后不断的去为这个产品寻找新用户。

这个模式的优点是,我们开发的功能很少,维护成本比较低,不用不停地开发。

而它的缺点就在于,我们需要持续不断的进行营销,不断的获取新的用户。最后可能会发现,越来越多的精力都用到了营销上,用到了拉新上。最后完全变成了做内容或者做业务的竞争。

即使这样,如果能做好营销,那其实也不错。但大部分程序员并不喜欢和擅长做营销,而且在没有市场预算的情况下,要成为影响力不错的营销号是需要花很多的时间和精力,甚至还有运气的。

关于营销的难度,很多同学没有基本的概念。我这里有一个自己常用的参考转化率,是在以微博为主要流量入口的环境下测试得到的。从信息流展示次数到有效付费购买之间,转化率略为 1~5‰ 。当然,具体的数据会因为营销材料、产品需求有很大的不同(这其实是优化得不错的数据了),当你自己测试过后,可以得到自己的转化率数据。

如果你没有自己的数据,那么不妨以 1‰ 为基础简单评估营销难度。也就是说,如果想要获得 100 个购买,大概需要十万次的有效阅读,那么首先以 10 万的触达为基础思考如何达到。

开发优先
另一种模式叫做开发优先。是说我的营销能力可能不够,那我就面向同一群用户,不做营销了;改为针对已有的这些用户,不断的为他们开发付费产品。

这其实就是凯文·凯利那篇《1000个铁杆粉丝》的文章中的逻辑。文章中说,如果你有1000个铁杆粉丝,无论你卖什么东西他们都会买的那种,那你只需要面向他们不断推出产品,就可以维持不错的生活。

这种模式的优点是,我们不用到处去做营销,不用过多的去做我们(可能)不擅长的领域。而缺点就是,开发很累,维护也很累。如果不能形成规模效应,就要不断的开发付费应用,每一个产品可能就会做得很浅。

你可能要问,为啥我要不断的开发应用,我只开发一个应用,然后不断的收钱不行么?答案当然是可以,但难度有点高。

为什么要这么说呢,我们来计算下。假设我们期望每个月的毛收入在 5 万(除去成本和税以后大概在 3 万),如果以 1000 个铁杆粉丝来算,那每一个用户,就需要每个月消费50块钱。

这其实是一个很高的费用。从开发者的角度来讲,你可能觉得这个费用不高,但从用户的角度来讲,是很高的。如果你收集下自己和周围的人在软件和互联网服务上的实际开销,就会明白。

我之前在微博上发过一个提问,从评论来看,即使一年花销达到200左右的产品和服务都不太多,而且基本是资源导向的,比如视频音乐会员、电商外卖会员。很少有工具类软件能达到这个数的。所以,to C 的工具软件和 SaaS 里边,要找到每年能持续挣600块钱的需求,难度相当高。

to B 的服务在价格上相对容易上去,但是在获客成本和开发工作量上又相对较高。如果能在其中找到一个好的需求,倒是很不错。

总之,如果我们找不到这样的需求,就只能退而求其次,用多个付费服务来提升客单价。

实际操作
前面说了这么多的分析,但离落地还有一点点距离。在最后一部分里,我们就来思考下怎么落地。

发现一个趋势
寻找一个小市场
针对这个市场
面向 1000 个用户,提供一个每月 50 元定价的产品
或者面向 10000 个用户,提供一个每月 5 元的产品
开发产品并持续运营
发现趋势
首先,我们应该集中精力在发现趋势上。以前创业的时候,我经常思考一个问题。凭什么一个创业公司可以以很小的团队,在很短的时间,用很少的资源崛起。以前的人都没这些人聪明吗?显然不是。后来在阅读一些创业方法论的时候才明白,这是因为创业公司发现了趋势,找到了变化。因为这些变化是新出来的,所以以前的商业虽然有能力,有资源,但难以未卜先知。新的趋势就像山脉的崛起,将原来严丝合缝的商业逻辑撑开,出现了新的商业路径。

发现趋势,就是要看到变化。个人的努力虽然重要,但也要考虑时代的进程。尤其对于一人公司来讲,跟上大趋势,才能放大自己有限的精力投入。

关于趋势发现,简单粗暴的方式是读研究报告。比如艾瑞网会定期更新一些简版报告,从里边的数据可以发现很多有意思的趋势。不过这些报告更多的是面向创业投资领域,未必适合一人公司。像我经常在微博上提到的 Trends.vc 这种专门为独立开发者和一人公司准备的分析报告,就更有针对性一些。

寻找一个小市场
正在高速增长的赛道里往往有大量的巨头和创业公司,从资源上来讲,一人公司在这些领域很难占据优势。

但在这些赛道周边,通常都存在一些年收入最高几千万人民币的小市场,这些市场大厂和资本是看不上的,反而是一人公司很好的切入点。如果能结合趋势,选择到一个现在看起来很小,但是会随着趋势慢慢变大的市场,就能进一步保证将来的收益。早期进入,持续深耕,当这个市场成长起来时,即使是一人公司,也会具备很强的竞争力。

设计产品
然后就是针对这个市场设计产品了。根据自己的能力,可以有两个选择:

面向 1000 个用户,提供一个每月 50 元定价的产品
或者面向 10000 个用户,提供一个每月 5 元的产品
当然,其实你还可以进一步调节用户数和月定价,只要乘起来是 5 万就可以。而且 5 万也只是一个参考值,做不到还可以调低。如果一个产品做不到,可以把一个改成两个。这里量化数据的意义在于,给出一个清晰的模式,用来做前期的参考。

参考依据
在设计的过程中,我们可以准备很多备选方向和产品,通过比较选出最适合自己的。以下是我觉得有用的参考依据:

市场安全性:发展趋势(是否快要没了)、竞争情况(是否红海)
客户价值:MRR(每月经常收入预期)、LTV(客户生命期价值)
获客渠道和成本:是否能够自传播,传播系数
工作量:MVP(最简可行产品)所需工时、迭代和升级维护成本
资源匹配度:是否有自己难以掌控的资源
开发和持续运营
接下来就是 MVP(最简可行产品) 的开发,PMF(产品市场契合) 的寻找以及后续的持续运营(或者转型)了。这一部分的内容可以参考精益创业系列方法论。

一人公司的基础设施
无公司运营
虽然写的是「一人公司」,但其实我们并不需要一开始就注册一家公司。因为会带来办公地址和记账的固定成本。一般来讲,最理想的方式是以个人身份运营业务,在有了稳定的现金流以后,再注册公司。

在国内,很多平台对个人主体并不友好,需要自行寻找替代方案。以 Web 业务为例,我们需要和平台对接的部分通常包括:

第三方用户登入(比如微信登入)
支付(没有这个就没法收钱)
消息触达(群发通知)
其中,① 和 ③ 算是加分项,② 则是付费业务不可绕过的。

个人支付解决方案
就我了解,在目前个人主题可用的支付方案中,唯一安全而且稳定的是「小微商户」及类似方案。这种方案其实是支付平台(比如微信、支付宝)在提供底层能力,只是通常为了防止被滥用,不开放直接申请,而改用服务商代理的形式。

正因如此,它可以做到资金完全走支付平台(而不是你的支付服务商),保证了资金的安全而且没有二次清算问题。

国内提供基于小微商户支付方案的有好几家,通过搜索可以发现有 xorpay 、payjs 等服务商。但不少服务商不太厚道的自己搞了一个审核流程来收取审核费或者叫开通费。

我自己使用的是面包多推出的支付平台:面包多Pay。

官网注明的特点如下:

没有开通费,交易时才付费,非常适合启动期的项目,费率为每笔交易 0.1 + 2%
支付完成以后可以显示文字、图片或者跳转到网址,一些简单场景就不用写代码来接入了
不过对我而言,最主要的考量还是平台稳定性,现在面包多每月结算数百万,这个支付平台其实就是其业务核心「闪电结算」平台的扩展,属于主业副产品,因此不挣钱应该也会维护下去。

一个 Tips:面包多Pay(其他平台我并未交费试用,因此不做评价)的支付接口里边,有一个获取 openid 的接口。它其实可以用来做微信体系下的用户登入。换句话说,无需认证公众号就可以实现微信用户的登入和支付。这就非常适合个人。

消息触达
常规操作是,在登入时要求用户补全邮箱、手机号并将其作为消息触达主通道。但邮箱时效性差、短信被拦截可能性高,且费钱。因此微信成为了发送通知实时性和到达率最高的通道。但是未认证公众号只能被动回复消息,均不能主动发送消息。即使认证公众号,模板消息权限正在收回。

经过比较,我认为目前适合个人的消息触达方式是微信机器人/QQ机器人。通过关注机器人,发送 token 实现账号关联,之后就可以通过机器人推送消息给用户了。我知道的方案如下:

微信机器人方案: wechaty (网页版协议免费,其他协议收费)
QQ机器人方案:mirai (未亲测)
机器人方案除了可以用作消息推送,还可以用作登入。比起通过支付接口的 openid api 登入而言,没有因 openid 改变导致用户无法登入的风险。

公司注册
如果你不能找到满意的个人主体解决方案,那么就只能考虑注册公司了。需要留意的是,即使注册公司资质,其实也有个体工商户和公司两个选项。

个体工商户的申请流程虽然简单,但其背后是无限责任。而有限责任公司则以注册资金作为上限,更容易规避风险。

公司注册不是本文的内容范围,在此就不做展开了。

亲测推荐 2021 年 SaaS 技术栈:Docker、Django、Traefik 和 IntercoolerJS

我最近发布了个人对Django做为一款优秀应用框架的一些考虑。本文基于此从架构角度做进一步扩展,介绍从开发到生产环境的整体技术栈考虑。

2018 年至今,我一直使用该技术栈构建一些小型 SaaS 应用。

本文最初发布于 www.simplecto.com,经原作者授权,由 InfoQ 翻译并分享。

整体技术栈

随处部署的 Linux 服务器和虚拟机:我使用了 Azure、Digital Ocean 和 Scaleway,并计划在 2021 年将所有部署迁移到Hetzner提供的专用服务器上。

Docker:就是我们常用的 Docker.

Traefik:使用 LetsEncrypt 证书的反向代理和 TLS。

Postgresql:运行在 Docker 中的数据库。

Django:同样运行在容器中。

IntercoolerJS:提供平滑易用的类 Ajax 前端应用支持。Intercooler 的创作者在 2021 年发布了HTMX,是 IntercoolerJS 的更新换代。

Sentry:捕获生产环境中软件缺陷。只需在配置文件中添加几行配置。

Bitbucket Pipelines 替代 CI/CD:鉴于 CI/CD 引入了过多繁琐无用的工具,我在 2021 年不再对个人项目考虑 CI/CD。

ZeroTier:实现 VPN 和控制层。

我在开发小型项目时,采用本地 Docker 容器运行测试,进而直接推送到生产环境。我不考虑使用繁琐的 CI/CD,而是选择了 Bitbucket Pipelines。

7597a5b78ab8a92a0bfadb3fecdfc653.jpeg

上图给出了我所采用技术栈的概览,图中有很多需要详细展开阐述的部分。下面换成列表方式展示。

  • 虚拟机
  • Docker
  • Django
  • 挂载数据磁盘卷
  • 使用长时间运行 Django 命令做为 Workers
  • 挂载数据磁盘卷
  • Postgres
  • 挂载数据磁盘卷
  • Traefik
  • Zero-Tier
  • SSH

托管环境

即便是无服务器架构,也需要一个云服务托管环境。我个人推荐Azure、Digital Ocean和Scaleway。每家都为计算、联网、存储和基本服务提供了充分的选项,支持用户任何构建需求。

同样推荐Hetzner,它提供了各服务层级的硬件、服务和价格。

虚拟机

一些企业应用和个人副业(side projects),并不需要同时为成千上万的用户提供 TB 级数据服务,因此可扩展性并非主要关注问题。对于此,我们可选用最小托管服务选项,通常不高于每月 20 美元。即便是服务价格相对最贵的 Azure,也可选用 Burstable 服务质量的虚拟机。个人推荐Scaleway的开发层级服务器。

注意:在我的技术栈中并没有 Kubernetes,因为我并未考虑可扩展性。

Docker

为确保新的虚拟机运行在最新版 Docker 上,我并没有依赖操作系统本身,而是使用了 curl|bash 方式,即:

curl -s https://get.docker.com | sudo bash

运行上面一行命令,就能获取最适用于当前运行环境的最新版本。

Traefik 实现反向代理

Traefik 对我简直是天赐之选。尽管 Nginx 也很强大,但其并非针对 Docker 环境构建。Traefik 的两个杀手级特性,为我节省了大量时间:

使用 LetsEncrypt 实现自动 TLS。简而言之,一旦设置,无需操心。结合适用的 API 和 DNS 服务提供商,还可以使用 DNS 验证。

使用 Docker label 实现无需重新加载的自动配置。一旦新服务发布,Traefik 通过监听所有 Docker 相关服务而自动发现更改。这使得服务的添加、移除和合并非常方便,不存在任何麻烦。

我对 Traefik 唯一意见是学习曲线略为陡峭。用户必须自行确定如何进行配置,包括配置文件、命令行选项、YAML、Docker label,乃至组合使用。

提示:我发布了自己使用的Traefik生产环境配置文件,供参考。

Postgres 数据库

亲测推荐,PostgreSQL 从不会令我失望。PostgreSQL 容器可毫无问题地添加到任何项目中。我只需简单地启动容器,绑定端口,挂接数据卷到主机磁盘,仅此足矣。

docker-compose.yml
version: '3.1'


services:


  db:
    container_name: postgres
    hostname: postgres
    image: postgres:11
    restart: always
    environment:
      POSTGRES_PASSWORD: secretsonly
    volumes:
      - ./data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    networks:
      - web


networks:
    web:
        external: tr

用于 Web 的容器化 Django

Django 很好地支持发布到容器中,我多年以来一直这么用。我反复强调开发环境和生产环境匹配的重要性,Docker 为我实现了一切。

我在 2021 年新推出了一个 Django 项目,用做新项目的模板,参见https://github.com/simplecto/django-reference-implementation。

实现异步任务的 Django 命令

我使用做为标准框架组成的自定义Django命令实现异步任务。该模式采用具有 sleep()的 while 循环,轮询数据库相关操作,并采取相应的动作。

截止 2021 年,我已使用这一模式运行一个网站截屏项目一年多,回报丰厚。该项目每日对 1500 个网站做截屏,所有操作由 Django 命令计划和管理。项目地址:https://github.com/simplecto/screenshots。

IntercoolerJS 降低了复杂性

这里如果展开说,需推出多个帖子,恐怕内容太长,以至于不会有人愿意读。我结合 JQuery 和这个小型 JavaScript 库,实现部分类似单页应用的效果,尽管事实上并非单页应用。

IntercoolerJS 保留了 Ajax 的传统优点,从后端 HTML 更新 DOM,无缝且平滑,非常便于实现用户登录和更新小型表单等元素。

强力推荐访问IntercoolerJS官网。

其创立者在 2021 年继承发展了 IntercoolerJS,推出了HTMX。

Sentry 捕获生产中错误

任何应用都会出错,但不应向用户展示。Sentry 提供了一种捕获生产中软件缺陷的易用便捷方式,其特性包括:

开源许可,可在生产中任意部署。

只需在 Django 项目的 settings.py 中添加几行配置,即可生效。

与 Git 代码库和问题追踪系统紧密集成,提供全生产环境的缺陷可追踪能力。

另一个优点是,随时能在生产环境中禁用。

更多信息,可访问Sentry官网。

Bitbucket Pipelines 替代 CI/CD

2021 年,我不在个人项目的部署中使用 CI/CD。其中存在太多工具,复杂性高。我只是使用 PyCharm 运行测试,然后从开发设备直接交付生产环境。

当前存在多种 CI/CD 解决方案,但是我推荐 Bitbucket 提供的 Pipelines 的服务。该服务每月提供数百分钟的免费使用,只需很少费用就能提供自上而下的功能。我自己在使用中很少碰到问题,很喜欢它们的 YAML 配置文件。

我使用 bitbucket-pipelines.yml 文件,实现跨多个 Docker 容器的完全端到端测试,加载数据库,并在几分钟内执行数以百计的测试。该服务是我们团队高效的关键,支持生产环境中每日五次以上 Push。

更多信息,访问Bitbucket官网。

ZeroTier 实现 VPN

最后,推荐一种在很大程度上是可选的、但是最好应具备的技术。Zerotier 是一种独树一帜的网络/VPN 服务,我用其连接所有的个人计算机。它可穿透防火墙联通家庭和办公场所,一分钟即可配置好。

如果所有设备使用 ZeroTier,就可以避免 SSH 中令人头疼的密钥管理,单机上共享带宽。

Zerotier 可运行在 Linux、Mac、Windows、Android 和 iPhone 上,覆盖大部分设备。

ZeroTier 的一个问题在于,我并不完全了解它的工作机制。和 MacOS 和 iPhone 类似,它们会按用户期望工作,并不出问题,只是从用户体验角度看有些不爽。但对于一名 CTO,谁又会去关心具体的细节呢?

总结

希望上面的深入介绍能激发读者对 Docker、Django、Traefik,尤其是 IntercoolerJS 的兴趣。它们简单、易于使用,能在适当时大展身手。

原文链接: Docker, Django, Traefik, and IntercoolerJS is My Go-To Stack for Building a SaaS in 2021
https://www.infoq.cn/article/W4leI4XZ32eSTqFJ8qPl

腾讯内部论坛热文:如何做一个小型公司的技术总监

本文在腾讯内部论坛被浏览达7347次,收藏615次,评论几百条,曾经是讨论最热烈的项目管理文章之一。

作为作者本身,感觉这个话题可以讨论的范围非常大,希望能有更多朋友一起切磋探索技术团队的管理之道。

资深程序员是团队中最强大的生产力,但往往被不合理的工作安排浪费掉。

因此作为一个团队的技术的“头”,必须要有明确清晰的认识,把主要的事务性工作剥离出来。并且放弃大量的管理“权力”,以提高团队开发质量和效率为最主要的目标去安排自己的工作。

一般来说技术总监其实会被要求做事实上是2个职位的工作:主程、项目经理(技术化)。

因此必须明确此两个职位的工作任务分割。然后把项目经理的工作,安排给另外一个人做,当然其职称可能同样也得叫“技术总监”或“主程”,总之听起来越牛X越好。

而真正的主程(技术总监)则应该投身于尽量多的技术工作中。而最重要的工作则是开发——生产代码和文档。

主程的工作:

一、开发

从来没有一个资深的外科医生会放下手术刀,而转到手术室外面指手画脚。一个资深的程序员也不应该离开代码和文档的编写,而只是做做架构图。

作为对一个复杂系统的负责人,必须亲手领导和参与建造,才能有足够的能力去负担起这个责任。

因此需要至少使用60%的时间来参与开发的工作,并且建议从一开始上班就开始,虽然早上的效率很低,但是跟任何艰巨工作都一样:万事开头难。

在你好不容易等待电脑慢吞吞的打开了所有的IDE、需求文档、参考资料、工作计划这堆要命的东西之后,你就迈出了最重要的一步,你会发现你不在需要在网上看微博和聊QQ来提振开始工作的激情,而会被某一个优化代码的灵感而激励,或者被一个复杂而有趣的问题所吸引,从而更快的能投入到开发中。

坚持打开电脑做的第一件事是打开IDE软件,是这一切最重要的一步。

开发的工作内容包括有:

1、提出非功能性需求

一般来说功能需求总是让开发人员焦头烂额的主要原因。但是实际上很多项目死在发布之后,却是因为性能、产品质量、扩展性、二次开发效率等非功能性需求没认真去解决而导致的。

主程作为经验最丰富的成员,必须要利用自己曾经的经验和教训(在这里教训往往比经验重要),提出那些自己折腾自己的“非功能性需求”,来保障整个项目在发布后不会轰然倒塌。

这是个吃力不讨好的工作,因为老板和客户往往只会抱怨技术人员在玩弄把戏,骗取更多的资源或者杞人忧天。如何说服这些家伙也许不是主程的工作,但是主程必须要以高度的责任心把问题放到台面上来。沟通的工作也许让项目经理去做会更好,他们有一整套如何威逼利诱老板和客户的戏法。

2、设计和修正软件架构

软件架构设计至关重要,而且工作繁重。不画图纸就敢开工的技术人员要么是天才要么是笨蛋。

对于团队来说,架构在分工合作、避免风险、提高质量等多个方面有无可替代的作用。架构要避免成为空洞的文档,最重要的一步是有人来掌控和实施。而主程主持设计和修正的架构,并且亲手实施,让团队中的腹诽之徒完全无法避开,否则代码将无法运行!

所谓设计和修正架构,并不意味所有的文档应该一个人写,而是指这个架构的每个环节,都是经过主程决策同意的。当然最好这些文档能尽量由他撰写,对于“菜鸟”团队来说,输出这种文档本身就意味着“权势”,有助于主程建立个人威信——这种看起来有点肮脏的“政治”东西,在避免团队内无止境的扯皮,以及稳定那些随时准备跳槽的成员来说,都是相当实用的。

3、难点代码(关键需求)的开发

主程必须写代码,写那些大家都认为风险大的代码。

有的系统对于性能要求很高,他就必须去完成容易出性能问题的部分,比如IO操作或者设计数据库索引。有些系统的需求非常飘忽,他就要去想办法完成框架代码或者脚本引擎,以便众多小弟可以跟着产品人员疲于奔命。这种工作内容会让主程不必完全的读过所有代码,而能牢牢的“掌握”代码,以免团队成员甩耙子的时候能充当备胎。因为融入团队的代码开发,也是一个让架构设计从日常工作中真正控制系统的工作。而且主程代码通常会被别人接触,能直接教育其他团队成员,同时也能建立——威信。

4、救火和杀虫

这个工作其实和代码开发是一致的,如果没有平日的开发,通常紧急问题的解决也是比较难处理的。但是这个也有一个调试技巧的要求,比如要求会使用各种诊断工具。这些工具一般的开发人员可能会比较少使用。找问题的过程本身也可以提高团队其他人的技术水平。

二、培训

培训的工作应该占用30%左右的工作时间。培训是稳定团队人员最重要的手段。也是提高团队开发效率最有效的手段。工具、过程、制度、奖惩,这些都代替不了程序员一行行的去写代码,最直接的方法是让他们做的更快更好,这些需要经验和知识的积累。

1、代码审查

关于代码审查,有太多的论述。但是代码审查还是一种“强迫”推行某种风格或者技巧的手段,这是最真实的“控制”系统的手段。也是推广知识和经验最直接的手段。

一个人写的代码通常应对的问题不会特别“广泛”,因此只要审查其中一部分代码,就能给大部分别的代码带来好处。

2、技术方案评审

什么事情应该写一个技术方案,然后进行评审,这是一个关键的问题。

一般认为开发时间在2周以上的单项工作应该先做个方案。往往技术方案是系统架构的完善和补充,或者是挑战。所以主程的参与是非常必要的。

但是要注意不需要去做的太琐碎,而是要提炼出“关键”的需求和“关键”的解决方案进行评审,而这些“关键”往往不是功能,而是质量上的需求,如这个系统的扩展性,是否能方便后续开发等等。

也有可能在这些会议上会发生争吵,但是决策人是主程的地位是不容动摇的。君子和而不同,每个程序员都可以拥有自己的看法,但是代码必须能按方案运行起来,主程必须经常申明这点。

3、学习与讲座

如果团队碰到问题,没有新的方法和技术去解决,是不会提高开发效率的。就好像你用牛来耕地,不管用什么管理方法,都不会赶上机械化的速度。

而主程承担着不断突破自己的技术上限,介绍和推动团队使用更新的技术来解决问题的责任。抱残守缺,思想僵化,最后会被团队成员所抛弃,而且也会让团队的效能落后于业界,最后直接影响产品的生死。

每年学一门新语言,这个说法可能有点激进,但是这也是作为程序员应该有的激情。

三、管理

管理等于权势?管理等于沟通?管理等于文山会海?多年专业训练出来的技术人员如何去做管理?

管理的目标是提高绩效,如果和这个目标无关,而只是和“管理者”这个头衔有关的事情,最好丢给别人去做,包括那个头衔。

管理主要手段是创新:想出新的方法去解决问题,而不是繁杂的事务性工作!——一个专业秘书能比主程做的好一百倍。

技术工作的创新,最主要还是在技术工作里面,而不是跳出来说:做这个,做那个。

管理的事情如果超过10%的工作时间,等于说你更像一个项目经理而非主程。

1、绩效评定

以专业的意见来衡量别人的工作,这个负担是无人能够承担的。这个工作往往是利益分配的一种手段。类似奖惩手段。这种管理方法已经不是新事物了。

但是实际上技术人员对于绩效往往持一定保留和暧昧的态度,因为这种事情难以很清晰的界定出来。需要判断而非量度,才是绩效的真正手段。

如果一定要打分,一共两项足够了:进度、质量,5分制即可。

更重要的事情是,告诉每个人主程的看法,告诉别人,怎样做才是更好。或者告诉团队,怎样做才更有利于我们成功(发财、上市、赢得老板和客户……)——把目标清晰告诉团队,发挥他们的主动性,是绩效评定最重要的目标。

2、需求评定

最让技术人员头疼的可能就是和客户谈判。这个事情实际上不应该让技术人员来伤心,有项目经理就可以了。

而需求评定更多的是可行性的讨论。主程如果参加每个需求评定,他要三头六臂也搞不定,正确的做法应该是具体开发的团队人员参加,而主程在开会前给与自己的意见,或者会后听取参与者的总结。——这是了解别人做什么事的一个重要手段,但无需陷入太深,因为还有代码评审和项目经理的帮忙。

3、跨部门沟通

实在没必要参加,能躲就躲,这是扯皮的天堂。让项目经理去吧,他们的专业技巧能让这些事情更加有效。只要回来后让项目经理告诉你发生了什么事情就可以了。

4、进度审核和任务分派

又是一个很有“权势”的工作,实际上团队成员的情况大家都知道,决定谁应该做什么事情并非需要很多时间去想的事情。所以大可以把方向性的意见告诉项目经理,让他去做。很多优秀的开发者玩EXCELPROJECT之类的水平还不如只有一年工作经验的秘书,别折腾自己了。

5、面试

如果真想帮忙,准备一份有区分度的笔试题目吧。不靠谱的人太多,老板可不是花钱请你和他们聊天的。让项目经理去聊,不用担心他们技术不强,再不够,也会比大多数面试者要牛X。他们搞不定的人,就是应该雇佣的家伙。毕业生招聘怎么办?只要看看他们课外活动是不是有搞些专业的事情就可以了,上进心比别的东西都重要,HR会比主程看的更准,相信我。

6、各种会议

饭无好饭,会无好会,超过6个人的会议应该坚决抵制。如果你有一个程序等着你去写,你一定无比痛恨这些会议,顺应你的内心吧!上帝保佑你。


最后说说项目经理的工作:

项目经理就像下水道的清洁工,所有那些主程不愿意去做的事情,他们都弯下腰去认真的把玩,实在是太伟大了。

既然如此,为何不让他们拥有更好一点的头衔呢?如果没有他们去处理这些工作,任何一个主程都会被逼疯掉,或者他们自己变成了项目经理,让团队损失了最强力的一台代码发动机。

一、进度

1、指定工作计划

2、进度检查和告警

3、工作总结和统计

二、资源

1、整合提供各种资源,如找DBA,IT,运维人员,硬件,SVN权限,测试环境,福利,周末的活动……

2、面试:人员是最重要的资源,不是吗?

3、资源谈判:往往是和老板谈判,让别人明白现在的真实情况。又一个吃力不讨好的差事,但是总需要人做。

三、沟通

1、需求评审:和需求方讨价还价,项目经理真是命苦啊……

2、组织会议或者用其他方式通知信息给所有人:小喇叭、大喇叭、全服广播、世界频道……

对于一个小型公司,职权,头衔,收益,往往会更加敏感。但是这些都不是让项目失败的理由。

一颗叫程序员的种子说:长大了我就是叫管理者的树。这个错误的观念只会让这个种子永远无法发芽。

软件开发是类似外科医生的行业,而不是血汗工厂,所以不需要手持皮鞭的经理,而需要仁心仁术的神医。

软件企业缺成本费用怎么做税收筹划节税

身边有个朋友是做软件行业的,业务做得比较好,估计做这个行业的人都清楚,实在是没什么进项,但是又得开票,所以被企业所得税压得喘不过气来。

一、当前我国软件企业合理避税中存在的问题

  1. 由于受制于部分软件企业自身管理水平,部分软件开发企业在投资时过于关注眼前利益,忽略了对企业长期发展利益的重视,在经营过程中,管理者不注重经营方式,不加筹划和研究,不重视对纳税的合理回避,这些都会在一定程度上导致软件企业纳税负担过重,影响企业的未来长期发展,约束盈利能力提升。
  2. 软件企业税收筹划的成本比较高,尽管企业依靠合理避税可以实现有效的税收筹划,但是企业在税收筹划中需要设置必要的部门或机构来进行此项工作,在这个程序中依旧会加大运营成本,尤其是依靠税务机构进行筹划,企业往往需要花费比较高的咨询费用,在这种程度上来讲,合理避税效率比较低,难以实现降低纳税负担的作用。

二、软件行业税收优惠及税收筹划思路分析

  1. 明确公司的税收性质,一般纳税人?小规模纳税人?

软件销售及技术服务技术服务类的征收税率3%(小规模纳税人)6%(一般纳税人)软件产品17%

  1. 技术开发费的增值税如何减免?

这一块是相对容易免税的,只需要将技术开发合同拿到当地的科技局备案即可,但必须注意:其中的知识产权必须是对方所有或者双方共享,如果是你的知识产权是不能免税的。同样如果你免税了,那么你开出的增值税专用票对方也是无法抵扣的。

  1. 软件产品增值税如何减免?

软件产品销售,征税税率3%(小规模)17%(一般纳税人),小规模3%这个是逃不掉的,但是你如果软件销售达到50万(1年内)会强制你变为一般纳税人,那时候17%的税率压力就会比较大,因此建议你这之前就做好软件产品认证。快的话1个月搞定,拿到这个证书后即便是一般纳税人也可以享受3%的增值率(超过3%的部分即征即退)。

  1. 研发费用加计扣除是什么?

这是能帮企业省所得税,例如,一个公司一年的研发费用是100万,做了研发费用加计扣除后,研发费用就可以按照150万来计算。就等于说多了50万的成本,自然利润就少,所得税就了。

  1. 最后来说企业所得税

除了上面说的研发费用加计扣除,其实我们都知道软件企业哪来多少成本,无非就是人员成本,那么如果这样,你年底的所得税就会很可怕了。净利润的25%,这种情况下,可以在有税收优惠的地区注册一家个人独资企业,不需要缴纳企业所得税,个人所得税进行核定征收,完美解决成本问题,比如江苏徐州市高新区税收优惠政策:只要将企业注册在江苏徐州市工业园区(注册式,不用实地办公),两种方式:

  • a、有限公司(一般纳税人)

增值税根据地方财政所得部分的50%-70%予以财政扶持奖励;企业所得税按照地方财政所得部分的50%-70%予以财政扶持奖励。

  • b、个人独资企业或者合伙企业(一般纳税人)

这种方式是对于缺乏或无法取得进项的企业,可以注册成个人独资企业或合伙企业对所得税进行核定征收,所得税税率可降低至0.5%-3.5%,其增值税还有返还奖励,通过纳税筹划解决企业成本、个人所得税、分红等问题。

发布于 2018-05-28

色情网站是如何盈利的

认真答题。

首先要区分两类色情网站:一类是 p***hub, red**be 这种,主打 free porn (免费色情). 另一种是 Babes, Twistys, Reality Kings, Wowgirls, WebYoung, NubileFilms 等等会员制的付费网站。

付费的很简单,直接填上你的信用卡,然后例如每月付 $29.99 或者半年 $109 或者按年付费。不少网站还是联盟性质,也就是说,你买了一家的会员,你在联盟里的其他网站自动也是会员。这种联盟的例子就是 Fake Agent, Public Agent, Fake Taxi, Fake Hospital, Fake Cop, Female Agent 这一系列。

至于免费的呢,除了广告,至少有三点可以盈利。

首先,免费网站一般只提供10分钟左右的类似于 preview (预览), 虽然说原版40多分钟的各个 scene 都会有,但是每个都剪得很短,然后拼接起来的10分钟。这样的话,感兴趣的人,看完预览想看原版,可能就会去付费的专题网站上订阅。

第二,例如 p***hub 作为一个2004年靠免费视频起家的网站,在2014年也推出了会员付费的功能。就是每月订阅 $9.99, 会员可以看 1080p, 免费的只有 720p. 另经

提醒,会员也有独家内容。

最后,这些免费的网站通常也会做为一个直播的平台。比如 P***hub Live Cams, 主播可以设置一个 goal, 比如 $200, 然后每个观众给些钱,比如 $5 $10, 然后达到了 goal 主播就开始表演。或者可以直接付钱 private show. 这些钱需要从平台中转,那么平台肯定也会盈利。

其实上面这些都无所谓,因为:

目前的色情产业已经被一个寡头公司垄断了。大多数免费网站 (包括 p***hub),都是属于同一家母公司 MindGeek.

MindGeek 前身叫做 Manwin, 2004年成立于加拿大, 2013年改的名字. MindGeek 经过这些年靠免费网站的广告收入野蛮生长,经过不断的吞并收购,目前总共运营着将近一百个网站,每天过亿的访问量,占用的带宽比 Facebook, Twitter, Amazon 都多。除了免费网站, MindGeek 也运营会员制的付费网站,例如上面提到的 Twistys, Babes, Reality Kings, 还有 Digital Playground 等,同时它本身就拥有各种 studio 来创作影视资源。

如人所说, MindGeek 不是 "a porn provider", 而是 "THE porn provider". 垄断寡头怎么可能担心盈利呢。

======================

我在讲一个公开而且合法的产业。这些公司并不注册在中国,也不对中国的用户提供服务,所以用中国的法律系统衡量是没有意义的。在美国,1973年 Miller v. California 一案,最高法院决定,所有通过 Miller test 的色情制品都是受宪法第一修正案(言论自由)保护的。至于其他国家的法律法规,请参考 Wikipedia -> Pornography by region | Wikiwand

作为一个做IT的(身在海外),我只是有随手Google的自由+有点好奇心罢了。不管看到什么,都会想研究一下商业模式,了解一下发展历史。叫我老司机就算了吧,我是专门去查了好多资料才来答题的,详情见最后 reference 部分。

======================

下图是不同国家和地区关于色情制品的法律法规(仅供参考,可能有误,不能作为专业法律材料),请遵守您所在地的法律法规。


  • 绿色:合法
  • 黄色:部分合法
  • 红色:不合法
  • 灰色:暂无数据

(如果一定要总结的话,可能是在 东亚文化圈+伊斯兰世界不合法,欧洲文明+前欧洲殖民地合法?)

======================

比起这些网站上的视频,更让我感兴趣的是这个:MindGeek 还在加拿大蒙特利尔招程序员呢,好像他家主要是PHP - 这都2017年了竟然还有人在用PHP??? (好了成功的转移了话题来撕吧)




======================

References:

  1. MindGeek: mindgeek.com/technology
  2. Economist: economist.com/news/inte
  3. The Verge: Pornhub taught us to expect free porn — now, can it make us pay?
  4. Slate: There Is a Porn Monopoly, and Its Name Is MindGeek
  5. Pornography by region | Wikiwand

=======================

Quora 相关问题:

  1. How do tube porn sites (e.g. tube8, pornhub) make enough money to cover servers/bandwidth?
  2. How much money does Pornhub make?
/* * @Author: your name * @Date: 2016-09-06 00:00:00 * @LastEditTime: 2020-03-17 18:29:35 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \htdocs\usr\themes\default\footer.php */