当前为Joe's Dev Blog的博客内容。查看全部
  • JoeJoeJoe
    一键安装地址: v2ex-scene-script.user.js 脚本仓库地址: v2ex-scene-script.user.js 更新 2026-01-07: '新增聊天面板拖动缩放与自适应布局能力,可以通过右下角的拖拽手柄调整大小', '新增主动发起会话功能, 输入用户名直接发起一个会话', '新增聊天面板位置记忆功能, 面板位置会在关闭后保存, 下次打开时恢复', '新增会话置顶功能, 置顶的会话会固定在列表顶部', '新增消息引用功能, 可以引用某条消息进行回复, 长按消息气泡即可触发操作面板', '新增引用消息点击跳转到原消息位置, 如果原消息在当前页面没加载, 则不跳转', '新增日/月模式切换, 可以在面板顶部切换当前主题', '新增图片显示支持, 可以在消息中显示图片链接', '新增R按钮和C按钮, R按钮用于刷新会话列表(适应于消息不同步), C按钮用于清除当前会话记录(重新建立索引)', '优化PIN状态不会再在刷新后丢失', '修复若干已知问题' 更新 2026-01-06: 最新版本添加了 引用与打赏私聊 的功能, 长按消息就可以唤起操作菜单 消息中支持显示…
  • JoeJoeJoe
    V2EX历史数据看板添加了对打赏相关数据的展示
  • JoeJoeJoe
    工具站点地址: https://data.v2ex.pro/ 仓库地址: https://github.com/HelloWorldImJoe/v2ex-info-history 数据源地址: https://github.com/GrabCoffee/v2ex-info-newsletter-data 技术栈: 纯React前端项目 数据采集: 使用Cloud Flare定时采集的数据, 然后保存到了github仓库中, 有些时候可能会被限流导致一些采集不到的脏数据, 在前端做了一层过滤,应该不影响整体的分析. 发布: 这个可以详细说一下思路 使用了Planet的文件夹发布功能: 将项目打包之后, 通过planet发布文件夹并生成ipns 在V2EX的Planet管理器中, 提交这个ipns, 并绑定了data.v2ex.pro的域名 因为正常V2ex的Planet管理器是会去站点找一个planet.json的文件, 所以我伪造了这个文件, 并修改了这个文件对应的ipns, 目的是能够让v2ex抓取到我最新的cid来与上面提到的域名做关联. 为了在Planet管理器中能显示头像, 我…
  • JoeJoeJoe
    脚本一键安装地址 仓库地址: https://github.com/HelloWorldImJoe/TampermonkeyScripts 开发背景: https://v2ex.com/t/1170807?p=1#r_16953786 截图:
  • JoeJoeJoe
    Planet已经占用了4001端口, 所以我将swarm port设置为了4002, 修改相关配置, 或者直接在目录下运行:./deployment.sh, 会直接创建一个ipfs的节点, 创建成功之后, 可以通过http://localhost:${ipfs_gateway_port}/webui 打开webui来进行简单操作. 脚本文件: deployment.sh 脚本源码如下: # !/bin/bash # 检查 Docker 是否安装 if ! [ -x "$(command -v docker)" ]; then echo 'Error: Docker is not installed.' >&2 exit 1 fi echo 'Docker is installed.' # 检查是否有正在运行的 IPFS 容器 if [ "$(docker ps -q -f name=ipfs_host)" ]; then echo 'Error: An IPFS container is already running.' >&2 exit 1 fi ech…
  • JoeJoeJoe
    效果大概是这样的: 大概流程就是: 我会解析planet聚合器中的节点, 找到对应的data-site-address, 然后在最前方拼上scheme: planet://, 再调用window.open()打开这个连接, 就完成了这个半自动操作😂 点击某个博客关注后, 同一列表的其他博客不会显示已关注, 刷新一下界面就可以了, 这里我不想点关注之后再刷新, 比较影响体验. 因为真正的关注是在planet中实现的, 所以界面上的已关注我放开了取消关注的限制, 如果planet中已经取消关注了, 界面上还显示已关注这是正常现象, 毕竟数据不能同步, 我也不想做的太麻烦, 看着碍眼手动点一下得了. 仓库地址: https://github.com/HelloWorldImJoe/TampermonkeyScripts 快速安装地址: 脚本安装地址
  • JoeJoeJoe
    之前上线了一个针对V2EX的空投网站, 最近有V友反馈说这个网站被Chrome标记成了危险站点, 需要向谷歌申诉一下, 记录一下处理这次事件的整个过程 背景 大概是一个月之前, 我上线了一个解析V2EX帖子回复内容并进行批量空投的站点, 一直也没啥人用, 我也没怎么关注过, 直到昨天下午, 我帮一个V站大佬进行批量空投之后, 晚上有V友给我提示说站点被chrome标记成了危险站点, 提醒我去谷歌申诉一下. 在此感谢@Jianrry的友情提示, 帖子原文在这: 刚才帮 @PilgrimSun 大佬搞了一波空投, 顺便给空投加上了一个筛选指定楼层区间的功能, 顺便 po 一下过程中的一些细节 过程 今早晨, 我打开我的空投网站, 果然提示我是危险站点! 于是我点击详细信息->请告知我们, 在这个页面进行了一次简单的申诉 点击提交, 提示成功, 然后我等了有半个小时, 再次打开网站, 很好, 还是危险站点😂, 于是我再次点击详细信息->发现了钓鱼式攻击进入这个帮助界面 点击了自我保护->Google安全中心进入了安全界面并注册了账号, 填写了我的站点地址: 碰到了一个小问…
  • JoeJoeJoe
    一. 关于交易的细节 以v2ex的20$v2ex打赏为例: 1.在点击打赏按钮之后, 会唤起钱包进行交易, 其实在交易的面板中是有一个默认折叠的高级选项的, 可以点击展开折叠, 如图1所示: 2. 如果点开高级选项会显示本次交易包含的操作指令, 如图2所示: Program Id 就是程序的ID, 也就是我们常说的智能合约 Data 就是这个程序传入的参数 可以看到打赏V币一共执行了3个指令, 上面两个指令是Unknown, 所以钱包把他们对应的合约地址也就是Program Id给贴出来了, 右边有一个打开按钮, 点击就可以查看这个合约的具体信息. 最后一个指令是Transfer, 这个指令是内置指令, 也就是System Program, 类似系统内核里面自带的一些工具或者函数方法. (其实前面两个ComputeBudget, 也是系统提供的, 是NativeLoader管理的, 为什么显示Unknown不清楚, 但是这不是这次讨论的重点, pass掉) 然后细说最后这个Transfer, 这个其实就是转账操作, 转账分两种, 一种是原生转账, 一种是SPL转账, 咱们使用的V币打赏…