I got my first suit!

Professor Goodenough in our lab won the Nobel Prize for Chemistry for 2019, I am extremely lucky to get invited to his celebration dinner, the dress code for his celebration dinner is business formal, I don’t have business formal. I have Uniqlo U blazer that I wore only when I am going to the night clubs, and I don’t want to be underdressed for that occasion.

So I got my first suit from Suitsupply, it costs me a fortune, but the process was super easy and the sales people were really nice. People always say that the rules of the correct formal attire should be taught by your father or Barney Stinson. But Andrew from Suitsupply did a great job on educating me about the details. I am moderately educated on suits now.

By the way…

I am fully aware that I parked this blog for 1 year straight, and there are reasons. Main reason would be my privacy concern, people were poking around and posting my CV to public forums, I knew they got it from here and I was appalled. I think I will try to update this blog in English and cover topics that aren’t really related to my personal information. By the way, knowing too much about me isn’t healthy, talking about it on forums is very creepy.

On expressing your ignorance

Few months back, I was in a meeting about spintronic materials, there was one fifth year PhD student from Physics department, during the Q&A session, she claimed.

“I know absolutely nothing about spin-orbit coupling, and I hope in the next student meeting we can figure it out together.” Everybody nodded, Professor said something like great please let us know about the concept you want us to cover in the future, we want to help you to learn.

That really struck a cord in me, I made the exact same statement during a group meeting in 2015, and the group paused and stared at me. Professor then said:”Just to make sure, you are a Physics student, right?”

Since then, “Not Physics student enough” was something that was bothering me when I was working on my Masters research project. I smiled and nodded like a smart angel for every group meeting and colloquium I attended. I tried my best to tuck my ignorance in. When I was confronted, I would try to spin the situation by pretending to know something (by the way, thermal excitation was my first guess for A LOT of questions). And by doing that, I felt like a total piece shit for three years straight.

I still think I am not “Physics student” enough till this day, and that’s probably why I end up in Materials Science and Engineering program instead of Condensed Matter Physics. I wish people were nice when I was expressing my ignorance, people can even throw a book at me and I will read it, give me something instead of making fun of my ignorance.

Why did I suddenly flash back to few months ago and started to gibberish you ask? I was reading papers and textbooks about the low temperature transport properties of Fermi liquid today, and I came across something I don’t really understand, I asked my old colleagues, and they commented “You don’t even know how to ask the right question.” before answering my questions.

Don’t do that, let’s be nice to stupid people.

更新:如何使用 youtube-dl 抓取 YouTube 频道的更新 | Electronic Moon

在这篇文章中,我只写了抓取的部分,但整个实现还不是非常自动化。这几天琢磨了一阵子之后,我搞清楚了如何使用 crontab 将整个抓取行为定时自动化进行,并且将抓取的内容自动化上传任意给定网盘。如果你像我一样是第一次接触 cron,网上有很多介绍教程用来入门,这里我给了 Admin’s Choice 的教程做参考。

具体的细节不在这里赘述了(因为真的太简单)唯一需要注意的一点是,执行原文中的 shell script 时默认需要在 shell script 所在的文件夹内寻找配置文件,所以在执行之前,必须将路径跳转到 shell script 所在文件夹内。「每隔六个小时自动跳转到 shell script 文件夹内并执行 shell script」的写法如下:

0 */6 * * * cd /home/YouTube/youtube_channel_archiver-master/ && sh /home/YouTube/youtube_channel_archiver-master/download_archive.sh

而自动上传到网盘,rsync 似乎是最好的选择,关于此,网上也有很多教程可以参考。同样,rsync 的命令可以写到 crontab 里自动执行。这样 YouTube 频道出现更新之后,就可以全自动化抓取并上传网盘啦。

Source: 如何使用 youtube-dl 抓取 YouTube 频道的更新 | Electronic Moon

在 1UP 播客中聊聊塞尔达

五月初的时候,我和我的朋友王晓光 (@cbvivi) 在他的博客节目 1UP 中聊了《塞尔达传说:旷野之息》这一款游戏。在这期节目中,我们聊了游戏中遇到的比较好玩的事情,讲了游戏中比较吸引人的一些设定,如果你没有玩过塞尔达传说,不妨也可以听听看。

另外,1UP 播客主要聊的是一些出色优秀的作品,包括但不限于电影、音乐、电视剧和游戏等,是一个极适合打发时间的节目。

你可以在 Apple iTunes 里找到我们的这一期播客节目,请点击这里

或者你也可以在泛用型播客客户端、各大播客平台上搜索「1UP」,点击好看的红色图标即可订阅收听。

The top 8 Chinese phones – The Verge

It’s time to stop dismissing Chinese phones as knockoffs. We’ve all seen the endless parade of iPhone clones, yes, but over the past couple of years, manufacturers from China have stepped up their game in a big way, turning out devices that are innovative, attractive, and straight-up desirable in their own right. If you don’t think there’s any reason to pay attention to Chinese phones, it’s because you haven’t been paying attention.

确实相当热血的一段话,说中国 Phone step up their game 了,变得 innovative 了,下面榜单是 Top 8 Chinese phones

结果榜单里有小米 8——一款从头到脚抄袭 iPhone X 的产品。

回顾 the verge 对国产厂商的报道,有「mate x 虽然抄袭 MacBook Pro,但我们觉得没问题」还有「P20 还没开机我就爱上了它」,还有本文。

没错,the verge 在 2018 年确实收钱收得厉害。

Source: The top 8 Chinese phones – The Verge

如何使用 youtube-dl 抓取 YouTube 频道的更新

众所周知,具有极强品牌意识的 Apple 会在下架商品的同时下架官方 YouTube 频道的视频,而 YouTube 上曾经出现过的第三方 Apple 视频库(例如 EveryAppleVideo)都纷纷被 Apple 发函拿下。如果你一直很想收藏 Apple 的广告视频(并在深夜反复观看),你可以在 VPS 上安装 youtube-dl 来抓取 Apple 的更新,下载最高清晰度的视频和音频,并使用 ffmpeg 将音视频流压在一起。这个方法适用于任何 YouTube 频道。

先决条件

在开始之前,你需要:

  • 一台配置不算太差 KVM 虚拟化的 VPS,内存至少要在 512 Mb 以上,因为要使用 ffmpeg,所以处理器核心不能太差。同时因为要挂载网盘,所以你的服务商需要为你的服务器开启 FUSE.
  • 一个网盘账号,Google Drive, Dropbox 和 OneDrive 均可。
  • 学会如何使用 ssh 远程登录 VPS,网上有很多教程,你可以轻松找到

Disclaimer: 接下来的安装和部署,我都是在 Debian 9 下进行,我可能会犯很初级的错误。如果有,请在评论中指出。

配置 youtube-dl 和 ffmpeg

  1. 安装 youtube-dl

youtube-dl 是一个可以下载 YouTube 视频的命令行应用程序,它需要 Python (2.6, 2.7, 或 3.2+) 才能正常工作,关于 youtube-dl 在不同平台下详细的安装说明可以参考它的 github readme 页面。

所以,我们先在 VPS 上安装 Python.

apt-get install python

然后再下载最新版的 youtube-dl

wget http://youtube-dl.org/latest/youtube-dl -O /usr/local/bin/youtube-dl

在这一步,如果你的服务商的系统模版精简太厉害的话,很可能会报证书错误,提示证书不可信之类的信息,这个时候,你需要安装 ca-certificates 证书包。

apt-get install ca-certificates

更改目录的访问权限

chmod a+x /usr/local/bin/youtube-dl

至此,youtube-dl 就安装好了,这个时候,执行 youtube-dl —help应该可以看到如下的输出:

  1. 安装 ffmpeg

由于 YouTube 在 1080P 以上清晰度的视频才用了音视频流分开的设计,单纯下载 1080P 以上清晰度的视频时会出现只有画面没有声音的情况,所以我们需要使用 ffmpeg 将音视频流压制在一起。

apt-get install ffmpeg

安装完成之后,执行命令 ffmpeg 应该可以看到如下的输出:

至此,下载并且压制 YouTube 视频的工具已经完备,接下来我们准备一个抓取频道最高清晰度所有视频并下载的脚本。

准备抓取频道的脚本

youtube-dl 的具体使用说明在这里不赘述了,它的帮助文档中也有较为详细的描述,yotuube-dl 的功能和可配置选项非常强大,有兴趣的你可以详细研究。

但总之,我们需要做到的是:

  1. 下载频道中提供的最高清晰度视频,并且使用 ffmpeg 将音视频重新压制,输出为 mkv 格式。
  2. 重新命名输出文件,命名格式为:视频上传日期 – 视频标题 – (视频ID) – 清晰度 – 视频的 ID,视频需要存在以频道名称命名的文件夹中。
  3. 记录需要下载的 YouTube 频道,并且记录已经下载的视频 ID,重复执行脚本的时候无需重复下载。
  4. 下载视频配套的字幕(非自动转换)元数据和原始插图。

为了达到上述所有的功能,下载脚本的配置文件应该这么写,在这个配置文件中,下载的项目略微有些多,如果你不需要下载字幕和元数据,可以使用 # 将它注释掉:

-i
-o "%(uploader)s (%(uploader_id)s)/%(upload_date)s - %(title)s - (%(duration)ss) [%(resolution)s] [%(id)s].%(ext)s"

# 记录已下载文件以及需要下载的频道
--download-archive youtube-dl-archive.txt
-a youtube-dl-channels.txt

# 统一输出格式
--prefer-ffmpeg
--merge-output-format mkv

# 下载字幕
--write-sub
--all-subs
--convert-subs srt

# 下载元数据和配图
--add-metadata
--write-description
--write-thumbnail

# Debug
-v

将这个文件保存为 youtube-dl.conf,同时,新建一个名字叫 youtube-dl-channels.txt 的文件,记录你需要下载的频道地址,如下所示:

# Apple
https://www.youtube.com/user/Apple/

#Crowbcat

https://www.youtube.com/user/CrowbCat

#Nerdwriter1

https://www.youtube.com/user/Nerdwriter1

#idubbbz

https://www.youtube.com/user/iDubbbzTV

只需提供 URL 即可,接下来,新建一个名字为 youtube-dl-archive.txt 的空文件,这个文件内会记录已经下载的 YouTube 视频的视频 ID,重复运行的时候会跳过这个文件中记录的 ID.

接下来,确保上面建立的三个文件都在同一个目录,执行 youtube-dl --config-location youtube-dl.conf 即可开始自动爬取的过程,下载视频和压制的过程非常漫长,建议在 screen 中运行这个命令,以免 ssh 连接中断而导致脚本终止。

当然,你可能要问了,要我手工执行命令的话,这个到底自动在哪里?其实你可以将 youtube-dl --config-location youtube-dl.conf 保存为一个 shell script 并且建立一个 cron job 每隔一段时间自动执行,cron 是一个 Linux 系统下的计划任务工具,可以给定一个时间间隔自动运行一些项目,非常好用。

另外,配合 rclone,你可以挂载主流网盘,直接将下载完成的文件 rclone sync 到网盘上。但关于 rclone 的用法,我们只能下次再讲了(标准虎头蛇尾结局)。

注:本文的写作离不开 reddit/r/DataHoarder 社区的帮助。

 


20180717 更新:

针对自动化下载和 crontab 配置撰写,我写了这篇更新博文