普通视图

Received before yesterday只是玩玩

261、芒种

2025年6月5日 09:49

母亲种的西红柿

今日芒种,仲夏始忙。宜"晨起迎阳,午避暑",食"三瓜三豆"(苦瓜、丝瓜、冬瓜;绿豆、赤豆、黑豆)清湿热,饮酸梅汤生津敛汗。衣选苎麻透气,重点护"心俞""膻中"防暑气侵心。运动宜在酉时(17-19点)练"呵"字诀泄心火,晨昏散步闻稻花香。此时"螳螂生,鵙始鸣",养生当效法"忙而不乱"——收麦插秧般张弛有度,心静自然凉。

文化人的游记

2025年6月4日 12:41

null

林老师是搞文字工作的,也就是昨天我那篇游记中同我在溜溜城门口高歌的眼镜帅哥。平日里和我们相处都是骚、浪、贱三字的代名词。但是从人潮里褪去后确是一个感情细腻敏感的小伙子。

下山回来后我们便怂恿他写一篇小作文,本来他还傲娇着不愿写,不过坳不过大家起哄,今天上午摸鱼着写了此文。

觉得写的真的非常好,便转载到我的博客,希望大家喜欢。

0:00
/0:13

作者:林老师 昵称:向露冷风。

我在浪漫的康定,把一首又一首浪漫的歌谣唱得支离破碎。

街灯在湿漉漉的玻璃上晕开,模糊成一片流动的暖黄。

那黄光里,似乎还摇曳着方才溜溜城台阶上未尽的喧嚣与歌声。

夜中的溜溜城,萨克斯的乐声便在这片暖色里流淌,铜管映着溜溜河的奔腾泛着温润的光泽。

吹奏者是个头发凌乱的中年汉子,似若雅典城里诵讲史诗的吟游诗人,闭着眼,嘴唇贴着吹口,指头在按键上起伏跳跃,乐音便自那铜管中汩汩涌出,缠绵又悠长,仿佛将整个高原的辽远与寂寥都含在了唇齿之间。

乐声拂过我的耳际,又飘向更远处,在暮色里织成一张无形的网,笼住了台阶上散坐的人们。

我坐在溜溜城大门的石阶上,身下石阶的凉意透过衣裤渗入肌肤。

眼前人影晃动,如溜溜河水流淌不息。

有背着行囊的旅人步履匆匆,眼神里装着远方;有穿着艳丽藏袍的各地姑娘走过,银饰叮当,裙裾旋起一阵风;还有男人牵着女人的手,慢悠悠踱着步子,影子被斜灯拉得很长很长。

台阶之上,众生百态,各自背负着各自的故事,匆匆交汇,又匆匆离散,仿佛高原上倏忽聚散的流云。我坐在这台阶,恍若人世一个小小的渡口。

伙伴们终于从四面八方汇拢过来,脸上都带着风尘仆仆的笑意。

我率先起头,那首熟稔的调子便从唇边溜了出来:“跑马溜溜的山上……”声音起初还有些拘谨,如同试探着伸出的触角。

很快,第二声、第三声便汇入进来,如同涓涓细流汇成了奔涌的河。

我们彼此相视,眼神里跳跃着一种心照不宣的火焰,声音便愈发高亢起来,毫无章法地冲撞着暮色,撞向溜溜城古老的飞檐斗拱。

那歌声,莽撞、粗粝,却又带着一股莫名的、近乎悲怆的欢喜。

我们这群滴酒未沾的人,竟醉得东倒西歪,脸颊滚烫,胸腔里仿佛有滚烫的酥油茶在翻腾。

这醉意,并非源于杯中之物,而是从心底深处蒸腾而起,在高原微凉的晚风里发酵、弥漫,将灵魂都托举起来,飘飘然不知归处。伙伴们终于从四面八方汇拢过来,脸上都带着风尘仆仆的笑意。

坐进出租车回住处时,那莫名的醉意仍未消散,反而在狭小的车厢里愈发浓烈起来。

我们像一群挣脱了缰绳的马驹,将一首又一首的歌谣,不管不顾地抛向窗外飞逝的夜色。

从古老民谣到流行小调,从慷慨激昂到低回婉转,歌声在车厢里横冲直撞,几乎要掀翻车顶。

司机师傅笑着,也不时应和几句,任这些樊笼中呆久了的人在另一个樊笼里沸腾。车窗外,康定城的灯火渐次入目,又渐次被抛在身后,成为记忆里模糊的光斑。歌声穿透车窗,在高原清冽的夜气里飘散开去,仿佛一群不知疲倦的夜鸟,扑棱棱飞向墨蓝的夜空深处。

那一夜,我们唱着支离破碎的歌谣,送给了支离破碎的自己。

翌日清晨,我们便向着白海子进发了。

山路崎岖,如同大地裸露的筋骨,蜿蜒着伸向云端。

起初伙伴们尚能谈笑,脚步也轻快。

渐渐地,空气变得稀薄而清冽,每一次呼吸都仿佛在肺腑间刮起一阵小小的风暴。说话成了奢侈,只听见粗重的喘息声和登山杖叩击石块的笃笃声,单调而固执地敲打着寂静的山谷。

那日天气不错,云雾随风聚散,远处雪山时隐时现,由海子始出,逐渐奔腾而下的河流与日光冲撞出一缕彩虹。

越往上攀,同伴步履越是滞重,双腿如同灌满了铅水。

偶尔抬头,前方是同伴沉默的背影,更远处,是雪山肃穆的轮廓,在稀薄的空气中泛着冷冽的蓝光。

山风呼啸着掠过耳畔,带着刺骨的寒意,刮得脸颊生疼。

我们埋头跋涉,像一群沉默的朝圣者,用脚步丈量着通往天际的距离。

终于,当最后一道悬崖被踩在脚下时,一片巨大的、凝固的蓝,猝不及防地撞入眼帘。

白海子静卧在群山环抱之中,宛如天神遗落的一块寒冰,又似大地睁开的一只冰蓝眼眸。

湖水澄澈得令人心悸,倒映着四周皑皑雪峰和头顶无垠的碧空。

那是一种摄人心魄的蓝,深邃、纯粹、凛冽,仿佛吸纳了世间所有的寂静与永恒。我站在湖边,渺小如尘埃,方才攀登的艰辛与喘息,瞬间被这无边的澄澈与宁静吞噬、抚平。

风掠过湖面,漾起细碎的涟漪,阳光碎金般跳跃其上,又无声地沉入那亘古的蓝里。

雪山巨大的倒影在湖水中微微晃动,仿佛另一个沉静的世界。

那一刻,时间仿佛凝固了,人世的喧嚣与昨夜的歌声,都成了遥远模糊的背景音。

山上我们无耻地蹭着另一行人西瓜、螺蛳粉、泡面、卤肉,欢快地谈聊,他们与我一样自成都而来,后来又在成都的群里相遇。

但山神似不喜这般的喧闹,云雾弥漫山间,无奈只有下山了。

下山的脚步轻快了许多。

背包里似乎还盛着白海子的一捧清寒,沉甸甸地贴在背上,随着步伐微微晃动。

山风依旧在耳畔呼啸,却已失却了攀登时的凌厉,变得柔和起来。

我回头望去,白海子那抹幽蓝已隐入层峦之后,只留下雪峰之巅一点永恒的洁白,在碧空下闪耀。

回到喧嚣的人境,那高原的风,雪山的影,湖水的蓝,连同溜溜城台阶上无端而起的醉歌,都沉淀为心底深处隐秘的矿藏。

当市声如潮水般退去,寂静降临,耳畔便会幽幽响起那萨克斯的呜咽,它不再仅仅是一段铜管的震颤,而仿佛化作了山巅永恒吹拂的、清冽而自由的风——它掠过经幡,拂过玛尼堆,最终悄然潜入血脉,成为灵魂深处一声无人听见的、悠长的回响。

端午再游康定+看高山海子

2025年6月3日 11:08

null

没想到这个月又来了一次康定,不过这次比上次还要玩的高兴。

不过中途发生了个意外,我们有个新手队员不听劝告在上山时走了野线,差点迷路在山里。

我们在山上等了一两个小时,眼看着好像要下雨了,时间已经下午三点了,时间越晚山上的天气就会越恶劣。所以我们打算先下撤到下面的草甸去她分线的地方等待,同时在下山途中和所有能见到的人询问,并帮忙散播这个信息,好在下去后很快找到有信号的地方,而且运气很好的是她也有信号,所以第一时间联系上了她。

听她说她马上登顶了,但是她说没看到其他人,我们就知道她估计完全走错了方向,因为我们在山顶上的海子边上碰到了十几号重装徒步的人,上面闹哄哄的,不可能没人,所以立刻让他马上原路下撤,而我们则是找了两块岩石中间,拿出急救毯挡住风口生活等待,最终4点左右看到她的身影时才松了一口气。

这里告诫所有出去户外徒步的朋友,一定要跟随大部队行动,上山前掌握好基础徒步知识,如:如何看户外轨迹地图、基础求生避险知识等等。

因为端午都三天假期,所已这次的规划是两天一夜的行程,留一天假期在家里修养恢复。

因为最近四川的天气都不太好,所以我提前一个多星期就开始关注想去的景点天气,但是通过手机上自带天气软件给的天气数据,这类软件都是通过当地的气象站来给出天气数据,而我们去的山上基本上都没有气象站,而且高山地区天气变化无常,所以需要通过专业的天气软件观测云层、风向等数据进行评估。

这次用的Moteoblue和Windy这两个软件进行观测。

💡
Windy中的预测模型可以选择多个模型推测的数据进行对,其中也有Moteoblue的数据,但是无法展示Moteoblue的云层信息。
Windy上发文当天康定老榆林村的天气情况

不过可能是他们的推测模型不太一样,Windy的ECMW模型刚开始的时候推测这几个地方没雨,但是临近出发的日子后却又提示有雨。而Moteoblue则相对稳定,一直显示都是31号和1号白天至少是阴天,没有下雨,而且圈子里驴友们都更认可MoteoBlue的数据推断。

所以我们这次的目标就定在了新榆林村的白海子和前面的野马海子。

最后出发时确定的人员有8人,4男4女,其中两位车主,一辆奥迪轿车,一辆小排量suv。其中有老朋友林老师、小罗,本来上次泸州的刘姐也想去的,但是他有事耽搁了。

行程安排如下。

  1. 31号早上7点出发康定,在天全休息吃饭
  2. 31号下午2点继续出发到第一站野马海子,这个只有200左右的爬升,权当作适应拉练。
  3. 31号下午5点左右下山,驱车康定新城吃饭,因为上次老城吃过找不到停车位的亏,所以打车去老城逛街。
  4. 逛完去民宿,休息。
  5. 1号早上6点起床,7点出发白海子,民宿出门几百米就是出发点,今天强度比较高7公里左右有1300的爬升。
  6. 1号下午2点左右登顶,然后下撤,5点左右到山脚
  7. 在康定新城吃个饭,然后回程,预计10点左右到家

费用明细:

  • 车费:我们坐的奥迪,最终均摊下来得车费170元左右一人,那个suv应该会更低。
  • 住宿费:119标间
  • 两餐正餐:(351+279)/8=78.75
  • 我和霜的总费用:170+170+119+78.75=537.75

行程开始。

出发

历时5个小时,终于到康定了

马不停蹄的赶往野马海子

去往野马海子的哑口有个小海子

刚到起点便下起了毛毛细雨

1. 和林老师 2. 大家伙合照

河流和边上的乱石滩上长了很多像荷叶一样的植物

能看到雪山了,翻过去就是海子

下着小雨的野马海子别有一种特殊的韵味。

拍下了人生照片,可惜当时嫌雨大,我自己没拍单人照片。(后悔!)

营地里和其他徒步客一起休息,我老婆看到这张会杀了我吧??

海子和海子上的雪山

拍点团体照

快到出发点了

1. 林老师 2. 小罗

到出发点时发现天气晴了一点,雾气稍散

到康定城,准备找吃的。

牦牛火锅(忘记拍了,回头找其他人要了再补一张图片)

溜溜河的水流比上次来的时候急了很多。

当了一回卖唱歌手😄,倾听地址:

3.07 复制打开抖音,看看【跨过远山而来的风的作品】在康定当了一回卖唱歌手 😄 # 山丘 https://v.douyin.com/CmP946UHSjI/ OXM:/ 05/11 j@c.an

秀个恩爱

林老师有点EMO,所以陪他在康定城门口放肆高歌。

0:00
/0:13

之后便去了民宿,因为玩的太嗨了,忘记拍照了。

第二天7点出发白海子

开始进入树林

杜鹃花开的很漂亮

拐过一个路口霍然开朗,云层也渐渐散去,几座不知名雪山出现在视野里,出太阳拉!!

峡谷里的雾被风渐渐吹走

爬过一个绝望坡,合个影。

山谷全景

太阳通过树枝,让这里像是时空隧道​

喝个水

到达河谷路段

又一个绝望坡

能看近距离看到雪山了

这里上去就是一个大草甸

高山草甸,这里是有虫草的窝。

远处的雪山

爬爬爬,没完没了的坡,爬升比勒多曼因可多的多。

路边的小黄花

让花和雪山和个影

翻过这个坡就到了

最后时刻

0:00
/0:15

白海子近景

运气真的很好,一直都有阳光。

人生照片,我怎么这么帅!

哈哈,出发前在抖音上看到的玩法,我也试试。

对了,我们还碰到了一个十几个人的重装队伍,带了好多好吃的,很热情的叫上我们蹭吃蹭喝。

体验了一次在山上乞讨,人家还给你备了碗筷,哈哈哈。

0:00
/0:13

虽然一直在吃喝拍照,但是一直没忘记迷路的那个队友,我们等到三点半时山风把大雾吹了过来,天气也越来越差,我们只能先下撤到下面草甸在联系她。

运气不错的联系上了她,我让她立即原路下撤,我们在草甸这里等她。山上降温,起大雾,还若有若无的有些雨珠,也不知道她需要多久过来,所以只能先找个避风的地方生火取暖,保存体温。

等了一个多小时,终于来了,这才算是松了一口气。

这个姐姐第一徒步,冲锋衣不透气,里面的衣服也速干的,在山上要迷路了,真的是非常危险的,之后我们下山了,才发现四川的户外群里她算是出名了,各个群都在问有没有看到一个红衣服小姐姐....。

最后急速下撤,终于在下午五六点左右下撤到民宿。

抛去队友迷路这个事,这个旅程还是非常开心的,最后在起点拍个合照。

给文章引入联邦宇宙嘟文互动记录

2025年5月24日 17:42

Photo by Pankaj Patel / Unsplash

去年还是前年就在思考如何在 Ghost 中集成 Activitypub 的互动,还找了一个国内博客大佬的实现 ActivityPub 协议的简单实现 - Lawrence Li ,不过这位大佬的方案是完全自己实现协议部分,对我来说有点太复杂了。

后来Ghost官方也发布了一个Ghost和Activitypub的继承方案,不过我看了下项目的Docker-compose文件,感觉太臃肿了(毕竟是商业化产品,性能各方面都要考虑到)。

而且开发一年多了,现在也只在官方付费服务里Beta,所以现在兴致缺缺。

因为最近用Cloudflare Worker实现了很多有意思的玩意,

所已,今天忽然灵光一闪,想到了一个非常有意思的点子,通过和AI的几轮互动,感觉应该能完整实现大佬博客里的那种效果。

其实原理无非就是利用Cloudflare Worker和KV功能,对文章ID和嘟文ID进行储存,在页面展示时再去请求数据进行展示,整个逻辑大概如下:

文章和嘟文同步

  1. Worker定时请求Ghost博客中最新一篇的数据(我这边是用Ghost的唯一文章ID做Key,你的博客系统没有API的可以请求RSS,但是ID必须是唯一的,可以自己截取slug出来应该也是可行的)。
  2. 拿到Key后在KV中进行查找,如果录入过就跳过。
  3. 没录入就拿文章的数据根据长毛象或GTS的API要求组装嘟文进行发布。
  4. 获取到嘟文唯一ID后和文章ID一起存入KV。

嘟文数据获取

  1. 博客文章详情页面加载完后通过文章ID请求Worker。
  2. Worker拿到ID去KV中查找嘟文ID。
  3. 找到话通过嘟文ID去长毛象或者GTS获取嘟文互动数据。
  4. 进行展示。
💡
经蜗牛大佬提醒,根据嘟文的原始可访问性做了控制。
1. 只显示public评论。
2. 不显示敏感(sensitive )内容。
3. 不显示locked用户点赞。

实践

进入Cloudflare Worker直接新建一个Worker,模板选Hello World,然后下面代码覆盖原有代码,我这边Ghost获取文章的部分你们用AI改成获取RSS,并截取文章slug作为文章ID。

// 配置常量
const GTS_INSTANCE = "https://social.gts.com";
const GTS_TOKEN = "ZTU5YTZLZMQTNWRJFSAFAXG3NDQ3MWQZOWRK";
const CACHE_TTL = 600; // 互动数据缓存时间(秒)
const BLOG_URL = "https://blog.com"; // Ghost博客地址
const BLOG_API_KEY = "78eb22fbf6260dcc3a1de7cf82"; // Ghost Admin API Key

// 在 Worker 代码开头添加 CORS 处理函数
const handleCORS = (response, origin) => {
  const headers = new Headers(response.headers);
  headers.set('Access-Control-Allow-Origin', origin || '*');
  headers.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
  headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
  return new Response(response.body, {
    status: response.status,
    headers
  });
};

export default {
  async fetch(request, env) {
    // 处理预检请求 (OPTIONS)
    if (request.method === 'OPTIONS') {
      return handleCORS(new Response(null), request.headers.get('Origin'));
    }

    const url = new URL(request.url);
    const path = url.pathname;

    // 处理定时触发的自动发布
    if (path === '/api/sync') {
      return handleAutoPublish(env);
    }

    // 提供互动数据API
    if (path === '/api/interactions' && request.method === 'GET') {
      return getInteractions(url.searchParams, env);
    }

    return new Response('Not Found', { status: 404 });
  },

  // 添加定时触发器配置
  async scheduled(event, env, ctx) {
    ctx.waitUntil(handleAutoPublish(env));
  }
};

// 自动发布最新文章
async function handleAutoPublish(env) {
  try {
    // 从Ghost获取最新文章
    const postsResp = await fetch(`${BLOG_URL}/ghost/api/content/posts/?limit=1&order=published_at%20desc&key=${BLOG_API_KEY}`, {
      headers: {
        'Accept-Version': 'v5.0',
        'Content-Type': 'application/json'
      }
    });

    if (!postsResp.ok) {
      throw new Error('Failed to fetch posts from Ghost');
    }

    const postsData = await postsResp.json();
    const latestPost = postsData.posts[0];

    if (!latestPost) {
      return new Response('No posts found', { status: 200 });
    }

    // 检查是否已经发布过
    const existingMapping = await env.BLOG_TOOT_MAPPING.get(`post:${latestPost.id}`);
    if (existingMapping) {
      return new Response('Post already published', { status: 200 });
    }

    // 发布到GoToSocial
    const tootContent = `${latestPost.title}\n${BLOG_URL+'/'+latestPost.slug}\n\nfrom 1900's Blog.(auto sync)\n\n#博客`;
    
    const tootResp = await fetch(`${GTS_INSTANCE}/api/v1/statuses`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${GTS_TOKEN}`,
        'Content-Type': 'application/json',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
      },
      body: JSON.stringify({
        status: tootContent,
        visibility: "public"
      })
    });

    const tootData = await tootResp.json();

    // 存储映射关系到KV
    await env.BLOG_TOOT_MAPPING.put(
      `post:${latestPost.id}`,
      JSON.stringify({
        toot_id: tootData.id,
        toot_uri: tootData.uri,
        created_at: Date.now()
      })
    );

    return new Response('Auto publish success', { status: 200 });
  } catch (err) {
    return new Response(err.message, { status: 500 });
  }
}

async function getInteractions(params, env) {
  const postId = params.get('post_id');
  if (!postId) return new Response('Missing post_id', { status: 400 });

  // 从KV获取Toot信息
  const tootData = await env.BLOG_TOOT_MAPPING.get(`post:${postId}`);
  if (!tootData) return new Response('Mapping not found', { status: 404 });

  const { toot_id } = JSON.parse(tootData);

  // 并发获取回复和点赞数据
  const [contextResp, favouritesResp] = await Promise.all([
    fetch(`${GTS_INSTANCE}/api/v1/statuses/${toot_id}/context`, {
      headers: { 
        'Authorization': `Bearer ${GTS_TOKEN}`,
        'CF-Cache-Tag': `context_${toot_id}`,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
      },
      cf: { cacheTtl: CACHE_TTL }
    }),
    fetch(`${GTS_INSTANCE}/api/v1/statuses/${toot_id}/favourited_by`, {
      headers: { 
        'Authorization': `Bearer ${GTS_TOKEN}`,
        'CF-Cache-Tag': `favs_${toot_id}`,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
      },
      cf: { cacheTtl: CACHE_TTL }
    })
  ]);

  if (!contextResp.ok || !favouritesResp.ok) {
    return new Response('Failed to fetch interactions', { status: 502 });
  }

  // 处理数据
  const [contextData, favouritesData] = await Promise.all([
    contextResp.json(),
    favouritesResp.json()
  ]);

  // 格式化响应
  const formatted = {
    post_id: postId,
    toot_id: toot_id,
    replies: contextData.descendants.map(item => ({
      id: item.id,
      author: {
        name: item.account.display_name,
        avatar: item.account.avatar
      },
      content: item.content,
      created_at: item.created_at
    })),
    favourites: favouritesData.map(user => ({
      id: user.id,
      name: user.display_name,
      avatar: user.avatar,
      username: user.acct
    })),
    stats: {
      replies_count: contextData.descendants.length,
      favourites_count: favouritesData.length
    }
  };

  return new Response(JSON.stringify(formatted), {
    headers: { 
      'Content-Type': 'application/json',
      'Access-Control-Allow-Origin': '*' 
    }
  });
}

Worker定时执行

进入Worker的设置页面,绑定KV命名空间和设置Cron执行间隔。

这里KV空间需要提前建好,路径为 储存和数据库 > KV > 创建 > 录入名称 BLOG_TOOT_MAPPING ,然后再去设置页面绑定。

前端渲染

有了API提供数据,前端只需要在页面加载时获取数据进行渲染即可,我这里做了简单的展示,带红心的头像是点赞用户,没带红心的是用户评论,鼠标悬浮在头像上即可展示。

目前暂时还没想好如何更好的实现,之后有想法了再进行完善。

我这边相关代码剥离到了一个单独的js文件里,原理是一样的,你也可以直接写在页面上。具体代码可以用AI帮你生成一个就行。

import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
import 'tippy.js/themes/light.css';

// 配置常量
const API_ENDPOINT = 'https://your.workers.dev/api/interactions';

// 主入口函数
export default async function initActivityPubInteractions() {
    try {
        const container = document.querySelector('#activitypub');
        if (!container) {
            console.error('未找到#activitypub元素');
            return;
        }

        const postId = container.dataset.postid;
        if (!postId) {
            console.error('缺少data-postid属性');
            return;
        }

        const data = await fetchInteractions(postId);
        renderAllInteractions(data, container);

        // 如果有互动数据则显示容器
        if (data.stats.replies_count > 0 || data.stats.favourites_count > 0) {
            container.style.display = 'block';
        }
    } catch (error) {
        console.error('加载互动数据失败:', error);
    }
}

// 获取互动数据
async function fetchInteractions(postId) {
    const response = await fetch(`${API_ENDPOINT}?post_id=${postId}`);
    if (!response.ok) throw new Error('API请求失败');
    return await response.json();
}
// 渲染所有互动(混合点赞和评论)
function renderAllInteractions(data, container) {
    const avatarList = container.querySelector('.discussion-avatar-list');
    if (!avatarList) return;

    avatarList.innerHTML = '';

    // 合并点赞和评论数据
    const allInteractions = [...data.favourites.map((user) => ({ ...user, type: 'like' })), ...data.replies.map((user) => ({ ...user, type: 'reply' }))];

    // 按时间排序(最新的在前)
    allInteractions.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));

    allInteractions.forEach((user) => {
        const li = document.createElement('li');
        li.innerHTML = `
      <div class="comment-user-avatar ${user.type}">
        <img src="${user.avatar || user.author.avatar}" 
             alt="${user.name || user.username}" 
             class="avatar avatar-60 photo" 
             loading="lazy"
             data-user-id="${user.id}"
             data-type="${user.type}">
      </div>
    `;
        avatarList.appendChild(li);

        // 直接在这里初始化 Tippy
        const img = li.querySelector('img');
        if (user.type === 'reply') {
            // 评论工具提示
            tippy(img, {
                theme: 'light',
                allowHTML: true,
                interactive: true,
                maxWidth: 350,
                delay: [100, 0],
                content: '加载中...',
                onShow(instance) {
                    instance.setContent(user.content);
                }
            });
        } else {
            // 点赞工具提示
            tippy(img, {
                content: '💖',
                delay: [100, 0]
            });
        }
    });

    // 更新统计信息
}

HTML 代码部分

<!--- 其他代码 --->
<div class="social-interactions">
    <ol class="discussion-avatar-list"></ol>
</div>

<script>
    // 引入上面的函数文件
    import loadInteractions from '../utils/acitivitypub';
    // 适配Astro的PWA加载
    document.addEventListener('astro:page-load', () => {
        loadInteractions();
    });
</script>
<!--- 其他代码 --->

微软开源的更贴近Windows习惯的Linux命令行文本编辑器:edit

2025年5月23日 11:15

Photo by Christopher Gower / Unsplash

不知道是不是微软知道天下小白苦 Linux 的命令行编辑器久矣,最近开源了一款 windows 操作习惯的 shell 文本编辑器 edit。

GitHub - microsoft/edit: We all edit.
We all edit. Contribute to microsoft/edit development by creating an account on GitHub.
GitHubmicrosoft

支持多行选择、复制粘贴、鼠标控制等操作,操作习惯更偏向 widnows。

所以第一时间安装体验,感觉确实不错,写一篇安装教程。

下载使用你自己平台的二进制文件,Releases · microsoft/edit

curl -LO https://github.com/microsoft/edit/releases/download/v1.0.0/edit-1.0.0-x86_64-linux-gnu.xz

解压,重命名

unxz edit-1.0.0-x86_64-linux-gnu.xz
mv edit-1.0.0-x86_64-linux-gnu edit

给执行权限,并移动到 bin 目录

chmod +x edit
sudo mv edit /usr/local/bin/

测试是否安装成功

edit --version

常用快捷键

  • New File:Ctrl+N
  • Open File:Ctrl+0
  • Save:Ctrl+s
  • Close Editor:Ctrl+W
  • Exit:Ctrl+Q
  • Undo:Ctrl+Z
  • Redo:Ctrl+Y
  • Cut:Ctrl+x
  • Copy:Ctrl+c
  • Paste:Ctrl+V
  • Find:Ctrl+F
  • Replace:Ctrl+R

260、小满

2025年5月21日 13:14

null

当夜卧稍迟,早起迎露,以应阳气渐满之势。晨起可循田埂而行,观麦浪轻摇,听蛙声初沸,导引气血,使志得舒。饮食宜增苦减辛,多食苦瓜、莴笋、新蚕豆以清心火,佐以薏仁、赤豆利湿健脾。

此时阳气将盛,湿气始滋,当调息静心,戒满戒溢,常怀虚谷之志。衣宜选亚麻、棉纱,疏风透汗,尤需护住脘腹关元。常饮三花饮(金银花、菊花、茉莉),清热解郁,兼防湿暑。运动当选八段锦、易筋经等和缓功法,如云舒卷,似穗低垂,使气机流畅而不壅滞。午后小憩半刻,敛阳养阴,此谓「持满之道」。

0元开88vip??

2025年5月22日 11:53

Photo by Ryan Born / Unsplash

因为最近淘宝买了不少东西,有些商家不送退货险,退货运费都挺贵的。

而且今天想买个好价鞋,但是需要88vip的券,@jun 倒是说帮我抢,但是有些券需要等,还要冲购物金,弄来弄去感觉也挺麻烦的。

所以想来想去还是自己开一个。

之前在咸鱼上几毛钱买过一个夸克云的88vip,估摸着中间应该是有什么门道,所以去这些地方做了一下搜索,了解了一下中间的套路。果然不出所料,感觉中间的利润还挺高的,现在这些大公司的羊毛被这些羊毛党可谓是薅到极致。

羊毛党的思路大概是这样:

  1. 去咸鱼、小红书等地方发帖指导别人开88会员,并说可以回收附带的视频、音乐权益,一般两个包年服务的回收价格在80元左右。
  2. 因为咸鱼、小红书平台的封控问题,引导客户至微信沟通。
  3. 顾客咸鱼上架宝贝,他们拍下,然后让客户开通88vip。
  4. 然后他们通过内部共享渠道拿到其他需要充值这两个服务的用户的手机号
  5. 我们配合进行充值
  6. 他们咸鱼付款。

我核查了一下已经了解到的收益点

  1. 推广金,走他们的邀请链接开通好像会有14-16元左右的推广奖励。
  2. 包年会员转手卖掉赚差价,网易云、优酷或芒果的包年服务价格咸鱼在100元左右,利润20元。
推手收益

可能还会有其他我没了解的收益点,但是上述两项至少会有差不多40元的收益,这可以说是无本买卖,如果能把中间的流程优化好,应该还有提升空间。

唯一的问题就是可不可以持续发展,这个完全看淘宝这边的政策管的严不严了。

特stse

2025年5月21日 16:01

书接上文。

小舅子他们在特种兵式的几天游玩之后表示最后一天想在家里休息一下,陪着他们吃了一天清淡的食物后,按了个脚,第二天一号他们便各自返回工作地去了。

而我们两口新的征程才刚要开始——下一站勒多曼因。

其实勒多曼因这个行程是五一之前就开始关注了的,因为之前徒步峨眉山、笔架山后加了很多户外群,五一前的偶然一天看到有人发了一个雪山冰湖皮筏艇的照片,并说准备开团出发,景点是我喜欢的那种风格,强度也还能接受,所以进群了解了一下,总共三天行程,:

  • 第一天成都集合,乘坐包大巴车出发去康定
  • 下午大概四五点到康定,吃晚饭,吃完后坐中转车去老榆林
  • 老榆林早起坐转运车出发去山脚下的格因草原开始徒步。
  • 徒步20公里,爬升到4300米左右,在山上营地住下。
  • 第三天早起冲顶,然后下山。
  • 各回各家。
  • 我们只需要带两天的路餐,其他的他们包。
  • 总费用650元1人,40人成团出发。

当时想着650这价格是真心不贵了,而且恰好能和小舅子他们来的时间错开,所以毫不犹豫的报了两个名。

但是在后面几天接待下舅子的过程中,群里消息不断,组织力度似乎不太够了,总共个加群的人有50多个,接龙说要去的也满了40个人,但是最后交钱的时候却不够包车的40人。

因为人数不够没办法拼大车,群主就开始降级说租20人小车,但是小车价格和大车只便宜了四五百块钱,最后摊下来每个人要多交100元,然后重新组织了一波接龙,不懂贵这100块会产生了多大的化学反应,这次直接20人都没凑齐...。

眼看着要散团了,但是我的瘾又被钓上来了,不想眼看着散团,索性就说我出个车,看有没有其他愿意出车的一起,凑个十几二十个人也还不错,终于在散团之际组织了三个车,最终有17人一起参与了这趟行程。

我们这个7坐车除开我和S,最终分两拨坐了5人。

先是3位泸州的朋友,两男一女,从泸州过来自贡上车,分别是快60的二叔,很会照顾人的刘姐,以及帅气的空少三笑。之后开车去成都接上2泰拳老师和一个川大的大学生。

后面就正式开始发图了,所以这里先吐槽一下这个团。

这个穿山甲不能算是正式的商业团,只能说是有一个大家信的过的群主去联系的车、住宿、餐食,规划好行程后在群里组织的,不过那点组织力几乎是没有,我们因为自驾所以最后减了100的团费,最终收的550元,但是当时承诺的东西一个都没达成,这里罗列已下,下次大家参加这种群性质的团一定要提前问清楚,留好文字存档。

  1. 说好的只用带路餐,但是最后第一天的晚餐需要自费,第二天的早餐也让我们自费,之后在山上说有鸡汤喝也没有准备,山上的营地的晚餐也很差,更别说早餐馒头还是馊的。
  2. 说好会花一千多请一个solo过贡嘎的领导,上山后发现人家是带了商团,几乎没管过我们团,另外一个年轻的小伙子说是被叫来管我们,但是就下山看到了他们一下,拍照服务之类的就更别提了。
  3. 转运车期初以为是什么大巴之类的,上去才知道想多了,全是那种小货卡,上面拉一块篷布就行了,后来听其他上山的说有人坐的车是拉牛羊的,全是屎...。

好了,亏已经吃了,只能说下次注意了。

行程分享正式开始。


我们5月3号从成都出发康定完美错开了车流高峰,全程几乎没有堵车,一路狂奔,车上听二叔说天全服务站有「此生必驾」318的牌子可以打卡,大家商量一致就在天全休息一会儿。

因为是自驾,所以时间比较充裕,路上又没有堵车,我们四点左右就已经到了康定,所以先去刘姐一个朋友开的餐馆吃了一顿菌菇牦牛火锅,老板做的蘸料一绝。

菌汤牦牛肉蒸气火锅

吃完饭才不到5点,所以大家准备一起去逛逛溜溜城。

我们本来是开车进城的,但是穿了一圈都没找到车位,最后在城区里堵了一个小时重新回到康定进城口的边上的一个集中停车场,20元一天,建议大家来这里玩不要想在城区找车位了。

卖青稞大饼,挺香的,下面的店铺15一个,走了一截发现全是从这个店拿的,人家只卖12元,这几步路就有3元的差价。

走到一半发现下雨了,还好穿的冲锋衣。并且凑巧这边有个广场在搞商业活动,似乎是请了什么藏族歌星在唱歌,虽然是藏文歌,但是唱的还挺好听的,不过摇一摇没识别出来。

大家累了坐在路边休息,因为雨大,二叔又没穿冲锋衣,所以暂时和他们分开,我们两口子单独逛去了。

康定旅游局局长同款抖音樱花大街。

溜溜城打卡,为什么叫溜溜城?

“康定溜溜城”这个充满诗意的别称,主要源于康定与《康定情歌》(又名《跑马溜溜的山上》)的深厚渊源。这首传唱世界的民歌让康定以“溜溜”之名广为人知,而“溜溜”在当地方言中更是承载了独特的文化意蕴,在康定及川西方言中,“溜溜”常用来形容事物“美好”“漂亮”“流畅”。

1. 溜溜城打卡 2. 小巷一景

藏族同胞们的广场舞是锅庄,那「锅庄」又是什么呢?。

锅庄(藏语称“果卓”或“歌庄”)是藏族民间广泛流传的一种传统集体舞蹈,尤其在四川、西藏、云南、青海等藏族聚居区盛行。它不仅是重要的娱乐活动,更是藏族文化、宗教和社会交往的载体。

康定的夜景还是非常漂亮的。

天色渐暗后和大家汇合,去往老榆林的民宿休息。

因为对这边的卫生环境不报什么期待,所以提前买了隔脏睡袋,用塑料袋+垃圾桶装了点热水泡脚,早早便躺下休息了。

1. 早起民宿外的风景 2.房间环境 3. 早起窗外的雪山 4. 隔脏睡袋

没有领队,更没有领队说让我们拍出发照,所以我索性叫上大家一起随便拍了一张。

17个人就这几个拍了照...。

坐上蓬卡就出发了,一路上看不到外面,但感觉早餐都要被颠出来了,估计外面到处都是导弹坑。

车上手机拍的远处雪山

1. 格因草原 2. 马帮的马

今天天气不错,依旧没看到领队...。

过木桥,水很凉,都是山上流下来的雪水。低山区

路过一个红石滩

低山区还有很多松树。

在徒步过程中海拔逐渐上升,慢慢树木就变成灌木和草甸,一路上会还经过各种路况:石头路,涉水路,草甸,沼泽等等。

一处绝佳的和雪山合影的机位

我也来一张,在这里不小心把登山杖掉落滚到峡谷下面去了。😅

一爬一个不吱声

有点累,生命力照片一张。

沿途的树木变成了灌木和草甸。

二叔年纪打了,自重也太重,大家都劝他坐马算了,他也听劝,800块直接座马去了营地。后来到营地听他说座马也听危险的,他上去的时候马没站稳前跪了,把他甩到沙地里了,我们在说幸好是沙地...。

终于走了快一半了,两岔河营地吃个午餐

一桌子的方便面碗和围了一桌子崩溃的驴友们。

继续出发

在一个绝望坡前碰到了其他队友,我不拍照大家是真不想拍合照....,碰上我这种队友是真挺好的。

中间那个是本次帮忙的「领队」

最不想走的就是这种河谷路段,全是碎石头。还碰上大风,风里还夹着小粒的冰雹。

最后一个绝望坡,进入雪线了,天上也飘起了小雪。

绝望坡后面的美景

终于到营地了!

营地景色全览

太累了,完全不想拍照用其他人发的照片把。

休息的棚子。营地的饭菜很不好吃,大家草草吃完便都上床准备休息。

因为营地在海拔4300米左右,加上棚子里氧气不太流通,所以帐篷里十几号人晚上过夜的时候都有不同程度的高反,症状基本上都是头疼。我后半夜睡了会,基本上是醒半小时睡半小时左右,我旁边的一个大学生几乎整夜没睡觉,两三点的时候还爬起来说想下山...,一整晚的噪音把他旁边的一个能睡着的老驴折腾到一晚上没怎么睡,感觉老驴也很难受哈哈。

S就是说觉得冷,因为棚子四处漏风,漏风最严重的就是我们躺下后头顶的地方,风大的时候我问不得不起来给她过上急救毯才好些。

后半夜风停了,我帮她把睡袋裹紧,把头罩住就留个鼻子嘴巴出来,才算是踏踏实实睡了好几个小时,比我有出息多了。

第二天四五点大家便陆续起床了,还能看到星空,但是我手机和充电宝都被冻没电了。

早餐的包子是馊的,我就喝了点稀饭,吃了自己带的面包。

因为出发的时候黑黢黢的,手机也没电了,就没拍什么照片,同行的刘姐借了他的充电宝给我用,让我得以续命。

天终于渐渐亮起来,发现我们被大雾追赶着,手机也有一些电了。

跟着前面的队伍的步伐,发现我们没有走常规的泥巴路线,而是条沿着河谷上行的碎石路段,然后踩着雪沿着山脊线的去往山顶,体验顶满,后来听前面的队友说起才知道,他们跟着一个商团的线路走的。

体验非常棒。

开始爬山脊线。几乎六七十度的大坡,踩着雪前进,非常爽!

就冲这一段爬坡这一趟也值了。

这里的雪一脚下去都能没过膝盖,躺雪上面来一张把。

旁边那条是常规上来的路,马上到了,看上面云层上去的时候应该还能看见雪山。

登顶。

说实话因为湖还没完全化开又被白雪覆盖,也不能去湖面拍照,导致山顶的风景和可玩性很一般,这块白色不知道的人还以为只是一片平坦的雪地。

别的不说,先打个卡把。

看好了,这一剑,会很帅!(换我来拍的时候后面忽然就起了大雾,没拍上😭。)

因为风雪,准备下山了。

后面下山的风景就不发了,下山的时候倒是碰上领队了,因为要做扫尾工作,我们又是垫底的,所以一直被催着下山,搞的我们下山速度飞快,后半段几乎都是跑着下山的。

回到起点。

下雨了,安排第一波人坐皮卡,这波人回到民宿衣服基本上都湿了,我依旧做的蓬卡下山,不过因为没休息好,有点晕车的感觉,差点吐了。

之后便是返程,回去的时候只有泸州的三位和我们一起,另外两个坐其他车了。

也好,我们这几个人更聊的来,我们边开边聊,倒也不觉得累,还拉个群准备下次有什么活动再一起出行。

直到晚上11点30分才安全到达自贡,他们另外拼车叫了个野猪儿回泸州。

这次行程结束我缓了三天才缓过来,每天下班回家几乎粘上枕头就睡,每天的睡眠时长破天荒的突破了8个小时,临近9小时!

下次出行真的不想再开车了。

  • 12  

用户外活动填满五一:勒多曼因篇

2025年5月18日 15:45

null

书接上文。

小舅子他们在特种兵式的几天游玩之后表示最后一天想在家里休息一下,陪着他们吃了一天清淡的食物后,按了个脚,第二天一号他们便各自返回工作地去了。

而我们两口新的征程才刚要开始——下一站勒多曼因。

其实勒多曼因这个行程是五一之前就开始关注了的,因为之前徒步峨眉山、笔架山后加了很多户外群,五一前的偶然一天看到有人发了一个雪山冰湖皮筏艇的照片,并说准备开团出发,景点是我喜欢的那种风格,强度也还能接受,所以进群了解了一下,总共三天行程,:

  • 第一天成都集合,乘坐包大巴车出发去康定
  • 下午大概四五点到康定,吃晚饭,吃完后坐中转车去老榆林
  • 老榆林早起坐转运车出发去山脚下的格因草原开始徒步。
  • 徒步20公里,爬升到4300米左右,在山上营地住下。
  • 第三天早起冲顶,然后下山。
  • 各回各家。
  • 我们只需要带两天的路餐,其他的他们包。
  • 总费用650元1人,40人成团出发。

当时想着650这价格是真心不贵了,而且恰好能和小舅子他们来的时间错开,所以毫不犹豫的报了两个名。

但是在后面几天接待下舅子的过程中,群里消息不断,组织力度似乎不太够了,总共个加群的人有50多个,接龙说要去的也满了40个人,但是最后交钱的时候却不够包车的40人。

因为人数不够没办法拼大车,群主就开始降级说租20人小车,但是小车价格和大车只便宜了四五百块钱,最后摊下来每个人要多交100元,然后重新组织了一波接龙,不懂贵这100块会产生了多大的化学反应,这次直接20人都没凑齐...。

眼看着要散团了,但是我的瘾又被钓上来了,不想眼看着散团,索性就说我出个车,看有没有其他愿意出车的一起,凑个十几二十个人也还不错,终于在散团之际组织了三个车,最终有17人一起参与了这趟行程。

我们这个7坐车除开我和S,最终分两拨坐了5人。

先是3位泸州的朋友,两男一女,从泸州过来自贡上车,分别是快60的二叔,很会照顾人的刘姐,以及帅气的空少三笑。之后开车去成都接上2泰拳老师和一个川大的大学生。

后面就正式开始发图了,所以这里先吐槽一下这个团。

这个穿山甲不能算是正式的商业团,只能说是有一个大家信的过的群主去联系的车、住宿、餐食,规划好行程后在群里组织的,不过那点组织力几乎是没有,我们因为自驾所以最后减了100的团费,最终收的550元,但是当时承诺的东西一个都没达成,这里罗列已下,下次大家参加这种群性质的团一定要提前问清楚,留好文字存档。

  1. 说好的只用带路餐,但是最后第一天的晚餐需要自费,第二天的早餐也让我们自费,之后在山上说有鸡汤喝也没有准备,山上的营地的晚餐也很差,更别说早餐馒头还是馊的。
  2. 说好会花一千多请一个solo过贡嘎的领导,上山后发现人家是带了商团,几乎没管过我们团,另外一个年轻的小伙子说是被叫来管我们,但是就下山看到了他们一下,拍照服务之类的就更别提了。
  3. 转运车期初以为是什么大巴之类的,上去才知道想多了,全是那种小货卡,上面拉一块篷布就行了,后来听其他上山的说有人坐的车是拉牛羊的,全是屎...。

好了,亏已经吃了,只能说下次注意了。

行程分享正式开始。


我们5月3号从成都出发康定完美错开了车流高峰,全程几乎没有堵车,一路狂奔,车上听二叔说天全服务站有「此生必驾」318的牌子可以打卡,大家商量一致就在天全休息一会儿。

因为是自驾,所以时间比较充裕,路上又没有堵车,我们四点左右就已经到了康定,所以先去刘姐一个朋友开的餐馆吃了一顿菌菇牦牛火锅,老板做的蘸料一绝。

菌汤牦牛肉蒸气火锅

吃完饭才不到5点,所以大家准备一起去逛逛溜溜城。

我们本来是开车进城的,但是穿了一圈都没找到车位,最后在城区里堵了一个小时重新回到康定进城口的边上的一个集中停车场,20元一天,建议大家来这里玩不要想在城区找车位了。

卖青稞大饼,挺香的,下面的店铺15一个,走了一截发现全是从这个店拿的,人家只卖12元,这几步路就有3元的差价。

走到一半发现下雨了,还好穿的冲锋衣。并且凑巧这边有个广场在搞商业活动,似乎是请了什么藏族歌星在唱歌,虽然是藏文歌,但是唱的还挺好听的,不过摇一摇没识别出来。

大家累了坐在路边休息,因为雨大,二叔又没穿冲锋衣,所以暂时和他们分开,我们两口子单独逛去了。

康定旅游局局长同款抖音樱花大街。

溜溜城打卡,为什么叫溜溜城?

“康定溜溜城”这个充满诗意的别称,主要源于康定与《康定情歌》(又名《跑马溜溜的山上》)的深厚渊源。这首传唱世界的民歌让康定以“溜溜”之名广为人知,而“溜溜”在当地方言中更是承载了独特的文化意蕴,在康定及川西方言中,“溜溜”常用来形容事物“美好”“漂亮”“流畅”。

1. 溜溜城打卡 2. 小巷一景

藏族同胞们的广场舞是锅庄,那「锅庄」又是什么呢?。

锅庄(藏语称“果卓”或“歌庄”)是藏族民间广泛流传的一种传统集体舞蹈,尤其在四川、西藏、云南、青海等藏族聚居区盛行。它不仅是重要的娱乐活动,更是藏族文化、宗教和社会交往的载体。

康定的夜景还是非常漂亮的。

天色渐暗后和大家汇合,去往老榆林的民宿休息。

因为对这边的卫生环境不报什么期待,所以提前买了隔脏睡袋,用塑料袋+垃圾桶装了点热水泡脚,早早便躺下休息了。

1. 早起民宿外的风景 2.房间环境 3. 早起窗外的雪山 4. 隔脏睡袋

没有领队,更没有领队说让我们拍出发照,所以我索性叫上大家一起随便拍了一张。

17个人就这几个拍了照...。

坐上蓬卡就出发了,一路上看不到外面,但感觉早餐都要被颠出来了,估计外面到处都是导弹坑。

车上手机拍的远处雪山

1. 格因草原 2. 马帮的马

今天天气不错,依旧没看到领队...。

过木桥,水很凉,都是山上流下来的雪水。低山区

路过一个红石滩

低山区还有很多松树。

在徒步过程中海拔逐渐上升,慢慢树木就变成灌木和草甸,一路上会还经过各种路况:石头路,涉水路,草甸,沼泽等等。

一处绝佳的和雪山合影的机位

我也来一张,在这里不小心把登山杖掉落滚到峡谷下面去了。😅

一爬一个不吱声

有点累,生命力照片一张。

沿途的树木变成了灌木和草甸。

二叔年纪打了,自重也太重,大家都劝他坐马算了,他也听劝,800块直接座马去了营地。后来到营地听他说座马也听危险的,他上去的时候马没站稳前跪了,把他甩到沙地里了,我们在说幸好是沙地...。

终于走了快一半了,两岔河营地吃个午餐

一桌子的方便面碗和围了一桌子崩溃的驴友们。

继续出发

在一个绝望坡前碰到了其他队友,我不拍照大家是真不想拍合照....,碰上我这种队友是真挺好的。

中间那个是本次帮忙的「领队」

最不想走的就是这种河谷路段,全是碎石头。还碰上大风,风里还夹着小粒的冰雹。

最后一个绝望坡,进入雪线了,天上也飘起了小雪。

绝望坡后面的美景

终于到营地了!

营地景色全览

太累了,完全不想拍照用其他人发的照片把。

休息的棚子。营地的饭菜很不好吃,大家草草吃完便都上床准备休息。

因为营地在海拔4300米左右,加上棚子里氧气不太流通,所以帐篷里十几号人晚上过夜的时候都有不同程度的高反,症状基本上都是头疼。我后半夜睡了会,基本上是醒半小时睡半小时左右,我旁边的一个大学生几乎整夜没睡觉,两三点的时候还爬起来说想下山...,一整晚的噪音把他旁边的一个能睡着的老驴折腾到一晚上没怎么睡,感觉老驴也很难受哈哈。

S就是说觉得冷,因为棚子四处漏风,漏风最严重的就是我们躺下后头顶的地方,风大的时候我问不得不起来给她过上急救毯才好些。

后半夜风停了,我帮她把睡袋裹紧,把头罩住就留个鼻子嘴巴出来,才算是踏踏实实睡了好几个小时,比我有出息多了。

第二天四五点大家便陆续起床了,还能看到星空,但是我手机和充电宝都被冻没电了。

早餐的包子是馊的,我就喝了点稀饭,吃了自己带的面包。

因为出发的时候黑黢黢的,手机也没电了,就没拍什么照片,同行的刘姐借了他的充电宝给我用,让我得以续命。

天终于渐渐亮起来,发现我们被大雾追赶着,手机也有一些电了。

跟着前面的队伍的步伐,发现我们没有走常规的泥巴路线,而是条沿着河谷上行的碎石路段,然后踩着雪沿着山脊线的去往山顶,体验顶满,后来听前面的队友说起才知道,他们跟着一个商团的线路走的。

体验非常棒。

开始爬山脊线。几乎六七十度的大坡,踩着雪前进,非常爽!

就冲这一段爬坡这一趟也值了。

这里的雪一脚下去都能没过膝盖,躺雪上面来一张把。

旁边那条是常规上来的路,马上到了,看上面云层上去的时候应该还能看见雪山。

登顶。

说实话因为湖还没完全化开又被白雪覆盖,也不能去湖面拍照,导致山顶的风景和可玩性很一般,这块白色不知道的人还以为只是一片平坦的雪地。

别的不说,先打个卡把。

看好了,这一剑,会很帅!(换我来拍的时候后面忽然就起了大雾,没拍上😭。)

因为风雪,准备下山了。

后面下山的风景就不发了,下山的时候倒是碰上领队了,因为要做扫尾工作,我们又是垫底的,所以一直被催着下山,搞的我们下山速度飞快,后半段几乎都是跑着下山的。

回到起点。

下雨了,安排第一波人坐皮卡,这波人回到民宿衣服基本上都湿了,我依旧做的蓬卡下山,不过因为没休息好,有点晕车的感觉,差点吐了。

之后便是返程,回去的时候只有泸州的三位和我们一起,另外两个坐其他车了。

也好,我们这几个人更聊的来,我们边开边聊,倒也不觉得累,还拉个群准备下次有什么活动再一起出行。

直到晚上11点30分才安全到达自贡,他们另外拼车叫了个野猪儿回泸州。

这次行程结束我缓了三天才缓过来,每天下班回家几乎粘上枕头就睡,每天的睡眠时长破天荒的突破了8个小时,临近9小时!

下次出行真的不想再开车了。

259、立夏

2025年5月13日 10:38

勒多曼因湖边

立夏时节,熏风南来,天地始交,万物并秀。当夜卧早起,迎朝阳以养心气。晨起可临水而立,观荷听蝉,导引阳气,使志无怒。饮食宜增酸减苦,多食樱桃、青梅、新麦以养心脾,佐以莲子、百合清心宁神。

此时心火渐旺,肾水初衰,当静心寡欲,戒骄戒躁,常持虚静。衣宜选用苎麻丝帛,透气生凉,尤需护住后颈命门。常饮绿豆薄荷饮,解暑生津,兼防疰夏。运动当选五禽戏、太极等舒徐功法,如树展枝,似水潺湲,使气血流通而不沸涌。午后小憩一刻,胜服灵丹,此谓「养长之道」。

立夏这天刚好在山上没网,不过在山上的时候还想着要发节气文章,下来后光顾着P照片去了,补发一章。

用户外活动填满五一:瓦屋山篇

2025年5月11日 10:18

瓦屋山

今年的五一感觉是有生以来活动安排的最满的一次。

先是五一假日前老婆把小舅子和大姨妈摇来了自贡,28号落地,带他们吃喝玩乐,30号再去了一次瓦屋山徒步。他们2号走后,3号又马不停蹄的去了康定勒多曼因爬山,来回42公里,最高海拔4600米,5号晚上十一点半才重新回到自贡,我到现在都还有点没缓过劲来。

大姨妈不是第一次来了,小舅子倒是首次过来玩,所以老婆先是安排他们去了上次我们两个人都好评的「电子厂餐馆」——一个本地人都不一定找的到地方的苍蝇馆子,要从主路拐进一条小路,进去走个一两公里才能看到。

小路开了一两公里左右,在这个尽头右手边小巷子里

小店需要提前预订,不接直接过去的客人,菜都是非常新鲜的。招牌菜是腰花和牛蹄筋,整体口味都是偏重油重辣的,小舅子和大姨妈吃完后两个人在自贡待了几天就打了几天「标枪」。

腰花非常嫩,里面配菜用了一些类似油渣的东西吃起来非常香(不知道是不是勾芡掉落焦化的)。牛蹄筋则是他们的招牌,炖的非常软烂又略带胶原蛋白的口感,强烈所有外地来的朋友过来品鉴。

1. 牛蹄筋 2. 腰花

老婆之后请了假带他们去看了自贡灯会和恐龙博物馆,这部分我要上班就没参与,也就没给他们拍照流念了。

因为瓦屋山风景绝美,这段时间又免门票,所以30号当天我们准备开车带他们去感受一下四川的山川河流和我们最近喜欢上的户外徒步。

出发!
瓦屋山位于四川省眉山市洪雅县境内,海拔2830米,是中国最大的平顶桌状山,被誉为“云霭之上的诺亚方舟”。这里拥有原始森林、高山瀑布、杜鹃花海等自然奇观,是世界第二大、亚洲第一大的桌山,与南非开普敦的桌山齐名。山顶平台面积约11平方公里,植被覆盖率超过90%,是珍稀动植物的天堂,如珙桐、大熊猫等。四季景色各异:春赏杜鹃、夏避酷暑、秋观彩林、冬览冰雪,尤其冬季冰瀑堪称一绝。道教文化底蕴深厚,传说为太上老君升仙地,清代曾是川内著名道教圣地。现为国家AAAA级旅游景区,兼具生态与人文价值。

瓦屋山是目前我去过的四川普通爬山类型景点中除九寨沟外资源最全面,最好的一处景点了。

下了高速后还要行使大概20公里左右的盘山公路,最后5公里左右进入景区范围,整个山区被密集且高大的原始雪松森林覆盖,小路在森林中盘旋前进,可以说非常有欧洲或者日本那边原始森林的感觉了。(一路上都是盘山公路,晕车的小伙伴要注意提前吃晕车药)

不多时便能穿山而出看到一个湖,这便是山下一处名为雅女湖的景点,环湖有一条公路,马路边上都是民宿和餐馆。

到达景区大门口时不要停。

我们当时停了,发现到里面游客中心还要一公里左右,又重新上车往里开,最后停在游客中心下的停车场里,20元一天。

准备爬山。

出发

山上的负氧离子非常高,溪流沿着峡谷而下,闻着好闻的空气感觉身体都轻飘飘的。

在山上看到了佛光,后来在朋友圈发现四川这几天到处都能看到这个景象。

佛光,像是被人注视。

路边的溪流和「生命力」照片。

1. 生命力照片 2. 溪流

自拍一个

自拍

1. 一只胖胖的熊蜂把花枝都压的下坠了 2. 步道

在溪边堆了个玛尼堆祈福

1. 清澈的湖水 2、3. 瀑布留影

自拍

山上瀑布资源丰富,而且落差都非常大。

1. 山上的瀑布2 2. 生命力照片 3、4. 自拍

小舅子和大姨妈平时都是不怎么锻炼的,一路上又流连于美景拍照,所以走走停停五六个小时才到金花坪,状态也几近掏空的状态。虽然我们状态还好的很,刚刚热身的感觉,但在询问了工作人员后发现下午4点以后就不准继续往上了,而且最后一班下山的缆车也会在4点还是5点后停运,所以只能坐缆车下山。

其实我们两口子是想快速冲顶的,因为非工作日前100名登顶的客人会送一块奖牌,不过今天肯定是拿不到了,只有下次再来了。

瓦屋山的缆车非常长,几乎坐了十来分钟才到站,想想上次峨眉山七八十的票价几分钟就到了。这么远的距离冬天不敢想象这一路会有多美,而且每站只要50元。

下山
自拍
分两篇写把,下一篇 勒多曼因篇。

天然气热水器国补下单

2025年4月26日 18:08

Photo by Risa / Unsplash

前些日子家电国补线上线下宣传的如火如荼,但是一直觉得国补这个东西好像我占不到啥便宜,因为我暂时没有任何更换家电、手机的想法。

但是老天爷似乎都要推波助澜让我去凑凑热闹——家里的电热水器忽然坏了。

是的,但是其实也并不意外,这台和这个我们家房子同样年纪的万和热水器服役已经十多年了,其实也就这两年开始慢慢有些小毛病,这个时候即便坏了我也不觉得意外。

其实也叫不上坏,热水器的错误码为E1,是点火器故障,去年还是前年开始就出现过几次,我拆开打磨了一下点火器的头子后其实就好了。不过我妈说干脆让这个老家伙退役算了,修来修去的也麻烦。

线上的热水器品牌五花八门,如海尔、美的、万和、樱花等等。不过价格在一片绿色国补到手价的标签下显的尤其划算。16L带增压、水伺服的一级能耗的机器线上基本上只要1100-1300左右,二级能耗就更低了,基本都在1000以下。

我也去线下的实体店看了一下,因为保护线下市场的缘故,线上线下基本上不会售卖同型号的机器,不过同配置参数线下始终要贵个几百,毕竟像是京东、淘宝这种平台还有平台优惠不是。

而且线下不卖一级能耗的产品,不知道为啥。

刚开始的时候我选的美的、海尔的牌子,后来我妈提醒让我看看万和,这才了解到万和才是国内专业做热水器的,而且我们之前那个台服役十多年的热水器也是万和,后来安装的师傅也认同了这个看法。

我最后选的是万和的F9DMAX ,各种优叠加下来价格如下,性价比相当高,国补真的没毛病。👍

  • 商品总价:¥2199.00
  • 运费:+ ¥0.00
  • 商品优惠:- ¥110.00
  • PLUS专享立减:- ¥8.80
  • 以旧换新:- ¥130.00
  • 国家补贴:- ¥390.04
  • 实付款:¥1560.16

产品主要参数如下。

  • 16L水量
  • 国家一级能效
  • 水伺服
  • 下置风机
  • TSI 210% 增压
  • 8年质保

其中我体验下来,各项参数参考的优先级为,排前的我认为重要性更高:

  1. 质保:热水器强制报废是8年,现在几乎都是8年质保了,不过也有5年的。
  2. 能效:国家一级能效每年能比二级的少个1000块左右,我感觉还是相当重要,就是会产生冷凝水,需要有排水的地方,但是这个水量很小,我没观察过,但是估计和空调差不多把。
  3. 水量:我们家之前那台是13L的,有两个地方同时用水时,水量会变的非常小,十分影响体现。
  4. 水伺服:这个其实就是控制水温的,保证多地同时用水时的水温恒定,之前那台没有这个功能,经常厨房用水后洗澡水温度会忽然变凉,很不爽。
  5. 下置风机:相比于上置,下置风机因为做了密封,噪音真的小了非常多,以前那台上置的一开,我在卧室都能听到动静,现在站在旁边都不容易发觉,还得用眼睛看热水器面板。
  6. 增压:之前想着带这个增压会不会让多个地方用水的时候水量变大,其实不会,这个因为热水管、烧水量只有那么大,同时经过的热水是恒定的,不会有非常明显的变化,复式楼层可能感知会明显很多。

最后,还要注意上门安装的费用,一般情况下安装人员上门安装是不收费用的,但是他们只会免去箱子内所有材料的费用(毕竟那是你已经花钱买了的),如果需要使用额外的材料是需要另外付费的,但是一般品牌放会明码标价。

我这次因为是替换旧机,原有管路什么都是现成的,没有用他们的任何材料,所以师傅上门安装好后就能直接使用,也没做任何推销和歪心思,没出任何费用,体验还是相当不错的。

我们家的情况师傅说如果冷热水管安排到位,其余材料用他们的费用也只会在100多一点,也不算太贵。

另附我这次整理的热水器型号清单。

长毛象新通知推送TGBot

2025年4月21日 12:35

其实蜗牛哥之前开发过一个Chrome扩展,可以在浏览器里显示一个图标和通知数量。但是我电脑上现在Chrome一打开十几个进程,我实在不想再新增扩展了。

所以这两天用Deepseek糊了一个搭配Cloudflare推送到TGBot的Worker脚本,效果如截图。设置好长毛象和TGBot的设置后,程序会每5分钟检测一次有没有新通知,有的话才进行推送操作。

准备KV

先添加一个KV,名称 KV_STORE ,备用。

准备长毛象TOken

获取长毛象Access Token,不放心的话在权限部分可以单独只设置通知获取权限

  1. 登录你的 Mastodon 实例(如 https://mastodon.social)。
  2. 进入 "Preferences(偏好设置) > Development(开发)(或直接访问 https:///settings/applications)。
  3. 点击 "New Application(新建应用):
    1. Application Name(应用名称):填写你的应用名称(如 MyBot)。
    2. Website(网站)(可选):填写你的应用网站(如果没有可留空)。
    3. Scopes(权限):选择你需要的 API 权限(如 read、write、follow 等)。
  4. 点击 "Submit(提交),系统会生成:
    1. Client Key(客户端 ID)
    2. Client Secret(客户端密钥)
    3. Access Token(访问令牌)(可直接使用)

准备Cloudflare Worker

再添加一个Worker,代码如下,并修改代码中的 config 部分的配置为你自己的设置,其中长毛象token

// 配置部分
const config = {
  // Mastodon 配置
  mastodon: {
    instance: 'https://your-instance.social', // 替换为你的 Mastodon 实例地址
    accessToken: 'ZTDJN2ZMZMZI5MTU1MZHH',  // 替换为你的 Mastodon 访问令牌
    lastNotificationIdKey: 'last_notification_id' // KV 存储中保存最后通知ID的键名
  },
  
  // Telegram 配置
  telegram: {
    botToken: 'your-bot-token', // 替换为你的 Telegram Bot Token
    chatId: 'your-tg-chart-id'               // 替换为接收消息的聊天ID
  },
  
  // 检查间隔(分钟)
  checkInterval: 5
};

// 主处理函数
export default {
  async scheduled(event, env, ctx) {
    // 执行检查通知任务
    await checkNotifications(env);
  },
  
  async fetch(request, env) {
    // 手动触发检查
    if (new URL(request.url).pathname === '/check') {
      await checkNotifications(env);
      return new Response('Notification check triggered');
    }
    
    return new Response('Not found', { status: 404 });
  }
};

// 检查未读通知
async function checkNotifications(env) {
  try {
    // 获取上次处理的通知ID
    let lastNotificationId = await env.KV_STORE.get(config.mastodon.lastNotificationIdKey);
    lastNotificationId = lastNotificationId || '0';
    
    // 获取新通知
    const notifications = await fetchMastodonNotifications(lastNotificationId);
    
    if (notifications.length > 0) {
      // 有新通知,发送到 Telegram
      await sendToTelegram(notifications, env);
      
      // 更新最后处理的通知ID
      const latestId = notifications[0].id;
      await env.KV_STORE.put(config.mastodon.lastNotificationIdKey, latestId);
      
      console.log(`Sent ${notifications.length} new notifications to Telegram. Latest ID: ${latestId}`);
    } else {
      console.log('No new notifications.');
    }
  } catch (error) {
    console.error('Error checking notifications:', error);
  }
}

// 从 Mastodon 获取通知
async function fetchMastodonNotifications(sinceId) {
  const url = new URL(`${config.mastodon.instance}/api/v1/notifications`);
  url.searchParams.append('exclude_types[]', 'follow');
  url.searchParams.append('exclude_types[]', 'follow_request');
  url.searchParams.append('since_id', sinceId);
  
  const response = await fetch(url.toString(), {
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
      'Authorization': `Bearer ${config.mastodon.accessToken}`
    }
  });
  
  if (!response.ok) {
    throw new Error(`Mastodon API error: ${response.status} ${response.statusText}`);
  }
  
  return await response.json();
}

// 发送通知到 Telegram
async function sendToTelegram(notifications, env) {
  // 按时间倒序排列通知
  notifications.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
  
  let message = `📨 你有 ${notifications.length} 条新通知:\n\n`;
  
  notifications.forEach(notification => {
    const sender = notification.account; // 通知发起者
    const senderName = sender.display_name || sender.username;
    const senderHandle = `@${sender.acct}`;
    const senderUrl = sender.url;
    
    // 根据不同通知类型构建不同消息
    switch(notification.type) {
      case 'mention':
        const mentionContent = stripHTML(notification.status.content);
        message += `💬 <b>${senderName}</b> (${senderHandle}) 提到了你:\n${mentionContent}\n\n`;
        break;
        
      case 'reply':
        const replyContent = stripHTML(notification.status.content);
        message += `↩️ <b>${senderName}</b> (${senderHandle}) 回复了你:\n${replyContent}\n\n`;
        break;
        
      case 'reblog':
        const reblogContent = notification.status 
          ? stripHTML(notification.status.content) 
          : "[内容不可用]";
        message += `🔁 <b>${senderName}</b> (${senderHandle}) 转发了你的嘟文:\n${reblogContent}\n\n`;
        break;
        
      case 'favourite':
        const favContent = notification.status 
          ? stripHTML(notification.status.content) 
          : "[内容不可用]";
        message += `⭐ <b>${senderName}</b> (${senderHandle}) 喜欢了你的嘟文:\n${favContent}\n\n`;
        break;
        
      case 'poll':
        message += `📊 <b>${senderName}</b> (${senderHandle}) 的投票已结束\n`;
        break;
        
      case 'follow':
        message += `👤 <b>${senderName}</b> (${senderHandle}) 关注了你\n`;
        break;
        
      case 'follow_request':
        message += `🫂 <b>${senderName}</b> (${senderHandle}) 请求关注你\n`;
        break;
        
      default:
        message += `ℹ️ 你有一条新通知 (${notification.type}) 来自 <b>${senderName}</b>\n`;
    }
  });
  
  // 添加来源链接
  message += `\n查看所有通知: ${config.mastodon.instance}/notifications`;
  
  // 发送到 Telegram
  const url = `https://api.telegram.org/bot${config.telegram.botToken}/sendMessage`;
  
  const response = await fetch(url, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      chat_id: config.telegram.chatId,
      text: message,
      disable_web_page_preview: true,
      parse_mode: 'HTML'
    })
  });
  
  if (!response.ok) {
    throw new Error(`Telegram API error: ${response.status} ${response.statusText}`);
  }
}

// 去除 HTML 标签
function stripHTML(html) {
  return html.replace(/<[^>]*>?/gm, '');
}

配置KV和定时执行

去Cloudflare Worker设置页面绑定KV和设置定时执行。

除了定时执行外,你还可以用 https://wokrerurl.dev/check 手动触发

258、谷雨

2025年4月20日 09:47

null

谷雨时节,春雨润物,万物生长,宜早睡早起,顺应阳气升发。晨起可漫步庭院,吸纳清新之气,活络筋骨,畅通气血。饮食宜甘淡平和,多食芽菜、香椿、荠菜等时令春鲜,少食生冷厚味,以健脾祛湿。
此时肝气渐弱,心气将旺,当调畅情志,戒怒戒躁,保持恬淡安然。衣着需随温增减,尤护腰腹,防湿邪入侵。常饮谷雨新茶,清火明目,助排浊气。运动宜选八段锦、慢步等和缓方式,滋养阳气而不耗散。

宜宾李庄、僰王山一日游

2025年4月12日 23:46

飞雾洞

这些年的清明节几乎都是在小雨中渡过,今年依旧不例外。

好在假日后的第一个工作日天气转晴,川内大部分地区的温度几乎是直线上升,自贡气温也临近了30°,似乎春夏的界限在这几天又开始模糊起来。

起因是平时不怎么会主动想出去玩的母上大人在清明节最后一天提出想出去转转,不过清明节三天,天气都不太好,而且假期中的后两天还漂着毛毛雨。所以和她商量了一下,我们换个班,换到了节后的第一个工作日出去,既能错峰出行,也能有个好天气。

因为只有一天,所以不能走太远,还要有充足的游玩时间,所以车程得压缩到2个小时之内。

之前 内江甜城一日游 去过一次内江,体验还是非常棒的。不过内江我们已经去过了,得换个对我们来说有新鲜感一些的。

目的地

在做攻略的时候想起之前徒步群内有群友策划过去 宜宾僰王山 徒步,宜宾离自贡也就100来公里左右,不到一个小时即可抵达,是十分不错的目的地。

其实宜宾我在很多很多年前来过一次,第一印象是——酒香!

我们当时走的老路去的宜宾,开始进入宜宾地界没多久,忽地就闻到一股淡淡酒香,开窗四处眺望无果,只发现我们正在经过一条长江支流,当时心理想着:真不愧是是五粮液产地、酒都宜宾,这河里都她妈是一股子淡淡酒香味。而后复行一里地后才发现经过一家酒厂时才恍然大悟,所以之后只要一闻到就为就能知道旁边必定有酒厂无疑了。

我们当时是自驾去的蜀南竹海,盛夏的十万亩竹海在微风的吹拂下用竹叶给我奏响了大自然的舒缓乐章我至今难以忘记。但是竹海除了竹子其他能有深刻体验的项目太少了,所以这次被我放弃了,准备还是以群友们之前去过的僰王山为主来做路线规划。

  1. 这次准备先去,因为做攻略的时候发现市区有好几个景点,担心李庄古镇玩起来太单薄所以先去,其次李庄白肉享誉全国,中午饭可以在镇子上解决,而且古镇临江而建,自有一股江南水乡的韵味。
  2. 然后去这次重点目的地 僰王山 ,山里的核心景点 飞雾洞 幽暗诡秘,十分有盗墓笔记的感觉,山中连绵不断的竹林和数个瀑布相信也会有不一样的体验,而且恰逢开春说不定还能挖到竹笋。
  3. 最后晚上再赶去合江门,逛一逛冠英古街,感受一下宜宾人的夜生活。

最后行程规划如下:

  • 8点30出发
  • 10点到李庄古镇,游玩加吃饭下午1点左右出发去僰王山
  • 2点左右到僰王山,开始爬山,来回两个小时,5点左右往回走去合江门
  • 7点左右到合江门,吃晚饭看夜景。
  • 接下来看时间回家。

总结

当时想着李庄离市中心比较远,又只是一个古镇,万一踩坑了就没地儿玩了,所以安排的上午去李庄,晚上去市中心。其实可以白天去晚上也去,听说晚上还有节目表演和白天是不一样的风格。

僰王山只有核心景点飞雾洞最值得一看,其他景点都有点可有可无了。

这种一天来回的旅程真的很不错,强度不会很高,也有非常不错的体验,以后可以常安排。

图记

下了高速不久就能看见长江大桥。

长江大桥

到了李庄停在了月亮田的停车场,在车库里进入了一个古建筑,似乎是一个酒店的大唐,雕梁画柱,气派的很。

李庄建筑

江南水乡味十足的李庄古镇。

水乡

水乡

古镇内

中午吃的李庄白肉,片肉的师傅说每片肉在2mm左右,肥而不腻。

李庄白肉和小煎鸭

吃过饭休息了一会便赶往了僰王山,竹林之内的僰王山特别凉快。

1. 僰王山入口 2. 山内石径

飞雾洞入口

探洞

天坑一景

下山时还在路边偷了春笋一根,哈哈。

第二天炒了腊肉,味道好极了。

春笋

合江门很热闹,三江交汇之处,也是老百姓们晚间活动的地方。

合江门两景

好像国外哪里也有个这个玩意儿,是拉斯维加斯吗?

3D小巨蛋

一大群叔叔阿姨、大爷大妈群魔乱舞,算是感受到「酒都人民」的松弛感了。

酒都人民的夜生活

入夜后的夹镜楼更漂亮了。

夹镜楼

冠英古街内的合江园

Memos同步至Mastodon(长毛象)

2025年4月12日 18:26

Photo by Chethan / Unsplash

我一直把Memos当作微博来用,偶尔也会手动同步到长毛象,但也只是偶尔。原因是即便在用梯子的情况下长毛象打开也太慢了,毕竟大多数实例都在墙外,且长毛象挺吃服务器资源的。

目前又不太想自建实例,虽然现在弄了NAS,理论上可以搭在上面,但是Ghost似乎在6月份要推出联邦宇宙服务了,到时候可以直接迁移到那个上面去,也就一直没下手。

之前看到过蜗牛哥出过一期长毛象同步到Memos的方案,和我的需求是相反的,因为今天周末恰好有空,所以就捣鼓了一下,弄了一版。

因为Memos可以设置WebHook调用,所以我的思路是:

Memos发布 -> 触发WebHook调用 -> 数据转发给Cloudflare Worker -> Worker里用Mastodon API发布嘟文

实现

先去长毛象上申请Access token ,路径为 :

偏好设置 -> 开发 -> 创建新应用 -> 起个名字,勾选 write:statuses、write:media 权限

然后就是Cloudflare Worker的实现了,我用DeepseekR1跑了一版,稍加改动就能初步使用了。

💡
如果你的Memos服务器在国内,那可能需要给Cloudflare worker绑定一个域名,不然会无法访问。
// cloudflare-worker.js
const MASTODON_INSTANCE = ""; // 实例地址
const ACCESS_TOKEN = ""; // 访问token

async function uploadMediaFromUrl(imageUrl, mimeType) {
  try {
    // 从 URL 获取图片数据
    const imageResponse = await fetch(imageUrl);
    if (!imageResponse.ok) throw new Error(`下载图片失败: ${imageResponse.status}`);
    
    // 转换为可上传的格式
    const blob = await imageResponse.blob();
    const formData = new FormData();
    formData.append("file", blob); // 文件名按需处理
    
    // 上传到 Mastodon
    const uploadRes = await fetch(`${MASTODON_INSTANCE}/api/v2/media`, {
      method: "POST",
      headers: { Authorization: `Bearer ${ACCESS_TOKEN}` },
      body: formData
    });
    
    if (!uploadRes.ok) throw new Error(`上传失败: ${await uploadRes.text()}`);
    return uploadRes.json();
  } catch (error) {
    console.error("媒体上传错误:", error);
    throw new Error(`图片处理失败: ${error.message}`);
  }
}

async function handlePost(request) {
  try {
    const { memo } = await request.json();
    const { content, visibility, resourceList = [] } = memo;
    
    

    // 验证内容
    if (!content) return new Response(JSON.stringify({ error: "内容不能为空" }), { status: 400 });

    // 处理最多 4 张图片
    const validResources = resourceList
      .filter(res => res.type?.startsWith("image/"))
      .slice(0, 4);

    // 并行上传所有图片
    const mediaUploads = validResources.map(async res => {
      const media = await uploadMediaFromUrl(res.externalLink, res.type);
      return media.id;
    });

    const mediaIds = await Promise.all(mediaUploads);

    // 构建嘟文参数
    const params = new URLSearchParams({
      status: content,
      visibility: visibility.toLowerCase() || "public" // 默认公开
    });
    mediaIds.forEach(id => params.append("media_ids[]", id));

    // 发布嘟文
    const postRes = await fetch(`${MASTODON_INSTANCE}/api/v1/statuses`, {
      method: "POST",
      headers: {
        Authorization: `Bearer ${ACCESS_TOKEN}`,
        "Content-Type": "application/x-www-form-urlencoded"
      },
      body: params
    });

    if (!postRes.ok) throw new Error(await postRes.text());
    return new Response(JSON.stringify(await postRes.json()), { status: 200 });
    
  } catch (error) {
    console.error("处理错误:", error);
    return new Response(JSON.stringify({ error: error.message }), { status: 500 });
  }
}

// Worker 入口
export default { fetch: handlePost };

CloudFlare Worker代码

给Memos启用Webhook

设置 -> 偏好设置 -> Webhook -> 创建 -> 起个名字,填入Cloudflare Worker的地址

一些不足

这种方式同步速度应该会稍快,但是还是有一些限制,比如

  1. 图片太大超过Worker可运行时间会上传失败。
  2. Mastodon API好像最大只能传4张图片。
  3. 向Memos的TG机器人发的消息不会触发Webhook。
  4. 长毛象好像不支持 Markdown。
  5. 我使用的Memos后端版本为 v0.18.1
  6. 等等,目前只发现上面2个,应该不止。

257、清明

2025年4月4日 22:51

晚上出门散步,路边画坛的小蘑菇

清明时节,阳气渐长,宜早起散步,呼吸新鲜空气,舒展筋骨,调和气血。饮食宜清淡,多食新鲜蔬菜,少食油腻辛辣,以养肝护脾。
心境宜平和,避免情绪波动,保持乐观心态,以顺应春生之气。适时添减衣物,防寒保暖,以防春寒侵袭。多饮温水,促进新陈代谢,排毒养颜。适度运动,如太极、瑜伽,以增强体质,提升免疫力。清明养身,顺应自然,方能健康长寿,福寿安康。

今天放假,和S终于能安安心心休息一天了。

一直睡到十一点起床,发现爸还在家,便叫上S出门中午的菜,S做了一个川味的腰花,我做了一个孜然鸡腿肉,都挺成功了。

上午出门的时候下了一部短剧 《家里家外》,下午两口子便我在沙发上看完了,全四川话台词的小短剧,还挺过瘾的,演员演技也还算在线,因为是短剧,所以笑点、爽点都很足。

256、春分

2025年3月20日 11:21

null

春分时节,昼夜均分,阴阳平衡,养生之道亦需调和。
此时,万物复苏,阳气渐升,宜早睡早起,顺应自然。
饮食上,宜清淡为主,多食新鲜蔬菜,如菠菜、韭菜等,以养肝明目。

254、雨水

2025年2月18日 11:53

null

脾土润泽运水谷,慎避地湿浸腠理。
此时天地阳气初萌,地气升腾化雨,养生当以护脾胃为要。饮食宜增甘减酸,多用山药、茯苓、莲子等甘淡之品健脾渗湿,晨起可饮陈皮姜米茶温运中焦。春寒挟湿尤伤下焦,宜着护腰腹,睡前以掌心熨关元穴九转。情志贵在疏达,可临窗观雨听檐滴,使肝气如草木逢润,舒展而不亢逆。

无题

2025年2月15日 09:49

生活苟且,为碌碌无为而羞愧。

当然,并不指要挣到多少钱,而是自己问心有愧,活的不够自我和尽力,对不起自己。

253、立春

2025年2月3日 22:33
阳气上升,万物更生,新岁开启

新的一年来了,祝各位博友,巳巳如意,福启新岁。

My App Defaults 2024

2025年1月21日 10:48

Photo by Iyus sugiharto / Unsplash

看到仓颉小胡都在发,也做个整理。

记录一下过去一年的常用应用,明年此时再更新,观察是否有所改变。

📨 Mail Client: 用的企业微信自带的邮件功能。。
📮 Mail Server: 如上。
📝 Notes: 基本上抛弃其他笔记软件了,主要使用Obsidian,同时还能自动发布数字花园 「好奇心花园」。
✅ To-Do: 企业微信代办功能、Obsidian的TODO List。
📷 iPhone Android Photo Shooting: 使用 小米12s Ultra 系统自带相机。
🟦 Photo Management: OneDrive 和 Google Photos。
📆 Calendar: 企业微信日历,同时同步到手机端。
📁 Cloud File Storage: 使用Alist,搭配OneDrive、百度网盘、123盘等,Windows上的文件同步等还是主力使用OneDrive,同时使用Syncthing对手机和电脑的部分文件进行同步。
📖 RSS: Miniflux 和 follow
🙍🏻‍♂️ Contacts: 使用系统自带联系人应用。
🌐 Browser: PC 端 Chrome,手机端 Via。
💬 Chat: 微信、QQ、Telegram 。
🔖 Bookmarks: 感兴趣的网站会存在 Memos 上,并打上对应的标签。
📑 Read It Later: 感觉这个需求对我来说是垃圾篓,所以没用。
📜 Word Processing: Obsidian为主,同时搭配 Notepad4
📈 Spreadsheets: WPS的一个精简版本。
📊 Presentations: 没有这方面的需求。
🛒 Shopping Lists: 一般直接加到购物车里。
🍴 Meal Planning: 刷抖音、B站、小红书等跟着做,或者有想吃的菜去微信小程序「下厨房」找菜谱。
💰 Budgeting and Personal Finance: 一木记账,应为有自动记录功能,目前几乎所有出账都做了登记。
📰 News:  follow,TG频道。
🎵 Music: lxmusic
🎤 Podcasts: 我的听书。
🔐 Password Management: vaultwarden

以下是小胡文章中提到的 extra categories 部分:

✈️ VPN: 路由器上MihomoProxy,移动端使用 FlClash
😘 Blog Platform: Ghost+Astro+GithubAction的构建流。
⌨️ Text input: PC 端使用小狼毫搭配雾凇方案,手机端为小企鹅搭配雾凇方案,输入法方案为小鹤双拼。
📖 Translation app: ​Pot以及一些AI工具。
📚 Reading app: 微信读书。
🔧 Screenshot app: Pinx。
🌁 Image Hosting: 感谢又拍云联盟。
☁️ VPS Hosting: 腾讯轻量云。

Ending

252、大寒

2025年1月20日 11:05

null

神志深藏于内,避免急躁发怒

节气的照片终于论完一次了,这一个轮次的引用信息为百度百科节气中关于「养身」的谶语。

用峨眉山的第一缕阳光给25年开个好头【完】

2025年1月6日 12:54

null

夜爬峨眉山强度挺大的,不是那么好拿捏,不要被抖音、小红书给你洗脑了!
去之前一定要能理解爬20多公里的楼梯是个什么概念!
我应该不会再爬第二次了....!

感冒

上次写完行程规划之后,不知道是不是早上晨跑衣服穿少的缘故,我忽然得了重感冒。

那几天开始全身酸痛,同时伴有咽痛、咳嗽,而且连续两个晚上发烧 + 白天退烧,为了不影响 31 号的出发,所以请了两天假在家中休息,调养。

好在出发前的早上,感冒的大部分症状都痊愈了,但是还是能明显感觉到体力依旧还是没有恢复。但是行程、人员都已经确定好,可不能放大家的鸽子。

所以不管如何都要先把大家送过去,如果身体实在跟不上就放弃徒步上山,坐观光车上金顶去等大家。

人员

在前面的行程规划一文中提到了当时确定要去的只有我、霜、小罗三人,我到时候打算开我台上不了台面的破 7 坐面包车过去,因此最好还是再找至少 4 人同行,以最大化平摊大家的费用,同时因为人多了后,玩起来也更有意思。

所以,出发前的几天我们就陆续在自己熟悉的圈子内寻找合适同行的队友,但是我这边进展不太顺利,频频碰壁,其中一个户外微信群居然还直接把我踢出群,不过我也庆幸被踢出去了,玩户外的这么小心眼即便在玩在一起也不会有多大意思。

好在小罗那边进展顺利,一直都有拉人进来,虽然其中有些朋友因为行程问题、装备问题赶不上,但是都非常好沟通,部分表示虽然这次不能参与,但是依旧期待下次同行。

最后,在出行前一天把终于把人员都确定好了,分别为:我、霜、小罗、太阳(兵哥哥)、vivi 姐、高兴哥、成歌。

1.太阳 2. 小罗 3. 霜 4.我 5. 成歌
1. 高兴哥 2. vivi姐

集合

31 号集合日当天,晴空万里艳阳高照,因为有成员担心赶不上日出,所以们把集合的时间提早了一个小时,也就是中午十二点。

我们是第二个到集合地点的,最先到集合地点的是小罗,她依旧穿着上次的淡绿色冲锋衣,装备齐全,精神头看起来不错。她男朋友这次有事,没有和她一起同行,小伙子倒还挺胆大的,也不怕女朋友被其他单身汉给挖走了,哈哈哈。

之后是成歌,是一位 50 多岁的大哥,湖北人,性格和蔼沉稳,非常好相处,脸上时刻带着和煦、云淡风轻的微信。他因为工作缘故经常在各地出差,又喜欢户外运动,所以经常在各地出差的时候就会参与当地的户外活动。别看大哥年纪上去了,可是个十足的老鸟,爬过的山都数不清了,还去冈仁波齐转过山。

然后是 vivi 姐和高兴就好哥,他们是两口子,年纪应该 40 左右把,装备齐全,透着一股子专业劲。高兴哥是退伍军人,平时喜欢摩旅,微信头像就是他摩旅的照片,非常帅。他们其实也去过非常多的地方旅行,但是这是他们第一次进行户外徒步。

最后就是太阳了,也是一个兵哥哥,性格腼腆,后续登山的时候也不爱参与拍照,而且他过来的时候把我们给惊呆了,原因是他居然没有登山包,拿的就是一个白色的大单肩挎包,也没有登山杖,雪爪等等,补给也就带了一盒饼干和一些能量饮料,他说没什么问题,他们当兵时再难的都体验过,我们想着实在不行山上也有的买,就到时候再说
了。

登山

自贡出发到峨眉山只有 150 多公里,全程都是高速,一个多小时就能到,一路上阳光万里,倒也不觉得累,不多时就到了报国寺,还没进停车场就一大堆大爷大妈上来给我引导停车,一个劲的给我往另外一个山坡上引,估摸是当地的村民拉收入呢,我最后还是停在了报国寺的官方停车位上,贵了 5 元一天,停车场管理员还给我们送了一个红色的祈福带。

然后就是下车收整行李,因为没有住宿,其实大家带的东西都不多,唯一多的是这次在山上吃火锅需要用到的东西,一套一次性铝锅盒燃料,然后两大包食材,霜怕山上海拔高煮不熟,把牛羊肉、丸子都提前煮好了,上山后烫一烫便能开吃,我包里放了面饼,丸子、肉给经验、体力更好的成歌大哥,一次性铝锅给了高兴哥,我老婆则背上了香菜、蒜沫等配料。

然后我们便迎着 3 点的斜阳出发了。

传过停车场便来到一处广场,右侧是报国寺,我们在入口处拍了一个出发视频。

之后要步行 30 多分钟后到达雷音寺才算是正式开始爬山之行。

不过不要高兴太早,目前我们连检票处都还没到呢,接下来的十几个小时将会是无尽的楼梯与我们相伴,期间还会经过猴区、高山区。

现在有多兴奋,之后就会有多狼狈。

遇到的第一个红牛墙。

不知道是不是感冒刚好,还是因为冲锋衣没到,我穿的羽绒服散热不好的原因,体力消耗的非常快,才走了一个多小时就感觉自己被掏空了,只感觉浑身都是汗水,脚也重的抬不起来。

接近 5 点时到达圣水阁

山民搭建的原始蜂箱

到达清音阁,这边是一个分叉路口,分上行和右行两条路,上行是去往九十九道拐方向,另一侧则是去往报国寺方向。

经过猴区,峨眉山的猴子和地痞流氓差不多,会强抢你身上任何有颜色的饮料,塑料袋,零食,经过这里时最好拿衣服罩住你的包。

在这里把直接放在高兴哥背后的一次性铝锅接了过来,用的外套罩住,不然肯定要遭殃,不过因此我也没有余力带着我老婆了,中途被猴子隔开,等了她好久,着实是无奈之举,如果不护着锅,晚上可就没得吃了。

穿的老婆的羽绒背心,狼狈不堪

到达洪春坪,天色已经完全暗下来了,开始需要头灯照明,我也彻底红温了。

开始攀爬让人闻风丧胆的九十九道拐,垂直落差 300 米,迂回 2500 米,约有 1840 余石阶。

路上遇到了一只网红猫,入夜降温,估计它冷的不行,看我坐在椅子上,直接就跳到我身上来取暖。

晚上九点半,开始进入雪线。

到达财神庙门口,我的羽绒服内里已经完全打湿,我索性将衣服反穿,终于没那么闷热了。

霜的表现则完全不像是第一次爬山,一路上健步如飞,如履平地。

路上的其他登山者看到都不由纷纷侧目,不由发出大佬牛逼的惊叹,基本上都是她走到前面后等我爬上去,休息一会后再继续出发,期间为了帮我减重还和我互换了背包,我可是彻底成为了拖后腿的人了。

财神庙门口的阶梯

到财神庙这里我才发现我们的队伍已经分成了三个梯队,小罗、成歌一个梯队,已经远远跑在了前面,我、霜、太阳,我们三个则是第二梯队,后面则是 vivi 姐、高兴哥。

小罗太牛了,上次笔架山之行他们也是第一梯队,紧紧跟着向导,这次又没落下 ,和老驴成歌同步,这时我就不由感叹,年轻真好。

本来我们是打算在财神庙吃火锅的,但是因为我们第二梯队、第三梯队落后第一梯队太远,他们等了我们半个小时我们都还没到,所以他们去了下一个地方等我们。

我们在财神庙休息了半个小时,在出发后终于碰到了 vivi 姐他们,他们为了赶我们,都没在财神庙休息。

我们本来盘算着的是聚在一起后大家吃着火锅跨年,小罗、成歌他们在上面的遇仙寺等我们,我们估摸着还要个半个小时才能到。

但是此时已是夜晚 11 点 58,已经临近跨年,我们和 vivi 姐、高兴哥、太阳和路上爬山的小伙伴们都相继在拐角处停下,大家开始倒计时,等待着阳历新年的第一秒到来。

终于到达遇险寺,小罗、成歌已经等了我们半个多小时,表示这个地方太冷了,可算把我们盼来了。没有废话,直接去寺庙拿了热水,架锅,准备吃火锅。

当火锅底料放入锅内,滚烫的热水浇灌在底料上时,火锅的香味开始慢慢弥漫,寺庙门口的小广场上开始随着山风飘荡起了火锅的香味,接下来是放入牛肉、羊肉、牛肉丸、鱼豆腐、金针菇,把矿物油小炉子放在锅下,点燃后稍热便能吃了。

其他路过的小伙伴都不可思议的看着我们的锅,不少人还跑过来拍照,这一刻我们都感觉背着这么多东西爬山的辛苦都值了,哈哈哈。

最后吃完用火锅汤煮好的泡面后我们便接着出发了,目前已经爬了十多个小时了,还有七八个小时的路程在等着我们。

雪已经挺厚的了。

山上的光污染很弱,能看见不少星星

又一个难关:钻天坡

夜眺峨眉市

山上积雪覆盖的台阶,走多了都自然而然的变成了这种规律的小三角坑。

到达洗象池!这里开始精神、肉体能量已经双双见地,霜也有点顶不住了,说走路都是飘的。不少爬山客选择在洗象池的大厅里眯一会。

接着爬!碰到一个穿短裤的大佬,前面看他从山下往山上跑着登山,这会儿居然已经从金顶下来了了....从金顶....下来了,你敢信??

路过一个休息点,买了一个 10 元的苹果,12 元的八宝粥,18 元的冷量饮料。

这个休息站有火盆,本来想着顺便烘烤一下衣服,哪知道把羽绒服屁股后面的下摆烧坏了...。

眼神已经迷离、恍惚,坐下就想坐化...。

还有多久是每一个休息点老板回答的最多的问题,但是不用问都知道还有很久很久!

到!雷!洞!坪!拉!!!!

我们实在走不动了,选择坐缆车上金顶,雷洞坪到缆车那里工作人员说很近,一会儿就到,但是我们怎么就感觉始终走不到呢?

等索道的人们

在索道上能看到即将日出

大家互相祝贺新年快乐。

烧香祈福

金顶遥望雪山

看日出

专门买了个小旗子拍照

才发现我衣服还是反穿着呢。

勇闯天涯一下

最后再来点情绪照片

251、小寒

2025年1月5日 18:07

null

跨年时峨眉金顶日出和第一缕阳光
### columns1 Lorem markdownum insigne. Olympo signis Delphis! Retexi Nereius nova develat stringit, frustra Saturnius uteroque inter! Oculis non ritibus Telethusa protulit, sed sed aere valvis inhaesuro Pallas animam: qui quid, ignes. Miseratus fonte Ditis conubia. --shortcode--
### 副标题 Markdown内容。

用峨眉山的第一缕阳光给25年开个好头【一】

2024年12月27日 12:15

峨眉山官方图片

自上次笔架山之旅后,对山的渴望就像是心底深处的地下泉水被打通了一般狂涌而出。

前几天林老师他们又在群里谋划着去峨眉山夜爬 ,不过不巧的是他们的时间和赶不上,但是又被他们把瘾给钓了起来。

所以想着:「实在不行就我们自己去吧?」

而且又恰逢新年的这个节点,干脆去感受一下新年的第一缕阳光,并且虔诚的去拜拜菩萨,希望能赶走去年的坏运气,新的一年顺顺利利。

所以,有了以下的规划。

目前人员为我,老婆,小罗,目前还在招募队员中。

夜爬峨眉行程规划

两步路助手路线图:2024-02-07 爬峨眉山(报国寺~峨眉山金顶)-GPS导航轨迹下载|行程线路图-步行轨迹-两步路

24 年 12 月 31 日 Day1

  • 下午 1 点左右出发,3 点左右到报国寺
  • 4 点左右开始上山,预计 15 个小时左右,总计 27 公里,3068 米爬升
    • 日出时间为早上 7 点 59,尽量争取在 8 点前到达。

25 年 1 月 1 日 Day2

  • 早上 7-8 点到金顶,烧香拜佛拍照 1 小时。
  • 9 点后坐索道去雷洞坪,缆车大概十来分钟到,然后再走一个小时左右的楼梯到雷洞坪坐车下山,大概 2 小时。
  • 预计 12 点左右到报国寺,大家吃中午饭。
  • 下午 3 小时自由时间,滑雪、温泉
    • 要滑雪的在雷洞坪滑,滑完在时间内到报国寺集合
    • 温泉我选的红珠山森林温泉,价格在下面有提到
  • 结束后 4 点左右出发去乐山找吃的
  • 回家

注意事项

  • 注意高反,要在两三千海拔高强度徒步,死可能死不了,但会无力继续攀爬。
  • 心脏病高血压等疾病别爬,坐车,要听劝!
  • !当天拉肚子、心悸、胸闷、低血糖、头疼...等身体不适的,请直接坐车,一点小问题在山上都会被放大!
  • 要有一定的体力基础,力量、爆发力等身体素质在这没多大用,全靠心肺和肌耐力。马拉松、越野跑、铁三等项目的选手大多没问题,请随意
  • 全程 27 公里左右,爬升约 3390m,下降约 830m,强度大概相当于平地快走 60 公里,请自行斟酌。

准备清单

装备、实物等

  • 速干 T 恤 (千万别穿纯棉,出汗后会很冷)
  • 冲锋衣 (防雨,厚点,最好是可拆卸内胆)
  • 冲锋裤 (防雨)(瑜伽裤鲨鱼裤会冷死)
  • 便携雨衣,建议买好点材料的,不容易坏。
  • 鞋 (轻便、防滑、防水)厚长袜 (不磨脚,两双换)
  • 登山杖:看个人,省力,防膝盖不好的带护膝,如果下雪带冰爪
  • 背包 (中等大小,双肩,专业的最好)
  • 塑料鞋套
  • 雪爪,必须带哈,不要那种建议的,买链式的
  • 能量胶、盐丸、士力架、香蕉、橘子等高热量食物
  • 保温杯(不结冰)、软水袋 (轻,很多地方可补水)
  • 身份证、手机
  • 电筒 (或头灯),这个最好都备个头灯,夜晚山上黑。
  • 充电宝 (路上拍摄多的话)
  • 如果要泡温泉的话要带泳衣。

门票

  • 峨眉山门票 108¥
  • 金顶索道单程票,20¥
  • 交通票,山脚至雷洞坪的往返观光车票 45¥
  • 温泉票,我买的峨眉山红珠山森林温泉,在报国寺附近,单人 136.3,双人 267,三人票 398.8,想去温泉的可以互相拼一下票,更划算。
  • 滑雪场在雷洞坪,上午场 116.5 一小时,232 两小时,含雪具。

户外保险

  • 自行上淘宝、jd 购买户外保险,保额 20w,大概 5 元一天。

24、冬至

2024年12月22日 09:55

null

一候蚯蚓结;二候麋角解;三候水泉动

四川自贡冬至的习俗为食服滋补药食。

冬季自古以来就是滋补季节,更有俗语「冬季进补,来年打虎」之说法,寒冷冬季食用大补药膳却不必担心过补上火的问题。

通过搭配不同滋补功效的药材,辅以猪脚、鸡鸭、猪肚等食材小火慢慢炖煮,晚餐十分,全家人齐聚餐桌前,一人一个小碗乘上热气腾腾的汤汁,真是好不惬意。

DIY明信片互换计划

2024年12月19日 12:38

null

前些天收到了 品味苏州 小伙伴发来的明信片,非常欣喜。

在现在网络发达、信息快餐化的时代,能有一封经过漫长里程、时间送到你手上的信件,会更能体会到时间的味道。

因为我刚好有一台彩色打印机,每次出去玩了以后会习惯性把出行的照片精选一些打印出来放到相册里。这次在打印时我就在想:「既然我有打印机,那我能不能每次出去玩了以后自己做一些明信片寄给这些好友呢?」

打印的相片

所以昨天试着找了九张此次出行的照片,并调色打印,设计了一版,附上了临时想到的标语「现在网络太快,所以跨越千山而来的信件更值得我们等待和珍惜...」。

感觉效果好像还不错?

明信片背面

从左至右,从上到下,分别为1至9

所以,我也准备开启一个明信片互换计划。

各位小伙伴可以可以直接留言你的收件信息,并说明你要的图片序号,我会在看到你的留言后给你寄出。

我的博客已经开启审核模式,你们发出的信息不会直接公开展示,不用担心自己的信息泄露,我会在删掉你们的收件信息后通过留言审核,我会认真根据我对你的了解和想法填写后面给你的留言,祝好。

我需要第6张照片。
收件信息:
- 姓名:1900
- 地址:四川自贡xxxxxxxx
- 邮编:643000

另外;

家里没有打印机,也想自己做这种明信片的朋友,可以试着在淘宝、PDD找找代打服务,价格非常便宜,有众多模板可以选择,只需要简单把照片发给商家即可。

不知道能否号召大家一起参与这个活动,把自己的快乐,所看到的风景,想说的话传达给远在千里之外的另一个人。

谢谢。

川西笔架山,冬季雪山登山实操

2024年12月19日 12:17

null

前言

因为经常有看到阿均哥在周末时间出去爬山,很是羡慕。

我其实也是非常喜欢户外运动的人,2014 年和朋友去过一次牛背山,2015 年去过一次阿合哈洛,其实这种集体户外出行有不少好处:

  • 一是每次出行都是十来号人,一车形形色色的人在一起,在旅途中互相帮助、认识、了解、解放自我,总是能擦出不一样的火花,也能将平时积累的压力在旅途过程中完全释放出去。
  • 二是因为人多,旅途中产生的各种费用都大大降低了。

所以也想着自己能不能也经常这样出去玩一玩。

2014年牛背山徒步

2015年啊合哈洛徒步

驴友群

所以向他询问了都是通过什么渠道找的出行队伍,后被告知是加入了当地的一些户外微信群,跟着群里的其他人一起出行的。

在那之后偶然在骑行群里看到其他骑友说周末要跟着户外群里的人去爬山,所以顺嘴说了一下,让对方拉我进群,然后一下就像是打开了潘多拉墨盒,东拉西拉的进了三四个户外群里,这才知道原来我们这个小地方也有这么多活跃分子,几乎每周都有组团出去玩的驴友。

这些驴友群的组员出行规则几乎都是统一的

  • 出车的司机不承担邮费、过路费
  • 提前买好户外保险,一般在 20w 保额的在 5 元一天左右
  • 其他公共费用大家 AA。
  • 各自承担自己的风险。

因为行程有长有短,蹲了一两天后才加入了标题中提到的「笔架山冬季登山」活动。

笔架山冬季登山

景点介绍

笔架山位于四川理县,木卡羌寨前行 10 来公里左右,总徒步距离来回 14.47 公里,预计花费时间 5-6 小时左右,总爬升 1343 米,最高海拔 3766 米。上山后积雪覆盖,几乎没有路,可以说是一条完全的野生线路,有一名当地向导带路。

笔架山徒步路线图

人员

本次出行原本是 10 人,后有两人临时有事放弃,最终 8 人出行,两对情侣,另外 2 男、2 女。平均年龄没超过 35 岁。

行程安排

  • 第一天:星期六中午一点左右出发,司机来接的我们,开车 4 个小时左右到达理县,下高速后走 8 公里盘山公路,到达第一晚露营地「坞瓦布露营地」,晚上就着日落吃烤鸡烤兔 + 铁板烧烤,然后围着篝火唱歌喝酒。
  • 第二天:早上 8 点起床,客栈安排了当地的手工面 + 煎鸡蛋,吃完后 9 点左右出发爬山,整个行程走完下午 6 点左右回到露营地,吃完牦牛火锅后返程回家,最后 11 点 30 到家。

费用

  • 油费 + 过路费 380
  • 住宿 + 餐饮 492 两人
  • 合计 380+492=872

装备

冬季登山危险系数不比平日 ,所以装备一定要带齐全。我这次爬山除了没带登山杖,其他装备基本上都准备没有问题。

  • 贴身穿速干衣物:上衣可以是跑步的速干衣,下面穿速干骑行裤或者瑜伽裤,因为在登山过程中会大量出汗,普通棉质保暖衣可能无法快速排汗,会导致失温。
  • 保暖内衣两套:一套穿在速干衣物上面,另外一套备用。
  • 冲锋衣三件套:没有的话穿耐磨的羽绒服之类的也行。但是一定要是防水面料,避免粘上积雪,溶化后把里衣打湿。
  • 毛线帽:主要是要护住耳朵,在穿林时最好把冲锋衣帽子带上,避免落下的积雪掉进衣领。
  • 手套:这个一定要准备一款好一点的防水手套,进雪水后的冰凉感你一定不会想体验的。
  • 袜子:厚一点的长筒羊毛袜,多备几双,方便意外替换。
  • 雪套:这个一定要备,山上积雪厚的话没有雪套你的鞋几分钟就湿透了,冰冷的脚会加速失温。
  • 冰爪:雪地必备,增加摩擦力,避免打滑,这次我是在半山出现落叶堆积腐烂打滑后开始装备上,瞬间就不打滑了,下山时也能避免脚滑跌倒,非常好用。
  • 登山鞋:高帮登山鞋最好,可以保护脚踝,更保暖,也不容易进雪水。
  • 墨镜:雪地里反光容易雪盲,必备,其实骑行那种防风镜要更好一些,不容易掉,而且保护的更周全。
  • 登山杖:最好两根,质量一定要好,折叠优先,实在没有也可以在山上砍截树枝替代,我这次没带,用的树枝,也没啥问题,下山的时候别用,容易打滑戳伤自己。
  • 防晒:山上紫外线强,做好皮肤保护。
  • 登山包:最好是有背负、透气系统的背包,耐磨系数要高。
  • 热水壶、水袋:在雪地里喝一口热水是真的舒服。
  • 零食:在登山途中补充热量,体力。
  • 保鲜袋、塑料袋:可以多带几个保鲜袋,一是装垃圾,二是万一鞋子湿了也能套脚,作用很多,我的每次出门旅行都会带上七八个这玩意儿。

旅行后记

这次的行程其实终点的风景、餐食、住宿都算不上很好。

但是雪林穿越的体验是非常棒的,总共 1300 多米的爬升,而且后半段全是雪路,因为积雪覆盖,基本上已经看不到原来的路线了,我们一路在雪林里穿梭,都是现场开辟的路线,很多地方都要手脚共用才能爬上去,非常有挑战和刺激感。

而且这次出行认识了不少谈的来的本地朋友,如我们车的司机林老师、本地大学里的一对情侣小罗和小刘,出发和返程在车上的时间大家唠嗑渡过,一点也不觉得无聊和犯困。

不过这次行程难度对于我老婆来说挺大的。

因为之前她是不准备爬山的,而且她也没有户外经验,算是个小白,不过出行前我还是把她的雪套、雪爪一起带上了,怕万一需要上山。哪知道还真用上了,出发后当时另外一个也说在营地休息的人放鸽子没来了,现在只有她一个人在营地,挺没意思,索性就跟着我们一起上山了。

不过毕竟是小白,而且以前也没搞过户外,所以装备准备的不是很充分,没有冲锋衣裤,裤子这次就穿的普通牛仔裤,爬山途中遇到那些容易滑倒的地方都害怕的要命,都是屁股划着雪地走的,后半段的时候裤子有些地方就已经湿透了。

所以最后登顶的那一刻忽然就绷不住了,哭的稀里哗啦,她说就我们两个人在后面吊车尾,前面的人都走的很快,看不到了人,害怕的很,而且身上又冷,经常滑倒会觉得万一我们一不小心就滑到山下去,没准就死在山上。

在我看来其实整条线路都是在树林里,基本上没有悬崖峭壁的情况,即便是滑倒了也能很快抓住旁边的树枝,而且坡度都不是很大,风险是有,但是在我看来并不危险。

不过她在下山后回味起来又觉得特别有成就感,感觉好像瘾一下就起来了,还问我下次准备去哪里,哈哈。

图记

途中和小伙伴们

营地和住宿

日出

营地中

烧烤小啤酒+篝火晚会

上山中

集体照

「工人们」

山腰+自拍

雪路

望雪
屁股蹲
登顶,绷不住了,hhh

缓缓后美美自拍

集体照
下山
山脚
已经筋疲力尽,头顶的雪和树枝暗暗体现了狼狈

我VPS上的Selfhost服务

2024年12月7日 11:20

Photo by Rubaitul Azad / Unsplash

以前刚玩博客的时候用的 Wordpress 作为博客系统,基本上都搭建在一些互联网的公益服务上,如今还记得就是 wpoak 这个平台,不过这些服务难抵时间漫长,大多因为成本问题关门大吉了。

所以之后开始自己买 VPS 进行博客程序部署,也开始慢慢重视起数据的重要性和自我保有。

刚开始 VPS 还是玩的非常简单,实例化完成后便用 lnmp 等程序一键装好 PHP 环境,然后下载上传 WordPress 安装程序便算完事了,后来接触的多了才知道 VPS 能做的事情元远不止于此。

后来我开始接触到 Docker,然后研究各种 Selfhost 的应用、服务。

昨天在夜未央的「浪费」一文中评论到:「对于很多普通用户来说基本上没有什么选择了,我们是喜欢折腾和了解,知道有什么渠道去找平替」。而后又在 Dayu 的「目前使用的自托管服务」一文中看到了他分享的 Selfhost 清单,所以这里索性也做一次分享,希望也能让更多的人用到这些开源、可控、好用的服务,利用起自己 VPS 上多余的算力资源。

我目前的 VPS 只有一个国内的腾讯轻量云。

配置为 2C2G4M,一年费用大概在 100 元左右,目前购买了 3 年,自托管的服务如下:

Ghost

这是我目前使用的博客后端,Ghost 在国内算是非常小众的博客程序了。

我大概在 16 年开始使用 Ghost 作为博客系统,当时服务部署在百度的 BAE 平台上,「在百度开放云BAE上部署GHOST博客并配置七牛云」,后因服务不能在继续免费白嫖几经搬家,后落到现在的 VPS 上。

可以使用 Docker 或者 Ghost 官方的 CLI 程序安装。在以前的老版本时,数据库支持 SQLite,后来几经更新,现在在正式环境中只能使用 MySQL。

Artalk-Go

在早期时 Ghost 并没有提供评论功能,虽然在后续的迭代中增加了评论功能,但是在我看来不太友好,而且因为评论需要用户登录,其他使用 Ghost 评论功能的小伙伴反应,在迁移过程中需要额外进行会员数据、评论数据处理,所以我一直没有使用。

所以我最开始使用的自部署评论程序是 Twikoo ,但是因为这个项目更新在很长一段时间内停滞,且管理面板、功能过于简陋,几经尝试后换到了 Artalk。

Artalk 是国内大学生大佬开发的一款 Disqus 的第三方评论平替程序,开源,自部署,且功能十分丰富,更新也非常勤快,个人认为是一款非常完善的评论程序。

可以用 Docker 部署。

MySQL

这个不用多说,声名远播的开源数据库,因为 Ghost 和后面其他的一些程序需要用到。

可 Docker 部署。

  • 推荐程度:🌟🌟🌟🌟
  • 部署方式:Docker
  • 是否开源:是
  • 项目地址:MySQL

Vaultwarden

密码管理器我以前使用的是 LastPass 这个免费服务,但是在使用过程中频繁出现网络问题无法使用,而且管理面板没有中文,且某一次还出现了安全漏洞的问题,自那后我就切换到了 Bitwarden,在 PC 上通过浏览器拓展可以快速进行当前网站的密码填充。

但是因为想用密码泄露检测等服务,不过这些功能在官方的 Bitwarden 上都是需要付费使用,所以我开始使用了国外大佬基于 Bitwarden API 重新实现的开源密码管理程序 Vaultwarden,Bitwarden 中一些需要付费使用的服务在 Vaultwarden 上都能免费使用,搭配第三方的安卓端 Keyguard ,可以说颜值与实力并存。

密码管理器我是非常推荐每一个没用过的人使用的。

因为一些第三方网站管理员自身水平良莠不齐,可能会因为服务漏洞导致数据库泄露,此时如果你将常用密码用在注册这些网站上,届时你的其他重要服务被撞库暴力破解的风险将大大提升。

但是如果你使用密码管理器的随机高强度密码,只要在主密码没有泄露的情况下密码的情况下,即便数据库泄露了也不用担心被破解的风险,且因为在注册时使用的随机密码,即便第三方服务的数据库被泄露也不用担心被撞库。

Alist

Alist 是一个非常好用的网盘管理程序,因为太好用、用的人太多了,导致国内一些网盘实在承受不住,甚至不顾脸面将以前承诺的一些服务重新二次收费——没错,说的就是你「阿里网盘」。

Alist 可以在一个程序内管理你的大部分网盘服务,将他们集成在一起统一管理,并且通过 Alist 的一些拓展实现诸如公开分享、WebDav 等等,但是因为用的人实在太多了,而且很多影视程序也跟着上来薅羊毛,把网盘做成资源服务开放给其他人使用,导致这些情况的发生。

但是,即便这样,Alist 也依旧是一款非常好用的网盘管理程序。

Memos

Memos 是个非常好的 Flomo 平替工具,可以方便的进行卡片笔记记录,甚至你可以拿他当作微博、微博客来用也没什么问题,而且作者更新也非常勤快。

但是开发者时常进行 Break Change,我碰到的就有不下三次,导致我实在不敢继续再升级了,在某一次回退后彻底停留在目前使用的 v0.18.1 版本,好在那时的功能已经非常完善,即便不升级也不影响软件的后续使用。

Umami

google 统计的平替服务,之前部署在 Raliway 上,但是因为平台收费政策调整,只给 5 刀的免费额度,导致有一次超出额度,多交了 30 多元的费用后转移到 VPS 上部署。

GoToSocial

一款用 Go 写的联邦宇宙实例工具,长毛象的超小型替代,但是我没有玩的太明白,使用过程中出现很多莫名奇妙的问题,暂时放弃。

miniFlux

一款开源的 RSS 阅读器,简单好用,没有多余的花哨功能。

lx-music-sync

洛雪音乐的同步服务,可以在手机、PC 端之间同步历史记录、收藏等等。

wewe-rss

国内大佬开发的一款微信公众号转 RSS 订阅工具。

Express

我用 Docker 部署了一个 Express 服务,用于博客上一些需要后端的小功能,如点赞、PC 状态同步等。

WatchTower

Docker 镜像更新服务,通过维护一个需要自动更新的 Docker 容器名称列表,实现对对应容器镜像的自动更新。

独立博客自省问卷15题

2024年10月10日 15:17

Photo by Emily Morter / Unsplash

雅余哥发起的调查,回答一波 

1、你的博客更新频率是多少?

A.每周更新

B.一周数篇:基本上每周都有把。

C.一月1-2篇

D.几个月一篇

 

2、你的博客上次更新是什么时候?

A.本周:有节气这个系列在,基本上很稳定。

B.上周

C.上个月

D.上季度

 

3、你的博客文章是原创的吗?

A.坚持原创:都是自己写的,可能有部分引用的块。

B.部分借鉴

C.AI 帮我写的

D.搬运别人的,而且不署名

 

4、你觉得自己的文章对他人有帮助吗?

A.旨在对他人有启示

B.多少有点意义:技术文章偏多一点,多少应该会有点帮助把。

C.每日每周流水账

D.自我陶醉就好,管他呢

 

5、你上次换博客主题/程序是什么时候?

A.上周

B.上个月:最近才从11ty换到Astro

C.去年

D.凭良心说,我多年都是一个主题

 

6、你上一次捣腾博客主题代码是什么时候?

A.昨天,撸代码到凌晨

B.每周必捣腾:经常会折腾,就像狂热的钓鱼佬一样。

C.每月有那么一次

D.一年有那么一次

 

7、你会对博客主题进行二次开发?

A.直接配置使用,省心不折腾

B.时不时自己改改,搞点新花样,换图片,换字体,爽:自然是这个选项。

C.删除主题作者版权信息,改改样式,然后自我感觉良好

D.改得面目全非,但保留原作者版权信息或注明

 

8、你多久打开自己博客自我陶醉一次?

A.每天数次:基本上每天都会打开,看看评论之类

B.每周一次

C.看心情

D.一般都是照镜子,不看博客

 

9、你近期对自己博客域名什么感受?

A.想搞到一个 .COM 的域名

B.如果域名能再短几个字符就更好了

C.今年才换双拼域名了,明年再看看

D.目前挺好,没想法:没啥想法。

 

10、你每天都会看网站的流量统计吗?

A.每天看几次,今天又多了100PV

B.每周回顾,看看流量趋势

C.记得就看看:偶尔看看。

D.没有搞流量统计,都是浮云

 

11、你通过博客的广告赚到钱了吗?

A.有,能覆盖建站费用

B.有,但付出大于收入

C.没考虑通过博客流量赚钱:暂时没考虑

D.拒绝广告,保证阅读体验

 

12、你去浏览别人的博客/网站主要为什么?

A.学习别人分享的知识:友链多是生活型博客,看看别人活的咋样。

B.搬运别人的内容

C.看看别人怎么装修博客,自己也抄一下,感觉都比自己的好

D.不爱看别人博客,自己爱写啥写啥

 

13、看到别人分享了一篇文章,你打开第一反应是什么?

A.哇,这域名真不错,怎么我没想到

B.哇,这网站速度真快,图片延迟加载丝滑

C.哇,这程序/主题不错,我也要抄一抄/留言问问哪里搞的

D.看看文章内容:因为打开就会看到设计,所以一般都是先看到设计再看到内容。但是我认为内容更重要。

 

14、你觉得博客哪方面更重要?

A.域名

B.服务器

C.主题

D.内容:上一条回答了。

 

15、近期通过写博客有哪些新收获?

A.知识面有拓展

B.认识了新朋友

C.写作水平提升

D.通过知识变现

基本上都有。

我的miniFlux主题

2024年10月6日 14:25

Photo by AbsolutVision / Unsplash

最近Follow大火,虽然也在使用,不过我还是更喜欢miniFlux这种简单的阅读器。

之前从 yarr 切换到 miniflux 是因为 木木 大佬推荐的 miniflux 主题 Miniflux-Theme-Reeder,不过当时用了一段时间后发现各种不适,最后还是切换会默认主题,用了一段时间发现其实默认的miniflux已经非常好用了,不过需要做一点美化,所以简单做了一下调整,这里分享一下我的miniflux主题。

项目地址:https://github.com/rebron1900/mini-miniflux

主题就叫 mini-miniflux ,复制项目中 theme.css 文件中的样式或直接复制下面的css到miniflux中的 custom css 中即可。

:root {
    --font-family: "Noto Serif SC", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --body-color: #efefef;
    --body-background: #222;
    --hr-border-color: #555;
    --title-color: #aaa;
    --link-color: #aaa;
    --link-focus-color: #ddd;
    --link-hover-color: #ddd;
    --link-visited-color: #f083e4;
    --header-list-border-color: #333;
    --header-link-color: #ddd;
    --header-link-focus-color: rgba(82, 168, 236, 0.85);
    --header-link-hover-color: rgba(82, 168, 236, 0.85);
    --header-active-link-color: #9b9494;
    --page-header-title-color: #aaa;
    --page-header-title-border-color: #333;
    --logo-color: #bbb;
    --logo-hover-color-span: #bbb;
    --table-border-color: #555;
    --table-th-background: #333;
    --table-th-color: #aaa;
    --table-tr-hover-background-color: #333;
    --table-tr-hover-color: #aaa;
    --button-primary-border-color: #444;
    --button-primary-background: #333;
    --button-primary-color: #efefef;
    --button-primary-focus-border-color: #888;
    --button-primary-focus-background: #555;
    --input-border: 1px solid #555;
    --input-background: #333;
    --input-color: #ccc;
    --input-placeholder-color: #666;
    --input-focus-color: #efefef;
    --input-focus-border-color: rgba(82, 168, 236, 0.8);
    --input-focus-box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);
    --alert-color: #efefef;
    --alert-background-color: #333;
    --alert-border-color: #444;
    --alert-success-color: #efefef;
    --alert-success-background-color: #333;
    --alert-success-border-color: #444;
    --alert-error-color: #efefef;
    --alert-error-background-color: #333;
    --alert-error-border-color: #444;
    --alert-info-color: #efefef;
    --alert-info-background-color: #333;
    --alert-info-border-color: #444;
    --panel-background: #333;
    --panel-border-color: #555;
    --panel-color: #9b9b9b;
    --modal-background: #333;
    --modal-color: #efefef;
    --modal-box-shadow: 0 0 10px rgba(82, 168, 236, 0.6);
    --pagination-link-color: #aaa;
    --pagination-border-color: #333;
    --category-color: #efefef;
    --category-background-color: #333;
    --category-border-color: #444;
    --category-link-color: #999;
    --category-link-hover-color: #aaa;
    --item-border-color: #666;
    --item-padding: 15px;
    --item-title-link-font-weight: 900;
    --item-status-read-title-link-color: #666;
    --item-status-read-title-focus-color: rgba(82, 168, 236, 0.6);
    --item-meta-focus-color: #aaa;
    --item-meta-li-color: #ddd;
    --current-item-border-width: 2px;
    --current-item-border-color: rgba(82, 168, 236, 0.8);
    --current-item-box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);
    --entry-header-border-color: #333;
    --entry-header-title-link-color: #bbb;
    --entry-content-color: #999;
    --entry-content-code-color: #fff;
    --entry-content-code-background: #555;
    --entry-content-code-border-color: #888;
    --entry-content-quote-color: #777;
    --entry-content-abbr-border-color: #777;
    --entry-enclosure-border-color: #333;
    --parsing-error-color: #eee;
    --feed-parsing-error-background-color: #3a1515;
    --feed-parsing-error-border-style: solid;
    --feed-parsing-error-border-color: #562222;
    --feed-has-unread-background-color: #1b1a1a;
    --feed-has-unread-border-style: solid;
    --feed-has-unread-border-color: rgb(33 57 76);
    --category-has-unread-background-color: #1b1a1a;
    --category-has-unread-border-style: solid;
    --category-has-unread-border-color: rgb(33 57 76);
    --keyboard-shortcuts-li-color: #9b9b9b;
    --counter-color: #bbb --entry-content-font-weight: 300;
    --entry-content-font-family: "Noto Serif SC", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --entry-content-quote-font-family: var(--entry-content-font-family) --gray-100: rgba(196, 196, 196, 0.1);
    --gray-200: rgba(196, 196, 196, 0.2);
    --gray-500: rgba(196, 196, 196, 0.5);
    --gray-700: rgba(196, 196, 196, 0.7);

    --color-link: #84b2ff;
    --color-visited-link: #84b2ff;

    --body-font-color: #e9ecef;
    --color-hover-link: #589ff2;

    --btn-color: red;
    --btn-bg: blue;

    --icon-filter: brightness(0) invert(1);

    --box-radius: 0.25rem;

    --hint-color-info: #6bf;
    --hint-color-warning: #fd6;
    --hint-color-danger: #f66;
}

* {
    font-family: var(--entry-content-font-family);
    text-shadow: 0 0 .75px var(--gray-500);
}


main {
    .item {
        border-radius: var(--box-radius);
    }
}

@media (max-width: 630px) {
    body {
        padding: 0 1.25rem;
    }
    
    .page-header{
        margin-top: 1rem;
    }

    .header {
        position: fixed;
        bottom: 10px;
        right: 10px;
        #header-menu {
            background-color: var(--alert-border-color);
            padding: 10px;
            border-radius: var(--box-radius);
            list-style: none;
        }
    }
}
.entry-content {
    line-height: 1.8;


    > :first-child {
        margin-top: 0;
    }

    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
        font-weight: bolder;
        line-height: 1;
        margin-top: 1.5em;
        margin-bottom: 1rem;

        a.anchor {
            opacity: 0;
            font-size: 0.75em;
            vertical-align: middle;
            text-decoration: none;
        }

        &:hover a.anchor,
        a.anchor:focus {
            opacity: initial;
        }
    }

    h4,
    h5,
    h6 {
        font-weight: bolder;
    }

    h5 {
        font-size: 0.875em;
    }

    h6 {
        font-size: 0.75em;
    }

    b,
    optgroup,
    strong {
        font-weight: bolder;
    }

    a {
        color: var(--color-link);
        text-underline-offset: 0.3em;

        &:hover {
            color: var(--color-hover-link);
            text-shadow: 0 0 0.75px var(--color-hover-link);
        }
        &:visited {
            color: var(--color-link);
        }
    }

    img {
        max-width: 100%;
        height: auto;
        border-radius: 0.25rem;
    }

    code {
        padding: 0 0.25rem;
        background: var(--gray-200);
        border-radius: 0.25rem;
        font-size: 0.875em;
    }

    pre {
        padding: 1rem;
        background: var(--gray-200);
        border-radius: 0.25rem;
        overflow-x: auto;
        position: relative;

        code {
            padding: 0;
            background: none;
            color: white;
        }
    }

    p {
        word-wrap: break-word;
        margin-bottom: 1.3rem;
    }

    /** adapter ghost callout cards **/
    blockquote,
    .kg-callout-card {
        margin: 1rem 0;
        padding: 0.5rem 1rem 0.5rem (1rem - 0.25rem);

        border-inline-start: 0.25rem solid var(--gray-200);
        border-radius: 0.25rem;

        color: var(--gray-700);
        font-style: italic;

        word-break: break-all;

        :first-child {
            margin-top: 0;
        }
        :last-child {
            margin-bottom: 0;
        }
    }

    table {
        overflow: auto;
        display: block;
        border-spacing: 0;
        border-collapse: collapse;
        margin-top: 1rem;
        margin-bottom: 1rem;

        tr th,
        tr td {
            padding: 0.5rem 1rem;
            border: $padding-1 solid var(--gray-200);
        }

        tr:nth-child(2n) {
            background: var(--gray-100);
        }
    }

    hr {
        height: 1px;
        border: none;
        background: var(--gray-200);
    }

    ul,
    ol {
        padding-inline-start: 2rem;
        word-wrap: break-word;
    }

    dl {
        dt {
            font-weight: bolder;
            margin-top: 1rem;
        }

        dd {
            margin-inline-start: 0;
            margin-bottom: 1rem;
        }
    }

    .highlight table tr {
        td:nth-child(1) pre {
            margin: 0;
            padding-inline-end: 0;
        }
        td:nth-child(2) pre {
            margin: 0;
            padding-inline-start: 0;
        }
    }

    details {
        padding: 1rem;
        border: $padding-1 solid var(--gray-200);
        border-radius: 0.25rem;

        summary {
            line-height: 1;
            padding: 1rem;
            margin: -1rem;
            cursor: pointer;
        }

        &[open] summary {
            margin-bottom: 0;
        }
    }

    figure {
        margin: 1rem 0;
        figcaption p {
            margin-top: 0;
        }
    }
}

MacType正确注册表全局热替换、渲染尝试

2024年10月6日 11:22

Photo by Bruno Martins / Unsplash

前言

因为Windows系统字体渲染太垃圾,而我又没需求换4k,所以需要用到其他工具对字体进行渲染。而MacType自然是Windows平台的不二选择,我使用的时间估计已经有10年了把?

以前在XP、Win7上都能很完美的渲染,但是Windows10开始陆续出现了一些程序渲染不上的问题,

  • 比如大部分UWP程序
  • 而Chrome也因为安全策略更改也无法正常进行渲染,虽然百分浏览器有使用GDI++的版本,但是所有Emoji会变成黑白色
  • 微信、企业微信 也因为使用了WebView也无法正常渲染

期间在MacType的仓库里发了一个求助issue 为何微信中FontSubstitutes替换雅黑后字体会直接失去所有渲染呢,有回答的人说通过注册表模式可以正常渲染,但是我进行了尝试后死活没有效果,Maple-font的作者也遇到了和我同样的问题 Segoe UI Variable 似乎无法替换

不过昨天因为 Windows11 LTSC发布了,我重新安装系统后对MacType进行了尝试,发现似乎是因为火绒的问题导致无法进行渲染 火绒 6.0 导致 MacType Version 2024.8.15 无法渲染 ,在进行了很多次尝试后发现不单纯是因为火绒的问题,即便在开了注册表模式下有些配置文件依旧无法正常渲染、替换,尝试了很久终于总结了一套对于我来说可行的全局渲染、热替换方案。

方案

MacType安装到C盘下

根据Snow大佬的解释,因为Windows11系统安全的原因在其他目录可能无法加载dll,但是C盘的 Windows 目录和 Program Files 目录除外,所以我们要将程序装在 Program Files 中。

启用火绒或开启白名单

火绒系统加固里在「自动处理」中给下面几个程序开启「关键进程规则」下所有选项,「文件规则」下的「系统任务目录」

启用注册表模式

因为Windows11安全引导的问题,新版本的MacType取消了在设置向导中开启注册表模式的选项,但是可以通过手动导入、设置注册表的形式启用。

  1. 关闭BIOS中的安全引导(Secure boot)选项。
  2. 在MacType的设置向导中设置为「不使用自动加载」
  3. 导入注册表
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="MacType64.dll"
"LoadAppInit_DLLs"=dword:00000001
"RequireSignedAppInit_DLLs"=dword:00000000


[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="MacType.dll"
"LoadAppInit_DLLs"=dword:00000001
"RequireSignedAppInit_DLLs"=dword:00000000

配置文件

我之前一直用的自己改的一个配置文件,但是这个配置文件之前我用MacType服务模式时也有一些莫名奇妙的BUG,比如微信中输入框里的字体无法渲染。

因为喜欢比较厚重的字体,这次测试我首先使用MacType服务模式对所有的配置文件进行测试,找出一个渲染风格是我喜欢的配置文件,最后选中了 XMac.LCD.Default.ini 这个配置,然后开启MacType注册表模式不断的修改配置、重启进行测试,最终找到了一个能正常渲染的配置。

在这个配置文件中我只将 Segoe UI Variable 字体热替换成了 Maple UI ,这部分可以根据使用需求进行任意热替换。

; Only for MacType (NOT SUPPORT THE OLD VERSION OF GDI++/HE)
; maxchow@qq.com

[Preview]
Font=Tahoma
Color=$990088
Text=卍 XMac.LCD 默认设置
Size=12
Align=Center

[General]
Name=XMac.LCD.Default
Icon=XMac\XMac.ico,0

;【自动挂钩子进程】
;[0:Disable]  1:Enable
HookChildProcesses=1

;【字体微调】
;0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting
HintingMode=1

;【抗锯齿方式】
;-1:Disable 0:Normal 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB) 5:Light-LCD(GBR)
AntiAliasMode=2

;【常规体调整】
;-32:+32
NormalWeight=14

;【粗体字的调整】
;-16:+16
BoldWeight=2

;【斜体字的倾斜角度微调】
;-16:+16
ItalicSlant=0

;【只有在FontLoader=0(在下面)时此项设置才有效。建议选0,选1会占用大量内存,也没看出有什么好处。】
;0:Disable 1:Enable
UseMapping=0

;【Gamma模式开关】
;-1:关闭;0:使用设置的Gamma值(GammaValue);1:使用sRGB的Gamma值;2:不明
GammaMode=0

;【Gamma值】
;GammaMode=0的时候此项设置才有效
;sRGB ≒ 2.2 CT-Default = 1.4
;windows的cleartype的Gamma值是1.4
GammaValue=1.4

;【对比度】
;数字越大越锐利,数字越小越发虚
Contrast=1.0

;【字体轮廓】
;数字越大字体就越粗越黑
RenderWeight=1.0

;【文字边界设置】
;数字越大越强调背景(类似文字边界被侵蚀的感觉),强调背景会有中字体锐利的感觉。适当降低对比度,提高TextTuning,可以使文字周围的颜色看起来“淡一点”
;再加上RenderWeight,把这三个设置的微妙平衡调节好的话,能得到不输给Mac的效果
;0:12

;AntiAliasMode=1时,通过TextTuning分量来调节
TextTuning=0

;AntiAliasMode=2时,通过TextTuning的RGB分量来调节
TextTuningR=0
TextTuningG=0
TextTuningB=0

;【字体加粗模式】
;对NormalWeight和BoldWeight有效
;0:Weight值大时横向加粗,值小时双向加粗,主要是避免Weight值过大时,模式3中在小字号时加粗过度出现斩头的现象;
;1:总是横向加粗;
;2:总是双向加粗,也就是freetype本身的粗体渲染。
;注意:通过加大GammaValue、TextTuning的值,可以减少Weight值过大的造成的效果问题,即可以在BolderMode=2时也可以避免转接头
BolderMode=0

;【字体的载入方法】
;(注意是载入方法,不是渲染方法)
;0:用freetype载入字体
;1:用windows的绘图核心载入字体
;很多freetype的设置需要此项选0才能生效
FontLoader=0

;【字体链接】
;当FontLoader=0时
;0:什么都不做;
;1:使用注册表里的字体链接设置,通过FreeType的字符表进行查找
;2:使用注册表里的字体链接设置,使用Windows的转换函数直接查找
;当FontLoader=1时
;会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。
FontLink=2

;【字体替代】
;当FontLoader=0时
;0:什么都不做;
;1:安全替换方案(兼容性较好),根据以下FontSubstitutes的配置进行替换;
;2:完全替换方案(效果较全面,如替换后出现乱码,请尝试使用1),根据以下FontSubstitutes的配置进行替换;
;当FontLoader=1时
;会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成
FontSubstitutes=2

;【让freetype处理的最大的字体尺寸,单位是像素,0的话就是全尺寸】
;交付 gdi++ 处理的最大尺寸(单位为像素)
;0-2147483647
MaxHeight=0

;【阴影设置】
;格式:水平偏移,垂直偏移,深色文字的阴影透明度(0-100),深色文字的阴影颜色,浅色文字的阴影透明度(0-100),浅色文字的阴影颜色
;颜色值格式:BBGGRR 
;Shadow=1,1,30,FFFFFF,20,000000

;【液晶显示器的优化配置】
;[0:None]  1:Default  2:Light  16:Legacy
LcdFilter=2

;【微调LcdFilter】
;LcdFilter>0,且AntiAliasMode>-1时,该微调才生效
;这5个值分别代表文字笔划中从左到右的笔划浓度,最小为0,最大为255
;注释掉这个参数则恢复使用
;LcdFilter=1,默认值为“16,64,112,64,16”
;LcdFilter=2,默认值为“0,85,86,85,0”
;LcdFilterWeight=20,80,120,80,20

;【字体缓存、内存的设置】
LoadOnDemand=1
CacheMaxFaces=256
CacheMaxSizes=33554432
CacheMaxBytes=67108864
EnableKerning=0

;【强制使用某一个字体】
;无视所有其他字体,全系统的字体都会被这里设置的字体代替
;ForceChangeFont=华文中宋

;【优先使用点阵】
;小于指定字号的文字将优先使用内嵌点阵
MaxBitmap=0

; DirectWrite 支持;DirectWrite support
DirectWrite=1

[DirectWrite]
;渲染模式,0=默认,1=锯齿,2=经典,3=经典自然,4=自然,5=自然对称,6=字体原型
RenderingMode=6
;Gamma值,不写则根据上面的GammaValue自动计算
GammaValue=1.5
;对比度,默认为1
Contrast=1.0
;抗锯齿程度,默认1
ClearTypeLevel=1

[Individual]
;【单独设置的字体】
;格式=Hinting, AAMode, NormalWeight, BoldWeight, ItalicSlant, Kerning
XSong=,,28,0,,
XSong SimSun=,,28,0,,
XSong NSimSun=,,28,0,,
XSong Sharp=,,28,0,,
XSong Sharp.SimSun=,,28,0,,
XSong Sharp.NSimSun=,,28,0,,
XSong Harmony=,,28,0,,
XSong Harmony.SimSun=,,28,0,,
XSong Harmony.NSimSun=,,28,0,,
XSong Classical=,,28,0,,
XSong Classical.SimSun=,,28,0,,
XSong Classical.NSimSun=,,28,0,,
XSong Tradition=,,28,0,,
XSong Tradition.SimSun=,,28,0,,
XSong Tradition.NSimSun=,,28,0,,

宋体=,,28,0,,
新宋体=,,28,0,,
SimSun-ExtB=,,28,0,,
仿宋_GB2312=,,28,0,,
仿宋=,,28,0,,
华文仿宋=,,28,0,,
华文宋体=,,28,0,,
华文中宋=,,28,0,,
Batang=,,28,0,,
MingLiU=,,28,0,,
MingLiU-ExtB=,,28,0,,
PMingLiU=,,28,0,,
PMingLiU-ExtB=,,28,0,,
PMingLiU_HKSCS=,,28,0,,
PMingLiU_HKSCS-ExtB=,,28,0,,
MS Mincho=,,28,0,,
MS PMincho=,,28,0,,

[Exclude]
;【除外的字体】

[ExcludeModule]
;【不渲染的程序,但仍会加载DLL】

[ExcludeSub]
;【排除不替换字体的程序】
;以下程序不会被进行字体热替换
;===== Office =====
;EXCEL.EXE
;POWERPNT.EXE
;WINWORD.EXE

[UnloadDll]
;【不渲染的程序,同时完全不加载DLL】
fontview.exe
MainType.exe
AxureRP.exe
FontCreator.exe
FontCreator.cn.exe
notecaselauncher.exe
notecase.exe
gnucash-bin.exe
bleachbit.exe
Fontforge_TC.exe
Fontforge_SC.exe
Fontforge_EN.exe
NexusFont.exe
dwm.exe

[FontSubstitutes@firefox.exe]
;【字体替代】
;系统在调用“=”前面的字体时会忽视“=”前面的字体,而去直接调用“=”后面的字体
;Fixedsys=XHei NSimSun
SimSun=XHei SimSun
@SimSun=@XHei SimSun
NSimSun=XHei NSimSun
@NSimSun=@XHei NSimSun

[FontSubstitutes]
;【字体替代】
;系统在调用“=”前面的字体时会忽视“=”前面的字体,而去直接调用“=”后面的字体
Segoe UI Variable=Maple UI
Segoe UI Variable Small Light=Maple UI
Segoe UI Variable Small Semilight=Maple UI
Segoe UI Variable Small=Maple UI
Segoe UI Variable Small Semibold=Maple UI
Segoe UI Variable Small Bold=Maple UI
Segoe UI Variable Text Light=Maple UI
Segoe UI Variable Text Semilight=Maple UI
Segoe UI Variable Text=Maple UI
Segoe UI Variable Text Semibold=Maple UI
Segoe UI Variable Text Bold=Maple UI
Segoe UI Variable Display Light=Maple UI
Segoe UI Variable Display Semilight=Maple UI
Segoe UI Variable Display=Maple UI
Segoe UI Variable Display Semibold=Maple UI
Segoe UI Variable Display Bold=Maple UI
Segoe UI=Maple UI
Segoe UI Semilight=Maple UI
Segoe UI Semibold=Maple UI
Segoe UI Black=Maple UI
Segoe UI Light=Maple UI

沉默的霸凌施暴者们

2024年9月18日 10:59

null

💡
本文包含部分关键剧情剧透,请谨慎阅读。
每个人都是施暴者

等了这么久,默杀终于上流媒体平台了。

恰逢假期,家里也来了客人,中午吃了饭便和家人们一起认认真真看看完了这部电影。

不似一些其他电影对内在观点输出的含蓄,默杀这部电影则是非常直给。而标题「沉默的霸凌施暴者们」是我总结的默杀这部片子导演想传达的观点。是呀,「默杀」这个名字和电影封面上每个人的状态不正是最好的阐述吗,同时电影中非常多的直给镜头都在赤裸裸展现。

施暴者

在影片的前半部分间断呈现的「霸凌」画面中,我们能看到所有相关人员的冷漠旁观,而他们都是这场悲剧的酿造者。

首先那几个施暴的女同学自是不必说,罄竹难书,说她们是未进化的动物动也不足为过,其次从校长,普通的同学,校园保安,方老师,房东,这些人在事件发生之后的选择及冷漠更是成了帮凶。

在看这部影片的时候我的姨妈恰好讲了一个这样的故事,

她在商场经营了几家服装店,这几家服装店都处于商场内,而门店旁边都是另外的老板开的娃娃机店,因为现在的娃娃机店都是自助式,没有营业员,所以平时需要有人打扫卫生,整理娃娃。我姨妈便和对方商量了,说承包下他们的这些工作,每天负责打扫的人给于50元补贴,其实我小姨的想法是看工作简单,想给员工捞些外快,她一分钱也没有赚。

因为工作其实非常简单,每天去一次,简单扫一下地,重新补充一下空掉的娃娃机就好了,其中一个门店有一个姐姐认为的确很简单,所以每天都积极的干这个工作,这也影响了同门店的其她同事,最终大家都抢着做这项工作。而另外一个门店有人则觉得工钱太少,工作很麻烦,导致没有一个人愿意去做,然后那个店的承包工作只能无奈放弃了。

这个小故事中两个门店所表现的选择不恰好贴合了默杀这部电影的故事内核吗?

如果故事中的这些人,能和第一个门店中的姐姐们那样,这些人中哪怕只有一个人能放下冷漠、事不关己的心态做出正确的选择,这个故事的结尾至少都不会这么悲剧。

因果

其次是中国儒释道三家观点中时常提到的「因果」。

在这个短短的故事中,所有人都在种下自己的因,也都纷纷吃下了由这个因得出的不同程度的「果」。

  • 施暴的女学生种下霸凌的因,得到了被在福报复杀害的「恶果」。
  • 校长、钟晓晴、李涵、警察戴国栋种下教育无方的因,得到了失去女儿、儿子变成偷拍狂的果。
  • 女房东种下事不关己的因,得到被挟持,绑架的果。
  • 方老师种下谅解、「她们还能被救赎的因」,得到被挟持、伤害的果。
  • 陈明章强奸9岁女儿、家暴老婆,得到被女杀死的「恶果」。
  • 在福杀复仇,得到付出性命的果。
另外小涵最后在监狱的画面我认为是「中国电影审核哲学」的影响下造成的,不纳入这个清单里,我更相信的是小涵已经逃离。

白鸽

电影中多次出现了白鸽,我个人认为这是影片对正义、正确的具象化。

最后在天台上,林在福完成了自己最后的使命,看着这起事件的所有相关人员围在一起,他们好似忽然将自己曾经的冷漠抛的无影无踪,背靠着无可匹敌的正义对着他口诛笔伐。

在福露出了嘲讽的微笑,转身没有丝毫犹豫的跳下了高楼,坠落的半空中,数十只白鸽飞起,好似托着林在福一般,而这在传统港片中只有在正义的英雄出场才会有白鸽飞舞的场景。

而这里,是为 英雄 来福送别。

司法体系的缺失让这一切发生,所以在福已经不相信法律,也认为自己的作为没有必要受到法律制裁,他所做一切都是发自内心,对于夺取那几个女孩子的性命心中自是也有愧疚,所有源自存从自己内心的价值观以死偿命,但是他不愿接受这已经畸形的司法体系的审判,和这些施暴者们的口诛笔伐,所以遵从自己真正的正确,自我了结。

最后

校园霸凌是全球所有学校都存在的普遍现象。

我可以肯定在所有学校,至少我的小、初、高、大的学业生涯中全都有。所有班级中都有那么一两个弱势者会或多或少的被班里的坏孩子、强势者欺凌,虽然大多数情况下并没有影片中表达的这么极端,但是对那些孩子所造成的伤害依旧是不可磨灭的。

我们作为这些旁观之人,如果都能伸出援手,这些悲剧可能就不会发生了,至少不会让一切都变得没有余地...。

想起电影「第二十条」中的一句台词:「所有正确的事情都是有代价的,但不能因为有代价就不去做。」 

愿世上处处都有白鸽飞舞...。

强心针

2024年9月16日 10:14

Photo by xiaoyu xie / Unsplash

在写完 馄饨、饺子和抄手 一文后发现回忆是真的很美好。

人们总说要向前看,向前看,未来会更加美好!所以总是回忆过去是不是说明当下过的并不好呢?

虽然这个论点并不充分,但是至少我这段时间想把自己归在这类情况中去。

人们在越是在困苦、迷茫、无助的时刻越是想下意识通过这些美好滋润干涸的心河,引导我们行进的方向,人在不断的进化过程中演化出了这种能力,虽然这种做法在有些人看来确实有些「鸵鸟效应」、「掩耳盗铃」,不过对我来说却也不全是望梅止渴的行为。

中国有句俗语「人生不如意十之八九」这个说法,好在还是有这「一、二」可以追求,因为任何事情都没有绝对的说法,他就像没开盒的「猫」,我们得给自己留一条退路,很多极端的人正是因为把这最后一条路也断了,而做出后悔一辈子的决定。

当然,我们也不能一直沉静在这些记忆里不出来。

毕竟和强心针一样,回忆所带来的美好是有时效的,在那个激励后的短暂余韵里,也是我们该重新迈步向前的时候。

然后,努力生活。

为了下一个「可能」的止步不前,生产另一支强心针。

两款CMS系统体验

2024年9月14日 12:59

Photo by Antonio Vivace / Unsplash

因为Ghost只提供文章的 HTML 代码,不提供 Markdown 的问题导致我曾经一度想更换CMS系统。但是将近800篇文章的转移工作十分麻烦,而且之前也尝试过用一些工具处理,无一都失败了,问题多是因为古早之前的很多文章存在格式问题,无法通过一些 HTML to Markdown 工具的转换规则,所以这个事也就一直没下定决定弄。

不过不影响我寻找下一位有动力让我这么做的CMS继任者。

最近发现了两款CMS工具,分别是:

  • KeyStatic: 之前有在周报 [[🤣JUSTFUN 周刊:第13期]] 中推荐过,一款基于Github的CMS系统。
  • PocketBase:一款用Go写的非常轻量、高速的CMS工具,使用简单,扩展性强。

KeyStatic

基于Github的CMS系统有很多,我所知道的就不下四五款,比如有: statamic/cmskeystonejs/keystone 等。

在周报里我也提到过,我是在Astro的CMS推荐列表中看到了KeyStatic,并在昨天花了一点时间体验了一下,整体体验还是不错的,总结如下。

  • 字段:可以进行丰富的字段配置和自定义,但是字段配置需要通过配置文件进行,而且可选项有点多,初上手会比较麻烦,好在官方提供了一些模板库,可以直接超。
  • 同步:可以基于本地也可以基于Github,基于Github模式的话每次增加文件文章后需要手动提交pull request,在页面上有个按钮,点击能跳转到Github,然后再进行后续操作,其实还是比较麻烦的。
  • 部署:官方提供了一些Astro、Next.js等集成,可以将网站、管理面板都部署在Vercel、Netlify、Clouflare上,对白嫖党来说是还是比较友好的。而且因为集成了SSG工具,网站也能同一时间进行更新发布。
  • 文件:
    • 文章:撰写的文章会在项目里生成对应的markdown文件
    • 图片:也会传到Github的内,官方目前提供了一个云服务,后续应该也是会支持S3、R2等服务的。
  • 定制化:后台的定制性非常强,你甚至可以在字段设置里使用你写的Astro组件,不过需要一定的开发知识。
  • API:很丰富,还提供了Nodejs的api库,操作非常方便。
💡
昨天在部署到Vercel后提示链接不安全,在文档里找了半天没发现有相关的说明,后来想起在初始化链接到GitHub时提示了需要设置一个发布网址,当时留空了,所以重新去Github中的App Setting里增加了Vercel链接的Rule后解决。

Poketbase

现在的CMS系统都设计都好强悍呀!昨天刷到蜗牛大佬Star了一个叫 pocketbase 的开源内容管理系统,程序是用Go写的,基于SQLite数据。

管理全在网页上进行,虽然结构简单,但是API、权限、功能拓展什么的都一应俱全,相当哇撒了。

  • 字段:官方提供的字段略少,而且Content内容目前只能保存解析好后的HTML字符串,而且没有自动生成slug。
  • 同步:因为是通过二进制程序直接运行,也有其他开发者提供了Docker版本,就是一个在线服务,所以没有数据同步问题,所以这部分会比较简单,好管理一些。
  • 部署:同上,直接起个Docker就行了,但是并没有集成前端框架,不过有完善的API、权限管理,在SSG中实现一下就好。
  • 文件: 文件可以存在本地,也支持上传到R2等服务上。
  • 定制化:这部分可能会比KeyStatic弱很多,目前文档里没怎么有这方面的介绍
  • API:很完善,接口权限划分的很细。

因为官方没有自带slug生成的功能,所以我跟着官方文档写了个转换脚本,很有意思。

onRecordBeforeUpdateRequest((e) => {
    const pinyin = require(`pinyin`);

    const title = e.record.get("title");
    const titleToSlug = (title) => {
        const pinyinTitle = pinyin(title, {
            style: pinyin.STYLE_NORMAL, // 普通风格
            heteronym: false, // 不使用多音字
        })
            .flat()
            .join("-"); // 将拼音数组转换为字符串并用短横线连接

        return pinyinTitle
            .trim() // 去除首尾空格
            .replace(/[\s]+/g, "-") // 将空格替换为短横线
            .replace(/[^\w\-]+/g, "") // 删除非字母数字和非短横线字符
            .replace(/--+/g, "-") // 替换多个短横线为一个短横线
            .replace(/^-+|-+$/g, ""); // 去除首尾的短横线
    };

    // 示例用法
    const slug = titleToSlug(title);
    e.record.set("slug", slug);
}, "posts");

官方提供的event hook也相当多,能玩出非常多的花样。

目前唯一的疑惑是为啥不提供markdown格式的fields呀?

至于换不换CMS,还是准备再蹲蹲。

如何快速解析HTML里的WikiLink?

2024年9月13日 00:59

前几天在 你好Astro! 中提到想把Obsidian的文章集成在博客中来,并实现CMS和Obsidian之间通过Wikilink的互相引用。

不过因为Ghost的API只提供了文章的HTML字符串,Remark衍生的WikiLink插件肯定都是无法使用的,而且目前Github上能找到的WikiLink相关的案例基本上都是整对于Markdown语法去解析的,对于我来说基本上没什么参考价值。

所以我只能走另外的路子了,不过方法无非就是以下几种

  • 正则过滤替换
  • 生成虚拟DOM处理

正则过滤

昨天晚上我倒是找到了 loveminimal 大佬写的一个姑且能用方案,但是这段代码有个不大不小的缺陷,就是正则会将所有标签内的 [[]] 内容都进行解析转换,所以 pre 代码块内的内容也会被解析成Wikilink,这意味着会无法控制的出现在任何你可能不想他出现的地方,所以目前这种方案暂时待选。

const wikilinks = (innerHtml) => {
    let _innerHtml = innerHtml;
    if (_innerHtml.indexOf('[[') > -1) {
        let _re = /!\[\[(([\/\-\.\*\$\&]|\w|\s|[^\x00-\xff])*\.\w+)\s*\|?\s*(\d*)\]\]/g;
        let _str = _innerHtml.replace(_re, '<img src="/$1" alt="$1" width="$3" />');


        // 2. 后匹配替换链接
        let _reLink = /\[\[(([\/\-\.\*\$\:\#]|\w|\s|[^\x00-\xff])*)\|?(([\/\-\.\*\$]|\w|\s|[^\x00-\xff])*)\]\]/g;
        // let _strLink = _str.match(_reLink);
        // let _strLink = _str.replace(_reLink, '<a href="$1">$3</a>');
        let _strLink = _str.replace(_reLink, (val) => {
            val = val.replace(/[\[\]]/g, '');
            let _arr = val.split(/\s*\|\s*/);
            let _relLink = _arr[0];
            let _desc = _arr[1] ? _arr[1] : _arr[0];

            // 检查链接描述是否包含 #锚点,形式有(我们假设当前文章名称为 test ,它有一个章节 ttt):
            // - 2.1. 孙子兵法#军争篇 - 此类可以正常识别
            // - 2.2. cpu-是如何制造出来的#18.-等级测试 - https://example.com/cpu-是如何制造出来的#18.-等级测试 ,
            //        此类锚点中包含特殊符号 `.` ,在新标签中打开,且无法正确定位到锚点
            // - 2.3 test#ttt - https://example.com/test#ttt 默认会在新标签页中打开,需要优化为在当前页面滚动
            // - 2.4  #ttt - 不能正常,会翻译为 https://example.com/#ttt ,丢失了当前页面路径
            let _idx = _desc.indexOf('#');
            if (_idx > -1) {
                // 2.4
                if (_idx == 0) {
                    _relLink = location.pathname.slice(1) + _desc;
                } else {
                    // 2.3
                    _relLink = _desc.replace('#', '/#');

                    // 2.2
                    _relLink = _relLink.replace(/[\.\、]/g, '');
                }
            }

            // console.log(_arr);
            // console.log(_desc);
            // return `<a href="${_arr[0]}">${_desc}</a>`
            return `<a href="/${_relLink.replace(/\s/g, '-').toLowerCase()}">${_desc}</a>`;
            // });
        });

        return _strLink;
    }
};

虚拟化DOM

这个方式就是在Nodejs里将HTML字符串虚拟化成DOM,再去对DOM进行操作,虽然理论上可行的,但是效率应该是极低的,这个我是不愿意使用的,所以直接排除掉了。

没有其他方案了吗?

真的没有其他方案了吗?

我今天这样想着,抱着试一试的心态换着各种关键字在Github上搜索,运气不错的让我找到了这个个库:html-parse-stringify ,他可以将html字符串快速抽象成一个AST语法树,我的想法是通过遍历这个语法树来找出文本内容,再反序列化成html字符串不就好了?

所以我试着按着我的思路写了个Demo,好像的确可行,而且还可以配置那些情况下包含的 [[]] 不进行渲染。


import HTML from 'html-parse-stringify';
var ast = HTML.parse(page?.html); // [!code highlight]
let fatherList = '';
function findTextNodes(node, text) {
    let result = [];
    fatherList += text; // 记录节点路径

    // 检查当前节点,并做wikilink的识别和路径排除,这里做排除名单应该很方便
    if (node.type === 'text' && node.content.startsWith('[[') && !fatherList.endsWith('precode'))   // [!code highlight]{
        node.content = node.content.replace('[[', '<a>test').replace(']]', '</a>');
        result.push(node);
    }

    // 如果有子节点,递归遍历
    if (node.children) {
        node.children.forEach((child) => {
            result = result.concat(findTextNodes(child, node.name));
        });
    }

    return result;
}

const result = [];

ast.forEach((node) => {
    const temp = findTextNodes(node, node.name);
    let fatherList = '';
});

const html = HTML.stringify(ast);

这是我目前能找到的最优方案了,不过这个方案应该也是偏向于解析成dom,不过这个库没有进行更多消耗资源的操作,应该是比传统的解析库性能更优秀的。

各种标签测试

WikiLink测试

[[note1]]

[[note2]]

[[note3]]

[[note4]]
  • [[note5]]

[[note6]]

[[note7]]

[[note8]]

@1900’Blog
All work and no play makes Jack a dull boy
@1900'Blog

https://cms.1900.live/ni-hao-astro/

测试一下文字包裹[[note9]]后的解析情况

[[note9]]

实际引用测试

已经初步完成联动,目前的考虑的策略顺序如下,

博客中

  1. 优先从CMS中去匹配文章 Title 一致的文章
  2. 如果博客内没有一直的则去Obsidian中匹配文件Title字段一致的文章
  3. 如果有多条数据只返回最前面一条
  4. 如果都没有则不进行转换

Obsidian中

  1. 优先匹配Obsidian中Title一致的文章
  2. 如果没有则去博客内匹配Title一致的文章
  3. 如果有多条数据只返回最前面一条
  4. 如果都没有则不进行转换

如Obsidian中的 About 这篇文章,在博客中以 [[About]] 写入,最终文章内就会解析成 [[About]] 。

因为Astro的本地路由都是基于网站根目录,所以我们只要将博客和Obsidian的文件分别进行静态生成,并在生成过程干涉 [[]] 的转换成 <a href=''><a/> 标签,然后给出正确的slug,便可以很方便的实现SPA形式的页面跳转。

完。

🤣JUSTFUN 周刊:第14期

2024年9月12日 18:20

Photo by Andrew Neel / Unsplash

一图

骑行路上

1. 种的辣椒 2. 骑行路上

流水账

  • 2024年9月2日:忽然对Astro的语法有了新的理解,也许我可以做到?
  • 2024年9月2日:如果地球是个学校,各个国家是上学的孩子,那么老鹰就是校园霸凌的恶霸。
  • 2024年9月2日:自由的含意是:我能自由的干你,你不能还手。
  • 2024年9月2日:我真是个傻逼,之前吐槽说Ghost文章丢失了,刚刚忽然发现特么是我写成Page了,压根不在Posts列表里。
  • 2024年9月4日:路永远在自己的脚下。
  • 2024年9月4日:正式靠别了Tai,改用ActivityWatch
  • 2024年9月4日:11ty-book有人点了Star,开心
  • 2024年9月4日:成年人变得更成熟时需要同时学会两件事情:第一,你想要的东西,懂得主动提出要求,不要让别人猜;第二,你提出来的要求,无论别人接受还是拒绝都要尊重别人的决定。这两者看起来不可调和的矛盾,其实是你自己对于被拒绝的恐惧,因为恐惧所以要么害怕提出要求,要么要求被拒绝后转化为厌恶情绪。
  • 2024年9月5日:开始移植11ty-book到astro上,新主题:astro-book
  • 2024年9月5日:我以后的孩子英文名可以叫 Dura ?是柔软、纯洁的意思,好像是乌克兰语?
  • 2024年9月11日:终于完成了Astro的所有功能移植。

读了、看了、听了

  • 2024年9月1日:看了 [[花束般的恋爱]] ,对两性相处有了新的看法,可以说是教科级别的两性相处案例。
  • 2024年9月2日:看了[[因果报应]] ,可惜是五分钟解说版本版本,后悔。
  • 2024年9月6日:在微信听书听王阳明——知行合一有声书
  • 2024年9月6日:开始看 [[心流]]
  • 2024年9月10日:看了 [[从21世纪安全撤离]],想起我小时候想的那些特异画面就是这部电影的风格,独一无二的味道,还是以前李献计一样的味道。

发现

一个动作改善脖子前倾

#知识 来自 x

在推上看到一个改善脖子前倾动作的视频,试了一下挺有效果,不过要长期坚持才行。

地址:x.com

极简主题参考

#设计 来自 ?

偶然发现的一个博客平台,他们默认提供的主题风格多是纯文字极简风格,简洁大气,找不到设计灵感的时候可以参考一下。

地址:Templates - Blot

足不出户看全球

#网站 来自 ?

偶然发现的一个全球范围热门景点的在线视频监控网站,不过国内的公开摄像头比较少。

网址:实况摄像头 马尔代夫-库雷杜 | SkylineWebcams

TV版Surfboard

#工具 来自 Github

优化TV操作的SurfBoard,懂的都懂。

项目地址:GitHub - getsurfboard/surfboard

GitHub - getsurfboard/surfboard

基于Bilibli音源的在线音乐播放器

#工具 来自 Github

一款基于bilibili的在线音乐播放器。

Eno Music 是一个基于 bilibili 的音乐播放器,完全改变了你在该平台上的体验。它重新构想了 bilibili 作为一个音乐平台的样子,并提供了独特而沉浸式的体验。

项目地址:GitHub - cloudflypeng/eno-music

3D打印桌面手机支架

#工具 来自 Youtube

一个可以通过3D打印制作的多功能桌面手机支架,emmm,应该说桌面时钟更贴切?

各种加载样式

#网站 来自 ?

无意间找到的一个拥有各种五花把门加载效果的CSS网站,在线预览,及拿及用。

网站地址:The Classic CSS Loaders Collection

你好Astro!

2024年9月10日 08:07

null

选型往事

在2024年3月份,我正式将Ghost博客作为无头CMS使用,并搭配SSG工具生成静态页面 。

其实在当时的技术选型时其实已经考虑过Astro,当时的Astro的版本号还是3.x,不过因为自己的技术不够成熟,编码思路还一直是Ghost时期的handlers这种模板结构,尝试多次无果后最终还是选择了11ty作为网站的生成工具,并撰文 新主题11ty-book 分享了当时的成果。

积累

不过这段时间我都有在不间断的重新查阅Astro的文档,思考该如何用Ghost搭配它,希望能用上这个热门的网站生成器。

事情的转折点是前几天发现 Astro-remote 这个插件,它提供的组件能加载HTML字符串或远程Markdown文件,渲染成网页内容,并在这个过程中还可以对HTML元素使用Astro的组件进行替换,这意味着可以不再用之前在11ty中那样,用 JSDOM 这个库通过通过虚拟DOM进行操作 eleventy/transforms/parseContent.js

之后我便根据自己的思路写了几个Demo,以前困扰的几个点似乎都能解决

  • 可以通过这个插件的容器替换功能,使用Shiki、Prism等工具的代码高亮
  • 可以自定义容器,之前 hugo-book中的Columns Expand 等功能都机会实
  • 甚至可以把之前Obsidian 数字花园整合进一个网站来。

新开始

所以没有犹豫,在9月2号就开始了移植工作。

这段时间,我边看文档边学习、实现、思考,得益于我在11ty-book上花费的时间和对Node.js逐渐了解,以前看不懂的Astro代码忽然像是顿悟般的或霍然开朗,明白了组件形式和之前11ty时传统模板形式的区别,和意义。

Astro的开发体验的确很棒,这也是我之前在选型11ty之后依旧还对Astro念念不忘的原因。

高速的迭代频率,优秀的设计语言和活跃的开发群体让这款工具一直充满着活力,得益于官方全站的中文文档,而且手册十分详尽,让我在实际开发过程中能少走了不少弯路。

终于在昨天,一共历时七天,我终于将11ty-book的功能移植了个80%作用,并提交了第一个正式版本到了Github。并在昨天晚上正式切换到了Astro版本的huog-book。

开源地址:https://github.com/rebron1900/astro-book/

不过目前以前还有一些问题还未来得及处理,现在还有一些构思等待实现:

  • 整合Obsidian
  • 实现Ghost CMS和Obsidian之间互相的WikiLink引用
  • 全站搜索
  • 影集功能
  • 文章内丰富的卡片引用,如NeoDB,CodePen,视屏,音乐等。
  • 试试用SSR实现文章的密码访问
  • ...以及其他无数种可能

结束语

发现自己这些年在折腾博客这条路上越走越远。

从以前的博客大巴只会转发文章,到后开始学习编程,开始SelfHost Wordpress,开始满世界找主题、找插件优化博客,到现在我已经能流畅使用JavaScript,Node.js、Python等工具进行代码开发,之前还自己实现了一个在博客显示博主状态服务 将博主PC上使用的应用信息实时显示到博客,体验了一把Socket和服务端的开发,那时候还狂妄的想着「自己是不是已经可以前后端一把梭了?」,哈哈。

虽然13年前毕业后我没有从事IT工作。

但是我热爱编程,我喜欢编程,我喜欢互联网蓬勃的生命力。并且不同于需要拿找饭吃,我更多是处于喜欢、兴趣使然,基于这个初心去学自己感兴趣的技术,并在折腾的路上学以致用。

我很满足,也很开心,希望我20年后依旧初心不改。

Thks。

All the Styles

2024年9月9日 17:30
What will your content look like? See the styles below! Headings Start a section with one of these beauties. Use ## to quickly create a second-level heading (h2). h1 is reserved for the title. Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 Text Here's a sample paragraph from The War of the Worlds by H. G. Wells. Read the book. Smart uses Work Sans for body text and Archivo for headings, all loaded locally. No one would have believed in the last years of the nineteenth century th

Obsidian 和 Windows 我都用什么插件和工具

2024年9月3日 21:40
刚刚看到雅余哥发布了一篇 Obsidian 和 WordPress 我都用什么插件 的文章,遂也想分享一下我的Obsidian所用的插件,而我没用WordPress,所以就分享一下Windows上的一些工具把。 Obsidian 先聊聊Obsidian,其实笔记软件我用过很多了,从Trilium到Logseq再到Obsidian,我换软件并不因为那款软件不优秀,相反,他们都非常有自己的特点,只单纯是因为我的笔记习惯发生了改变,Trilium和Logseq的优缺点我之前的文章中也有细碎的提起过,不过和本篇文章主题不搭就放待下次再说把。 主题 先说说主题把。 最开始使用的Obsidian主题是Minimal,一款非常简洁的主题,热度一直也都是名列前茅,不过在 JUSTFUN 周刊:第四期 时我分享了我在B站发现的新主题 Border ,Border同样也是一款简约风格的主题。 但是不同于Minimal的极简,Border的配色要略微活泼一点,且同样拥有丰富的自定义选项,并对一些插件做作了适配,而且我非常喜欢卡片样式的布局,在调整好后会让我有一种协调的舒适感,记笔记也更有动力

VPS备份脚本修复

2024年9月3日 11:15
之前在 服务器重装设置指南 一文中分享了关于初装VPS后的一些列的优化操作,其中分享了一个数据的备份脚本,通过丰富的配置项即可实现文件、mysql数据的多版本备份策略,备份策略参见下放列表: * 保留一年前的1个备份 * 保留150天前的1个备份 * 保留90天前的一个备份 * 保留30天前的1个备份 * 保留最近7天的每天备份 用尽量少的空间备份足够容错的数据备份,并通过rclone等工具同步到其他网盘或储存空间之上。 但是最近忽然发现这个脚本似乎没有正常工作,当时是通过ChatGPT生成的备份脚本,可能存在某些问题,在排查日志时发现是因为路径问题导致脚本中断。 所以今天又用AI重新对脚本做了修复和优化,目前能正常工作了,如果有需要的朋友可以拿去体验。 💡配置中需要用到.my.cnf文件,这个是mysql的登录凭证,格式如下 [mysqldump] user = root password = gdsagag1217B #!/bin/bash set -e # 遇到错误停止执行 set -x # 打开调试模式 # 自定义变量 CUSTOM_HOME="

🤣JUSTFUN 周刊:第13期

2024年9月2日 14:39
一图 流水账 * 2024 年 8 月 27 日:我们小两口吵了一架,各自发泄了积累的情绪,第二又和好了。 * 2024 年 8 月 27 日:将博客全页面内的emoji 替换成了动态Emoji。 * 2024 年 8 月 27 日:优化了一下 Github Workflow,做了缓存。 * 2024 年 8 月 27 日:Ghost 写了一篇关于如何替换页面 Emoji 的文章发布时丢失了,用了这么久 Ghost 第一次遇到。 * 2024 年 8 月 28 日:梗图。 * 2024 年 8 月 30 日:用 DuckDuckGo 的 GPT4o mini 重新优化了一下发哥的地图代码,居然意外解决了卡顿的问题。 * 2024 年 9 月 1 日:利用 Google Maps 实现了足迹页面的文章关联功能,之后打算搭配博客搜索功能,自动根据地点关联文章。 * 2024 年 9 月 2 日:又在动切换到 Astro 的歪心思,之前没切是因为代码看不太懂,最近又重新看了一些主题,似乎又了新的理解,现在更有把握了。 读了、看了、听了 * 读

让文章内的Emoji也动起来。

2024年8月29日 15:31
💡不过这种方式似乎有被注入的风险,现在换成在SSG工具中进行替换,代码是同样的。 ❤️❤️❤️ 在前文 使用动态 Emoji 一文中提到了我是如何添加动态Emoji表情到Artalk中的。 但是,最近发现有一些朋友可能会直接通过输入法输入Emoji,而我的文章中也经常会使用Emoji,这导致了很多可以动的Emoji没有动起来。 所以又在这个上面拓展了一下,这次把文章内、Artalk评论用户自己输入的Emoji也全都做了替换。 构想的实现步骤如下 * 通过js的正则获取页面内文章主体、Artalk评论元素中的Emoji字符 * 使用这些字符去我的Emoji.json内匹配 * 匹配到数据就替换成img标签 根据以上构思结合Kimi,得到了以下代码,代码功能和使用方式直接通过注释写在下方代码块中。 //定义一个替换函数,接受一个需要替换的Node数组 function replceEmoji(list){ // 定义获取Emoji的正则 const emojiRegex = /([\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF

🤣JUSTFUN 周刊:第十二期

2024年8月26日 12:33
一图 流水账 * 2024 年 8 月 16 日 临时处理了一下 main.js 文件过大的问题,速度应该恢复正常了。 * 2024 年 8 月 17 日 刚刚刮了一阵狂风,忽然又开始下雨了,雨点激起的尘土味真好闻。 * 2024 年 8 月 20 日 黑悟空正式发布了,看了一上午直播,画面太漂亮了。 * 2024 年 8 月 23 日 读完了《山茶文具店》 * 2024 年 8 月 23 日 官方公布全平台销量已经超过 1000 万套 * 2024 年 8 月 25 日 感慨,持之以恒是一个人成功的最大基石。 发现 Sparkle 一款 Mac 上的 AI 桌面整理工具 #工具 来自 x 在刷 x 时发现的一款基于 Ai 的桌面分类整理工具,效果看起来还挺不错的,Windows 实现起来应该并不困难。 官方网站:Sparkle Rime 部署管理工具 #工具 来自 Github 一款基于 Ruby 开发的脚本工具,可以用来管理 Rime,实现自动部署,无痛升级配置等等,全平台支持。 项目地址:GitHub - Mark24Code/rime-

馄饨、饺子和抄手

2024年8月25日 13:55
最近被好友推荐了一本肖复兴老师的散文集「正是橙黄橘绿时」,肖老师在自序中介绍到标题引自苏轼的「一年好景君须记,正是橙黄橘绿时」,所以书内皆是关于肖老师近些年来的美好回忆,整本书充满着温馨、温暖的味道。 我虽与他有些年龄差距,他所书中所提之事皆是他壮年时期所发生的,与我而言却是幼年时期,但是也能产生共鸣,唤起我那些温暖的记忆。其中开篇的「绉纱馄饨」更是让我联想起了很多儿时至今的一些关于面食的记忆。 所以借此机会,也说说我关于「馄饨、饺子和抄手」的「橙黄橘绿时」吧。 我虽是南方人,但是我父亲确尤为喜欢面食,这可能和他以前的职业:长途司机有关,为了准确送达货物,节省时间,车上经常会备些馒头、包子,且因跑过一段时间兰州,所以尤其喜爱兰州拉面。我耳濡目染之下也开始喜欢面食,其中手工面条和薄面皮包的饺子、馄饨和抄手更是最爱。 所以我也以个人理解,不考究这三种食物专业背景,仅以自己体验、回忆为基础的前提下分享一下它们和我的故事把。 馄饨 关于馄饨,我的第一印象其实是「奇怪的三轮车」、「铝皮架」以及「叫卖声」这几个毫无关联的词汇,至于为什么呢? 我刚出生那几年是住在农村的,那时候结婚就

Python中将GCJ02转换为WGS84坐标系

2024年8月18日 15:09
前文 用workflow转换Google地图kmz数据为geojson数据 中提到了我是如何获取Google Map里MyMap的数据,并自动转换为GeoJSON数据应用在博客上的。 但是最近在查看我更新的地点时,发现有部分数据实际应用在Mapbox中会存在偏差,导致很多定位在陆地上的地点漂移到了江河之上。比如这个 重庆来福士广场 就漂移到了长江上。 其实这个问题我发现已经满久的了,之前也咨询了一下 昱行 和 大发哥,不过他们的给的方案我没太弄明白,当时碍于技术问题一直处于搁置状态,最近因为重新更新了地点,又把这个问题给勾了起来。 不过这次这个问题让我联想起之前在将华为的数据导入到Strava时好像也遇到过,同样也是坐标偏移的问题,当时同步软件里有个「使用XX坐标系」的选项,启用之后重新同步的数据就可以在Strava正常显示了。 所以我尝试找了个坐标系在线转换工具 EasyMap ,这个工具可以很方便的进行多种坐标系的互相转换,我试着将转换好的GeoJSON数据复制进去,并转换成WGS84坐标系后在贴到 Mapbox 的在线 GeoJSON 工具 https://geojson

腼腆的我们

2024年8月17日 16:03
上午在翻阅订阅器更新,在 月夜Moonlihgt 的博文 希望有朝一日,能笑着谈论今天 一文中看到了一本他推荐的书 《山茶文具店》 。 根据他的介绍,这本书大抵讲的是「代笔人鸠子代人撰写书信的故事」,想来作为代笔人的主人公自是会在撰写的过程中了解到各种人或平凡、或曲折、或生离死别的故事,当时便有了兴趣,便将这本书纳入了待读清单,并在 https://z-library.rs/ 中下载了电子版书籍等一有空闲时间便开始阅读。 而提起写信,我之前也在 你写过信吗? 分享了我儿时因为家庭变故和家人分居多地,通过书信交流近况的故事。 那天也是恰好在找证件的时候发现我妈留存的这些夹带珍贵记忆的信件,这么多年后重新来细细阅读,我已经不似儿时那般懵懂无知,能从姐姐的青涩的字里行间感受到那一份孤单、无助和迷茫,即便过去这么久也依旧让我红了眼眶。 不似欧美人那般,我们亚洲人对于情感是相对克制、含蓄和腼腆的,往往在日常的大多数时候不会很强烈的表达出自己的情绪,而且很多人可能一辈子没有和自己的父母、亲人说过「我爱你们」,而我觉得书信是有别于电话、视频电话、当面沟通,更适合人吐露情感的手段之一,从我姐姐

🤣JUSTFUN周刊:第十一期

2024年8月15日 22:59
一图 近期 重庆特种兵大作战两日游:1 、 重庆特种兵大作战两日游:2 两文中已经大量贴图,就不再单独展示图片内容了。 流水账 * 最近公司需要招人,在使用 58 同城的时候发现如今企业想要招人已经必须使用付费服务了,去年还是能免费发布招聘和进行付费手动刷新,但是如今连发布都要收费了,这脖子是越掐越紧。 * 最近因为出去玩需要和老婆互相交换相片,我们两个备份工具都使用的阿里云,但是在实操的时候发现这个交换过程十分复杂麻烦,因为阿里把备份相册独立于云盘之外,弄成了一个单独模块,和原有的文件体系不搭边,所以即便分享过去也无法直接合并进云端相册里,太脑残了。果然云盘的尽头就是 NAS 吗? * Notion 终于上中文了,距离他们说要适配中文已经四年之久了,这是全员重新开头学的中文吗?应该不是,社区里那么多志愿者可以免费服务呀? * 咸鱼准备收费了,拟向卖方收取基础软件服务费(预计将在 2024 年 9 月 1 日起,按单笔订单实际成交额 x 0.6% 收取,60 元封顶) 发现 Video file compressor 视频压缩 #工具箱 来自 木木 木木大佬分

重庆特种兵大作战两日游:2

2024年8月14日 11:21
接上篇 重庆特种兵大作战两日游:1 本来以为会是接连两天的大阴天,可惜第二日的气温就开始直线升高,虽然没到40°那么夸张,但是也切身感受了一下重庆的潮热天气,出游的路上热的都没怎么吃小吃,光喝水了...。 我将一间给的行程规划和我自己整理的行程图贴一下,以供有需要的朋友取用: * 我的行程规划 Canvas:重庆 GAI 演唱会两日游 * 我的 Google 行程地图:8 月 10 日重庆游 - Google 我的地图 * 一间的行程规划: * 线路一:🌸 重庆路线 * 线路二:重庆游玩计划 * 线路三:2024 年 4 月 凤梨 重庆路线 💡我的行程规划是在 Obsidian 中用 Canvas 制作,并用 Dayu 推荐的一个导出插件obsidian-webpage-export导出,部署在 Netlify 上,在旅行前也可以分享给同行的人一起查阅行程。💡所有图片统一放在文末,对图片感兴趣也可以直接点击 图集 跳转查阅 线路安排 Day2高温徒步日 * AM8.30 重庆市人民大礼堂(早饭出发、打车)(停留20min) * AM9

重庆特种兵大作战两日游:1

2024年8月13日 23:54
下篇 重庆特种兵大作战两日游:2 门票 抱歉取了个这么逗逼的名字,因为这次重庆之行的旅程确实强度拉满了。 事情是这样的,上次在 成都仙人掌🌵音乐节 后还想再体验一下比较燥的现场,而回来后恰好又看到当时 GAI 他们在长沙的 YOLO 音乐节现场,简直不要太炸裂,不过当时川内已经没有其他音乐节了,而且他们也没有巡回演唱会的计划,当时就暂时搁置了。 但是 7 月份忽然收到大麦 APP 的通知,说 8 月 10 号 GAI 会在重庆开启本年的首场巡回演唱会,不过可惜的是首轮放票我们已经错过,加之两个外甥过来,所以无奈之下只能又暂时放弃了这个计划,去了 邛崃天台山。 不过不知道是不是生日 Buff 加成,天台山回来后偶然间打开携程,并鬼使神差的点了一下 GAI 的演唱会词条,居然发现有一张 599 的票,当时没有犹豫立马拍下,但是票源只有一张,不过 8 月 2 号会再发一次回流票,我为了抢票还去找了一个 Atuo.js 的大麦网抢票脚本,不过依旧没有抢到 599 的票。 无奈之下只能求助咸鱼黄牛了,问了一下说是可以我们提供账号他们代抢,费用 50、100、200 都有,这种风险

🤣JUSTFUN周刊:第十期

2024年8月7日 00:08
上周因为年龄的焦虑推迟了更新,之后的一个周末又因为生日的到来选择了出去散心,所以接连拖了两周,今天终于把之前落下的所有的事情处理了个大概,能静下心来整理本周的周刊。 之后将恢复正常更新, 另外,下一期开始将同时发布到 Quial 上,谢谢。 一图 最近 33岁的旅行 一文中分享了不少照片,这边就暂时不做分享了。 流水账 * 忽然发现自己博客的主 js 文件在压缩过后依旧差不多有 3M,虽然我进行了一些优化,但是依旧还有 1.7M,十分拖慢加载速度,是该考虑做一下重构了。也许可以试着换成 Astro? 发现 开源按键可视化工具:Keyviz #工具 来自 bilibili 一些做 UP 主的朋友在录制视频时可能会需要在进行操作时同时在屏幕上显示按了什么按键,这款开源工具就是解决这个问题,而且它还很漂亮,拥有丰富的自定义设置。 项目地址:GitHub - mulaRahul/keyviz: Keyviz is a free and open-source tool to visualize your keystrokes ⌨️ and 🖱️ mouse act

33岁的旅行

2024年8月1日 18:50
在山上遇到一位看起来年纪很大的老爷子翘着二郎腿吃饭,一大碗白米饭上铺着四五块烧白,还有一些空心菜。旁边的石台上摆着一些特产,一问才知他已是98岁高龄。我大为触动,看来在这深山里快乐、长寿的秘籍就是简单纯粹,过好每一天足矣,那我在城市里能做到吗? 前几天搬砖时看了眼日历,忽然发现自己怎么就已经要过 33 岁的生日了呢?这个时候回想刚毕业的记忆仿佛就像是昨天一般,我很好奇,为什么这种时候却不会觉得记忆模糊了呢? 不过生日总得过,自己也想趁着这个时候放松一下,释放一些心理的压力。 我们那儿基本上都是过农历生日,换算成阳历差不多是每年的七至八月生日。而我以前的生日基本上都是在家里渡过。 不过在年纪大了之后已经不太想和父母过生日了,这应该是我的一种逃避心理,和他们在一起过生日时氛围总觉得不太对,话题聊着聊着就经常会往生小孩、未来工作、要成熟担家这类严肃的话题展开。 所以我前年开始,生日不在家里搞聚餐了,那个时候打算每年生日的时候和家人找个地方玩一玩放松一下。 我前年去的是莹华山,在山上住了一次帐篷酒店,还去山上的大峡谷玩了漂流,之后下山去看了三星堆博物馆,可以说玩的很尽兴了,还写了一

如何对抗自己?

2024年7月24日 22:26
最近状态很不好,延迟了几天才发的周刊其实是最好的证明。 我如今三十出头,正是而立之年,本当积极向上,激流勇进,但是同时会面临以前懵懂时不曾有过的多种压力,而压力会滋生各种负面情绪。 我们这个年纪多数人如果不出意外,也许已经结婚,甚至有些朋友已经有了小孩,而如何和睦的与另一半、另一半的家庭相处,如何养育小孩,如何多多挣钱给这个家庭带去优渥的生活条件,这会持续不断的产生内部压力。 其次是在朋友圈内、在闲聊中发现的同龄人更出色的表现,或者那些之前可能默默无闻淡出你的生活,却在这个时候忽然知道他新境况的朋友。我们愕然的发现他们忽然开始有了欣欣向荣的生意、优质的工作岗位、和睦的家庭,也许不少人甚至已经孩子都大到可以打酱油叫叔叔了,这是外在压力。 我们,不,也许只是我。 在这个时候的低落情绪伴随着自我怀疑就像逐渐涨潮的海水,你能眼见着它们没过你的口鼻,感受着逐渐涌来的窒息,并在窒息中独自一人承受痛苦。 正如古人所言「三十而立」,虽然这个时候的我们只能独自承受,但真正的自我救赎之路也存在与痛苦之中。 其实最好的救赎之路就是从任何一件你有能力改变的事情做起,并坚持下去,在初有成果后再进行

🤣JUSTFUN周刊:第九期

2024年7月21日 10:49
新增视频板块,分享我刷到的一些有意思的 B 站视屏 一图 流水账 * 这周周刊依旧推迟了 2 天,惭愧 * 一是带我两个外甥 * 二是这种工作有点忙 * 三懒了 * 川普被枪击,少数派一位作者写了一篇「逃生指南」引起了大家的讨论,我的个人观点:当时躲起来,逃跑的行为是没什么问题的,因为这是人性本能,不过拉人垫背这种做法比较有悖人伦。在这种特殊情况中,除非受过非常专业的训练,不然普通人的第一反应都是是呆住或者躲在别人身后。 * 之后的第二反应会根据每个人的思维发生变化 * 胆小者想着第一时间逃离现场 * 好事者会想着去了解发生了什么 * 网红可能会自拍跳一段社会摇?(捂脸 * 这周微软发生了很多事情,其中一项甚至影响了全球 * 365 服务故障,OneDrive 无法使用 * 因安全组件 CrowdStrike 引起的 BUG,全球很多公司都大量出现蓝屏故障。 发现 Freemind:有意思的白噪音定制网页 #工具 Freemind 是 V 站一位大佬制作的白噪音生成网页,在这个网页中你可以叠加

🤣JUSTFUN周刊:第八期

2024年7月14日 00:13
这期的周报又晚了一天,因为最近外甥和外甥女过来玩了,能安静写字的时间变少了。 抱歉,刚落笔时就发布,导致很多错别字,睡醒再来改🙃 一图 流水账 * 外甥和外甥女过来玩了,这几天白天上班,下午下班后还要送他们去学游泳,晚上则再陪他们看电视、玩小游戏,算是提前体验带娃生活了。 最近几周和几个月,随着欧盟宣布计划对进口中国电动汽车加征高达 37.4% 的临时关税,这些碎片化趋势凸显出来。在此之前,美国于 5 月对中国电动汽车征收 100% 的关税。 在欧盟对中国制造的电动汽车加征关税前,中国对欧电动汽车出口在过去几年猛增。一项研究显示,中国电动车出口额从 2020 年的 16 亿美元跃升至去年的 115 亿美元,占欧盟电动汽车进口总额的 37%。 * WTO总干事警告全球贸易面临崩溃 “希望不要重蹈1930年代的保护主义覆辙” * 昨天牙疼了一晚上,我也一晚上没睡。早上第一件事就是去牙科,目前上了药,终于不疼了,但是完全提不起吃饭的兴趣。 * 用云闪付 + 企业微信日历提醒和管理信用卡还款,基本上很少出现逾期的情况了。 * #Switch Switch

来自被进化所抛弃产物的重击

2024年7月12日 20:38
不知道是不是因为昨晚上那一顿烧烤犯的罪,还是水了 晚风、夜色和腼腆的我 这篇文章的缘故,入夜后嘴里仅剩的两颗智齿中的其中一刻忽然开始不安分起来,像是陷入终局的拳击手般重拳出击,殴打了我整整一夜,疼的我死去活来。 我的右半脸几乎在整夜都持续保持这一种刺痛,这种疼痛来自牙根深处,刺痛频率在2-3秒之间,我甚至一度觉得就像摩斯电码那样,或者说就像紫薇被容嬷嬷强迫着做针灸一般,边扎还边靠在我背上问我「崽种,爽不爽?」,我只能像个小娘们一样哭着喊着「不要,不要,啊!容嬷嬷,我错了」。 一两点的时候疼的实在有点熬不住了,人都有些恍惚了,便起床去找药。 哪知道我家似乎没人有牙痛这个毛病,根本没有准备任何牙痛相关的药物,无奈之下只能拿了几粒花椒咬在病牙处,虽然有所环缓解,但依旧一晚上都没办法入睡。 其实我这两年来刷牙的习惯保持的挺好的,每天早晚都会刷牙,而且晚上刷牙后就不会再吃东西。而且除了电动牙刷外还给我这一口宝贝们配了冲澡器(冲牙器), 不过人类的进化后被抛弃的产物就是这么的不安分,总会在不经意间给你个惊喜。 其实发作的这颗智齿在之前就有发作的征兆,当时还专门腾了一上午去医院做检查,医生

晚风、夜色和腼腆的我

2024年7月12日 00:37
这几周一直都在坚持更新「JUSTFUN周刊」,截止目前也有7期了,而且此间「节气」的图片也没有落下,但是也有段日子没有写正儿八经的博文了。 倒不是我没有东西想写,反而心中积酝着很多东西。 而是不太想将这些东西吐露出来,即便是在博客这个面向少数网友的「文字载体」里,因为这里毕竟还算是个公共区域,而我平常也算是以半实名状态活动在博客圈内,抒发这些敏感情绪总是有点不太好意思。 不过为什么又在这个点写下这篇酸溜溜的文章呢? 因为总有憋不住的时候把...。 想着那就擦着边,就着夜色和晚风写点不着边际的废话权当抒发了。 写完再删了 ... 以下写了不少,写完后于我而言倒也算痛快。 为了不让大家看笑话,完笔时全删掉了。 大家看个乐呵。

🤣JUSTFUN周刊:第七期

2024年7月7日 11:58
一图 流水账 * #知识 不吃早点是非常容易得胆结石的,原因是不按时吃饭,胆没有规律性工作,胆汁停留时间过长。 * #知识 乌龙球一词源于英语的“Own goal”,直译成中文为“自进本方球门的球”。由于粤语“乌龙”有“搞错、乌里巴涂”之意,所以香港记者便在报道中以“乌龙”或“乌龙球”来翻译“own goal”。中国大陆记者也借用了香港的这种译法。而中国成语的“自摆乌龙”、“乌龙大礼”也成为乌龙球的另一种戏称。 * #资讯 在TG上看到 OpenSSH出现高危远程代码执行漏洞 一文,遂用 ssh -v 检查了一下自己的SSH版本,似乎在受影响范围,赶紧升级一下,整理了一下升级流程 升级SSH版本到openssh-9.8p1 * #流水 今天有人帮朋友在博客群里征婚,是位大概30岁左右的男士,深圳户籍。看他的征婚简历,个人条件其实还算不错的。 * #流水 浏览器又从 Chromium 换回了 百分浏览器 ,换了后Instagram死活打不开,不知道是我梯子的问题还是换浏览器导致的。 * #技巧 企业邮箱其实可以设置客户端专用密码让第三方客户端登录且是长时间有效,避免密码

OpenSSH高危漏洞和升级教程

2024年7月2日 12:32
在TG上看到 OpenSSH出现高危远程代码执行漏洞-影响超过1400万台暴露在公网上的服务器 一文,遂用 ssh -v 检查了一下自己的SSH版本,似乎在受影响范围,遂打算赶紧升级一下。 已知受影响的版本有: * 低于 4.4p1 版 (不含此版本):受影响 * 高于 4.4p1 但低于 8.5p1 (不含此版本):不受影响 * 8.5p1 及后续版本到 9.8p1 (不含此版本):受影响 问了一下GPT,给的方案是 sudo apt update ,但是不管用,后找了一篇教程 ssh爆漏洞了,手动更新OpenSSH教程,整理了一下相关资讯,教程和注意事项如下。 💡提示 升级后你的 sshd_config 设置会被覆盖,再重启服务器前请重新设置配置文件。 Ubuntu 的软件源更新了 https://ubuntu.com/security/notices/USN-6859-1 Debian 11 12 已经修复了 https://security-tracker.debian.org/tracker/CVE-2024-6387 尽量使用包管理更新openssh

🤣JUSTFUN周刊:第六期

2024年6月30日 14:40
一图 流水账 * 这种没有建设性的评论我已经习惯选择性不看了。 毕竟说废话,发表幸灾乐祸情绪并没有成本,而且这种人在地球很常见。 * 💡Ghost 5.86.2 更新了新功能,现在可以在文章内通过输入 @ 符号快速插入站内链接,在撰写文章时通过 @ 符号唤起查询窗口,如果在行内的话是插入链接 🤣JUSTFUN周刊:第五期 。如果不在行内,如另外起一行则是插入bookmark * 执业药师考试可以开始报名了,总共4科,之前每年都报名,但是都没有认真备考,今年怎么也要过个两科把!加油加油! * 发现Ghost的API中有一个可以获取文章修改历史的接口,也许可以用他在文章底部加上一个修改记录? * 在x上看到dayu分享了一杯凉虾图片,但是发现他们那儿叫槐花粉,经查资料还是有略微不同的,虽然都是大米粉制作,但是广西的这个东西里面加了槐花研磨而成的粉末 * 发现Octarine的OG图挺好看的,也许可以试着抄抄。 发现 Git命令速查图:稻米鼠整理的Git命令 #Git 来自 稻米鼠 我其实觉得Git的命令不太好学,因为普通用户没有系统性的使用过Git参与项

🤣JUSTFUN周刊:第五期

2024年6月23日 04:01
一图 流水账 * 💡 给博客新增了 莫比乌斯 的主题配色,可以在左侧配色部分点击启用,希望大家喜欢。如果有看到什么样式BUG希望能及时告诉我。 * 这周真累呀,还好气温怡人,心情不至于又跌落谷底。 * fly.io 也要开始收费了,有些免费的午餐的确不长久。 * 在B站刷到了上次遇难兄弟的相关视频,总算了解到事故原因了:货车刹车失灵撞到他了,路过的骑友说没看到他有外伤,哎。 发现 cobalt:简单好用的流媒体下载器 #工具 来自 cobalt is a media downloader that doesn't piss you off. it's fast, friendly, and doesn't have any bullshit that modern web is filled with: no ads, trackers, or invasive analytics. Cobalt 是一个不会惹你生气的媒体下载器。 它快速、友好,而且没有任何现代网络充斥着的废话:没有广告、跟踪器或侵入性分析。 试用了一下,基本上稍微大一些的流媒体网站都

🤣JUSTFUN周刊:第四期

2024年6月16日 14:37
一图 流水账 #流水 dockerhub最近好像又被制裁了,不过我记得似乎一直都不能访问的把?实在不行就用镜像服务,有手有脚饿不死。 #流水 今天发现可以查成都马拉松的报名结果了,不出意外的没有中签,只能看看能不能候补上了。 发现 Coolify:Netlify等平台的自部署替代工具 #工具 Coolify是一个开源的Heroku、Netlify、Vercel替代自部署方案,他可以在你的服务器上完整实现上述平台的大部分功能,官方推荐的VPS配置是2c2g30g,另外官方也提供托管服务,差不多4刀一个月。 一键安装脚本: curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash 我之前也想过部署一个CI工具,不过最后还是放弃了,一是这类工具对系统占用都挺高的,我小鸡负担不起,二是其实我的用量是比较少的,性价比不高,所以最后还是用了Github Action。 项目地址:GitHub - coollabsio/coolify: An open-source & self-hostable Heroku

🤣JUSTFUN周刊:第三期

2024年6月10日 10:17
恰逢节假日,昨天回家已经很晚,所以这期的更新晚了一天。 一图 流水账 #观点 以前我有个朋友跟我说过一句特牛逼的话:爱情就像两个拉着同一根橡皮筋,只有先松手的人才不会受伤。 #观点 今天一大早就收到一个不好的消息。之前一位经常一起骑行的骑友在骑行318途中,刚出昌都不远出了车祸过世了,据闻是被大货车碾压了。他是5月中旬出发重骑318,我还时不时给他留言询问进度,想不到世事无常,人已离世,现在心子很不舒服...。 #观点 这世界没有什么东西是一成不变的,也正是因为这样,这世界才多姿多彩。心有郁结的人该走出去,不该停留在不好的回忆里,不好的思绪里,该看看这世界的美好,这是活着的意义,而他们走偏了。 #观点 最近高考,和大家聊了聊关于是否一定要读一个好大学一事。我的个人观点是:灵活的思维模式比读书更重要。很多以前读书时期的混子能挣着钱,而一些读死书的高材生最后可能连工作都不好找,这就是比较好的例子。另外就是执行力,有了思维如何实践出真知就是另外一个重要环节了。最后就是运气了,不过称之为运气,我总觉得有点不妥,因为都是别人在做出某些选择之后成功了才被称为运气。总的来说读书是一个

🤣JUSTFUN周刊:第二期

2024年6月2日 09:59
这是第二期,希望我能50周如1周般的更新。 * 「发现」部分新增了当前信息的获取来源。 * 目前你还可以通过 TG 频道订阅本周刊: https://t.me/justfuning1900 * 一图 流水账 #讨论: 因为肥猫的影响,最近重庆一些大桥效仿桥的人多了很多,地方政府无奈之下增加了很多守桥人员,已经是十步一岗的状态了。 是人们的心理承受能力变弱了还是这个社会确实让人寸步难行,这种现象是值得我们反思的。 #讨论: 华为手机销量时经 13 个季度,重回排行第一名。 #讨论: 群里今天讨论baidu搜索。 我发现自从有了ChatGPT等ACGI工具后,我已经很少通过搜索引擎获取内容了,至少代码这块已经很少。有疑问都是直接问AI获取答案,以前还有牛头对不上马嘴的时候,随着模型的不断完善,这个问题已经越来越少了。 下一个时代搜索引擎是不是要被淘汰了? #讨论: 今天在x上和看到球大佬在指责「中文互联网正在加速崩塌」一文制造焦虑,他的原推 x.com 。 其实我的观点和他是差不多的,我不否认可能有大部分文字确实消失了。但是,首先互联网是碎片化的,

用workflow转换Google地图kmz数据为geojson数据

2024年5月30日 13:26
前言 最近终于把大发哥的地图功能算是移植过来了,可以在 https://1900.live/map/ 页面中查看初步效果,不过在后续如何方便的维护这些数据的方式上产生了一些思考。 想直接看代码可以通过右侧TOC跳转到最后。 方案 数据持久化无非是写在文件里或者数据库,所以我想了一下几种方案: * 直接手动维护一个json文件,坐标数据等信息去google地图里复制。 * 之前做了API服务,也可以考虑写进lokijs的数据库里。 * 直接用一些第三方的API服务。 第一个方案 不过一种方案有些麻烦,大概只在我脑子里停留了2.5秒后就被我踢出局了。 第二个方案 第二个方案我倒是认真想了很久,甚至做了一下原型,验证结果是做虽然可以做,但是很麻烦。 因为相当于我得重新写一套包含前后端的,基于mapbox的交互,如添加标点,删除标点、更新标点,如果要全部弄完很是挺麻烦的,我也没这个信心做好,所以在第二天放弃了。 第三个方案 emmm,好像没有现成的API服务。 我查了一下相关的自制地图服务,好像基本上都没有提供这个功能。 倒是我之前用的google地图

🤣JUSTFUN周刊:第一期

2024年5月26日 10:40
开刊语 受各位大佬的影响,也想开个分享类的周刊,看看自己能坚持多久。 至于刊物名字把之前的博客名字拿来用了,「JUSTFUN」 初步打算将本刊分为三个方面: * 一图:每周保底发一张自己拍的照片 * 流水账:本周的思考、工作记录等等琐碎的事 * 发现:本周遇到的所有有意思的东西,可以是项目、观点、见闻等等。 一图 1. 上个星期的燕子还肉嘟嘟的, 2. 公司后面的洗车房,工人们忙了了一天终于能下班了 3. 这个星期已经翅膀硬了,开始自己飞了。 4. 昨天刮了一阵妖风,伴随着风下了一夜的雷雨,今天又放晴了。 流水账 * #工作:开始使用 Done List 记录工作 * #战争:在 b 站看了这个视频,感慨战争真的很残酷,最近伊朗又在出问题,这个世界越来越混乱了。 【一直压着没说的话,拍摄于 4 月 20,(人比战争更残酷),你可以说战争就是生命收割机,正常战斗他们或许不会牺牲,官僚的利益游戏)),-哔哩哔哩】 https://b23.tv/IS7tRJ9 * #知识:刚刚无意间做了个尝试,发现在Windows11中,选中多个文件后按 F2

服务器重装设置指南

2024年5月25日 17:38
前言 其实也不算指南把,因为最近要帮 her.blue 的服务器重新装系统和全线使用 docker 安装应用,在操作过程做顺便做了个记录,希望能帮到你。 数据备份 * 在操作之前最好做各个服务器快照,以防万一 * 如果没有快照就对所有程序、数据库等单独自己做数据备份 本次操作过程就装完系统后就立马触发这个问题需要重新装系统,还好数据都有备份。 服务安全加固 添加非root用户 * sudo adduser username 添加用户 添加用户到 sudo 用户组 * sudo usermod -aG sudo username * id username 这个命令可以查看用户有什么权限 生成安全密钥 切换到新增加的用户,生成该用户的安全密钥 * ssh-keygen -t rsa -b 4096 * cat id_rsa.pub >> authorized_keys 设置ssh,启用密钥登录 编辑 /etc/ssh/sshd_config 文件,进行如下设置: RSAAuthentication yes PubkeyAuthent

文章点赞和浏览数统计实现

2024年5月19日 11:08
前段时间大发哥TG频道说要发一个用CFWorker实现文章点赞和浏览数统计的功能,很快啊,星期二教程就出来了: Hugo Cloudflare Worker 。 整体方案是使用CfWorker 实现api请求,再用D1做数据持久化,效果还是很赞的。 本来我是想照着教程完全一步步来的,但是想到我前文 将博主 PC 上使用的应用信息实时显示到博客 在折腾时搭了一个API服务,就不想再去用CFWorker了,打算直接在自己服务器上实现这个功能,顺便再实践一下用Express搭配数据库工具。 所以打算稍改一下,结构如下: * 前端照搬 * API结构实现部分照搬 * 数据库方面结构、读写操作照搬 * 数据库持久化用 LokiJS 前端 前端我这里用的Alpinejs做驱动,前文 用 Alpinejs 完成主题切换功能 介绍过这个库,在不使用Vue等工具下普通HTML的一个替代方案,好用。 * 在模板中渲染的时候设置文章 ID (这里我因为用的Ghost做数据源,所以自带一个MD5的ID,用一个固定唯一值就好) * 设置 x-data 为后面js中初始化的 post_

我也出一版纯CSS+JS热力图

2024年5月17日 19:23
前言 之前根据蜗牛哥的教程弄了一版使用Cal-heatmap库生成的热力图 博客更新热力图,不过这个方式需要加载四五个js文件还有一些css文件,比较拖慢整个网页的加载速度,所以蜗牛哥后来又出了一个CSS 和 JS 实现博客热力图 方案,不过当时我闲麻烦一直没跟着做。 不过我也一直在思考该怎么用纯CSS和JS更为简便的实现这个功能,今天灵光一闪,有了些思路,所以趁着这股热乎劲把这个功能实现了,撰文分享一下我的思路。 思路 我的思路其实很简单,因为博客上显示的热力图其实就是一个很多小方块组成的方阵,所以其实不用管什么年份、月份之类的,我们只需生成固定个数的小方块,再将匹配的数据填充进去不就好了吗? 我的构思如下: * 生成一个 7 * 9 列的格子方阵,一共是是63个 * 每个格子要匹配往后63天中对应一天的文章 * 如果开始当天不是星期天,则需要找到这个星期的星期天作为开始时间 * 在生成格子的时候将文章数据附加进小格子内。 * 完成 实现 💡有了ChatGPT后折腾博客真的好方便呀,你只需要有一些基础编程知识和思维就能通过它构建出自己想要的代码。

将博主PC上使用的应用信息实时显示到博客

2024年5月13日 23:00
起因 这个功能是在大佬 Innei 的博客上看到的,效果就是在网站logo处实时的显示博主在PC上使用的应用程序信息,虽然是个不太显眼的功能,但是效果还是挺好的,让我感觉整个网站因为这个变的不再死板,不断变动的程序图标让这个网站像博主的一个身外化身。 真的很想要呀! 遂翻阅了一下大佬的博客源码和一些相关的配套文件,自己大概有了一些思路,后来也将这些想法整理了一下后请教了 一个球 大佬,大佬说这个思路是没什么问题。 所以,喜欢就干! 遂根据自己的思路搭配Kimi和ChatGPT终于在昨天将这个效果实现了一个大概,今天大概修复了一下BUG,撰文总结一下这次折腾和分享实现过程。 结构思路 对于这个功能的整个流程总结如下: 1. 电脑上有一个监控程序,定时或在切换程序时向服务器发送当前激活的程序信息 2. 服务器对发送来的信息进行鉴权、验证、过滤等处理后转发给所有客户端(既打开了我博客网站的浏览器) 3. 网页接收到信息后根据需求进行展示。 根据这个结构我们需要一个可以上报数据的监控程序和一个架设API的VPS或可以架设API功能的云函数等,技术架构如下。 1.

使用动态Emoji😘

2024年5月8日 20:44
昨夜忙完工作临了准备关电脑时看了一条留言,并做了一些回访,在回访的过程中发现了 为博客启用动态表情 一文。 为博客启用动态表情 | Fluent Emoji 3D表情包这东西挺难挑还,各式各样的我最近翻了个遍,只能说Microsoft推的Fluent Emoji最合我意,动态3D,简约和谐。但它一个表情几个变体,总量直逼2000+,我个小博客用属实牛鼎烹鸡,高攀了昂。只得挑些常用的整理汇总,现已适配Twikoo、Artalk、Waline、Valine 介绍 引用站外链接放养平凡btwoa 主体内容就是使用微软的Fluent Emoji动态表情作为评论系统的表情包,遂花了一点时间根据文章介绍弄好,发现效果相当不错,大家可以留言的时候体验一下。 (微软做的这些小东西其实都还挺不错的,就是太容易弃坑) 上传Emoji包 btwoa对emoji做了中文alt整理,并提供了Gif的下载链接,我们只需要将下载下来的文件解压缩后上传到自己的S3、七牛、又拍等云盘上面即可。 我们可以在桶根目录里新建一个文件夹,如 /fluent-emoji ,并将所有表情传到这个文件夹下,如果你的云储

小狼毫Win11配色分享

2024年5月7日 16:47
之前在 小狼毫算法服务设置自启动 + 微信配色主题分享 中分享过一个微信配色的主题,十分好看。 但是我个人也比较喜欢Windows的默认输入法的皮肤,之前用掌心输入法的时候还专门去找过相对应的主题 【手心输入法皮肤】Win11Style。 最近偶然间发现在小狼毫的issue区 #1205 中有人提到了小狼毫Win11风格的主题,尝试了一下发现效果还原的还是比较到位的,体验后不敢独享,遂撰文分享。 配置文件内容添加到 weasel.custom.yaml 中,没有这个文件就新建一个,这个 style 部分的设置搭配我之前分享的微信的主题也非常好看。 style/+: font_face: 'Maple UI' label_format: "%s" inline_preedit: true font_point: 15 label_font_point: 15 comment_font_point: 15 horizontal: true color_scheme: win11dark color_sche

五一我也成都游一趟把!

2024年5月3日 18:12
前言 本来五一是不准备出去玩的,因为4月下半旬事情多的很,我们几乎每个周末都在加班,平时的工作日晚上也基本上都是七、八点才能回去,这半个月下来我和霜两个人真是累的够呛,只想等着五一在家躺尸。 但是口罩摘掉以后也没正儿八经走稍微远一些的地方玩一趟,虽然前些日子趁着周末去了临近的城市内江玩了一趟:内江甜城一日游,一天的行程下来体验着实不错,但是还是有点不尽兴的感觉,这段时间积累的压力已经膨胀到了临界点,也在出去和不出去之间摇摆。 行程及费用规划 费用 * 音乐节门票:520元*2 = 1040元 * 油费+过路费:开的面包车,来回应该200左右油钱把+假期免过路费 = 200 * 第一晚酒店:190元 * 第二天SPA+住宿:120元*2 = 240,送留宿 * 吃饭:这个没记录,看个人要求了。 行程 * day1:音乐节 * 早上10点出发 * 中午12点多到,在周边吃点东西 * 2点左右进场 * 晚上九点看完后宵夜 * 入住酒店 * day2: 骑行 * 我9点出发去骑行 * 霜12点起,去吃饭东西,然后下午自

OpenGraph图自动生成

2024年4月28日 23:36
什么是OpenGraph 💡以下介绍由Kimi生成。 大白话就是:这些数据专门告诉社交平台,我们这个网页的基础信息等数据。 OpenGraph 是一种由 Facebook 开发的元标签(meta tags),用于网页上的社交分享。当一个网页链接被分享到社交媒体平台时,这些标签可以提供额外的信息,比如网页的标题、描述、图片等,从而在分享时创建一个更丰富、更吸引人的预览。 OpenGraph 标签通常放在 HTML 页面的 部分,它们允许社交媒体平台了解页面内容,以便在用户分享链接时生成一个预览。一个典型的 OpenGraph 标签集可能包括:

博客更新热力图

2024年4月27日 23:42
这个功能最早是看到椒盐豆豉 如何给 Hugo 博客添加热力图 做的分享,不过当时还没下定心思来弄。后来陆续在蜗牛、空白大佬们的博客上看到,还是比较想加到自己博客上的,不过在这个月十几号的时候研究过一下,当时没太研究明白,放弃了。 但是今天在长毛象上看到空白大佬在 称赞蜗牛大佬的新热力图 ,所以跑过去看了一下,发现好像的确和第一版确实不一样,遂通过蜗牛大佬的 Github仓库源码 折腾了一下午,终于弄好了,分享一下折腾经过。 Cal-heatmap 大佬新的热力图是基于 Cal-heatmap 这个工具,这是一个专门制作热力图表的JS工具包,我们只需要通过简单的配置即可生成漂亮的可定制热点图。 Cal-Heatmap | Cal-HeatmapCal-Heatmap is a javascript charting library to create a time-series calendar heatmapCal-Heatmap 基本初始化 首先是引入Cal-heatmap的js库和css库,当然你可以用使用CDN也可以直接下载源码到项目内。 另外大佬没有将这部分代

联通话费降费指南

2024年4月23日 23:29
费用 我是应该也算是联通的老客户了。 十多年前刚来四川的时候因为漫游费贵,需要换掉以前在柳州办的电话卡,所以我当时从淘宝上买了一张号码为我出生日期的电话卡,当时还没有什么月租包,每个月都是买流量包度日。 后来腾讯出了大王卡套餐,开始流行日租卡。我当时跑去营业厅换套餐,居然还不给我办,后来看到网上说打投诉电话可以解决后才换成了腾讯大王卡套餐,自那以后基本上每个月的话费就固定在了八九十块左右。 前年和我老婆结婚后还给我老婆也搞了个同样数字,只是生日日期不一样的电话号码,组成了情侣号码,但是她觉得每个月八九十元的套餐费有些肉疼。 之后偶然在v2ex上看到有讨论手机卡资费的帖子,在帖子的评论区里面学到了一些降费技巧,在时间过程中我结合帖子里说的东西和自己阴差阳错的操作下最后把费用降到了: 👊月租40元,有40g全国流量120g以上的省内流量+600分钟的通话时间。 其中流量可以转节下月,我现在每个月大概两三百G的流量把,根本用不完。 本来还没想过要说这个事,不过今天在刷订阅的时候看到 obaby 提到自己流量费不够的情况,我一看,居然也是联通的,索性就把我的经验整理一下分享出来

keyguard:一个好用的Bitwarden第三方安卓客户端

2024年4月23日 22:35
Bitwarden是一个优秀的开源全平台密码管理软件。 安装好它后,你可以在电脑、浏览器、手机、甚至是手表上记录、管理你的密码,并可以根据你使用的APP进行可选择的自动填充,省去手动输入的烦恼。 同时它还附带了强大的账号、密码生成工具,可以自动、随机的帮你生成高强度密码和账号,极大程度的解决现代互联网发达之后平台多、账号多、密码多导致记不住的情况。 此前我还写过几篇关于安装、配置、使用的文章,如果感兴趣可以跳转阅读: * docker 自建 bitwarden 服务. * Bitwarden 搭配 DuckDuckGo 生成匿名邮箱 * Bitwarden 启用 Websocket 及加固指南 * AuthenticatorPro 开源的本地两步验证工具使用教程 但是Bitwarden的客户端难用是大家公认的,尤其是电脑客户端....。 软件在使用过程存在各种如:操作割裂、卡顿、不方便的情况。 虽然前些日子看到官方似乎已经开始 重做手机客户端 了,但是感觉等到落地可能还需要很长的时间。 不过,好消息是...。 keyguard 最近我在Github上发现了

喜大普奔:百分浏览器终于更新了!

2024年4月21日 12:25
今天早上蹲坑的时候忽然看到一个公众号推送了百分浏览器更新了的消息,遂水文一篇,奔走相告! 百分浏览器 - 更新日志更新日志 v5.1.1130.82 [2024-04-16]| 内核升级至118.0.5993.159 继续支持Win7和Win8 支持指定小号标签打开书签和链接 添加选项"强制在当前标签中打开链接" 热门网站支持本地图片作为图标 合并部分安全补丁 [BUG修复] Win11下多列书签显示异常 [BUG修复] 部分环境下下载窗口花屏 [BUG修复] 小号标签中无法显示桌面通知 [BUG修复] 浏览器启动时加载下载列表会引起卡顿 [BUG修复] 选中复制和超级拖拽无法复制HTML内容 [BUG修复] 部分环境下安装包崩溃 [BUG修复] 在多列书签中进行拖拽之后容易触发崩溃 [BUG修复] JS书签被强制使用默认图标 [BUG修复] "自动清理内存"可能导致标签被卸载 [BUG修复] "新标签打开位置"为右侧时"打开全部书签"时顺序颠倒

静湖计划

2024年4月18日 22:39
这应该是个很有逼格的计划名,不过希望这个计划不会让我自己出丑。 起因依旧是我越来越严重的摸鱼习惯。 从开始玩博客起,折腾博客这个行为就已经穿插进我的生活,往往为了实现一个功能会不由自主进入心流状态,忘记时间流逝。其次是网上冲浪,逛Github、V2ex、博友互访等等,都会浪费我大量的时间。 通过 Tai 统计,我2023年的、2024年的软件使用情况如下: 其中浏览器、vscode的占用时间已经肉眼可见的远远超标。 这不仅表明他们已经浪费了我十分多的时间,还让那些原本在工作时间内该按计划完成的工作因为摸鱼而推迟、累积,最后往往会在准备不充分的情况下仓促完成或直接没完成。 这些事情同时会引发蝴蝶效应,牵连更多的其他事情。 而且,我已不再是时间充裕,光有兴趣爱好就可以的少年,我已三十而立、经成家立业。 我的事业、家庭、未来都容不得我在不该沉溺的时间沉溺其中,所以我不得不重新想办法让自己从那条细窄的河道流出去。 另外我发现,去年早起锻炼过一个多星期(早起的方法),以及前些日子因为报名了马拉松,执行了差不多一个月的跑步训练,这一个月我几乎每天都在坚持六点半左右起来晨跑。 这

用Alpinejs完成主题切换功能

2024年4月17日 13:48
终于把网站的主题切换功能做好了,这次的实现相当满意。 并且我联动了几个主题颜色比较特别的博友,他们分别有:雅余(黄色)、昱行(粉色)、风清(蓝色),大家可以在本站左侧菜单栏选择自己喜欢的配色浏览本站,欢迎给出意见和分享感受。 之前虽然也写过主题切换功能,但是思路没有这次完整,所以索性写一篇博文介绍一下整体实现思路和流程。 这次11ty-book我采用了Alpinejs作为网页的主js框架(真的挺好用的...),这个框架有中文文档 ,官方地址为:https://alpinejs.dev/。 * Alpine.js 通过很低的成本提供了与 Vue 或 React 这类大型框架相近的响应式和声明式特性。 * 你可以继续操作 DOM,并在需要的时候使用 Alpine.js。 * 可以理解为 JavaScript 版本的 Tailwind。 js部分 在主js文件中使用import的方式引入alpinejs文件,并将主题要用到的json数据对象放入Alpine.data对象中(data是alpinejs的数据主要传输方式)。 具体代码作用见下方代码片断。 import A

Ghost使用11ty时生成无插件生成TOC目录

2024年4月16日 23:10
分享一段之前和ChatGPT沟通得到的代码。 作用为传入一段HTML代码,并获取页面内的H2、H3、H4标签,组装成固定格式的html字符串返回。 const cheerio = require('cheerio'); module.exports = (html) => { if (!html) return; const $ = cheerio.load(html); let toc = "
    "; let currentH2 = null; let currentH3 = null; let els = $("h2, h3, h4"); if(els.length == 0) { return; } $("h2, h3, h4").each((i, el) => { const tagName = $(el).prop("tagName"); const id = $(el).attr("id"); const title =

关于友情链接和SSG在博客中展示Flux订阅

2024年4月15日 22:43
友情链接 此前我一直以文章内容的形式手动展示和维护博客的友链,并在文中附上了友情链接添加的条件,此间也收到过不少好友的链接申请。 不过在 2023年11月05日 ,我对该页面的介绍做了更新,并在文中写到: 今天忽然发现我好像重新理解的「友邻」的意义,这个邻居应该是我喜欢、欣赏的,对我有「正面影响」的,而不是冰冷页面上的一个超链接而已。 所以我决定只在这个页面展示我喜欢的博客,我也并不需要他们也给我做上「友情链接」,单纯只是因为我喜欢、欣赏他们。 另外那些没有出现在这个页面上的朋友也不要心有芥蒂,并不是你的博客不优秀,毕竟「喜欢」这个词非常主观不是吗? 自那之后我就再没有对友情链接页面中的链接做过维护。 并且在之后不久基于23年11月5日的见解 博客并不是页面上的一个超链接 ,我希望能 通过他们的博客获取一些正向激励 ,而且是 持续 性的获得这种激励。 所以我开始认真 使用 订阅工具,此间还分享了 打破信息茧房及一款 RSS 阅读器推荐 和 如何订阅 Q 外的 RSS?方法来了 两文。 更换工具 不过文中介绍到的订阅工具 yarr 因为是开发者自己做的一个工具,虽然

雾,是地球的迷梦

2024年4月11日 22:26
今天罕见起了个大早。 刚出门的时候天还灰蒙蒙的, 没多久就看见高楼的上面开始蒙眬, 没过一会, 整个雾团就像滴入清水里的黑墨一般蕴开, 无法阻挡的贴合在地面之上。 一切就像梦境一般, 人和穿行在浓雾里, 车辆的灯光也开始变的模模糊糊。 就像... 就像穿行在地球的梦里般....。 路旁公园的植物上残墙着春雨的痕迹, 在这个灰蒙蒙的世界晨里, 毫无保留的体现着自己的生命力。

我也跑个半程马拉松:完赛

2024年4月9日 00:46
了解后才知道「牛逼」 以前看体育节目的时候听解说们说「不可思议,某某某马拉松运动员跑出了全马20x的成绩」,当时的反应只是「哦...,20x呀,好像很厉害的样子啊?」。 现在自己真的开始跑步后才发现,「全马20x」这个时间简直就是飞人,要以这种速度跑完42.195公里,这种速度已经是突破了人体极限。 先说补说一句「牛逼」后回到正题。 其实这次半马比赛我只有一个目标——完赛。 是的,我从来没有跑过这么长的路程,报名之后我拿我之前的跑步记录给我一个喜欢跑马拉松比赛的姐姐(后称麦姐)看,并做了一番咨询,但是她在看了我的跑步记录后直言我那个速度简直是在散步,甚至建议我不要去跑了...。 训练 所以,为了能更好的完成这次半马比赛,我从3月4号给自己指定了训练计划,27号之前每天至少5公里,并在20号左右做一次半马全程训练。 训练记录如下。 日期 公里 配速 时常 状态 strava 2024年3月4日 4.51 8'03 36分34秒 🙁 无 2024年3月11日 5 6'51 33分27秒 😊 无 2024年3月12日 4.81 7'02 33

纯CSS解决网页因滚动条抖动问题

2024年4月6日 20:22
最近在做11ty-book的移植工作时发现,网站页面在从短内容页面跳转至长内容页面时,会因为从无滚动条切换到有滚动条状态而发生抖动,而这个滚动条在页面中是有自己的占位的,这个时候就会出现因为忽然出现滚动条而网页内容布局抖动的问题。 找了一些相关的资料,有不同的前辈都处理过这个问题,因为我也没有一个个去测试,专业只是也不是很够,所以这里单纯分享一下所有方案,并指出我用的哪一种方案。 方式一 直接让滚动条一直显示,这会在右边占据一块内容,自然体验不好 html { overflow-y: scroll; } 方式二 兼容性一般 html { overflow-y: overlay; } 方式三 html { margin-right: calc(100% - 100vw); } 或者 html { padding-left: calc(100vw - 100%); } 这个方案是我见过最多博主分享的,逻辑为: * 首先,html指的是居中定宽主体的父级,如果没有,创建一个(使用主体也是可以实现类似效果,不过本着宽度分离原则,不推荐)

内江甜城一日游

2024年4月6日 14:42
前言 不久前在牧羊人老哥的博客中看到他分享去内江圣水寺、大千博物馆游玩的博文,当时顿感心动不已,便留言说之后也想去看看。 主要原因有三。 一是内江是自贡的邻居,从自贡出发去内江只需要四十多公里,快的话三四十分钟就能到。前些年有些同学在内江做生意,那时候时常会过去玩玩,不过我这些朋友不是喜欢喝酒打牌就是网瘾少年,对于内江这些景点却是只字未提过,所以一直错过。 二是自贡本地文化生活说实在话可能比内江还要窘迫,市内的景点能排的上号的就是灯会、盐业历史博物馆、恐龙博物馆了。其中灯会和恐龙博物馆价格分别在118、25和40元(最新的美团价格),第一和第三个体验勉强来说可以值个回票价,盐业历史博物馆就不尽如人意了,场馆小、内容乏味,是我所有逛展体验中比较差的一个了。而内江这两个景点就比较实在,都是免费的,而且据牧羊人老哥的照片来看也挺对我的胃口。 三是自疫情爆发后因为种种担心所以都几乎不出门了,不是害怕落地后隔离没法玩,要不就是害怕被感染,我都不知道这几年我是怎么过的。 所以,这次就着清明节小长假,索性就先去最近的内江玩一玩。 内江,我来了。 计划 每年的清明几乎都是小雨下个

我也跑个半程马拉松:领物资

2024年4月2日 22:38
接着上一篇说吧。 29号恰好是周六,因为看到公众号在发一些领取物资跑者的照片,所以很臭美的洗漱穿戴了一下才出的门,而且出门的时候发现已经快9点了,便着急忙慌的直接往比赛场地跑...,哪知道到了比赛场地才发现领东西是在四五公里处的恐龙博物馆旁边。 不过也提前看到了没有人的比赛出发场地: 领物资的地方在恐龙博物馆和恐龙游乐园的交界处的一个广场上,另外你可能会好奇为啥都是恐龙,因为自贡恐龙博物馆也是相当出名的,旁边新打造的恐龙游乐园就是想发展这一IP。 自贡恐龙博物馆位于四川省自贡市的东北部,距市中心9公里,在世界著名的“大山铺恐龙化石群遗址”上就地兴建的我国第一座专业恐龙博物馆,世界三大恐龙遗址博物馆之一,博物馆占地面积7万多平方米,主展馆建筑面积为6600平方米,陈列展示面积4600平方米,馆藏化石标本几乎囊括了距今2.01-1.45亿年前侏罗纪时期所有已知恐龙种类,是目前世界上收藏和展示侏罗纪恐龙化石最多的地方 不过即便我们走了弯路,到领取物资点后才发现领取居然还没开始,被工作人员告知是10点才开始...。 看了下才9点半不到,可能还要等一会儿索性就开始看起了周边关于本

MPA网站使用Chrome原生过渡动画

2024年4月2日 21:34
之前 页面的过渡动画其实有很多种实现方式,之前在制作主题rebron1900/11ty-theme-notability 时参考的主题 ByMattLee 11ty Starter 中就使用了 GSAP 这个库实现页面过渡动画。 我当时也研究了一下,不过这些动画库的各种参数都太过复杂,并且我也不需要那么多花哨的动画效果,研究了一段时间后就放弃了。 后来在JAMSTACK技术选型的时候关注到Astro这个工具,当时发布的3.0版本Astro 3.0 就原生集成了很漂亮的页面过度动画,甚至可以实现一些类似原生应用动画的效果,比如: * Hot Fuss by The Killers - Astro Records * X 上的 Astro:“coming soon: zero-javascript page transitions https://t.co/K4TIlAn2N6” / X 当时看Astro的介绍还以为只能在Astro中并且是SPA模式下使用,直到今天群里有人在讨论Astro的页面过渡动画,当时我想分享上面提到的这两个页面给他,无意间发现X中关于3.0版本发布的

网友自制 Windows11 LTSC

2024年4月2日 16:50
💡本来标题是Windows11 LTSC 终于来了!发完文章后才发现时自制版。。。 去年23年的3月份就听到有消息说要放Windows11的LTSC版本,等了一年多,这两天终于放出来了,我第一时间通过Windows11 LTSC关键字还没有找到相关资源,而后在远景论坛找到大佬放出的优化包。 难怪我没找到资源,下面这个是网友自制版的,看来还得再等等了。 💡[分享] 【twm000】Windows 11 LTSC 22H2 简体中文封装母盘 母盘基于UUP资源组装合成 ISO 镜像编改 初始版本系统:Win11 NI-22H2-22621.1 已集成功能:.Net framework 3.5 版本特色: 魔改 LTSC,纯净母本,未集成任何补丁,未做优化调整,自动机活 无 Store 应用商店,常用内置应用仅留:截图-计算器-照片-相机 Windows Defender 病毒防护为未启用状态 (如需要可用三方工具开启) 正常支持累积安全更新及通过启动包升级至当前最高 23H2-22635 版本 ISO 镜像已修改适用于不符合Win11硬件要求的老机器启动安装 内置 ins

我也跑个半程马拉松:赛前体检

2024年3月29日 20:27
💡本来没想过写博文,只是当作一篇笔记记录进Obsidian的,但是写着写着发现还挺有意思,索性就写了这篇流水账。 之后再把之前的训练故事和后续发生的故事分几篇一并记录一下。 距离31号自贡半程马拉松开跑只有几天时间了,本想着要不要这两天看看相关资料做做准备,哪知道川体赛事公众号就给我发来了确认号码牌和领取包裹的短信通知: 【川体赛事】温馨提醒您:亲爱的跑友,明日将开启领物了!领物时间为 2024年3月29日10:00-18:00;3月30日10:00-20:00;领物地点:自贡大安区时空·龙门镇中心广场(自贡市大安区自贡恐龙博物馆西侧),领物时请携带本人有效身份证原件,半程马拉松选手还需提供半年内体检报告(含心电图)或提供两年以内半程马拉松(或全程)完赛证书。领取参赛包不可代领。领物前请线上签署参赛声明,最后一日为领物高峰期,为避免排队请错峰领取。感谢您对赛事的支持与理解,预祝您顺利完赛 我第一时间兴冲冲的去公众号查看了自己的参赛号码: 不过,另外令我在意的是短信中提到领取物料时需要持有 「半年内的体检报告」 ???之前报名的时候还没注意有这项要求,不过转念一想,网上时常都能

新主题11ty-book

2024年3月25日 22:53
没事的时候真的不要瞎逛Github,不然发现好玩东西就会按耐不住躁动得而心脏,从而浪费很多时间...。 我就正好遇到这种情况了,前些天在Github上刷到 hugo-book 这个主题,简单、强大、优雅十分符合我现在的胃口。 而且如果没有其他太过特殊的需求,你甚至可以直接用这个主题做你的数字花园,而且使用起来十分顺手,虽然这个主题的主要功能是做文档、知识库的,不过作者依旧还是适配了一点点博客的功能,所以,你甚至可以把博客和知识库整合在一起...。 Emmmm...听起来很酷,主题所有的特性列表如下 Features * Clean simple design * Light and Mobile-Friendly * Multi-language support * Customisable * Zero initial configuration * Handy shortcodes * Comments support * Simple blog and taxonomy * Primary features work without JavaSc

每年的 40 个问题 - 2023

2024年3月10日 10:33
今天在翻阅yarr的订阅时看到了 查令十字街 84 号 的这个帖子,我没细看内容,直接整篇复制过来准备给自己做个盲答。 这里有提供了23种语言版本的 Markdown 格式还有其他人的案例: - 40 questions to ask yourself every year – 2023 edition | hanki.dev - 40 Questions to Ask Yourself Every Year 2023 Edition | USWM 1. 你今年做了哪些之前从未做过的事? * 去大理拍了婚纱。 * 前些天给老婆补了个求婚仪式,不过好像不算23年 * 骑自行车出去露营 2. 你有没有遵守年初时和自己许下的约定? 没有吧,工作状态一直不太好,个人生活也不太顺利,感觉是很挫败的一年。 3. 你身边有人生孩子了吗? 有,我也想要孩子,但是...,唉,各种挫折。 4. 你身边有人去世了吗? 没有。 5. 你去了哪些城市/州/国家? 西安、大理 6. 明年你想要获得哪些你今年没有的东西? 钱、孩子、工作状态 7. 今年的哪个或哪些日子会铭刻在你的记

我也求个婚💖

2024年2月22日 23:59
💡已经于2024年2月20日按方案完成了求婚流程,虽然布置过程有点辛苦,但是非常成功。 因为提前一个星期就定好了时间,所以跟着时间按部就班的购买好相关的物料就好了,虽然后面时间提前了一天,不过因为准备工作都做好了,并没有产生太大的影响。 另外,做这种布置性的工作一定要有帮手,这次是小舅子帮我一起弄的,解决了我不少问题,感觉一个人弄还真弄不下来。 准备工作 这次准备的物料清单如下,其他东西提前买好,其中鲜花部分、场地提前一天预订就好了。 * 钻戒:在JD买的活口组合钻戒,品牌是「喜钻」,是没有评级的钻石,不过好歹不是莫桑钻。款式是对戒,一起活动优惠下来后2700左右,没有买太贵的(刚刚瞄了一眼现在要2999了) * 道具大钻戒:在求婚流程中先给大钻戒再给小钻戒,营造一点效果。 * 求婚现场布置材料:PDD上选的,选了一两天,最终选了一家198元的,营造的效果是同价位中最好的了,媲美一些卖三四百的。 * 头纱:女方带的头纱。 * 求婚视频:这个要提前做好,我提前一个月开始准备素材、学习剪映,根据小红书上的一个UP主的视频做样板,找素材剪了一个属于自己的求婚视频。

Memos降级0.18.1指南

2024年2月6日 23:19
前言 0.17后的memos变化挺大的,不过因为作者每次发布的版本都是直接推送到了Docker的Latest的分支上,所以这些版本没有经过一定基数的用户测试,自然无可避免的会出现问题。 所以导致了最近的几个版本出现了性能问题,程序可能在作者的系统上跑的还不错,不过在用户们升上去后因为环境的差异出现了一些莫名奇妙的问题。 大部分用户反应内存占用、CPU占用过高,导致服务器死机,而我则是出现了首页数据等五六秒才会加载出数据的情况。 一开始我还以为单纯是我的问题,后来看到TG群组中大量用户都在反应这个问题才知道出了这么一档子事。 目前已经成功从0.19降级到了0.17,因为目前关于Memos如何降级的资料非常少,所以这里分享一下我的操作过程,希望能帮到有需要的小伙伴。 💡0.19.x后的数据库似乎修改了数据库结构,无法直接在新版本中使用 根据评论区蜗牛大佬的方案,可以直接修改表结构降级,详情查阅评论区或文末 其他方案 部分内容。 不过从0.17后的界面变化能看出作者也在探索Memos未来的发展方向,看样子是有心往更专业的笔记软件靠拢。 不过从目前的修改来说,我并不是非常看好

Chromium设置默认浏览器后续和完美解决

2024年2月2日 15:56
前文分享的Chrome启动工具 Chromium 浏览器便携化启动工具 中提到了chrlauncher这个工具,可以用来更新Chromium,不过在使用过程中出现了一些超链接调用无法启动带参数的浏览器实例的问题,后来通过修改注册表解决。 但是我今天在使用过程中发现在点击微信中的网页时,会出现依旧没法调用带参数的Chrome实例,我在注册表里倒腾了好久依旧没解决。 后来发现chrlauncher提供了一个SetDefaultBrowser.bat脚本用于在Windows下设置默认浏览器,但是当时我运行这个脚本的时候窗口一闪而过,且没起作用,我以为这个脚本旧失效了,也就没再走这条路。 今天走头五路后我继续尝试用终端执行了一下,发现原来脚本报了个 \Chromium\chrlauncher\64\chrlauncher.exe\",0" was unexpected at this time. 的错误,之前因为脚本执行完后自动关闭了,整个过程太快,所以没有发现。 所以我拿着报错信息去该程序的issue区搜了一下,果真发现有人也遇到过同样的问题 https://github.com/h

用OneDrive搭配酷呆桌面自动同步桌面文件

2024年1月30日 17:07
以前出现过一次硬盘故障,全盘数据丢失的重大事故,自那以后就开始尝试如何及时、安全的保存办公、数据文件的方法。 最后摸索出了一套还算可用的方案,就是标题所述的桌面整理软件+OneDrive。 这个方案很好的解决了数据的云同步和自动整理,可以让我不用担心因为硬盘故障而损失掉我的重要数据,而且还自带有历史版本功能,在特定情况下你还可以找回以前版本的文件。 OneDrive 对重要数据做云同步的方案是比较稳妥的,数据同步后即便本地硬件故障,在更换设备后也能通过同步功能复原出问题前的数据。 不过有同步功能的网盘服务有很多,我体验过的如下 * 百度云,会员功能 * 阿里,会员功能 * 坚果云,免费,免费额度小 * Dropbox,国内用不了 * * OneDrive,国内速度、价格都比较合适 * 其他等等... 在体验过这么多网盘工具后最终我选择了OneDrive,因为我主力平台是Windows,它在该系统下拥有的众多特性和价格几乎让他成为了不二选择。 * 国内尚可的速度 2-5M下载、上传(我的速度)。 * 还不错的及时同步性 * 便宜的家庭套餐价格,1T的家

解决Netlify免费Build额度太少的问题

2024年1月25日 18:43
这个月因为测试主题,所以build时常用的多了一些,今天上Netlify后台一看才发现Build时常已经超过了45分钟,估计账单出来了之后还必须要交完费才能正常访问,各位用Netlify的用户要注意一下这个问题了。 Netlify每个月只有300分钟的Build时常,相较于Github Action的2000分钟,为了避免之后Netlify还出现这种情况,所以研究了一下,看能不能在Github上完成build操作,Netlify只做静态网站运行。 根据这个需求,用ChatGPT简单糊了一个Action配置,目前能用,没什么问题。 配置中需要用到 NETLIFY_AUTH_TOKEN 可以在Netlify后台 Personal access tokens 里获取,NETLIFY_SITE_ID 直接在站点信息里就能看到。 另外,如果想要使用webhook触发Github hook,需要使用 repository_dispatch 来自定义action类型,具体可以参考:触发工作流的事件考。 最后的Action如下。 on: repository_dispatch:

最后一块拼图:在Android手机上使用Rime输入法

2024年1月23日 19:00
💡开发者们目前好像暂时不打算支持九宫格,如果有这方面需求的可以直接关闭网页了 😂 昨天在V站偶然间刷到了一个关于输入法上传个人信息给广告联盟的帖子 实锤了,输入法才是精准广告推送元凶 。 不过这个事情显然在潜意识里我已经默许了,我当时并不觉得非常意外,甚至觉得这可能就是国内软件厂家的「基操」,也做好了信息被泄露的心理预期。 不过本来不是明面上的事被翻出来晒了太阳了,索性还是想就着这个机会换个输入法算了。 所以就抱着淘宝的心态开始刷评论,在看回复的时候发现有人推荐了一款支持Rime的Android版开源输入法 fcitx5-android ,并且说支持Rime。 而我恰好Window平台就一直使用RIme-weasel作为我的主力输入法,所以又想尝试尝试了。 其实之前我也有尝试过在手机上安装支持Rime的输入法,不过体验嘛...都有点一言难尽,那些输入法要不是因为界面太过原始不太想用,要不就是配置折腾不来,最后都无果而终。 但是这次的 fcitx5-android 安装后却给了我一个惊喜,各方面功能都已经相当完善,可以说是一款比较成熟的输入法产品了。 而且开发者们还在

我的骑行故事:开端

2024年1月21日 16:26
有个梦挺好 某一天,好友的一通电话忽然将梦真的照进了现实。 这个故事本博客的老朋友应该都看过,我这里就再絮叨一点点,希望不要觉得啰唆。 那天晚上的电话是我一个好朋友琛哥打得。 琛哥家里条件不错,算是个富哥,他也是个喜欢户外的积极分子,我们骑行途中他还曾和我透露过想去羌塘无人区的想法,我们318旅程结束后他还独自骑了北京至漠河,徒步了尼泊尔,算是一直在实践这个目标,我想他如果那天真的去了我可能也不会觉得意外。 他另外还有几个很我相干的身份,一是我死党同学的哥哥,同时又和我姐是初中同班同学,而且他爸又是我爸是发小,平时去找他弟弟玩的时候经常能看见他,所以这次联系以前关系还算不错,而且没什么架子,是个很有性情的大哥。 当时看到他的电话后我还挺奇怪,想着平时没事也不怎么联系,咋这大晚上的想起给我打电话? 哪知琛哥开口第一句就是:「阿龙,我看你骑车还可以啊,有没有时间,318搞一搞啊?」 我:「哈哈哈哈哈哈哈哈哈哈哈哈哈哈」 我听完这一句不知道怎么的开始狂笑起来。 琛哥听到我笑,也跟着开始笑了,我笑了好久好久。 我现在忽然明白了我们为什么笑的那么肆意,那么高兴 ——因为我们好

小狼毫算法服务设置自启动+微信配色主题分享

2024年1月20日 12:43
💡经过努力反馈,多显示器下算法服务闪退的bug已修复,相关信息和最新的构建下载看这个issue:外接屏幕的切换会导致算法服务失效 #1073 前文在关于双拼和小狼毫的两篇文章【双拼学习篇】、【配置篇】 中详细的介绍了Rime这款输入法。 不过最近不知道是不是Windows打了补丁的缘故还是什么原因,电脑在系统启动后小狼毫总是无法输入文字,即便重新部署也没有任何反应。 后来尝试着手动执行Windos菜单中小狼毫文件夹中的「小狼毫算法」服务后才恢复正常,但是现在搞的每次开机都要手动操作一下,虽然也说不上麻烦,但是总觉得十分膈应。 在weasel的issue 无法输入中文 #737 中我发现有不少人都有这个问题,而且博客微信群中三四个用Rime的用户似乎都有这个问题。遂找了一下解决方案。 方案一:启动文件夹(无效) 该issue中提有用户提了一些解决方案,基本解决思路都是:「没启动就让他启动嘛」,一些用户创建了算法服务程序的快捷方式放进 shell:startup 中,不过这个方式我测试后发现并没有作用。 方案二:WeaselServerAutostart 我在Gith

用Cloudflare Worker访问NeoDB API

2024年1月13日 16:50
刚刚看到 蜗牛大佬 fork了一个 Lyunvy 大佬写的 neodb-shelf-api 用于获取NeoDB数据,看了一下使用、安装,比以前我参考的各位大佬通过Github Action缓存数据的方案可要好用太多了。 看了一下实现过程,忽然冒出了「可以通过Cloudflare Worker来获取吗?」 因为前几天才分享过一个用Worker转发RSS数据的脚本,当时评论区木木大佬说可以有很多用法,所以刚刚脑子里忽然就蹦出这个想法来。 遂试着用ChatGPT糊了一个脚本,好像很真行...? 使用方法:在CF里新建一个Worker,将以下代码复制粘贴进去,并将代码里的token的值改成你的,然后带上对应的参数访问Worker的地址即可。 代码如下; export default { async fetch(request, env, ctx) { const urlParams = new URLSearchParams(request.url.slice(request.url.indexOf('?') + 1)) let cg = urlParams.g

我为什么又开始使用Jacmstack?

2024年1月12日 10:03
在前文 你确实需要使用 Jamstack 吗? 我提到了对于是否选择这种架构产生了犹豫,并做了以下总结,不过自己最近又开始折腾起了这个东西,算是狠狠打了自己一巴掌。 「其实想要分享知识、观点,不如像这篇文章一样把平时收集记录的知识进行提炼,输出一些真正有用的知识,达到足以影响到一些人的效果更来的有意义,而不是单纯的作为展示炫耀的一个工具和渠道。」 不过,除了最后一句,我至今依旧觉得我这段总结没什么问题。 如今,这些可以selfhost的博客工具如:wordpress、typecho、Ghost、zblog、halo,都已经相当完备,图床、主题、插件几乎都有,你只需有一台服务器外加了解一些简单的知识或是看看互联网上满山遍野的搭建教程就能开始使用。 如果你连这一步也觉得麻烦或没有服务器,那么你甚至可以选择wordpress.org、handsome、xlog甚至是csdn这种现成的平台,你可以回归最初的状态,注册账号、写文章就行了。 那么,我为什么又开始选择折腾Jacmstack呢? 这里想提一下我父亲。 虽然他是个才小学毕业的人,但是他从小开始便拥有及其茂盛的「好奇心」和极

我的骑行故事:梦

2024年1月11日 19:58
最近养成了订阅的习惯后才发现自己认识的不少博友好像都有骑自行车的习惯,山地车、公路车都有 其中「如是乎」最近的博客文章几乎都组成关于骑行的思考,看这更新频率我觉得都能写一本「当我在骑行是我在思考什么」了(笑) 他今天的一篇 「骑行减压 101」 让我忽然有感而发,想聊聊「骑行」这件事。 初始 我应该是从15年开始正式骑行。 那个时候毕业工作已经几年的我和所有刚毕业的同龄人一样有着一个骑行318、去拉萨朝拜的梦。 开始的时候其实也没想过自己最后真的会把这个梦落实,只是在淘宝买了一辆很便宜的杂牌自行车,以锻炼身体为目的开始骑行,并且好笑的是那台自行车还是「BMW」牌的,而且这辆自行车至今都在作为我妈平时短途骑行的骑行工具。 买了这辆车之后我就开始逐渐增加骑行距离,有意识的加强骑行强度。 从最开始的上下班骑一会儿,到后来的短途骑行,骑行距离也从一天五公里慢慢增加到了四五十公里。 第一次正式的超30公里短途骑行我已经有些记不清楚了。 大概是某个节假日,父母恰好都不在家,我当时想着一个也挺无聊,自己也在市区内骑过一段时间,感觉没有什么挑战了,所以想尝试着骑骑短途,试试自己的

用GithubAction替代Zapier??

2024年1月9日 19:19
💡国内服务器可能无法正常通过此种方式触发actionsflow的webhook。 你需要使用cfworker做一下转发,可以参考这篇文章:如何订阅 Q 外的 RSS?方法来了 最近终于将Ghost前后端一体的身份转变为只作为提供数据的CMS,前端则转为使用纯静态页面,使用11ty生成并部署在了Netlify上。 恰好Ghost自带的WebHook通知功能可以在执行文章、页面、Tag甚至会员注册等操作时触发Webhook通知,同步触发部署操作,作为Jamstack的后端CMS工具可谓是十分好用。 我们只需进入Ghost后台,进入 Integrations > Add custom Integrations ,起个名字,然点击下方的 Add Webhook 即可完成。 不过在使用Ghost的Webhook通知触发Netlify的时候发现在 文章内容过长 时Netlify会出现payload不能超过140kb,并build失败的提示。 我查了一下资料,发现 Build payload exceeded limit of 140 KB - HUGO and Sanity.io 这篇

「三大队」

2024年1月9日 16:16
三大队讲述一次审讯意外,三大队刑警程兵(秦昊 饰)入狱服刑,队友受牵连脱警、降职,曾经的警界精英三大队分崩离析。十年牢狱,程兵重获自由,信仰崩塌,热血化为沉默,他失去一切,而案件的犯罪嫌疑人王大勇依旧在逃……豆瓣 首次看到「三大队」的预告片还是和我老婆在电影院看「涉过愤怒的海」的时候了。 我们当时去的时候电影院一人没人,直接包场看了,不过这个剧没什么想聊的,所以就暂时不展开谈了。 电影开播前日常的放了一些其他电影的预告,其中就有「三大队」。 我当时一看预告,发现主演居然是老戏骨张译,配角的还有李晨、魏晨等等。 我个人是非常喜欢张译的,第一次看他的戏还是「北京爱情故事」。对,这部2012年的电视剧我现在依旧记得非常清楚,他在其中出演的石头这个角色十分出彩。 顿时觉得这片子应该稳了把?一定得去电影院刷刷 之后因为太忙渐渐把这事儿给忘了,当时还不知道「三大队」同期还推出了剧版的。偶然一天在emby上找剧看时忽然发现了「三大队」的名字,当时还想着:不该呀?这么快就有高清资源流出了??点开一看才发现是秦昊演的剧版的。 所以之后就每天两三集的和我爸从头开始刷。 昨天终于看完,所以

如何订阅Q外的RSS?方法来了

2024年1月6日 15:26
起因 前文有写到关于RSS订阅的一些事情,想了解的可以看看 打破信息茧房及一款RSS阅读器推荐 一文。 不过这两天在实际使用过程中发现有部分网站如:V2ex、椒盐豆豉 等网站的订阅在通过yarr添加的时候会提示 No feeds found at the given url. 的提醒信息。 当时我还以为是yarr对这些网站的xml格式支持不全导致,所以跑去研究起了yarr关于解析xml文件部分的源代码,在尝试将2.4的部分代码和原作者最新的部分合并后我在本地测试发现似乎可以正常添加,所以重新build了一个镜像发布到docker上。 不过,奇怪的事情发生了。 我之前在本地测试明明可以,但是在自己的VPS中即便我重新拉取镜像、重新创建容器,却依旧提示上面的错误。这就让我有点「满头大汉」了,本来差点又要跑去研究源代码,不过忽然灵光一闪,想到这两个网站似乎都有一个共性——「在墙外」,而我的服务器又在国内,正常情况下自然是无法访问的,之前在本地测试通是因为我的路由器上有小猫做分流,所以自然能正常访问。 至此算是破案了,不过很想吐槽一句:yarr的错误信息提示真的很有问题,这种情况不

打破信息茧房及一款RSS阅读器推荐

2024年1月4日 11:10
说来惭愧,我其实在写今天这篇文章以前一直不太明白「信息茧房」这个概念,只是时常在自己的信息获取渠道中看到人们都在提到这个概念,直到时至此刻我写到下面这些文字的时候才忽然明白其中的含意。 在如今这个算法、AI横行的年代,你接触的所有互联网的一切信息几乎都被算法、AI包裹,互联网像是一个极度宠溺你的长辈,它所给你看的、吃的、听的「似乎」都是你「想要」的,你废寝忘食沉溺其中,丝毫没发现它的推荐像是春蚕吐丝般的为你慢慢结出了一个「茧」,这种看似趋向性的宠溺却让这个茧把你包裹的越来越严实,渐渐的让你没有了思考的空间,你的世界似乎也开始变的只有这个茧那么大了...。 这就是我理解的「信息茧房」。 那么如何打破呢? 打破茧房的最好途径就是「勇敢」的「自主」获取,避开算法、AI的包裹,去听那些你平时可能不认可的观点、去看那些不曾读过的文章、去想那些你平时未曾想过的一切。 第一步我相信从RSS订阅将会是一个很好的开始。 第一次知道RSS是在北大青鸟的课本上,其中第二期还是第几期的课本上关于C#的学习就是一连串基于制作一个Rss的实践课程,当时虽然把整个练习完成了,但是并没有真正理解RSS这个

理解万岁的世界在哪里?

2024年1月1日 00:23
他人即地狱 有时候觉得特别痛苦,因为人和人之间并不相同,也没有完全的理解,这个观念适用于所有环境,且在特定情况下可以上升为小集体、公司甚至是国家。 不同的认知、生活环境注定了没有一模一样的个体、集体,正是因为这些不一样,也因此不断的造就出矛盾,自然有了吵架、有了战争,这些对立是无休止的,除非有一方作为「失败者」并附带「牺牲」退出。 这种牺牲不可能是没有感知的,从浅层的物质损失到精神层面的伤害,带给个体的感受自然是不同的,物质层面自不用说,少了钱、少了东西。而精神层面却能给人带去或短期或长期的持续性痛苦。 昨天偶然看见罗翔老师的一句话,感触颇深,也挺符合我今天所属观点。 “一个家庭最可怕的不是穷,而是有一个经常制造内耗的存在,不停的制造矛盾和争吵,生活在这样的家庭里,每个人的神经都紧绷,生怕犯点小错误就会引发家庭战争。” 我共情能力还算可以,INFP-A 人格的我不知道从什么时候开始就有了做什么事都喜欢先为对方考虑,时常忽视自己的行事作风。这种性格自然会损失掉部分自我,在这场「人和人」的对立中天然落入下风。 其实对于这种自我牺牲我本身并没有怨言,只是不知道为什么,即便我选择

Bitwarden启用Websocket及加固指南

2023年12月30日 23:57
2021年之前我一直使用的LastPass做为我的首要密码管理工具,当时被他的浏览器拓展吸引,搭配这个插件可以做到自动填充,使用起来十分愉快。不过因为LastPass后台一直没有中文语言,且21年期间还出现了国内偶发性打不开网页的问题(刚刚查资料还发现2022年12月爆发过一次安全事故,不过算是躺锅)。 知名密码管理器 LastPass 此前因 Authy 员工被钓鱼而出现安全事故,这话听着有点绕口,大概是这么个情况:多因素认证器 Authy 员工收到钓鱼邮件后泄露了密码,黑客入侵了 Authy 的服务器窃取了 LastPass 工程师账户的 2FA,当然估计黑客也提前通过其他方式获取了这名工程师的账号密码,最终结果就是 LastPass 被黑了。 那之后我就在V2ex上寻求替代产品,基于Selfhost的理念我最终选了Bitwarden作为自己的密码管理软件,并撰文 docker 自建 bitwarden 服务 记录了搭建过程,一直愉快的使用至今。 不过使用期间发现了一些问题,如: 1. 所有平台增加完密码记录后如果想所有平台都同步的话,需要先在该平台手动同步密码库,且其他

🌟 2023年个人观影年度五佳

2023年12月26日 20:03
💡今天参加Emby服务器Odyssey+年度五佳作品活动写的,写完才发现好像写了7条,基本上都是电影,本来还有几部电视剧想一起写的,想象算了,好像差不多了。 疾速追杀4 (2023) 基努·里维斯肉眼可见的老了,以前光鲜的小脸蛋现在也是胡子拉碴,时光更是在他的面颊上划出了两道深痕,另外就是体现在打戏上了,武打动作肉眼可见的慢,这把年纪了搞这种动作戏确实有点吃不消了。 对于某些场景设计还是相当认可的,中间打到巴黎塔前面房间内的俯视角把我惊艳到了,让我想起了小时候玩过的「孤胆枪手」。 说实话甄子丹的加入怪怪的,有点不太贴角色。最后的经典西部牛仔对决,那一枪解决侯爵后我似乎能看见夕阳下上方跳出的「成就提示」...哈哈。 树上有个好地方 (2019) 一部很冷门的小众电影,讲述90年代小孩巴王超过的故事。 作为一个90后的小伙子我几乎可以全身心的把自己代入进电影里,手摇大铃铛发出的上课铃声,小伙伴们各种奇怪的小游戏,以及路边摊上玲琅满目的小玩具,图画书等等。而且电影描绘出的男性从小就开始就有的那种强烈占有欲、依赖感应该是所有男生都经历过的。 看完后回想了一下自己过往到

在用的御寒实用小物件

2023年12月24日 20:14
今年寒潮来的要比往年要晚一些,上个月还在奚落天气一点不冷的我算是被狠狠打了脸,每天恨不得把衣柜里所有衣服都穿上,上个月开始就早早做了一个「听妈话」的好孩子——穿上了秋衣秋裤。 我这里最近天气温度都在5-7°左右,风挺大的,虽然远远比不上北方的零下气温,但是来过南方的北方小伙伴一定会知道南方的冷的确和北方不一样,先不说下雨湿冷这种环境因素,毕竟他们北方还有暖气这种物理设备不是?冷也就出门那一会冷,到家暖气一开基本上外套都不用穿的,而我们南方就只有靠「抖」御寒了。 其实倒也不是只有「抖」。 我其实挺怕冷的,所以也喜欢动小心思,想办法,如买带毛鞋垫、出门戴口罩等等。而且前些年冷的时候就已经开始陆续从PDD、淘宝淘了不少便宜又好用的御寒小玩意,价格便宜不说,每年冬季一过便打包,来年天气一冷再拿出来就行,也不占地方。 今天闲着也是闲着就写一篇唠唠。 🖱 发热鼠标垫 * 价格指数:4/5 * 实用指数:2/5 * 安全指数:4/5 这玩意儿又不少小伙伴都说没啥用,我实际用下来后发现的确是存在小伙伴说的一些缺点的,如手面没有接触到发热垫感受不到热度,刚买来的时候气味比较重等等

Github年度统计表和过往青葱岁月

2023年12月22日 23:25
上午看到小胡发了一个他的Github年度统计表,遂也想生成一个自己的,查了一下相关工具,发现是一个名为 GitHub Contributions Chart Generator 的网站,进入网站后输入你的Github账号就能自动为你生成年度报表了。 看着报表上的一个个小点点,我忽然记忆有些模糊,很多都记不清楚提交了什么代码,倒是近一年的小点好像都是执行NeoDB数据同步的Action自动提交的。 遂打算自己复盘了一下我的Github生涯重要节点。 编程启蒙 不过想先说说我的编程启蒙了,毕竟要有这个启蒙才能让我接触到Github。 我接触编程是中专毕业之后的事了,当时父母在柳州从事糖尿病保健品的生意,上百万的负债终于好像能看到些头了,日子过的也没以前苦了。恰好我刚毕业没有去处,所以父母就把我叫去了柳州帮忙,这一去就待了三、四年,也打从心底喜欢上了柳州这座慢节奏的工业城市,也在这里交到了很多十分好的朋友,我在这座城市的那些年是不孤独的,充实且快乐。(对比现在在四川,感觉十分孤独,也没有朋友,不过这是题外话,之后有机会再聊) 玩了几个月后,我妈觉得这样不是个办法,因为我中专读的

蜗牛大佬NeoDB数据获取方案修复

2023年12月21日 16:04
💡淦,刚刚写完去看大佬的文章,发现不知什么时候已经更新了TV部分的获取和展示。 一直用的蜗牛大佬的 NeoDB API 创建观影页面 方案渲染的豆瓣页面的数据,之前偶然间发现自己在NeoDB中给胆小鬼点了完了已看,但是博客豆瓣页面的数据一直没发生变化,起初以为是数据更新延迟问题,但是过了个把星期发现好像还是没有出现。 去仔细检查了Github上的数据后才发现,大佬的代码好像只获取了NeoDB中的 Movie 部分的数据,因为NeoDB的分类有 book , movie , tv , music , game , podcast 和 performance ,其中 Movie 和 TV 部分是分开的,只获取电影自然就不会有TV数据的出现。 遂研究起了大佬写的Github Action代码,发现大佬使用 jq 这个终端json库对数据做的处理,自己通过ChatGPT适当对原始代码做了一些更改后终于可以下载TV数据了,以下是修改后的文件。 * 修改Get NeoDB JSON and Count 部分,将获取movie的代码复制粘贴一份在源代码后面,并修改请求参数 movie 为

Chromium浏览器便携化启动工具

2023年12月21日 14:07
Edge广告泛滥 前些日子听朋友吐槽Edge浏览器最近的更新可谓是如何如何不当人,经常刷到的新闻也都是说强制弹广告、升级之类的负面新闻,刚出来的那个大家都喜欢的、如白纸般的Edge早已经不复存在了,如今的人们可谓是苦Edge久矣。 当然,这种情况自然是不能惯着,找替代品,必须找替代品给他替代了。 不过第三方Chromium换皮浏览器如今可是太多太多了,比如我就在使用的国产百分浏览器,虽然百分浏览器2022年12月奇迹般的更新了一次,但是时隔一年又归于沉寂,内核还依旧停留在 Chromium 102.0.5005.167 ,过旧的内核导致了一些前端框架特性、新浏览器特性无法使用,但是目前国内其他毒瘤大厂各种魔改的浏览器我又不想使用,所以又花了一番心思寻找。 去花里胡哨Chromium版本 最终,我在Github找到了Hibbiki修改的 Chromium-win64 ,去掉了一些花里胡哨的功能,且有「含Google服务版本」和「无Google服务版本」,最大程度上把选择权交给用户。 💡另外一个版本是winchrome 大佬的 Chromium ungoogled 版本,但

Artalk安装和搭配Message-Pusher实现企业微信评论通知

2023年12月18日 00:00
Twiko是我自iDisqus后用的最久的一个自托管评论程序了,期间也没少对它做过折腾,比如 用 emoji-mart 替换 twikoo 的 emoji 选择器 等等。但是作者从几年前开始就不怎么做更新了,期间只有一些缝缝补补的小更新,整个界面依旧十分原始。 这些年也时常有不同的评论程序出现在视野里,包括但不限于以下几个,我还在我的数字花园上使用过其中的Giscus,不过当时我的Garden只运营了一段时间就没维护了,没有深度使用,不过这类基于Github的都必须要登录才能评论还是觉得不太「自由」: * Waline * Valine * Cusdis  * Artalk * 基于Github的:Utterances、Giscus  最后看来看去还是决定使用Artalk, 其实早在以前那台VPS上的时候就一直想从Twikoo换成Artalk,不过觉得又要去做主题适配、又要做数据转移,太过麻烦,一直没下手,这次搬家索性就把这事给一并给办了。 安装 Artalk支持Docker运行,安装自然就非常简单了,我的docker-compose配置文件如下: versio

服务器搬家实录,太折腾人了

2023年12月16日 17:41
💡此文也可作为新服务器安装指南 三年之期还没到,腾讯就开始给我上嘴脸了,每天的续费通知就像催命符似的发个没完,起初是准备换平台的,因为大厂的老用户都没办法买特价机器。 后来无意间发现腾讯云一个身份证可以认证最多5个账号,新认证的账号是可以作为新用户买特价机器的,且这些账号可以销户重来,理论上可以实现无限循环,就是可能每次都需要搬家。 所以我直接开了新身份重新入手了一太2c2g4m50g的轻量云机器,今天恰好有时间,索性就把家搬了。 其实搬家这个事已经盘算了好些日子了,新机器是23年10月27号便下手购置的,明日复明日拖到今天才算开始落地,有时候对自己这拖沓性格恨铁不成钢无可奈何。 不过,也是因为这VPS搬家的麻烦程度和现实世界搬家也并无太大区别了,这三年倒腾添置的零零碎碎一大堆,好在之前就担心过这个问题,所以后来几乎都是用docker起的服务,数据文件和衣柜里的衣服一样基本上都大致堆在了一起,这些核心的东西倒是不会出太大的错(好像还是太乐观了)。不过最担心的就是那种几年前弄的小东西,当时临时弄了一下,然后放在某个很理所当然的小角落,今天搬家就给遗忘了,不过已经做好搬过去

手机半自动支出记账实践【缘起】

2023年12月12日 12:48
缘起 由于我工作的原因,每个月都有大量需要 报账 的 代公家垫付支出 ,这些支出繁杂,涉及了各个类型,如:采购、出行、交际等等,且金额数目不一,小到几块钱打车办事,大到上万元货款垫付。而且这些账目和我更加繁杂琐碎的个人账目混杂在一起,每个月支付宝和微信的支出数据有时候加起来多达上千条,在使用手机记账之前,这项报账工作简直是地狱级难度,每次我都需要耗费大量的时间对上个月产生的数据一条一条的做整理分类。 因为数据杂乱,早期在经历了几次因为漏记、忘记账目支出原因而漏报不得不自己填钱的情况之后,我便开始尝试使用各种记账软件,期间使用过的包括但不限于:钱迹、随手记、薄荷记账、鲨鱼记账等等。 钱迹 其中 钱迹 是早期我在V2ex上被安利后使用最频繁的第一款记账软件,不过那个时期的这类软件需要在付完款后自行记录,虽然大多数软件都有一些比较简便的导入方法,如:截图导入、表格导入等等,但是始终增加了记账的复杂程度,这也导致了我经常会存在偷懒忘记在支出之后记账的情况。 一木记账 而后偶然间,在酷安中我发现了 一木记账 ,它吸引我的是一个 自动记账 的功能,开发者利用无障碍权限,识别你每一次

这世上又有几个人不是胆小鬼呢?

2023年11月27日 22:19
昨天趁着周末休息和和家人一起高强度的刷完了总共16集,每集1小时的电视剧「胆小鬼」,这部改编自小说「生吞」的悬疑电视剧,看完后还挺感慨的,索性写点东西练练文笔。 拍摄手法 整部剧的拍摄手法类似「漫长的季节」那种「现在」和「过去」交替展示方法。 我作为一个观影者发表一下看法,感觉剧集前半部分导演想展示的「现在」和「过去」关联程度很低,且好像没有规律或者没让我Get到规律,导致无法很好的对剧情前后内容做关联,稍微一分心可能就接不上之前的剧情,观看途中有十分强烈的割裂感。 后半段稍好,基本上是现代时间发生的果对应以前时间的因,总得来说如果这是导演有意而为我觉得处理的不是很好。 情节合理 虽然在电视剧里找「合理」本来就是太过严谨的事,但是有部分情节设计的的确太违背常理了,我们全家都一致性的进行了吐槽。 这里随便提几个还记得的,如秦理这样怼学校管理人员、扰乱公共实物,换在现实早开除了把?另外最后警察的抓捕现场居然可以让人随意介入,而且七八五大三粗的警察居然拦不住一个瘦弱的男人很女人,然后最后那慕强行加入的镜头,我有100%的理由相信这个镜头是GDZJ要求增加的ZZZQ行为,虽然

Rime 小狼毫 + 小鹤双拼,从入门到养老【配置篇】

2023年11月27日 21:07
💡由于我目前只在Windows平台使用Rime,所以本篇文章内容都是基于小狼毫+Rime-ice整合包编写 前文「双拼学习篇」中分享了我是因为什么原因开始学习和双拼,以及我在入门阶段的一些方法,个人认为还是相当有效果的,希望能帮到有需要的朋友。 这一篇就准备讲讲Rime这个输入法,不过也是基于我的认知做一个分享,其中肯定有理解错误、认知不到位的地方,文中部分内容参考了Rime-ice的介绍如文中有何不妥之处也希望各位能做个勘误。 Rime的不同版本 Rime是一款开源的输入法引擎,小狼毫(Weasel)之类的名字都是它在不同平台分支版本的别名,刚开始有的时候着实把我弄的有点子懵,不过分清楚后就好了,目前我所知的分支大概有如下版本: * 小狼毫(Weasel):Winddows平台分支版本 * 鼠须管(Squirrel):Mac平台分支版本 * 中州韻(ibus):Linux平台分支版本 * 同文(trime):Android版本 版本和版本之前只有一些特性略微不同,大体配置都是差不多的。 整合包(处方) 其实Rime的配置如果从头来学是比较复杂的,学习成本

Rime小狼毫+小鹤双拼,从入门到养老【双拼学习篇】

2023年11月18日 17:08
最早开始正式了解双拼还是在中文博客群内听「阿均」、「仓颉」两位大哥安利,说是这种低门槛输入法、击键效率高,是五笔的简单替代版,可以大幅提高打字效率和错误率,搭配小狼毫使用起来如何舒爽云云。 所以我从去年12月初开始便强迫自己使用「小鹤双拼」方案作为主力输入法,至今也快有一年了。从上面的聊天记录截图可以看到,我从刚开始的只能盲打「单字母韵母」,到渐渐可以盲打「双字母韵母」、「三字母韵母」,达到全拼70%的速度也不过花了短短两个星期的时间,入门门槛可以说是已经非常低了,基于这个体验我作为过来人是非常推荐用「全拼」的用户切换到使用「双拼」(这个双拼方案并不一定得是小鹤双拼)。 至于学习方法,首先基础的概念我就不再多赘述,但是想学习双拼的朋友首先还是要先看看「小鹤双拼」内的文档介绍,对这个输入法做一个全方位的详细了解。 使用两个字母对汉字进行编码的方案,第一个字母表示声母,第二字母表示韵母,没有声母时用零声母代替单字母声母韵母键位不变,双字母声母和多字母韵母位置见“双拼键位图” 不过官方上提供的口诀和我后面找到的其他所谓的更好记的口诀,其实我压根就没有去背,虽然我也尝试过去背,但是我发

启动WSL提示0x80070050错误排错流程

2023年11月17日 16:06
我之前安装WSL的方式不是通过微软商店安装的,因为微软商店安装默认是在C盘,切好像无法指定文件位置,所以用的另外一个取巧的办法安装到了D盘。 我这里也顺带分享一下:如何在Windows11中把WSL安装到指定的地方 不过我这次换了电脑后重装了系统,今天想和以前重装完系统一样来使用WSL,发现在执行 ubuntu.exe 后提示以下错误。这个问题我以前重装系统也遇到过,依稀记得只要去程序管理里启用 windows for linux 子系统服务就行和安装一个补丁文件后重启就可以了,但是碰壁了,这里记录一下排错流程: Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80070050 Error: 0x80070050 ????? Press any key to continue... 第一次尝试: 1. 启动windows for linux子系统服务 2. 重启后提示依旧 第二次尝试: 1. 启用虚拟机平台服务 2. 重启提示依旧

自省[14]

2023年10月22日 12:18
统计 目标 这个栏目以后换成 统计 ,之前定的健身目标都失败了,也别在放出来丢人。 自省 从上个月25号回归四川后已经独处了差不多快一个月的时间,说长不长,说短不短,不过这一个月我的整体状态非常差,肉体和精神上都是。 这段时间几乎每天都是两点一线,家、公司,期间有过想出去人多的地方逛逛的想法,但是都行动不起来,这30来天,也只有国庆那几天出去骑行了一天,下班回去后去一个人在家里也不想说话、不想做家务,回了家后就和泄了气的皮球一样,笑容面具也被我取下。 都这状态了,吃饭自然是不像以往那么准时准点,两餐当一餐吃也是家常便饭,荨麻疹的体表症状也比以前严重了很多。 整个人都迷惘的、无神的,我对未来没有规划,和家人相处的状态也不好,担心未来,很多原定的计划可能到年底都无法完成,届时这些计划都会转为定时炸弹爆炸,一想到这些就头疼愈烈。 哎...。 不过之前给自己定的每天发一张照片的目标完成的倒是很不错,我已经从9月9号开始坚持到了现在,有几天晚上快睡着了,想起来没发照片,立马迷迷糊糊醒来发照片,(顺便还开了个TG频道当个人微博用)。 总的来说这个月是处于一种行尸走肉的状态,工作

和ChatGPT玩跑团游戏是什么体验?

2023年10月11日 15:23
之前就了解过利用ChatGPT的提示关键字可以设计出一些互动类型的文字游戏,今天在Memos广场里偶然发现 OdinSay 推荐了一个名 规则怪谈解密 𝐑𝑢𝑙𝑒 𝐺𝒉𝑜𝑠𝑡 𝑇𝑎𝑙𝑘 的基于ChatGPT4的游戏,我循着库信息找到了一个为 AIGoodGames 的游戏库,库里目前有七八可以通过GPT-4游玩的游戏。 我看了一下库的内容,发现原理大概就是编译写一本ChatGPT能懂的规则书,描述清楚主要规则、判断逻辑,而游戏的背景、谜团则交由AI生成,并且让AI根据规则进行逻辑判断,并和玩家进行互动反馈,推进游戏进度。 💡规则文件 https://github.com/EmbraceAGI/Rule-Ghost-Talk/blob/main/Rule_Ghost_Talk_Prompt.txt 如,设定好游戏类型,AI身份,以及关键规则: 您好ChatGPT,请您接下来扮演一个精通设计各种规则、诡秘剧情、Narrative Game Design与Creative Writing的角色,成为一个顶级的人工智能驱动的怪谈解密游戏的terminal。 您

游戏杂谈:我的游戏回忆录【一】

2023年9月28日 19:03
💡文章还未校对,欢迎指正 又看到「破袜子」在写游戏回忆的文章了,不过从他分享的游戏来看大多数我都没有玩过,从这点看来我暂时还算「年轻」(笑)。 其实我本来只打算分享我最近在怀旧体验的一个NDS游戏,但是一开始回忆玩游戏的经历,脑袋里那些我关于游戏的故事便一个接一个的蹦了出来,止都止不住,所以索性就打算把篇幅拉长一点,写个我自己的「游戏回忆录」,顺便感叹一下「白驹过隙,时光荏苒」。 虽然那些尘封了很久的游戏记忆都在回想下开始在脑海里渐渐清晰,但是我该以什么作为切入点呢?因为是回忆类文章的关系,所以我脑子里第一个跳出来的词是「年代」,不过这个「年代」指代的是我当时那个年纪所玩的游戏,并不完全和那个时代发布的游戏挂钩,那么...就这样以开始吧。 小学时代 小霸王:FC游戏机 我小学时代第一次玩到的电子游戏设备应该和大多数90后的同学一样是始于「小霸王学习机」,机身「附带」的学习功能是这些商家切入每个家庭的利器,在这种以学习为切入点的宣传下,那个时候的家家户户基本上都有这么一台学习机。 在学校开设了微机课之后,我打着学习电脑打字的由头跟我爸软磨硬泡了几天之后终于同意给我买了一

自省[13]

2023年9月25日 15:28
目标 🏋️‍♂️每周锻炼:0/5 上两周出差在外地,所以记录的时间都有异常了。 自省 9月回了一趟老家。 这次回去了呆了大概两个星期,很多之前定的习惯都乱了套,生活作息也混乱起来。虽然带了电脑回去,但是只有中间18-20号腾了3天出来专门工作,其他时候都是处于复杂环境,基本只能开电脑处理一下紧急事务。 这种环境下我也没法安心工作,写文章就更不行了,所以自省系列的文章自然就断更了两周。 这次回老家主要是看一下家里房子的装修。 前几年因为政策原因,宅基地的审核缩紧了,所以我爸趁着缩紧前把老房子推了重建,他们本来划了一个区域做麻将、娱乐、KTV之类的,被我看上了,让他们给我留了下来了。期间自己做了一下布局设计,改成了一个三室一厅一卫的小套间,装修准备搞奶油原木风。其他的房间去年基本上就搞的差不多了,就我那个地方还是毛胚,我妈今年督促着工人把基础工作,如:拉呸、刮乳胶漆、门窗等工作都做好了,现在只需要买家具就可以了。 回去那几天基本上都是在跟着我妈、老婆出去逛家具城,不过考虑到其实我们每年也就回去一次,每次基本上也就知识过年期间住上一个月,而且以后有小孩回家不方便后可能回

自省[12]

2023年9月4日 13:57
目标 🏋️‍♂️每周锻炼5次:4/5 上周的专注状态有点起起伏伏,而且后面几天没怎么认真工作,那几天番茄钟自然也处于没有用的状态。因为正好跨月,所以看了一下8月的整体情况,总的来说工作状态还是要比以前好上不少的。 自省 工作 我目前的一些提高工作效率的方法大概有如下一些: * 上班前整理好代办事项 * 利用番茄钟做单项跟进- * 不开微信。 * 等等 原则无非就是「找目标,降干扰」,有了目标就自然没有了不知道做什么的借口,关掉微信、不使用手机则是降低干扰因素。 不过实践下来发现每天养成找目标的习惯还是比较容易的,不过在整理目标的时候要学会拆分,定的目标不能笼统,可以有一个笼统的大目标,但是大目标最好拆分成几个小目标,完成所有的小目标自然就等于大目标完成,这可以降低执行难度,避免拖延推迟。 第二点则是降干扰,说实话这个实践起来难度还是非常高的,这需要很强的自律能力才可以,因为我们平时受到的干扰因素太多了:普天盖地的信息流、同事的八卦聊天、抽烟、上厕所,太多了。这个几乎只能靠自己的内心力量,没有其他快捷方式,一些工具如什么禅定模式、关手机等

Umami的TRACKER_SCRIPT_NAME失效

2023年8月31日 16:08
昨天下午2点左右,watchtower自动升级了Umami到最新版本,但是今天去后台看访问数据的时候发现从2点后开始的数据全部没有,起初以为是Docker问题,所以: * 重新拉Docker镜像 * 反复查看Umami的官方文档,核对配置 * 重新部署 但是好像没有作用...。 后偶然发现网页的Like按钮失效了,查看浏览器控制台才发现似乎是Umami的统计脚本无法加载,对应的网址404了,遂又去检查了Nginx配置,各种调试,发现还是没用,不过似乎脚本名字直接用访问官方原本的 script.js 这个名字可以正常访问。 无奈去看了下官方Github上的issue,愕然发现有好几个人也出现了类似的问题,估计是官方的BUG,他们的解决方案是使用Nginx做了反代转发给 script.js 临时使用,这里贴一下我的临时处理方案: location /chart { proxy_pass https://myumami.com/script.js; proxy_redirect off; } 官方正在修,马上会有热更新。

震惊!一大爷「鸭儿」被猛犬咬住,最后...

2023年8月29日 13:01
刚刚路上发生一起趣事,差点把我笑不活了,第一次发现抖音段子离我这么近,不过也发现了不规范遛狗的危险。 一老大爷在牵着绳子遛狗,对面一个年轻姑娘也在遛狗,姑娘的狗没套绳子。 这两条狗不知怎么的,可能前世互相有仇,刚一见面凶性就上来了,互相低吼了几声便互相扑将在一起咬做一团,菇凉估计胆子小,吓的花容失色躲在一旁,只能大声喊自己狗的名字,边喊还边让大爷拉拉架。 狗子们刚打了一回合大爷就发现不对了,自己的狗体形比对方小一圈,刚打了一回合就已经落入下风了,便慌忙蹲下身来想把自己的狗抱起来,但是菇凉的狗估计也是打上头、杀红眼了,在大爷蹲下身子那会也不管你是人类还是啥,转头就是乱咬一通,也不知道怎么地儿,乱咬之下竟然咬中了大爷的「鸭儿」。 这一咬可把大爷疼的嗷嗷直叫,大爷吃痛胡乱打了那狗几拳,狗子也吃痛,便松了口,大爷顾不得行人围观,忙不迭的拉开自己裤子检查。还好老兄弟没伤的很重,只是被咬破了皮流了点血,不过,这狗幸好是中小型犬,要是来头比特、罗威纳,大爷后半辈子的「性福」也就没指望了,说不定性命都难保。 还好这大爷脾气还不错,语重心长的教育了姑娘要带狗绳云云....。 之后便协

你确实需要使用Jamstack吗?

2023年8月27日 13:00
介绍 我们先得知道什么是Jamstack,其实很多博友已经在使用这种方案了,如昱行 、 木木 等,引用Jamstack的介绍如下: Jamstack is an architectural approach that decouples the web experience layer from data and business logic, improving flexibility, scalability, performance, and maintainability. Jamstack removes the need for business logic to dictate the web experience. It enables a composable architecture for the web where custom logic and 3rd party services are consumed through APIs. 以我的认知来看其实就是我以前学编程开发时的 MVC 架构,也就 View:展示数据 、Control:业务逻

自省[11]

2023年8月26日 11:01
目标 💡每天摸鱼时间不超过4小时:合格,平均3.18个小时 🏋️‍♂️一周锻炼5次:3/5次 上周状态要差一些,这周还不错。 得益于专注清单的任务列表,本周工作状态要好了不少,每天上班就打开软件,一些每天要做的重复任务都会自动添加,我只需要一项项check就好了,不至于像以前一样没有明确的目标上班就开始摸鱼。 有时候会忘记开番茄钟。 自省 上周的自省文没写,懒癌发作了。 每天下班后要说没时间码字其实都是骗自己的,只不过是回家后更愿意把时间精力花在那些更容易获得快乐多巴胺的事情上,比如:打游戏、看电影、锻炼等等。 去年买的哑铃因为没有买哑铃凳一直摆在客厅角落吃灰,这次终于狠下心来把哑铃凳买了。现在买东西习惯性的喜欢上PDD上看看,不得不说价格是真的挺香的,就是要小心避免踩坑,以下是我对一个哑铃凳的简单要求: * 可折叠 * 坐垫舒服 * 角度可调 * 承重能力合格 这次买凳子发现很多商家为了让搜索结果的价格看起来很便宜所以大部分都在规格了里放了一个仰卧起坐凳,也就是那种往下斜且不可调节高度的椅子或者是平椅,一般都是五六十块,商品默

动态网站实现SPA般的速度

2023年8月21日 14:52
昨天在研究 11ty 的时候看到了 SINGLE PAGE APPLICATIONS (SPA) WITH ELEVENTY 这篇文章,文中提到 11ty 工具生成的网站偏向于传统静态网站,通称为MPA,如Gatsby.js 、Vuepress、Gridsome等工具则都是SPA。并且说明 11ty 可能并不是最优的 SPA 网站生成工具,他们认为SPA的网页性能会偏低,且打包的一些配套脚本体积会比较大。 The data supports the case that Single Page Applications are a bad default for the web too. An analysis of Core Web Vitals across 9.3 million web sites in February 2023 shows that only 26% of sites built using the most popular Single Page Application framework (Next.js) have good Core Web Vit

自省[10]

2023年8月15日 14:08
目标 💡每天摸鱼时间不超过2小时。 每天的摸鱼时常依旧稳居高位不下 用专注清单可以更准确的记录我的工作状态 自省 上个星期二,也就是9号,我又迎来了出生的日子,这次我迈过了生命的第32个年头。 人到了这个年纪之后其实大都不太喜欢过生日,到不是因为父母或其他人口中的「你又大了一岁,现在是个成年人了」云云。 个人认为主要因为在生日这天你可能无法面对、也不想面对自己的失败和碌碌无为,但是这一天知道你过生日的所有人可能都会成为你想起这个事实的镜子。你可能会开始对自己浪费生命、浪费时间的种种作为惭愧和后悔。但这种感觉可能也仅限于这一天。 第二天醒来生日的这个debuff状态去除掉之后又会恢复往日的形态。 不过幸好。 我自己目前有发现到这一点,也在有意识改掉一些臭毛病,总好过继续在泥潭深陷无法自拔要好。前些天还因为某些事情没做好,写下了「不要对事情没做好愧疚沮丧。你需要的是,找出问题、再来一次,并且下次一定要做好的勇气、毅力和决心。」之类的文字。 自己给自己加油打气吧,「坏习惯持续了这么多年,改肯定要花点时间,但是你得真的认真在做了!」 前些

自省[9]

2023年8月6日 22:13
目标 💡每天摸鱼时间不超过2小时 上周成绩不太理想 自省 我一直都在追求高效的工作状态,虽然一直都是失败告终,不过这和方法的有效性并没有关系,方法始终是方法,毕竟坚持和实践才是验证结果的最好办法。 对于我现在的工作状态我觉得有必要做一个自我剖析,以此让我更加明白哪里出了问题。 我其实平时工作内容还是比较繁杂的,涉及了管理、设计、采购、财务等各个方面,而且由于今年公司绩效不好,还对办公室人员做了精简,我要做的事情就更多了,但是我又是管理人员,上级只有我妈,所以即便是事情做的不好、拖延,除了自我批评,我大部分时候都不会受到很大的责备,这种状态其实非常不好,我所承受的处罚不会立刻体现,但是对我有时候又会有感受到它会对我未来收入产生很严重的影响。 目前就我上个月的摸鱼统计来看,浏览器上使用了61个小时,工作ERP使用了44个小时,可以看到我大部分时间都花在了浏览器上,换言之我是个挺喜欢「网上冲浪」的人,这61个小时除了看博客,我大部分的时间都花在了逛Github上。另外VSCode上花费了12个小时,主要浪费在了修改目前在使用的主题「二〇一九」上。 另外

你写过信吗?

2023年7月27日 23:06
📧如果你想尝试写信,与远在千里之外的另一个人用这种朴实、浪漫的方式交流,可以给我写信,我会很高兴收到你的来信。 EMAIL:me@1900.live 因为信件地址比较私人,我会在收到你的邮件后回复给你,或者你也可以直接用电子邮件的形式与我交流。 期待收到你的信件 😊 今天开始工作前如往日般打开川流,页面加载完成后处在热门位置的文章发现是好友风清的一篇「最好的朋友致我的一封信」,通篇读下来自发现梦想火光燃烧的炙热感让我心神动摇,也对风清有一位这样燃烧的朋友而高兴。 看到写信这个事,我发现快不记得上次写信的时间了,最早的一次依稀记得还是读初中的年纪,主要是和家里人通信。 那时候家里除了些变故,父母欠下巨额的债务,家里上门讨债的人每天一波接一波,无奈之下我们一家人只能早早的四散分离,对我爸来说当真是如人所说的妻离子散了。 那之后我爸妈为了躲债不知去向,我姐姐和奶奶、爷爷留在湖南老家,那时候的我刚小学毕业便被送往在一千多公里外四川做生意的舅舅、姨妈家中,好在舅舅、姨妈对我都视如几出,也有弟弟妹妹做我儿时的玩伴,不过也总有被误解、被欺负而无人可以哭诉的时候,只能自己躲在被窝里偷偷

ShareX和Snipaste的截图工具流

2023年7月26日 23:17
前言 我在16年的时候推荐过截图工具Snipaste「超强大的截图工具 -Snipaste」,推荐后我一直在高强度的使用这个工具,它所附带的一些特性已经完全融合进了我的工作流,如贴图、贴文字、贴表格。 这篇文章并没有想要换掉他的意思,只是已经到2023年了,Snipaste还没支持圆角、去窗口阴影。在对系统窗口、其他一些带圆角的窗口、带阴影的窗口截图时会出现一些很恶心的瑕疵。 对于这个问题我之前的做法是手动处理,中间也尝试过使用其他工具,如Chrome插件:TinySnap ,不过毕竟是基于其他程序或者浏览器,在使用过程中有着非常严重的割裂感,所以这些方案都被我放弃了。 ShareX横空出世 之后很长一段时间我在忍受这种截图的不完美,不过在前不久的某一天逛V2ex的时候,我无意间翻阅到了这个帖子:「求一款 Windows 11 截图软件」,作者也和我一样对Windows下的截图软件的瑕疵无法忍受,所以求助V友,我在这里发现了ShareX , ShareX - The best free and open source screenshot tool for Windows

自省[8]

2023年7月26日 22:08
目标 🎯每天摸鱼时间控制在2小时以内 这几天专注力很集中,摸鱼时间都控制在了2-3个小时,工作效率也很高。晚上新增的长条是最近在家里看网课。 自省 这几天工作都用了之前总结的办法,每天在上班的途中思考好今天要做的工作,并按事情紧要程度做一个排序,到公司后做进待办程序里。这样就不会没有头序、分不清主次。 不知道什么时候开始自己有了打错别字的坏习惯,之前以为换了双拼之后这种情况会好一些,但是换了之后好像还是没有改善,反而因为打的快了错的更多了。 不过今天在自省的过程中总结了一下自己打字错多的原因,主要有下面几个方面。 1. 打字的时候过于依赖自己的记忆,在快速打字的过程中时常因为没注意到候选列表的词组变化而打错字或是按错键打错字。 2. 没有将字码打全的习惯,过度依赖词库推荐。 3. 错误的组词,导致词库提示不对,如:去干嘛?,我可能会先打 去干 ,再打 嘛 。 如果在打字过程中候选列表停顿零点几秒、将所有的字码打全、使用正确的分词等就会极大程度改善打错别字的概率,不过可能还需要适应一段时间才会有明显效果。 发现自己可能没有长时间码出一篇文章的能力或者时间。但是

自省[7]

2023年7月21日 21:31
目标 🎯每天摸鱼时间控制在2小时内 这几天控制的还不错,今天是本星期最佳。 自省 这几天老婆回来了,又从单身状态变成了已婚状态。 独身一人过了这么多天恢复双人生活后越发觉得当时「一个人」下小彦 、孙亮 说的可贵之处了。 独处可以做很多平常不能做的事情,珍惜啊 我平时觉得写博客是一件比较私人的事情,偶尔也会写一些不想让家人知道但是又想有读者朋给于建议或者想法的吐槽一类的文章, 所以平时也不会跟家里人说我有些博客之类的。 老婆回来后忽然发现忙碌起来后似乎没了思考的时间,前些日子脑袋里总有那么停顿几分钟的空白时间会蹦出一些感悟想法,现在忽然消失了。也有可能是她回来后想对应需要我去配合的工作多了,个人的时间自然也就少了,「自省」的更新就停下来了。 虽然以前独处的时间没有了,但是现在可以体会两个人的生活,以后有了小孩子之后个人时间还会体会父母的生活,生活的风向标永远会指向新的方向... 分享

自省[6]

2023年7月18日 23:27
目标 🎯控制摸鱼时间在2小时内。 下午控制的不错。 自省 下午心无旁骛,感觉自己进入心流状态前摇挺久的,不过一但进入后的专注力还是挺集中的。 做喜欢的事情这种状态很好进入,前几天弄博客都是一弄就弄一天不带分心的,弄到关键地方会觉得吃饭都是浪费时间。这个还是和自控力有很大关系,其实只要坚持专注一会后慢慢就会进入心流状态了。 每天想说的事情还是要提前做好Memos记录,今天没白天想了很多,但是都没记录下来,现在开始码字却又一片空白了。 分享 没有小米的Logo逼格下降一大截。

自省[5]

2023年7月17日 23:28
目标 🎯每天摸鱼时间控制在2小时之内。 心态心态,一定要摆正呀!又浪费了一天在博客折腾上面。 自省 不知道怎么地昨天上班的时候听「向云端」听的直接泪流满面,中间RAP的那段歌词太打动人了,会情不自禁想到生活里的苦楚...。 生活让你感到卑贱 那么当你听到这首歌的时候 选择与我共同蜕变 也许你现在很难过 也许正躺在被窝 也许你现在很迷茫 正在酒吧里坐着 也许你在工作 或者刚刚分手了 也许你在山脚下 会情不自禁的哼出这首歌 .... 我在2014年4月30号拿到了人生第一份工资,钱不多,但是很有记忆和幸福感。 当时拿到钱先是给自己买了一台ThikPad笔记本电脑,那一天晚上去岗顶电脑城找商家面购的。第一次去大城市,从来没见过的公交车专用车道,四面环绕的高楼,我要很吃力的抬起头才能看到楼顶,真的像刘姥姥进大庄园。我选的那个款当时还缺货等了一个多小时才拿到货,还送了个小书包,之后还给我妈送了一个小礼物(现在想起好像没给我爸送,估计他那会应该挺吃醋的)。 之后因为玩的太晚错过了回去的公交,还下起了毛毛细雨,回去和朋友一人50打了个摩的回去 😂。 不过美好的事情经历多了反而

自省[4]

2023年7月16日 22:24
目标 🎯摸鱼时间控制在2小时以内 今天上午在家磨蹭了一下,10点左右才到的办公室,下午注意力稍微集中了。 自省 早上博客群里在讨论喝茶的事情,我办公室隔壁刚好是个茶馆,所以对于这个事情我还是所有发言权的。 每天早上那些上了岁数的大爷、老大爷都会三三两两和几个玩的好的茶友一桌,点一杯2块钱的普通绿茶聊上一个早上,聊天的内容自是天南海北,大到国家大事,小到不入流的事。还经常茶桌上上一秒意气风发人摸狗样,下一秒家里管事的女人一通电话打过来立马原形毕露,换来茶友们一通笑骂,当事人挂了电话一般也不恼,只会指着笑得最厉害的说下次你母夜叉打电话过来看我笑不笑你。 其实,不论年轻人还是成年人或老年人,其实活着都是想找到自己的存在感。 这些来喝茶的大爷都是年纪孩子大了,孩子已经不需要他们照顾了,中国传统社会形态下这些大爷大叔会没有被需求的感觉,所以来喝茶就是交朋友找存在感。 当然了,获得存在感的形式有很多种,有些人买房、买车、生小孩,有些人旅游、徒步、去冒险,有这个目标其实是好的,怕的是没有存在感也不想去找存在感,那就是坨烂泥了,或者说连烂泥都比上——毕竟烂泥还可以养花。 分享

自省[3]

2023年7月15日 21:48
目标 🎯每天摸鱼时间控制在2小时以内 昨天和今天都失败了,而且是自我放弃的状态 自省 前天开始就提不起干劲了,做工作相关的所有事情都提不起精神,注意力完全没法集中,又一次陷入了泥潭中。 现在脑子有点糨糊,没有头绪。 刚刚看完「何以为家」,本来就因为没自控好而低落的心更低落了... 折腾了一下午,在页面右下册添加了网页工具栏,实现了订阅、搜索、回到顶部、暗黑模式等。另外增加了订阅提示,如果用户没登录就会显示订阅提示。 分享

自省[2]

2023年7月13日 22:16
目标 🎯每天摸鱼时间控制在2小时内! 今天几乎算是惨败,摸鱼8小时,工作1.45小时 自省 今天下午属于全程放弃控制的状态,没有怎么工作。 几乎所有的时间都花在折腾豆瓣不显示图片的问题以及Obsidian的发布工具Flowershow上。 不过好在折腾了一下午基本上都折腾好了。 博客的展示数据已经切换到NeoDB,这里感谢一下蜗牛哥。不过我想折腾一个效果为:在豆瓣电影上显示每一个电影、书籍在NeoDB有没有标记,并显示一个按钮或者什么东西,没有标记的可以点击按钮之后自动标记到NeoDB上(为什么要在豆瓣上标记?因为现在NeoDB的相关推荐、新影片信息比较少,豆瓣要比Neo及时一点),不过结果显而易见——我失败了,等待其他大佬来弄吧。 我在折腾的时候发现一些问题。 自己会把问题想的太全面,要先把所有的相关页面都规划、思考清楚、页面CSS弄的漂亮一点,在一些无关精要的功能上浪费时间,最后才再开始编写代码,然后发现——我设想这么多,做了这么多准备工作,最后发现这条路是不通的。正确的工作流程应该先把具体功能测试出来,最后再来完善架构、表现形式。 另外增加一个早上起来整理

自省 [1]

2023年7月12日 23:30
目标 🎯每天摸鱼时间控制到 2 小时以内! 今天控制的不错。 上午参加了一个培训所以也没怎么用电脑,下午专注力挺集中的,几乎没有开小差。摸鱼实际中计入了浏览器的使用,不过今天大概有半小时都是工作用浏览器,实际摸鱼时间更短。 自省 今天虽然摸鱼的时间控制的很好,不过也可能是工作已经处于再不完成便有大麻烦的「焦虑性集中阶段」,这个只能接下看后续的坚持情况,我还是对此还是持有乐观看法。 忙了一天,下班时间五点半一过就开始有些松懈,憋了一天后不自觉的想给自己「奖励时间」,然后进群摸鱼放水了半个小时,不过却又一种不比平时更舒坦放松的感觉。 当时去摸鱼放水的时候还不自觉,现在在码字的时候却想起自己的这种行为是不是恰好和昨天分享的「如何努力工作」一文中提到的一种情况一致呢? 你必须注意到你什么时候在偷懒,但也要注意到你什么时候工作太辛苦。如果你认为工作太辛苦有什么值得骄傲的地方,请把这个想法去掉。你不仅会有更糟糕的结果,还可能是在对别人,或者对自己炫耀。 下班在群里吹水,忽然聊到笔记软件的使用,发现自己记笔记最认真的时期还是用Trilium的时候,那个时候是真用心在做笔记,联想

自省[0]

2023年7月11日 23:20
今天小胡又分享了一个很有意思的博客 「happy的困难日记」,这位博主最近在尝试缩短自己玩手机的时间。 这让我想起我前些天的控制自己不去看微信的尝试,刚开始那几天我坚持的非常好,几乎把摸鱼时间都控制到了2个小时以内,所以那几天的工作条理一下就清楚了不少,自己也不再焦虑。但是仅仅只坚持了三四天就有些开始松动,这位博主的执行力是我可以学习的,所以就有了本文和肯定会有值得后续系列更新。 「设立目标>每日自省>达成目标>设立下一个目标」,我觉的这是一种很好的循环,所以我准备也开辟出一个专栏,就叫「自省」吧,暂定专注做三个事情: 1. 执行一个小目标 2. 分享每天的自省、观察、收获等 3. 分享一张照片 那么,开始吧? 目标 🎯每天摸鱼时间控制到2小时以内! 今天折腾bitwarden浪费了很多时间,微信没有关闭,导致看了很多次微信群,并参与了话题讨论。 自省 博客群友分享的一篇「如何努力工作」的文章让我收获颇丰,其中提到一些对工作的观点的很是受用和认同,这里引用一段,原文可以点击链接查阅: 我们必须先了解什么是真正的工作,才能全心全意地渴望去做。这需要一段时间

PAUL GRAHAM:如何努力工作

2023年7月11日 18:42
🥳原文链接:http://paulgraham.com/hwh.html 译文链接:https://emmmme.com/workhard 关于如何努力工作,似乎没有什么可说的,任何上过学的人都知道。有一些 12 岁的孩子,他们的努力程度令人吃惊。但现在我对「努力工作」又有了更深的理解。 我知道如果想做伟大的事情,就必须非常努力地工作。我小时候对这一点并不确定:学校作业的难度各不相同;一个人并不总是要非常努力才能做得好。而一些牛人似乎不费吹灰之力就能把事情做好。我曾经认为是不是可以通过纯粹的聪明才智来达到目的?现在我知道了,没有。 一些学科看起来很容易的原因是我的学校的标准很低。而牛人似乎毫不费力的原因是多年的实践;他们使事情看起来很容易。 当然,那些牛人通常也有天赋。要取得杰出的成绩需要有三个要素:天赋、实践和努力。只用其中两个就可以做得很好,但要做到最好,则需要全部三个:你需要有很好的天赋,经过大量的练习,并且要非常努力。 例如,比尔-盖茨是他那个时代商业领域最聪明的人之一,同时也是最勤奋的人之一。他说:"我在二十多岁时从未休息过一天,一次都没有。" 梅西的情况也类

Ghost博客的Sitemap在哪?

2023年7月9日 18:12
在老版本的Ghost中你可能还需要手动创建模板,制作Sitemap页面,但是在新版本的Ghost中(具体从什么版本开始不太清楚),博客会自动创建Sitemap链接。 你可以通过 https://yourbloglink.com/sitemap.xml 访问你的Sitemap文件,Ghost已经做好所有工具,你只需要使用即可。 如下面就是我的博客的Sitemap文件链接: 🥳https://1900.live/sitemap.xml https://1900.live/sitemap-posts.xml https://1900.live/sitemap-pages.xml https://1900.live/sitemap-authors.xml https://1900.live/sitemap-tags.xml

华为屏幕失灵后如何导出数据

2023年7月9日 16:07
最近不是之前那台手机屏幕摔回了嘛,虽然换了手机,但是以前的数据还是得导出来,虽然可以拿到专卖店去弄,但是不知道该拿到小米那边去弄还是该拿到华为那边去弄,所以干脆就在家自己弄了。 看了一下相关资料发现可以通过外接显示器、鼠标来操控手机,具体操作如下: 1. 一个有HDMI或其他显示器接口、至少2个USB接口的TypeC拓展坞。 2. 将鼠标、键盘、显示器接在拓展坞上,再将拓展坞接到华为手机上。 3. 点亮屏幕后不要动(虽然可能没有画面,但是也要尝试一下)。 4. 按空格进入输入密码模式。 5. 输入锁屏密码。 6. 按两下TAB,把焦点移到解锁后按回车 7. 显示器出现手机屏幕画面。 8. 用你自己的方式转移数据,如:再接个U盘直接拷贝、小米换机、其他换机工具等。

4年后的换手机

2023年7月9日 15:44
前任故事 前几天跟了我4年的Mate30Pro不幸退役了。 因为不小心让它做了一次低空坠落,虽然以前摔过很多次,也有比出问题这次高的,但是都一点问题没有。不过这次不小心摔到侧边了,所以面部出现不少裂纹(曲面屏真的一点卵用没有,只会增加破损几率,一直都想吐槽!),本想着如果不出问题就这样再用用,当时的换机的欲望其实不是很强烈。 但是万事总是不会那么如意的,之后的一天晚上我和平时一样把它从口袋里拿出来准备玩会手机时却愕然的发现他的3/4分的脸部已经失去了画面,熄屏时还会变成深黄色,那一刻不知道是该高兴好还是该懊悔好。高兴也许是因为以前沉寂下去的换机热情重新燃起,懊悔的是如果我早点带它去看病也许还能再坚持几年。 之后就带着它去了一下华为的专卖店,客服说之前那种屏幕出现了裂纹但是还能使用的情况可能是外屏坏了,当时那种情况下如果拿来维修可能只需要四五百块钱,现在内屏出现这种状态表明内屏也坏了,因为内屏非常脆弱,但是外屏的玻璃渣滓一不小心就会损坏内屏。现在只能全套更换了,虽然是四年前的机器,但是维修费用却依旧高达1500元。这个价格已经超出了我的预算区间了。 所以最终还是打算重新换个手机

Chat-Sider,我Chrome上的ChatGPT插件新宠

2023年6月28日 12:40
引言 自从ChatGPT出来之后Chrome上多了很多很方便的AI工具提高了我们在冲浪时候的体验,我之前也介绍过一款很方便的 ChatGPT翻译工具,不过最近在折腾ChatGPTAPI时发现了另外一款更全面的GPT插件:Chat-Sider。 Sider: ChatGPT 侧边栏, GPT-4, 联网 | Chrome扩展 - Crx搜搜ChatGPT 侧边栏作为您在任何页面上的 AI 助手Crx搜搜 RC8 一个牛X的扩展和应用商店由所列网站的所有者创建。这位发布者无不良记录,未曾有过任何违规行为。 chatgpt-sidebar.com 遵循了针对 Chrome 扩展程序的推荐做法。 精选 特性 * 强大的边栏 ✅ChatGPT 翻译器 ✅ ChatGPT 词典 ✅ 语法检查 ✅ 自定义任何提示 * 快速查找窗口: ✅ 查找所选文本的最快方式 ✅ TTS 支持 ✅ 易于打开/关闭 * 增强搜索页面 ✅ 自定义搜索页面提示(市场上唯一的) ✅ 支持所有流行的搜索引擎,包括 Google、Bing 和 duckduc

Ubuntu开启Swap缓解死机问题

2023年6月19日 11:57
之前有提到过我的腾讯轻量云小鸡 频繁爆内存卡死 的情况,之前也想过一些办法处理,比如:停掉一些不用的服务、检查了是不是docker更新容器太多卡等等。不过都没有解决这个问题。 前几天找其他资料时偶然看到了一个添加Swap缓存文件的命令,所以我想是不是腾讯轻量云在安装Ubuntu的时候不会自动开启Swap功能呢? 在SSH中输入 top ,然后按一下 m 键就能查看内存的占用情况。 果然,Swap部分显示 0/0 ,没有Swap文件(截图是开启后的样子)。之后我通过相关的资料开启了Swap后运行了一个多星期,以前爆内存卡死的情况已经没有发生,实测有效。 和我一样有内存不够死机情况的朋友们或者想优化服务器性能的朋友都可以试试看。 Swap是什么 Swap分区(也称交换分区)是硬盘上的一个区域,被指定为操作系统可以临时存储数据的地方,这些数据不能再保存在RAM中。 基本上,这使您能够增加服务器在工作“内存”中保留的信息量,但有一些注意事项,主要是当RAM中没有足够的空间容纳正在使用的应用程序数据时,将使用硬盘驱动器上的交换空间。 其实在Windows中也有这个功能,早期XP时

一个人

2023年6月18日 11:02
近段时间我妈和老婆都回湖南了,现在家里就我一个人,每天回来都有些冷冷清清。 我爸上次身体不适去长沙体检发现肺部有问题,主要是几十年的烟龄以及前些日子的「新冠复阳」潮所引起的连锁反应,检查结果是有轻微的纤维化迹象,而且肺部状态不好,这次去医院发生了很多事情,回头单拿出来说说。 我妈这次回去主要是照顾我爸,顺便还要带他去复查。医生之前说是必须让他把烟戒了,之前在家的时候还忍的很好的,但是前些日子我姐去家里看他被逮到抽烟的现场了。他在老家现在没事就喜欢去麻将馆打牌,牌搭子很多又是喜欢抽烟的,估计就是别人发了烟给他,他想着抽两根没事。 我老婆去长沙找她姐玩了,估计也要玩个半个月左右。 她们忽然就这么都走了以后我还有些不适应,生活的节奏一下子就乱了、安静了,以前是霜做饭,我洗碗,现在得自己做饭。下班回家后我们会在客厅看追电视剧,大家分享一下今天碰到的事情,讨论剧情。 前面几天还点了几顿外卖,不过吃几次就不太习惯了,还是得自己做,所以每天早上去买菜,中午做一顿,菜分一半给晚上。下半后也没人管了,可以看自己想看的电视剧,刷手机。 孤独感还是有的,不过好像脑袋空了不少,以前时刻都填满了东西

拖延症反思

2023年6月17日 10:10
😃好久没写这种严肃的「思考」性质的文章了,感觉还不错。 不知道从什么时候开始有了拖延的习惯。 计划的工作往往都会比预计好的时间晚上四五天,而且总是到这件事急得实在没办法了才拿上台面处理,而且每次这个时候来处理,因为时间太赶,慌慌张张下事情又不会处理的很完善,给人一种毛毛躁躁的感觉。 用古人的话来形容就是「火烧眉毛」了吧?火虽然拿开了,但眉毛已经烧掉不少,这个时候再瓷牙咧嘴好像已经没什么用了,可恨的是下次眉毛长好了,好像就又会忘记之前被烧掉过的事情了 如此反复,此时想来自己每次这样时肯定滑稽的很...。 写到这儿时兀的想起之前写那篇 早起的方法 时的心境。 那些天每天坚持一睁眼便直接起床,关掉了了所谓的「10分钟后再叫醒我」延迟闹钟,直接掀开被子就起床,不给自己的犹豫反应时间便不会失败。 现在想起确实觉得痛快无比。 其实起床这件事不就是拖延症的小小缩影么? 所有的借口、余地其实都是自己给自己的,为什么我们称那些那些强大、自律的人为「狠人」?因为他们不给自己留有太多的余地,没有余地便能按照预订的计划去做事情,你不是不可以设想实施过程中的困难,但是想太多会把自己困在原地。

ChatGPT给的健身计划

2023年6月15日 15:58
作为一个健身教练,我可以为您制定一个减肥计划,但请注意,减肥是一个个性化的过程,所以我只能提供一般性的建议。如果您有任何健康问题,请先咨询医生的意见。 健身计划: 1. 有氧运动:每周至少进行5次有氧运动,每次30-60分钟。您可以选择慢跑、快走、跳绳、骑自行车或游泳等。这些活动能够帮助您燃烧脂肪和提高心肺功能。 2. 肌肉训练:每周进行3次肌肉训练,主要集中在大肌群上,如腿部、胸部和背部。这些训练有助于增加肌肉质量和提高新陈代谢。 3. 灵活性训练:进行每周2次的灵活性训练,如瑜伽或普拉提。这些训练可以帮助您增加柔韧性和减少运动造成的肌肉酸痛。 饮食计划: 1. 控制总热量摄入:根据您的目标体重和身体状况,每天摄入的总热量应该少于您的维持热量。建议咨询一位营养师帮助您确定适合您的每日热量摄入。 2. 增加蛋白质摄入:蛋白质有助于维持肌肉质量,增加饱腹感并促进新陈代谢。建议每餐都包含一份高蛋白食物,如鱼、鸡胸肉、豆类和坚果。 3. 控制碳水化合物摄入:尽量选择优质碳水化合物,如全麦面包、糙米和蔬菜。避免高糖和加工食品。 4. 增加蔬菜和水果摄入:蔬菜和水果含有

利用IntersectionObserver几行代码简单实现图片懒加载

2023年6月15日 11:55
博客之前集成了Douban数据的展示功能,不过由于数据一次性加载过多,且都是有图片的数,导致在进入该网页时会使浏览器卡死3-5秒,等到图片完全加载完毕后才能正常操作,非常影响用户体验。 我检查了一下,发现卡顿的原因主要还是一次性发起的图片加载请求太多了,查了下资料,似乎下一代的HTTP2.0协议好像对这方面做了优化。但是常规做法还是使用懒加载来处理,也就是滚到图片位置才进行图片请求。 不过我不太想使用第三方的库来处理这个问题,其他库用起来麻烦,而且很臃肿,我其实只要简单的实现这个功能就好了。之前在移植Smart主题的TOC功能到二〇一九上时发现他使用了 IntersectionObserver 这个函数来处理,便查了一下这个函数的介绍: Intersection Observer API 提供了一种异步检测目标元素与祖先元素或 viewport 相交情况变化的方法。 这个函数多用于以下几种情况 * 图片懒加载——当图片滚动到可见时才进行加载 * 内容无限滚动——也就是用户滚动到接近内容底部时直接加载更多,而无需用户操作翻页,给用户一种网页可以无限滚动的错觉 * 检测广告

白嫖的ChatGPT过期了怎么办?

2023年6月13日 12:24
之前注册ChatGPT赠送的18刀终于在6月1号过期了,截止到失效前一天也才仅仅使用了 $0.61 / $18.00 。我平时的使用场景其实并不算多,用的最多的也就是Chrome的翻译插件了。 过期后的这十多天最开始想着用 newbing 替代,但是喝凉水都塞牙 newbing 也无法访问了,不知道为什么我无法更改我的国家归属地,导致一直提示我所在的区域不支持,也尝试过很多发发,插件,都没有效果。之后虽然我试着用了一些其他的第三方工具,如开源的 go-proxy-bingai ,可以打开 newbing 了,但是翻译插件没法调用,始终不太方便。 所以还是得想办法把OpenAI继续用起来,我查了一些资料整理了一下,想继续使用无非以下几种方式 * 用虚拟信用卡绑定OpenAI 太麻烦 * 用Azure OpenAI 太麻烦 * 用一些付费的API服务平台 简单  有风险 * 一些ChatGTP的国内镜像站 不提供API-KEY   第四个是直接PASS了,这种方式只能通过网页使用,不提供API,所以翻译插件没法使用。最后还是只能想办法充值,但是因为政策原因,OpenAI并不

大理旅拍

2023年6月12日 15:55
🥳本文还没校对,可能有很多错别字和语句不通的地方,请酌情阅读 和钻戒一样,归功于西方国家和一些商家的洗脑工作,现在年轻人对于拍一本好看的婚纱照的需求还是挺强烈的,形式注意和纪念意义的存在让这个事情对于女孩子来说变得尤其重要。 不过我到也不反感这种风气,人类发明相机就是想留下一些美好瞬间,而婚纱照的服化道、照片的精修可以让我们在最美、最帅气的时候记录下自己的「过分美丽」,以后年级大了看看照片回忆曾经也是很惬意的事情。 和霜结婚已经不知不觉两年多了,因为「口罩」的问题拍婚纱照的事情几度耽搁,现在疫情放开我们终于能放心出去拍照了。 至于去哪里拍,我们在结婚后的第一次旅行后就确定了——「大理」,是的,我们在21年领证后第一次旅游去的云南,自驾游玩了一个星期左右,从老家出发直达昆明,再去大理,最后去的丽江。不得不说云南的这个省份有着完美的天气和风景,还得益于国内内陆的第二大淡水湖——「洱海」,我们还可以拍到比较漂亮的海景,在这里拍婚纱照是比三亚更理想的地方。在这边可以选大理或者丽江,大理有洱海,丽江有玉龙雪山,其实选哪个城市都有非常漂亮的风景,不过霜还是更偏向大理,大海的浪漫是所有女孩

阳阳阳

2023年5月29日 18:26
霜在之前的疫情浪潮里有幸躲过一劫,对此我们全家都觉得这件事是个奇迹,一度怀疑(霜甚至自己都怀疑)她自己其实有可能是无症状感染者吗,已经感染过但是没有症状,还扬扬得意了好久,终于上周四打破了这个我们内部的谣言——首阳了。 5月这次疫情爆发之时其实我们并没有做太多防护工作,因为身边复阳的亲人朋友都表示复阳后的症状都是很轻微的感冒症状,甚至都不会影响生活和工作。只有公司的余师傅居然还是首阳,症状来的很是强烈,听他说几乎每天都是高烧反复、畏寒怕冷、冒冷汗、疼痛等,请了三天假后才恢复上班,上班那几天说他自己还是有乏力的感觉,衣服也比我们多穿了一件。 那几天我们也只是简单的做了下防护,霜也并没有被感染。 第一天 不过这上周五一大早,起来还没什么事,刚到公司霜就说自己不太舒服,一直的在打寒颤,我摸了她额头发现有些发烫,便让他赶紧回家休息算了。她回家后吃了抗病毒颗粒、布洛芬后便闷头就睡,当天我也早早下班回家陪她,用体温计量了一下烧到了39°,从药箱里翻出退热贴,重新拿了药给她吃下。 晚上三四点说还是不舒服,所以我又给她吃了一粒布洛芬,让她多喝些水。 第二天 第二天正好是周末,所以我索

服务器经常莫名死机和后遗症

2023年5月28日 10:34
不堪重负 在腾讯云买的 1c2g 6m 的轻量云不知道是不是服务架的太多还是什么原因,今年开始频繁出现死机、无反应的情况,死机的时候也无法通过ssh登录终端,且出现这种情况后搭建的所有应用会全部挂掉,腾讯云控制面板里的监控这一段的信息为空白。 根据腾讯云提供的 云服务器无监控数据排查手册 指引,结合监控面板的数据来看不排除是负载过高。 * 系统内存占用比常年处于80%左右 * CPU负载基本维持在20%左右。 * 储存空间上次出现这个问题后清除了docker的一些日志后从98%掉到了现在的89%。 * 宽度负载最高4m左右,平均1.58 目前看来性能可能的确到了瓶颈,这台机器用了也有五六年了,的确该换了。 机器是今年11月底过期,先凑合用着,等到了618或者双11蹲一个性价比高的机器看看。 后遗症 昨天死机后重启服务器,发现提示主题确实,当时还没太注意。 今天早上发现Ghost版本好像不对,进终端检查了一下,发现docker里的Ghost没启动成功,但是访问博客却可以访问。 之前也遇到过这个情况,服务器在重启后ghost-cli会提前运行 安装版 的博客,因

Ghost博客自定义RSS

2023年5月26日 15:34
在如今的年代信息的获取已经不能再简单了,各大公司得益于算法、用户画像共享,可以在用户完全不知情的情况下给用户推送信息、广告,但是又因为营销号这种东西存在,导致推送给用户的所谓信息大部分几乎都是无效的。 所以在碎片化信息如此肆意增长的时代依旧还有人用RSS(Really Simple Syndication)来作为自己的信息获取渠道,我通过GPT总结了一下这种信息获取方式的优缺点,并做了一些自己理解 优点 * 方便快捷:RSS 可以将多个网站的内容汇总到一个统一的阅读器中,让用户无需逐个访问网站,节省时间和精力。 * 定制化:用户可以订阅自己感兴趣的内容源,只接收特定领域或感兴趣的信息,避免信息过载。 * 阅读体验好:RSS 阅读器通常提供简洁、干净的阅读界面,让用户专注于阅读内容。 * 隐私保护:RSS 阅读器不需要用户提供个人信息,避免了隐私泄露的风险。 缺点 * 信息过滤不足:RSS 订阅的源可能包含垃圾信息或媒体推销,需要用户手动过滤。 * 部分网站不支持:虽然 RSS 已经普及,但仍有一些网站不支持 RSS,无法使用这种方式获取信息。 * 信息更新不

Wordpress主题:二〇一九,Ghost版

2023年5月13日 16:02
之前用的主题 Attila 自22年6月修改完成后用到现在也差不多一年了,不可否认Attila是个非常好的主题,而且在使用期间我还陆陆续续做了很多喜欢的功能集成,如:豆瓣、TOC、友链。 前端时间看到 imzm.im 的Wordpress主题 二〇一九,初见的第一眼感觉很舒服。虽然只是Wordpress的一个免费默认主题,但是较大的字体和舒适的排版让人在阅读方面能感受到很强烈的愉悦感,当时搜了一下发现没有Ghost的办法,所以就又萌生了移植的想法。 以前写Attila没太搞明白Glup的作用,但是体会过他的方便,所以这次也打算从头开始用一个比较方便的脚手架枸橘,最后选定了 @royalfig  的 Ghost-theme-starter 主题脚手架做开发,这个脚手架主要工具有下面这些: * 打包工具:Rollup * sass工具:postcss 不过刚开始就遇到了调试环境无法启动的问题,检查后发现启动命令有点问题,看了 @royalfig 最新的一个主题的配置文件后发现启动命令要对应着修改成"watch": "rollup -c --environment NODE_EN

Chrome上的ChatGPT翻译插件

2023年3月8日 10:11
前言 最近人工智能忽然吹起了一股大风,一夜之间无数相关项目如雨后春笋般的冒了出了,微软紧随其后推出了newbing,我知道看了B站那岩做的一些评测后大为震惊。 我可以肯定的说出现这种人工智能,在非常短的时间就会对我们的显示生活产生非常大的音响,这种影响会涉及方方面面,影响到每一个发,未来人们的需要学习的专业技能是如何更好的利用AI来工作,如:艺术创作、书法翻译、会议速记....,很多工作会被AI替代...。 你现在阅读的这篇文章就使用了ChatGPT润色和校对。 这里推荐一个今天刷Github时发现的一款利用ChatGPT的Chrome翻译插件,通过使用ChatGPT的API做到选词翻译,而且翻译质量相对传统翻译可读性强了不是一点半点。 GitHub - yetone/openai-translator: 基于 ChatGPT API 的划词翻译 Chrome 插件基于 ChatGPT API 的划词翻译 Chrome 插件. Contribute to yetone/openai-translator development by creating an account o

早起的方法

2023年2月24日 09:36
坚持早起第六天。 离开被窝其实只需要掀开被子坐起来,这个时候可能会有迷糊,甚至看不清路,走路也不太稳,没关系。我们只要再随便找点事做就可以完全清醒,电脑开机不也要好几秒钟不是吗? 坚持几天下来你会发现你甚至会期待每天的早起,早起的这一段时间格外的安静,没有工作的事物,窗外只有鸟鸣和环卫阿姨扫地的声音。 你可以进入更层次的思考,在这段大脑空白的时间自省,放空,如果你是工作狂在这段时间思考工作也会有意想不到的结果,不论是工作还是自省你在这种状态下会得到不一样的启发。

SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 XXXXXXXX\Administrator 的信息

2023年2月12日 15:19
执行SQLServer代理作业时提示执行失败,查看作业日志详细信息如下: ⚠️SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 XXXXXXXX\Administrator 的信息 病因 权限问题,用windows认证方式登陆后创建的作业全部是以登陆名创建的,如果sqlserver做了相关设置或者没有给这个账户权限肯能会无法执行 解决 🥳目标作业上右键 > 属性 > 修改右侧所有者为有权限执行作业的用户,如“sa”等。

Bitwarden搭配DuckDuckGo生成匿名邮箱

2023年1月3日 20:42
自从用了Bitwarden后很几乎我注册所有的网站都用了它保存账号密码,而且不重要的网站我都是用的随机密码生成功能,避免一些第三方服务出现安全事故泄露主密码,可以说很放心和方便了,搭建教程可以看这篇帖子: docker自建bitwarden服务以前一直用的lastpass,后来中间出现过好几次服务器无法访问,疑似背墙的情况出现。而且chrome的插件、后台管理页面也没有中文。 蛋疼之下就开始找替代品,之前偶然在v2ex上看到有人推荐过bitwarden的开源密码管理器的服务,而且客户端、后台都有中文,且同时支持多平台。所以我索折腾了一下这个东西,因为要用ssl,所以我一直没折腾成功,后来又试过用腾讯的开源应用平台,不过还是失败了。 因为我的图片都存放在七牛的服务器,但是有个扯淡的地方是七牛的ssl流量是不免费的...,所以我就暂时搁置了。 后来无意间在中文博客圈微信群里夏普的帮助下才算是正式在自己的vps上搭建了一个基于doc…我 道1900 今天偶然间发现Bitwarden居然还有随机邮箱账号的功能,经过我的测试可以使用DuckDuckGo的邮箱保护服务生成随机邮箱,避免邮箱泄露

Windows下完美的Terminal:Powershell

2022年12月11日 16:47
以前用命令行工具一直都是全手打,没用过提示之类的,但是看到一些大佬的视频里用终端都带提示、历史命令,那个时候就很好奇,不过一直没学习怎么配置。 前些日志在折腾Python环境的时候偶然接触了Windows下的跨平台命令行工具:Powershell(这个不是Windows自带的那个Windows Powershell),这个Powershell项目网站上指出的两者区别。 Windows PowerShell vs. PowerShell Core Although this repository started as a fork of the Windows PowerShell code base, changes made in this repository do not make their way back to Windows PowerShell 5.1 automatically. This also means that issues tracked here are only for PowerShell Core 6 and higher. Windows P

Powershell下Conda安装和配置

2022年12月11日 16:25
我在考虑要不要把Nodejs、Python、Ruby都用Conda来管理。 不过先看看相关资料。 已经用上了,真香。 关于Conda的发行版本 * conda是一个包和环境管理工具,它不仅能管理包,还能隔离和管理不同python版本的环境。类似管理nodejs环境的nvm工具。 * anaconda和miniconda都是conda的一种发行版。只是包含的包不同。 * anaconda包含了conda、python等180多个科学包及其依赖项,体格比较大。但很多东西你未必用到,所以才有mini版。 * miniconda是最小的conda安装环境,只有conda+python+pip+zlib和一些其他常用的包,体格非常迷你。 * pip也叫包管理器,和conda的区别是,pip只管理python的包,而conda可以安装所有语言的包。而且conda可以管理python环境,pip不行。 安装Conda 我这里选择安装miniconda,conda完全安装似乎要3个多G,没有必要。 我使用的是 Winget 安装(不得不说Winget是挺方便的),命令如下: w

Pyenv提示error extracting the web portion from the installer处理

2022年12月4日 15:28
错误信息 最近因为需要用Python写个小程序给同事用,但是用pyinstaller打包好后在同事的Win7系统上运行出错,提示如下错误: ⚠️无法启动此程序,因为计算机中丢失api-ms-win-core-path-1-1-0.dll 缺少DLL一般都是因为没有运行库,我百度查了下资料,有些帖子说是因为没安装运行库,我试着重新安装了所有运行库以及那片帖子提到的库,但是好像并没有什么效果。 后来 https://cloud.tencent.com/developer/article/1848431 这篇帖子中说到是因为3.8.6以后的Python版本不在支持Win7了,所以需要将Python降级到3.8.6重新打包就能解决这个问题。 pyenv-win 直接安装肯定会出问题,因为我的电脑中已经安装了 3.11.0 ,因为以前了解过nodejs有多版本的环境管理工具,就试着搜索了一下,python也有一款叫 pyenv-win 的win平台版本管理工具。 GitHub - pyenv-win/pyenv-win: pyenv for Windows. pyenv is a

Ghost博客实现豆瓣观影清单

2022年10月15日 23:13
早期实现 豆瓣观影清单、书架的功能之前也做过,当时用过好几个方案 1. 当时找的一个教程,不过不记得出处了,不过我写了一篇日志记录这个事情,里面记录了实现过程,原理其实很现在这个类似 2. 另外一个是当时一个叫mufeng还是布克牧为的大佬搞了一个douban的数据站,可以缓存你豆瓣的观影数据,不过好像也停止服务了 这两个方案都或多或少的出现问题了,我后来懒也就一直没有修过,所以之前导航上一直没有书架和豆瓣的链接。 其他方案 但是在空着的这段时间我有时候也找过解决方案,有一次在木木木木木 大佬的博客里发现了一个hugo的实现方案,功能非常齐全,可以实现清单的分类筛选、时间筛选、评分筛选、排序等功能。 当时一下就心动了。 大佬博客也有一篇日志提到了这个功能是谁写的,并且附上了链接。 来自于 @怡红公子 的自制轮子:doumark-action ,豆瓣书影音同步 GitHub Action。 我当时尝试着弄了一下,虽然成功通过doumark-action 缓存了我的豆瓣数据,但是后续的页面渲染把我卡住了,hugo的模板渲染用到了一些hugo特有的函数,我当时也看不太

鱼缸翻缸

2022年10月15日 22:16
不记得之前有没有说过我的鱼缸在我妈和我老婆两人的悉心反复照料下全缸去世的事? 这事发生已经很久了,不过好像一直没写日志(应该是没有),我就先唠唠这个鱼缸的事把。 有一天我一回家发现鱼缸水全白了,不像以往那么透亮,而且缸底满满的全是鱼食就知道肯定是我当时贪便宜买的自动喂鱼器出问题了。 首先是因为我老婆不小心调了一下喂鱼器出口大小,而那个喂鱼器出口有点松动,稍微不注意就会全部OPEN,而我老婆当时觉得出来的鱼食太少了就去调,然后....就全部掉缸里了。 然后是我妈,我妈看到这情况立马就开始着手换水,把整缸水换了一下,在换的过程种又把整个鱼缸沉底的鱼食全部扬起来了,鱼在这种环境下这样折腾一下几乎是不可能存活了。 我回家后虽然已经第一时间把所有鱼和水草全部捞出,并打氧救急,但是这些鱼终究还是没撑过当天晚上,第二天早上起来就在桶里全部翻白肚了,现场情况之惨烈,我甚至都没给他们拍张遗照。 这个鱼缸我开缸也有三四年了,虽然水草的状态一直不怎么样,但是鱼没怎么死过。开缸的时候买了很多灯科鱼,几条胡子、小猴飞狐,后来隔壁阿姨因为他弟弟是做水族馆的,她也喜欢养鱼,有一次给我提了好多条神仙鱼。那

流水账 2022年10月1日

2022年10月1日 17:50
这个国庆没有安排~。 不同于往年每个国庆基本上都出去浪荡了,鉴于目前四川疫情形式所以我们今年就窝在家里和公司七日游了。 另外最近虽然博客文章更新的比较少,但是数字花园那边记录了不少东西,因为都是知识一类的我就没有再写进博客里了,不过这里倒是可以做个整理,清点一下到底都写了些啥。 唠唠最近发生了啥大事把~。 服务器中勒索病毒 ⚠️请一定要给服务器重要数据定时做好备份!切记! 前些天刚到公司就听到服务器传来噩耗,大家都说ERP连不上了,我还不信,开了自己的电脑测试发现果然不行,而且远程软件也没办法连接。 我疑惑的接上显示器和键鼠登录系统后才发现——我们服务器中勒索病毒了,我之前装的各种安全手段全部失效,安全软件也被干掉了,所有的文件都被加密。并且硬盘分区名称都被改成了邮箱,根目录有一个 README.md 文件,里面写了以前勒索病毒的常见说辞,大概意思就是不要动文件,24个小时之类马上联系我们支付赎金就给你恢复balabla..。 不过我是不太信这种的,一般都不会给你恢复的。所以中了这种病毒去一些安全论坛发帖问问看那些安全人员有没有办法恢复,没有的话你就只能认了。 服务

我用Logseq+Github Page搭建了一个数字花园

2022年9月17日 20:46
之前我们博客圈的朋友一直有讨论数字花园这个最近比较火热的概念性产物,而且我也看过了别人用Obsidian、Notion搭建的数字花园,还是对这个东西比较感兴趣的。 我认为博客是类似日记一样的空间,适合写一些分享、生活之类的文章。 一些技术类、文档类的东西写在博客里其实是比较有割裂感的,尤其是我这种生活和技术两种都喜欢记录的人来说,我自己看我的博客都有一种混杂、主题不明的感觉。而且最近又频繁写了不少技术类的文章让我更觉得有必要了。 其次是博客的超链接方式也注定了来回跳转查阅是非常不方便的,像Logseq这种有站内内链无刷新跳转+导航+结构图的方式是非常适合查阅的。所以我就决定研究怎么用Logseq来搭建自己的数字花园,还好都有现成的资料。 所以我前几天就开始折腾Logseq如何创建数字花园,折腾了好几天,终于在今天这个凉爽的周末把属于我自己的数字花园搭建起来了。 🏞️我的数字花园 https://garden.1900.live 效果 因为之前我做了Logseq的自动commit,而我找到的部署方案又能监听这个操作,现在只要发生了commit就自动更新,并重新部署数字花
❌