解决 procps 更新报错

某日(就刚才)在日常更新一个 Debian 服务器的时候指令 sudo apt-get upgrade 失败,报错

Setting up procps (2:3.3.9-9+deb8u1) ...
Job for systemd-sysctl.service failed. See 'systemctl status systemd-sysctl.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript procps, action "start" failed.
dpkg: error processing package procps (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 procps
E: Sub-process /usr/bin/dpkg returned an error code (1)
Continue reading “解决 procps 更新报错”

打包windows下软件的一些坑

前一阵子答应帮了个忙,开发一套仪器软件。写了一天之后写好了,交付源码,但是对方几乎没有懂计算机的人,所以要求我把所有东西再打包成一个 windows 上的可执行文件。这几天刚好回来,稍微有一点空闲时间,随手打了一下包。不过,因为很多年没有用windows,实在是很不熟悉,打包windows软件的时候遇到了很多奇怪的小坑,稍微总结一些,方便自己以后参考。

Continue reading “打包windows下软件的一些坑”

解决 VSCode format tex 文件时报错 Can’t locate YAML/Tiny.pm in @INC

这个错误的原因很简单,就是 YAML::Tiny 没安装,VSCode 安装 LaTeX Workshop 插件的时候不会自动安装,因此手动安装一下就可以解决。

cpan Unicode::GCString
cpan App::cpanminus
cpan YAML::Tiny
perl -MCPAN -e 'install "File::HomeDir"'

注意如果 perl 是 brew 安装的,每次 perl 升级后,会需要重新来一次。

根据 Homebrew 的说法,default non-brewed cpan modules are installed to the Cellar. If you wish
for your modules to persist across updates we recommend using `local::lib`.

为了避免麻烦,可以

PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"' >> ~/.bash_profile

由于 CPAN 的系统过于老旧,用 CPAN 管理包非常麻烦且复杂,报错也经常难以搞清楚问题,推荐换成 cpanminus。

关于 Unicode::GCString 和 LineBreak 编译失败

另一个问题是,在 macOS 下,Unicode-LineBreak-2019.001 有可能无法成功编译。查看 log ,可以发现在编译 sombok / libsombok.a 后,链接时出现问题

cc  -mmacosx-version-min=10.13 -bundle -undefined dynamic_lookup -L/usr/local/lib -fstack-protector-strong  LineBreak.o  -o blib/arch/auto/Unicode/LineBreak/LineBreak.bundle sombok/libsombok.a

ld: warning: ignoring file sombok/libsombok.a, file was built for archive which is not the architecture being linked (x86_64): sombok/libsombok.a

这个问题早年做过 iOS 开发的人都很熟悉,选错 device 和 simulator 的话经常看见类似 file was built for x86_64 which is not the architecture being linked 的错误。。所以说明 sombok 的编译一定是在某处出了问题,排查一下即可发现是安装了 GNU binutils 中的 ar 与 macOS 的 BSD ar 冲突搞的鬼,暂时将其卸载即可。

如何DIY一台信噪比和分辨率不输于商业仪器的低成本激光Raman光谱仪

Raman光谱是什么我就不多解释了,大家都懂,相信大家也都已经体验过用Raman光谱仪做各种分析的方便之处了,比如说自己新搞来或者合成了什么物质想简单地看一下纯度,再比如说用来快速地鉴定各种塑料材料是什么,或者鉴定一些样品里面有什么东西等等。总之,拉曼光谱最爽的几个点就在于它不需要对样品做过多的处理,晶体、固体粉末、液体、溶液、表面等等都可以直接打谱,可以说是极其的方便。

然而普通的人想要搞一台Raman放在家里用并不是一件容易的事,因为目前来看商业的Raman光谱仪价格都还比较高,便宜的在几十万,贵一点的一套房就没有了。然而,实际上商业的拉曼里面有很多功能我们都是用不上的,我们日常使用的话对拉曼的要求并没有那么高,最重要的参数就是分辨率和信噪比(SNR)。实际来看,分辨率做到10个波数左右,SNR上百就已经非常够用了(作为参考,Wasatch Photonics 的 WP532 系列的分辨率有3种,分别是7、9、15个波数,常温探测器的信噪比在500:1,低温探测器的信噪比在2400:1)。

这篇文章主要是从原理出发,带你走完一个设计到搭建一台基本的拉曼光谱仪的完全流程,包括光学部分,电路部分和软件部分等等。在这台基本的拉曼光谱仪上,可以做各种改动来做更高级的拉曼,比如探测器冷却技术,表面增强技术等等。

Continue reading “如何DIY一台信噪比和分辨率不输于商业仪器的低成本激光Raman光谱仪”

约化密度矩阵理论简介


\(
\def \bra#1{{\langle #1 \rvert}}
\def \ket#1{{\lvert #1 \rangle}}
\def \braket#1#2{{\langle #1 | #2 \rangle}}
\def \expect#1{{\langle #1 \rangle}}
\)如何用约化密度矩阵方法计算量子体系能量等问题,最早在约六七十年前就已经提出。但由于N-representability问题的悬而未决,在过去的几十年中一直没有解决。自上世纪90年代来,随着控制理论中semidefinite programming优化方法的发展,虽然N-representability问题依然没有完全解决,但利用p-positivity条件已经可以由2-RDM计算得到较好的结果。另一种不同但与之相关的方法,即采用Contracted Schrödinger equation的SCF解来进行计算,在3-RDM和4-RDM近似展开在2-RDM上的条件下,也能得到不错的结果。

虽然这种方法在近年发展缓慢,甚至有可能是一种不太可行的方法(非常感谢刘文剑老师课上提醒,N-representable 条件可能是无穷多的!),但这种方法的formulation其实非常漂亮,其背后思想十分简洁。作为一种 alternative viewpoint,也许能对我们有一些启发。

这篇文章主要是结合一下这方面工作的代表性人物 Mazziotti 教授 (JFI, UChicago) 写的一些综述,以及他在07年出的一本书《Reduced Density Matrix Mechanics: with Application to Many-Electron Atoms and Molecules》(见Advances in Chemical Physics第134卷),简单介绍一些这方面的基础。

Continue reading “约化密度矩阵理论简介”

一个入门水平的简单统计力学教程[未完工]


这篇文章大概是从高中的时候就打算写,不过考虑到长度过长,来北大之后就一直没有时间动笔。 最近刚好考完了一波期末,两学期的物理化学课程也结课,准备趁着摸鱼的这小段时间简单地介绍一下统计力学当中比较浅薄的概念。 (顺便:强力推荐化院高毅勤和刘剑两位老师合授的物理化学英文版课程, 010-01035200-1006172506-1 ,化院两年以来上的最有价值的课,虽然我是个菜逼,依然学到很多)

对于我个人来说,中学时期接触统计力学思想之前,学习经典热力学漫长又缺乏清晰内核的经历是相当痛苦的。 因此我认为从微观的角度出发,尤其是从分子动力和量子力学的角度出发,结合微观与宏观的关系来理解热力学量的成因是一条更为清楚、更加富有内涵的道路。 并且,理解微观与宏观的联系方法 (eg. Fokker-Planck equation),对于社会统计、微观/宏观经济学、生态学等其它学科的理解也是至关重要的 (as an interesting example, see this and this

作为一个初级的统计力学教程兼一篇安利性质的文章,我认为不应该有过多的具体实现细节,并且希望尽量写得轻松一点。 作最简陋的打算,文章主要会把握住微观与宏观的联系这条主线,考虑相应简单地介绍数学背景和物理图像。 在此之外,如果我还有时间完善文章,作最理想的打算,则物理化学内容方面,希望尽量包括化院本科的化数、物化、中级物化课的初级内容和其它学校一些研究生课程的内容; 算法和代码方面,打算尽量讲清思路,并结合我自己的编码经验,偶尔会给出python, julia, MATLAB 或者类 C 代码的伪实现; 数学方面,希望能摆脱初级微积分的技巧性操作,尽量从抽代、实变、泛函、几何之类的角度,建立高观点来看待复变、概率、ODE、PDE等等需要用到的工具中的技巧,试图寻找比较优雅的理解问题的方法。

Continue reading “一个入门水平的简单统计力学教程[未完工]”