yan@bhyan

yan@bhyan

Website

Add Tags Page and Sidebar in Ghost Blog

前言(碎碎念) 我的前端知识储备依测度为0,印象中第一次(被迫)写前端是因为课程设计要写一个微信小程序,对着微信官方docs和网上的教程照猫画虎地写了个(完全没有后端的)小破程序。 本来想着这辈子再也不会和前端打交道,结果我的blog原生功能太少,需要添加新功能,至少得要有个tags page. 这下完犊子了,Ghost跟Wordpress比起来实在是太小众,相关教程少得可怜,也没有什么开箱即用的免费的theme. 如果不是因为Wordpress是PHP我是真的想换回去...抛开php是世界最好的语言不谈,我确实得硬着头皮想办法自己写(抄)一个tag pages了. 几个月前我鼓捣了大半天,在网上找了寥寥无几的几篇blog,结合Chatgpt和Copilot,集百家之长取了个交集,姑且实现了tags page和sidebar的功能。然后没过几天,一次ghost的更新把我改过的theme给吞了...那次更新把一个软链接给反转了,导致我的theme不可逆地消失了,气得我几个月没再打开过我的blog,也让我深刻意识到了即使是小版本更新也得做好备份——你永远也不知道开发者会加什么阴
6 min read
Linux

压缩WSL2的虚拟硬盘空间

自从微软加入了支持GPU的特性后,WSL2已经能满足我90%的写代码的需求。不需要繁琐的重启电脑+切换系统,也不会像VMWARE那样一打开就资源吃满(并且不支持GPU),配合上VSCode,可以说是生产力和舒适度拉满。 不过,WSL2使用的是动态虚拟硬盘,虚拟硬盘的占用空间会随实际使用量而增加(而不是一次性占完本地的几百G的空间)。但是,占用空间的增加是单调递增的,这意味着当你删除一些大文件,或者清理大量缓存后,系统并不会自动free掉对应的占用空间。 此外,哪怕WSL的实际使用量一直保持一个上确界,虚拟硬盘的占用空间似乎也会一直增加下去。在我跑完一个project并清理完缓存后,WSL的虚拟硬盘文件吃了我将近150G的空间,而其实际使用量只有不到40G. 这相当于在你的电脑里多装了一个原神 解决方法 注:以下方法均只能用于WSL2 Set Sparse (可能不管用) 在某次版本更新中,WSL2可以设置为sparse disk,可以自动释放unused space. 设置方法如下(在Windows的Powershell里输入) $ wsl --mana
2 min read
Math

数学系教材推荐和整理

引言 如果说生化环材是个天坑,里面埋葬着不少大学生,那么数学就是一个悬崖,一眼望去深不见底,只有几个神仙在天上飞。作为在悬崖底奋苦争扎的菜鸡,笔者根据自己上过的课程,整理了一些比较好的教材,希望能帮(quan)助(tui)到不撞南墙不回头的数学系萌新们。 数学分析 数学分析没啥特别推荐的教材,欧美的微积分教材过于简单,苏联的教材又过于粗暴。跟着教授用的教材走就行。以下推荐一些课外读物。 * PRINCIPLES OF MATHEMATICAL ANALYSIS —— Walter Rudin 又名Baby Rudin,虽然知乎上很多大佬推荐这本,但这本书极其不适合初学者入门。一个毫无基础的人如果第一次就能看懂这本书,那只能说是具有极高的天赋。正常情况下这本书是在学完大一的数学分析,有了一定的基础后,才适合阅读的。这本书抽象的数学语言可以为之后的泛函分析打下基础。 * 数学分析中的问题与反例 —— 汪林 绝世好书,反直觉的反例可以打破萌新的“常识”,有助于形成严谨的思维逻辑,认识到
7 min read
Others

吐槽一下哥大附近的小破公寓

前言 住了一年的小破公寓,总算租约到期,搬到了新的公寓。对于旧公寓,我只想说, 除非实在没别的地方住了, 不然 别住这破公寓 香甜的空气 在小破公寓,如果你的卧室窗户在公寓大门附近,那么每天晚上你都可以享受到美国最自由最香甜的空气——大麻。每到夜幕降临的时候,总会有几个好哥哥聚在公寓门口飞叶子. 浓重的大麻味会透过窗户, 充满整个房间. 即使是炎热的夏天, 亦或者是零下十几度的寒冬, 无论刮风下雨, 那几个好哥哥一定会风雨无阻地出现在公寓门口, 痛快地吸上几坤时的大麻. 这几个好哥哥甘愿牺牲自己的身体健康, 也要让我们尽早适应这香甜的空气, 他们真的, 我哭死. 与小强为伴 刚来美国, 很多同学人生地不熟, 不免会感到孤独寂寞. 小破公寓贴心地为初来乍到的留学生们提供了最忠实的朋友——蟑螂. 这些无私的小伙伴们, 总会偷偷藏在墙壁的缝隙中, 默默地陪伴着你. 偶尔突然出现在你的桌子上, 给你平淡的生活平添一份惊喜. 只有在夜深人静的时候, 他们才会成群结队地出来觅食. 无论生活多么艰苦, 他们也绝不会抛弃你, 始终围绕在你身边. 无论你卫生做
6 min read
Linux

Install VNC in Fedora with KDE Plasma

由于我桌面上已经摆满了Laptop、平板等东西,没空间放一个超大的机械键盘,并且只有一个鼠标,如果想在Laptop和台式机之间来回切换,那相当麻烦且不舒适。但台式机的配置完爆Laptop,当初组装它的目的就是为了当作工作站,拿来跑代码和渲染。为了能用Laptop甚至是平板直接操控台式机,以最大化生产力,就需要搭建VNC。 Environment Fedora 35 Kernel 5.16.10 TigerVNC-server 1.12.0 KDE Plasma 5.24.2 and Fuck you NVIDIA Install and configure TigerVNC TigerVNC是一个轻量、开源的VNC,而realvnc似乎并不是开源的——至少我在官网上没找到Open source以及相应的Doc,Fedora的源也不提供realvnc(archieve里有旧版本的realvnc的source code,不过那都是上古版本了)。考虑到开源洁癖,我们选择TigerVNC来搭建server。 以下内容参考自Fedora官方Doc以及StackO
3 min read
Others

华为Matepad 11测评

前言 以前买的Surface pro由于配置实在太低,带不动win10,记笔记时的卡顿日渐严重,正好最近安卓平板开始流行,我就考虑要不要换一个平板用来记笔记和日常办公娱乐。考虑到很多人买了平板后都会变成买前生产力买后爱奇艺,我对平板的选择还是比较慎重的。 在去了华为实体店亲自上手进行体验后,我最终还是选择了matepad 11作为我的(第一款)安卓平板。 Harmony OS 系统体验 首先是华为自己研发的Harmony OS,在拿到平板前,b站上就有了一堆harmony os的视频,其中大多都是多开数十个大型游戏依旧能正常运行,以此来说明harmony OS的优化相当优秀。就我个人的实际体验来说,在多开了十几个app后,系统就有了明显的卡顿,甚至会无反应一段时间。这可能是因为matepad 11本身的硬件配置就比较低,如果是高配置的pro的话,应该能有b站那些视频的效果。 不过其实系统层面的优化作用还是有限的,硬件配置低的话,再怎么优化也没法让一个cpu跑出两个cpu的效果,也没法把6G RAM塞满12G的内容,所以对于harmony OS的“相当优
10 min read
Linux

Fedora配置

前言 前阵子装了个双系统Fedora,开箱即用确实香,在此记录下配置Fedora的过程,指不定哪天就玩炸了得重装呢hhh 写文时Fedora已发布stable 34 version,主系统Windows 10 Pro,笔记本Asus Zenbook Duo. FUCK YOU NVIDIA Fedora对于N卡会默认安装开源的nouveau,然而nouveau的功能并不齐全,如果想用cuda的话还是得装闭源驱动,如果不是因为我这笔记本只有N卡,我肯定AMD YES. 但既然我们没得选,那只能在丢下一句“FUCK YOU NVIDIA”后老老实实折腾驱动。 首先我们要添加RPM Fusion仓库: $ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm $ sudo dnf install https:
5 min read
Math

Introduction to Hamilton-Jacobi-Bellman equations

Preface 这是一篇令人感到肝疼的文章,在ddl边缘疯狂徘徊的我通宵了两天肝出来的final project. 原paper是英文写的,简单翻译一下放到blog上,姑且算是最优控制论和HJB方程的入门. 感谢石老师提供的这个topic, 不然我当时就肝不完final project了. 然而我还是没学明白PDE,一学期下来就会个数值解hhh (丢人 Abstract 最优控制问题通常可以和非线性PDE——Hamilton-Jacobi-Bellman equations——联系起来. 在这种情况下我们可以关注HJB方程的解,这通常拥有很好的性质,而不是原来的问题. 在这片论文中,我们介绍了基本的最优控制论以及HJB方程的推导. 我们也证明了HJB方程的一些基本的性质. 一个高效的用于求解HJB方程的数值方法也在论文中被介绍. 最后,我们用HJB方程和其数值解解决了一个简单的现实中的最优控制问题. Introduction of optimal control 最优控制论是微分方程的一个延申. 它主要讨论解决动力系统的方法,通常具有如下形式: $$
12 min read
Programming

Https重定向至https

Ghost部署好后默认会申请一个域名的SSL协议以及将http重定向至https. 以我这个域名为例,在访问 http://msyanblog.com 时会自动跳转至 https://msyanblog.com . 然而加了www的域名却没法重定向至根域名,并且Ghost似乎没有给www域名注册SSL(存疑). 给域名申请SSL 由于我注册了另外一个域名 bhyan.com ,并且想把这个域名重定向至msyanblog, 所以先给它上一个SSL协议,不然http可以跳转但https无法跳转. 根据Let's encrypt官方建议,用certbot申请SSL并自动renew. 官方链接,系统:Debian 10. 1. 安装Certbot sudo apt install certbot python-certbot-nginx 2. 运行Certbot. certonly指仅获取证书, 不需要自动修改nginx配置文件. sudo certbot certonly --nginx 中途输入三个要注册的域名:www.msyanblog.com,
2 min read
Programming

Mac 平台搭建 OpenGL 环境

作者:Évariste Gao 本文是对这篇文章的补充,因为原文鲜有提及 Mac 平台上环境的搭建. 阅读本文前最好先阅读该篇文章作为对 OpenGL,GLFW,Glad 的了解. 环境: * Mac OSX Mojava 10.14 * Xcode 11 安装 glfw GLFW 是一个跨平台的 OpenGL 应用框架,它为我们实现了创建窗口、接受输入和事件等功能。mac 上安装的方法主要有两种。 使用 Homebrew 安装 (不推荐) brew install glfw 由于 Mac 系统更新比较激进,有可能升级之后 glfw 与其不兼容. 所以比较推荐通过源码来安装. 下载源码并使用 cmake 完成编译和安装 (我 clone 时的
3 min read
Programming

CentOS 上面部署 Firefox selenium

作者:Évariste Gao webdriver 安装 Nodejs sudo yum install nodejs 众所周知,yum 仓库中的软件版本都十分老,nodejs 也不例外,不过我们可以利用 n 这个 npm 包来进行 nodejs 的版本管理. n --latest # 列出可用的最新版本 n --stable # 列出可用的稳定版本 sudo n latest #安装最新版本 sudo n stable #安装稳定版本 平时可以利用 sudo n 来进行版本切换,十分方便. 安装 Xvfb Xvfb 可以让我们在无 GUI 的情况下虚拟一个图形环境(即没有任何显示,但是可以运行某些 GUI
1 min read
Programming

Linux 中的安全子模块 SELinux 与防火墙

作者:Évariste Gao 防火墙 Firewall-cmd CentOS7 以上的防火墙一般都是 firewall-cmd,systemctl 对应的服务名称为 firewalld 常见参数 参数 功能 示例 --state 查看 firewall-cmd 当前的状态 --add-port=xxx/yyy 打开 yyy 的 xxx 端口 , yyy 可选为 tpc/udp firewall-cmd --add-port=10000/tcp --add-port=xxx/yyy 打开 yyy 的 xxx 端口 firewall-cmd --add-port=10000/tcp --permanent 永久,否则
3 min read