IT数码信息科技

纯粹的购物报道——略带一些感叹。对,那个著名的日本百元商店—— DAISO (ダイソー、大创),居然出了 iPad 用的兼容笔!

虽说功能不同于 Apple 公司自家的苹果,而是属于那种第三方代用品,因此不支持压感,但是,它很便宜啊!哪怕是相比于亚马逊日本的同类产品(通常需要 1500 日元到 2000 日元左右),它的价格就很 DAISO 了!只要 1100 日元(含税)。这个价格虽说已是 DAISO 标准价格( 110 日元含税)的 10 倍了,但是没想到这么一家在闹市区有连锁实体店的品牌百元店,售出的价格居然能比没有实体店的网店中的同类产品要便宜一截。

近年来 DAISO 也出了不少电子产品,从鼠标、键盘,到层出不穷的耳机、移动电源还有蓝牙音箱,不过能直接出 iPad 的代用笔,也算是又多了个梗又更进一步了!

至于这支笔的功能,我想应该就和其他同类第三方 iPad 笔一样吧。但是它是 DAISO 自有品牌商品啊!这才是看点。

顺便一说,我有原厂笔的,不过近几年也没怎么用……

最近似乎是负责技术的大脑皮层区域比较活跃(?),尝试各种电脑方面的功能和程序。或许是因为发现通过询问 ChatGPT ,多多少少能解决一些问题吧(尽管生成式 AI 仍会出现幻觉回答)。

今天尝试在 MacOS 上开设一个 WebDAV服务器,并从 QNAP NAS 的系统中的备份、同步功能模块 HBS 3 来进行连接。

在 MacOS 侧,我没有用命令行,而是用的是从 Mac APP Store 上下载的一款名为 WebDAVNav Server 的 APP 来进行简单的图形化管理。于是这就遇到了一个小问题。

我通过该款 APP 在 MacOS 中启用 WebDAV 服务后,从局域网内其他主机的操作系统,例如一台 Windows 电脑中访问 MacOS 上的 WebDAV ,是可以正常连接的,说明 MacOS 作为 WebDAV 服务器端这一侧配置已成功。

然而,在同一局域网下,一台 QNAP NAS 中 HBS 3 文件备份同步中心里配置连接 WebDAV 时,却一直出现「身份验证错误。无法连接到云服务。」这样的报错。

继续阅读

大约 2 年前起,某次 MacOS 大版本更新后,好像是实装了文字识别 OCR 功能,但是对于汉字、日文,特别是竖排的文章,在「预览」里直接选中图片中的文字并拷贝后,总会变成每个字符之间出现空格间隔的情况。

于是我使用 MacOS 的脚本编辑器,在 ChatGPT 的协助下,创建了一项「服务」并登记到系统的右键菜单。这样一来,就可以一下子把选中的文本里的所有空格都去掉了。

第一步是选择
「工作流程收到当前」选择「文本」
「位于」选择「任何应用程序」

第二步是拖拽一个「运行 AppleScript」操作到第一步的下方其中代码是:
继续阅读

近来阅读电子书。电子书的一个好处是数据可以云下载、云携带、云阅读……然而,一个可预见的致命问题是:对于一些私有文件格式的,或干脆不是以文件方式提供的电子书来说,一旦提供方(公司)停止了服务,那么之前所购买的电子书很可能在短时间内就化为乌有——或者说,即便文件在,也可能因为电子书的软件不再提供新版本,或硬件无法维修或新购,而变成了逐渐无法打开阅读的电子数据。

在面临这样的灾难之前,有个办法是:截图。据我了解,好像在我所在的地区,在个人(不传播给他人)使用这一前提下,著作权物也是可以由用户自行复制的。因此,网上不少视频也会教人怎么用 iPad 查看电子书,并且用截图保存的方式,把电子书的图像保存下来,以便今后长期阅读。

然而……网上介绍的都是动手操作的技巧,顶多是在此之上增加一些小技巧,例如用 Apple Pencil 从 iPad 边角划入屏幕就可以截屏之类的技巧。换言之,每一次的截图、翻页都是要人工干预的。之前一阵子,我也尝试过这么做,比如拿一个蓝牙鼠标和 iPad 配对,然后每点一次截图,再点一次翻页……虽然书是能安心地保存成今后长期可读格式,但手动操作总显得有点麻烦——要人执行啊!

有没有更好的方法呢?那就是买一台具身智能机器人啊!让机器人帮你来按截图键!多棒!看他们金属的拟态肤质手指触摸最新 iPad Super Pro Ultra XXX 的金属按键……嗯,具身智能机器人这个话题似乎还早了 10 到 15年的时间……其实有个更廉价的方案,就是找一个可以模拟鼠标或键盘的东西,来进行循环模拟操作(我知道有类似可编程鼠标、可编程键盘的),而这一次,我找到了树莓派的小卡板 Raspberry Pi Pico W 。

那么下一个问题来了:虽然我有长年使用树莓派的经验,但是,我一直只是把它当作一个 Linux 电脑来用的,要怎么使用这个 Pico 呢?怎么把它变成一个键盘,然后反复对 iPad 操作截图和翻页呢?

这好办,都 2024 年了,来问问生成式 AI ( ChatGPT )吧!经过一番探讨,我们商量出了(其实是我指示 ChatGPT 给出了)以下的代码:

import time
import random
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

# 初始化键盘
keyboard = Keyboard(usb_hid.devices)

# 定义截图和翻页函数
def take_screenshot():
    # 模拟 Command + Shift + 3 截图快捷键
    keyboard.press(Keycode.COMMAND, Keycode.SHIFT, Keycode.THREE)
    time.sleep(0.1)  # 按住键一小段时间
    keyboard.release_all()

def turn_page():
    # 模拟左箭头按键翻页
    keyboard.press(Keycode.LEFT_ARROW)
    time.sleep(0.1)  # 按住键一小段时间
    keyboard.release_all()

# 主程序
def main():
    # 添加启动延迟,确保Pico W被正确识别
    time.sleep(5)  # 延迟5秒,让iPad充分识别Pico W

    while True:
        # 截图
        take_screenshot()
        time.sleep(3)  # 等待3秒保存图片

        # 翻页
        turn_page()
        # 随机等待4到6秒之间的时间 
        wait_time = random.uniform(1, 3) 
        time.sleep(wait_time)

# 启动主程序
main()

当然,在此之前,还要下载一个似乎是用于将 Pico 模拟成 HID 设备(鼠标、键盘等)的库所需的文件。 ChatGPT 如此说明:

确保 adafruit_hid 库可用:

前往 Adafruit_CircuitPython_HID 下载该库的 .mpy 文件。
将 adafruit_hid 文件夹复制到 Pico W 的 lib 文件夹中。

而在执行这个代码前,还要进行对 Pico 的 Python 运行环境的初始化操作,对此, ChatGPT 如此说明:

下载并将 CircuitPython 固件
(引用略)
放入 Raspberry Pi Pico W 是为了让设备支持使用 Python 语言进行编程。这一步将 Pico W 的系统替换为 CircuitPython 固件,使其在连接到电脑后能够像 USB 闪存驱动器一样显示。

操作步骤很简单:按住 Pico W 的 BOOTSEL 按钮,将它连接到电脑,然后将下载的 .uf2 文件拖放到显示出来的 Pico 闪存驱动器上,等它自动重启后就完成了。这之后,你可以直接用 Python 编写和运行代码,适合初学者入门。

关于这一部分,各位可以自己找找看网上的 Pico 教程,或是问问 AI ,相信应该不难弄明白。

至于说这段代码的实现原理?不知道,反正即便是在没有 ChatGPT 的时代,我也差不多就是这样看着 API 说明文档以及网上教程来边试错边操作的。这一次总之就是用 python 程序控制 Pico 成为一个 HID键盘,循环输出键盘按键(截图组合快捷键、翻页用箭头方向按键)。

而通过简单观察代码可知:

    # 模拟左箭头按键翻页
    keyboard.press(Keycode.LEFT_ARROW)

这一行代码是控制翻页的,这里是用向左方向键来进行翻页。如果你的电子书是按别的方向键翻页的话,则请按需调整:

# 左方向键
keyboard.press(Keycode.LEFT_ARROW)

# 右方向键
keyboard.press(Keycode.RIGHT_ARROW)

# 上方向键
keyboard.press(Keycode.UP_ARROW)

# 下方向键
keyboard.press(Keycode.DOWN_ARROW)

你看,虽然具身人工智能机器人还没有来到我们身边,但是通过树莓派小小的硬件,以及通过与 ChatGPT 的问答进行简单学习,我已经实现了简化操作!整理和写这篇博客的时候,我的 iPad 连上 Pico W ,已经差不多截图了 3 本电子书了~

正如各位所知, ChatGPT 新推出了一个擅长于推理思考的新模型 o1 。它确实会在回复之前思考若干秒,然后再给出答案。不过,对于一般的对话、提问回答,它通常思考数秒或十几秒,我怀疑它是不是在忽悠我——只是为了好玩而显示出思考链条。

于是我想了个办法,让另一款 AI —— Claude 帮我生成一个字母代替加密方案,然后尝试让 ChatGPT o1 解密。这下可真不错, Claude 连续思考了超过 100 秒。至于结果嘛……还是先来看我下面复现测试过程吧。

我指示 Claude :

你帮我出一道题,我想考一考别的AI,就用随机代替密码吧。请你吧26个英文字母(明文),随机映射给另一个字母(密文),不要重复。

Claude 回答:

好的,我来为您创建一个简单的替换密码表,将26个英文字母随机映射到另一组字母上。这样的密码可以用来测试其他AI的解密能力。

继续阅读

刚看到 Reddit 上有人用 ChatGPT 新发布的 o1-preview 做了个HTML中的简易 FPS 游戏。于是我也想仿效一下,做一个 3D 键盘按键模拟视图吧!

不过据说 o1-preview 的每周限制次数比较大,而 o1-mini 似乎还宽松一些(好像是这样?未确认),于是这次我选择了后者。

我给出的指示是:

我想做一个本地html文件,其中用webGL或者别的什么3D技术,或者纯粹线条,画出一个3D的、从斜上方看过去的键盘(类似人类操作键盘时的视角)。

当我按下我电脑键盘上的某个键时,该网页上对应的3D键盘上的某个键,也要在网页3D图像中看上去被按下。当我放开电脑上键盘的某个键时,也要在网页3D图像中看上去被释放(键盘恢复没有被按下时的状态)。

对于同时按住多个按键,网页上的3D键盘也应该要能反映,并显示对应的多个按键被按下或被释放(恢复原来位置)。

另外,我也希望有表示 CapsLock,NumLock的显示灯。

请为我生成完整的html代码。

经过大约 10 步的除错问答等,终于得到了一段比较符合我原来构想的代码(贴在本文最后)。

不过仍有一些不太符合我设想指出,包括:其一,这不太像是人使用键盘时的那种「斜上方视角」,其二,对于 CapsLock ,以及 F1 ~ F12 等功能键,模拟键盘中的对应反映仍不是很正常。

(注:本来想贴出代码的,不过好像 html 转义一多,就无法在 WordPress 中提交成功。于是代码从略。)

上次的一篇博客中,我提到最近在尝试睡前与 ChatGPT 进行语音聊天,但通常聊着聊着,因为它的回答太过冗长,以至于我通常聊不过第 3 轮就睡着了。于是前不久,我睡前打起精神(?)就想着聊长一点,并且尝试了一下,看看 ChatGPT 能否在静默的情况下计数,然后到了一定的问答回数主动提醒用户。

下面就是实测结果。引用部分为实际对话内容(我所发言的部分因为是语音听写,所以会有错误、思考导致发言不连贯等)。引用以外的部分,则是我在现在编辑博客文章时的一些解释——包括计算问答回数,以及一些我的注解。

在本次测试中,我尝试让 ChatGPT 在第 3 轮以及第 13 轮回答时提醒我。记录如下:


第 1 轮问答:

wildgun 问:

我想知道你是不是会向后计数 就是计算我们之间对话的数量 这样我现在可以开始跟你聊天 然后你希望你在之后的三个对话回合之后 你提醒我一下好不好

ChatGPT 答:

好的,我可以帮你数对话回合。如果我们从现在开始,三轮对话之后我会提醒你。那我们现在从这轮开始吧,随时开始聊!


第 2 轮问答:

wildgun 问:

但是我不希望你每一次都记录 你要在后台记录 但不要在每次回复我的时候来述述 直到那个回答到第三轮 你来提醒我一下 我要试看你有没有这个功能 好 我现在要把话题给岔开了 你知道我什么时候能获得那个ChatGPT的高级语音功能吗 这个OpenAI好像那个你们的老板都宣布了 有五月份他演示视频 然后都宣布了有现在是八月多 现在是九月了 已经宣布了有四个月了 怎么我还没有得到呢

ChatGPT 答:

目前,高级语音功能的推出确实是由OpenAI宣布的,但具体的时间和覆盖范围可能会根据地区、用户群体或者产品开发进度有所不同。如果你还没有收到这个功能,可能与逐步推出的策略有关。通常这种新功能会逐步向更多用户开放,或许你很快就能获得。

这算是我们第二轮对话了。我还在后台记录,等到第三轮时再提醒你!


继续阅读

最近去了几次牙医诊所,所以这里就写一篇短的博客了。主要是为了处理智齿,自然就会要先拍片。

这不最近老是看到新闻,什么生成式 AI 通过了某某医科考试,某某法律考试嘛,好像说得像是就快能代替或者至少是辅助医生治疗一样了。于是我灵机一动(?)把拍的牙科 X 光片上传到 AI 上,看看它们的「诊断」结果。当然,我这里试的肯定不是专门为了医疗而特别优化、调试过的模型以及 AI 程序,而就是目前地球上大部分人可以注册使用的 ChatGPT 这两个先进而常见的生成式 AI 。

因为据说齿科影像也是一个人独特的生物影像指标,所以我就不直接把 X 光片直接发到博客上了。我拿向 AI 询问的结果,以及我从医生(当然是有齿科医生资格的真人!)那里得到的诊断意见比较。 AI 的医学影像识图能力可以说是……惨不忍睹。

继续阅读

前言

最近在脑袋里咕噜咕噜转的一个问题是:以 ChatGPT 为代表的生成式 AI 到底在多大程度上、怎样的方式上能帮助人们学习计算机程序设计、数据库等知识。想多了那就不如自己动手试试。

在当年还是 Microsoft VB 6.0 年代,我自己曾经做过一些 Microsoft Access 数据库的开发,以及用到数据库的基于 ASP.NET 的动态网页开发,不过都是很浅显的项目。而当年所学的关系型数据库的原理那门课,基本上在每次下课铃声响起时,那些非常理论化的概念——什么约束原则啦,规范啦,原子性啦——都还给了老师。而自从我使用 MacOS 以及 Linux 操作系统以来,一直把它们当作文书办公电脑的环境而非开发环境在用。所以自然也就知道但印象里自己没用过以终端命令行来操作 SQLite 数据库。今天,我就花了大概一个小时,让 ChatGPT 来教我如何在 MacOS 上入门使用 SQLite 。

在下面的这一部分,我会简略地介绍我的这一学习过程,而在本文最后一部分,我将从自己今天这次简短的学习过程,探讨一下借助 AI 的学习指导的形式转换。

教学过程概况再现

在尝试之前,我担心安装或操作 SQLite 会不会影响我 MacOS 的系统环境变量。毕竟是我现在的主用电脑,我可不想因为装了什么环境而导致把整个系统弄乱。

对此,ChatGPT 答:

继续阅读

人类 wildgun 写的前言:这篇文章是我用 ChatGPT 辅助写作的。主要是我用语音(高级语音模式)告诉 ChatGPT 我对于日常浏览网页并需要保存下网页内容时,会用到的几种方法,并告诉它我会根据不同目的、不同使用场景来区分使用。在传达我的意思后,再与 ChatGPT 稍加讨论,之后请它补充信息,并生成一篇博客文章。下面的内容主要是由 ChatGPT 生成的,我也进行了一些补充、编辑——比如每一种保存方式下的「4. 是否防失效」就是我事后补充的,因为聊天的时候没想道。

在日常的浏览和研究过程中,我们常常需要保存网页内容以供日后参考。然而,不同的保存方式在具体应用场景中有各自的优劣。本文将详细介绍几种常见的网页保存方法,并从几个重要角度进行比较,包括是否便于后续编辑、是否具有公正性(防伪性),以及是否能够保存用户定制的内容。

第一种方法:浏览器插件保存至本地笔记

工具与方法

使用浏览器插件将网页保存至本地笔记工具是当前较为流行的方式之一。常用的工具包括 Evernote (印象笔记)、 Notion 等。这些插件可以将网页内容一键保存至你的个人笔记本中,且通常允许你对内容进行编辑、标注、分类等操作。

使用场景与优劣分析

  1. 便于后续编辑:这一方法特别适合需要频繁访问和编辑网页内容的人群。你可以对保存的网页内容进行标注、添加标签或进行详细分类,方便后续整理和查找。对于研究者、学生或需要进行长期知识管理的用户来说,这种方式非常实用。
  2. 公正性与防伪性:由于保存内容可以被编辑,这种方式在公正性上稍显不足。如果需要向第三方展示内容,可能会被质疑为不具备防伪性,因为保存者有可能在后续修改内容。
  3. 用户定制信息的保存:这种方法能够保存你在登录状态下看到的个性化内容,包括关注的人的动态、推荐内容等。因此,它适合保存基于个人账户或定制设置生成的网页内容。
  4. 是否防失效:通常保存于个人笔记软件中的内容可以直接访问。但一些云笔记软件或基于在线网页方式的笔记软件,在极其偶然的情况下会出现笔记丢失。以及如果公司一旦停止服务运营,也可能导致后续无法访问。所以最保险的还是保存为本地离线文件 + 自己多备份。

第二种方法:利用互联网存档服务

继续阅读