作者归档:Keystion

为什么 中文 不 需要 空格

这篇文章探讨了为什么中文不需要空格的原因。主要观点如下:

中文是一种典型的表意书写系统,每个汉字表示一个音节或语素。中文文本由连续的汉字组成,不同的词之间没有用空格分隔。大多数中文词可以用一到两个汉字表示,词长较短且变化较小。因此,中文读者在阅读时容易预测词的长度,从而更快识别词的开始和结束位置,即中文词边界位置的不确定性较小。

中文词边界位置的不确定性较小,无需空格来标记词边界。

相比之下,英语单词往往由多个字母组成,且词长的变化较大,这使得英语读者较难预测每个单词的开始和结束位置,即英语词边界位置的不确定性较大。因此,英语倾向于使用空格以减少词切分的认知负担。

英语词边界位置的不确定性较大,需要空格来标记词边界。


总之,中文和英语采用不同的词边界标记方式,都是为了实现更经济高效的阅读。

原文:为什么 中文 不 需要 空格

ERROR [nuxt] [request error] [unhandled] [500] fetch failed

ERROR [nuxt] [request error] [unhandled] [500] fetch failed

 ERROR  [nuxt] [request error] [unhandled] [500] fetch failed
  at Object.fetch (node:internal/deps/undici/undici:11118:11)  
  at process.processTicksAndRejections (node:internal/process/task_queues:95:5)  
  at async sendProxy (./node_modules/.pnpm/h3@1.11.1/node_modules/h3/dist/index.mjs:1157:20)  
  at async ./node_modules/.pnpm/h3@1.11.1/node_modules/h3/dist/index.mjs:1962:19  
  at async Object.callAsync (./node_modules/.pnpm/unctx@2.3.1/node_modules/unctx/dist/index.mjs:72:16)  
  at async Server.toNodeHandle (./node_modules/.pnpm/h3@1.11.1/node_modules/h3/dist/index.mjs:2249:7)

触发此错误代码

demo.vue

async foo() {
  const resData = await useFetch(`/api/good/1`, {
    method: 'DELETE',
  });
}

nuxt.config.ts

export default defineNuxtConfig({
  nitro: {
    routeRules: {
      "/api/**": {
        proxy: `${env.NUXT_API_URL}api/**`,
      },
  }
}

临时解决方案

把请求方式改为 POST 请求。

async foo() {
  const resData = await useFetch(`/api/good/1`, {
    method: 'POST',
  });
}

网上有说是这些情况:

  1. 代理域名 httphttps 的问题,测试过不是这个问题,和域名无关。
    1. 排查域名请求日志,出现此问题时,请求日志没有记录,说明请求没有到达后端,是前端请求问题。
    2. 尝试改下请求方式,发现 POST 请求正常,DELETE 请求报错,也许是请求方式问题,但是不确定,先临时解决一下。
  2. 降级 h3@1.9.0 版本,降级后,问题依然存在。
  3. 降级 nuxt@3.10.3 版本,降级后,问题依然存在。

参考

  1. 基于nitro的Nuxt3服务端无法请求https,难道是我写错了?
  2. [nuxt] [request error] [unhandled] [500] using proxyRequest or sendProxy · Issue #376 · unjs/h3
  3. Nuxt v3.11.0 proxyRequest in server api routes makes nitro crash if proxy server is down · Issue #26318 · nuxt/nuxt

印象笔记导出Markdown

解决方案

  1. 确认印象笔记版本 9.5.10

  2. 导出笔记:

    1. 方式一:全选笔记导出为 .enex 格式。
    2. 方式二:选择笔记本导出为 .enex 格式。
  3. .enex 格式转换为 .md 格式

    方式一:

    使用 evernote2md 工具将 .enex 格式转换为 .md 格式。

    evernote2md 我的笔记.enex ./output
    

    方式二:yarle

  4. done。

获取印象笔记 9.5.10 版本安装包:

链接:https://pan.quark.cn/s/dc30a92ff0c6

提取码:jVuH

背景

已经不在使用印象笔记有几年,打算把笔记导出来,以备后用(会吗?)。

印象笔记为国内版,国际版为 Evernote。国内版的笔记从 9.5.10 版本之后是无法导出为 .enex 格式的,只能导出 .notes.html 格式,.notes 还是加密的(encoding="base64:aes"),国际版可以正常导出 .enex 格式。 evernote2md 可以将 .notes 格式转换为 .md 格式。

  • 方案1:.notes + evernote2md 🙅
  • 方案2:.html + evernote_move 🙅
  • 方案3:.enex + evernote2md
  • 方案4:.enex + yarle

方案4 yarle 优点,支持导出多种软件使用的Markdown格式(更多),如:

  • Obsidian
  • LogSeq
  • Tana
  • Heptabase

参考

  1. wormi4ok/evernote2md – Github
  2. akosbalasko/yarle – Github
  3. 印象笔记导出格式更新,enex变为notes,恶心行为+1
  4. 印象笔记导出HTML再转markdown的方法_印象笔记导出markdown-CSDN博客

在prettier3项目中替代pretty-quick

解决方案

.husky/pre-commit 中添加以下内容

# 获取暂存区的文件列表
FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g')
[ -z "$FILES" ] && exit 0

# 美化所有暂存区的文件
echo "$FILES" | xargs ./node_modules/.bin/prettier --ignore-unknown --write

# 将修改/美化的文件添加回暂存
echo "$FILES" | xargs git add

背景

在 prettier v3.x 版本的项目中,使用 pretty-quick 会报错:

.../isSupportedExtension.js:12
  ..._prettier.resolveConfig.sync(file, {
                             ^
TypeError: _prettier.resolveConfig.sync is not a function

可以降低 prettier 版本到 2.x 来解决这个问题,但是项目里面额外使用了 tailwindcss,而 tailwindcss 依赖的 postcss 依赖的 prettier 版本是 3.x,所以降低 prettier 版本不是一个好的解决方案。

参考

  1. Pre-commit Hook · Prettier
  2. pretty-quick will break with prettier v3 · Issue #164 · azz/pretty-quick
  3. Editor Setup – Tailwind CSS
  4. tailwindlabs/prettier-plugin-tailwindcss: A Prettier plugin for Tailwind CSS that automatically sorts classes based on our recommended class order.

Chrome 119.0.6045.199 DevTool Network UI BUG

BUG 描述

<video width="640" height="480" controls>
<source src="https://images.webclown.net/videos/Chrome%20DevTool%20BUG.mp4" type="video/mp4">
</video>

aHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vY2hyb21lL2Fuc3dlci8xODY4NTA/dmlzaXRfaWQ9NjM4Mzc1MzExMTU2NTEwODcyLTIwOTg5NjA2NjMmcD1mZWVkYmFja19jb25maXJtYXRpb24mcmQ9MQ==

BUG 修复(2023-12-14 更新)

::: warning 提示
升级到 120.0.6099.71 + 版本后,BUG 已修复。
:::

我使用的快捷指令(iOS,iPadOS,macOS)

平常有用到的一些常用的快捷指令,可以在 快捷指令.app 中打开,并使用。

iOS

iPadOS

macOS

图片、视频

徕卡水印

https://www.icloud.com/shortcuts/3446145a0980480caef78e8a641d49c5
徕卡水印

哈苏水印

https://www.icloud.com/shortcuts/cfc0151ba78343e1ab5477cd894c59c9
哈苏水印

Apple水印

https://www.icloud.com/shortcuts/ea6e897570504b28a8f1fb8a3b9306b4
Apple水印

阿莱水印

https://www.icloud.com/shortcuts/f89ac598fa9e4483b95e00c5483cf277
阿莱水印

Lumix水印

https://www.icloud.com/shortcuts/6a3b9a3e6e9443c5bde872f62d2a3d97
Lumix水印

蔡司水印

https://www.icloud.com/shortcuts/0d678d51c5f2464c8ca485edafa075ec
蔡司水印

富士水印

https://www.icloud.com/shortcuts/24a69e95508e4ea18f77a1f04106125a
富士水印

索尼水印

https://www.icloud.com/shortcuts/a38e70a622c14d9abc69afca1a3f6f1b
索尼水印

佳能水印

https://www.icloud.com/shortcuts/67801f45a15346fab6674a63012e0900
佳能水印

尼康水印

https://www.icloud.com/shortcuts/1a8314cadb874550877cf0caf80b7d0a
尼康水印

iPhone水印

https://www.icloud.com/shortcuts/aa0a3c6f879b4a239efed7da72825655
iPhone水印

视频到 GIF

https://www.icloud.com/shortcuts/22693aae57ba4f57af5d1db80ae632a0

Bing Wallpaper

获取 bing.com 的壁纸,储存到相册,然后设置为桌面壁纸,结合自动化,实现每日自动更换壁纸

https://www.icloud.com/shortcuts/68ee2f995d9e416e8d8564bbd2f1d331

压缩图片

https://www.icloud.com/shortcuts/417c2eee095a4ba299b026ffd76eacae

截屏

  • macOS 储存到桌面
  • iOS、iPadOS 储存到相册

https://www.icloud.com/shortcuts/73bf300bb15b42da97eaf690c231aa15

最开始是在 mac 上使用,想要截取APP切换界面,电脑上出现这个界面之后就没办法再去按截屏键,然后想通过Siri语音触发这个快捷指令,然后实现了截屏

macOs Sonoma command + tab 无法切换窗口

其他

扫一扫

https://www.icloud.com/shortcuts/6558c55151a147f0923072a1db3202c8

定位解析

https://www.icloud.com/shortcuts/44516645ba2340709b6851100fef103c

🕰️ 时间:2023年10月26日 18:53:10
📍 位置:北京市xxx路

🌏 坐标:北纬 39°00′00.00″ 东经 116°00′00.00″
⛰️ 海拔:40.939米

手电筒闪烁

https://www.icloud.com/shortcuts/b422552335774500bdac786c8db605ba

standby

https://www.icloud.com/shortcuts/09f757ff0c1a4dc98728d87b25ca9605

结合自动化,实现定时息屏

更多推荐

可疑邮件:企业网址域名通知函

起因

最近帮朋友维护公司相关网站,有个域名即将到期,不准备续费了,让帮忙把域名下的服务转移到另一个网站。

然后去阿里云域名服务里面查看该域名的信息,还有 200 多天过期,但是看 ESC、虚拟主机 实例里面都没有该域名解析对应的 IP。追问情况下,对方发给一张截图,说最近公司收到了这个通知函。

企业网址域名通知函

然后再仔细看图片就不太对了,域名不正常、续费价格不正常、续费年限都不对。

正常续费价格:

  • 首次购买和续费 价格一样
  • 白金域名(短域名或品牌域名),首次购买和续费均有溢价
  • 其他情况,首次购买有溢价,续费正常价格

续费年限:1-10 年 均可以续费,并不是5、10年限制

结果

抱着试试看的态度,搜索了一下「企业网址域名通知函 可疑邮件」,

企业网址域名通知函 可疑邮件 搜索结果

如果你尝试联系对方,微信对方不加,电话联系,非常热情。

参考

macOs Sonoma command + tab 无法切换窗口

问题描述

最近更新电脑(MacBook Pro)系统升级到 macOS Sonoma,在使用过程中发现下面的问题,忍受了一段时间,最终还是决定解决一下。

全屏应用、非全屏应用这两种应用,在使用 command + tab 切换应用的时候,捷键的指令已经执行完毕,应用状态也已经切换了,但是无法“聚焦切换”到对应的应用上。

图1:全屏应用、非全屏应用这两种应用,在使用 command + tab 切换应用的时候,捷键的指令已经执行完毕,应用状态也已经切换了,但是无法“聚焦切换”到对应的应用上。

解决方案

最终在系统设置中找到了解决方案,如下图所示:

图2:切换到某个应用程序时,会切换到包含该应用程序的打开窗口的空间

设置入口:

  1. 屏幕左上角「🍏」 > “系统设置”,
  2. 点按边栏中的“桌面与程序坞” ,前往右侧的“调度中心”,
  3. 然后打开“切换到某个应用程序时,会切换到包含该应用程序的打开窗口的空间”。

官方解释:

图3:切换到某个应用程序时,会切换到包含该应用程序的打开窗口的空间

图4:When switching to an application, switch to a Space with open windows for the application

参考资料

怎么区分Arc浏览器和Chrome浏览器

背景

在给 Workflows 页面里面的 Chrome 书签,添加 快速使用示例代码 时,发现在 Arc 浏览器里面,无法正常使用,而在 Chrome 浏览器里面可以正常使用。

看看怎么区分一下 Arc 浏览器和 Chrome 浏览器,然后在 Arc 浏览器不给提示。

快速使用示例代码

查看两个浏览器的 User Agent,一毛一样:

Arc 浏览器:

Arc Browser User Agent

> navigator.userAgent
< 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'

Chrome 浏览器:

Chrome Browser User Agent

> navigator.userAgent
< 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'

解决方案

搜索找到了这篇文章:Can JavaScript detect the Arc browser? – Stack Overflow

根据这篇文章里面的提示,可以通过 获取 Arc 浏览器 的 User Agent Atylesheet(浏览器默认样式) 来区分 Arc 浏览器和 Chrome 浏览器。

User Agent Atylesheet(浏览器默认样式)

:root {
    --arc-palette-cutoutColor: #ECEDFEFF;
    --arc-palette-backgroundExtra: #FDFDFFFF;
    --arc-palette-minContrastColor: #ECEDFEFF;
    --arc-palette-hover: #D3D4FDFF;
    --arc-palette-background: #E9EAFEFF;
    --arc-palette-focus: #9094FBFF;
    --arc-palette-foregroundPrimary: #3139FBFF;
    --arc-palette-maxContrastColor: #212AFBFF;
    --arc-background-gradient-color0: #C8CAFEFF;
    --arc-palette-subtitle: #A6AAFBFF;
    --arc-palette-foregroundSecondary: #8489FBFF;
    --arc-palette-foregroundTertiary: #ECEDFEFF;
    --arc-background-gradient-color1: #FFE6E6FF;
    --arc-palette-title: #0A0D4BFF;
}

只判断是否有值其中一个变量存在就可以了。

<script setup lang="ts">
import { onMounted, ref } from 'vue'
const isArcBrowser = ref(false);

onMounted(() => {
  isArcBrowser.value = getComputedStyle(document.documentElement)
    .getPropertyValue('--arc-palette-title') ? true : false;
  console.log('isArcBrowser', isArcBrowser.value);
});
</script>

参考

  1. Can JavaScript detect the Arc browser? – Stack Overflow

Workflows with Alfred

caniuse

willfarrell/alfred-caniuse-workflow: Alfred App Workflow for caniuse.com

alfred-caniuse-workflow

cdnjs

Alfred 3 workflow to search libs on cdnjs

chitacan/alfred-cdnjs

alfred-cdnjs

Chrome 书签

bayleedev/alfred-chrome-bookmarks: :bookmark: Fast Chrome bookmark searcher for Alfred.

alfred-chrome-bookmarks

Font Awesome

ruedap/alfred-font-awesome-workflow: 🎩 Font Awesome workflow for Alfred

alfred-font-awesome-workflow

GitHub

willfarrell/alfred-github-workflow: Searching Github repos.

alfred-github-workflow

gitignore

jdno/alfred-gitignore: Create .gitignore files using Alfred

alfred-gitignore

Hash

willfarrell/alfred-hash-workflow: Hashing Strings

alfred-hash-workflow

MDN Search

alfred-workflows/mdn-search at main · gilbarbara/alfred-workflows

mdn-search

Open url in Browser

linxz/alfredWorkflow-Open-url-in-Browser-without-http: 自从用了alfred后,比较依赖这个东西,然后很多时候都是直接通过这个打开浏览器的……无意间发现其实可以同时打开多个,于是稍微调整一下……

Open url in Browser

Package Repo Search

willfarrell/alfred-pkgman-workflow: Package Repo Search

所有命令

Package Repo Search

Youdao Translator

wensonsmith/YoudaoTranslator: Alfred Youdao Translate Workflow

YoudaoTranslator

WiFi Workflow

ravelll/wifi-workflow: A Alfred workflow to simply control Wi-Fi setting on macOS.

wifi-workflow