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

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

  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

资费

阅读全文 »

最近本地docker构建node项目时报错Cannot use import statement outside a module”,”event”:”uncaughtException。排查解决后,这里mark下。

环境说明

  • NodeJS版本为v12
  • 整个项目是CommonJS规范

错误含义

根据错误栈最后查到是node_modules/axios/lib/core/buildFullPath.js位置。本地开发环境下查看文件并没有问题,但进入docker容器中查看果然该文件中采用的ES import写法。由此确定根本问题。

阅读全文 »

SSH登录失败如遇到kex_exchange_identification: read: Connection reset by peer,可以根据如下步骤排查

ssh时,v参数用于调试信息打印,从信息里可以看到,服务端并没有发送任何消息,如果第一步通讯正常应该或发送远程协议版本信息。

大致可能会有几个地方影响

  1. /etc/ssh/sshd_config

    排查端口是否正确,可能并不是22,如果修改配置,需要重启服务生效service sshd restart

  2. /etc/hosts.allow/etc/hosts.deny

    默认两个文件配置会是空状态,没有任何生效配置

阅读全文 »

启动WEB服务时需要绑定IP,日常开发,我们往往这么做,填写0.0.0.0或者127.0.0.1。都work,但两者是不同的,这里总结下两者的不同及注意事项

如下为ExpressJS的一段代码

1
2
3
app.listen(conf.server.port, '0.0.0.0', function () {
console.log(`Example app listening on port http://0.0.0.0:${conf.server.port}!`);
});

127.0.0.1

  1. 该地址为环回IP地址,假如服务绑定该地址,那么使用外网IP,或局域网IP都是不可访问的。

  2. 假如把机器网断了,当执行ping命令时是有返回的,原因是该地址并不会真的走网卡发送请求出去

  3. 当绑定该地址时,访问的话,经常也会使用localhost,但严格来说两者并不对等,因为1个是IP地址,另一个是域名,查看hosts文件也会发现一般会有127.0.0.1 localhost,之所以可以使用localhost,原因在这里

阅读全文 »

最近使用北京易通行扫码坐公交地铁,为了更高效些,开始调研是不是能够做到一键弹出地铁码/公交码,毕竟每次找到App=>启动App=>切换到对应乘车码,这样一套操作还是很麻烦的。

一键唤起App的具体页面功能,该需求能实现的本质就是个URL Scheme,因此关键就是能不能拿到这个信息了。

先说结论,最终我只能实现一键唤起易通行App,即RuubyPay://,而具体地铁码/公交码页面并不行,原因是查不到具体功能/页面的介绍SDK,或者没有猜出来。虽然没有彻底解决,但至少搞清楚了寻找指定App URL Scheme的一般方法了,以后有此需要就这么来搞。

基本方法

  1. Google/GitHub检索

    首先还是万能搜索大法,毕竟别人很多都想到和找到了,比如微信扫码weixin://scanqrcode

  2. 官方文档

    好点的软件对其URL Scheme支持是有系统介绍的,比如Surge/Things等,通过官方文档就可以了解能支持到什么程度。这点微信,美团之类的都没系统的介绍,基本都靠网友自己去找了,这点差评。

  3. iMazing等软件查看app中的info.plist,如果是Mac App的话,直接finder中查看app内容即可,不需要第三方App

    info.plist中检索CFBundleURLSchemes关键词,具体数组值即Scheme

阅读全文 »
0%