Skip to main content

wKevin

openAI 提供多种 API:

  1. webAPI: 使用 curl、postman、insomnia 等访问。
  2. python API:pip install openai 即可开始使用,源码在 github上开源,文档没有专门的,但 OpenAI 另外一个开源项目 cookbook 中有很多例子可以参考。
  3. Node.js API: npm install openai 即可开始使用,源码在 github上开源,
  4. .NET API: 貌似开发中……

wKevin

Python 3.11 于 2022.10.24 发布正式版 3.11.0,历经 1 年开发和测试:

  • 2021.10 - 2022.04:发布 7 个 a 版本;
  • 2022.05 - 2022.07:发布 5 个 b 版本;
  • 2022.8.8:rc1
  • 2022.9.12:rc2
  • 2022.10.24:3.11.0

重点新特性:

  • Runtime、解释器
    • Faster Cpython
    • bytecode 中添加偏移量对应关系,以便 traceback 中指明出错位置
  • 语言(语法、词法)
    • 新增“异常组”:ExceptionGroup & try...except*
  • 标准库
    • 新增 tomllib 模块
    • asyncio 模块
      • 新增“任务组”:asyncio.TaskGroup
      • Task 新增 cancelling(), uncancel() 方法
    • inspect 模块
      • 新增 getmembers_static()
    • dataclasses 模块
    • typing 模块
      • 增加 typing.TypeVarTuple
      • 增加 typing.Self
      • 增加 typing.LiteralString
      • 增加 typing.TypedDict

本文来导读一下这个刚刚正式揭开面纱的新版本。

wKevin

局域网内多人之间、个人多台电脑之间 —— 如何快速分享、互传 git 管理的代码?

  • 邮件?
  • ftp?
  • scp [-P <port>] <src-file> <user>@<ip>/<dst-file>
  • python -m http.server
  • npm install http-server -g then http-server <root/dir> [-p <port>] ?

上面都行,但文件要逐个传或打包,然后手工合并……不妨用 git 内置的 server 来处理:

$ git daemon

wKevin

自从 vite 被 vue 官方替代了 vue-cli(webpack) 用来创建 vue 项目之后,先后出现了几个工具(封装)来作为创建项目的脚手架,各种 blog 中会搜到各个历史时期的用法,和各种变换用法,我来整理一下,因为搜到了废弃的用法还不小心用了起来,还挺烦人的。

下表中每种脚手架的 3 种使用方式效果是等价的,先说结论:用下表中的 (4)、(5),等效的

脚手架npm installnpxnpm init
create-vite-app
(已废弃)
(1)
npm install -g create-vite-app
create-vite-app my-project
npx create-vite-app(2)
npm init vite-app my-project
cd my-project
npm i
@vitejs/create-app
(已废弃)
npx @vitejs/create-app(3)npm init @vitejs/app
create-vite
(官方推荐)
npx create-vite(4)npm init vite@latest
(5)npm create vite@latest

wKevin
  • 官方的 4 本书,英文版在安装 rust 后可以 rustup doc 本地打开阅读,无需在线阅读。
  • Rust 中文翻译组(rust-lang-cn) 翻译了官方的 4 本,在线阅读托管在自己维护的 rustwiki 上。
  • RustCN 社区(rustlang-cn) 写了 4 本,其中创始人 Sunface 自己写了 2 本,同时他也是 Rust 语言周刊 的维护者。
  • 官方的 《程序设计语言》指定中文版并不是 Rust 中文翻译组的版本,而是 KaiserY 同学的。
Name官方Rust 翻译组RustCN个人
《The Rust Programming Language》
《Rust 程序设计语言》
github
在线阅读
github
在线阅读
KaiserY
github
在线阅读
《Rust by Example》
《通过例子学 Rust》
github
在线阅读
github
在线阅读
《The Rustonomicon》
《Rust 秘典(死灵书)》
github
在线阅读
github
在线阅读
《The Rust Language Reference》
《Rust 参考手册》
github
在线阅读
github
在线阅读
《Rust 语言圣经》Sunface
github
在线阅读
《Rust 语言实战》Sunface
github
在线阅读
《Rust 绣书》github
在线阅读
《Rust 算法题解》github
在线阅读

wKevin

6.18 又买了一个新的腾讯云 VPS,本以为轻车熟路 10 分钟配置完毕,没想到搞了半小时,配置 gitee 的 jenkins 插件就 10 分钟,又翻了一遍gitee 插件文档,每次都要翻一遍这个文档。

这次画个图,争取下次 3 分钟搞定 —— 但画图花了半小时,哈哈!

wKevin

Go 怎么调用 Python?或者说 Python 怎么嵌入到 Go?—— 我要研究明白。

  • 方案 1:go -- RESTFul -- python
    • 需要用户起一个 python 进程的 http server 进程,并且定义 RESTFul API。
  • 方案 2:go -- rpc -- python
    • 可用 grpc 或其他 rpc,也是需要单独启动一个 python 进程并开启 rpc server,go 中代码作为 rpc client。
  • 方案 3:go -- cgo/内存共享 -- python(C-API)
    • python 的解释器绝大多数人都是使用官方的 CPython,内核和解释器是用 C 实现的,可以用 C 代码方便的调用。
    • go 又和 C 是天然搭档,通过标准库中的 cgo 组件可以无缝调用 C。
    • 此时 python core 作为动态库链接到 go 上。

RESTFul 和 RPC 都是网络调用方式,更适合高度解耦的场景,cgo 或直接内存共享则是效率优先。 —— 我打算先摸索一下方案 3。一通搜索,找到了一些好文章,再加上 10 天左右的实战摸索,总结以下要点:

下面依次展开描述图中 1、2、3:

wKevin

VSCode 中换行分 2 个方面来说:

  1. 显示换行:用户的文档中并不真的有 \r\n 这些换行字符,而只是看到被换行了。
  2. 格式化换行:用户执行格式化命令(Ctrl-Shift-F右鍵-formate...F1-formate...)时 VSCode 或扩展在文档中指定位置插入 \r\n 之类的字符。

来看看 VSCode 中是如何配置这两种换行的。

wKevin

继续前面的文章 github pages 部署 docusaurus 进行优化,需求:

  1. Github Pages 与 jekyll 深度绑定,所以以前 wkevin/wkevin.github.io 上只有源码,但转用 Docusarurus 后需要自己维护 gh-pages 分支,几天下来还是让有强迫症的我感到不爽: git pull origin main 而不能简单的 git pull,否则 gh-pages 的内容会被 fetch 到本地。
  2. 因为 Github Pages 不给免费账号的 private 库提供服务,所以我的 blog 源码都暴露了。

解决方案:源码、编译后的制品拆分成 2 个 repo,从源码 repo(A) 向制品 repo(B) 进行 deploy。