<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: fang xia</title>
    <description>The latest articles on DEV Community by fang xia (@fangxia000101).</description>
    <link>https://dev.to/fangxia000101</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3955651%2F9905f6c9-af44-49ee-b3a2-a734ff3cf45d.png</url>
      <title>DEV Community: fang xia</title>
      <link>https://dev.to/fangxia000101</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fangxia000101"/>
    <language>en</language>
    <item>
      <title>用 Git 管账本 5 年，我学到的关于数据长期存活的几件事</title>
      <dc:creator>fang xia</dc:creator>
      <pubDate>Tue, 04 Aug 2026 20:26:09 +0000</pubDate>
      <link>https://dev.to/fangxia000101/yong-git-guan-zhang-ben-5-nian-wo-xue-dao-de-guan-yu-shu-ju-chang-qi-cun-huo-de-ji-jian-shi-3npe</link>
      <guid>https://dev.to/fangxia000101/yong-git-guan-zhang-ben-5-nian-wo-xue-dao-de-guan-yu-shu-ju-chang-qi-cun-huo-de-ji-jian-shi-3npe</guid>
      <description>&lt;h1&gt;
  
  
  用 Git 管账本 5 年，我学到的关于"数据长期存活"的几件事
&lt;/h1&gt;

&lt;h2&gt;
  
  
  2019 年的 commit，今天还能读
&lt;/h2&gt;

&lt;p&gt;前几天心血来潮，翻了一下账本仓库的 commit 历史：&lt;br&gt;
commit a1b2c3d... 2019-08-12&lt;br&gt;
    2019/08/12 * "星巴克" "咖啡"&lt;br&gt;
    Expenses:Coffee:Shop  35.00 CNY&lt;br&gt;
    Assets:Checking这条记录 5 年前写的，今天依然能在任何文本编辑器里打开。任何手机 App、任何云服务倒闭，都不影响我读回自己的消费记录。&lt;br&gt;
这不是什么技术信仰。纯粹是被锁过一次后的应激反应。&lt;/p&gt;

&lt;h2&gt;
  
  
  那次被锁数据的经历
&lt;/h2&gt;

&lt;p&gt;2018 年，我用了三年的一个记账 App 决定关闭导出功能——除非你升级到 Pro。&lt;br&gt;
当时我只想拿回自己的数据，不是要求什么特殊待遇。只是想导出 CSV，转到另一个工具。&lt;br&gt;
结果是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;导出功能藏在 Settings &amp;gt; Account &amp;gt; Data Export，点进去发现是 VIP 专享- 升级 Pro 需要续费一年- 即使续费，导出的格式是私有 JSON，没有任何文档说明字段含义- 客服回复"我们的格式是商业机密"我最后放弃了那些数据，重新开始记账。
从那以后我懂了：&lt;strong&gt;你不拥有放在别人服务器上的数据，哪怕它是"你的"记账记录。&lt;/strong&gt;
## 为什么选 plain text
Plain text 不是什么新技术。ASCII 标准 1963 年就有了。
但它有一个所有"聪明格式"都做不到的事情：&lt;strong&gt;半个世纪后的任何设备，都能打开 .txt 文件&lt;/strong&gt;。
那些试图"替代"它的格式？大部分早已消失：&lt;/li&gt;
&lt;li&gt;.doc → .docx → .docx with new XML schema- 各种专有的记账格式 → 只要厂商倒闭，数据变成电子垃圾Plain text 能活 60 年，是因为它&lt;strong&gt;不依赖任何特定软件来解读&lt;/strong&gt;。
## Beancount + Git 的日常
现在我的账本长这样：
2024/08/04 * "超市" "采购"
Expenses:Groceries  328.50 CNY
Assets:WeChat- &lt;strong&gt;搜索&lt;/strong&gt;: grep "星巴克" ledger.beancount — 秒出所有咖啡消费- &lt;strong&gt;统计&lt;/strong&gt;: beancount ledger.balance -f ledger.beancount — 实时余额- &lt;strong&gt;版本&lt;/strong&gt;: git log --since="2024-01-01" --until="2024-12-31" — 年度所有修改- &lt;strong&gt;备份&lt;/strong&gt;: git push — 一个命令，所有历史同步到多台设备上次手误删了一条记录？git checkout HEAD~1 ledger.beancount。
想看看三年前的消费习惯？直接 checkout 那个日期的文件，依然能读。
这不是什么高深技术。这是&lt;strong&gt;把你的财务记录，当成代码一样管理&lt;/strong&gt;。
## 数据主权从"能导出"开始
这不是说 SaaS 不好。我依然用很多云服务。
但我的分层是这样的：&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;核心数据&lt;/strong&gt;（记账记录、长期笔记）→ 必须是 plain text + 开放格式- &lt;strong&gt;工作数据&lt;/strong&gt;（临时协作、短期项目）→ 可以用便利的工具- &lt;strong&gt;娱乐数据&lt;/strong&gt;（无所谓的东西）→ 去哪都行如果你问我这 5 年最大的收获是什么？
&lt;strong&gt;数据可移植性不是"备选项"，是"必选项"。&lt;/strong&gt;
你可以随时换工具。你的数据应该随时能跟着走。&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>记账十年，我终于放弃了所有精美的记账 App</title>
      <dc:creator>fang xia</dc:creator>
      <pubDate>Wed, 22 Jul 2026 20:53:18 +0000</pubDate>
      <link>https://dev.to/fangxia000101/ji-zhang-shi-nian-wo-zhong-yu-fang-qi-liao-suo-you-jing-mei-de-ji-zhang-app-27l2</link>
      <guid>https://dev.to/fangxia000101/ji-zhang-shi-nian-wo-zhong-yu-fang-qi-liao-suo-you-jing-mei-de-ji-zhang-app-27l2</guid>
      <description>&lt;p&gt;记账十年，我终于放弃了所有精美的记账 App&lt;br&gt;
我记账十年了。不是那种"记三天就放弃"的记账，是整整十年。&lt;br&gt;
这十年里，我换过七个不同的记账 App。每一个刚用的时候都惊艳：界面漂亮、自动分类、图表炫酷。但每次换 App 都有一个噩梦——导出数据。&lt;br&gt;
有些 App 不支持导出，或者只给一截截图。有些导出格式是私有 JSON，几乎不可读。还有一次，我用了三年的 App 突然宣布停服，给我 30 天迁移期——而导出功能在那期间"暂时维护"。&lt;br&gt;
那一刻我意识到：我的财务数据，根本不属于我。&lt;br&gt;
2023 年底，我发现了 Beancount。它不是一个 App，而是一种记账方式：用纯文本记账。&lt;br&gt;
一开始我怀疑：用文本文件记账？这该多原始？&lt;br&gt;
但试了一周后，我彻底上瘾了。&lt;/p&gt;

&lt;h2&gt;
  
  
  为什么我再也不回头？
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 数据真正的属于我
&lt;/h3&gt;

&lt;p&gt;我的账本就是一个 &lt;code&gt;.beancount&lt;/code&gt; 文本文件。Git 管理版本，Dropbox 多端同步。没有任何 App 可以锁死我的数据。需要迁移？复制粘贴即可。&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 纯文本的灵活
&lt;/h3&gt;

&lt;p&gt;想批量调整去年的分类？正则表达式三秒搞定。想查某个模式的支出？&lt;code&gt;grep&lt;/code&gt; 直接搜。想生成自定义报表？Python 写个 10 行脚本。&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 移动端生态
&lt;/h3&gt;

&lt;p&gt;我一直在找移动端解决方案。Cocono 是一个支持 Beancount 的 iOS/Android App，纯文本同步，界面简洁。现在我在手机上记账，回家电脑上直接打开文件就看到了。&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 复式记账的优雅
&lt;/h3&gt;

&lt;p&gt;Beancount 使用复式记账法。一开始觉得麻烦，但慢慢理解了它的美感——每一笔交易都借贷平衡，错误无法隐藏。我的账本再也没有"对不上"的神秘差值。&lt;/p&gt;

&lt;h2&gt;
  
  
  今天的我
&lt;/h2&gt;

&lt;p&gt;记账第 800 天。我的 &lt;code&gt;.beancount&lt;/code&gt; 文件从几 KB 涨到几百 KB。它不是躺在某个 App 的私有数据库里，而是安静地躺在我的 GitHub 私有仓库里。&lt;br&gt;
十年记账，我终于找回了对财务数据的掌控。&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>Why I Switched to Plain Text Accounting</title>
      <dc:creator>fang xia</dc:creator>
      <pubDate>Wed, 22 Jul 2026 03:11:57 +0000</pubDate>
      <link>https://dev.to/fangxia000101/why-i-switched-to-plain-text-accounting-2hd1</link>
      <guid>https://dev.to/fangxia000101/why-i-switched-to-plain-text-accounting-2hd1</guid>
      <description>&lt;h1&gt;
  
  
  Why I Switched to Plain Text Accounting
&lt;/h1&gt;

&lt;p&gt;Mint is shutting down. After 10 years of financial tracking, I am losing my data again. This time, I switched to plain text accounting with Beancount.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Traditional Apps
&lt;/h2&gt;

&lt;p&gt;Traditional financial apps have several issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Export limitations&lt;/strong&gt;: They only provide summary reports, not raw transaction data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proprietary formats&lt;/strong&gt;: Data is stored in closed databases that require specific software to read&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform lock-in&lt;/strong&gt;: Different systems are incompatible with each other&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Financial records are long-term. Over the past decade, dozens of financial apps have shut down, leaving users with years of records wiped out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Plain Text Solution
&lt;/h2&gt;

&lt;p&gt;Plain text accounting with Beancount offers a different approach:&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Sovereignty
&lt;/h3&gt;

&lt;p&gt;Your data belongs to you. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open it with any text editor&lt;/li&gt;
&lt;li&gt;Read it directly as a human&lt;/li&gt;
&lt;li&gt;Access it permanently, without depending on specific software&lt;/li&gt;
&lt;li&gt;Process it freely and completely&lt;/li&gt;
&lt;li&gt;Migrate with near-zero cost&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Future-Proof
&lt;/h3&gt;

&lt;p&gt;Plain text files will remain readable decades from now. They do not depend on any company staying in business or maintaining compatibility with legacy systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the Switch
&lt;/h2&gt;

&lt;p&gt;The learning curve was worth it. I now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complete control over my financial data&lt;/li&gt;
&lt;li&gt;No vendor lock-in&lt;/li&gt;
&lt;li&gt;Confidence that my records will exist as long as I want them to&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your data, your sovereignty.&lt;/p&gt;

&lt;h1&gt;
  
  
  PersonalFinance #Fintech #DataSovereignty #Beancount
&lt;/h1&gt;

</description>
      <category>productivity</category>
      <category>software</category>
      <category>tools</category>
    </item>
    <item>
      <title>Why I Started Using Beancount</title>
      <dc:creator>fang xia</dc:creator>
      <pubDate>Sun, 19 Jul 2026 11:26:47 +0000</pubDate>
      <link>https://dev.to/fangxia000101/why-i-started-using-beancount-4io8</link>
      <guid>https://dev.to/fangxia000101/why-i-started-using-beancount-4io8</guid>
      <description>&lt;h1&gt;
  
  
  Why I Started Using Beancount
&lt;/h1&gt;

&lt;p&gt;I never thought I'd become someone who cares about accounting. But last year, I hit a wall with my finances.&lt;br&gt;
Excel spreadsheets became a nightmare. Bank statements didn't match. I had no idea where my money was going.&lt;br&gt;
Then I discovered plain text accounting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I tried:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proprietary apps that locked my data- Complex spreadsheets that broke easily- Banking apps with limited customizationNothing clicked. I needed something simple, portable, and future-proof.
## The Beancount Discovery
Beancount changed everything. It's a plain text double-entry accounting system. Here's what won me over:
&lt;strong&gt;1. My data stays mine&lt;/strong&gt;
Everything lives in plain text files. No vendor lock-in. I can edit transactions with any text editor, grep them, version control them.
&lt;strong&gt;2. Simple syntax&lt;/strong&gt;
A transaction looks like this:
2026-07-19 * "Grocery shopping"  Expenses:Food:Groceries  50.00 USD  Assets:CheckingThat's it. Date, description, which accounts, how much.
&lt;strong&gt;3. Powerful queries&lt;/strong&gt;
Want to know how much you spent on groceries last month? One command. Need a balance sheet? One command.
## My Learning Curve
The first week was tough. Double-entry accounting felt foreign. Which account do I debit? Which do I credit?
I made mistakes. Lots of them.
But the community helped. The documentation is clear. The examples are practical.
## What I Gained
After three months:&lt;/li&gt;
&lt;li&gt;I know exactly where my money goes- I can generate any report I want- My financial data is future-proof- I've built custom tools that work with my data## The Trade-offs
It's not for everyone. You need to be comfortable with text files. You'll need to learn basic accounting concepts.
But if you value simplicity, control, and future-proof data, it's worth considering.
## Getting Started
I started with one transaction per day. Now I track everything automatically.
Plain text accounting isn't just about bookkeeping. It's about having a simple, reliable system that grows with you.
For me, that was Beancount.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devjournal</category>
      <category>fintech</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>我为什么开始用 Beancount</title>
      <dc:creator>fang xia</dc:creator>
      <pubDate>Fri, 17 Jul 2026 05:54:53 +0000</pubDate>
      <link>https://dev.to/fangxia000101/wo-wei-shi-yao-kai-shi-yong-beancount-4gj4</link>
      <guid>https://dev.to/fangxia000101/wo-wei-shi-yao-kai-shi-yong-beancount-4gj4</guid>
      <description>&lt;h1&gt;
  
  
  我为什么开始用 Beancount
&lt;/h1&gt;

&lt;p&gt;两年前，我做了一个看起来很"反直觉"的决定：放弃了所有那些漂亮、智能、自动同步的商业记账 App，转而用纯文本记账。&lt;br&gt;
是的，你没看错。现在我每一笔消费、每一笔收入，都记录在一个 .bean 文件里。没有图表，没有自动分类，没有"云端同步"。只有我、文本编辑器、和一些看起来像会计分录的 plain text。&lt;br&gt;
很多人听到这里就会问：&lt;strong&gt;为什么？&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  被锁死的数据
&lt;/h2&gt;

&lt;p&gt;故事要从我换手机说起。&lt;br&gt;
那时候我用某款记账 App 用了三年。记录了三千多条交易，标签打得整整齐齐，每个月还能导出漂亮的报表分析——&lt;strong&gt;只要续费会员&lt;/strong&gt;。&lt;br&gt;
有一天我换了新手机，发现这个 App 的云端同步需要会员才能用。我的数据在他们的服务器上，但我拿不回来。导出功能？付费。批量导出？更贵的会员。&lt;br&gt;
那一刻我突然意识到：&lt;strong&gt;这些数据不是我的，是他们的。&lt;/strong&gt;&lt;br&gt;
我花了三年时间帮他们的平台完善数据，现在他们要我把数据"赎"回来。&lt;/p&gt;

&lt;h2&gt;
  
  
  寻找属于我的记账方式
&lt;/h2&gt;

&lt;p&gt;我开始寻找替代方案。主要诉求就两个：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;数据必须在我手里&lt;/strong&gt;- &lt;strong&gt;格式要是开放的，不能被某个产品绑架&lt;/strong&gt;找了很久，最后发现了 Beancount。
一个 Python 开发的复式记账工具。没有数据库，所有账目存在纯文本文件里。格式简单到令人发指：
2024-07-15 * "星巴克"
Assets:Checking       -35.00 CNY
Expenses:Coffee:Shop
就这么简单。日期、交易对方、两个账户、金额。
## 为什么是 Plain Text？
选择纯文本不是因为我喜欢复古，而是因为：
&lt;strong&gt;1. 永远不会过期&lt;/strong&gt;
文本文件是计算机世界最通用的格式。十年后、二十年后，只要有文本编辑器，我就能看懂我的账目。不需要担心某个公司倒闭、App 下架、云端服务关闭。
&lt;strong&gt;2. 版本控制友好&lt;/strong&gt;
我的账目目录是个 Git 仓库。每次记账 git commit 一下。我有完整的历史记录——可以追溯任何一笔修改是什么时候、为什么做的。这不是云端同步能比的。
&lt;strong&gt;3. 可编程&lt;/strong&gt;
既然是文本，就能用代码处理。Beancount 本身就是 Python 生态，我可以写脚本自动抓取银行流水、自动分类、生成报表。这不是"高级功能"，而是文本格式天然带来的自由。
&lt;strong&gt;4. 真正的复式记账&lt;/strong&gt;
之前用的记账 App 大多是"单式记账"——记录"花了多少钱"。但复式记账要求每一笔交易都有来源和去向。钱从"现金"到了"餐饮"，或者从"工资"到了"储蓄"。
这听起来很会计，但好处是：&lt;strong&gt;账永远不会不平。&lt;/strong&gt; 如果漏记或多记，Beancount 会直接报错。
## 踩坑实录
当然，这条路不是一帆风顺的。
&lt;strong&gt;第一周：&lt;/strong&gt; 我把"贷"和"借"搞反了 N 次。复式记账的逻辑需要一点时间适应。
&lt;strong&gt;第一个月：&lt;/strong&gt; 发现手动录入太慢，开始研究自动导入。花了一整周末琢磨如何把支付宝账单转成 Beancount 格式。
&lt;strong&gt;第三个月：&lt;/strong&gt; 终于建好了自己的账户体系。但发现早期记录的分类太混乱，又花了一个周末批量重命名账户。
现在？现在我已经 800 多天没有断过记录。每天花 5 分钟，甚至少于一分钟。
## 我学到了什么
这两年的 Beancount 实践，让我对"个人数据"有了新的理解：
&lt;strong&gt;数据主权不是一句口号。&lt;/strong&gt;
当你的数据存储在别人控制的平台上，你就是租客。他们可以改规则、可以涨价、可以关停服务。而你的数据——那些记录了你生活轨迹的数字——本质上不属于你。
Plain text 是最彻底的数据主权。因为没人能阻止你打开一个文本文件。没人能因为你没续费就锁住你三年的回忆。
## 写在最后
我不是说 Beancount 适合所有人。
如果你需要自动同步银行账户、需要漂亮图表、需要开箱即用的体验，那商业记账 App 可能更适合你。
但如果你和我一样：在意数据主权、喜欢可定制、愿意花一点时间建立自己的系统——那 Beancount 可能会打开一个新世界的大门。
我的账目文件目录现在是这个样子：
beancount/
├── main.bean          # 主账本
├── prices.bean        # 价格记录
├── accounts.bean      # 账户定义
└── .git/              # 完整历史
简单、透明、永远属于我。
如果你也对 Beancount 感兴趣，可以从官方文档开始：&lt;a href="https://beancount.github.io/" rel="noopener noreferrer"&gt;beancount.github.io&lt;/a&gt; 中文社区也有不少资源，byvoid 的系列教程很值得一看。&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>fintech</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>python</category>
    </item>
  </channel>
</rss>
