理解 bashrc profile 优先级及区别

在类 Unix 系统中,我们通常会配置 Shell 的 ~/.bashrc 或者 /etc/profile 来设置用户的工作环境。一般系统可能会有 /etc/profile /etc/bashrc /etc/bash.bashrc ~/.bashrc ~/.profile 在理解这些文件之前,需要了解 Shell 不同的登录方式,login 登录和 interactive 模式。 关于 Shell 的历史和分类可以参考之前的文章 shell 不同启动方式 login shell “login shell” 代表用户登入,比如使用 “su - Read more ...

2017-03-02 linux , shell , bash , bashrc

Shell/Bash script 学习笔记

上一篇写 Bash 的文章 ,只是介绍了 terminal 下面的一些快捷键,并没有对 Bash 和 Shell 本身展开多少的介绍,因此正好趁此机会。 sh(或者叫做 Shell Command Language), 是由 POSIX 标准 定义的一门语言。 它有很多实现(ksh88,dash…)等等, bash 同样可以认为是 sh 的一个实现。1 因为 sh 是一个规范,而不是实现,所以在大部分的 POSIX 系统上 /bin/sh 是一个 symlink。比如在 Debian/Ubtuntu 中, sh 便指向 dash. bash 在创造 Read more ...

2017-03-01 linux , shell , bash , sh , zsh

在 Ubuntu/Mint 下快速创建桌面快捷方式

Mint 下有些应用下载之后,解压就能使用,但是这样每次启动该应用时就需要到这个目录中来启动,没有可快捷方式可以直接在桌面上,或者启动器中快速启动。 Mint/Ubuntu 中,gnome 桌面的快捷方式都存在 ~/.local/share/applications 目录下。 系统中还有另外一个目录 /usr/share/applications 也会存放桌面快捷方式。 使用 gnome-desktop-item-edit ~/.local/share/applications --create-new 即可创建新的快捷方式。如果该命令不存在记得安装 Read more ...


Linux Mint 下使用 electron wechat

在 Ubuntu 下明明非常好用的 sudo snap install electronic-wechat 到了 Mint 下竟然就不管用了,出现了如下错误 cannot perform readlinkat() on the mount namespace file descriptor of the init process: Permission denied 无奈只能寻求另外的方法,手动编译安装果然可以。看 electronic-wechat 的 GitHub 代码知道该项目使用 electron。 安装 nodejs ,然后安装 gi Read more ...

2017-02-28 wechat , linux , mint , npm , nodejs , node

使用 mitmproxy 抓包

在之前的文章 Android 抓包 中介绍过 Mac 下 [[Charles]] 进行客户端的抓包,那篇文章中最后介绍其他工具的时候提到了 [[mitmproxy]] 这样一款命令行工具,最近使用来看,也是非常强大的工具。这里就简单记录一下。 mitmproxy 是用 Python 和 C 开发的一款支持 HTTP(S) 的中间人代理软件(man-in-the-middle proxy),不同于 Fiddler2,burpsuite 等类似功能工具,mitmproxy 可在终端下运行并且可以用来拦截、修改、重放和保存 HTTP/HTTPS 请求。mit Read more ...

2017-02-27 mitmproxy , android , proxy , linux , http , debug , reverse

我的一加 3 手机设置

最近屏幕摔碎了一次,维修过程中无奈抹掉了所有数据,于是只能从头开始开搞。这里只是简单的记录一下,以免哪一天又有同样的悲剧发生,当然不可能再有下次了。 刷回原厂设置 对于 Nexus 机型来说,Google 都提供了原厂镜像,一加同样也是,可以从官网下载 ,不过亲身经历一加官网的好多链接都挂掉了,直接从 xda 找反而要方便许多。官网的链接使用迅雷下载还遭遇了掉包,所以对于刷机包,一定要验证 md5,一定一定。 刷 Oxygen OS (氧 OS) , 有很多方法,如果使用的 stock recovery ,可以使用 adb sideload ful Read more ...

2017-02-26 oneplus , android , xposed , magisk , root

终端使用 sock5 代理

为了解决 Linux Mint/Ubuntu 下安装 Dropbox 的问题,而认识了 proxychains。proxychains 是 Linux 下的代理工具,他允许其他程序通过其代理上网,支持 HTTP, SOCKS4 和 SOCKS5 类型的代理服务器,并可配置多个代理方式。 一直使用的 Dropbox 因为其被屏蔽,所以安装及使用必须通过代理,而 Shadowsocks 作为天然的 socks5 代理成为了最佳选择,在安装 Dropbox(Linux) 之后,设置中可以设置 Socks5 代理。于是剩下的问题便是,如何安装 Dropbox Read more ...

2017-02-25 Socks5 , Linux , Proxy , Ternimal

fastboot and adb 工具

早之前曾经写过过一篇文章 总结 adb 的常用命令,这次刷机也复习了一些命令,这里再补充一下刷机中必不可少的 fastboot 命令。 就像之前 adb 中说过的那样, adb 用来向开机的 Android 设备发送指令,而 fastboot 则是向开机的 Android bootloader 来发送指令,因此在刷机过程中,如果手机重启进入 bootloader 基本之后使用的 命令都离不开 fastboot。比如在安装第三方 recovery 时,要用到 fastboot flash recovery recovery.img 这样的指令。虽然不能依 Read more ...

2017-02-25 Android , Fastboot , adb

Android 反编译

本文介绍 Android 反编译工具,只介绍工具名字及工具简单使用,详细开来再具体讲吧。本文主要包含工具的作用,工作的简单用法,以及反编译的基本步骤。 概述 反编译 Android APK 主要需要依靠如下几个工具: apktool:A tool for reverse engineering Android apk files 查看 APK 包中的 AndroidManifest.xml 等 XML 资源文件 apk 本质上是一种压缩包,可以通过解压的方式获得资源文件,但是如果直接解压 manifest 和 XML 都是 Read more ...

2017-02-22 Android , Java , Apktook , Google

HBase 如何设计 Table Schema

我们都知道 HBase 的基本结构由 rowkey,column, timestamp 组成。列存储数据不同于关系型数据库,MySQL 一旦建表,需要修改表结构时则需要执行对应的修改语句,而 HBase 在建完表之后,对于列的增加则不需要修改建表语句,但这并不意味着 HBase 的建表就可以随意建。 首先来看看 HBase 的结构 Table, 表,HBase 按照表来组织数据 Row, 行,Table 可以有多 Row,Table 按照 RowKey 进行索引 Column Family,列族,一行可以分为多个列族,列族需要在建表 S Read more ...


最近文章

  • 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]],起初以为不过是另一个同类扩展,但深入用下来才发现这两者的差距远比我想象的大。