世界属于将思考付诸实践的人

推荐《架构之美》

类归于: Web开发, 互联网时代 — colin @ 4:48 下午 2009年11月24日

zcover

来自超级豪华作者阵容的《架构之美》终于上市了,这是一本让人爱不释手的好书,在出版社的邀请下,我很荣幸为其作序,同时也推荐给每一位追求架构之道的读者朋友。

美丽架构之道

我无法给架构下一个简单的定义,因为任何定义都会束缚你对架构的无限想象。不可否认,架构师早已出现在人类几千年前的各项生产活动中,比如建筑、音乐。而在计算机软件及Web领域,架构的设计直接影响着系统的生产,比如开发过程和效率、代码和组件复用性等,同时也影响着系统的可用性、可伸缩性、性能、容量可预测性等。

在本书中,我们更加关注架构之美。美丽的架构同样无法定义,可它却一定是自然的、简单的、可复用的、人文的,甚至是外行人也可以细细品味其思想的。当我看到超市的多个收银台排满长队时,便想到服务器并发处理性能和容量;当我看到十字路口的车辆等待转弯时,便想到它通过缓存思想来提高交通吞吐率。

那么如何设计出美丽的架构呢?从代码逻辑到物理网络,从单机到分布式,无数的技术可供架构师选择,如分层、组件化、服务化、标准化、缓存、分离、队列、复制、冗余、代理等,不过它们仍然只是“术”的范畴,而何时何处如何恰到好处地使用它们才是“道”的范畴,比如顿悟变化的道理,在博弈中寻找平衡,以系统化的角度来分析问题,寻找相对与绝对的奥秘、开放的心态……

然而,这个领域实在是太年轻了,我们需要更多的例子和经验,本书将让你大开眼界!

《构建高性能Web站点》作者
Web架构实践者
郭欣

Share/Save/Bookmark

回顾《构建高性能Web站点》的创作过程

类归于: Web开发, 互联网时代 — colin @ 9:20 下午 2009年07月29日

说到这次写书的过程,我感到同样很有意义,各种全新的尝试让创作过程充满乐趣,它们同样值得分享。

不同于传统使用Word编写内容,我使用了快捷的Google在线文档,并使用在线表格保存测试数据,它们支持出色的版本管理,并且提供快速的分享和协作功能,当然,最激动人心的莫过于我可以在任何地点通过浏览器继续我的写作,甚至当灵感突如其来时打开Google G1手机便可以写上两句。

对于几十万字的篇幅,一气呵成绝对是不可能的,多次迭代必然贯穿整个写作过程,从灵感到提纲,再到框架,再到最终文字,虽然没有完善的过程管理,但是能感觉到敏捷的火花。

为了尽早的获得读者的反馈,我考虑尽早的“部署”,我选择了讨论组和邮件列表的方式,在Google Group上创建了读者讨论组,上传了一些试读章节,收集到了大量的修改意见和想法,这些都是我所需要的,同时也给我带了了鼓励和支持。

整个过程还有很多的花絮,这里就不一一介绍,创作的过程是艰辛的,需要作者的坚持和毅力,虽然创作本身没有捷径,但是我们可以让创作过程更加充满乐趣,让作者和读者更加近距离的接触。

当我将这些过程介绍给一些朋友时,他们感到很有意思,于是我们创立了SmartDeveloper系列,希望能够将这种敏捷写作过程进一步的整理和完善,当然,《构建高性能Web站点》将作为该系列的开山之作。

SmartDeveloper的具体内容请关注以下地址(还需要一些时间筹建):

http://smartdeveloper.cn

值得一提的是,为本书撰写推荐序的王速瑜先生在敏捷开发领域有着丰富的经验,并在腾讯公司内部积极推广敏捷开发平台和方法,长久以来,我认为我们都是敏捷原住民,骨子里充满了敏捷的思想和战斗力,不可否认,敏捷给我带来了无法估量的收获。幸运的是,他也计划写一本关于敏捷开发的书,总结他的实战经验,并且加入SmartDeveloper系列,我非常期待这本书的问世。

——摘自《构建高性能Web站点》前言

Share/Save/Bookmark

终于写完了

类归于: Web开发 — colin @ 3:37 下午 2009年06月23日

为期半年的写书任务终于完成了,40多万字,并且赶在变形金刚2上映的前一天,可喜可贺!这个片子等了几年了,这下可以轻装上阵,去观看大片!

几个封面DEMO如下,你喜欢吗?

这才发现,今年只写了两篇blog,不过没少写字,整个写作过程得益于讨论组中热心读者的参与,非常感谢大家。

书中的一些节选试读,以及最终的目录,可以在这里
http://groups.google.com/group/highperformanceweb/files

目前,出版社已经开始编辑和排版,计划9月上市。

Share/Save/Bookmark

《构建高性能Web站点》阶段性进展

类归于: Web开发 — colin @ 12:19 上午 2009年03月31日

书名

构建高性能Web站点(暂定)

内容介绍

本书围绕如何构建高性能Web站点,从多个方面多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优化、数据库访问、数据库分布式设计、负载均衡、分布式文件系统、性能监控等。这些内容中充分抓住本质并结合实践,通过通俗易懂的文字和生动有趣的配图,让读者充分并深入理解高性能架构的真相。同时,本书充分应用跨学科知识和科学分析方法,通过宽泛的视野和独特的角度,将本书的内容展现的更加透彻和趣味。

创作目的

兴趣、总结、分享、提高

一些热门关键词

产品类:apache, lighttp, nginx, mongrel, varnish, squid, haproxy, lvs, memcache, memcacheDB, memcacheQ, dbslayer, mysql,  berkeley DB, samba, nfs, rsync, ssh, mogilefs, php, ruby, python, gearman, fastcgi, ssi, cacti, nmon, mrtg, ab, rails, smarty, apc, xcache, psyco, xdebug, simplefailover, hadoop,  map/reduce, s3, ec2, google app engine, bigtable, NetScaler, f5

概念类:bandwidth(带宽), latency time(响应时间), concurrency strategy(并发策略), throughput(吞吐率), epoll, aio(异步IO), direct io(直接IO), sendfile, context switch(上下文切换), syscall(系统调用), kernel, edge triggered(边缘出发), cache, http, opcode(操作码), web server, reverse proxy(反向代理), cdn(内容分发网络), denormalization(反范式化), database sharding(数据库水平分区), dynamic DNS updates(动态DNS更新), SAN storage(网络存储), raid(磁盘阵列), cluster(集群), high availability(高可用性), failover(故障转移), high scalability(高扩展性), load balancer(负载均衡), distributed file system(分布式文件系统), distributed computing(分布式计算), asynchronous computing(异步计算), distributed storage system(分布式存储), distributed message queue(分布式消息队列),parallel computing(并行计算), could computing(云计算), could storage(云存储)

预计上市时间

2009年9月

出版社

电子工业出版社&博文视点

当前进度

25w字/60w字

截至目前完成的内容目录,请浏览 http://groups.google.com/group/highperformanceweb/web/《构建高性能web站点》已完成内容索引

同题材blog

预计5月份将启动主题为“high performance web”的blog,长期致力于高性能Web站点相关研究内容的分享,包括技术、架构、语言、原理、资讯等,作为本书的延展阅读资源。

讨论组

在本书上市之前,除专业评审团外,本书希望听到更多的建议和支持,如果你希望了解本书编写进展、预览部分内容、提出宝贵建议,你可以加入以下讨论组,这样我便可以在邮件列表中找到你,不定期发送你感兴趣的内容。

对于讨论组活跃的成员,新书上市后会获得赠送版,以表感谢。

http://groups.google.com/group/highperformanceweb

highperformanceweb@googlegroups.com

以上内容仅为副本,查看原文请浏览 http://groups.google.com/group/highperformanceweb/web/《构建高性能web站点》阶段性进展

Share/Save/Bookmark

每个人都应该掌握的图形表达能力

类归于: Open Source, Web开发, 交互设计 — 标签:, , — colin @ 5:39 下午 2009年03月30日

虽然插图和图形比文字更有助于读者理解和回忆信息,但大多数人仍创建仅包含文字的内容。创建具有设计师水准的插图很困难,尤其是当你是非专业设计人员或者聘请专业设计人员对于您来说过于昂贵时。

最近我在写书的过程中,对此深有感触,我想每个人都有必要至少掌握一些基本的图形表达常识,当然,对于专业设计人员来说,要求更高,这里我主要是指那些没有美术设计背景但是又从事和设计相关的工作,注意这里所指的“设计”非常广义,比如程序设计、产品设计、交互设计、工程设计、课程设计、结构设计、流程设计、方法设计、人生设计、关系设计等,实际上每个人每天都要进行很多的设计。在这些设计过程中,图形表达非常重要,它甚至有时比口头表达和书面表达更加有效、快速、轻松。

当然,说到图形表达,工具是必不可少的,从石器时代开始人们就离不开工具,绘制图形的软件有很多,的确,它们已经非常强大了,这里我想介绍的是几个别有特色的工具,它们可以让你快速创建你脑海中的图形。

值得一提的是,这篇文章无法教你学会所有的图形表达方法,但是希望能够通过传达一些视觉上的效果,让每位朋友都意识到图形表达的重要性,接下来的学习不难,重要的是行动起来。

(全文…)

Share/Save/Bookmark

Be Smart

类归于: Web开发, 开发随想 — 标签:, , , , — colin @ 8:42 下午 2008年12月04日

12月4日,为期3天的2008软件开发技术大会在九华山庄拉开帷幕。

第一天的keynote我也去凑个热闹,上图是享有“现代软件开发之父”的Ivar Jacobson正在演讲,主题为“Be Smart”,作为引子,Jacobson只介绍了“Be Smart”的由来和大体思想,从中我能感觉到这位从事软件开发超过40年的头发花白的慈祥老人,要表达的思想正是软件开发领域直到现在都没有彻底解决的问题。作为UML的创始人之一以及面向对象技术的传道士,Jacobson多年来始终不断地反思,不断地致力于软件开发过程的改善,他用自己的行动影响了一代软件开发者。这次他带来的Be Smart,翻译过来我觉得“明智”比较好,国内目前都是这样翻译。

虽然Jacobson只讲了几分钟,但是从我的理解,Be Smart思想在于,不论任何的软件开发过程,包括软件工程教材上讲到的,也包括UML或者敏捷开发,如果在当前的开发团队中,只要有其中任何一个环节无法执行或者无法很好的完成,那么这个过程方法就需要改善,怎么改善呢?Be Smart,明智,就是要用明智的思维和洞察力来对过程和策略进行改进和变化,怎么变呢?不知道,因人而异,因地制宜,这就是明智的深奥之处,你看明白了吗?哈哈我想你也许觉得我跟没说一样,是的,明智就在于此,智者是没有套路可循的,就像武林至尊可以无招胜有招。这个思想Jacobson花了40年终于想明白了,也正是因为他的提出,坚定了我的判断,这正是我们几千年前周易的精髓——变化才是道理。

除此之外,keynote比较突出的两大主题,云计算和SaaS,感觉商业化有点浓,深度不够,表面文章多,缺乏本质的探讨。

云计算阵营,来自google、amazon、microsoft的云计算方面专家都以各自产品为主线来介绍云计算的优越性,我想“云计算”本身的优点显而易见,我也非常赞成,但是我担心如此密集的云也许会给众多开发者形成一片乌云,在选择云计算服务商这个问题上,会令很多人头疼。而作为云的服务商,其本质在于绑架开发者,让开发者脱离地面,这个地面我们可以理解为windows等桌面系统,简单的说,microsoft花了多年苦心开发的地面,让越来越多的开发者依赖这片土地生存,这时,来自互联网阵营的大鳄们,在天上开发了一片片美丽的云,召唤开发者们,你们以后可以将应用快速部署在我的云上,但是你们不需要了解云是怎么飞在天上的,我们有强大的技术可以支撑云,你们不要自己造云了。这时候microsoft肯定不答应,所以也要推出未来的Azure平台,直接“天地合一”,我“天地合一”这个词真是很恰当,说明microsoft终于想明白了道家思想,也说明道家早在几千年前就指明了道路。看microsoft云计算专家的演示,未来.net开发者将可以直接在IDE中部署应用到云端。

午餐之余,顺便拍了九华山庄的温泉泳池,很有意境!

Share/Save/Bookmark

HTML 5工作草案已发布

类归于: Web开发, 互联网时代, 程序开发 — colin @ 11:43 上午 2008年01月25日

从07年3月份开始,w3c有关工作组开始制定HTML5的工作草案,到现在历经9个多月的时间,终于大功告成了。被称为HTML5的A vocabulary and associated APIs for HTML and XHTML,已经可以在w3c的官方网站看到整个草案。

http://www.w3.org/TR/2008/WD-html5-20080122/

工作草案中最令人感兴趣的新特性是绘制二维图形的APIs,嵌入和控制音频和视频内容,持久性的维持客户端数据储存,允许用户编辑文档和交互性文档局部。

绘制二维图形的APIs,暂时还不知道渲染速度和表现力支持程度,期待支持HTML5的浏览器面世,IE和Firefox应该已经在紧锣密鼓的开发。这将会把HTML带到一个新的时代,不过介于支持HTML5浏览器的普及速度和兼容性,大量应用该APIs的时代还比较遥远。

嵌入和控制音频和视频内容,目前的实现还是通过COM+Javascript,在HTML5中希望有原生的控制方法,这样就可以不依赖COM,也就不依赖Win32环境。

持久性的维持客户端数据储存,应该会在浏览器层面存在一个类似cookies的存储层,在安全方面需要特别关注。

允许用户编辑文档,事实上目前通过第三方工具也可以编辑DOM文档,在HTML5中具体是指什么,有待关注。

交互性文档局部,是指类似Ajax的原生应用吗?还是对iframe的增强?

在制定新的草案过程中,用户开发社区和浏览器开发商都积极地投入其中,这是一个非常好的发展方向,为今后统一Web标准的千秋大业奠定基础!
官方同时也描述了HTML5和HTML4的差异,指导开发人员迅速上手。

http://www.w3.org/TR/2008/WD-html5-diff-20080122/

Share/Save/Bookmark

perl library resouce

类归于: Web开发 — colin @ 7:01 下午 2007年12月18日

cpan_banner.png

cpan.org 拥有所有Perl库和档案,是一个不错的资源,用到perl的朋友可以来这里下载所需的几乎任何库。

我也是安装mogileFS的时候用到perl,一大堆“can’t find ….”,在cpan.org上都可以找到。平时关注perl比较少,记得很早以前(大概8年前)用cgi论坛的时候经常与perl打交道,不过那个时候也只是把perl/cgi放到虚拟主机上,然后修改一些表现层的东西,没有深入研究和学习。这次用到perl后,感觉perl跟我从前印象中perl完全不一样了,动态特性、OO、命名空间等都在眼前一亮,完全可以用来做一些web app framework。

# IO::Socket::INET.pm
#
# Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.

package IO::Socket::INET;

use strict;
our(@ISA, $VERSION);
use IO::Socket;
use Socket;
use Carp;
use Exporter;
use Errno;

powered-by-mt-footer.gif

MT4 Blog 正式采用perl搭建

Powerful publishing platform

The perfect platform for building easy-to-maintain blog, web, and social media sites.

  • Easy, intuitive content management
  • Simple installation and publishing
  • Open, flexible architecture

Share/Save/Bookmark

Lustre CFS

类归于: Web开发 — colin @ 4:57 下午

Lustre is a scalable, secure, robust, highly-available cluster file system. It is designed, developed and maintained by Cluster File Systems, Inc.The central goal is the development of a next-generation cluster file system which can serve clusters with 10,000’s of nodes, petabytes of storage, move 100’s of GB/sec with state of the art security and management infrastructure.

Lustre runs today on many of the largest Linux clusters in the world, and is included by CFS’s partners as a core component of their cluster offering (examples include HP StorageWorks SFS, and the Cray XT3 and XD1 supercomputers). Today’s users have also demonstrated that Lustre scales down as well as it scales up, and run in production on clusters as small as 4 and as large as 15,000 nodes.

The latest version of Lustre is always available from Cluster File Systems, Inc. Public Open Source releases of Lustre are made under the GNU General Public License. These releases are found here, and are used in production supercomputing environments worldwide.

You may subscribe to the lustre-announce mailing list to be informed of releases.

Lustre development would not have been possible without funding and guidance from many organizations, including several US National Laboratories, early adopters, and product partners

(全文…)

Share/Save/Bookmark

mixweb实验室

类归于: Web开发 — colin @ 10:59 上午 2007年12月14日

mixweb.gif

一年多前写了这个带有实验性质的mixweb.cn,并列入个人实验项目,后来关闭了一段时间,最近因为以前有些朋友用习惯了,强烈建议继续提供服务,所以重新开放,有兴趣的朋友把他当工具用用还是不错的。

这个项目在当时的意义有几点:

  1. 作为深入探究javascript对象模型和ajax的经典实践
  2. 作为敏捷开发方法的实践
  3. 记得当时的RSS应用比较热,也是想看看RSS这么多年了到底能否借助这股热潮被大众所认知和接受
  4. 尝试开放性的平台和可扩展应用的个人门户能否适合国内用户,也就是现在facebook的一些思想,类似的还有igoogle/netvibes等,当时国外非常多这类平台。本来是准备要开放API让用户开发应用,后来时间不足就搁置了。

到现在我仍然觉得“Mix”web的名字很适合这个应用,当时的思想是有点超前,不过看现在netvibes也把页卡称为“mix”,也证明了这确实是一个趋势。

作为mixweb实验室,目前虽然没有整理一份适合developer的API,但是哪位朋友如果有兴趣在这个平台上开发应用模块,可以联系我,我将提供一个模块框架。

Share/Save/Bookmark

DELL1950 Server

类归于: Web开发 — colin @ 2:42 下午 2007年12月13日

DELL服务器几乎全部采用模块化插拔管理,所有面板都可以轻松打开,其工业设计令人赞叹。这几天要给网通部署几台服务器,依旧是选择DELL,打开面板拍了几张,以备收藏!

感谢我们的UI设计师提供摄影支持

dscf9621.jpg

dscf9611.jpg

dscf9614.jpg

Share/Save/Bookmark

MySQL Cluster

类归于: Web开发, 程序开发 — colin @ 5:26 下午 2006年12月31日

Mysql5.0引入的服务器集群

MySQL Cluster is a technology that enables clustering of in-memory databases in a shared-nothing system. The shared-nothing architecture allows the system to work with very inexpensive hardware, and without any specific requirements on hardware or software. It also does not have any single point of failure because each component has its own memory and disk.

MySQL Cluster integrates the standard MySQL server with an in-memory clustered storage engine called NDB. In our documentation, the term NDB refers to the part of the setup that is specific to the storage engine, whereas “MySQL Cluster” refers to the combination of MySQL and the NDB storage engine.

A MySQL Cluster consists of a set of computers, each running a one or more processes which may include a MySQL server, a data node, a management server, and (possibly) a specialized data access programs. The relationship of these components in a cluster is shown here:

2007170426821.png

All these programs work together to form a MySQL Cluster. When data is stored in the NDB Cluster storage engine, the tables are stored in the data nodes. Such tables are directly accessible from all other MySQL servers in the cluster. Thus, in a payroll application storing data in a cluster, if one application updates the salary of an employee, all other MySQL servers that query this data can see this change immediately.

The data stored in the data nodes for MySQL Cluster can be mirrored; the cluster can handle failures of individual data nodes with no other impact than that a small number of transactions are aborted due to losing the transaction state. Because transactional applications are expected to handle transaction failure, this should not be a source of problems.

Share/Save/Bookmark

libevent

类归于: Open Source, Web开发 — colin @ 6:40 下午 2006年12月12日

最近在做各种Http Server性能比较,在同一台Linux开发机上,同样业务逻辑的情况下,用以下几种方式进行压力测试:

apache2.2+mod_php
apache2.2+cgi(fork)
基于多线程任务式epoll模型的自写http server
基于libevent(封装了epoll)的自写http server

目前只是测试大并发情况下的接入能力,具体的连接数情况以后有时间我会写出来,在这里只是推荐大家在某些Server中使用libevent作为底层通信事件模型,libevent在2.6内核的linux中会自动使用/dev/epoll,基于kernel mode到user mode的事件通知,最大的好处是不会随着连接数的增多而导致fd检查的速度下降,传统的select和poll都有着先天的不足。

libevent - an event notification library

http://www.monkey.org/~provos/libevent/

http://www.monkey.org/~provos/libevent/event3.html

Share/Save/Bookmark

crawl - a small and efficient HTTP crawler

类归于: Open Source, Web开发 — colin @ 6:39 下午 2006年12月07日

http://www.monkey.org/~provos/crawl/

The crawl utility starts a depth-first traversal of the web at the specified URLs. It stores all JPEG images that match the configured constraints. Crawl is fairly fast and allows for graceful termination. After terminating crawl, it is possible to restart it at exactly the same spot where it was terminated. Crawl keeps a persistent database that allows multiple crawls without revisiting sites.

The main reason for writing crawl was the lack of simple open source web crawlers. Crawl is only a few thousand lines of code and fairly easy to debug and customize.

Features

  • Saves encountered images or other media types
  • Media selection based on regular expressions and size contraints
  • Resume previous crawl after graceful termination
  • Persistent database of visited URLs
  • Very small and efficient code
  • Asynchronous DNS lookups
  • Supports robots.txt

Share/Save/Bookmark

dojo timeline

类归于: Open Source, Web开发, 程序开发 — colin @ 5:31 下午 2006年10月29日

dojo是目前最为强大的js框架,包括ajax,browser,event,widget等跨浏览器API,用dojo写Web OS可谓非常方便。

dojo现在已经4.0了,我自己其实不怎么用dojo,毕竟dojo强大的地方在于界面和特效的封装,可以让开发者快速构建一些兼容标准的界面,但是在js语法增强方面不如prototype.js,我一般也都是自己封装界面,所以很少用dojo。

dojo的开发模式很正规,看看dojo timeline,你一定会为之惊叹的
http://trac.dojotoolkit.org/timeline

一个js的框架,采用了如此正规的配置管理,不得不感叹老外对开发的严谨和方法的重视。我们要努力学习!

[   ] dojo-0.4.0-ajax.tar.gz         23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-ajax.zip            23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-ajax/               23-Oct-2006 23:26    -  
[   ] dojo-0.4.0-browserio.tar.gz    23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-browserio.zip       23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-browserio/          23-Oct-2006 23:27    -  
[   ] dojo-0.4.0-core.tar.gz         23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-core.zip            23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-core/               23-Oct-2006 23:28    -  
[   ] dojo-0.4.0-dashboard.tar.gz    23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-dashboard.zip       23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-dashboard/          23-Oct-2006 23:28    -  
[   ] dojo-0.4.0-editor.tar.gz       23-Oct-2006 23:36  4.0M 
[   ] dojo-0.4.0-editor.zip          23-Oct-2006 23:36  4.6M 
[DIR] dojo-0.4.0-editor/             23-Oct-2006 23:29    -  
[   ] dojo-0.4.0-event.tar.gz        23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-event.zip           23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-event/              23-Oct-2006 23:31    -  
[   ] dojo-0.4.0-event_and_io.tar.gz 23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-event_and_io.zip    23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-event_and_io/       23-Oct-2006 23:30    -  
[   ] dojo-0.4.0-kitchen_sink.tar.gz 23-Oct-2006 23:36  3.9M 
[   ] dojo-0.4.0-kitchen_sink.zip    23-Oct-2006 23:36  4.5M 
[DIR] dojo-0.4.0-kitchen_sink/       23-Oct-2006 23:32    -  
[   ] dojo-0.4.0-lfx.tar.gz          23-Oct-2006 23:36  3.8M 
[   ] dojo-0.4.0-lfx.zip             23-Oct-2006 23:36  4.4M 
[DIR] dojo-0.4.0-lfx/ 23-Oct-2006 23:33 - [   ] dojo-0.4.0-minimal.tar.gz      23-Oct-2006 23:36  3.7M 
[   ] dojo-0.4.0-minimal.zip         23-Oct-2006 23:36  4.3M 
[DIR] dojo-0.4.0-minimal/            23-Oct-2006 23:33    -  
[   ] dojo-0.4.0-widget.tar.gz       23-Oct-2006 23:36  3.9M 
[   ] dojo-0.4.0-widget.zip          23-Oct-2006 23:36  4.5M 
[DIR] dojo-0.4.0-widget/             23-Oct-2006 23:34    - 

Share/Save/Bookmark

早前文章 »