Leon’s blog

关注: 开源&互联网, GTD with open source and Web

正在浏览发布于 2010二月 的文章

YoYo元宵节的花灯

抢沙发

unibone儿子幼儿园放假了好几天了,寒假作业跟去年一样,是回学校的时候带上自己做的灯笼,元宵节小朋友们一起赏花灯。

去年我们就忘记做了,结果yoyo很羡慕别人的灯笼。今年yoyo奶奶早早的就开始给他做准备了。这不新年还没开始过呢,已经开始糊正月十五的灯笼了。

还别说,奶奶的手艺还真不错。先看看,灯笼的骨架。这可是跟某水果公司的unibody设计理念一致,采用人称unibone的最新高科技制造。绝对Made in China,要支持国货哟!

灯笼骨架扎好以后,就可以糊灯笼面了。面是用宣纸糊的,LP从福州路文具店里买来的。
面上的图案,全部由yoyo亲手绘制,绝对是新春送礼、居家收藏的佳品。看看,上面还有yoyo的亲笔签名呢。

整理Eclipse for php的时候,无意间看到了这工具,Zen Coding。真是快速编辑html和css的利器,有多厉害,看看这里的演示吧。访问不到的请移步土豆

作者的主要想法是,通过把编辑器变成一个简单的脚步解释环境,来提高编码的效率。我想这也是VIM这种编辑器反而比一些的IDE效率更高的主要原因。不过Zen Coding的想法更新颖,代码更少。
例如我们要输入这样一段html代码,

<div id=”header”>
    <ul class=”navigation”>
        <li><a href=”"></a></li>
        <li><a href=”"></a></li>
        <li><a href=”"></a></li>
        <li><a href=”"></a></li>
    </ul>
</div>

以zen coding的方式,就只需要输入“div#header>ul.navigation>li*4>a”,然后按快捷键展开就好了。

心动了,来体验一下zen coding的魅力吧。这个在线的Zen Coding编辑器,是通过js,把普通的html textarea变成了不错的IDE。如何让你网站上的textarea也支持这个功能?试试这个吧。

我常用的代码编辑器是VIM和Eclispe,来看看怎么使它们支持Zen Coding吧。

首先来看看VIM

VIM下支持Zen Coding相对比较容易

  • 首先确保你的VIM版本支持python的。我使用的是Debian/squeeze下的vim-nox包,squeeze下支持python的VIM包
  • 然后下载这两个VIM插件,zencoding.vimzencoding_vim.py,拷贝到VIM的.vim/plugin目录中。
  • 再从这里,下载Zen Coding for TextMate v0.3.1.zip,把压缩包里的zencoding整个目录拷贝到.vim/plugin下。注意是目录。

OK,现在可以打开VIM试试了。进入插入模式输入“div#header>ul.navigation>li*4>a”,然后按“Ctrl+E”,看看有什么效果,呵呵。
VIM下的Zen Coding的快捷键设置如下:

插入模式下Ctrl+L :插入缩略代码
可视模式下Ctrl+L :在选中的文本前后,重复插入缩略代码
插入模式下Ctrl+E:直接在当前编辑位置,运行并插入生产的代码
插入模式下Tab:同Ctrl+E

再说说Eclipse

Eclipse下支持Zen Coding实际上是通过js做的。就像在Firefox里有Greasemonkey这样的扩展是用户可以通过js来扩充Firefox;Eclipse下也有个类似的叫Eclipse Monkey的项目。

  • 首先在Eclipse里添加这个更新站点http://download.eclipse.org/technology/dash/update,更新、安装Eclipse Monkey。
  • 然后看这个演示,就知道怎么在项目里加入zen coding的js文件,来扩展Eclipse了。

zen coding in Eclipse

Zen Coding现在是一个比较新的项目,有兴趣的可以多关心Zen Coding在Google code上的项目

参考文档:

  • http://code.google.com/p/zen-coding/issues/detail?id=16
  • http://code.google.com/p/zen-coding/wiki/AptanaHowToEn

如何在Linux下拷贝一个目录呢?这好像是再如意不过的问题了。
比如要把/home/usera拷贝到/mnt/temp,我首先想到的就是

cp -R /home/usera/* /mnt/temp

但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。

那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道。
其实没这么复杂,Google了之后,学了一招。原来只有用“.”当前目录代替“*”就好了。

cp -R /home/usera/. /mnt/temp