Posts

我所使用的Shell命令

10 Aug 2016

前言

本文罗列总结了学习和工作使用过的一些shell命令,记在这里方便复习和随时查阅。

查看大小

  • 查看分区大小: df -h
  • 文件大小(目录也是文件): du -sh <filename>
  • ls时候加上-h参数可以查看文件大小

查看、预览

  • 实时查看文件内容变化
tail -f <filename>

日期、时间

...

阅读全文 ...


MAC OS好软件收集

27 Jun 2016

前言

记录mac上提升效率软件。 ...

阅读全文 ...


升级Mac内置的vim

26 Jun 2016

前言

经常使用Macvim的朋友可能会发现Mac系统自带的vim版本还是7.3+,而Macvim等主流vim版本都在7.4+了,好多强大的vim插件都要求7.4+,因此这导致了一个问题: 在命令行中敲vim,启动系统自带vim的时候,命令行会报警告信息,比如YouCompleteMe和Ultisnips插件,这意味着不能在命令行版本的vim中使用这些强大的插件,同时,每次启动都提示这些警告信息是很烦人的。 另外,好多朋友应该也会碰到的问题,那就是在Macvim中使用中文输入法的时候,在输入中文的同时,会混入大量的单引号,如果你同时开启了vim的单引号匹配功能,那么当你输入几个中文字符之后后面会跟了好大一串单引号,特别烦人(据说是因为中文输入法使用单引号分隔拼音单元造成的,我尝试了搜狗和百度等输入法均有此问题,在emacs中输入也存在此问题,系统自带的输入法没问题但是输入体验不好)。但是在命令行版本的vim中,使用中文输入法就不会出现这种问题,因此在一些需要输入大量中文的场合,系统自带(命令行)版本的vim还是很有用的。 今天刚好时间充裕,重装了系统,我就来搞定这个问题。思路其实很简单,从源码编译一个vim出来,安装到/usr/local/bin/vim或者覆盖到/usr/bin/vim即可。之前用brew安装Macvim时好像看到了安装目录里带了一个命令行版本的vim,把这个vim拷贝到/usr/local/bin或者覆盖到/usr/bin/里面应该也行,但是我没有试,现在brew上的Macvim已经被我干掉了。原因请见安装Macvim 下面就开始从源码构建vim,过程很简单, 顺利的话5分钟之内即可搞定。只是需要踩几个坑,这里说一下,帮大家把这坑填了,O(∩_∩)O~。 如果想快速安装搞定,避开下面的废话,可以只看下面这一小段精华:
# 下载Vim源代码
git clone https://github.com/vim/vim.git

# 进入源码的src目录
cd vim/src

# 如果需要开启python支持,执行这句;如果需要指定版本python路径,研究一下这个选项: ----with-python-config-dir
./configure --enable-pythoninterp 

make

make install

# 卸载的话 make uninstall 
...

阅读全文 ...


安装Macvim

25 Jun 2016

前言

本文记录了一次安装Macvim遇到的问题和解决办法,并提到了如何从终端启动Macvim。

brew install macvim 成功,但启动报错

今天重装了Mac系统(10.11.5 El Capitan,你问Mac居然也重装系统?我只是想要一块干净的硬盘。). 折腾完系统,在装回Macvim的时候遇到了问题。 我是使用Hombrew来安装的,在安装过程中brew下载了一些依赖的包。最后安装完成,在执行完brew linkapps macvim生成一个链接到Applications目录之后,我立马敲了mvim来启动Macvim, 让我吃惊的是,居然报错了!
Fatal Python error: PyThreadState_Get: no current thread
这是我在iterm2窗口中看到的错误信息,虽然Macvim跑起来了,但是很明显python报错了,这意味着vim中使用Python的插件可能都会不能工作, 确实如此YouCompleteMe首当其冲,事实证明,后来我在逐个注释掉.vimrc中用到了Python的插件以排查问题的时候,把YCM注释掉了Python就不报错了。 于是google了一下报错信息,果然在YCM的issue里有关于这个问题的讨论,YCM作者一直在甩锅:
Just tried using the latest MacVim on my OS X Mountain Lion and everything works. So this is somehow caused by your machine configuration in some way, sorry.
大意就是:”别特么来烦我,这明显是你Mac系统配置问题,去换一个官方最新的Macvim版本吧。” 看了好几个关于这个问题的issue最后看到了YCM作者最关键的一个回答:
The version of Python that YCM is linked to when being built and the version of Python linked into your Vim binary have to match, yes. If they don’t, a problem like the one you’re experiencing might ensue.
意思是:”构建YCM使用的Python版本必须和构建Vim使用的Python版本必须匹配,否则就可能出来这个问题。” ...

阅读全文 ...


【Programming In Lua (2E) 笔记】5:使用C++为Lua编写扩展库(macOS上两种动态库格式的坑)

31 May 2016

ps: 2016年6月的WWDC上,Mac操作系统正式更名为macOS, 与iOS, watchOS, tvOS的命名风格终于统一了。

前言

本文记录了在macOS上使用c++为lua编写动态库的过程,分享一个容易翻车的坑。 Lua Version: 5.1

问题描述

在PIL第26章:《从Lua调用C》,介绍了从lua调用C程序的方法,即扩展lua, 用c++来为lua编写扩展库。 文中提到了扩展lua的两种方式:
  • 把c++代码编译为为动态库,使用lua的动态链接功能来加载c++的模块(即,require “cpplib”的方式, 这里cpplib为一个例子,比如我编译为libcpplib.so, 就需要像这样来加载这个动态库。)
  • 把编写好的c++模块加入到lua源码,重新编译lua可执行程序,这样c++模块就成为了lua的一部分(类似lua标准库string,math等等)
第二种方式–重新编译lua很简单,按照书中所说,把写好的c++模块注册函数luaopen_mylib添加到luaL_openlibs会打开的标准库列表里。(在linit.c中) 经过我在mac上的实践,第二种方式顺利搞定。毕竟lua源码中的README和INSTALL文档已经把编译lua讲的很明白了。 至于这第一种方式,别看书里一笔带过,这实践起来还真是。。。。。。 一言不合就翻车了。 ...

阅读全文 ...