emacs使用ELPA管理扩展

平时我们使用emacs的时候都是自己去找扩展,然后找各种依赖进行安装,这个很麻烦,emacs 24以后完全可以在emacs内部直接安装。emacs从24开始内置支持ELPA(Emacs Lisp Package Archive),支持emacs使用package.el管理扩展。

我们在.emacs里面增加安装源:

然后我们使用 M-x 初始化一下包环境:

更新包的索引:

获取想要的包:

emacs 23也是可以用的,不过需要增加一个初始化的脚本。

细节可以参考:http://www.emacswiki.org/emacs/ELPA

禁用emacs的工具栏

osx下使用emacs的时候,如果使用了--with-ns选项,会nextstep目录下生成一个Emacs的app文件,我的是24.3.2,用起来还不错,至少是可以全屏的。

也许有人想要关闭上面的工具栏,如果像一些模式一样在.emacs里面写上:

但是其实这个是不会生效的。

查看一下源码发现选项是1和0,所以我们只需要写成如下方式:

但是如果同时还想使用命令行的emacs,会发现cli下是没有tool-bar-mode的,所以需要判断一下window-system:

这样就可以安心的禁用工具栏了。

Shell编程中的几个命令

介绍几个命令:echo, eval, exec, export, readonly, read, shift, wait和点(.)。

1.echo

格式:echo args

功能:在屏幕上显示出由args指定的字串。

2.eval

格式:eval args

功能:命令eval的功能是將参数(args)读入 C shell 中,然后在加以执行。例如:

vcom 是 'ls -l ; date'。当我们來执行“$vocm”,会出现错误信息ls: invalid option -- ;”及“try 'ls --help' for more infomation”。原因是 C shell 在语法解析中无法理解特殊符号所造成的。符号“;”和命令 date 被理解成是命令 ls -l 后的“文件名称”。所以才会有“ls: invalid option -- ;”。命令eval 便是用來解决这种情況:

其实在作法上使用命令 eval 便相当于以下的用法:

如果你是在 C shell 下,你也可使用以下的方式:

另外在使用命令 eval 上也有技巧,看一互換的技巧:

3.exec

格式:exec命令参数

功能:当Shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程(也就是最初的Shell)就终止了,所以Shell程序中exec后面的语句将不再被执行。

继续阅读

获取Texture packer的免费授权码

制作cocos2d游戏的时候会经常需用精灵画册(sprite frame),如果适用精灵画册可以明显提高游戏的效率。很多人都选择适用Texure packer,这个工具不止支持cocos2d,他还支持超级多其他的引擎,最近刚出的3.1.3还添加了对Spirte kit的支持。

我在试用一周后开始考虑入手这个工具,有人说免费的就很好用,其实不是这样的,免费版会给一些图片增加作者的网址,你会发现图片一片红……

后来突然发现作者也发免费授权的,前提是你要有自己的博客,这个博客至少写了6个月,而且需要有5篇以上的相关文章。我前天发的申请,昨天收到了作者的邮件,我突然发现作者热心的把PhysicsEditor的key也给我了(申请的时候我没选择要这个),真不错。

申请地址:http://www.codeandweb.com/request-free-license

邮件末尾还说如果你写一个这个工具的入门教程,他可以考虑把你的文章放到他站点上给你提高访问量,不过我还没用明白,先算了,虽然我的博客的确没什么访问量。

安装command line tools for xcode

升级了XCode5之后发现command line tools的安装选项消失了,出现在了

Xcode -> Preferences... ->  Locations

选项中。最后一项的 command line tools显示了在本地的安装情况,貌似还可以自行切换版本。所以如果你的恰好是xcode5+,那么恭喜你,你应该不需要安装这玩意儿了。打开终端看看gcc是不是最新版吧。

如果还是没有gcc之类的工具的话,那么可以看看下面删除线划掉的旧部分。如果你的版本是xcode4.6左右,那么可以看末尾的部分。

也许是安装xcode会自动给安装command line tools了,我查看了一下自己的gcc版本,发现是5.0,如果真是这样,请读者自己考虑是否继续安装),可以打开终端后输入如下命令:

sudo xcode-select --install

输入密码后会弹出提示(xcode-select: note: install requested for command line developer tools),然后安装命令行工具(install command line developer tools)。

如果您的版本是XCode 4.6,方法如下:

其实这个很好找,但是网上很多误导人的文章,很让人不爽。

打开xcode以后,点击菜单栏的:

Xcode -> Preferences... ->  Downloads

这时候你应该就可以看到Command Line tools了,在Components选项卡里。其实ios模拟器也是这里安装的,大家应该可以看到。

补充:xcode第一次安装完需要启动一次,同意xcode的协议,不然command line tools是无法使用的,如果你自己跑一下cc或者gcc会发现报下面的提示:

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

打开xcode同意协议就可以啦。

Emacs SLIME的安装

安装SLIME:

在.emacs中添加如下内容:

这里要注意以下几点:

  • 这里的sbcl的地址是可执行程序的地址,不然会提示“specified program for new process is a directory...”这类错误
  • slime地址是slime所在文件夹地址

设置好后重启emacs就有slime-mode了,需要slime命令行直接M-x slime就可以了。

关于zend studio 9的4空格替换tab

现在越来越多的人开始使用四个空格来替换一个tab。用python的时候普遍使用这个规范,现在开发PHP的人使用这个规范的也越来越多,现在介绍一下zend studio是如何实现tab转为4个空格的。

下面是以zend studio9为示范的(貌似不适用于zend studio8):

如果您是使用英文版,那么window -> perferences进去选项里面,中文请自己对照一下。

然后我们选择php -> code style ->  Formatter,选择里面的 Zend Framework Coventions[build-in]就可以了,然后保存。因为Zend Framework的标准就是使用四空格替换TAB。

zend studio设置Zend framework样式

zend studio设置Zend framework样式

继续阅读

使用authorized_keys不生效的解决方法

配置git的公钥登陆时,配置完authorized_keys居然一直不生效,于是google之,发现原来是因为.ssh目录和下面文件的权限问题导致的,因为目录的权限已经超过了sshd的要求权限。于是我们使用下面的命令去掉 多余的写权限:

这样应该就可以了,试着git clone一下吧。
如果希望ssh公钥生效,.ssh目录的权限必须是0700, .ssh/authorized_keys文件权限必须是0600。

我们的git可以clone了以后,我们会担心有些人越权,使用git这个账户直接ssh登陆,这样似乎不太符合我们的要求。我们可以修改git的登陆shell,达到git无法使用shell登陆的目的。比如在ubuntu或者debian下:

查找passwd的git那行,可以看到下面类似的文本:

我们把shell换一下,改成git-shell:

如果我们想换成git登陆,会提示下面的信息:

执行make时报告没什么可做的解决方法

当我们编写好Makefile并执行make时,我们有时会碰到类似下面的提示:

make: 没有什么可以做的为 `default'。

据说碰到这种情况的原因很多,就是因为make跑到default时发觉自己并没有被安排什么工作,但是其实我们是安排的不少活给它的。

我们开发的时候喜欢使用空格代替tab缩进,这样就有可能导致上面的问题。比如我们使用了vim,同时我们还没事写点python程序娱乐那么一下,那么就十分有可能使用了“:set expandtab”打开了空格代替tab缩进的开关。所以我们每次写makefile的时候不要忘记使用“:set noexpandtab”来关闭空格代替tab缩进开关。当然如果你希望彻底关闭,也可以到你的vimrc中删除“set expandtab”。

Emacs下的ls指令乱码问题

在Emacs下使用shell的时候,打ls会出现奇怪的代码,但是dir命令却没有。

Google后发现是因为Emacs默认的终端类型是VT100,改成ANSI就可以了。打开~/.emacs文件,如果不存在则自己创建一个。里面添加一行:

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

这样终端类型就变成了Ansi类型了。

至于什么是终端类型,我们为什么总是要选择它们,在我们SSH的时候就偶尔看到它们。我在网上大致查了一下,似乎这方面的资料不是很多(也许是我找的不仔细),比较靠谱的一个说从前是主机时代,多个终端连接一个主机,所以需要选择对应的终端类型,如今终端几乎都兼容了,但是选择自己喜欢的终端的方式遗留下来,当然也许出自向前兼容的考虑。大部分都兼容VT100,所以默认一般都用VT100,如果终端允许,你可以使用ANSI这样的彩色终端。

如果存在错漏,还请指教。