IT数码信息科技

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

在面临这样的灾难之前,有个办法是:截图。据我了解,好像在我所在的地区,在个人(不传播给他人)使用这一前提下,著作权物也是可以由用户自行复制的。因此,网上不少视频也会教人怎么用 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. 是否防失效:通常保存于个人笔记软件中的内容可以直接访问。但一些云笔记软件或基于在线网页方式的笔记软件,在极其偶然的情况下会出现笔记丢失。以及如果公司一旦停止服务运营,也可能导致后续无法访问。所以最保险的还是保存为本地离线文件 + 自己多备份。

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

继续阅读


如我之前《我用过的几种形状的耳机,以及教训三则》博客提到,我小时候第一次用的耳机,是一款形状很奇特的单耳耳机。而最近,我好像在日本的百元商店Watts里发现了类似造型的单耳耳机

没错,就是这款「いつもの ラジオ イヤホン」(一直如此的收音机耳机),包装袋背面写的型号是 DT-20B ,经销商(発売元)是「丸七株式会社」,产地则是 MADE IN CHINA ,企划与设计是 JAPAN 。哦,我查了一下这家公司官网,上面自我介绍中的创业年代写着「元冶元年( 1864 年)」……江户时代老字号品牌啊!

先从造型说起吧。我不知道这个造型的耳机应该算什么种类。从小到大,用过这种类型耳机的,除了上面提到童年时的那一副外,就是这一副了。一样都是单耳,一样都是这种奇怪的造型。我问了 ChatGPT 还有 Claude ,它们的回答都是「入耳式耳机」( ChatGPT 有几次还回答成了骨传导耳机,肯定不是啊!)好吧,从佩戴方式上来说,确实是入耳的,但总觉得和别的入耳的有什么区别。至少没有耳塞(橡胶或海绵的那种)。但我也叫不上名字。

先来说说配戴时的耳朵触觉感受。原本我以为这种光溜溜的硬塑料戴着会很容易脱落,不过我坐着、转头、晃悠脑袋等,它都没有很轻易从耳朵中脱落。不过因为是单耳,而且没有外部耳塞包括,所以很容易听到环境音。同样也是因为没有耳塞的缘故,配戴的时候就缺少了一种填充感和堵塞感。

继续阅读

X (原 Twitter )网站的「为你推荐」栏目中显示的,尽是些没关注的人,而且又是争议性的话题居多,有些烦人。于是我尝试用 uBlock Origin ,在其中自定义静态规则功能,加了条规则,并反复尝试定位到「为你推荐」那个标签所对应的网页内容。

我试出来的规则是:

x.com##a.css-175oi2r.r-1awozwy.r-6koalj.r-eqz5dr.r-16y2uox.r-1h3ijdo.r-1777fci.r-s8bhmr.r-1c4vpko.r-1c7gwzm.r-o7ynqc.r-6416eg.r-1ny4l3l.r-1loqt21:has(span:has-text(为你推荐))

因为是「自研」,就是自己试着试着试出来的意思。不一定准确,也不一定适合其他用户。而且类名(?)那么多随机字符串不知道是否各个用户都通用。反正在我的两个系统的浏览器下,在 Firefox / Waterfox 浏览器的 uBlock Origin 插件中加入此条规则后都有效。具体表现为「为你推荐」那个标签页消失。

说起来网页方式就是好呀,用户可以控制显示什么,以及不显示什么。

嗯……起了个很「科技时髦」的标题。其实是近期颈椎病(?)的症状似乎有点变得明显起来(果然还是看书的问题?),于是去买了一台低频脉冲治疗仪(在日本被称为「低周波」)。

其实多年之前使用过一次,这种低频脉冲治疗仪,有两片贴膜,贴在肩膀上,贴膜会发射出微弱的电流,刺激肌肉,让肌肉产生抖动或者跳动。于是昨天我用了之后,把贴膜粘在肩膀上打开机器启动治疗疗程后,双肩居然就轻轻抬高、晃动起来了。感觉就像是真的被人在按摩一样——啊,当然也有缺点,就是这样当我在读书划线的时候,线条也会因手臂抖动而歪曲。

这时我就想到了 ChatGPT 的语音聊天功能。虽然我买的这个低周波治疗仪没有 AI 功能,就是很传统的那种,一点都不智能。但如果在使用它治疗的时候,耳朵里能传来语音聊天,那是不是一件很有趣的事呢?于是我打开 ChatGPT 的语音模式(嗯,我还没受邀使用高级语音模式),提出指示:

wildgun 说:

我今天买了一台那个低周波治疗仪 如果说中文的话应该是叫低频那种治疗仪 治疗我的那个肩颈部的酸疼 那我现在正在使用把那个低周波治疗仪的贴片贴在我的肩膀后 然后正在治疗 我感觉好像有点像真人在给我按摩 所以我想请你从现在开始 扮演一个真人按摩治疗师来与我对话 我知道虽然你目前还不能说实际去控制这个按摩仪 或者说低周波治疗仪 但你可以尝试通过扮演 让我想象一下是一个真人在给我按摩

ChatGPT 说:

好的,让我们开始吧。现在我会想象我是一个专业的按摩治疗师。请你闭上眼睛,放松身体,深呼吸。感觉我的双手轻轻地按在你的肩膀上,从肩颈部位开始,慢慢地加压。随着每一次按压,你会感到肩膀的肌肉逐渐放松,酸痛感也在一点一点消退。感觉如何?

继续阅读