第 34 期:幸运的人一生都被童年治愈,不幸的人一生都在治愈童年。

@Author : Lewis Tian (taseikyo@gmail.com)

@Link : github.com/taseikyo

@Range : 2021-06-20 - 2021-06-26

Weekly #34

readme | previous | next

本文总字数 2875 个,阅读时长约:5 分 38 秒,统计数据来自:算筹字数统计

*Photo by Vika Strawberrika on Unsplash

Table of Contents

  • review

    • Python 类型提示与文档注释

    • 21 款很棒的浏览器(Chrome & Firefox)扩展(Medium)

    • 5 种运行 Shell 脚本的方法(Medium)

  • tip

    • 微软 0x8019001 错误,应用商店无法打开

    • 将 Chrome 中的缓存数据移出 C 盘(博客园)

    • wsl 设置默认账户为 root

  • share

    • 幸运的人一生都被童年治愈,不幸的人一生都在治愈童年。

algorithm 🔝

review 🔝

本文介绍了 Python 3.5 之后加入的类型提示和文档注释。

为什么 3.5 之后加入类型提醒(type-hints)?

类型提示可以从 typing 模块导入,格式为:<variable name> : <variable type>

类型提示增加了源代码文档和可读性,可以说它本身就是 Python 的增强协议(Enhancement Protocols,PEP)的一部分

下面就是一个例子,虽然不错,但我觉得换行之后再注释更好(强迫症)

类型提示是可选的,因此 Python 解释器会忽略它们,即使是格式错误的类型提示的 Python 代码仍然能运行

但是诸如 PyCharm 之类的 IDE 已经集成了类型检查和静态类型检查工具(如,mypy),它们将类型错误作为 bug 进行检查。

由于强迫症的习惯,我也多多少少在代码中加入了类型提示,并在提交代码前会使用如下工具对代码进行格式化检查:

  • black

  • mypy

  • isort

  • flake8

文章中说道可以使用 Git 提供的 pre-commit hooks 来自动进行代码的格式化,主要是使用 "pre-commit-config.yaml" 配置文件来进行配置,具体做法在另一篇文章中,下次在看吧。

其实手动也挺快的,直接将代码写入 Shell 脚本,然后在 WSL2 中运行即可,也很方便。

1、隐私类

大概跟 Adblock Plus 差不多

看描述是拒绝网站使用 cookie,从而避免弹窗,但是开了 Adblock Plus 我已经很久没看到广告和弹窗了

我是觉得浏览器自带的密码管理器已经够用了

看名字就知道了,自动将 http切换到 https

没太看懂描述:Decentraleyes "prevents a lot of requests from reaching networks like Google Hosted Libraries, and serves local files to keep sites from breaking".

2、生产力及实用工具

截图以及录制工具,显然有其他替代工具了

这个好东西必须推荐!

显示世界各地的时间

印象笔记的插件,用来一键保存

屏蔽掉让你分心的网站,提高生产力,真的很 productivity 了

名为森林,很有趣的一个种树插件,树会逐渐长大,但是你浏览黑名单的网站,树就会死掉

人物列表,让你有计划的安排

一个阅读器,该插件清理网页,只留下文本和图像,跟简阅很像,但是简阅的功能可能更强大

3、自定义

让网页变成黑色主题

定制新标签页,我之前用过,感觉一般,默认的其实就行了

4、翻译和字典

关于这类我用的是沙拉翻译,挺好用的,集成了多种接口

5、社交媒体

该插件可以将网址缩短,生成一个短的 URL

该插件根据颜色来打标签,确实需要一个轻重缓急的顺序,我老把想读但是当前可能没时间的网站都扔到一个 ReadLater 的收藏夹,一段时间之后会积累好多,收藏之后就忘记了是一个很严重的问题

6、搜索引擎优化

SEOQuake 提供具体的指标,如反向链接,流量,关键字难度,页面搜索引擎优化审计

7、游戏

这是个浏览器内的游戏,作者挺逗的,前面提到专注于生产的扩展,这波放出令人分心的扩展,还说了句:Are you ready to waste time? :)

1、直接运行该文件

添加可执行权限,然后直接运行即可:

chmod u+x cool_script
./cool_script

2、指定特定的 xsh 解释器来运行

bash ~/simple.sh
zsh ~/simple.sh

3、后台运行

nohup cool_script $

简单的方法是在命令后面加一个 & 即可

4、exec 命令

exec cool_script

当以常规方式运行脚本时,Shell 将生成一个新的子进程(fork)去执行命令

exec 命令用于防止这种情况,使用 exec 后面的命令完全替换当前 Shell,当前进程被销毁,并且没有生成的子 Shell

我似乎没用过这个方式,作者提到一个应用场景:

Mac 上默认的 Shell 是 zsh,但是你希望在 bash 中执行一些工作,那么你可以简单地运行 exec bash,将默认的内存中 shell 更改为 bash。

5、在特定的时间运行

最简单的方法是使用 at 命令

at -f ~/cool_script teatime

Instead of teatime, you can specify whatever you want, like now + 2 minutes, tomorrow, or 15:08.

第二种就是 crontab

0 16 * * * /path/to/cool_script

第三种只能在 Mac 下使用:launchd

首先创建一个 .plist 文件:

touch ~/Library/LaunchAgents/com.schedule-test.daemon.plist

写入以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.schedule-test.daemon.plist</string>

        <key>RunAtLoad</key>
        <true/>

        <key>StartInterval</key>
        <integer>60</integer>

        <key>StandardOutPath</key>
        <string>/Users/<username>/Library/Logs/stdout.log</string>

        <key>ProgramArguments</key>
        <array>
            <string>/Users/<username>/bin/cool_script</string>
        </array>

    </dict>
</plist>

这将创建一个每 60 秒运行脚本的配置,如 StartInterval 中定义的那样。RunAtLoad 意味着它将在加载作业定义后立即运行任务。

启动:

launchctl load ~/Library/LaunchAgents/com.schedule-test.daemon.plist

停止:

launchctl unload ~/Library/LaunchAgents/com.schedule-test.daemon.plist

如果希望安排作业在特定的日期运行,可以在修改 .plist 文件

<key>StartCalendarInterval</key>
<dict>
 <key>Minute</key>
 <integer>42</integer>
 <key>Hour</key>
 <integer>13</integer>
 <key>Weekday</key>
 <integer>2</integer>
</dict>

这将在每周二下午 1:42 运行你的脚本

感觉跟 crontab 类似,就是配置文件写法差异罢了

tip 🔝

1. 微软 0x8019001 错误,应用商店无法打开

这个问题遇到过几次了,要么是打开应用商店(Microsoft Store),要么是登陆账号,那时候会一直转圈,然后报错 0x8019001,搜索一通之后发现方法都不能解决。

最后发现实际上是开着代理的问题,关掉 Clash 的代理设置,然后重新打开应用商店就好了。

Chrome 浏览器会默认的将用户的缓存是数据存放于 %LOCALAPPDATA%\Google\Chrome\User Data 文件夹内。

用久了之后,就会积攒大量缓存数据与 C 盘内。尤其在 Win10 系统 C 盘日益吃紧的前提下,将缓存是数据移至其他盘符很有必要。

  1. 进入 %LOCALAPPDATA%\Google\Chrome(=C:\Users\Administrator\AppData\Local\Google\Chrome,用户是 Administrator)

  2. User Data 文件剪切到其他盘符,我这是在 D 盘内创建了一个叫做 Chrome 的文件夹。

  3. 打开控制台窗口运行 mklink /j "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data" "D:\chrome\User Data"

假设安装的发行版是 18.04,那么在 CMD/PowerShell 中输入:

ubuntu1804 config --default-user root

对于其他的版本也是类似,替换即可。

share 🔝

1. 幸运的人一生都被童年治愈,不幸的人一生都在治愈童年。

有时候不得不承认,一个人的童年经历很大程度上会左右他的成长,比如性格、待人处事的方法等等。

幸运的人拥有完整的童年,有父母的陪伴以及他们给予足够周全的照顾和情感的沟通交流,这样的孩子会身心健康地成长,无论是性格,还是面对挫折时的应对心态相对来说都会更加积极阳光;

不幸的人得到的是残缺的童年,要么缺少父爱、要么缺少母爱、甚至全部缺失,这类孩子没有得到足够的关爱,也缺少情感上的交流,或许性格内向自闭,或许会性格扭曲偏激。

很多时候我都会想到小时候,会觉得现在性格的某些缺陷是那个时候的成长经历造成的,但是另一方面我又相信自己的未来掌握在自己手中,既然意识到问题就该去想办法解决,而且只有不断努力拼搏才能获取更美好的未来,执着于过去对当前或者未来并没有任何作用;

所以看到标题的这句话还是觉得有一定道理,幸运的人一生都被童年治愈,不幸的人一生都在治愈童年。

既然无法选择出生和童年,那就做好当下,并为一个更好的未来奋斗吧。

readme | previous | next

最后更新于

这有帮助吗?