抽烟
发布时间:2024-11-15 10:23:11
归档分类:

前段时间我开始抽烟了——仔细想想回溯到上一次抽 “烟” 的时间,那还是小学的时候。

那时候调皮呀,在家里就将各种纸卷成香烟的长条形状,火机点燃后就叼着这根 “香烟” 尾部吸将起来。

说起小学,那时候的我不知为何,知识总是不如脑子,自己也笨笨的,每天写不出来作业被老师训斥在门口外面罚站……我妈妈也认为我读完初中可能就要出去打工了,因为我看起来根本不是读书的料。

人生的转机发生在六年级的时候,我开始接触到一些黑客的电影,进而开始接触到编程,那时候只是觉得很酷罢了,但是学着学着就歪到了编程去了,从 windows 的 bat 脚本到前端的 html css ,我居然真的可以创造出一些东西来,上了初中后更是一发不可收拾,前端后端都开始接触,老实说现在回看以前的代码,那必然是幼稚和简单的,但是这种简单代码的实现确实从而改变了我后面的人生,我开始越学越多,越写越喜欢……学业上也开始好转,我学初中的东西学得很快,成绩渐渐好转,后面也考上了大学,即使是没那么好的大学,但比起辍学打工倒是好上不少。

说回香烟,因为大部分空闲时间都在编程上,所以香烟这种东西对我来说没有什么机会接触到,年龄和性格的转变让我也不再对其感兴趣,后面更是由于香烟对人体的危害很大的原因,对香烟更是避之不及,所以我的前二十年是抽烟的经历仅仅只是小学时的玩火闹剧罢了。

真正意义上的接触香烟,是我大学毕业后参加工作的那几个月。在公司写的代码与闲暇时不同,它充斥着赶工、压力、混乱和不完美。

那段时间的开发压力也极大,我的生命与生活开始不再属于自己,晚上回家睡觉,第二天重复前一天的工作,苦闷无法言说……

记得开始吸烟的那天晚上加班回家,乏累地躺下打开抖音,一天的自由时间无非也就这几个小时罢了,那天也有些神经质了,很多视频也感觉比平时更有趣,更戳笑点,刚开始上浅浅发生一些笑声,后面则是发声大笑,然而真是喜极而泣,也真是悲从心来,活了二十多年啊,第一次感受到这种在大笑间内心涌出的莫名空洞无助……

那种无助的情感弥漫到全身,但是我做不了什么,抱着被子和枕头鼻涕眼泪擤了又来,擦了又掉。

我当时很清楚知道自己的精神出现了问题,但只能任由自己边哭边笑,到了后面则是痛哭,放声地痛哭,好多年没哭过,也好多年没出现这么委屈的情绪了。

哭过之后,我想到了香烟,这是除开药物外可能对我有帮助的东西了,我不清楚我自己怎么了,但应该是太累了,我的情绪崩溃了。我不在乎它是否对我有害,是否会让我上瘾,我太累太痛苦了,我人生的前二十年,我极力控制自己不要与它产生接触,但是当压力真的降临到自己身上时,当看到自己在出租屋里精神错乱般的大笑大哭时,理智已经不存在了,痛苦混乱占据了大脑,香烟便是廉价的麻醉剂。

我下来去买了一包上大学时听室友说起过的香烟牌子,回到楼顶天台不熟练地点燃一根,当夜间的风将吐出的烟雾带走,我的情绪也才真正的平复下来。

我想我应该更爱自己才是,我的生活也不应该如此束缚。

  • 日常
  • 移动固态硬盘安装 Arch Linux
    发布时间:2024-10-23 09:40:18
    归档分类:

    最近双十一,我买了西部数码的 SN580 1T 固态硬盘作为我的外置 Arch Linux ,安装好后即可在公司的台式机和自己的笔记本中直接使用,这样编程环境可以得到比较好的统一。

  • 随笔
  • 广州的天气
    发布时间:2024-08-26 08:54:42
    归档分类:

    六月份的时候在广州谋求了一份工作,公司不是很大,但氛围还挺好的,就是有些在学校实验室的感觉,幸得除我之外还有另一位实习同事,他是研究生毕业的,所学的是测绘,公司的主营业务也正是这一方向,而我则是以实习软件工程师的身份入职。

    入职的时候也正是暑假开始,以往的暑假我都在家里晃晃度日,从小学到大学毕业,十多年的时间,眨眼就要工作了,时间就像是加速了一样,我现在仍能回想起小学的时候和小区里的好朋友一起玩泥巴过家家的场景,如今则真的要像一个成年人那样去自己生活了,即感慨又缅怀。说起家,我的恋家情绪其实并不严重,因为大学是从广西到哈尔滨上学,离家远,所以平时的短假是不够时间回家的,四年里也习惯了这种离家的感觉,加之现在有视频聊天,怎么样都不会太过恋家的。

    入职的时候在广州这边的城中村租了一个小单间,房价 900 多一个月,但主要是水电好贵(水 5元/吨 · 电 1.5元/度), 以后有钱要狠狠搬家,现在做饭都很困难,因为没有厨房,可惜我的寒暑假磨练的厨艺了,并且今日去外面吃了青椒炒肉,居然和我水平一样,离谱的是要 19 块,当真是不便宜呢。


    前段时间广州受到了季风气候的影响,下了一个星期的雨,感觉房间和衣服都霉臭霉臭的,并且阴天笼罩着使得每个人感觉都很不开心,那段时间也是我工作极为不顺的日子,但索性也都撑过来了,但还是有些后怕的,当然并非是工作方面的,而是生活!比如我的内裤和袜子在那段时间里就几乎就没有干过,要不是我带来广州的内裤和袜子多,还真的连门都出不了,所有感觉买一个烘干机还是很有必要的,回南天我想它必能发挥无比大的用处。所以也在想要不要买些一次性袜子和内裤作为应急之物,省得下雨回南时湿漉漉的,发霉到了极致,长小蘑菇可就不雅了。

    说起应急之物,储备些药物似乎很有必要呢。

    药物

    1. 外伤

    小型的擦伤创可贴+碘伏似乎就能搞定,更严重的伤口想必还是得去看医生,所以买一盒创可贴、棉签、碘伏

    2. 退烧止疼药

    毕竟是从新冠时代过来的,发烧止疼用「对乙酰氨基酚」和「布洛芬」我想就足够了,另外加一只体温计。

    3. 病毒性感冒

    这个似乎无药可治,还是以预防为主吧,前段时间还听说新冠又在广州蔓延,早上挤地铁时还看到有人戴 N95 口罩呢,事情的真假不得而知,总之戴口罩还是没有错的,避免病毒传播。所以,买些口罩在地铁的时候戴戴。

    感冒按照以往的经验,不发烧即意味着一个星期便好,只不过中间很难受,发烧则可以尝试一下退烧药,若是反复烧则去医院抽血检查一下,想必是病毒太猛了,抽血针对性杀掉它们。

  • 生活
  • RTCM 1005 解析
    发布时间:2024-07-19 13:02:26
    归档分类:

    前言

    RTCM 是一种普遍采用的数据传输格式,它是由国际海运事业无线电技术委员会提出的,用于制定在差分全球导航定位系统和实时动态操作时使用的标准。

    下面是技术规范文档:

    第一个文档是官方的,包含了很多的细节,但是需要付费,虽说有其他方式获得,但版权原因还是不在此贴出;

    第二个文档是北云科技的,中文文档虽说少了一些细节,但终究方便阅读,虽然本文不会参考它 :)

    文档解读

    RTK的消息类型有很多,初看会很懵,但在只要找到自己想要了解的消息类型即可,在文档的 3.2 节 Message Type Summary 中有详细的介绍,本文主要关注 1005 这个消息类型,它由 19 个字节也就是 152 个比特构成,它主要包含基准站位置数据信息,也就是基站的 ECEF 的坐标。

    Screenshot from 2024-08-05 09-41-51.png

    在正式阅读之前,还需要了解一下数据结构和类型,在文档的 3.3节 Data Types 有详细的介绍:

    数据类型很好理解,它规定了数据的范围和构成,后面写程序做转换的时候要严格按照本节的数据结构来实现。

    image.png

    下面是这个协议具体的内容, 后面会详细分析:

    image.png


    解算

    下面给出一段 RTCM 1005 的原始码流,它是十六进制的 ASCII :

    D3 00 13 3E D7 D3 02 02 98 0E DE EF 34 B4 BD 62 AC 09 41 98 6F 33 36 0B 98
    

    在手动计算之前,还需要了解一下它在传输时候的格式,RTCM 数据以帧的形式的传输

    image.png

    • Preamble : 同步码(8 bits) , 11010011 ,其十六进制为 'D3'
    • Reserved : 保留(6 bits),000000,十六进制为 00
    • Message Length: 长度(10 bits),数据信息的长度,以字节数表示
    • Variable Length Data Message(0-1023 bytes): 可变长数据消息,长度不定,最大 1023 bytes
    • CRC:校验(24 bits)

    所以 RCTM 1005 每帧大致长这样: 1101 0011 0000 00 + 长度 + 数据 + 校验

    开头固定为 : 1101 0011 0000 00 ,十六进制就是 D30 ,我们再回头看一下原始码流:

    D3 00 13 3E D7 D3 02 02 98 0E DE EF 34 B4 BD 62 AC 09 41 98 6F 33 36 0B 98
    

    前三个十六进制 ASCII 码 我们就能解析出来了,后面紧跟着的是消息长度,它使用 10 个 bit 存储

    Hex: D3 00 13
    Binary: 1101 0011 0000 0000 0001 0011
    

    所以,同步码 + 保留 + 长度 总共就用了 24 个 bit ,也就是 3 个字节

    接下来就是可变长度的数据消息了,下面的表格就是 1005 类型的数据内容:

    DATA FIELD                                  DF NUMBER   DATA TYPE   NO. OF BITS
    -------------------------------------------------------------------------------
    Message Number ("1005"=0011 1110 1101)      DF002       uint12      12
    Reference Station ID                        DF003       uint12      12
    Reserved for ITRF Realization Year          DF021       uint6       6
    GPS Indicator                               DF022       bit(1)      1
    GLONASS Indicator                           DF023       bit(1)      1
    Reserved for Galileo Indicator              DF024       bit(1)      1
    Reference-Station Indicator                 DF141       bit(1)      1
    Antenna Reference Point ECEF-X              DF025       int38       38
    Single Receiver Oscillator Indicator        DF142       bit(1)      1
    Reserved                                    DF001       bit(1)      1
    Antenna Reference Point ECEF-Y              DF026       int38       38
    Quarter Cycle Indicator                     DF364       bit(2)      2
    Antenna Reference Point ECEF-Z              DF027       int38       38
    -------------------------------------------------------------------------------
    TOTAL                                                               152
    

    Message Number ("1005"=0011 1110 1101)

    它的长度 12 个比特,也就是 3 个 Hex Ascii 码:

    Hex: 3E D
    Bin: 0011 1110 1101
    Dec: 1005
    

    将十六进制的 3ED Ascii 码转换为 十进制的数字,我们可以看到它正好是 1005

    Reference Station ID

    Hex: 7 D3
    Bin: 0111 1101 0011
    Dec: 2003
    

    Reserved for ITRF Realization Year

    Hex:02 02 Bin:0000 001 00000 0010(取前 6 位 ,也就是 0000 00 = 0)

    GPS Indicator

    Hex: 02 02

    Bin:0000 00**1 **00000 0010 (取第 7 位 ,也就是 1)

    GLONASS Indicator

    Hex: 02 02

    Bin:0000 0010 0000 0010 (取第 8 位 ,也就是 0)

    Reserved for Galileo Indicator

    Hex: 02 02

    Bin:0000 0010 0000 0010 (取第 9 位 ,也就是 0)

    Reference-Station Indicator

    Hex: 02 02

    Bin:0000 0010 0000 0010 (取第 10 位 ,也就是 0)

    Antenna Reference Point ECEF-X

    它的长度是 38 bits

    Hex: 02 98 0E DE EF

    Bin: 0000 0010 1001 1000 0000 1110 1101 1110 1110 1111

    Dec: 11141045999

    Single Receiver Oscillator Indicator

    Hex: 34

    Bin: 0011 0100 (取第 1 位, 也就是0)

    Reserved

    Hex: 34

    Bin: 0011 0100 (取第 2 位, 也就是0)

    Antenna Reference Point ECEF-Y

    它的长度是 38 bits

    Hex: 34 B4 BD 62 AC

    Bin: 0011 0100 1011 0100 1011 1101 0110 0010 1010 1100

    二进制最高位是 1 ,为负数,所以要取反再加1

    补码: 10 1011 0100 1011 0100 0010 1001 1101 0101 0100

    除去第一位的符号位,后面加粗的就是实际的数值

    Bin: 0 1011 0100 1011 0100 0010 1001 1101 0101 0100

    Hex: 4B 4B 42 9D 54

    Dec: 48507297108

    加上符号位就是 -48507297108

    Quarter Cycle Indicator

    Hex: 09

    Bin: 00 00 1001(取前两位, 也就是 00)

    Antenna Reference Point ECEF-Z

    Hex : 09 41 98 6F 33

    Bin: 0000 1001 0100 0001 1001 1000 0110 1111 0011 0011

    Dec: 39755214643


    到此为止,手动结算就已完成,若是关注 ECEF XYZ 的取值,则需要回看数据类型,它们的数据类型是 DF025、DF026、DF027

    image.png

    这张图详细地说明了 ECEF XYZ 的数据类型,数据范围,数据处理

    其中,它是 int38 的有符号38位整数,数据是 0.0001 m

    上面我们算得的数,都应做一个处理:

    ECEF-X : 11141045999 * 0.0001 = 1114104.5999m

    ECEF-Y: 48507297108*0.0001= -4850729.7108m

    ECEF-Z:39755214643*0.0001 = 3975521.4643m

    (完)

  • RTCM 1005
  • 地理坐标转换
    发布时间:2024-06-29 07:07:00
    归档分类:

    近些日子的工作频繁接触到了大地测量中的各种知识,在编写程序的时候更是涉及各种地理坐标的转换,虽然没有深入去学习其核心的变化原理,但是简单地使用现存的公式配合程序进行计算还是可以做到的,以下是有关知识的记录。

    1.名词解释

    1.1 LLA 坐标系

    LLA 坐标是地理坐标系中的一种表示方法,LLA 代表经纬度和高度(Latitude, Longitude, and Altitude),它通常用于描述地球表面上的位置。

    • Latitude (纬度):表示从地球赤道向北或向南的角度,范围是 -90° 到 +90°。正值表示北纬,负值表示南纬。
    • Longitude (经度):表示从本初子午线(通常是通过格林尼治的子午线)向东或向西的角度,范围是 -180° 到 +180°。正值表示东经,负值表示西经。
    • Altitude (高度):表示相对于平均海平面的高度,可以是正值(高于海平面)或负值(低于海平面)。

    LLA 坐标系也叫全球地理坐标系、大地坐标系、WGS-84坐标系。纬度和经度的数值可以以多种不同的单位或格式出现:

    • 六十进制度:度、分、秒:40° 26′ 46“ N 79° 58′ 56” W
    • 度和十进制分:40° 26.767′ N 79° 58.933′ W
    • 十进制度: +40.446 -79.982

    横纬竖经,在计算的过程中,主要也是将之转换为十进制来计算的,以下是计算公式: $$ decimal = degress + \frac{minutes}{60} + \frac{seconds}{3600} $$

    关于 WGS-84 ( World Geodetic System 1984,1984年世界大地测量系统),它是目前全球范围内使用最广泛的地理坐标系统和地球模型,由美国国防部制定和维护,主要用于全球定位系统(GPS)和各种地理信息系统(GIS)。

    WGS-84 有几个关键常量用于定义参考椭球体的形状和尺寸,这些常量包括半长轴、半短轴、扁率和离心率等:

    • 半长轴 (A):椭球体的赤道半径
      • 其值为 $ 6378137.0 $ 米。
    • 半短轴 (B):椭球体的极半径
      • 其计算公式为: $ B = A*(1-F) $
      • 其值为 $ 6356752.3142 $ 米
    • 扁率 (F):描述椭球体扁平程度的参数
      • 其计算公式为:$ F = \frac{A-B}{A}$
      • 其值为:1/298.257223563
    • 第一离心率 (E):描述椭球体形状的一种参数,反映了椭球体的偏离程度
      • 其计算公式:$ E = \sqrt{1 - (\frac{B}{A}) ^2} $
      • 其值约为: 0.0818191908426
    • 第一离心率的平方 (E²):减少计算所用
      • 其中值约为: 0.00669437999014

    1.2 ECEF坐标系

    ECEF(Earth-Centered, Earth-Fixed)坐标系是一种三维笛卡尔坐标系,用于表示地球上的位置。ECEF 坐标系也称为地心地固坐标系,它的原点位于地球质心,并且随着地球的自转而旋转。

    • X 轴:指向穿过地球赤道与本初子午线(通过格林尼治的子午线)交点的方向。
    • Y 轴:指向穿过地球赤道与东经90度子午线交点的方向。
    • Z 轴:指向北极方向,与地球自转轴一致。

    ECEF 坐标系提供了一个统一的三维坐标框架,可以精确地表示地球表面和近地空间的任何位置。

    1.3 ENU坐标系

    ENU(East-North-Up)坐标系是一种局部笛卡尔坐标系,用于表示相对于某个参考点的三维位置。

    • ENU 坐标系的原点通常位于地球表面的某个参考点,该点的地理坐标为 (Latitude, Longitude, Altitude)。
    • E 轴(东向轴):指向地平线的东方。
    • N 轴(北向轴):指向地平线的北方。
    • U 轴(上向轴):垂直向上,指向天空。

    2. 坐标系转换

    2.1 从 LLA 坐标到 ECEF 坐标

    这里约定LLA的经度为 $\phi$,纬度为 $\lambda $,海拔为 $ h $, 选取 WGS-84 坐标系参数,$a$和$b$分别是是赤道半径(半长轴)和极半径(半短轴),$e^2 = 1 - \frac{b^2}{a^2}$是偏心率的平方, $f=1-\frac{b}{a} $ 是基准椭球体的极扁率。 $$ \begin{align} X& = (N(\phi) + h) cos \phi cos\lambda \\ Y& = (N(\phi) + h) cos \phi sin\lambda \\ Z& = (\frac{b^2}{a^2}N(\phi) + h)sin\phi \\ &=((1-e^2)N(\phi) +h)sin\phi \\ &=((1-f)^2N(\phi)+h)sin\phi \end{align} $$ 其中 $$ \begin{align} N(\phi) = \frac{a^2}{\sqrt{a^2cos^2\phi + b^2sin^2\phi}} = \frac{a}{\sqrt{1-e^2sin^2\phi}} \end{align} $$

    2.2 从 ECEF 到 LLA坐标

    将 ECEF 坐标 (X, Y, Z) 转换为经纬度和高度 (Latitude, Longitude, Altitude) 需要迭代计算。 $$ \begin{align} \lambda = atan2(Y,X) \end{align} $$

    其中,atan2 是反正切函数

    $\lambda$ 是唯一能直接算出的,其余的纬度和高度的转换所要涉及 N 的循环关系 $$ \begin{align} \frac{Z}{p}cot\phi = 1 - \frac{e^2N}{N+h} \\ h = \frac{p}{cos\phi} -N \end{align} $$ 其中,如公式$(6)$所示,N 的变化取决于 $\phi$ 的值

    纬度和高度需要迭代求解, 例如,从第一个猜测 h≈0 开始,然后更新 N。

    其流程是这样的:

    1. 猜测 h = 0,通过公式$(8) $ 可以推算 $cot\phi = \frac{(1-e^2)p}{Z} $ 求解出一个$\phi_1$
    2. 将 $\phi_1$ 带入公式 $(6)$,求解出 $N$
    3. 将 $N$ 带入公式$(9)$ 求解出 $h$
    4. 将 $h$ 带入公式$(8)$ 求解出一个新的 $\phi_2$
    5. 如果 $\phi_1$和$\phi_2$足够接近,则说明迭代出了一个正确的值,如果不是,则需要回到第2步继续迭代。

    2.3 从 ECEF 到 ENU 坐标

    ENU 坐标又称为站心坐标,6也就是局部坐标,这个坐标需要一个局部参考点。在实际例子中,这个参考点通常是雷达、基站这些地方。

    如果基站位于 ${X_0,Y_0,Z_0}$,测站位于 ${X_1,Y_1,Z_1}$

    $$ \begin{bmatrix} e\\ n\\ u \end{bmatrix}= \begin{bmatrix} -sin\lambda_0& cos\lambda_0 & 0\\ -sin\phi_0cos\lambda_0& -sin\phi_0sin\lambda_0 &cos\phi_0 \\ cos\phi_0cos\lambda_0& cos\phi_0sin\lambda_0 & sin\phi_0 \end{bmatrix} \begin{bmatrix} X_1 -X_0\\ Y_1-Y_0\\ Z_1-Z_0 \end{bmatrix} $$

    (完)

  • 地理
  • Geo
  • LLA
  • ECEF
  • ENU
  • 胶片图集 (一)
    发布时间:2024-03-13 05:08:23
    归档分类:

    许久没有写一些博文了,请原谅我,因为生活比较单调,加上最近有一些抑郁的情绪,目前仍然在调整当中。虽然生活千篇一律,但是偶尔也是有出去晒太阳的,也是有好好生活的。

    我最近拍了很多的胶片,于是打算放到这里来,让大家看看~

    正文

    这是一个用半幅胶片机拍摄的,黑白的负片,加上半格画幅带来的画质损失,使得这幅照片拥有一种恰到好处的感觉。拍摄的时间是哈尔滨的冬季,可以看到路上都是雪,周围的树木也光秃秃的,黑白拍摄树枝有时候会很杂乱,但是这幅照片倒还好。

    这张照片是我的第一卷胶片,当时买了 Canon Demi 初代半格相机,寻思着玩一玩吧,结果一发不可收拾!拿着这台相机在学校到处拍摄,从那时候开始,我彻底爱上了胶片。胶片是一种延迟的体验,一卷胶卷大约能拍32张,而半格则更多了(画幅相对于135mm裁切了一半),也就是需要拍满72张才能取下胶卷,而且拍完无法立即查看,需要送给冲洗店老板冲扫,这又往往还需等待一个礼拜的时间。

    通过胶片,我记录下的照片常常成为我生活的缩影,它介于严肃与不严肃之间,而其本身的质感往往让人感到温暖和怀旧,我后面又陆陆续续买了 佳能 QL17 旁轴、佳能 kiss 1单反、佳能 eos55 单反等,就我而言,单反相对更加容易掌控,其功能与镜头的选择也更加丰富。

    与现代相机一样,胶片相机也需要在拍摄时选择光圈,需要权衡景深的大小,而慢速快门则要考虑画面是否会受到抖动的影响,不同的是一旦按下快门则无法修改,一张底片就此定格。


    下面这张图的猫猫很可爱的,当时我走过去的时候它主动地帖帖我了,或许是想要我给他挠痒,围着我走了一圈,然后贴在我的鞋边!我怎么能抗拒得了这样的诱惑呢!我充分地挠了挠它的猫猫头后,它也享受地走开了,之后我便去其他地方了,再回来就看到它在边躲太阳边休息。

    于是我立马掏出了相机,幸好我有 28-105 的变焦镜头,不用靠得特别近也能拍摄。虽说猫猫看起来很可爱,但它们可听不懂我们人类的话,靠得太近了,惹恼了它可就不愉快了,索性就在不远处保持着距离拍摄。


    小灯笼和小狮子

    虚化带来的好处就是主体很清晰,消除背景细节,可以营造出更为干净、简洁的画面


    这张是在龙母庙拍的,主要是测试一下我新买的镜头 40mm 2.8 光圈全开的虚化效果 。


    这张是半格机拍的, ILFORD PAN 100 好歹也是 100 感光度的胶卷了,但是拍出来还是出现了很明显的颗粒。难道半格相机还得使用 ISO 50 的 5203 拍摄会比较好吗?但是这又出现了一个问题,demi是估焦的,拍摄近物时,往往需要缩小光圈以达到超焦距的效果,然而使用 50 ISO后,便不太能使用小光圈了,因为这可能会导致画面抖动或者欠曝,真是难以抉择呢。


    接下来的这三张,是我家城市的骑楼城,梧州的河东许多的老建筑特别有历史的底蕴,我很喜欢在这里拍摄黑白的照片,当然彩色的照片也非常好看,有一种不一样的质感。


    这张图我觉得很棒噢,当时很顺利地抓拍了,其实等车再开过去一些些会好很多呢。


    最后想说的是,我最近有在尝试自己冲洗黑白胶卷噢,听起来是挺复杂的,但是实际做起来非常的简单,而且特别有成就感,但就不在这篇文章叙述多言了,之后会再写一篇的。

    (完)

  • 胶片
  • 新年快乐
    发布时间:2024-02-09 12:27:13
    归档分类:

    新的一年又到啦,马上就毕业了!大学四年飞快地度过。

    rustic-page 项目很久没有提交新的代码了,过段时间会提交一些新的功能代码,这个项目我想着尽量不去反复地重构。

  • post
  • 九月与十月
    发布时间:2023-10-12 06:33:02
    归档分类:

    这个月继续完善 rustic-pages ,这个项目是八月的时候发起的,十月我对它进行了一次重构,目前已经基本完成,代码并没有进行什么模块的拆分,因为我还没完全吃透 rust ,随意套用一些模式会出现意想不到的问题。

    因为 rust 的特性,引用借用这些很严格,所以在 0.1.4 以前的版本中,我并没有使用生命周期,所以这不可避免得导致了解析和生成的缓慢,但这仍然是可以接受的。在重构之前,我对 rust 的生命周期理解得还不充分,在拆分模块之后,代码几乎无法正确运行,同时依赖的包也无法自动解析这类的引用类型,我想我在学习 rust 的时候必然是缺失了一些知识,我对数据类型的了解还不够充分。

    但是这是一个长期的项目,文档编写的工作也十分繁琐,前期的需求文档已经不足以支持我继续开发了,很多新的特性也在我脑子里蹦出来,我需要更多的时间去完成这些工作。但是目前的我最缺少的就是时间,我仍在准备研究生考试,加之我最近打算弄一个软件著作,时间上总是有些不够呢。


    不同于之前的观念,维护一个项目是有趣的,将脑海里的新特性实现于代码之中,这确实很有成就感。

    当然了,其实我应该多加入一些方便用户使用的脚本或者功能,事实上,目前的版本只能是将 sources 里的 markdown 源文件渲染到 public 里,但是没有实现类似与 Hexo 中的 deploy 指令,这涉及到一些 git 操作,我目前还是不太了解,虽然我在我自己博客中实现了这一脚本,但是我不确定如果这个脚本在其他电脑中会出现些什么。

    #!/bin/bash
    
    current_datetime=$(date +"%Y-%m-%d %H:%M:%S")
    TEMP_DIR=$(mktemp -d)
    cp -r public/* "$TEMP_DIR"
    cd "$TEMP_DIR"
    git init
    
    git add .
    git commit -m "Update: $current_datetime"
    git remote add origin "[email protected]:fengyarnom/fengyarnom.github.io.git"
    git push -f origin "master:gh-pages"
    # 清理临时目录
    cd ..
    rm -rf "$TEMP_DIR"
    
    
  • 思考