Compare commits

...

4 Commits

25 changed files with 391 additions and 377 deletions

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

View File

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 172 KiB

View File

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

View File

Before

Width:  |  Height:  |  Size: 410 KiB

After

Width:  |  Height:  |  Size: 410 KiB

View File

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 182 KiB

View File

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

View File

Before

Width:  |  Height:  |  Size: 353 KiB

After

Width:  |  Height:  |  Size: 353 KiB

View File

Before

Width:  |  Height:  |  Size: 449 KiB

After

Width:  |  Height:  |  Size: 449 KiB

View File

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View File

Before

Width:  |  Height:  |  Size: 277 KiB

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

View File

@ -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(''),

View File

@ -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

View File

@ -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)

View 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)
想得太多有点困了,昏昏沉沉,我正想睡去,“去洗个澡去,洗完再睡。”
我迷迷糊糊地进了淋浴间,脱了衣衫,刚打开花洒……
唔,杀千刀的言希,狗日的!
嗯——啊……

View File

@ -564,3 +564,5 @@
slug: financial slug: financial
- name: 期房 - name: 期房
slug: off-plan slug: off-plan
- name:
slug: sex

View File

@ -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)) {

View File

@ -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.