0%

matplotlib 中文显示

matplotlib每次更新似乎中文字体都会炸。写了一个bash脚本来自动修复matplotlib字体,只适用于linux。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
MPL_RC="`python -c 'import matplotlib; print(matplotlib.matplotlib_fname())'`"
MPL_FONTS=`dirname "${MPL_RC}"`/fonts
MPL_CACHE="`python -c 'import matplotlib; print(matplotlib.get_cachedir())'`"
TTF_URL="https://raw.githubusercontent.com/Yehrin/FontLibrary/master/simhei.ttf"
[ -f ${MPL_FONTS}/ttf/simhei.ttf ] || wget "${TTF_URL}" -P "${MPL_FONTS}/ttf" -q --show-progress
cp ${MPL_RC} ${MPL_RC}.bak
cat ${MPL_RC}.bak | \
sed -e 's/#font.family:/font.family:/g' | \
sed -e 's/font.family: *SimHei,/font.family:/g' | \
sed -e 's/font.family:/font.family: SimHei,/g' | \
sed -e 's/#axes.unicode_minus:/axes.unicode_minus:/g'| \
sed -e 's/axes.unicode_minus: True/axes.unicode_minus: False/g' |\
sed -e 's/#mathtext.fontset: dejavusans/mathtext.fontset: cm/g' > ${MPL_RC}
rm -rf "${MPL_CACHE}"
阅读全文 »

cortex处理器型号

ARM三类处理器,分别命名Cortex-A,Cortex-R,Cortex-M

系列含义定位
Cortex-AApplication带动linux操作系统
Cortex-RReal-time实时系统
Cortex-MMicrocontroller低功耗控制器
阅读全文 »

编译Lab心得

编译lab,从零开始写一个编译器,要求能够解析C语法的一个子集。
写了一周lab,重写了3遍。有的是代码不work,有的是感觉代码不够优美。

助教给的libkoopa是C的库,我想要的是现代c++,所以放弃libkoopa,自己写IR的内存表示。也是为了积累工程上的经验。

最后第四版终于一气呵成。我的C++代码有2.5k行,对比助教给的kira的rust代码有2.1k行(不算libkoopa)。感觉非常地精简优美,在此将心得分享给大家。

重写的经历

助教给了一个样例编译器,叫kira,(日语:キラキラ,意思是闪闪发光的)。助教想要让他的编译器像星星一样,闪闪发光,指明同学们写编译器的道路。

为了证明自己的二次元浓度,我给编译器起名叫:hoka(日语:ほかほか,意思是暖洋洋的),希望写编译器的过程能带给我一点温暖。

阅读全文 »

效果

用VGG16预训练模型,$L=17$(RELU也算一层),$lr=0.08$,$\lambda=0.08$,金字塔每层优化器迭代5次,感觉很克苏鲁。

阅读全文 »

在 archlinux 上配置 PCI passthrough。其它版本的linux应该方法类似。

准备工作

这里搬运了 archwiki 上的步骤。 更详细的请看 archwiki。

  1. 启动IOMMU:编辑 vim /etc/default/grub ,给 GRUB_CMDLINE_LINUX_DEFAULT 后面加上 intel_iommu=on iommu=pt

阅读全文 »

预算

消费束: 向量 $X=(x_1,x_2)$ 表示不同商品的消费数量

预算集: 收入为 $m$ 价格为 $(p_1,p_2)$ 时能够负担的消费束: ${(x_1,x_2)|p_1x_1+p_2x_2\le m}$

预算线: 所需费用恰好等于 $m$ 的消费束: $p_1x_1+p_2x_2=m$

  • 斜率:预算线的可以看做一种机会成本,为了多消费商品1,需要放弃一部分商品2
阅读全文 »

计算机网络lab,手写链路IP和TCP,重写了至少3遍TCP之后,废弃了约1500行代码后,成功躺平,开始乱搞。

感觉TCP就像克苏鲁一样。所有尝试简化TCP让它变得条理清晰,或者用C++的特殊语法来优化代码的尝试都失败了。

乱搞真香。

本文和文中图片纯属虚构,纯属调侃,大家笑得开心就行了,不要当真

阅读全文 »

工作量单位

  • FLOPS:每秒浮点运算量(FLoating point Operations Per Second)
  • G-Hour:指1GFLOPS的机器工作1小时的计算量。
  • CPU-Hour, Core-Year: CPU单线程工作1小时的计算量,CPU泛指有1GFLOPS的参考CPU
  • CPU-Year, Core-Year:CPU单线程工作1年的计算量,CPU泛指有1GFLOPS的参考CPU
阅读全文 »

协变和逆变的关键在与“变”字。 模板类是类的函数。协变和逆变,实际上像是函数的单调关系。(下面的 $A<:B$ 指的 $A$ 继承 $B$ )

$A<:B \Rightarrow F[A] <: F[B]$ 的,就是协变。也即是,模板类与参数的继承方向相同。
$A<:B \Rightarrow F[A] >: F[B]$ 的,就是逆变。也即是,模板类与参数的继承方向相反。

继承:一种包含关系

类的关键特征,是它的继承关系。但在scala或java中,类除了可以继承,还可以有接口(或特质)。这时候,“继承”的概念是模糊的。

为什么说“继承”是模糊的呢?给一个例子。下面的代码声明了一个Hineven,他既是艺术家也是程序员:

1
2
3
trait Artist 
trait Programmer
class Hineven extends Person with Artist with Programmer
阅读全文 »