Hello World
Spiga

基于Node.js、Express和Jscex开发的ToDo网站示例

2011-07-15 14:33 by 老赵, 16062 visits
摘要:Jscex的主要使用场景是“JavaScript异步编程”,并不限制是跑在浏览器还是服务器端。最近Node.js很火热,也刚发布了原生的Windows版,不少同学也用它来做一些网站这样的小程序。目前用Node.js开发网站最著名的框架是Express,使用起来也是比较容易的。前段时间看到CNodeJS社区的一篇文章,某同学将一个Python写的ToDo列表网站移植到了Node.js上,我为了推广Jscex,就fork了这个项目,将其修改为基于Jscex的版本,大伙儿可以来比较一下。当然这个网站过于简单,我也正在寻找更合适的项目。 阅读全文

从今开始远离纸版图书

2011-07-08 00:07 by 老赵, 11711 visits
摘要:纸版图书的历史实在太长了,似乎也已经看得到它被淘汰的那一天。这几天在为去深圳做准备,手边许多技术图书都成了大问题。搬去深圳会大动干戈,况且这些书基本也都只是偶尔翻阅一下,不太可能再认真读起。但如果把它们留在上海,那跟空置也没什么区别。以前我有个习惯,看到经典的书,在看完电子版或国内引进版之后都会买本英文原版的来“收藏”,现在已经“幡然醒悟”,之前也已经转让了一部分。现在除了一部分书,都打算出手了。这里开了个书单,感兴趣的同学可以各取所需。 阅读全文

IBM面试记

2011-07-02 23:29 by 老赵, 34825 visits
摘要:话说其实我很久没有被正经面试过了。一开始去微软实习自然经过了经典的笔试和几轮面试,然后去了朋友的创业公司并立即被激动集团收编——没有面试,接着从激动集团去合伙创业——没有面试,然后被朋友推荐去盛大创新院——面试更像是讨论及聊天。由于长久缺乏职场磨练,我虽然对自己能力有一定能力,但也怀疑自己如果通过“正经渠道”去面试的话能有多少机会成功。这次面试IBM终于算是过足了面试瘾,记录一下。 阅读全文

两则.NET高级技术人员的招聘信息

2011-06-21 23:25 by 老赵, 14969 visits
摘要:几小时前我在微博上发布了一条消息,表示我即将加入一家外企,而且完全是大家耳熟能详的IT公司之一,而且这个公司会让大家感到“意外”。于是大伙有猜微软的,也有猜Google,Apple,Oracle,HP等等,当然也有猜对的童鞋。在此公布答案,它便是传说中的IBM公司,我将在那里继续我的.NET程序员之旅。同时,我也希望可以找到一位同学可以帮助我目前在盛大创新院的项目继续良好地发展下去。 阅读全文

匿名类型的硬伤:围绕this的成员捕获策略

2011-06-15 17:27 by 老赵, 7505 visits
摘要:时不时听到一些C#程序员说,希望在C#里出现像Java匿名类一样的特性。以前我也觉得Java里的匿名类是个不错的特性,C#应该吸取进来。不过前段时间我仔细地理解了Java语言规范中关于内部类、匿名类的部分之后,一下子就被恶心到了。恶心过后,我忽然也意识到有些问题的确也是硬伤,也不能指责Java设计者的“品位”。例如,现在我想要谈的关于匿名类中this使用的问题——如果C#没法漂亮地实现这个特性,我宁愿它继续保持现状。 阅读全文

JavaScript:假如default不是switch的最后一项

2011-05-24 11:33 by 老赵, 7414 visits
摘要:话说大家对于switch语句应该再熟悉不过了,各种类C语言都不例外,JavaScript自然也是如此。switch的逻辑很简单,根据switch内容的值执行对应的case项,否则执行default项即可。但是不同的语言在具体一些细节上面的处理却是不同的。例如在JavaScript里,每个case项都可以没有break,于是语句便会顺延到下个case或是default里面去——但某些语言设计者认为这种特性容易造成代码理解上的偏差,因此比如在C#里便要求每个非空的case都要有个break。那么再来一个细节问题:如果default之后还有case,那么会出现什么样的情况?如果default里没有break呢? 阅读全文

上周末Jscex项目介绍的幻灯片

2011-05-16 13:43 by 老赵, 4553 visits
摘要:上周末,在风景秀丽的浙江大学校园内,举行了NodeParty杭州站的活动。我在活动上结合Node.js项目对Jscex进行了简单介绍,包括其设计目的,设计原则,使用方式,高级模式,组成部分等等。在场的许多朋友也提出了不少问题,我也一一作了解答或是演示。总体感觉还算不错,毕竟是亲手编写的项目,对其各方面还是了然于胸的。在此发布演讲用的幻灯片,希望能给不在现场的同学带来一些帮助。 阅读全文

浅谈Jscex的$await语义及异步任务模型

2011-05-10 22:29 by 老赵, 1944 visits
摘要:从某些程度上说,Jscex的是提供了“新语言”,只不过这种新语言和JavaScript长的一模一样,最多添加了一个$await操作这个语义而已。其他方面,JavaScript的各种语法都可以让Jscex编译,所以它基本可以说是个完备的方案。之前有朋友提出疑问,说$await只能执行单个任务,那么岂不是多个任务之间就出现了先后依赖关系?假如有三个任务:A和B可以并行,但C依赖前两者,ABC如果串行的话,系统的总耗时便不够理想了。其实Jscex并没有这种限制,因为它的任务模型和$await语义简单且具有深厚的理论基础,灵活、丰富而统一。 阅读全文

浅谈Jscex编译结果的优化

2011-05-05 18:45 by 老赵, 1465 visits
摘要:Jscex的核心是一个JavaScript语言到Monadic形式的编译器。从理论上说,这种编译规则十分简单,要写一个能够“正常运行”的编译器很容易。但是“正常运行”不代表足够优化。优化不当,会导致生成的结果中产生太多函数及闭包,对性能产生负面影响。在Jscex的早期原型中,从AST生成最终代码的逻辑比较简单,只做了一些基础优化。后来重构了编译器,减少了不必要的代码。而上周我提交了更新,实现了更复杂而有效的优化策略。如今的Jscex编译器部分应该已经足够稳定,剩下的便是类库方便的发展了。 阅读全文

Jscex编译器更新:已支持嵌套Jscex函数

2011-04-30 00:11 by 老赵, 1102 visits
摘要:Jscex编译器更新了。之前的编译器并不会将一个Jscex函数内部的其他Jscex函数代码一并展开,这导致内嵌的Jscex函数会在外部函数调用时反复编译,性能开销较大;不过更重要问题,可能是AOT编译后的代码无法彻底解除与编译器的依赖。嵌套Jscex函数是否合理是一回事儿,使用者可以不去这么做,但是编译器本身还是该支持的。这也是Jscex编译器改进计划中的重要一步。 阅读全文

SNDACode及Jscex项目中文站

2011-04-27 23:20 by 老赵, 1884 visits
摘要:之前有朋友问我,为什么Jscex只有英文站却没有中文的。其实原因很简单:国际化的项目势必更容易推广,而且国内看的懂英文的同学肯定比懂中文的外国人多嘛。而且我也不希望在一个源码库里维护两种语言的说明,这样对于浏览者也会造成误解——但更不希望维护两个源码库。因此我理想中的情况便是:某个站点可以完整地同步我的源码库,并提供一个供我放置文档的地方。最近我的同事搞了一个SNDACode站点,公开了部分盛大员工的开源项目。虽然远不如GitHub等类似站点来的完备,但恰好能满足我的需求,我自然很乐意将它作为Jscex的中文站点。 阅读全文

Jscex使用BSD授权协议正式发布

2011-04-22 00:15 by 老赵, 1886 visits
摘要:这次打算把Jscex好好搞一下了,其实很少会有技术方面的障碍能“轮到”我们去突破,但我觉得Jscex的确有机会,HTML 5、Node.js各个都是红火的玩意儿。前几天我花了两个晚上用半生不熟的中式英语写了一篇自认为比较完整的说明文字放到了Github上的项目首页上,没想到几个小时后便收到了StratifiedJS(一个与Jscex目标有些类似的项目)作者的邮件,提到了一些关于StratifiedJS的事情。我向他咨询了StratifiedJS的某些细节问题,也向他简单介绍了Jscex的实现原理。如今Jscex已经使用BSD授权协议正式发布(中文站也会在近期推出),再进行一些细节上的优化便要开始作推广了。 阅读全文

Jscex项目现状:UglifyJS解析器及AOT编译器

2011-04-15 02:04 by 老赵, 2790 visits
摘要:Jscex项目是我为了简化JavaScript异步的一个类库,支持任意JavaScript(ECMASCript 3)引擎。Jscex小巧而强大,可以极大地改善前端的AJAX及动画等场景的编程体验,同样也可以用在node.js进行服务器开发。从产生Jscex的想法到现在也有几个月的时间了,也一直想设法进行推广。在思考过程也发现了它在实际生产中可能会遇到的问题,于是前两个星期的主要工作,便是针对这些问题进行优化。首先我将Jscex的JavaScript分析器从Narcissus换成了UglifyJS,并基于node.js开发了一个简单的AOT编译器。接下来我也打算写个稍微详细一点的介绍,然后在国外社区看看反响如何。 阅读全文

通过定义常量控制Closure Compiler的行为

2011-04-11 01:12 by 老赵, 1566 visits
摘要:上一篇文章里我提到,在进行Closure Compiler压缩之前可以对代码进行一些预处理,这样可以得到更好的效果。在回复中有朋友提到可以使用一些Annotation(标记),例如加上@export,然后使用--generate_export,便可以保留需要的那些变量名。不过经过实验还是没有得到预期的效果,所以使用标记来“指导”高级压缩行为依旧是一个不太可行的做法。不过有个标记与我的设想一直,那就是使用@define来“定义一个常量”,然后在编译(压缩)时对其进行覆盖。这为一些压缩需求提供一种更直接的控制方式。 阅读全文

使用Google Closure Compiler全力压缩代码

2011-04-07 09:30 by 老赵, 18149 visits
摘要:JavaScript压缩代码的重要性不言而喻,如今的压缩工具也有不少,例如YUI Compressor,Google Closure Compiler,以及现在比较红火的UglifyJS。UglifyJS的出名是由于它代替Closure Compiler成为jQuery项目的压缩工具。根据我的实测,jQuery Core的代码使用UglifyJS压缩后(节省62.5%)的确要比Closure Compiler压缩后(节省57.53%)更小一些。很显然,这是因为UglifyJS的压缩策略比Closure Compiler更“聪明”一些。我这里用了“聪明”而不是“激进”,是因为“激进”带上了一丝负面的意味——就好比Closure Compiler的“高级”优化方式。之前与UglifyJS相比的是Closure Compiler的“简单”优化方式,它们都是“安全”的,而Closure Compiler的“高级”优化几乎100%会破坏您的代码,因此它提出了各种“激进”的手段去“破坏”您的代码,以此达到压缩的目的。这种手段是把双刃剑,如果您能掌控它的压缩规则,则代码便可以压缩至极小。 阅读全文

UglifyJS有个不错的JavaScript解析器

2011-04-01 15:40 by 老赵, 7996 visits
摘要:我一直在为Jscex寻找好用的JavaScript解析器,之前我用的是Narcissus,也写过相关文章。不过可惜的是,Narcissus使用了SpiderMonkey的扩展,因此它并不是用ECMAScript 3实现的,无法在IE 8等浏览器中使用。目前Jscex使用的是NarrativeJS中旧版的Narcissus,但是我并不喜欢它输出的AST结构,使用中也发现高级功能里的一些bug,有些食之无味弃之可惜的感觉,而改写新版Narcissus又必须大动干戈。最近我接触到了UglifyJS,发现它的解析器相当不错,性能也比Narcissus高出许多,在此介绍给大家。 阅读全文

模拟HTML表单上传文件(RFC 1867)

2011-03-27 18:59 by 老赵, 17580 visits
摘要:如今使用HTTP协议定制API已经是十分常见的事情,在普通的GET和POST请求中传递些参数估计人人都会,但是如果我们需要上传文件呢?如果只是传递单个文件,那么将数据流POST给服务器端即可。但如果需要上传多个文件,或是在文件之外需要附带一些信息,那么又该怎么做呢?之前我遇到过一些朋友是这么打算的,他们说,不如就把文件流转化为文本,然后把它当作一个普通的字段传递。这么做自然可以“实现功能”,但缺点也很多。首先,将二进制流转化为文本会增大体积(例如最常见的BASE64编码会增大1/3的数据量);其次,既然互联网上存在相关的协议,又为何要自定义一套规则呢?其实这便是《RFC 1867 - Form-based File Upload in HTML》,它是我们用HTML表单上传文件时使用的传输协议,虽然十分常用,但似乎了解它的人并不多。 阅读全文

道理人人有,就看怎么说

2011-03-22 20:50 by 老赵, 7089 visits
摘要:前几天猛鸟兄作为在使用Mac OS X时跌了个跟头,他之前是长期的Ubuntu用户,最近也买了台Mac。情况是这样的:OS X在文件夹复制(包括移动)的时候,如果目标地方也出现了同名文件夹,则OS X的策略是“替换(Replace)”,而Windows和*nix下cp命令的策略则是“合并(Merge)”。前者相当于完全删除了重名文件夹,而后者则是把其中的文件合并。对于习惯了后者的人来说,一没看清楚前者的提示,于是就丢失文件了。我当时也遇到过这情况,不过估计猛鸟兄不如我能忍,于是在吐槽推里fuck了乔教主,果不其然引发了各方争论。今天丁宇同学将他的观点整理为一篇文章,表示OS X的做法更合理,对于这个说法我不敢苟同。现在先提一下这个问题,再引出真正想说的内容。 阅读全文

使用Jscex实现排序算法动画

2011-03-10 23:35 by 老赵, 3759 visits
摘要:用动画来观察排序算法是一件很酷的事情,例如有人便为各种排序算法提供了动画效果。只可惜这些效果都是实现准备好的gif图片,并非由代码写成。在大部分平台上编写这样的程序并没有太大困难,只要在绘制出图形之后短暂地阻塞线程就行了。可惜,在JavaScript中我们只能“一蹴而就”,要暂停的话,只能使用setTimeout进行回调了。不过,这也正是Jscex的用武之地,用Jscex编写的代码需要“暂停”,只需要简单地调用sleep异步方法,一切都很直接。 阅读全文

我在面试.NET/C#程序员时会提出的问题

2011-03-03 15:38 by 老赵, 43100 visits
摘要:说起来我也面试过相当数量的.NET(包括C#,后文不重复)程序员了,有的通过电话,有的面谈。后来发现,其实提的问题来来回回也就那么几个。这些问题有的已经有十年历史了,至少也有三年。我想对于一个“不错”的.NET程序员来说,在简单的提示下绝大部分问题应该可以“对答如流”。可能您也会觉得这些太细节,真要追究起来似乎也大都不是必须的,无视这些照样可以写程序,做网站,赚工资,但是我不会满足于成为(包括招聘)这样的程序员,暂时也懒得解释掌握这些东西的益处和重要性。 每个人都有自己的看法, 一切就看您自己的选择了。 阅读全文
< Prev 1 2 3 4 5 6 7 8 9 ... 31 Next >
使用Live Messenger联系我