https://image.familystudy.cn/image/generic/avatar.jpg

消失在彩霞里的博客

部署技巧——hugo博客

Hugo博客部署教程 写在前面 今天,笔者有空整理了下hugo搭建教程。 首先在云服务器上下载hugo,pick自己喜欢的主题(我选择了Lovelt)、配置.toml文件 。这些网上有详细的教程,不予赘述。 下面介绍一些小技巧。 友链的配置 hugo本身提供了posts、tags、categories,并没有提供友链。因此需要自己单独配置。 在layouts/shortcodes中加入代码friend.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 {{ if .IsNamedParams }} {{- $src := .Get "logo" -}} {{- $small := .Get "logo_small" | default $src -}} {{- $large := .Get "logo_large" | default $src -}} <div class="flink" id="article-container"> <div class="friend-list-div" > <div class="friend-div"> <a target="_blank" href={{ .

Go项目部署+实战(二)

go项目部署+实战(二) 多表联查的实现 谈到多表联查,有多种实现方法。比较传统的为数据库课程所教的视图方法。然而灵活性较差。 在Springboot中,采用映射表实现,而go+gin+gorm框架中,又有所不同。 下面笔者通过一个案例介绍多表联查的应用场景。 有一个合唱团,声部长负责批改作业。该接口需要查询声部长负责声部的所有人作业情况。 实体表有用户表、合唱团表、用户-合唱团表、作业表、作业提交表。 分析 首先需要明确设计表结构,易混淆的在于用户的角色权限和声部是隶属用户-合唱团表,而非用户本身。 思路为,查询用户所在声部权限比他低的人。 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 func AdminGetHomeworks(c *gin.Context) { homeworkId, _ := strconv.Atoi(c.Param("homeworkId")) var submissions []HomeworkSubmissionInfo chorusLeaderID := c.GetInt("userId") err := config.DB.Table("homework_submission"). Joins("JOIN homework ON homework.id = homework_submission.homework_id"). Joins("JOIN join_chorus ON homework.chorus_id = join_chorus.chorus_id"). Joins("JOIN user ON homework_submission.user_id = user.id and is_final = 1"). Where("join_chorus.user_id = ?

Go项目部署+实战(一)

go项目部署+实战(一) 写在前面 从大二下接触后端开始,笔者一直使用Springboot+mybatis+Redis这一套。 此次开发新项目,一方面想尝试新语言,另一方面听说go具有高并发的优势,故采用go语言。 花费了一晚上的时间完成配置以及初步编程,并记录了部署和实战过程中的一些技巧和问题。 项目伊始 笔者采用了go + gin + gorm的主流框架 采用go get -u xxx下载包,下载后自动更新在go.mod中。十分类似于maven。 1 2 3 go get -u github.com/gin-gonic/gin go get -u gorm.io/gorm go get -u gorm.io/driver/mysql 出现报错。显然,和pip、apt安装时类似,采用换源方法,配置国内源。 1 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy,direct 1 2 3 4 5 1. 在 golang 安装路径下寻找: 'go1.17.2\src\runtime\internal\sys\zversion.go' 文件 2. 打开 'zversion.go' 文件,在其中追加如下行(你的版本号)并保存 const TheVersion = `go1.23.2` 3. 再次 配置 goland 的 GOROOT 路径,即可正常配置 配置好后,运行

部署技巧——ssl证书自动更新

ssl证书自动部署教程 ssl证书有多种渠道获取,如阿里云、腾讯云等。但费用很贵。 ohttps支持免费泛域名证书。 可支持多种自动部署方式。其中API方式较为灵活。仅需调用api可获取证书中的文本信息。 笔者采用nodejs + axios + crontab方式部署 导包并封装函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 const CryptoJS = require('crypto-js'); const axios = require('axios'); const fs = require('fs'); // 封装request请求 const request = (url) => { return axios.get(url) .then(response => { console.log(response.data); return response.data; }) .catch(error => { console.error('Error: ', error); throw error; // 抛出错误以便外部捕获 }); } // 写入文件 function writeFile(filePath, data) { fs.

Networkx库绘制绚丽的网络图

networkx库 在科研中,有时需要绘制网络图。python中常用的为networkx库。 下面笔者通过简短的代码予以展示。 首先对数据进行预处理,获得偏相关系数矩阵。 数据预处理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import networkx as nx from sklearn.covariance import GraphicalLasso import matplotlib.pyplot as plt import pandas as pd def normalize(lst): min_val = min(lst) max_val = max(lst) # 如果最大值和最小值相等,避免除以零 if max_val == min_val: return [0 for _ in lst] return [5 * (x - min_val) / (max_val - min_val) for x in lst] X = pd.

Langchain-chatchat

部署 按照read-me.md进行配置 注意: 需要git clone huggingface库到本地/自己服务器 安装llama_index注意细节 1 2 pip install llama_index==0.41.0 # 不要错误地写成pip install llama-index! clone前运行命令 1 2 source /etc/profile.d/clash.sh proxy_on # 开启clash服务 也可在autodl上开启镜像 源码技术栈 webui streamlit 1 2 3 4 5 6 7 dialogue_mode = st.selectbox( "请选择对话模式:", dialogue_modes, index=index, on_change=on_mode_change, key="dialogue_mode", ) asyncio asyncio是python协程库。 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知。 示例 1 2 3 4 5 6 7 8 9 10 11 async def chat(): async def chat_iterator(): .