TeX Live中XeLaTeX编译时中文文件名乱码
归根到底还不是因为软件是西方人写的,然后又没考虑好兼容性。
方法是在TeX Live的根目录下找到texmf.cnf
文件,在里面加上一行
command_line_encoding = utf-8
然后重新开始编译解决问题。
归根到底还不是因为软件是西方人写的,然后又没考虑好兼容性。
方法是在TeX Live的根目录下找到texmf.cnf
文件,在里面加上一行
command_line_encoding = utf-8
然后重新开始编译解决问题。
Jupyter Notebook是Jupyter Lab的上一代产品,虽然奠定了Jupyter系列的基本用法与功能,不过可扩展性还是差了点,不像Jupyter Lab一样,直接提供了基于json的用户可定义配置文件。
Jupyter Notebook的默认代码字体竟然是宋体,看得我人惊呆了。jupyterthemes
包能够修改Jupyter Notebook的字体,但是和主题绑定在一起了,显得不太清真。于是打算手动修改内置CSS样式。找到notebook的pip包的static/style/style.min.css
,修改其中.CodeMirror
样式,添加类似于font-family: Consolas;
的字体声明,重启Jupyter Notebook服务生效。
问题1:
pytorch\aten\src\ATen\native\quantized\cpu\qembeddingbag_unpack.cpp(131): error C2039: "Fused8BitRowwiseQuantizedSBFloatToFloat": 不是 "fbgemm" 的成员
类似的,“XXX不是XXX的成员”的问题很有可能由相同的原因引起。
我这里的问题是git checkout
的时候忘记更新依赖版本了。理论上的正确操作是git checkout
之后再git submodule update --init --recursive
操作。如果不小心编译了一半,修改了submodule里的文件的话,可以先git submodule deinit --all -f
清除所有文件后再重新初始化submodule。这个重新初始化的过程不消耗流量,数据已经在第一次更新submodule的时候保存到本地了。
问题2:在编译torch/csrc/stub.c
时,遇到
VC\Tools\MSVC\14.29.30133\include\cstdlib(19): error C2061: syntax error: identifier 'noexcept'
这个是由于编译器把C++头文件cstdlib
当成C源代码来编译了,导致C++专有语法noexcept
认不出来报错。我这里产生问题的原因是Python的pyconfig.h
中不分青红皂白地写了#include <cmath>
这句话,相当于默认当成C++头文件使用了,因而在编译stub.c
的时候引入了C++语法导致报错。
我的解决方法:把
#include <cmath>
改成
#ifdef __cplusplus
#include <cmath>
#else
#include <math.h>
#endif
然后就是test模块里的一堆bug= =
比如说什么模块导错了、数据类型不对一类的,见啥改啥就行了
根据RFC,IPv6有两种地址管理方式,分别是有状态Stateful
和无状态Stateless
。如其名所示,Stateful
模式下主机IPv6地址由路由器分配,而Stateless
模式下主机IPv6地址根据协议自身计算得出。大概可以猜到的是,Stateful
模式下管理较为方便(如DDNS等),而Stateless
模式则是减轻了路由器的工作负担(毕竟IPv6地址池那么大一个,记录所有地址还是很消耗资源的)。
OpenWrt默认使用了Stateless
的方式管理IPv6下的内网NAT,然而我想知道内网设备中有多少获取到了IPv6地址= = 于是试图网上冲浪找出配置方法。
左摸索右摸索,也不知道是不是关键词用得不对,老半天才在一篇国人折腾IPv6的文章中摸到了个边。注意到文中配置有个未经解释的ra_management
参数,搜了一下发现OpenWrt官网上给出了极为惨淡的解释:
ra_management integer 1 RA management mode 0: no M-Flag but A-Flag 1: both M and A 2: M but not A
这里提到了A
和M
两个标志位,而这两个标志位正是DHCPv6中用于控制Stateful
和Stateless
模式的标志。
Flag Type | Name | Message | Manual | SLAAC | DHCPv6 |
---|---|---|---|---|---|
A | Autonomous | Prefix Information | No | Yes | Maybe |
M | Managed | ICMPv6 134 RA | No | No | Yes |
O | Other | ICMPv6 134 RA | No | Maybe | Yes |
L | On-Link | Prefix Information | No | Yes | Yes |
也就是说,理论上,将ra_management
设置为2
的话就可以强制启用Stateful
模式管理IPv6地址。有待试验。
参考: https://blogs.infoblox.com/ipv6-coe/the-ipv6-prefix-information-option-or-fun-with-the-l-flag/
据MathWorks所述,在Matlab 2018之后就允许普通用户从官网下载安装器,制作离线安装包。然而,官方下载器又做的非常脑瘫,只支持单线程顺序下载,并且还没有暂停功能。
然而这些都是题外话,好不容易用100M的校园网带宽挂完了下载之后,安装出了幺蛾子:一打开,先是弹出一个错误界面,然后进入安装器界面后给出模棱两可的错误信息:There was an error communicating with the backend services.
。起初我以为是某墙的问题,后来发现断网也无法避免。上网找了半天,没几个和Matlab安装有关的报错信息。最后在官方论坛某帖子的回复里看到了一小段回复(链接):
When I received this error, it was not due to proxy settings or firewall settings. Rather, when I downloaded the installer, the download location was on a remote drive (a windows remote profile DFS location). I copied the setup file to the local drive, and it ran fine.
大意是说,下载的Matlab安装程序不能放在外部文件系统上,包括可移动设备和网络驱动器等。而我恰好为了做备份,直接把Matlab下载到了外置的移动硬盘上,然后直接从移动硬盘上启动了安装程序,从而导致了该问题;而回复者通过把安装程序拷回内置磁盘的方式解决了问题。但是动辄近20GB的完整安装文件来回移动,可以说是duck不必。在Windows下,我们可以尝试活用mklink
,把外置磁盘中的文件夹软链接至内置磁盘中,让Matlab以为它是从内置磁盘读取的数据。
事实证明这个方法是有效的。从内置磁盘的软连接中重新启动Matlab安装程序,启动界面正常了,报错也消失了,问题解决。