RTE

Posted on 24th May 2007 by Nio in JavaScript, Mac, 程序人生

Rich Text Editor (RTE) 是跨浏览器的所见即所得编辑器,特性就不多说了,比较特别有两点:
1、支持 Safari,目前包括 FCKeditor 等都不支持 Safari;
2、轻量级。

不过这个脚本给出的下载包是压缩之后 js 文件,源代码需要购买。因为需要做一些修改,所以源代码是必不可少的。其实对于 JavaScript 的加密、压缩,基本都是可以还原的,虽然有些变量被替换得可读性极差,但方法名、函数名是不可能变的。

下面简单说一下我的解压过程,先看看压缩文件:richtext_compressed.js。这个文件只有一行:


eval(function(p,a,c,k,e,d){ .... )

很明显,所有的有效代码都在 eval() 函数中执行,这个函数里边的一堆代码实际上运行之后的结果是一个字符串,这个字符串就是之前的源代码(可能是压缩之后的),那么我们的目标就是获取到这个字符串。很简单,把 eval() 去掉,在前边加上 var a = …. 这样 eval() 里边的执行结果就给了变量 a,这个变量就是源代码字符串,接下来你可以直接使用 document.write(a); 把 a 打印出来,也可以将 a 赋给一个 textarea 框,我习惯用后边这个方法,因为可以直接拷贝,也不需要处理特殊符号、HTML 标签。

获取到这个代码之后可以发现,其实这已经是完整的源代码了,只不过做了简单的压缩,网上有很多这一类的解压工具,比如 JsDecoder,将获取到的源代码用这类工具解压之后,可读性就出来了。

这里上传了我解压之后的最终版本,richtext.js。(作者挣不到钱不要骂我,呵呵)

辞职

Posted on 18th May 2007 by Nio in 创业, 工作忙碌, 程序人生

今天结束了在 Crystal 的最后一天工作。其实在五一长假之后就给 Matthieu 发了辞职信,最后商量决定用两周时间进行工作交接以及完成部分未做完的工作,同时向其他同事保密。因为有些同事可能会访问我的 BLOG,所以也就没在这上边说。很多朋友也是今天下午才知道的。我知道离开对于 Crystal 来说损失很大,但也没有办法,既然决定了,就要去做。在这里也要感谢我的同事们,在一起的那几个月里很开心,当然也要好好感谢我的老板,教我从此加入了 Mac 阵营 ;)

辞职主要是想自己出来做,从 SOHO 开始,目标是拥有自己的公司。简单的说就是“创业”。记得前一段时间曾经把我的 MSN 昵称改成“要么投资,要么创业,要么一辈子打工,要么一无所有”,我想要结束的自然是后两种。投资的话自己也不在行,目前做了一些股票投资,貌似中国能投资的也就是楼市、股市了,典型的 P2P,哈哈。所以最后选了创业。

人的一生总共也就那么些年,什么我都想试试,即使失败也不要紧,尝试本身就是快乐的。学走路都是从摔跤开始,更何况创业。趁现在年轻,多出来打拼打拼,不出来的话永远都不会有机会。

我未来的公司主要是做 WEB 开发、设计方面的项目、产品、以及自己的一些网站等,所以也希望有这方面项目的同学别忘了联系我。我们是专业团队,质量肯定是没有问题的 ;) 哈哈。

PS:今天新加了“创业”这个分类,以后一定抽空多写写这方面的文章,希望以此来记录自己的创业进程。

贴几张照片留念:

9.jpg

20.jpg

属于自己的 MacBook Pro

Posted on 9th May 2007 by Nio in Mac, 程序人生

今天终于拥有了属于自己的 MacBook Pro,好开心呀,哈哈。

0.jpg
酷酷的盒子

1.jpg
全部

2.jpg
Mac OS X

3.jpg
两台 MacBook Pro,通过火线从公司的那台往我的那台复制用户、应用程序、设置等,速度很快,这样就不需要从头安装软件、设置了,哈哈,真方便。

Start Writing Embeddable Applications

Posted on 8th May 2007 by Nio in 程序人生

Start Writing Embeddable Applications

…. If you're writing a standalone PHP application, maybe the next great forum software, or blog software, or wiki, or what have you, please design it in such a way that it is easily embeddable:

* When using configuration files, use a configuration component that doesn't require use of the global namespace (PEAR's Config, Solar's Solar_Config, and Zend Framework's Zend_Config come to mind); when coupled with a registry or implemented as a static class property (in PHP5), you can have access to the configuration from anywhere in your application.
* Have your bootstrap script call on class methods or functions to do their work. Don't do any decisioning in the global namespace.
* Better yet, use an MVC pattern in your apps, and have your bootstrap simply dispatch the controller. This can easily be duplicated in somebody else's code, or simply directly included.
* Make sure your templates are easily modified to allow developers to strip out header, footer, and menu elements.
* Create an API to allow retrieving necessary javascript and CSS so that it can later be injected into another system's templates.
* Don't use $_GLOBALS ever. It seems like an easy way to keep variables accessible across classes and functions, but with PHP 5's static properties, or judicious usage of singleton's in PHP 4, there are other ways to accomplish the same effect with fewer side effects.

五一快乐!

Posted on 1st May 2007 by Nio in 宝宝, 日常生活

马上就要出发去河南看宝宝了,好开心呀。

希望大家在劳动节的时候不再劳动,好好享受生活!