最近沉迷于在哔哩哔哩看各种国际象棋教学视频，希望能提高自己的棋力。在观看哔哩哔哩up主的视频合集时遇到一个问题，合集里的视频默认是正序播放，不能倒序播放。这让我有点头疼，因为我看的教学视频是搬运过来的，合集中的顺序和时间顺序刚好是相反的。我刚好又有点强迫症，不想在每个视频播放之后手动点击上一集视频播放，所以我就想：有没有什么解决方法。首先我尝试手动搜索解决办法，在知乎找到了一篇文章，作者写了一个脚本用于哔哩哔哩合集的倒序播放。我如获至宝，马上下载下来试试看。只可惜，没办法用，我不知道是哪里出错了，也许是哪里操作不对，这里就不放这个脚本的链接了。于是我决定求助AI，我详细描述了我的问题，GPT给出了几种解决方案。前两种方案都是使用别人写的脚本，很可惜的是这两个脚本可能没有及时更新，无法实现倒序播放的功能。所以，还是让GPT给我写一个脚本吧。GPT先给出了如下的测试版本，并告诉我利用控制台进行调试。我粗略看了一下代码，原理应该是找到哔哩哔哩网站自动播放的原理（这很重要），根据页面的结构写代码，代码也没有很长。为了方便操作，脚本还给页面添加了几个按钮。// ==UserScript== // @name Bilibili Multi-P Reverse Player v1.0 // @namespace ChatGPT // @version 1.0 // @description B站多P视频倒序播放增强 // @author ChatGPT // @match https://www.bilibili.com/video/* // @run-at document-end // @grant none // ==/UserScript== (function () { 'use strict'; const STORAGE_KEY = "bili_multi_reverse"; let reverse = localStorage.getItem(STORAGE_KEY) === "1"; let switched = false; function getState(){ const s = window.__INITIAL_STATE__; if(!s || !s.videoData) return null; return { bvid:s.bvid, pages:s.videoData.pages, current:Number(s.p || 1) }; } function jump(page){ const data=getState(); if(!data) return; if(page < 1 || page > data.pages.length) return; location.href = `/video/${data.bvid}?p=${page}`; } function createUI(){ if(document.querySelector("#bili-multi-panel")) return; const box=document.createElement("div"); box.id="bili-multi-panel"; box.innerHTML=` ◀ 上一P 下一P ▶ `; box.style.cssText=` position:fixed; right:25px; top:150px; z-index:99999; display:flex; flex-direction:column; gap:8px; `; document.body.appendChild(box); const style=` #bili-multi-panel button{ background:#00aeec; color:white; border:0; padding:8px 14px; border-radius:6px; cursor:pointer; font-size:14px; } `; const st=document.createElement("style"); st.textContent=style; document.head.appendChild(st); updateButton(); document .querySelector("#bili-prev") .onclick=()=>{ const d=getState(); if(d) jump(d.current-1); }; document .querySelector("#bili-next") .onclick=()=>{ const d=getState(); if(d) jump(d.current+1); }; document .querySelector("#bili-reverse") .onclick=()=>{ reverse=!reverse; localStorage.setItem( STORAGE_KEY, reverse?"1":"0" ); updateButton(); }; } function updateButton(){ const btn= document.querySelector("#bili-reverse"); if(btn){ btn.innerText = reverse ? "倒序：开启" : "倒序：关闭"; } } function autoPlayReverse(){ if(!reverse) return; const data=getState(); if(!data) return; if(data.current<=1) return; const video= document.querySelector("video"); if(!video) return; video.addEventListener( "ended", ()=>{ if(switched) return; switched=true; jump(data.current-1); }, { once:true } ); } function keyboard(){ document.addEventListener( "keydown", e=>{ if( e.target.tagName==="INPUT" || e.target.tagName==="TEXTAREA" ) return; const d=getState(); if(!d) return; // [ if(e.key==="["){ jump(d.current-1); } // ] if(e.key==="]"){ jump(d.current+1); } // R if( e.key.toLowerCase()==="r" ){ reverse=!reverse; localStorage.setItem( STORAGE_KEY, reverse?"1":"0" ); updateButton(); } } ); } function init(){ createUI(); keyboard(); setTimeout( autoPlayReverse, 3000 ); } setTimeout( init, 3000 ); })();把调试结果发给GPT之后，它又给出了第二版代码，这一版代码已经能实现预期的功能了。如果想用这个脚本先要在浏览器里面下载TamperMonkey插件，再把脚本代码输进去。写完这个脚本以后才真正感受到AI编程能力之强。JavaScript我几乎不了解，我只是按照GPT给我的提示一步步进行测试，将测试结果返回给它进一步修改代码。这是一个比较简单的任务，但如果要我从头写难度还是比较大的，GPT解决了一切问题。
最近有点沉迷与在网上下国际象棋，这可能是我对写论文的一种逃避吧。为了让自己的这个逃避看起来正经一点，我在构想一个有趣的小项目，就是把自己下过的棋局进行总体的分析并且可视化。其实在决定正式动手写代码之前，我大概了解了一下现有的棋局分析的工具，主要是chess.com网站和ChessBase分析软件。这两个分析工具都有一个共同点：付费。Chess.com上对棋局进行分析需要开通会员，ChessBase本身就是一个不便宜的软件。并且这两个分析工具得到的分析结果都有点太专业了（如下图），适合进行严肃的复盘和分析。我这个项目的分析主打一个“好玩”。如果想进一步对棋局进行分析，就要考虑引入UCI引擎（内置或者用户配置），这样工程量稍微大一点。关于这个项目的最终呈现结果，我想的是：根据上传的PGN对局集，用Python进行读取，最后生成一个动态的，类似于动画的总结页面。用图片+文字的形式总结一下棋手的风格（这一步可以调用LLM实现）。现在Vibe Coding这么火爆，我也想尝试一下把自己的想法落地。项目使用的技术栈暂时还没确定，作为一个相对轻量的项目，应该也不用选择太复杂的框架。先立下小小的目标，不知道这个项目什么时候能实现。
马上要开始写我的毕业论文了。在正式动工之前需要做一些准备工作，其中就包括：对论文的历史版本进行管理。我知道我可以每次写完论文后重命名+保存到硬盘上，但总觉得这样不够“帅气”，计算机专业的人应该有其他更好的方法！如果是对代码进行版本控制，我不会多犹豫一秒：直接选git。但论文是Word文件，git对于二进制文件的支持不是很好，于是我决定另寻他路。经过一番搜索，我找到了好几种方法：云盘、 LaTeX+ Git、SVN。我不喜欢使用云盘，第一种方案直接否决。LaTeX虽然是很多人写论文的首选，但我没怎么学过，也没有现成的模版，也不行。最后只剩下SVN这种方案。使用SVN有一个关键点：服务器，我开始想的是，直接用我本地的电脑作为服务器，这样还能省下购买云服务器的成本。仔细思考之后我发现这种方案存在一定风险，如果我的电脑坏了（希望永远不要出现这种问题），本地硬盘上的代码有可能丢失，我还是要备份到外接硬盘上。既然要使用云服务器进行存储，为什么不直接使用我建站的这台服务器呢！方案的问题迎刃而解，接下来就是配置。在服务器上配置SVN需要懂一点Linux命令，不是很难。网上教程也很多，配置起来很快，这里就列出几条常用的指令。教程可以参考 Linux中SVN的安装与使用 - 知乎首先，使用命令行安装svn// 安装SVN，这里的服务器是ubuntu系统，不同系统的指令略有差别 sudo-apt install subversion // 验证是否安装成功 svnserve --version编辑文件，我一般使用nano进行编辑，因为我对vim还不太熟悉// 使用vim进行编辑 vim // 使用nano进行编辑 nano // 上面两条指令选择一条进行使用最后启动SVN服务即可。至此，服务器端的设置全部结束了。本地电脑上需要安装SVN，下载地址：下载 · TortoiseSVN - TortoiseSVN 软件然后登录SVN账号就大功告成，对于想上传的文件/文件夹，可以鼠标右键点击SVN -> import上传下面是几条常用的SVN命令//提交修改，“”里面是添加的注释 svn commit -m "" //更新 svn update // 显示每一次提交的记录 svn log
最近思考的一些问题，大多是关于工作和生活的，这里记录一下我的一些感想。首先就是，我为什么要工作。这个问题其实很好回答，为了生计。除了这个解释，我找不到其他任何的理由。在短暂实习之后，我对工作这件事产生了一些恐惧。也许是没有体验过让自己满意的工作，我只能这样安慰自己。工作与生活如何平衡。这个问题不太好回答，就我目前所看到的情形，工作和生活有时候时无法平衡的。试想一下，当你晚上十点钟才结束一天的工作，回到家已经十一点甚至更晚。简单洗漱后就该睡觉了，但是报复性地看手机之后又迟迟无法入睡，第二天昏昏沉沉地起床，开始工作。这样的作息，人完全没有精力去干自己喜欢的事，所以谈何“工作与生活的平衡”，根本就没有自己的生活！说完上面这个问题，马上就能引出下一个问题：追求自由和快乐的生活有错吗。现在的主流观点，或者说我一直以来接受的教育就是“上班工作就是辛苦的”，“每个人都应该工作，工作要任劳任怨”。这些观点会让我对自己产生怀疑，怀疑自己的想法过于“离经叛道”，自己想“躺平摆烂”的心理不符合主流价值观。上面这三个问题想了很久，越想就越焦虑，我无法给出一个能说服自己的答案，总是阶段性地焦虑。或许，等我开始工作，这些问题就会有答案了吧。
Typora重点：Typora现在收费了，购买前还是考虑一下Typora是一款支持Markdown的软件，界面比较简洁，可以个性化主题，不过更换主题操作有一点繁琐。在所有的这些软件里面，我用Typora的次数最多，一门课程的实验报告就是我用Typora编辑的。如果只是写简单的报告，Typora能满足所有需求，Markdown可内嵌LaTex，书写数学公式也能立即看到效果。网上有人反映在字数达到十万左右时Typora的速度会变得比较慢，笔记比较多可能就不适用了😐。Typora里面md文档转PDF真的很快很方便，只需要依次点击左上角文件-导出-PDF即可，也支持HTML，LaTex格式。Notion没错，就是图上得这个软件，功能是在太多了😮！Notion的优势在于里面有海量的模板，从日记到年度计划，课程表，GPA计算等等。你想要实现的在上面都有模板，也可以导入别人制作的第三方模板。界面很精美，就是上手有一定难度，操作界面不支持中文😥，并且需要使用一定技术手段才能登录使用（我几个月没用了）。上手教程建议B站搜索：姜饼资Notion教程OneNote功能似乎没有很多(或者说有些功能我还不了解)，去年看球赛写过几篇感受（只使用了文字编辑功能），用的就是OneNote，OneNote支持手机和PC端的同步，同步速度也还可以。感觉如果对Word熟悉的人上手会很快。OneNote可以插入图片，直接在图片上做笔记。界面如下，简约风屏幕截图 2024-07-09 121322.pngObsidian最近刚开始接触的一款软件，功能比Typora多一些，比较实用的功能是在不同的文件之间建立链接，形成知识库的形式。我打算将所有博客文章通过obsidian互相链接，形成一个比较有序的体系。Obsidian中内嵌LaTex公式格式和Typora有细微差别，第一次用的时候注意一下就好。我新建了一个用于链接文章的文件，将所有文章文件标题用"[[]]"包围即可实现链接。上面四款软件我都简单使用过，当然也有一些很好的软件我没有提到，比如用VScode也能对Markdown文档进行编辑（下载相关插件）。电脑软件这种东西，还是看个人喜好选用。2025-04-06更新，由于重新安装了一下博客框架，原来的部分图片无法加载出来，于是我删除了这部分图片，请见谅。