MoreRSS

site iconEdzbe | 耳朵修改

以期刊的形式分享歌特、厄运、朋克、流行、后摇、重金属等小众风格音乐的电台博客。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Edzbe | 耳朵的 RSS 预览

立冬虽已过,仍要小心蛇出没。

2025-11-11 07:50:14

晚饭时分,窗外突然传来一阵急促的防空警报响声,一脸疑惑,常识里,厦门固定的防空警报试鸣时间是5月10日,为了铭记1938年5月10日厦门沦陷的历史而设立。

所以这不太对劲,赶紧凑到窗前探头观望远处海峡的天空,当下第一反应是,难道是远处海峡上空有敌机入侵或导弹来袭?

认真判断下警报声,是地震警报音,循着声音,才探到楼下高中的同学们有序撤离到操场上,呃,应该是学校的地震撤离演练吧!

虚惊一场,不过趁这个时候,给娃儿们科普一下各类警报音,也是一个好机会。

在给娃儿看抖音各类警报音的时候,突然接到丈母娘打来的微信语音通话,接起来,她很慌张的说,小区电动车停车棚的后门台阶有眼镜蛇。

我第一时间也有些慌,赶紧问下丈母娘有没有被咬到,得到否定回答后,才松一口气,让丈母娘迅速离开,物业群里通知工作人员尽快处理。

舟山眼镜蛇,听闻小区里最近已经捕获了两条,这是第三条,我本身是不太怕蛇的,小时候头铁,徒手抓蛇是基操。不过现在,呃,怕死,所以我不会再像小时候那么头铁。

物业主任效率还不能,没一会就抓到蛇了,他在群里面说打死了,呃,我好心给他圆了下说辞,他愣是没听懂我的意思。

舟山眼镜蛇,已被列入中国国家林业局2023年6月30日发布的《国家保护的有益的或者有重要经济、科学研究价值的陆生野生动物名录》;列入《世界自然保护联盟濒危物种红色名录》——易危(VU);列入《中国生物多样性红色名录》——易危(VU);列入《濒危野生动植物种国际贸易公约》附录Ⅱ。

所以……

丈母娘回到家中,惊魂未定,她说她差点踩到了,在小区后台台阶上准备扫人脸开门的时候,听到扑哧扑哧的声音,才低头一看,吓破了魂。一只流浪猫正和眼镜蛇对峙,所以眼镜蛇才立起来攻击状态,发出扑哧扑哧的声音。

群里人说撒雄黄,其实应该意义不大,小区里有定期撒雄黄粉,作用有限。

最有效的方式可能就是放养几条菜花大王蛇在附近,因为它会把其他毒蛇都吞掉,不然就是保持小区周边有流浪猫,流浪猫发现异物会主动挑逗,便于发现警示。

这都入冬了,南方的天气还是相当变态的三十几度,可能是因为台风凤凰的影响,副热带低压气旋笼罩着,白天闷热,晚上大风,一点都没有冬天的影子。

越是冬天,还能遇见的蛇类,绝大部分是越凶恶的蛇种,这是老人家传下来的口传知识,有没有依据我没搞过调研,所以我也不知道对不对,但是老人言应该还是有所依据的。

这里补一个蛇类应急的处理方式,遇到蛇类,不要去碰,不要太自信自己可以,还有对蛇类的认知判断是什么蛇,然后就准备上手,那是蠢,之前就有刷到过一群户外爱好者,抓了一只小五步蛇在手里把玩,还让驴友们都摸一下,智障至极。

最好的方式就是尽快远离,如果不幸被蛇类咬伤,尽快拿出手机拍下蛇类的照片,毕竟自己死在谁手上,还是要知道的,不然来世报仇都不知道找谁。

开玩笑的,其实就是便于医院判断是什么蛇类咬伤,要用什么血清,神经毒素还是混合毒素,好在第一时间确定。

如果不幸被蛇咬伤,可以搜索微信小程序【赛伦100】,里面可以查看到离你最近的支持血清治疗的医院。

什么玩意儿?| 网站新增暗夜模式,AI搓出来的代码分享

2025-10-28 05:02:49

东西坏了,靠我修,其实我也很不喜欢修东西,只是我还不想扔了它,所以我坚持坏了就修,这就显得我很主动,东西就觉得我离不开它了,它就可以一直坏一直坏,然后我一直修一直修。有没有一种可能?有一天,我不想修了呢?或者它不配了呢?我不要它了,那它是个什么玩意儿?

— 源于2025-10-09更新的一段内容。

那天我挺憋屈的,缘由说来也很搞笑,鸡毛蒜皮的一丁点小事,就这样燃起来的家庭纷争,我自身也是很诧异,为什么就这么点小事我压不住自己的怒火了,可能因为情绪总有一个临界点,我一直是忍让型的追求家和万事兴的态度,但是当下,有一个认知突然占据了我的思想,凭什么赚钱养家的是我,忍气吞声的还是我,所以我就炸了。

我本不想吵架,因为吵赢了只是把矛盾推向更高的地方,无法调和。所以大晚上的我就到操场上快走慢跑了8公里发泄自己的情绪,跑着跑着,越跑越不对劲,情绪更沮丧了,累瘫了坐在十字路口的小石墩上看着红绿灯变换读秒,挺落寞的,也挺心疼自己。

末了,我跟自己说:算了,都是自己惯的,能过就过,不能过就算了,这次我绝不先认怂。

闹矛盾之前,有听她念叨说 iPhone 17 Pro Max 京东本地都没货,所以我记在心里了,贝勒爷的同学家长有位是卖apple周边设备的,所以就跟他讲有货跟我说一声,找他拿一台。

闹矛盾之后,卖手机的说是手机有货了,溢价450元,问我要什么颜色,这都吵架冷战了,我也不好认怂去问她喜欢什么颜色啊,本来想问的,但是,呃,先开口不就输了吗?好,我不问。

不知道她喜欢什么颜色,就拿橙色和银色两台512GB回家,丢在桌子上。这次我对自己大方起来了,以往都是给她追新款,然后我自己随意将就,两台手机13和14用了好多年了,我也没舍得给自己换。心想让她先挑,剩下的我自己用,我也要开始自己享受消费了,这种心理有点变态,呃,为啥我赚钱给她优质生活,然后我自己对自己这么抠,然后她还可以这么高高在上的理所应当的不照顾我的感受。

手机在餐边柜桌子上放了两天,她也没动,我也没动,其实她动了,就是没拆封,因为装在袋子里的叠放顺序变了,肯定是我不在家的时候,自己拿起来纠结了半天,到底拆不拆呢,拆了不就认输了吗?

第三天早上,我还在睡觉,她到房间来,叫醒我,要我给她贴贴膜,拿着橙色和银色比划了半天,纠结要选什么颜色,我说你随便,你选好一台,另一台给我留着,然后我继续睡觉,十一点多起床后,她说要不她拿橙色吧,好的,那我就用修炼了十几年的贴膜技术完美的给她贴好了,但是这时候我还是端着呢,我话不多说,贴完橙色贴银色,贴好后,她拿走银色对比了一下,说银色比较商务,还是你拿吧。

一切好像从未发生过,呃,吵架,呃,根本没有发生过。晚上回房的时候,主动贴贴了,假装无意的翻个身靠着我,在试探我是不是不生气了,其实我早不生气了,真没骨气,唉。我内心其实很清楚,她的性格都是这些年我给她娇惯出来的,我当面指责她恃宠而骄,她并不否认。

但是日子总要过下去的吧,其实她还不错,就是这个家传的性格,有些太蛮横不讲理,事事都要顺遂她的心意,逆反她就是跟她势不两立。但是也相对收敛了很多,可能她也采集到我不忍了的想法,所以不敢再危险边缘来回试探蹦跶了。

果然,修东西,我还是一如既往的专业。


叨叨完,开始下一个主题,关于网站新增暗夜模式。

之前有博友评论说网站没有暗夜模式,可能体验感不佳吧,我现在对于修改网站主题有相当大的心理阴影,因为我的主题都是仿的,看到这个好看我就扒了,然后套进去自己的主题里,导致主题代码垒得跟屎山一样,一个主题里有七八个CSS样式文件,和一大堆可能无用可能有用的js文件,我主张,能用就行。但是这就给修改增加了很大的难度,有时候改一点点小东西,完犊子,前端垮了,垮在哪里,我也不知道,我再找找,就很难。

前几天逛 Jeffer.Z 的新作站点 FindBlog 觉得他的暗夜模式配色挺好看的,嗯,蠢蠢欲动的参照他站点的配色开始折腾了,他说站点黑夜模式是一个第三方的js库,直接调用就行。/npm/[email protected]/darkreader.js

听不懂,一点都听不懂,想到用插件来实现,因为我主题魔改的东西太多,所以导致插件装上去后,各种惨不忍睹的前端画面出现了,算了,我用我最简单暴力的方式来折腾吧。

我的想法是这样,我创建两个不同的配色方案样式文件,一个style-dark.css,一个style-light.css,然后通过js判断来识别加载哪一个文件,按道理说这个应该就可以满足我的需求,我打开了Gemini对接的聊天框,https://chat.erduo.tech,搭建来自己用的,因为对比之下,元宝的Deepseek和混元产出的代码内容,总是有各种问题出现,当然,可能是我站着尿尿的姿势不对,也可能是对准的方向不对,总之,我还是用的Gemini 2.5 Flash模型解决。

最早生成的插件php代码如下:

<?php
/**
 * Plugin Name: 日夜模式切换器
 * Plugin URI: https://www.edzbe.com
 * Description: 为您的WordPress站点添加日夜模式切换功能,默认根据当地时间判断,并支持手动切换。
 * Version: 1.0.1
 * Author: 耳朵的主人
 * Author URI: https://www.edzbe.com
 * License: GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain: daynight-switcher
 * Domain Path: /languages
 */

// 阻止直接访问文件,增强安全性
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 注册并加载日夜模式样式和脚本
 */

function dns_enqueue_styles_scripts() {
    // 获取主题目录URI(确保CSS文件位于主题的/css/子目录)
    $theme_css_dir_uri = get_template_directory_uri() . '/css/';

    // 注册白天模式样式(WordPress会自动生成ID:daynight-switcher-light-style-css)
    wp_enqueue_style(
        'daynight-switcher-light-style',
        $theme_css_dir_uri . 'style-light.css',
        array(),
        '1.0.0'
    );

    // 注册暗夜模式样式(WordPress会自动生成ID:daynight-switcher-dark-style-css)
    wp_enqueue_style(
        'daynight-switcher-dark-style',
        $theme_css_dir_uri . 'style-dark.css',
        array(),
        '1.0.0'
    );

    // 注册切换脚本(在页脚加载,确保DOM就绪)
    wp_enqueue_script(
        'daynight-switcher-script',
        plugins_url( 'js/daynight-switcher.js', __FILE__ ),
        array(),
        '1.0.0',
        true
    );

    // 将PHP数据传递给JS(如样式表ID、按钮ID)
    wp_localize_script(
        'daynight-switcher-script',
        'dns_data',
        array(
            'lightStyleId' => 'daynight-switcher-light-style-css',
            'darkStyleId' => 'daynight-switcher-dark-style-css',
            'buttonId'    => 'daynight-toggle',
      //     'textLight'   => esc_html__( '切换到暗夜模式', 'daynight-switcher' ),
      //        'textDark'    => esc_html__( '切换到白天模式', 'daynight-switcher' ),
        )
    );
}
add_action( 'wp_enqueue_scripts', 'dns_enqueue_styles_scripts' );

/**
 * 在页面<body>开头添加切换按钮(兼容WP5.2+)
 */

function dns_add_toggle_button() {
    if ( is_admin() ) return; // 排除后台
    ?>
    <button id="daynight-toggle" class="daynight-toggle-button" aria-label="<?php esc_attr_e( '切换日夜模式', 'daynight-switcher' ); ?>">
        <?php esc_html_e( '加载中...', 'daynight-switcher' ); ?>
    </button>
    <?php
}
add_action( 'wp_body_open', 'dns_add_toggle_button' );

/**
 * 关键修复:提前在页面头部禁用非必要样式表,避免初始闪烁
 * 逻辑:根据本地存储或系统时间,立即禁用不需要的样式表
 */

function dns_early_disable_unnecessary_styles() {
    ?>
    <script>
        (function() {
            // 1. 获取用户偏好或系统默认模式
            const savedMode = localStorage.getItem('theme-mode');
            let initialMode;
           
            if (savedMode && (savedMode === 'light' || savedMode === 'dark')) {
                initialMode = savedMode;
            } else {
                const hour = new Date().getHours();
                initialMode = (hour >= 6 && hour < 18) ? 'light' : 'dark'; // 6-18点白天
            }

            // 2. 禁用不需要的样式表(避免页面初始渲染错误)
            const lightStyle = document.getElementById('<?php echo esc_js('daynight-switcher-light-style-css'); ?>');
            const darkStyle = document.getElementById('<?php echo esc_js('daynight-switcher-dark-style-css'); ?>');
           
            if (lightStyle && darkStyle) {
                if (initialMode === 'light') {
                    darkStyle.disabled = true; // 禁用暗夜样式
                } else {
                    lightStyle.disabled = true; // 禁用白天样式
                }
            }
        })();
    </script>
    <?php
}
// 在<head>标签内优先执行(优先级1,确保最早运行)
add_action( 'wp_head', 'dns_early_disable_unnecessary_styles', 1 );
</head></body>

Js源码如下:

document.addEventListener('DOMContentLoaded', function() {
    // 检查本地化数据是否正常
    if (typeof dns_data === 'undefined') {
        console.error('日夜模式切换器:未获取到本地化数据,请检查PHP的wp_localize_script调用!');
        return;
    }

    // 解构本地化数据
    const { lightStyleId, darkStyleId, buttonId, textLight, textDark } = dns_data;

    // 获取DOM元素
    const lightStyle = document.getElementById(lightStyleId);
    const darkStyle = document.getElementById(darkStyleId);
    const toggleButton = document.getElementById(buttonId);

    // 元素存在性检查
    if (!lightStyle || !darkStyle || !toggleButton) {
        console.error('日夜模式切换器:未找到核心元素,请检查样式表/按钮ID是否正确!');
        return;
    }

    console.log('日夜模式切换器:核心元素加载完成!');

    /**
     * 设置主题模式(更新样式、按钮文本、body类)
     * @param {string} mode - 'light'或'dark'
     * @param {boolean} save - 是否保存到localStorage
     */

    function setMode(mode, save = true) {
        // 更新样式表状态
        if (mode === 'light') {
            lightStyle.disabled = false;
            darkStyle.disabled = true;
            toggleButton.textContent = textLight;
            toggleButton.setAttribute('aria-pressed', 'false');
        } else {
            lightStyle.disabled = true;
            darkStyle.disabled = false;
            toggleButton.textContent = textDark;
            toggleButton.setAttribute('aria-pressed', 'true');
        }

        // 更新body类(方便扩展CSS)
        document.body.classList.remove('light-mode', 'dark-mode');
        document.body.classList.add(`${mode}-mode`);

        // 保存用户偏好(可选)
        if (save) localStorage.setItem('theme-mode', mode);
    }

    /**
     * 获取系统默认模式
     * @returns {string} 'light'或'dark'
     */

    function getSystemMode() {
        const hour = new Date().getHours();
        return (hour >= 6 && hour < 18) ? 'light' : 'dark';
    }

    // --- 初始化 ---
    const savedMode = localStorage.getItem('theme-mode');
    const initialMode = savedMode && (savedMode === 'light' || savedMode === 'dark')
        ? savedMode
        : getSystemMode();

    setMode(initialMode, false); // 初始化模式(不保存)
    console.log(`日夜模式切换器:初始模式为${initialMode}`);

    // --- 切换按钮点击事件 ---
    toggleButton.addEventListener('click', function() {
        const currentMode = document.body.classList.contains('light-mode') ? 'light' : 'dark';
        const newMode = currentMode === 'light' ? 'dark' : 'light';
        setMode(newMode); // 切换并保存偏好
        console.log(`日夜模式切换器:已切换至${newMode}`);
    });
});

如上方式实现了暗夜模式的识别和切换,根据用户端的时间,采用“用户偏好优先,无偏好时根据本地时间自动判断,并支持手动切换和保存偏好”的模式。设定6点-18点为白天模式,18-次日6点为暗夜模式。

这个版本有一个问题出现了。

初始页面加载时的优化 (防止闪烁 FOUC):

1.dns_early_disable_unnecessary_styles 这个PHP函数非常关键。它在页面标签中以最高优先级(wp_head, 1)执行一个小的JavaScript片段。

2.这个JS片段会立即检查 localStorage 或根据时间判断初始模式,然后直接禁用不需要的CSS文件(style-light.cssstyle-dark.css)。

3.这样做的好处是,在浏览器开始渲染页面之前,已经确定并加载了正确的样式,有效避免了页面先显示一种模式然后迅速切换到另一种模式的“闪烁”现象 (Flash Of Unstyled Content)。

页面前端依然很不给面子的闪烁,白天和暗夜模式底色反差太大,一闪一闪让人很不舒服,本想着退而求其次,将就就好,管它白天闪晚上,还是晚上闪白天。然后,这两三天来,白天都在看房,跟着中介看这套看那套的,折腾得累半死,回家洗完澡一躺就睡了,这个问题也就这样搁置了几天。晚上得闲,一打开页面,页面切换的时候,闪得我自己都很不舒服,算了算了,我还是再修一修吧。

出现这个闪烁的原因,很可能是因为浏览器在解析HTML并应用内联JS脚本禁用CSS之前,已经短暂地加载并应用了所有样式表。如果 style-dark.css 中的样式优先级更高,或者它定义的默认颜色在没有其他限制的情况下会覆盖 style-light.css,就会导致先显示深色。

解决这个问题的更健壮方法是利用 link 标签的 media 属性,它在CSS加载层面就阻止了不必要的样式表被应用,而不是在JS加载后才去禁用。

产生了第二版插件代码:

  1. wp_enqueue_style 中使用 media=”not all”:
    • 通过在PHP中将 style-dark.css 的 media 属性设置为 ‘not all’,我们告诉浏览器,这个样式表在任何媒体类型下都不适用。这意味着浏览器在解析HTML时,根本不会加载和应用 style-dark.css 的内容,从而避免了它在初始渲染时可能造成的深色闪烁。
    • style-light.css 仍然保持 media=”all”,确保默认的白天模式样式能被加载。
  2. 早期JS脚本中切换 media 属性:
    • 在 dns_early_disable_unnecessary_styles 中,我们不再使用 style.disabled = true/false,而是修改 style.media 属性。
    • link.media = ‘all’ 会让浏览器立即应用该样式表。
    • link.media = ‘not all’ 会让浏览器立即禁用该样式表。
    • 这种方法比 disabled 属性更可靠,因为它在CSS加载和应用机制的更底层进行控制,通常能更快、更彻底地防止不希望的样式被渲染。
  3. setMode 函数中切换 media 属性:
    • 手动切换模式时,JavaScript也需要同步地修改样式表的 media 属性,以确保页面动态地更新为正确的模式。

php代码如下:

<?php
/**
 * Plugin Name: 日夜模式切换器
 * Plugin URI: https://www.edzbe.com
 * Description: 为您的WordPress站点添加日夜模式切换功能,默认根据当地时间判断,并支持手动切换。
 * Version: 1.0.2
 * Author: 耳朵的主人
 * Author URI: https://www.edzbe.com
 * License: GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain: daynight-switcher
 * Domain Path: /languages
 */

// 阻止直接访问文件,增强安全性
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 注册并加载日夜模式样式和脚本
 */

function dns_enqueue_styles_scripts() {
    // 获取主题目录URI(确保CSS文件位于主题的/css/子目录)
    $theme_css_dir_uri = get_template_directory_uri() . '/css/';

    // 注册白天模式样式(默认 media="all",提供一个稳定的基线,避免布局错乱)
    wp_enqueue_style(
        'daynight-switcher-light-style',
        $theme_css_dir_uri . 'style-light.css',
        array(),
        '1.0.0',
        'all' // 白天模式默认加载,作为页面的基础颜色模式
    );

    // 注册暗夜模式样式(默认 media="not all",仅在需要时激活)
    wp_enqueue_style(
        'daynight-switcher-dark-style',
        $theme_css_dir_uri . 'style-dark.css',
        array(),
        '1.0.0',
        'not all' // 暗夜模式初始不加载,避免闪烁
    );

    // 注册切换脚本(在页脚加载,确保DOM就绪)
    wp_enqueue_script(
        'daynight-switcher-script',
        plugins_url( 'js/daynight-switcher.js', __FILE__ ),
        array(),
        '1.0.0',
        true
    );

    // 将PHP数据传递给JS(如样式表ID、按钮ID)
    wp_localize_script(
        'daynight-switcher-script',
        'dns_data',
        array(
            'lightStyleId' => 'daynight-switcher-light-style-css',
            'darkStyleId' => 'daynight-switcher-dark-style-css',
            'buttonId'    => 'daynight-toggle',
            'textLight'   => esc_html__( '切换到暗夜模式', 'daynight-switcher' ),
            'textDark'    => esc_html__( '切换到白天模式', 'daynight-switcher' ),
        )
    );
}
add_action( 'wp_enqueue_scripts', 'dns_enqueue_styles_scripts' );

/**
 * 在页面<body>开头添加切换按钮(兼容WP5.2+)
 */

function dns_add_toggle_button() {
    if ( is_admin() ) return; // 排除后台
    ?>
    <button id="daynight-toggle" class="daynight-toggle-button" aria-label="<?php esc_attr_e( '切换日夜模式', 'daynight-switcher' ); ?>">
        <?php esc_html_e( '加载中...', 'daynight-switcher' ); ?>
    </button>
    <?php
}
add_action( 'wp_body_open', 'dns_add_toggle_button' );

/**
 * 关键修复:提前在页面头部设置正确的样式表和body类,避免初始闪烁
 * 逻辑:根据本地存储或系统时间,在初始加载时,如果需要暗色模式,则立即激活暗色模式并禁用白天模式。
 * 否则(即需要白天模式),白天模式已经默认加载,只需设置body类。
 */

function dns_early_disable_unnecessary_styles() {
    ?>
    <script>
        (function() {
            // 1. 获取用户偏好或系统默认模式
            const savedMode = localStorage.getItem('theme-mode');
            let initialMode;
           
            if (savedMode && (savedMode === 'light' || savedMode === 'dark')) {
                initialMode = savedMode;
            } else {
                const hour = new Date().getHours();
                initialMode = (hour >= 6 && hour < 18) ? 'light' : 'dark'; // 6-18点白天
            }

            // 2. 只有在初始模式是“dark”时才需要立即操作样式表,
            // 因为“light”模式的样式表已经默认加载 media="all"
            if (initialMode === 'dark') {
                const lightStyle = document.getElementById('<?php echo esc_js('daynight-switcher-light-style-css'); ?>');
                const darkStyle = document.getElementById('<?php echo esc_js('daynight-switcher-dark-style-css'); ?>');
               
                if (lightStyle && darkStyle) {
                    lightStyle.media = 'not all'; // 禁用白天样式
                    darkStyle.media = 'all';      // 激活暗夜样式
                }
            }
           
            // 3. 设置 body 的 class,确保全局背景色等样式同步
            // 这一步在任何模式下都执行,以确保 body 类始终是正确的
            document.body.classList.remove('light-mode', 'dark-mode'); // 移除可能的旧类
            document.body.classList.add(`${initialMode}-mode`); // 添加当前模式类

        })();
    </script>
    <?php
}
// 在<head>标签内优先执行(优先级1,确保最早运行)
add_action( 'wp_head', 'dns_early_disable_unnecessary_styles', 1 );


</head></body>

js代码如下:

document.addEventListener('DOMContentLoaded', function() {
    // 检查本地化数据是否正常
    if (typeof dns_data === 'undefined') {
        console.error('日夜模式切换器:未获取到本地化数据,请检查PHP的wp_localize_script调用!');
        return;
    }

    // 解构本地化数据
    const { lightStyleId, darkStyleId, buttonId, textLight, textDark } = dns_data;

    // 获取DOM元素
    const lightStyle = document.getElementById(lightStyleId);
    const darkStyle = document.getElementById(darkStyleId);
    const toggleButton = document.getElementById(buttonId);

    // 元素存在性检查
    if (!lightStyle || !darkStyle || !toggleButton) {
        console.error('日夜模式切换器:未找到核心元素,请检查样式表/按钮ID是否正确!');
        return;
    }

    console.log('日夜模式切换器:核心元素加载完成!');

    /**
     * 设置主题模式(更新样式、按钮文本、body类)
     * @param {string} mode - 'light'或'dark'
     * @param {boolean} save - 是否保存到localStorage
     */

    function setMode(mode, save = true) {
        // 更新样式表状态,通过修改 media 属性来激活/禁用样式
        if (mode === 'light') {
            lightStyle.media = 'all';     // 激活白天样式
            darkStyle.media = 'not all';  // 禁用暗夜样式
            toggleButton.textContent = textLight;
            toggleButton.setAttribute('aria-pressed', 'false');
        } else { // mode === 'dark'
            lightStyle.media = 'not all'; // 禁用白天样式
            darkStyle.media = 'all';      // 激活暗夜样式
            toggleButton.textContent = textDark;
            toggleButton.setAttribute('aria-pressed', 'true');
        }

        // 更新body类(方便扩展CSS)
        document.body.classList.remove('light-mode', 'dark-mode');
        document.body.classList.add(`${mode}-mode`);

        // 保存用户偏好(可选)
        if (save) localStorage.setItem('theme-mode', mode);
    }

    /**
     * 获取系统默认模式
     * @returns {string} 'light'或'dark'
     */

    function getSystemMode() {
        const hour = new Date().getHours();
        return (hour >= 6 && hour < 18) ? 'light' : 'dark';
    }

    // --- 初始化 ---
    // 页面加载时的初始化逻辑已经由PHP中的dns_early_disable_unnecessary_styles处理,
    // 这里再次调用setMode主要是为了同步按钮文本和body class,
    // 并且确保在JS完全加载后,如果有未被早期脚本处理的逻辑(虽然现在应该没有了),也能正确执行。
    const savedMode = localStorage.getItem('theme-mode');
    const initialMode = savedMode && (savedMode === 'light' || savedMode === 'dark')
        ? savedMode
        : getSystemMode();

    // 注意:这里的 setMode(initialMode, false) 仅仅是确保DOM加载完成后,按钮文本等细节能够正确初始化。
    // 真正避免闪烁的样式切换,由 dns_early_disable_unnecessary_styles 中的内联脚本处理。
    setMode(initialMode, false);
    console.log(`日夜模式切换器:初始模式为${initialMode}`);

    // --- 切换按钮点击事件 ---
    toggleButton.addEventListener('click', function() {
        const currentMode = document.body.classList.contains('light-mode') ? 'light' : 'dark';
        const newMode = currentMode === 'light' ? 'dark' : 'light';
        setMode(newMode); // 切换并保存偏好
        console.log(`日夜模式切换器:已切换至${newMode}`);
    });
});

 

如上代码,其实应该是正常解决方案的,就是创建的 style-light.css style-dark.css 文件如果只有配色方案,网页加载的时候,先加载 style.css 框架样式文件,这样页面就正常显示,只是配色根据选择加载,但是我又失败了,因为我开始弄的时候,把默认的style.css 框架样式直接套到 style-light.css style-dark.css 这两个文件里了,要修改,又要重新开始分离出配色单独创建样式表,不行,不行,这工作量太大了,我不要。

我给Gemini发送了我的想法解决这个问题: 先加载页面的判断设置,直接屏蔽不加载另一种模式。Gemini很给力的给出了解决方案。

只加载所需的模式样式,而不是先加载一个再切换,避免任何形式的“闪烁”或“布局混乱”。

我之前的方案试图通过 `media` 属性和内联 JS 来解决,但在某些浏览器或加载条件下,即使是极快的切换,也可能出现视觉上的延迟。实现“直接屏蔽不加载另一种模式”的最彻底方法是:在 PHP 生成 HTML 的 `<head>` 部分时,就根据用户的偏好或时间判断,只输出当前所需模式的 `<link>` 标签,而完全不输出另一个模式的 `<link>` 标签。

但这有个挑战:PHP 在服务器端运行,它无法直接读取用户浏览器中的 `localStorage`。它只能读取 `$_COOKIE`。所以,为了让 PHP 在第一次加载页面时就知道用户偏好,JavaScript 必须在每次模式切换时,除了更新 `localStorage`,还要同时更新一个 Cookie

最终版本php代码如下:

<?php
/**
 * Plugin Name: 日夜模式切换器
 * Plugin URI: https://www.edzbe.com
 * Description: 为您的WordPress站点添加日夜模式切换功能,默认根据当地时间判断,并支持手动切换。
 * Version: 1.0.3
 * Author: 耳朵的主人
 * Author URI: https://www.edzbe.com
 * License: GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 * Text Domain: daynight-switcher
 * Domain Path: /languages
 */

// 阻止直接访问文件,增强安全性
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 提前判断初始模式(PHP服务器端)
 * 优先级:Cookie (用户偏好) > 服务器时间
 * @return string 'light' 或 'dark'
 */

function dns_get_initial_mode_server_side() {
    // 1. 尝试从Cookie获取用户偏好
    if ( isset( $_COOKIE['theme-mode'] ) && in_array( $_COOKIE['theme-mode'], ['light', 'dark'] ) ) {
        return $_COOKIE['theme-mode'];
    }

    // 2. 如果Cookie不存在,根据服务器时间判断
    $hour = (int) current_time( 'H', true ); // 使用WordPress的 current_time 获取当前小时,避免时区问题
    return ($hour >= 6 && $hour < 18) ? 'light' : 'dark'; // 6-18点白天
}

/**
 * 注册并加载日夜模式脚本
 * 注意:日夜模式的样式文件不再在这里直接 enqueue,而是由 dns_output_conditional_styles 动态输出。
 */

function dns_enqueue_scripts() {
    // 获取主题目录URI
    $theme_css_dir_uri = get_template_directory_uri() . '/css/'; // 仍然传递给JS,以防需要手动构建 link 标签 fallback

    // 注册切换脚本(在页脚加载,确保DOM就绪)
    wp_enqueue_script(
        'daynight-switcher-script',
        plugins_url( 'js/daynight-switcher.js', __FILE__ ),
        array(),
        '1.0.0',
        true
    );

    // 将PHP数据传递给JS(如样式表ID、按钮ID、CSS文件路径)
    wp_localize_script(
        'daynight-switcher-script',
        'dns_data',
        array(
            'lightStyleId'      => 'daynight-switcher-light-style-css',
            'darkStyleId'       => 'daynight-switcher-dark-style-css',
            'buttonId'          => 'daynight-toggle',
            'textLight'         => esc_html__( '切换到暗夜模式', 'daynight-switcher' ),
            'textDark'          => esc_html__( '切换到白天模式', 'daynight-switcher' ),
            'lightStyleUrl'     => $theme_css_dir_uri . 'style-light.css', // 传递CSS路径给JS,用于动态创建link标签
            'darkStyleUrl'      => $theme_css_dir_uri . 'style-dark.css',  // 传递CSS路径给JS,用于动态创建link标签
        )
    );
}
add_action( 'wp_enqueue_scripts', 'dns_enqueue_scripts' ); // 重命名函数,因为不再enqueue styles

/**
 * 在页面<body>开头添加切换按钮(兼容WP5.2+)
 */

function dns_add_toggle_button() {
    if ( is_admin() ) return; // 排除后台
    ?>
    <button id="daynight-toggle" class="daynight-toggle-button" aria-label="<?php esc_attr_e( '切换日夜模式', 'daynight-switcher' ); ?>">
        <?php esc_html_e( '加载中...', 'daynight-switcher' ); ?>
    </button>
    <?php
}
add_action( 'wp_body_open', 'dns_add_toggle_button' );

/**
 * 核心:在页面头部根据PHP判断动态输出正确的样式表和body类
 * 这将避免任何模式切换时的闪烁。
 */

function dns_output_conditional_styles() {
    if ( is_admin() ) return; // 排除后台

    $initial_mode = dns_get_initial_mode_server_side();
    $theme_css_dir_uri = get_template_directory_uri() . '/css/';
    $version = '1.0.0'; // 样式表的版本号

    // 输出正确的样式表
    if ( $initial_mode === 'light' ) {
        echo '<link rel="stylesheet" id="daynight-switcher-light-style-css" href="' . esc_url( $theme_css_dir_uri . 'style-light.css?ver=' . $version ) . '" type="text/css" media="all"/>';
        echo '<link rel="stylesheet" id="daynight-switcher-dark-style-css" href="' . esc_url( $theme_css_dir_uri . 'style-dark.css?ver=' . $version ) . '" type="text/css" media="not all"/>';
    } else { // dark mode
        echo '<link rel="stylesheet" id="daynight-switcher-light-style-css" href="' . esc_url( $theme_css_dir_uri . 'style-light.css?ver=' . $version ) . '" type="text/css" media="not all"/>';
        echo '<link rel="stylesheet" id="daynight-switcher-dark-style-css" href="' . esc_url( $theme_css_dir_uri . 'style-dark.css?ver=' . $version ) . '" type="text/css" media="all"/>';
    }

    // 立即在body标签上设置正确的class,防止任何延迟闪烁
    // 注意:这个内联脚本在<?php标签内,所以它会先于任何其他JS执行
    ?>
    <script>
        // 确保body class在HTML解析时就存在
        document.documentElement.classList.add('<?php echo esc_js( $initial_mode ); ?>-mode');
        document.body.classList.add('<?php echo esc_js( $initial_mode ); ?>-mode');

        // 后备或纠正逻辑(如果localStorage与PHP判断不符,或Cookie过期)
        (function() {
            const savedMode = localStorage.getItem('theme-mode');
            const currentInitialMode = '<?php echo esc_js( $initial_mode ); ?>'; // PHP决定的初始模式

            if (savedMode && savedMode !== currentInitialMode) {
                // 如果localStorage和PHP的初始判断不一致,JS会立即纠正
                const lightStyle = document.getElementById('daynight-switcher-light-style-css');
                const darkStyle = document.getElementById('daynight-switcher-dark-style-css');

                if (lightStyle && darkStyle) {
                    if (savedMode === 'light') {
                        lightStyle.media = 'all';
                        darkStyle.media = 'not all';
                    } else { // savedMode === 'dark'
                        lightStyle.media = 'not all';
                        darkStyle.media = 'all';
                    }
                }
                document.documentElement.classList.remove('light-mode', 'dark-mode');
                document.documentElement.classList.add(`${savedMode}-mode`);
                document.body.classList.remove('light-mode', 'dark-mode');
                document.body.classList.add(`${savedMode}-mode`);
            }
        })();
    </script>
    <?php
}
// 在<head>标签内优先执行(优先级1,确保最早运行)
add_action( 'wp_head', 'dns_output_conditional_styles', 1 );


</head></body>

js代码如下:

document.addEventListener('DOMContentLoaded', function() {
    // 检查本地化数据是否正常
    if (typeof dns_data === 'undefined') {
        console.error('日夜模式切换器:未获取到本地化数据,请检查PHP的wp_localize_script调用!');
        return;
    }

    // 解构本地化数据
    const { lightStyleId, darkStyleId, buttonId, textLight, textDark, lightStyleUrl, darkStyleUrl } = dns_data;

    // 获取DOM元素
    const lightStyle = document.getElementById(lightStyleId);
    const darkStyle = document.getElementById(darkStyleId);
    const toggleButton = document.getElementById(buttonId);

    // 确保样式表元素存在。如果PHP动态输出失败,这里可能是null。
    // 但是在最新的方案中,PHP一定会输出这两个link标签,只是media属性不同。
    if (!lightStyle || !darkStyle || !toggleButton) {
        // Fallback: 如果PHP没有输出link标签,JS动态创建它们
        console.warn('日夜模式切换器:未找到核心样式表元素。尝试动态创建。');
        // 如果lightStyle或darkStyle不存在,这里需要动态创建。
        // 为了简化,这里假设它们总是由PHP输出。如果真的未找到,需要更复杂的JS fallback。
        // 目前先跳过,因为PHP应该确保它们存在。
        // return; // 暂时不返回,让下面的逻辑有机会运行
    }


    console.log('日夜模式切换器:核心元素加载完成!');

    /**
     * 设置Cookie
     * @param {string} name - Cookie名称
     * @param {string} value - Cookie值
     * @param {number} days - Cookie过期天数
     */

    function setCookie(name, value, days) {
        let expires = "";
        if (days) {
            const date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toUTCString();
        }
        document.cookie = name + "=" + (value || "")  + expires + "; path=/";
    }

    /**
     * 设置主题模式(更新样式、按钮文本、body类、同步Cookie)
     * @param {string} mode - 'light'或'dark'
     * @param {boolean} save - 是否保存到localStorage和Cookie
     */

    function setMode(mode, save = true) {
        // 更新样式表状态,通过修改 media 属性来激活/禁用样式
        if (mode === 'light') {
            if (lightStyle) lightStyle.media = 'all';     // 激活白天样式
            if (darkStyle) darkStyle.media = 'not all';  // 禁用暗夜样式
            toggleButton.textContent = textLight;
            toggleButton.setAttribute('aria-pressed', 'false');
        } else { // mode === 'dark'
            if (lightStyle) lightStyle.media = 'not all'; // 禁用白天样式
            if (darkStyle) darkStyle.media = 'all';      // 激活暗夜样式
            toggleButton.textContent = textDark;
            toggleButton.setAttribute('aria-pressed', 'true');
        }

        // 更新body和html根元素的类(方便扩展CSS)
        document.documentElement.classList.remove('light-mode', 'dark-mode');
        document.documentElement.classList.add(`${mode}-mode`);
        document.body.classList.remove('light-mode', 'dark-mode');
        document.body.classList.add(`${mode}-mode`);

        // 保存用户偏好(可选)到 localStorage 和 Cookie
        if (save) {
            localStorage.setItem('theme-mode', mode);
            setCookie('theme-mode', mode, 30); // Cookie保存30天
        }
    }

    /**
     * 获取系统默认模式
     * @returns {string} 'light'或'dark'
     */

    function getSystemMode() {
        const hour = new Date().getHours();
        return (hour >= 6 && hour < 18) ? 'light' : 'dark';
    }

    // --- 初始化 ---
    // 页面加载时的初始模式判断和样式设置已由PHP在服务器端完成,
    // 这里的JS初始化主要是确保按钮文本正确,并处理LocalStorage和Cookie可能不同步的情况。
    const savedMode = localStorage.getItem('theme-mode');
    let initialMode;

    if (savedMode && (savedMode === 'light' || savedMode === 'dark')) {
        initialMode = savedMode;
    } else {
        initialMode = getSystemMode();
    }

    // 确保当前的Cookie也与initialMode一致,防止PHP下次加载时判断错误
    setCookie('theme-mode', initialMode, 30);

    // 调用 setMode 来同步按钮文本,以及确保 body class 即使在PHP未能设置时也能被设置(虽然PHP现在会设置)
    setMode(initialMode, false);
    console.log(`日夜模式切换器:初始模式为${initialMode}`);


    // --- 切换按钮点击事件 ---
    toggleButton.addEventListener('click', function() {
        // 从html根元素获取当前模式,因为CSS可能也通过html根元素控制
        const currentMode = document.documentElement.classList.contains('light-mode') ? 'light' : 'dark';
        const newMode = currentMode === 'light' ? 'dark' : 'light';
        setMode(newMode); // 切换并保存偏好
        console.log(`日夜模式切换器:已切换至${newMode}`);
    });
});

核心原理和解决闪烁的方法:

1. PHP 服务器端预判: PHP 在页面生成之初(在 `wp_head` 动作中,优先级为1),就通过 `dns_get_initial_mode_server_side()` 函数,根据 `theme-mode` Cookie 或服务器时间,判断出应该显示的模式。

2. 只输出所需 `<link>` 标签: `dns_output_conditional_styles()` 函数根据 PHP 的判断结果,直接在 HTML 的 `<head>` 中输出 两个 `<link>` 标签。
• 正确的模式 的 `<link>` 标签 `media` 属性是 `all`
• 不正确的模式 的 `<link>` 标签 `media` 属性是 `not all`
这样,在浏览器开始解析和渲染 HTML 时,它只会加载并应用正确的模式样式,从而从源头上避免了加载错误样式导致的闪烁。

3. `document.documentElement` `document.body` 类: PHP 还会输出一个内联 `<script>`,它会立即为 `<html>``<body>` 元素添加正确的模式类(例如 `dark-mode`)。这对于依赖这些类来设置背景色、字体颜色等全局样式的 CSS 规则至关重要,确保页面在渲染时就有正确的颜色基调。

4. JavaScript Cookie 同步: JS 代码在 `setMode` 时,除了更新 `localStorage`,还会更新一个 `theme-mode` Cookie。这样,用户下次访问时,PHP 就能从 Cookie 中读取到用户上次的选择。

5. 内联 JS 后备纠正: PHP 输出的内联 JS 中含有一个小的逻辑,用于比较 PHP 的判断(来自 Cookie 或时间)和 `localStorage` 中的用户偏好。如果两者不一致(例如,用户清除了 Cookie 但 `localStorage` 还在),这个内联 JS 会立即纠正模式,提供额外的鲁棒性。

代码仅供参考,在需要调用按钮的前端,添加按钮:

<button id="daynight-toggle" class="daynight-toggle-button" aria-label="<?php esc_attr_e( '切换日夜模式', 'daynight-switcher' ); ?>">
<?php esc_html_e( '加载中...', 'daynight-switcher' ); ?>
</button>

还有一个问题就是,header.php文件必须包含<?php wp_head(); ?>footer.php文件代码必须包含 <?php wp_footer(); ?> ,按钮在二者之间的位置插入,否则无法正常加载,为什么,我也不知道,我是一步一步修过来的,怎么修的,不知道。

顺便提供下我的按钮图标:

完整插件代码下载:daynight-switcher

伪技术贴完工,睡觉。

奶奶落寞的背影

2025-10-15 06:42:00

今天这篇文章,其实我并不是很想写下来,不是它不值得我深夜花时间来敲键盘,而是我怕陷入这样的感伤情绪,然后抽不开身。本来已经填上了标题,又关了电脑,深夜泡了一杯苦咖啡,抿上几口,我想,我还是把这篇写完吧,因为这也是我该直面的问题,比如我自己没有顾及的全面,比如我目前做得不够的地方,我需要自我审视。

我的奶奶,今年九十几岁了,是一位性格固执或者可以称得上偏执的老太太,照片是家里四小只和他们的太奶奶。

按照姑姑们曾经的总结,所有的后辈里只有我可以降得住她,其他人要是跟她说点什么,她不高兴了,就发火了,唯独我,她怕我。

当下,这个评价我还是挺受用的,因为我可以解决很多问题,至少她还算听我的话。此刻,我反过来一想,似乎这样的我,我都有点无法原谅自己,因为可能我太强势了,似乎让奶奶受委屈了。

这是个很矛盾的对立问题,如果顺着老太太自己的意愿,有时候真的很折腾人。我可能看起来比较坏,比较霸道,所以她好像真的有点怕我,怕我发火,所以老太太会妥协,会顺着我们的意,最终大家都好。

这里我举个过往发生过的实例。

去年冬天,天气挺冷的,家乡流感盛行,应该还是口罩病毒的变种,后来统称流感了,发烧感冒,父亲是医生,每天早中晚都会回老房子给奶奶查看病情,看体温变化,一开始奶奶还算是听话的,会按照父亲的要求进行吃药,可能因为病毒真的折腾得她一个老人家很累,奶奶开始抵抗,不接受治疗,父亲就很无奈,但也苦口婆心的劝说,奶奶根本不听,还会骂父亲,这里父亲也是很委屈,做也不行,不管她顺着她也不行。

父亲晚上9点多回老房子想要给她量一下体温,她就是不,坚决不开门,最后父亲无奈,只能说:你要是这样,我只能把他们(叔叔和姑姑们)都叫回来,看怎么办?最后她开门了,父亲进房间给她量体温,体温又升高了,需要给她处理降温,需要给她服用抗病毒的药物,奶奶赌气,就是不吃药,而且大冬天的穿着单薄的睡衣就坐在门厅的椅子上搞对抗,给她拿衣服,不穿,给她倒开水,不喝,给她泡药,不服用。

父亲只能把在家的二姑和三姑都喊回来,一起劝她,她还是很强硬,就是不听,还发火,一直以来,她比较关注小姑姑,小姑姑家在深圳,只能给她打视频,劝她要穿衣服,要吃药,她直接当作没听到,不搭理,连小姑姑都搞不定。最后只能找奶奶娘家的侄子侄女(父亲舅舅家的表哥表姐),平时奶奶还是挺在意她娘家人的劝告的的,表舅表姑打电话来,她没发火,就是也不听。

父亲没办法了,只能给我打电话,让我接上三叔,现在马上回老家一趟,听到要叫我们两个回去,她就更火大了,情绪更不好了,谁劝她就跟谁过不去。

我载上三叔,从厦门连夜飞奔回去,心想着奶奶没穿外套,大冬天坐在天井边的椅子上受凉,我一路的超速冲回去,到家已经十一点多了,她已经这样和大家耗了一个多小时,真的,大家都很无奈。

我进门,她直接说我,你回来干什么,为什么要回来。

我耍耍贱说:我不回来不行啊,我就一个奶奶啊,她生病了,不吃药,还不穿外套,还要在这吹风受凉,我不回来,要是没奶奶了怎么办?

她就说一些,我听了很不爽的话,家有一老,如有一宝,我们肯定是希望她长命百岁的,她就专门对着干,说一些反话。

三叔去劝她,要把她扶起来,扶她回房间,她反手就要打人的样子,就是和我们耗着。

到这里,我确实情绪也上来了,想要强制她回房间,那段时间因为腰椎盘突出,右腿酸痛,根本就站不住,而且开车赶回来,坐都坐不住,去扶她的时候,她没动手打我,但是我腰一酸,腿一软,自己就先唉一声坐下去了。

她立马警觉的看了我一眼,然后说了句,你们都出去,都走。

我说:你不吃药不进房间,我们怎么走,传出去,我们这些后代子孙多不孝顺。

她说:我就要坐在这里,我起床后,就没有再回床上去睡的习惯。

我说:现在才十一点多,你是不是发烧懵了,以为现在是凌晨天亮。PS:奶奶的作息很规律,傍晚五点多睡觉,凌晨四点左右起床煮早餐,然后凌晨五点左右,出门散步,回来再吃早餐。

她没搭理我,就要跟我们耗下去,我故意转头跟二姑和二姑父说我腰锥盘突出,现在站不起来,走不了,坐也坐不了,现在就得躺着,不然太疼了。

这话我是故意说给奶奶听的,因为我发现她在意这个,我必须加大PUA她的力度。

我对奶奶说:你确定你不听话,不穿衣服,不进房间睡觉吗?那行,那我陪你,我腰疼,我现在得躺着,你要是要跟我耗,行,我陪你耗着。

这个时候,姑姑跟上了我的节奏,又拿我的腰疼说事,说你看你孙子腰疼得躺着,你这样,他肯定很疼。

看她盯着我看,没有反驳情绪,三叔就走上去,三叔扶住奶奶的手,把她从椅子上扶起来,看她有点意志松动的状态,我也去扶她,嗯,其实不是我们拉她起来的,是她自己站起来的,哈哈。

然后我说:奶奶坐太久了,头会晕,还是先站一会再走。姑姑看她站起来了,立马拿着衣服给她披上,这会她听话了,主动的把外套袖子套进去。

然后就回房间了,她这几十年来都是住的老房子二楼,父亲给她喂药,她吃了。姑姑在房间陪着她,我们在前厅坐了半个多小时,姑姑说她睡下了,体温也正常了,我们才离开。

我一直想把奶奶的房间搬到一楼,这样她就不用爬楼梯回房间睡觉了,之前她一直是拒绝的,第二天跟她说,我说一楼哪一间,你想睡哪间,就给你清理哪一间,找了一下边房是最合适的,房间比较干燥,而且早先是三叔的婚房,里面墙壁和物品都保持较好。其实,她知道自己的年纪和目前的身体状态,她自己爬楼梯也确实很吃力,就说换床她不习惯。我说那简单,把你房间整体搬下来就行。

下午父亲就喊来二姑父,和我和三叔,我们四个就把房间搬空腾出来了,接下来就是搬楼上奶奶睡的床和衣柜箱子。

闽南的古床,全实木的,底座应该有一百多斤吧,要从楼梯搬下来实在麻烦,只能从二楼放下来,我用的腰在楼下硬撑着,他们在从楼上下来接,为此,我多躺了两个月,我的腰啊,路都不太能走了。

好在把房间给她搬下来,按照她在楼上的格局和布置,一模一样,连老黄历放在哪个位置都一模一样。

经过这次的病一场,奶奶的状态变得很差,体力也不好,整天坐在椅子上昏昏沉沉的,病好了之后,母亲就每天给奶奶炖人参鸡汤或者人参瘦肉汤,让父亲带回去给奶奶喝,补身体。

奶奶是个很固执的人,嘴硬得很,我不喝,我不会喝你们一口水,我不会吃你们一口饭,就是坚决的杠着,父亲拿给她,她不喝就是不喝,父亲实在无奈,又拿回家去,母亲知道了,训了父亲一顿,说,明天我给她送过去,看她喝不喝。

第二天开始,母亲每天炖好汤,亲自给奶奶送上去,她们的关系还和年轻时候一样,彼此不怎么说话,但是交流还是有的。

以下内容是我室内监控里看到的:

母亲从保温瓶给她盛在碗里,递给奶奶,奶奶问,这是什么汤?母亲说人参汤,喝了补气血。奶奶说,不用给她弄,会浪费。母亲说,喝了人就有气力,哪里会浪费,你就喝就是了。

然后递给奶奶,看着她,奶奶接过去就咕噜咕噜喝下去了。

然后第二天第三天第四天……反正喝到了奶奶又可以日行散步十公里了,元气终于补回来了,恢复起身体。

对此,我是很敬重我的母亲的,不管婆媳关系当时是怎么样的,想象得到奶奶年轻的时候,有多霸道刁钻,母亲又是大户人家的大小姐,初入这样的家庭,恶婆婆应该可以称呼一下,但是那是她俩之间的婆媳问题,她俩自己处理。母亲尽到了自己的义务和责任,该做的一样都不会落下。

看到奶奶的布鞋底磨平了,会安排我们给奶奶买鞋子,但是要想说让母亲自己给她买鞋子,那我估计母亲肯定不会,毕竟还是有当年心结的,反正每次都是安排我们。

但是对于吃食来讲,就不会,三四天就会给奶奶买面条,买菜,买肉,切好一份份,然后分装成一人份一份一份,让父亲带回去给奶奶放冰箱里,按次自己拿出来煮,买过一次六鳌地瓜,听奶奶说这个地瓜煮地瓜粥好吃,嗯,母亲已经买过好多次了,以前美团优选没倒闭的时候,就自己给她下单买,还能掐指算到她还有没有库存继续补货,后来美团优选倒闭了,多多买菜送不到村子里,就让我们从厦门给奶奶买回去。

这里,我要表扬一下我母亲,其实她一直在以身作则,而我们三个也确实是收到了她的影响,我问过母亲,为啥以前不愉快,现在还能这样做,母亲说,你奶奶现在还能自己做饭自己生活自己照顾自己,就是我们的福气,如果她不能自理,那能不回去照顾她起居吗?还不是我要回去,她们两个(大伯母和三婶)可能会管她吗?

同时,我要讲一个小插曲,对比之下,立见分明。

我婶婶回老家,因为她房子那边冰箱塞不下,所以两颗花菜就放在我家的冰箱里,冰箱奶奶在用,有次我哥哥回去,看到,就想着拿出来给我奶奶把花菜切一切,分成一小份一小份,婶婶看到了,说,不是,这个不是奶奶的,是她的,然后拿回去了,两颗都拿回去了……

除了无语,What can I say?

呃,上面的实例故事,可见奶奶是一个多固执多偏执的老太太。

爷爷1994年9月就走了,她一个人自己生活了这么久,她也不跟我们住,自己做饭自己生活,除了十几年前有次摔断了手,没办法做饭,母亲回去照顾了她两三个月,摔断手之前,她本来和母亲有点口角,关系并不好,但是母亲还是履行了自己的责任,给她做饭,侍候她,但是两个人不说话,母亲负责煮,煮好给她盛起来,她负责吃。

十年前,叔叔一家也都搬到了厦门,我们这些子孙,也都买在了厦门,在厦门生活,平时就是抽空回去看望她。

坦白讲,奶奶是最疼她小儿子的,就是三叔,明眼人都看得出来,但是孙子辈,我敢直接评说,就只有我们兄妹三个,和三姑的儿子(一个小表弟),我们四个对她比较友孝,这话是奶奶自己讲的,她经常跟我埋怨大堂弟电话都没给她打一个,除了全家都回,平时基本不回去看她。我也私下暗示堂弟要给奶奶打电话问侯,但是无果,可能书读多了,就傻了。

两个堂弟,从小就是奶奶带大的,所以可能奶奶觉得比较在意吧。我父亲最早自己独立出来建房子,所以我们从小分家生活,应该说,我们三个孩子,小时候奶奶都没有全职照看过,这个我小时候没啥记忆,是母亲说的。

这里,我不是说就我们孝顺,别人不孝顺,可能每个人表达的方式不一样,我认为的陪伴比较重要,所以我会经常回去看她,喊一句奶奶,她乐呵乐呵,我也心情很好。

早几年,我都在国外生活,只能是偶尔给她打打电话唠唠嗑,她还会念叨说我国际长途电话贵,不要一直给她打。我回来后,可能也因为这几年房子翻建,我经常回去工地,所以我回家的次数,应该是每周回去两三次,最少也是每周必回。其实回去我也不是住老房子那边,开车需要10分钟,我都会回去看看她,和她唠一会天,受我们的影响,我们兄弟两个的孩子们,也很喜欢回去找太奶奶,一回去就冲上去抱住太奶奶太奶奶的喊,奶奶很开心,但是奶奶还是多次跟我埋怨说,堂弟的两个孩子,都不敢靠近她,很怕她老人家。我也只能说,她们还小,比较少回来,不熟悉,所以陌生不敢靠近。

其实,就是大人没有引导。
这话,我也只敢在这里说,毕竟讲出来,徒增家族纷扰。

奶奶的后裔,大伯(非她血脉)、大姑姑(非她血脉)、父亲、二姑、三姑、三叔、小姑姑。

大伯有一子三女,内孙两个,外孙六个。
大姑有一子二女,外孙四个。
我爸有二子一女,内孙四个。
二姑有一子二女,外孙二个。
三姑有一子。
三叔有二子,内孙两个。
小姑姑有一子一女。

这样算下来,奶奶的孙子辈目前有我们十八个,目前玄孙辈二十个,我表哥,我姐,一个堂弟,三个表弟,两个表妹暂时未婚。

其实也是大家族,老太太啊,就是不要太固执,其实也是挺好的。我全篇都没有提伯父家,是因为伯父非她血脉,然后以前分家的时候,伯母确实做了很多事,如今虽然较少纷扰,但是赡养费都不是很想给的那种,所以无需多言。

今天这篇的文章的主题,因为一件事。

叔叔是木匠老师傅,我这次房子翻建,木作就是让三叔手工现场做的,所以三叔回老家做了三个多月的木工,这三个月,就在奶奶的身边,每天都能看得到三叔,三叔性格比较冷,虽然可能话不多,但是看到自己最疼爱的小儿子在身边,奶奶应该也是很满足的。

木工工作竣工了,小堂弟因为脊椎血管畸形,导致神经坏死,十五岁开始坐了轮椅,离不开人照顾,所以跟着三叔回了老家,我想这样出行不便,就回去接他们回厦门。

昨天下午一点多,三叔在自己的房子收拾行李,奶奶自己一个人在老房子的客厅黯然神伤,我进老房子的时候,感觉到奶奶的状态不对,我问她怎么了,她说:这附近七座房子,就她一个人,连蚊子苍蝇都没有(夸大形容的一句方言俗语),我说不会啊,工地不是还在做油漆,天天都有人在的啊,而且我爸每天都会回来的啊,我以为她是因为周边没有人会害怕。

奶奶说,工人五六点做完工就回去了,不是也没人。
我说,等房子都好了,我爸妈肯定会回来住一阵子的。
奶奶说,你爸妈肯定要住药房那边的房子,不会回这里住。
我说,肯定会的,房子建了就是要住,怎么可能不回来这里住。
这个时候,我还没反应过来,还以为她是因为没人害怕。
奶奶突然说:你三叔做完工,要出去厦门了。
我这才突然反应过来,看着她的眼里泪水婆娑,我心疼的握着她的手。
我不知道我应该怎么安慰她,因为我可以经常会来看她,但是她此刻是因为三叔要回厦门而在难过。
我说,那要不你跟我们去厦门住。
奶奶:不要,我都这么老了,我不去。
我说,那我经常回来看你不就好了。

其实,我说这句话的时候,我自己也很清楚,我不是她的小儿子。

但是,我又能做什么呢?愿不愿意,那是我三叔的安排,我能说什么做什么。

搬好行李上车,我启动了车,从后视镜看到奶奶往老房子走的背影,我很心酸,因为我感觉到她的落寞,我不知道三叔有没有注意到,他的母亲的难过。

我发此文,一是深刻反省自己,我对于奶奶,哪里做得还不够,二是我真的想要提醒一下其他人,你们也该做点什么,可是我又不能说,说了就是,你是在指责我吗?然后徒增纷扰。

人,其实挺复杂的,人和人之间其实挺无奈的。每个人都会有自己的生活,我一样也需要在厦门照顾我的家庭我的小孩,我也会有自己的工作,我不能时时刻刻的去陪着奶奶,可能,其他人也一样,这就是理由,或是借口。但是我真的希望,我们,都能为了她,多做一点,比如堂弟能够偶尔给她打打电话唠唠嗑,不像我可以陪她胡扯海侃,至少也可以问一下她在干嘛?吃了吗?

我给家门口和客厅室内都装上了监控,也把监控分发给其他人了,我几乎每天都会刷刷监控,看看奶奶在干什么,父亲每天早上醒来第一件事就是躺床上打开监控看看奶奶在干嘛,有一天奶奶起床比较早,早上还没四点就出门走村里的马路溜达去,父亲六点多醒来,查了监控,看到怎么出去那么久还没回来,不同平常,立马冲回去,到处找奶奶,奶奶坐在电厂的石凳边休息,她说她起太早了,走得比较远,有点累,休息一下。

我也经常凌晨没睡刷一刷即时监控,我可爱的固执的奶奶在干啥,拆假牙下来洗,漱口,吃早餐,倒夜壶,坐在前厅自言自语。

呃,最早装监控,奶奶说我是要监视她,说她又不会偷我家东西……

我说,你肯定不会偷啊,但是防止别人偷啊,毕竟请了这么多外地的工人,肯定要装一个。

然后她就没有念叨监控的事了,其实就是为了守护她。

我不能要求别人像我一样,按照我的标准,我甚至不能多说,我只能尽我能,我能做什么我就去做,我得好好想想,我还可以多做点什么了。

天亮了,我睡觉去了,絮叨完,我可能表达得太啰嗦,看客们随意看看,只是这是我的真实心情记述。

消失的一百块

2025-10-08 15:34:06

法定假期,我不喜出游,因为到哪都有一亿人,最优的选择是回山上避暑,嗯,山上也有几千人,路上车来车往,中秋佳节回乡团圆的人也是很多很多。

月亮是华为手机拍的,扩图是豆包干的,和文章主题没多大关系,拍都拍了,就发一发吧!

今年21号麦德姆台风的原因,虽未直接对福建地区产生影响,但是加强了副热带高压,副热带高压下沉气流空气增温非常明显,八闽大地热得不要不要的,室内温度都有33度以上,一点都不秋天。村里的夜幕晚霞,也是极美的。

邻居家的傍晚炊烟袅袅,这个景象我挺喜欢的,从小看到大。

太阳很晒,娃儿回家挖地瓜,挺好玩的,他也很喜欢玩。

山顶的一个水库,闲着就带娃上山晃一晃,森林区现在已经没有手动割防火带,改成了在山区中间开一条防火的水泥路,把山体森林给分隔开,后期如果山火的话,可以起到隔离火带的作用,所以现在爬山都可以顺着马路走了,挺方便。

媳妇儿拍风景,她是我的风景,哈哈。

太阳实在是毒辣,这几天下来,娃儿们都黑了一圈。

贝勒爷到哪都是这样痞痞的,跟我小时候,一毛一样。

黑衣斜包的就是在下,最近减肥成效非常明显,过几天再专门更新一篇减肥大业。

山上的野柿子是真的甜,其实这不是野柿子,野柿子都是小小颗的,这应该是农村公社化时代开荒的先辈们种下的,后来没有路,也没有去管理和采摘,成了野柿子。

趁着回乡的人多,佛事、结婚、宴请这些活动都挤在这个节日,图人多图热闹,宗族里有多场喜宴,10月3日二房一场订婚,10月6日二房一场结婚,10月8日大房一场结婚。

我们对宗族的定义可能比较严谨和清晰,以我多次和长者交流总结出来的经验,以父系血缘为基础,倒数五代兄弟为堂亲,再往上三代为大宗亲,再再往上为小宗亲。此处我可以画个图,嗯,对,我画个图,之后可以讲解给我的小孩了解,这样他们才能延续宗族脉络传承。

我就画出了从我开始往上的八代,也只按照脉承标注,当然其他的分支都各有各的传承,我就没去细分画出来了,齐安祖后我的先人是第几子我一时想不起来了,得回去翻翻族谱才能确定,我就这样先标注下来了,我的太叔公及伯公下南洋是因为当时国内环境极其恶劣,民国政府还有抓壮丁,所以从这一代开始,兄弟抓阄,抓到阄的人,举家支持他们离家开支,同时放弃家中财产继承,当时最好的去处就是下南洋闯荡,所以他们就出门去了,后裔都在新加坡和马来西亚。

齐安祖祠,每年都会祭祖,从这里出来的都是大宗亲,按我的辈分,第二十一世算,齐安祖应该是我们的第十四世,我们村的第十四代,第一代为颜德公,明永乐年间,自厦门钟宅迁居至此,祖以晒盐为业。

光前祖祠,这里应该是第十五世,这里出来的后人关系又更亲近了,结婚宴请的话,这里出来的人都要相互支持,红白事都要给份子钱。

再接下来的埔后祖,这里就是堂亲了,五代内,兄弟三条脉承,我的太太公(我爷爷的爷爷)是老三,这里出来的人,红白事都要互相帮忙,不止份子钱,还得出人工,必须到场帮忙的那种。

标题故事从这里开始,10月6日婚礼的是埔后祖的次子的后裔,常年居住在深圳,我和他并不是很熟悉,但是他的父亲岁数比我大不了多少,儿时还算是熟识,10月5日,我们就得出人工去帮忙,父亲医院有个会要开,叔叔还在给我的房子木作做收尾工作,所以我和堂弟就代长辈去帮忙了,其实现在婚宴都是承包给别人了,不需要像以前一样要到处去找人借桌子椅子,要去出工人扛座椅,场景布置也都是交给婚庆公司布置了,需要做的也仅仅是采买一些物品以及收红包、记账、手写贺联这些,主人家是不需要动手干活的,全程看着就行。

妇女们比较辛苦,需要煮点心给来帮忙的人吃,要煮四餐大锅饭,来帮忙的人应该有三十几个吧,里面包括妇女们,妇女们从一大早就在厨房切菜做饭,热火朝天的。汉子们相对而言只有三个岗位会比较累人,第一泡茶、第二写帖、第三收账, 也不是说体力劳动辛苦,这三个岗位需要从早上8点待到晚上8点,因为中途会有亲朋来贺礼,流程就是进门先到泡茶区喝一杯喜茶,然后走过来登记写贴,最后给红包记账,收了钱,给递一下喜烟和喜糖。

我又起了个大早,8点多就和堂弟一起过去了,其实路上我也犯嘀咕,这三个差事千万不要叫我们做啊,我也想像他们一样摸鱼,混个脸,打个卡,溜达一下,就跑啦,哈哈。我们一到,那些年长的长辈(老油条)立马把收钱的背包甩给我,那会一阵商业吹捧,说我生意做那么大,收钱最合适了,说我们堂弟是大先生,写贴最合适了…

呃,他们说啥,我们都不暗爽,因为,哈哈,摸不了鱼了,长辈安排的工作总不能不接吧,好吧,那就挽起袖子开干。

这就是我们的工位,我背着一个斜挎包,我们这家家都有一本《人情簿》,里面要记上谁谁谁贺礼多少,这样以后到对方有喜事的时候,就可以翻阅一下,当时人家拿了多少份子钱过来,要高于当时回份子。

绝大部分的人随份子都是现金装红包,但是也有部分人是扫码发红包,我找主人家要了个收款二维码,每次遇到扫码付款的话,我就给新郎的父亲微信发一下名字金额信息报账,一开始还算顺利,但是一会儿新郎的父亲突然坐到我的身边说他那边挺多朋友直接微信给他转账,然后他就在那边念名字和金额,我脑壳嗡嗡的,这样我等下怎么统计和核对我的收支呢?好吧,用最蠢的方法,就是他坐在那边回忆谁谁谁给他转账,告诉我,我就用微信再编辑一下信息发给他,然后我按照我微信聊天记录的内容一条一条的写入《人情簿》,同时堂弟负责写请柬帖子,这总不至于出错吧。

记账的过程中发现了一个问题,就是同样都是从埔后出来的人,怎么只有我们三家(我父亲三兄弟)有随份子钱,其他的大房二房的人都没有随份子,这个留着等下再叙。

收到了晚上8点多,陆陆续续的亲朋好友都来了,我们到了结算时刻,我统计过手的金额,堂弟统计他登记的金额,然后我们再同时报出自己的金额,嗯,现金流未差分毫,其中新郎父亲自己微信收的红包未经我手,我就不知道对不对了,反正他有跟我说,我就微信发一条登记给他,再综合起来,我们放出去的请柬和《人情簿》一摸一样,总计随份子的人有两三百多位,最后一道工序就是把这些人的名字写到《嘉宾名录》里,张贴到主人家客厅墙上。

我把收起来的钱,和单独分成两类的账单都统计出来了,亲手交到新郎父亲的手里,并报数给他,我说你要不要点一下钱,他说:三八啊自己人,你们能来帮忙已经很辛苦你们了,不用点了。其实我的想法是,我们经手的现金,和《人情簿》对上了,并且非现金的部分我们在《人情簿》上也做了个小圆圈的标识,我们核准没出入,那就是对的了,然后我们就回家了。

第二天,因为我有个姨表弟,他们村信奉的里主尊王诞辰,佛事宴请,英济庙始建于宋熙宁元年(1068年),庙内奉祀里主尊王,相传系北宋名将杨延昭的化身。在酒店摆宴,我和这个姨表弟比较熟悉,就我去赴宴了,这条线是亲戚,亲戚如果佛事摆宴请客的话,不需要带份子钱,只需要买一个大鞭炮或者大烟花,还要一份食材(比如一包香菇,或者一捆米粉,或者一箱泡面都可以。)然后我就扛着个大鞭炮去吃宴席,改换兄长去10月6日的婚宴这里帮忙。

中秋夜,先去丈母娘家,订了个蛋糕,带娃儿去给丈母娘过生日,在丈母娘家吃了晚饭,然后再回山上,带娃和爷爷奶奶团圆吃月饼,家里组团再博饼了一回,现金1000给娃儿们玩,抢到的就是给他们的额外零花钱,郡主的状元9,贝勒的状元8。

兄长从这场婚宴回来,也发现了为什么就只收我们三房的随份子钱,他们长房和二房的人都没有随份子,父亲解释说是几年前长房那边有一个结婚的,当时都收了份子钱,但是第二天说埔后厝的都是自己人,就不收来收去的了(实则是因为那家的人只有一个儿子,他儿子就结婚一次,但是别人家儿子多的话,他也要随份子的话,觉得自己特别吃亏。)然后他们就把长房和二房的份子钱都退了,唯独没有退我们三房的,所以我们也都是家家随份子,他们都照收。

10月8日的婚宴是长房那边的,就是上述宗族第一个退份子钱的这个人的弟弟的二儿子结婚,轮到我哥去帮忙。昨天,就是10月7日,他带着份子就去了,晚上回来跟父亲说长房那边说退份子钱,不收红包,说是昨天二房那场婚礼后,他们长房和二房的谈好了,就这么确定了,接下来就不互相收红包了。父亲表示没什么意见,随便吧,母亲就生气了,因为他们那边人丁也不少,这些年我们份子也随了几万块,我们三房因为有两代人下南洋,在家里的就我们三家,所以我们婚宴并不多,眼下我也还没有办酒席,如果我今年办酒席的话,那他们就在这喊不互相随份子了,我们早几年付出去的这部分,不属我们三房最亏吗?

我也生气了,我生气的点并不是因为早前付出去的份子钱,而是,你们大房二房商量这个决定,也没跟我们三房的说啊,还直接说我们三房的年轻人同意了,也没人问我们啊,同意个毛,我和堂弟在二房那天帮忙的时候,我们话都没讲一句,我们又不傻,我们付出去那么多,说不收就不收,是不是傻。

但是我的辈分只到这里了,我也没身份去和他们交涉,对吧,辈分低就等着辈分高的长者商量个结果吧,假期也要结束了,怕明天高速会大堵车,所以提前收拾一下,就回厦门了。

刚到厦门,父亲就给我发来微信,问是不是昨天给二房的婚宴记账,记错了,漏掉了一个人,没给人家记上去,我一脸懵逼。说是刚才二房喜事的新郎父亲晚上来我们家说,说是有一个宗亲,兄弟有三人,只登记了两个名字,漏掉了一个,人家第二天正宴的时候来了,看到墙上的贵宾名录里没有他的名字,搞得很尴尬,像是来蹭吃的一样,问是不是我们给人家漏掉了。

我就反问,那他有收到请柬吗?我有给他请柬吗?如果有请柬,那我肯定收到份子钱了,如果没有收到请柬,那肯定没交份子钱。

二房那个人跟父亲说是,漏掉的那个人是托别人来随的份子,可能自己觉得有随,所以第二天婚宴就直接来了,才看到没他的名字,所以很尴尬。

我做事这么一丝不苟的人,怎么可能犯这个错误,如果这里有出入了,然后我还跟主人家说钱都是对得上的,那不是在影射我做的账有问题嘛,不行不行,我必须掰扯掰扯。

二房那个人,一口咬着说是人家兄弟三人,怎么可能就一个不来随份子呢,我就很不高兴了,这个是小宗亲,随份子就100块钱,我不至于吧,我说我肯定我们的钱和账是对得上的,只要核对一下《人情簿》就行,上面如果没有这个人的名字,那肯定就是这个人没来随份子,如果《人情簿》上有,但是《嘉宾名录》上没有,那就是我堂弟抄写名录的时候漏掉了,但是钱和账是对的。

父亲就去问二房那个人,让他翻阅一下《人情簿》有没有这个漏掉的人的名字,对方表现出来的就是,哎呀,又不是什么大问题,不用去翻看了,这个事就过了啊。

过个毛,这不明摆着就是故意的嘛,你倒是查啊,你不查,还追到我家来说这个事,不介意?

最后我让父亲去问,问来代交份子钱的那个人,他一个人来代交了六份,请柬是6张,请柬没有转交的话,就在他那里,是不是有这个人,主人家不告知《人情簿》里面有没有,那就只能用这个方法了。

最后对方给我打来了电话,说是《人情簿》里面没有,就是那个来代交的人忘记了,少报了名字,也没有给这个人的份子钱。跟我道歉说不好意思,他没有查验,多嘴一说。

我也不能直接表达不满,毕竟大家堂亲关系还是要保持的,我说:没事没事,核对了就可以啦,既然做一件事,肯定是要做好做完整。

末了还得客气的说,如果深圳回来有经过厦门,电话联系一下,来家里坐一下泡茶啊。

其实,就是因为大房退了份子钱,他二房的前一天收份子钱,没退,这就下不来台了,所以找个事情来我们家扑腾一下,好像我都对不起他似的,唉。

吃力不讨好,唉,总结一句,人啊,真丑陋,在宗族交际这件事情上,不是所有人都像我一样,。

又是一年博饼时,迎中秋庆国庆•叙乡情促公益

2025-10-01 02:43:43

时光飞逝,唰一下,一年又一年,去年刚更新的日记《公益促进会晚宴,迎中秋庆国庆,叙乡情促公益。》好像也没过多久,又临近中秋了。

第二届安溪县官桥镇善坛公益促进会第四次会员大会暨中秋联谊活动在厦门牡丹港都圆满举行。

会长致辞:中秋节是团圆的节日,是丰收的节日,也是感恩的节日。今夜,我们虽然身处他乡,但我们的心与故乡紧密相连。今晚,让我们共同品尝美食美酒,共同享受团圆的喜悦,也共同感受由血脉和乡情编织的温暖。安溪县官桥镇善坛村公益促进会成立9年来,积极为厦门和善坛村的发展架起一座合作的桥梁,努力促成在厦善坛宗亲们的互动互联、互帮互助、共同进步,致力于让每位在厦宗亲感受到大家庭的关爱与温暖。在过去的一年里,我们先后组织了高考助学奖学、环善坛公益跑等活动,实实在在为父老乡亲办了一些事。

在今后的日子,善坛公益促进会将继续秉持并发扬“善”的精神,努力为善坛宗亲服务,为家乡善坛村的发展鼓舞与欢呼,并在建设宗亲共同心灵家园的过程中,将善坛公益促进会的“公益”两个字擦得更加响亮。

监事报告:2024年先后开展如下公益活动:

1)  春节敬老扶助活动;

2)  “迎春接福,环村公益跑”;

3)  奖学助学活动;

4)  漳州海澄祭祖活动等。

5) 组织并赞助篮球队参与新春篮球赛。

领导祝酒,举杯共饮家乡情。

晚宴联谊,嗯,突然发现,好多新一代的小伙子,呃,我不认识,侧面反映我开始步入中年,青年一代突起了。

魔术表演,手法,呃,还行。

凤舞舞蹈表演,我们畲族的图腾是凤凰,这个节目挺贴近。

川剧变脸,气氛不错,高潮不断。

小朋友们很喜欢这个节目。

萨克斯演奏,很优雅,我以前学过,但是技艺就上不了台了。

舞蹈节目名称我没记住,但是,哈哈,跳得挺好看,哈哈哈哈。

宴席结束后开启博饼活动。

博饼规则介绍,挺好玩的,不是福建人,也可以试着组织玩一下,博到状元代表接下来的一年都会好运连连。

博饼起源于厦门,是闽南地区特有的中秋民俗活动,相传由明末清初郑成功为解士兵思乡之情、鼓舞士气而创设,将科举制度的功名等级融入掷骰子游戏中。

博饼核心是用6粒骰子掷出不同组合,对应“状元”“榜眼”“探花”等不同奖项,奖品多为月饼或日常用品,如今已成为亲友、同事间中秋聚会的趣味互动。

活动奖品清单,虽然都是些生活用品,但是实用,图中骰子开出来的就是状元插金花,四个四,两个一,天牌的存在。

此次战利品,四个三红奖品,我们拿了三个回家,哈哈,还有几个四进,我已经好多年没有博出状元了,反正乐在参与。

过几天还有几场博饼宴要参加,祝我好运,哈哈,嗯,就这么水了一篇文章。

又没有车,为什么要等红灯,是不是傻。

2025-09-14 19:45:14

昨晚,八九点的时候,接到朋友的电话,问我晚上有空吗?约我喝茶,应约了。

陪娃儿看了部好电影《姥姥的外孙》,泰剧,剧情情节就不透了,可以去看看,潮汕族裔和我们闽南一脉相传的一致,所以剧情代入感极强,几次眼泪婆娑,差点滴落,娃儿在身旁,嗯,故作坚强。

看完电影,催娃洗漱,哄娃睡觉,这是每天的常规流程,折腾完十一点多了,才想起有约,溜达出门,心想也不远,就不开车了,机车在小区车棚里,要步行一段路,小毛驴在小区门口,就骑小毛驴吧,其实我很不喜欢骑小毛驴,总觉得底盘太轻,过弯就晃着飘,当然也许是我太重了。

慢慢悠悠的溜达,前方绿灯倒数12秒,目测距离,小毛驴25km/h可能连黄灯都追不上,呃,也许可能勉强可以,还是算了,等吧,停着等红灯的时候,右后方来了一辆小毛驴,一对中年夫妇,因我在前停车等候,他们从右转道直行闯红灯通过,后座的女的,回头看我一眼,念叨一句:又没有车,为什么要等红灯,是不是傻。

尽管她说的很小声,但是夜太静了,我字字句句都听得很清楚,呃,同是闽南话,她的口音明显是本地土著,听到这句话,我没有感觉到被冒犯,我只是突然间想到了,对哦,都没有车,为什么我还要遵守规则等着红绿灯呢?

然后,我还是等到了绿灯亮起,呃,我觉得遵守交通规则,是一位公民基本的素养,我不能看别人没素质,我也跟着没素质吧,哈哈,再着,万一路口也来一台不礼让的车呢,故事就悲伤了。

读书的时候《道德与法治》里面教的:无规矩不成方圆,我隐约记得是孟子说的。我是一个固守规则的人,生活中一些小小细节,我总是遵从规则,所以我应该是挺无趣的一个人。

到了公司,等了快一个小时,他才来,和另外一个认识的小伙伴一起来的,我在泡茶区泡着茶,大家唠了一会嗑,后来小伙伴先走了,就剩我俩,也没啥主题,就他泡茶,我打一会游戏玩玩手机,气氛看似很正常,平时也经常就这状态,我并没有想多什么。

快三点的时候,他问我,打完了吗?

呃,这是有事聊啊!

我赶紧收起手机,一本正经的,来,啥事?

Ps:其实,我猜到了些什么,他还没开口的时候。

他:想开口再跟你借点钱,这次真的要死了,资金转不过来了。

听到这句话的时候,我有点儿不高兴了,我直接怼回去了。

我:我话就直说了,你也别不高兴,你去年就开始叫要死了要死了,这么久了,还是要死了,你咋不去死?去年说第二天按揭还不上,我就帮你安排了,你说后面还给我,你也没还我,后来你说要再创业,我也入资帮扶你了,一毛钱也没见给我分过,这次又要死了要死了,逮着我造是吗?对不起,我不接受这样的事,救急不救穷,你这不是急,你这是穷,穷还是你自己造的,我帮不上你了。

他一脸的不好意思,任凭我输出,末了还是坚持着希望我能帮帮他:我那个房子想卖,但是现在的行情不好,而且学区房,新学校,没有高年级的班,转学的转不了,所以最近都没有人来看房,有两三组带看的客户,都说考虑一下。

我:来看房就是要买房,你真的想解决问题,就降价赶紧把房子卖了,不然一个月还要一万八的按揭,越拖越死。

他:有啊,我都比别人挂的价格低了。

我:不是挂的价格问题,你就直接一口价,直接别人的成交价再降20万,我不相信还会没人买,你从去年就说你要把这套房子卖了,说了一年你也没卖,你就想着能翻身,然后让别人帮你度难关,你信不信这次我拿给你,你就拿去先解决自己的问题了,房子你还是不会卖。

他:这次不会了,我肯定是要卖的,就是这两三个月比较没什么人看房,过年那会应该价格会比较好出手。

我:你这就很过分了,你手握着房产资产,然后遇到难关就要别人帮你,你如果觉得我说的有道理,你就尽快把房子出手了,你也不是说只有这一套房,卖了就没地方住。

他:你这次再帮我一下,你相信我,我年底肯定把房子卖了,马上把你的钱还你。

我:这无关相不相信,你还是这几天就去操作吧,如果我这次再帮你,你又可以拖一段时间,有得拖,你也不会去做,等把这钱再用完了,你又会是今天这状态。

我拒绝得很坚决,其实内心多少还有些不好意思的,但是我觉得不能一而再再而三了,那我就是冤大头了。认识两年多,受朋友所托,让我多多帮扶,我也挺用心的帮扶了,但这,就有点过分了。

我这一生至此,有欠过别人钱,那也只是生意上的亏损欠款,想法设法都要还清,我从来没有找别人借钱用来度生活,口袋只有十块钱,我都会掰着花,熬过去。

他不止一套房,说要卖掉的房子,还是投资房没有住,按揭还不上,怕断供,就要借钱,为什么不自己去承担呢?把压力给到朋友帮他担着,所谓朋友,这是朋友吗?

然后三点多,我就回家了,四点多他截图和他媳妇的聊天记录给我看,对话中意思是这次他们真的要破产了,他媳妇想到这个点烦死了还睡不着。然后他说他也是没办法才又找我的,希望我能再帮帮他。

我直接已读不回,呃,你睡不着,关我什么事,你破不破产关我什么事,又不是我害你破产的。

我想,朋友,应该是资源上互相整合促进共同发展,而不是,朋友,借点钱花花。

我想,我的坚持是对的,这一次。