Python 为什么需要 with 语法

Python 中的 with 语法经常被用来在管理资源的访问和清理中,常见的场景有文件的使用和关闭,锁的获取和释放等等。 with open("file.txt") as file: data = file.read() with 语法特别容易联想起 Java 中的 try-with-resources AutoCloseable,同样实现资源的自动释放。 基本格式 从基本使用开始了解 with,with 的结构如下: with context_expression [as target(s)]: content With 工作原 Read more ...

2019-08-11 python , java , programming

Substratum Android 上的主题引擎

Substratum 是一款 Android 上的主题工具,能够不用 root 来达到系统级主题修改。并且在该工具下有一群爱好者和社区开发了无数的美观且实用的主题。Substratum 开始于以前非常流行的 CyanogenMod, Cyanogen 内置了该主题引擎,并使得修改主题异常简单。但是不幸的是,Cyanogen 没有继续下去, 但是 Substratum 死灰复燃。最初的时候 Substratum 还需要 Root 来使用,但是 Android Oreo 之后就可以不依赖于 Root 了。 Installation 如果想要正式版从 Pla Read more ...


唯一 ID 生成方案

最近在整理以前的草稿箱,翻到了这篇建于 2019 年的关于“唯一 ID 生成器”的笔记。当时似乎正在为一个分布式系统设计主键生成策略。既然翻出来了,就趁着这个机会,结合这几年在分布式领域的经验,把这个话题完善一下。 在单体架构中,我们习惯使用数据库的自增 ID(Auto Increment)作为主键,简单且性能不错。但在分布式系统或微服务架构下,分库分表之后,自增 ID 就捉襟见肘了。我们需要一个能够在分布式环境下生成全局唯一、趋势有序、且高性能的 ID 生成方案。 常见方案对比 在确定最终方案之前,通常会考察以下几种常见的替代方案: 1. UU Read more ...


Flask Babel 使用

Flask babel 是 Flask 的语言扩展,允许非常简单的方式让 Flask 支持多语言。 Installation pip install flask-babel 安装时会安装依赖 Babel, Python 国际化 pytz 时区 speaklater 辅助工具集 Configuration 在 python 文件中要使用多语言的文字时引入 from flask_babel import gettext 比如 gettext('author') 在 html 模板文件中 <pre>{\% Read more ...


Android 内核中的 CPU 调频

CPU 调频模块主要分为三块: CPUFreq 核心模块,核心模块主要是公共的 API 和逻辑 CPUFreq 驱动,处理和平台相关的逻辑,设置 CPU 频率和电压 CPUFreq governor,频率控制器,CPU 调频的策略,CPU 在什么负载,什么场景下使用多少频率 最后第三部分 governor 也是本文重点。传统的 CPU governor 选择,以 Performance 和 Powersave 举例,就是一个让 CPU 跑在最高频率,一个让 CPU 跑在最低频率,所有动作都在初始化时设置。 调频器策略 OnDeman Read more ...

2019-08-02 android , kernel , cpu-governor

Vim 插件之注释

Vim 下的注释插件有很多个 tpope/vim-commentary scrooloose/nerdcommenter tomtom/tcomment_vim 这三个插件各有特色。 Read more ...

2019-07-30 vim-plugin , vim , vi , commentary

QQ 音乐 qmcflac 文件解密

首先说重点,代码来自: https://github.com/Presburger/qmc-decoder Build 按照项目主页的方式 Build,生成 decoder 二进制可执行文件即可。 这个二进制可以实现 qmc0、qmc3、qmcflac 格式转换,生成普通未加密的 mp3, 或者 flac 文件。 Result 运行 结果 外延 C++ 实现的另外一个版本 如果熟悉 Java 也可以参考这个项目 如果熟悉 C# 那么可以看看这个项目 Read more ...

2019-07-27 qq-music , flac , decoder

Linnx Mint 上使用触摸板手势

都知道 Mac 上的触摸板非常好用,简单的手势就能实现十几种操作,从单指,双指,三指,到四指,甚至五指,从轻点,按压,到滑动,到捏合,组合起来能实现非常多的操作。 Mac 下手势 通过不同的组合可以得到非常多的功能。一些比较重要的操作列在了下面。 单指 一个手指轻轻点击,可以选中目标; 双指 两个手指同时点击,鼠标右键功能; 两个手指轻点,Smart zoom,可以快速缩放; 两个手指分开或捏合,可以放大缩小图片、网页等内容; 两个手指上下拖移滑动,即可实现翻页; 两个手指旋转,可以旋转图片等对象; 两个手指从触控板右侧 Read more ...

2019-07-25 linux , mint , gesture , touchpal , trackpad

Vim 插件之全局搜索:ack.vim

这篇文章看开始陆陆续续记录一下用过的 Vim Plugin,虽然有些一直也在用但从没有好好整理过,正好这篇开一个计划吧。 Ack.vim 在 vim 中使用 ack 或者 ag 来搜索,通过 Quickfix 来提供所搜结果 首先放上链接 https://github.com/mileszs/ack.vim 我使用 Vundle 管理,安装更新就不展开,这里重点介绍一下该插件。这里需要注意 ack.vim 需要依赖 ack >= 2.0 及以上版本。 Installation brew install the_silver_se Read more ...

2019-07-21 vim , vim-plugin , ack , ack-grep , ag , search , grep

我可能要抛弃用了很多年的 Chrome 换用 Vivaldi

大概一两年前就听说了 Vivaldi 这样一款浏览器,它使用 Chromium 做内核,创始人是从 Opera 浏览器出来的,不满 Chrome 横扫浏览器市场,没有给 Opera 一点喘息的机会,很多 Opera 的特性在 Chrome 上都被摘掉了。所以他们就开始搞了这一个 Vivaldi 浏览器,我记得当时听到的第一个宣传语是,快。想来 Chrome 最初打开市场时的宣传语也是快,但是多少年过去了 Chrome 虽然自身保持非常干净,但是加上自定义的扩展,也变得越来越臃肿了,但倒是也在一个可以接受的范围内。两年前 Vivaldi 依靠这一条宣传没有 Read more ...


最近文章

  • 我 Vibe Coding 了一个日本看房神器:BukkenAI 最近在东京认真找房子,每次拿到一个物件地址,我都要重复做同样一套操作:打开 [[Google Maps]] 搜地址,确认大概位置;找最近的车站,看步行距离;切到 Yahoo 地图查灾害风险图;再搜一圈附近有没有超市、医院、药局。做完一遍下来,十几分钟就过去了,物件多的时候,这些重复的信息收集工作比看房本身还累。某天做完第 N 遍之后,我决定干脆自己做一个工具,输入地址,全部自动搞定。这就是 BukkenAI 的起点。
  • Entire:让 AI 编程会话成为 Git 历史的一部分
  • Atuin:用数据库替换 Shell 历史,跨设备同步不再是难题
  • Ghostty 终端配置技巧:从入门到舒适 从 Warp 切换到了 [[Ghostty]],理由非常简单,我使用 atuin 来同步 Shell 历史,但是 Warp 不支持,外加上 Ghostty 自带 Metal GPU 加速渲染、原生 macOS AppKit 构建、启动飞快,可以让 AI 以纯文本方式配置,就果断切换了。
  • GitNexus:把你的代码库变成 AI 能读懂的知识图谱 用 AI 写代码这件事,大家都已经习惯了。但一个尴尬的现实是:AI 在修改代码的时候,经常不知道自己改的那个函数被多少地方调用、改完之后会不会连锁反应把别的功能搞崩。这不是 AI 模型不够聪明,而是它看不到代码库的全貌——依赖关系、调用链路、执行流程,这些结构性的信息在普通的文件搜索里是丢失的。