0%

众所周知,beamer 作为一个幻灯片文档类,大多数情况是不做两端对齐的。但是,有些强(chu)迫(nv)症(zuo)宝宝总喜欢让列表环境有两端对齐的效果。

这篇文章来治一治这样的强迫症。

阅读全文 »

C++ 几乎是这个世界上最为复杂的编程语言(Programming Language)。C++ 的标准中有无数的细节,然而让人迷失在细节中,并不是 C++ 设计者/标准化委员会的本意。实际上,写好 C++ 程序,也不需要了解 C++ 的每一个细节;只需要理解语言背后的基本原理和技术就可以了。

C++ 语言之父(Bjarne Stroustrup)在 2012 年撰写过一篇 paper,其名为 *Foundations of C++*。在这篇 paper 中,Bjarne 通过一些例子,介绍了 C++ 背后的这些基本原理和技术。本文即脱胎于 Bjarne 的这篇 paper。

阅读全文 »

世界银行(英语:World Bank)是为发展中国家资本项目提供贷款的联合国系统国际金融机构。它是世界银行集团的组成机构之一,同时也是联合国发展集团(UNDP)的成员。世界银行的官方目标为消除贫困。根据其有关协定规定(修订并于1989年2月16日生效),其所有决定都必须旨在推动外商直接投资和国际贸易,以及为资本投资提供便利。

为了方便世界各国的研究人员,世界银行免费公开了世界各国的发展数据。应当说,这是一份详实而权威的数据。

此篇介绍如何在 Python 中使用 wbdata 库获取世界银行的数据。

阅读全文 »

搜索引擎是现代互联网的基础设施之一,而 ranking 则是搜索引擎的需要解决的核心问题。

最早尝试对搜索结果进行 ranking 的应该是 Yahoo 公司,但最终革命性突破的是 Google 公司的 Larry Page 与 Sergey Brin 发明的 PageRank 算法。

阅读全文 »

因为各种复杂的原因,工作中遇到了某个模块当中的一个动态库(Linux Dynamic Shared Object,我们称其为 A.so)需要使用与整个模块不同版本的 gcc 进行编译。由于 A.so 使用了高版本 libstdc++.so 中提供的接口;因此,如果让 A.so 与整个模块运行在同一个环境(即,依赖同一个低版本的 libstdc++.so),那么,整个程序运行时将会由动态链接器提示「找不到符号」的错误。

一个「看似」可行的解决办法,是在编译 A.so 的时候,将对应的高版本的 libstdc++ 以静态的方式链接到 A.so 里面。这样,如果能把来自高版本 libstdc++.a 的符号隐藏起来(不暴露给动态链接器,避免符号冲突),那么就可以解决问题了。

然而,这个解决办法,实际上是不可行的。本文将分析为什么不可行。

阅读全文 »