September 28, 2014
Introduction # This tutorial will show you how to create a simple theme in Hugo. I assume that you are familiar with HTML, the bash command line, and that you are comfortable using Markdown to format content. I’ll explain how Hugo uses templates and how you can organize your templates to create a theme. I won’t cover using CSS to style your theme.
We’ll start with creating a new site with a very basic template.
...
March 10, 2014
Move static content to static # Jekyll has a rule that any directory not starting with _ will be copied as-is to the _site output. Hugo keeps all static content under static. You should therefore move it all there. With Jekyll, something that looked like
▾ <root>/ ▾ images/ logo.png should become
▾ <root>/ ▾ static/ ▾ images/ logo.png Additionally, you’ll want any files that should reside at the root (such as CNAME) to be moved to static.
...
December 11, 2023
Example # {{< mermaid [class="text-center"]>}} graph TD; R1[需求1:登录功能] -->F1((登录函数模块)) R2[需求2:支付功能] --> F2((支付函数模块)) R3[需求3:购物车功能] --> F3((购物车函数模块)) R1 --> F4((Session管理模块)) R2 --> F4 F1 --> C1[登录页面组件] F1 --> C2[登录控制器] F2 --> C3[支付页面组件] F2 --> C4[支付控制器] F3 --> C5[购物车页面组件] F3 --> C6[购物车控制器] {{< /mermaid >}} graph TD; R1[需求1:登录功能] -->F1((登录函数模块)) R2[需求2:支付功能] --> F2((支付函数模块)) R3[需求3:购物车功能] --> F3((购物车函数模块)) R1 --> F4((Session管理模块)) R2 --> F4 F1 --> C1[登录页面组件] F1 --> C2[登录控制器] F2 --> C3[支付页面组件] F2 --> C4[支付控制器] F3 --> C5[购物车页面组件] F3 --> C6[购物车控制器] {{< mermaid [class="text-center"]>}} graph TD; R1[需求1: 实现用户注册功能] --> F1[UserRegisterController] R1 --> F2[UserRegisterService] R1 --> F3[RegisterValidation] R2[需求2: 实现订单支付功能] --> F4[OrderPaymentController] R2 --> F5[PaymentService] R2 --> F6[PaymentValidation] R3[需求3: 实现商品收藏功能] --> F7[FavoriteController] R3 --> F8[FavoriteService] F1 --> C1[RegisterPage] F1 --> C2[RegisterAPI] F4 --> C3[PaymentPage] F4 --> C4[PaymentAPI] F7 --> C5[FavoritePage] C1[RegisterPage] --> D1[用户名输入框] C1 --> D2[密码输入框] C1 --> D3[注册按钮] C3[PaymentPage] --> D4[支付金额输入框] C3 --> D5[支付按钮] {{< /mermaid >}} graph TD; R1[需求1: 实现用户注册功能] --> F1[UserRegisterController] R1 --> F2[UserRegisterService] R1 --> F3[RegisterValidation] R2[需求2: 实现订单支付功能] --> F4[OrderPaymentController] R2 --> F5[PaymentService] R2 --> F6[PaymentValidation] R3[需求3: 实现商品收藏功能] --> F7[FavoriteController] R3 --> F8[FavoriteService] F1 --> C1[RegisterPage] F1 --> C2[RegisterAPI] F4 --> C3[PaymentPage] F4 --> C4[PaymentAPI] F7 --> C5[FavoritePage] C1[RegisterPage] --> D1[用户名输入框] C1 --> D2[密码输入框] C1 --> D3[注册按钮] C3[PaymentPage] --> D4[支付金额输入框] C3 --> D5[支付按钮]
July 12, 2023
LLaMA 简介:一个具有 650 亿参数的基础大型语言模型 # 翻译原文为:2023 年 2 月 24 日 https://ai.facebook.com/blog/large-language-model-llama-meta-ai/
作为 Meta 对开放科学承诺的一部分,今天我们公开发布 LLaMA(大型语言模型 Meta AI),这是一种最先进的基础大型语言模型,旨在帮助研究人员推进人工智能这一子领域的工作。 更小、性能更高的模型(例如 LLaMA)使研究界中无法访问大量基础设施的其他人能够研究这些模型,从而进一步实现这一重要且快速变化的领域的访问民主化。
在大型语言模型空间中训练像 LLaMA 这样的小型基础模型是可取的,因为它需要更少的计算能力和资源来测试新方法、验证他人的工作和探索新的用例。 基础模型在大量未标记数据上进行训练,这使得它们非常适合对各种任务进行微调。 我们提供多种尺寸的 LLaMA(7B、13B、33B 和 65B 参数),并共享 LLaMA 模型卡,其中详细说明了我们如何构建模型以符合我们负责任的 AI 实践方法。
去年,大型语言模型——具有数十亿参数的自然语言处理 (NLP) 系统——展现了生成创意文本、解决数学定理、预测蛋白质结构、回答阅读理解问题等的新功能。 它们是人工智能可以为数十亿人大规模提供巨大潜在好处的最明显案例之一。
尽管大型语言模型最近取得了所有进展,但由于训练和运行如此大型模型所需的资源,对它们的全面研究访问仍然有限。 这种受限的访问限制了研究人员理解这些大型语言模型如何以及为何工作的能力,阻碍了提高其稳健性和缓解已知问题(例如偏见、毒性和产生错误信息的可能性)的努力的进展。
在更多标记(即单词片段)上训练的较小模型更容易针对特定的潜在产品用例进行重新训练和微调。 我们在 1.4 万亿个代币上训练了 LLaMA 65B 和 LLaMA 33B。 我们最小的模型 LLaMA 7B 经过一万亿代币的训练。
与其他大型语言模型一样,LLaMA 的工作原理是将单词序列作为输入并预测下一个单词以递归地生成文本。 为了训练我们的模型,我们从使用人数最多的 20 种语言中选择了文本,重点关注拉丁字母和西里尔字母的语言。
还需要进行更多的研究来解决大型语言模型中的偏见、有毒评论和幻觉的风险。 与其他模型一样,LLaMA 也面临着这些挑战。 作为基础模型,LLaMA 被设计为多功能的,可以应用于许多不同的用例,而不是为特定任务设计的微调模型。 通过共享 LLaMA 的代码,其他研究人员可以更轻松地测试在大型语言模型中限制或消除这些问题的新方法。 我们还在本文中提供了一系列评估模型偏差和毒性的基准评估,以显示模型的局限性并支持这一关键领域的进一步研究。
为了保持完整性并防止滥用,我们将在专注于研究用例的非商业许可下发布我们的模型。 将根据具体情况向学术研究人员授予使用该模型的权限; 隶属于政府、民间社会和学术界组织的人员; 以及世界各地的行业研究实验室。 有兴趣申请访问权限的人可以在我们的研究论文中找到该申请的链接。
...
May 18, 2023
AI # ChatALL同时与所有 AI 机器人聊天,找到最佳答案 Workflow # 开源工作流引擎的精选列表
flowy # The minimal javascript library to create flowcharts.
flowy demo
dagu # Dagu 无代码工作流执行器。它根据声明性 YAML 定义执行工作流.是一个强大的 Cron 替代品,带有 Web UI。它允许您以声明性 YAML 格式将命令之间的依赖关系定义为有向无环图 (DAG)。此外,Dagu 原生支持运行 Docker 容器、发出 HTTP 请求以及通过 SSH 执行命令。
./dagu server ./dagu scheduler 增加admin密码,编辑 admin.yaml
port: 8080 # default: 8080 # Basic Auth isBasicAuth: true # enables basic auth basicAuthUsername: yzq # basic auth user basicAuthPassword: 1314 # basic auth password Usecase
...
April 11, 2023
JWT访问令牌(JSON Web Token) # 在OAuth 2.0中,访问令牌通常是一个短暂的字符串,用于访问和保护API资源。然而,使用JWT(JSON Web Token)作为访问令牌,可以提供更高级别的安全性和功能。
什么是JWT访问令牌? # JWT访问令牌是基于JSON Web Token标准,由三部分组成:头部、声明和签名。与传统的OAuth 2.0访问令牌不同,JWT访问令牌是已加密且自包含的,其中包含了所有必要的信息,如令牌类型、授权范围、过期时间等。
JWT访问令牌的优点 # 更高级别的安全性 # 使用JWT访问令牌可以提供更高级别的安全性,因为它们是已加密的,所以它们比传统的OAuth 2.0访问令牌更难被篡改或伪造。此外,由于JWT访问令牌是自包含的,所以它们允许客户端在无需额外调用API的情况下验证其有效性。
支持加密和签名 # JWT访问令牌支持加密和签名,这意味着可以对令牌进行加密以保护其内容,并使用签名验证其完整性。通过这些功能,可以提供更高级别的数据保护和防篡改技术。
高度可扩展 # JWT访问令牌是高度可扩展的,可以使用JSON Web Key(JWK)来指定加密算法、密钥等信息。此外,JWT访问令牌还支持其他功能,如声明(claims)和多种编码格式(例如JWS、JWE等),使其在应对不同场景和需求时更加灵活和适应。
如何实现JWT访问令牌? # 要实现JWT访问令牌,需要遵循以下步骤:
生成JWT访问令牌,包括头部、声明和签名。 将JWT访问令牌发送给资源服务器以获取受保护的API资源。 资源服务器对JWT访问令牌进行解码和验证,以确定其有效性和授权范围。 如果JWT访问令牌有效,则资源服务器返回受保护的API资源,否则返回错误响应。
结论 # 使用JWT访问令牌可以提供更高级别的安全性和功能,为OAuth 2.0提供了一种更加灵活和可扩展的安全保护方式。但是,实现JWT访问令牌需要一定的技能和经验,因此在使用之前请确认您具备相关知识和能力。
April 4, 2023
docker导入导出 # 5.7.14 docker save quay.io/metallb/controller:v0.12.1 quay.io/metallb/speaker:v0.12.1 | gzip -c > metallb-images.tar.gz docker save mysql:5.7.14 | gzip -c > images.tar.gz docker load --input images.tar.gz 常用docker清单 # docker run –name mysql -p 3306:3306 -v /home/app/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7 docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7 docker run –name nacos -e MODE=standalone -p 8848:8848 -p 9848:9848 -d nacos/nacos-server:2.0.2 docker run –name koishi -p 5140:5140 koishijs/koishi:latest-lite workflow # docker run --name dagu \ --rm \ -p 8080:8080 \ -v $HOME/.
...
April 4, 2023
mvn # curl -LO https://dlcdn.apache.org/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.tar.gz sudo tar xzvf apache-maven-3.9.1-bin.tar.gz -C /usr/local export MAVEN_HOME=/usr/local/apache-maven-3.9.1 export PATH=$PATH:$MAVEN_HOME/bin go语言环境安装 #
April 4, 2023
匹配字符串 # . 匹配任意单个字符(除了换行符) * 匹配前面的字符零次或多次 + 匹配前面的字符一次或多次 ? 匹配前面的字符零次或一次 \d 匹配一个数字字符 \w 匹配一个单字字符(字母、数字或下划线) \s 匹配一个空白字符(空格、制表符、换行符等) ^ 匹配字符串的开头 $ 匹配字符串的结尾 [] 匹配方括号中任意一个字符 [^] 匹配不在方括号中的任意一个字符 () 分组,用于提取匹配的部分 这些正则表达式可以灵活组合使用,构成更复杂的匹配规则。例如,^\d{3}-\d{2}-\d{4}$ 可以匹配格式为 xxx-xx-xxxx 的美国社会保险号码,其中 ^\d{3} 匹配三个数字字符作为开头,-\d{2}- 匹配中间的两个数字和横线,\d{4}$ 匹配四个数字字符作为结尾。 \s* 匹配任意数量的空白字符 .* 匹配任意数量的任意字符 ^ 匹配行的开头 .* 匹配零个或多个任意字符 / 匹配一个斜杠字符 ([^/]+) 匹配一个或多个除斜杠之外的字符,并将其捕获在子组中 /src/main/resources/application\.yaml 匹配特定的字符串(需要转义点号) $ 匹配行的结尾 提取字符串 # 其中,圆括号表示一个分组,在该分组内使用 [^"]* 匹配任意非双引号字符,然后使用 () 将其包裹,从而提取其中的内容。同时,使用 \s* 匹配任意数量的空白字符,.* 匹配任意数量的任意字符。在Go中,可以使用 regexp 包来进行正则表达式匹配和提取
func TestMatch(t *testing.T) { str := ` @FeignClient( name = "service1", path="/path/to/service1") public interface Service1Client { // .
...
December 20, 2022
使用hugo搭建技术博客 # Hugo 是一个用Go 编写的静态网站生成器。简单、易用、高效、易扩展、快速部署
Hugo安装 # curl -LO https://github.com/gohugoio/hugo/releases/download/v0.108.0/hugo_extended_0.108.0_linux-amd64.tar.gz mv hugo /usr/local/bin hugo基础使用 # 创建站点 hugo new site quickstart cd quickstart 创建文章,content目录中存放md格式文章 hugo new posts/my-first-post.md 使用皮肤,hugo提供较多的themes可选择, 更多参考 git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book 发布站点,public目录生成HTML静态资源,也可使用hugo server提供的PageLive hugo Nginx 配置 # SSL配置 # 通过 免费HTTPS证书生成后,配置到Nginx
server { listen 443 ssl; server_name yangzhiqiang.tech; ssl_certificate /root/.acme.sh/yangzhiqiang.tech/yangzhiqiang.tech.cer; ssl_certificate_key /root/.acme.sh/yangzhiqiang.tech/yangzhiqiang.tech.key; index index.html; location / { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; index index.
...