2022-年终总结
发表于
更新于
本文字数:
2.1k
阅读时长 ≈
3 分钟
2022年入手利器
发表于
更新于
本文字数:
831
阅读时长 ≈
1 分钟
文件下载引发的网页崩溃
发表于
更新于
本文字数:
1.1k
阅读时长 ≈
2 分钟
Chrome商店发布拓展
发表于
更新于
本文字数:
368
阅读时长 ≈
1 分钟
ChatGPT使用
发表于
更新于
本文字数:
2k
阅读时长 ≈
3 分钟
input文件上传时取消事件监听
发表于
更新于
本文字数:
872
阅读时长 ≈
1 分钟
WebShell中实现右键文件下载
发表于
更新于
本文字数:
1.3k
阅读时长 ≈
2 分钟
最近WebShell支持了右键下载,这里总结下实现过程
说明
- 当前仅支持下载文件,暂不支持文件夹
- 使用技术栈
技术实现
文本选中
- xterm.js支持双击选中部分文本,匹配模式为word,因此如果如果文件夹名称是
hello world
,那只能自己再拖拽选择了。 - shell中无法具体直接识别字符是不是文件,文件夹还是PS1这类的提示符,通过Shell配置只是可以控制颜色,但是反向根据颜色来判断是否是文件夹这是没用的,毕竟主题不同,颜色值也会不同。
- xterm.js支持双击选中部分文本,匹配模式为word,因此如果如果文件夹名称是
文件所在目录即
Current Working Directory
这个需要Shell integration来解决,本质就是函数钩子,在每次执行一条命令结束时获取当前所在目录并发送消息出来。同时目录信息存储在隐藏字符中避免显示到终端上,程序中我们持续提取当前目录即可。
1
2
3
4source /usr/local/bash-precmd/bash-preexec.sh
preexec() { printf "\x1B]1337;PreExec;Timestamp=$(date +%s);\x7"; }
precmd() { printf "\x1B]1337;PostExec;Exit=$?;CurrentDir=$(pwd);Timestamp=$(date +%s);\x7"; }有了目录,同时支持选中文件,最基础的执行下载就OK了。
目录历史
- 如果说用户选中最新一行的文件那没问题,但是终端下,每一行信息所在的目录是不同的,因此CWD要持续记录
- 记录的标准并不应该按照xterm显示终端的行号进行一对一,因为比如一个ls命令显示文件列表,可能会具体显示为2行,因此最佳的方式是CWD针对这次写入终端信息所在的N行对齐即可
获取文件信息
选中文本并不能保证一定是个文件,因此我们还需要根据选中文本能够识别出文件类型/大小/权限等等。ssh2-sftp-client下有stat方法可以支持
stat方法返回的mode值是二进制,比如
33279
,需要转化后才可以具体指导rwx权限1
(rslt.mode& parseInt('777', 8)).toString(8)
针对软链接类型文件,list接口返回的类型为l,但是stat方法返回的
isSymbolicLink
却是false,这种情况两者不一致,目前还没有解决办法。
文件下载
Apple家人共享
发表于
更新于
本文字数:
801
阅读时长 ≈
1 分钟
最近家人也换了iPhone,进入苹果生态,这里研究下家人共享,试图用该方式让家人免费+便捷的用上我使用多年的苹果生态服务。
官方文档对于家人共享说的含糊不清,因此踩了坑。这里总结下,整体来说家人共享还是挺香的,推荐那些自己买了一大堆苹果生态服务的用户,通过家人共享可以在不再二次开销的基础上让他人也用上部分优秀服务。OK,开始。
家人共享
该功能可以这么理解,家人共享类似于平常开通的YouTube家庭会员/Spotify家庭会员。家人共享服务涵盖多种
iCloud,AppleMusic,Apple TV等订阅服务
- 一般Apple会员拼车即采用的该方式,比如iCloud空间,发起人并不能直接通过配置来限制每个人可用大小,整个空间大小是共享的
AppStore购买App[不包含内购服务]
内购不支持
,比如MarginNote本身App免费下载,但是Pro功能是内购的,那么家人共享并不会共享Pro服务,家人还需要单独购买。但比如Things本身付费购买,这种就可以。
位置信息等,其它请以官网为主
家人共享是按账户共享,iPhone/Mac均会加入
GitHub Copilot使用
发表于
更新于
本文字数:
1.9k
阅读时长 ≈
3 分钟