《有理想的人如何运用老庄的智慧》讲座笔记与总结
  • 时间:2017-09-10
  • 主讲人: 杜保瑞 老师

1、理想与人生的关系是什么?

找到生命的意义,终生努力的目标,时刻清醒自觉,价值判断有据,应对进退合理

  • 找有意义的事全心投入,不好高骛远,也不轻视自己。
  • 有自己的原则,做任何事都不违背自己设定的目标。
  • 有自己的节奏,有目标,找到自己的角色扮演。认同自己,就是尊重自己,即自重。能够不为一些人或事所左右。

2、如何发掘(实现)个人的理想?

先有爱心,愿意付出,愿意忍耐,尊重自己。

中国哲学都是有理想的人的哲学

墨家:自救团体照顾百姓

儒家:知识分子从政

  • 儒家:敬鬼神而远之,协助王作为民的代言人。承担责任,从政为天下服务。

庄子:追求个人天分的个性逍遥

  • 不相信体制,对自己喜欢的事做到极致。

老子:站在高位照顾全民

  • 多人合作,把利益让出去,最终目的把事办成。

法家:登上高峰,富国强兵

  • 小人是国君欲望的代言人
  • 权臣是国君无能表现的发言人

佛家:面对命运了脱生死

3、孔孟所追求的以及所面对的理想是什么?

孔子:为学,修己,致孝,应对,辩惑,崇礼,问仁,治国。

孟子:圣王,圣贤,致仕,性善,求放心,浩然之气。

4、庄子所追求的以及所面对的理想是什么?

逍遥游、齐物论、养生主、人间世、德充符、大宗师、应帝王

5、老子所追求的以及所面对的理想是什么?

有无相生。反者道之动 弱者道之用。玄同,玄德。不敢为天下先。以无事取天下。天下莫能与之争。

6、一个儒者如何学习庄子的智慧。

看破体制的绝对性,一切靠自己,寻求可以实践的事业。

7、一个儒者如何学习老子的智慧。

卸下道德仁义功名利禄之心,顾全大局,委曲求全,忍辱负重,给而不取。

8、圆滿的理想主义者。

一切自足,随时调整角色,一切都是别人的,一切都是自己的。

释义:

  • 朝闻道,夕死可矣: 早晨闻道,晚上死去。形容对真理或某种信仰追求的迫切。
  • 欲仁斯仁至: 想追求仁,那么仁就会来到
  • 反者道之动 弱者道之用: 循环往复的运动变化,是道的运动,道的作用是微妙、柔弱的。天下的万物产生于看得见的有形质,有形质又产生于不可见的无形质。
  • 敬鬼神而远之: 原意是敬之而不亲近之意。现在常用来指对某些人所持的一种态度,即不愿理睬他,又怕得罪他,所以对他客客气气,但是绝不接近。
  • 上有所好,下必甚焉: 居上位的人有哪一种爱好,在下面的人必定爱好得更厉害。指上行下效,影响深重。

  • 燕京读书会blog:传承中华生命智慧为目标。国学研读。

  • 《人物志》:对职场上人分类。人物性格的优缺点。甄别人才,选贤任能。了解自己及自己的部署。协助自己了解状态。

    • 天才 通才 偏才
    • 平步青云上升的原则:做公家的事,不争公家的事的名和利。
  • 《菜根谭》:三大智慧,儒家为人服务的人生观;庄子潇洒自由的智慧,不被别人的眼光,世俗所束缚;老子创造福报,不与人争斗的智慧。


Ubuntu16.04 下编译安装tesseract 4.00.00alpha 及测试
  1. 3.05.01 及 以后的版本没有Linux的二进制包,需要编译安装.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 安装相关组件
    sudo apt-get install g++ # or clang++ (presumably)
    sudo apt-get install autoconf automake libtool
    sudo apt-get install autoconf-archive
    sudo apt-get install pkg-config
    sudo apt-get install libpng12-dev
    sudo apt-get install libjpeg8-dev
    sudo apt-get install libtiff5-dev
    sudo apt-get install zlib1g-dev
    sudo apt-get install libicu-dev
    sudo apt-get install libpango1.0-dev
    sudo apt-get install libcairo2-dev
  2. 依赖图像库Leptonica,在编译tesseract前先编译Leptonica, 版本对应关系见Compiling#linux,3.05对应leptonica-1.74.tar.gz

    1
    2
    3
    4
    5
    6
    wget http://www.leptonica.org/source/leptonica-1.74.tar.gz
    tar -xvf leptonica-1.74.tar.gz
    cd leptonica-1.74
    ./configure
    make
    make install
  3. 编译安装tesseract 4.00.00alpha

    1
    2
    3
    4
    5
    6
    git clone https://github.com/tesseract-ocr/tesseract.git
    cd tesseract
    ./autogen.sh
    ./configure
    make
    make install

  • wiki

    python3 调用

    1
    sudo pip3 install pytesseract
    1
    2
    import pytesseract
    vcode = pytesseract.image_to_string(im, lang='eng', config='-psm 12 --tessdata-dir /tessdata/')

基于相同颜色连通像素个数的统计进行图像字符识别

问题: 对如下图中的字符进行识别:

  • 样本:2903.bmp

解题思路:

  • 无论是图像,音频的识别,不外乎是对各种特征(特征向量)进行统计归纳。
  • 放大后的样本:big_2903.png
  • 通过观察,发现这是一张简单的,非常有规律可循的图。 越有规律越容易进行分类。这里的思路就是自左至右依次对相同颜色的像素连通区进行像素个数统计,从而制成像素与字符对应的字典进行识别。

    局限性及应对措施:

  • 此种方法只针对’少量的’,’简单的‘字符图形。若字符种类过多,容易造成不同像素个数冲突的问题。
  • 针对冲突问题,一种有限的解决办法即针对’不同’的特征,进行二次验证。

    python实现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    from PIL import Image
    import numpy as np

    class dfs_simple_digital_chacpt(object):
    def __init__(self, path):
    self.white = [238, 238, 238]
    self.row_num = 10
    self.col_num = 40
    self.walked_set = set()
    self.roming_set = set()
    self.dfs_num = 0
    im = Image.open(path)
    self.image_array = np.array(im).tolist()

    def dfs(self, x, y, rgb):
    '''
    desc:用递归实现搜索范围内相同rgb值的像素
    :param x:
    :param y:
    :param char:
    :return:
    '''
    self.roming_set.add(tuple([x, y]))
    if 0 > x or 0 > y or x >= self.row_num or y >= self.col_num: # 越界检查
    return
    if tuple([x,y]) in self.walked_set: # 重复遍历检查
    return
    if rgb != self.image_array[x][y]: # 目标rgb值检查
    return

    self.walked_set.add(tuple([x, y]))

    self.dfs(x + 1, y, rgb) # x
    self.dfs(x, y + 1, rgb) # y
    self.dfs(x - 1, y, rgb) # -x
    self.dfs(x, y - 1, rgb) # -y
    self.dfs(x + 1, y + 1, rgb) # Ⅰ
    self.dfs(x + 1, y - 1, rgb) # Ⅱ
    self.dfs(x - 1, y - 1, rgb) # Ⅲ
    self.dfs(x - 1, y + 1, rgb) # Ⅳ
    return

    def walk(self):
    '''
    desc:
    :return:
    '''
    for y in range(self.col_num):
    for x in range(self.row_num):
    rgb = self.image_array[x][y]

    if tuple([x, y]) in self.roming_set:
    continue
    if rgb != self.white:
    self.dfs(x, y, rgb)
    num = len(self.walked_set)
    print(num)

    self.walked_set.clear()
    self.roming_set.clear()

    if __name__ == '__main__':
    path = ''
    c = dfs_simple_digital_chacpt(path)
    dfs_num = c.walk()

相似问题:POJ No.2386 计算水洼


《挑战程序设计(第二版)》(第二章)POJ No.2386

POJ 2386

  • 问题:
  • 有一个大小为N×M的园子,雨后积起了水。八连通的积水被认为是连在一起的。求园子里一共有多少水洼?\
  • 限制条件N,M<=100
  • 输入
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    W........WW.
    .WWW.....WWW
    ....WW...WW.
    .........WW.
    .........W..
    ..W......W..
    .W.W.....WW.
    W.W.W.....W.
    .W.W......W.
    ..W.......W.
  • 输出: 3
  • 题解:
    1
    DFS次数为水洼的个数,
  • POJ No.2386 python 实现:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    # POJ No.2386
    class poj2386(object):
    def __init__(self, map):
    self.row_num = 10
    self.col_num = 12
    self.m = self.matrix(map.replace('\n',''))
    self.walked_set = set()
    self.dfs_num = 0

    def matrix(self, map):
    '''
    desc: 字符串转数组,方便遍历
    :return ['row0','row1'...]
    '''
    col_num = 0
    matrix = []
    for r in range(self.row_num):
    matrix.append(map[col_num: col_num + self.col_num])
    col_num = col_num + self.col_num
    return matrix

    def dfs(self, x, y, char):
    '''
    desc:用递归实现搜索范围内相同字符
    :param x:
    :param y:
    :param char:
    :return:
    '''
    if 0 > x or 0 > y or x >= self.row_num or y >= self.col_num : # 越界检查
    return
    if tuple([x,y]) in self.walked_set: # 重复遍历检查
    return
    if char != self.m[x][y]: # 目标字符检查
    return

    self.walked_set.add(tuple([x, y]))

    self.dfs(x + 1, y, char) # x
    self.dfs(x, y + 1, char) # y
    self.dfs(x - 1, y, char) # -x
    self.dfs(x, y - 1, char) # -y
    self.dfs(x + 1, y + 1, char) # Ⅰ
    self.dfs(x + 1, y - 1, char) # Ⅱ
    self.dfs(x - 1, y - 1, char) # Ⅲ
    self.dfs(x - 1, y + 1, char) # Ⅳ
    return

    def walk(self):
    '''
    desc: 对矩阵遍历
    :return:
    '''
    for x in range(self.row_num-1):
    for y in range(self.col_num-1):
    if tuple([x, y]) in self.walked_set:
    continue
    if self.m[x][y] == '.':
    continue
    if self.m[x][y] == 'W':
    self.dfs(x, y, 'W')
    self.dfs_num +=1
    return self.dfs_num
    if __name__ == '__main__':
    map = '''
    W........WW.
    .WWW.....WWW
    ....WW...WW.
    .........WW.
    .........W..
    ..W......W..
    .W.W.....WW.
    W.W.W.....W.
    .W.W......W.
    ..W.......W.
    '''
    c = poj2386(map)
    dfs_num = c.walk()
    print(dfs_num)

由火车票引发的对社工和隐私安全的思考

火车票脱敏身份证信息还原

  • 经常在朋友圈看到好友晒旅行的火车票. 火车票有我们的姓名及经过脱敏处理的身份证信息, 但仅仅屏蔽了出生的月份日期,通过校验位暴力遍历便可筛选可能的30余组号码.即猜中的概率为3%.如果再通过其它渠道获得如星座等信息.就可将猜中的概率提高10倍,即有三分之一的可能性被猜中.

  • 验证Demo:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    import re
    import calendar

    IDCARD_REGEX = '[1-9][0-9]{14}([0-9]{2}[0-9X])?'

    def is_valid_idcard(idcard):
    """Validate id card is valid."""
    if isinstance(idcard, int):
    idcard = str(idcard)

    if not re.match(IDCARD_REGEX, idcard):
    return False
    # 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:
    factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]

    items = [int(item) for item in idcard[:-1]]
    # 将这17位数字和系数相乘的结果相加
    copulas = sum([a * b for a, b in zip(factors, items)])
    # 用加出来和除以11,看余数是多少? 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。 其分别对应的最后一位身份证的号码为:
    ckcodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']

    return ckcodes[copulas % 11].upper() == idcard[-1].upper()

    def show_possibility_month_day(year):
    for month in range(1, 13):
    m = '0' + str(month) if len(str(month)) < 2 else str(month)

    for day in range(calendar.monthrange(year, month)[1] + 1)[1:]:
    d = '0' + str(day) if len(str(day)) < 2 else str(day)

    r = '110101'+str(year)+m+d+'0539'

    if is_valid_idcard(r):
    print(r)

    if __name__ == '__main__':
    show_possibility_month_day(1999)

    # 符合条件的可能
    '''
    110101199901010539
    110101199901280539
    110101199902080539
    110101199902160539
    110101199902240539
    110101199903040539
    110101199903120539
    110101199903200539
    110101199904190539
    110101199904270539
    110101199905070539
    110101199905150539
    110101199905230539
    110101199905310539
    110101199906030539
    110101199906110539
    110101199907180539
    110101199907260539
    110101199908060539
    110101199908140539
    110101199908220539
    110101199908300539
    110101199909020539
    110101199909100539
    110101199909290539
    110101199910080539
    110101199910160539
    110101199910240539
    110101199911040539
    110101199911120539
    110101199911200539
    110101199912190539
    110101199912270539
    '''

    隐私泄露的危害:

  • 首先信息泄露会推动诈骗行为,即使自己有防范意识也难免会殃及身边的亲朋好友.泄露的信息越多,诈骗者的套路手段越高明.

  • 所以为了自己爱的人和爱自己的人应尽量避免泄露重要的身份信息,即使要晒图也要打好码啊!(尤其身份证后四位)[手动捂脸]

如何检测信息是否泄露及应对措施:

  • 社工自己:即利用多个搜索引擎搜索自己可能泄露出的信息(如姓名, 身份证号, 手机号等).即使没有查到也不表明隐私信息是安全的, 可能仍在地下市场流动或在某个社工库中伺机爆发.

  • 若发现搜索引擎有相关隐私记录需第一时间联系相关搜索网站,避免扩大影响.如百度搜索投诉服务中心

  • 侵犯隐私权的行为的主要表现形式:

    根据国情和社情,下列行为可归入侵犯隐私权范畴:
    1、未经公民许可,公开其姓名、肖像、住址和电话号码。
    2、非法侵入、搜查他人住宅,或以其他方式破坏他人居住安宁。
    3、非法跟踪他人,监视他人住所,安装窃听设备,私拍他人私生活镜头,窥探他人室内情况。
    4、非法刺探他人财产状况或未经本人允许公布其财产状况。
    5、私拆他人信件,偷看他人日记,刺探他人私人文件内容,以及将他们公开。
    6、调查、刺探他人社会关系并非法公诸于众。
    7、干扰他人夫妻性生活或对其进行调查、公布。
    8、将他人婚外性生活向社会公布。
    9、泄露公民的个人材料或公诸于众或扩大公开范围。
    10、收集公民不愿向社会公开的纯属个人隐私的情况。



攻壳机动队 Ghost in the Shell 影评

警告: ↓↓↓大量剧透 ↓↓↓

  • 在未来世界,都市中巨幅全息投影的大规模应用,隐形技术的实战应用,及义体的广泛流行,展现着生物机械技术,影像技术及网络技术的飞速发展。然而科技与伦理道德间的冲突如达摩克利斯之剑悬在社会的肩头。光怪陆离的都市与平民街景的格格不入,也彰显科技的融合,矛盾与冲突。

  • 影片前半段随着2571计划的失败品,反社会角色Kuze(久世)的复仇行动展开。这里涉及到意识操控及自由意志的问题。首先被阪华机械公司剥夺身体的女主角素子(身份:Major,蜜拉Mira)Kuze本身就被剥夺了意志。其次,为实行复仇计划,被Kuze操控无辜的人也失去了自己的意志。在复仇行动中以及警局的反剿过程中被波及的人被无情的屠杀。战争,受伤的永远是平民。这些意识被操控的人是否有罪?

  • 此外,这个世界义体不再只为残疾群体服务。都市街头的立体影像,街头招揽生意的义体强化服务者。都向人民灌输着义体强化的种种“好处”,身体健康的人,为了所谓的“力量”,“超能力”抛弃原有的肢体而换上义体。有的人只为了“豪饮”,而装上了义体胃。这是享乐主义盛行的社会。另一方面的危险由非洲联邦总统对阪华机械顾问奥斯蒙博士提出的质疑讲述:“但是没有人知道 操弄人类灵魂,对自我身份认同所造成的危险。”这里有个有意思的讽刺桥段,当总统刚说完这句话,博士就被身旁伺机而动的服务艺伎劫持。此时总统还一本正经地指着说道:“你看,就像我刚才说的那样。”

  • 随着MajorKuze第一次接触后,对自己的身世及公司和犹如母亲般改造自己的奥莱特博士产生质疑。Major由和奥斯蒙博士的对话中的得知前98个实验品都已失败。Major是第99个实验品。这个99是个隐喻(metaphor),预示不会再有被剥夺意志而产生的实验品。(在动画《叛逆的鲁鲁修》中也有此隐喻。鲁鲁修的父亲是不列颠帝国第98代皇帝,鲁鲁修篡夺成为第99代。预示着帝制在此终结)

  • 从影片中还可看出对人类记忆操作技术的成熟。记忆可以像电脑数据一样。包括但不限于记忆存取,记忆传输,记忆消除,记忆抑制,记忆伪造。但Major的记忆并没有完全消除。在神经元的深处还存在残留的记忆。可以用数据仓库中的多重备份策略来理解。一份数据(记忆)分别保存在不同的节点(神经元),即使某些节点的数据损害。只要有一个节点存在,数据(记忆)就是存在的。Kuze的理想网络世界也是同样的道理。

  • 在后半部分,Major奥斯蒙博士每次记忆操作的授权也是一种自由意志的体现。Major想要留住奥斯蒙博士这份记忆,不同意删除记忆的操作。奥斯蒙博士:”We never needed your consent.Yours or anyone’s.”,一方面是说给反派BOSS卡特听,另一方面也反映像公司一样一类人对自由意志赤裸裸的剥夺,践踏。最后警长征得Major对反派BOSS卡特的删除令,则是对Major自由意志的尊重,成全。

  • 最后与巨型机器坦克BOSS大战的桥段槽点还是蛮多的。 火控精度不准,无法形成有效杀伤。制动差,转火慢。机舱甲板被拉起这点尤为勉强,仅仅是为了增加悲壮气氛的效果吧。

  • 总体还是很不错的一部片子


我们执着与记忆,觉得它定义了我们,但定义我们的是我们的行为。人性才是我们的美德。We cling to memories as if they define us,But what we do defines us.humanity is our virtue.

VR虚拟影像, 记忆,自由意志相关概念的剧集:黑镜第三季《游戏测试》,《圣朱尼佩罗》,《人与武器的对抗》


假使我有了孩子
  • 作为一个20多岁的男人,没有经历过恋爱和爱情,自然也没有孩子。
  • 但是作为曾经是一个无知,愚蠢,懦弱孩子的我,
  • 也许更加深知一个孩子在怎样的成长道路上行进是何等的重要。
  • 假使我有了孩子,我将会更加敏感,敏感气温的变化,及时提醒他增减衣物,因为我的父母总是这样做。
  • 假使我有了孩子,我将从他张开双眼的那天起,培养自己良好的习惯,痛改自己的不良习惯和嗜好,因为他在模仿。
  • 假使我有了孩子,我将会从他对声音有一丝的反应开始,更加注意自己的言谈举止,更加礼貌待人,因为他在倾听。
  • 假使我有了孩子,我将会更加珍惜宝贵的时间,会对无意义的事情说不。因为我伴随他的时间和他的童年一样短暂。
  • 假使我有了孩子,我将不会对某件事过多评论,更不会对某件事轻易对他灌输某种思想,因为他的思想更重要。
  • 假使我有了孩子,我将更加坚持原则,没有底线的人是可怕的人,即使有时不容易,但我不想他变的可怕。
  • 假使我有了孩子,我将会加倍努力的工作,打理好日常一切事物,因为他需要一个温馨和谐的家。
  • 无论他是男是女,是胖或瘦,是亲生亦或领养,我将祝福他的降临和成长。

Linux 常用环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# jdk env
JAVA_HOME=/opt/jdk
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

# go env
GOROOT=/opt/go
GOPATH=$HOME/go
PATH=$PATH:$GOROOT/bin

# redis env
export PATH=$PATH:/opt/redis/bin 

# node.js env
export PATH=$PATH:/opt/node/bin

alias datagrip='/opt/datagrip/bin/datagrip.sh'
alias pycham='/opt/pycharm/bin/pycharm.sh'

使用lxml提取HTML/XML 数据

demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
html = '''
<html lang="en">
<head>
<meta charset="UTF-8">
<title class="sub_title">Title</title>
</head>
<body>
<div class="none">
<a href ="#">Spaceack's code</a>
</div>
<div class="link">
<a href ="http://spaceack.com">Spaceack's blog</a>
</div>
</body>
</html>
'''

from lxml import etree
tree = etree.HTML(html)
# 获取class为link的a标签的元素内容
a_content = tree.xpath('.//div[@class="link"]/a/text()')
print(a_content)
# ["Spaceack's blog"]

# 使用attrib获取标签的属性值
href_element = tree.xpath('.//div[@class="link"]/a')
print(href_element)
# [<Element a at 0x7ff3571a4d80>]
href = href_element[0].attrib.get('href')
print(href)
# http://spaceack.com

获取标签元素内容为空的两种不同效果:

  • demo
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from lxml import etree
    # 可见第二个标签 td 元素内容为空
    tree = etree.HTML("<th>水果</th><td>苹果</td><th>价格</th><td></td>")
    key = tree.xpath("//th/text()")
    value = tree.xpath("//td/text()")
    print(key, value)
    '''
    ['水果', '价格'] ['苹果']
    '''
    如果想让价格使用None或空字符串''来占位,可以这样做:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
key = tree.xpath("//th")
value = tree.xpath("//td")

key = [item.text for item in key]
value = [item.text for item in value]
print(key, value)
'''
['水果', '价格'] ['苹果', None]
'''
key = ["" if item.text==None else item.text for item in key]
value = ["" if item.text==None else item.text for item in value]
print(key, value)
'''
key ['水果', '价格']
['水果', '价格'] ['苹果', '']
'''

诗词三首

渔家傲 夜思语

1
2
今宵慢慢静无息,苦茶灯下无倦意。思绪悠悠漫天际,在千里,看路漫漫已无力。
长征遥遥仍有期,鸿鹄之志铭心记。疯狂大陆都无语,看东方,一轮红日已升起。

诉秋

1
2
晨空破晓雁南飞,星天紫夜寒虫催。
孤灯独鸣漏长深,不食人间烟火味。

军炼行

1
2
3
4
5
6
7
8
军训一程行千里
行道草树皆葱茏
道疏人稀心亦远
烈日弥阳心迷灯
百锻瞬息满心倦
百毒神香催人梦
子夜玉铃惊人醒
清风醒神益神功