Posts
Docker+Nginx实现端口复用
前言 这个博客建立之初,为了图方便以及便宜买的是阿里云的服务器。但随着需求的增加才知道阿里云安全组这么个东西,就是说服务器默认只开放22(SSH), 3389(RDP), 80(HTTP)和443(HTTPS)这几个端口。如果想要在服务器上整点别的活,就需要设置安全组放行,或者使用将要提到的端口复用。 Docker+Nginx初步 Docker安装 我使用的是 $ cat /proc/version Linux version 5.15.0-86-generic (buildd@lcy02-amd64-086) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 具体操作参考runoob和aliyun,大致如下(分别为更新apt,下载依赖,设置仓库和安装docker) sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \ $(lsb_release -cs) \ stable" sudo apt-get install docker-ce docker-ce-cli containerd.io 之后pull下载Nginx以及其他服务的镜像。 docker-compose+Nginx配置 在进行反向代理之前,先尝试让Nginx正常工作。和直接使用Nginx相比,容器内部和服务器在网络和文件上都是隔离的,因此需要...
About / 关于
如果您遇到任何问题,比如有写的不对或者逻辑上不清楚的地方(或者单纯只是想给我一份工作),可以通过以下邮箱联系我。 Mail to / 联系我 : Omnibbfb@163.com 暂时还没有想好怎么介绍自己。(各种意义上) $\ddot{\smile}$
LaTeX Fonts and More
本意是想让博客看起来像是$\LaTeX$文档。 1. 使用$\LaTeX$字体 1.1 换个字体 如果仅仅是想更换字体,那么只需要先找到这部分内容对应的css样式文件修改即可。比如我的主题中正文部分的样式文件位于assets/css/common/main.css,接下来指定font-family参数: .main { font-family: default_font_1, default_font_2, serif; } 之后Hugo会首先尝试使用第一种字体,如果系统中不存在该字体,则会使用第二种字体,以此类推。最后的serif指使用系统默认的衬线字体。 1.2 使用自定义字体 其实使用自定义字体最快的方式就是选择使用自己喜欢字体的主题,比如我一开始就想用texify3这个$\LaTeX$风格的主题,但是后来发现魔改难度比较大于是换了现在的主题。所以我就想是不是只要把texify3主题中的字体和样式文件复制到我的主题的对应位置就行了? texify3主题中正文部分的结构文件位于layouts/_default/baseof.html,样式文件位于assets/sass/layouts/common.scss,字体调用的样式文件位于assets/sass/fonts.scss,字体文件位于static/fonts/,具体来说 baseof.html: <div id="wrapper"> {{ block "main" . }}{{ end }} </div> common.scss: @import "../fonts"; #wrapper { font-family: "Latin Modern Roman", "Times New Roman", serif; } fonts.scss: @font-face { font-display: swap; font-family: 'Latin Modern Roman'; font-style: normal; font-weight: normal; src: url('../fonts/lmroman-normal.woff'); } 有趣的事情发生了,fonts.scss中使用的路径十分奇怪,既不是相对结构文件的路径,也不是相对样式文件的路径,但却可行! ChatGPT对于src参数的解释是相对样式文件的路径,但是如果使用“正确”的路径../../static/fonts/lmroman-normal.woff会发现不可行。 另外使用绝对路径/Users/.../fonts/lmroman-normal.woff或是{{ lmroman-normal.woff | absURL}}也都不可行。 更糟糕的是,复制到我的主题后,连一开始的../fonts/lmroman-normal.woff也不可行了。 起初我以为是scss格式的问题,因为在texify3中使用scss样式文件时有转译为css格式的逻辑 {{ $options := dict "transpiler" "dartsass" "targetPath" "css/common....
待填:直接查看pdf
本意是希望博客能够支持查看pdf,这样就可以把之前的一些$\LaTeX$内容照搬出来了。 pdf.js 失败案例 以下是使用hugo-embed-pdf-shortcode的一个失败案例: Previous Next / [pdf] View the PDF file here. 在本地查看的时候会一直显示加载转圈圈,不知道部署之后是什么图景。💩 已知的几个问题 这个Hugo Topic提到上面那个短代码目前无人维护,但只要修改第一行代码即可。(修改无果) 这个Issue也提到了上述的代码问题。(修改无果) 事实上我后来发现上面的几个代码问题已经被作者修复了。🤡 这个Issue提到了我遇到的一直加载的问题,但是有点答非所问。(不知道是不是我理解的有问题) 这里还有一个使用pdf.js的demo。(下载,hugo server,page not found,sad) 可能的问题 代码问题~~(可是我根本不会js啊阿啊)~~。在VSCode上打开shortcodes/embed-pdf.html会显示有错误但是hugo server没事,额。 全局变量设置错误。 备用方案 就是直接下载 也许有一天会回来解决,也许不会。
不去问命运知道的事情
事情是这样的。 我需要做一件事,但是我不想。 听音乐,听过去的音乐总能想起一些过去的东西,情绪。 回忆起一些句子。 我想知道它们从哪里来,结果GPT对我嬉皮笑脸,根本没有那样的诗。 现在我高举键盘,准备拨乱反正。 就在那个小村里 就在那个小村里 穿着银杏树的服装 有一个人,是我 眯起早晨的眼睛 白晃晃的沙地 更为细小的蝇壳没有损坏 周围潜伏着透明的山岭 泉水一样的风 你眼睛的湖水中没有海草 一个没有油漆的村子 在深绿的水底观看太阳 我们喜欢太阳的村庄 在你的爱恋中活着 很久才呼吸一次 远远的荒地上闪着水流 村子里有树叶飞舞 我们有一块空地 不去问命运知道的事情 一九八三. 十一 这是一个实验。
小东西
记录一些小东西。 2.18: 使用Let’s Encrypt获得免费的SSL证书 “连接是安全的” Step 1: 安装certbot apt install certbot Step 2: 获取证书 certbot certonly --standalone -d omnibbfb.top 胜利结算页面 Saving debug log to /var/log/letsencrypt/letsencrypt.log Requesting a certificate for omnibbfb.top Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/omnibbfb.top/fullchain.pem Key is saved at: /etc/letsencrypt/live/omnibbfb.top/privkey.pem This certificate expires on 2024-05-18. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background....
Collections
最近用到了Python中的collections模块,就索性整理了一下。 from collections import * 在Python官方术语对照表中或是使用print(collections.__doc__)有 This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple. 即collections模块中提供了一些相比传统容器(字典、列表、集合以及元组)更高级的容器数据类型。包括~~(凑字数)~~: namedtuple: factory function for creating tuple subclasses with named fields (一个工厂函数,用来创建元组的子类,子类的字段是有名称的。) deque: list-like container with fast appends and pops on either end (类似列表的容器,但 append 和 pop 在其两端的速度都很快。) ChainMap: dict-like class for creating a single view of multiple mappings (类似字典的类,用于创建包含多个映射的单个视图。) Counter: dict subclass for counting hashable objects (用于计数可哈希(hashable)对象的字典子类) OrderedDict: dict subclass that remembers the order entries were added (字典的子类,能记住条目被添加进去的顺序。) defaultdict: dict subclass that calls a factory function to supply missing values (字典的子类,通过调用用户指定的工厂函数,为键提供默认值。) UserDict: wrapper around dictionary objects for easier dict subclassing (封装了字典对象,简化了字典子类化) UserList: wrapper around list objects for easier list subclassing (封装了列表对象,简化了列表子类化) UserString: wrapper around string objects for easier string subclassing (封装了字符串对象,简化了字符串子类化) 工厂方法 上文提到,稍作整理,遇事不决,问GPT。...
Attributes and Methods
本文作为“一切皆对象”的下篇,主要介绍对象的属性(attribute)和方法(method)。 什么是属性和方法? 在Python官方术语对照表中是这样定义的: Attribute: A value associated with an object which is usually referenced by name using dotted expressions. It is possible to give an object an attribute whose name is not an identifier as defined by Identifiers and keywords, for example using setattr(), if the object allows it. Such an attribute will not be accessible using a dotted expression, and would instead need to be retrieved with getattr(). Method: A function which is defined inside a class body....
Everything is an object in Python
本文主要想解决的问题是:在Python中什么是“一切皆对象”? 什么是对象? 在Python官方术语对照表中是这样定义的: Object: Any data with state (attributes or value) and defined behavior (methods). 什么是属性(attribute)和方法(method): Attribute: A value associated with an object which is usually referenced by name using dotted expressions. Method: A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self). 什么是函数(function)和类(class):...