Python3 logging best? practice
众所周知, 常用的输出有print,而调bug有logging, 用起来就是 info/debug/warning/error
但还有一些常见的问题
- 在命令行输出一些,在日志文件输出一些,两边等级和格式不同
- 希望日至记录 时间/文件/输出的行数/上下文
- 直接使用的软件的logging 和 库的logging有什么不同
- 想重定向所用的库的logging, 调整库的logging的等级是否可行
众所周知, 常用的输出有print,而调bug有logging, 用起来就是 info/debug/warning/error
但还有一些常见的问题
源 https://cppquiz.org/quiz/question/1
辅助 https://godbolt.org/ https://cppinsights.io/
C++17 标准
Undefined: 一般是不可预期的行为,可能编译器在特定的时候特定处理了, 在使用不可移植的或错误的程序结构或错误的数据时的行为,而本国际标准对此没有规定要求。编译器可以 完全无视情况,产生不可预测(运行时)的结果;在翻译或程序执行过程中,以环境所特有的记录方式行事(无论是否发出诊断信息);终止翻译或执行(发出诊断信息)。如 integeer overflow
Implementation-defined: 标准未定义,编译器需要在编译器文档中 说明如何实现的
Unspecified: 使用一个未指定的值,或其他行为,本国际标准提供了两种或更多的可能性,并对在任何情况下选择哪一种没有进一步的要求。 未指定的行为的一个例子是函数的参数被评估的顺序。
TLDR: 有可实施性,但是作为更简单的方案是像我现在这样直接用Ubuntu
众所周知,在以前,通过vim+ssh可以容易的远端开发, 并且当我的主系统一直是Ubuntu时,连vmware里,连windows的wsl2里的linux都十分容易
但现实是很多win下的程序员,和不会vim的程序员, 以及大的项目需要用一下vscode
以及手上项目各种各样,不同语言的,同语言不同版本的,不同工具依赖同样三方库的不同版本的(虽然现在不少语言的隔离有了各自的方案,而且五花八门的,这个直接从上层解决了,甚至同时帮助了系统更换)
TLDR: 在多次尝试 zsh之后,2023 还是回到了bash
那么多面经在说引用计数, 循环引用会无法gc,而以我对jvm python等多个有gc语言的了解,js 再怎么也不至于就是个引用计数
否则循环引用早爆了
1 | function foo() { |
chrome performance 点垃圾桶 进行gc, 然后再执行
1 | console.log(wm1); |
https://github.com/CroMarmot/ReactDemo/commits/master
| 功能 | doc |
|---|---|
| Head | https://github.com/CroMarmot/ReactDemo/commit/00dc0b74d4363e3be39433647a63c3fbe8a96d66 |
| Script | https://github.com/CroMarmot/ReactDemo/commit/0cb1c2aac95b276a689bb49e31f7a147d78c159e |
| 静态生成,Link,route,404 | getStaticPaths getStaticProps |
| global css, module css | commit |
| static image | https://github.com/CroMarmot/ReactDemo/commit/0a826c74cef03573ced89c2eb36c70a763401fba |
https://nextjs.org/learn/foundations/
1 | npx create-next-app@latest --ts |
React use Babel to compile JSX
https://zh-hans.reactjs.org/docs/strict-mode.html
识别不安全的生命周期
关于使用过时字符串 ref API 的警告
关于使用废弃的 findDOMNode 方法的警告
检测意外的副作用
检测过时的 context API
确保可复用的状态
1 | import React, { StrictMode } from 'react'; |
我也是用了 spf13-vim + vundle 有七八年了, 之中还用过Pathogen 之类的
这次随着ubuntu $20\to 22$的升级, 有不少之前的插件不支持vim8,不能用了, 虽然根据官网消息,似乎vim9已经出来了
vim8 也有自带的package管理方案:h packages, 看起来需要自己用git维护, 而用vim-plug只需要维护vimrc, 而在8之上还有dein,minpac的插件管理工具
而且还有nvim和vscode+vim键位的一些解决方案
但我有点懒 宁愿多配配 也暂时没想着改习惯
本机是ubuntu, 就没管win和mac的, 其它的看各种工具的官方文档吧
壮着胆子,在Ubuntu 22.10还没发布前,把系统从20.04.5升级到了22.04.1, 以我从12->14,14->16,16->18,18->20多年的经验来看, 这次竟然没问题! 厉害了, 以前每次升级都会炸点东西, 然后最终还是重装式升级, 这次竟然没啥严重的炸掉
然后pip3 install -e .出问题了
先是报没权限,但看报的路径,没往用户目录下写,在写root, 作为一个胆小的人, 向来杜绝777的
翻了半天google和github
看到一个方案:setup.py中加上
1 | import site |
加完以后, 恩 是没有问题了
然后报错
1 | × python setup.py develop did not run successfully. |
又搜,发现的确是setuptools有bug,然后60.0.2修复了