Normal view

There are new articles available, click to refresh the page.
Before yesterdayPersonal Blogs

为啥唱衰中国的企业软件的未来

By: MacTalk
8 July 2022 at 14:02

最近朋友圈看到几篇谈中国 To B 软件产业的,比如中国软件公司为啥做不出产品啊,投资人前几年投了很多 To B 赛道的技术创业血本无归啊,等等,好像中国软件企业这么多年一直活在上个世纪一样。

我们的知识星球里也有用户提问:

之前看直播, 有几个大佬老师 都提到 Salesforce 是一家很牛的公司, 甚至能和Google 比肩, 但是他们都没说到底是怎么个牛法。查了两个半天, 感觉就是个有些成绩的普通软件公司啊。请教池老师, 这家公司到底牛在哪?

我在 To B 软件行业工作了近 10 年,借着这个问题,聊聊我对 To B 软件的看法。


对于星球的用户,查了两个半天发现 Salesforce 是个有些成绩的普通软件公司。从我的角度看,你可能没有发掘到有效信息,另外对「有些成绩」,我们的理解可能不太一样吧。

Salesforce 成立于 1999 年,是全球按需 CRM 解决方案的领导者。CRM 鼻祖,SaaS CRM 鼻祖,目前市值 1700 亿美元左右,2021 年营收 212.52 亿美元,合计 1300 多亿人民币,这个成绩,无论是和中国顶级互联网公司比,还是和 Google 比,都不能算是「有些成绩的普通软件公司」了。

Salesforce 无论是业务、生态、技术、行业领先性,在国外都是非常知名的软件公司,比肩 Google 倒不至于,但和 Oracle、SAP 差不多是一个量级的企业。

为什么国内的同学会对美国的 To B 的大型软件公司无感呢?因为国内没对标。国内最大的企业软件,算是用友,市值 700 多亿人民币,是 Salesforce 的零头。

为什么我们对消费者领域的软件公司都很熟,比如美国的 FANG,中国的 BAT、字节跳动、美团等等,因为有对标,我们作为消费者,两边的服务都用。

这里就会产生另一个疑问,中国从总体上来说发展是跟着美国走的,为什么美国 To C、To B 都有顶级的公司,中国只有 To C 牛 X,To B 的企业,差几个量级,为什么会这样?

美国公司的商业周期很长,百年老店比比皆是,即便是现代科技公司,比如沃尔玛,1962 年成立,苹果,1976 年,微软,1975 年。福特汽车是 1903 年成立的,通用电气是 1892 年成立的。这些企业,在漫长的商业周期里,很早就遇到了各种市场红利枯竭的问题,他们早就经历过这种状态了,所以非常重视效率、成本和创新。

当一个公司开始注重「2021 年中国企业口口相传的降本增效」时,自然就开始重视能够提高效率能够降低成本和促进创新的工具,企业在这个领域投入大了,这就是强需求,对应的企业自然也就出现了,这是几十年前的事。

大家都觉得亚马逊很牛吧,但是传统企业沃尔玛和亚马逊对抗了几十年不落下风,沃尔玛这样的传统公司,技术实力一点也不差,人家还有卫星呢,数字化做的比中国零售行业早了几十年。

对应中国,大部分民营企业都是 90 年代和 2000 年之后创建的,满打满算 20 年发展时间,但这 20 年,相当于很多国家 100 年,改革开放,经济复苏,人口十多亿,市面上全是大片大片的开阔地,怎么说呢,各个领域,只要方向大差不差,挣钱太容易了。

一旦企业处于高速增长的阶段,没人会理会什么降本增效,数字化,信息化,也没那么重视。我自己发展好好的,为啥要用你的工具呢。靠市场红利驱动就能发展,就能赚钱,所以大部分企业对于新工具、新软件、新方法的采用意愿非常低。这就导致早些年做 To B 像是装孙子一样,各种定制各种满足各级领导的面子工程,效率反而没那么重要了。

所以,中国的用友和金蝶,就那么大,已经很不错了,也算是抓住了市场的红利。但和美国的 To B 软件相比,就差了一个量级。

写到这里估计有人会问了,说的挣钱这么容易,咋我没觉得呢?

这是因为,大部分人不具备知道这个领域赚钱的认知,或者知道也不具备进入这个领域的资本。

无论一个人还是一个企业的命运,当然要靠自我奋斗,但是也要考虑到历史的进程啊。当一个领域很多人唱衰的时候,也许就是最好的时机。

随着中国产业进程的发展,需要持续降本增效,提升用户体验,所以,未来企业级软件的需求不是变弱,应该会逐步走强。

这是我的判断。

胶片摄影:

不能在中文目录右键打开 Cygwin 的解决方法

By: 胡中元
24 February 2020 at 12:54

Cygwin 是一个 Windows 下的 Linux POSIX 模拟器,通过它我们可以直接运行一个 Linux 终端,非常好用。

网络上关于如何添加一个 “在当前目录打开 Cygwin” 的右键菜单的教程有很多,但是这些方法都有一个问题,那就是不能在中文目录下正常工作,于是研究了一番,修复了这个问题。

探索

既然英文路径可以但中文不行,我最先想到的是使用 Cygwin 自带的 base64 命令,将 encode(path) 后的非中文字符串传给 Cygwin 之后,再 decode 得到包含中文的路径。然而不行,正确的 base64 传递到 Cygwin 之后 decode 却是乱码。

问题的原因很容易想到,那就是编码的问题。经过几次输出中间变量后验证了这个猜想:Windows 采用的是 GB2312 编码,而 Cygwin 采用的是 UTF-8. Windows 将当前路径作为参数传递给 Cygwin 主程序时,Cygwin 不能正确读取路径。

解决

修改 Windows 或者 Cygwin 的默认编码肯定是下下之策。解决该问题最终还是绕不开编码转换。我最终的思路为:

  1. 右键点击后,Windows 将当前路径作为参数 1 传递给 run_by_right_click.bat 入口程序
  2. run_by_right_click.bat 将路径写入 chere.path 文件(GB2312 编码),并运行 Cygwin
  3. Cygwin 运行后,将 chere.path 转换为 UTF-8 编码,读取后 cd

我的 Cygwin 安装目录为 C:\cygwin64,Shell 为 ZSH,如果你使用的是 Bash,有的地方与我的不同。具体步骤如下:

step1. 创建右键按钮

导入注册表文件 cygwin.reg:

Windows Registry Editor Version 5.00
 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin64_bash]
 @="打开 Cygwin 终端"
 "icon"="C:\cygwin64\Cygwin.ico"
 [HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin64_bash\command]
 @="C:\cygwin64\run_by_right_click.bat \"%V\""

step2. 编写入口程序

我们的入口程序 C:\cygwin64\run_by_right_click.bat

@echo off
 SET dir=%1
 REM 双引号删除
 SET dir=%dir:"=%

 C:
 chdir C:\cygwin64
 rem del /Q chere.path
 set /p="%dir%">chere.path
 bin\zsh.exe -li

bat 代码是真的难写。。。写这段代码我便踩了无数的坑。

step3. 完成目录跳转

在 Cygwin 内编写 ~/.zshrc,在末尾添加目录跳转命令:

if [ -e /chere.path ];then
     /usr/bin/enca -L zh_CN -x utf-8 /chere.path
     CPWD=/usr/bin/cat /chere.path
     rm /chere.path
     cd /bin/cygpath "$CPWD"
 fi

这里用到了 enca 用于自动编码转换,所以需要在 Cygwin 包管理器中安装这个软件。

over! 现在便可以在中文文件夹中右键打开 Cygwin 了。

为啥我要用 Cygwin

最后最后。你可能会说,为啥都新世纪了,你还在用 Cygwin 这种… 模拟器?原生 Linux/ 虚拟机 不好用嘛?WSL 不香吗?甚至 Powershell 不也不错?

那我还真觉得 Cygwin 秒杀上述所有的方案。首先,我只是想在 Windows 上安装一个代替 cmd 的 Shell 环境用于日常操作,并不需要高性能什么的,所以原生 Linux 系统、虚拟机、Docker 就不是解决同一个问题的东西。

至于 Powershell,虽说是比 cmd 好多了,但毕竟是另一套语法和体系,我不想学它也对它不感兴趣。Bash+GNU tools 那才是世界通用法则。ZSH 作为日常使用的终端也确实美观好用!

而 WSL 这东西确实很吸引人,性能比 Cygwin 强太多,几乎就是原生系统。然而!WSL 运行于内核态,与 Windows 平级,就算有文件系统的映射,WSL 也并不能直接当作 Windows 的 Shell 来使用的。看下面的图你就知道我在说啥了。

Cygwin+ZSH 很好用

图中,npm 和 git 是我在 Windows 中安装的 exe 包,而 ssh、tail、md5sum 是 Cygwin 中提供的 Linux 命令,直接相互调用无压力,这才是 Windows 中我想要的 Shell 的样子。可是 WSL 是不能这么做的,两个系统是隔开的。

PrimoCache:让固态硬盘作为缓存给机械硬盘加速

By: 胡中元
29 May 2018 at 13:22

对于电脑硬盘,固态肯定是全方面优于机械硬盘的选择,不过按照马克思主义矛盾论的观点,这就存在一个 “低速的 HDD 与高价的 SSD” 之间的矛盾。目前我的笔记本使用 128G+1T 的组合,处于并将长期处于 “个人电脑硬盘的基本矛盾” 之中。

直到,我遇到了 PrimoCache 这款软件。推荐给大家。

PrimoCache 是一款可以将物理内存、SSD 硬盘或闪存盘等虚拟成硬盘缓存的软件。它可以自动将硬盘中读取的数据存入物理内存等速度较快的设备,当系统再次需要该数据时它可以很快从缓存设备中读取,而无需再次访问速度较慢的硬盘,从而有效提升物理硬盘的访问性能。

中文官网:http://www.romexsoftware.com/zh-cn/primo-cache/index.html
平台:Windows(其实 *nix 下也有类似的)
软件类型:共享软件

两个月后更新:

经过 2 个月的实际体验,这款软件并没有宣传的那么完美。少数软件一运行就会完全死机(跑跑卡丁车,并确定是由该软件造成的),整个系统也似乎有一种不稳定的感觉(偶尔弹出一些意义不明的错误提示)。另外还有额外的内存占用。

总之,不推荐将系统盘加速,也不推荐大多数情况下的使用。除非你有一些常玩的游戏,但由于几十 GB 的体积巨大不能放入 SSD,才值得使用此软件。

缓存技术

这种理念我认为非常好,Cache 技术也是计算机硬件软件当中一个使用非常广泛的技术。这和最初的英特尔快速存储技术(RST)以及英特尔傲腾技术类似。都是使用少量高速的 SSD 作为缓存,为低速的 HDD 加速, 使得电脑拥有 HDD 的大容量的同时,拥有接近于 SSD 的速度。

至于什么数据会被缓存到 SDD 中?这是由算法控制的,自动选择 HDD 中最常用的那些数据。

PrimoCache 与 RST 或者傲腾的区别在于,这款软件不需要你使用最新的 Intel 主板,或者是购买 Intel 家的傲腾内存,它兼容一切现有的 SSD。

PrimoCache 还支持使用内存作为一级缓存,SSD 作为二级缓存

是的,这也是 PrimoCache 的一个特有的功能,内存的每秒读写速度单位在 GB 级别,比 SSD 高了一个量级,能有效为 SSD 加速。(不过我还没有直观感受到差异,大概在这时瓶颈已经不在 IO 了)

效果展示

我现在终于可以把动辄几十 G 的游戏放心的放在机械硬盘了,然后使用 PrimoCache 让他们拥有令人满意的读取速度。

我使用了 12G SSD 作为二级缓存,1G RAM 作为一级缓存,运行测速工具对机械硬盘测速结果如下:

未使用缓存:

使用缓存:

注意,由于缓存的原理是将常用数据放在 SSD、RAM 中,需要时快速获取,所以使用测试软件随机读取或写入时并没有预存这个过程,并不能反映实际效果。
但是我们也可以看到明显的进步了。

注意事项

发现的缺点:

  • 使用二级缓存 SSD 时,需要占用一定量的内存用于存储映射。
  • 这是一个收费软件,虽然有破解版。
  • 之前出现了一次显卡被降频,关闭该软件后恢复。但后来开启该软件又没有出现类似状态。

此外,虽然我的 RAM 有 16GB,但我也只使用了不到 2GB 作为硬盘缓存,因为我觉得目前大多数大型软件都会使用 RAM 为自己加速,我们没必要多此一举。并且充裕的 RAM 本身也是提升电脑响应速度的途径。

❌
❌