MoreRSS

site iconTuNan | 图南修改

验光师,深受佛教和道教的影响,爱好阅读和博客。70后。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

TuNan | 图南的 RSS 预览

跟着南怀瑾先生读易经(三)-乾卦

2025-06-02 11:09:34

跟着南怀瑾先生读易经(三)-乾卦

在《易经》六十四卦中,乾卦排第一,六个阳爻组成,纯阳之象,代表着“天”。《易经》说:“天行健,君子以自强不息。”南怀瑾先生说,乾卦讲的不是强硬,而是刚中有柔、知进知退的修行哲学

如果你愿意,我们可以把这六爻看作是一个人从默默无闻到巅峰,再到退场的全过程,像一条龙在云天之间起伏——人生,其实就是一场“龙的修行”。


初九:潜龙勿用

潜伏水底的龙,不宜贸然行动。

这是人生的起点。你也许很有才华,但暂时没机会展现。南师说,这是“厚德载物”的阶段。年轻人需要修身、蓄势、低调、耐性,急不得。真正的大器,必须晚成。


九二:见龙在田,利见大人

龙出现在田野,可以开始展现自己,但要配合“君子”。

你开始被看见了,有了发挥空间,但不能逞强。南怀瑾提醒,这时要靠贵人提携、合作共赢。不是你独领风骚的时候,而是学习如何与人共事、与人共舞。

🤝 聪明人知道什么时候该“做配角”。

九三:君子终日乾乾,夕惕若,厉无咎

君子整天努力,小心谨慎,没有灾祸。

你现在已经小有成就,但挑战也来了。越往高处走,越要如履薄冰。南师说:“怕的不是失败,而是得意忘形。”这时,能不能稳住自己,比有没有本事更重要


九四:或跃在渊,无咎

想跳出深渊,还在酝酿阶段。

这是人生最纠结的阶段——想更进一步,但不确定时机。南师讲,这是“进退之间”的考验。冲得太早容易摔,拖得太久会错过。要用智慧判断,靠内在定力等待跳跃的时机


九五:飞龙在天,利见大人

龙已飞上天,是大展宏图之时。

你到了人生的高光时刻。南怀瑾说,这是**“正大光明”的君子之位**。但他也提醒,最危险的地方,就是你最得意的时候。要懂得感恩、谦逊,不然下一个就是——


上九:亢龙有悔

龙飞得太高,刚过头了,结果反而招来悔恨。

这一爻,是对“成功”的告诫。南怀瑾说:“亢,就是太过,太刚就易折。”人如果过度自负、掌控欲强、目中无人,即使再成功,也会跌得很惨。真正的圆满,不是无限膨胀,而是适时归隐,功成身退

🌓 人生最高境界,不是耀眼,而是知止。

用九:见群龙无首,吉

群龙无首,天下大吉。

这是道成的象征。六爻的“龙”,走到最后已经没有“谁当首”的执念。真正的君子,是无我无争、无名无位。南师说,这是“无为而无不为”的境界


写在最后:

乾卦教我们的,不是一路“刚”到底,而是:

刚中有柔、盛而能退、进退有度、知时而动。

在人生的每个阶段,你都可以是“龙”——
但你要知道:何时沉潜,何时跃起,何时收手。

博客从Hugo迁移到Ghost

2025-06-01 16:01:48

博客从Hugo迁移到Ghost

我的博客从2023年开始从WordPress迁移到Hugo,使用Hugo有很多的优点,比如说省钱,只需把博客部署在GitHub上,就能剩下一笔VPS的开支。但是它也有很多的缺点,最让我感觉到不方便的地方在于,我不能随时随地的写博客。

最早的时候,我在我店里的电脑上部署了Hugo,我写博客就只能到店里之后才能进行,当然也可以在别的地方写好,然后在店里的电脑上进行上传,但是这个过程是不连续的。有时候我们做事情讲究一鼓作气,很多时候,因为不连续的原因,写博客的兴致也少了很多。

后来,我们Hugo系统部署在我的VPS上。这样我就可以随时随地的写博客了,但是还有一个问题就是,写博客需要打开终端,连上VPS,步骤太多。因此,我不止一次的想要从Hugo迁移会WordPress。但是从网上搜索的教程全都是从WordPress迁移到Hugo的。大佬们好像是不屑于再回归WordPress。

最近了解到了ghost这个系统,我用docker安装上之后体验了一下,感觉不错。没有WordPress那么臃肿,有后台可以直接写文章。于是就想把博客迁移到Ghost,网上搜索相关教程当然也是无果的。博友建议我寻求AI的帮助。

疫情期间,我也自学过一点点python。于是我就想把Hugo的md文件,转化成ghost导入的json文件。借助ChatGPT,终于把代码给搞了出来。代码如下:

转换代码


import os
import json
import re
import yaml
import markdown
from datetime import datetime

def parse_markdown(filepath):
    with open(filepath, 'r', encoding='utf-8') as f:
        text = f.read()

    match = re.match(r'^---\n(.*?)\n---\n(.*)', text, re.DOTALL)
    if not match:
        print(f"⚠️ 跳过文件:{filepath},没有找到 front matter")
        return None

    front_matter_text, content_part = match.groups()
    try:
        front_matter = yaml.safe_load(front_matter_text)
    except Exception as e:
        print(f"⚠️ YAML 解析错误:{filepath} -> {e}")
        return None

    title = front_matter.get('title')
    raw_date = front_matter.get('date')
    tags = front_matter.get('tags', [])

    if not title or not raw_date or not content_part.strip():
        print(f"⚠️ 数据不完整,跳过文件:{filepath} -> title: {title}, date: {raw_date}, content_length: {len(content_part.strip())}")
        return None

    try:
        if isinstance(raw_date, datetime):
            dt = raw_date
        elif isinstance(raw_date, str):
            try:
                dt = datetime.fromisoformat(raw_date.replace("Z", "+00:00"))
            except ValueError:
                try:
                    dt = datetime.strptime(raw_date, "%Y-%m-%d %H:%M:%S")
                except ValueError:
                    dt = datetime.strptime(raw_date, "%Y-%m-%dT%H:%M:%S%z")
        else:
            print(f"⚠️ 日期格式无法识别,跳过:{filepath} -> date: {raw_date}")
            return None
    except Exception as e:
        print(f"⚠️ 日期解析失败:{filepath} -> {e}")
        return None

    date_str = dt.strftime('%Y-%m-%dT%H:%M:%S.000Z')

    html_content = markdown.markdown(content_part.strip(), extensions=['extra', 'codehilite', 'tables'])

    return {
        'title': title,
        'slug': os.path.splitext(os.path.basename(filepath))[0],
        'html': html_content,
        'created_at': date_str,
        'updated_at': date_str,
        'tags': tags
    }


def walk_md_files(base_dir):
    for root, _, files in os.walk(base_dir):
        for file in files:
            if file.endswith('.md'):
                yield os.path.join(root, file)

def main():
    base_dir = './'
    print(f"开始遍历目录:{base_dir}")
    posts = []
    tags_set = set()

    for filepath in walk_md_files(base_dir):
        print(f"📄 正在处理文件:{filepath}")
        post = parse_markdown(filepath)
        if post:
            post_tags = []
            for tag_name in post['tags']:
                tag_str = str(tag_name).strip()
                if tag_str:
                    tags_set.add(tag_str)
                    post_tags.append(tag_str)

            post['tags'] = post_tags
            posts.append(post)

    ghost_data = {
        "meta": {
            "exported_on": int(datetime.now().timestamp() * 1000),
            "version": "5.0.0"
        },
        "data": {
            "posts": [],
            "tags": [],
            "posts_tags": [],
            "users": [
                {
                    "id": 1,
                    "name": "admin",
                    "slug": "admin",
                    "email": "[email protected]"
                }
            ]
        }
    }

    for i, post in enumerate(posts, start=1):
        ghost_data["data"]["posts"].append({
            "id": i,
            "title": post["title"],
            "slug": post["slug"],
            "html": post["html"],
            "status": "published",
            "created_at": post["created_at"],
            "updated_at": post["updated_at"],
            "published_at": post["created_at"],
            "author_id": 1
        })

    tag_id_map = {tag: idx + 1 for idx, tag in enumerate(tags_set)}
    for tag, tag_id in tag_id_map.items():
        ghost_data["data"]["tags"].append({
            "id": tag_id,
            "name": tag,
            "slug": tag.lower().replace(" ", "-")
        })

    for post_id, post in enumerate(posts, start=1):
        for tag in post["tags"]:
            ghost_data["data"]["posts_tags"].append({
                "post_id": post_id,
                "tag_id": tag_id_map[tag]
            })

    with open("ghost_import.json", "w", encoding="utf-8") as f:
        json.dump(ghost_data, f, ensure_ascii=False, indent=2)
    print("✅ 已生成 ghost_import.json 文件")

if __name__ == "__main__":
    main()

使用方法:

把这个代码保存成Hugotoghost.py,把这个文件放在content文件夹里。然后输入命令:

python hugotoghost.py

会生成一个ghost_import.json的文件,在ghost的后台把这个文件上传即可。

碾转

2025-05-19 23:49:19

碾转

刚看到 “碾转” 这俩字点进来的朋友,估计还摸不着头脑。其实这是种吃食,现在知道的人不多了。

过去青黄不接的时候,地里的青麦熟了,人们就割下青麦,搓掉外皮,把麦仁蒸熟晾干,再放进石磨里碾。磨盘一圈圈转,出来的细长条,就是碾转。吃法不讲究,打俩鸡蛋炒一炒,或者拌点蒜末香油就能吃。晒干了收起来,想吃的时候上锅一蒸,照样能填饱肚子。老一辈人靠着这不起眼的东西,熬过饥荒,等到新麦磨成面粉。

等我记事时,日子没那么紧巴了,谁家也舍不得割还没熟透的麦子。做碾转又费工夫,得守着石磨一圈圈推,慢慢就没人做了。我就吃过一回,还是邻居大娘送来的。那碗碾转端在手里,麦香直往鼻子里钻,吃起来又筋道又香甜,到现在都忘不了。

前两天上班路上,瞧见有小贩在卖碾转,用白布盖着,底下透出青绿的颜色。我称了半斤带回家,妻子压根没听说过这东西。我搁锅里用油炒了炒,吃起来还是那么有嚼劲,可总觉得少了点啥。想来想去才明白,现在啥都不缺,吃啥都不稀罕了。小时候难得吃上一回,那滋味里掺着期待和满足,哪是现在能比的。

有些味道,大概只能留在回忆里了。

女儿分班后的第一次家长会

2025-05-06 21:33:20

女儿分班后的第一次家长会

昨天参加了女儿学校这学期的家长会,依照惯例,每学期期中考试后都会有这么一次例行沟通,更何况这次是分科之后的第一次期中考试。

女儿这次期中考试也还行,班级第二,年级第六。和上次的月考相比,虽然英语和政治都没有能拿到第一,数学的成绩提升了不少,所以,整体排名还是上升了。

据女儿介绍,她的新班主任出生于2000年,是一位刚工作不久的年轻女教师。

见到她的第一眼,我的内心有点惊讶:老师好年轻!一张娃娃脸,脸上还带着学生气,刘海也是和我女儿一样的“鲇鱼须”款式,再想想她的年龄,和我侄女差不多大。

开会时,能看出她有点紧张。这也难怪,台下坐着的,基本上是她爸爸妈妈辈的叔叔阿姨,而她要站在讲台上,跟这一群长辈讲“育儿经”,这画面多少有点尴尬。

但不得不说,年轻人干脆利落,没有废话。她把该说的内容简要地介绍了一遍,包括学生的作息安排、学科老师的配备、目前整体学习状态的一些观察,讲得简洁清楚,没有过多情绪渲染,也没有“高考”压迫式的老套路。全程不到二十分钟。

接下来,她还特地留出时间供家长单独交流孩子的具体情况。这样的安排倒让我觉得挺好,效率高,沟通也更有针对性。

这次家长会,和我以往参加的那些一个小时起步、教育理念讲个没完的会议截然不同。但我不觉得哪里不好。

反而让我意识到,时间在变,教育方式也在变。

我们这代人,习惯了老师一板一眼的讲解,习惯了“资深”二字带来的安全感。但现在的年轻老师,可能不再那么强调“权威”与“经验”,而更愿意用一种平等沟通的姿态来面对学生和家长。

虽然她还年轻,阅历也许不多,但我看到她在认真、努力地扮演好老师的角色。她也许没有几十年的教育经验,但她和孩子们同频,能理解他们的语言、节奏和情绪,这本身就是一种难能可贵的优势。

也许,这就是时代的交接方式。

在一个个看似“不一样”的变化中,我们慢慢交出手中的接力棒,看着下一代在新的节奏里成长、奔跑。

他们会有他们的方式,也终将走出属于他们自己的路。

人生没有剧本,活着就是目的

2025-05-05 01:10:48

人生没有剧本,活着就是目的

读南怀瑾先生文集《人生无真相》,南先生提到有次去一个大学做演讲,刚开始学校想让他谈谈人生的目的,他说人生的目的其实就是人生。

人如草芥,生于天地之间,本就没有预设的剧本。父母给予我们生命,是一种机缘,也是某种巧合。我们在烟火人间跌跌撞撞,被柴米油盐推着向前,一日三餐中奔忙,一年四季里老去。等到离开时,不过两手空空,连半片云彩都带不走。

所以说,活着本身,就是目的。

人生没有剧本,活着就是目的

正如慧开禅师所言:“春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。”人生的意义,不必刻意追问,它常常就藏在那些微不足道的日常里: 清晨为爱人做一顿热腾腾的早餐, 傍晚接过孩子递来的半块西瓜, 在人海中接住一个陌生人的微笑, 为路边一朵花的盛开驻足片刻……

人生如同一场即兴戏,重要的不是剧本的宏大与否,而是你投入其中时的每一颦每一笑。 与其在“不知所以然”中焦虑惶恐,不如学一学村口那棵老槐树: 春生、夏长、秋收、冬藏,顺应自然,静守四时。把每一个当下都活成自然舒展的模样,就是最好的活法。

高速公路上的月季

2025-04-20 00:24:15

高速公路上的月季

傍晚,车开上了机场高速,去接女儿回家。

她的学校离家太远了,住校,一个星期才回来一次。

天气挺舒服,阳光斜斜地照在前挡风玻璃上,风也不大,尽管有大风黄色预警,所以一路上心情挺放松的。

车流不少,大家都在自己的节奏里赶路。突然,我注意到路中间隔离带上开满了月季。

红的、粉的、橙的,一丛接一丛,像是特意为这条灰色的高速路点缀了一场春天的演出。

这个季节已经快到头了,春天要过去了。清明刚过,谷雨也快到了,一切都在往最旺盛的状态走。

草木知春不久归,百般红紫斗芳菲,这时候的花,都是拼尽全力在盛放;

就像女儿这个年纪,青春正在往外冒,藏也藏不住。


她现在说话不多了,动作利落,语气也更笃定,跟小时候那个爱缠着我问这问那的小姑娘不太一样了。

可她一上车,看到我的那一笑,还是和小时候一模一样。

那一瞬间,我突然有点明白,这条高速路上盛开的月季,为什么会让我触动。


人生就像条高速公路,我们总是在赶路、追时间,很少慢下来去看一眼沿途的风景。

可有些风景,它不会喊你一声,却会在你不经意间,敲一下你的心。

那天接她回家的路上,那些月季花让我记住了这个春天的尾巴。

女儿的笑,也让我觉得,春天还没走远。