更新Arch后发现Sougou的候选款 是空白的,但能打字。
看很多教程重装qt4都不行。
然后试了一下打开搜狗输入法的设置,找到候选词数量重新随便设置一个然后重启输入法后发现恢复正常了
设置搜狗输入法>外观>设置候选词数量>随便选一个保存
重启输入法
这里是F_picachoの领域(๑•̀ㅂ•́)و✧Le vent se lève, il faut tenter de vivre.
看很多教程重装qt4都不行。
然后试了一下打开搜狗输入法的设置,找到候选词数量重新随便设置一个然后重启输入法后发现恢复正常了
设置搜狗输入法>外观>设置候选词数量>随便选一个保存
重启输入法
在grub里加上i8042.nomux=1参数
(base) master@archlinux ~$ cat /etc/default/grub
# GRUB boot loader configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="i8042.nomux=1 loglevel=3 quiet ipv6.disable=1"
GRUB_CMDLINE_LINUX=""
保存后执行下面命令更新到grub.cfg重启生效
sudo grub-mkconfig -o /boot/grub/grub.cfg
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:
- 嵌套的路由/视图表
模块化的、基于组件的路由配置
路由参数、查询、通配符
基于 Vue.js 过渡系统的视图过渡效果
细粒度的导航控制
带有自动激活的 CSS class 的链接
HTML5 历史模式或 hash 模式,在 IE9 中自动降级
自定义的滚动条行为
引用地址:https://router.vuejs.org/zh/
说白了就是一个单页应用(SPA)可以通过Vue-router切换到不同的”页面”
要想使用Vue-router就得先安装对应的插件然后将组件映射到路由。
安装
1.在生成项目时选择 Manually select features -> Router
2.在已有的项目中使用
npm i vue-router -S或者vue add router!但是注意 命令安装会造成文件覆盖,安装前一定要提交下项目
在main.js中 引入并且使用
Vue.use()进行注册import VueRouter from 'vue-router' Vue.use(VueRouter);
src -> router -> index.js
import Vue from "vue"; import VueRouter from "vue-router"; //引入vue-router import Home from "../views/Home.vue"; //引入组件 import About from "../views/About.vue"; Vue.use(VueRouter); //注册 const routes = [ { path: "/", //路由地址 component: Home //跳转的目标组件 }, { path: "/about", component: About, }, ]; const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes }); export default router; //抛出router配置完成后可以使用
<router-link to="Home">Home</router-link>创建跳转的链接 to属性相当于a标签的href属性
<router-view />标签作为路由出口渲染组件
在配置路由时可以给路由一个name属性进行动态切换
src -> router -> index.js
const routes = [ { path: "/", name: "Home", component: Home }, { path: "/about", name: "About", component: About, }, ];绑定to属性 {name:’路由中对应的home属性值’}
<router-link :to="{name:'Home'}">Home</router-link>
<router-link :to="{name:'About'}">About</router-link>这里还要注意下单引号和双引号嵌套问题
在网站中 经常有动态路由的情况 例如
https://space.bilibili.com/16052014这里的16052014就是一个动态路由,每一个不同的动态路由都会渲染相同组件不同的用户信息。src -> router -> index.js
import Vue from "vue"; import VueRouter from "vue-router"; import User from "../views/User"; //新创建的用户组件 Vue.use(VueRouter); const routes = [ { /* /:id就是动态路由匹配 例如http://xxxxx/user/1 这里的1就是匹配的:id */ path: "/user/:id", name: "User", component: User, } ]; const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes }); export default router; //抛出router使用params接收匹配路由 因为可能存在多个使用对象进行接收
<router-link :to="{name:'User',params:{id:1}}">用户1</router-link>
<router-link :to="{name:'User',params:{id:2}}">用户2</router-link>获取id中的内容与后端进行相对应的数据请求展示不同的数据
src -> views -> User.vue
“`javascript
$route是一个对象然后取到params字段然后再取到对应的key **!注意 当路由参数发生变化时 /user/1 切换到 /user/2时 原来的组件实例会被复用,因为两个路由渲染的是同一个组件,复用高效。** **但是带来的问题是因为组件是被复用的而不是重新进行渲染这里如果使用生命周期钩子函数会造成一些问题** 出现上述问题可以使用watch监听$route:(to,from) to是到哪里去 from是从哪里来 然后就可以愉快的进行一些操作了 例如ajax请求然后改变视图 (to.params.id) 还有一种方法就是利用导航守卫 beforeRouteUpdate ```javascript beforeRouteUpdate(to,from,next){ console.Log(to.params.id); //拿到对应去哪里的id就可以在这里发ajax请求了 next(); //注意这里一定要调用下next 否则路由会被阻塞 } </code></pre> </blockquote> <h3>404路由和匹配优先级</h3> <blockquote> 有这样一个场景用户输入了网站未定义的路由地址 默认Vue-router会跳转到首页,显然这样是不科学的,我们可以定义一个404路由提示用户你输入的地址不存在。 src -> router -> index.js <pre><code class="language-javascript line-numbers">import Vue from "vue"; import VueRouter from "vue-router"; import Home from "../views/Home.vue"; import About from "../views/About.vue"; import User from "../views/User"; Vue.use(VueRouter); const routes = [ { path: "/", name: "Home", component: Home }, { path: "/about", name: "About", component: About }, { path: "/user/:id", name: "User", component: User }, { path: "*", // *代表通配 也就是上面的路由没有找到会匹配到这里 自然这里就引申出一个优先级的问题 name: "404", component: () => import("../views/404") // 异步组件加载方式 效率更高 } ]; const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes }); export default router; </code></pre> <strong>!注意404路由一定要放到路由配置最下方,因为这里存在一个匹配优先级的问题 他会从上往下找 如果404路由放到首位或者中间某一个位置就会造成下方的路由失效</strong> src -> views -> User.vue ```javascript
*(通配符)在Vue-router中还有一些其他的作用例如在一个后台管理系统 src -> router -> index.js ```javascript import Vue from "vue"; import VueRouter from "vue-router"; import User from "../views/User"; import UserAdmin from "../views/UserAdmin"; Vue.use(VueRouter); const routes = [ { path: "/user/:id", name: "User", component: User }, { path: "/user-*", name: "UserAdmin", component: UserAdmin }, ]; const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes }); export default router; </code></pre> 如果说是一个这样的路由<code>http://localhost:8080/user/1</code>就是之前定义的用户动态路由如果说是一个这样的路由<code>http://localhost:8080/user-admin</code>他就会切换到一个admin路由下,可以使用<code>$route.params.pathMatch</code>获取到/user-*通配的内容 src -> views -> UserAdmin.vue ```javascript
```
有这样一种路由是长成这种样子http://localhost:8080/page?id=1&title=foo这种形式的路由这个例子有两个参数 src -> router -> index.jsimport Vue from "vue"; import VueRouter from "vue-router"; import Page from "../views/Page"; Vue.use(VueRouter); const routes = [ { path: "/page", name: "Page", component: Page }, ]; const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes }); export default router;src -> App.vue
```html
>
>
```
query为参数查询 当然这里的数据是写死的 因为我们使用的是命名路由未来可以替换成动态数据,然后可以在组件中拿到对应的参数进行一些操作。
```javascript
>
```
src -> router -> index.js
const routes = [ { path: "/", redirect:{name:'Home'} // 默认的 / 就会跳转到Home路由 }, { path: "/home", name: "Home", component: Home }, ];别名就不多说了
alias: '/aaa'一个属性 一个别名
在之前我们是使用
$route获取地址栏上的值进行传值,但是随着项目的复杂度增加地址栏上的参数会越来越多$route获取值的方式会显得复杂,也会跟路由形成高度的耦合,当前组件只能在特定的URL使用,限制了组件灵活。解决这个问题可以在定义路由的时候使用
porps属性src -> router -> index.js
{ path: "/user/:id", name: "User", component: User, props:true //使用props传值 },src -> views -> User.vue
```javascript
在路由中定义props还有其他的用法例如定义一个函数 src -> router -> index.js ```javascript { path: "/user/:id", name: "User", component: User, props: route => ({ id: route.params.id, title: route.query.title }) }, </code></pre> src -> views -> User.vue ```javascript
```
之后访问http://localhost:8080/user/1?title=lalalala就可以拿到对应的title参数值了
我们可以通过this.$route获取路由组件实例对象里面有一些方法例如push go back等方法进行动态的路由跳转,我们称之为编程形导航。 类似于<router-link :to="{name:'Home'}">Home</router-link>叫做声明形导航 例如我在User组件下添加了一个返回首页的按钮我们可以这样做 src -> views -> User.vue ```javascript
``` 也可以使用命名的方式例如this.$router.push("name");也可以是个对象this.$router.push({path:'/'});也可以是一个命名路由 也可以进行前进或者后退,使用this.$route.to()进行控制。参数1就是前进,参数0就是刷新,参数-1就是后退
{ path: "/user/:id", name: "User", component: User, props: route => ({ id: route.params.id, title: route.query.title }), children: [ { path: "posts", component: () => import("../views/Posts") } ] },然后就是在一个位置定义跳转
<router-link to="/user/1/posts">children</router-link>最后在user中定义路由出口<router-view />。
一般情况下,我们在路由配置中,一个路由路径只能对应一个组件,若想对应多个组件,必须得作为子组件存在,然后再一个公用的视图内显示,这是一个路由对应多个组件,这些组件对应一个视图(就是上面嵌套路由的玩法)
有时候想同时 (同级) 展示多个视图,而不是嵌套展示,例如创建一个布局,有
sidebar(侧导航) 和main(主内容) 两个视图,这个时候命名视图就派上用场了。你可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。src -> router -> index.js
const routes = [ { path: "/home", name: "Home", component:{ default:Home, //默认的名字 Sidebar:() => import('../views/Sidebar'), Main:() => import('../views/main'), } }, ];src -> views -> Home.vue
<router-view /> <router-view name="Sidebar"/> <router-view name="Home"/>
可以使用
router.beforEach注册一个全局前置守卫beforeRouteUpdate(to, from, next) { next(); },有个需求,用户在浏览网站时,会访问很多组件,用户跳转到
/notes,发现用户没有登录,此时应该让用户登陆后查看,应该让用户跳转到登录页面,登陆完成后看到我的笔记内容,这个时候全局守卫起到了关键作用。
下载完后解压出来,有这些文件
[master@archlinux ventoy-1.0.06]$ tree
.
├── boot
│ ├── boot.img
│ └── core.img.xz
├── log.txt
├── tool
│ ├── hexdump.xz
│ ├── mkexfatfs_32.xz
│ ├── mkexfatfs_64.xz
│ ├── mount.exfat-fuse_32.xz
│ ├── mount.exfat-fuse_64.xz
│ ├── ventoy_lib.sh
│ ├── vtoyfat_32.xz
│ ├── vtoyfat_64.xz
│ ├── vtoy_gen_uuid.xz
│ └── xzcat
├── ventoy
│ ├── ventoy.disk.img.xz
│ └── version
└── Ventoy2Disk.sh
sudo fdisk -l 找到你要安装磁盘 标示 如 /dev/sda 或者 /dev/nvme0n1p (nvme硬盘)
Disk /dev/sdb:14.45 GiB,15502147584 字节,30277632 个扇区
磁盘型号:DataTraveler 3.0
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1e391922
比如你要安装在这个U盘
sudo sh Ventoy2Disk.sh -i /dev/sdb
会提示你是否继续,这将会清除该磁盘所有数据,按y回车继续 然后让你再次确定 再输入y 回车。
制作完毕后直接把你的iso文件丢进去就可以用了
先安裝Docker
sudo pacman -S docker
創建一個容器
docker run -itd --name ws -v /www:/www --network host centos /bin/bash
后台運行一個centos容器 橋接網絡模式 容器名ws 宿主目錄/www 容器目錄/www綁定 進入容器打開shell
啓動容器
docker start ws
進入容器終端
docker attach ws
執行BT面板安裝命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
編輯 vi /root/.bashrc
加入內容 bt 3 (作用是啓動容器時BT面板跟隨啓動)

Ctrl + P + Q 退出容器但不關閉容器
可以耍了
訪問ip用http://127.0.0.1:8888/
[master@archlinux ~]$ steam Running Steam on arch rolling 64-bit STEAM_RUNTIME is enabled automatically Pins up-to-date! /home/master/.local/share/Steam/ubuntu12_32/steam Installing breakpad exception handler for appid(steam)/version(1586022601) libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast Installing breakpad exception handler for appid(steam)/version(1586022601) Installing breakpad exception handler for appid(steam)/version(1586022601) (steam:3644): Gtk-WARNING **: 19:39:32.682: 无法在模块路径中找到主题引擎:“adwaita”, (steam:3644): Gtk-WARNING **: 19:39:32.683: 无法在模块路径中找到主题引擎:“adwaita”, /usr/share/themes/deepin/gtk-2.0/main.rc:1090: error: unexpected identifier 'direction', expected character '}' libGL error: No matching fbConfigs or visuals found libGL error: failed to load driver: swrast Steam: An X Error occurred X Error of failed request: GLXBadContext Major opcode of failed request: 152 Serial number of failed request: 53 xerror_handler: X failed, continuing Steam: An X Error occurred X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 152 Value in failed request: 0x0 Serial number of failed request: 52 xerror_handler: X failed, continuing Steam: An X Error occurred X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 152 Serial number of failed request: 54 xerror_handler: X failed, continuing assert_20200422193931_1.dmp[3666]: Uploading dump (out-of-process) /tmp/dumps/assert_20200422193931_1.dmp /home/master/.local/share/Steam/steam.sh:行 722: 3644 段错误 (核心已转储)$STEAM_DEBUGGER "$STEAMROOT/$STEAMEXEPATH" "$@" assert_20200422193931_1.dmp[3666]: Finished uploading minidump (out-of-process): success = yes assert_20200422193931_1.dmp[3666]: response: CrashID=bp-52956212-7684-4721-a226-503cb2200422 assert_20200422193931_1.dmp[3666]: file ''/tmp/dumps/assert_20200422193931_1.dmp'', upload yes: ''CrashID=bp-52956212-7684-4721-a226-503cb2200422''
关键来了,原因是没有安装32位库,安装就好了
sudo pacman -S lib32-nvidia-utils
rm -rf ~/.config/JetBrains
呐在这里F_picacho向大家分享下我在使用VScode整理出的插件清单供大家参考。 针对上一次的分享内容有删改,因为vscode最新版集成了一些功能所以有的插件可以删除了,留着影响运行效率。
默认的vscode暗色系非常生硬,开发过程极影响心情。有一款能让自己愉快编码的主题也会在一定程度上提升编程效率和灵感。当然,不同人对于视觉的偏好是不同的。

Material Icon Theme 文件类型添加对应的图标展示
One Dark Pro 一款看着更柔顺的主题
Chinese (Simplified) Language Pack for Visual Studio Code 中文简体语言包
Prettier – Code formatter 一键Prettier风格 输入一串指令皆可把代码改变成流行的Prettier风格

注意这里需要进行对seetings.json文件进行配置 否则可能无法正常使用
ctrl+shift+p进入搜索 搜索seetings.json
插件其启用快捷键
// 默认代码风格配置shift+alt+f 或者直接使用指令Format Selection
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"window.zoomLevel": 0,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
Auto Complete Tag 修改 html 标签,自动帮你完成尾部闭合标签的同步修改
Path Intellisense 资源文件自动路劲补全
Preview on Web Server 热更新服务器 ctrl+shift+v在视窗内启动预览窗口 ctrl+shift+l在浏览器预览
这里不推荐live server 因为很长时间没有更新了 后期使用还有一些跨域的问题
open in browser 以本地的方式打开文件 支持所有内核浏览器 启用快捷键alt+shift+b
Bracket Pair Colorizer 2 标记代码块方便审计代码
JavaScript (ES6) code snippets 提示追加ES6语法模板
Easy Sass 编译Sass文件 不需要安装额外的执行环境 但是需要进行配置
// Easy sass插件配置
"easysass.compileAfterSave": true,
"easysass.formats": [
{
"format": "expanded",
"extension": ".css"
},
{
"format": "compressed",
"extension": ".min.css"
}
],
"easysass.targetDir": "./css/",
"workbench.iconTheme": "material-icon-theme" //路径
Sass Sass语法提示
Vetur Vue语法提示 高亮
Vue VSCode Snippets Vue语法模板快捷输入