透彻讲解风险投资游戏规则
作者:Seayou 日期:2010-02-25
【转载】幕后英雄-风险投资(《浪潮之巅》第十一章)
发表者:Google(谷歌)研究员 吴军
任何一个公司的创办都离不开资金。传统上创业资金的合法来源只有两种渠道:一种是靠积累(比如继承遗产或者是自己多年的积蓄),第二种是靠借贷(比如从家人、亲戚和朋友那里凑钱,或者从银行抵押贷款)。如果要求创业者将自己一辈子的积蓄全部拿出来创业,很多人可能会知难而退,更何况最喜欢创业的年轻人恰恰是积蓄最少的群体。从银行贷款必须要有财产可抵押,对于有房子的人来讲最值钱的就是房子,但是房子一旦抵押出去很可能赎不回来,自己便无家可归了,而且不是人人都有房子可抵押。因此,年轻人要通过这两种传统的方法获得创业资金很不容易。这样,资金就成了创业的瓶颈。在很多国家,包括几乎整个欧洲,很少能看到新的公司兴起,原因就是没有人愿意提供创业的资金。
美国是一个富于冒险精神的年轻的国度。二战后,尤其是六十年代后,一些愿意以高风险换取高回报的投资人发明了一种非常规的投资方式—风险投资(VentureCapital Investment,or VC),在中国又简称风投。风险投资和以往需要有抵押的贷款有本质上的不同之处。风险投资不需要抵押,也不需要偿还。如果投资成功,风投资本家将获得几倍、几十倍甚至上百倍的回报,如果不成功,钱就打水漂了。对创业者来讲,使用风险投资创业即使失败,也不会背上债务。这样就使得年轻人创业成为可能。几十年来,这种投资方式总的来讲非常成功,硅谷在创造科技公司神话的同时,也创造出另一种神话——投资的神话。
第一节 风投的起源
哲学家黑格尔讲:“凡是现实的都是合理的;凡是合理的都是现实的。”(All that is real is rational, and
all that is rational is real.)这句话在恩格斯的《反杜林论》中成为最有进步意义的话。任何事情都有它发生、存在和发展的理由,当然如果这个理由不成立了,它终究就会消亡。风投在六十年代后(而不是二战以前)在美国(而不是世界其它国家)蓬勃兴起有它的社会基础。
10个最佳jQuery Lightbox效果插件收集
作者:Seayou 日期:2010-02-01
CSS hack:区分IE6,IE7,firefox
作者:Seayou 日期:2010-01-27
常见的80004005错误及其解决方法
作者:Seayou 日期:2010-01-27
[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database
engine cannot open the file '(unknown)'. It is already opened exclusively
网页滚动条CSS样式 去掉ie的滚动条的方法
作者:Seayou 日期:2010-01-22
IIS出现“请求的资源在使用中”的解决办法
作者:Seayou 日期:2009-12-01
六大策略保障跑赢大势
作者:Seayou 日期:2009-07-31
什么是市盈率?
作者:Seayou 日期:2009-07-17
题图公式说明:“P/E Ratio”表示市盈率;“Price per Share”表示每股的股价;“Earnings per Share”表示每股收益。[编辑本段]【基本介绍】
市盈率(Price to Earning Ratio,简称PE或P/E Ratio)
市盈率指在一个考察期(通常为12个月的时间)内,股票的价格和每股收益的比例。投资者通常利用该比例值估量某股票的投资价值,或者用该指标在不同公司的股票之间进行比较。市盈率通常用来作为比较不同价格的股票是否被高估或者低估的指标。然而,用市盈率衡量一家公司股票的质地时,并非总是准确的。一般认为,如果一家公司股票的市盈率过高,那么该股票的价格具有泡沫,价值被高估。然而,当一家公司增长迅速以及未来的业绩增长非常看好时,股票目前的高市盈率可能恰好准确地估量了该公司的价值。需要注意的是,利用市盈率比较不同股票的投资价值时,这些股票必须属于同一个行业,因为此时公司的每股收益比较接近,相互比较才有效[2]。[编辑本段]【计算方法】
市盈率=普通股每股市场价格÷普通股每年每股盈利
什么是上证指数
作者:Seayou 日期:2009-07-16
如何跨数据导入导出操作?
作者:Seayou 日期:2009-07-13
1. 在SQL Server数据库之间进行数据导入导出
(1).使用Select INTO导出数据
在SQL Server中使用最广泛的就是通过Select INTO语句导出数据,Select INTO语句同时具备两个功能:根据Select后跟的字段以及INTO后面跟的表名建立空表(如果Select后是*, 空表的结构和FROM所指的表的结构相同);将Select查出的数据插入到这个空表中。在使用Select INTO语句时,INTO后跟的表必须在数据库不存在,否则出错,下面是一个使用Select INTO的例子。
windows2003 iis 服务起出现"请求的资源在使用中"的解决办法
作者:Seayou 日期:2009-07-07
男女都该看
作者:Seayou 日期:2009-06-27
溃疡性结肠炎
作者:Seayou 日期:2009-05-27
FCKeditor ASP版 在线编辑器终极使用指南
作者:Seayou 日期:2009-05-21
经过半天的比较,觉得还是FCKeditor
比较适合我,只要因为他是免费的,呵呵.eWebEditor的界面不错,能自由修改,而且是国产软件以及很详细的说明,很容易上手,但他是商业软件,都到4.3版本了,还能免费用2.8版本,加上卡巴老提示木马,让我不是很放心,所以就选了FCKeditor.
firefox与ie 的javascript区别收藏
作者:Seayou 日期:2009-05-18
笔记本intel的cpu T系列和P系列的区别_老林
作者:Seayou 日期:2009-05-06
FCKeditor 上传文件名中包含中文时出现乱码的解决方法(asp版)
作者:Seayou 日期:2009-05-05
把网站和互联网当成工具来使用,你将会看到更多的赚钱的机会
作者:Seayou 日期:2009-04-23
对于一部分大流量网站来说,流量可以做的非常大,可以赚广告费,也可以把站做了一段时间后,养大卖掉。但是对于大部分个人站长而言,是没有那么大量的流量,我们这里要说的就是,如果没有足够的流量去赚广告费,那么你就该如何来考虑。
其实我们仔细分析一下就可以发现,赚钱的方式一版都逃不出这三类,就是我们经常所说的:卖服务、卖产品、搞投资。而对于我们个人站长来说,大部分都是在靠买产品和卖服务赚钱,至于搞投资,李兴平也不是一开始就奔着一定会有人来卖这个网站而做的hao123,所以你的网站想赚钱,你就要好好考虑考虑你要卖什么服务?你要卖什么产品?
逆向思维赚广告费策略
作者:Seayou 日期:2009-04-23
做网络必须掌握的80句话
作者:Seayou 日期:2009-04-23
解密验证码技术
作者:Seayou 日期:2009-04-22
很多朋友对验证码有疑问,各大论坛的用户也对验证码十分讨厌,觉得麻烦,下面我们来解密这个东东.还是我的风格,通俗透彻,一分为几,逐步解答.下面我们开始:
最初的验证码,只是几个随机生成的数字。但是道高一尺魔高一丈,很快就有能识别数字的软件了,“收藏家”们利用这种软件批量获取帐号,或是探测密码,因为软件可以不知疲倦地不断submit。于是,出现了图片形式的验证码,还要加上无规则的背景,既然人眼都难以分辨,想来软件分辨起来就有一定的难度。但是腾讯开始采用汉字图片做验证码,是不是意味着破解验证码的技术又有了新进展,带背景的数字或字母图片形式的验证码,也可以被软件分辨了?
值得说明的是:验证码不同于注册码,注册码是软件作者根据提交的机器码通过特殊算法算出的,能让软件正常运行的密码。
Tags: 验证码
SQL Server超过了每行的最大字节数(8060)的原因和解决办法
作者:Seayou 日期:2009-04-16
零起点学通C++
作者:Seayou 日期:2009-04-03
本教程作者:范磊,山东泰安科技大学教师,联系信箱:najiushifeng#126.com。擅长VC、MFC、DELPHI、J2SE开发手机游戏,VC编写数据库,VC游戏开发等。本教程为书籍配套教程,书籍名称:《零起点学通C++》
基于这个理念,我完成了该书的创作,其中的艰辛自不必说,不过令人欣慰的是,该书确实能够行之有效地帮助后来人少走许多弯路。这是由于该书不会象其他书一样首先讲述理论知识,然后讲语言特征,在概括完语言特征后再去讲解语言的基本知识,结果往往使读者纠缠于编程底层的实现,而忽略了他应该掌握的内容。
本书不再按照以往的模式,而是首先以一个最简短的C++程序讲起,通过对这个完整的程序的实际编写引申出一些相关的知识,然后在后面的教程中对该程序不断地扩大和完善,这样方才使读者不至于一上来就被C++吓坏,同时也能深刻地理解C++的各个特性的设置目的。
| 第一章 初识C++ |
| 1 C++简介 | 2 C++的发展过程 | 3 C与C++的区别 |
| 4 学习C++应该先学C吗? | 5 C++的版本以及安装问题 |
| 第二章 从一个最简短的C++程序讲起 |
| 1 简单的屏幕输出小程序 | 2 输出语句的使用 | 3 std::是什么? |
| 4 iostream与iostream.h区别 | 5 重名冲突 | 6 注释 |
| 第三章 初步了解函数 |
| 1 函数演示 | 2 函数的传参 | 3 函数的返回值、参数与变量.swf |
| 4 函数的声明与定义 | 5 局部变量 | 6 全局变量 |
| 第四章 C++数据类型 |
| 1 C++数据类型 | 2 什么是变量 | 3 变量及数据如何存储在内存上 |
| 4 布尔型 | 5 字符型 | 6 双字节型 |
| 7 整型概述 | 8 为什么使用补码 | 9 整型变量的定义 |
| 10 浮点型变量 | 11 常量 | 12 枚举型常量 |
| 第五章 IF语句与逻辑运算符 |
| 第六章 面向对象 |
| 1 什么是面向对象程序语言 | 2 面向对象程序语言主要特征 | 3 什么是类、对象和成员 |
| 4 声明一个类 | 5 命名习惯 | 6 定义一个对象 |
| 7 定义类或对象容易犯的错误 | 8 公有与私有 | 9 成员函数的声明和定义 |
| 10为什么将成员函数的声明和定义分开 | 11将类声明和定义部分存放在头文件中 | 12const成员函数 |
| 13构造函数 | 14默认构造函数 | 15析构函数 |
| 16析构对象数组 |
| 第七章 循环语句 |
| 1 循环语句的老祖宗--Goto语句 | 2 while语句 | 3 while语句的其他用法 |
| 4 continue和break语句 | 5 永不休止的while循环 | 6 do… while循环 |
| 7 for循环 | 8 灵活的for循环 | 9 条件为空的for循环 |
| 10嵌套的for循环 | 11switch语句 | 12switch语句常见错误 |
| 13switch的菜单功能 |
| 第八章 指针 |
| 第九章 引用 |
| 30什么是引用? | 31引用的地址 | 32引用就是别名常量 |
| 33引用对象 | 34空引用 | 35通过值来传递函数参数 |
| 36通过指针来传递函数参数 | 37通过引用来传递函数参数 | 38利用指针返回多值 |
| 39利用引用返回多值 | 40按值传递对象 | 41使用指针来传递对象 |
| 42使用const指针来传递对象 | 43使用引用来传递对象 | 44到底是使用引用还是指针 |
| 第十章 深入函数 |
| 第十一章 运算符重载 |
| 第十二章 继承 |
| 第十三章 虚函数 |
| 第十四章 数组 |
| 第十五章 链表 |
| 第十六章 多态性 |
| 1.为什么要使用多重继承 | 2.在派生类中增加函数 | 3.使用多重继承 |
| 4.模拟抽象类 | 5.纯虚函数与抽象类 | 6.抽象类实例 |
| 7.复杂的抽象结构 (1) | 7.复杂的抽象结构 (2) | 8.慎用多重继承 |
Tags: 学通C++
经常会口腔溃疡,舌根部溃疡,什麼原因?怎麼治疗?
作者:Seayou 日期:2009-04-03
口疮是一种以周期性反复发作为特点的口腔粘膜局限性溃疡损害,可以自愈,可发生于口腔粘膜的任何部位,以唇、颊、舌部多见,严重者可以波及咽部粘膜。不少患者随着病程的延长,溃疡面积增大,数目增多,疼痛加重,愈合期延长,间隔期缩短等,影响食和说话。
对口腔溃疡的治疗方法虽然很多,但基本上都是对症治疗,目的主要是减轻疼痛或减少复发次数,但不能完全控制复发,所以预防本病尤为重要。
平常应注意保持口腔清洁,常用淡盐水漱口,戒除烟酒,生活起居有规律,保证充足的睡眠。坚持体育锻炼,饮食清淡,多吃蔬菜水果,少食辛辣、厚味的刺激性食品,保持大便通畅。妇女经期前后要注意休息,保持心情愉快,避免过度疲劳,饮食要清淡,多吃水果、新鲜蔬菜,多饮水等等,以减少口疮发生的机会。
Private Members in JavaScript
作者:Seayou 日期:2009-03-28
Private Members in JavaScript
Douglas Crockford
www.crockford.com
JavaScript is the world's most misunderstood programming language. Some believe that it lacks the property of information hiding because objects cannot have private instance variables and methods. But this is a misunderstanding. JavaScript objects can have private members. Here's how.
Objects
JavaScript is fundamentally about objects. Arrays are objects. Functions are objects. Objects are objects. So what are objects? Objects are collections of name-value pairs. The names are strings, and the values are strings, numbers, booleans, and objects (including arrays and functions). Objects are usually implemented as hashtables so values can be retrieved quickly.
Tags: javascript
Javascript 动画初探(实现)
作者:Seayou 日期:2009-03-27
http://www.gracecode.com/Archive/Display/2808
说完了理论,我们来做点实事。这篇文章将介绍使用 Javascript 实现的动画组件。
下面记录下当时编写这个组件的考虑的些问题,对技术细节感兴趣的朋友,可以到这里参看源代码:
- 需要几个回调函数控制初始化、动画运行时、动画完成的情况
- 将动画精确到运行了几帧
- 使用 setInterval 还是 setTimeout,最后还是选择了 setInterval(详细)
- 不管元素需要更改那些属性,提供相应公式即可,但这可能带来性能问题
- 要可扩展、而且稳定
这个动画组件的用法简要的说明下,首先我们要确定元素从哪里移动(begin)到哪里(final),我们可以将两个信息绑定到一起,比如
var position = {from: 0, to: 100};
Javascript 动画初探(原理)
作者:Seayou 日期:2009-03-27
哲学上有种说法,“运动是绝对的,静止是相对的”。我们在编写各样的效果时,时常会碰到动画。下面的章,将讨论动画的原理以及实现。
动画,简而言之就是物体在某时间段内,不断的改变自身的属性。这些属性有可能是位置、大小等。为了方便说明,在这里统一认定为位置(position)。
那么,动画就有了两个基本的变量,时间和位置。用直角坐标系来表示,将 x 轴定为时间(time),将 y 轴定为位置(position),就可以得到这样的坐标系

Javascript 全局空间的“污染”哲学
作者:Seayou 日期:2009-03-27
八卦文章,所以标题党下,见笑。期前编写 JavaScript 框架的规则,玉伯在他的 Blog 已有提到。而今天看见 Ajaxian 上收集的目前主流 JavaScript 框架占用的全局空间变量数目,我也忍不住八卦下。
大家或许都知道,使用全局空间要格外的谨慎,如果滥用全局空间会造成诸多问题。随着 Javascript 的框架越来越多,不同的设计哲学相互碰撞,形成很有趣的局面:

其实,从上面几个图就能看出 Javascript 框架能分成几个流派,就我使用过的几个典型的框架,谈下我的看法:
JSONP的起源(转)
作者:Seayou 日期:2009-03-27
悟透JavaScript (转)
作者:Seayou 日期:2009-03-27
原文:http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html
引子
编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。
数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。
你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。在代码改变数据的同时,也会因为数据的抗拒而反过来影响或改变代码原有的趋势。甚至在某些情况下,数据可以转变为代码,而代码却又有可能被转变为数据,或许还存在一个类似E=MC2形式的数码转换方程呢。然而,就是在数据和代码间这种即矛盾又统一的运转中,总能体现出计算机世界的规律,这些规律正是我们编写的程序逻辑。
不过,由于不同程序员有着不同的世界观,这些数据和代码看起来也就不尽相同。于是,不同世界观的程序员们运用各自的方法论,推动着编程世界的进化和发展。
众所周知,当今最流行的编程思想莫过于面向对象编程的思想。为什么面向对象的思想能迅速风靡编程世界呢?因为面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者。这一下子就将原来那些杂乱的算法与子程序,以及纠缠不清的复杂数据结构,划分成清晰而有序的对象结构,从而理清了数据与代码在我们心中那团乱麻般的结。我们又可以有一个更清晰的思维,在另一个思想高度上去探索更加浩瀚的编程世界了。
在五祖弘忍讲授完《对象真经》之后的一天,他对众弟子们说:“经已讲完,想必尔等应该有所感悟,请各自写个偈子来看”。大弟子神秀是被大家公认为悟性最高的师兄,他的偈子写道:“身是对象树,心如类般明。朝朝勤拂拭,莫让惹尘埃!”。此偈一出,立即引起师兄弟们的轰动,大家都说写得太好了。只有火头僧慧能看后,轻轻地叹了口气,又随手在墙上写道:“对象本无根,类型亦无形。本来无一物,何处惹尘埃?”。然后摇了摇头,扬长而去。大家看了慧能的偈子都说:“写的什么乱七八糟的啊,看不懂”。师父弘忍看了神秀的诗偈也点头称赞,再看慧能的诗偈之后默然摇头。就在当天夜里,弘忍却悄悄把慧能叫到自己的禅房,将珍藏多年的软件真经传授于他,然后让他趁着月色连夜逃走...
后来,慧能果然不负师父厚望,在南方开创了禅宗另一个广阔的天空。而慧能当年带走的软件真经中就有一本是《JavaScript真经》!
回归简单
要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript就是把数据和代码都简化到最原始的程度。
JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种,而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。
JavaScript中的代码只体现为一种形式,就是function。
注意:以上单词都是小写的,不要和Number, String, Object, Function等JavaScript内置函数混淆了。要知道,JavaScript语言是区分大小写的呀!
任何一个JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, object 和 function类型中的一种,也就typeof返回值表明的类型。除此之外没有其他类型了。
先说说简单数据类型吧。
undefined: 代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。
注意:typeof(undefined) 返回也是 undefined。
可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。
null: 有那么一个概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码来处理了。
注意:typeof(null)返回object,但null并非object,具有null值的变量也并非object。
boolean: 是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控制代码的流程。
number: 线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代和循环等。
注意:typeof(NaN)和typeof(Infinity)都返回number 。
NaN参与任何数值计算的结构都是NaN,而且 NaN != NaN 。
Infinity / Infinity = NaN 。
string: 面向人类的理性事物,而不是机器信号。人机信息沟通,代码据此理解人的意图等等,都靠它了。
简单类型都不是对象,JavaScript没有将对象化的能力赋予这些简单类型。直接被赋予简单类型常量值的标识符、变量和参数都不是一个对象。
所谓“对象化”,就是可以将数据和代码组织成复杂结构的能力。JavaScript中只有object类型和function类型提供了对象化的能力。
没有类
object就是对象的类型。在JavaScript中不管多么复杂的数据和代码,都可以组织成object形式的对象。
但JavaScript却没有 “类”的概念!
对于许多面向对象的程序员来说,这恐怕是JavaScript中最难以理解的地方。是啊,几乎任何讲面向对象的书中,第一个要讲的就是“类”的概念,这可是面向对象的支柱。这突然没有了“类”,我们就象一下子没了精神支柱,感到六神无主。看来,要放下对象和类,达到“对象本无根,类型亦无形”的境界确实是件不容易的事情啊。
这样,我们先来看一段JavaScript程序:
for(life.age = 1; life.age <= 3; life.age++)
{
switch(life.age)
{
case 1: life.body = "卵细胞";
life.say = function(){alert(this.age+this.body)};
break;
case 2: life.tail = "尾巴";
life.gill = "腮";
life.body = "蝌蚪";
life.say = function(){alert(this.age+this.body+"-"+this.tail+","+this.gill)};
break;
case 3: delete life.tail;
delete life.gill;
life.legs = "四条腿";
life.lung = "肺";
life.body = "青蛙";
life.say = function(){alert(this.age+this.body+"-"+this.legs+","+this.lung)};
break;
};
life.say();
};
Tags: 悟透JavaScript
Microsoft JScript 功能 - ECMA JScript .NET
作者:Seayou 日期:2009-03-27
51js资源地址
http://bbs.51js.com/viewthread.php?tid=75453&extra=page%3D1
http://msdn.microsoft.com/zh-cn/library/cc435636(VS.71).aspx
JScript .NET 包含了 ECMAScript Edition 3 语言规范的几乎所有功能。另外,JScript .NET 正在结合 ECMAScript Edition 4 进行开发,并且也包含了该语言的许多建议功能。下表列出了 ECMAScript 3 的功能以及 JScript .NET 所支持的 ECMAScript 4 建议功能。
| 类别 | 建议的 ECMAScript 4 功能/关键字 |
|---|---|
| 基于类的对象 | class, extends, implements, interface, function get, function set, static, public, private, protected, internal, abstract, final, hide, override, static |
| 声明 | const |
| 枚举 | enum |
请参见
Tags: JScript .NET
关于23种设计模式的有趣见解
作者:Seayou 日期:2009-03-24
解剖JavaScript中的null和undefined.
作者:Seayou 日期:2009-03-17
正文开始:
在JavaScript开发中,被人问到:null与undefined到底有啥区别?
Tags: null undefined.
两个不错的JavaScript压缩工具
作者:Seayou 日期:2009-03-17
今天试用了两个JavaScript压缩工具,一个是dojo shrinksafe( http://shrinksafe.dojotoolkit.org/ ),还有一个是yui compressor( http://developer.yahoo.com/yui/compressor/ ),感觉还不错。我压缩了一下prototype-1.6.0.js,源文件差不多122K,dojo shrinksafe压缩后,文件变成86K,yui compressor压缩后,文件变成72K,看起来yui compressor效果更好。测试了一下,压缩后的文件也没有出现什么问题。
其实两个工具都是基于Rhino(http://mozilla.org/rhino) 这个开源项目的,不同于其他压缩工具是基于正则表达式来进行JavaScript代码匹配来进行压缩,Rhino是一个JavaScript的解析器,是 解释需要压缩的JavaScript代码后再进行比如变量替换,消除空行,消除注释等压缩方法。Rhino是一个jar包,运行他需要在你的机器上安装 JDK,我安装的是j2sdk1.4.2_17,安装完成后,便可以使用了。
dojo shrinksafe基本上没有在Rhino基础上在进行封装,直接用Rhino即可,而yui compressor是基于Rhino的基础上,再进行了封装,使压缩效率更高。
使用方法:
安装jdk
cd /root/
wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/j2sdk-1_4_2_17-linux-i586-rpm.bin?BundledLineItemUUID=jB5IBe.o1awAAAEakdc_hkfV&OrderID=IXVIBe.oEIoAAAEaf9c_hkfV&ProductID=py5IBe.pWhAAAAEY1alJk805&FileName=/j2sdk-1_4_2_17-linux-i586-rpm.bin
chmod a+x j2sdk-1_4_2_17-linux-i586-rpm.bin
./j2sdk-1_4_2_17-linux-i586-rpm.bin
rpm -ivh j2sdk-1_4_2_17-linux-i586.rpm
dojo shrinksafe:
cd /root/
wget http://svn.dojotoolkit.org/src/util/trunk/shrinksafe/custom_rhino.jar
/usr/java/j2sdk1.4.2_17/bin/java -jar custom_rhino.jar -c infile.js > outfile.js 2 > &1
其中infile.js 即是你需要压缩的JavaScript文件,outfile.js 是压缩后的输出文件
yui compressor:
cd /root/
wget http://www.julienlecomte.net/yuicompressor/yuicompressor-2.3.4.zip
unzip yuicompressor-2.3.4.zip
cd yuicompressor-2.3.4/build/
/usr/java/j2sdk1.4.2_17/bin/java -jar yuicompressor-2.3.4.jar --preserve-semi -o outfile.js infile.js
类 似,其中infile.js 即是你需要压缩的JavaScript文件,outfile.js 是压缩后的输出文件,另外那个参数,--preserve-semi ,表示保留代码中的分号,为了压缩后的程序的正确性,我在这保留了分号。其他还有一些参数,具体可参见这:http://www.julienlecomte.net/yuicompressor/README
值得一提的是,yui compressor还支持css文件的压缩,但是对于css文件的压缩就是基于正则表达式的了,效果怎么样我没有测试,有兴趣的朋友可以自己测试一下。
done! 你可能会感兴趣的内容
Google Chrome中Ajax应用从URL载入xmlDocument对象的方法
不一样的javascript逻辑操作符
Javascript中的闭包(closure)
【转】一个满足实际开发需要的Ajax组件库需要哪些内容?
Tags: dojo shrinksafe yui compres
Javascript压缩工具(Javascript compressed,Js压缩)
作者:Seayou 日期:2009-03-17
怎么压缩Js?为什么要压缩Javascript? Javascript compressed/crunched
开发Ajax除了自己要写js代码外,同样也免不了要使用其它第三方js库,是否该为JavaScript减肥?
当你提高了用户体验,做出了很绚丽的效果而欣喜的时候,是否想过优化一下JS的效率,比如微软的live,其中的js做了压缩处理。JS的速度分为两种, 下载速度和执行速度。今天就先来说说下载速度。要想js的下载速度快,就需要尽量减小js文件的大小。这里我们可以使用一个工具 ESC(ECMAScript cruncher)来帮我们完成这个工作,不过这个工具只能在Windows下使用。到http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js下载ESC.zip,解压后看看它的帮助文档。很简单。
ESC Introduction
ESC is an ECMAScript pre-processor written in JScript, enabling an unlimited number of external scripts to be compressed/crunched into supertight, bandwidth-optimized packages. Featuring several compression-techniques such as comment removal, whitespace stripping, newline stripping and variable substitution ESC can reduce the overall size of your code with up to ~45%. Single, multiple scripts and even directories with scripts can be merged together at the compression level you decide. The processed output can later be appended or written to a file, or piped to another application for further processing via STDOUT.
ESC do NOT support crunching of inline scripts. So any attempt passing HTML, ASP, JSP, PHP or other equivalent documents to ESC is done at your own risk.
ESC supports four levels of compression, where a higher level equals higher compression. Beware though that levels >2 requires your code to be syntaxically perfect or ESC will punish you by producing a broken and useless output.
The compression ratio should hit around 25% using the default compression level on a vanilla looking script, but results as high as ~45% can be achieved depending on the script's design / your style of writing code.
ESC's compression engine is intelligent in the meaning that it has language syntax, statement and keyword awareness and it *knows* about native objects and members provided by the most common scripting hosts. This knowledgebase can easily be extended by pluggin in userdefined maps with additional information to further gain control of the crunching procedure. During processing following things are taken into account :
String and RegExpression read-ahead
Jscript Conditional compilation statements and variables
ECMA-262 Core language definitions (ECMAScript)
Intermediate DOM's (level 0) and DOM level 1
MS Jscript specific objects/methods
Netscape/Mozilla/Opera specific objects/methods/properties
MS WSH (Windows Scripting Host) 1+ native objects
压缩级别分为5种,从0到4
Level 0 :: No compression
Level 1 :: Comment removal
Level 2 :: Whitespace removal
Level 3 :: Newline removal
Level 4 :: Variable substitution
在WINDOWS命令行下执行
cscript ESC.wsf -ow menu2.js menu.js将会把menu.js按照js压缩级别2来压缩(默认js压缩级别为2)为menu2.js
cscript ESC.wsf -l 3 -ow menu3.js menu.js将会把menu.js按照js压缩级别3来压缩为menu3.js
需要注意的是,js压缩级别4会把变量名修改,如果你的js中用到了全局变量或者类的话,就不能使用该压缩级别了,否则其它使用你的js的文件可能会无法正常运行。
试了一下,把yui的menu.js压缩了一下,对应的级别和压缩率分别如下:
js压缩级别1:压缩率44.41%
js压缩级别2:压缩率62.82%
js压缩级别1:压缩率64.93%
原来130多K的js文件压缩后也就40多K,看来还是挺有用处的。
另外还有一个小工具jsmin也可以压缩,不过没有ESC的level选项,看了一下好像压缩效果类似于ESC的level3.济南大学的一些老师写了个jsmin的图形界面程序JsMinGUI,使用起来更加方便。:-)
Dojo项目组也提供了一个工具,shrinksafe可以通过http://alex.dojotoolkit.org/shrinksafe/在线的上传要压缩的文件,处理完毕后可以保存到本地,另外shrinksafe还提供了一个本地运行的版本,需要jre1.4的支持。
Ps:对于一些压缩的代码,在阅读时可以用JavaScript Code Improver来进行格式化。看看它主页上的一个例子:
javascript压缩代码示例
原来的代码:
程序代码格式化后:
程序代码var I = 0, s = "", k = 0;
function foo()
{
for(j = 0; j < 10; j++)
{
for(I = 0; I < 10; i++)
{
s = "string1";
k = Math.floor( Math.random()*10 );
}
for(I = 20; I > 9; i--)
{
s = "string2";
k = I;
}
}
}
</script>
js压缩,巨NB的dHTML特效. 来自:
http://hometown.aol.de/_ht_a/memtronic/MemTronic_CruncherCompressor_v09g.html
JS压缩示例样本:JS压缩示例样本
更多的JS压缩器以及混淆器
http://dean.edwards.name/packer/ 在线Js压缩
A Online JavaScript Compressor/Obfuscator version 2.0.2
Also available as a .NET application
开源下载:http://dean.edwards.name/download/#packer
JS压缩器帮助:http://dean.edwards.name/packer/usage/
http://dean.edwards.name/packer/usage/sample.html
http://hometown.aol.de/_ht_a/memtronic/
JavaScript Compressor/Obfuscator Demo:
http://www.brainjar.com/js/crunch/demo.html
JavaScript Code Improver:
JavaScript Code Improver Download
前面提到的Javascript压缩,都是采用删除注释,删除多余空格,替换字符等方式进行的,还有一种通过服务器的配置来实现Js静态压缩的方法:
关于JavaScript的gzip静态压缩方法
传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),可以通过服务器的配置(如apache)为你的js提供压缩传输,或是appfuse中使 用的GZipFilter使tomcat也提供这种能力
现在的问题是这种动态的压缩会导致服务器CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)
一.下面描述在tomcat中的应用
1.将prototype.js通过gzip.exe压缩保存成prototype.gzjs
2.设置header,我编写了一个简单的AddHeadersFilter来将所有以gzjs结尾的文件增加设置header Content-Encoding=gzip
web.xml中的配置
引用内容<filter-name>AddHeaderFilter</filter-name>
<filter-class>
badqiu.web.filter.AddHeaderFilter
</filter-class>
<init-param>
<param-name>headers</param-name>
<param-value>Content-Encoding=gzip</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>AddHeaderFilter</filter-name>
<url-pattern>*.gzjs</url-pattern>
</filter-mapping>
测试prototype.js是否正常的代码
程序代码<head>
<!-- type="text/javascript"不可少,有的浏览器缺少这个不能运行 -->
<script src="prototype.gzjs" type="text/javascript"></script>
</head>
<body>
<input id="username" name="username" value="badqiu"/><br />
<input id="email" value="badqiu@gmail.com"/>
<script>
<!-- 测试prototype的方法是否正常-->
alert($F('username'))
</script>
</body>
</html>
在Apache httpd中可以直接通过在httpd.conf增加AddEncoding x-gzip .gzjs来映射.gzjs文件的header
二.相关压缩率数据
1. prototype.js 1.5.0_rc0原始大小56KB,未经任何处理直接使用gzip压缩为12KB,总压缩率79%
2. 通过js压缩工具压缩过的protytype.js为20KB,使用gzip压缩为10KB,总压缩率为83%
3. 实际项目中的多个js合并成的文件 439KB,直接通过gzip压缩为85KB,总压缩率81%
4. 439KB经过js压缩为165KB,再经过gzip压缩为65KB,总压缩率86%
基本上你都可以忽略js压缩工具的压缩率,直接使用gzip压缩
gzip下载地址 http://www.gzip.org
tomcat的压缩配置示例下载地址: http://www.blogjava.net/Files/badqiu/gziptest.rar
其主要是利用服务器自带的动态压缩功能 传输时压缩数据流.
Javascript compressed,Js压缩,javascript压缩,js压缩工具,js压缩合并,js文件压缩
Tags: compressed Js压缩










