My Notes

Notes for me, and for someone who found them.

1 引言

出于娱乐和工作的需要,添置了一台华硕的笔记本,用来装 Windows 和 Linux。Windows 主要用来打游戏,而 Linux 主要用来作跨平台编译。

一开始,我选择的 Linux 桌面系统是 Ubuntu 18.04,想着毕竟是个老牌系统,生态比较完善。但是用了一段时间,总遇到各种灵异的问题 —— 比如 Gnome 莫名奇怪崩溃,系统闲置但是 CPU 风扇狂转等等。

终于一气之下,改装了基于 ArchLinux 的 Manjaro

既然选择了 Linux 桌面系统,就是选择了一条摸着石头过河的不归路。文本记录了在我使用 Manjaro 的这一个月时间里,遇到的一些问题的和对应的解决方法。

Read more »

1 前言

古语有云:人生苦短,快用 Python。

众所周知,Python 是一门开发效率非常高的语言。当使用这个以开发效率著称的语言去封装 HTTP API 时,如果还是为每个 API 写一遍实现,就太不 Pythonic 了。

本文将介绍如何将 “声明即实现” 这个方案带入到 Python 中,主要用到的技术是装饰器(Decorator)和 inspect 模块。

Read more »

1 前言

在前文《声明即实现(一) - Java 反射与代理的应用》中,为了把重点放在介绍反射和代理,因此将场景设定得相对理想化,但实际情况往往要复杂许多。

这里可以随口列出几个方案 B 可能面临的问题:

  • 方案 A 已经在项目中使用了一段时间,切换到方案 B 时,希望能保持向下兼容 —— 即仍然沿用参数形式,而不是 POJO。
  • API 的函数名(Function Name)未使用驼峰式命名(CamelCase),甚至包含子路径。
  • API 的参数未使用驼峰式命名。

上述这些问题,都可以通过引入注解(Annotation)来解决。

Read more »

1 背景

不论是做客户端开发,还是服务端开发,都常常会遇到调用其他服务的情况。被调用的服务,很多会提供基于 HTTP 协议的 API 接口。除少数服务商会提供封装好的 SDK 外,大多数时候需要我们自己按照 API 文档去封装。

本文基于封装 HTTP API 这一常见需求,介绍一下 Java 中反射(Reflection)和代理(Proxy)的实际应用。

Read more »

1 背景

撰写本文的起因,源自一篇旧闻: https://www.solidot.org/story?sid=59369

这个新闻虽然说的是腾讯游戏,但是并不能保证其他的国产软件没有做同样的事情,包括但不限于 QQ,微信,钉钉,百度网盘客户端,各种国产浏览器等。

因此,看到这个新闻后,我第一时间对电脑上的 shadowsocks 配置文件进行了保护。

本文的目的,就是介绍并推广保护的方法,让这些狗日的公司不那么容易得逞。

而我拖了一年多才写出这篇文章来,是因为最近对这个方案有了一个改进,觉得总算可以凑出一篇文章的篇幅了。(其实是懒。)

差点忘记最重要的一点,本文仅针对 macOS,Linux 用户可以借鉴。但如果您是正版或盗版 Windows 的受害者,那么看到这里就可以关闭了。

Read more »

1 概要

本文主要介绍 WireGuard(以下简称 WG)的基本配置方法,并记录一下配置过程中踩到的坑和相应的解决办法。

2 环境

服务器是 Bandwagon 的 VPS 主机,安装的操作系统是 CentOS 7。

客户端操作系统是 macOS 和 Android,后面会尝试在 Linux/Windows 上折腾,但是理论上没太大区别。

Read more »

1 背景

为了响应国家的号召,媳妇的公司也让在家办公了,她们公司也提供了 VPN 方便访问公司内网。但是 VPN 用的是 PPTP 协议,由于安全原因,macOS 已不再支持此协议,甚至从 Catalina 开始,从内核移除了相关代码。

因为 VPN 是公司提供的,因此不考虑更换协议的可能性,摆在面前的选项就只有:

  • 使用 Windows 办公。
  • 使用第三方 macOS VPN 客户端(但都是收费的)。
  • 自己折腾。

想到家里还有个正在吃灰的树莓派,正好可以练练手,因此选择了自己折腾。

Read more »
0%