GitHub Pages部署静态页面

GitHub Pages是GitHub提供的静态页面托管服务,可以用来托管个人博客、项目文档等静态页面。GitHub Pages支持Jekyll,可以使用Jekyll构建博客,也可以使用其他静态页面生成器。现在GitHub Pages也在公测通过工作流部署静态页面,可以通过GitHub Actions自动部署静态页面,这样页面构建工具就不再受约束,可以使用任何静态页面生成器。GitHub Pages还支持自定义域名,可以绑定自己的域名。我的个人博客目前是托管在腾讯云COS上,使用GitHub Actions自动部署,主要考虑是加快国内访问速度,现在都是在公众号上发布文章了,后期考虑把博客迁到GitHub Pages上。

今天先把被动收入组合的盈亏情况搞个页面出来,部署到GitHub Pages上,方便查看。

警告:GitHub Pages 站点可以在 Internet 上公开,即使该站点的存储库是私有的。 如果站点的存储库中有敏感数据,要在发布前删除数据。

如果不需要对站点的生成过程进行任何控制,则建议在将更改推送到特定分支时发布站点。 可以指定要用作发布源的分支和文件夹。 源分支可以是存储库中的任何分支,源文件夹可以是源分支上的存储库根目录 (/),也可以是源分支上的 /docs 文件夹。 将更改推送到源分支时,源文件夹中的更改将发布到 GitHub Pages 站点。

如果想使用 Jekyll 以外的生成过程,或者不想使用专用分支来保存已编译的静态文件,则建议编写 GitHub Actions 工作流来发布站点。 GitHub 为常见的发布方案提供入门工作流,以帮助编写工作流。

本文的静态页面比较简单,就选择特定分支部署的方式,其实直接使用main分支也可以,但为了跟代码有所区分,还有实践习惯,就新建一个gh-pages分支。

创建分支

在GitHub上创建一个分支,分支名是gh-pages,然后将分支切换到gh-pages。创建gh-pages后,GitHub会自动创建一个页面部署工作流,我们需要在仓库设置中选择是使用仓库根目录,还是使用/docs目录。我使用了根目录来进行部署。

仓库设置

部署静态页面

每次向gh-pages分支推送更改时,GitHub Pages都会构建站点并发布站点。使用仓库根目录作为站点源文件夹时,GitHub Pages会使用index.html作为站点的主页。如果没有index.html,GitHub Pages会使用README文件。

我在gh-pages分支上新建了一个index.html文件,内容如下:

<!DOCTYPE html>
<html><head><title>Portfolio Profit Curve</title><meta charset="utf-8"><script src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
</head><body><div id="profitCurve" style="width: 100%;height:600px;"></div><script>fetch('my-investment/data/portfolio-1_change_records.json').then(response => response.json()).then(data => {var chartDom = document.getElementById('profitCurve');var myChart = echarts.init(chartDom);var option = {tooltip: {trigger: 'axis',formatter: function (params) {var date = params[0].axisValue;var funds = data.find(record => record.date === date).fund_detail;var tooltipItems = params.map(param => {var fund = funds.find(fund => fund.fund_code === param.seriesName);if (!fund) {return `${param.seriesName}: ${parseFloat(param.value).toFixed(2)}`;}var cumulativePL = (parseFloat(param.value) - fund.cost).toFixed(2);var color = cumulativePL >= 0 ? 'red' : 'green';return `${param.seriesName}: ${parseFloat(param.value).toFixed(2)} (Cost: ${fund.cost}, Cumulative P&L: <span style="color: ${color};">${cumulativePL}</span>)`;});return `${date}<br/>${tooltipItems.join('<br/>')}`;}},legend: {data: ['Total Value'].concat(data[0].fund_detail.map(fund => fund.fund_code))},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},toolbox: {feature: {saveAsImage: {},dataZoom: {},restore: {}}},xAxis: {type: 'category',boundaryGap: false,data: data.map(record => record.date)},yAxis: {type: 'value'},series: [{name: 'Total Value',type: 'line',data: data.map(record => (record.balance + record.fund_value_total).toFixed(2)),smooth: true},...data[0].fund_detail.map((fund, index) => ({name: fund.fund_code,type: 'line',data: data.map(record => record.fund_detail[index].value.toFixed(2)),smooth: true}))]};myChart.setOption(option);});</script>
</body></html>

这个HTML使用ECharts JavaScript库显示投资组合利润曲线。文档结构是标准的,包括一个head部分,其中包含页面的标题和链接到ECharts库的链接,以及包含页面主要内容的body部分。

body包含一个id为profitCurvediv,这是图表将被渲染的地方。div的样式设置为占据其父元素宽度的100%,并且高度为600px。

JavaScript代码从位于my-investment/data/portfolio-1_change_records.json的JSON文件中获取数据。然后使用这些数据初始化一个ECharts实例并配置图表。

option对象包含图表的配置。tooltip属性配置用户将鼠标悬停在图表上的数据点时将显示的信息。legend属性指定将在图表图例中显示的数据系列的名称。gridtoolboxxAxisyAxis属性配置图表的外观和功能。

series属性是一个数组,指定将在图表上显示的数据系列。第一个系列代表投资组合的总价值,其余的系列代表投资组合中各个基金的价值。每个系列的数据都是从获取的JSON数据中提取的。

最后,调用ECharts实例上的setOption方法来应用配置并渲染图表。

部署后效果如下:

被动1号组合盈亏曲线

在这里插入图片描述

提示框显示的是对应日期的组合净值、各个基金的净值、成本和累计盈亏。

点击原文链接可以访问到这个页面😀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/726499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙文章专题-2021年鸿蒙相关的文章废弃

#原因 至于为什么说2021年我的鸿蒙专栏的文章废弃了&#xff0c;只是说没有了参考意义&#xff0c;是因为鸿蒙4.0以前的版本语言从以Java为主过渡为以ArkTS为主。以前的Java版本的工程已经无法再使用了&#xff0c;后续的开发都必须以ArkTS开发语言为主。 其中而且整个项目结构…

三. 开发环境搭建

目录 一. Ubuntu 和 Windows 文件互传 1.1 VMware Tools 1.2 FileZilla 二. Ubuntu 下 NFS 和 SSH 服务开启 2.1 NFS 服务开启 ​编辑 2.2 SSH 服务开启 三. Ubuntu 交叉编译工具链安装 四. vscode的remote-ssh远程连接虚拟机 4.1 Windows的vscode安装 4.2 vscode远…

chatGPT的耳朵!OpenAI的开源语音识别AI:Whisper !

语音识别是通用人工智能的重要一环&#xff01;可以说是AI的耳朵&#xff01; 它可以让机器理解人类的语音&#xff0c;并将其转换为文本或其他形式的输出。 语音识别的应用场景非常广泛&#xff0c;比如智能助理、语音搜索、语音翻译、语音输入等等。 然而&#xff0c;语音…

专题1 - 双指针 - leetcode 11. 盛最多水的容器

leetcode 11. 盛最多水的容器 1. leetcode 11. 盛最多水的容器1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 1. leetcode 11. 盛最多水的容器 1. 题目详情 给定一个长度为 n 的整数数组 height 。有 n 条垂线…

【c++】类中成员函数和成员变量的存储

成员函数和成员变量是分开存储的 1. 非静态成员变量&#xff0c;属于类的一部分&#xff0c;sizeof(类名)的时候会包括进去 2. 静态成员变量&#xff0c;不属于类的一部分&#xff0c;不会影响类的大小 3. 成员函数&#xff0c;都不属于类的一部分 4. 空类大小为1B

分享一波非标设计资源合集

01 非标电表箱柜 本项目为创博智慧云产业研发中心的非标配电箱、电表箱设计原理图&#xff0c;地块一层含dwg图纸一份&#xff0c;包括配电箱壳体尺寸、原理图、接线图等20多种设计图纸。 02 住宅楼高压 低压 非标箱原理和箱体图 本图纸为高级住宅小区高低压非标箱设计原理…

一. Ubuntu入门

目录 一. Ubuntu系统安装 1. 安装虚拟机软件VMware 2. 安装Ubuntu操作系统 二. Ubuntu系统入门 1. Shell操作 1.1 Shell 简介 1.2 Shell基本操作 1.3 常用Shell命令 (1) 目录信息查看命令ls (2) 目录切换命令cd (3) 当前路径显示命令pwd (4) 系统信息查看命令uname…

Unity:Animation 三 Playable、ImportModel

目录​​​​​​​ 1. Playables API 1.1 Playable vs Animation 1.2 Advantages of using the Playables API 1.3 PlayableGraph Visualizer 2. Creating models outside of Unity 2.1 Preparing your model files for export 2.1.1 Scaling factors 2.1.2 优化模型文…

Pytest教程:Pytest的跳过与标记功能用法

一、pytest跳过功能 1. 使用 pytest.skip 装饰器跳过测试用例 Pytest中的 pytest.skip 装饰器允许你跳过指定的测试用例。你可以将该装饰器应用于测试函数或测试类上。 import pytestpytest.mark.skip(reason"Skipping this test case") def test_skip():assert 1…

开源文生图大模型Playground v2.5发布:超越SD、DALL·E 3和 Midjourney

前言 在AI技术迅速发展的今天&#xff0c;文生图模型成为了艺术创作、设计创新等领域的重要工具。Playground v2.5的发布&#xff0c;不仅在技术上取得了突破&#xff0c;更在开源文化的推广与实践上迈出了重要一步。 Huggingface模型下载&#xff1a;https://huggingface.co/…

虚拟化相关面试题集锦(1)—— 如何在QEMU/KVM中跑通AI相关训练

接前一篇文章&#xff1a;虚拟化相关面试题集锦&#xff08;0&#xff09;—— 引言 问题1 问&#xff1a;如何在QEMU/KVM虚拟机上跑通AI相关模型的训练和测试&#xff0c;并对虚拟机的GPU资源的分配进行配置和优化&#xff1f; 备注&#xff1a;此问题是笔者年上周参加中科时…

图论练习5

Going Home Here 解题思路 模板 二分图最优匹配&#xff0c;前提是有完美匹配&#xff08;即存在一一配对&#xff09;左右集合分别有顶标&#xff0c;当时&#xff0c;为有效边&#xff0c;即选中初始对于左集合每个点&#xff0c;选择其连边中最优的&#xff0c;然后对于每…

Sqli-labs靶场第18关详解[Sqli-labs-less-18]自动化注入-SQLmap工具注入

Sqli-labs-Less-18 通过测试发现&#xff0c;在登录界面没有注入点&#xff0c;通过已知账号密码admin&#xff0c;admin进行登录发现&#xff1a; 返回了User Agent&#xff0c;设想如果在User Agent尝试加上注入语句&#xff08;报错注入&#xff09;&#xff0c;测试是否会…

react hooks useReducer使用

在React中&#xff0c;useReducer是一个用于管理组件状态的Hook&#xff0c;它特别适用于处理复杂的状态逻辑和多个相关状态。这个Hook接收一个reducer函数&#xff08;与Redux中的reducer概念类似&#xff09;和一个初始状态作为参数&#xff0c;并返回一个新的state值以及一个…

Unity中关于继承ScriptableObject的类

在游戏中我们会经常看到一些.asset的配置文件&#xff0c;而这些文件就是用一个自定义的类去继承ScriptableObject来生成的。比如当前有一些零散特效需要预加载&#xff0c;这个时候我们可以声明一个类去保存这些零散特效对象的信息&#xff0c;然后统一读取加载。 代码&#…

JavaScript极速入门(1)

初识JavaScript JavaScript是什么 JavaScript(简称JS),是一个脚本语言,解释型或者即时编译型语言.虽然它是作为开发Web页面的脚本语言而著名,但是也应用到了很多非浏览器的环境中. 看似这门语言叫JavaScript,其实在最初发明之初,这门语言的名字其实是在蹭Java的热度,实际上和…

.jsonl 格式文件的解释

根据 CHATGPT .jsonl 文件格式是一种文本文件格式&#xff0c;通常用于存储每行一个JSON对象的数据。.jsonl 文件的每一行都是一个独立的JSON对象&#xff0c;这些对象之间没有任何分隔符。 以下是一个示例.jsonl文件的内容&#xff1a; {"name": "John"…

【LeetCode】876_链表的中间结点_C

题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 https://leetcode.cn/problems/middle-of-the-linked-list/description/ 示例 提示&#xff1a; 链表的结点数范围是 [1, 100]1 <…

Subversion svn 开源的版本控制系统入门介绍 VCS

拓展阅读 Subversion 开源的版本控制系统入门介绍 VCS Git 开源的版本控制系统-01-入门使用介绍 Git 开源的版本控制系统-02-base usage 基本用法 Git 开源的版本控制系统-03-时间数据回溯 Git 开源的版本控制系统-04-branch manage 分支管理 Git 开源的版本控制系统-05-…

SpringBoot使用Jackson 序列化小妙招

前言 SpringBoot默认使用Jackson进行json数据的序列化&#xff0c;在这个过程中总会有些奇奇怪怪的需求&#xff0c;对于这些小需求要么增加一堆配置类&#xff0c;要么重写方法&#xff0c;其实都有点杀鸡用牛刀了&#xff0c;那么我来列举下日常开发中这些小需求如何通过配置…