#873 VR / AR / MR

2023-02-19

https://www.zhihu.com/question/39157545/answer/107911723
https://www.zhihu.com/question/39157545/answer/2744410720

  • VR(虚拟现实):通过穿戴式设备或其他显示设备创建出一个完全虚拟的环境,用户可以在其中自由移动和互动。使用VR技术,用户可以在一个虚拟世界中感受到真实世界所不具备的体验和感觉,如登山、潜水等。
  • AR(增强现实):通过智能设备如手机、平板电脑等增强显示出真实世界中的信息,使用户可以在真实世界中获得数字信息的增强体验。使用AR技术,用户可以将虚拟物品与真实环境结合起来,比如用AR技术实现的增强游戏、导航等应用。
  • MR(混合现实):是VR和AR的结合,是将虚拟现实与现实世界相结合的一种技术。使用MR技术,用户可以在真实环境中看到和互动虚拟物品,同时虚拟物品和现实物品之间也可以互动。比如使用MR技术的可视化指导、智能家居控制等应用。
  • AR 和 MR 都是将虚拟和现实融合,但是:
    • AR 是用手机等移动设备的摄像头拍摄真实场景,然后在设备屏幕看到增强的数字形象,比如游戏、导航、导购等,是对现实世界的增强。
    • MR 是通过穿戴设备,创造一个虚拟和现实叠加的世界,帮助人同时实现对现实世界和虚拟世界的交互。

#872 SMTP 校验主机域名

2023-02-15

Python

import smtplib
import ssl

host = 'smtp.126.com'
s = smtplib.SMTP(host)
context = ssl.create_default_context()
context.check_hostname = True
s.starttls(context=context)
s.quit()

Golang

如果服务器支持 STARTTLS,标准库 net/smtp 的 SendMail 方法就会校验主机名。

package main

import (
    "crypto/tls"
    "fmt"
    "net/smtp"
)

func main() {
    host := "smtp.126.com"
    port := 25
    c, err := smtp.Dial(fmt.Sprintf("%s:%d", host, port))
    if err != nil {
        panic(err)
    }
    tlsConfig := &tls.Config{ServerName: host}
    if err := c.StartTLS(tlsConfig); err != nil {
        panic(err) // panic: x509: certificate is valid for xxx, not yyy
    }
    if err = c.Quit(); err != nil {
        panic(err)
    }
}

#869 ARC(Authenticated Received Chain)

2023-02-08

谷歌的邮件中看到 ARC-xxx 头,研究了一下,叫做 Authenticated Received Chain
好像中文资料还非常少,直译过来,可能应该叫做 可信邮件转发链
解决的问题是邮件经过一些服务进行中转过程中,原有的安全措施 —— SPF,DKIM,DMARC —— 会失效的问题。

#868 Confluent 社区版安装和使用

2023-02-02

Confluent 是一家将 Apache Kafka 商业化的基础设施软件公司。
其核心产品 Confluent Platform 是一个全面的流计算平台,能够让用户轻松地访问、存储和管理实时数据流。
Confluent 还提供 Confluent Cloud,这是其完全托管的原生云产品,可在主流云服务商(如 AWS、GCP、Microsoft Azure)上使用。
通过这些产品,Confluent 帮助企业实时处理和集成数据,构建现代的事件驱动型应用程序,成为企业数据的“中枢神经系统”。

发展历史

  • 2011 年:Jay Kreps、Neha Narkhede 和饶军在 LinkedIn 担任工程师期间创建了 Apache Kafka。
  • 2014 年:他们围绕 Apache Kafka 成立了 Confluent 公司,最初名为 InfiniteM,同年改名为 Confluent。
  • 2017 年底:推出 Confluent Platform 的企业级自我管理软件产品的同时,推出了 Confluent Cloud。
  • 2019 年:进行 D 轮融资,融资金额达 1.25 亿美元,公司总估值高达 25 亿美元。
  • 2021 年:在纳斯达克上市,股票代码为“CFLT”,融资 8.28 亿美元。

Confluent 社区版

Confluent 平台的商业版和社区版有以下区别:

  • 社区版:包含 Connectors、Rest Proxy、KSQL、Schema Registry 等基础服务。提供基本的 Kafka 连接功能,可连接常见的数据来源和数据存储;支持通过 REST 接口与 Kafka 交互,方便非 Java 等语言访问;能用类似 SQL 的语法对 Kafka 流数据进行处理和分析;能管理和验证数据模式,确保数据一致性。
  • 商业版:在社区版基础上,增加了控制面板、负载均衡、跨中心数据备份、安全防护等高级特性。有可视化的控制面板,方便管理员全面监控和管理 Kafka 集群;可实现负载均衡,提高集群性能和稳定性;支持跨数据中心的数据备份,保障数据的高可用性;提供更高级的安全防护功能,如加密、认证、授权等。

技术支持

  • 社区版:依靠社区力量提供支持,用户可在社区论坛、问答平台等交流,获取开源社区的帮助和资源。
  • 商业版:Confluent 公司提供专业的技术支持团队,为企业用户提供及时、高效的技术支持,包括故障排除、性能优化等服务,还可根据企业需求提供定制化的解决方案。

适用场景

  • 社区版:适合学习、实验和小规模生产环境,数据量小、功能需求不复杂、对技术支持依赖度低的用户和团队。如开发者学习 Kafka 技术、小型企业构建简单的实时数据处理系统。
  • 商业版:适用于对数据处理有高要求的企业级场景,如金融、电信等行业的大规模数据处理、关键业务系统的数据集成和流处理,需要高可靠性、高安全性和专业技术支持的场景。

许可与成本

  • 社区版:永久免费使用,可自由下载、安装和部署。
  • 商业版:面向企业收费,根据使用的功能模块、集群规模、数据量等因素定价。

与 Kafka 的关系

Confluent 社区版是 Apache Kafka 的一个专业发行版,它增加了许多额外的功能和 API。

  • 技术基础:Confluent 以 Apache Kafka 为核心和技术基础进行开发。
    Apache Kafka 是一个开源的分布式流处理平台,提供了高吞吐量、低延迟的消息传递和流处理能力。
    Confluent 在 Kafka 的基础上进行了功能扩展和优化。
  • 功能扩展:Confluent Kafka 可以看作是 Kafka 的一个专业发行版,它增加了许多额外的功能和 API。
    比如 Schema Registry 用于管理数据模式,Rest Proxy 方便与非 Kafka 支持的语言进行交互,还有预构建的 Kafka 连接器和 KSQLDB 等。
  • 商业支持:Confluent 公司为 Kafka 提供了商业支持和服务,使企业能够更方便地在生产环境中使用 Kafka。
    Confluent 通过提供培训、技术支持、咨询等服务,帮助企业解决在使用 Kafka 过程中遇到的问题,降低企业的使用成本和风险。

安装

1. 准备工作

确保你的系统已经安装了 Java(Kafka 依赖 Java 运行环境),并且具备基本的网络连接和权限。

# 检查是否安装了Java
java -version

# 如果未安装Java,可使用以下命令安装OpenJDK 11
sudo apt update
sudo apt install openjdk-11-jdk -y

2. 下载 Confluent 社区版

访问 Confluent 官方下载页面(https://www.confluent.io/download/ ),获取社区版的下载链接。也可以使用以下命令直接下载最新版本:

wget https://packages.confluent.io/archive/7.5/confluent-community-7.5.0.tar.gz

3. 解压文件

# 解压下载的文件
tar -xzf confluent-community-7.5.0.tar.gz

# 进入解压后的目录
cd confluent-7.5.0

4. 配置环境变量(可选但推荐)

为了方便在任意目录下使用 Confluent 命令,你可以将 Confluent 的bin目录添加到系统的PATH环境变量中。

# 编辑~/.bashrc文件
nano ~/.bashrc

# 在文件末尾添加以下内容
export PATH=$PATH:/path/to/confluent-7.5.0/bin

# 使配置生效
source ~/.bashrc

5. 启动 Confluent 服务

Confluent 依赖多个组件,如 Zookeeper、Kafka、Schema Registry 等,你可以使用confluent local命令来管理这些服务。

# 启动所有Confluent服务
confluent local services start

6. 验证安装

可以通过创建一个简单的 Kafka 主题和发送消息来验证 Confluent 是否安装成功。

# 创建一个名为test_topic的Kafka主题
kafka-topics --create --topic test_topic --bootstrap-server localhost:9092

# 启动一个生产者,向test_topic主题发送消息
kafka-console-producer --topic test_topic --bootstrap-server localhost:9092

# 在另一个终端窗口中,启动一个消费者,接收test_topic主题的消息
kafka-console-consumer --topic test_topic --from-beginning --bootstrap-server localhost:9092

7. 停止 Confluent 服务

当你不需要使用 Confluent 服务时,可以使用以下命令停止所有服务:

confluent local services stop

通过以上步骤,你就可以在 Ubuntu 系统上成功安装并使用 Confluent 社区版了。

#867 基于 Web 技术的跨平台应用解决方案

2023-02-01
  • Web App,纯 Web App,需要用浏览器打开

随着浏览器厂商的持续推进,现在 WebApp 也能实现很多底层交互了

  • Native App,各平台的原生应用
  • Hybird App,在 App 中加入 WebView,实现部分逻辑
    根据 Native 和 Web 部分的比例,可以分成:

  • 交替

  • 混合,同一个窗口中,主体内容采用原生实现,部分组件是 WebView + WebApp(类似浏览器)
  • WebView + WebApp 为主体逻辑,加上 Native 交互

后端和框架核心通信,实现窗口管理,系统调用,WebView。

  • Electron
  • React Native (RN)
  • Tauri,后端开发语言 Rust,使用系统自带浏览器组件
  • Cordova
  • Ionic
  • NW.js
  • Expo
  • Capacitor
  • Quasar
  • NativeScript
  • Gluon

参考资料与拓展阅读

#866 时事政治

2023-01-29

俄乌冲突

2014 年乌克兰政变(“橙色革命”),亲俄总统亚努科维奇被推翻(逃亡俄罗斯),亲西方势力上台(总统是彼得·波罗申科),谋求加入北约。
俄罗斯随即侵入克里米亚半岛,乌克兰寻求国际援助。
随后,俄罗斯承认克里米亚共和国,并同意加入俄罗斯联邦的申请,成为克里米亚联邦管区。

附:克里米亚的历史

  1. 1783 年(清朝乾隆四十八年),克里米亚汗国被俄罗斯吞并,然后向这边大规模移民(大概像对待远东地区一样的政策)。
  2. 苏联时期转交给同为苏联加盟共和国的乌克兰管理。
  3. 1991 年,苏联解体,克里米亚半岛(亲俄)独立。
  4. 1992 年,俄罗斯调解下,克里米亚并入同样亲俄的乌克兰,作为乌克兰唯一一个自治共和国形式存在。

乌克兰国内本身也有很强的亲俄派势力,尤其是在靠近俄罗斯的地区。俄罗斯也和这些 ETO 份子合作,支持他们独立,然后以加盟共和国的形式,并入俄罗斯联邦。
入侵克里米亚,算他个历史遗留问题,多少能理解一些(从俄罗斯立场来看,克里米亚在苏联解体的时候没有拿回来是一个严重失误,现在乌克兰要投敌,那是自然要维护国家主权领土完整的)。
吞并乌东就没得洗了,没有争议的侵略。

乌克兰前往乌东地区平叛,俄罗斯站分裂势力,打打谈谈的,没完没了(俄罗斯方面以志愿军的方式和乌克兰分裂势力并肩战斗)。
2019 年现任乌克兰总统弗拉基米尔·泽连斯基(司机)上台。
2022 年 2 月,俄罗斯正式与乌克兰宣战,要“非军事化、去纳粹化”乌克兰。
2022 年下半年,乌东地区新成立的“顿涅茨克人民共和国”、“卢甘斯克人民共和国”加入俄罗斯联邦。

到现在已经打了一年了,根据最近在网络上看到的一些零碎消息,俄罗斯处于防守态势,占领地区不断被收复。
我本来以为是想以战促和,但是这个发展态势和我的理解偏差太大,我重新理一下思绪:

战略意图方面,
俄罗斯:击退北约东扩的意图,确保对东欧的影响力
乌克兰:确保领土完整,国家安全(加入北约是计划的一部分)

推测
俄罗斯完全不应该是这个水平,所以,我现在认为俄罗斯是想彻底拖垮乌克兰,最后实现对乌克兰的全面占领。
可能是想恢复苏联的模式:俄罗斯-白俄罗斯-乌克兰,再控制一下周边小国家,组成一个东欧联盟。
但我不确定现在俄罗斯真有这个实力。

房地产

  1. 房地产滞销,政策不停刺激新房交易,烂尾楼复工,同时二手房有价无市(挂牌之后难以成交)
  2. 房地产税
  3. 政府突然说是要恢复房地产这个经济支柱产业,释放了什么信号。

疫情

十二月放开之后的一个月,国家卫健委根据已知数据进行估算,大概因为疫情死亡近 6 万人,主要是 65 岁以上老人。

人口负增长

之前政府的《中华人民共和国第十四个五年规划纲要》和《2035年远景目标规划》文件中,预计中国的人口峰值将在2029年左右达到,之后将逐渐出现人口负增长。
但是根据政府公布的 2022 年人口数据,去年已经实现了人口负增长,比预期的提前了至少 7 年。

中央政府的专家团队行不行啊,不太靠谱。

另外,预计今年上半年(4 月)印度人口正式超过中国成为世界上人口最多的国家。

人口负增长本身不是什么坏事,但是在其他发展问题没有解决的时候,对老龄化担忧的加剧可能会让问题更加复杂一些。

#865 端对端加密通信软件

2023-01-29

相关文章:

端对端加密(End-to-end encryption,缩写为 E2EE)指的是,只有对话双方能够看到通信内容,其他第三方都无法解密,属于最安全的通信方式。
注意:按照国内相关法律,提供、使用无法监管的加密通讯工具有法律风险。

目前,支持端对端加密的通信软件,主要有下面这些:

  • Signal,据说是最安全的通信工具
  • Wire
  • Riot(Matrix 协议的实现)
  • Line
  • iMessage
  • Keybase
  • WhatsApp
  • Telegram
    默认没有启用端对端加密,只有打开"秘密对话"功能才会启用。
  • Status 去中心化,Matrix 加密通信协议
  • CoyIM 洋葱网络项目开发的匿名通信工具,Tor + TLS + XMPP + OTR(Off-The-Record)端对端加密

参考资料与拓展阅读