React 入门教程之八 -- Lifting State Up 提升 state 层级
大多数情况下,不同的 components 之间需要对同一个变化着的 data 进行响应。推荐将这些 shared state 共享的数据提升到它们最近的 parent component 中,下面详细介绍如何实现这一 function。
下面创建一个 temperature calculator 温度计算器来判断在一个给定的温度下,水是否会沸腾。
大多数情况下,不同的 components 之间需要对同一个变化着的 data 进行响应。推荐将这些 shared state 共享的数据提升到它们最近的 parent component 中,下面详细介绍如何实现这一 function。
下面创建一个 temperature calculator 温度计算器来判断在一个给定的温度下,水是否会沸腾。
我在软路由上通过 esxi 安装了 openwrt 作为路由系统。虚拟机分配了 5 GB 作为存储空间,但是安装完成后通过命令查看发现系统识别到的空间只有很小:
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 252.0M 241.4M 5.5M 98% /rom
tmpfs 496.5M 68.0K 496.4M 0% /tmp
/dev/sda1 15.7M 3.8M 11.6M 25% /boot
/dev/sda1 15.7M 3.8M 11.6M 25% /boot
tmpfs 512.0K 0 512.0K 0% /dev
其中 /dev/root
是系统固件目录,不用考虑。/dev/sda*
就是系统实际可用的硬盘空间。我明明分配了 5 GB 空间给 openwrt 但是由于系统分区是在下载的固件中定义好的,所以其余空间就没有被识别。由于默认存储空间过小,当安装了过多的插件后,会提示空间不足导致无法安装更多插件:
verify_pkg_installable: Only have 0kb available on filesystem /overlay, pkg luci-app-openvpn needs 9
opkg_install_cmd: Cannot install package luci-app-openvpn
下面介绍如何将剩余空间挂在到 openwrt 中。
我们在编程中经常会使用一些固定语句来解决对应固定的问题,在 shell 脚本中一个被经常使用但不太好理解的短句就是 2>&1
,例如:
ls foo > /dev/null 2>&1
下面我们一步步了解下这种结构的含义。
最近需要实现一个自动发送 telegram 消息的功能,GitHub 上发现一个 telegram 第三方的命令行终端:telegram-cli。可以实现我需要的功能。
GitHub 主页:https://github.com/vysheng/tg
测试平台为 Ubuntu 18.04
最近搬进新家,配置好了局域网环境并使用海康 h99 作为存储中心共享资源给各个设备使用。它支持 smb 和 afp 协议共享文件,通常情况下 smb 就足够了。
之前我的 MacBook 是通过 usb 直接连接外部硬盘来进行 Time Machine 的,需要将硬盘格式化为 macOS 扩展格式。既然有了网络存储中心,那么为什么不将 Time Machine 也放在网络驱动器上呢?
研究了下果然有解决方案的,基本原理就是通过在网络驱动器上创建一个 macOS 格式的虚拟磁盘,然后再 MacBook 上挂载这个虚拟磁盘就可以正常进行备份及还原了。