1diaryBook | 在记录中看见他人也看见自己 - Y.H.2HANG ' Blog - 道阻且长,行则将至-小张的学习笔记

1diaryBook | 在记录中看见他人也看见自己

在被短视频和社交网络填满的当下,我们往往把时间分给了别人,却很少和自己对话。1diaryBook 并不是一个复杂的社交跨界平台,它仅仅是一个只属于自己的“数据孤岛”。在这里,你可以卸下所有伪装,记录下岁月的长河里,每一次微小的感动、每一张真实的相片、以及每一串丈量世界的足迹。


缘起与演进

1diaryBook 的诞生,源自于一个最朴素的想法:我们需要一个绝对安全、绝对安静的树洞。

市面上的日记软件要么充斥着广告,要么无法保证数据的绝对私密(毕竟放在别人的服务器上)。于是,我决定自己动手,从零开始搭建这个树洞。

第 1 次迭代:

最初的版本十分简陋,只能完成最基础的文字记录和单张图片上传。在这个阶段,我确立了最核心的安全信条——“落地即加密”。每一个字词在写入数据库的瞬间,都被高强度的算法转换成了连我自己都无法解读的乱码,只为保全那份仅存的安全感。

第 2 次迭代:

随着记录的增多,我们发现单纯的“流水账”很难让人产生共鸣。于是,我们引入了多维的数据视角:
我们要能清晰地看到情绪的起伏(情绪轨迹与年度热力图);
我们要能摘掉所有文字,仅仅在一整面的照片墙前驻足回忆(沉浸式图库);
我们更要能在这个世界的版图上,点亮所有去过的地方(足迹地图)。
于是,“时光”在这个程序里不再是一个抽象的词语,而是变成了看得见摸得着的形状。

第 3 次迭代:

当日记突破了数百篇,附带的图片达到上千张时,程序不可避免地撞上了性能墙。
例如:
“手机上打开首页总是要白屏好几秒。”
“编辑完日记点保存,页面在那儿转圈半天才有反应,点取消也要重载整个页面,十分心累。”
面对日益庞大的图表库和地图系统,原有的架构显得力不从心。

第 4 次迭代:

针对打开慢、白屏久的问题,我将全站笨重的第三方图表与地图引擎进行了“异步解耦”。现在打开网页时,壳子瞬间加载,复杂的数据和渲染则被巧妙地安排在了后台默默完成,消灭了让人烦躁的等待。
针对交互卡顿的问题,彻底斩断了多余的网页重载。重构了底层的提交机制,当修改完过往的日记,无论是点击保存还是取消,由于采用了极简的 JSON 通讯与纯粹的前端 DOM 切换,这一切都会在毫秒级如行云流水般完成。
除此之外,为了对抗手机上传图片容易翻转的问题,我在服务器端引入了 EXIF 进行纠偏。

至此,1diaryBook 不仅能承载岁月的厚重,更拥有了轻盈如飞的体验。


🌟 核心功能一览

  • 加密时光轴:以流线型瀑布流展示图文,所有内容数据库底层强加密。
  • 那年今日:跨越时空的相遇,每天为你推送多年前的今天你写下的话语。
  • 数据控制面板:基于 ECharts 构建的全景可视化图表,年度创作趋势与情绪波动一览无余。
  • 纯净相册回忆:无文字干扰的网格画廊,配合智能的高画质/缩略图分离策略。
  • 城市地理足迹:基于高德地图,不仅能点亮你去过的城市,还能自动计算你的探索里程。
  • 随心编辑体验:引入 Pjax 极速切换与异步保存机制,全站几乎“无感刷新”。

🚀 部署指南

无论是想动手折腾的技术极客,还是习惯了可视化管理面板的新手,都可以轻松将 1diaryBook 安放在你喜欢的服务器上。

🏗 第零步:服务器选购与成本小科普 (新手必看)

如果你是第一次接触建站部署,可能会问:“弄这个得花多少钱?值得吗?”

1. 云服务器 + 域名 (长久使用比较推荐)

  • 成本评估:现在各家主流云服务商(如阿里云、腾讯云等)对新人的基础机器(如 2核2G)常年有几十块钱一年的特惠。配合一个top后缀的域名(只需十几块),就将拥有一座一年 365 天不断电、不掉线的赛博小岛的成本,大概只需要几杯奶茶钱(50-80元/年)
  • 除了跑日记本,它还能做什么?
    拥有一台云服务器,等于你在云端有了一台拥有公网 IP 的 Linux 电脑。你不局限于只把它当成日记本,还可以:

    • 搞科研与学习:在这台机器上跑 Python 爬虫定时抓取数据,或者部署轻量级的 AI 模型服务端,或者是当作Zetero文献同步的云盘,免除容量限制。
    • DIY 一切可能:搭建你自己的个人网盘、私人博客网站、自动签到脚本,并在折腾中掌握一些网络知识。
      我初中的时候就是这样捣鼓过来的,学习到了很多东西,这些收获受益至今。

2. 本地电脑 + 内网穿透 (适合零成本尝鲜)

  • 如果一分钱不想花,完全可以把自己平时的 Windows 或 Mac 电脑变成服务器。
  • 当日记本在本地跑起来后,使用内网穿透工具(如 cpolar、Ngrok 等),将本地的地址映射到公网上。
  • 好处:完全免费!缺点:主力电脑需要一直开机不能休眠,一旦关机,在外面的手机上就打不开日记本了。非常适合作为前期的免费体验和技术练手。

准备好硬件环境后,就可以正式开始了!

🔑 第一步:准备第三方 API (高德地图)

我们的自动天气定位和足迹地图依赖高德地图的服务。

  1. 前往 高德开放平台 (lbs.amap.com) 注册并实名认证。
  2. 进入控制台 -> 应用管理 -> 我的应用 -> 创建新应用(例如命名为 1diary)。
  3. 为该应用添加 两把钥匙(Key):

    • 第一把:Web 服务 (用于后端)。选择“Web 服务”,生成出来的 Key 用于后端自动通过 IP 识别你的城市和天气。稍后填入 .env 文件。
    • 第二把:Web 端 (JS API) (用于前端)。选择“Web 端 (JS API)”,这会生成一个 Key 和配套的安全密钥(Security Code)。你需要将它们分别替换掉前端代码 resources/views/layouts/app.blade.php<head> 区域里硬编码的 securityJsCode 和 JS 链接里的 key= 后面的值。

第二步:开始部署

方案 A:宝塔面板部署 (推荐小白及生产环境)

宝塔面板的可视化能挡掉很多烦人的环境配置坑。

  1. 环境确认在宝塔软件商店安装好:PHP >= 8.0(并在设置的“安装扩展”里确认已安装 fileinfoexif)、MySQL >= 5.7 或 MariaDB、以及防跨站攻击默认解除限制(PHP设置 -> 取消禁用函数通常不需要特别动,但要有 putenv, proc_open 等权限用于 Composer)。
  2. 添加站点:在“网站”菜单点击“添加站点”。输入你的域名,同时创建一个搭配的数据库,PHP版本选择你装好的 8.0+。
  3. 上传代码:不仅可以从网页端传压缩包解压,也可以进入站点的网站目录执行 git clone。注意最终站点的根目录下应该直接看到 app, bootstrap, public 等文件夹。
  4. 设置运行目录:在站点的“设置” -> “网站目录”界面,将运行目录选为 /public,保存。
  5. 配置伪静态:紧接着在旁边的“伪静态”标签页,选择下拉模板里的 Laravel 5(对 1diaryBook 一样适用),保存。
  6. 安装依赖引擎:打开宝塔的终端,进入你的网站目录(如 cd /www/wwwroot/your_domain),执行:

    composer install --optimize-autoloader --no-dev
  7. 配置核心密钥与环境
    复制并重命名 .env.example.env(宝塔文件管理器里可直接操作),双击编辑:
    填写数据库名称、账号、密码 (DB_DATABASE, DB_USERNAME, DB_PASSWORD)。
    找到 AMAP_KEY=,填入你在第一步申请的高德 Web 服务 Key。
    保存文件后,在终端执行生成应用安全码:

    php artisan key:generate
  8. 数据迁移:在终端执行把表建到数据库里:

    php artisan migrate
  9. 开辟上传通道:执行该命令让图片等静态资源能够被网页成功加载:

    php artisan storage:link
  10. 赋予权限:在宝塔文件管理器中,勾选 storagebootstrap/cache 这两个文件夹,设置权限为 755,所有者为 www
  11. 部署完成!访问你的域名,就能看到你刚搭建好的日记本了。

方案 B:Linux 命令行部署

如果你熟练使用 Ubuntu/Centos 等终端,一切将行云流水。

# 1. 获取代码
git clone [暂未上传github] 1diarybook
cd 1diarybook

# 2. 安装 PHP 依赖包 (确保系统已安装 composer 以及 php8.0-xml, php8.0-curl, php8.0-mbstring, php8.0-gd 等库)
composer install --optimize-autoloader --no-dev

# 3. 准备环境变量
cp .env.example .env

# 编辑 .env 文件,修改数据库凭证及 AMAP_KEY(可使用 vim nano 等工具)
nano .env

# 4. 初始化应用
php artisan key:generate
php artisan migrate
php artisan storage:link

# 5. 目录授权 (假设 Web 服务器运行用户是 www-data)
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

# 6. 配置 Web Server
# 指向 public 目录作为你的 Document Root,并一定要确保 Nginx 或 Apache 开启了对 Laravel 路由规则的支持 (伪静态)。

方案 C:本地电脑 + 内网穿透部署

如果暂时不想购买云主机,想先在自己的 Windows/Mac 上随时随地使用:

  1. 安装本地环境:下载并安装 小皮面板 (phpStudy)。在软件内一键安装 PHP 8.0+MySQL 5.7+
  2. 创建本地网站:在 phpStudy 中新建网站,域名可填 1diary.local,根目录选择到 1diaryBook 的 public 文件夹,并勾选创建数据库。高级设置中务必配置好伪静态(选择 Laravel 模板)。
  3. 导入数据与配置:参考上方方案 A,同样使用 Composer 安装依赖、复制并配置 .env 文件(填入你 phpStudy 设置的本地数据库账号密码),生成应用安全码和执行 php artisan migrate
  4. 内网穿透上线:去注册一个免费的樱花穿透或者 cpolar 账号。下载客户端后,在命令行执行穿透命令(例如映射到你刚建的网站端口,通常是 80:cpolar http 80)。软件会为你生成一个公网的随机地址(如 https://xxxxx.cpolar.cn)。
  5. 大功告成:在外面用手机访问那个随机生成的公网地址,只要电脑不关机不休眠,就能随时随地写日记了!

结语

这个应用没有复杂的运营手段,也没有花里胡哨的商业计划。它仅仅是一面镜子,映照出我们的过去和现在。希望这个小巧的日记本,能在这里陪你度过更多静好的流年岁月。

无标签
打赏