feat: 美化文章界面 #3

Merged
jackfiled merged 8 commits from feat-markdown into master 2024-07-29 22:32:27 +08:00
32 changed files with 45 additions and 186 deletions
Showing only changes of commit 56a0cc2e9b - Show all commits

View File

@ -1,6 +1,7 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Diagnostics; using System.Diagnostics;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using Markdig; using Markdig;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using YaeBlog.Core.Abstractions; using YaeBlog.Core.Abstractions;
@ -11,7 +12,7 @@ using YamlDotNet.Serialization;
namespace YaeBlog.Core.Services; namespace YaeBlog.Core.Services;
public class RendererService(ILogger<RendererService> logger, public partial class RendererService(ILogger<RendererService> logger,
EssayScanService essayScanService, EssayScanService essayScanService,
MarkdownPipeline markdownPipeline, MarkdownPipeline markdownPipeline,
IDeserializer yamlDeserializer, IDeserializer yamlDeserializer,
@ -172,30 +173,34 @@ public class RendererService(ILogger<RendererService> logger,
} }
} }
[GeneratedRegex(@"(?<!\\)[^\#\*_\-\+\`{}\[\]!~]+")]
private static partial Regex DescriptionPattern();
private string GetDescription(BlogContent content) private string GetDescription(BlogContent content)
{ {
const string delimiter = "<!--more-->"; const string delimiter = "<!--more-->";
int pos = content.FileContent.IndexOf(delimiter, StringComparison.Ordinal); int pos = content.FileContent.IndexOf(delimiter, StringComparison.Ordinal);
StringBuilder builder = new(); bool breakSentence = false;
if (pos == -1) if (pos == -1)
{ {
// 自动截取前50个字符 // 自动截取前50个字符
pos = content.FileContent.Length < 50 ? content.FileContent.Length : 50; pos = content.FileContent.Length < 50 ? content.FileContent.Length : 50;
breakSentence = true;
} }
for (int i = 0; i < pos; i++) string rawContent = content.FileContent[..pos];
MatchCollection matches = DescriptionPattern().Matches(rawContent);
StringBuilder builder = new();
foreach (Match match in matches)
{ {
char c = content.FileContent[i]; builder.Append(match.Value);
}
if (char.IsControl(c) || char.IsSymbol(c) || if (breakSentence)
char.IsSeparator(c) || char.IsPunctuation(c) || {
char.IsAsciiLetter(c)) builder.Append("……");
{
continue;
}
builder.Append(c);
} }
string description = builder.ToString(); string description = builder.ToString();

View File

@ -41,20 +41,17 @@
</div> </div>
</div> </div>
<div class="row px-1 py-2"> <div class="row justify-content-start fs-5" style="padding-top: 2em">
<div class="row justify-content-start fs-5"> <div class="col-auto">
<div class="col-auto"> 广而告之
广而告之
</div>
</div> </div>
</div>
<div class="row py-2"> <div class="row">
<div class="col-auto"> <div class="col">
<p style="text-indent: 2em"> <p style="text-indent: 2em">
@(Options.Announcement) @(Options.Announcement)
</p> </p>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -5,8 +5,6 @@ tags:
- 随笔 - 随笔
--- ---
# 2021年终总结
2021年已经过去2022年已经来临。每每一年开始的时候我都会展开一张纸或者新建一个文档思量着又是一年时光也该同诸大杂志一般写几句意味深长的话语怀念过去的时光也祝福未来的自己。可往往脑海中已是三万字的长篇落在笔头却又是一个字都没有了。 2021年已经过去2022年已经来临。每每一年开始的时候我都会展开一张纸或者新建一个文档思量着又是一年时光也该同诸大杂志一般写几句意味深长的话语怀念过去的时光也祝福未来的自己。可往往脑海中已是三万字的长篇落在笔头却又是一个字都没有了。
如今跨年的时候已经过去朋友圈中已经不见文案的踪影我也该重新提笔细说自己2021年中做过的种种。 如今跨年的时候已经过去朋友圈中已经不见文案的踪影我也该重新提笔细说自己2021年中做过的种种。

View File

@ -6,8 +6,6 @@ date: 2022-12-30 14:58:12
--- ---
# 2022年终总结
2022是困难的一年。我们需要为2023年做好准备。 2022是困难的一年。我们需要为2023年做好准备。
<!--more--> <!--more-->

View File

@ -6,9 +6,6 @@ typora-root-url: 2022-summer-vacation
date: 2022-08-22 15:39:13 date: 2022-08-22 15:39:13
--- ---
# 2022年暑假总结
在8个月的漫长寒假的最后两个月~~也就是俗称的暑假中~~,我都干了些什么? 在8个月的漫长寒假的最后两个月~~也就是俗称的暑假中~~,我都干了些什么?
<!--more--> <!--more-->

View File

@ -7,8 +7,6 @@ typora-root-url: big-homework
date: 2022-07-27 11:34:49 date: 2022-07-27 11:34:49
--- ---
# 代码大作业初体验
在大学也呆了一年了,终于遇上了第一个需要多人合作的写代码项目。从四月底分组完成,任务部署下来到七月初接近尾声,在这两个多月的时间里,也算是经历了不少,学到了不少。 在大学也呆了一年了,终于遇上了第一个需要多人合作的写代码项目。从四月底分组完成,任务部署下来到七月初接近尾声,在这两个多月的时间里,也算是经历了不少,学到了不少。
<!--more--> <!--more-->

View File

@ -7,10 +7,6 @@ tags:
--- ---
# 建立博客过程的记录
## 博客之始
当我已经在Python的浩瀚大海遨zhengzha了半个暑假后我决定尝试一下传说中程序员专用的学(zhuang)习(bi)手(fangfa)段(fa)——建立自己的个人博客。作为一个半懂不懂的Python程序员心中冒出的第一个想法自然是采用Python的Django作为开发自己的个人博客的手段。然而在阅读了[用Django搭建个人博客](https://www.dusaiphoto.com/article/2/)等的其他人搭建这类动态博客的过程记录之后我便义无反顾的转向了采用javascript开发的博客框架[Hexo](https://hexo.io)<del>说好的Python信仰呢</del>。无他,唯简单尔。 当我已经在Python的浩瀚大海遨zhengzha了半个暑假后我决定尝试一下传说中程序员专用的学(zhuang)习(bi)手(fangfa)段(fa)——建立自己的个人博客。作为一个半懂不懂的Python程序员心中冒出的第一个想法自然是采用Python的Django作为开发自己的个人博客的手段。然而在阅读了[用Django搭建个人博客](https://www.dusaiphoto.com/article/2/)等的其他人搭建这类动态博客的过程记录之后我便义无反顾的转向了采用javascript开发的博客框架[Hexo](https://hexo.io)<del>说好的Python信仰呢</del>。无他,唯简单尔。
<!--more--> <!--more-->

View File

@ -7,7 +7,6 @@ typora-root-url: c-include-problems
date: 2022-05-08 11:35:19 date: 2022-05-08 11:35:19
--- ---
最近在完成一门`C`语言课程的大作业,课设老师要求我们将程序分模块的开发。在编写项目头文件的时候,遇到了一些令本菜鸡大开眼界的问题。 最近在完成一门`C`语言课程的大作业,课设老师要求我们将程序分模块的开发。在编写项目头文件的时候,遇到了一些令本菜鸡大开眼界的问题。
<!--more--> <!--more-->

View File

@ -6,8 +6,7 @@ tags:
date: 2022-11-11 22:20:25 date: 2022-11-11 22:20:25
--- ---
# 编译MediaPipe框架 编译MediaPipe框架。
<!--more--> <!--more-->
最近开始研究自己的大创项目,一个关于动作捕捉的小玩意儿,第一步就是~~抄袭开源代码~~借鉴他人优秀成果。在众多的项目中我看上了这个Google开源的优秀框架先把这个项目在本地上跑起来再说。这篇文章就记录了我编译这个框架的过程。 最近开始研究自己的大创项目,一个关于动作捕捉的小玩意儿,第一步就是~~抄袭开源代码~~借鉴他人优秀成果。在众多的项目中我看上了这个Google开源的优秀框架先把这个项目在本地上跑起来再说。这篇文章就记录了我编译这个框架的过程。

View File

@ -7,9 +7,6 @@ date: 2023-01-15 22:23:08
typora-root-url: daily-linux-0 typora-root-url: daily-linux-0
--- ---
# 日用Linux挑战 第0篇
在将开发重心移到`WSL`上一年之后我最终还是决定完全抛弃Windows转向使用Linux作为我日常使用的主力系统。目前我已经使用Linux作为主力系统一个月了。 在将开发重心移到`WSL`上一年之后我最终还是决定完全抛弃Windows转向使用Linux作为我日常使用的主力系统。目前我已经使用Linux作为主力系统一个月了。
<!--more--> <!--more-->

View File

@ -7,8 +7,6 @@ date: 2023-03-08 22:37:29
--- ---
# 日用Linux挑战第1篇
从去年12月底正式切换到`Linux`开始算起,我日常使用`Linux`已经过去了2个月的时间。在本系列的上一篇文章——[日用Linux挑战 第0篇 - Ricardo的博客](https://rrricardo.top/blog/2023/01/15/daily-linux-0/)中,我讲述了我配置自己的`Arch Linux`的过程,还小小的赞扬了一波`Linux`在近些年来取得的进展。但是在这篇文章中,我将重点指出日常使用过程中遇到的问题和困难。 从去年12月底正式切换到`Linux`开始算起,我日常使用`Linux`已经过去了2个月的时间。在本系列的上一篇文章——[日用Linux挑战 第0篇 - Ricardo的博客](https://rrricardo.top/blog/2023/01/15/daily-linux-0/)中,我讲述了我配置自己的`Arch Linux`的过程,还小小的赞扬了一波`Linux`在近些年来取得的进展。但是在这篇文章中,我将重点指出日常使用过程中遇到的问题和困难。
<!--more--> <!--more-->

View File

@ -8,8 +8,6 @@ typora-root-url: daily-linux-2
--- ---
# 日用Linux挑战 第2篇
使用`Linux`6个月我成功戒掉了原神。 使用`Linux`6个月我成功戒掉了原神。
<!--more--> <!--more-->

View File

@ -8,8 +8,6 @@ date: 2023-09-04 14:47:46
--- ---
# 日用Linux挑战 第三篇
成也开源,败也开源。 成也开源,败也开源。
<!--more--> <!--more-->

View File

@ -1,48 +0,0 @@
---
title: .net从入门到放弃再到入门
tags:
- 技术笔记
- dotnet
date: 2022-08-21 16:59:08
---
# .net从入门到放弃再到入门
我宣布下面的内容都是我在胡扯。在写了一学期的`Java`和`Springboot`之后,我的评价是`Java`是什么垃圾东西,`C#`才是永远的神!
~~这是一篇专业的.net劝退指南详细记述了我为啥选择了.net又为啥选择了放弃。~~
<!--more-->
### 开端——WPF桌面应用
~~在今年年初的时候,受到[通知大全](https://squidward.top/)启发我决定编写一款自己的DDL管理应用程序。在一开始我打算先在Windows平台上编写当时我了解到Windows上最正统的桌面应用程序开发方式就是采用微软自家的.net平台开发同时在[知乎](https://zhihu.com)上一群人在吹`C#`在设计上是如何如何的优于`JAVA`,当然在这里没有说他们的观点错误的意思,把我忽悠的一愣一愣的。.net在当时已经有了比较老旧的`WinForms`框架、比较流行的`WPF`框架和最新的`MAUI`框架。~~秉持着中国人中庸的思想潮流~~,我选择了`WPF`图形框架作为我当时开发的框架,从此入了.net平台的坑。~~
> 如今这个桌面端的项目已经基本烂尾,项目开源在[github](https://github.com/jackfiled/PostCalendarWindows),算是警醒后来的我在技术选型时应该更加的慎重
~~说实话,在开发的一开始,我就感觉力不从心。~~
~~第一官方文档好但不完全好。微软虽然提供了本地化过的文档但是有很大比例都是机翻的文档。我觉得吧放机翻的文档还不如直接放英文原文的文档。同时文档的大部分都是API列表一类的参考资料对于初学者来说比较重要的“实用教程”等等部分内容较少虽然文档全面而详细但对于初学者来说并没有很大的帮助。毕竟我们不知道在数以万计的API中哪个才能实现自己的需求。~~
~~第二,国内缺少.net相关的社区氛围。这点也是最为劝退的地方相比于`JAVA`在国内广泛的应用和丰富的社区内容,国内.net和`C#`相关的内容除了在`Unity`游戏开发中还算广泛,其他称得上是乏善可陈。~~
~~在一堆好几年前的博客和半懂不懂的英文文档中沉浮一个月之后,我总算是写出了一个可以运行的成品。随着新学期的到来,以学业繁忙为借口,我停止了这个应用的开发。~~
### 重启——服务器开发
~~在经历了桌面应用的失败之后,我转移了自己的开发重心,开始了移动应用的开发,这次我没有坚持被微软的`MAUI`那八字还没有一撇的技术忽悠进去,选择了`flutter`框架搞开发。有应用自然就得有提供数据的后端,在开发服务器时,我又被微软的`ASP.NET`给“忽悠”了进去。~~
~~平心而论,`ASP.NET`开发的过程比上文中的桌面应用程序的开发还是要顺利不少。毕竟现在采用`B/S`架构的服务更多,个人感觉国内应用这项技术的人也不少,相关的技术资料也就不少,我入门的过程也就流畅许多。~~
~~虽然但是,在开发的过程中劝退的地方也不少。第一是微软自己的版本更迭,尤其是在微软宣布`dotnet core`,将.net开源之后个人感觉国内的开发者似乎不是很感冒还是用着原来的老一套。第二是和现在的技术流行方向不同原本采用`JAVA`搞服务器的开发不太可能再更换语言,第二新入行的开发者也会选择当下流行的`GO`等语言,这就导致在开发中有一种单打独斗的感觉,很难找到人同你合作。~~
### 放弃
~~在坚持学习.net八个月之后我还是决定放弃转向学习`JAVA`。~~
- ~~没人用的技术的技术不要硬刚,即使是好技术也不要。没人用的技术就像一潭死水,只有流动起来,才能孕育生机和活力,否则只能在原地腐烂。~~
- ~~之于我而言,语言不仅仅是开发软件的工具,更是需要计算机相关知识的工具。转向`JAVA`的原因之一就是我目前学习的数据结合课——伯克利的`CS61b`就是采用`JAVA`作为编程语言的。~~
~~虽然我已经决定将我的主力语言转向`JAVA`~~但不得不承认`C#`在语言上的特性还是很不错的,以后我的重心不会放在`C#`上,但是他也不会从的技能树上消失。也许在若干年之后,我的主力语言又变回`C#`了(笑)。
> 全文的最后一句话可能是我现在唯一认同的了

View File

@ -6,8 +6,6 @@ tags:
typora-root-url: 环境配置 typora-root-url: 环境配置
--- ---
# 环境配置备忘录
电脑上的环境三天两头出问题,写下一个备忘录记录一下电脑上环境的配置过程。 电脑上的环境三天两头出问题,写下一个备忘录记录一下电脑上环境的配置过程。
<!--more--> <!--more-->

View File

@ -5,7 +5,7 @@ tags:
date: 2022-12-31 13:38:19 date: 2022-12-31 13:38:19
--- ---
# 原神抽卡研究一 实际上是“概率论和随机过程”课程的期末小论文。
<!--more--> <!--more-->

View File

@ -7,7 +7,7 @@ tags:
typora-root-url: 安装pytorch来有深度的学习 typora-root-url: 安装pytorch来有深度的学习
--- ---
# 深度学习预备篇——安装深度学习框架——pytorch 鄙人在下不才我精通深度学习框架的安装和卸载。
<!--more--> <!--more-->

View File

@ -7,8 +7,6 @@ date: 2022-06-13 16:17:27
--- ---
# 大学生用啥配置——计算机专业
> 本文是应B站UP主[远古时代装机猿](https://space.bilibili.com/35359510)发起的[大学生用啥配置](https://www.bilibili.com/video/BV1kZ4y1i7Le)公益活动而写 > 本文是应B站UP主[远古时代装机猿](https://space.bilibili.com/35359510)发起的[大学生用啥配置](https://www.bilibili.com/video/BV1kZ4y1i7Le)公益活动而写
> >
> 目前某不知名211大学计算机专业在读 > 目前某不知名211大学计算机专业在读

View File

@ -6,9 +6,6 @@ tags:
date: 2023-10-09 23:56:34 date: 2023-10-09 23:56:34
--- ---
# 解决云原神无法在Linux中浏览器下运行的问题
本文为转载`bilibili`用户[@SocialismTeen](https://space.bilibili.com/33027704)在他的[专栏](https://www.bilibili.com/read/cv26576757)中给出的解决办法。 本文为转载`bilibili`用户[@SocialismTeen](https://space.bilibili.com/33027704)在他的[专栏](https://www.bilibili.com/read/cv26576757)中给出的解决办法。
<!--more--> <!--more-->

View File

@ -6,10 +6,10 @@ tags:
date: 2024-1-12 20:10:06 date: 2024-1-12 20:10:06
--- ---
<!--more-->
让Minecraft游戏使用`Wayland`显示协议。 让Minecraft游戏使用`Wayland`显示协议。
<!--more-->
## Update At 2024-2-24 ## Update At 2024-2-24
在两天前2024年的2月22日`glfw`释出了一个新版本`3.4`。在新版本中,`glfw`大幅强化了对于`wayland`显示协议的支持,在默认情况下就会直接使用`wayland`显示协议。但是为了能够正常的运行`minecraft`,还需要对源代码进行修改: 在两天前2024年的2月22日`glfw`释出了一个新版本`3.4`。在新版本中,`glfw`大幅强化了对于`wayland`显示协议的支持,在默认情况下就会直接使用`wayland`显示协议。但是为了能够正常的运行`minecraft`,还需要对源代码进行修改:

View File

@ -1,54 +0,0 @@
---
title: PostCalendar介绍
typora-root-url: PostCalendar介绍
date: 2022-03-05 14:18:50
tags:
---
# PostCalendar介绍
> 本文是[PostCalendarWindows](https://https://github.com/jackfiled/PostCalendarWindows)README文件的国内镜像
一款集日程管理与DDL管理于一身的日历软件。
下载地址:[GithubRelease](https://github.com/jackfiled/PostCalendarWindows/releases)
# 开发未完成,仍在内测阶段
<!--more-->
## 支持的功能
### 日历部分
![日历部分截图](Calendar.png)
1. 支持日历事件的添加,删除,修改。
2. 支持读取教务处自动生成的excel课表文件。
> 这个功能需要电脑上安装excel应用程序.
>
> 目前这个功能仅作实验性的支持不保证excel读取的完全准确。
>
> > 使用帮助在教务处网站“学期理论课表”页面有打印按钮可以下载一个excel表格。
> >
> > 下载完成后在软件里点击“导入excel课表”按钮选择excel文件下载的位置即可自动导入。
### DDL部分
![DDL部分截图](DDL.png)
1. 支持DDL事件的添加修改完成删除。
2. 可以将活动界面中DDL类型的事件直接添加到个人DDL中。
### 活动部分
![活动部分截图](Activity.png)
**本部分未完成,设想中将与[DDL网站](http://squidward.top)的数据进行同步**
## 使用方法
软件依赖于.net6.0,请点击[链接](https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-desktop-6.0.2-windows-x64-installer)下载.net6.0运行时。
在安装完成或者确认电脑上已安装.net6.0运行时之后点击下载旁边的release包双击下载文件中的PostCalendarWindows.exe即可使用。

BIN
YaeBlog/source/post-calendar/Activity.png (Stored with Git LFS)

Binary file not shown.

BIN
YaeBlog/source/post-calendar/Calendar.png (Stored with Git LFS)

Binary file not shown.

BIN
YaeBlog/source/post-calendar/DDL.png (Stored with Git LFS)

Binary file not shown.

View File

@ -5,8 +5,6 @@ tags:
- 学习资料 - 学习资料
--- ---
# 程序设计与计算导论笔记
直接扒的老黄的PPT ,简直毫无参考价值。 直接扒的老黄的PPT ,简直毫无参考价值。
不保证笔记的绝对正确性。 不保证笔记的绝对正确性。
如果导致考试爆炸,不承担任何责任。 如果导致考试爆炸,不承担任何责任。

View File

@ -7,8 +7,6 @@ typora-root-url: qt-learning
date: 2022-07-01 14:32:39 date: 2022-07-01 14:32:39
--- ---
# 初学Qt的一点小笔记
最近的大作业需要用 `C/C++`的技术栈实现一个图形化界面,`Qt`作为C++图形化框架久负盛名,正好借着这个写大作业的机会学习一下这个应用广泛的框架。 最近的大作业需要用 `C/C++`的技术栈实现一个图形化界面,`Qt`作为C++图形化框架久负盛名,正好借着这个写大作业的机会学习一下这个应用广泛的框架。
<!--more--> <!--more-->

View File

@ -5,7 +5,6 @@ tags:
- 技术笔记 - 技术笔记
--- ---
# 安装Visual Studio 2019中遇到的坑
在某个月黑风高的夜晚我在折腾了很久的Python之后突然感觉自己应该去学学C和C++于是乎我便打算折腾一下在vscode上写C和C++。在网上一番搜寻之后,我发现了这篇[知乎文章](https://zhuanlan.zhihu.com/p/87864677)和这篇[知乎文章](https://zhuanlan.zhihu.com/p/147366852),然后我就被安装MinGW编译器和配置一大堆的json文件给干碎了。<br> 在某个月黑风高的夜晚我在折腾了很久的Python之后突然感觉自己应该去学学C和C++于是乎我便打算折腾一下在vscode上写C和C++。在网上一番搜寻之后,我发现了这篇[知乎文章](https://zhuanlan.zhihu.com/p/87864677)和这篇[知乎文章](https://zhuanlan.zhihu.com/p/147366852),然后我就被安装MinGW编译器和配置一大堆的json文件给干碎了。<br>
于是我决定转向传说中的宇宙第一IDE——Visual Studio。<br> 于是我决定转向传说中的宇宙第一IDE——Visual Studio。<br>
<!--more--> <!--more-->

View File

@ -6,8 +6,7 @@ tags:
date: 2023-07-29 15:20:02 date: 2023-07-29 15:20:02
--- ---
如题。
# SpringBoot自定义注解实现权限控制
<!--more--> <!--more-->

View File

@ -5,7 +5,7 @@ tags:
- 技术笔记 - 技术笔记
--- ---
# 优雅地使用学校VPN 睿智的Global Protect!
<!--more--> <!--more-->

View File

@ -5,7 +5,6 @@ tags:
- 技术笔记 - 技术笔记
--- ---
# 无论何处都可以使用自己定制的VSCode开发环境
众所周知VSCode作为大微软家开发的开源编辑器一经发布便受到了两广大程序员群体的欢迎。如果我们深入的了解一下VSCode就会知道VSCode是基于Electron框架构建的Web应用程序而Electron框架是基于Web技术来开发桌面应用程序即VSCode只要稍加改造就可以流畅的在浏览器中运行。那么我们如何才能在浏览器打开一个VSCode呢 众所周知VSCode作为大微软家开发的开源编辑器一经发布便受到了两广大程序员群体的欢迎。如果我们深入的了解一下VSCode就会知道VSCode是基于Electron框架构建的Web应用程序而Electron框架是基于Web技术来开发桌面应用程序即VSCode只要稍加改造就可以流畅的在浏览器中运行。那么我们如何才能在浏览器打开一个VSCode呢
最简单的方法是在浏览器中输入[这个网址](https://vscode.dev)就可以在浏览器中打开一个VSCode Online这个版本的VSCode可以支持打开本地的文件并且进行编辑。不过这个编辑器并不支持大部分的插件而且并不支持程序的编译与运行并不是一个可以开箱即用的编辑器。那么还有什么办法可以让我们拥有一个联网即可得的个人定制化开发环境呢 最简单的方法是在浏览器中输入[这个网址](https://vscode.dev)就可以在浏览器中打开一个VSCode Online这个版本的VSCode可以支持打开本地的文件并且进行编辑。不过这个编辑器并不支持大部分的插件而且并不支持程序的编译与运行并不是一个可以开箱即用的编辑器。那么还有什么办法可以让我们拥有一个联网即可得的个人定制化开发环境呢
<!--more--> <!--more-->

View File

@ -7,9 +7,6 @@ typora-root-url: wsl-setup-csapp
date: 2022-09-03 19:02:58 date: 2022-09-03 19:02:58
--- ---
# 利用WSL设置CSAPP实验环境
`CSAPP`这本书为自学的学生们提供了不少的`LAB`供大家在联系中提高,但是这些`LAB`的编写普遍需要一个`Linux`的实验环境,但是目前大多数人手中的环境都是`Windows`平台,没有办法原生的运行这些`LAB`。在以前的实践中,这个问题往往是通过安装虚拟机来解决的,但是现在我们有了更好的解决方案——`Windows Subsystem for Linux`,简称`WSL`。 `CSAPP`这本书为自学的学生们提供了不少的`LAB`供大家在联系中提高,但是这些`LAB`的编写普遍需要一个`Linux`的实验环境,但是目前大多数人手中的环境都是`Windows`平台,没有办法原生的运行这些`LAB`。在以前的实践中,这个问题往往是通过安装虚拟机来解决的,但是现在我们有了更好的解决方案——`Windows Subsystem for Linux`,简称`WSL`。
<!--more--> <!--more-->

View File

@ -79,3 +79,12 @@ table thead th {
table thead tr { table thead tr {
border: 1px var(--bs-border-color) solid; border: 1px var(--bs-border-color) solid;
} }
blockquote {
margin: 20px 0;
padding: 0 20px;
color: var(--bs-body-color);
background-color: var(--bs-primary-bg-subtle);
border-block-start: .1em solid var(--bs-primary-border-subtle);
border-block-end: .1em solid var(--bs-primary-border-subtle);
}