普通视图

Received before yesterday子舒

端午节包粽子

2025年5月31日 08:00

昨天周五下班后,准备食材包粽子,迎接端午节的到来。

主材料:粽叶、糯米 馅料:五花肉、豆沙、咸蛋黄、蜜枣

由于是第一次包,我跟女朋友一边看教程一边学习,刚开始用的一张叶子,总包不好,后面换成两张叶子,发现越来越得心应手。

模样不算太好看,但是都是真材实料,且没有露馅。但是好像是酱油加的有点少了,所以导致不够咸,总体偏淡,但是口感也是可圈可点,是我喜欢的馅。

后面还有一盆糯米,准备改进一下,多加点酱油,手法上也有所进步了,再接再厉!

分享几张图。

食材
食材

炖锅的五花肉
炖锅的五花肉

下锅的粽子
下锅的粽子

  •  

两天一夜象山赶海之旅

2025年5月8日 08:00

五一刚回来有些忙,推迟了好几天,终于可以闲下来写写游记了。

五一出去象山玩了几天,出发前一周已经做好了攻略,包括路线、时间、住宿哦、饮食等个各方面,但计划赶不上变化。最开始预估的最多三个小时就能到达目的地,结果硬是在高速跑了五六个小时,基本 2/3 的时间都在堵,特别是宁波嘉兴段高速,走走停停,不过还好带了小零食,跟对象说说笑笑就过去了,也不会枯燥。

点赞余姚服务区,跑一半小累下去休息一下,超市价格跟杭州差不多,没有额外涨价,短暂休整后继续驾车前行。一个小插曲,中间大概有几十公里的路程,高速播报允许小汽车在应急车道通行,我犹豫了一下然后果断走了应急通道,非常爽很畅通,虽然车道有些略窄,但是走的很爽没有停下来过,看旁边堵的熙熙攘攘,这也是我第一次走应急通道,不错的体验。

越靠近海边环境越好,空气也很舒服,同时也感叹临海城市天气莫测,刚下象山收费站下起了大雨,然后走了一两公里后,又是大晴天,烈日当空,打开窗户吹吹风,小小的享受了一下。

入岛
入岛

第一站打算去山顶看看大风车,路途经过一个小村庄,整洁的街边道路两旁,一栋栋精致的民居让人向往,羡慕浙江本地人了,家家户户都盖着小别墅,门前几乎都自己修建了小花园,可以养养花逗逗鸟。

到半山腰发现一个露营地,稍作休息,顺便放出无人机看看周围的情况,发现风景也就一般,跟对象商量直接去下一个景点,当时已经是下午三点多了。

沿着公路一直前行,路过有“小赛里木”之称的湖泊,其实就是一个人工湖,看到有很多人在露营烧烤,然后中间有一段管控,不让开车进,很多人都把车停在门口,我带着对象下来散散步、拍拍照,湛蓝的天空伴着习习微风,令人心旷神怡。

短暂休息后,我们决定前往沙滩游玩,就继续出发一路边走边玩,有说有笑,最后导航来到白沙湾沙滩,路两边也是停满了车,一下车女朋友就很兴奋,我也换上了短裤和人字拖,沙滩度假标配,瞅了一下,人不多还挺宽敞的,沙子也比较干净,基本都是一家三口带着小孩来玩,我们俩也去海水泡泡脚,不过傍晚那段时间海水挺黄的,也正好快赶上涨潮。

夕阳和沙滩
夕阳和沙滩
海边的风景
海边的风景

简单玩了一会,我们又去把帐篷从车上拉下来,带了不少东西,因为是第一次露营过夜,也是尽量准备周全一点,准备了防潮垫之类的东西,然后带了一个空调被,事实证明这远远不够,靠近海边还是有点冷,温度不高,比正常睡觉偏凉一些。晚上的话就使用自己带的食材美美的吃了一顿,有火锅底料、毛肚、肥牛、金针菇等,刚好吃饭的时候对面还放起了烟花,非常享受。

露营火锅
露营火锅

出去露营一定要收集好自己的垃圾,我专门准备了几个袋子收拾垃圾使用,打包好扔到附近的垃圾桶,之后就是洗漱完躺着享受夜晚,第一次在帐篷过夜,体验很不错。

本来打算第二天下午就回去的,但是早上起来发现空气很好,天空很蓝,海水很清,和傍晚完全不同,就决定多住一夜。早餐就热一下来之前准备的三明治,又是一顿美美的早餐,之后就是常规的拍照打卡环节,早上八九点几乎没什么人,和女朋友漫步在海边,看着照样吹吹清晨的海风,颇有一番滋味。

海边日出
海边日出

还在美团下单了一些小铲子等,挖挖贝壳,堆堆沙子,彷佛回到了童年。累了就躺帐篷里休息,休息好了继续出去玩,除了太阳有点大,其他并无不适,还好带了防晒喷雾,这两天下来也没有晒黑,不过忽略了一件事,身上防晒做好了,但是忽略了脚,因为穿着人字拖,一天下来好像有些晒伤,还好缓了几天就缓过来了,下次一点要注意这点。

堆沙子游戏
堆沙子游戏

不过等到晚上的时候,倒是发生了一些突然状态,没有看天气预报,入夜的时候风越来越大,因为在海边有些担心,就跟对象商量了一下放弃过夜的想法,收拾了一下行李装车离开,和来时完全不同,路上几乎没有一辆车,打开窗户慢慢开,注意到了之前没有注意的一些东西,象山的路边交通很像之前看过的台湾偶像剧里面的建筑,可能因为都毗邻海边的缘故,建筑风格也很像,和对象嘻嘻笑笑的踏上了回杭的旅程。

总结下来,对这次旅行还是比较满意的,除了开始的时候在高速堵车,其他时候还是很畅通的,风景吃喝都没有委屈自己,非常棒!完结撒花!

开心的下午茶时光
开心的下午茶时光

  •  

第一个 Github 千星项目

2025年4月20日 08:00

今天中午吃完饭闲来无事,准备上 GitHub Explore 看看有没有新的开源项目推荐。

发现我的一个项目,居然成功达到了 1k star,记录一下,虽然是一个很简单的工具,但也算解决了部分用户的痛点。

已经迭代了 170+ 个 releases 版本,功能不断更新,解决了 110+ Issues,合并了 20+ Pull requests。

GitHub: https://github.com/dlzmoe/linuxdo-scripts

LinuxDo Scripts
LinuxDo Scripts

  •  

我和 AI 的这几年

2025年4月19日 08:00

这几年最火的事情莫过于 AI,也有可能是幸存者偏差的原因,当然这暂表不提,只谈谈我和 AI 相处的这几年,我是如何利用这个工具,提高我的工作效率,以及在生活,兴趣爱好等层面和谐融入

2022 年底 的时候,我初步接触 gpt 3.5,给我带了极大的震撼,我没想到,AI 已经进化到如此的地步,可以智能对话,处理代码逻辑,进行文字撰写工作。以现在的目光看来它很傻,但是在当时那个环境下,给我的工作和学习带来了极大的帮助。

现在翻阅和 gpt 的历史聊天记录,可以看出我当时对它还是抱有很大的热枕,可以帮我总结繁杂的 json 数据并重组数据结构。还可以通过一些特殊的 Prompt 让它解锁图片生成,虽然很生成的图像很拙劣,但我玩的很开心。

后来随着这个领域发展的突飞猛进,Claude 横空出世,开始在上下文限制上领先 gpt,但是 OpenAI 毕竟占据先发优势,仍然是我主用的模型。可随着时间的推移,Claude 开始崭露头角,在代码领域展现出断层式的领先,尤其是在前端代码生成方面,非常符合我的需求,所以后来我的使用就变成了 Claude 写代码,gpt 日常使用。

可以给我生成一些文档,比如开发某个项目,要写开发文档,说明书之类的,程序员最厌恶的两件事情。一是让我写文档,二是别人不写文档。而 AI 恰好可以完美处理这个问题,虽然刚开始比较笨拙,但在我不停的投喂资料下,也是可以逐渐生成可上生产环境的文档,当然了最后还是需要我来 review code。

后来谷歌也陆续推出了什么 Bard 模型,现在改名叫 Gemini,质量也是非常不错,不过我用的比较少。通过前面的介绍也大概知道,AI 领域前期一直是国外遥遥领先,虽然我也希望国产 AI 可以崛起。

但是在 2024 年年末的时候,DeepSeek 横空出世,在 AI 圈掀起了轩然大波,当时深度求索推出两款模型一个是 deepseek-chat 也就是现在的 deepseek-v3,还有一个就是现在的深度思考模式 deepseek-reasoner。也是带起了大模型引入思考的风潮。

记得在还没过年之前,DeepSeek 小火了一段时间,我也是频繁使用,代码质量、文本质量完全可以称得上一线水平,官网速度也很快,应该是因为人流量还未彻底爆发,深度思考模式基本都是秒出。后来代码一经开源,直接引起热潮,官网流量爆炸,至今任伟恢复到巅峰时期,不过这也说明了 deeseek 的全民热潮。

后面各家大厂也都部署了 deepseek 全血版,我比较推崇火山方舟和阿里云百炼旗下的 deepseek 模型,质量和速度也都在前列,我 90% 在使用火山方舟的。

其实阿里旗下的 QWen 模型也一直发展的风生水起,不过我是个人用习惯了前面说的那些,所以 QWen 也很少用,不过非常推荐大家使用。

所以我目前对 AI 模型的使用如下,DeepSeek + GPT 处理日常文字工作,图像生成,以及繁琐的数据重组等,Claude 负责处理逻辑复杂的代码开发,然后掺杂着 Gemini 以及其他新兴模型作为测试。


其他文章我可能或多或少使用 AI 进行润色,但这篇文章完全 0 AI 痕迹,算是对这方面的个人总结吧。如名词错误情况或其他错误请指出,完全是有感而发思绪很快,键盘敲个不停。

  •  

无法加载文件,因为在此系统上禁止运行脚本

2025年4月17日 08:00
无法加载文件 D:\Code\xxx\npm.ps1,因为在此系统上禁止运行脚本

偶尔会遇到这个问题,修改下电脑的策略就可以了。

在管理员终端输入下面的指令:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
  •  

Cherry Studio 接入高德地图 MCP 示例

2025年4月2日 08:00

本教程使用环境 Cherry Studio 1.1.17.

最近 Cherry Studio 也接入了 MCP 服务器,闲着无聊准备尝试一番,就拿最简单的高德地图来做演示,刚好最近高德也支持了 MCP 服务。

需要申请高德开发者账号,这个就不赘述了。在高德开发者控制台找到 应用管理>我的应用,点击创建新应用,类型名称随便填一下,绑定服务要选择 Web服务,然后不要限制 IP,最后会生成一个 key。

配置 Cherry Studio 的 MCP 服务器

拿到高德地图的 key 后,在 Cherry Studio 的 MCP 服务器设置填入,有两种方法。

  1. 方法一:直接导入配置(推荐)

在右上角 编辑 MCP 配置 中直接将下面的配置复制进去,改一下 AMAP_MAPS_API_KEY

{
  "mcpServers": {
    "@amap/amap-maps": {
      "name": "@amap/amap-maps",
      "isActive": true,
      "command": "npx",
      "args": [
        "-y",
        "@amap/amap-maps-mcp-server"
      ],
      "env": {
        "AMAP_MAPS_API_KEY": "xxxxxxxxxxx"
      }
    }
  }
}
  1. 方法二:手动填写配置

在 Cherry Studio 中打开 MCP 服务器设置界面,按以下参数填写:

名称:@amap/amap-maps
命令:npx
参数:-y @amap/amap-maps-mcp-server
环境变量:添加 AMAP_MAPS_API_KEY 并填入您的 Key。

保存配置后,系统会自动加载高德地图的 MCP 服务。

会在下方显示高德地图支持的工具,就是 AI 模型可以调用的工具。

启用 AI 模型的函数调用功能

使用方法也很简单,需要 AI 模型支持函数调用,以火山引擎作为示例,我使用了 DeepSeek-R1 模型,默认是没有函数调用的(会显示那个小扳手),需要在设置中手动开启

这样在聊天框下方会出现一个 MCP 的标志,勾选后可以直接跟模型进行对话,可以输出天气地点等信息,如果再搭配你的 prompt,可以直接规划公交地铁线路等。

测试 MCP 对话效果
### 🧑‍💻 User

规划一下这周清明节在杭州出去玩的攻略。

---

### 🤖 Assistant


根据杭州清明节期间的天气情况,我为您规划一份兼顾自然风光与文化体验的 3 日游攻略,天气友好且行程灵活:

---

**🌿 清明小长假 3 日游行程推荐(4 月 3 日 -5 日)**  
*注:4 月 2 日周二为工作日,建议提前抵达杭州做准备*

---

**Day1(4 月 3 日·晴转多云|7-19℃)**  
**主题:西湖经典文化线**  
☀️ 上午  
7:30 乘摇橹船游「乌龟潭路线」  
(郭庄码头→茅家埠→曲院风荷,避开人潮享樱花碧水)  
9:30 步行至「岳王庙」拜谒民族英雄  

🌤️ 下午  
13:00「中国茶叶博物馆(双峰馆)」  
(亲手体验龙井茶炒制,观千亩茶田)  
15:30「茅家埠黛色参天」古风摄影  
(黛色牌坊 + 睡莲初绽,汉服出片胜地)  

🌙 夜晚  
19:00「西湖音乐喷泉」灯光秀  
(提前占位,夜赏湖滨灯光璀璨)  

---

**Day2(4 月 4 日·多云|12-26℃)**  
**主题:春日野趣轻徒步**  
🌸 上午  
8:00「九溪烟树」溯溪徒步  
(穿越迷雾森林,十八涧水映杜鹃)  
11:00「龙井村」茶农家访  
(品明前龙井,尝茶香土鸡汤)  

🌿 下午  
14:00「云栖竹径」洗肺之旅  
(千年古树 + 竹林秘境,电影《卧虎藏龙》取景地)  
16:30「梅家坞」茶园骑行  
(租电动车漫游茶山,俯瞰层叠青绿)  

🍵 傍晚  
18:30「茶人村」晚餐  
(百年老宅尝桂花藕韵、茶香虾)  

---

**Day3(4 月 5 日·小雨转晴|13-25℃)**  
**主题:运河文艺漫游**  
🌧️ 上午(微雨意境)  
9:00「桥西历史街区」  
(逛刀剪/伞/扇博物馆,体验非遗手作)  
11:00「小河直街」咖啡探店  
(推荐河下咖啡·《人间草木》主题书咖)  

☀️ 下午(放晴后)  
14:00「拱宸桥」乘漕舫船  
(水路穿越古今,听评弹吴侬软语)  
16:00「富义仓艺术中心」看展  
(旧粮仓改造的先锋艺术空间)  

🎑 夜晚  
19:30「胜利河美食街」夜宵  
(推荐老头油爆虾、脆皮大肠)  

---

**⚠️ 出行贴士**  
1️⃣ 穿衣:洋葱式穿搭(薄毛衣 + 防风外套),备晴雨伞  
2️⃣ 交通:西湖景区周末单双号限行,推荐地铁 + 共享单车  
3️⃣ 预约:岳王庙/茶叶博物馆等需提前 1 天在「掌上西湖」预约  
4️⃣ 备选:若遇大雨可调整为「浙江省博」+「南宋官窑博物馆」室内游  

清明时节的杭州既有烟雨江南的朦胧美,又有春和景明的清朗,建议随身带本《杭州记事》手账,在各景点盖限定章留念哦~ 🌸
  •  

通过 AI 实现自动生成 SEO TDK

2025年3月6日 08:00

感谢博友的文章,《AI 实践|零成本生成 SEO 友好的 TDK 落地方案》

昨天晚上刷到一篇文章,通过 AI 自动化生成网站 SEO 的 TDK,他这个方法有两点比较繁琐的地方。

  1. 文章内容需要手动替换到脚本中
  2. 生成的 TDK 需要手动加入数据库

我针对第一点略微做了一些调整,可以直接查找当前脚本目录下的文件夹,在文件的 62 行,稍后我会把源码贴在文章最下方。

https://github.com/dlzmoe/blog/blob/main/aitdk.py

# aitdk.py
def main(file_name, api_key, api_url, model, debug=False):
    current_dir = os.path.dirname(os.path.abspath(__file__))
    file_path = os.path.join(current_dir, 'content', 'blog', file_name)

这里的目录 /content/blog 可以自由修改,换成你本地的格式。

使用方法也很简单,在 aitdk.py 同级目录下新建一个 .env 环境变量文件,内容如下:

OPENAI_API_KEY=sk-xxx
OPENAI_API_URL=https://api.openai.com/v1
OPENAI_API_MODEL=gpt-4o-mini

然后安装一下依赖。

pip install markdown beautifulsoup4 openai==0.28 python-dotenv

运行命令,xxx.md 就是你的文件全名。

py aitdk.py xxx.md

生成的结果就如下,对于 SEO 质量还是不错的。

aitdk.py 源码
import os
import json
import markdown
from bs4 import BeautifulSoup
import openai
from dotenv import load_dotenv
import argparse

# 加载环境变量
load_dotenv()

def extract_text_from_markdown(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        md_content = file.read()
    
    html_content = markdown.markdown(md_content)
    soup = BeautifulSoup(html_content, 'html.parser')
    text_content = soup.get_text()
    
    return text_content

def generate_seo_content(text, api_key, api_url, model, debug=False):
    openai.api_key = api_key
    if api_url:
        openai.api_base = api_url

    prompt = f"请根据文章内容从 SEO 友好的角度提取出标题、关键词和描述:\n\n{text}\n\n请以 JSON 格式输出,包含 slug、title、keywords 和 description 字段。"
    
    try:
        response = openai.ChatCompletion.create(
            model=model,
            messages=[
                {"role": "system", "content": "你是一个 SEO 专家,擅长提炼文章的核心内容并生成优化的元数据。"},
                {"role": "user", "content": prompt}
            ]
        )
        
        content = response.choices[0].message['content']
        # 只在 debug 模式下输出 API 响应
        if debug:
            print("API Response:", content)
        return content
    except Exception as e:
        print(f"Error calling OpenAI API: {e}")
        return None

def parse_seo_content(content):
    try:
        # 尝试直接解析 JSON
        return json.loads(content)
    except json.JSONDecodeError:
        # 如果直接解析失败,尝试提取 JSON 部分
        try:
            start = content.index('{')
            end = content.rindex('}') + 1
            json_str = content[start:end]
            return json.loads(json_str)
        except (ValueError, json.JSONDecodeError):
            print("无法解析 API 返回的内容为 JSON 格式")
            return None

def main(file_name, api_key, api_url, model, debug=False):
    current_dir = os.path.dirname(os.path.abspath(__file__))
    file_path = os.path.join(current_dir, 'content', 'blog', file_name)
    
    if not os.path.exists(file_path):
        print(f"错误:文件 '{file_path}' 不存在。")
        return

    text_content = extract_text_from_markdown(file_path)
    seo_content = generate_seo_content(text_content, api_key, api_url, model, debug)
    
    if seo_content:
        seo_data = parse_seo_content(seo_content)
        if seo_data:
            print(json.dumps(seo_data, ensure_ascii=False, indent=2))
        else:
            print("无法生成有效的 SEO 数据")
    else:
        print("生成 SEO 内容失败")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="从 Markdown 文件生成 SEO 内容")
    parser.add_argument("file_name", help="Markdown 文件名称 (位于 content/blog/目录下)")
    parser.add_argument("--api_key", default=os.getenv("OPENAI_API_KEY"), help="OpenAI API 密钥")
    parser.add_argument("--api_url", default=os.getenv("OPENAI_API_URL"), help="OpenAI API URL")
    parser.add_argument("--model", default=os.getenv("OPENAI_API_MODEL"), help="OpenAI 模型名称")
    parser.add_argument("--debug", action="store_true", help="开启调试模式,显示 API 响应")
    
    args = parser.parse_args()

    if not args.api_key:
        print("错误:未提供 API 密钥。请在命令行参数中指定或在.env 文件中设置 OPENAI_API_KEY。")
    else:
        main(args.file_name, args.api_key, args.api_url, args.model, args.debug)
  •  

径山寺看雪:杭州周边雪景游记

2025年2月22日 08:00

周五无意在小红书上刷到说杭州周边的山头都开始下雪,立刻打开“天文通”APP 查看,确实下雪了。

立刻喊上女朋友开始规划周六的行程。

早上 9 点左右出门,到达时 10:30 左右,将车停在了径山集散中心附近,然后乘坐景区免费的接驳车前往山顶的径山寺。

这里表示非常好评,提供了免费的接驳车,省去了自己开车的麻烦。一路上盘山公路弯弯绕绕,差点给我坐晕了,上山单程大概 25-30 分钟,这还是在不堵车的情况下。

刚开始还是淅淅沥沥的小雨,大概快到山顶的时候飘起了雪花,快两年没看到雪了。

顺便在雪上写字打卡留恋一下,字丑勿怪,女朋友还很喜欢。


值得一提的是今天运气特别好,大概一点多准备下山的时候,坐到半山腰时发现上山的路都被堵住了。根本不知道今天来了多少人。

后面听说不少上山的车打滑,撞了不少栏杆和围墙,想想就很危险,幸好没有开车上山。

由于雪越下越大,估计也是怕出现意外,执勤交警已经封了后半段路,并且从集散中心上山的接驳车也全面停运。

现在唯一上山的方式就是自驾到径山桐桥停车场,然后沿径山古道上山,这个停车场是距离山顶最近的地方,但是场地不大,很难停车。好处是路线比较友好,没有太大的难度,大概一个小时左右就可以。

  •  

Cloudflare 上部署 Twikoo 服务时报错

2025年2月20日 08:00

GitHub: https://github.com/twikoojs/twikoo-cloudflare

Twikoo 支持通过 Cloudflare Workers 进行部署服务和数据库,GitHub 仓库地址如上。

但是部署文档中有一点小坑需要注意一下,官方没有进行标注,我不清楚是只有我遇到这个问题还是怎么样,记录下来以防有其他人遇到这个问题,在搜索引擎可以看到这篇文章而解决。

由于 Cloudflare Workers 的免费套餐对捆绑包大小有严格的 1MiB 限制,因此我们需要手动删除一些包以使捆绑包保持在限制范围内。由于 Cloudflare 工作线程的 Node.js 兼容性问题,这些包无论如何都无法使用。

因为上面那个问题,所以需要把这几个文件清空,(不能删除会报错),但是这个指令存在问题,会把文件格式转为 utf-16,如果不处理它的话就会导致最后部署的时候报错,如下图所示。

解决方法也很简单,只需要在 vscode 中找到这三个文件。

把编码格式改为 utf-8,然后清空乱码即可。

  •  

奇趣周刊 - 第 82 期

2025年2月1日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

祝大家新年快乐,大吉大利!在新的一年里,事业节节高升,财源滚滚。

1. barba.js - 一个让网站平滑跳转的库

https://barba.js.org/

这个库的功能与 pjax 类似,但是更轻量、易用,本站已经引入该库实现平滑跳转。它使网站像 SPA(单页应用程序)一样运行,并有助于减少页面之间的延迟、最大限度地减少浏览器 HTTP 请求并增强用户的 Web 体验。
可以进入官网体验这种效果。

2. RetroUI - 一个复古风格的 UI 组件库

https://retroui.dev/

这是一个基于 Tailwind CSS 的复古风格 UI 库,与现代化千篇一律的样式不同。

3. 字节跳动出品的 Trae

https://www.trae.ai/

对标 Cussor,可以用 claude3.5,限时免费。Trae 是一个人工智能集成开发环境(IDE),旨在通过人工智能与开发者的协作,提高开发效率和项目构建速度。

4. Github 官方的 css 组件

https://primer.style/css/storybook/?path=/docs/gettingstarted--docs

无意中发现 GitHub 居然有一个官方提供的 UI 组件库,但是似乎维护的不是很上心,不过单纯使用 css 的话还是会跟 GitHub 网站保持一样的风格,感觉还不错,支持 cdn 直接引入、或者 npm 包导入。

  •  

奇趣周刊 - 第 81 期

2025年1月16日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Monkt - 将文件和网页转换为支持 AI 的 Markdown 或 JSON

https://monkt.com/

将 PDF、Word、PowerPoint、Excel、CSV、网页或者网页链接转换为支持 AI 的 Markdown 或 JSON 格式。

2. Grok Button - 一键向 Grok 进行提问

https://grokbutton.com/g/

Grok Button 通过扩展将 Grok 的强大功能带入您的浏览器。直接在浏览器栏中输入“grok {您的问题}”向 Grok 提问。

3. 将现实世界在 Minecraft 中生成

https://github.com/louis-e/arnis

一个非常有意思的项目,可以通过在现实地图中选择区域,然后渲染到 Minecraft 中生成对应的地图,水平非常高很细节。创建 3D 结构、道路、自然形态等。

4. 一键自动将内容保存到 Google 表格

https://www.addtosheets.com/

一个 Chrome 扩展,可让将网络上任何位置的文本、链接、图像 URL、页面链接等内容保存到 Google 表格电子表格中,而无需切换选项卡,兼容 Brave 和 Microsoft Edge。

5. 一键保存文章

https://packpack.ai/

一个浏览器扩展,可以保存网页、文章、图像、PDF、视频、音乐、播客等,支持同步。

6. Notion Faces - 官方的头像生成网站

https://faces.notion.com/

“Notion Faces” 是 Notion 官方提供的个性化服务,可以随机生成 Notion 风格的头像。

7. Plyr - 一款轻量的 HTML5 播放器

https://github.com/sampotts/plyr

Plyr 是一个开源的媒体播放器,支持 HTML5 视频和音频,以及 YouTube 和 Vimeo 平台的内容。它提供了一个简洁的界面,并且可以通过自定义来适应不同的需求。

8. 模糊处理截图中的敏感数据

https://blurdata.app/

BlurData 是一款专为 macOS 设计的自动模糊敏感信息的工具,能够快速识别并隐藏截图和 PDF 文档中的敏感数据,如电子邮件地址、姓名、金额等,提供免费试用和付费订阅两种使用方式。

  •  

奇趣周刊 - 第 80 期

2025年1月1日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

说明:调整后降低一下周刊发布的频率,由原来的每周四发布,改为现在的每半个月发布一次,也就是 1 日、16 日,希望为大家带来更优质的内容。

1. LinuxDo Scripts 扩展

专为 linux.do 论坛设计,给 linux.do 用户提供了一些增强功能。

https://github.com/dlzmoe/linuxdo-scripts

2. 图片压缩

https://compressimage.cn/

网站提供的是一款本地隐私图片压缩工具,能够实现高达 95% 的压缩率,支持多种图片格式,保证压缩过程中的隐私安全,并提供批量处理功能。

3. GPT 降智检测

https://github.com/KoriIku/chatgpt-degrade-checker

此工具可帮助检测 ChatGPT 是否因“高风险”IP 指定而通过降级服务来限制对您帐户上某些功能的访问。遇到无法使用 GPT-4 生成图像、网络搜索访问受限或 GPT-3.5 的简化响应等问题的用户可能会受益于运行此脚本来识别潜在的降级。

4. 在线模拟器游戏网站

https://www.emu666.com/

一个在线模拟器游戏网站,无需下载打开即玩,有很多怀旧的游戏,合金弹头、拳皇、三国战记等等。

5. 高颜值的跨平台桌面端视频资源播放器

https://github.com/Hiram-Wong/ZyPlayer

一款采用现代化技术栈开发的高颜值媒体播放器,它基于 electron-vite 框架,集成了 TDesign UI 组件库与 Vue3 全家桶,以清新的薄荷绿为主题,旨在为用户提供流畅的跨平台娱乐体验。

6. 一键保存网站上的视频、音频和 GIF

https://cobalt.tools/

7. 小红书博主都在用的红薯编辑器

https://reditorapp.com/

笔记编辑、排版、内容检测、效果预览,一站式搞定。帮助你在潜移默化中掌握小红书笔记创作底层逻辑!

8. 生成你的 2024 GitHub 总结

https://rendley.com/wrapped

GitHub Wrapped 2024 使用 Rendley SDK 提供了一种生成个性化视频摘要的方式,展示用户在 GitHub 上的年度成就和亮点。

34mb 视频,正在加载

  •  

上海特种兵一日游 | 亲密旅行与城市探索

2024年12月29日 08:00

周五晚上下班和对象临时决定做一回特种兵,极限旅游。

各自回家收拾一下,开车凌晨出发,一点多到达杭州南站。因为买了一班七点半到达的火车,怕早上起不来所以直接在火车站睡了。

然后火车上又睡了俩小时,之所以坐火车是想感受一下烟火气息,比高铁慢一些但是感受不错。

七点半准时达到,精神状态良好。除了走在路上风有点大,温度倒是不冷。

第一站武康大楼,标准的网卡打卡点。但不得不说还挺好看咧。

遇到不少打卡的,以及网红拍摄。

然后来到城隍庙、豫园老城区这边逛逛,顺便吃点早餐。

逛完之后就顺着路线走到黄埔江边外滩看看东方明珠,以及各种民国时期的建筑。

逛累了之后就坐轮渡过黄浦江来到东方明珠脚下,顺便看看网红打卡三件套。

六点多都逛完之后,坐上了回家的火车结束这趟旅程,到家 8 点正好休息(其实也不算特种兵了)。开着小米运动一天走了 17 公里,3w 步,但是并没有感觉到累,可能两个人比较放松吧,拍拍照打打卡还是蛮舒服的。

感叹不愧是大都市,消费都比杭州高了一个档次。

  •  

使用 wxt 框架开发浏览器扩展时遇到的问题解决方案

2024年12月25日 08:00

最近在使用 wxt 框架开发浏览器扩展,记录一些问题。

https://wxt.dev/

1. 隔离脚本与网站本身的样式

使用 Shadow Root,可以不让 content-scripts 侵入式影响网站本身,然后引入并渲染 App.vue 组件。

import './style.css';
import { createApp } from 'vue';
import App from './App.vue';

export default defineContentScript({
  matches: ['https://google.com/*'],
  cssInjectionMode: 'ui',

  async main(ctx) {
    const ui = await createShadowRootUi(ctx, {
      name: 'example-ui',
      position: 'inline',
      anchor: 'body',
      onMount: (container) => {
        const app = createApp(App);
        app.mount(container);
        return app;
      },
      onRemove: (app) => {
        app?.unmount();
      },
    });

    ui.mount();
  },
});

2. 在 config.js 中配置

import { defineConfig } from 'wxt';
import pkg from './package.json';

// See https://wxt.dev/api/config.html
export default defineConfig({
  extensionApi: 'chrome',
  modules: ['@wxt-dev/module-vue'],
  manifest: {
    name: 'xxx',
    version: pkg.version,
    description: ...,
    permissions: ['storage', 'scripting'] // 存储、插入脚本
  },
  hooks: {
    'build:manifestGenerated': (wxt, manifest) => {
      if (wxt.config.command === 'serve') {
        manifest.content_scripts ??= [];
        manifest.content_scripts.push({
          matches: ['https://google.com/*'],
          js: ['content-scripts/content.js'],
          css: ['content-scripts/content.css']
        });
      }
    }
  }
});
  •  

我的 2024 年度总结

2024年12月24日 08:00

时间过的很快,又到了一年结束的时候。今年还算过的充实,不管是生活还是工作中,也是符合我的预期了。

上半年公司开发了新项目,连续加班几个月身心疲惫,好在后期补充新人,我也转战别的业务不再疯狂加班,不然真的有些熬不住…

那段时间过后感觉身体都有些不舒服,因此也发掘了一些新的爱好约上三五好友。

比如说露营,开始还不太了解,跟着朋友参加了几次露营活动,觉得很有意思,后面也自己买了一堆设备,帐篷、桌椅、小推车、烤炉等,不过近期天气转凉没有机会出去玩,打算等开春温度上去了再重新带着女朋友去露营。

然后又玩起了无人机,虽然我技术比较菜,但也玩的挺开心,出去爬山或者哪里的时候都会带着,看看不一样的角度挺有意思,感兴趣的可以去翻阅我之前发的一些文章有航拍记录。

然后就是日常开着车在杭州周边溜达了,也写了不少文章都有发布的摄影照片。


并且在开源之路继续前行,下半年来到 LinuxDo 社区开发了一款插件,不到半年时间也是收获了 500 多的 star,得到不少用户好评,截止到现在已有 530+ .

做开源也是一件很有成就感的事情,看到 Issues 被一一解决,合并热心网友的 Pr,也望自己再接再厉。


希望明年心态还能一如往常,保持平淡的饮食习惯,注重身体健康,多爬山多运动。

  •  

奇趣周刊 - 第 79 期

2024年12月5日 08:00

奇趣周刊,每周四发布,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

本期是 12 月份最后一期,最近有些事情处理,请假一个月暂时调整,2025 年 1 月 1 日重启。


1. 浮图秀

谷歌扩展

帮助用户快速查看页面中缩略图对应“大图”的浏览器插件,对于所支持的网站,用户鼠标悬停在缩略图时即可看到相应的高分辨率图片。目前支持的网站包括京东、天猫、淘宝、知乎、微博等 270 余个网站/域名并在不断扩展中。

1732591965522

2. PDFMathTranslate - PDF 科技论文翻译

PDF 科技论文翻译及双语比较,保留公式、图表、目录和注释,支持多种语言,多样化的翻译服务,提供命令行工具、交互式用户界面和 Docker。

1732684486199

3. 竹白百科

https://www.zhubai.wiki/

竹白百科网页是一个专注于优质内容的平台,展示了各类作品和创作者的最新动态,提供了一个发现和分享优秀博客、设计素材、技术文章等内容的空间。

1732686226541

4. 帮我寻找 AI 工具的搜索引擎

https://www.raghut.com/

通过描述可以得到想要的 AI 工具,比如“我需要一个编写 PPT 的 AI 工具” ,然后它就会搜索出可以满足你需求的工具,非常好用。

1732766033976

5. AI 海报生成器

https://postergenerator.online/

1732773092481

6. 给网页设置简单的表情 ico

https://fav.farm/

不用再费劲思考设置什么样的 ico 图,直接使用一行链接设置表情 ico。

1732786866829

7. Discover Random Websites - 随机网站跳转

https://random-websites.com/

Discover Random Websites 网站提供了一个平台,允许用户通过单击按钮来发现互联网上的有趣网站,并且可以提交自己喜欢的网站供社区探索。

  •  

奇趣周刊 - 第 78 期

2024年11月28日 08:00

奇趣周刊,每周四发布,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. 橘猫起始页

https://jvmao.net/

一个浏览器新标签页插件。

1732093218545

2. 发票排版助手

https://fapiao.365yhb.com/

支持 PDF、PNG、JPG,拖拽排序,批量排版,100% 数据安全,免登录免费使用!作者是linux.do论坛的一位朋友。

1732149602670

3. 正则表达式在线调试网站

https://regex101.com/

1732181207881

4. 程序员应该访问的最佳网站中文版

https://github.com/tuteng/Best-websites-a-programmer-should-visit-zh

在学习 CS 的时候有一些你必须知道的有用的站点,来提升你的技术储备和学习新知识。

5. 可以改变图像上文字的工具

https://fal.ai/flux-tools

1732254206573

6. 海底电缆图

https://www.submarinecablemap.com/

海底电缆地图是来自 TeleGeography 的免费且定期更新的资源。

1732255451354

7. Twitter MBTI 收据

https://twi.am/

通过 Twitter 个人公开数据,分析个人的 MBTI 性格,还是挺好玩的,项目已开源可自部署。

1732512715625

8. iansui - 一套开源的繁体中文字型

https://github.com/ButTaiwan/iansui

基于 Fontworks 的 Klee One 衍生的开源繁体中文字型。

1732586740448

  •  

奇趣周刊 - 第 77 期

2024年11月21日 08:00

奇趣周刊,每周四发布,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Screenity - 屏幕录像和标注工具

https://screenity.io/

一款 Chrome 扩展,支持在屏幕的任意位置进行精彩的录制和信息标注,您可以同时录入清晰的麦克风音频或系统内部音频,并且还可享受便捷的点击高亮效果。此外,录制的视频能够轻松导出为 MP4、gif、webm 等多种流行文件格式,并且还提供简单易用的视频编辑功能,让您的创作更加完美!

1731374637523

2. 仿 GitHub 可视化的显示地球

https://github.com/janarosmonaliev/github-globe

Github 主页上的地球仪是用 ThreeJS 实现的,具有漂亮的阴影。

1731374922890

3. 适用于 Google Chrome 的简单记事本扩展程序

谷歌扩展

一个基于 Chrome 浏览器的扩展,可以用来临时记笔记。

1731383557534

4. 识别图片中的表格并转成 excel 文件

https://toexcel.zhiyakeji.com/

图片转 excel 使用了先进的 OCR 识别技术,能够精准的识别图片中的表格和文字,并将其还原并转成可编辑的 excel 文件。

1731394888134

5. 免费的在线记事本

https://hypernotepad.com/

免费在线记事本,可即时共享,无需安装,点开即可使用。

1731648894276

6. 检测网站嵌套能力的神器

只需输入目标网址,点击检测,即可快速获知该网址是否支持 iframe 嵌套。

https://iframecheck.online/

1732008068528

7. Awesome Bilibili Extra

https://github.com/HCLonely/awesome-bilibili-extra

Bilibili 脚本合集,收集一些让我们在使用 B 站时更加方便的浏览器扩展/脚本/程序。

8. Coolshapes Demo

https://github.com/realvjy/coolshapes-demo

该代码库包含一个简单的演示项目,用于检查来自 coolshapes-react 包的所有形状。

1732074351175

  •  

奇趣周刊 - 第 76 期

2024年11月14日 08:00

奇趣周刊,每周四发布,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Web Archive - 基于 Cloudflare 的网页归档工具

https://github.com/Ray-D-Song/web-archive

Web Archive 是基于 Cloudflare 的免费网页归档和共享服务,将网页保存为单个 html 文件并上传到服务器,服务器接收浏览器插件上传的 html 文件,并存储到数据库和存储桶中,最终在 Web 客户端显示这些文件。

1730192134470

2. CSS3 剪贴路径 (Clip-path) 在线生成器

https://www.techbrood.com/tool?p=css-clip-path

可以在线通过拖拽画幅节点,利用 Clip-path 属性剪切各种形状的图形,非常好用的工具。

1730335974148

3. danmu - 一个简单的弹幕插件

https://github.com/imtaotao/danmu

danmu 是一个在 GitHub 上开源的弹幕项目,提供了碰撞检测和高度自定义的弹幕屏幕样式,旨在为用户提供一个轻量级、高度可定制且易于集成的弹幕解决方案。

1730708232790

4. 浏览器扩展管理器

https://github.com/JasonGrass/auto-extension-manager

auto-extension-manager 是一个开源的浏览器扩展管理器,支持自定义规则自动启用或禁用扩展,提供多种匹配条件和动作,以及批量导出 / 导入扩展功能,同时支持多语言和丰富的配置选项。

1730710186460

5. EXIF 查看器

https://viewer.chuhai.tools/

优雅的查看照片的专业信息 EXIF,本地运行不上传云端,还是比较安全的。

1730776779737

6. 在线糖豆人游戏

https://passer-by.com/pacman/

经典街机糖豆人游戏在线版本。

1730869754508

7. 美观的代码截图工具

https://ray.so/

1730951631263

8. Blinko - 开源的个人笔记项目

https://github.com/blinko-space/blinko

Blinko 是一个创新的开源项目,专为那些想要快速捕捉和组织转瞬即逝的想法的个人而设计。Blinko 允许用户在想到想法的那一刻就无缝地记下想法,确保不丢失任何创造力的火花。

1731374393763

  •  

Lobechat 使用 Webdav 同步数据的研究

2024年11月12日 08:00

1. 前言

Lobechat 就不做过多介绍了,一个开源、现代设计的人工智能聊天框架。

今天就来聊聊同步的问题,Lobechat 分为社区版和正式版,正式版需要付费订阅套餐,支持全局云同步,但是最便宜的套餐都要 4.9 刀,这让我 API 用户感觉有点难以接受。因为我需要的功能社区版都已经满足了,并不打算单独对云同步付费。

官方之前有通过 WebRTC 同步数据的方案,但在某个版本被废弃了,其实我也能理解,WebRTC 同步方案太过麻烦,且具有不稳定性,必须保证同时两台设备在线,而且实现原理让我感觉有一丝不安全性。

对 WebRTC 概念感兴趣的话可以看下官方的一篇文章:
https://github.com/lobehub/lobe-chat/discussions/368


其实除了正式版之外,还有服务器自建数据库等同步方法,但都需要一定的成本和技术壁垒。

因此我在社区版的基础上构思了一个脚本,通过 Webdav 技术实现对话记录、设置等同步。此方案成本基本为零,坚果云免费额度都绰绰有余。

2. Webdav / Tampermonkey

但研究开始之前,有两个概念需要先了解一下。

  1. Webdav

大多数网盘都支持通过 Webdav 技术进行同步,网盘会提供一套账号密码以及服务器地址,在前端调用 API,能够实现增删改查等操作。

  1. 油猴管理器(Tampermonkey)

油猴管理器(Tampermonkey)无疑是浏览器插件的伟大创作之一,可以对网页注入 js 脚本来实现一些功能。

3. 那么如何获取 Lobechat 数据呢?

我研究过 Lobechat 源码,它数据都存放在本地的 IndexedDB 数据库中,这是浏览器的一个存储机制,可以存放大量的数据,显示则是以数据库的格式。

1731404378265

然后我先手动导出一份 json 格式的全局数据(社区版只支持手动导入导出文件),拿这份文件跟 IndexedDB 数据库 做对比,发现字段基本保持一致,数据格式也不用转,全部都在其中。

于是我翻阅了一下官方文档,有可以利用的 API,操作查询这些数据,下面是我的一些思路。

先声明我想要拿到的数据,这些都在上面的截图中存在。

const dbName = "LOBE_CHAT_DB";
const storeNames = ["messages", "sessionGroups", "sessions", "topics", "users"];
let request = indexedDB.open(dbName);

request.onsuccess = (event) => {
  const db = event.target.result;
  let state = {
    messages: [],
    sessionGroups: [],
    sessions: [],
    topics: [],
    users: [],
  };

  let pendingStores = 0;

  storeNames.forEach((storeName) => {
    if (db.objectStoreNames.contains(storeName)) {
      pendingStores++;
      const transaction = db.transaction([storeName], "readonly");
      const objectStore = transaction.objectStore(storeName);
      const allRecords = objectStore.getAll();

      allRecords.onsuccess = (event) => {
        const result = event.target.result;
        state[storeName] = result;
        pendingStores--;

        if (pendingStores === 0) {
          /*
          * 整个数据库的数据都可以导出
          * 在此回调执行操作
          */ 
        }
      };
    } 
  });
};

4. 操作流程原型

既然可以查询,就可以覆盖,同样也有 API 支持,所以我就构思了一下流程,利用 Webdav 的增删改查,把这些数据传到网盘中,然后在另一台设备拉取,最后优化一下整个流程,让它更加可视化。

大致原型如下:

1731404855162

点击同步到云端,会通过 Webdav API 在网盘创建一个指定的文件夹 lobechat-webdav-backup(我自己随意命名的),在本地程序中生成一个 json 文件,IndexedDB 数据会被放入该文件中,然后通过 Webdav API 传输到网盘中。

点击下载到本地,会先通过 Webdav API 获取lobechat-webdav-backup下的 json 文件内容,利用 IndexedDB API 覆盖在浏览器 IndexedDB 数据库中。


在实际体验中,可以随时保存本地数据到云端,下载数据到本地,同步就很方便,使用了三天,没有出现同步出错的问题,脚本很稳定。

最终我把该脚本发布到 Greasyfork,可供大家直接使用,代码也已开源。

  •  

大慈岩悬空庙

2024年11月9日 08:00

大慈岩位于浙江建德,半山腰有一座悬空庙,同时也是庆余年 2 的取景地,今天来到这里爬爬山打打卡。

用无人机拍出了全貌,地势也是十分惊险。

1731162547427 1731162534022 1731162501463

依山而建。

1731162559523

“重岩叠嶂。”

1731162269639

  •  

奇趣周刊 - 第 75 期

2024年11月7日 08:00

奇趣周刊,每周四发布,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Obsidian 官方剪藏插件

https://obsidian.md/clipper

安装浏览器插件后,在需要剪藏的文章页面打开扩展即可,可以自定义文档属性等功能。

1729757360814

2. PDF 文件生成播客

https://github.com/YOYZHANG/PodCastLM
https://ai.podcastlm.fun/

通过处理 PDF 的内容,生成适合音频播客的自然对话,并将其输出为 MP3 文件。

1729774232662

3. 检测页面是否能使用 iframe 嵌入

https://iframetester.dev/

4. 把 GitHub 链接转换成 LLM 可阅读格式的工具

https://githubtollm.replit.app/

支持整个项目、文件夹或单个文件,比如,你想用 LLM 阅读分析 GitHub 上的代码时,不用手动复制粘贴代码来转换了,直接输入 GitHub 地址它可以自动转换。

1729754968989

5. QtScrcpy - 小巧的 Android 投屏工具

https://github.com/barry-ran/QtScrcpy

支持通过 USB 或 WIFI 一键连接 Android 设备到电脑,实现屏幕显示和控制,无需 root 权限。并提供了丰富功能,包括实时屏幕显示、键鼠控制、屏幕录制、截图、批量操作、文件传输、剪贴板同步等。

1729834423650

6. 点开即玩的赛车小游戏

https://drive-mad.cc/

1729909199188

7. 在线棋类对战游戏

https://papergames.io/

1729941288376

8. 好玩的头像生成器

https://animate-avatar.netlify.app/

能够生成头像绘制过程的动画,而且也可以将动画 svg 导出,直接应用在博客或各种社交平台上。

1730166216144

  •  

盐官古城

2024年11月3日 08:00

今天带着小外甥出去晒晒太阳补补钙,去了盐官古城。

刚开发到一半就开放运营了,门票 60,有一大半区域还在施工,景点基本是没有的,也没有太多的商家入驻,只看到了一家全家便利店,其他的都是又口味一般又没听过的“特色美食”,就餐环境也不是很好。

据便利店员工聊天所知,景区不允许便利店售卖过多的快餐等食物,只有少量的面食(几盒),以恶意揣测是怕抢别的当地的饭馆生意。

但即使是这样,看别的餐馆也是仅有几桌,都没有坐满。

就当是散步了,不适合抱着游览景点的心态前往,同时也不太建议带小孩去,路面不平台阶多、桥多,不合适推车,每次路过都要抬着小推车挺麻烦的,并且里面实在没有什么玩的地方。

风景呢,也只有游客中心大门门口还算好看点,里面也挺一言难尽的,建议去其他古镇,比如:南浔、乌镇、塘西等。

随便放几张航拍的吧,权作纪念。

1730638302085

1730638295397

  •  

秋日良渚

2024年11月2日 08:00

经历了一周的降雨,整个人都发霉了,刚好看到周末两天天气非常棒,很适合出行,前往良渚踏青。

1730637844468

1730637807151

1730637824025

1730637834768

其实我也没太搞懂这几根柱子有什么历史含义,只感觉有种巨石阵的意味了。

  •  

OpenAI 发布 ChatGPT Search 谷歌扩展

2024年11月1日 08:00

2024 年 11 月 1 日,OpenAI 在谷歌扩展商店发布了一款插件 – ChatGPT search。

下载地址:https://chromewebstore.google.com/detail/ejcfepkfckglbgocfkanmcdngdijcgld

功能是接口浏览器默认的搜索,只需要在谷歌浏览器地址栏中输入内容再回车,可以直接跳转到 ChatGPT 官网使用 SearchGPT 功能进行聊天搜索,并且支持联网搜索。

挺实用的一个工具,特别是针对像我这样深度的 GPT 系列工具用户来说,极大优化了访问和使用流程。

1730443764168

1730443887430

仅个人感受,无数据支撑,感觉 SearchGPT 的质量要优于 Google 搜索,也有可能是我用习惯了的原因。

  •  

奇趣周刊 - 第 79 期

2024年12月5日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

本期是 12 月份最后一期,最近有些事情处理,请假一个月暂时调整,2025 年 1 月 1 日重启。


1. 浮图秀

谷歌扩展

帮助用户快速查看页面中缩略图对应“大图”的浏览器插件,对于所支持的网站,用户鼠标悬停在缩略图时即可看到相应的高分辨率图片。目前支持的网站包括京东、天猫、淘宝、知乎、微博等 270 余个网站/域名并在不断扩展中。

2. PDFMathTranslate - PDF 科技论文翻译

PDF 科技论文翻译及双语比较,保留公式、图表、目录和注释,支持多种语言,多样化的翻译服务,提供命令行工具、交互式用户界面和 Docker。

3. 竹白百科

https://www.zhubai.wiki/

竹白百科网页是一个专注于优质内容的平台,展示了各类作品和创作者的最新动态,提供了一个发现和分享优秀博客、设计素材、技术文章等内容的空间。

4. 帮我寻找 AI 工具的搜索引擎

https://www.raghut.com/

通过描述可以得到想要的 AI 工具,比如“我需要一个编写 PPT 的 AI 工具” ,然后它就会搜索出可以满足你需求的工具,非常好用。

5. AI 海报生成器

https://postergenerator.online/

6. 给网页设置简单的表情 ico

https://fav.farm/

不用再费劲思考设置什么样的 ico 图,直接使用一行链接设置表情 ico。

7. Discover Random Websites - 随机网站跳转

https://random-websites.com/

Discover Random Websites 网站提供了一个平台,允许用户通过单击按钮来发现互联网上的有趣网站,并且可以提交自己喜欢的网站供社区探索。

  •  

奇趣周刊 - 第 78 期

2024年11月28日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. 橘猫起始页

https://jvmao.net/

一个浏览器新标签页插件。

1732093218545

2. 发票排版助手

https://fapiao.365yhb.com/

支持 PDF、PNG、JPG,拖拽排序,批量排版,100% 数据安全,免登录免费使用!作者是linux.do论坛的一位朋友。

1732149602670

3. 正则表达式在线调试网站

https://regex101.com/

1732181207881

4. 程序员应该访问的最佳网站中文版

https://github.com/tuteng/Best-websites-a-programmer-should-visit-zh

在学习 CS 的时候有一些你必须知道的有用的站点,来提升你的技术储备和学习新知识。

5. 可以改变图像上文字的工具

https://fal.ai/flux-tools

1732254206573

6. 海底电缆图

https://www.submarinecablemap.com/

海底电缆地图是来自 TeleGeography 的免费且定期更新的资源。

1732255451354

7. Twitter MBTI 收据

https://twi.am/

通过 Twitter 个人公开数据,分析个人的 MBTI 性格,还是挺好玩的,项目已开源可自部署。

1732512715625

8. iansui - 一套开源的繁体中文字型

https://github.com/ButTaiwan/iansui

基于 Fontworks 的 Klee One 衍生的开源繁体中文字型。

1732586740448

  •  

奇趣周刊 - 第 77 期

2024年11月21日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Screenity - 屏幕录像和标注工具

https://screenity.io/

一款 Chrome 扩展,支持在屏幕的任意位置进行精彩的录制和信息标注,您可以同时录入清晰的麦克风音频或系统内部音频,并且还可享受便捷的点击高亮效果。此外,录制的视频能够轻松导出为 MP4、gif、webm 等多种流行文件格式,并且还提供简单易用的视频编辑功能,让您的创作更加完美!

1731374637523

2. 仿 GitHub 可视化的显示地球

https://github.com/janarosmonaliev/github-globe

Github 主页上的地球仪是用 ThreeJS 实现的,具有漂亮的阴影。

1731374922890

3. 适用于 Google Chrome 的简单记事本扩展程序

谷歌扩展

一个基于 Chrome 浏览器的扩展,可以用来临时记笔记。

1731383557534

4. 识别图片中的表格并转成 excel 文件

https://toexcel.zhiyakeji.com/

图片转 excel 使用了先进的 OCR 识别技术,能够精准的识别图片中的表格和文字,并将其还原并转成可编辑的 excel 文件。

1731394888134

5. 免费的在线记事本

https://hypernotepad.com/

免费在线记事本,可即时共享,无需安装,点开即可使用。

1731648894276

6. 检测网站嵌套能力的神器

只需输入目标网址,点击检测,即可快速获知该网址是否支持 iframe 嵌套。

https://iframecheck.online/

1732008068528

7. Awesome Bilibili Extra

https://github.com/HCLonely/awesome-bilibili-extra

Bilibili 脚本合集,收集一些让我们在使用 B 站时更加方便的浏览器扩展/脚本/程序。

8. Coolshapes Demo

https://github.com/realvjy/coolshapes-demo

该代码库包含一个简单的演示项目,用于检查来自 coolshapes-react 包的所有形状。

1732074351175

  •  

奇趣周刊 - 第 76 期

2024年11月14日 08:00

奇趣周刊,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Web Archive - 基于 Cloudflare 的网页归档工具

https://github.com/Ray-D-Song/web-archive

Web Archive 是基于 Cloudflare 的免费网页归档和共享服务,将网页保存为单个 html 文件并上传到服务器,服务器接收浏览器插件上传的 html 文件,并存储到数据库和存储桶中,最终在 Web 客户端显示这些文件。

1730192134470

2. CSS3 剪贴路径 (Clip-path) 在线生成器

https://www.techbrood.com/tool?p=css-clip-path

可以在线通过拖拽画幅节点,利用 Clip-path 属性剪切各种形状的图形,非常好用的工具。

1730335974148

3. danmu - 一个简单的弹幕插件

https://github.com/imtaotao/danmu

danmu 是一个在 GitHub 上开源的弹幕项目,提供了碰撞检测和高度自定义的弹幕屏幕样式,旨在为用户提供一个轻量级、高度可定制且易于集成的弹幕解决方案。

1730708232790

4. 浏览器扩展管理器

https://github.com/JasonGrass/auto-extension-manager

auto-extension-manager 是一个开源的浏览器扩展管理器,支持自定义规则自动启用或禁用扩展,提供多种匹配条件和动作,以及批量导出 / 导入扩展功能,同时支持多语言和丰富的配置选项。

1730710186460

5. EXIF 查看器

https://viewer.chuhai.tools/

优雅的查看照片的专业信息 EXIF,本地运行不上传云端,还是比较安全的。

1730776779737

6. 在线糖豆人游戏

https://passer-by.com/pacman/

经典街机糖豆人游戏在线版本。

1730869754508

7. 美观的代码截图工具

https://ray.so/

1730951631263

8. Blinko - 开源的个人笔记项目

https://github.com/blinko-space/blinko

Blinko 是一个创新的开源项目,专为那些想要快速捕捉和组织转瞬即逝的想法的个人而设计。Blinko 允许用户在想到想法的那一刻就无缝地记下想法,确保不丢失任何创造力的火花。

1731374393763

  •  

Lobechat 使用 Webdav 同步数据的研究

2024年11月12日 08:00

1. 前言

Lobechat 就不做过多介绍了,一个开源、现代设计的人工智能聊天框架。

今天就来聊聊同步的问题,Lobechat 分为社区版和正式版,正式版需要付费订阅套餐,支持全局云同步,但是最便宜的套餐都要 4.9 刀,这让我 API 用户感觉有点难以接受。因为我需要的功能社区版都已经满足了,并不打算单独对云同步付费。

官方之前有通过 WebRTC 同步数据的方案,但在某个版本被废弃了,其实我也能理解,WebRTC 同步方案太过麻烦,且具有不稳定性,必须保证同时两台设备在线,而且实现原理让我感觉有一丝不安全性。

对 WebRTC 概念感兴趣的话可以看下官方的一篇文章:
https://github.com/lobehub/lobe-chat/discussions/368


其实除了正式版之外,还有服务器自建数据库等同步方法,但都需要一定的成本和技术壁垒。

因此我在社区版的基础上构思了一个脚本,通过 Webdav 技术实现对话记录、设置等同步。此方案成本基本为零,坚果云免费额度都绰绰有余。

2. Webdav / Tampermonkey

但研究开始之前,有两个概念需要先了解一下。

  1. Webdav

大多数网盘都支持通过 Webdav 技术进行同步,网盘会提供一套账号密码以及服务器地址,在前端调用 API,能够实现增删改查等操作。

  1. 油猴管理器(Tampermonkey)

油猴管理器(Tampermonkey)无疑是浏览器插件的伟大创作之一,可以对网页注入 js 脚本来实现一些功能。

3. 那么如何获取 Lobechat 数据呢?

我研究过 Lobechat 源码,它数据都存放在本地的 IndexedDB 数据库中,这是浏览器的一个存储机制,可以存放大量的数据,显示则是以数据库的格式。

1731404378265

然后我先手动导出一份 json 格式的全局数据(社区版只支持手动导入导出文件),拿这份文件跟 IndexedDB 数据库 做对比,发现字段基本保持一致,数据格式也不用转,全部都在其中。

于是我翻阅了一下官方文档,有可以利用的 API,操作查询这些数据,下面是我的一些思路。

先声明我想要拿到的数据,这些都在上面的截图中存在。

const dbName = "LOBE_CHAT_DB";
const storeNames = ["messages", "sessionGroups", "sessions", "topics", "users"];
let request = indexedDB.open(dbName);

request.onsuccess = (event) => {
  const db = event.target.result;
  let state = {
    messages: [],
    sessionGroups: [],
    sessions: [],
    topics: [],
    users: [],
  };

  let pendingStores = 0;

  storeNames.forEach((storeName) => {
    if (db.objectStoreNames.contains(storeName)) {
      pendingStores++;
      const transaction = db.transaction([storeName], "readonly");
      const objectStore = transaction.objectStore(storeName);
      const allRecords = objectStore.getAll();

      allRecords.onsuccess = (event) => {
        const result = event.target.result;
        state[storeName] = result;
        pendingStores--;

        if (pendingStores === 0) {
          /*
          * 整个数据库的数据都可以导出
          * 在此回调执行操作
          */ 
        }
      };
    } 
  });
};

4. 操作流程原型

既然可以查询,就可以覆盖,同样也有 API 支持,所以我就构思了一下流程,利用 Webdav 的增删改查,把这些数据传到网盘中,然后在另一台设备拉取,最后优化一下整个流程,让它更加可视化。

大致原型如下:

1731404855162

点击同步到云端,会通过 Webdav API 在网盘创建一个指定的文件夹 lobechat-webdav-backup(我自己随意命名的),在本地程序中生成一个 json 文件,IndexedDB 数据会被放入该文件中,然后通过 Webdav API 传输到网盘中。

点击下载到本地,会先通过 Webdav API 获取lobechat-webdav-backup下的 json 文件内容,利用 IndexedDB API 覆盖在浏览器 IndexedDB 数据库中。


在实际体验中,可以随时保存本地数据到云端,下载数据到本地,同步就很方便,使用了三天,没有出现同步出错的问题,脚本很稳定。

最终我把该脚本发布到 Greasyfork,可供大家直接使用,代码也已开源。

  •  

大慈岩悬空庙

2024年11月9日 08:00

大慈岩位于浙江建德,半山腰有一座悬空庙,同时也是庆余年 2 的取景地,今天来到这里爬爬山打打卡。

用无人机拍出了全貌,地势也是十分惊险。

1731162547427 1731162534022 1731162501463

依山而建。

1731162559523

“重岩叠嶂。”

1731162269639

  •  

奇趣周刊 - 第 75 期

2024年11月7日 08:00

奇趣周刊,每周四发布,分享有趣的软件,程序,动态新闻等。 周刊列表 | rss 订阅

1. Obsidian 官方剪藏插件

https://obsidian.md/clipper

安装浏览器插件后,在需要剪藏的文章页面打开扩展即可,可以自定义文档属性等功能。

1729757360814

2. PDF 文件生成播客

https://github.com/YOYZHANG/PodCastLM
https://ai.podcastlm.fun/

通过处理 PDF 的内容,生成适合音频播客的自然对话,并将其输出为 MP3 文件。

1729774232662

3. 检测页面是否能使用 iframe 嵌入

https://iframetester.dev/

4. 把 GitHub 链接转换成 LLM 可阅读格式的工具

https://githubtollm.replit.app/

支持整个项目、文件夹或单个文件,比如,你想用 LLM 阅读分析 GitHub 上的代码时,不用手动复制粘贴代码来转换了,直接输入 GitHub 地址它可以自动转换。

1729754968989

5. QtScrcpy - 小巧的 Android 投屏工具

https://github.com/barry-ran/QtScrcpy

支持通过 USB 或 WIFI 一键连接 Android 设备到电脑,实现屏幕显示和控制,无需 root 权限。并提供了丰富功能,包括实时屏幕显示、键鼠控制、屏幕录制、截图、批量操作、文件传输、剪贴板同步等。

1729834423650

6. 点开即玩的赛车小游戏

https://drive-mad.cc/

1729909199188

7. 在线棋类对战游戏

https://papergames.io/

1729941288376

8. 好玩的头像生成器

https://animate-avatar.netlify.app/

能够生成头像绘制过程的动画,而且也可以将动画 svg 导出,直接应用在博客或各种社交平台上。

1730166216144

  •  

盐官古城

2024年11月3日 08:00

今天带着小外甥出去晒晒太阳补补钙,去了盐官古城。

刚开发到一半就开放运营了,门票 60,有一大半区域还在施工,景点基本是没有的,也没有太多的商家入驻,只看到了一家全家便利店,其他的都是又口味一般又没听过的“特色美食”,就餐环境也不是很好。

据便利店员工聊天所知,景区不允许便利店售卖过多的快餐等食物,只有少量的面食(几盒),以恶意揣测是怕抢别的当地的饭馆生意。

但即使是这样,看别的餐馆也是仅有几桌,都没有坐满。

就当是散步了,不适合抱着游览景点的心态前往,同时也不太建议带小孩去,路面不平台阶多、桥多,不合适推车,每次路过都要抬着小推车挺麻烦的,并且里面实在没有什么玩的地方。

风景呢,也只有游客中心大门门口还算好看点,里面也挺一言难尽的,建议去其他古镇,比如:南浔、乌镇、塘西等。

随便放几张航拍的吧,权作纪念。

1730638302085

1730638295397

  •  

秋日良渚

2024年11月2日 08:00

经历了一周的降雨,整个人都发霉了,刚好看到周末两天天气非常棒,很适合出行,前往良渚踏青。

1730637844468

1730637807151

1730637824025

1730637834768

其实我也没太搞懂这几根柱子有什么历史含义,只感觉有种巨石阵的意味了。

  •  
❌