Other articles


  1. NCM: 理想的 vim 补全插件

    Update: NCM已停止更新。不过在它停更之前,我发现它在有些时候会造成 Vim crash 或卡死,已经将其卸载。本来 deoplete 可能是最好选项了,但总没有找到能让我满意的配置。目前的办法是 Vim 退居二线,只用来做简单快速的编辑,主力转到更现代的 VSCode。

    在 Vim 上一直以来都没有找到一个相对理想的自动补全插件。最开始的需求不高,只要求 能够基于上下文做一点自动补全就可以了,所以 supertab 就已经足够满足了。后来尝试用 you-complete-me,繁琐的安装让我还是放弃了这个选择。

    再往后用得最久的一个选择是 neocomplete,它带有一些类似于 IDE 的功能,比如补全某个导入的包的函数名。大多数时候这个插件还比较符合我的心意,但一直有一个比较不满意的地方是,如果导入了某个相对大一点的库,比如 numpy,那么在第一次输入任何小数点的时候程序会卡顿一小段时间。尽管作者说已经实现了异步,但至少在我的配置下,没有能够实现异步地生成补全库。另外最新的消息是这个插件已经基本停止更新,作者已经把主要精力放在了新的替代品上了。

    由此引出本文的主角,也就是我目前的选择:nvim-completion-manager …

    read more
  2. 用 LaTeX 写大论文的一些经验

    几个月前写博士毕业论文的时候,起初准备用 Word 来写,因为虽然我算是 LaTeX 的老用 户,但其实遇到问题时并没有什么解决的经验。相比之下,用大部分人使用的 Word 会更 加稳妥。不过在 Word 中写了几页就决定还是用 LaTeX 了,主要有两方面的原因:

    1. 论文中存在大量公式,Word 虽然自 2007 版本起就引入了更好的公式支持,允许按部 分 LaTeX 的语法输入,并且有不错的显示效果。但比较遗憾的是,即使是目前最新版 本的 Word 2016,在存在行内公式时,段落内的行间距都会受到影响。这一点,如果一 直是使用 Word 的人并不一定会注意到,但一旦注意到了,而且确定地知道使用 LaTeX 可以克服时,就会觉得这个缺点难以忍受了。
    2. 论文各个章节以及章节内部存在大量的交叉引用,图片、公式 …
    read more
  3. 方便的个人命令行小助理

    最近发现有一些经常重复性做的工作,包括:

    • 打开命令行查看本机在局域网的 IP
    • 用 Inkscape 命令行转换矢量图格式
    • 调用已写好的某脚本快速查看关注股票的价格

    等等。这些工作往往都有确切的实现办法,但往往用起来相对没那么简便,而且输出也不一定足够精简,比如输出局域网IP功能就只输出一个IP,而且最好命令就是一条非常简单的ip

    想了一下,实现一个这样需求很简单的小工具还是比较容易的,我想的解决方案是这样的:第一步,写一个 Python 脚本,可以接受命令行参数来实现不同的功能;第二步,让这个脚本可以命令行运行。

    需求想明白了,实现就简单了。

    第一步,先编写 tools.py,以输出 IP 为例:

    import sys
    args = sys.argv
    
    def main():
        try:
            if args[1] == 'ip':
                get_ip()
        except:
            pass
    
    def …
    read more
  4. 高效的沟通有时需要省略不必要的细节

    先讲一个编造的故事。

    小新在科研中遇到一个问题,要求求解一个几乎不可能得到分析解的一元方程,小新通过查文献,发现牛顿迭代可以用数值解法得到解,于是自己开始写程序实现牛顿迭代。小新在这个问题上已经困扰了很久,因此很高兴地向老板汇报,说他终于找到可行的办法了,两天内就可以得到结果!但小新在计算的时候发现,自己的那个方程在某些系数的条件下,对给定的初值非常敏感,迭代不稳定,结果容易发散。然后经过仔细排查,发现如果不让两次迭代的结果跨越太大,比如添加一个系数,让下一步的解只跳一半的距离,迭代就稳定多了。经过加班加点,总算在两天之内按照改进的迭代算法,得到了正确的结果。

    然而在向老板报告结果的时候,小新遇到了意想不到的麻烦。他向老板大致地讲了牛顿迭代的原理(编造的故事,不用在意细节~),然后重点讲了自己在迭代计算中做出的改进,最后简单讲了一下计算的结果。小新的意图是,强调自己在迭代算法中的创新,来突出自己做的工作,毕竟也是在这部分花费了最多的时间,也是最「原创」的工作。然而,从老板的角度来看,他的目的只是得到方程的解,本来听牛顿迭代就已经云里雾里了,然后又听小新大篇幅地讲了他在牛顿迭代上做的修改,怎么听都不怎么靠谱。因此,本来一次比较简短的讨论会,介绍一下采用的求解方法,然后交流一下求解的结果,最后却变成了在算法的细节上无休止的争论。老板认为小新修改了别人的算法 …

    read more

Page 1 / 2 »

links

social