• 写给非程序员出身的女朋友的 Beancount 记账及 Fava 自建服务器指南

    一、为什么要记账

    关于为什么要记账以及记账的好处是什么,每个人的答案肯定是不一样的。这里我只谈一谈我个人的情况,我从大学毕业后开始记账,到现在四年半的时间。记账可以跟踪这几年来自己资产的一个变化,根据你记账的周期,可以画出一条由多点构成的折线。换句话说,你可以很清晰地知道你当前经济情况,知道自己的存款以及负债水平。注意我这里提到的是资产而不是存款,这是两个不一样的概念,简单讲,资产=存款-负债。你不仅需要了解自己的储蓄卡账户余额,也需要知道自己的信用卡和花呗等账户的负债情况。

    二、如何记账

    如上文提到,我记账已经有几年了,一开始使用 excel 来记录,每周做一次整理,记录自己这周衣食住行等所有的开支以及收入情况,以及记录所有账户的存款和负债情况,从而了解资产情况。这样的记录是很花费时间的,尤其是当你忘记了某一笔开销是什么的时候,需要花费大量的时间来查找消费记录和回忆消费目的,甚至想不起来的情况也是时有发生的。

    直到后来,从 ByVoid 大神的博客里了解到了一种开源的记账软件 Beancount,从此便爱上了它。这个软件让我的记账工作轻松了不少,也让记账成为了一种乐趣。它的学习曲线并不陡峭,入门很容易。

  • Chromecast 断电重启后时间错误

    chromcast 断电后时间错误把 chromecast 一边电源口接到电脑上,另一边用 hdmi 接到电视上。在电脑上执行,将默认的时间更新服务器修改为阿里云。adb shell settings put global ntp_server ntp.aliyun.com. 前提条件 电脑上安装好 ADB chromecast 打开开发者权限及USB调试 chromecast 可以通过遥控...
  • Samsung Galaxy Note20 Ultra 充电曲线图

    从10% 充电到 100%,用时大概1小时。峰值充电功率 25w 左右,在充电前期通过会在 25w 和 10w 左右循环,充电 90% 以后,功率开始慢慢下降。
  • Chromecast 播放电脑本地视频

    如何使用 Chromecast 播放一个本地电脑上的视频呢?

    • 1 首先需要下载 VLC 播放器,需要下载 nightly build 的版本,发行的版本目前看不支持投屏。

    nightly build

  • Nexus5 刷入官方固件失败

    一、 错误提示

    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
    $ ./flash-all.sh
    Sending 'bootloader' (3124 KB) OKAY [ 0.310s]
    Writing 'bootloader' OKAY [ 0.492s]
    Finished. Total time: 0.900s
    rebooting into bootloader OKAY [ 0.003s]
    Finished. Total time: 0.003s
    Sending 'radio' (45489 KB) OKAY [ 1.650s]
    Writing 'radio' OKAY [ 3.249s]
    Finished. Total time: 4.994s
    rebooting into bootloader OKAY [ 0.006s]
    Finished. Total time: 0.006s
    extracting android-info.txt (0 MB) to RAM...
    --------------------------------------------
    Bootloader Version...: HHZ20h
    Baseband Version.....: M8974A-2.0.50.2.30
    Serial Number........: 040123e21846f170
    --------------------------------------------
    Checking product OKAY [ 0.100s]
    Checking version-bootloader OKAY [ 0.100s]
    Checking version-baseband OKAY [ 0.100s]
    extracting boot.img (8 MB) to disk... took 0.092s
    archive does not contain 'boot.sig'
    archive does not contain 'dtbo.img'
    archive does not contain 'dt.img'
    archive does not contain 'odm.img'
    archive does not contain 'product.img'
    extracting recovery.img (9 MB) to disk... took 0.157s
    archive does not contain 'recovery.sig'
    extracting system.img (996 MB) to disk... took 50.548s
    archive does not contain 'system.sig'
    archive does not contain 'vbmeta.img'
    archive does not contain 'vendor.img'
    CreateProcess failed: 系统找不到指定的文件。 (2)
    fastboot: error: Cannot generate image for userdata

  • 去除安卓5.0上的感叹号的解决方法

    adb shell settings put global captive_portal_mode 0之后飞行模式一下,就可以了。 原文链接:本人CSDN博客
  • Win 10 安装 NET Framework 3.5错误解决

    参考百度经验 地址 原文链接:本人CSDN博客
  • ssh 连接 ubuntu12.04 提示服务器拒绝了密码

    一、问题

    使用xshell 通过 ssh 连接 vm 虚拟机下的 ubuntu12.04,提示服务器拒绝了密码。

    二、解决方法

    • 1、尝试修改 vim /etc/ssh/sshd_config 文件的如下内容
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # Authentication:

      LoginGraceTime 120
      PermitRootLogin yes
      StrictModes yes

      ...

      # Change to no to disable tunnelled clear text passwords
      PasswordAuthentication yes
  • C语言 enum枚举类型

    阅读下面的程序,写出输出内容。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>

    enum {
    ITEM_A = 0,
    ITEM_B = 0,

    ITEM_C
    };

    int main(int argc, char const *argv[])
    {
    printf("%d\n", ITEM_C); //add 1
    return 0;
    }

    原文链接:本人CSDN博客

  • IAR开发STM32堆栈设置

    一、前言

    关于堆栈的定义在此就不赘述,详细内容可以看这篇博客
    堆栈溢出会导致野指针,返回地址错误等问题,通常程序已经无法正常运行,进入 HardFault 异常中断。为了避免这种情况,一般会分配较大的空间用做栈,可是如果仅仅为了安全就分配大空间的栈势必导致内存浪费。本文介绍两种获取栈最大消耗的方法,以方便合理设置栈的大小。

    二、方法

    1、方法一

    栈指针 SP 指向的位置可以反应出当前栈的消耗量。在 STM32 中,栈是向下生长的,如果我们定期的获取栈指针 SP 的值,比较后得到一个最小值,就代表了栈的最大消耗量。而如何才能定期去获取栈指针 SP 的值呢?可以使用定时器产生一个周期性的中断,在中段函数中获取栈指针 SP 的值。最简单的方法就是在系统滴答定时器(SysTick)的中断函数中调用栈分析函数。具体可以参看如下的函数。在程序运行结束后,再去获取最大栈消耗量。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    static uint32_t max_stack_usage = 0xffffffff;
    void stack_parse()
    {
    int a = 0;

    if((uint32_t)&a < max_stack_usage)
    {
    max_stack_usage = (uint32_t)&a;
    }
    }

    uint32_t get_max_stack_usage()
    {
    return max_stack_usage;
    }
1234516