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