Python 并发编程之 gevent

gevent 中最主要的是 greenlet,greenlet 是 Python 的 C 扩展,用来实现协程。 协程 [[Coroutine]],就是可以暂时中断,之后再继续执行的程序 事实上 Python 就有最基础的 Coroutine,也就是生成器 generator 协程就是一种特殊的并发机制,其调度”就是指什么时候调用什么函数”完全由程序员指定 进程是一个操作系统级别的概念,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程)。 Read more ...

2018-08-22 python , greenlet , gevent , thread , process , yield

又一个网页文件管理:filebrowser

之前一直使用的是 h5ai,平时也够用,不过 h5ai 是不能上传文件编写文件的,这算是一个问题吧,今天正好看到了 filebrowser,以前叫做 file manager。 File Browser 是一个用 Go 和 Vue 编写的基于 Web 的文件管理器。 去官网看来一眼,发现支持 docker, 所以就比较方便了。 具体 docker compose 的文件见 这里 只要配置好,几乎就是一键安装了。以后转战 filebrowser 了。 默认的用户名和密码是 admin/admin,记得登录进去第一件事情就是修改密码。 Read more ...

2018-08-20 web , filemanager , h5ai , filebrowser

Linux 下非常好用的字典 GoldenDict

最近在使用 Linux 版有道的时候发现非常卡,影响正常使用,所以就发现了这个 GoldenDict。以前在 Win 下用过 lingoes 但是无奈只有 Win 版本。有的时候也真的挺有意思,闭源的软件用着不舒服,切换到开源软件之后就像打开了新天地,从搜狗切换到 Rime 也是,开源软件不仅在功能上优于这些闭源软件,自己稍微调整一下之后就会发现体验也远超有道,搜狗之类。 GoldenDict 是一个开源词典,用 QT 编写,使用 WebKit 作为渲染核心,它像 Eudict、Mdict、Lingoes 以及 BlueDict 等词典一样可以加载外挂 Read more ...


Linux 网络配置

昨天升级 Ubuntu ,不知为何将网卡配置覆盖了,导致一时间无法上网,然后看了一些网络配置的文章,感觉自己需要补习一下相关知识,所以有了这篇文章。 下面就按照命令分别展开吧 ifconfig 这个命令是查看本地网络端口最常见的命令了,略 设置网卡及 IP /etc/network/interfaces 文件中保存着本地网络网卡的相关配置 配置 DHCP 自动获取 IP auto eth0 iface eth0 inet dhcp 假如要配置静态 IP auto eth0 # 要设置的网卡 iface eth0 Read more ...

2018-08-18 linux , network , command , ifconfig

AES 加密算法

高级加密标准 (AES,Advanced Encryption Standard) 为最常见的对称加密算法。对称加密算法也就是加密和解密用相同的密钥。 将明文 P 使用加密密钥 K 加密成密文 C ,传输,然后在使用 AES 解密函数使用相同的密钥 K 解密,产生明文 P 设 AES 加密函数为 E,则 C = E(K, P), 其中 P 为明文,K 为密钥,C 为密文。也就是说,把明文 P 和密钥 K 作为加密函数的参数输入,则加密函数 E 会输出密文 C。 加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合 Read more ...

2018-08-15 aes , encryption , 对称加密

使用 alembic 迁移数据库结构

[[Alembic]] 是一个处理数据库更改的工具,它利用 SQLAlchemy 来实现形成迁移。因为 SQLAlchemy 只会在我们使用时根据 metadata create_all 方法来创建缺少的表 ,它不会根据我们对代码的修改而更新数据库表中的列。它也不会自动帮助我们删除表。 Alembic 提供了一种更新 / 删除表,更改列名和添加新约束的方法。因为 Alembic 使用 SQLAlchemy 执行迁移,它们可用于各种后端数据库。 安装 pip install alembic 使用 初始化,使用如下命令会创建环境到 migratio Read more ...

2018-08-13 python , mysql , sql , migration , db , database , alembic , flask , sqlalchemy

应用消息推送解决方案 MiPush

Android 中实现消息推送的主流方案有下面几种。 方案 原理 优点 缺点 Cloud to Device Messaging,云端推送,是 Android 系统级别的消息推送服务(Google 出品) Push 简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据 依赖于 Google 官方提供的 C2DM 服务器,需要用户手机安装 Googl Read more ...

2018-08-10 mipush , android , ios , push , notification

每天学习一个命令:iotop 查看 Linux 下每个进程 IO 占用

iotop 是一个用来监控磁盘 I/O 的类似 top 的工具,Linux 下 IO 统计工具,比如 iostat, nmon 等只能统计到每个设备的读写情况,如果想要知道哪一个进程占用比较高的 IO 就要使用 iotop。 iotop 使用 Python 语言编写,要求 Python >= 2.5,Linux Kernel >= 2.6.20. (使用 python -V 和 uname -r 来查看) 使用这个命令最主要的一个原因就是快速找到 IO 占用比较高的程序,以便进行排查。 安装 sudo apt install iotop Read more ...

2018-08-07 io , iotop , top , linux , htop

InfluxDB 使用

InfluxDB 数据库是用 Go 语言实现的一个开源分布式时序、事件和指标数据库。InfluxDB 提供类 SQL 语法。 需要注意的是 InfluxDB 单节点是免费的,但是集群版是要收费的。 安装 sudo apt install influxdb 数据库设计 正因为 InfluxDB 是一个时序数据库,在实际使用的时候有些概念需要提前知道。InfluxDB 数据库中的每一个数据都有一列 time 保存时间戳 (RFC3339 形式显示)。 time butterflies hone Read more ...


一周 CP 反编译记录

记录一下反编译一周 CP Android 3.26.0.451 版本,并拿到请求 sign 加密方法的过程。反编译的过程基本上可以划分为几个步骤 将 Android apk 文件反编译得到混淆的 java 代码 在混淆过的代码中找到发起请求的部分 找到请求发起 sign 加密部分加密方式 反编译 Android apk 关于第一步 Android 反编译的教程和工具 可以参考之前的文章。 查看混淆的代码 在反编译得到混淆过后的代码之后,这个时候不能盲目的去看,之前可以抓包看下应用内发出去的请求 path,找到关注的 path,比如在 Read more ...

2018-08-01 android , decompiler , crack , sign

最近文章

  • Claude Code 第三方 API 代理配置 Headroom 最近在给自己的 AI 编程工作流加入 [[Headroom]] 上下文压缩工具时,遇到了一个需要特别注意的配置问题。相信有不少人和我一样,为了降低成本或者改善访问体验,已经在 [[Claude Code]] 或 [[Codex]] 里配置了第三方 API 代理,比如一些第三方聚合平台或者自建的转发服务。这时候想再套上一层 Headroom 做 Token 压缩,就需要特别注意配置细节,不然两层代理会打架。
  • Headroom:让 AI Agent 少花冤枉钱的上下文压缩工具 最近一段时间我在深度使用 [[Claude Code]] 做开发工作,用得越多,账单就越触目惊心。一次稍微复杂一点的任务,比如让它读取几个文件、搜索一下代码、跑一下测试,轻轻松松就能烧掉超过 100K 的 Token。更让人无奈的是,这 100K 里面有相当大一部分是重复冗余的内容——工具调用的输出、日志、搜索结果,它们被原封不动地塞进上下文,再一次次地发给模型,而模型其实只需要其中很小一部分关键信息。
  • 用 Harbor 搭建私有 Docker Registry:从安装到日常使用的完整实践 我维护过几个跑在自己服务器上的小项目,构建出来的 [[Docker]] 镜像最早都是直接推到 [[Docker Hub]] 上的。用了一段时间之后开始觉得别扭:一些只在内网跑的服务镜像,没必要也不应该传到公开的仓库;Docker Hub 对匿名拉取做了限流之后,CI 流水线偶尔会因为触发了速率限制而失败;再加上想给不同的项目、不同的同事分配不同的访问权限时,公共仓库这套体系根本满足不了。折腾到后来我意识到,是时候在自己的机器上搭一个真正能用的私有镜像仓库了。
  • 用 New API 打造个人 AI 网关:统一管理所有大语言模型接口 这段时间我同时用着好几个大语言模型服务:日常写作和代码靠 [[Claude]],轻量任务交给 [[Codex]],搜索增强用 [[Antigravity]],还有几个本地跑着 [[Ollama]] 的小模型供离线场景使用。每个平台各自的 API Key 散落在项目环境变量里,月底要去好几个后台分别对账,想横向对比两个模型的输出还得打开不同的网页或客户端来回切换,很费事。
  • Surfingkeys:比 Vimium 更强大的浏览器键盘控制扩展 最早接触 [[Vimium]] 是在学习 Vim 编辑器之后,那种能用键盘完全控制浏览器的感觉确实让人着迷。不用频繁移手到鼠标,链接跳转、页面滚动、标签切换全用键盘搞定,效率提升的体验是实实在在的。用了几年 Vimium 之后,我开始接触到 [[Surfingkeys]],起初以为不过是另一个同类扩展,但深入用下来才发现这两者的差距远比我想象的大。