项目常见问题

一、SaaS 和无代码开发模式的价值

就红十字这一个部门来讲,SaaS 和无代码开发的价值在于和应用场景结合做出业务系统,为业务系统赋能,实现低成本复制、定制。单拎出来并无价值。

二、如何防止大厂入场

这不用防,相较于这样一个价格承受能力非常低的部门来讲,不如将资源投入智慧农业、智慧社区、智慧交通、工业互联网上带来的回报和想象空间大,且我们走无代码的路线低价铺量,最后会形成价格壁垒,后入者必须在价格和质量都呈优势的情况下才有可能形成威胁,就大厂数倍、数十倍于我们的研发成本,以及市场较小的规模来看,这不可能。他们最佳的涉足这个市场的方式是作为我们的投资商和渠道商,而不是直接下场竞争。

三、为什么不做高端定制而要走平价路线

高端定制也就是外包,注定只能服务于一小部分有强大付费能力的客户群。只有实现规模化、流程化、平台化并压低成本,才能顾及全部的客户群体,这样才具有大量应用,以形成垄断、壁垒的可能性,积累的经验/平台/方法论才具有复制到其他领域的可能性,这些有效的积累会赋予我们发展的后劲,而不仅仅是赚一笔快钱。

四、技术架构是怎样的

对于系统的横向扩展,走去中心化的多租户 SaaS 系统路线,每个具体应用是独立部署的,开 1 个和开 1 万个的区别就是加服务器。对于业务层面的层级联动,每个应用系统都是一致的、平等的,应用间通过 ID 建立单向联系,实现自下向上逐级汇总流通数据。最终达成基层-区县-地市-省-部,各单位的系统分别部署分别可定制,但五位一体的体系。

五、市场需求是否存在

按目前调研情况看,红十字信息化系统在区县一级几乎空白,市一级部分建成,省一级大部分建成,但受限于资金、技术投入不到位,已有的系统多是处于“凑合能用”的水准上,呈现形式多为简单的表单填报。总会亦有信息化系统,但由各下级部门分别建设,例如救护员培训平台、中华骨髓库、救灾备灾系统等均是各自独立的系统,各系统间用户体验不一、数据互不流通,用户体验的割裂感严重。反观其他党政口单位大都已实现一网通办效果。我们做的事情就是建设红十字会业务的一网通办系统,并引入 SaaS、无代码的理念为其赋能以降低复制、定制、维护成本,使一套完备的信息化系统的总体成本可被接受。

六、盈利模式和盈利能力

首先这个项目的盈利模式和盈利能力在现阶段对于所有参与其中的人来讲并不重要。对于团队内部来讲,我们追求的是在年轻的时候以最快的速度站到最高的平台上,赚取最多的名望、经验,积累最多的资源;对于政府侧的领导们来讲,他们在意的是分别在各自所处层级利用该项目率先实现信息化所带来的政绩、亮点;对于项目孵化阶段的投资商来讲,他们在意的是基础技术的知识产权共享。就目前来看,项目以最快的速度在全国铺开才最符合所有人的利益,具体的盈利模式可在路上逐步细化完善,按一般规律来讲,为一个领域的一系列问题给出了解决办法,形成了完整的落地方案,且通过模式创新将成本压到极低而目标客户群体又有基本付费能力的情况下盈利是不会存在问题的。

推动红十字会信息化转型的新思路

【该文章是替区红会撰写的稿子,所以并不是以我个人的视角写的】

沾化区红十字会在 2022 年主导开发了“会员管理系统”和“大病救助系统”两个信息化系统,用以与总会已有的信息化系统结合,并通过微信公众号作为总入口,最终形成较为完整的区县级红会信息化解决方案以利于本单位工作。

虽然取得了不错的应用成绩,经验做法也得到了各上级红会的报道和认可,但当我们进一步思考,尝试回答“如何以此为契机推动全国红十字系统向信息化转型”的问题时却又发现了一些难以解决的现实问题。其中主要问题归类为使用体验不佳和经验推广困难两大块。

1. 使用体验不佳

这里主要指各系统间无法形成完整的体系,而是各自为政的单个模块,用户体验的割裂感很严重。就比如说群众想同时参与救护员培训和志愿服务,就需要在两个毫不相干的平台分别注册两个账号,并熟悉它们各自的交互逻辑。反观其他党政口的单位则大多实现了“一网通办”的效果——群众只需在一个平台就可办完所有业务。

2. 经验推广困难

这个问题主要是资金缺乏导致的,即便是市面上已有的信息化系统,其一次性采购+有限的个性化定制+第一年运维的成本也普遍超过 3 万元,地方红会,尤其是区县级红会难以负担。同时这种系统也缺乏灵活性,当有了新的需求时只能签署二期合同,委托开发商进行新一轮开发。

基于以上两个问题,我们希望为红十字会业务构建“一网通办”的信息化系统,并引入“无代码开发”的理念帮助降低产品复制、定制成本,为经验推广扫清障碍。所谓“无代码开发”指的是让无技术背景的用户也能在开发平台上通过预置的各种组件和用于规划业务逻辑的一套工具,自由的组装成所需的各种业务系统。这种开发方式规避了软件公司的研发费用,使一套信息化系统的成本降低到每年几千元。

研发一套无代码开发平台并基于其建设“一网通办”的红会业务系统的综合成本极高,根据“轻流”等市面上比较成熟的平台的经验看,这通常需要上千万的启动资金,再考虑到后续涉及的推广和应用成本,整件事情需要撬动相当大的资源量级才有可能做到。

为了筹备资源,我们从两个方向努力,一个方向是引入社会风险投资以获得建设资金和技术支撑,另一个方向是争取上级领导支持以获得推广和应用机会。核心想法是将整件事情切割为无数个节点,每次筹集的资源刚好够完成一个节点即可,通过高质量完成每个节点的方式不断给予人们信心,并持续宣传自己的理念和想法,结合历史成绩和已有的资源撬动新的资源、连接新的平台,最终形成合力促成想法的实现以及全国红十字系统的信息化转型。

截至发稿已筹备建设资金200余万元,并从国外引进了无代码开发平台整体建设方案帮助降低研发成本。目前平台的基础功能已初具形态,实现了界面的可视化拖拽,表单的自助制作以及工作流程的自助规划。在世界献血日之际,我们基于平台以无代码方式构建的“造血干细胞捐献登记系统”改变了以往需电话、邮件预约的繁琐流程。

下一步我们除了继续推进平台的建设和业务系统的各应用场景开发外,还规划与市级红会联动,在本市范围内开展试点应用工作,实地调研需求,了解基层工作人员和志愿者在实际工作中遇到的痛点和难点,并研究使用信息化的手段予以解决。

我们希望能自沾化区向上逐级试点、逐级推广、逐步完善,最终构建县、市、省、部四位一体的完整体系,各个层级的每个红会都有专属于自己的信息化系统,自己可以随意定制做出地方特色、打造地方品牌,而各个系统又基于相同技术标准建造,数据天然互通,所谓形散而神聚。

如果你也对红十字会的信息化工作感兴趣可以通过沾化区红十字会微信公众号与我们联系,非常期待可以一起深入探讨合作的机会以及交换各自对这件事的思考。

随笔二:关于对待“失败”的态度

应该意识到“失败”是个常态化的东西,它伴随了做事和个人发展的整个过程,应该以淡然的心态允许失败和不及预期的事情发生,做好备案确保失败的代价可接受,以及认真复盘分析原因,再寻找其他的路径,绕开导致失败的那一个点,继续向目标前进。

随笔一:关于做事和发展

对于一个事情,只要看到有理论上搞出很大动静的可能性,那么就值得去做。
不是为了通过一件事就飞黄腾达,而是通过一个事情可以链接其他资源,可以带来新的机会,可以让自己站在更高的维度上去观察这个世界……
先做出有价值的事情,解决困扰人群的实际问题,机遇和发展应该是随着这个过程,自然而然就会有的。

如何待人

现在想做点事真的不是一个人就能办的,下到一个产品的实现,涉及到很多方面,一个人即便可以全办了也做不到如专才般精湛,上到渠道和资源的积累更不是一个白手起家的穷人就可以掌握的。

于是必须与其他人合作,这就涉及到如何待人、如何与人相处的问题了。

目前看,有效人脉的必要基础条件是双方互相需要,在各自发展方向上能形成互补,离开这个基础的交情都是酒肉交情。

对于酒肉交情可以完全随心情而定,开心就好,不做讨论。

有效人脉分两块,一块是处于我上位的长者,他们位高权重,拥有资源、权力、地位,一块是处于我下位和我一起创业的大哥和大姐们,他们都是某一方面的专才,有独到的技能。

对于位高权重的长者,与其交往的基本条件是自身有一个足够出彩的优势点,可以被对方利用上。否则就是点头之交,构不成人脉。

其次要在交往中做到慷慨、真诚以及急人所难,绝不能撒谎、推卸责任以及闪烁其词,尤其是对待长者,毕竟混到那个位置的就没有人是傻子,全都是人精中的人精,但凡有一点小九九都会被看穿,然后被打上一个“不靠谱”的标签。

最后要肯定长者的优势,并将其挂在嘴边不能吝啬赞美之词,但赞美必须基于事实的前提下真心的夸赞,不能胡编乱造,那样会显得很虚伪。说白了也就是“舔”。但“舔”只能算润滑关系,让自己显得听话、懂事、臣服以及满足长者的虚荣心,绝不可能只靠“舔”来维系一段关系,最终还是要靠自身的优势点。

对于和我一起创业的大哥大姐们,他们在意的是一份希望、一份事业以及一份不错的收入。

我需要将未来前进的道路全部理清楚,规划好,并结合过去取得的成果一起让大哥大姐们看到咱们正在沿着道路前进,虽然不知道最终目的地在哪,但进度肉眼可见。

在这个前提下对待他们必须像对待亲人一样,他们的事情就是我的事情,所有的钱也都分给他们,尤其是起步阶段资金不充裕的情况下能至少让他们的现金收入不输给在公司坐班。

我需要让大哥大姐们相信,我时刻想着他们,护着他们,我的东西就是他们的东西,他们的痛苦就是我的痛苦,我不会欺骗他们、不会辜负他们更不会忘记他们的功劳。

只有真心实意的待他们并让慷慨大方成为自己的习惯,他们才会真心待我,也才会相信我真的是和他们一起做一份事业,而不是靠画饼忽悠他们冲上去,最后到了分蛋糕的时候再都踢了。

一个团队遇到事情,每个人各怀鬼胎的互相甩锅求自保和大家无所顾虑的只考虑事情的出路,其效果一定是不一样的。

一个稳定的、忠诚的、可靠的以及有能力做出优秀产品的团队一定是一切故事的起点。

最后的最后,商场如战场,对待同行及有竞争关系的人,势必会有势力范围的争夺以及背后的运作,也势必会得罪一批人。我不能因为想做个老好人就放弃眼前的机会,更不能执着于爱恨之念就优柔寡断,所以在这种情况下,即便会损害他人的利益并承受可能的报复我也还是会果断的去做。最后双方只能是在“我知道你知道我知道”的前提下,不撕破脸,留一线日后好相见了。

使用 devstack 部署 openstack zed

前言

最近我老师投资了一个教育平台的项目,我需要负责具体的实施,其中包含了线上实训模块,简单来说就是为每个学生开设一台云电脑来完成实训任务并收集成果来评分。这就要求平台具有开设“云电脑”的能力,也就是说需要有一个云计算集群作为支撑。考虑到这个项目后续大概率会封装成可私有化部署的产品卖给各个学校,所以这个云计算集群也得能本地化部署才行,不能依赖阿里云这样的公有云服务,于是我只能闷头研究下和我的专业相差略远的 openstack 了。

老实说,像 devstack 这种一键安装脚本是不需要专门写一篇文章来记录如何使用的,但奈何天朝的网络环境各种的墙,导致这个脚本我跑了好几天,那种每走一步就碰见一个报错的痛苦可能没人会懂。

硬件准备

一台空的 PC、一台 x86 服务器或者一台 VMware 虚拟机都可以。

如果是VMware虚拟机的话记得开启虚拟机处理器的“虚拟化Intel VT-x/EPT 或 AMD-V/RVI(V)”功能。

操作系统

我使用的是 Ubuntu 22.04,这也是截至目前 zed 版官方推荐的操作系统。

添加 opentsack 用户

需要创建一个专门的账号来安装和运行 openstak 服务

sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod +x /opt/stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo -u stack -i # 切换到刚创建的用户身份上以执行后续操作Code language: PHP (php)

前期准备

网上一些教程会让换掉 Ubuntu 的软件源和 Python 的 PIP 源,但是我并不建议这么搞。第一是官方源目前在国内访问速度非常不错,第二是第三方源会出现各种莫名其妙的错误,比如说之前用华为的 PIP 源就会报各种依赖错误。

需要真正解决的网络访问问题主要集中在以下两块:

  1. 从 GitHub 拉取仓库
  2. 使用 wget 下载 GitHub 及其他被墙资源

我尝试过很多解决方案,这里就不罗列了,只说一下最根本的方案:为 git 和 wget 分别配置代理。

我采用的是在 PC 机上先使用 ShadowsocksR 配置 SSR 代理(这一块不会配的就百度搜吧),然后在 ShadowsocksR 的“选项设置”中勾选“允许来自局域网的连接”。

之后在服务器上执行以下四条命令让 git 和 wget 命令可以使用 pc 机上配置的代理服务:

git config --global http.proxy 'socks5://192.168.0.197:1080' 
git config --global https.proxy 'socks5//192.168.0.197:1080'
export http_proxy=http://192.168.0.197:1080
export https_proxy=http://192.168.0.197:1080Code language: JavaScript (javascript)

之后分别进行测试:

wget https://google.com
git clone https://github.com/litepress/wp-china-yesCode language: PHP (php)

这两条命令必须都成功执行才行,否则 devstack 的执行 100% 会报错的,所以说如果测试不通过就回去研究为什么出错吧。

运行 devstack

解决网络问题后事情就很简单了,这里我直接把 openstack 官方的文档大段贴上来。

下载 devstack

git clone https://opendev.org/openstack/devstack
cd devstack
git checkout stable/zed  # 切换为 zed 版Code language: PHP (php)

创建配置文件

在 devstack 目录中创建名为 local.conf 的文件,内容为:

[[local|localrc]]
ADMIN_PASSWORD=管理页面的 admin 密码
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

# 这里使将来 openstack 的虚拟路由器桥接服务器物理网卡,这样安装后云服务器就可以上网了,并且只需要物理机有一个网卡即可。
PUBLIC_INTERFACE=ens6f0 # 要桥接到的物理机网卡
HOST_IP=192.168.0.242 # 物理的 IP
FLOATING_RANGE=192.168.0.0/24 # 物理机网卡的网段
PUBLIC_NETWORK_GATEWAY=192.168.0.254 # 物理机网卡的网关
Q_FLOATING_ALLOCATION_POOL=start=192.168.0.100,end=192.168.0.200 # 要为云主机分配的地址范围(之所以不全分配是因为网络里还会存在其他设备,为了防止冲突才专门规划出一部分给云主机用)
Code language: PHP (php)

开始安装

./stack.sh

安装完成

安装脚本应当一次性执行成功,成功后会在终端输出类似如下内容:

This is your host IP address: 192.168.0.242
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.0.242/dashboard
Keystone is serving at http://192.168.0.242/identity/
The default users are: admin and demo
The password: 你设置的管理页面的 admin 密码

Services are running under systemd unit files.
For more information see: 
https://docs.openstack.org/devstack/latest/systemd.html

DevStack Version: zed
Change: 211cc4c036b6cb13598b87e6e3bbc3c74538a902 Pin tox<4.0.0 for <=stable/zed branch testing 2022-12-09 02:54:44 +0000
OS Version: Ubuntu 22.04 jammy

2022-12-20 20:28:27.268 | stack.sh completed in 1738 seconds.
Code language: JavaScript (javascript)

切换存储盘

很多服务器系统盘是和磁盘阵列在操作系统内是两块设备,openstack 默认会将系统盘作为存储盘。

想切换存储盘首先需要在新磁盘上创建 LVM 卷组,参见:CentOS 6中创建及管理LVM逻辑卷 – 坏蛋的博客 (ibadboy.net)

之后编辑文件:/etc/cinder/cinder.conf 文件(openstack 卷服务的配置文件)。

将存储后端 lvmdriver-1(默认存储后端)的卷组修改为刚创建的新卷组即可。修改完类似如下:

[lvmdriver-1]
image_volume_cache_enabled = True
volume_clear = zero
lvm_type = auto
target_prefix = iqn.2010-10.org.openstack:
target_port = 3260
target_protocol = iscsi
target_helper = lioadm
volume_group = data # data 就是新创建的卷组,只需要改这一行即可。
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_backend_name = lvmdriver-1

Code language: PHP (php)

之后重启服务器即可生效。

常见问题

物理机重启后无法创建云服务器,一直显示“正在调度中”

该问题是由于 nova(openstack 中负责计算的组件)的部分服务没设置开机自启动导致的。执行以下命令即可:

sudo systemctl start devstack@n-sch.service
sudo systemctl start devstack@n-cpu.service
sudo systemctl enable devstack@n-sch.service
sudo systemctl enable devstack@n-cpu.serviceCode language: CSS (css)

物理机重启后无法连接网络(仅能 ping 通自己,无法 ping 通网关)

这是由于 devstack 在安装时会创建一个桥接网卡 br-ex,但该网卡的 IP 配置信息并未写到网卡配置文件中,所以重启后 IP 丢失,自然网就不通了。

这里以 ubuntu 22.04 为例,编辑文件:/etc/netplan/00-installer-config.yaml,最后效果如下:

# This is the network config written by 'subiquity'
network:
  ethernets:
    eno1:
      dhcp4: false
    eno2:
      dhcp4: false
    ens6f0: # 被桥接的物理网卡,一定要在配置文件中写出来,否则会被禁用。
      dhcp4: false
    ens6f1:
      dhcp4: false
    br-ex:  # 这里是 devstack 创建的桥接网卡,按正常网卡那样配置地址信息即可。
      addresses:
      - 192.168.0.242/24
      routes:
      - to: default
        via: 192.168.0.254
      nameservers:
        addresses:
        - 114.114.114.114
        search: []
    
  version: 2
Code language: PHP (php)

应用网络更改:

sudo netplan apply

现在可以上网了。

中国承受不起俄罗斯战败的代价

最近发现网上有很多的汉奸、走狗、间谍以及各路50万在那宣传诸如”支持乌克兰抵抗侵略者”、”乌克兰在捍卫国家主权”、”俄罗斯侵略者必败”、”我们需要和平”等等的言论,更有甚者把沙俄侵占中国领土的旧账翻出来,劝说人们要谨记俄国不是好东西——它在欧洲扩张完下一个就是中国。

在我看来,所有这些言论都在试图掩盖真正的矛盾。

我认为最底层的矛盾在于中国和俄罗斯崛起的现实需求与美国的霸主地位相冲突,而美国为了遏制中俄发展所采取的手段才是现如今一切问题的根源。

北约东扩事实上的压缩了俄罗斯的生存空间,俄罗斯开战也只是出于自卫,就好像中国的抗美援朝一样.倘若听之任之,则今日割五城,明日割十城,然后得一夕安寝。起视四境,而秦兵又至矣。

一旦俄罗斯战败,伴随着经济制裁和疫情带来的动荡,俄罗斯国内反对普京的势力以及西方的渗透势力会一起作祟,其结果必然是俄罗斯政权颠覆甚至解体。

届时,中国不但要独面北约,甚至有领土被四面合围的风险。

此时,中华民族的复兴从何谈起?

所以说,中国承担不起俄罗斯战败的代价。

既然开战,就必须要赢。任何支持乌克兰、强调主权独立以及要求俄罗斯撤军的言论都是汉奸走狗的言论——自己民族生死存亡之际,还要去关心他国的主权独立?

况且,就像前面讲的,战争的责任真的完全在俄罗斯吗?难道不是北约把刀子顶在俄罗斯脑门上在先吗?这样逼着别人反击再把侵略的脏水泼过去的手法不可谓不恶心,既当婊子又立牌坊。可以说当今的所有问题根源都在于美国的霸权主义,如果美国不搞北约军事集团,不挤压其他国家的生存空间,老老实实和平发展,不去耍这些流氓手段,还会有这些问题吗?

至于细数沙俄罪行的那些言论就更加不值得反驳了。难道忘了江东吴狗背刺关羽的事情了吗?和今天你们的剧本岂不是一模一样?

虽然中国政府一再声明不结盟政策,但如果俄罗斯不能速败乌克兰,我估计政府还是会对其进行援助,无论是经济还是军事。而如果战事旷日持久,以致北约下场,三战一定会开启,我们也会卷入其中。

有时候没得选,毕竟匹夫无罪怀璧其罪,历史走到了今天这一步,唯有胜利才是出路,任何的”忍一时风平浪静”都是在慢性自杀。

而如果俄罗斯胜了呢?它将在未来的几十年里继续在欧洲帮我们吸引火力,此时我们才能说去搞经济建设、去赚小钱钱。

不知不觉间,到了决定民族命运的历史时刻,真没想到会在我有生之年碰上。

补充一下,今天又看见一群人在那满口仁义道德、普世价值。让我想起来狼人杀这款游戏,一开始跟你称兄道弟分化你和你队友,最后等你队友都死光了再呲出来一句:对不起,我是狼人。

精明者充其量只能是暴发户煤老板

时常想起小时候长辈以及那些早熟的同伴所告诉我的:长大了就要带上面具,要变得世故,要学会皮笑肉不笑。

以及过年回家时伙伴眉飞色舞地跟我描述他在学校里如何城府又如何与学生会“打关系”。

现在回想起来,这些可真是来自一个小市民的精明啊。

我认定的是,如果想有哪怕一丁点作为,最基本的要求就是:“急人所难,诚以待人”。

若是搞的跟半仙一样的神乎其神,或是执着于玩“言语上的艺术”,相信不会有人愿意与之接触。

人与人相处毕竟是长期的过程,骗得了一时,骗得了一世?

又或者,一个刚出社会,有样学样,毛都没长齐的小屁孩,学人家去“世故”,在那些饱经世故的长者眼里,怕不也是个笑话。

这些长者手里握住了大部分的社会资源,想要得到照顾,在自身对其有利用价值的基础上,最基本就得做到真诚,我实在无法想象会有人愿意把资源分享给学生会里耍惯了官威又学的油嘴滑舌的各个部长们。

如果将来我有孩子了,我想我会从小教他要正直、善良、勇敢,虽然短期看也许会吃亏,但一个人的品行养成是长期的过程——如果习惯了做一个精明的市井之人,那么也就不可能在短时间内变得大方且“糊涂”。

时常想到,在我成年的这个时代里,改革开放的红利已经消耗殆尽,此时想从底层白手起家爬上去,就只能实打实的去拼综合实力。类似我爸爸所信奉的“机会改变命运论”我是从来不看好的。

我不相信有一次两次的机会被抓住或错失了就足以改变我的人生轨迹,我相信的是每个人的成长应该是一个综合的体系化的工程,应该全方位积累并步步为营,在打下一个基本盘的同时爬上下一个台阶,每个基本盘打下了也就不会掉下去,错失一两个机会也不会影响我,因为既然选择了全面积累、稳扎稳打的道路,也就意味着我的战略迂回空间足够的大,并不会被一两次失败打倒,就好像罗永浩造个锤子没造出来,他去睡天桥了吗?

如果要全面积累,那么个人品行无疑是其中很重要的一环。我能忍受多大的屈辱、我能“糊涂”成什么样,以及我能多大程度上的去“急人所难”,都最终与其他因素一起决定了我此生能走出去多远。

一辈子很短,我绝不要做一个蝇营狗苟的精明者,我要成事,成大事!

一切应当是可预测的

我觉得现实世界的一切都是可预测的。而造成不可预测的根本原因是信息偏差。

下面举一个极端的例子。

人们潜意识里觉得“我就是我”,认为自己的意识由自己支配。但本质上讲人的思维和意识是大脑中的一系列复杂的生物化学反应产生的结果,也就是说意识取决于产生反应的物质。而物质是可预测的,我们可以知道哪种元素和哪种元素之间融合会产生何种反应。

也就是说,“我”并不是“我”。我的想法,只是化学反应罢了,这些化学反应,受到此时此刻的变量影响必然会产生,而不由我主。

综上可知,人类当前的每一次进步都是物理化学反应在主导,是反应导致人们做出一个决定,而决定产生了后果,当我们掌握了期间所有演算公式时,我们将可以在知道初始变量的情况下通过计算得出事件的结果,这将会是一个逻辑关系。

由此向前联想:人类当今所获得的一切成就都可以推到当年第一个走出非洲的猿人的大脑中产生的某些反应,是这个反应致使它做出了这个决定,而它的决定则产生了后续的一系列后果。

再向前推:第一个生命是如何产生的?组成第一个生物的分子团是如何聚集的?他们或许来自四面八方,也可能来自外星,但我们可以肯定的是,这些分子一定都有他们各自的来源而不是凭空产生的,他们之所以会聚集于此也是受了“因”的影响。如果我们能准确的复刻这个“因”,那么我们就可以重复触发这一演变过程。

再向前推到极点:宇宙大爆炸时。如果我们知道了宇宙大爆炸的所有初始变量,以及每一种物质的所有化学物理反应所产生变化的机制,那么我们就可以通过不断的演算来推导出所有的一切了。

之所以我们现在做不到,就是因为前面说的“信息偏差”。我们既不知道宇宙大爆炸时的所有变量信息,也不知道其中所有物质的变化机理,所以我们无法完美预测这一切。

这就好像玩类似《钢铁雄心》这类即时战略游戏,即便是一个普通的大学生都可以从容自若的掌控一个虚拟的国家,但现实世界中掌控一个国家并不容易。

我觉得根本原因除了游戏对现实来讲缩略了很多东西外,更重要的是游戏中把所有类似稳定度、财政、军队这类的信息都具象化为了直观的数字,1就是1,2就是2。而现实中的国家则比这复杂得多,就比如二战时国军广为诟病的吃空饷问题,老蒋根本不知道他手里究竟有多少兵,因为虚报太多。这些虚假的数据最终影响了决策,从而导致现实中对事物的预测经常发生偏差。

人的一生轨迹从一开始便已注定。只不过因为我们还不能掌握所有信息以至于对此进行精准计算,于是这留给了我们希望以及无限的遐想空间。

正确的废话

有时候发现能正常交流的人实在是不好找,大部分人探讨事情是不会联络上下文和外部环境的,于是就会说一些在短期内或理论上无比正确,但联系到所面临的实际处境却又接近于废话的话。

举个例子,就是关于二战史的一系列探讨。

有人说:德国对犹太人和斯拉夫人灭绝的政策是树敌的行为,甚至连一开始亲德的乌克兰都给逼成亲苏了。德国应该善待犹太人和斯拉夫人,这样道义上没有瑕疵又可以获得大量人力。

还有人说:德国应该先整合占领区资源再进攻苏联,这样才能多一份胜算。

也有人说:德国应该集中兵力一举拿下莫斯科,而不是南下分兵基辅,这样才能一举击垮苏联。

单看以上三个观点,可以发现他们说的都是无比的正确,单从文字和文字展现的逻辑上看,找不到一点破绽。但这三个观点都是典型的前面讲的“不联系上下文和外部环境”而做出的看似正确的判断。

这样的判断和建议毫无价值。以下列举一些外部环境因素来简要说明上述三条建议不可行的原因。

对于建议一:纳粹党发家靠的就是种族主义,煽动仇恨、转移矛盾,况且犹太人的资金也是纳粹经费的重要来源,让纳粹善待犹太人和斯拉夫人这根本就是先有鸡还是先有蛋的悖论。

对于建议二:苏德完全不是一个体量级的,时间站在苏联一边,而不是德国。如果德国在38年就打下了欧洲,那么我相信38年希特勒就会趁着苏联刚完成大清洗就直接发起进攻,而不是再等一等,等着整合占领区。况且苏联已经在1940年逼迫罗马尼亚吐出了比萨拉比亚等地区,而罗马尼亚作为德国的石油来源,可谓是底线所在,有理由相信当苏联从大清洗中恢复过来并完成新一轮扩军后会主动向德国发起进攻(大概率在1943年,也就是说德国也没时间整合占领区)。届时,德国不可能抵挡苏联的钢铁洪流。摆在希特勒面前的其实只有一条路:趁他虚要他命,早下手为王,晚下手遭殃。

对于建议三:下面贴的是一张基辅会展前的东线战略地图,可以很明显的看到,苏联在乌克兰是存在一个很大的突出的,这直接威胁到了德国中央集团军群的侧翼。况且不谈这一层,就单说德国糟糕的后勤补给都很难让德国能比历史上更早的发起莫斯科会战。更何况莫斯科丢了苏联就投了吗?未必,恐怕要打到乌拉尔山脉才能彻底干趴苏联。

毛主席说:“没有调查就没有发言权”,并非是他老人家剥夺这些人讲话的权力,而是这些人所讲的废话和给出的废建议,一是浪费时间,二是让问题复杂化,综合起来看可以说是严重的影响交流的效率。如果再掺上一丝莫名其妙的优越感和藉此对他人的贬低,则效果更是奇佳。

所以我觉得指点江山,激扬文字之前,稍微了解一下事物的背景和彼时周遭的外部环境再下结论不迟。急于表现而不加调查便想当然的给出的建议很多时候只能算废话,虽然单从字面理解可能会无比正确。这就好像逢人便劝:你要善良。

我觉得这篇文章并不是预示着我是一个油盐不进,一条路走到天黑的“不可说服者”。

我觉得我还是很讲道理的,我会把我观点连原因带结果成体系的讲出来,同时我也非常渴望有效的交流,但很多时候的交流是无效的,能收获到的只有对方因想当然的给了很多废建议而萌发的莫名其妙的优越感所给我造成的不适。

为什么会坚信自己肯定会成功?

以前经常听到一个观点:成功属于胆大的人(非原话,但意思相近)

我以前觉得老板勇于承担风险,所以他享受高额的回报,这或许是一种“胆大”的体现?

但现在我的看法变了。这本质上不是“胆大”,而是他们看到了别人没有看到的东西,是这些因素综合在一起经过推理后他才认为他一定会成功,于是他才敢于投入资源去实现想法。

没错,我现在认为成功是可预期的,是一种大概率事件,而失败则应该是和不可控的自然灾难一样是一种小概率事件。

之所以创业失败率如此之高,我觉得是因为很多人并没有真的看清前方的路,而是抱着“赌一把”的心态就上路了。这种赌博就完全是碰运气了,而具体化到做事业这件事上,运气成分所起的作用基本可以按0%来算,因为事态瞬息万变,一次运气好,能十次都好吗?所以这些抱着“赌一把”以及靠运气的人是100%会死在半路的。

这些人成功拉高了创业失败率。至于缺人脉、缺经验,所有这些都是没准备好且没看清就上路所产生的实际病症而已。

而那些创业成功的,除了从鸡生蛋蛋生鸡开始一步一步积累的外,但凡是进行了一定程度的长远布局的,一定是见识和思维上远超常人的,而不存在运气成分。

老天对每个人都是公平的。

所以我觉得,认清自己手中的牌、明确的知道行业的痛点以及能看清当前的局势,就能基于这些在引入对人性和世界运作的基本规则的思考后经过一环套一环的推理来勾画出未来的蓝图,以及通往这一蓝图的路,所有大的因素应当在设想阶段就考虑到,其他细节可以起步后再解决。

有了清晰的认识和明确的规划后就一定不会失败,唯一导致失败的可能是:天灾、政策突变、人为的数据丢失、某一竞争对手迅速崛起等小概率的异常事件。

于是,呼应了开头所说的:“成功是可预期的”。我们可以在早期推理阶段就预示到一定会成功,这样当面对挫折的时候我就会想“这不符合逻辑呀,一定是出现了某些意外情况导致的”而不是浑浑噩噩的觉得“我真不行”,于是我们就会有勇气继续走下去以探索清楚挫折背后的成因,并在更正这段曲线后继续沿着既定线路前进。这里的勇气也就不是因为胆大,而是因为对事态发展有明确的预期。

即便不幸,碰到了小概率事件,往往也不至于就深陷牢狱或就此殒命,我们还应该有大把机会可以尝试。

将整个维度拓展到人的一生后,在几十年的跨度里,一两次失败所浪费的数年时间也可以弱化为前面所说的“直线中的一段曲线”,只要更正就好了。一次两次不幸运,三次四次也会?不可能的,这就和不可能纯靠运气成功一样,我们同样不会单纯因为运气而一直失败。

所以,综上所述,成功是一种必然,是可以通过逻辑推导出来的可预期的必然。

WordPress在中国为何不温不火?

这篇文章主要是梳理下我自己的想法,如果你有不同的看法欢迎留言交流~

我个人觉得有下面几个核心问题。

一、中国的大环境并没有为GPL的开源模式做好准备

这一问题是国情和大环境所致的,短期内没有改善的可能。

其具体产生的影响主要是以下两点:

1、本土生态资源匮乏

wordpress.org的应用市场强制只能上架GPL应用,这导致中国的开发者不得不构建自己的私域流量,对于没有流量积累的小开发则将举步维艰。

开发者的匮乏直接引发了恶性循环:没开发者->没生态资源->用户因此而排斥->没开发者。

幸好WordPress有丰富的全球生态为我们补血,这才能在生态这一环多少进行一些弥补,这也才没让WordPress在中国很快凋零。

2、中文翻译匮乏

极少有公司愿意付出成本让自己的雇员带薪翻译WordPress生态资源。

这些生态资源几乎都是靠某些插件的用户因为自己用到了所以才会去顺手翻译,而对于文档这种自己用不到的东西则完全没动力翻译。同时我们统计,目前wordpress.org上的插件和主题的汉化率仅为7.8%,仍有高达400余万条原文等待翻译。

二、WordPress错过了中国以微信互联网为代表的公众号、小程序体系

这一问题比应用市场更加无解。

因为wordpress.org是不可能为了中国这1%的用户专门为此提供支持的。这不是坏不坏的问题,而是投入和产出比严重失衡。

未来PC端网页整体市场占有量会越来越低已经是不可逆的趋势,传统APP在中国因为小程序的异军突起而干扰了其在中小企业中的应用,而WordPress的用户群恰好也是中小企业。于是对于WordPress来说,通过APP来拥抱移动互联网,在中国几乎是死路。只有小程序和公众号才是唯一通往移动化的可能。

论迹不论心,论心无完人

之前很多人说我做 litepress.cn 这个项目无非是为了流量,也有人说我如此大肆宣传,其心叵测。说的其实有道理,我确实是为了我自己为先,我完全可以承认这些。

但是仔细想想,你们会不会也对别人要求的太高了?我所能做的,仅仅是尽可能的探索与他人合作共赢的机会,以铺开我前进的路。我不会花大量时间做纯“利他”的事情,除非是我举手之劳。我是个连别人看起来很正常的“上班”都极度反感的人。除开小时候在工地打了几天暑假工外,我至今没坐过一天班。我绝不会把我的时间和精力放在任何无实际意义或追求短期利益的事情上。

我觉得我的人生只有头30年是有效的,过了30,若冲不开阶级壁垒,则此生便定格于此。我,将终生作为人类社会底层渺小的一份子,我心中有任何想实现的东西,我都无能力实现,也就只能想想。我想我临死前必会为此懊恼,空来人世一次,匆匆而过,束手束脚毫无作为,可悲可叹。

然后我已经猜到有人会说我“太现实”了,是个很可怕的人。这时候让我们再搬出儿时学过的课文:

鱼,我所欲也;熊掌,亦我所欲也。二者不可得兼,舍鱼而取熊掌者也。生,亦我所欲也;义,亦我所欲也。二者不可得兼,舍生而取义者也。生亦我所欲,所欲有甚于生者,故不为苟得也;死亦我所恶,所恶有甚于死者,故患有所不辟也。如使人之所欲莫甚于生,则凡可以得生者何不用也?使人之所恶莫甚于死者,则凡可以辟患者何不为也?由是则生而有不用也,由是则可以辟患而有不为也。是故所欲有甚于生者,所恶有甚于死者。非独贤者有是心也,人皆有之,贤者能勿丧耳。

《鱼我所欲也》

人这短短的一生终将会失去,如狗苟之辈贪生怕死是又窝囊又无实际意义,如此不痛快的活着只为守护虚无缥缈的生命,是何道理?

又比如就拿利益来说,如果我总是过河拆桥,我总是忘恩负义,那别人将对我敬而远之,我的理想又将如何实现?难道凭自己我自己去鸡生蛋、蛋生鸡吗?不,这样我需要几代人的积累才可以。我必须通过与他人交换资源,借力打力的方式才可以在30-21=9年内冲开阶级壁垒。

我想,正是因为我明确的知道我想要什么,所以我才会为此尽力维护每一个与我有交集的人的利益,所以我才是可靠的。若是行事风格随脾气好坏而定,亦或是仅凭喜好及一时冲动,那便真是让人体会“伴君如伴虎”般的捉摸不定。

于是我对某个人或某个群体的“好”都是有目的的。不过,也正是因为我多了这一层思考,所以我才意识到有一个强大的规则力量约束着我必须好好对待每一个人,若我对规则置之不理,则反噬的将会是我自己。但若是因我打了这些“小九九”便断言我是个“小人”,那岂不是小孩子过家家的思想?

甭管我是怎么想的,多看看我是怎么做的吧。

总结一句话:凡事论迹不论心,论心无完人。

我毕业了

作为一个极致的垃圾差生,我上了两遍中专,直到最近我周老师打电话问我毕业证还要不要了,我才意识到我正式成为社会人儿了。

回想起来这十几年读书的经历,我是真真的觉得学校不适合我。我甚至直到今天都不知道学校单在知识层面能带给我什么。所以,竞赛换来的省内春考本科免试的机会也放弃了,因为感觉去再念这四年除了浪费时间外对我就没啥实际影响了。

从初中开始,我就是要么在老师讲桌旁,要么在最后守着垃圾桶。这倒也惬意,尤其是坐在后面的时候,我可以随意翻弄我感兴趣的计算机相关的书籍。

我对学校的厌恶来自于教条的死板。为什么这么多科目每一样都要学?亦或是,为什么我只能学课本上出现的东西?更本质的讲——这真的是学习吗?我觉得求知应该来自一个人最原始的欲望,应该在这个欲望的驱使下去探索知识,而不是像流水线上的工人一样,被规定几点几分必须做什么,如此这般的填鸭式教学,令我深恶痛绝。

可能有的人会反驳:学校就是要给我打好基础理论知识,而基础理论想系统全面的灌输就必然枯燥。

这完全就是诡辩嘛。学习应该以一个兴趣为切入点,然后为达到这个目标,不断的,有目的的去了解涉及的周边知识,逐渐深挖,最终形成体系,而不是甭管有用的没用的全死记硬背安排上,这样的效率低到令人发指。

到底什么是学有所成?究竟是能把IP转二进制心算的精准无比、把计算机存储的定义倒背如流,还是通过初步的广泛了解后,能将知识成体系的串联并灵活的利用文献资料和工具解决现实中的问题?

学校会告诉我,全都背下来才是学有所成。但我知道这是胡扯,所以我发自内心的抵抗,我拒绝如此做无用功。

如今的教育模式,源自于当初的新中国扫盲运动。来自苏联的填鸭式教学法对于羸弱的新中国来讲是当时性价比最高的方案,所以才被采纳,而不是因为它有多么出众的实际教学效果。随着中国物质逐渐丰富,教育资源普及,填鸭式教学必然会被取代,国家倡导素质教育也倡导了好多年了。所以大可不必为填鸭式教学鸣不平——它若真的好,还会提倡素质教育吗?

也许对于一个无父辈积累的我来说,失去了大学这个土壤,我会错过和很多有趣的人,也会错过很多机会。

但是不怕,海阔凭鱼跃,天高任鸟飞。世界这么大,岂能没有我的一席之地?

这些年,喷我的人,我一双手已经数不过来了。有人说我异想天开,还有人说我格局小、视野狭隘,也有的人说我幼稚、无知、什么都不懂。

但,我不想过多的解释,我知道很多事需要时间的沉淀才能证明其价值,虽千万人吾往矣。

WordPress的市场很小,为什么值得投入精力

我想起来几个月前找开发人员的时候,听见最多的观点(或是叫嘲讽)就是:不要把WordPress说的很牛逼,这是很落后的东西了,大公司没人用的。随后就是类似大并发、微服务、SpringBoot等等的概念和名词。

他们说的其实是对的,WordPress的架构还是十多年前的,不谈什么分布式之类的,就单说单体架构中流行的MVC设计模式WordPress都不支持。模板引擎也没有,都要自己手工在HTML里面嵌入PHP代码。当然这里提到的MVC和模板引擎甚至于分布式架构在WordPress中都有相应的解决方案,只不过是第三方的。

WordPress的应用领域也确实是中小公司,大公司没有用它来做核心业务的。

这些说的都没错,都是WordPress的弱势,但却忽略了WordPress的优势——近乎于垄断的全球CMS市场占有量、完善的生态体系,以及中国市场下的萎靡不振。

以上三点合起来就是机遇。

为什么WordPress在国外可以近乎垄断,但是在国内却萎靡不振?如果解决了这个问题,那么依托WordPress近乎变态的生态储备也许就可以在中国复制其在全球市场的成功。

同时WordPress是GPL 2.0协议授权的,法律上的障碍也近乎于没有。

但即便复制了成功,在web 2.0的末班车上,留下的市场增量空间还有多少呢?

这个问题我觉得得分成三点来看 :

  1. 一个人很难一步登天,仅靠一个idea或一个项目就实现自己的理想,更多情况下要靠一个又一个跳板去往上跳,而每个跳板则可能都是完全不相干的项目。这其实并非是不想,而是存在一个叫“资源边界”的东西在限制着每一个人。就好像井底之蛙一样,如果他不先跳出井口,他怎么会知道大千世界都有哪些机遇?于是现在,有一根绳子从井口伸了下来,我想顺着绳子爬上去,想去看看外面的世界,然后一群其他的青蛙在嘲笑:你就这点儿志向?我们是想直接吃到一只天鹅,而不是和你一样爬到井口舔苍蝇。
  2. 这将为我打造一个根据地。所谓人穷志短,我很难相信一个人在持续的贫穷中可以坚持远大理想。当然,或许有神人做到了,但那肯定不是我。况且一个企业需要很成功吗?不需要呀,哪怕能服务好100个优质客户,就可以活的很滋润了,并不是都要像滴滴一样垄断全国的网约车市场才能好好活着。于是,如果这次成功了,我打下了自己的根据地,那就可以以此为根基别做良图,就像前一条说的,人生是踏着一个个跳板上去的,而不是一步登天。
  3. 一个一无所有的普通人,究竟是类似17年的共享单车这种巨头重重且重资产的行业的机会大,还是类似WordPress这样市场需求存在,且有天赐之机遇,但巨头看不上的市场的机会大?或者不谈机会,就只说:一个普通人在哪个战场上能最基本的生存下来?

以上三点总结一下:对于一无所有的普通人,得先有自己的根据地,然后以根据地为基础一步步向上跳,每次起跳都是一次资源边界的突破,换来的是更广阔的眼界和格局。而WordPress提供了这第一跳的可能。

理想可以远大,但是具体执行方案还是要务实为主。