MacBook icloud 同步卡死, 请尝试重启电脑
环境说明 MacBook Pro M2 系统版本 13.4.1 网络环境为wifi 操作步骤 我往icloud的文件夹下,粘贴几个文件夹,文件的内容挺多的,然后finder上显示icloud的状态就一直是处于同步中了。 等了好久,同步的过程似乎卡住了。 网上看了一些解决方案,似乎都没啥作用。 我想起来以前的同样的一次卡顿同步的解决方案:重启电脑 于是,我重启了一次电脑,再次开机,打开finder, icloud文件状态非常快同步完了。
环境说明 MacBook Pro M2 系统版本 13.4.1 网络环境为wifi 操作步骤 我往icloud的文件夹下,粘贴几个文件夹,文件的内容挺多的,然后finder上显示icloud的状态就一直是处于同步中了。 等了好久,同步的过程似乎卡住了。 网上看了一些解决方案,似乎都没啥作用。 我想起来以前的同样的一次卡顿同步的解决方案:重启电脑 于是,我重启了一次电脑,再次开机,打开finder, icloud文件状态非常快同步完了。
golang每隔6个月发布一个新的次版本号升级。一般是是2月一个版本,8月一个版本 语言层面 增加内置函数 min() max() 参考 https://tip.golang.org/ref/spec#Min_and_max The built-in functions min and max compute the smallest—or largest, respectively—value of a fixed number of arguments of ordered types. There must be at least one argument. The same type rules as for operators apply: for ordered arguments x and y, min(x, y) is valid if x + y is valid, and the type of min(x, y) is the type of x + y (and similarly for max)....
语法 targets: prerequisites command command command targets是文件名,可以用空格分开多个文件名,一般情况下,只有一个 command是一系列的指令,可以多行分开 prerequisites是依赖项目,可以用空格分开多个 参考 https://makefiletutorial.com/#makefile-cookbook
请注意,VIM的光标现在位于错误弹窗上了。光标只能左右移动,无法上线移动。 我的光标被困在了错误提示框中。 因为错误提示只有一行,所以无法上下移动。 一直以来,我并没有把错误提示框也看成一个窗口,所以我可能多次按了ctrl + w w, 然后光标跳转到了错误提示框上。 正常的错误提示框,当光标不在关键词上时,错误弹窗会自动关闭的。 但是由于我已经进入了错误弹窗里面。 所以除非按窗口切换的快捷键,我会始终困在这个错误窗口中。 我觉得,VIM实在是太博大精深了。很多概念性的理解不到位,就会越到很多困难。 这些困难会给人造成极大的挫折感。 能解决困难,则学到东西。 否则就只能放弃VIM, 回到VScode的怀抱中。 但是,我已经习惯了不使用鼠标的快捷编辑方式。 我只能学会解决并适应VIM, 并且接受VIM的所有挑战。
在VScode中,可以使用右键来跳转到typescript类型对应的定义,但是用vim的gd命令却无法正常跳转。 因为无法正常跳转的这个问题,我差点放弃了vim。 然而我想别人应该也遇到类似的问题。 我的neovim本身使用的是coc插件,然后我就再次到看看官方文档,来确定最终有没有解决这个问题的方案。 功夫不负有心人。 我发现官方给的例子中,就包括了如何配置跳换的配置。 首先说明一下,我本身就安装了coc-json coc-tsserver这两个插件,所以只需要将如下的配置写入init.vim " GoTo code navigation nmap <silent> gd <Plug>(coc-definition) nmap <silent> gy <Plug>(coc-type-definition) nmap <silent> gi <Plug>(coc-implementation) nmap <silent> gr <Plug>(coc-references) 这样的话,在普通模式,按gy这个快捷键,就能跳转到对应的类型定义,包括某个npm包的里面的类型定义,非常好用。 亲测有效。
我一般会紧跟着NodeJS官网的最新版,来更新本地的NodeJS版本。 我的系统是ubuntu 20.4, 我用tj/n这个工具来更新Node。 但是这一次,这个命令似乎卡住了。 我排查后发现,是n这个命令在访问https://nodejs.org/dist/index.tab这个地址时,卡住了。 请求超时,因为默认没有设置超时时长,所以等待了很久才显示超时的报错,表现象上看起来就是卡住了。 首先我用dig命令查了nodejs.org的dns解析,我发现是正常解析的。 然后我又用curl对nodejs官网做了一个测试,发现也是请求超时。 curl -i -m 5 https://nodejs.org curl: (28) Failed to connect to nodejs.org port 443 after 3854 ms: 连接超时 这样问题就清楚了,然后我就想起来npmirrror上应该有nodejs的镜像。 在查看n这个工具的文档时,我也发现,它是支持设置mirror的。 其中给的例子用的就是淘宝NPM 就是设置了一个环境变量。然后执行source ~/.zshrc export N_NODE_MIRROR=https://npmmirror.com/mirrors/node 但是,我发现在命令行里用echo可以打印N_NODE_MIRROR这个变量的值,但是在安装脚本里,还是无法获取设置的这个mirror。 我想或许和我在执行sudo n lts时的sudo有关,这个.zshrc在sudo这种管理员模式下是不生效的。普通用户的环境变量也不会继承到sudo执行的环境变量里 最后,我用sudo -E n lts, 成功的从npmmirror上更新了nodejs的版本。 关于curl超时的这个问题,我也给n仓库提出了pull request, https://github.com/tj/n/pull/771
很早以前,要运行js,则必须安装nodejs,且没什么办法可以把js直接构建成一个可执行的文件。 后来出现一个pkg的npm包,可以用来将js打包成可执行的文件。 我好像用过这个包,但是似乎中间出过一些问题。 现在是2023年,前端有了新的气象。 除了nodejs外,还有其他的后来新秀,如deno, 还有最近表火的bun 另外nodejs本身也开始支持打包独立二进制文件了,但是需要最新的20.x版本,而且我看了它的使用介绍文档,single-executable-applications, 看起来是有有点复杂,光一个构建就写了七八步。 所以今天只比较一些deno和bun的构建出的文件大小。 准备的js文件内容 // app.js console.log("hello world") deno构建指令: deno compile --output h1 app.js, 构建产物为h1 bun构建指令: bun build ./app.js --compile --outfile h2, 构建产物为h2 -rw-r--r--@ 1 wangduanduan staff 26B Jun 1 13:34 app.js -rwxrwxrwx@ 1 wangduanduan staff 78M Jun 1 13:59 h1 -rwxrwxrwx@ 1 wangduanduan staff 45M Jun 1 14:01 h2 源代码为26b字节 deno构建相比于源码的倍数: 3152838 bun构建相比于源码的翻倍: 1804415 deno构建的可执行文件相比bun翻倍:1.7 参考 https://bun.sh/docs/bundler/executables https://deno.com/manual@v1.34.1/tools/compiler https://nodejs.org/api/single-executable-applications.html
常规构建 一般情况下,我们的Dockerfile可能是下面这样的 这个Dockerfile使用了多步构建,使用golang:1.19.4作为构建容器,二进制文件构建成功后,单独把文件复制到alpine镜像。 这样做的好处是最后产出的镜像非常小,一般只有十几MB的样子,如果直接使用golang的镜像来构建,镜像体积就可能达到1G左右。 FROM golang:1.19.4 as builder ENV GO111MODULE=on GOPROXY=https://goproxy.cn,direct WORKDIR /app COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o run . FROM alpine:3.14.2 WORKDIR /app COPY encdec run.sh /app/ COPY --from=builder /app/run . EXPOSE 3000 ENTRYPOINT ["/app/run"] 依赖libpcap的构建 如果使用了程序使用了libpcap 来抓包,那么除了我们自己代码产生的二进制文件外,可能还会依赖libpcap的文件。常规打包就会报各种错误,例如文件找不到,缺少so文件等等。 libpcap是一个c库,并不是golang的代码,所以处理起来要不一样。 下面直接给出Dockerfile # 构建的基础镜像换成了alpine镜像 FROM golang:alpine as builder # 将alpine镜像换清华源,这样后续依赖的安装会加快 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories # 安装需要用到的C库,和构建依赖 RUN apk --update add linux-headers musl-dev gcc libpcap-dev # 使用国内的goproxy ENV GO111MODULE=on GOPROXY=https://goproxy....
默认情况下VScode的tab栏,当前的颜色会更深一点。如下图所示,第三个就是激活的。 但是实际上并没有太高的区分度,特别是当显示屏有点反光的时候。 我想应该不止一个人有这个问题吧 看了github上,有个人反馈了这个问题,https://github.com/Microsoft/vscode/issues/24586 后面有人回复了 "workbench.colorCustomizations": { "tab.activeBorder": "#ff0000", "tab.unfocusedActiveBorder": "#000000" } 上面就是用来配置Tab边界的颜色的。 看下效果,当前激活的Tab下有明显的红线,是不是更容易区分了呢
CRLF 二进制 十进制 十六进制 八进制 字符/缩写 解释 00001010 10 0A 012 LF/NL(Line Feed/New Line) 换行键 00001101 13 0D 085 CR (Carriage Return) 回车键 CR代表回车符,LF代表换行符。 这两个符号本身都是不可见的。 如果打印出来 CR 会显示 \r LF 会显示 \n 不同系统的行结束符 Linux系统和Mac换行符是 \n Windows系统的换行符是 \r\n 如何区分文件的换行符? 可以使用od命令 od -bc index.md 假如文件的原始内容如下 - 1 - 2 注意012是八进制的数,十进制对应的数字是10,也就是换行符。 0000000 055 040 061 012 055 040 062 - 1 \n - 2 0000007 如果用vscode打开文件,也能看到对应的文件格式,如LF。 换行符的的差异会导致哪些问题? shell脚本问题 如果bash脚本里包含CRLF, 可能导致脚本无法解析等各种异常问题。 例如下面的报错,docker启动shell脚本可能是在windows下编写的。所以脚本无法 standard_init_linux.go:211: exec user process caused "no such file or directory" 如何把windows文件类型转为unix?...