「全真互联网/Metaverse」究竟是个什么玩意儿

1)在腾讯集团新近出版的内部刊物《三观》中,马化腾便在前言写道:「一个令人兴奋的机会正在到来,移动互联网十年发展,即将迎来下一波升级,我们称之为全真互联网

从实时通信到音视频等一系列基础技术已经准备好,计算能力快速提升,推动信息接触、人机交互的模式发生更丰富的变化……从消费互联网到产业互联网,应用场景也已打开。通信、社交在视频化,视频会议、直播崛起,游戏也在云化。

这是一个从量变到质变的过程,它意味着线上线下的一体化,实体和电子方式的融合。虚拟世界和真实世界的大门已经打开,无论是从虚到实,还是由实入虚,都在致力于帮助用户实现更真实的体验。

过去工程师很少走到前台来与客户接触,但在数字化过程中,从消费互联网到产业互联网,各行各业都在发生深刻的变化,甚至工作的流程、生意的逻辑、行业生态都在剧变。」

无独有偶,美国著名投资机构 Andreessen Horowitz(a16z)本月也在博客发布文章《Meet Me in the Metaverse》,阐释他们对类似概念「Metaverse」的理解:

1)在腾讯集团新近出版的内部刊物《三观》中,马化腾便在前言写道:「一个令人兴奋的机会正在到来,移动互联网十年发展,即将迎来下一波升级,我们称之为全真互联网

从实时通信到音视频等一系列基础技术已经准备好,计算能力快速提升,推动信息接触、人机交互的模式发生更丰富的变化……从消费互联网到产业互联网,应用场景也已打开。通信、社交在视频化,视频会议、直播崛起,游戏也在云化。

这是一个从量变到质变的过程,它意味着线上线下的一体化,实体和电子方式的融合。虚拟世界和真实世界的大门已经打开,无论是从虚到实,还是由实入虚,都在致力于帮助用户实现更真实的体验。

过去工程师很少走到前台来与客户接触,但在数字化过程中,从消费互联网到产业互联网,各行各业都在发生深刻的变化,甚至工作的流程、生意的逻辑、行业生态都在剧变。」

无独有偶,美国著名投资机构 Andreessen Horowitz(a16z)本月也在博客发布文章《Meet Me in the Metaverse》,阐释他们对类似概念「Metaverse」的理解:

「Fully emergent social experiences that model the serendipity of the real world will become the norm through two key trends: the proliferation of user-generated content (UGC) and the evolution of AI into both creator tool and companion.」

(翻译:模拟现实偶然性的、完全新兴的社交体验,将因为如下两个关键趋势而成为常态:用户生成内容(UGC)的延展和 AI 进化成创作和陪伴的工具。)

早在 2016 年,Epic CEO 就开始鼓吹 Metaverse 这个词(见这里)。还有一堆区块链项目,也将行骗吹逼插上了 Metaverse 的翅膀(见知乎词条「元界」)。

简单归纳共通之处:用更先进的技术,让虚拟世界更加拟真,使人们无缝地「虚实转换」。

2)作为互联网人,被资本风口和造词运动戕害多年,我对任何新冒出的事物保持审慎。

加之我又是一枚科幻爱好者,饱览超未来题材电影无数,于是对现实与虚拟世界水乳交融的疯狂设想早已见怪不怪。拿到关键词「Metaverse」,立马脑补《头号玩家》《黑客帝国》《铳梦(战斗天使阿丽塔)》《瓦力(机器人总动员)》里充斥白色平滑圆角电子设备的未来世界。

其实,我们早已行驶在通往这科幻未来的康庄大道上。

尽管我们没有人均一只机器忠仆打理家政,但 Siri、小爱们早已是日常查阅新闻天气的个人秘书;尽管我们没有全息影像的触控键盘,但隔空投屏、无线充电、磁悬浮等无接触技术设备早已飞入寻常百姓家;尽管我们不能下载功夫、上载新生、备份大脑,但 AR/VR 和 Lidar 已在拓展我们感官视野的边界。

所以,在年底突然炒作起全真互联网/Metaverse,是因为什么技术取得了突破性新进展(比如 GPT-3),还是新一场造词运动的序幕?怀揣此问,本周我在一个海归创业小伙伴的微信群里,跟大家展开了激烈讨论。

3)以 Memo 的形式,记录一些发在群里的讨论:

  • 如何判别某种技术是否属于 Metaverse 的范畴?有几种理解/猜疑:
    • penetration(用户渗透度)逐渐到了,很多东西不再小众?
    • 在这个宇宙有多少 % 的事物是 AI 生成的?
    • AI 做成某件复杂事情的准确率显著提升到某个 %?
  • 这是新事物,还是旧事物的一角?
    • 智能手机最初是作为个人电脑的配件,但现在个人电脑成了智能手机的配件。
    • 不要说到未来就是全息、AI机器人、脑机,那是科幻小说的未来。现在的 Metaverse 还没到 AI 阶段,还是在 Avakin Life/Facebook Horizon/IMVU/Roblox 的阶段。未来可能是把同样的东西换到新的介质上(VR、Digital Humans)。
    • 现实中的技术发展就是从 Web 的 Wall 变成了 Snap 的视频+贴纸,聊天室从文字变语音。所以 Metaverse 或许没有一个明确的「进入时代」的显著标杆,更多是渐进式、无法察觉的。
    • 如果要有,显著标杆就是,2D到3D的变化。ID 变成 Avatar,Message 变成实时语音,UI 交互变成沉浸互动。
  • 我们是否早已研发出 Metaverse?
    • Second Life(很早年的一个暴露年龄的网游社区)、WOW 都能「bring in people, create social identity and form strong connections」,但受限于时代,无法击穿过亿 DAU,所以只是部分现实玩家的虚拟精神寄托。
    • 当年有一对美林证券的夫妇,辞职在 Second Life 里赚钱谋生。
    • Roblox 的每天聊天数 = 55,大于微信和 QQ。
  • 如何理解虚拟和现实的交融?
    • 有人理解:这是一个量变带来质变的事情。也就是从个人的角度来说,你是觉得每天你是活着这个世界里面,休闲的时间刷刷手机,还是你活在虚拟世界里面,上班的时候退出来赚赚钱。这是两种认知世界的形态。重点在于你对你自己的认知到底是什么。
    • New Identity(区别于现实id,更丰满更贴合自己),New Experience(比现实更好的体验,比如更放飞自我的电音节,随时随地的基于真实超越真实的沉浸体验),New Connection(新的完全基于虚拟世界的组织group,有效率有经济体系)。几乎所有的高频长时的人类行为,今天大都可以脱离线下肉身。
    • 虚拟的价值最后要和现实位列同等。不是现实以外的避风港。
    • 线上信息只是现实的延展标注,还是虚拟存在就有其本身独立的意义?例如,比特币已经不是现实的延展标注,反倒让现实世界的货币体系乃至交易体系与它挂钩,且有仅限于虚拟世界的独特意义(现实世界无法满足,比如跨境支付)。主播、在线教育只算线下价值线上分发传播。

最终大家得出结论:资本和创业者都需要造新词。Metaverse 大概率是又一个 buzzword。

4)感觉 2021 年初创企业只有两种了:搞新消费品牌的,和搞 Metaverse 的。如果你够会讲故事,还可以在 Metaverse 里搞消费品牌。祝三年上市。

macOS Catalina + Python3.7 安装 GPT-2

等 GPT-3 出正式版之前,先拿 GPT-2 玩耍。记录在 macOS Catalina 上安装 GPT-2 的过程。

  • pip3 install tensorflow==1.15
  • git clone https://github.com/openai/gpt-2.git
  • 进入 gpt-2 文件夹,pip3 install -r requirements.txt
  • python3 download_model.py 1558M(其它体量参数自小到大:124M、355M、774M)
  • 我用的是 Python3.7,运行报错「dictionary changed size during iteration」。这时候需要凭 sudo 身份,将错误日志里那个 linecache.py 的 48 行改成:「for mod in list(sys.modules.values()):」
  • 测试运行吧!python3 src/interactive_conditional_samples.py –top_k 40

分享我的信息筛选管道服务 Inoreader

今天想分享一下最近两周的折腾成果之一:如何将日常爆炸的资讯源,收束于统一的管道(pipeline),经过自定义规则过滤,筛出必读的精华。最终实现个人信息输入渠道的大一统

先说核心利器。我付费购买了 Inoreader 这个 RSS 阅读器。然后为了启用我们需要的「规则过滤器」,需要付费购买 49.99 美金/年的「专业版」套餐

  • 我个人认为,以平均一天 1 块钱价格,获取信息守门的能力,相当于雇了一位谨遵吩咐的私人秘书,是值得的。每天读新闻有一种批阅奏章的感觉。
  • 看到价格就劝退的朋友,可以选择继续沉浸在娱乐至死的语境中。
  • 超级用户还能解锁其它强大功能。具体可以看这个 Pricing 页面(没有恰饭)。

接下来是我常看的内容源:

  • 订阅 RSS,不多做解释,常见的方法就是在 URL 根域名后面找 /RSS 或者 /Feed,还有很多博客网站论坛在页面底部直接提供。
  • 订阅 YouTube / Twitter / Google News / Reddit,Inoreader 高级用户版直接支持。
  • 订阅微信公众号,我一直用的是 WeRss 这个服务,它可以将你常看的公众号,转换出一个 RSS。我目前买了 64 个公众号一年的套餐,目前是 185 元/年。感觉绰绰有余,毕竟值得长期跟踪的价值公众号真的不多。
  • 订阅 Bilibili,我搜到了名为 RSSHub 的工具,它可以收集输出形如 https://rsshub.app/bilibili/user/video/163637592 的 RSS 地址,其中末尾数字就是你要订阅的 Up主 的 B站 主页编号。(这个服务最近似乎不太稳定,经常隔三差五取不到 RSS,但通常间隔三四天又总能成功取到一次,够了)
  • 订阅微博热搜,使用这个地址:https://s.weibo.com/top/summary?cate=realtimehot
  • 订阅其它网站/论坛/博客等,你可以试试直接在 Inoreader 搜索,或许有人已经为你生成,并持续抓取多时。
  • 其它暂未提供 RSS,又只是你感兴趣的小众网页,可以试试 Inoreader 的 Web 生成 RSS 功能,它就像图形化界面的傻瓜爬虫,为你自动将普通网页导出一个 RSS。
  • Instagram 的订阅,我暂时没找到最优方案,国外都是要付费的转换服务,但我觉得为看猫猫狗狗和港台明星,花这个钱不太值,就没买,也没法推荐)

内容源多了,就是过滤问题:

  • 你可以为单个订阅源设置「过滤订阅源」,比如「新浪微博」一旦满足「标题中包含肖战」这个规则,则自动标为一读,不出现在 Unread 里恶心你。
  • 你可以可以为全局(所有订阅源)设置「规则」,比如我设置了一个文件夹叫「Mass News」,然后将每天都有海量新闻资讯产生的 RSS 都丢了进去,为它设置了关键词过滤规则(比如我不看「罗云熙」「事故」「薯条」等明星八卦 / 社会民生 / 美食)。
  • 你还可以设置重点关注的内容,例如我设置了但凡标题包含「上海」「新冠」「iPhone 12」,就自动加个标签。阅读时间紧张的时候,我就只扫读这些标签里的资讯。有点类似买了报纸,打开只看「本地」「科技」版面。
  • 对于最最最重要的内容源,我会设置规则,直接发送到我的 Instapaper 待读列表

我的 Inoreader 只是用来筛选待读内容,具体内容消费都是在 Instapaper,结合 IFTTT,Instapaper 和各种工具软件可以玩出花来,比如我自己写了一套基于 Instapaper + Google Drive + DeepL 的实时自动翻译工具。

这个有空下次再分享。

1: https://www.inoreader.com/pricing

2: https://werss.app/

快速将 Mac 自带 Python 版本环境从 2.X 修改到 3.7

拿出一台闲置的 MacBook Air 作为个人项目的生产环境服务器。这台 2015 年的古董,自带 Python 2.7,在额外安装上 Python 3.7 后,产生紊乱,例如:pip3 install 的目标路径仍然指向 Python 2.7 的路径。

找了一圈,试过之后最省事的方法是:virtualenv:

1、在 Mac 上安装 virtualenv:sudo pip install virtualenv

2、找到 python3的路径:which python3,发现藏在 /usr/bin/python3 下。

3、执行 virtualenv 命令,修改 pip 的安装路径到 python3上:

  • sudo virtualenv -p /usr/bin/python3 py3env
  • source py3env/bin/activate

4、环境修改之后,查看变量修改是否成功:pip3 -V,看到结果: 后面出现了 python3 的路径,说明修改成功。

5、正常用 pip3 安装 python3 包即可。

基于 Python + 第三方自动化工具,为 Instapaper 开发一键翻译功能

我将 Inoreader 作为日常信息过滤的管道,经其筛选后的待读文章流到 Instapaper。

因有阅读国外文献的需求,考察下来认为现有的解决方案(iOS 系统捷径 / 翻译类 APP / 通过 Chromium 内核浏览器打开用彩云小译插件等 ),既不方便,也不原生,更不灵活。所以决定自己简单定制开发。

一个晚上实现。工具准备:Python + IFTTT + Google Drive。

以下是思路:

1、在 Instapaper 专门新建文件夹「To Translate」。

2、日常阅读时,将想翻译的英文文章,随手移到「To Translate」。

3、在 IFTTT 设置一个新的 Applet:IF 我的 Instapaper 的「To Translate」文件夹下新增文章,THEN 将这篇文章上传到我的 Google Drive 的指定文件夹「Translate Slave/」下。

4、这个 Google Drive 的 「Translate Slave/」文件夹同步到 Mac 本地。

5、Mac 本地跑一个 Python 脚本,不断轮询上述「Translate Slave/」文件夹,一旦发现新增的文章(会是 html 格式的网页),则开始执行我的整套翻译动作,如:

  • 基于 goose3 获取这个网页的正文内容
  • 基于 deepL 完成翻译
  • 其它任何我想实现的效果,例如对照翻译、生成摘要、生成 Tags 等

6、 将上述翻译结果,通过 Python 发送电子邮件到我的 Instapaper 邮箱(一个 小众 feature,收到符合格式的邮件,会自动添加到 Instapaper 待读列表)。

于是,当我在浏览待读列表时,只需要将想翻译的文章,丢到「To Translate」,稍待一会儿,它的翻译版,就将出现在待读列表的顶部了。

配合 Instapaper 的中文朗读功能,简直不要太赞。

Mac 下使用 Python + Selenium 的几则避坑经验

最近研究 Mac 下运用 Python + Selenium,记录遭遇的几例经典避坑。

问题一:想自动控制的浏览器是 Safari,但问题是:Safari (版本号 13.1)默认仅会启动 Incognito(Private) Browsing 的独立新窗口(隐身模式),也就是不带任何浏览器的 cookies、缓存等用户预设信息,这极不方便伪造既有身份完成(诸如抓取仅限会员查看的资料等)动作。怎么办?

解法:从官方到民间搜了一圈,Safari 没有其他设置方法(可能是苹果出于安全考量)或 hack 野路子,只能作罢。换用 Google Chrome,因其体态轻盈、设置丰富。(搁到我另一台服务器 Ubuntu 桌面版下自然就是 Chromium)

问题二:我的 Google Chrome 自动升级到了 V85,但是 Mac + Python + Selenium 必备的文件 ChromeDriver(WebDriver for Chrome,https://sites.google.com/a/chromium.org/chromedriver/downloads)最新只支持到 V84,怎么办?

解法:无他,卸载 Chrome V85,重装回随手找到的旧版 V81,于是原本报错的代码果然跑起来了。额外提示,这里千万记得将 Chrome 设置成「不要自动升级」,以免夜长梦多,方法是:关闭 Chrome,进入目录 /Library/Google/GoogleSoftwareUpdate ,删除该目录下的 GoogleSoftwareUpdate.bundle 即可。

问题三: Chrome 自动执行开始,默认依然是打开类似隐身模式的独立窗口,我想要自动带上当前浏览器用户的身份信息,怎么做?

解法:

# 需要先命令行下 pip install webdriver_manager.chrome
from webdriver_manager.chrome import ChromeDriverManager_
from selenium.webdriver.chrome.webdriver import Options
opts = webdriver.ChromeOptions()
user_profile = '/Users/YourName/Library/Application Support/Google/Chrome'
opts.add_argument('user-data-dir=' + user_profile)
dr = webdriver.Chrome(ChromeDriverManager().install(),options=opts)
dr.get(url)

#上述 user_profile 变量是你的个人资料路径,可以在 Chrome 地址栏输入「chrome://version/」查看到。

2020/06/16 Update:上述问题三中一开始错加了的 Default 已经去掉(即原写「/Users/YourName/Library/Application Support/Google/Chrome/Default」,应该仅「/Users/YourName/Library/Application Support/Google/Chrome」。)