黑白色空间

0%

vue 组件传值只能有单向数据流,即子组件只能通过事件来通知父组件的数据改变。

对于高度复杂组件,多层嵌套与多个平行,事件无法处理。

考虑以下情况:任意组件要能在任意时刻获取任意其他组件的实时数据。

组件数据交互,必然使用 vuex。

1.0 节流更新

组件改动会同步到 state,state 的改动也会同步到组件,并通过判等节流防止死循环。

1.0 缺点

实现复杂,需要监听本地和监听 state,分别判等赋值实现同步。每多一个数据,就要多一对对应操作。

2.0 读写分离

组件挂载后提交组件 this 指针到 state,用于读取,state 的其他数据会同步到组件,用于写入。并且注意写入 state 后不应立刻读取,应该把该数值传参到需要立即读取的地方,以避免脏读。

2.0 优点

简单直观,没有侵入性

2.0 缺点

只是需要一些注意:

  • 不要直接改动 this 的数据,应该是用作只读的。
  • 写入之后需要立刻读取的情况,应该直接传值而不要再从组件 this 里读取,因为可能未完成监听同步造成脏读。

概述

对于选择器一样的控件,进行二次包装后,需要处理数值传递的问题。本文提供一种方法,可以对内部数据改动和外部数据改动的双向同步。

核心

节流更新:组件改动会同步到 prop,prop 的改动也会同步到组件,并通过判等节流防止死循环。

添加代码片段:

settings --> user snippers --> new global snippers

官方示例:

1
{
2
  // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
3
  // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
4
  // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
5
  // used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
6
  // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
7
  // Placeholders with the same ids are connected.
8
  // Example:
9
  // "Print to console": {
10
  // 	"scope": "javascript,typescript",
11
  // 	"prefix": "log",
12
  // 	"body": [
13
  // 		"console.log('$1');",
14
  // 		"$2"
15
  // 	],
16
  // 	"description": "Log output to console"
17
  // }
18
}

说明:

  • scope: 需要应用的编程语言
  • prefix: 触发代码
  • body: 补全的内容,用$1等依次tab选取。
  • description: 显示的描述信息

对于这个字符在终端可能显示的很奇怪,因为是优先按照日文来显示的。

设置终端字体,在edit->preferences->custume font里面设置。

修复中文的渲染,编辑优先级。

1
sudo vi /etc/fonts/conf.avail/64-language-selector-prefer.conf

把中文字符家族放到最前面就可以了。

1
<?xml version="1.0"?>
2
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
3
<fontconfig>
4
  <alias>
5
    <family>sans-serif</family>
6
    <prefer>
7
      <family>Noto Sans CJK SC</family>
8
      <family>Noto Sans CJK JP</family>
9
      <family>Noto Sans CJK KR</family>
10
      <family>Noto Sans CJK TC</family>
11
      <family>Noto Sans CJK HK</family>
12
    </prefer>
13
  </alias>
14
  <alias>
15
    <family>serif</family>
16
    <prefer>
17
      <family>Noto Serif CJK SC</family>
18
      <family>Noto Serif CJK JP</family>
19
      <family>Noto Serif CJK KR</family>
20
      <family>Noto Serif CJK TC</family>
21
    </prefer>
22
  </alias>
23
  <alias>
24
    <family>monospace</family>
25
    <prefer>
26
      <family>Noto Sans Mono CJK SC</family>
27
      <family>Noto Sans Mono CJK JP</family>
28
      <family>Noto Sans Mono CJK KR</family>
29
      <family>Noto Sans Mono CJK TC</family>
30
      <family>Noto Sans Mono CJK HK</family>
31
    </prefer>
32
  </alias>
33
</fontconfig>

References

  1. Ubuntu 18.04 修复中文字体渲染问题 - Synscope

安装

ubuntu18.04下的安装

添加仓库源并安装

1
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -  # add key
1
echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list  # add list
1
sudo apt update && sudo apt install postgresql-11  # 安装

设置密码

配置一下默认的postgres用户的密码,登陆数据库要用到。

1
sudo -u postgres psql
2
\password

References

  1. PostgreSQL: Linux downloads (Ubuntu)

由于在win下有使用bash的需求,所以安装了cygwin,但最后还是用上了虚拟机来更好的体验。

卸载清理可能需要权限,可以尝试运行该脚本

1
SET DIRECTORY_NAME="D:\cygwin64"
2
C:\windows\system32\TAKEOWN /f %DIRECTORY_NAME% /r /d y
3
C:\windows\system32\ICACLS %DIRECTORY_NAME% /grant administrators:F /t
4
PAUSE

把路径改为自己的,以管理员身份运行后就可以右键删除了。

Reference

  1. 彻底删除Cygwin - 立体风 - 博客园

你可以终止那些容易引起阻止关闭的服务,或者直接缩短等的时间。

对于

1
a stop job is running for make remote cups printers available locally

关闭服务

1
sudo systemctl stop cups-browsed.service
2
sudo systemctl disable cups-browsed.service

设置关机等待时间

编辑/etc/systemd/system.conf

1
DefaultTimeoutStartSec=10s
2
DefaultTimeoutStopSec=10s

Reference

  1. a stop job is running for make remote cups printers available locally - Unix & Linux Stack Exchange
  2. 用户的会话c1正在运行停止作业…? 这是什么以及如何避免呢? :archlinux

【推荐】ubuntu自带的ibus,直接图形界面勾选智能拼音输入法即可,配置成功如上图。

【不推荐】谷歌拼音输入法,但是要先安装框架fcitx。但ubuntu的支持很差。

下面是安装fcitx的尝试。

安装系统中文支持

系统要安装字体等语言支持,在系统的语言设置里添加中文语言包即可。

注意: 你并不需要把系统语言也设置为中文。

安装fcitx和谷歌拼音

1
sudo apt install fcitx fcix-googlepinyin

配置启用

首先在系统语言设置里启用fcitx框架

然后在所有应用里找到fcitx configure配置添加谷歌输入法

接着重启系统

最后使用ctrl space快捷键进行输入法切换,切换出谷歌输入法就可以了。

tips

可能需要多次重启(这与兼容性相关,也是为何不推荐安装fcitx的原因)

Reference

  1. Ubuntu 18中文设置:IBus或fcitx输入法::拼音Joe-
  2. Ubuntu 18.04 fcitx chinese input setup(google and sogou) | ZedYeung