铃兰怜雪

👋 welcome

  • 春江烟雨映楼台,万种风情次第开
  • 劝君且赏花一朵,再叹此生不枉来

群晖nas本地部署Bitwarden服务器管理密码

本笔记记录如何使用docker部署bitwarden服务端和acme自签证书,请保证前置条件: 1.已经购买一个域名 2.关闭群晖的二步验证(我没有将群晖放到公网,内网访问环境下不需要二步验证) 3.在路由器中把nas的内网ip设置成固定ip 部署bitwarden服务端 安装并启动镜像 官方提供的docker部署方案面向企业,功能更全面但对资源的要求更高,镜像也大得多 对于个人使用vaultwarden即可。中文wiki 在群晖container manager中搜索vaultwarden,安装vaultwarden/server:latest 把端口映射保持默认即可,即容器内的80和3012端口需要映射出来虽然3012端口我不知道有什么用,但默认给了就映射一下吧。注意nas上的80端口可能会被占用。 80端口映射出来的端口不直接用,后面用反向代理。 存储空间(volume)选一个用来存放数据库的文件夹,映射到容器内的/data,读写权限都开 点击启动即可,但现在还没配置http所以只能打开登录界面,不能正常使用 配置反代 群晖:控制面板-登陆门户-高级-反向代理,如果找不到直接在控制面板搜索反向代理 新增一项 来源协议选https,端口自己指定,主机名保持* 目的地协议选http,端口为刚刚在容器中映射出来的host端口,主机名为localhost 然后访问https://nasip:<反代https端口>来使用 此时已经可以注册并登录了,但浏览器会提示证书问题,接下来安装证书 自动签名与安装证书 添加解析 给自己的域名中添加一条A类型解析,ip地址为nas的内网ip 部署自签服务 自签证书只能签域名,先在自己的域名中 container manager搜索acme,安装neilpang/acme.sh:latest,镜像文档 设置几个环境变量 AUTO_UPGRADE: 1 SYNO_Username: <nas用户名> SYNO_Password: <nas密码> 创建一个文件夹,存放acme的配置 在改文件夹下新建一个文本文档account.conf,内容如下,以腾讯云为例,注意不能照抄 export DP_Id="域名解析商提供的TOKENid" export DP_Key="域名解析商提供的TOKEN" AUTO_UPGRADE='1' # 所有提供商都加这行,不加可能会遇到神奇的bug,反正加了也没问题 各个域名提供商的api用法查阅acme wiki 每个提供商在这里export的东西不一样,请查看wiki 每个提供商注册api token的方式也不同,去对应官网搜索api或者token之类的就能找到 将该文件夹映射到容器的/acme.sh里,读写权限都开 在执行命令中填入daemon 容器名要记住,不需要其他配置,点运行 启动自动签名脚本 在刚刚存放acme配置的文件夹下,新建一个.sh的脚本,注意替换尖括号中的容器名称,内容如下,不要照抄 #!/bin/bash docker exec <替换成你自己的容器名字> acme.sh --force --log --issue --server letsencrypt --dns dns_dp --dnssleep 120 -d example....

四月 20, 2024 · 1 分钟 · 铃兰怜雪

UI设计

UI设计最首要也是最重要的一点是明确自己的设计目的: 是为了让玩家更快地获知信息?更方便操作?或者是为了展示些什么东西? 在明确了设计目的后,接下来各个元素尺寸、位置地决定,都要确认一下是否会与设计目的发生冲突,或者是否有助于达到目的 一个合格的UI设计应当保证以下几个要素: 完整、合理的信息传递 “合理”指的是符合用户习惯的设计逻辑 譬如做一个以美术见长的二次元手游,当用户点开卡池角色信息时,他更多地可能是想要看漂亮的立绘,其次才是角色的各项详细数据 而当用户点开仓库里有几千个相同图标的装备时,他们就不会这么在意美术表现了,他们更像一眼就能看到装备的属性 基本功能 每一个界面为了完成自己的任务,不仅仅要完整地传达信息,还需要各种功能来辅助玩家更好地获取、交互这些资源:对于图鉴,筛选或者排序功能是必要的;对于编队,批量选取、有用信息预览与切换显示可以很好地提高玩家的效率 交互体验 在保证了上一条“合理”的大原则后,元素的布局就可以再做一些改进 元素的布局是否符合阅读顺序?图标的尺寸是否易于阅读?是否容易让人视觉疲劳?这些可能在做的时候自己感觉不出来,多问问身边的同事,他人的评价很大程度上就代表着上线之后大多数玩家的想法。 美观 性冷淡风格是很好,但并不是每个游戏都适合这么做 避免使用过粗或者过大的元素,多用图片素材而不是简单的线条图形,会让文档看起来更易懂,直观

四月 15, 2024 · 1 分钟 · 铃兰怜雪

使用Hugo搭建博客

当前博客使用PaperMod主题,使用github托管发布。 源文件仓库位于https://github.com/kanajin/hugo-blog-source 初期学习时提交过多无用commit,望海涵 hugo quick start:https://gohugo.io/getting-started/quick-start/ 1. 安装Hugo 可以直接前往Hugo官网下载查看说明 此外各操作系统均可使用包管理器安装 Windows:scoop scoop bucket add extras scoop install hugo Linxu与macOS不再赘述 安装成功后使用命令hugo version确认安装情况 2. 建站 使用命令hugo new site <name>来新建一个博客站点,可以在命令中指定博客配置文件的格式,例如 hugo new site myname.github.io # 配置文件为hugo.toml hugo new site myname.github.io --format yaml # 配置文件为hugo.yaml,推荐,yaml格式更加易读 这个命令会在终端的当前目录下新建一个名为myname.github.io的目录,并部署好Hugo所需的资源,目录结构大致如下所示: $ tree . ├── archetypes │ └── default.md # 文章头部模板,新建博文时会使用这里的文章头部配置 ├── assets ├── content # 用于存放博文 ├── data ├── config.yaml # 配置文件,新版中可能叫做hugo.yaml,本文以config为准 ├── i18n ├── layouts # 存放模板文件,指导Hugo如何将content目录中的markdown渲染成HTML ├── static # 用于存放静态文件,如图片、CSS、JavaScript 文件等,建议使用git lfs管理 └── themes # 用于存放主题 9 directories, 2 files 这里要注意站点的名称必须是<自定义英文>....

三月 2, 2024 · 2 分钟 · 铃兰怜雪

排序算法

冒泡排序 重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,因小元素会经由交换慢慢“浮”到数列的顶端而得名 代码 func bubbleSort[T constraints.Ordered](arr []T) { for i := 0; i < len(arr); i++ { for j := i; j < len(arr); j++ { if arr[i] > arr[j] { arr[i], arr[j] = arr[j], arr[i] //swap } } } } 插入排序 从第二个元素(index=1)开始,不断向前“插队”到第一个比他小的元素之后 代码 func insertionSort[T constraints.Ordered](arr []T) { for i := 1; i < len(arr); i++ { j := i - 1 key := arr[i] for ; j >= 0 && arr[j] > key; j-- { arr[j+1] = arr[j] } arr[j+1] = key } } 选择排序 反复遍历数组,每次选出最小的元素移动至合适的位置...

一月 7, 2023 · 2 分钟 · 铃兰怜雪