Verne in GitHub

使用 flask migrate 来迁移数据结构

最近在学习使用 Flask 生成一个短链接服务时看到了 Flask-Migrate 这样一款插件,之前学习 Django 的时候自带数据库迁移工具, Flask 中也有这样一款,不过是以插件的形式出现,Flask Migrate 基于 Alembic ,Alembic 是 SQLAlchemy 作者开发的数据迁移工具。 文档主页:https://flask-migrate.readthedocs.io/en/latest/ 安装 执行: pip install Flask-Migrate 在安装完成之后需要在代码中添加如下代码 from fl Read more ...

2018-05-14 flask , sql , migrate , sqlalchemy , alembic , mysql , database

在屏幕上显示敲击的键盘 screencast

之前在做一次 Vim 演示的时候想要更加直观的在屏幕上实时显示出当前敲击的字母,所以找到了 screencast 这个解决方法。 安装 Debian/Ubuntu: 首先安装依赖: sudo apt-get install python3-gi gir1.2-gtk-3.0 sudo apt-get install python3-gi-cairo python3-cairo sudo apt-get install python3-setuptools python3-babel sudo apt-get install fonts-font- Read more ...

2018-05-13 screencast , keyboard , linux

自驾游必备 App

今年五一开车 2000 多公里,一路上找景点,找路线,找美食,这里记录一些比较好用的 App,当然在记录这写应用的时候,又发现了其他人推荐的应用,虽然之前并没有用上,但可以做一个备份期望可以用上。 PS 部分免责声明,PS 部分我并没有深入的用过,但是口碑还不错。 去哪里 这个问题早已经应该在心中确定,但如果没有确定,可以浏览马蜂窝 站点,一来对目的地有一个基本的了解,二来可以留心目的地的路况等等。虽然市场上游记类网站和应用也是泛滥的,但是马蜂窝确实多少年来一直兢兢业业专攻旅行的网站。写到这里不免想起,一直萦绕在我脑海里面的一个疑问,其实做内容的网站 Read more ...

2018-05-11 driving , tour , travel , app , collection

关于抖音的一点想法

去年年底装上了头条系全系列产品包括新闻,抖音,火山小视频,而半年多过去了,最后留下来的只有抖音。而之前不久也刚刚看到新闻报道抖音日活已经超 1.5 亿了。所以想整理下自己的看法。 以产品划分用户 全年年底的时候看过一篇文章,其核心思想就是 “头条以产品划分用户群”,虽然并不知道这是不是头条内部有意而为之或者就是产品定位的问题,确实头条内部关于视频的应用报的上名字的就有仨,火山,西瓜,抖音。这三个应用却各有特点,虽然我并没有很深入的使用,但也能快速的感觉到他们的差别,抖音明显要更年轻化,年龄 10+,20+ 主打的产品,而火山则是主打 ugc,各种内容都 Read more ...

2018-05-10 youtube , toutiao , 抖音 , 头条 , 短视频

青海游记思绪整理

7 天的旅程已经结束,更加准确的说应该是完整的 6 天,还有一天时间在路上。这一次经历很多第一次,第一次使用 Trello 规划出行,第一次长时间驾驶超过 2000 公里,第一次使用 Airbnb 来计划住宿,第一次上 3000 多米的高原,这许许多多的第一次让我感受了很多也收获了很多。 旅途遥远记得欣赏沿途的风景 大环线的路程相较于短短 6 天,时间非常赶,但是尤其是从大柴旦到敦煌,以及从张掖到西宁的路上,会路过无数的山脉和平原,别那么赶,看看两边风景。在很大一段时间内,你会看到两边延伸到天边的大漠,以及面前一直通向天边的公路,还有远处层叠的群山。 Read more ...

2018-05-06 travel , trip , plan , trello , qinghai , thinking

BitTorrent 客户端简单比较

本文会横向比较一下当前比较流行的 [[BitTorrent]] 客户端。 [[Transmission]] 跨平台的客户端 [[rTorrent]] 一款使用 C++ 编写的 BitTorrent 客户端,rTorrent 只提供命令行版本,可以配合 [[ruTorrent]] 界面来使用 [[qBittorrent]] [[Deluge]] [[uTorrent]] [[Vuze]] [[BiglyBT]] 一款使用 Java 编写的跨平台开源 BT 客户端,功能非常丰富 Transmission 开源地址: Read more ...


VPS 安全保护:使用 fail2ban 防止暴力破解

之前的文章里面也总结过一些 fail2ban 的简单使用,这里就扩展开来,把一些常见的使用方式记录一下,以便后面回顾。 今天想起这件事情主要是看到日志发现新建的服务(非标准端口)也有人不断的扫描,尝试登录,虽然已经设置过 SSH,nginx 端口的 fail2ban,但是没有考虑到所有的服务端口。 Installation sudo apt install fail2ban Configuration fail2ban 的主要配置都集中在 /etc/fail2ban/ 目录下 fail2ban.conf 主要是 fail2ban 自身的 Read more ...

2018-04-23 linux , fail2ban , security , sshd , password

Maven 依赖管理

使用 Maven 来管理项目的依赖,带来便捷性的同时也引入了一些问题。对于一个大型项目来说,引用数十个依赖是经常遇到的。Maven 在管理这些依赖的时候,遵循一些基本原则,这就是这篇文章主要要定义的问题。另外如果项目中出现了依赖冲突,也是这篇文章的重点。 dependencyManagement 作用 dependencyManagement 主要有两个作用 集中管理项目的依赖项 控制使用的依赖项的版本 使用 dependencyManagement 声明依赖,实际项目并不会引入,因此子项目需要显示声明需要用的依赖 如果不在子项 Read more ...

2018-04-19 maven , build , java , linux , build-system

清空Chrome缓存的301重定向

可能是之前测试短域名生成服务的时候,添加了 http://localhost:8080 的跳转,导致了此后所有对该地址的访问都被重定向到了另一个网址,即使我在 8080 端口的服务已经停止,并且已经更换了其他测试的服务,Chrome 依然缓存了 301 重定向。 而由因为跳转的时间非常快,所以我无法使用以前经常使用的 Ctrl+Shift+R 来强行刷新页面清除缓存。所以只能求助 Google,幸而操作并不复杂,不过让我学到了一些 Chrome 的小 tips,因此记录下来。 强制刷新 之前提到的 Ctrl + Shift + R 就能够强制刷新,但 Read more ...

2018-04-18 chrome , linux , redirect , browser , devtools

Linux 下的防火墙 ufw

UFW,全称 Uncomplicated Firewall,是通过 iptables 实现的防火墙工具。ufw 是对 iptables 的封装,iptables 的规则太过于复杂,不适合新手。这篇文章也是如何增强VPS安全性的扩展篇,在修改了SSH端口,登录用户之后,最好清楚自己开放了VPS的哪些端口访问,把他们用 ufw 管理起来,防止被滥用。 安装 Ubuntu 默认已经安装如果没有安装,使用一行命令即可: sudo apt update && sudo apt install ufw 配置及使用 默认情况下,ufw 的配置文 Read more ...

2018-04-16 linux , firewall , ufw , iptables , ports

最近文章

  • 入手 GL.iNet Comet Pro(RM10):支持 Wi-Fi 6 的远程 IP KVM 家里的 [[Homelab]] 一直是一台 4 盘位的小主机跑 [[Proxmox VE]],上面跑着 Ubuntu 虚拟机、一堆 Docker 服务和下载机。平时远程管理全靠 SSH 加 [[Tailscale]],只要系统还活着基本没什么问题。真正让我不放心的是系统起不来的时候:升级内核后卡在启动界面、改网卡配置时手滑导致网络没起来、BIOS 被重置后不再从正确的硬盘启动,这时候 SSH 连不上,Tailscale 也不会在线,人不在家就只能干等。最近正好赶上一波促销,我入手了 [[GL.iNet]] 的 Comet Pro(型号 GL-RM10)远程 [[IP KVM]],叠加各种限时优惠之后实际支付 590.76 元,算是把 Homelab 远程管理的最后一块短板补上了。
  • 呆呆面板 MCP 配置教程:让 Claude、Cursor 用自然语言管理定时任务 前两天写了一篇 呆呆面板 daidai-panel:轻量级青龙面板替代品介绍与 Docker 部署教程,在那篇文章里我提到呆呆面板和 [[qinglong 青龙面板]] 最明显的代差是内置了 [[MCP]] 服务,但只是简单带过。面板搭起来、脚本陆续迁移进来之后,我每天早上要做的第一件事就变成了打开面板,挨个看昨晚哪些任务失败了、报的什么错、是 Cookie 过期还是网站改版。这种重复又琐碎的巡检,恰好是 AI 最擅长替人做的事情。所以这一篇就专门聊聊呆呆面板的 MCP 怎么配置、怎么接入不同的客户端,以及在权限上应该怎么取舍。
  • 呆呆面板 daidai-panel:轻量级青龙面板替代品介绍与 Docker 部署教程 Homelab 里跑久了,总会攒下一堆零散的小脚本:每天早上抓一次汇率发到 Telegram,定时检查几个网站的证书有没有快过期,隔一段时间把某个 API 的数据拉下来存一份,再加上各种网站的自动签到。最开始我都是直接写进服务器的 crontab,时间一长就发现问题很多,脚本散落在不同的机器上,日志不知道去哪看,失败了也没人通知,Python 依赖装在系统里还经常和别的东西打架。几年前我为此折腾过 [[qinglong 青龙面板]],最近在 GitHub 上又看到一个定位几乎一样、但更轻量的新项目,叫呆呆面板([[daidai-panel]])。
  • RAGFlow:以深度文档理解为核心的开源 RAG 引擎介绍与部署使用教程 这两年我陆陆续续接触过一些 RAG 小工具,从最早自己用 [[LangChain]] 拼一个 demo,到后来用 [[AnythingLLM]]、[[Dify]] 的知识库功能,有一个体验几乎每次都会重演:拿几篇 Markdown 测试的时候效果惊艳,一旦换成真实的业务材料,比如一份带合并单元格的财报 PDF、一份双栏排版的论文、几页扫描的合同,回答马上就开始胡说八道。追查下去会发现问题根本不在大模型,而在最前面的解析和切块环节,表格被拍平成一串没有表头的数字,左右两栏的文字被交错拼接在一起,模型拿到的上下文本身就是错的。也正是因为这个痛点,我在调查 ESP32 小智 AI 后端的时候发现了 [[RAGFlow]],一个可以「深度文档理解」的开源 RAG 引擎。
  • Git 本地忽略文件:.git/info/exclude 的作用与使用技巧 由于本地 IDE、插件、Agent 的差异,所以经常打开项目之后会出现一些只属于我自己的文件,AI Agent 和一些 MCP,Skill 也喜欢在项目根目录里面添加文件。每次 git status 都能看到这一串红色的 untracked 文件,看着很烦,又不太好意思为了自己的习惯去改项目的 .gitignore。这时候我想起了 .git 目录里一个存在感极低的文件 info/exclude,它刚好就是为这种场景设计的。