阅读视图

发现新文章,点击刷新页面。

通过Service Worker‌ 缓存优化 Typecho 的首页访问加速

Service Worker‌ 是一种运行在浏览器背景的脚本,它可以在页面关闭后继续运行,主要用于处理网络请求、缓存资源、推送消息等功能。

认识

Service Worker 也是一个后台运行的脚本,充当一个代理服务器,拦截用户发出的网络请求,比如加载脚本和图片。Service Worker 可以修改用户的请求,或者直接向用户发出回应,不用联系服务器,这使得用户可以在离线情况下使用网络应用。它还可以在本地缓存资源文件,直接从缓存加载文件,因此可以加快访问速度。

条件

要使用 Service Worker‌ 确保网站支持 HTTPS 协议,这是必要条件。

注册

Typecho 使用的话,需要在主题的 header.php 或者 footer.php 里面添加如下代码,以完成 Service Worker 注册。

<script>
    if ('serviceWorker' in navigator) {
        navigator.serviceWorker.register('/serviceworker.js')
            .then(registration => {
                console.log('Service Worker 注册成功:', registration);
            })
            .catch(error => {
                console.log('Service Worker 注册失败:', error);
            });
    }
</script>

新建

在网站的根目录新建 serviceworker.jsoffline.html 两个独立文件,其中js为引入的必需文件,offline为非必需离线文件。

const CACHE_NAME = 'typecho-cache-v2';
const OFFLINE_URL = '/offline.html';

const urlsToCache = [
    '/',
    '/index.php',
    '/usr/themes/你的主题名字/css/style.min.css', /**css文件
    '/usr/themes/你的主题名字/js/script.min.js', /**js文件
    '/usr/uploads/ /**存储在服务器的图片或文件
    '/favicon.ico',
    OFFLINE_URL,
    'https://artalk.bosir.cn/dist/Artalk.js' /**第三方缓存文件
];

self.addEventListener('install', event => {
    event.waitUntil(
        caches.open(CACHE_NAME)
            .then(cache => cache.addAll(urlsToCache))
            .then(() => self.skipWaiting())
    );
});

self.addEventListener('activate', event => {
    event.waitUntil(
        caches.keys().then(cacheNames => {
            return Promise.all(
                cacheNames.map(name => {
                    if (name !== CACHE_NAME) {
                        return caches.delete(name);
                    }
                })
            );
        }).then(() => self.clients.claim())
    );
});

self.addEventListener('fetch', event => {
    if (event.request.method !== 'GET') return;

    event.respondWith(
        caches.match(event.request).then(response => {
            if (response) return response;

            return fetch(event.request).then(response => {
                if (!response || response.status !== 200 || response.type !== 'basic') {
                    return response;
                }
                const responseToCache = response.clone();
                caches.open(CACHE_NAME).then(cache => cache.put(event.request, responseToCache));
                return response;
            }).catch(() => {
                return caches.match(OFFLINE_URL);
            });
        })
    );
});

offline模式,即离线模式,f12 打开开发者工具后找到 online选项,点击后会出现offine 字样,点击打开离线模式,刷新页面会发现首页依然可以访问,而没有缓存的页面就显示下面的离线页面。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>水清无鱼</title>
</head>
<body>
    <h1>离线模式</h1>
</body>
</html>

缓存

为了防止在浏览器需要请求新版本的 serviceworker.js 文件时,而文件自身被缓存,所以需要给 serviceworker.js 文件单独指定缓存头 Cache-control: no-storeno-cache 。然后在 Nainx 的 server { 区域内添加:

# serviceworker.js 不设置缓存
location ~* /(.*)/serviceworker\.js {
    add_header Cache-Control no-cache;
    add_header Pragma no-cache;
    add_header Expires 0;
}

添加完毕后,重启Nginx服务器。

更新

在更新 Service Worker 时,需要修改 CACHE_NAME 的版本号以触发缓存更新

const CACHE_NAME = 'typecho-cache-v1';
或
const CACHE_NAME = 'typecho-cache-v2';

总结

整体来说,只要不涉及复杂的主题和js,Typecho 已经足够快,且拥有良好的打开速度。可如果你像我一样比较追求极致性能,喜欢折腾,也可以尝试一下。我的目标是把博客优化到和静态博客一样丝滑,目前缓存过后进入首页只需要100ms以内,en...

题外话

目前 typecho 已经出现了 1.3.0测试版本,没错,就是目前我现在使用的这个版本。不过我并不建议大家进行升级,毕竟BUG有点多。我目前是全站 0 插件,测试版本的兼容性有待考量。且如果php像我一样为最新版,出现的问题可能更多...

参考资料

1.// cloud.tencent.com/developer/article/2005909

2.// www.luolt.cn/archives/1848.html

3.// www.bookstack.cn/read/webapi-tutorial/docs-service-worker.md

2025年尝试的第一款AI写作工具NoteGen

我不是个工具流玩家,写作也用Typecho博客后台自带的编辑器,但有个缺憾就是不能实时预览。于是,大多时候我还是使用在线Markdown写作,比如印象笔记之类。一直也有看很多朋友使用很多笔记工具,不过大多比较复杂且不愿意折腾使用频率不高的工具。最近,偶尔遇见了一个比较简单的笔记工具,试用了一下,感觉还行,就推荐一下。

NoteGen.png

NoteGen

NoteGen 是一款专注于记录和写作的跨端 AI 笔记应用,基于 Tauri 开发。它具备几个不错的优势:
1.支持Mac、Windows、Linux平台
2.Ai模型接入,如ChatGPT、Kimi、DeepSeek等
3.同步存储和Github图床
NoteGen的核心理念是将记录、写作和AI结合使用。

DeepSpeek

Kimi和DeepSpeek是我使用最多的两个ai工具,一个更利于搜索输出,一个更利于优化代码。所以在NoteGen上面我就使用API调用SeepSpeek-chat模型。

base_url:api.deepseek.com 
 api_key: platform.deepseek.com/usage「官网申请」
    model: deepspeek-chat 「V3模型」

配置好相关的调用数据,即可使用Deepspeek-V3模型,具体配置查阅://api-docs.deepseek.com/zh-cn/

结语

也许还没有掌握方法,输出问题后,反馈的速度相较于平台还是有些差别。还有就是markdown的页面,对于不熟悉markdown语法的人来说,功能还是偏少,且提示以及UI还是比较简陋。整体来说瑕不掩瑜,对于不是重度且需求特别高的人来说,这还是一款值得尝试一下的软件。

禅修#05:滋养心态,控制情绪,改变自己

《认知觉醒》里说:“我敢打赌,凡是买了一堆书没读、报了一堆课没上、心中有无数欲望的人,几乎没有主动做成过一件事,比如养成早起、跑步、阅读的习惯,练就写作、画画的技能,考个好成绩、有高收入等等。”

心态

这个世界上,最容易失败的两种心态,一个是看到别人的明确结果,然后自己在付出行动;另一个就是盲目相信选择大于努力。归结起来就一句话 想要找到捷径。其实一个人在日常生活之中,每天需要去产生连接的,是万事万物,是自己丰盛的内在体验,而不是去连接自己的看法和观念,让看法和观念把自己封闭在一个牢笼里。

改变

改变自己的第一步,不是洗心革面,来一次彻头彻尾的大改造,而是把以前想改变但半途而废的事做起来。比如把买了没读的书先看完,报了名没认真学的课去学一遍。

如果没有自己喜欢且专注的事,一天很容易就过去了。有几件自己明确要持续坚持的事,好像一天就变得特别长。时间从来就是公平的,它的价值只取决于你给它赋予的意义。如果人生有什么算是真正意义上的“失去”的话,第一是失去身心的健康;第二是失去感受美好的意识;第三是失去了成长和更新自己的能力。可惜,真正值得人们在意的内在的失去,人们却最不在意。

如果你都不知道要做什么,那就关掉手机,早睡早起,开始健身,去读书,去学一段舞蹈,做好一步步的规划,一点点去实现。不要刚读一本书前几页,就想知道全部内容,刚运动几天,就想瘦到理想的目标,慢慢来,你会得到更好的自己。

放开视野,放下包袱,去尝试新事物,认识新的人。不计较短期的得失,不顾虑一兵一卒的进退,只有一个目的,就是尝试,要不断重复迷茫时做的那些事,要走出舒适区,让自己看到更多的可能。

意义

滴水如金,丝履似银。世间上无论什么东西,都是来之不易,因此要懂得珍惜;乃至金钱、时间,甚至感情,也要爱惜。生活中能减少一点浪费,减少过度消耗,就是爱惜自己的福报。

任何事情,只要懂得转弯,自我调适,能够自我调适的人,无论生活、感情、经济、处世,都能有另外一番的境界。人生的意义,能在“自在”中生活,最为成功。只要我心自在,一切自然就都能自在了,无论身处称、讥、毁、誉、利、衰、苦、乐的“八风”里,都能不为所动。

世间是一半一半的世界,白天一半、夜晚一半,好的一半、坏的一半。我们对于好的固然要接受,对于不好的也要能包容;唯有好坏都能接受、包容,才能成就全面的人生。

情绪

情绪”最源头上的因与最终的果都在,真自己身上,遇见什么人,发生什么事,仅仅只是引发情绪的机缘而已。遇见符合自己观念和看法的人和事,就产生正面情绪;遇见不符合自己观念和看法的事物就产生负面情绪。

各种情绪的产生在源头上的原因,是自己的观念和看法,与什么样的人和什么样的事,其实毫无关系。
被你讨厌到了极致的人,一样会有人喜欢。被你认为丑的衣服,一样有其他人觉得好看,一样有人心甘情愿买单。偏偏人们从来不能这样去理解世界,这样去理解自己和别人。

自己遇见的一切,不过只是遇见自己的机缘而已,遇见的不过是自己的观念和看法而已,遇见的不过只是自己的好恶而已,而真实的遇见,毫无关系。

这也正是哲学家和智者们所说的:任何事物存在的本质都是中性的,不好也不坏7的,是我们对事物的看法。所以,同样一件事,同一个人,不同的人产生不同的反应。

Typecho博客引入Pjax无刷新页面的两种方式

使用Pjax可以在不刷新整个页面的情况下加载新的内容,它利用 AJAX(XmlHttpRequest)和 pushState() 来提供网站的交互性和响应速度,从而提升流畅的浏览体验。Pjax和我使用的instant.page类似,都是为了提升用户体验,让页面更顺滑且加快一定的响应速度,两者并不冲突,可以共存。

Typecho中,有很多主题都集成了Pjax无刷新功能,例如迷你日志、handsome主题等。但也有很多主题没有集成这项功能,所以提供两种Pjax部署方式。

Jquery.pjax

传统的Pjax部署方式,应该前后引入Jquery和Pjax库,且版本需要匹配。

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.pjax/2.0.1/jquery.pjax.min.js"></script>

或者你也可以使用比较稳定的jquery2.1.4和pjax1.9.6版本。主要前后顺序不能出错。

<script>
$(document).pjax('a[href^="<?php Helper::options()->siteUrl()?>"]:not(a[target="_blank"], a[no-pjax])', {container: '#main',fragment: '#main',timeout: 10000})
</script>

这段js部署在 /body 之前。如果需要加载动画,可以访问我提供的参考资料。

Pjax

Pjax是一个独立的 JavaScript 模块,不依赖于像 jQuery 这样的其他库,它完全用原生 JavaScript 编写。并且体积更小,压缩后载入时间会更短。

<script src="//cdn.bosir.cn/js/pjax.min.js"></script>

我已经部署到阿里云CDN,有需要的可以直接复制过去。随后引入

<script> var pjax = new Pjax({elements: 'a',selectors: ["#main"],timeout: 10000, push: true, replace: false,maxCacheLength: 20, }); </script>

这是根据自己主题修改的,需要更新的部分 #mainbody,如果CSS结构中,没有使用 id 就使用 .mainbody 相反有的话就使用 # 号。

验证方式

以Chrome为例,F12 打开控制台,点击 Network 后,Ctrl+R 刷新,随便点击一个页面,如果出现 xhr 开头的文件,表明成功。 当然更详细的成功部署验证,大家可以自己查阅相关资料。

相关资料:

[1] Gitcode: //gitcode.com/gh_mirrors/pj/pjax?utm_source=artical_gitcode&index=top&type=href
[2] 万维易源: //www.showapi.com/news/article/66d5a0754ddd79f11a002a13
[3] cdnjs: //cdnjs.com/

不吐不快,博客圈能不能少点这种人

不吐不快!

本来没有什么更文想法的,直到翻阅某博客的时候,被恶心坏了。具体名字我就不说了,只想隔空对战。因为我知道,如果他访问我博客的话,一定会知道我在说他。如果不幸,没有访问到,也算是一种回应了。

起因

我是比较喜欢手动点开博友网站的,今早无事便随机访问,偶遇《博客正式被墙》一文,引起我的好奇心。正常来说,只要不是特殊原因或者人为因素,个人独立博客,比较少出现这种情况。为此,我还专门去搜索了相关文章。得到的答案大部分都是被劫持被攻击等。

2024-12-26T13:11:20.png

以上原文,未改一字!

于是,我很好奇, 什么是BTW?什么是GFW? 什么语言文字会被封禁?(这里不做解答,感兴趣的可以自行了解。我反正是第一次了解这次缩写词汇,毕竟很少遇见。)然后,我就翻阅起博主的文章来。从第一篇的《XX时代的缩影》到《翻墙看民族复兴》,一字一句,强忍不适感,强迫自己看完。既然要做出回应,必须了解它的表达思想。

2024-12-26T13:11:47.png

本不想恶心大家,但为还原事情真相,还是简单摘录了一些。可能读完,大家各有所想,有的会觉得我小题大做,有的会觉得无所吊为,但是一名生长在国旗下,温润在春风里的90后,我想说我就是一名“粉红”!这些说辞,和以前的老公知相比,没有任何的可比性。起码人家还会使用迂回思路,通过信息壁垒来忽悠人。 但是,这都4202年了,家家户户都通网的年代,翻个墙不是啥难事,站在什么制高点就觉得自己具有比别人更好的见底?

国家兴亡,匹夫有责,我就是一名小小的个体,我也会站在底层人民的角度,去看待历史进程中所遇到的最朴实的问题。比如说房贷、车贷、金融贷这些大的,柴米油盐这些小的。举一个例子,我们时常调侃“在国内办事,没点关系,根本不好弄”,但扪心自问一下,别人找我们办事,是不是还看个远近喜恶呢?而且,办事看关系这事儿有没有两面性?归根结底,很多时候我们思考问题,或者看待某个事件, 必须要去具体事件具体分析的。不能以偏概全,更不能颠倒黑白。

我身边一直有一些年龄大的会说,你看人家日本怎么样,你看人家德国怎么样,或者日本东西就是好这些。这群人,他是有历史局限性的,他看到的只有这些东西,所以他得出的结论,只能存在他的想法里。我会讨厌这类说法,但我并不会讨厌这种人,其心也善且大多老实本分。但这个作者,就是真实的坏。年龄不大,阐述的输出的东西,简直就是颠倒黑白。

骄傲

这篇文章,不是为了辩驳博主的,所以他写的东西,我没有一个字去回应,去争论。只是,想表达一下自己所思所想。我算是一个农民工二代,没有太高的眼界见识,也没有太高的高屋建瓴,只有普罗大众的日有所思夜有所梦。有时候,也会幻想自己,如果是一个瑞士人、摩纳哥人、阿拉伯人这样,高福利,假期多,生活优异等。但是回想起来,好像从小到大,哪怕穷苦了些,也有衣服穿,也有米饭吃,也能吃饱穿暖吧。在万万亿基数之下,我也还算活得自在了。不用担心战火、也不用担心人生安全起码。

改革开放四十多年,作为一个从农村到城市,从西南到沿海,从贫穷到发展到发达,我也算是见识过了的。以前小的时候,城里的孩子穿耐克阿迪,我只能穿几十一双的不知名鞋;大学人家用苹果,我只能不知名国产杂牌;到成年了,人家奔驰宝马,我也只能小国产开开。现在呢?国产衣服箱包、国产电子数码、国产新能源....这些东西,可都是普罗大众一点点堆砌起来的,也是被祖国正确领导下,才有的今天。

当下的社会,有问题吗?有啊,大大小小一大堆!包括但不局限于,个体的群体的,亦或者某种现象的。但你不能把这一切归责于国家和政府啊。当面对那么多人口、那么多事情、那么多问题的时候,每一步的举措,都不是简简单单的一句话能决定的了。就好比正规企业或者公司,报个销都要正规走流程不是吗?

说了那么多,消了点起气终于。我难受的不是它的言论,我难受的是博客圈,居然也有明晃晃的这种人。 我是爱国的,但也不会盲目吹,也是会理性睁眼看世界的 ,一些所谓出个国、留过学,吃了点洋餐洋墨水的就觉得高人一等的高谈论阔,还是别来烦扰我了。这篇文章,也许会引起某些人的不舒服,但是我不在乎。爱国,我们就爱的明目张胆一点!

最后,听说该作者是电脑高手,不知道会不会被攻击。不怕,大不了换个域名~

PHP8.4开启opcache扩展加速和网站instant.page预加载脚本

本周对博客进行了许多精简和优化,诸如合并订阅、友人页面,摒弃下拉菜单,修改主题..当然,也有一些新添加的东西,预加载脚本和缓存等。本地测试首页打开耗时应该成功降到了300ms以下,各页面的打开也更加顺滑。

折腾是一种自我实现的过程,不管结果怎样,都是值得的,你越折腾就越精彩。

instant.page

这是一个网站预加载的js脚本,可以提升网站速度。如图,鼠标悬停超过65毫秒,自动加载页面文本信息,但是不加载图片资源。对于用户体验会有提升,具体提升多大,只有自己测试了。部署方式,直接引用js脚本即可。PS.推荐放在footer

<script src="//instant.page/5.2.0" type="module" integrity="sha384-jnZyxPjiipYXnSU0ygqeac2q7CVYMbh84q0uHVRRxEtvFPiQYbXWUorga2aqZJ0z"></script>

国内服务器可以直接本地部署,不推荐CDN部署,会增加请求数消耗资源。

<script src="https://你的存储位置/instantpage.js" type="module"></script>

官网脚本下载

php8.4开启 Opcache

想体验php8.0以上的终极奥妙,你就开启这个,也是一种缓存机制.

[Zend Opcache]
zend_extension="opcache.so" ;
opcache.enable = 1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=100000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
opcache.file_cache=/tmp
opcache.jit_buffer_size=64M
opcache.jit=1205
[Zend Opcache]

测试指南

当然,以上折腾属于做好网站备份的,如果你没有做好准备,那就赶快准备起来吧。

装修难做,周末加个小班,做个展厅出样

现在不管什么行业都非常卷,而且生意不好做。要么落后淘汰,要么升级抢客。这次客户是一个顶墙品牌,依托合作商大角鹿瓷砖3000多平的展厅,局部出样做展厅升级。后期业主要以异业或者联盟活动为主。相较于传统展厅或者展会展厅的局限性,这次设计还是以双结合为主,有区域划分的同时,尽量减少空间壁垒。做好区域规划,剩下的就要细细琢磨了。

未命名方案_00.png

其实装修,不需要那么花里胡哨,这也是目前很多家装设计师在推的理念。墙就以油漆为主,放心刷,油漆的环保性比其它材料都要高很多很多,毕竟国家标准放在那里。吊顶方面,厨卫可以考虑使用蜂窝大板,预算够的话,确实实用美观。其余区域依然是石膏板搭配单双眼皮组合即可。至于定制方面,大家不用去管什么材质,要好用就多层实木柜体和欧松门板就行,投影面积价格基本在1200-1300左右每平方即可拿下。至于设计费、管理费这种,其实都是可免的。真要找设计师设计,就去找专业设计院。

展厅方案.png

重温《哈利波特与魔法石》,想回到2002年的冬天

《哈利波特与魔法石》2002年初在国内上映,那个时候我应该是四年级,学校组织了免费观影活动,这也让这部电影成我了我第一部进入影院观看的电影。

1734680462809.jpg

当时看这部电影还是很震撼的,真的有被”霍格沃茨魔法学校“震撼到。而且当时非常羡慕哈利波特,不仅拥有支持他的小伙伴,还有能骑着扫帚飞的魔法。当然,时隔二十多年,再让我去回忆当时的情境已然不太现实,只能模模糊糊的想起丝毫。当然,这并不重要。重要的是,通过回顾这部电影,又能依稀见到十岁的自己。我不禁想,如果有一个魔法,能让我与以前的我对话该是多么的好,不需要改变什么,就只聊聊天,说说话,就会十分的美妙吧。

2024-12-20T07:43:47.png

重温这部电影,从如今的视角去看主角团,还是挺奇妙的。哈利波特-丹尼尔·雷德克里夫,和我差不多年龄,这么多年来,发展也还可以,2018年的那部《困兽之斗》的惊悚电影还不错;赫敏-艾玛·沃特森,越大越漂亮,真女神,布朗大学的文学学士,2023年又去牛津读创意写作硕士学位去了,她后期的电影,只看过一部《美女与野兽》,观感一般吧,没什么特别的印象了;马尔福-汤姆·费尔顿,金色小背头,小时候特别讨厌这个坏同学,现在去看,真帅!而且,他演过《猩球崛起》,虽然不算出位,但还是很帅的。至于韦斯莱,确实存在感不强,没啥印象了。

2024-12-20T07:47:11.png

暗杠《童话镇plus》

“哈利波特可以骑着扫帚自由自在飞,而我的扫帚却只能用来清理垃圾堆。”

本文图片来源

[1]草莓有草没味://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_5008507543840740065
[2]那些珍贵老照片://weibo.com/2930792450/OmJ5zpNOs
[3]小豆当家://weibo.com/1673854010/ODwBmwmwD
[4]影视大全://www.xabaotu.com/album/haliboteyumofashi1-1-1.html

CSS中添加伪元素,并移除特定a类标签的伪元素的样式

今天,在修改主题的时候,发现自己post-content中的a类元素,使用:after伪元素以后,同时作用于cl-offset且name属性以cl-开头的href属性包含#cl-且onclick属性为Catalogswith()的标签。

.post-content a:after{
        content: '↷';
    font-size: .9rem;
}

这两个代码共同性就是a类元素,我们需要做的事情就是,移除掉不需要:after伪元素的属性。

2024-12-17-15-41-44.png

移除特定a标签的 :after 伪元素的样式,需要使用CSS选择器来精确选中这个a标签,并设置 :after 伪元素的content属性为空。这样,:after伪元素就不会显示任何内容。

以下是CSS代码示例,它会移除所有.post-content下具有类cl-offset和a,并且name属性以cl-开头的a标签的:after伪元素:

.post-content a.cl-offset[name^="cl-"]:after {
    content: '' !important;
}</div>

这里的 ^="cl-" 是一个属性选择器,它会匹配所有name属性值以cl-开头的元素。 content: '' 会移除:after伪元素的内容,!important是一个强制性声明,确保这个规则会覆盖其他可能存在的规则。

把这段CSS代码应该放在CSS样式表中,它将确保所有符合条件的a标签的:after伪元素都不会显示任何内容。

同理如果想要为.post-content类下的所有a标签添加:after伪元素,并设置其内容为↷和字体大小为.9rem,但同时想要移除特定a标签的:after伪元素(即那些href属性包含#cl-且onclick属性为Catalogswith()的标签),可以使用以下CSS代码:

/* 为所有.post-content下的a标签添加:after伪元素 */
.post-content a:after {
    content: '↷';
    font-size: .9rem;
}

/* 移除具有特定href和onclick属性的a标签的:after伪元素 */
.post-content a[href^="#cl-"][onclick="Catalogswith()"]:after {
    content: none;
}

这段CSS代码起了两个作用:

  1. 它为.post-content类下的所有a标签添加了一个:after伪元素,内容为↷,字体大小为.9rem。然后,针对那些href属性以#cl-开头且onclick属性为Catalogswith()的a标签,将:after伪元素的内容设置为none,从而移除了这些特定标签的:after伪元素。
  2. 除了符合特定条件的a标签外,其他所有.post-content下的a标签都会在其后显示一个↷符号。

果然,学习才能使人进步啊,现在不就知道什么a类元素,什么伪元素了吗。不然连怎么问Ai都不知道。

参考资料:

[1]CSDN://blog.csdn.net/libol/article/details/139976586
[2]腾讯云://cloud.tencent.com/developer/article/1407981
[3]简书://www.jianshu.com/p/77f0efab3747
[4]php中文网://www.php.cn/code/894.html
[5]picprose://picprose.net/zh

十年之约第五年,我都收获了些什么

时间,是最无情的东西;当然,也是我们最需要的东西。

2018年的时候,我说我发现了一个网站,名字叫博客志,因为它我建立了水清无鱼。刚开始,主要用作禅修记录的,那个时候写了半年多,一直无人问津。知道后面上了博客志,慢慢有人留言回复了。我便多写了些生活的、折腾博客等相关记录。也就是那时候开始,从Typecho转换到WordPress,然后又从Word Press转到了Z-blog。期间认识了很多朋友,比如临海草原灰常记忆

那个时候的博客圈,没有今天那么热闹,新鲜血液也并不多。有一天,我开始发现了一个[十年之约]项目,然后写下了那句“十年之约,贵在坚持”,并把域名续约了十年,服务器续约了三年。还有一些令人记忆深刻的,像BlogWe、中国博客联盟等。

1734320555961.jpg

以我龟速效率,平均一个月大概会有2篇文章,5年大概有120篇文章。这么多文章,和很多的友链、评论以及其它数据,被淹没在了2023年的某一天,具体哪一天忘记了。因为那段时间,我真的没有关注过一点博客的信息。想想真的有点后悔和遗憾。要不是灰常记忆在微信里面告诉我,可能到今天我都遗忘了。

1734320606381.jpg

五年时间一晃而过,到写下这篇文章应该马上6年了。生活和工作,没有太大的进展。但是博客和它带给我的成长,却是有很多的。从一个一无所知的小白,到今天能自主消化和改进一些东西。当然,也感谢科技的进步,Ai让我们简单了很多。

例如,前不久被我刚下线的SIMTEXT主题,鼓捣了好几个月成型吧,然后发现视觉疲劳了,于是,它消失了。但不管怎么样,它依然算作我的一个重要节点,到今天,我也开源给喜欢的人下载使用。《Typecho主题模板:SimText列表主题,真正的又快又简单》

1734320104584.jpg

以前,访亲寻友习惯的输入网址,现在则习惯了RSS订阅。就像前一段时间大火的FreshRss,目前是我最喜欢使用的,每天都再看,遇到喜欢的或者感兴趣的,都会区作者的博客留下足迹。这也加速了,博客圈的互动交流。这其中,也有其它很优秀的一些项目,像BlogFinder博客圈等等。

最近,也发现了比较火的Foloow,某宝花了3块钱,买了个邀请码,不过目前来说,使用频率不是很高。因为我主要订阅的还是独立博客,像视频、图片等内容,我浏览的很少。

1733966400247.jpg

这五年,也可以说这六年,站在独立博客作者的角度来说,是开心的、满足的。大家都相对比较友好,没有那么多的戾气,也没有其它一些平台的花里胡哨。我们也有更多的可能展现自己,也有更多的方式,留住自己的记忆。

希望,五年之后又五年,也期待收到十年之约项目组的“恭喜您,解锁「十年之约」持续十年的持续运营成就。”

宝塔正式版9.3.0更新和Typecho适配php8.4版本

今天,宝塔面板更新到正式版9.3.0,这意味着,网站可以正式部署php8.4版本了。先说一下,此次宝塔面板的更新,更新的内容还是比较多的,具体更新细节,点击官网查看。

其中,我注意到或者最关心的就两个,一个是支持php8.4,另一个是优化SSL自动续签成功率。当然,如果使用wordpress的朋友们也可以使用新增的 WP Tools工具,专门为wp配备的。同时,也逐渐提升了Docker的使用功能。

为什么说,我想要升级到php8.4呢?

1733796708984.jpg

于我个人而言,或者我这个博客而言,php7.4和php8.4,没有本质区别,但玩博客,不就是硬凑吗?每次更新,我都喜欢冲在前面,尝试一些新的东西,而且我又是个喜欢折腾的人,备份好数据,就是干!

PHP 8.4 对于网站的提升主要体现在性能优化、新特性以及安全性提升三个方面。

1.性能优化:PHP 8.4 引入了 JIT(Just-In-Time)编译器,这意味着一些代码块会被编译成机器码,从而提升执行速度。
2.新特性:PHP 8.4 带来了许多新特性,例如联合类型、nullsafe操作符、属性类型、数据投影等,这些可以帮助开发者写出更加清晰、类型安全的代码。
3.安全性提升:PHP 8.4 在安全性上有所增强,例如引入了新的错误处理机制、对参数进行验证等。

实际升级到php8.4以后,不知道是不是错觉,或者心理作用,感觉就是比php7.4丝滑,这东西就是让人身心愉快。

Typecho支持且兼容php8.4

注意,升级到php8.4前,做好备份工作,因为Ty1.2.1虽然兼容,但也需要做部分适配。且有的主题需要去调试才能完美兼容,所以一定要保护好自己的数据,以免造成不必要的损失。

1733795960873.jpg

Ty升级到php8.4以后,会出现以上错误,不包含(主题和插件)的错误,仅程序本身。以上错误参考如下:

public function getHeader(string $key, ?string $default = null): ?string

我们找到错误的文件对应位置,然后只需要删除getHeader(string $key, ?string $default = null)中的?string即可,当然,如果你的$default后面如果没有null,加上就可以了,有些参数也不是必须的。根据你升级后出现的问题,自行调整即可。

上两张图中,出现的错误都是一样的,所以我们只需要删除$default前面的标记即可,对应的哪一项出错,就改哪一项,其余的别改动就行。

如果是插件和主题的错误,则需要具体去看,我这个主题因为简单,所以未出现报错。插件也只是蓝河兄的RSS插件有一处报错,和上面的情况类似,都很容易处理。

SSL即将来到45天的时代?

缩短SSL证书有效期为90天是谷歌去年3月份提出的,一年半后,苹果公司提出的方案是45天。具体可查看《SSL证书有效期将缩短为45天》一文。

2025年9月15日 至 2026年9月14日,证书有效期缩短为200天
2026年9月15日 至 2027年4月14日,证书有效期缩短为100天
2027年4月15 日起,证书有效期缩短为45天

真假,目前自不可知,不过自动化SSL申请续签部署,应该是必不可少的环节了。

以后只存在两种情况,要么付费整年的证书,(这里给龙笑天下打个广告,他的证书一年只需50元,五年更便宜只用198元,具体的点击去看),要么就是自己部署工具。所以宝塔这次优化的自动续签成功率,对于我们这种小白来说也是一种好消息。

当然你也可以使用脚本工具或者相关工具,进行自动化续签。也可以参考前文我提到的工具《在宝塔面板上,用Docker安装部署Certimate可视化SSl证书管理工具》来部署。

本文参考资料:

[1]我爱水煮鱼://blog.wpjam.com/2024/11/23/php-8-4/
[2]PHP中文网://www.php.net/releases/8.4/zh.php
[3]宝塔面板://www.bt.cn/bbs/thread-19376-1-1.html
[4]KIMI://kimi.moonshot.cn/

用宝塔面板Docker安装部署Certimate可视化SSl证书管理工具

上次讲到阿里云的https加速网关服务,使用之后发现确实很贵,所以让我给停止了。但是我又没时间折腾自动续签的事儿,所以买了张年付128的证书。但是越想越不得劲儿,花了冤枉钱,还是解决不了根本问题。这不,最近偶然发现了一个很好用且部署相当简单的工具,Certimate

68747470733a2f2f692e696d6775722e636f6d2f38776974335a412e6a706567.jpg

Certimate介绍

Certimate 是一个由国人开发的 SSL 证书管理工具,提供可视化界面让我们可以用简单直观的方式来管理 SSL 证书,申请证书、部署证书,以及证书到期续签都是自动完成的,不需要人工接入,大大简化了证书的维护工作。

私有部署:部署简单,作者提供多种方法安装,几分钟内就可以完成;
数据安全:所有数据存储在本机,不保存在第三方服务器,数据安全有保障;
维护方便:简单配置自动申请并且部署证书,到期自动续签,无需人工干预。

部署Certimate

因为我使用的是宝塔面板,所以我就根据Docker安装的方式来部署了。

首先确保宝塔面板已经安装了Docker模块,最新版好像直接上线了。如果没有安装,在软件商店安装也是可以的。

1733382135069.jpg

点击Docker后选择创建容器,接着选择容器编排,在里面点击创建,即可创建Yaml模板,然后在添加Compose模板,里面输入名称certimate,内容里添加

version: "3.0"
services:
  certimate:
    image: registry.cn-shanghai.aliyuncs.com/usual2970/certimate:latest
    container_name: certimate_server
    ports:
      - 8090:8090
    volumes:
      - ./data:/app/pb_data
    restart: unless-stopped

最后,编排模板选择certimate,编排名称填写你要的名字,完成项目创建即可。

使用Certimate

此时,你已经拥有了Certimate,默认的访问端口是8090,所以你只需要在浏览器,输入访问http://你的服务器ip:8090

用户名:admin@certimate.fun  密码:1234567890

1733382748643.jpg

进入Certimate后,就比较简单了,可视化面板,依次添加相关内容。选择相应的服务商。创建以后会有一个授权,需要添加相关的授权内容,阿里云入口RAM访问控制,创建后会获得密匙,然后再Certimate填写即可。

因为我还是用这那张收费的证书,所以暂时还没有添加,不过有备无患,留着备用。

以下是本文参考资料:

[1]Github://github.com/usual2970/certimate?tab=readme-ov-file
[2]张洪HEO://blog.zhheo.com/p/88ab.html
[3]那些免费的砖://www.thosefree.com/certimate
[4]Certimate官网://docs.certimate.me/?from=thosefree.com

写给三十多岁,爱焦虑的自己

“爱自己”的本意,就是爱自己的生命力。

爱自己,不单单是吃好、穿好、住好,而是爱自己生命的力量。爱自己,是你遇到挫折时,也保持着对你生命力的热爱,从不去否定它。就像一粒种子,一旦发芽,它只有一条路可走,就是不断地生长,因为我活着,绝不是用来沮丧的,绝不是用来枯萎的。

这一生,你能做的唯-一件事,就是让你的生命生长、绽放、强壮、绚烂。爱自己,就是爱生如夏花般绚烂的生命力量。

当生活真的过得很艰难的时候,你是怎么熬过来的?

每天认真洗脸,多读书,按时睡,少食多餐。变得温柔大度,继续善良,保持爱心。不在人前矫情,四处诉说以求宽慰而是学会一个人静静面对,自己把道理想通,这样的你,单身也无所谓,你那么虔诚的做,更好的自己一定会遇到最好的。

当你焦虑的时候,我的建议是去散步。人的头脑不擅长长时间停下来思考,如果你的大脑在全速工作,但你的身体没有移动,大脑就会想:“糟糕!我被困住了!”你就会越来越焦虑。当你忧虑的时候就去散步吧。

禅修#04: 道理人人都懂,关键在于自己如何看待

禅修,最重要的就是“静心”和“内观”。沉的下来,受益良多;沉不下来,就是心灵鸡汤。大概2018年左右,因缘际会在香海禅寺偶入禅修时,嗤之以鼻,和鸡汤文没有什么两样。但,当你真的认识,或者消除抵触心去看待 ,会帮助我们成长。

世界上最极致的东西是什么?是心。它可以最快,也可以最慢;可以最大,也可以最小;可以最真,也可以最假;可以最弱,也可以最强;可以最残忍,也可以最慈悲。心是每个人最大的秘密,它决定了命运的走向,所以,调心是世上最好的工作,用心是最难做也最值得做的事情。

情绪

大多数人是情绪的奴隶,喜怒哀乐,不能做主;稍微清明一点的人,大部分时间可以控制和调整自己的情绪;功夫再高一点的人,几乎没有任何情绪,任何时候一片祥和的样子;更高功夫的人,情绪是他们的工具,嬉、笑、怒、骂,不过是游戏人间,是度化人心时行的方便。

梦参老和尚说:「你要经常思惟,现在我们生存的现实生活以及周围环境的世界都是苦的,这个世界本身就是苦的,而且在这里头忍受苦。为什么我们要忍受呢?这叫业不由己,不想忍受也不行啊!在忍受苦的当中,我们还要找各种形式的快乐。一般人认为是快乐的事,但是从佛学的道理上来讲并不快乐,这就是一个苦的因,将来要受苦的果;如果你在这种不快乐之中能产生一种快乐,是什么呢?是你求你的心安、心里的快乐,这就是佛所说的方便道。」

固执

大心量,处处包容别人,什么事都不固执己见,随顺人家的看法,你会过得很愉快。让人家都听你的,这不可能,即使是你的子孙也不会都听你的,要放下对所有的执着。人与人之间看不破、放不下,还谈什么修行?一个家庭如是乃至国与国之间都如是。

妄想

「我们人人都知道妄想不好,要断妄想,但又明知故犯,仍然打妄想,跟习气流转,遇着逆境,还是打无明,甚至好吃懒做、求名贪利、思淫欲等等妄想都打起来了。既明知妄想不好,却又放他不下,是什么理由呢?因为无始劫来,习气薰染浓厚,遂成习惯,如狗子喜欢吃粪相似,你虽给它好饮食,它闻到粪味,仍然要吃粪的,这是习惯成性也。」——虚云老和尚

开启AVIF图片格式,助力typecho图片加载速度更快一步

今日,在张洪大佬《实现全站图片使用avif格式,替代臃肿的webp教程》一文中学习并认识到了AVIF这个图片格式。这个格式相较于传统的jpg、png甚至webp等都具有很大的优势,唯一小遗憾就是有些许浏览器或者手机端不支持。但,无所畏惧。喜欢折腾和动手的我,准备开启博客的avif之旅。

310e8e13-79d0-4ed5-b4e4-9ce01ef7eca4.avif

什么是AVIF?

AVIF是一种基于AV1视频编码的新图像格式,相对于JPEG、WebP等图片格式压缩率更高,并且画面细节更好。

AVIF通过使用更现代的压缩算法,在相同质量的前提下,AVIF文件大小是JPEG文件的35%左右。

AVIF支持高动态范围(HDR)和标准动态范围 (SDR)内容,包括常用的sRGB和BT.2020色彩空间。它支持8、10和12位的颜色深度、胶片颗粒保留、PNG图像的透明度以及GIF格式的动画。

实际情况就是,更小的图片,更快的加载速度,且画质还不怎么受影响。实际请看下图。同样一张图片,avif和webp相差的大小和加载速度不同,所以avif还是有点香的。

1718942511604.avif

当然,avif的缺点就是并不兼容有些浏览器,比如Edge

p668800.avif

Nginx添加规则

在你的nginx服务器http里面添加如下规则后,重启服务器即可。

types {
    image/avif avif;
}

Typecho怎么实现avif

Typecho打开网站根目录,进入Var找到Widget,打开Options.php文件,大约673行,差不多最后面,添加AVIF,例

    /**
     * 允许上传的文件类型
     *
     * @return array
     */
    protected function ___allowedAttachmentTypes(): array
    {
        $attachmentTypesResult = [];

        if (null != $this->attachmentTypes) {
            $attachmentTypes = str_replace(
                ['@image@', '@media@', '@doc@'],
                [
                    'gif,jpg,jpeg,png,avif,tiff,bmp,webp', 'mp3,mp4,mov,wmv,wma,rmvb,rm,avi,flv,ogg,oga,ogv',
                    'txt,doc,docx,xls,xlsx,ppt,pptx,zip,rar,pdf'
                ],
                $this->attachmentTypes
            );

            $attachmentTypesResult = array_unique(array_map('trim', preg_split("/(,|\.)/", $attachmentTypes)));
        }

        return $attachmentTypesResult;
    }
}

阿里云怎么实现avif

阿里云OSS定义图片为avif,后缀?x-oss-process=image/format,avif

我自己的博客不是从官网添加的规则,是直接通过AliOssForTypecho默认自定义样式实现。即不管你上传的是什么照片格式,添加了这个后缀以后,呈现出来的就是avif图片。但你上传的源文件还是原本的图片格式,存在在oss里面。当然我自己的服务器也有备份。

考虑到目前大部分浏览器和手机都兼容AVIF,所以不兼容的方案我没有添加进去。当然,也是因为目前我使用的几个方法都不太成功。如果有会的,留言说一下。阿里云官方的使用picture标签和CSS+JS方式都不太适合我,我想直接通过在Nginx里进行判断,但现在还没有找对方法。

开通HTTPS加速网关,告别SSL证书三个月续签

现在大部分博客都已经开通了HTTPS,也就是我们俗称的“小绿锁”。然而随着几大云服务器厂商的免费证书续期降为三个月,在不付费的情况下,真的很难受。当然,也有SSl自动续签功能,但是使用操作步骤,对于小白而言还是比较繁琐的。最简单的还是要数宝塔面板的续签,后台一键续签就可以了。

9855eab9-e948-4ce2-83cc-aad3e09b1ba0.webp

然而,作为一个爱折腾的主,面对三个月续签,我是不肯能满足的。毕竟自己的动手能力不足以支撑我满足这个需求,所以我就只有开启小氪模式了。因为,阿里云的加速HTTPS网关降价了,而且是大降价。

商品规格调整前网关售卖价调整后网关售卖价
入门版-单域名包月:60元;包年:700元包月:9.9元;包年:109元
基础版-单域名包月:140元;包年:1500元包月:29元;包年:319元
基础版通配符包月:150元;包年:1600元包月:119元;包年:1309元

什么是HTTPS加速网关?

HTTPS加速网关服务部署原理如下图所示,无需配置源站证书,只需在控制台一键接入HTTPS加速网关,即可实现客户端与源站间的通信加密。浓缩成一句话就是:用最少的钱,实现HTTPS和网站加速。

p758061.webp

现阶段开通HTTPS痛点

痛点描述
开通周期长首先需购买一张证书,其次需申请证书,且还需较长的审核周期。如果证书部署在非标准云产品(如ECS、IDC、服务器机房),可能需要更长的部署证书周期。
操作门槛高部署证书需要具备一定的中间件部署能力,例如签发证书后,需要部署到对应的服务器上,因此需要了解Nginx、Tomcat等中间件的证书部署流程。
更新证书运维压力大付费证书有效期为12个月,免费证书有效期仅为3个月,且证书到期后需要重新签发证书,对于非标准的云产品需每年更新一次,运维压力大。

HTTPS加速网关优势

优势描 述
配置难度低一键接入域名即可实现HTTPS加密访问,且支持自动续费,简化后续运维工作。
网站加速提供加速功能,提升网站浏览体验。HTTPS加速网关可将源站资源缓存到阿里云遍布中国内地的加速节点,当终端用户请求访问和获取源站资源时无需回源,可就近获取边缘节点服务器已经缓存的资源,提高资源访问速度,同时分担源站压力.

如何配置HTTPS加速网关

已拥有稳定运行的业务服务器(即源站)和用于HTTPS加速的域名(一般使用子域名)。

这个服务目前是在阿里云推出的,别的平台有没有暂且不清楚。就以阿里云举例:
👉购买HTTPS加速网关服务个人博客选择入门版即可,一个月300GRCQ网关资源计算数足够使用。即使超过也可单独购买资源。
👉关闭原域名的CDN解析或其他起冲突的解析服务,注意:源站转发仅支持80和443端口,不支持已经添加CDN或者WAF等流量转发的域名。
👉HTTPS加速网关会提供CNAME记录,我们只需解析该记录即可。

开启后的实际效果,可以参考本博客。后续会就使用感受和费用发表意见。

网关资源计算数GRCQ按照网站访问次数和下行流量的两个维度计算,1个小时最少消耗2个GRCQ。具体规则如下:

  • 网站请求次数:1 Grcq/150次,即在1个小时内,0次<网站请求数≤150次,消耗一个GRCQ。
  • 下行流量:1 Grcq/30 MB,即在1个小时内,0 MB<下行流量≤30 MB,消耗一个GRCQ。
HTTPS加速网关实例周期网关资源计算数GRCQ(调整前)网关资源计算数GRCQ(调整后)
1个月700300
3个月2,100900
6个月4,2001,800
1年10,0004,000
2年20,0008,000
3年30,00012,000

网关资源计算数GRCQ独立购买费用,5000次/60元/年,10000次/90元/年。

以上讯息,均已踩坑,如果你也想试试,可以观看更为具体的官方说明。《HTTPS加速网关》

附:

1. 此项目使用不划算,每小时至少消耗2GRCQ,每天至少48GRCQ,每30天1440GRCQ.也就是说付费9.9元包含的300GRCQ根本就是杯水车薪。每年至少17520GRCQ,而5000次/60元/年,如果使用入门版118.8元/年,仅含3600GRCQ,也就是说至少需要17520GRCQ。

2. 每年付费一共需要118.8元,达到至少17520GRCQ,还需要购买13920。至少买3个5000次GRCQ,即180元。合计每年至少成本298.8元。这个成本是至少,1个小时内,0次<网站请求数≤150次和0 MB<下行流量≤30 MB的低保收费。如果我们博客访问量或者折腾的足够频繁,这个费用真心大。所以不建议大家使用。(其它组合费用也许有更低或者我没发现,不过它卖的不好,不是没道理。上不封顶了)

3. SSL证书+CDN,这还是目前最推荐也最合算的方式。如果不在乎那一天一包的烟钱,其实宝塔的锐安信(sslTrus)和PositiveSSL值得推荐,性价比可以,每年只需要128.66元。

4. 未完待续....

Typecho主题模板:SimText列表主题,真正的又快又简单

SimText是一款非常简洁的文章列表主题,适合资讯列表类类目。

主题源自 TypechoWiKi,作者是站主本人。

这款主题对于SEO还是比较友好的,且结构简单,在默认主题的基础上创作的,视觉效果也比较ok。作者是开放这款主题的版权的,但不提供下载。所以本着喜欢且开源的原则,我进行了二次创作。

1718770709509.jpg
▲SimText列表主题

Lighthouse检测比较不错,手机端和电脑端都几乎是满分。主题首页请求只有6个,CSS样式大约14KB,还可以优化。自己配合做了动静分离后,首页加载大概只需要几毫秒。全主题除了使用代码高亮的js以外再无其它。

主题预览地址:https://bosir.cn/simtext

GitHub下载地址:https://github.com/cnbosir/simtxt

版本环境升级到PHP8.3.7引发主题的一些错误以及解决方案

PHP 8.3通过引入Just-in-Time(JIT)编译器和新语法特性如new static()和match表达式,显著提升了执行速度和代码的简洁性,为开发高性能、高并发的Web应用程序带来了重大意义。

我上一个主题一直使用的是PHP8.3,但更换主题后因为适配问题,所以还是沿用的php7.4。因为PHP8.3对于非专业作业人员来讲,其提升的性能和好处肉眼不可见,但作为一个喜欢折腾的我来说,有更好的,自然想升升级。

不过,主题带来的不适配问题,也是一个大麻烦,开启后会出现如下错误:

1718592423642.jpg

都是引用文件里面的参数引起的错误,都是一些调用代码的变量问题。如图要么是评论变量,要么是归类变量,也不知道对不对,反正就是那么个意思。最开始,我想出的解决方案是整个主题去适配PHP8.3版本,那么这就需要主题添加php版本检查代码,搜了一下百度,大概是引用

<?php
if (version_compare(PHP_VERSION, '8.3', '>=')) {
    // PHP版本大于或等于8.3的代码
} else {
    // 旧版本的PHP代码
}

但有一个难题,如果在function.php里面添加了这个检查代码,就必须要在合适的地方进行调用,想想有点繁琐。那么有没有很简单的方法解决呢?

还真有,通过AI的帮助,可以在错误的代码处添加错误处理的方法。
例如 $modified = $random->modified; 这个错误就可以使用:

if (isset($random) && isset($random->modified)) {
    $modified = $random->modified;
} else {
    // 处理错误或提供默认值
    $modified = null; // 或者一个合理的默认值
}

那么一一排查,首页 $comment = spam_protection_pre($comment, $post, $result); 出现的错误即可使用

    if (isset($comment, $post, $result)) {
    $comment = spam_protection_pre($comment, $post, $result);
} else {
    // 处理错误情况,例如记录错误或设置默认值
}

果然,添加后完美解决。本来先去问了作者的,但是作者近期比较忙,也没有短时间的适配计划,所以自己动手丰衣足食吧。这种方法应该可以适配别的因为PHP版本升级带来的适配问题。

谈装修应该如何从零开始,应该注意些什么事项

作为一个室内装修从业人员,我一直认为装修是一场理性和感性的双向奔赴。说理性,要看装修预算;说感性,是因为家必不可辜负。所以,理性和感性的互相让步,互相包容,互相理解,才会打造出一个我们钟爱的温暖的窝。

一、准备工作

装修之前,我们有两项工作是必须要处理的。即:

1.风格确定

装修最怕的就是盲目,不知道自己喜欢什么样的风格,或者选择苦难症,这也喜欢那也喜欢。风格确定不下来,你的成本预算一定是差异很大的。比如目前的现代简约风和奶油风侘寂风,价格差异就很大。还有就是,如果自己风格待定,去寻求设计师的帮助,也会给你后面的成本预算带来很大的风险。总之,装修之前,无论怎样,房屋的整体风格框架,我们必须做到心里有数。

2.成本预算

这里说的成本预算不是我们以为的包含电器/软装等全部成本,而是大概的 硬装成本 。只要你知道自己能付出的硬装成本大概有多少,后面你会减少被坑的风险。什么是硬装成本?即水电/瓷砖/油漆/门窗等基础硬装基础成本。这个成本预算其实自己很容易做,只需要百度即可知道大概价格。地域差价不会很高。后续我会单独出一篇文章写如何做装修成本预算。

二、前期沟通

当我们知道了自己的装修风格和装修预算,就需要去做前期沟通了,不是很必要去询问太多装修过的朋友和亲戚。因为你永远不知道,装修过程中到底是业主的背锅还是装修公司在背锅。因为装修是一个漫长的过程,细节很碎,有可能双方都有问题导致装修不顺,所以你得到的答案会千奇百怪。

1.多跑几家装修公司

不管你是土豪,还是平民百姓,不管你同学朋友亲戚是不是做装修的,都恳请大家多询问几家装修公司。问什么?举个简单例子,你去问装修公司,我家100个平方,现代简约风格,半包价格大概是多少?全包价格大概是多少?那我告诉你,这么去问,你问不出任何东西来。问什么?当然是问材料,问装修周期,问有啥优惠活动,问施工方法这些,就是别问价格。问完以后,你直接说,自己的硬装预算,大概是多少,让他们上门测量和出设计图报价,你得到的信息,一定比你直接问价格要好得多,效率也要高得多。所以,这里也挖一个坑,为什么说要告诉装修公司硬装预算。因为这里面又涉及到了半包问题,设计到了瓷砖/门窗等价格问题。只要你自己不确定,装修公司怎么可能给到你一个大概的价格。

2.多听听设计师的意见

设计师水平是有高低之分的,但大部分设计师还是希望自己的作品能够被认可的。所以当你把你的需求告诉设计师,可以是你提供的一些图片...一定要听听他的分析。听完以后,你就知道这个设计师水平行还是不行了。如果没有自己见解或者只会妥协的设计师,在后期装修过程中,也不会为你争取太多利益。就比如,你很喜欢一个设计,但是设计师告诉你,根据你家的户型来看,也许不合适,也许不搭配,也许不适用,咱们听听劝,不要盲目追求喜欢就一定要,因为它真的未必适合。所以装修就是在谈恋爱啊,适合别人,不一定适合你啊。设计师拿到你的户型和需求预算,一定会有一个大框架在里面的,第一遍出稿后,尽量去看细节。因为细节决定你以后的居住舒适程度。比如是不是通铺大砖,是不是做开放式布局等。

3.少刷点抖音小红书

无论签约前还是签约后,少刷这两个平台的装修类作品。什么5万全包,什么终生质保,什么送家具电器....还有就是分享各类装修设计的。我承认,有一部分确实值得借鉴,但这些一定是你在自己构想自己家装修的时候,就要去看的,而不是等到即将签约或者已经签约了去看,那只会影响你对自己前期的判断,也会影响装修公司的施工进程和难度。

三、装修公司的选择

这个真没有太多的建议,都说装修市场水深,十家就有九家坑。但实际情况是,只要我们不贪图便宜,不真的因为怕麻烦全部放手不管,其实最后落地都没有很大的问题。因为装修,没有百分百好评,只有百分之八九十到位。因为装修公司干的活,其实就是各工种之间的衔接沟通。本质上,它就是材料商与工人之间的桥梁。但工人有技术差异,材料有好坏,这就决定了装修公司不可能保证一定实现你心目中完美的家,只能说基本符合。我这不是在给装修公司或者行业找补,实际情况就是,全程装修一定会有问题,百分百会遇到各类问题,有大有小而已。

我们作为业主,遇到这些情况,一定要先清楚自己当初签署的合同内容,只要符合,可以适当妥协,如果不符合,停工整改。吵架生气是最没用的,因为工人不会管你这些,装修公司更不会管,合同有进度款,你不施工工人也有别的活,于它而言,无非就是再和你耗时间而已。所以为啥我们一定要在签署合同的时候准确认知装修周期。签好三个月完工,就一定要督促好装修公司。该理性延迟就延迟,是它的问题,就一定要学会根据合同办事。

装修公司,不要问它师傅是不是自己的,你管这干嘛?百分之九十九的公司,都没有自己的公司,百分之九十九的公司只拥有施工小队长,施工小队长找的师傅,明白吗?养师傅的公司,要么在亏本,要么正在准备亏本。你只要确保师傅是认真负责的师傅,没事找师傅聊个天,给根烟,活干的比你多付几千几万都要好。因为装修落地,靠的是施工师傅

四、装修的过程

装修过程,我们一定一定一定要做好每个阶段的验收,不验收不要给进度款,也不要让它进行下一步施工。因为痛苦的开始,往往就是不管不顾,让装修公司闷头苦干,最后收尾你发现基础工作哪儿哪儿都是问题。最重要的就是水电工种。因为后期问题百分之七八十来自于这个工种。因为这个工种,必须具备一定的专业水平,而目前很多都是自学或者师傅带个一两年就开整的。没有强制规定和专业培训过的师傅,大家尽量少用。水电师傅最好是就职过大的装修公司的最好。

还有就是,也不要盲目信任设计师,装修过程中,最值得信赖的一定是施工师傅。在施工过程中,如果聊天你会得到更加专业可靠的建议和意见,也会帮你看装修公司用的材料到底好还是不好,甚至因为你的热情或者用心,比别人更用心的帮助你装好你的房子。说个不成熟也是事实的话,无论业主也好还是装修公司老板也好,装修师傅永远是最牛逼的,你可以不尊重设计师小队长公司老板,但别不尊重装修师傅。

五、验收

验收没什么好说的,找细节就行了。这个验收标准,还得依据实际装修情况和条件来看,有的时候适当的放松我们的标准其实是必要的。但与一个要特比注意,验收过程中,最好做好拍照和视频等资料保存。因为它涉及到你后面的售后问题,比如定制柜我们是自己订的,但和墙壁或者顶面、地面存在缝隙,到底是找装修公司还是定制柜?

装修是一项漫长而又艰难的战争,也是一场对美好愿望的憧憬和奔赴。这一篇文章,其实写的比较粗放,本来是想写的细节一点,但是发现如果展开的话,一篇文章根本写不完。所以后续会把里面的一些单项拉出来细写。

加速访问GitHub操作指南

Github,是一个托管平台。无论是专业的技术人员,还是我这种新手小白,多多少少会接触到。特别是很多主题、插件等,都会被作者存放在里面。

国内访问Github会出现经常性的无法连接,甚至无法下载文件。最常规的办法,自然是挂梯子,使用科学上网工具。然而,很多人其实不会挂梯子,简单好用的又要收费。那么今天,Bosir收集整理了一些别的方法,提供给大家参考使用。

工具类

原名Steam++,主要服务于游戏加速的,不过现在是集成了各类加速,点击Github一键加速后,访问Github还是比较丝滑的。官网有下载地址,这里我推荐两个地方下载:百度云盘Github 下载,其它也可以去官网看分流下载地址。

20240613114047.webp

SwitchHosts是一个管理、快速切换Hosts小工具,开源软件,一键切换Hosts配置,非常实用,高效。当计算机需要访问某个域名时,它首先会查询本地的hosts文件,看是否有该域名对应的IP地址。如果有,计算机会直接使用hosts文件中所指定的IP地址进行连接,而不会再去DNS服务器上查询IP地址,从而提高了访问速度。下载地址:百度网盘 Github

镜像加速类

只需要把 github.com 替换为 github.hscsec.cn 就可以解决访问问题。

另外附上一份经常使用且实用的工具网址,若需自取。

名称描述地址
PicProse文章封面在线自制https://www.picprose.net/zh?from=pknote.top
HostsGithub Hosts 自动更新https://hosts.gitcdn.top/hosts.txt
TinyPng在线图片压缩https://tinypng.com/?from=pknote.top
Convertio在线图片转换https://convertio.co/zh/
CloudConvert在线字体转换https://cloudconvert.com/ttf-to-woff2
在线排版工具文章美化排版https://paiban.gaodun.com/
日出资源网科学上网工具介绍https://www.rnmcnm.com/archives/249
Typecho插件列表Typecho博客插件汇总https://typecho-fans.github.io/plugins/TESTORE.html
喜欢书签内容很丰富的导航网站https://www.likebookmark.com/#category-19

后续有缘添加吧,反正日常使用挺多的。有推荐的,也可以评论区分享一下,嘿嘿~

文章参考
胖氪笔记 | 知乎dshboom

Typecho页面速度优化,全站实行动静分离

Typecho已经很轻量了,主题也很简约了,但我还是嫌弃不够好,于是动手开始折腾。

减去首页请求数

目前只保留了必要的CSS文件和图标文件,首页请求数在60+,并且大部分是鸿蒙字体的CSS加载请求。减去了jquery工具库的请求,虽然主题描述pjax无刷新和图片Lazyload能为页面带来加载速度和减少网络拥堵,但为了首页渲染更快,我还是减去了。

CSS、js、图片等文件使用CDN

所谓的动静分离,其实就是使用CDN对网站的静态资源加速,所以不常改动的资源,我直接扔进了阿里云OSS里面。但是修改前,在主题里面的header文件里,需要更改相关地址,以style.min.css为例,原本地调用地址是

<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/style.min.css'); ?>">

我们需要把本地的调用地址修改成CDN地址,即

<link rel="stylesheet" href="//cdn.bosir.cn/rizhi/css/style.min.css">

以此类推,所有你不经常使用的静态文件,都可以打包到CDN里面去。

主题优化

因为主题足够简单,所以我去除了很多花里胡哨的功能,也减少了首页需要用到的图片,甚至头像调用我也去除了。本来是想改为调用首字母为头像的,奈何功夫不够深,还是放弃了。

整体还是以灰白为主,调用色使用了Typecho的深蓝,感觉整体还是比较清爽的。

网站测速

服务器配置:阿里云ECS(99元活动主机)+阿里云全站加速+阿里云OSS

Chinz站长工具测速

chinaz20240608114215.png

Boce工具测速

bocecom20240608114102.png

这速度,依托Typecho的轻量,和阿里云服务器的各种加速,还是挺能打的。本地基本上秒开,没有以前那种首页渲染白屏,和加载时间的耗长。

六月小记,祝福莘莘学子,高考顺利,金榜题名!

6月,是青春的季节,也是一个开始火热的季节。记录一下近期日常,回味一下,往昔岁月。

高考记忆

我是2011年参加的高考,文科生,记得那时候在本校考的,考完自我感觉良好,结果嘛....不知道是不是学渣的共同点,反正除了数学,我都可以写满,写完以后还觉得自己应该对的挺多,哈哈。

我记得高中三年,第一年是比较迷迷糊糊的,特别是物理和化学,第一次月考加起来才考了55分。那个时候没有人引导,觉得自己不适合学理科,所以后面都是奔着文科去了。其实,当时大部分人这两科加起来都不高。

到了第二年,就文理分科了,去了文科班。文科班女生居多,且能吃苦,肯下功夫去记,所以发现自己好像又不适合文科。又是迷迷糊糊一整年。

到了高三,沉迷于MP4看小说无法自拔,有迷迷糊糊混着走,所以最后混了个五百出头点的分数。如果是理科,可以去好学校,但是文科,勉强二本线。

所以,现在琢磨出味儿来了,有时候选择很重要,选对了也许事半功倍;但如果真的选错了,也别怂,正视前方,勇往直前也是很好的。

换主题

博客重生了以后,一直魔改“Note”主题,也改到自己比较喜欢的样子。但随着文本化/极简化的流行,我觉着主题有点“重”了,索性又花时间,改造了许久之前买的RIZHI主题,就是奔着轻量化/简单化的路子走,连头像都被我删了...插件也只保留了两个比较实用的,一个是字体优化插件和跳转插件。

极简生活,也是我现在比较追求的。比如手机,我删掉了什么头条/抖音这些,就留了写日常使用的。感觉软件越多,越离不开手机。因为不是手机好玩,是软件真好玩。

KIMI.AI

最近发现了一个很好用的免费AI工具,名字叫KIMI.AI

我在需求输出Typecho插件,输出居然有好多带链接的插件地址。这不比自己一个个百度香嘛。而且输入关键字和需求,它可以给你完美输出一篇自己都写不出来的好文章...你说这以后,SEO伪原创还咋活。人人都是写文章高手,人人都是原创大师。

管不得,我说有好多独立博客下面都新出来了一个不是Ai的图标...

花再 EVO Air

作为一个轻度耳机使用者,200块以内,花在这款耳机真的还是值得购买的。日常价158,但是加上各种优惠补贴,现在只需要一百三十多就可以购入了,个人感觉音质和质感都不错。

而且耳机仓和电量,对我这边不喜欢充电的人来说比较友好,基本上三五天充一次,足够使用了。喜欢的朋友或者预算不足的可以去搜一下看看...

重温林正英系列电影

九叔的电影,就那几部好看,比如《僵尸先生》/《一眉道人》/《僵尸家族》等,但就这几步电影,看了无数次,都觉得会有点好笑又好吓,明明知道剧情,但是又看不腻...

港片中,这样的电影很多,比如成龙系列/周星驰系列...越看越想看,看了一遍又一遍...

禅修#03: 人生最有价值的,是自己的生命与理想

吾日三省吾身,为人谋而不忠乎?与朋友交而不信乎?传不习乎?

避免患得患失的危害,少不了一颗平常心,才能做到不被干扰。能够做到以下这三点,自然能保持良好的心境,收获积极的情绪。

别把得失放在心上,学会知足。

每个人都会与他人比较,有些人在比较之后心理失衡,产生妒忌心理,陷入患得患失的不良情绪中,扰乱了正常的生活。看淡得失,努力做好自己,自然会发挥正常能力和水平。

做真实的自己。

只要能够做真实的自己,走自己的路,就不会为患得患失所困扰。人生的忧愁一直存在,我们不能因为患得失再给自己平添更多的烦恼。走自己的路,看淡外界的评价,更能多一分坦然。

看轻名与利。

人生短暂,名与利就像虚幻的梦境,有时候并不可靠。许多人为了一时的名利放弃内心的真实意愿,到头来得不偿失只留下深深的遗憾。请牢记,人生最有价值的不是名和利,而是自己生命与理想。遇事优柔寡断,无法掌控自己的情绪,就会变得郁郁寡欢。清楚自己需要什么,想得到什么,应该放弃什么,而后努力行动,就容易有所收获。

❌