冯梦华的日常

胶片图集 (一)

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

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

正文

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

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

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

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


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

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


小灯笼和小狮子

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


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


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


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


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


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

(完)

新年快乐

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

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

Clash 删库

昨天 clash for windows 删库,今天(2023-11-03) clash 也删库了。前者的删库并没有太大的影响,因为它只是后者的 GUI 工具而已,但是后者的删库则有些严重了,这意味着clash 彻底失去了更新维护。clash 的开发者可是是为了暂时规避 cfw 的影响,当然也不排除他已经受到了政府的迫害,目前还没有更多的消息。

另一个比较常用的代理软件就是 V2Ray 了, 目前没有看出受到了影响,这取决于开发者是否处于国内,是否会受到政府监控的压力。

这里出现了一个比较悲伤观点:世界上并没有那么多对网络严格监管的国家,这意味着在自由的国家中,并没有如此多的开发者愿意去创造和提供高隐私和高安全性的网络代理工具,这意味着,这类软件的开发者大概率也是受到了互联网的封锁,意味着他们也大概率在独裁威权国家里生活。

我真的感到非常的伤心。

当神话故事中的人类看到带给他们火种的普罗米修斯被锁在高加索山之上,日日被巨鹰啄食的时候,我想他们也会很伤心吧。

九月与十月

这个月继续完善 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 "git@github.com:fengyarnom/fengyarnom.github.io.git"
git push -f origin "master:gh-pages"
# 清理临时目录
cd ..
rm -rf "$TEMP_DIR"

Rustic-pages 需求与开发文档

1. 引言

要求使用 Rust 编写一个高效且易于使用的静态博客生成器,它将能正确处理 Markdown 和 SCSS 文件的文件。

它将支持以下命令行指令:

  • init: 初始化程序,创建相应文件夹及内容

  • generate : 渲染和生成所有的静态网站内容

  • clean : 清除缓存

  • server : 本地部署服务,该指令应该默认调用 cleangenerate

  • deploy : 自动部署静态文件到指定仓库

所有的内容应该均以变量的形式预先准备,然后再根据规则渲染文件。

2. 功能需求

2.1 博文编辑

  • 用户可以创建、编辑和删除博文。
  • 博文内容支持 Markdown 格式,允许用户使用 Markdown 语法编写博文。
  • 用户可以设置博文的标题、发布日期、标签和归档。
  • 用户可以上传图片和附件,并在博文中引用它们。
  • 用户可以保存博文为草稿,随时继续编辑。

2.2 博文生成

  • 用户可以使用命令行工具生成静态网站。
  • 博客生成器将从用户指定的目录中读取博文和资源文件,并生成静态 HTML 文件。
  • 用户可以指定生成的网站目标路径。
  • 生成的网站应包括主页、博文详细页、归档页、分类页面和标签页面。

2.3 主题和样式

  • 用户可以选择不同的博客主题和样式。
  • 博客生成器应支持多个默认主题,用户也可以自定义主题。
  • 用户可以自定义网站的样式表(CSS)。

3. 功能模块

3.1 数据结构

3.1.1 Post

  • title: String

  • date: String

  • date_simple : String

  • published: bool

  • tags: Vec

  • categories: Vec

  • raw_content: String

  • content: String

  • slug: String

  • link: String

3.1.2 Page

  • title: String,

  • date: String,

  • template: String,

  • raw_content: String,

  • content: String,

  • limited_cows:usize,

  • total: usize,

  • current: usize,

  • prev:usize,

  • prev_link: String,

  • next:usize,

  • next_link: String

3.1.3 Archive

  • posts - Vec
  • pages: Vec
  • tags: HashMap<String,Vec<& Post>>
  • categories: HashMap<String,Vec<& Post>>

3.1.4 Config

pass

3.2 构建逻辑(Generate)

  1. 程序首先构造一个 Archive 实例,用于保存接下来所有的变量数据。

  2. Post 处理过程

    1. 从 /source/content/posts 中获取所有的 markdown 文件,并进行解析,封装为一个可操作的 Post 数据实例。
    2. 所有的Post 插入到 Archive.posts
  3. Tag 处理过程

    1. 遍历 Archive.posts 将每个Post 内的 Tag 解析
    2. 所有的 Tag 插入到 Archive.tags
  4. Category 处理过程

    1. 遍历 Archive.posts 将每个Post 内的 Category 解析
    2. 所有的 Category 插入到 Archive.categories
  5. 页面构造逻辑

    1. 从 /source/content/pages 中获取所有的 markdown 文件,进行解析,封装为一个可操作的 Page 数据实例
    2. 所有的 Page 插入到 Archive.pages
    3. 若是front-matter 带有 pagination: tags,则对 Archive.tags 触发分页
    4. 若是front-matter 带有 template: xxx ,则渲染模板,否则默认输出 content

3.3 路径渲染逻辑

  • Index - Page
    • /public/index.html
    • /public/page/N/index.html
  • Archive
    • /public/archive/posts/2023/12/10/hello/index.html
    • /public/archive/tags/技术/index.html
    • /public/archive/categories/算法/index.html
  • Tags - Page
    • /public/tags/index.html
    • /public/tags/page/N/index.html
  • Categories - Page
    • /public/categories/index.html
    • /public/categories/page/N/index.html
  • Custom Page
    • /public/custom/index.html
    • /public/custom/page/N/index.html

README 文档

A lightweight static blog generator developed using Rust

Usage

You can compile the source code of this project using the cargo build command.

cargo build

When you run cargo build, it searches for the Cargo.toml file in the current directory and builds the project based on the configuration information specified in that file. Cargo.toml is the configuration file for Rust projects and contains the project’s dependencies and other build configurations.

我的静态博客生成器

近些日子无心向学,于是又手痒折腾起了代码。

起因是接触到了 Rust 这门语言,并了解到了它的很多特性。我认为这真的是一个很棒的语言并且惊叹于它的性能。正因如此,我决定以此为契机,开始了一个新的项目,一个使用 Rust 编写的静态博客生成器。

项目情况

目前它只是一个堪堪能用的状态,我甚至还没想好它的名字,现在只是使用 static-blog-rust-make 作为项目名字,我并没有想出一个正式的名字。我目前开源在Github 上,由于时间实在是不够用,我在有限的时间内已经做到了极限,优化代码和新功能的添加只能在日后完成了,但是,我仍然十分满意于这个项目!

虽然如此,这个生成器确实已经可以正常使用。我用它来重新生成了一个这个网站,并将之前为 Hexo 写的主题应用其中。目前的版本是 v0.03 。项目仅仅是一个粗劣地模仿 Hexo 的产物,并没有融入很多我的思考,很多核心功能也只是调用别人写好的包,但是这次的代码仍然给我很多地启示,我发觉我开始接触到了很多软件工程的内容,同时对一个项目的整体规划有了一些了解。总之,这一次的项目开发还是很有意思的,之后的一段时间会着手于新的开发文档,并希望能在书写开发文档的过程中,思考更多新的功能。

最后,这是一个非常不完美的项目,里面的代码混乱不堪,复杂的逻辑结构几乎把我压倒。在多次重构和清理冗杂代码后,确实完成了我一开始定下的所有功能需求,但是这样的代码总归让人看了倒胃口,但也只能在之后的日子里慢慢修改完善啦,至少它没有夭折在漫长的开发期中。我确实是以最快的速度开发的,为的就是减少枯燥,目前看来确实如此,我在耐心消耗殆尽前完成了这个项目。