Skip to content

Latest commit

 

History

History
241 lines (156 loc) · 10.8 KB

202012W4.md

File metadata and controls

241 lines (156 loc) · 10.8 KB

@Author : Lewis Tian ([email protected])

@Link : github.com/taseikyo

@Range : 2020-12-20 - 2020-12-26

Weekly #8

readme | previous | next

总字数:2953 个(汉字:1982,英文单词:376,数字:125,中文标点:248,英文标点:222),阅读时长约:5 分 47 秒。

*Photo by Lerone Pieters on Unsplash

人生如逆旅,我亦是行人。

Table of Contents

  • algorithm
    • 数字颠倒
  • review
    • 2020 年十大最受欢迎的 Linux 发行版(英文)
  • tip
    • AI 写作智能纠错
    • 将 os.popen 的默认编码由 ascii 修改为 utf-8
    • Python 波浪号运算符 ~(StackOverflow)
    • Markdown 代码块内使用斜体(知乎)
  • share
    • 停止追求完美 —— 过你想要的生活(英文)

algorithm

输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有 0,则逆序形式也含有 0,如输入为 100,则输出为 001。

题目不难,如果用 Python 可能一行就解决,但是 Go 的话我还是不太会,一些库,语法不太熟悉,甚至连输入都不知道怎么玩 2333,还是查了下才知道是 fmt,之前只用来 输出来着。

后面一个代码是提交通过排行第一的代码,算是取巧了,直接用 string 类型接收,少了一步转换。

nowcoder_ae809795fca34687a48b172186e3dafe.go

func main() {
	var num int
	fmt.Scanf("%d", &num)
	s := strconv.Itoa(num)
	end := len(s) - 1
	for i := end; i >= 0; i-- {
		fmt.Printf("%c", s[i])
	}
}
func main() {
	for {
		var str string
		_, err := fmt.Scan(&str)
		if err != nil {
			return
		}
		for j := len(str) - 1; j >= 0; j-- {
			fmt.Print(string(str[j]))
		}
		fmt.Println()
	}
}

review

这篇文章是在 3 月底写的,所以我觉得排行应该不太准确,只能做一个参考吧。

下表是去年和今年十大最受欢迎的 Linux 发行版对比表,可以看到前三没变,前两名我更是没听过,好歹 Mint 我还听过,不知道该说太小众(宣传不够),还是我太孤陋寡闻。

2019 和 2020 十大最受欢迎的 Linux 发行版对比表

POSITION 2020 2019
1 MX Linux MX Linux
2 Manjaro Manjaro
3 Linux Mint Linux Mint
4 Ubuntu Debian
5 Debian Ubuntu
6 Elementary OS Elementary OS
7 Solus Solus
8 Zorin OS Fedora
9 Fedora Zorin OS
10 Deepin Deepin

对我来说,接触最多的两个发行版是 Ubuntu 和 CentOS 这俩货,因为第一次在自己电脑上装的双系统就是 Ubuntu,那时候喜欢折腾,按照一些博客弄些花里胡哨的样式、壁纸和图标,使得(看起来)很接近 Mac,说起来 Ubuntu 的定制性是真的高。

后来就无所谓了,都能接受,唯一强迫症的是终端那跳动的游标我必改成瘦的竖线,默认是一个宽的块,在 Xshell 连服务器我也必改这个。

扯远了,本文是按照过去六个月各个发行版的页面点击量排序的(with most page hits during the last 6 months),下面简要介绍前十发行版。

  1. Deepin

Deepin,以前称为 Deepin,Linux Deepin,Hiweed GNU/Linux,它是从 Debian 派生的,它附带了 Deepin 桌面环境(DDE),可以在 Deeping Store 中找到约一千个应用程序来满足用户需求。

听说很多国内的 Linux 玩家喜欢装这个?

  1. Fedora

由 Fedora 项目(由 Red Hat 赞助)建设和维护,Fedora 是一个由志愿者和开发者组成的世界性社区,由于其三个主要可用版本(工作站(用于台式机)、服务器版和云镜像),Fedora 多年来一直是最常用的发行版之一,以及基于 ARM(headless)服务器的 ARM 版本。

前段时间装过,做启动盘的时候需要用它自带的一个工具,挺秀的。

  1. Zorin OS

Zorin 操作系统是目前最易于使用的 Linux 桌面发行版之一。它是 Windows 和 macOS 的替代品。它提供了强大、干净、漂亮的桌面,还提供了 Zorin Appearance 程序,用户自行可以调整桌面。

我没听过这个 2333

  1. Solus

Solus 是专门为家庭和办公室计算而设计的 Linux 发行版。它提供了各种现成的软件,这样你就可以不用麻烦地安装设备了。

它提供了一个名为 budgee 的自定义桌面环境,它与 GNOME 紧密集成(可以配置为模拟 gnome2 桌面的外观)。

开发人员也可以使用它,因为它提供了各种各样的开发工具,如编辑器、编程语言、编译器、版本控制系统以及容器化/虚拟化技术。

有意思,我还挺想试试这个发行版

  1. Elementary OS

基于 Ubuntu LTS 的桌面 Linux 发行版,开发者宣称它是 Windows 和 OS X 的替代品。由于操作系统是基于 Ubuntu 的,所以它与 Ubuntu 的库和软件包完全兼容。

也就是说是一个魔改 Ubuntu 的发行版?

  1. Debian

很有名的一款发行版,不需要过多介绍。作为两个最古老和著名的 Linux 发行版之一(另一个是 Red Hat Enterprise Linux),它是许多流行的 Linux 发行版(特别是 Ubuntu 和 Kali Linux)的基础。

  1. Ubuntu

在我看来,可能是最流行的一款桌面端发行版,当然,在智能手机、平板电脑、个人电脑、服务器和云 VPS 中也可以找到它。

Try Ubuntu 这个功能在安装的时候可以看到,就是不装先体验一下,文章说并没有很多发行版有提供这个功能。

  1. Linux Mint

Linux Mint 的著名座右铭(从自由到优雅)不仅仅是一句谚语。基于 Ubuntu,它是一个稳定、强大、完整且易于使用的 Linux 发行版。

原来是基于 Ubuntu 的,有意思。

  1. Manjaro

基于 Arch Linux,旨在充分利用 Arch 强大的功能和强大的功能,同时为新手和有经验的 Linux 用户提供更舒适的开箱即用安装体验。

看了文章中的配图,还挺好看的。

  1. MX Linux

MX Linux 凭借其高稳定性、优雅高效的桌面以及简单的学习曲线而位居榜首。它是一个基于 Debian 的面向桌面的 Linux 操作系统。它配置简单,性能稳定,大小中等。它是为所有类型的用户和应用程序而构建的。

其实话说回来,习惯的力量才是最强的,不管你用的是哪一款发行版,只要习惯了它就是最好用的。

tip

偶然发现的一个名为写作猫的网站,自称是新一代的 AI 写作伴侣,帮助推敲用户、斟酌文法、改良文风还能实时同步翻译。

看了下给出的实例,感觉还挺靠谱,错别字、标点也会指出来。麻烦的是需要登录,我很烦这一点,我大概不会用。

*范文《赵州桥》的校队建议

今天遇到这么个问题,需要获取执行命令的输出,结果一直报错 "UnicodeDecodeError: 'gbk' codec can't decode byte 0x8b...",部分代码如下:

r = os.popen(f"git log -p {file}")
for line in r:
	if line.find("Date") >= 0:
		print(line)

然后搜到知乎的这个问题,骷髅垮 的回答完美解决问题,包装成一个函数(其实无所谓)返回输出的结果,我这边调用 exec 函数拿到返回值,以 '\n' 切割就可以拿到每一行了。

def exec(cmd: str):
	pip = os.popen(cmd)
	return pip.buffer.read().decode(encoding='utf8')

~ 是一个很有趣的运算符,对于整数,~x = (-x) - 1,所以判断一个列表是不是回文的有另一种写法:

def foo(lst: list):
	for i in range(len(lst)//2):
		if lst[i] != lst[-i]:
			return False
	return True

遇到的问题,没找到答案,自己解答,答案也放到知乎了。

说来也简单,一般代码块都是用三个 "`" 包起来,在里面用其他的样式都会失效,所以不能使用它,用 pre 标签就 ok 了,见下面代码块与效果:

<pre>
$ python3 apple.py <em>arg1</em>
</pre>
$ python3 apple.py arg1

share

从这篇文章,我学到一个词:遗愿清单(Bucket List)。购物清单是 Shopping List,愿望单是 Wish List,当我第一眼看到 Bucket List 我还诧异,桶列表是个什么鬼,搜了一下才知道是遗愿清单,其实我觉得翻译不太对,它的英语解释是:

a number of experiences or achievements that a person hopes to have or accomplish during their lifetime.

希望在活着的时候完成的事,跟 todo list 有那么点类似,我觉得翻译成遗愿清单欠妥。

文章想说是接受不完美做你自己会使你活得更快乐,这也是我前面 Share 一直以来传达的思想。

作者提到在 18 岁认为自己 25 岁的生活将达到一个完美的状态,于是在 15 年建了一个有 23 个目标的 Bucket List,结果只完成了 5 个;当他写这篇文章时,已经快 30 岁了,也没达到他当年的设想那般。给自己定了太多目标(很多还是通过观察别人的做法定制的),一直在 push 自己,这样做其实是在过别人定义的生活,追随别人的想法来寻找幸福/快乐是大错特错的(I was so wrong!)。

这篇文章短且简单易懂,很快就能看完,没啥好总结的,以作者一句话结尾吧:

Striving for perfection is stressful. You push yourself beyond the limits and the goal still appears far away. You never seem to get to the destination.

readme | previous | next