家里现在养了2只鹦鹉,有远程查看小鸟鸟情况的需求。尤其是旅行时,还是想查看下家里情况,因此决定购买家用摄像头。这里总结下购买使用经验。兴许帮些朋友避坑。

品牌选择

摄像头品牌上我选择了萤石,之前有用过联想/小米的,这里贴下我对这几款的感受

  • 联想的激活体验差,品质差

  • 小米App体验还行,广告太多,新买的设备还出现过,拿到手提示升级,点击升级直接变砖。网上一搜一堆人吐槽这种问题的。解决手段还必须存储卡格式化,刷机。其它的槽点比如不支持5G连接

阅读全文 »

2023已到,回首2022,照例做下总结。

工作

  1. 前半年做的业务类项目较多,技术本身并没有提高多少,但也有些地方可圈可点

    • 钱包插件开发,让我了解了dApp,通讯协议gRPC,另外也发现了NodeJS支持了JS模块,因此可以些JS拓展能力
  2. 下半年项目相对单一些,主要是聚焦WebShell开发,技术属性重,因此学到的点很多

沉淀

开源

阅读全文 »

本身周边软硬件服务也趋于完善,今年没多少更新换代。

Anker GaN2 65W充电器

9月份入手GaN2 65W三口充电器,价格135RMB,对比Mac自带电源小巧的多,另外多插口,也可以方便手机,iPad使用。个人挺喜欢。

这里贴个 JD链接,详情查看这里

阅读全文 »

最近实现了个异步下载文件的功能,Chrome下只要触发一定大小比如200MB的文件下载,浏览器网页会崩掉,其它网页浏览器却是OK的。查看控制台也并没有任何报错。 同样操作测试Safari/Firefox是OK的,仅有Chrome有此问题。该问题最终解决,这里mark下。

报错信息

说明:

  • 开发者工具-控制台无其它报错信息。
  • 网页报错信息为Error code:RESULT_CODE_KILLED_BAD_MESSAGE

阅读全文 »

操作走商店上架还是遇到了些问题,网页提示是不准确的,因此这里记录下操作过程。

商店开发者平台地址,点击这里

  1. 支付5美元注册费用,成为拓展程序开发者
    • 需要visa卡
    • 地区不支持中国大陆,选择香港,填写fake地址即可
  2. 点击上传新内容,按照要求填写即可
    • 上传文件类别为zip

官方说法几个工作日,因为当前疫情,还是慢了点,我的应用审核花费3天,但有时1天就好,具体看运气。

准备材料

阅读全文 »

ChatGPT最近出圈,尝试了下,个人很喜欢,目前已纳入日常使用工具。

这里Mark下使用姿势。

前置条件

  • 科学上网

    建议先解决这个再往下走,实测香港节点在注册登录环节存在问题,因此推荐日本/美国等其它节点,我个人会配置固定节点如美国代理访问

阅读全文 »

最近在处理文件上传时需要知道用户是否点击了取消,为此查了下可行性,这里总结下

1
<input type="file"/>

JS并不支持

首先官方没提供方案,即如果用户唤起文件选择弹窗,然后点击取消,JS是没有暴露事件告诉我们取消的,因此这里需要HACK解决下。当然如果可以接受再加一层弹窗也可以,即用户主观自己点击了下我们提供的取消按钮。

HACK方案

阅读全文 »

最近WebShell支持了右键下载,这里总结下实现过程

说明

  1. 当前仅支持下载文件,暂不支持文件夹
  2. 使用技术栈

技术实现

  1. 文本选中

    • xterm.js支持双击选中部分文本,匹配模式为word,因此如果如果文件夹名称是hello world,那只能自己再拖拽选择了。
    • shell中无法具体直接识别字符是不是文件,文件夹还是PS1这类的提示符,通过Shell配置只是可以控制颜色,但是反向根据颜色来判断是否是文件夹这是没用的,毕竟主题不同,颜色值也会不同。
  2. 文件所在目录即Current Working Directory

    • 这个需要Shell integration来解决,本质就是函数钩子,在每次执行一条命令结束时获取当前所在目录并发送消息出来。同时目录信息存储在隐藏字符中避免显示到终端上,程序中我们持续提取当前目录即可。

      1
      2
      3
      4
      source /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了。

  3. 目录历史

    • 如果说用户选中最新一行的文件那没问题,但是终端下,每一行信息所在的目录是不同的,因此CWD要持续记录
    • 记录的标准并不应该按照xterm显示终端的行号进行一对一,因为比如一个ls命令显示文件列表,可能会具体显示为2行,因此最佳的方式是CWD针对这次写入终端信息所在的N行对齐即可
  4. 获取文件信息

    • 选中文本并不能保证一定是个文件,因此我们还需要根据选中文本能够识别出文件类型/大小/权限等等。ssh2-sftp-client下有stat方法可以支持

    • stat方法返回的mode值是二进制,比如33279,需要转化后才可以具体指导rwx权限

      1
      (rslt.mode& parseInt('777', 8)).toString(8)
    • 针对软链接类型文件,list接口返回的类型为l,但是stat方法返回的isSymbolicLink却是false,这种情况两者不一致,目前还没有解决办法。

  5. 文件下载

    • 在明确了可以下载的前提下,执行下载方法就很多了。ssh2-sftp-client下提供的get,或者fastGet均可实现下载,如果是终端连接的ssh会话也可以走sz下载均可。
    • 空文件下载以上方法均支持,只是注意针对get的流方法,该流的onData数据不会被触发,但end方法可以正常执行。
阅读全文 »

最近家人也换了iPhone,进入苹果生态,这里研究下家人共享,试图用该方式让家人免费+便捷的用上我使用多年的苹果生态服务。

官方文档对于家人共享说的含糊不清,因此踩了坑。这里总结下,整体来说家人共享还是挺香的,推荐那些自己买了一大堆苹果生态服务的用户,通过家人共享可以在不再二次开销的基础上让他人也用上部分优秀服务。OK,开始。

https://static.1991421.cn/2022/2022-11-05-220803.jpeg

家人共享

该功能可以这么理解,家人共享类似于平常开通的YouTube家庭会员/Spotify家庭会员。家人共享服务涵盖多种

  1. iCloud,AppleMusic,Apple TV等订阅服务

    • 一般Apple会员拼车即采用的该方式,比如iCloud空间,发起人并不能直接通过配置来限制每个人可用大小,整个空间大小是共享的
  2. AppStore购买App[不包含内购服务]

    • 内购不支持,比如MarginNote本身App免费下载,但是Pro功能是内购的,那么家人共享并不会共享Pro服务,家人还需要单独购买。但比如Things本身付费购买,这种就可以。
  3. 位置信息等,其它请以官网为主

  4. 家人共享是按账户共享,iPhone/Mac均会加入

    阅读全文 »

最近朋友推荐GitHub Copilot,开放心态尝试下。在使用一段时间后,觉得很不错,这里就share下。

介绍

  • 基于OpenAI 的结对编程工具 Copilot

资费

阅读全文 »
0%