The best input is OUTPUT.

2017-03-26
优雅的在终端中编写Python

优雅的在终端中编写Python

前言

最早我也只是在服务器上编辑文件的时候用用vim来改改程序,并没有把vim当做自己的主力编辑器。但是偶然的一次机会需要改一个奇葩的输入文件的格式,用了下Vim的宏录制,尝到了甜头,于是后面就开始用Vim来写程序了,虽然使用初期有些阻力,但时间久了就会发现,双手再也不用离开键盘,即使使用sublime这样的编辑器我也要改成使用Vim模式,Vim真的能让自己一思维的速度编辑文本(对我来说就是写程序了)。

正好最近换了新的电脑,需要在新电脑上配置一下,就干脆把一些配置相关的东东记录下来吧,相关的配置文件我都放在了github(https://github.com/PytLab/dotfiles) 上并写了相应的安装和卸载脚本,给有需要的同学做个参考吧。

本文是有关配置的文章,并不对Vim的核心技巧进行说明,有需要的童鞋可以参考文档和相关书籍。这里主要配合tmux和vim可以更有优雅的帮助我们在终端中进行Python编程。

Read More

2017-02-19
Python多进程并行编程实践-mpi4py的使用

Python多进程并行编程实践-mpi4py的使用

前言

在高性能计算的项目中我们通常都会使用效率更高的编译型的语言例如C、C++、Fortran等,但是由于Python的灵活性和易用性使得它在发展和验证算法方面备受人们的青睐于是在高性能计算领域也经常能看到Python的身影了。本文简单介绍在Python环境下使用MPI接口在集群上进行多进程并行计算的方法。

MPI(Message Passing Interface)

这里我先对MPI进行一下简单的介绍,MPI的全称是Message Passing Interface,即消息传递接口。

  • 它并不是一门语言,而是一个库,我们可以用Fortran、C、C++结合MPI提供的接口来将串行的程序进行并行化处理,也可以认为Fortran+MPI或者C+MPI是一种再原来串行语言的基础上扩展出来的并行语言。

  • 它是一种标准而不是特定的实现,具体的可以有很多不同的实现,例如MPICH、OpenMPI等。

  • 它是一种消息传递编程模型,顾名思义,它就是专门服务于进程间通信的。

Read More

2017-02-16
推荐一本不错的MPI教程

推荐一本不错的MPI教程

今天看到一本很不错的MPI教程,内容并不是很多,但是讲的非常清晰,并且图示画得非常通俗易懂,比我第一次学习MPI时候看的那本清华大学出版社的《MPI并行程序设计实例教程》好很多,不知道是不是自己已经熟悉MPI的原因,反正我对这本书颇有好感,虽然代码是C和Fortran都有,但是默认以Fortran为主,推荐想学习MPI并行编程的童鞋参考这本书。

Read More

2017-02-14
ECMAScript中的作用域链和闭包

ECMAScript中的作用域链和闭包

本文对ECMAScript中的作用域以及闭包的概念进行一下小结。主要是整理概念便于理解和回忆。

作用域

任何程序设计语言都有作用域的概念,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。

函数创建和调用时的作用域链

函数和其他对象一样,都拥有

  1. 可以直接通过代码访问的属性
  2. 一些仅供js引擎访问的内部属性(用[[...]]扩起来的那些)。
Read More

2017-02-08
ECMAScript中的OOP-继承

ECMAScript中的OOP-继承

本文总结下ECMAScript中继承的几种实现模式。

继承模式

许多OO语言都支持两种继承模式:

  1. 接口继承
  2. 实现继承

C++中可以通过纯虚函数,虚函数来实现接口继承,同时如果不是虚函数则再派生中无法修改函数的实现,便是实现继承。而js中没有函数签名则无法仅继承接口,只支持实现继承,实现的方式便是原型链

Read More

2017-02-06
ECMAScript中的OOP-对象创建

ECMAScript中的OOP-对象创建

在ECMAScript中我们总不能使用Object构造函数或者字面量直接定义对象,这样将会产生大量的重复代码。

这里将ECMAScript中几种面向对象中的创建对象的方法进行总结, 其中包括:

  • 工厂模式
  • 构造函数模式
  • 原型模式
  • 组合使用构造函数和原型模式
  • 动态原型模式

工厂模式

就是将对象的创建以及属性的添加等细节都封装在一个能够接受参数的函数中。

Read More