📲

每日一技

Tag
效率
Slug
daily-skill
Created
Mar 17, 2023
💡
持续更新中…
2023-04-09
降低调用 chatGPT 接口 token 消耗的几种方法
  1. 使用英文
    1. 调用 openAI 的接口,使用中文会明显消耗更多的 token;
  1. 优化连续对话上下文传递的策略
    1. 接入过 ChatGPT 接口的应该都有所了解,模型的上下文能力是通过传入上次会话的所用内容实现的,这样带来的问题有两个:
    2. token 的消耗会随着会话内容的增加而持续上升,因为 token 的计数逻辑是同时针对输入输出的;
    3. 当 token 到达上限时,接口调用会失败
      1. 解决这个问题的思路就是:当会话内容到达一定数量级之后,让 AI 总结下之前会话的内容是什么,代替历史记录作为上下文。这样做也会有个问题,会导致没有被总结到的细节内容丢失,那就需要在 AI 总结策略上下功夫了。
2023-03-31
如何 Profile Node 应用?
  1. 跑 Node 时加 --cpu-prof 参数,比如 node --cpu-prof $(which npm) run version,结束后会产出一个或多个 .cpuprofile 文件
  1. 打开 https://www.speedscope.app/ 上传文件即可查看火焰图,包含详细的堆栈信息。参考这个和这个。
2023-03-28
  • ts 中类型谓词的使用
    • 问:如何用 ts 定义一个字符串,开头字母必是大写?
      答:可以使用类型谓词(Type predicates)
      // 使用了一个名为 __brand 的唯一 symbol 属性来标记 CapitalizedString 类型 // 这个属性实际上不会在运行时存在,它仅用于在类型系统中区分 CapitalizedString 和普通的 string 类型。 type CapitalizedString = string & { readonly __brand: unique symbol }; if (isCapitalized(inputString)) { // 如果输入字符串首字母大写,isCapitalized 类型谓词将确保 inputString 被视为 CapitalizedString 类型 processCapitalizedString(inputString); } else { console.log('输入字符串首字母不是大写'); } function isCapitalized(str: string): str is CapitalizedString { return /^[A-Z]/.test(str); } function processCapitalizedString(str: CapitalizedString) { // 在此函数中,你可以确信 str 是首字母大写的字符串 console.log('处理首字母大写的字符串:', str); }
2023-03-25
2023-03-21
  • quick circle by CSS
    • .circle { inline-size: 50vmin; aspect-ratio: 1; border-radius: 50%; }
  • @layer CSS at-rule
    • 非常实用的一个 CSS 规则,核心目标是用来管理 CSS 的层级。主要有以下几个使用场景:
      1. 对引入的三方 CSS 降权
        1. /* <tool-tip> styles */ @import "tool-tip.css" layer(components.tooltip); /* later, in some-new-context.css */ @layer components.tooltip { .some-new-context tool-tip { font-size: 10px; // 优先级始终高于 tool-tip.css 的样式 } }
      1. 在一个 CSS 巨石文件中,通过文件底部 @layer 对新添加的样式降权,防止对未知场景的复写
        1. /* hurge.css */ .body {***} p {...} /* 一大坨不敢动的 CSS */ /* 新引入的样式 * 优先级始终最低 */ @layer { p { font-size: 10px; } .new-sz: { ... } }
      1. 管理 CSS 内容的优先级,而不用担心选择器层级、样式覆盖的问题
        1. /* 默认优先级:丙 > 乙 > 甲 */ /* 手动调整优先级 甲 > 乙 > 丙*/ @layer 丙, 乙, 甲 @layer 甲 { p { color: red; } } @layer 乙 { p { color: green; } } @layer 丙 { p { color: orange; } }
2023-03-17
  • clone 项目的快捷方式
    • // .zshrc alias -s git="git clone --depth 1"
      直接输入 [email protected]:umijs/umi.git 就会 clone
  • bunx 作为脚本启动器
    • // index.ts function fn(param: string) { console.log(param) } fn('ppp')
      bunx tsx index.ts
  • 创建临时目录
    • // .zsh alias cdtmp='cd "$(mktemp -d /tmp/billq-XXXXXX)"'
      执行 cdtmp 后创建一个临时目录,目录会在电脑重启被删除