• 读书学习计划的重要性 吴丹阳


    列出读书或者学习计划对真正的执行非常重要。

    下图中,前面的括号中是真实的完成时间,往后面一点的日期是当时做的计划

    image

    这个课程在看到40多节课的时候,明显自己的拖延症犯了,有时候想玩一会儿,有时候就自己说服自己看不看都一样。

    后来我想着,列个时间表,一直放在滴答清单上面,也能随时提醒自己该做的事儿还没做完。

    于是就写了个简单的 php 脚本,把计划列了出来:

    <?php
    
    $dict = [];
    $date = 1;
    foreach (range(46, 152) as $value) {
        $dict[] = $value;
        
        if (count($dict) == 5 || $value == 152) {
            $curDate = date('Y-m-d', strtotime('+' . $date . ' days'));
            $date++;
            echo $curDate . ' - linux-网络编程ep_' . implode('、', $dict) . PHP_EOL;
            $dict = [];
        }
    }
    
    

    在滴答清单的任务收集框中粘贴进去,就会创建很多任务,并且提醒日期会自动识别

    image

    做完这些之后,虽然最后延迟了一些时间全部完成,但是最终还是都看完了。没有像以前看书或者视频的时候,看着看着就丢失了进度,然后就做别的事情去了。

    有了这次的经验,我又选定了另外一个目标:

    在网上找了一本 HTTP RFC 的中文翻译,一天看 10 页,最终虽然也延迟了两天,但是还是看完了。当全部勾选了的时候,还是很有成就感的。在对抗拖延症的路上又走了一大步。

    image

    后来又用 go 语言实现了一个工具版本的

    package main
    
    import (
    	"flag"
    	"fmt"
    	"os"
    	"time"
    )
    
    var (
    	planName, startDate        string
    	start, end, step, dateStep int
    )
    
    func main() {
    	parseFlag()
    	checkArgs()
    	genPlanText()
    }
    
    func genPlanText() {
    	firstDateTime, _ := time.Parse("2006-01-02", startDate)
    	i := start
    
    	for {
    		j := i + step
    
    		if j > end {
    			j = end
    		} else {
    			j -= 1
    		}
    
    		fmt.Println(fmt.Sprintf("%s | %s | %d-%d", firstDateTime.Format("2006-01-02"), planName, i, j))
    
    		firstDateTime = firstDateTime.AddDate(0, 0, dateStep)
    
    		i += step
    		if i > end {
    			break
    		}
    	}
    
    }
    
    func checkArgs() {
    	if len(planName) <= 5 {
    		fmt.Println("error, planName is empty")
    		os.Exit(1)
    	}
    
    	if end <= 0 {
    		fmt.Println("end is invalid")
    		os.Exit(1)
    	}
    
    	if step <= 0 {
    		step = 1
    	}
    
    	if start <= 0 {
    		start = 1
    	}
    
    	if start >= end {
    		fmt.Println("end should larger than start")
    		os.Exit(1)
    	}
    
    	if len(startDate) < 0 {
    		startDate = time.Now().Format("2006-01-02")
    	}
    }
    
    func parseFlag() {
    
    	// 命令行参数
    	flag.StringVar(&planName, "p", "", "计划名称")
    	flag.IntVar(&start, "s", 1, "开始点")
    	flag.IntVar(&end, "e", 1, "结束点")
    	flag.IntVar(&step, "t", 1, "步长")
    	flag.IntVar(&dateStep, "dt", 1, "日期步长")
    	flag.StringVar(&startDate, "f", time.Now().Format("2006-01-02"), "开始时间,格式 2006-01-02, 默认今天")
    
    	flag.Parse()
    }
    

    使用方式:

    
     ./plan_gen -p 阅读正面管教 -s 71 -e 262 -t 20 -dt 0
    
    Usage of ./plan_gen:
      -dt int
            日期步长 (default 1)
      -e int
            结束点 (default 1)
      -f string
            开始时间,格式 2006-01-02, 默认今天 (default "2022-06-21")
      -p string
            计划名称
      -s int
            开始点 (default 1)
      -t int
            步长 (default 1)
    

    生成出来的计划如下:

    2022-06-21 | 阅读正面管教 | 71-90
    2022-06-22 | 阅读正面管教 | 91-110
    2022-06-23 | 阅读正面管教 | 111-130
    2022-06-24 | 阅读正面管教 | 131-150
    2022-06-25 | 阅读正面管教 | 151-170
    2022-06-26 | 阅读正面管教 | 171-190
    2022-06-27 | 阅读正面管教 | 191-210
    2022-06-28 | 阅读正面管教 | 211-230
    2022-06-29 | 阅读正面管教 | 231-250
    2022-06-30 | 阅读正面管教 | 251-262
    
  • 相关阅读:
    2007年12月英语四级预测作文大全1
    2007年12月英语四级预测作文大全3
    2007年12月英语四级预测作文大全2
    2007年12月英语四级预测作文大全3
    2007年12月英语四级预测作文大全2
    2007年12月英语四级预测作文大全3
    2007年12月英语四级预测作文大全2
    2007年12月英语四级预测作文大全3
    2007年12月英语四级预测作文大全2
    2007年12月英语四级预测作文大全2
  • 原文地址:https://www.cnblogs.com/wudanyang/p/16390500.html
Copyright © 2020-2023  润新知