1. Vim 系列(二) 试用 Vim 几天的体会

    如前所述,最近尝试着把主要的文本编辑器从 Sublime Text 3 迁移到 Vim,试用了几天,有一些体会,本文尝试做一些小结。

    总的来说,从一个传统的编辑器到 Vim 的感觉,感觉很类似于学五笔的过程。

    从拼音到五笔,基本上是一个不向后兼容的过程,最开始的时候需要记忆一些东西,在前面不熟悉的一个月到甚至几个月,使用的时候还需要时不时地动脑想某个字或词的拆法。而等到使用了五笔一年以上之后,绝大部分字词的编码就开始形成肌肉记忆了,从这时候开始,打字速度就开始产生了质的提升。

    而刚开始使用 Vim 的时候,也有很强烈的这种感觉。最明显的一点是更方便但不那么直观的 HJKL 移动光标,对于习惯了鼠标或者方向键移动的人来说,就像是习惯了打拼音突然要打出一级简码一样,虽然方便,但经常都会按下以前熟悉的键才反应过来,哦,按错了。

    除此之外,由于我对 ST3 已经算是中度用户了,平时常用的快捷键大概也有十来个,一些 ST3 中很有特色的便携操作比如多列编辑、ctrl-D 的 multi-selection 等等,都暂时没有找到在 …

    read more
  2. Vim 系列(一) Vim tutor 要点小结

    因为各种原因,准备慢慢把主要的编辑器从 Sublime Text 3 迁移至古老的 Vim。今天开始,不定期地更新一系列的学习笔记。这篇是第一篇,大致整理了一下自带的教程(vim tutor)中的主要内容。

    启动 Vim。把 vim 的目录添加到 PATH 中,则输入 vim 可直接在命令行中启动 Vim,而 gvim 则启动带界面的版本。

    Vim 有多种模式,其中最基本的是「普通模式」,启动 Vim 后默认打开的就是普通模式,普通模式中光标是覆盖在字符上的方块,而如果在「插入模式」中,光标是字符之间的一条闪烁的线(绝大多数程序中也如此)。如果处在其它模式中,多按几次 ESC 就可以回到普通模式。

    普通模式下的光标移动。最基本的是用 hjkl 来实现上下左右,这一点刚上手 …

    read more
  3. 奇怪的bug,win8里的ctrl-backspace失效了

    最近遇到一个十分奇怪的bug,用于删除前一个单词的ctrl-backspace快捷键失效了。甚至在sublime text这种另外定义了这个快捷键行为的软件里也一样,奇怪。

    最开始是在一个机器上出现的,而记忆中唯一记得的近期对它做过的最大改动是把Python升级到了3.4,并删掉了原来的2.7,但暂时还无法确认是这个问题。更奇怪的是,在一台新的机器上,最开始没有这个问题,没过多久也出现了。

    另外自己的一台电脑上是从win7升级上来的,没有出现这个情况。

    Google了一番,似乎没有人出现过类似的情况。

    太奇怪了。

    read more
  4. 一个反直觉数学题的程序验证

    很久之前看到的东西了,今天总算抽空把它写完了。

    最开始是在 Quora 上看到一个很有意思的答案,虽然是简单的抛硬币问题,但结果确实是相当反直觉,因此,干脆用 Python 写了一系列的小程序,来验证这些结果。

    第一个游戏很简单,抛一个硬币,连续抛两次,先后出现正面(heads,后面记为H)和反面(tail,后面记为T)的概率是ht,先后出现HH的概率记为hh。很显然,两者相等。程序验证也很简单,试验十万次,看分别出现多少次。

    def game1():  
        # flip twice, the possibility of HH or HT  
        hh = 0; ht = 0  
        for i in xrange(100000):  
            pre = ''; cur …
    read more
  5. 用 Python 简化数据处理流程的 workflow 及简单示范

    注:本文所述方法肯定不是最简单的,但对我这非编程相关专业的人来说已经提高很多效率了。如果你有更好的办法,欢迎留言。

    如果同样的一个程序,改变一系列参数,分别计算结果,我一般选择把这个程序复制很多份,放在不同的文件夹里,然后写几个批处理文件(写几个是为了能同时几个一起算),按一定的次序分别执行它们,并把结果保存的相应的目录。保存的结果有很多时候是逗号分隔的csv文件,这时候如果想作图的话,就需要从每个文件中拷出数据来,然后复制到 Origin 中进行绘图。

    这样的 workflow 在对付我之前面对的多数问题都 ok,但如果保存的数据量大了,尤其是每一个 csv 文件中的列数多了(比如10列以上),或者 copy 出来的数据需要进行修改、筛选等复杂操作时,就显得有些繁琐和吃力了。相比之下,用 Python 来读取数据,并进行后续的处理和绘图就会简单一些,并且有更好的一致性。

    举例来说,比如按不同的参数,跑了10组结果,分别存在 param1~param10的文件夹中,每个文件夹中都有 result.txt 的文件 …

    read more
  6. 用Cython来加速Python的科学计算程序

    从网上照抄的一些 LBM 算例基本都是在规整的矩形区域内的计算,用简单的 Numpy 非常适合,但当需要计算一些稍微更复杂的计算域时,纯 Numpy 的计算逻辑就有点复杂了,这时最简单的办法还是循环计算节点,这时候就不得不请出 Cython 了。

    对我这种级别的人来说,Cython 基本上可以理解成用 Python 的语法来写 C,与 Python 的主要区别在于可以定义变量的类型,以及需要编译成 Python 库才能运行。这篇文章简单记录一下使用 Cython 的一些入门知识。

    使用 Cython,先需要建立一个 pyx 格式的源文件,以计算宏观密度的函数为例,建立 rho.pyx 文件,并写入如下的函数:

    def calc_rho_notype(f):  
        rho = np.empty_like(f[:,:,0])  
        for i …
    read more

« Page 6 / 9 »

links

social