Verne in GitHub

每天学习一个命令:zgrep 不解压过滤压缩包中文本

Linux 下按照正则过滤文本的命令 grep 非常强大,grep 能够把正则匹配的行打印出来。而 zgrep 则能够对压缩包内容进行正则匹配。zgrep 全称是 search compressed files for a regular expression grep 的命令格式是 grep [option] pattern files 他的工作方式是,在一个或者多个文件中根据正则搜索匹配内容,将搜索的结果输出到标准输出,不更改源文件内容。 grep 常用的一些选项 -i 忽略字符大小写区别 -v 显示不包含正则的所有行 关于更 Read more ...

2017-11-20 linux , grep , regex , gz

每天学习一个命令:jhead 操作照片 EXIF

jhead 是一个可以查看,修改照片 EXIF 信息的命令行工具,没有 GUI。 jhead 可以查看: Time and date picture was taken Camera make and model Integral low-res Exif thumbnail Shutter speed Camera F-stop number Flash used (yes/no) Distance camera was focused at Focal length and calculate 35 mm equ Read more ...

2017-11-20 linux , photo , exif , DSLR , camera

Vim 行选择复制和移动

在熟悉 Vim 基本的 yy (yank current line) 和 p (paste) 的操作前提下,如果现在 Vim 中批量的移动某一些行,或者批量的复制从第 50 行到100 行到第200行后面,以我们之前的知识,可以先跳转到第 50 行 (:50),然后进入 行选择模式 (V) ,往下选择 50 行 (50j),然后再对选中的 50 行进行复制操作 (y),然后再移动到 200 行 (:200) 粘贴 (p)。 计算一下,从选择到复制,上面的操作可以划分为 5 个步骤,需要敲击 :50V50jy:200p ,当然上面的例子只是一个极端的例子 Read more ...

2017-11-19 vim , linux , copy

精通正则表达式第三版读书笔记

这是 《精通正则表达式》第 3 版 的读书笔记。 技术图书的主要使命是传播专业知识,专业知识分为框架性知识和具体知识。框架性知识需要通过系统的阅读和学习掌握,而大量的具体知识,则主要通过日常生活的积累以及随用随查的学习来填充。 完整的正则表达式由两种字符构成,特殊字符,元字符,另外一种就是普通文本字符。 完整的正则表达式由小的构建模块单元 building block unit 构成,每个单元都很简单,不过他们能够以无穷多种方式组合,所以可以提供无限的可能。 字符组 匹配若干字符之一,使用中括号 [ea] 匹配 a 或者 e gr[ae]y Read more ...

2017-11-17 regex , java

每天学习一个命令: mtr 查看路由网络连通性

常用的 ping,tracert,nslookup 一般用来判断主机的网络连通性,其实 Linux 下有一个更好用的网络联通性判断工具,它可以结合 ping nslookup tracert 来判断网络的相关特性,这个命令就是 mtr。mtr 全称 my traceroute,是一个把 ping 和 traceroute 合并到一个程序的网络诊断工具。 traceroute 默认使用 UDP 数据包探测,而 mtr 默认使用 ICMP 报文探测,ICMP 在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况。 安装 Debia Read more ...

2017-11-14 linux , network , mtr , ping , tracert , command

Instagram 的两种ID

Instagram 的 ID 生成策略是经过精心设计过的。1 每一秒 Instagram 都会收到无数用户上传的照片,在内部使用 [[PostgreSQL]] 分片存储到不同的服务器上。 这就产生了一个问题,要设计一个唯一 ID 生成方法用来标记系统中发布的每一张图片。 系统唯一 ID 需要满足如下条件: ID 应该是时间有序的,一组照片 ID 列表不再需要外部信息就可以排序(UUID 就不合适,因为完全无序) ID 最好是 64bit ,可以节省存储空间,索引也可以更小,也方便存储到 Redis 这样的系统中 系统应该尽可能少引入外 Read more ...

2017-11-13 id , instagram , decode , reverse

每天学习一个命令:iperf 测量带宽

iperf 命令是一个网络性能测试工具。iperf 可以测试 TCP 和 UDP 带宽质量。iperf 可以测量最大 TCP 带宽,具有多种参数和 UDP 特性。iperf 可以报告带宽,延迟抖动和数据包丢失。利用 iperf 这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。 iperf 在内存中运行,不会涉及到文件系统。iperf 存在非常多的版本,Windows,Linux,Android,iOS 都有对应的版本。可以到官网下载 安装 Linux 下安装: sudo apt-get install iperf 其他系统到 Read more ...

2017-11-11 linux , iperf , network , bandwidth

md5 散列

MD5 全称为 Message-Digest Algorithm ,一般用来保证信息传输的完整一致,MD5 的结果是固定长度 128bit 。MD5 算法最开始是为密码学而设计,但是后来被发现有很大的缺陷,所以后来就用来校验文件的完整性(无意识而造成的不完整,比如下载)。MD5 在非密码学领域也有其他用途,比如在一个数据库中快速检查一个 key 是否存在。 密码学的 hash 方法一个最基本的要求是,计算机难以通过计算来找到两个不同的内容拥有同一个 hash 值,MD5 无法满足该基本条件。MD5 算法无法防止碰撞,无法用于安全性验证,对于安全性高的资 Read more ...

2017-11-10 md5 , linux , 密码,

LevelDB 使用

nodejs wrapper: https://github.com/Level/levelup 源码: https://github.com/google/leveldb LevelDB 的原理 介绍 还有 这篇 LevelDB 的 C++ 接口 使用 LevelDB 在 iOS 下的 使用 Read more ...

2017-11-08 database , keyvalue , redis , google

分布式系统中唯一 ID 的生成方法

在分布式系统存在多个 Shard 的场景中, 同时在各个 Shard 插入数据时, 怎么给这些数据生成全局的 unique ID? 在单机系统中 (例如一个 MySQL 实例), unique ID 的生成是非常简单的, 直接利用 MySQL 自带的自增 ID 功能就可以实现. 但在一个存在多个 Shards 的分布式系统 (例如多个 MySQL 实例组成一个集群, 在这个集群中插入数据), 这个问题会变得复杂, 所生成的全局的 unique ID 要满足以下需求: 唯一性,保证生成的 ID 全局唯一 今后数据在多个 Shards 之间迁移 Read more ...

2017-11-08 java , 发号器 , id , auto-increase , mysql

最近文章

  • 入手 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,它刚好就是为这种场景设计的。