Other articles


  1. Test ipynb format

    Test using ipynb format for Pelican

    Basic formats

    This is normal, italic text and bold text.

    Some list:

    • item1
    • item2

    What about math? Inline equation $a=\sin b$, and standalone equation:

    $$ y=\int_1^2 \frac{1}{1+e^x}\mathrm{d}x $$

    Figures

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

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

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

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

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

    read more
  3. 合并多个 pd.DataFrame 的常规方法

    在使用 pandas 时经常会碰到一个需求,即合并多个 DataFrame。比较遗憾的是,按现在 pandas 的设计,并不能在不产生新 DataFrame 对象的情况下把数据 append 到一个现有 的 df 中,因此如何相对有效地合并多个 df 一直是困扰我的问题。

    按最通常的想法,是直接写一个循环:

    for df_i in dfs:
        pd.concat(df, df_i)
    

    显然这样会额外地创建很多个临时的 df,虽然能够工作,但不是好的工作方法。

    在 StackOverflow 上有人给出了一个办法,我认为相对还是比较好的,就是把所有要合并 的 df 放到一个列表中,然后用 concat 函数一次性合并:

    df = pd.concat(dfs)
    

    这样避免了产生中间临时 …

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

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

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

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

    • 打开命令行查看本机在局域网的 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

Page 1 / 9 »

links

social