Compare commits

..

No commits in common. "5925062d9de83c833c84898d7849a496f3d70505" and "a256a574e3c1a034c0f0d62a0fd4195a9067cee4" have entirely different histories.

16 changed files with 827 additions and 1917 deletions

View File

@ -74,7 +74,6 @@
"lastmod", "lastmod",
"lazyload", "lazyload",
"linuxapi", "linuxapi",
"longluo",
"loveness", "loveness",
"luoli", "luoli",
"luxon", "luxon",

View File

@ -1,5 +1,5 @@
import mdx from '@astrojs/mdx'; import mdx from '@astrojs/mdx';
import zeabur from '@zeabur/astro-adapter/serverless'; import node from '@astrojs/node';
import { uploader } from 'astro-uploader'; import { uploader } from 'astro-uploader';
import { defineConfig, envField } from 'astro/config'; import { defineConfig, envField } from 'astro/config';
import rehypeExternalLinks from 'rehype-external-links'; import rehypeExternalLinks from 'rehype-external-links';
@ -31,7 +31,6 @@ export default defineConfig({
// Artalk Comment // Artalk Comment
ARTALK_HOST: envField.string({ context: 'server', access: 'secret' }), ARTALK_HOST: envField.string({ context: 'server', access: 'secret' }),
}, },
validateSecrets: true,
}, },
}, },
integrations: [ integrations: [
@ -47,7 +46,9 @@ export default defineConfig({
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY as string, secretAccessKey: process.env.S3_SECRET_ACCESS_KEY as string,
}), }),
], ],
adapter: zeabur(), adapter: node({
mode: 'standalone',
}),
markdown: { markdown: {
gfm: true, gfm: true,
shikiConfig: { shikiConfig: {

View File

@ -186,7 +186,7 @@ const options: z.input<typeof Options> = {
server: 'https://comment.yufan.me', server: 'https://comment.yufan.me',
size: 10, size: 10,
avatar: { avatar: {
mirror: 'https://gravatar.webp.se/avatar', mirror: 'https://weavatar.com/avatar',
size: 120, size: 120,
}, },
}, },

2545
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -41,46 +41,41 @@
] ]
}, },
"dependencies": { "dependencies": {
"@astrojs/mdx": "^3.1.3", "@astrojs/mdx": "^3.1.2",
"@astrojs/node": "^8.3.2",
"@astrojs/rss": "^4.0.7", "@astrojs/rss": "^4.0.7",
"@zeabur/astro-adapter": "^1.0.6", "astro": "^4.11.5",
"astro": "^4.12.3", "drizzle-orm": "^0.31.3",
"drizzle-orm": "^0.32.1",
"fuse.js": "^7.0.0", "fuse.js": "^7.0.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"luxon": "^3.4.4", "luxon": "^3.4.4",
"marked": "^13.0.3", "marked": "^13.0.2",
"pg": "^8.12.0", "pg": "^8.12.0",
"qrcode-svg": "^1.1.0", "qrcode-svg": "^1.1.0",
"ultrahtml": "^1.5.3" "ultrahtml": "^1.5.3"
}, },
"devDependencies": { "devDependencies": {
"@astrojs/check": "^0.8.3", "@astrojs/check": "^0.8.0",
"@biomejs/biome": "^1.8.3", "@biomejs/biome": "^1.8.3",
"@napi-rs/canvas": "^0.1.53", "@napi-rs/canvas": "^0.1.53",
"@types/lodash": "^4.17.7", "@types/lodash": "^4.17.6",
"@types/luxon": "^3.4.2", "@types/luxon": "^3.4.2",
"@types/node": "^22.0.0", "@types/node": "^20.14.10",
"@types/pg": "^8.11.6", "@types/pg": "^8.11.6",
"@types/qrcode-svg": "^1.1.5", "@types/qrcode-svg": "^1.1.4",
"@types/unist": "^3.0.2", "@types/unist": "^3.0.2",
"aplayer": "^1.10.1", "aplayer": "^1.10.1",
"astro-uploader": "^1.1.3", "astro-uploader": "^1.1.3",
"bootstrap": "^5.3.3", "bootstrap": "^5.3.3",
"patch-package": "^8.0.0", "prettier": "^3.3.2",
"prettier": "^3.3.3", "prettier-plugin-astro": "^0.14.0",
"prettier-plugin-astro": "^0.14.1",
"prettier-plugin-astro-organize-imports": "^0.4.9", "prettier-plugin-astro-organize-imports": "^0.4.9",
"prettier-plugin-organize-imports": "^4.0.0", "prettier-plugin-organize-imports": "^4.0.0",
"rehype-external-links": "^3.0.0", "rehype-external-links": "^3.0.0",
"resize-sensor": "^0.0.6", "resize-sensor": "^0.0.6",
"rimraf": "^6.0.1", "rimraf": "^5.0.8",
"sharp": "^0.33.4", "sharp": "^0.33.4",
"typescript": "^5.5.4", "typescript": "^5.5.3",
"unist-util-select": "^5.1.0" "unist-util-select": "^5.1.0"
},
"packageManager": "npm@10.8.2",
"engines": {
"node": "22.5.1"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

4
renovate.json Normal file
View File

@ -0,0 +1,4 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"]
}

View File

@ -151,7 +151,7 @@ if (typeof comments !== 'undefined' && comments !== null) {
const email = event.target.value; const email = event.target.value;
if (email !== '' && email.includes('@')) { if (email !== '' && email.includes('@')) {
// Replace the avatar after typing the email. // Replace the avatar after typing the email.
actions.avatar({ email }).then(({ data, error }) => { actions.avatar.safe({ email }).then(({ data, error }) => {
if (error) { if (error) {
return handleActionError(error); return handleActionError(error);
} }
@ -167,7 +167,7 @@ if (typeof comments !== 'undefined' && comments !== null) {
// Loading more comments from server. // Loading more comments from server.
if (event.target === comments.querySelector('#comments-next-button')) { if (event.target === comments.querySelector('#comments-next-button')) {
const { size, offset, key } = event.target.dataset; const { size, offset, key } = event.target.dataset;
const { data, error } = await actions.comments({ offset: Number(offset), page_key: key }); const { data, error } = await actions.comments.safe({ offset: Number(offset), page_key: key });
if (error) { if (error) {
return handleActionError(error); return handleActionError(error);
} }
@ -223,7 +223,7 @@ if (typeof comments !== 'undefined' && comments !== null) {
} }
request.rid = request.rid === undefined ? 0 : Number(request.rid); request.rid = request.rid === undefined ? 0 : Number(request.rid);
const { data, error } = await actions.comment(request); const { data, error } = await actions.comment.safe(request);
if (error) { if (error) {
return handleActionError(error); return handleActionError(error);
@ -279,7 +279,7 @@ const likeButton = document.querySelector('button.post-like');
const increaseLikes = (count, permalink) => { const increaseLikes = (count, permalink) => {
count.textContent = Number.parseInt(count.textContent) + 1; count.textContent = Number.parseInt(count.textContent) + 1;
actions.like({ action: 'increase', key: permalink }).then(({ data, error }) => { actions.like.safe({ action: 'increase', key: permalink }).then(({ data, error }) => {
if (error) { if (error) {
return handleActionError(error); return handleActionError(error);
} }
@ -295,7 +295,7 @@ const decreaseLikes = (count, permalink) => {
return; return;
} }
count.textContent = Number.parseInt(count.textContent) - 1; count.textContent = Number.parseInt(count.textContent) - 1;
actions.like({ action: 'decrease', key: permalink, token }).then(({ data, error }) => { actions.like.safe({ action: 'decrease', key: permalink, token }).then(({ data, error }) => {
if (error) { if (error) {
return handleActionError(error); return handleActionError(error);
} }

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@ import options from '@/options';
import { ARTALK_HOST } from 'astro:env/server'; import { ARTALK_HOST } from 'astro:env/server';
import _ from 'lodash'; import _ from 'lodash';
import { marked } from 'marked'; import { marked } from 'marked';
import querystring from 'node:querystring'; import * as querystring from 'node:querystring';
import { ELEMENT_NODE, transform, walk } from 'ultrahtml'; import { ELEMENT_NODE, transform, walk } from 'ultrahtml';
import sanitize from 'ultrahtml/transformers/sanitize'; import sanitize from 'ultrahtml/transformers/sanitize';

View File

@ -61,8 +61,3 @@
homepage: https://blog.luoli.net homepage: https://blog.luoli.net
poster: /images/links/luoli.net.jpg poster: /images/links/luoli.net.jpg
favicon: https://blog.luoli.net/usr/themes/MUltraMoe/images/favicon.png favicon: https://blog.luoli.net/usr/themes/MUltraMoe/images/favicon.png
- website: LongLuo's Life Notes
description: 每一天都是奇迹
homepage: https://www.longluo.me
poster: /images/links/longluo.me.jpg
favicon: https://www.longluo.me/assets/logo/favicon-32x32.png

View File

@ -33,11 +33,3 @@ published: true
无论过了多久,无论白天与黑夜,博客是永恒的长亭,任你来来去去,悲欢离合,它只在那里。不悲,不喜。 无论过了多久,无论白天与黑夜,博客是永恒的长亭,任你来来去去,悲欢离合,它只在那里。不悲,不喜。
我说,我只想做个博客里面的守望者,我会陪你们一起,我们一起守望幸福,等待下一次遇见…… 我说,我只想做个博客里面的守望者,我会陪你们一起,我们一起守望幸福,等待下一次遇见……
## 博客信息
1. 博客名称:且听书吟
2. 博客简介:诗与梦想的远方
3. 博客网址https://yufan.me
4. 博客 LOGOhttps://yufan.me/logo.svg
5. 博客 Bannerhttps://github.com/syhily/yufan.me/blob/astro/docs/poster/github-poster.png

View File

@ -16,7 +16,7 @@ summary: 还未从忙碌中回神,八月就这么不知不觉地过去,周
——题记 ——题记
今年的八月,没有去年那般湿热,不知是不是因为毕业的日子早已离我远去,印象中的毕业季总是在热火朝天的季节里,热得烦躁不堪却也要坚持穿上累赘的学士服四处拍照。就和初到北京时住的地下室一样,湿漉漉的地板墙壁,湿漉漉的被单床铺,像是初面职场时内心焦急的大汗淋漓。 今年的八月,没有去年那般湿热,不知是不是因为毕业的日子早已离我远去,印象中的毕业季总是在热火朝天的季节里,热得烦躁不堪却也要坚持穿上累赘的学士服四处拍照。就和初到北京时住的地下室一样,湿漉漉的地板墙壁,湿漉漉的被单床铺,像是初面职场时内心焦急的大汗淋漓。
那时的我,面对着陌生的职场,从来没接触的知识和技能,内心焦躁不安并自我怀疑。那样烦躁的日子里,睡前唯一能做的事,就是强迫自己阅读几页《 Java 编程思想》,每多掌握一点知识的时候,心中的焦虑便会被抚平一些。后来习惯了在公司通宵加班,大多时候,其实都是在看书,看设计模式,看关系数据库,看 NoSQL ,看并发编程…… 那时的我,面对着陌生的职场,从来没接触的知识和技能,内心焦躁不安并自我怀疑。那样烦躁的日子里,睡前唯一能做的事,就是强迫自己阅读几页《 Java 编程思想》,每多掌握一点知识的时候,心中的焦虑便会被抚平一些。后来习惯了在公司通宵加班,大多时候,其实都是在看书,看设计模式,看关系数据库,看 NoSQL ,看并发编程……

View File

@ -270,9 +270,9 @@ API 的所有服务请求域名是相同的区别在于Request Path等。请
## 3.3 常见框架 ## 3.3 常见框架
1. Kong: [https://github.com/Mashape/kong](https://github.com/Mashape/kong) 1. Kong[https://github.com/Mashape/kong](https://github.com/Mashape/kong)
2. Zuul: [https://github.com/Netflix/zuul](https://github.com/Netflix/zuul) 2. Zuul[https://github.com/Netflix/zuul](https://github.com/Netflix/zuul)
3. ROP: [https://github.com/itstamen/rop](https://github.com/itstamen/rop) 3. ROP[https://github.com/itstamen/rop](https://github.com/itstamen/rop)
4. Resty: [https://github.com/Dreampie/Resty](https://github.com/Dreampie/Resty) 4. Resty: [https://github.com/Dreampie/Resty](https://github.com/Dreampie/Resty)
# 四、优劣 # 四、优劣

View File

@ -19,6 +19,8 @@ github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3k
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.17.0 h1:nTRVVdajgB8zCMZVsViyzhnMKPwYeroEERRC64JuLco=
golang.org/x/image v0.17.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ=
golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=