首页 信托列表文章正文

江油鸿飞2020债权转让计划

信托列表 2020年08月01日 22:13 4 信托研究院
【近期信托列表】 【近期政府债列表】
江油鸿飞2020债权转让计划
           

本文将会介绍Docker相关的内容,思维导图如下

思维导图

           

在这里插入图片描述初识Docker什么是Docker

Docker是一个开源的 ,轻量级的应用容器引擎,基于Go语言开发,用于出创建 ,管理和编排容器,和VM相比,开销更小 ,性能更高 ,但是,相比较虚拟机而言,隔离比虚拟机更弱 ,完全不能取代虚拟机,但是可以把相关的依赖进行打包,发布到一个轻量级的 ,可移植的任何的Linux系统,完全实现虚拟化操作Docker从17版本以后分为社区版本和企业版本 。

Docker应用场景

Web应用程序的自动化打包和发布

自动化测试环境的持续集成和发布。

在服务型环境中,部署和调整数据库或者其他后台应用。

重新编译新的PaaS环境

优点

优点有如下几点

简化程序可以让开发者把应用打包到一个可移植的容器中 ,实现应用的发布简化 。

避免选择恐惧相比较原先的安装过程的复杂,docker进一步的简化了程序的安装。

节省开支开支可以进行节省,不需要过高的硬件成本。

官网

hub.docker.com

Docker 核心概念

本小节介绍Docker的核心概念

核心概念

镜像

什么是镜像 ,镜像是一个特殊的文件系统,包含了程序运行的时候需要的资源和环境,镜像不包含任何动态的数据 ,在构建之后 ,数据也不会发生改变 。至于镜像的层,是由于镜像包含root文件系统,导致体积过大 ,这里采用了Union FS技术,采用层式结构,每一层都是对上一层的更改 ,这样就完成了镜像体积的缩小 。

容器

容器和镜像的关系就像类和实例的关系一样,容器是进行运行时的实体,容器可以实现对镜像的操作 ,启动,停止,删除等。容器的实质是京城 ,但是这个进程拥有自己的ID空间,运行在隔离的区域内。镜像实现的是分层处理,那么对于存储来说 ,使用的也是分层夯实 ,随着产生而产生,随着消亡而消亡 。

仓库

镜像构建完成以后,相当容易在宿主机上运行 ,如果需要在其他服务上使用这个镜像,就需要仓库,用来临时保存这些镜像文件。仓库就是起这个作用的。

Docker daemon

这个是用来负责监听Docker API请求 ,来实现对Docker的对象的管理 。负责镜像,容器,网络 ,卷等之间的交互

Docker Client

这个是Docker客户端和Docker交互的主要方式,使用docker run 命令的时候,接收命令的就是docker Client

Hello World

安装docker

使用脚本进行安装使用官方安装脚本自动安装安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

手动安装Docker

1.选择国内的云服务商 ,这里选择阿里云为例

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

2.安装所需要的包

sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

3.添加使用 HTTPS 传输的软件包以及 CA 证书

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates

4.添加GPG密钥

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

5.添加软件源

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

6.添加成功后更新软件包缓存

sudo apt-get update

7.安装docker

sudo apt-get install docker-engine

8.启动 docker

sudo systemctl enable docker

sudo systemctl start docker

实现Hello World

$ docker run ubuntu:15.10 /bin/echo "Hello world"

Hello world

这样就运行了一个容器。输出Hello World

镜像

要想学习一个内容,需要先从最基本的命令,使用部分开始最为核心的是 images 命令

基本命令

docker search

docker search 用于搜索线上镜像仓库 ,这样就可以搜索出在Docker Hub上所有带redis的公共的可用镜像。

【root@CentOS ~】# docker search redis

INDEX       NAME                                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

docker.io   docker.io/redis                                Redis is an open source key-value store th...   5472      【OK】

docker.io   docker.io/bitnami/redis                        Bitnami Redis Docker Image                      82                   【OK】

docker.io   docker.io/sameersbn/redis                                                                      68                   【OK】

docker.io   docker.io/tenstartups/redis-commander                                                          32                   【OK】

docker.io   docker.io/hypriot/rpi-redis                    Raspberry Pi compatible redis image             31

docker.io   docker.io/kubeguide/redis-master               redis-master with "Hello World!"                25

docker.io   docker.io/kubeguide/guestbook-redis-slave      Guestbook redis slave                           20

docker.io   docker.io/redislabs/redis                      Clustered in-memory database engine compat...   15

docker.io   docker.io/webhippie/redis                      Docker images for redis                         9                    【OK】

docker.io   docker.io/arm32v7/redis                        Redis is an open source key-value store th...   7

docker.io   docker.io/rediscommander/redis-commander       Alpine image for redis-commander - Redis m...   7                    【OK】

docker.io   docker.io/oliver006/redis_exporter              Prometheus Exporter for Redis Metrics. Su...   5

docker.io   docker.io/rtoma/logspout-redis-logstash        Logspout including Redis adapter for sendi...   5

docker.io   docker.io/centos/redis-32-centos7              Redis in-memory data structure store, used...   3

docker.io   docker.io/dynomitedb/redis                     Redis backend for DynomiteDB.                   2                    【OK】

...

docker pull

docker pull 拉取服务器镜像仓库里的镜像 。

【root@CentOS ~】# docker pull redis

Using default tag: latest

Trying to pull repository docker.io/library/redis ...

latest: Pulling from docker.io/library/redis

be8881be8156: Pull complete

d6f5ea773ca3: Pull complete

735cc65c0db4: Pull complete

ff89c30e4d8c: Pull complete

59bf782a86b3: Pull complete

ce8aaa9fe90a: Pull complete

Digest: sha256:096cff9e6024603decb2915ea3e501c63c5bb241e1b56830a52acfd488873843

Status: Downloaded newer image for docker.io/redis:latest

不指定版本,默认会下载最新的一个版本。由于官方的镜像在国外 ,有时网速较慢,所以推荐下载国内的镜像,比如阿里云 ,网易云。

docker push 推送本地镜像到服务器 。

docker rmi

使用该命令可以实现对docker 镜像的删除“docker rmi $(docker images -q) ”命令批量删除镜像。

【root@localhost ~】# docker rmi $(docker images -q)

Error response from daemon: conflict: unable to delete 99a68c0f45ff (must be forced) - image is being used by stopped container a203e0ca18d9

Error response from daemon: conflict: unable to delete 598a6f110d01 (must be forced) - image is being used by stopped container 35732ecdd9d9

Error response from daemon: conflict: unable to delete 2619ee45e83f (must be forced) - image is being used by stopped container 3f0594d6cde9

Error response from daemon: conflict: unable to delete 4c108a37151f (must be forced) - image is being used by stopped container cd5b845cf72f

Error response from daemon: conflict: unable to delete 9f38484d220f (cannot be forced) - image has dependent child images

上面执行的命令抛出了错误,这是因为镜像有容器在使用,不能删除 ,需要使用 -f 强制删除。如下:

【root@localhost ~】# docker rmi $(docker images -q) -f

Untagged: myimage:latest

Deleted: sha256:99a68c0f45ffdb98dd0389e179d4af44b2ba390c12f4bd57b21b30824852cb43

Deleted: sha256:3a782dfda07e34c2031a06663204c80ea02116702dfac0ca7e9a1aa98e19c918

Untagged: redis:latest

Untagged: redis@sha256:74ee482ee42e7acb000e7fc5f32d292fc056464403834b0790a6e46175ff3ff5

Deleted: sha256:598a6f110d01ba2d8086011cf70571b4a52a532e25189a70042171ed9d700b50

Untagged: tomcat9:latest

Deleted: sha256:2619ee45e83f1363266d6c1447ad78f0f4df2f0375fd1f62b098f19826dc0056

Deleted: sha256:5740e6bcb807ec726a038a4dcfdfae934df6eb9c9e3a2df67233091f67503cdb

Deleted: sha256:b1809ccfbedadc087131259560568ca64516620ef62e83af87d661e515f84c9f

Deleted: sha256:dedd306660ce0b42ba33a857b0799c4dd471e878039e1f91cc2f49e48f094e0c

Deleted: sha256:ef484938826ff0de3c594f2d8d0f5ccf54860bf3f3e078b5cfa4b93020d4d25b

Deleted: sha256:4c44e8c93b97e03d4366448ac867170f32e3f007d90b349776693a764f7d0dd8

Deleted: sha256:497cbba7548726f34236a70d343d735bc5ae94da61d259dc86837279034cdff1

Deleted: sha256:0668f8a9f0010a6d1d16713314bc13bdef37b23b6bb5185c312ac5b74b626b6d

Deleted: sha256:a8fc032fe78b62f2f5e97d77ab6b87a91aefde2c2df292f3a975b1bea995ba58

Deleted: sha256:e88d9fb84bcd05157e1a602746b3f1acb50968e1a78322c714861d38fb317e1e

Deleted: sha256:215720ff5c7aff6a0b56a9b560268a3c4ab974267d6698c3233c25a71fda472c

Deleted: sha256:d9079b92bfabd395c4a13cb5f57fad42ec30ed9489bdb82ab00f1769770de4c7

Deleted: sha256:0eea6afa060b0f10f0eeb031969b827c6bbbebe71cef4b781fa2098ce74f05dc

Deleted: sha256:3afbe94bccd2ee5d722a866e3844ebbd92211bf1eb71fad17ec7dc75ebb9b583

Deleted: sha256:8cd1a6e0430e9b30b48b9a187074da00593b6f37ecd7f20891e685579f8651d4

Untagged: ubuntu:latest

Untagged: ubuntu@sha256:9b1702dcfe32c873a770a32cfd306dd7fc1c4fd134adfb783db68defc8894b3c

Deleted: sha256:4c108a37151f54439950335c409802e948883e00c93fdb751d206c9a9674c1f6

Untagged: centos:latest

Untagged: centos@sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3c

Deleted: sha256:9f38484d220fa527b1fb19747638497179500a1bed8bf0498eb788229229e6e1

【root@localhost ~】#

这样就完成了Docker image 系列的相关命令

基础知识

镜像存储位置

既然是说镜像存储的位置,那么应该包含:镜像层文件和镜像 json 文件 。如一个 ubuntu:14.04 镜像,包含 4 个镜像层 ,在 aufs 存储驱动的情况下,在磁盘上的情况可以如以下图所示:

查看镜像层组成:

我们可以通过命令 docker history ubuntu:14.04 查看 ubuntu:14.04,结果如下:

           

在这里插入图片描述镜像层文件内容存储

Docker 镜像层的内容一般在 Docker 根目录的 aufs 路径下 ,为 /var/lib/docker/aufs/diff/,具体情况如下:

           

在这里插入图片描述

图中显示了镜像 ubuntu:14.04 的 4 个镜像层内容,以及每个镜像层内的一级目录情况 。需要额外注意的是:镜像层 d2a0ecffe6fa 中没有任何内容 ,也就是所谓的空镜像。

镜像 json 文件存储

对于每一个镜像层 ,Docker 都会保存一份相应的 json 文件,json 文件的存储路径为 /var/lib/docker/graph,ubuntu:14.04 所有镜像层的 json 文件存储路径展示如下:

           

在这里插入图片描述

除了 json 文件 ,大家还看到每一个镜像层还包含一个 layersize 文件,该文件主要记录镜像层内部文件内容的总大小。既然谈到了镜像 json 文件,为了给下文铺垫 ,以下贴出 ubuntu:14.04 中空镜像层 d2a0ecffe6fa 的 json 文件:

           

在这里插入图片描述容器基础命令docker container run

该命令用于启动新的容器,用相关的命令作为参数,用于启动和创建相关的容器镜像 。

$ docker container run -it --name test ubuntu /bin/bash

执行此命令会在前台生成一个Base Sell 输出窗口 ,并可以进行相关的链接

-it: 使容器具备交互性并与终端进行连接

--name: 给容器命名

Ctrl-PQ

进入容器的执行状态以后,使用该命令可以断开和容器的链接,并保持容器的后台运行

docker container ls

该命令用于列出所有运行状态的容器 ,并用标记进行标记,并返回相关的容器的id

$ docker container ls 【-a】 【-q】

docker container exec

该指令允许用户在运行状态的容器中,启动一个新进程。该命令在将 Docker 主机 Shell 连接一个运行中容器终端时非常有用。

docker container exec -it  bash

执行上述命令后会在容器内部启动一个 Bash Shell 进程 ,并连接到该Shell 。为了时该命令生效 ,用于创建容器的镜像必须包含 Bash Shell。

docker container stop

该命令会停止运行中的容器,并将状态置为 Exited(0) 。该命令将发送 SIGTERM 信号给容器内 PID 为 1 的进程, 如果进程没有在 10s 之内得到清理并停止运行 , 则会接着发送 SIGKILL 信号强制停止容器 。

$ docker container stop

docker container start

该命令会重启处于停止(Exited)状态的容器。

$ docker  container start

docker container rm

该命令会删除已停止运行的容器,-f 参数会强制删除已运行的容器。但按照规范,推荐先停止容器 ,再执行此命令删除容器 。

$ docker container stop

$ docker container rm

docker container inspet

该命令会显示容器的配置细节和运行时的情况。

$ docker container inspect

备注

执行上述命令时也可以省略 container 字段, 直接执行如:docker start/stop/run/inspect ...

详细知识点

这里将会手动的实现一个基本的容器 通过对一个进程隔离,限制 ,以及rootfs,这三种方式。实现对一个基本进程的容器化

进程隔离

这里我们先观察一下已经搭建好的集群容器的情况:

# kubectl get po -o wide

NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE

business-manager-666f454f7f-bg2bt   1/1     Running   0          27s     172.30.76.4   192.168.0.21

business-manager-666f454f7f-kvn5z   1/1     Running   0          27s     172.30.76.5   192.168.0.21

business-manager-666f454f7f-ncjp7   1/1     Running   0          27s     172.30.9.4    192.168.0.22

data-product-6664c6dcb9-7sxnz       1/1     Running   0          7m17s   172.30.76.2   192.168.0.21

data-product-6664c6dcb9-j2f48       1/1     Running   0          7m17s   172.30.76.3   192.168.0.21

data-product-6664c6dcb9-p5xkw       1/1     Running   0          7m17s   172.30.9.3    192.168.0.22

上图可知,我们有两个Pod跑在192.168.0.22这台宿主机上 ,pod里实际跑的正是我们打包的docker容器 。我们在宿主机上执行docker ps,就可以看到上述两个容器(k8s还将DNS等其他模块的部分组件调度在这台机上,所以docker ps显示的容器不止2个):

# docker ps

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS

e411e063c652        reg.miz.so/aura/business-manager   "/bin/sh -c 'nohup .…"   31 minutes ago      Up 31 minutes

e081a599315c        kubernetes/pause                   "/pause"                 31 minutes ago      Up 31 minutes

e07627a10c38        reg.miz.so/jo-demo/data-product    "/bin/sh -c 'echo 19…"   37 minutes ago      Up 37 minutes

6ff85402a1da        kubernetes/pause                   "/pause"                 38 minutes ago      Up 38 minutes

1c92cc7a7f44        ist0ne/exechealthz-amd64           "/exechealthz '--cmd…"   3 hours ago         Up 3 hours

937128a888f2        ist0ne/dnsmasq-metrics-amd64       "/dnsmasq-metrics --…"   3 hours ago         Up 3 hours

4e926555a6f2        kubernetes/pause                   "/pause"                 3 hours ago         Up 3 hours

接下来我们进入其他一个容器执行ps ,查看容器里都有些什么进程:

# kubectl exec -ti business-manager-666f454f7f-ncjp7 sh

$ ps -efj

UID         PID   PPID   PGID    SID  C STIME TTY          TIME CMD

root          1      0      1      1  0 14:47 ?        00:00:03 ./business-manager -conf /business-manager/config/config.json

root         22      0     22     22  0 15:25 pts/0    00:00:00 sh

root         28     22     28     22  0 15:29 pts/0    00:00:00 ps -efj

进入business-manager这个应用的容器内部 ,ps查看所有的进程,pid=1的是我们的应用程序,pid=22和28的分别是我们这一步操作执行的sh程序和ps程序 。了解linux系统的同学应该知道 ,pid=1的不是内核的init进程吗(不一定非得是这个进程,但内核总得维护一个“1号”进程,它的作用是作为父进程来启动其他的进程 ,并且接收那些被应用“遗弃”的孤儿进程)?那么init进程哪去了呢?其实上面显示的1号进程,是docker容器的障眼法,这个business-manager进程就是跑在宿主机上的一个特殊的进程 ,我们查看下宿主机的真实进程情况:

# ps -efj|grep business-manager

root      38156  38138  38156  38156  0 14:47 ?        00:00:03 ./business-manager -conf /business-manager/config/config.json

root      47393   3471  47392   3471  0 15:34 pts/2    00:00:00 grep --color=auto business-manager

上面这个pid=33156的才是宿主机上对应business-manager容器的真实进程。容器(指容器里的应用),是linux系统里的一个特殊进程,docker通过linux namespace技术对应用进程进行了隔离 ,使的应用只能看到指定的有限的系统信息,这就使应用“以为 ”自己在一个独立的操作系统环境下。

Linux namespace,跟K8S、C++的namespace的功能是类似的 ,目的都是将一组资源限定在一个有限的可见范围内 。这些隔离属性 ,基本涵盖了一个小型操作系统的运行要素,包含主机名 、网络、文件系统等。要使用上述namespace很容易,在调用内核api clone()函数创建新的进程时 ,加上上述参数即可。这正是Docker在创建容器(现在大家知道了,就是创建我们的应用程序进程)时所要做的事情 。

进程限制

Linux的Cgroup机制,是Docker利用的又一大利器。上一节我们知道 ,容器其实就是宿主机里的一个被框进来的进程,它不能看到外面,但它与宿主机上其他的进程共享了内核资源 ,所以接下来我们需要对它所能使用的资源作限制,这就是Cgroup机制所提供的。Cgroup的使用,比较简单粗暴 ,它利用一组目录和文件的组合,来实现配置和控制 。这些目录和文件在/sys/fs/cgroup目录下:

# cd /sys/fs/cgroup/

# ls

blkio  cpu  cpuacct  cpu,cpuacct  cpuset  devices  freezer  hugetlb  memory  net_cls  net_cls,net_prio  net_prio  perf_event  pids  systemd

上述文件夹各自对一些资源进行控制。要使用cgroup很简单,在对应目录下创建一个新的文件夹 ,cgroup会自动为我们生成相关的一些配置文件:

# cd cpu

# mkdir JoTest

# cd JoTest/

# ls

cgroup.clone_children  cgroup.procs  cpuacct.usage         cpu.cfs_period_us  cpu.rt_period_us   cpu.shares  notify_on_release

cgroup.event_control   cpuacct.stat  cpuacct.usage_percpu  cpu.cfs_quota_us   cpu.rt_runtime_us  cpu.stat    tasks

我们可以修改period和quota文件 ,配置进程能够占用的CPU百分比,然后将需要应用这组限制的进程的ID写入tasks文件,即可完成cpu的限制。

rootfs

Namespace对应用进行了隔离 ,而cgroup则完成了资源的分配和限制,现在一个针对应用程序的沙盒已经成型 。接下来就是考虑开篇提到的一致性问题了?一致性主要是为了解决应用跑在不同的宿主机上不受宿主机环境的差异影响的问题。容器技术出来之前,手动或脚本迁移应用的时候 ,往往会遇到新的宿主机缺少某个关键组件、或是某些依赖版本差异甚至是操作系统内核差异等因素导致的不一致问题。现在我们来看看docker是怎么解决这个问题的 。

对于单个应用程序进程来说,对环境的依赖,关键体现在对操作系统所提供的文件系统的依赖 ,所以docker所要做的就是通过以下3步给你一套想要的文件系统:

通过mount namespace将应用的文件系统隔离开

将应用所需要的文件系统(比如centos:7的所有文件)拷贝到某个目录D下

调用chroot将应用的根目录调整为目录D(mount namespace的隔离作用在这里体现出来了,chroot只对在当前namespace下的应用生效,应用在这个“根目录”下可以随便折腾 ,而不会影响到真实的宿主机根目录 。)

上面这3步所构造出来的文件系统,我们称之为rootfs(根文件系统)。应用程序执行“cd /"指令进入的根目录,将被限定在上述目录D下。下面我们简单验证一下这个rootfs 。这里我们在容器的根目录新建一个文件jo1 ,然后在宿主机上查找这个文件 ,定位到如下位置:

# cd /var/lib/docker/overlay2/b2231f9f15050ae8d609726d308c2ead60114df3fc5404a24c688d805d4a9883/merged/

# ls

anaconda-post.log  bin  business-manager  data  dev  etc  home  jo1  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

可以看到,上面这个文件夹正是我们的容器所在的“根目录”。

我们也可以用mount指令查看当前宿主机的挂载情况,限于篇幅 ,这里就不展开解析mount了,下面是mount的输出节选:

# mount|grep overlay2

overlay on /var/lib/docker/overlay2/be512d9faf97c7d860fa16ecc4ecd5057e12feffc8b0804115923f0795bb9f75/merged type overlay (rw,relatime,seclabel,lowerdir=/var/lib/docker/overlay2/l/ZSXN3J4UXRRBMRG3F3RNUZGWUB:/var/lib/docker/overlay2/l/2CCAOTBFIGCYNR73TQEE333CO6:/var/lib/docker/overlay2/l/6Y5GTV75CBUR4WORCMOHYJZQ7Y:/var/lib/docker/overlay2/l/VWENHOE7X3WDA4NK5P7DTTPSIX,upperdir=/var/lib/docker/overlay2/be512d9faf97c7d860fa16ecc4ecd5057e12feffc8b0804115923f0795bb9f75/diff,workdir=/var/lib/docker/overlay2/be512d9faf97c7d860fa16ecc4ecd5057e12feffc8b0804115923f0795bb9f75/work)

overlay on /var/lib/docker/overlay2/8a7546027e2e354bf0bba12600fdb6ac87c199d09589ba90952f28aed74d13b6/merged type overlay (rw,relatime,seclabel,lowerdir=/var/lib/docker/overlay2/l/KOZRXUFTWITQUNAKOZMWSYWTSH:/var/lib/docker/overlay2/l/2CCAOTBFIGCYNR73TQEE333CO6:/var/lib/docker/overlay2/l/6Y5GTV75CBUR4WORCMOHYJZQ7Y:/var/lib/docker/overlay2/l/VWENHOE7X3WDA4NK5P7DTTPSIX,upperdir=/var/lib/docker/overlay2/8a7546027e2e354bf0bba12600fdb6ac87c199d09589ba90952f28aed74d13b6/diff,workdir=/var/lib/docker/overlay2/8a7546027e2e354bf0bba12600fdb6ac87c199d09589ba90952f28aed74d13b6/work)

           

小明菜市场

推荐阅读

●学习 | Spring Cloud Config 从入门到精通

●明知 | js中类定义和类继承

●目标 | Node.js web 应用 Docker 化

●新知 | JavaScript 几种循环方式以及模块化的总结

           


江油鸿飞2020债权转让计划
被称为“年轻人第一只股票 ”的小米集团(01810.HK)在7月10日短暂站回17港元/股的发行价,结束近乎腰斩的尴尬境况 ,此变化令“90后 ”投资者李旷(化名)颇为兴奋——“终于解套了”。

参与小米集团上市打新的李旷一直背负着亏损的压力 。他对第一财经记者表示,虽然持续看好小米的未来,但这波股价回升后他并未继续持有 ,“解套后立马抛出了”。

短暂回踩17.5港元高点后,小米集团股价并未能维持强势,而是持续走低。截至发稿 ,小米股价为14.64港元,跌3.05%,总市值3531.07亿港元 。

           

除了股价问题外 ,更艰难的情况在于 ,疫情负面影响持续,5G时代下手机厂商扎堆国内贴身肉搏,小米手机销量重压之下发生下滑。摆在投资者面前的问题是——看好小米集团IoT(物联网)大趋势继续持有 ,还是谨慎看待小米手机业务走势?

二季度涨跌分化明显

7月27日, 知名市调机构Counterpoint发布《2020年第二季度国内智能手机市场报告》显示,2020年第二季度中国智能手机销售同比下降17% ,但销售环比增长9%,智能手机市场出现复苏迹象。依托智能手机厂商和运营商对5G的大力推广,5G手机在本季的销量占据整体销量的三分之一 ,即每卖出三台手机就有一台是5G手机 。

细分厂商中,华为整体市场份额达到46% 、vivo占16%、OPPO占15%、苹果占9%,小米也是9%。但具体到增长量数据上 ,二季度苹果手机环比销量大涨32%,华为涨14% 、vivo降29% 、OPPO降31%;排在第五名的小米手机下滑最多,降35%。

Counterpoint研究分析师Tang Flor表示:“华为仍是中国市场上表现最好的公司 ,本季度占据了46%的市场份额 。尽管整体市场增速放缓 ,华为仍实现了14%的同比增长 。中国已成为华为最重要的市场,借助高端的Mate 30和P40系列以及中端Nova 7系列,华为的5G产品组合快速增长。 ”

第一手机界研究院院长孙燕飚对第一财经记者表示 ,Counterpoint该份榜单反映出,经过疫情中国消费者的消费习惯发生了重大变化——线上购物的比重在迅速放大,这一点通过小米手机可以得到体现。二季度小米手机所占市场份额实际与过去差不多 ,跌幅相对小一点,但销量明显下降 。其背后有苹果手机与华为手机销量增长的冲击,以及智能手机整体市场的下滑。

而苹果手机销量大涨背后的原因 ,孙燕飚称,主要在于其加大了线上市场的合作空间。第一财经记者将京东、淘宝、苏宁等线上渠道iPhone11售价与苹果官网售价对比后发现,线上渠道商已经对iPhone 11采取了不同程度的降价措施 ,最多降价幅度达到20% 。

分析师认为,从去年年初开始,中国电商渠道开始对苹果部分机型采取降价措施 ,这也是受到国内手机市场激烈竞争的影响。新一轮iPhone的降价一方面是因为去除疫情期间的库存 ,另一方面也是为了苹果公司即将发布的新款手机做准备。

           

小米想重回第一很难

作为此次销量增长率跌幅最大的品牌,小米的创始人 、董事长雷军再次面临市场压力 。

自以“性价比”标签与“饥饿营销”策略杀入市场后,小米多年来一路看涨 ,直到2015年开始出现下滑,被华为、OV阵营反超。

2017年9月,小米召开会议 ,雷军表示小米手机要用两年半的时间将销量重新打回国内市场第一位置。时限已过,近三年时间跨度里,手机行业热点不断涌现 ,小米手机也将整体策略调整为冲击高端市场 。

今年5月20日,小米发布2020年第一季度财报,该季度小米总收入达人民币497亿元 ,同比增长13.6%,环比下跌12%;经调整净利润23亿元,同比增长10.6% ,环比下滑1.9%。其中 ,小米智能手机业务分支毛利率由去年同期的3.3%升至8.1%,收入占比由去年同期的61.7%降为61%,手机销量从27.9百万部涨为29.2百万部 ,ASP(average selling price 平均售价)因该季度发布5G及其他高端智能手机型号拉升至1038元。

小米集团总裁王翔表示,受疫情影响,公司在2月和3月的生产远低于市场预期 ,原材料运输也存在一定延缓,所以公司有一些原材料存货,并出现跌价 。随着产能恢复 ,问题已得到解决 。另据IDC统计,2020年第一季度小米智能手机连续十一个季度在印度保持出货量第一,市场份额达31.2%。此外 ,小米在中东和非洲地区的智能手机出货量也分别录得增长55.2%和284.9%。

           

境外收入首次达到小米财报总收入的一半,然而当下波动的国际市场环境给下一季度手机销量带来压力 。调研公司Canalys于7月17日发布一份数据报告显示,小米2020年第二季度在印度智能手机市场出货量530万部 ,占据31%的市场份额 ,但同比去年1030万部出货量减少了500万部。

变局之下,包括华为、一加等手机厂商已逐渐将重心移至国内,但国内已处于5G时代下新一轮白热化的行业竞争态势之中。

5G时代厂商会战

“尽管中国智能手机增速市场放缓 ,但中国OEM厂商加快了5G发展的步伐 。第二季度售出的智能手机中有33%支持5G,而在第一季度仅为16%。 ”Counterpoint资深分析师Ethan Qi 在谈到中国5G智能手机的发展时强调,“单月来看 ,6月份这一比例更高,售出的智能手机中有40%以上具有5G功能。”

其分析还认为,中国的5G智能手机市场已经非常稳定 ,HOVX(即华为 、OPPO、vivo和小米)占领了96%的市场 。“华为在5G智能手机销量中占据领先地位,占市场份额的60%,其次是vivo、OPPO和小米。”

2020年上半年国产手机累计出货6359.7万部 ,5G手机占出货总量的41.5%;6月总出货量为2863万部,5G手机出货量为1751.3万部,占比超过六成。从单品机型来看 ,6月中国市场5G手机销量前十名中 ,华为(含荣耀)占八席,OPPO占两席,前十名中没有小米手机的身影 。

7月23日 ,雷军发文称,小米计划5年投入500亿元资金规模,继续加大科技创新力度 ,使人工智能物联网(AIoT)成为贯穿小米智能生态全产品 、全平台、全场景的服务能力。

更早前,雷军便强调过5G时代的重要性。他称,小米的外部机遇来自于5G时代与AIoT时代 。5G时代来临 ,将会带动智能手机行业新一波的换机潮 。距离5G大规模商用,需要两到三年时间。AI时代的到来,是比移动互联网时代还要大至少一个数量级的超级机遇。

但艰难点在于 ,瞄准5G时代机遇的不仅小米一家 。华为荣耀、OV 、一加等诸多品牌在技术投入、渠道建设、品牌推广等方面不断下注,因此这考验着厂商们的全局意识 、资源调配能力 、研发投入程度以及对一二线城市之外市场的战略布局。

压力之下,小米也不再一味追求转型高端机型 ,而适时推出小米10青春版 ,将产品价格重新回落至2000元至3000元之间。与主打性价比的Redmi手机产品共同缓解小米手机整体销售与盈利压力,巩固现有消费群体 。

荣耀总裁赵明此前对第一财经记者表示,目前5G手机的普及仍然集中在一二线市场 ,二季度以后,整个5G进程开始加快,到了三四季度 ,5G的占比可能会达到整个手机市场的50%到60%,而年底时将接近70%左右。

针对下一季的发展预测,孙燕飚对第一财经记者表示 ,华为手机将重心挪到了中国市场之后,在线下线上齐头并进,因此形成大比例的销量上升。相对来讲 ,苹果的上升是基于线上市场降价促销得到市场的认可,但其出货量实际相对减少,未来苹果的销量将不会特别乐观 。


江油鸿飞2020债权转让计划
           

作者 | PostHog

译者 | 香槟超新星 ,责编 | 王晓曼

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

以下为译文:

长期以来 ,开源项目一直都面临着融资难的问题。PostHog很幸运地获得了大量的资金,并希望跟大家分享我们的经历,以帮助其它那些很酷的项目也能早日启动。

可能有些人不了解我们 ,先介绍一下,PostHog提供开源产品分析服务 。我们经历了2020年1月到3月的YCombinator W20 batch,迅速募集到了302.5万美元的资金 ,想和大家分享一下我们的经验。我们很可能不是一个典型的公司,但无论如何,我们希望这能给大家一些启发。

为什么要融资

在你决定是否要筹集资金之前 ,重要的是要知道你想达到什么目的,并为此进行优化 。

很多项目从来都没有想过要商业化——如果只是爱好,且你不想加快进度 ,那保持现状就好 。

我们觉得,基于这个项目成立一家公司能创造出一些真正有野心的东西,所以我们就决定了融资。

那么 ,在公司的资金方面都有哪些选择?

1、风险投资(VC)

选择VC意味着 ,如果理智地花钱,你会有很多的现金来推动项目的发展。这就是优势所在 。显然,你必须围绕项目建立一个公司 ,以保障至少从长远来看能够赚到钱。

很大程度上取决于对方公司的情况,你可能会在很多事情上得到帮助,包括会见一些能在以后为你带来收入的早期客户 ,人员招聘,VC赠送的免费物品,以及战略制定等方面。你可以随时询问VC投资组合中的合伙人和创始人 ,了解与他们合作的情况 。

我们个人认为,管理加速增长的挑战会更刺激,目前来看确实如此!

VC炒作能够催生更大的团队 ,催生成果(希望如此),催生热度。

           

特别是在早期,VC就是在买你的潜在价值。这是讲得通的——如果围绕你的项目形成的公司有1%的机会在以后价值10亿美金以上 ,如果现在的价格合适 ,人们也有理由押注 。开源公司真的有可能做大——这个下次再讲,但我们相信,在很多产品类别中 ,开源都会分掉一些SaaS的蛋糕。

向VC推销开源的方式是,它更容易投入生产,而且没有那么多厂商锁定感——这一点让很多开发者不敢尝试新SaaS产品。SaaS可能在管理上“更省事 ” ,但你可能没有理由不能提供自己托管的产品 。最终的结果是,你的开源报告可能会被大公司使用,这些公司的某些需求可能是你的免费产品无法提供的(正常运行时间、更好的功能 、支持) ,你可以通过满足这些需求来赚钱(通过提供服务、托管或高级功能),然后再进一步投资到项目中。

这种VC路线的缺点是,你有热度和现实失调的风险!

如果你筹到的钱不能取得成果 ,在烧钱的同时,你公司的生死存亡,就捏在那些资助你的人手里了。太遭了 ,但谁让你选了这条路呢!

你也有投资者 ,他们给了你很多钱,但不要爱上他们——你必须先考虑自己的团队和业绩,接着是用户 ,最后是客户,按照这个顺序 。做到这点,只要有好的策略 ,你的投资者们就能顾全他们自己了 。

哦,如果你成功了,也不能从公司里拿钱给自己发一大笔分红 ,虽然如果以后你的公司飞黄腾达了,也许可以卖掉一些股票(也可能是为了帮助你继续承担风险),从短期来看 ,你现在大概有能力给自己买点东西了——为能够全职从事开源工作而欢呼吧! 选了VC这条路意味着你要承担退出或失败的风险——就算你以后想慢慢来,也真的不能再改变主意了。

把你的项目变成背靠VC支持的公司,意味着你将不得不花更多的时间与人打交道。

投资者 ,更大的团队 ,潜在着更多的客户、更大的社区 。这可能是好事,也可能是坏事,具体取决你的性格。如果你当初建立项目的初衷是为了乐趣 ,你就应该认真思考这个问题。如果你把公司本身当做自己的产品而不仅仅是repo,那么你会享受这个过程的!

PostHog选择了VC这条路 。我们想建立一家公司,以此来真正实现我们在产品分析方面的野心。我们希望帮助每个开发者更好地认识到自己工作的分量。

就个人而言 ,我希望当80岁的时候回想起来,会庆幸自己曾经的职业生涯能有几次大的波动,即使公司并不完全只属于我们 。在产品方面 ,我们可以打造一些能流传于世的开源产品,即使我们搞砸了,不管结果如何 ,它给我们的技能和教训都会对我们未来的生活有帮助。

2 、自给自足(Bootstrapping)

这里“自给自足”意思是让真正的客户给你钱,再重新投资到项目开发中,并让这笔钱以你认为合适的速度为你自己的发展提供动力(或不提供)。

Basecamp在这方面有一个很好的理念 。

你可以通过这种方式获得完全的控制权。这可能会让你更容易做“正确的事情” ,或在你所建立的东西上更有创造力 ,因为你不用非得去破坏或创造一个数十亿美元的市场。然而,早期发工资的财务压力可能会让你很难优化长期决策 。你需要先想办法养活自己!

人是会累、会饿的 。我们认为这条路上最大的挑战就是半途而废。

我们觉得这种方式的风险类似于把你的烧钱率膨胀到高于来自VC的收入,尤其是在开源的情况下 ,你必须设法先建立一个免费的产品,然后才是付费版本(除非你走托管=付费的路线)。

3、捐赠

如果这是一个副业项目,而你不需要靠它来养活自己的话 ,你可以使用Patreon或类似的方式向你的粉丝们寻求捐款 。

这样做的根本问题是,公司并没有很强的意愿去捐钱,即使他们捐钱 ,其金额与他们花在付费软件上的相比通常也只是九牛一毛。这意味着,你很难支持自己去做全职,更不用说去壮大一个团队 ,让项目走得更远了。

然而,这可能是未来选择自给自足或VC这两条路之前的一个很好的开头 。把一些事情作为副业或爱好保留下来的好处很多——你可以更有创造力,以及仅仅是为了乐趣而去做一些东西。

接下来 ,在这篇文章中我们将解释一下自己是如何筹集到风险投资的。

将一个开源项目转化为一项业务

这是一个有争议的话题 ,因为它会产生各种各样的动机,但至少对我们的项目来说,它首先从根本上使整个事情有了可能 。如果我们仅仅在周末或者业余时间做这件事的话 ,我们是不可能有进度的。

1 、产品社区 VS产品市场契合度

我们主张,建立一个真正雄心勃勃、可融资的开源项目的最好方法,就是在考虑其它事情之前 ,先集中精力让产品流行起来。

对于SaaS来说,有很多建议都是在有产品之前就先提前收钱,这几乎已经成为一种标准的做法 。你必须想办法一跃跳到产品市场契合度 ,才能实现这个目标——你需要有一个强大的产品概念,强到人们愿意提前付费。这意味着达到产品市场契合是非常困难的,因为有太多的变量 ,除了试错,你不知道如何解决这个难题。然而,当你真的找到答案时 ,赚钱就容易了 。

开源创造了一条不同的路线 。你需要:创造一些有用的东西 ,然后想办法赚钱。你能从开源中得到更多的反馈——这是一种对开发者更友好的方法,因此,如果你的产品比较有用的话 ,你将会得到更多的增长和使用率。这使得为社区创造一个有用的东西更加容易 。

然而,赚钱是更困难的一步。要维持和发展这个项目,你需要赚钱。你需要有信心 ,坚信一旦自己做出了有用的东西,就一定能解决赚钱问题 。PostHog,即使以我们目前的规模 ,每周也会有一到两个付费咨询的人进来。我们与这些人交谈,试图了解他们需要什么,以及他们是否愿意为之付费。大多数客户都跑掉了——我们还在学习!也就是说 ,在担心收入之前,我们自己还有工作要做,需要把自己的社区和免费产品做得更强大 。

好消息是 ,入驻兴趣更容易 ,更容易成交,你不必浪费时间发送数百封冷邮件来让别人产生兴趣——你可以专注于对这个免费产品的开发上。

这很有可能会出错——你可能在达到产品市场契合之前就耗尽了现金。你可能会不小心开发了一个免费产品,却发现没有可行的商业路线 。你可能会发现 ,你面对的市场太小,VC无法投资进去。

我们融资的时候,VC都会问到商业方面的问题 ,但投资的VC一般都只是抱着这样的信念:只要你把产品社区契合度搞定,再解决产品市场契合度的问题就很容易了。我们在付费版本方面的问题很坦然——我们现在还不知道将要如何运作,但我们已经有一个如何去做的计划了 。

2、赚钱

到了一定程度 ,你就得想办法赚钱了 。在实现产品社区契合后就该考虑了。

流行的方式有三种:

服务

托管

开放式核心

或以上几种组合(但不要太复杂)。

可能还有某些其它的方法(广告?虽然令人反感)我们没想到 。

服务的方式很简单,然而如果长期只有这一个计划,就会难以产生高估值 ,进而导致资金筹集上有困难。这是因为服务这种方式的利润率很低——出卖的是时间而不是可扩展的产品,随着你的规模扩大这并不能使你的回报提高。

我们所说的托管,是指向客户收取开源产品的托管版本的费用 。风险在于 ,可能会有云供应商决定与你的托管版本竞争。可以通过许可证来防止这种情况 ,尽管这将使你在技术上“不再是 ”开源,也可能会损害到使用率以及与社区精神的契合。很多开发人员可以在大企业中使用MIT许可证的软件,但如果没有公司的某种形式的批准(如果他们在大公司工作) ,他们不能使用有禁止商业使用的许可证 。

托管收费方式的好处是,你不需要在基本产品之外多做任何东西,这意味着你对免费版本倾注的所有心血也将有助于付费版本的发展。

从长期来看 ,开放式核心是PostHog的首选模式。我们在短期内做了一个托管版,只是想看看能不能有一些被动收入来减缓我们烧钱的速度(虽然付费流程还在我们的todo list上......!),结果有60%左右的用户都会选择这个路线去尝试 。我们认为这是一个很好的迹象。

对于开放核心来说 ,你首先要打造一个社区版的开源产品,并专注于真正帮助每一个愿意尝试或贡献的人提供。

先把这一步做好,然后你会零星地收到一些大公司的人发来的邮件 ,他们需要更多的支持或额外的功能 。然后,你可以建立一个“源码可用”版本,按月收费 ,为那些购买了高级会员功能的人服务 。缺点是你必须去做一些你无法开放在开源版本中的高级功能——而且一定要对社区坦白 ,哪些是免费的,哪些是付费的......不然一些开发者可能觉得不愿意去进行pull request了。

花了多长时间

2019年8月:我和Tim辞职。

2020年1月4日:我们开始了YC W20项目的筹备工作,这意味着我们收到了YC的第一笔15万美元的投资 。刚开始我们的想法与现在的不同 ,但很快就转变了方向。

2020年1月23日:我们写下了PostHog的第一行代码。

2月14日:我们为几家YC公司做了一场小型发布会,以获得早期反馈 。

2月21日:PostHog在HackerNews上发布。

3月6日:筹款第一天,收到了第一张支票(一万美金!)。

3月12日:因冠状病毒疫情离开了旧金山 ,回到英国开始了完全的远程工作 。一切进度似乎都慢了起来,持续了3周。这一天我们的银行余额是20.5万美元。

3月16日:Demo演示 。

3月31日:余额:53万美金

4月24日:余额:71.9万美金

4月26日:种子轮融资完成,总金额为302.5万美元——当收到的支票面额越来越大时 ,进度就会快很多很多。

有一件事我们从未预料到会发生——我们后来收到了某些“太多”的资金,如果不拒绝的话本来可以筹到550万美元。我们不是想故意谦虚,但这确实有点奇怪 。我们已经卖掉了公司的不少股份 ,不想再卖了——我们觉得筹到的钱已经足够称为一个非常好的A轮融资了 。

我们不得不从尽力把自己卖给投资人转变为不得不让投资人失望。在经历了所有的会议和建立的关系之后,我们感到非常内疚,但有这个烦恼其实是好事 ,在这个过程中我们也尽力去坦然面对了。

风险投资人们都很nice

可能纯粹是运气好 ,但我们在整个过程中的互动没有一次是负面的 。人们想了解我们的工作,他们给我们鼓励和帮助——即使很多时候他们没有投资。很多会议都是非常紧张和直接的,但那些都是最有帮助的。如果你能应付得了QA ,就能应付得了VC!

冠状病毒的影响

冠状病毒的影响让筹款变得更加困难了 。我们开始筹款的时候,病毒已经在中国传播开了,但尚未对美国造成重大影响。

在筹款过程中 ,情况发生了变化,封锁开始了。突然间,我们身处另一个国家 ,通过互联网向完全陌生的人索要数百万美元,来资助我们尚未有盈利的业务 。封锁后的三周里,筹款过程陷入了停滞——似乎大家都在原地踏步 ,和我们一起筹款的几家后期公司也因此退出。

为了YC batch,我和Tim一直一起住在旧金山。当我们看到欧洲到美国的航班被禁时,我们都决定回英国 ,以免最后因为回不了国而签证超期 。同时我们俩也担心会被困很久 ,远离家人。与家人团圆很幸福,但缺点是在伦敦时区生活的同时,还要按照美国西海岸的工作时间段工作。有时感觉筹款周期可能永远不会结束了——有点像跟一头熊摔跤 ,等熊完蛋的时候你也完蛋了 。我们向自己承诺,我们不会用病毒作为不筹款的借口,不管停下来和在之后有了更多用户后再筹款的诱惑有多么大——这有可能扼杀我们的势头 。

然而 ,又过了几周,感觉VC们已经习惯了这个过程——他们每周都要开几十个会,所以没多久就适应了“网上融资 ”这一新常态。我们也不再在电话中讨论疫情封锁对彼此的影响 ,开始让更多人离投资PostHog更近一步。

“你们现在还太早了 ”

这听起来很明显,但那些最成功的开源公司中有很多都是从一个非常受欢迎的开源项目开始商业化的 。这意味着,在大多数情况下 ,你必须先建立一些流行的项目,然后再变现。

从筹款的角度来看,这意味着你可以通过以下两种方式筹集资金:1 、靠大量的营收 ,但这似乎不太可能;2、靠项目的大量增长。

这意味着你项目需要的启动资金可能比SaaS公司更多——你需要先实现产品和社区的契合 。还需要确保与来谈生意的潜在投资者们在这一点上达成共识。我们在筹款宣传中越来越坚定地守住了这一立场 ,并意识到这能使投资者两极分化——这是件好事。一开始我们是这样说:“我们会在赚钱的同时,努力获得大量用户”,听起来就不靠谱 。

将人们分为两极(当然是有礼貌的前提下!) ,那么你就会找到那些和你志同道合的人们。

筹款之战

1、硬件设施

           

如果重来的话,我可能会在房间布置上投入更多精力,毕竟后来打了那么多次的视频电话。

“你至少要看起来像样一点”——一位YC合伙人在描述如何与投资者进行视频通话时说 。我不确定在这一点上自己是否做好了。

一本实体的记事本在通话过程中会很有帮助——有时人们会问一些“复合式 ”的问题 ,所以最好记下你想回过头来再看的地方。其它时候,为了保障谈话的顺畅进行,你可能会把某个话题“推后” ,记笔记的话你就可以确保自己记得再回到那个话题 。在某种程度上,感觉动笔做笔记比打字更加礼貌一些——不会给人造成你在谈话时可能正在浏览社交媒体的错觉 。

台灯是为了更好地照明,而笔记本支架是为了防止视频的时候角度显人丑。

零食碗是为了避免我一坐下来就一次性吃完一整袋薯片。

2 、软件方面

(1)投资者CRM

我创建了一个Google Sheet来跟踪每个潜在投资者的状态 。分别存储了:

公司名称

个人/合伙人

潜在支票金额

兴趣/按10打分

下一步

类型

是否添加到Pulley

SAFE状态(如果适用)?(已发送/已签署/已收到钱)

你可以使用AirTable或真正的CRM系统 ,但PostHog默认反对引入新软件。

(2)Markdown 笔记

这很方便,比在表格里能存储更多的背景情况。

格式是一个单独的长文档,还有更详细的注释 ,我将其存储为私人的repo 。我预计关于会见的每个人和他们公司的5-10个要点。

(3)股权结构表管理

我们使用了Pulley来做这件事。同类产品里面Captable.io也很有名 。

这款软件可以帮助你模拟出公司的销售了多少股权。你可以试验A轮阶段的不同场景及其影响。

我们曾经尝试在表格上做这件事 ,但很快就发现没法算对数 。我们发现股权结构表异常地难做,但也可能只是因为我们菜吧。

(4)法律文档管理

我们用的是Clerky。它可以生成你筹款所需的所有法律文件,以及许多其它的东西 。我是这个软件的忠粉 。

3 、流程

筹款会涉及到几十、上百次会议 ,真的。

如果没有一个有条理的流程,你会发现自己面对行政工作时真的会跪。

(1)开会

会议来自两个方面 。要么我需要被介绍给别人;要么我曾回应过某个公司的入站意向。

我们只发了一条冷信息,然后一堆人上来问了很多细节 ,然后就没有然后了。事实证明,VC不是这样运作的 。话说回来,我相信也有例外 ,也许是我们的看法有失偏颇,因为YC的缘故,我们在旧金山的人脉很强。

我们是如何被介绍给别人的呢?我们总是努力与其他创始人成为好友——无论是通过帮助别人、与用户成为朋友 ,还是礼貌地向其他我们所仰望的创始人请教。如果人们相信你正在研究的东西,他们会很乐意把你介绍给其他人 。你的想法越好,关系越紧密 ,牵引力越大 ,你在这方面能获得的成功就越大。

投资人一定会因此错过很多交易,然而这是一种奇怪的社交证明形式,我想这一定会起作用 ,即使这意味着错过的可能只是华而不实的公司。我猜想这在社交方面危害相当大——如果你的关系网比较弱,离最有决策权的那些VC比较远,你的公司就很难筹到钱 。

在我看来 ,YC的申请表格流程根本不是这样的——我们并没有为了入选而疲于奔命。

反过来说,结果很奇怪,我们自己收到的投资人想要见我们的冷外链邮件 ,没有一个最后变成投资结果的。后来发现,那些通过其他投资人努力联系上我们的投资人,最后确实给出了投资 。

让别人能很容易地联系上自己——我的LinkedIn资料浏览量在筹款期间翻了一番 。更新你的社交媒体 ,并在你的网站或readme上添加详细的联系方式。在电子邮件的页脚中加入你的电话号码。创建一个Crunchbase介绍,更新你的LinkedIn和Twitter 。几乎在刚刚创建完网站的时候,我们几乎每周至少收到1个来自VC的入站请求。在YC期间 ,数量攀升到几乎每天1个。这些转化率很低 ,但我们确实从许多邮件那里得到了合伙人会议的机会,这给我们带来了宝贵的经验 。

(2)计划会议

找到关于你要见的人,你应该先查出一定量的信息 ,除了看公司的投资组合外,还要看几篇博客文章,并试图了解这个投资人是否担任某个公司的董事会成员。这将有助于会议以讨论的形式进行 ,此外,还能帮助你提前知道是否存在利益冲突(如果投资者已经投资了直接竞争对手,你大概不应该与他们交谈 ,更不能与他们合作了)。

投资组合本身也很有用 。其中有没有类似的公司你可以与之进行比较的?

(3)进行会议

你应该感觉是自己在主导,毕竟这个会议是由你促成的。

首先介绍一下自己,用一句话介绍公司 ,让投资人也这样简短地介绍自己。尽量了解投资人的真实身份——毕竟他们可能会和你进行长时间的合作 。

有些基本的信息,如果你事先在网上查不到的话,就应该每次都问清楚。比如 ,他们是否会跟进(你以后会用到这些信息) ,他们想采用多大的支票面额,如果他们是一家公司而不是一个天使投资人,他们是否有所有权方面的要求 ,是否能自如地领导一轮投资。

在讨论的后期,你应该确保了解他们是如何做决定的——如果是天使投资人的话可能会直接在电话中决定,种子司通常会在另外2-3次有几个合伙人参与的电话后决定 ,多轮的公司可能需要经过一个完整的合伙人会议才能决定 。只要了解一下通常需要多长时间就可以——有些公司可以在一天内做出决定,有些公司则需要几周或几个月 。

你可能会被问到公司的进度。如果你在早期已经有几个天使投资人了,在这一步就会轻松——他们会帮助你设定一个价格 ,或者至少展示出一些势头。天使投资人要友好得多,很多人愿意支持那些刚开始融资的公司 。然而,即使在这个阶段 ,你也应该至少对你的公司值多少钱有一个认知。

你如何给自己的公司估值?好的指南有很多。关键是要注意,你要设定价格——如果价格太高,你会很快得到反馈的 。如果你信任与你对话的天使投资人 ,可以问问他们的想法。

我们用的是YC seed deck。有些人很注重质量和设计 。我们的产品是黑白的 ,前面贴了一个logo。也许如果我们是做B2C的,这个会更重要一点。

悄悄插播一条广告:其实我们真的很想把设计更深入地推向我们工作的核心 。如果你是用户体验设计人员,请给我发邮件——如果你有作品集 ,请一并发来。

我们没有在会议中展示幻灯片,但我们在会后发给他们了——我们用这种方法来组织介绍我们自己的方式——关于这个我有(不多的)几个要点想说。

在会议中,询问投资人的意见——这是一种从他人那里获得对战略和公司建议的绝佳方式 ,毕竟这些投资人见过的公司有上百个,可以把你的公司与其它公司的模式相比较 。并非所有的投资人都会给出同样的建议,尤其是在开源的商业模式还有些稚嫩的情况下 。有些人会告诉你关注营收 ,有些人会去推使用率,有些人会取两者的折中。

你可以积极地这样做,以找出重点 ,“你希望我们在这轮融资中实现什么目标”,或者帮助改进你的推销演讲,“你认为我们最大的风险是什么/哪些因素你会不想投资我们 ”。

(4)跟进

这通常涉及到发送幻灯片和演示视频(我们认为这是一种很酷的展示产品的方式) ,然后跟进再预约一次会议 。我们并不完美 ,但很明显,如果你能在会议结束后立即做出回应,你就会加快自己的筹款进程 ,而且你在那个时候就已经得到了投资人的关注,而不是给他们时间去打下一个电话。

做完这些之后,花点时间想一想 ,是否有什么地方可以做得更好,以便下一次改进。如果你这次被拒绝了,我们个人的经验是 ,投资人非常乐于助人,是愿意给你反馈的——但是要记住,对方告诉你的原因可能并不是真正的原因 。他们是否刚刚结束了一场和合伙人的糟糕会议 ,还是之前被类似的公司伤一次?他们有可能不愿意告诉你这些。

不要低估你需要建立的管道数量,有很多跑腿的工作要做,我的投资人表格最终多达157行。

但这个数字并不能体现出 ,我们经常和同一个人开2-5次会 。我估计自己在6周之内大约打了200个电话 ,每个持续约45分钟,这还没算预订会议花的时间。我们大概被拒绝了30次,通常是因为我们“还太早了” ,通常这些投资者都来自于那些以前没有投资过开源项目的公司。起初,这种拒绝让人感觉沮丧,但过了一段时间后 ,我们发现有些人喜欢我们正在做的事情,而有些人不喜欢,所以我们就不再care了!到最后我们原本是可以筹集到550万美元的 ,并且做到了真正的超额认购,投资人争相入股,这是我们开始的时候想不到的 。

在这段时间里 ,我们要持续地优化产品,不断获得更多用户,这一点是非常重要的。我只专注于筹款过程 ,而Tim专注于与我们最棒的团队一起打造产品 ,为社区做贡献。如果是单打独斗的话,就会困难得多 。一些投资人在和我们交流的过程中,见证了我们的用户数量翻倍 。我们的用户数量是这样变化的:

           

最终 ,在初始的4周之后,我们开始在数据中观察到,参与度的高低似乎有一个明显的趋势:普通投资人

你可能还需要一些用户来帮你推荐 ,往往是重复推荐。大概有四五个人帮我们做了这件事,我们将永远感激/在事后寄一瓶酒感谢。

如果你曾经和一名满意的用户交谈过,或者你在Twitter上得到了不错的反馈 ,请非常客气地问问他们——大多数人都会觉得和VC交谈是一个有趣的机会 。我们试图联系上那些,我们认为能够向不那么懂技术的人群科普我们软件的用户,以确保集资的顺利进行。

如果你获得了一个投资人的投资 ,那么确保你能让他把你们也介绍给其他适合的投资人,这是一个非常好的思路。我们获得的大部分投资都是这么来的 。不过你不应该请求那些拒绝了你的投资人这样做(虽然有时候我们没有主动请求,而对方自己主动介绍了 ,也真的促成了一两次投资。但如果投资人对我们说不 ,我总是会拒绝他们把我们介绍给别人的提议)。

身在异乡,却融资于美国

PostHog很骄傲我们从一开始就采取了远程 。我们认为这是开源公司的一大优势。这意味着你的用户和社区可以很好地了解你,所以更容易与真正喜欢你产品的人交上朋友。我们不是在某个办公室里的毫无特色的公司 。这就是我写这些文章的原因。

我们选择在美国融资并创建公司的原因在于 ,即使作为英国居民,我们也相信这样能给我们带来最大的机会。搬到旧金山参加YC batch,意味着我们会身处大大小小的公司创始人最集中的地方 ,以最快的速度学习 。由于家庭原因,我们不会搬到旧金山定居,但我们会经常出差过去 。

很明显 ,对风险投资人们来说也是如此——至少我们接触的是这样。并非所有,但与我们交谈过的大多数英国投资者都觉得估值太高。我大胆猜测,我们在英国的资金后估值是500万美元(这意味着我们需要筹集的资金要少得多) ,而我们最终的融资后是1500万美元 。我们可以理解为什么投资者们更厌恶风险——如果每家公司的价格更低,那他们就可以进入更多公司。然而,从公司的角度来看 ,更多的钱意味着你有更多的资源去打出全垒打 ,这对大多数VC来说也是成功的必要条件。有一些有趣的但老的数据,但能说明筹集更多的钱会增加你以后成功的机会(虽然也许只是相关而不是因果关系),但是前提是达到一定程度 。

你需要哪些文书工作

如果你在美国筹资 ,我们建议你建立一个美国母公司。你可以“转手”你现有的公司来获得一个美国母公司——这花费了我们1万美金,这笔开支让人肉疼,但却是必要的 ,在一个竞争更激烈的市场上筹集资金,在财务上的益处远远超过了费用本身。如果你还没有为你的项目成立公司,我会建议直接成立美国公司 ,一定要花钱请一位美国律师帮你做这件事 。要做这些你必须要有一些钱才行,这也意味着你需要找一个会计师来帮你做税务。我和Tim在创业前就存了些钱,所以做这件事是花的自己的钱。

一旦公司注册成立(无论如何 ,我们必须先注册公司才能获得YC的15万美元初始投资,所以我们做这件事很有动力),我们(以及我们的律师)创建了一个员工期权池 ,然后在SAFEs上筹集了整轮 。SAFEs允许投资者投资 ,而无需你有一个定价轮,成本通常最低2.5万美元左右,除非你使用Series Seed文书。它们的签署速度很快 ,不需要任何法律工作。

我们与投资者设定了一个上限 。我们一开始设定的资金上限是1200万,也就是说,我们以募集到的第一笔20万左右的资金向这些投资人保证 ,如果我们最终的定价轮超过了1200万的估值,他们能够以更低的价格买入,作为早期投资的回报 ,从而用同样的钱获得公司更多的股份 。在此基础上开始与天使投资人合作后,我们认为募资进展顺利,所以我们将上限提高到1500万美元。我们原本打算将其提高到2000万美元 ,以便能够筹集更多的资金,但考虑到新冠疫情袭来时经济的不确定性,我们觉得应该尽快拿钱 ,以防美国进入经济衰退期。

需要注意的是 ,SAFEs的缺点在于,如果你在下一阶段的募资中出现一轮下跌,你会被摊薄得很厉害(如果价格低于上限) 。

(我们与Pulley是朋友 ,但除此之外没有利益相关)为了模拟在这个过程中卖掉了多少公司的股份,我们用了Pulley。你把所有的SAFEs都放进去,可以建模出一个A轮来查看你卖了多少。Sam Altman的建议是 ,在种子轮中尽量放弃不超过10-15%,在A轮中放弃不超过15-25%......尽管“最重要的是不要花光所有的钱 ” 。我们用Clerky来生成SAFEs,并将其发送电子签名。

如果你有吸引力或伟大的愿景 ,在筹款过程中就能够随心所欲。如果你表现得很温顺,要求投资人补价,结果就会很差 。如果你要得很高 ,就能使人们两极分化——这正是你所需要的......一个明确的offer或明确的拒绝!如果你设置的门槛很高,你就会让投资人对你产生怀疑。只是要注意,如果你把门槛定得太高 ,下一轮就得在此基础上更高。

获得第一张支票

我们首先和一些友好的天使投资人交流了一下 。这些人一般都是有钱的个体 ,可以分为两类:有些人只是单纯的出于热爱,喜欢你做的这个东西。另一些天使投资人则是全职投资,就像一只迷你基金。

为了找到天使投资人 ,我们考虑了一些我们认识的人,以及一些公司的创始人,他们的公司与我们的类似 ,但规模要大得多 。在建立公司的过程中,我们一路上得到了很多人的建议 。我们请他们投资。有些人直接投了,有些人给我们指出了正确的方向。当我们向他们请求具体的帮助时 ,人们都非常积极地进行了回应,我们会尽最大努力来回报他们 。当人们帮助我们时,我们会尽量让他们知道这后续是否听从了他们的建议 ,这样他们就能知道,我们真的很重视他们付出的时间。

找对投资人

很多投资人都比较像甩手掌柜那种,但有一些则会投入大量资源来帮助你。

如果你有选择的余地 ,也就是这轮融资即将结束的时候已经筹集到足够的资金来生存的话 ,你应该认真考虑这个问题 。

如果你的经验比较少,或者需要有人来push你的话,那么手把手的帮助可能会更合适。我们比较担心 ,一些比较关心我们的投资人帮我们做的太多,导致我们会忘记公司/项目的成败与否最终是我们自己的责任——而不是他们的责任。我们才是那些每天要与用户交流的人 。


江油鸿飞2020债权转让计划

标签: 江油鸿飞2020债权转让计划

信托研究院