问题
在微信修改群名称的时候,发现无法使用多个特定的emoji,但是有许多emoji是可以使用多个的。
无法使用的emoji:👨👨👧👧
思路
由技术常识知道,emoji底层本质上也是Unicode编码的符号,那有没有可能是个别emoji的底层Unicode编码过长导致的呢?我们需要途径去查看emoji的Unicode编码,可以通过这个网站去查看(Unicode Full Emoji List)。这个网站包含了所有最新的emoji,因此加载的时候比较慢。
在微信修改群名称的时候,发现无法使用多个特定的emoji,但是有许多emoji是可以使用多个的。
无法使用的emoji:👨👨👧👧
由技术常识知道,emoji底层本质上也是Unicode编码的符号,那有没有可能是个别emoji的底层Unicode编码过长导致的呢?我们需要途径去查看emoji的Unicode编码,可以通过这个网站去查看(Unicode Full Emoji List)。这个网站包含了所有最新的emoji,因此加载的时候比较慢。
// 用于匹配是否被 i18n 块包裹
const i18nKeyPattern =
/(?:i18n(?:-\w+)?[ (\n]\s*(?:key)?path=|v-t=['"`{]|(?:this\.|\$|i18n\.|[^\w\d])(?:t|tc|te)\()\s*['"`](.*?)['"`]/gm
const str = "$t('当有效期结束时间到了,是否直接下线?')"
// Array(2) ["$t('当有效期结束时间到了,是否直接下线?'", "当有效期结束时间到了,是否直接下线?"]
i18nKeyPattern.exec(value)
// null
i18nKeyPattern.exec(value)
// true
i18nKeyPattern.test(value)
// false
i18nKeyPattern.test(value)
在 Vitepress
中引入组件与样式时,报找不到路径的问题。
<script setup>
import { SearchUser } from '@***/bdi-component'
import '@***/bdi-component/dist/style.css'
</script>
在我们写 Vue 组件时,经常会遇到自定义 v-model 或 prop.sync 的需求。一般来说,我们有两种方法实现这种需求:
watch
分别监听 props 和 内部变量的变更,前者初始化内部变量,后者在内部变量变更时 emit
一个 input
/ update:prop
事件使外部变量同步变更。computed
变量,定义它的 get
方法为获取 props 值,set 方法为 emit
事件。由于是 tailwindcss 切 unocss,其中有 @apply 指令还是挺好用的。在 unocss 这边,有两种实现方式:
@unocss/transformer-directives
,该方案仅支持 Vite
@unocss/postcss
,该方案支持 Webpack
但需要安装 postcss
由于项目较大,目前暂时不考虑迁移 Vite
,因此只能采用 postcss
的方案来支持 @apply
。
由于项目中 lock 文件被删,重新安装依赖后发现许多依赖都自动升级到最新版本了,因此想着干脆对项目中的依赖进行一次统一升级。在升级了 webpack
后,顺便将一些 loader 也进行升级,升级后出现了一系列的问题。
mini-css-extract-plugin
导致 url()
引入报错今天在 1.3.9 版本时,发现 publicPath
设成 '../'
时,引入的字体文件链接变成了这样:src:url([file:///Users/crab.huang/Project/abtest.web/node_modules/.pnpm/css-loader@6.7.3_webpack@5.77.0/node_modules/css-loader/dist/cjs.js!/Users/crab.huang/Project/abtest.web/node_modules/.pnpm/less-loader@3.0.0_less@2.7.0/node_modules/less-loader/lib/loader.js!/Users/crab.huang/Project/abtest.web/src/common/font/element-icons.ttf](file:///Users/crab.huang/Project/abtest.web/node_modules/.pnpm/css-loader@6.7.3_webpack@5.77.0/node_modules/css-loader/dist/cjs.js!/Users/crab.huang/Project/abtest.web/node_modules/.pnpm/less-loader@3.0.0_less@2.7.0/node_modules/less-loader/lib/loader.js!/Users/crab.huang/Project/abtest.web/src/common/font/element-icons.ttf))
前端使用 Vue
搭建,后端使用 springboot
+ spring security
,各自分离部署,这是前提。
在一天中午,某位测试同学丢过来一个缺陷,说这边登出后重新访问注册、找回密码等接口会报错,但是第二次就访问成功了。这个还是挺出奇的,毕竟没有遇到过相关的问题,马上上系统查看问题。
首先自己根据测试同学给出来的复现步骤(登录-登出-调用注册、找回密码等接口)执行了一遍,打开F12,看到了一个奇怪的报错——302
?!
docker
方式部署 jenkins
,若需要使用 blueocean
请务必在启动容器时带上 -v /var/run/docker.sock:/var/run/docker.sock
命令,否则将会导致找不到 docker
进程。gitee
,blueocean
方式下需要通过 ssh
模式连接仓库,涉及到 ssh
公钥和私钥生成的问题。在 jenkins
中配置 ssh
的私钥时切记!要将私钥文件中的所有内容(包括开始的第一行和最后一行)复制进去。docker
方式部署 jenkins
,本身 jenkins
和实际运行环境(宿主机)是相互隔离的,因此打包好的文件要想办法回传到宿主机并运行起来。这里采用了 jenkins
的一个插件 publish over ssh
。由于 blueocean
仍然不够完善的原因,在 GUI
选择 ssh
时没有可以配置的选项,因此我们需要查看这个文档,通过自行编辑 Jenkinsfile
文件来进行配置。ssh
时,要知道如何访问到宿主机,换句话说就是要知道宿主机的地址。我们可以通过通过 ifconfig
找到 docker0
这张网卡的 ip 地址,通过 ip 地址就可以访问到宿主机啦。(在 docker
网络模式是默认 bridge 模式下是可行的,其他模式还需要探索)publish over ssh
插件中的 sourceFiles
配置是基于 workspace
目录下的,而推送到的主机因此如果需要将目录下的所有文件推过去,要使用 **
。