(许久没有更新折腾类的了.)
ailien invasion
最近按照 《Python编程:从入门到实践 - 2016》 一书重复了 ailien invasion 这一 project (见 https://github.com/phyer219/alien_invasion ) ! 本身是个写游戏的项目. 但是很多方法都可以借鉴到其它的 project 中. 对于我这种没有正经地学过写程序的人来 说(我不想回忆本科时上的那门程序设计课…), 收获还是颇丰的!
- 对类的应用
- 要给每个函数写 docstring
- 把不同功能的函数放到不同的文件里
- 写一些程序后, 要进行重构(Refactoring), 降低一些函数的长度. 使程序的结构清晰.
感谢这本书的作者和翻译者. 这样完整且标准的去重复这样的 project 的机会真的难得!
得益于 ailien invasion , 又用了一天的时间把正在做的课题用 python 重新算了一遍. 经过修改一些 bug 后, 和之前的 fortran 符合得很好, 我终于能够对自己写的 fortran 程序的正确性很有信心了!
VS Code
就我目前所处的 emacs 学习曲线的阶段来说, 还是 VS Code / Atom 这类的编辑器写这种 project 比较合适. 它的特点是
- 程序分散在不同的文件里, 要频繁来回切换, 反复修改.
- 总的代码量并不大.
- 要时常查看函数的 docstring .
VS Code 新插件 Pylance 真的方便. (期间遇到问题, 才知道 VS Code 有好多分支, code, vscodium …)
但写 tex , emacs + auctex 的效率还是无敌的!
wakatime-mode
用了 VS Code, 不免要看看有哪些好玩的插件. 于是就发现了 wakatime. 统计你在不同去 的 project, 不同的时间段, 不同的编辑器上花费的时间的插件. 好玩! 好玩在展示统计结 果的界面, 真好看! 我此时认为统计的主要魅力就在于那些漂亮的图表!
昨天发现 wakatime 还有 emacs 的插件, 那岂不美哉!
但是无论怎么搞, 它都会报错
error "WakaTime Error 104 Invalid API Key. Set your api key with: (custom-set-variables '(wakatime-api-key \"XXXX\")) |
几个小时没有解决(折腾这种事容易上头, 这还是近几个月来少见地上头了) . 回头一看 VS code 竟然也 Invalid API Key 了, 在 atom 也是 Invalid API Key . 然后换了系统, 换 了账号, 都是 Invalid API Key . 而其它类似的插件是可以正常连接的. 此时, 我已基本 断定, 这个报错的原因极有可能是服务器出了问题. 于是没有再理.
今天早上一看, 昨天果是它们的服务器的问题, VS Code 和 atom 都正常了. emacs 仍然是 Invalid API Key. 我打开 dashboard 一看, 让我震惊的是 dashboard 上竟然显示了我昨 天在 atom 和 emacs 上的活动! 也就是说, 虽然 wakatime-mode 报错 Invalid API Key, 但是实际是 dashboard 已经收到信号了. 这是谎报的!
经过一波测试, 断定是 emacs 的 wakatime-mode 插件的 bug! 于是找到插件对应的 wakatime-mode.elc , 定位到 Error 104 对应的语句
(set-process-sentinel process |
果断删除了
((= exit-status 104) (error "WakaTime Error (%s) Invalid API Key. Set your api key with: (custom-set-variables '(wakatime-api-key \"XXXX\"))" exit-status)) |
再测试一波, dashboard 能统计到 emacs 的活动, emacs 的 wakatime-mode 也不再报错. 完美解决.
对我来说是解决了, 如果有能力的话, 还是把这个 bug 报给开发都比较好. 我还是算了…