#880 婴幼儿发育过程

2023-02-22

三个月

  • 侧头
  • 大概每三个小时喝一次奶,每次 30 ~ 60ml

六个月

  • 翻身

九个月

  • 发音

一岁

  • 快速爬
  • 扶墙站立

一岁半

  • 扶墙走
  • 爸爸妈妈
  • 简单词汇

两岁

新生儿期(出生后0-1周):此阶段主要特征是适应生活外界环境,体重会有一定的下降,进一步完善各项器官的功能,开始有了自己的生物节律。标志性能力包括眨眼、吸吮、哭声反应等。新生儿的饮食主要是母乳或配方奶粉,每次喂养量为30-90毫升,每天喂养次数为8-12次。

1个月(1-4周):在这个阶段,婴儿开始对声音和光线有反应,能够逐渐掌握头部的控制,能够看到5-6米以内的物体。标志性能力包括抬头、伸手抓取等。饮食方面需要注意,每次喂养量为90-120毫升,每天喂养次数为7-8次,同时也可以逐渐开始尝试母乳以外的辅食。

2个月(5-8周):在这个阶段,婴儿的视力逐渐提高,能够追随物体移动,开始逐渐掌握侧卧和俯卧的能力,开始有意识地笑出声音。标志性能力包括抓握、哭声表达等。饮食方面需要注意,每次喂养量为120-150毫升,每天喂养次数为6-7次,逐渐开始增加辅食的种类和量。

3个月(9-12周):在这个阶段,婴儿开始逐渐掌握翻身、坐起来的能力,开始能够有意识地玩耍和观察周围的环境。标志性能力包括控制头部、抬手等。饮食方面需要注意,每次喂养量为150-180毫升,每天喂养次数为5-6次,同时逐渐增加辅食的种类和量。

4-6个月:在这个阶段,婴儿开始能够掌握爬行、翻滚、坐立等能力,开始逐渐有意识地迎合自己的名字和关注周围的人和事物。标志性能力包括喊叫、制造声响等。饮食方面需要注意,每次喂养量为180-210毫升,每天喂养次数为4-5次,同时逐渐增加辅食的种类和量,包括米粉、果泥等。

7-9个月:在这个阶段,婴儿开始能够掌握站立、扶墙行走等能力,开始有了一定的社交能力,能够认识和表达简单的语言。标志性能力包括发音、模仿等。饮食方面需要注意,每次喂养量为180-240毫升,每天喂养次数为3-4次,同时辅食种类和量也逐渐增加,包括鸡肉泥、蔬菜泥等。

10-12个月:在这个阶段,婴儿开始能够掌握走路、爬楼梯等能力,逐渐有了一定的独立性,开始逐渐学习简单的语言、数字等。标志性能力包括简单的语言表达、走路等。饮食方面需要注意,每次喂养量为240-300毫升,每天喂养次数为3次,同时辅食的种类和量也逐渐增加,包括鱼肉泥、水果泥等。

一岁:在这个阶段,宝宝已经能够走路,理解一些简单的语言和指令,开始展现出自己的性格和偏好。标志性能力包括行走、语言和认知能力。饮食方面需要注意,每次喂养量为240-300毫升,每天喂养次数为3次,同时辅食的种类和量也逐渐增加,包括豆腐、鸡肉等。

二岁:在这个阶段,宝宝已经可以自己穿脱衣服、使用餐具、说出自己的名字等,开始表现出独立性和自主性。标志性能力包括独立性和语言能力的提高。饮食方面需要注意,每次喂养量为240-360毫升,每天喂养次数为3次,同时逐渐加入各种蔬菜、水果、肉类等辅食。

三岁:在这个阶段,宝宝已经开始掌握一些基本的社交技能,开始学习认字、数数等,逐渐表现出更多的独立性和好奇心。标志性能力包括社交技能、认知能力和好奇心的提高。饮食方面需要注意,每次喂养量为240-360毫升,每天喂养次数为3次,同时加入更多的蔬菜、水果、肉类等辅食,多给宝宝提供一些丰富的口味和纹理。

#879 Next、Nuxt、Nest的区别

2023-02-20

Twilio Blog 的文章《Next, Nest, Nuxt… Nust?》,讲 Next.js,Nest,Nuxt 这几个名字非常相近的 NodeJS 框架到底有什么区别。

flowchart TD
    A[Framework purpose?] -->|Pure Backend| B(Plain HTTP Handlers?)
    B -->|Y| C(express)
    B -->|N| D(nest)
    A -->|Focus on Rendering| E(Rendering Type)
    E -->|CSR| F(React<br>Angular<br>Vue<br>NuxtJS)
    E -->|Backend light| H(Next<br>NuxtJS)
    E -->|Mostly SSR| G(Gatsby<br>Next<br>NuxtJS)

流行程度对比:

  • Express
  • Nest

...

  • Next.js
  • Nuxt
  • Gatsby

...

  • React
  • Vue
  • Angular

Express

Express 是 Node 圈子的老牌 HTTP Server 框架,根据 NPM 下载量来看,可以说是事实标准。

Nest

LOGO

基于 Express,当然也支持替换成其他的 HTTP Server 库。

Next

Next.js 是一个基于 React 的前端应用开发框架。

Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验:包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能 无需任何配置。

Nuxt

基于 Vue 的前端应用开发框架。

#878 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 是通过穿戴设备,创造一个虚拟和现实叠加的世界,帮助人同时实现对现实世界和虚拟世界的交互。

#877 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)
    }
}

#874 ARC(Authenticated Received Chain)

2023-02-08

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

#873 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 社区版了。

#872 基于 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

参考资料与拓展阅读

#871 时事政治

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 月)印度人口正式超过中国成为世界上人口最多的国家。

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