CrazyAirhead

疯狂的傻瓜,傻瓜也疯狂——傻方能执著,疯狂才专注!

0%

10.8 写作作业:《微信互联网平民创业》之《13. 打造广场之前如何打地基?》

知识点

如果说,微信朋友圈是个「大屏幕」,那么,微信通讯录就好像是「挂着那块大屏幕的承重墙」;如果说,微信是个「大广场」,那么,微信通讯录就好像是「那广场的地 面」…… 那么,请问,「地基」是什么呢?

你这个人才是真正的地基啊……

不仅从商业⻆度,更是从人生⻆度,这个问题有个最硬核的标准答案:

成为一个值得信赖的人。

坚持这样的原则、坚守这样的底线,其实根本就不需要得罪人,不需要触碰政治红线, 更不需要「卧薪尝胆」什么的,甚至,干脆就不可能因此与任何人发生冲突,只需要付出时间和精力,努力与自己死磕,甚至拼命。

虽然「有原则有底线」其实可以并不难,但,有一点是非常难的,也只能很难很难好, 那就是不仅要「有原则有底线」,还要「⻓期有原则有底线」—— 反正,「⻓期」两个 字,放在任何地方,古今中外,都是少有人能够做到的。

所谓的「信赖」,是「信任」+「依赖」。那,那些信任你的人凭什么竟然会「依赖」你呢?首先,没有信任,就不可能有依赖。而后,如果你是有原则有底线的值得他人信任的人,再加上另外一点就够了:

专业

—— 那么,「信任」你的人会进而「信赖」你。

所谓的「专业」或「突出」只是一个习惯而已,一个可以养成的习惯。很小的时候,我父亲教我说,「你要学会时不时做出让大家佩服的事情。」—— 然后这句话我受用终生…… 所以才会有很多事情发生。

记住,无论做什么事情,都应该更「专业」一点 —— 只要养成这个习惯就好。其实, 「比大多数人更专业」实在是再简单不过的事情,不管做什么,养成以下三个好习惯:

  • 开始之前做足准备工作;
  • 过程之中全力以赴;
  • 结束的时候做足收尾工作……
阅读全文 »

10.7写作作业:《微信互联网平民创业》之《12. 微信传播机制独特在哪里?》

知识点

微信视频号的内容传播方式,以及它的推荐算法,都与看起来差不多的其它短视频平台

不同 —— 这个巨大的差异来自于它的底层: 微信有全网唯一最全的熟人社交关系网络。

理论上,如果你的内容竟然被传播到六度人脉,那么,你的内容(或者说,干脆是你本 身)已经触达了整个世界。

阅读全文 »

10.6写作作业:《微信互联网平民创业》之《11. 平民如何做好视频号内容?》

知识点

去中心化。微信视频号的最重要特征之一就是它的“去中心化”属性。平民么,只有在“分布式网络”里才有真正属于自己的机会。

平民本色。想要做好视频号,最重要的应该排第一名的就是平民本色。你的本色就是你的特色,你的本色和特色就是你的优势 —— 不要去模仿他人,不要去跟⻛,保持本色才是最大的⻓期核心竞争力。

优质内容。吸引人的,永远不是拍摄技术本身,永远是内容,准确地讲,是优质内容;更准确地讲,是优质内容所传递的真正价值。

价值导向。价值导向让我们提取出这其中最为重要的关键字:有趣、有用

阅读全文 »

背景

写作练习标注工具挂在1核2G的阿里小主机上,除了速度慢点一直还算运行稳定。但最近有使用者反馈不能访问,于是登录服务器,发现MySQL的容器的没有运行,而且启动一段时间后MySQL的容器又会停止。

通过简单分析,是资源不足引起的,于是调整了下MySQL和Docker的配置。

阅读全文 »

10.5写作作业:《微信互联网平民创业》之《10. 连本地内容都做不好咋办?》

向上总是竞争越来越惨烈的;

向下总有越来越开阔的空间……

退而求其次,再退而求其次,基于“长期价值”,找到适合自己的定位和机会。

“客户终生价值”(Customer Lifetime Value,简称CLV)

所谓“客户终生价值”就是指你在一个购买你的商品或者服务的客户身上一辈子能赚到的利润。

最终利润=CLV*客户数量

然后想到刘润《商业洞察力》里讲的“销售漏斗公式”:

销售=流量*转化率*客单价*复购率

然后再细看一下,这个两个公式居然是一样的。

CLV=客单价*复购率。

客户数量=流量*转化率。

今天和一个外贸的朋友聊天,他说,现在客户会先试个小单,如果一次产品不好,赔钱能解决倒还事小,很可能是这个客户再无机会了。这种情况客户终生价值就很小了。

背景

使用最新版本vue-typescript-admin-template进行项目二次开发,其对应的开发文档没有描述如何配置VS Code调试。
自己在取消Mock后,对接服务端时,碰到了登录后无法调整首页的问题,配置了调试也不能准确定位,提示的错误提示不能明确问题出在哪里。后经过同事的帮忙和自己的尝试最终定位问题,于是整理了本文用于记录VS Code的调试配置。

配置VS Code 调试

根据vue官方文档在 VS Code 中调试,以下内容是对自官网文档的摘录。

先决条件

安装VS Code的Debugger扩展Debugger for Chrome

在浏览器中展示源代码

在可以从 VS Code 调试你的 Vue 组件之前,你需要更新 webpack 配置以构建 source map。做了这件事之后,我们的调试器就有机会将一个被压缩的文件中的代码对应回其源文件相应的位置。这会确保你可以在一个应用中调试,即便你的资源已经被 webpack 优化过了也没关系。

因为使用的是Vue CLI 3,需要设置并更新vue.config.js内的 devtool property:

1
2
3
4
5
module.exports = {
configureWebpack: {
devtool: 'source-map'
}
}

从 VS Code 启动应用

点击在 Activity Bar 里的 Debugger 图标来到 Debug 视图,然后点击那个齿轮图标来配置一个launch.json的文件,选择 Chrome:Launch 环境。然后将生成的 launch.json 的内容替换成为相应的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "vuejs: chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}/src",
"breakOnLoad": true,
"sourceMapPathOverrides": {
"webpack:///src/*": "${webRoot}/*"
}
}
]
}

问题代码

经过以上配置是可以做调试了,但很多时候断点的位置不对,给代码跟踪造成问题。比如:按F10时,应该往下一行,但断点位置跳来跳去;if语句也无法断点,提示unbounded breakpoint,调试的时候断点就跑类名上去。

user.ts文件

虽然不知道具体的原因,但还是能把问题的主函数定位出来。然后在同事的提醒下开始逐行写日志,定位问题是data.user,返回的数据没有user属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Action
public async GetUserInfo() {
if (this.token === '') {
throw Error('GetUserInfo: token is undefined!')
}

const { data } = await getUserInfo({ id: this.id })
if (!data) {
throw Error('Verification failed, please Login again.')
}

const { roles, name, avatar, email } = data.user
// roles must be a non-empty array
if (!roles || roles.length <= 0) {
throw Error('GetUserInfo: roles must be a non-null array!')
}

this.SET_ROLES(roles)
this.SET_NAME(name)
this.SET_AVATAR(avatar)
this.SET_EMAIL(email)
}

于是只能继续检索文档,其中的两篇文章对我帮助比较大:

最终配置

调整babel.config.js文件

根据《vue 在 vscode 中断点调试问题》的描述是不能断点在async await的代码上,自己验证的情况是不加也可以了。因为自己对前端不熟悉,为了保险起见,还是统一加上的好。

1
2
3
4
5
6
7
8
9
10
11
module.exports = {
"env": {
"development": {
"sourceMaps": true,
"retainLines": true,
}
},
presets: [
'@vue/cli-plugin-babel/preset'
]
}

调整vue.config.js文件

使用官方的配置就可以了,也可以按下面的方式进行调整,打开注释就可以了。

1
2
3
4
5
6
7
// https://webpack.js.org/configuration/devtool/#development
// Change development env source map if you want.
// The default in vue-cli is 'eval-cheap-module-source-map'.
config
.when(process.env.NODE_ENV === 'development',
config => config.devtool('source-map')
)

调整launch.json文件

调整sourceMapPathOverrides的配置,主要是给自己编写的代码打断点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "vuejs: chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}/src",
"breakOnLoad": true,
"sourceMapPathOverrides": {
"webpack:///./src/*": "${webRoot}/*",
"webpack:///src/*": "${webRoot}/*",
"webpack:///*": "*",
"webpack:///./~/*": "${webRoot}/node_modules/*"
}
}
]
}

遗留问题

如果像data.user这样发生异常时,断点的位置还是会出现错乱的情况,暂时不知道如何调整。

10.4写作作业:《微信互联网平民创业》之《9. 不能卖货也不能卖课咋办?》

让我向你介绍一个任何时候对平⺠都有意义、都非常实用的策略吧,这个策略一共四个字(哈哈!):

退而求其次

做软件项目的时候,一开始规划得高大上,基本上能想到的技术,酷炫的功能都写到方案里了,项目拿下来再说。但最终因技术不过关,人力不足,资金不够,往往只能做个半成品,想用吧,用不了,想扔吧,合同在那,想换吧,时间不多了,于是只好硬着头皮,删删减减,继续往下开发,然后好不容易凑个产品出来交付,真正的坑才开始,每天都有处理不完的BUG,用不顺畅的功能。如果一开始没规划那么多,反而更容易看到成果,把产品做得出彩,现在出做产品是先出原型,出MVP就是退而求其次。

我认为这个策略会对所有平⺠⻓期有效:

做本地内容

当然,这样的选择背后,实际上还有更为深刻的决策支撑:

对平⺠来说,微信互联网商业生态,并不是成为领袖的机会,而是成为服务者的机会!

—— 这才是更有价值的选择!

不同的地区有不同的需求和内容,于是对不同地区的人可以做的不同的本地内容,基于多样性的角度,做小众软件,定制化软件也是可以的。

10.3写作作业:《微信互联网平民创业》之《8.问问自己真的适合卖课吗?》

在微信互联网这个生态之中,现在能卖的东⻄可以分为两种:

  • 实物商品
  • 虚拟商品

那么,虚拟商品除了服务之外,最常⻅的就是各种「课程」。

更看重⻓期价值的好商人,不喜欢赚「靠信息不对称才能赚到的钱」。

难道说我们就不能卖课了嘛?答案是,能!当然能!—— 只不过,要卖真正有价值的课。

其实读这个章节的时候,自己是比较矛盾的,除了卖课我还能选什么呢?卖课自己好像也没有卖出去呀,比如写作课。

首先得到和极客时间,用最简单的方式理解是在卖课,而且卖得很成功的。然后我也看到,就算是罗永浩这样的大V,在卖货的时候对商品也是精挑细选的。

于是我是这样理解的,我通过学习极客时间的课程,实际使用和写读书笔记,推广相关的课程这样的卖课思路应该是可以的,我也通过写读书笔记成交过一两单。但对应到上个章节《为什么总是要更重视选择?》,我写极客时间的读书笔记是不是思考的惯性呢?

之前也订阅了GitChat,使用的是微课和微信群的方式,但是最终发现GitChat上对作者,做课程的质量控制不够,慢慢的上面的课也就没怎么看,后面也就没有订阅了。

10.2写作作业:《微信互联网平民创业》之《7.最基本的决策方法是什么?》

“以终为始”的思考方式,该思考方式背后的逻辑是“长期价值”。

这个单子可以很⻓很⻓…… 每一个问题都值得认真思考。不停地罗列,不停地琢磨,不 停认真记录答案,不停地改进答案…… 如此这般,若是你竟然没有任何进步,那还真的是⻅⻤了吧?

看到一个思考的差距,线性思维与多维度思考。

列这个清单的时候可以说是一个多维度思考的过程。如果不是看文章,不知道还需要思考这些内容,可能后面即使做了也是大概率的做不好。自己想得最多的是“我要学习怎样的专业知识”,然后怎么学。

就拿跑步来说,我一开始是把里程变小,跑一圈就给自己鼓鼓气还剩几圈,后来用了Keep,跑的时候有提醒最近一公里的用时,于是自己就通过调整速度来控制自己的节奏,状态好些就控制在6分多,状态不好时就控制在7分多,后面跑的时候想的是提高速度,有了改进的方向,反而更容易跑长一些。

在看极客时间,郑晔老师的《10x程序员工作法》,其中用埃隆·马斯克做了个例子。他的太空探索公司 SpaceX有一个目标是,送 100 万人上火星。

美国政府曾经算过一笔账,把一个人送上火星,以现有技术是可实现的,需要花多少钱呢?答案是 100 亿美金。如果照此计算,实现马斯克的目标,送 100 万人上火星就要 1 万万亿。这是什么概念呢?这笔钱相当于美国 500 年的 GDP,实在太贵了,贵到连美国政府都无法负担。

马斯克怎么解决这个问题呢?他的目标变了,他准备把人均费用降到 50 万美元,也就是一个想移民的人,把地球房子卖了能够凑出的钱。原来需要 100 亿美金,现在要降到 50 万美金,需要降低 2 万倍。

当然,降低 2 万倍依然是一个听起来很遥远的目标。所以,我们关注的重点来了:马斯克的第二步是,把 2 万分解成 20×10×100。这是一道简单的数学题,也是马斯克三个重点的努力方向。

先看“20”:现在的火星飞船一次只能承载 5 个人,马斯克的打算是,把火箭造大一点,一次坐 100 人,这样,就等于把成本降低 20 倍。如果你关注新闻的话,会发现 SpaceX 确实在进行这方面的尝试。

再来看“10”:马斯克认为自己是私营公司,效率高,成本可以降到十分之一。他们也正在向这个方向努力,SpaceX 的成本目前已经降到了同行的五分之一。

最后的“100”是什么呢?就是回收可重复使用的火箭。如果这个目标能实现,发射火箭的成本就只是燃料成本了。这也就是我们频频看到的 SpaceX 试飞火箭新闻的原因。

10.1写作作业:《微信互联网平民创业》之《6. 为什么总是要更重视选择?》

学到的点:

面对⼀个新机会(甚⾄是很⼤的机会)的时候,他们并没有做任何选择,他们只是「凭着惯性」继续⾃⼰原来的⽣活与⼯作……
—— 这是最常⻅的且实际上影响最⼤的错误,并且这个错误⾮常隐蔽,导致绝⼤多数隐蔽,导致绝⼤多数⼈对⾃⼰正在犯的错误毫⽆察觉。

去年离职要和同事一起做的时候,觉得做医疗方向的,大家都要沉淀,看似自然,看似做了个重要的决定(从确定到不确定),实际上是一个毫无察觉的错误,更像是举着火把穿过火药厂。
现在视频号已经开通,自己也没准备好。试着发了两条,一个是用钱和时间赚钱的图片,一个拍小孩玩的,尝试使用iMovie的。

选择最重要—— 选择⽐什么都更重要。然⽽,尽管选择如此重要,可⼈们总是忽视它的作⽤,要么不选,要么假选…… 当然,最可惜的是,你也看到了,虽然真的选了却竟然选错了!。

最近的一个决定需要很久才能看到实际的区别。但我一直到在想按这个资源我敢不敢投入box,那它的十分之一呢?似乎知道自己选错了,但又不得不选。甚至觉得自己得了创伤应激障碍,写作作业也没法及时完成,这几天恢复工作,自己才逐步把精力从这件事上脱离出来。