Compare commits
4 Commits
cf7707b209
...
b40c86a34e
Author | SHA1 | Date | |
---|---|---|---|
b40c86a34e | |||
89c7270b57 | |||
510ff9b63f | |||
303167d6c9 |
@ -21,7 +21,6 @@ export default defineConfig({
|
|||||||
experimental: {
|
experimental: {
|
||||||
contentLayer: true,
|
contentLayer: true,
|
||||||
contentIntellisense: true,
|
contentIntellisense: true,
|
||||||
actions: true,
|
|
||||||
env: {
|
env: {
|
||||||
schema: {
|
schema: {
|
||||||
// Postgres Database
|
// Postgres Database
|
||||||
|
635
package-lock.json
generated
10
package.json
@ -45,12 +45,12 @@
|
|||||||
"@astrojs/mdx": "^3.1.5",
|
"@astrojs/mdx": "^3.1.5",
|
||||||
"@astrojs/rss": "^4.0.7",
|
"@astrojs/rss": "^4.0.7",
|
||||||
"@zeabur/astro-adapter": "^1.0.6",
|
"@zeabur/astro-adapter": "^1.0.6",
|
||||||
"astro": "^4.14.6",
|
"astro": "^4.15.2",
|
||||||
"drizzle-orm": "^0.33.0",
|
"drizzle-orm": "^0.33.0",
|
||||||
"fuse.js": "^7.0.0",
|
"fuse.js": "^7.0.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"luxon": "^3.5.0",
|
"luxon": "^3.5.0",
|
||||||
"marked": "^14.1.0",
|
"marked": "^14.1.1",
|
||||||
"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"
|
||||||
@ -61,8 +61,8 @@
|
|||||||
"@napi-rs/canvas": "^0.1.54",
|
"@napi-rs/canvas": "^0.1.54",
|
||||||
"@types/lodash": "^4.17.7",
|
"@types/lodash": "^4.17.7",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^22.5.1",
|
"@types/node": "^22.5.3",
|
||||||
"@types/pg": "^8.11.7",
|
"@types/pg": "^8.11.8",
|
||||||
"@types/qrcode-svg": "^1.1.5",
|
"@types/qrcode-svg": "^1.1.5",
|
||||||
"@types/unist": "^3.0.3",
|
"@types/unist": "^3.0.3",
|
||||||
"aplayer": "^1.10.1",
|
"aplayer": "^1.10.1",
|
||||||
@ -79,7 +79,7 @@
|
|||||||
"typescript": "^5.5.4",
|
"typescript": "^5.5.4",
|
||||||
"unist-util-select": "^5.1.0"
|
"unist-util-select": "^5.1.0"
|
||||||
},
|
},
|
||||||
"packageManager": "npm@10.8.2",
|
"packageManager": "npm@10.8.3",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "22.7.0"
|
"node": "22.7.0"
|
||||||
}
|
}
|
||||||
|
BIN
public/images/2024/04/2024041405050511.jpg
Normal file
After Width: | Height: | Size: 294 KiB |
Before Width: | Height: | Size: 272 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 242 KiB |
Before Width: | Height: | Size: 410 KiB After Width: | Height: | Size: 410 KiB |
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 182 KiB |
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 186 KiB |
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 353 KiB |
Before Width: | Height: | Size: 449 KiB After Width: | Height: | Size: 449 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 277 KiB After Width: | Height: | Size: 277 KiB |
BIN
public/images/2024/09/2024090415411900.jpg
Normal file
After Width: | Height: | Size: 112 KiB |
BIN
public/images/2024/09/2024090415531900.jpg
Normal file
After Width: | Height: | Size: 323 KiB |
BIN
public/images/2024/09/2024090415593600.jpg
Normal file
After Width: | Height: | Size: 157 KiB |
BIN
public/images/2024/09/2024090416032000.jpg
Normal file
After Width: | Height: | Size: 229 KiB |
@ -64,6 +64,7 @@ const postsCollection = defineCollection({
|
|||||||
date: z.date(),
|
date: z.date(),
|
||||||
updated: z.date().optional(),
|
updated: z.date().optional(),
|
||||||
comments: z.boolean().optional().default(true),
|
comments: z.boolean().optional().default(true),
|
||||||
|
alias: z.array(z.string()).optional().default([]),
|
||||||
tags: z.array(z.string()).optional().default([]),
|
tags: z.array(z.string()).optional().default([]),
|
||||||
category: z.string(),
|
category: z.string(),
|
||||||
summary: z.string().optional().default(''),
|
summary: z.string().optional().default(''),
|
||||||
|
@ -98,7 +98,7 @@ iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么
|
|||||||
|
|
||||||
什么?越狱可以免费装,我去,买得起 iPad 和 Macbook,买不起一个软件么?(我才不会说那个时候我什么都不懂呢 QAQ!因此入手 iPad 一个月后,在上面光游戏就花了 700 多块钱了)
|
什么?越狱可以免费装,我去,买得起 iPad 和 Macbook,买不起一个软件么?(我才不会说那个时候我什么都不懂呢 QAQ!因此入手 iPad 一个月后,在上面光游戏就花了 700 多块钱了)
|
||||||
|
|
||||||
![iPhone 6S](/images/2024/06/2024070223283600.jpg)
|
![iPhone 6S](/images/2024/07/2024070223283600.jpg)
|
||||||
|
|
||||||
### iPhone 6S
|
### iPhone 6S
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么
|
|||||||
|
|
||||||
那为何现在又想买了,废话,有钱了买一台爽一爽不行啊。有钱,任性。
|
那为何现在又想买了,废话,有钱了买一台爽一爽不行啊。有钱,任性。
|
||||||
|
|
||||||
![Macbook Retina Pro 15 2014 Mid](/images/2024/06/2024070223342400.jpg)
|
![Macbook Retina Pro 15 2014 Mid](/images/2024/07/2024070223342400.jpg)
|
||||||
|
|
||||||
### Macbook Retina Pro 15 2014 Mid
|
### Macbook Retina Pro 15 2014 Mid
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么
|
|||||||
|
|
||||||
当然,我才不会告诉你,这期间公司开始决定给所有员工配备定制顶配的 Macbook Air,导致我无法装逼,于是才决定换电脑的。(害羞脸 MuA)
|
当然,我才不会告诉你,这期间公司开始决定给所有员工配备定制顶配的 Macbook Air,导致我无法装逼,于是才决定换电脑的。(害羞脸 MuA)
|
||||||
|
|
||||||
![iPod Shuffle](/images/2024/06/2024070223362600.jpg)
|
![iPod Shuffle](/images/2024/07/2024070223362600.jpg)
|
||||||
|
|
||||||
### iPod Shuffle & CX215
|
### iPod Shuffle & CX215
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么
|
|||||||
|
|
||||||
后面搬家到了十里堡,上班坐地铁只有两站路,这个时候正好北京地铁即将涨价,想想兜里没几个银子,(废话,你这么买,能剩多少钱?)于是又买了一个风火轮,每天听着歌,骑着风火轮上下班,想想,也是极好的。(当然,那画面太美,我可不敢看`>\\<`)
|
后面搬家到了十里堡,上班坐地铁只有两站路,这个时候正好北京地铁即将涨价,想想兜里没几个银子,(废话,你这么买,能剩多少钱?)于是又买了一个风火轮,每天听着歌,骑着风火轮上下班,想想,也是极好的。(当然,那画面太美,我可不敢看`>\\<`)
|
||||||
|
|
||||||
![Playstation 4 ice white](/images/2024/06/2024070223294700.jpg)
|
![Playstation 4 ice white](/images/2024/07/2024070223294700.jpg)
|
||||||
|
|
||||||
### Playstation 4 ice white
|
### Playstation 4 ice white
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么
|
|||||||
|
|
||||||
就这样,博主踏上了购买游戏的不归路,我似乎看到胸前的红领巾越来越鲜艳,姨夫的微笑越来越灿烂。每当我会想起当年的酣战,我都会高呼,索尼大法好!千古罪人刘睿哲!
|
就这样,博主踏上了购买游戏的不归路,我似乎看到胸前的红领巾越来越鲜艳,姨夫的微笑越来越灿烂。每当我会想起当年的酣战,我都会高呼,索尼大法好!千古罪人刘睿哲!
|
||||||
|
|
||||||
![Playstation Vita 2000 Value Pack](/images/2024/06/2024070223262900.jpg)
|
![Playstation Vita 2000 Value Pack](/images/2024/07/2024070223262900.jpg)
|
||||||
|
|
||||||
### Playstation Vita 2000 Value Pack
|
### Playstation Vita 2000 Value Pack
|
||||||
|
|
||||||
@ -160,13 +160,13 @@ iPad Air 2发售的那天晚上,我没有熬夜观看,也不知道有这么
|
|||||||
|
|
||||||
当然,因为有了 PSV 和 PS4 两台机器,自然地买了 PS+ 会员,每个月也就买一两个游戏,然后买了放在一边,玩玩会免的4399,幸福指数爆表啊!
|
当然,因为有了 PSV 和 PS4 两台机器,自然地买了 PS+ 会员,每个月也就买一两个游戏,然后买了放在一边,玩玩会免的4399,幸福指数爆表啊!
|
||||||
|
|
||||||
![Apple Watch](/images/2024/06/2024070223323000.jpg)
|
![Apple Watch](/images/2024/07/2024070223323000.jpg)
|
||||||
|
|
||||||
### Apple Watch
|
### Apple Watch
|
||||||
|
|
||||||
MLGB(买了个表)的时候应该是今年4月了,这个时候的博主已经是忠实果粉了,作为以 Geek 自居的我,自然地来了一发。然而并没有什么卵用,发现还不如我大学时买的 70 元山寨 Casio 看时间方便,现在不知道给我丢在哪里吃灰呢……
|
MLGB(买了个表)的时候应该是今年4月了,这个时候的博主已经是忠实果粉了,作为以 Geek 自居的我,自然地来了一发。然而并没有什么卵用,发现还不如我大学时买的 70 元山寨 Casio 看时间方便,现在不知道给我丢在哪里吃灰呢……
|
||||||
|
|
||||||
![New Macbook](/images/2024/06/2024070223233100.jpg)
|
![New Macbook](/images/2024/07/2024070223233100.jpg)
|
||||||
|
|
||||||
### New Macbook
|
### New Macbook
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ MLGB(买了个表)的时候应该是今年4月了,这个时候的博主已
|
|||||||
|
|
||||||
现在,它已经成为我的星巴克主力电脑、回家后的大号 iPad。晚上用它看 B 站的时候,那温度,还是蛮感人的。你脸上怎么热得流汗了?不,你看错了,那是我因为感动流下的泪水,才不是什么汗呢!
|
现在,它已经成为我的星巴克主力电脑、回家后的大号 iPad。晚上用它看 B 站的时候,那温度,还是蛮感人的。你脸上怎么热得流汗了?不,你看错了,那是我因为感动流下的泪水,才不是什么汗呢!
|
||||||
|
|
||||||
![FC660M](/images/2024/06/2024070223190300.jpg)
|
![FC660M](/images/2024/07/2024070223190300.jpg)
|
||||||
|
|
||||||
### FC660M
|
### FC660M
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ MLGB(买了个表)的时候应该是今年4月了,这个时候的博主已
|
|||||||
|
|
||||||
买的时候因为志海和停止生产,韩国原厂准备找 KBT 代工。处于这个变更的间隙我,在淘宝全网无货的情况下,只能加钱花了800多在某黑心商人那买到了最后一把红轴白帽黑底。(心痛ing.....)
|
买的时候因为志海和停止生产,韩国原厂准备找 KBT 代工。处于这个变更的间隙我,在淘宝全网无货的情况下,只能加钱花了800多在某黑心商人那买到了最后一把红轴白帽黑底。(心痛ing.....)
|
||||||
|
|
||||||
![TrackPad](/images/2024/06/2024070223215000.jpg)
|
![TrackPad](/images/2024/07/2024070223215000.jpg)
|
||||||
|
|
||||||
### TrackPad & mStand & Thunderbolt to RJ45
|
### TrackPad & mStand & Thunderbolt to RJ45
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ tags:
|
|||||||
- 面试
|
- 面试
|
||||||
category: 编程
|
category: 编程
|
||||||
summary: 最近经济大环境依旧没能从疫情中走出来,身边有不少小伙伴被裁员或者是公司倒闭失业。好友群里讨论最多的话题就是面试,自然少不了讨论面试题。
|
summary: 最近经济大环境依旧没能从疫情中走出来,身边有不少小伙伴被裁员或者是公司倒闭失业。好友群里讨论最多的话题就是面试,自然少不了讨论面试题。
|
||||||
cover: /images/2024/04/2024041405050511.png
|
cover: /images/2024/04/2024041405050511.jpg
|
||||||
---
|
---
|
||||||
|
|
||||||
![羨望](/images/2024/04/2024041513050511.jpg)
|
![羨望](/images/2024/04/2024041513050511.jpg)
|
||||||
|
73
src/content/posts/2024/2024-09-04-third-bloom-in-sex.mdx
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
title: 梅开三度 - 莲动妙处
|
||||||
|
slug: third-bloom-in-sex
|
||||||
|
alias:
|
||||||
|
- pa-pa-pa
|
||||||
|
- pia-pia-pia
|
||||||
|
- papapa
|
||||||
|
date: 2024-09-04 15:42:12
|
||||||
|
updated: 2024-09-04 15:50:12
|
||||||
|
tags:
|
||||||
|
- 性
|
||||||
|
category: 文章
|
||||||
|
summary: 在古书中,“金莲”即指女人的私密处,幽谷若兰,暗香浮动,有小泉也。莲动,妙处之所在。
|
||||||
|
cover: /images/2024/09/2024090415411900.jpg
|
||||||
|
---
|
||||||
|
|
||||||
|
![莲花摄影 - 小欣欣](/images/2024/09/2024090415531900.jpg)
|
||||||
|
|
||||||
|
>在古书中,“金莲”即指女人的私密处,幽谷若兰,暗香浮动,有小泉也。
|
||||||
|
>
|
||||||
|
>莲动,妙处之所在。
|
||||||
|
|
||||||
|
和言希来绍兴游玩,住在听雨轩客栈,刚刚落脚,想小息一下。
|
||||||
|
|
||||||
|
意外地,听见隔壁声响不断,“嗯嗯啊啊”声音媚而滴水……
|
||||||
|
|
||||||
|
雕花大木床咯吱作响,来回律动。女人家支支吾吾,徐徐地哼哼,像是唱得风情小曲。
|
||||||
|
|
||||||
|
我斜斜地靠在床头,侧耳探听。
|
||||||
|
|
||||||
|
隔壁房间里的动静清晰了许多,有很重的脚步声搁在地板上,女人家用浓重的方言喊着“作死,作死——嗯——不要命的!”
|
||||||
|
|
||||||
|
接着,声音更近了,仿佛只隔了道墙。再仔细听,女人家好像羞答答地说了声“要”,又好像颤微微地嘟了声“不要”,混着些许别的声音便再也听不真切了。
|
||||||
|
|
||||||
|
深进浅出,迂回曲折,极近折磨。
|
||||||
|
|
||||||
|
女人家的呻吟绵软无力,愈发短促,到最后呜咽了数声,捶打了几下墙壁,便了无动静了。
|
||||||
|
|
||||||
|
此刻,万籁俱寂,无声胜有声。
|
||||||
|
|
||||||
|
此刻,金莲微合,有细腻透明混着莹白的藕汁丝丝流出,透着微腥微甜的气味,一室莲香。
|
||||||
|
|
||||||
|
红莲美人,不胜微风的娇羞,更那堪云雨摧残?
|
||||||
|
|
||||||
|
此刻,梨花院落溶溶月,柳絮池塘淡淡风……
|
||||||
|
|
||||||
|
![莲花摄影 - 默默的过客](/images/2024/09/2024090415593600.jpg)
|
||||||
|
|
||||||
|
想起食色,人之性也。可古人偏说“存天理,灭人欲”的屁话,叫人耻笑。
|
||||||
|
|
||||||
|
可就是这个古人朱熹,自个儿的裤腰带都栓不紧哩!
|
||||||
|
|
||||||
|
一日,朱熹偶过遗孀儿媳的房间,见其慵懒春睡,衣衫散漫,香肌赛雪,顿时气血上冲,怒龙喷火。管他什么伦理道德,先解欲救命要紧。大步入闺房,毁其衣裙,直捣朝戈,力拔山兮气盖世!
|
||||||
|
|
||||||
|
呜呼,真真要了奴家的小命!儿媳泪眼朦胧,无语凝咽,却反抗不得,只得由他上下其手,舔弄允吸。
|
||||||
|
|
||||||
|
快哉,快哉!朱老头子手揉软雪,齿磨绛红,欲仙欲死,不能罢矣。
|
||||||
|
|
||||||
|
轻拢慢捻抹复挑,初为挑逗后撕咬,间关莺语花底滑,幽咽泉流身下难,银瓶乍破水浆迸,铁骑突出刀枪鸣!
|
||||||
|
|
||||||
|
公公,慢着点……奴家的莲儿,疼……
|
||||||
|
|
||||||
|
朱熹那老儿,且是畅快淋漓后,写下了这么一句“风月无边,庭草交翠”。赞赏此处风景绝佳,引人驻足。
|
||||||
|
|
||||||
|
![莲花摄影 - 紫衣](/images/2024/09/2024090416032000.jpg)
|
||||||
|
|
||||||
|
想得太多有点困了,昏昏沉沉,我正想睡去,“去洗个澡去,洗完再睡。”
|
||||||
|
|
||||||
|
我迷迷糊糊地进了淋浴间,脱了衣衫,刚打开花洒……
|
||||||
|
|
||||||
|
唔,杀千刀的言希,狗日的!
|
||||||
|
|
||||||
|
嗯——啊……
|
@ -564,3 +564,5 @@
|
|||||||
slug: financial
|
slug: financial
|
||||||
- name: 期房
|
- name: 期房
|
||||||
slug: off-plan
|
slug: off-plan
|
||||||
|
- name: 性
|
||||||
|
slug: sex
|
||||||
|
@ -94,13 +94,21 @@ if (!options.isProd() && missingCovers.length > 0) {
|
|||||||
console.warn(missingCovers);
|
console.warn(missingCovers);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate the posts and pages' slug. They should be unique globally.
|
// Validate the posts and pages' slug and alias. They should be unique globally.
|
||||||
const postsSlugs = new Set<string>();
|
const postsSlugs = new Set<string>();
|
||||||
for (const post of posts) {
|
for (const post of posts) {
|
||||||
if (postsSlugs.has(post.slug)) {
|
if (postsSlugs.has(post.slug)) {
|
||||||
throw new Error(`Duplicate post slug: ${post.slug}`);
|
throw new Error(`Duplicate post slug: ${post.slug}`);
|
||||||
}
|
}
|
||||||
postsSlugs.add(post.slug);
|
postsSlugs.add(post.slug);
|
||||||
|
|
||||||
|
for (const alias of post.alias) {
|
||||||
|
if (postsSlugs.has(alias)) {
|
||||||
|
throw new Error(`Duplicate alias ${alias} in post ${post.slug}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
postsSlugs.add(alias);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (const page of pages) {
|
for (const page of pages) {
|
||||||
if (postsSlugs.has(page.slug)) {
|
if (postsSlugs.has(page.slug)) {
|
||||||
|
@ -2,7 +2,21 @@ import { posts } from '@/helpers/schema';
|
|||||||
import { urlJoin } from '@/helpers/tools';
|
import { urlJoin } from '@/helpers/tools';
|
||||||
import { defineMiddleware } from 'astro:middleware';
|
import { defineMiddleware } from 'astro:middleware';
|
||||||
|
|
||||||
const mappings = new Map<string, string>(posts.map((post) => [urlJoin('/', post.slug), post.permalink]));
|
const mappings = new Map<string, string>();
|
||||||
|
|
||||||
|
const rewrites = posts.map((post) => ({
|
||||||
|
sources: [
|
||||||
|
urlJoin('/', post.slug),
|
||||||
|
...post.alias.flatMap((alias) => [urlJoin('/', alias), urlJoin('/posts/', alias)]),
|
||||||
|
],
|
||||||
|
target: post.permalink,
|
||||||
|
}));
|
||||||
|
|
||||||
|
for (const rewrite of rewrites) {
|
||||||
|
for (const source of rewrite.sources) {
|
||||||
|
mappings.set(source, rewrite.target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const onRequest = defineMiddleware(({ request: { method }, url: { pathname }, redirect }, next) => {
|
export const onRequest = defineMiddleware(({ request: { method }, url: { pathname }, redirect }, next) => {
|
||||||
// This is used for redirect my old blog posts to a new mapping.
|
// This is used for redirect my old blog posts to a new mapping.
|
||||||
|