[原创] 戴口罩也不是我们的文化

首先我要讲一个真实的事情。上周末我在上海黄浦江边的一个开放式公园里看到很多人,大人小孩都很多,我看到的全部外国人(白人)一共有3个:1个大人+两个小孩,全部都不戴口罩。而我看到的几十个中国小孩全都戴了口罩。
不做杠精,我只是从长相上判断中国人和外国人,至于他们是不是换了国籍我不知道。
虽然样本量小,但是从最近从网络上得到的很多信息,以及我亲自观察到的现象上来看,我认为这不是偶然现象——欧美国家的大多数人,血液里流淌着抗拒口罩的基因。
这一周我和Cambly的两位外国友人谈了谈这个问题,更能印证“不戴口罩”是一种深深固化在欧美人民心中的一种思维模式。

阅读更多

[原创] 当美国人听说我已经实现了口罩自由之后...

两天前的4月2日,在美国马萨诸塞州(也就是麻省理工学院MIT所在的那个州),有一个大新闻:在该州抗疫物资已经紧缺得十万火急,而又无法得到联邦政府援助的情况下,州长查理·贝克(Charlie Baker)打通各种关系,从中国订购了170万N95口罩,经过相当复杂的一系列联络与协调,在中国驻纽约领事馆、中国企业的大力支持下,最后通过职业橄榄球队“新英格兰爱国者”老板罗伯特·卡夫(Robert Kraft)的一架私人波音767飞机,从中国深圳运回了首批120万个口罩。
州长和爱国者的老板一下子成了很多人心目中的英雄。
我浏览了和此新闻相关的很多Twitter信息流,总结出来几个现象:
(1)很多美国人使劲表扬州长和“爱国者队”,有很多路转粉;
(2)也有很多美国人骂美国联邦政府太没用,骂散装美国各自为政的混乱场面;
(3)永远少不了一部分美国人在一如既往地反华,说这是中国来的口罩,就算放到我面前我都不用!(然而N95是分发到抗疫前线的医务人员手里的,根本不会送给你们这些群众好吗!)

阅读更多

[原创] 从近期与几位国外友人的交流看欧美人民在疫情下的心情

Cambly是我一直用来和国外友人(英语口语)交流的平台,每周2次,从不间断。最近,中国大陆疫情得到了极大缓和,而欧美疫情则迎来了大爆发。我近几周和一些国际友人聊了聊,我觉得从他们的谈话中可以一窥欧美普通民众对他们国家政府“抗疫”不力的无奈心情。

阅读更多

[原创] 来自丹麦的妹子Leila,修机械玩摩托写代码,酷就一个字

点开这篇文章的各位,你们一定会觉得很奇怪:这是什么奇怪的标题?你不是一般只发技术文章的吗?
并不是。和学习相关的文章我也会发。作为一个最近几年来都在顽强地每天坚持背英语单词,并且自掏腰包和老外练口语也坚持了一年多的人,我可以算是在英语学习上也没有退步,所以我想和大家分享一下英语口语学习中的一些事。

今天我要向大家推荐Cambly上的一个丹麦妹子,Leila老师。昨天已经是我第二次和她交流了。
等等,Cambly是什么奇怪的东西?
Cambly是一个和老外(native English speakers)视频聊天练习英语口语的平台——当然不是免费的,但是如果你用推荐码 DZZZ 注册一个账号,能免费得到15分钟的使用时间,反正不要钱,不妨尝试一下。

阅读更多

[原创] 强化学习框架 rlpyt 的数据可视化工具:viskit

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
在训练强化学习模型的过程中,rlpyt 产生的大量训练日志看起来无比枯燥,本文展示了如何利用 viskit 把这些日志数据可视化。

阅读更多

[原创] Python的list.append()比np.append()更快

在Python中,假设你最终想得到一个NumPy array,而它是通过append大量数据得到的,那么有两种办法:
先创建一个Python list,append完数据之后再把这个list转成NumPy array。
 直接创建一个NumPy array,用 np.append() 函数来append数据。
第1种比第2种快很多,尤其是当你在一个for循环中频繁做这个事情的时候,差距就更明显了。

阅读更多

[原创] PyTorch模型 .pt,.pth,.pkl 的区别

我们经常会看到后缀名为 .pt,.pth,.pkl 的PyTorch模型文件,这几种模型文件在格式上有什么区别吗?
其实它们并不是在格式上有区别,而只是后缀上不同而已(仅此而已)。在用 torch.save() 函数保存模型文件的时候,各人有不同的喜好,有些人喜欢用 .pt 后缀,有些人喜欢用 .pth 或 .pkl。用相同的 torch.save() 语句保存出来的模型文件没有什么不同。
在PyTorch官方的文档/代码里,有用 .pt 的也有用 .pth 的
据某些文章的说法,一般惯例是使用 .pth,但是官方文档里貌似 .pt 更多,而且官方也不是很在意固定用一种,大家就自便吧。

阅读更多

[原创] 如何查看一个Python进程在"干什么": py-spy 来帮忙

如果你觉得一个运行中的Python程序有问题,例如它的耗时比你预想的要长很多,那么你可能会想知道它到底在“干什么”,有很多方法可以实现这个目的,但是很多都是需要修改Python代码来配合的,这显然是让人最不爽的方式。
而 py-spy 这个工具提供了一种无侵入的方式来达成这个目的:

py-spy是Python程序的采样分析器。 它使你可以直观地看到Python程序花费的时间,而无需重新启动程序或以任何方式修改代码。 py-spy的开销非常低:为了提高速度,它是用Rust编写的,并且它与被分析的Python程序不在同一进程中运行。 这意味着py-spy可以安全地用于生产环境的Python代码。

阅读更多

[原创] IntelliJ推出的语法检查插件Grazie,没有现实意义

今天看到一篇推送的技术文章,说IntelliJ推出了一个语法检查插件Grazie,但它不是用于检查面向编译器的语法,而是用于检查面向人类的语法,比如引号里的字符串、注释语句里的语法,等等。我认为在当前的环境下,它没有意义——除非在一个有着严格要求(或者非常自律)的团队里,否则这种功能只能用来“折腾自己”,而不可能改善大家整体的代码状况。

阅读更多

[原创] 不要畏惧困难,提笔写作

首先我得承认,我原来打算写的很多技术方面的“系列文章”,在写了若干篇之后就没有后文了,一方面是因为忙于工作和生活(毕竟不是富裕人家),另一方面也是由于总觉得没有积累到一定程度,还不能准确地把想要写的东西表达出来。这我得检讨。

“我要写的这些,是不是太简单了?写出来会不会显得太low?”
“我要写的这个,我不确定对不对,写出来误导别人怎么办?被人取笑怎么办?”
“我这篇文章会不会太短了?就这么点东西好意思发出来吗?”

带着这些想法,我又成功地毙掉了我准备下笔的一个决定。

阅读更多

[原创] 小心PyCharm的import带来的unresolved reference误导

有时候你可能会遇到这样的故事:git clone一个Python的GitHub项目下来,配置好了对应的Anaconda环境,安装好了依赖的package,用PyCharm打开了项目,打开一个.py代码文件,发现PyCharm在文件开头几行就给标注了波浪线,提示unresolved reference XXX。而且,尽管PyCharm提示有错,你却可以运行代码。
“我完全就是按项目要求的版本装的各种依赖包,怎么会找不到这个定义?”你心里可能会很不爽。
这个时候,你要看清楚了,有可能是PyCharm给了你误导,其实你什么都做对了,只是PyCharm显示错了而已。

阅读更多

解决LaTeX for WordPress插件在PHP 7.0下失效的问题

最近WordPress管理后台提示我升级WordPress版本到5.2.1,但由于5.2.1最低要求的PHP版本是5.6,我使用的PHP比这个版本还低,因此只能升级PHP版本,同时又考虑到现在PHP 7比较主流,因此我从PHP 5.4直接升到了PHP 7。

阅读更多

[原创] 如何用Jackson解析含有转义字符的JSON到Java对象?

如果一个JSON字符串里有一个字段,它的值又是一个完整的JSON字符串,那么这时候,它可能会含有转义字符。举个例子,我们有一个文件  codelast.json,它的内容为一行字符串:

{"aaa":"{\"ccc\":\"ccc\",\"ddd\":\"ddd\"}","bbb":{"ccc":"ccc","ddd":"ddd"}}

现在要用Jackson解析它为一个Java对象,怎么做?

阅读更多

[原创] MAC配置(杂)

 在MAC里安装Ubuntu虚拟机,使用共享文件夹
宿主机:MAC OS
虚拟机:Ubuntu 16.04
首先在Virtualbox软件里设置好永久性的共享文件夹,但你会发现Ubuntu里根本看不到设置的共享文件夹,原因是你需要在虚拟机中安装Virtual Guest Additions软件,方法:Devices->Insert Guest Additions CD Image...,然后Ubuntu就会自动开始安装Virtual Guest Additions软件,安装好之后重启Ubuntu虚拟机,你会看到在Ubuntu文件管理器的左栏中多了一个共享文件夹的链接,不要以为此时就大功告成了,事实上现在还不能用,只要你一点击它,就会提示没有权限,原因是你需要在Ubuntu虚拟机中把你的当前用户添加到vboxsf用户组中:

sudo adduser codelast vboxsf

然后重启Ubuntu虚拟机,再点击共享文件夹试试看,问题解决。

阅读更多