2023 总结
学习和工作
学校
随着疫情管控的全面放开,大一下我都在线下上课。学校离家很远所以住宿,认识了新的舍友。整天窝在寝室里睡觉刷手机玩电脑,经常翘课,根本认识不到几个同学,评优什么的跟自己毫无关系,从来不去图书馆,到了期末才开始翻书看课件运气好就少挂几门,几年里什么都没学到 。大一上线上教学的期末考试放在了大一下的期初线下考试,高数挂科了(重修费好贵,我上课又不听,能不能不付钱(x))我还是喜欢线上上课考试。感觉早八好困难,不知道我高中是怎么活过来的(x
让我看看大一学生都在学些啥?高等数学,线性代数,思政,近代史,金工,英语,体育,军事理论,军事技能,大学物理,机械制图,心理健康,生涯规划。还有我们亲爱的计算机相关课程:C 语言。 使用 VC6 的 C 语言,变量声明位置换一换就不工作了,我除了考试都自带笔记本用自己环境,没有 OJ,作业代码要打印在纸上,无语了。
金工实习还安排在周末(流汗黄豆)
体育课有校园跑要求,对高校体育 APP 抓包作弊把号玩没了()
学校宿舍晚上会熄灯,除了空调线路不断电,插座会断电,晚上会没电没网。我第一次尝试改接强电线路并成功了,宿管也没查出来。
我加入了学校的动漫社、网络安全社团、电子设计竞赛实验室、日语角,并尝试在学校组建 Linux 用户组。
和学校网络安全社团的同学组队参加了两次市级或赛区级 CTF 比赛,拿了两个二等奖。第一次拿奖金 & 第一次吃茶歇(x
在电子设计竞赛实验室的培训作业中略微学习了一些 STM32 的皮毛。我自学了 KiCAD,贡献了一些中文翻译。实验室主要使用嘉立创 EDA,我在 AUR 维护了一年有余,也很高兴能看到 @taotieren 在今年将其加入 archlinuxcn 软件源中。
在机械制图课程的启发下学了一些 FreeCAD。相较我以前用的 Fusion360 它免费开源更流畅,特色是通过限定条件来建模,工作流清晰,开源拖拉机,界面略丑,偶尔崩溃。需要在建模前有大致想法,如果对前几步的某个参数调整了有可能后续的步骤都需要重做。不支持两个及以上实体。
写了一些和学校有关的匿名开源脚本。学校的 Linux 用户组从泰晓拿到了 Milk-V Duo,第一次接触到了 RISC-V,不是很会玩,尝试 swap 个 archlinux 上去失败了,看到了 @Blockcity 的点灯 ,比我玩的成功。
大二换了校区和宿舍分配,由于离家较近我决定走读,还是家里舒服。
考试
在我的 2022 提到了我参加 CET 4 和 JLPT N2 的考试,在今年出了成绩。
CET 4:525/710(听力 200 + 阅读 176 + 写作和翻译 149)
JLPT N2:180/180 意料之外 ,早知道就直接考 N1 了(余额-550)
在 2023 年,我参加了 CET 6 和 JLPT N1 的考试。
CET 6:445/710(听力 146 + 阅读 174 + 写作和翻译 125) 好险,勉强合格,英语是废了
JLPT N1:127/180(语言知识 35 + 阅读 43 + 听力 49)(余额-550)
我觉得是偏低了(不过我也没学什么()),JLPT 没有考察到的写作和口语还是很菜。
我还参加了上海市高等学校信息技术水平考试(SCITE) ,我选择的科目是四级网络与信息安全,96/100,考了没什么用,机考,我把考试题偷出来并使用 Access PassView 解密了 (什么叫网络与信息安全啊) ,没有正确答案,有兴趣的话可以下载查看 (题目附件报毒,不过全是 asp php 之类的文件,没有可执行二进制文件,问题不大)。
我在暑假学习了小型汽车的驾驶,尽管驾校的教学质量并不好,我拿到了 C1 机动车驾驶证。虽然只是勉强会开()
线上
参加了 Hackergame 2023 ,总排名没有去年好,有点摆烂。
尝试了更换桌面操作系统为 NixOS,没有成功。我觉得它的理念是好的,但是文档(考虑到配置方法与大部分发行版不同)和大多数人在用的实验性功能(flake、home manager…)还需要再完善一段时间,也许我明年会再尝试一次?非官方文档里我觉得 ryan4yin 的教程 比较好用,官方文档我觉得太抽象了,不是像 Arch Wiki 那样的手把手教学。
为 NixOS/nixpkgs 添加了一些包,目标是完成 NixOS for Pentesting ,如果我再尝试 NixOS 的话会再看看有没有我能打的新包。
全年继续使用我最爱的 Linux 发行版 Arch Linux。我维护的 AUR 包数量从去年的 16 个增长到 41 个,其中 mastodon-twitter-sync 和 python-pem (相关 bug ) 被收录进了官方源。
创建了我自己的 Arch Linux 软件源 (谢谢 @Clansty )。
参与了 DIYgod/RSSHub RSS 路由的开发,谢谢 @TonyRL 每次 review 时的悉心指导。
第一次实现了 GitHub 每周全勤(虽然不知道在忙什么(x))
AOSCC
暑假的时候家人计划去旅游,日程与 AOSCC 2023 冲突,我选择了去参加 AOSCC,同时也拿到了旅游经费用来搭建我的 HomeLab 。
我与大学刚组建不久的 LUG 的同学一起参加了 AOSCC ,这是我第一次参加线下聚会。
meetup
谢谢 @Blockcity 的邀请,借 @Blockcity 同时 meetup 了 @Cronfox 和 @Horo。
还 meetup 了 @Camber、@Ciel、@Milkice、@MiaoTony,谢谢你们关注到我。
Key Signing Party
参加了 AOSCC 2023 Key Signing Party,谢谢以下 PGP 使用者为我签名。
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 $ gpg --fingerprint --with-subkey-fingerprint --list-signatures 293B93D8A471059F85D716A65BA92099D9BE2DAA | sed -e 's/@/ at /g' -e 's/\./ dot /g' pub ed25519 2023-01-01 [SC] [expires: 2030-01-01] 293B 93D8 A471 059F 85D7 16A6 5BA9 2099 D9BE 2DAA uid [ultimate] Misaka13514 <Misaka13514 at gmail dot com> sig 3 5BA92099D9BE2DAA 2023-01-01 [self-signature] sig 3 189BB387CF3AD95F 2023-01-01 欠陥電気RadioNoise (御坂13514号のECC鍵) <Misaka13514 at gmail dot com> sig 3A1F06DFCA34ECE5 2023-07-17 CharlieYu4994 <charlieyu4994 at lassi-cat dot cn> sig BF2CA8CDB1722943 2023-07-17 Canarypwn (Canarypwn) <canarypwn at aosc dot io> sig 1 6F4C5AF537D3C301 2023-07-17 Mike Yuan (YHNdnzj) <me at yhndnzj dot com> sig C111949073FC0F67 2023-07-17 Jiaxun Yang <jiaxun dot yang at flygoat dot com> sig 2 15F4180E73787863 2023-07-18 Coelacanthus <CoelacanthusHex at gmail dot com> sig 2 BFF89D4FFF7FAD1C 2023-07-20 Xinhui Yang <cyan at cyano dot uk> sig 2 020921FE312A15B1 2023-07-20 MiaoTony (MiaoTony's Outlook) <miaotony at outlook dot com> sig 3 12FC7165238A4CB1 2023-07-23 柏园猫猫 <i at nekomoe dot xyz> sig 1 530163CFEC309530 2023-07-23 liang yongxiang <tanekliang at gmail dot com> uid [ultimate] Misaka_0x34ca <admin at atri dot tk> sig 3 5BA92099D9BE2DAA 2023-01-01 [self-signature] sig 3 189BB387CF3AD95F 2023-01-01 欠陥電気RadioNoise (御坂13514号のECC鍵) <Misaka13514 at gmail dot com> sig 3A1F06DFCA34ECE5 2023-07-17 CharlieYu4994 <charlieyu4994 at lassi-cat dot cn> sig BF2CA8CDB1722943 2023-07-17 Canarypwn (Canarypwn) <canarypwn at aosc dot io> sig 1 6F4C5AF537D3C301 2023-07-17 Mike Yuan (YHNdnzj) <me at yhndnzj dot com> sig C111949073FC0F67 2023-07-17 Jiaxun Yang <jiaxun dot yang at flygoat dot com> sig 2 15F4180E73787863 2023-07-18 Coelacanthus <CoelacanthusHex at gmail dot com> sig 2 BFF89D4FFF7FAD1C 2023-07-20 Xinhui Yang <cyan at cyano dot uk> sig 2 020921FE312A15B1 2023-07-20 MiaoTony (MiaoTony's Outlook) <miaotony at outlook dot com> sig 3 12FC7165238A4CB1 2023-07-23 柏园猫猫 <i at nekomoe dot xyz> sig 1 530163CFEC309530 2023-07-23 liang yongxiang <tanekliang at gmail dot com> sub cv25519 2023-01-01 [E] [expires: 2030-01-01] 60B8 CFF2 C1E8 2F6B 2627 A1D7 6B71 F8EC 272C FDCF sig 5BA92099D9BE2DAA 2023-01-01 [self-signature] sub ed25519 2023-01-01 [A] [expires: 2030-01-01] 64EB C7BB 5FCB 344C 088D 8E11 FB30 5A67 8861 3226 sig 5BA92099D9BE2DAA 2023-01-01 [self-signature] sub ed25519 2023-01-01 [S] [expires: 2030-01-01] D633 F658 4ECB 7AD7 6216 6144 B4F6 D57F 0FC9 507E sig 5BA92099D9BE2DAA 2023-01-01 [self-signature]
我写了一个程序绘制有向图用来可视化这次 Signing Party 参与者的信任关系。在第一张图中 sig0 和 sig1 不显示。
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 138 139 import subprocessimport networkx as nximport matplotlib.pyplot as pltimport numpy as npfrom PIL import Imagedef run_gpg_command (args ): return subprocess.check_output(['gpg' ] + args, text=True ) gpg_output = run_gpg_command([ '--homedir' , '~/AOSCC-Sign/gpg/' , '--list-signatures' , '--with-colons' ]) gpg_data = gpg_output.strip().split('\n' ) graph = nx.MultiDiGraph() key_id = None for line in gpg_data: if "User ID not found" in line: continue parts = line.split(':' ) record_type = parts[0 ] if record_type == 'pub' : key_id = parts[4 ] graph.add_node(key_id) elif record_type == 'sig' : signer_key_id = parts[4 ] if signer_key_id != key_id: if not graph.has_edge(signer_key_id, key_id): trust_level = int (parts[10 ][1 ]) if trust_level < 2 : continue graph.add_edge(signer_key_id, key_id, trust_level=trust_level) print (f"{signer_key_id} -> {key_id} ({trust_level} )" ) graph.remove_nodes_from(list (nx.isolates(graph))) avatars_directory = "avatars/" for node_id in graph.nodes: avatar_path = avatars_directory + f"{node_id} .jpg" avatar_image = Image.open (avatar_path) graph.nodes[node_id]["image" ] = avatar_image graph.nodes[node_id]["label" ] = node_id pos = nx.kamada_kawai_layout(graph) def add_random_noise (pos, scale=0.01 ): noisy_pos = {} for node, (x, y) in pos.items(): noise_x = np.random.uniform(-scale, scale) noise_y = np.random.uniform(-scale, scale) noisy_pos[node] = (x + noise_x, y + noise_y) return noisy_pos def has_overlapping_labels (pos, labels, threshold=0.03 ): for u, p1 in pos.items(): for v, p2 in pos.items(): if u != v and np.linalg.norm(np.array(p1) - np.array(p2)) < threshold: if labels[u] != labels[v]: return True return False iteration = 0 while has_overlapping_labels(pos, graph.nodes()): pos = add_random_noise(pos, scale=0.02 ) iteration += 1 if iteration >= 100 : print ("无法消除图标重叠,退出迭代。" ) break plt.figure(figsize=(16 , 16 ), dpi=300 ) for node, (x, y) in pos.items(): image = graph.nodes[node]["image" ] delta = 0.05 plt.imshow(image, extent=[x - delta, x + delta, y - delta, y + delta]) node_labels = {node: node for node in graph.nodes} label_pos = {node: (x, y - 0.08 ) for node, (x, y) in pos.items()} edge_colors = dict (zip (list (range (4 )), ['lightgray' , 'gray' , 'darkgray' , 'black' ])) for u, v, data in graph.edges(data=True ): trust_level = data['trust_level' ] edge_color = edge_colors.get(trust_level, 'gray' ) connection_style = f"arc3,rad=0.2" nx.draw_networkx_edges(graph, pos, edgelist=[(u, v)], edge_color=edge_color, width=1 , alpha=0.7 , arrowsize=15 , connectionstyle=connection_style) for node, label in node_labels.items(): x, y = label_pos[node] plt.text(x, y, label, fontsize=10 , ha='center' , va='center' , zorder=10 ) plt.xlim(-1.1 , 1.1 ) plt.ylim(-1.1 , 1.1 ) plt.axis('off' ) plt.savefig('gpg-graph.png' , bbox_inches='tight' , pad_inches=0 , dpi=300 ) plt.show()
stickers
拿到了 AOSCC、JLU、SHLUG 发放的贴纸和买菜兜。
今年拿到的一些其它东西
YubiKey
收到了 Cloudflare Yubikey 打折活动 时与群友拼车购买的 YubiKey。谢谢 @Edison,帮助我从韩国低价转运 YubiKey,还送了小零食和明信片,爱了。
今年我更换了新的 PGP 密钥,并开始使用 YubiKey,在这一年里,我使用 YubiKey 创建了多达 578 个 PGP 签名。今年和 @baiyuanneko 互签了 sig3。
Hacktoberfest 2022
收到了 Hacktoberfest 2022 赠送的 T 恤和贴纸。虽然今年的活动不送实体奖品了,但我仍然参加了。
CMU 问卷
有一天邮箱里多了个 CMU 发的问卷,看着不像钓鱼就填了,然后 win 了 1 of 4 $100 Amazon gift cards,也许是全年唯一的 lucky moment?总之谢谢 CMU 了。我把它用在买 SAMSUNG 980 PRO 2TB 上了,这下笔记本的最后一片 也完整了,原来的旧硬盘给我的 HomeLab 用了。
@baiyuanneko 的礼物
是我平时不舍得买的一些二次元周边,但是收到会很开心,谢谢 @baiyuanneko。
@novule 的礼物
同笔记本型号 Linux 用户,帮忙买了个编程器提取了个 BIOS 救砖,收到了 ¥100 的京东卡,谢谢你在这个机器的使用(折腾)上带领着我。
ACGN
今年看了很多番,就不一一点评了,使用 aisuneko/AnimeTierList 生成了一张我的评分等级图,谢谢 @aisuneko。
今年开始尝试与香子兰群友使用 syncplay 同步看番,谢谢 @baiyuanneko 和 @scientificworld,很喜欢实时聊天。
对不起香子兰群友,我要退游了。感觉 Minecraft 越来越没意思,玩来玩去也就那么些玩法,对它的热情也慢慢消退了。最后再玩一天,今年就不玩了。
其它今年玩过的游戏有
ふゆから、くるる。 7/10
天使 ☆ 騒々 RE-BOOT! 8/10
Cyberpunk 2077 8/10
因为 Twitter 不给继续免费用 API,插画收藏受的影响比较大,没有做统计数据。
未来计划
想润日本,金币不多,专业课成绩不是很好,还没有决定继续 EE 还是转 CS,希望得到有经验的读者的指导。润其它地方也可以,就是没什么信心。
谢谢你读到这里,祝你新年快乐,明年见。