2022-01-04 20:42:55 +08:00
---
layout: default
---
2024-07-02 16:09:28 +08:00
< small > {{ page.date | date: "%-d %B %Y" }} - 字数统计:{% if page.layout == "encrypt" %}God Knows {% else %}{{ page.content | strip_html | strip_newlines | remove: " " | size }} - 阅读大约需要{{ page.content | strip_html | strip_newlines | remove: "" | size | divided_by: 350 | plus: 1 }}分钟{% endif %} - Hits: < span id = "{{ page.url }}" class = "visitors" > Loading...< / span > < / small >
2022-01-04 20:42:55 +08:00
< h1 > {{ page.title }}< / h1 >
< p class = "view" > by < a href = "//github.com/{{ page.author | default: " Mabbs " } } " > {{ page.author | default: site.author }}< / a > < / p >
< div id = "outdate" style = "display:none;" >
2024-07-02 16:09:28 +08:00
< hr / >
这是一篇创建于 < span id = "outime" > < / span > 天前的文章,其中的信息可能已经有所发展或是发生改变。
< br / > < br / >
2022-01-04 20:42:55 +08:00
< / div >
< script >
2024-07-02 16:09:28 +08:00
BirthDay = new Date("{{ page.date | date: "%m/%d/%Y" }} 00:00:00");
today = new Date();
timeold = (today.getTime() - BirthDay.getTime());
secondsold = Math.floor(timeold / 1000);
e_daysold = timeold / (24 * 60 * 60 * 1000);
daysold = Math.floor(e_daysold);
if (daysold > 90) {
2022-01-04 20:42:55 +08:00
document.getElementById("outdate").style.display = "block";
document.getElementById("outime").innerHTML = daysold;
2024-07-02 16:09:28 +08:00
}
2022-01-04 20:42:55 +08:00
< / script >
< hr / >
2024-07-02 16:09:28 +08:00
{% if page.layout != "encrypt" %}
<!-- [if !IE]> -->
< b > AI摘要< / b >
2025-04-14 23:45:30 +08:00
< p id = "ai-output" > {% assign ai_cache = site.data.ai-cache[page.url] %}{% if ai_cache %}{{ ai_cache }}{% else %}正在生成中……{% endif %}< / p >
{% unless ai_cache %}
2024-07-02 16:09:28 +08:00
< script >
async function sha(str) {
const encoder = new TextEncoder();
const data = encoder.encode(str);
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array
const hashHex = hashArray
.map((b) => b.toString(16).padStart(2, "0"))
.join(""); // convert bytes to hex string
return hashHex;
}
2024-07-02 16:46:57 +08:00
async function ai_gen(){
var postContent = "文章标题:" + {{ page.title | jsonify }} + ";文章内容:" + {{ page.content | strip_html | strip_newlines | jsonify }};
var postContentSign = await sha(postContent);
var outputContainer = document.getElementById("ai-output");
2024-10-04 15:13:10 +08:00
$.get(BlogAPI + "/is_uploaded?id={{ page.url }}& sign=" + postContentSign, function (data) {
2024-07-02 16:46:57 +08:00
if (data == "yes") {
2024-10-04 15:13:10 +08:00
$.get(BlogAPI + "/get_summary?id={{ page.url }}& sign=" + postContentSign, function (data2) {
2024-07-02 16:46:57 +08:00
outputContainer.textContent = data2;
});
} else {
2024-10-04 15:13:10 +08:00
$.post(BlogAPI + "/upload_blog?id={{ page.url }}", postContent, function (data) {
$.get(BlogAPI + "/get_summary?id={{ page.url }}& sign=" + postContentSign);
const evSource = new EventSource(BlogAPI + "/summary?id={{ page.url }}");
2024-07-02 16:46:57 +08:00
outputContainer.textContent = "";
evSource.onmessage = (event) => {
if (event.data == "[DONE]") {
evSource.close();
return;
} else {
const data = JSON.parse(event.data);
outputContainer.textContent += data.response;
}
2024-07-02 16:09:28 +08:00
}
2024-07-02 16:46:57 +08:00
});
}
});
}
ai_gen();
2024-07-02 16:09:28 +08:00
< / script >
2025-04-14 23:45:30 +08:00
{% endunless %}
2024-07-02 16:09:28 +08:00
< hr / >
<!-- <![endif] -->
{% endif %}
2022-01-04 20:42:55 +08:00
2023-06-30 02:44:09 +08:00
{% include toc.html html=content sanitize=true h_max=3 %}
2022-01-04 20:42:55 +08:00
2025-04-09 22:26:40 +08:00
{% if post.layout == "encrypt" %} {{content}} {% else %} < main class = "post-content" role = "main" > {% include anchor_headings.html html=content beforeHeading=true anchorBody="< svg class = 'octicon' viewBox = '0 0 16 16' version = '1.1' width = '16' height = '32' aria-hidden = 'true' > < path fill-rule = 'evenodd' d = 'M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z' > < / path > < / svg > " %}< / main > {% endif %}
2022-01-04 20:42:55 +08:00
{% if page.tags %}
2025-04-02 00:19:07 +08:00
< small style = "display: block" > tags: {% for tag in page.tags %}< a href = "/search.html?keyword={{ tag | url_encode }}" > < em > {{ tag }}< / em > < / a > {% unless forloop.last %} - {% endunless %}{% endfor %} < span style = "float: right;" > < a href = "{% if site . github % } { { site . github . repository_url } } { % else % } https: / / gitlab . com / mayx / mayx . gitlab . io { % endif % } / tree / master / { { page . path } } " > 查看原始文件< / a > < / span > < / small >
2022-01-04 20:42:55 +08:00
{% endif %}
2024-09-30 21:59:21 +08:00
< br / >
2024-09-30 22:59:32 +08:00
< br / >
2024-10-04 14:19:24 +08:00
< p id = "suggest-container" > < / p >
< script >
var blogurl = "{{ page.url }}";
var suggest = $("#suggest-container")[0];
suggest.innerHTML = "Loading...";
$.get(BlogAPI + "/suggest?id=" + blogurl + "& update=" + lastUpdated.valueOf(), function (data) {
if (data.length) {
getSearchJSON(function (search) {
suggest.innerHTML = '< b > 推荐文章< / b > < hr style = "margin: 0 0 5px" / > ';
const searchMap = new Map(search.map(item => [item.url, item]));
const merged = data.map(suggestObj => {
const searchObj = searchMap.get(suggestObj.id);
return searchObj ? { ...searchObj } : null;
});
merged.forEach(element => {
if (element) {
suggest.innerHTML += "< a href = " + element.url + " > " + element.title + "< / a > - " + element.date + "< br / > ";
}
});
});
} else {
suggest.innerHTML = "暂无推荐文章……";
}
});
< / script >
2022-01-04 20:42:55 +08:00
< div class = "pagination" >
2024-07-02 16:09:28 +08:00
{% if page.previous.url %}
< span class = "prev" >
< a href = "{{ site.baseurl }}{{ page.previous.url }}" >
上一篇:{{ page.previous.title }}
< / a >
< / span >
{% endif %}
2022-01-04 20:42:55 +08:00
< br / >
2024-07-02 16:09:28 +08:00
{% if page.next.url %}
< span class = "next" >
< a href = "{{ site.baseurl }}{{ page.next.url }}" >
下一篇:{{ page.next.title }}
< / a >
< / span >
{% endif %}
< / div >
2022-01-04 20:42:55 +08:00
<!-- [if !IE]> -->
2025-04-12 01:07:43 +08:00
< link rel = "stylesheet" href = "/assets/css/gitalk.css" >
< script src = "/assets/js/gitalk.min.js" > < / script >
2022-01-04 20:42:55 +08:00
< div id = "gitalk-container" > < / div >
< script >
2025-04-03 22:38:40 +08:00
var gitalk = new Gitalk({
clientID: (window.location.host != "mabbs.github.io")?'098934a2556425f19d6e':'36557aec4c3cb04f7ac6',
clientSecret: (window.location.host != "mabbs.github.io")?'0bd44eed8425e5437ce43c4ba9b2791fbc04581d':'ac32993299751cb5a9ba81cf2b171cca65879cdb',
repo: 'mabbs.github.io',
owner: 'Mabbs',
admin: ['Mabbs'],
id: '{{ page.id }}', // Ensure uniqueness and length less than 50
distractionFreeMode: false, // Facebook-like distraction free mode
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
})
2024-07-02 16:09:28 +08:00
gitalk.render('gitalk-container')
2022-01-04 20:42:55 +08:00
< / script >
2024-07-02 16:09:28 +08:00
<!-- <![endif] -->