<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh_CN">
  <title>OrbisLumenの部屋</title>
  <subtitle>An anime blog</subtitle>
  <link href="https://orbislumen.blog/" rel="alternate" type="text/html"/>
  <link href="https://orbislumen.blog/atom.xml" rel="self" type="application/atom+xml"/>
  <id>https://orbislumen.blog/</id>
  <updated>2026-06-28T00:00:00.000Z</updated>
  <entry>
    <title>Blog Log</title>
    <link href="https://orbislumen.blog/posts/blog-log/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/blog-log/</id>
    <published>2026-04-11T00:00:00.000Z</published>
    <updated>2026-04-11T00:00:00.000Z</updated>
    <summary>Here is the update log of this blog</summary>
    <content type="html"><![CDATA[<h2>Update log 5 (2026-09-24)</h2>
<p>Transfer the mizuki to the shirone repo, seperate the content to private repo.
Employ my blog using vercel, with a new domain name <code>orbislumen.blog</code>.
Add comment module twikoo with mongodb.</p>
<h2>Update log 4 (2026-04-12)</h2>
<p>Import music from Netease Music.</p>
<h2>Update log 3 (2026-04-12)</h2>
<p>Change the <code>diary</code> function's work style.</p>
<p><a href="https://github.com/OrbisLumen/my-blog/blob/master/update-log(personalized)/diary.md">Here is the detail update log</a></p>
<h2>Update log 2 (2026-04-12)</h2>
<p>Open the <code>comments</code> function.</p>
<h2>Update log 1 (2026-04-12)</h2>
<p>Open the <code>diary</code> function, and write an example for diary.</p>
<h2>Initial (2026-04-11)</h2>
<p>Finish the <code>post</code> and <code>animate</code> functions, change the whole blog's style for myself and close <code>diary</code>, <code>projects</code>, <code>skills</code>, <code>timeline</code>, <code>albums</code> and <code>devices</code> functions.</p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="Blog"/>
  </entry>
  <entry>
    <title>机器学习（暑假）</title>
    <link href="https://orbislumen.blog/posts/cs-6ml-summer/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/cs-6ml-summer/</id>
    <published>2026-06-28T00:00:00.000Z</published>
    <updated>2026-06-28T00:00:00.000Z</updated>
    <summary>Machine Learning</summary>
    <content type="html"><![CDATA[<h2>项目介绍</h2>
<p>::github{repo="OrbisLumen/ml-tenweeks"}</p>
<h2>学习日志</h2>
<h3>第一周</h3>
<p>看李宏毅教授视频公开课复习机器学习部分内容，包括 ChatGPT 原理剖析、机器学习模型的基本概念、了解生成式人工智能的基本工作方式。
复习git相关内容，整理部分git命令。</p>
<h3>第二周</h3>
<p>机器学习基本原理学习，生成式学习与工具型 AI，深度学习基础，梯度下降与优化，CNN 与图像分类。
Linux 基本命令学习。</p>
<h3>第三周</h3>
<p>学习大语言模型的 Finetuning 与 Prompting，了解 In-context Learning、Instruction-Tuning、Chain of Thought、Soft Prompt 等方法。
入门 PyTorch，梳理数据加载、模型训练、验证、测试与参数保存流程；阅读并修改 HW1—HW3，成功运行 HW1，HW2 与 HW3 因数据集链接失效未能完成训练。</p>
<h3>第四周</h3>
<p>学习大模型、大数据与能力涌现，理解模型规模、训练数据和算力分配对能力的影响。
了解 VAE、Flow-based Model、Diffusion Model、GAN 与 Stable Diffusion 等图像生成模型，并整理 Self-attention、Transformer 和生成模型相关课程作业材料。</p>
<h3>第五周</h3>
<p>学习 NLP 基础、词向量与 Word2vec，理解从 one-hot 表示到连续向量表示的变化，以及基于上下文共现学习词义的基本思想。
了解 Constituency Parsing 与 Dependency Parsing，并继续梳理语言模型、RNN、Transformer、预训练模型和多模态学习等方向。</p>
<h3>第六周</h3>
<p>学习翻译、问答、自然语言生成与共指消解任务，结合翻译场景理解 Seq2Seq 和 Attention 的作用。
围绕词嵌入、序列模型、情感分析、关系抽取与大模型应用规划 NLP 实战演练，后续仍需补充代码与实验记录。</p>
<h3>第七周</h3>
<p>学习 T5 与大语言模型，进一步理解预训练、指令微调和人类反馈对齐之间的关系。
了解 LangChain、RAG，以及全量微调、P-Tuning、Prompt Tuning、LoRA 等适配方法，并以 Hugging Face 文本分类和问答任务作为后续实践方向。</p>
<h3>第八周</h3>
<p>学习知识增强语言模型、模型分析与可解释性，以及 NLP 应用中的偏见、幻觉、隐私和安全问题。
了解语义检索、智能问答与情感分析系统，梳理外部知识接入、检索增强和 PaddleNLP 实践的基本流程。</p>
<h3>第九周</h3>
<p>学习模型压缩基础，了解参数量、计算量、存储开销和推理延迟之间的关系。
梳理知识蒸馏、结构化与非结构化剪枝、参数量化等方法，并阅读将模型压缩视为约束优化问题的相关综述论文。</p>
<h3>第十周</h3>
<p>学习模型压缩代码的整体实操流程，包括模型剪枝、知识蒸馏、低秩分解与参数量化。
重点梳理基线模型、评价指标、压缩方法和结果对比之间的关系，后续实验需记录压缩前后的精度、参数量、计算量与推理速度。</p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="CS"/>
  </entry>
  <entry>
    <title>动手学深度学习v2</title>
    <link href="https://orbislumen.blog/posts/cs-5ml-limu/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/cs-5ml-limu/</id>
    <published>2026-04-28T00:00:00.000Z</published>
    <updated>2026-04-28T00:00:00.000Z</updated>
    <summary>Machine Learning Course (李沐)</summary>
    <content type="html"><![CDATA[<h2>Notice</h2>
<p>::github{repo="OrbisLumen/ml-Li-Mu-"}</p>
<p>李沐 <a href="https://courses.d2l.ai/zh-v2/">动手学机器学习</a></p>
<h2>Learning Track</h2>
<h3>5.6</h3>
<p>学习了数据操作，数据预处理，对数据有了初步认识</p>
<h3>5.7</h3>
<p>复习了线性代数和微积分相关知识</p>
<h3>5.8</h3>
<p>学习了矩阵计算，这个分子布局和分母布局的不同有点搞心态哦</p>
<p>学习了自动求导相关知识，了解了计算图，和相关函数</p>
<h3>5.9</h3>
<p>学习了线性回归的数学问题</p>
<h3>5.10</h3>
<p>学习了线性回归的代码实现，还是比较困难的，借助LLM理解了代码</p>
<p>对与线性回归的最底层的数学原理暂时没有深入理解，但是至少知道了根据梯度更新参数的过程</p>
<p>(如果当前参数让损失变大，就往相反方向调整一点)</p>
<h3>5.17</h3>
<p>这周事情好多，我机器学习进度推进就放在了周末，结果昨天没commit，今天中午想着discard jupyter notebook的更改时手贱把所有更改搞没了，现在是十一点整，我有点绝望地看着电脑，然后重写笔记</p>
<p>下午把笔记补回来了，然后学习了多层感知机</p>
<h3>5.18</h3>
<p>学习了模型选择，欠拟合和过拟合</p>
<h3>5.19</h3>
<p>学习了权重衰退和丢弃法</p>
<h3>5.20</h3>
<p>学习了数值稳定性</p>
<h3>5.21</h3>
<p>完成了从全连接到卷积的学习，包括通道，填充，步长，池化层，LeNet</p>
<h3>5.22 - 5.24</h3>
<p>学习了现代卷积神经网络，包括AlexNet，VGG，NiN，GoogLeNet和ResNet
学习了批量归一化的知识，同时需指出残差思想的重要性，利于快速更新数据端参数</p>
<h3>5.25</h3>
<p>学习了硬件相关知识，知道了并行加速之类的问题</p>
<h3>5.26 - 5.29</h3>
<p>学习了计算机视觉的微调以及基于锚框的目标检测系列算法</p>
<h3>5.30 - 5.31</h3>
<p>学习了循环神经网络</p>
<h3>6.1 - 6.3</h3>
<p>学习了现代循环神经网络，包括 GRU LSTM DeepRNN BiRNN
学习了机器翻译的实现，使用seq2seq实现和编码器解码器架构</p>
<h3>6.4 - 6.5</h3>
<p>学习了注意力机制，Transformer
学习了 BERT 和 BERT fine-tune</p>
<h3>6.6</h3>
<p>学习回顾了优化算法，完结撒花 🎉🎉🎉</p>
<h2>Summary</h2>
<p>首先这边感谢我们学院的戴瑞婷导师给我推荐了机器学习的入门课，其次感谢李沐大神的录制，这个动手学机器学习的课程我总共耗时一个月多一点看完，期间手敲了大量的笔记，至于代码实现虽说是在md里敲的，但是也基本都过了一遍，但是有些过于难的还是放弃了。</p>
<p>总体来说，这个课程对于学习了线性代数，微积分和python基础（cs61a）的我来说确实有一点吃力，概率论没学很多问题都是请教llm老师，很多理论推导部分都是请llm帮我解释直观理解的，还有代码实现部分有很多包都没有学过怎么用，通过读文档不会什么找什么的方式坚持啃了下来，收获也算颇丰。</p>
<p>这个课程的学习让我了解了机器学习在干什么，解决什么问题，以及为什么机器学习处于时代风口上，让我初步认识了一些模型和理念，虽然李沐大神常说应用先于理论，很多东西都是实践探知出来的，但是我也清楚地认识到了理论基础的重要性。</p>
<p>后续我会继续在这方面跟着导师努力学习，说句实话，虽然有些地方暂时没有搞懂，但是我对这个研究领域还是颇有兴趣的。</p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="CS"/>
  </entry>
  <entry>
    <title>Building Blog</title>
    <link href="https://orbislumen.blog/posts/technology-1buildblog/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/technology-1buildblog/</id>
    <published>2026-04-11T00:00:00.000Z</published>
    <updated>2026-04-11T00:00:00.000Z</updated>
    <summary>Finally finishing building this blog for my self</summary>
    <content type="html"><![CDATA[<p>这是我的<code>第一个</code>个人博客，花了我一整天的时间...</p>
<h2>心路历程</h2>
<p>已经学了不少东西了，所以就想搞一个个人博客，之前碰过一点前端的东西，不过已经忘了差不多了，于是我就去b站上找了找，找到了这个伟大的开源项目，搞出来了属于我自己的个人博客，还是非常开心的</p>
<h2>具体实现</h2>
<h3>环境配置</h3>
<p>需要node.js，然后又跟着教程配了一堆我看不懂的框架什么的，终于可以在localhost实时观看页面修改（热修改）了</p>
<h3>页面修改</h3>
<p>跟着教程和文献看了一下这整个项目使用的框架规则，还是比较容易上手的，基本上会写md就行，其他格式遵照项目提供的规则即可生成一个基本还不错的个人博客</p>
<h3>公网部署</h3>
<p>Cloudflare牛逼！这边也是直接push到fork的github个人仓库，然后cloudflare连接，就可以部署公网，生成一个静态页面</p>
<h2>一些感想</h2>
<p>属于是听从学长的意见，一个学软工的，怎么能没有个人博客？</p>
<p>所以花了这么些个时间折腾出一个还算可以看的东西，后续其他功能我也没关，只不过404了，有时间以后就会实现，现在只实现了post功能</p>
<p>现在才发现，不能随波逐流啊，所谓“前端已死”，实则并非，你可以不学，但不能不会，全栈依然生命力旺盛，至少在我这个半入流的SE学生看来，只使用前端基础加vibecoding根本不可能写出如此优雅的网页</p>
<h2>最后的最后</h2>
<p>啊啊啊啊，期中，啊啊啊，绩点，啊啊，六级，啊，CS61B</p>
<p>好累，好累，好累...</p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="Technology"/>
  </entry>
  <entry>
    <title>CS61B</title>
    <link href="https://orbislumen.blog/posts/cs-3cs61b/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/cs-3cs61b/</id>
    <published>2026-04-10T00:00:00.000Z</published>
    <updated>2026-04-10T00:00:00.000Z</updated>
    <summary>CS61B self-learning</summary>
    <content type="html"><![CDATA[<h2>Notice</h2>
<p>::github{repo="OrbisLumen/cs61b"}</p>
<p>CS61B 2024 Spring</p>
<h2>Learning Track</h2>
<h3>4.10</h3>
<p>Wasted my whole afternoon and evening setting up the IntelliJ environment...</p>
<p>Finally found that it was neither an IntelliJ version problem nor a JDK version problem...</p>
<p>I only needed to open one project at a time to build the correct debug environment.</p>
<p>-&gt;_&lt;-</p>
<h3>4.12</h3>
<p>The autograder was annoying and made me change my GitHub repository structure several times.</p>
<h3>4.13</h3>
<p>Finished Project 0.</p>
<p>Since it was a FA19 project, some libraries were deprecated, which made it annoying to deal with.</p>
<p>What a pity — I couldn't see the universe animation...</p>
<p>Er...</p>
<p>Finally decided to switch from the FA19 skeleton to the SP24 skeleton.</p>
<p>The reasons were mentioned above.</p>
<h3>4.15</h3>
<p>Lab 3 made me speechless...</p>
<p>Tell me how to rewrite a pile of shit?!</p>
<h3>4.19</h3>
<p>Finished Project 1A and got a glimpse of test-driven programming.</p>
<h3>4.20</h3>
<p>Finished Project 1B and built a deque with an array list.</p>
<p>I improved my ability to write tests and even found a bug that GPT didn't notice at first.</p>
<h3>4.21</h3>
<p>Finished Project 1C, extended the deque methods, and used deques in practice.</p>
<p>Started the data structures part of CS61B.</p>
<h3>4.24</h3>
<p>Finished learning the lectures on asymptotics, disjoint sets, BSTs, B-trees, and red-black trees.</p>
<p>Started the homework and labs to review these ADTs.</p>
<p>Skipped Lab 4, which was about GitHub.</p>
<h3>4.26</h3>
<p>Finished HW2, Percolation, and learned the application of Quick Union.</p>
<p>Finished Lab 5, Disjoint Sets, and implemented Weighted Quick Union with Path Compression.</p>
<h3>4.28</h3>
<p>Finished Lab 6, BSTMap, and completed the remove method with GPT's help.</p>
<h3>4.30</h3>
<p>Finished Lab 7, LLRB Trees. The base case was difficult to figure out, so I completed it with GPT's help.</p>
<h3>5.9</h3>
<p>Finished lec21, started the graph part.</p>
<h3>5.11</h3>
<p>Finished lec22, 23, 24, 25, learned the dijkstra's algorithm.</p>
<h3>5.15</h3>
<p>Finished lec26, 27, 28.</p>
<h3>5.16</h3>
<p>Started the last unit with sorting and algorithm.</p>
<h3>5.18</h3>
<p>Finished selection, heap, merge, insertion sort.</p>
<h3>5.19</h3>
<p>Learned quick sort and the theoretical bounds of compare sort.</p>
<h3>5.20</h3>
<p>Reminder: skip the software engineering III and IV, plz watch it after proj 2.</p>
<p>Reminder: skip the last three lec.</p>
<p>Reminder: proj 2, 3 remained uncompleted.</p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="CS"/>
  </entry>
  <entry>
    <title>acm journey</title>
    <link href="https://orbislumen.blog/posts/cs-4acm/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/cs-4acm/</id>
    <published>2026-04-04T00:00:00.000Z</published>
    <updated>2026-04-04T00:00:00.000Z</updated>
    <summary>short journey for acm</summary>
    <content type="html"><![CDATA[<h2>Overview</h2>
<p>::github{repo="OrbisLumen/acm-quick-exprience"}</p>
<p>This is a brief record of my first exposure to ACM and ICPC through the “easy course” <em>ACM-ICPC Algorithms and Programming</em>, which I took to earn two credits.</p>
<p>During the course, I learned a lot and met a master named <code>c1ampy</code>.</p>
<h2>Thoughts</h2>
<p>Through this experience, I learned what ACM is and got a glimpse of competitive programming.</p>
<p>I was initially ambitious about achieving something in this field. However, considering the time investment required and my own priorities, I decided to give it up.</p>
<p>This is my short journey with ACM.</p>
<h2>diary</h2>
<h3>3.2</h3>
<p>After talking with an upperclassman named <code>Izumi Sagiri</code>, I decided to take this course to earn the credits.</p>
<p>I learned that everyone must participate in the university contest, and if you qualify for the finals, you can get 20% of your course grade from it (which basically guarantees the credits). So I invited <code>c1ampy</code> to form a team. To my surprise, he agreed.</p>
<p>From then on, I started learning the basics of C++, getting a quick overview of STL, as well as topics like Data Structures, Graph Theory, Dynamic Programming, and some CS mathematics.</p>
<hr />
<h3>3.6</h3>
<p>Learned the basics of C++ (mainly STL).</p>
<hr />
<h3>3.10</h3>
<p><code>c1ampy</code> brought in another strong teammate, <code>fanjunwen</code>, and our team was officially formed.</p>
<hr />
<h3>3.13</h3>
<p><code>c1ampy</code> realized that as a beginner, I couldn’t quickly master full implementations. So instead, he focused on explaining common algorithms at a high level.</p>
<p>This way, I could still contribute ideas during the competition.</p>
<hr />
<h3>3.16</h3>
<p>We decided on our team name:<br />
<strong>「想不出队名还要去问 LLM 的屑队」</strong></p>
<hr />
<h3>3.27</h3>
<p>We participated in the warm-up contest.</p>
<p>Oops! <code>c1ampy</code> noticed there was an interactive problem and taught me how to approach that type of question.</p>
<hr />
<h3>3.28</h3>
<p>The <strong>preliminary contest</strong> began!</p>
<ul>
<li><strong>08:55</strong> — <code>c1ampy</code> asked me to start from the beginning of the problem set, while <code>fanjunwen</code> started from the end.</li>
<li><strong>09:00</strong> — I found Problem A too difficult, so I switched to B.</li>
<li><strong>09:20</strong> — I decided to solve B using recursion.</li>
<li><strong>09:31</strong> — Boom! Time Limit Exceeded. I changed my approach and used memoization (DFS + cache).</li>
<li><strong>10:08</strong> — Nice! Accepted. Then I moved on to the problem assigned by <code>c1ampy</code>.</li>
<li><strong>10:20</strong> — I realized I could use binary search for the case of 2n, but didn’t know how to handle 2n+1. I told <code>c1ampy</code>, and he solved it.</li>
</ul>
<p>After that, I didn’t contribute much. But <code>c1ampy</code> coded a lot and carried us into the finals.</p>
<p>Congratulations! Not only did I get 20% of the course grade, but I also got the chance to visit another UESTC campus and spend a whole day there — basically just having fun. Haha~</p>
<hr />
<h3>4.5 — The Final</h3>
<p>We made it to the finals.</p>
<p>It was, without exaggeration, one of the happiest days in this short ACM journey.</p>
<p>Before everything began, <code>c1ampy</code> told me that a formal ACM/ICPC-style contest usually runs from around 9:00 to 14:00. That means you get a few intense hours to think with a short window to eat.</p>
<p>So, in preparation for both the contest and the inevitable hunger, I bought some McDonald’s.  (And yes, I still firmly believe KFC should just hand over egg tarts to McDonald’s and retire from that competition.)</p>
<p>After picking up our contest T-shirts and checking in, we sat down.</p>
<p>The finals were about to begin.</p>
<hr />
<h3>Timeline</h3>
<ul>
<li>
<p><strong>11:30</strong> — <code>c1ampy</code> started setting up the coding environment, completely ignoring the rule:<br />
<em>“Do not touch the mouse or keyboard before 11:55.”</em><br />
Honestly, how is anyone supposed to get ready in just five minutes?</p>
</li>
<li>
<p><strong>12:00</strong> — We split our strategy.<br />
I started from the beginning of the problem set, while <code>fanjunwen</code> attacked from the end.</p>
</li>
<li>
<p><strong>12:30</strong> — I had an idea for Problem C.<br />
I shared it with them, and they asked me to double-check its correctness.</p>
</li>
<li>
<p><strong>12:40</strong> — I became reasonably confident in my approach.<br />
Not perfectly rigorous—but convincing enough.<br />
Then <code>fanjunwen</code> casually found an <strong>O(1)</strong> solution.</p>
</li>
<li>
<p><strong>12:50</strong> — Problem C: accepted.<br />
While reviewing submissions, I realized we had also solved Problem I.<br />
That gave me a burst of confidence, and I moved on.</p>
</li>
<li>
<p><strong>13:30</strong> — After hitting a wall on several problems, I finally gave in and took a break to eat.<br />
Survival first.</p>
</li>
<li>
<p><strong>14:00</strong> — Problem A looked approachable.<br />
I committed to it.<br />
One hour later, I gave up… (It was one of the hardest problems in the set.) &gt;_&lt;</p>
</li>
<li>
<p><strong>~15:00</strong> — Problem F <em>looked</em> easy.<br />
But we just couldn’t get it accepted.<br />
Something felt wrong.<br />
I went through <code>c1ampy</code>’s code line by line—<br />
<em>and it looked absolutely correct.</em></p>
</li>
<li>
<p><strong>16:00</strong> — The scoreboard froze.<br />
And we still hadn’t solved F.<br />
At that point, I decided:<br />
if I couldn’t spot the bug directly, I would simulate inputs manually and compare outputs to hunt down the edge case.</p>
</li>
<li>
<p><strong>16:30</strong> — It worked.<br />
Pen-and-paper debugging saved us.<br />
We finally fixed the issue.</p>
</li>
<li>
<p><strong>16:55</strong> — I felt like I had done everything I could.<br />
Meanwhile, <code>c1ampy</code> kept pushing on Problem J…<br />
but in the end, we had to let it go.</p>
</li>
<li>
<p><strong>17:00</strong> — Contest over.</p>
</li>
<li>
<p><strong>17:10</strong> — Editorial session.<br />
And yes—Problem A was exceedingly brutal.</p>
</li>
<li>
<p><strong>17:30</strong> — Rank reveal and awards ceremony:</p>
<ul>
<li>1 problem → Third Prize</li>
<li>3 problems → Second Prize</li>
<li>5 problems → First Prize</li>
</ul>
</li>
</ul>
<hr />
<p><img src="./photo.png" alt="record" /></p>
<h2>Aftermath</h2>
<p>It was a final full of pressure, frustration, breakthroughs, and small moments of clarity.</p>
<p>Not perfect.<br />
Not easy.<br />
But deeply satisfying.</p>
<p>And to end the day, we treated ourselves to a bowl of Japanese noodles.</p>
<p>Absolutely worth it.</p>
<hr />
<p><img src="./award.webp" alt="award" /></p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="CS"/>
  </entry>
  <entry>
    <title>CS61A</title>
    <link href="https://orbislumen.blog/posts/cs-2cs61a/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/cs-2cs61a/</id>
    <published>2026-03-30T00:00:00.000Z</published>
    <updated>2026-03-30T00:00:00.000Z</updated>
    <summary>cs61a self-learning</summary>
    <content type="html"><![CDATA[<h2>Notes</h2>
<p>CS61A 2024 Fall</p>
<p>I have viewed all the lec. For some lec's practice, I have coded it.</p>
<p>I have finished all the project. But HW after 09 (included), LAB after 11 (included) and DISC after 11 (included) haven't been done yet. Since it is for SQL.</p>
<p>From 2026.1 to 2026.3</p>
<h2>Overview</h2>
<p>This repository is used for self-learning.</p>
<p>::github{repo="OrbisLumen/cs61a"}</p>
<p>This repository contains <strong>all homework (hw)</strong>, <strong>labs</strong>, and <strong>projects</strong> for the UC Berkeley CS61A course.</p>
<p>Forked from <a href="https://github.com/InsideEmpire/CS61A-Assignments"><strong>here</strong></a>. Thanks!</p>
<p>For reference and study, you can also access the <a href="https://insideempire.github.io/CS61A-Website-Archive/"><strong>CS61A website archive</strong></a> mirrored here.</p>
<h2>Features</h2>
<ul>
<li><strong>Homework (hw):</strong> Reinforce lecture topics with conceptual and coding exercises.</li>
<li><strong>Labs:</strong> Guided practice to understand core concepts.</li>
<li><strong>Projects:</strong> Comprehensive assignments to apply knowledge in larger-scale coding challenges.</li>
</ul>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="CS"/>
  </entry>
  <entry>
    <title>サクラノ詩－櫻の森の上を舞う－</title>
    <link href="https://orbislumen.blog/posts/acgn-gal%E6%A8%B1%E4%B9%8B%E8%AF%97/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/acgn-gal%E6%A8%B1%E4%B9%8B%E8%AF%97/</id>
    <published>2026-01-14T00:00:00.000Z</published>
    <updated>2026-01-14T00:00:00.000Z</updated>
    <summary>樱之诗观后感</summary>
    <content type="html"><![CDATA[<h2>序</h2>
<p>如是一切是我中的众生，故也是众生各自中的一切
——春与修罗·序</p>
<h2>随笔</h2>
<p>（剧透向）</p>
<h3>PicaPica</h3>
<p>——天才的背面，是用一生练习“普通”的演技</p>
<p>“草薙，你要记住。正因为言语有着期限才具有价值。无限期的言语毫无意义，就跟不存在一样。所以约定才有其价值啊。”鸟谷真琴是舞台上的天才演员，却也是生活里最疲惫的伪装者。她的“演技”并非为了扮演他人，而是为了扮演一个“普通”的自己，以此掩盖那份让她与世界产生距离的敏锐与孤独。她精准地模仿着“应有的反应”，却恐惧于流露真实的“自我”。</p>
<p>《樱之诗》中，她与直哉的关系，本质上是两个“天才的囚徒”在互相试探：她看穿了他用懒散掩盖的伤痕，他也触及了她完美笑容下的裂痕。在共通线中，她的直觉总是领先于任何人，她的艺术作品总能带给直哉惊喜。她的角色迫使我们去思考，当“成为自己”本身就需要耗尽毕生的演技时，那份被小心翼翼藏起来的、名为“真琴”的真实，究竟有多么珍贵，又有多么脆弱。</p>
<h3>Olympia</h3>
<p>——她的世界是一幅已完成的名画，而我愿意永远驻足凝视</p>
<p>“直哉给了我的这条命，要我轻易地就放弃它，想都不要想。”御樱禀的存在本身，就是一件完美的艺术品。她仿佛活在时间之外，心境澄澈如古池，她的世界自给自足，圆满无缺，如同画廊里一幅业已完成的传世名画。但是她不知道的是，名为Olympia的玩偶，名为梦的世界，是直哉，雫，父亲，甚至是她自己一手搭建的。</p>
<p>禀她生来就是天才，“正因为有才能，便能够轻易到达那个地方。正因为能够轻易做到，所以才轻易放弃。”也许她刚出生出生就能看透世界的本质，但在母亲离世的一刹，她选择用奇迹来覆盖奇迹，而奇迹的千年樱扭曲了一切，让禀永远活在了千年樱的幻梦中。她找到了记忆，找到了真相，找到了意志，在一个世界中，她用尽一生来感谢拯救她的直哉。</p>
<p>但是在另一个世界，她深知，为了直哉，为了夏目圭，她不能止步不前。但是，正如others最后自己所说的那样“不落地的翅膀，无论多么强壮多么高洁多么美丽，终究是虚幻之物。就算存在着神明，若是没有大地的话，也会失去翅膀吧。”“平凡地天才展示才能，真正的天才让人忘却才能。”她最终离开了直哉身边，走向了世界，承担起了作为天才的使命。</p>
<h3>ZYPRESSEN</h3>
<p>——以科学的轨迹计算未来，却将心动变成了最大的变量</p>
<p>“爱上一个人即意味着会伤害到一个人，因为爱就是这么一种庞大的感情。所以说，不能因为害怕会伤害到某人，就逃避自己的真实心情，必须要好好回应这份爱。”冰川里奈是理性的化身，她相信星空可测，万物有律，人生亦当如程序般按部就班地走向光明的未来。她是直哉与那个充满诗性与癫狂的艺术世界之间，最坚实的“地心引力”。</p>
<p>然而，科学无法计算的，是名为“心动”的变量。她对直哉的感情，如同一道无法纳入公式的奇异吸引子，打乱了她所有预设的人生轨迹。她的挣扎与可爱，正在于这种“失控”——用最严谨的态度，去分析最不严谨的情感。最终，她或许没能完全理解直哉艺术的深渊，但她用自己笨拙而真诚的方式，证明了爱本身就是一种最伟大的非理性科学，它的结果无法预测，却能真实地改变两个人（甚至三个人）的宇宙。</p>
<h3>Marchen</h3>
<p>——最轻盈的脚步，踏出了命运交响曲中最坚定的节拍</p>
<p>“挚爱之人死去的时候，我必须杀死自己。挚爱之人死去的时候，除此之外，别无他法。”川内野优美，这个总是带着童话般轻盈气息的女孩，却踏入了最沉重的命运乐章。“Marchen”即德语“童话”，而她本人也像一则闯入现实的美好故事。</p>
<p>“人是肮脏的生物，所以喜欢美丽的事物，讨厌丑陋的事物。”她以舞蹈般的姿态生活，用积极与善良感染着周围，仿佛命运的悲怆交响与她无关。但正是在这份轻盈之下，藏着惊人的坚定。她证明了，对抗命运的未必是怒吼，也可以是一首不曾停歇的、温柔而充满生命力的舞曲。千年樱闪烁的那一刻，或许是对直哉和冰川的伤害，但那让我们看到了她作为一匹被毒蘑菇诱惑的狼的全部野性，蕾丝边最终得到了最心爱女孩最诚挚的回应。</p>
<p>“那么诸位，乐而不淫哀而不伤，按照正确的拍子，握手吧。即是说，我等欠缺之物，正是忠厚正直与相互理解。嗨，那么诸位，嗨，请一起——按照正确的拍子，握手吧……”</p>
<h3>A Nice Derangement of Epitaphs</h3>
<p>——将全部温柔炼成钢铁，只为守护那个拒绝世界的背影</p>
<p>“如果什么都无法感觉，就会连是生是死都不知道了，正因为活着，所以才会痛苦，正因为身体想要活，所以才会痛苦。”这章讲述的是草薙一族，夏目一族守护雫的故事，直哉放弃9亿遗产，制造6幅赝作，作为老爹的墓志铭，亦作为保护身为伯奇的雫的最后一道盾牌。</p>
<p>看似雫只是个被保护的对象，看似与雫毫无关系，实则并非如此。夏目雫是将“温柔”这门艺术，淬炼到极致乃至变形的人。雫是冷却的钢，沉默地吸收所有高温，隔绝所有伤害。她的爱是绝对的、排他的、甚至带有一丝非理性的献身感。“A Nice Derangement of Epitaphs”（一句优美的墓志铭错乱）这个充满悖论的标题，同样也精准描述了她：她为自己书写的人生墓志铭，注定与“自我”无关，全部是关于她所守护的那个用尽一切守护她的人。她的故事令人心碎地询问：当温柔变得如钢铁般坚硬而偏执，它究竟是爱的极致，还是对自我的一种悲壮埋葬？</p>
<h3>What is mind? No matter. What is matter? Never mind.</h3>
<p>——我将终我一生爱着你</p>
<p>“虽然让你感到痛苦的，是你的心，但是让你感到幸福的，也是你的心。不能嫌弃心灵，要是做了这种事，心灵会消失不见的。也不要嫌弃自己的身体，做那种是只会使你自己感到痛苦。”</p>
<p>“心灵不是身体，身体也不是心灵，但是，心灵便是身体、身体便是心灵。虽然不同，但却相同。”奥林匹亚中妖艳的妓女，是对水菜身体与心灵的救赎。谜语般的标题，完美概括了草薙健一郎与夏目水彩之间那场焚烧灵魂的爱情。对他们而言，艺术的本质（mind）与现实的桎梏（matter）在绝对的激情面前，皆可抛却。 健一郎是掠夺美的“火焰”，而水菜是他唯一想用来盛放这火焰的“容器”。他们的爱建立在对“美”的极致共感与共同毁灭的倾向上，超越了世俗伦理、家庭责任甚至自我存续。水彩理解并接纳了健一郎艺术中那残酷的、吞噬一切的本质，并自愿成为他艺术的祭品与燃料。</p>
<p>他们的故事叩问：当爱情与艺术狂热交融至不分彼此时，它带来的究竟是创造还是毁灭？他们的答案是：创造即毁灭，毁灭即永恒。最终，水彩的逝去成为健一郎艺术中无法愈合的“绝对缺失”，而这缺失本身，构成了他作品中令人战栗的“绝对存在”。他们的爱情，是一场用生命实践的美学殉道。于是乎，《卧樱》问世……</p>
<p>“假象中铺满天空的春色，仅仅是无拘无束的因果交流电灯，在明亮的、明亮的、明亮的闪耀着。Watermelon的电气石，音与语言的交叉点，在这日益增色的世界中。七朵樱花于眼前飘过，追寻着我的目标，追着追着便消失不见。轻纱笼罩的世界在消失。轻松飘摇的樱之森中鸣奏着世界，是用美妙的音色所鸣奏着的世界。它若是虚无的话，虚无本身即是如此。”</p>
<h3>The Happy Prince and Other Tales.</h3>
<p>——小鸟不会飞向南方，它会死在王子身旁</p>
<p>“即便如此，我也会一直等下去。所以哪怕不是现在，也没有关系。我想和直哉一起画画，仅此而已。”圭之于直哉，正如那只放弃南飞、最终冻死在快乐王子脚下的燕子。圭拥有敏锐的感知与温柔的灵魂，他最早察觉直哉才华的重量与其下的伤痕，并试图用自己全部的陪伴去温暖那颗被天才与宿命冻结的心。</p>
<p>然而，直哉是那座不断剥落自己（承受父亲阴影、艺术使命、情感纠葛）去试图“照亮”或“救赎”他人的“王子”。圭的守护是静默而无力的，他无法真正将直哉从命运的旋涡中拖离，只能一次次目睹他走向更深的痛苦与更炽烈的燃烧。</p>
<p>这则童话的悲剧性在于：燕子（圭）的牺牲，并未改变王子（直哉）必然倾覆的命运，反而成为这命运中最令人心碎的一笔注脚。圭的“不会飞向南方”，意味着他放弃了属于自己的、可能更轻盈温暖的人生轨迹，选择留在直哉沉重而寒冷的命运现场。他的情谊，是一场明知徒劳却依然献上的、关于“理解”与“陪伴”的壮烈仪式，最终成为直哉心中另一道无法弥合的、温柔的伤口。</p>
<p>当那两朵娇艳的向日葵登上展台亮相的一刹，直哉发自内心地共鸣，“艺术真是残酷呢。梦会吃人，吃下的梦会结出名为艺术的果实。成熟的果实落在地上，给人们带来滋润。人们都不知道那是怎样的果实，却只称赞它的甘甜。”</p>
<h2>櫻の森の下を歩む</h2>
<p>——你的世界没有尽头，我的停留便是全部</p>
<p>“我认为，人与人的机缘交会，要比任何事情都重要，因为一个人能做到的事情是有限的。”</p>
<p>在真结局樱花覆盖的螺旋坡道上，夏目蓝与草薙直哉完成了这场长达十年的漫长共行。这不是传统意义上的爱情终点，而是两个被命运灼伤的灵魂，最终找到了彼此作为容器的形状。 蓝曾是最炽烈的火焰，以燃烧自身为代价向世界投掷艺术的匕首；直哉曾是最沉默的容器，承载着父辈的罪与美却不敢拥有自己的形状。而在这条坡道上，火焰学会了不熄灭地温暖，容器学会了不破碎地盛放。他们之间的陪伴，是对“天才必须孤独”这一诅咒的温柔反驳。</p>
<p>直哉没有成为第二个健一郎去“掠夺”蓝，而是成为了第一个草薙直哉——选择“守护”这份危险而璀璨的美，允许它存在，却不占有；注视它燃烧，却不逃离。</p>
<p>“浪漫是最难言的停留，陪伴是最长情的告白”——蓝最终停留在了这个世界，不再将死亡视为艺术的必然归宿；直哉停留在了她的身旁，不再将逃离视为自我救赎的唯一路径。他们的浪漫，在于接受了彼此生命中的残缺与疯狂，并将这种接受本身，变成了比任何艺术宣言都更坚实的日常。樱花年年飘落，而他们选择年复一年并肩走过，这便是对无常命运最平静、也最有力的胜利。 在樱之森下，所有激烈的情感和痛苦的过去，最终都沉淀为脚下沙沙的脚步声。没有拯救，只有共同承担；没有治愈，只有相互容纳。这或许就是《樱之诗》最终想诉说的——爱不是奇迹的解药，而是与伤痕共存的勇气。</p>
<p>“欢迎回来，蓝。”</p>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="ACGN"/>
  </entry>
  <entry>
    <title>pvz-for-learning</title>
    <link href="https://orbislumen.blog/posts/cs-1pvz/" rel="alternate" type="text/html"/>
    <id>https://orbislumen.blog/posts/cs-1pvz/</id>
    <published>2025-12-22T00:00:00.000Z</published>
    <updated>2025-12-22T00:00:00.000Z</updated>
    <summary>The start of my cs journey</summary>
    <content type="html"><![CDATA[<h2>Note</h2>
<p>This is a cpp program using visual studio</p>
<p>::github{repo="OrbisLumen/pvz-for-learning"}</p>
<h2>Introduction</h2>
<p>This is my very first cpp project.&lt;br&gt;</p>
<p>To say honestly, it's just a homework for my college course <code>Fundamentals of Programming and Algorithms Ⅰ</code> in the first year in UESTC.&lt;br&gt;</p>
<p>By the way, we are required to finish this hw in corporation. However, as a freshmen both in college and in the field of software engineering, I haven't learned that team collabration is very important.&lt;br&gt;</p>
<p>As a result, I finish this by myself while watching the <a href="https://www.bilibili.com/video/BV1vM4y1X7Kb/">videos</a> by <a href="https://space.bilibili.com/485705286">rock</a>.</p>
<h2>Self-thinking</h2>
<p>For first project, I think it is okay.&lt;br&gt;
It can be seen as <code>the start of my cs journey</code></p>
<h2>Content</h2>
<p>knowledge</p>
<ol>
<li>basic knowledge of cpp</li>
<li>process control</li>
<li>function calls</li>
</ol>
<h2>Update Log</h2>
<ol>
<li>
<p>change all the sunshine animation control from integer to float for smoother animation</p>
</li>
<li>
<p>change sunshine ball animation implementation model from offsite to bezier curve
abandon unnecessary sunshineball struct menbers (x,y,xoff,yoff,destY)</p>
</li>
<li>
<p>change sound playing method several times,finally use the method alias</p>
</li>
<li>
<p>fix there is a ghost image in last mouse clicking position when dragging plants from banner
(need to update msg.x and msg.y when left button down in the function "userClick()")</p>
</li>
<li>
<p>fix only one Peashooter shoot if increase createZombies frequency
(add shootTimer for every plants instead of using one "count" for all)</p>
</li>
<li>
<p>change when to minus sunshine</p>
</li>
<li>
<p>add most audio by PlaySoundAsync</p>
</li>
<li>
<p>add zombies eating sound by PlaySound,
also by adding soundFlag and soundCount to zombie struct to control</p>
</li>
<li>
<p>add eatingfre to zombie struct to slow zombies eating animation</p>
</li>
<li>
<p>fix when you win the game,but the zombies are still created
(this is actually a variable conflict,the global zmCount meet the static zmCount)
now change the global zmCount to zmCnt</p>
</li>
<li>
<p>adjust zombies create frequency
if (zmCnt &lt;= ZM_MAX * 0.15) {zmFre = 600;}
else if (zmCnt &lt;= ZM_MAX * 0.75) {zmFre = rand() % 200 + 100;}
else {zmFre = 10;}</p>
</li>
</ol>
]]></content>
    <author><name>OrbisLumen</name></author>
    <category term="CS"/>
  </entry>
</feed>
