读书学习计划的重要性
列出读书或者学习计划对真正的执行非常重要。
下图中,前面的括号中是真实的完成时间,往后面一点的日期是当时做的计划
这个课程在看到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 = []; } }
在滴答清单的任务收集框中粘贴进去,就会创建很多任务,并且提醒日期会自动识别
做完这些之后,虽然最后延迟了一些时间全部完成,但是最终还是都看完了。没有像以前看书或者视频的时候,看着看着就丢失了进度,然后就做别的事情去了。
有了这次的经验,我又选定了另外一个目标:
在网上找了一本 HTTP RFC 的中文翻译,一天看 10 页,最终虽然也延迟了两天,但是还是看完了。当全部勾选了的时候,还是很有成就感的。在对抗拖延症的路上又走了一大步。
后来又用 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
本文来自博客园,作者:吴丹阳-V,转载请注明原文链接:https://www.cnblogs.com/wudanyang/p/16390500.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)