常用昵称小傅Foxcoderfox

学生开发者 / ACGer / 新自由主义者 / 广义跨性别者 / Ingress Agent

支持网络自由 / 支持分级制度 / 支持法制建设 / 支持新型著作权保护 / 你国药丸

v2ex / GitHub / Twitter / 知乎 / Keybase

欢迎通过 aUB4Zm94Lm1l(email, base64) 联系我!

博客信息

主要是写技术内容和没事闲的写的随笔和社论。技术内容用英文写,别的用中文。

如无特殊说明,文章、图片和设计稿件遵循 CC BY-NC-SA 4.0 International,代码遵循 The MIT License。如果在中国大陆使用,适用 CC 协议的部分则应遵循对应的 3.0 CN 版本。

技术栈

熟悉

  • Node.js / TypeScript / Express / Koa2
  • C# / .Net Framework / CoreCLR
  • Docker / 运维
  • Lua 逆向工程
  • 常用算法与数据结构

了解/正在学习

  • Rust
  • Golang

项目经历

参与

贡献

GPG

You may find me at Keybase@coderfox.

My GPG public key fingerprint is c4c8df2b390e955abf886f1c6b410c7362aab93b.

My public key is:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
kH27tGJqyUFf/Y1WXZo+AcMhHRojTg==
=MhiE
-----END PGP PUBLIC KEY BLOCK-----

Updates:

  • On May 13, 2017, added subkey 0af3 ef05 93ca 0d24(ECDSA P-521) for signing, and `652c 46a4 9c22 1b91 for encrypting.
  • On Jul 20, 2017, added public key 47881526E6A5F291

My proof of ownership to current domain can be found here.