500lines项目简介
jopen
10年前
500lines中的每个项目都试图用500行或者更少的代码,让读者了解一个典型软件或需求的简单实现,更重要的是更透彻地明白作为一个软件架构师或开发者应该有的设计思维。
"500行或更少"
"What I cannot create, I do not understand."
-- Richard Feynman
《500行或更少》--开源应用架构系列第四版的源码。
项目的目的在于给阅读者更广的视野,让阅读者理解软件设计者的想法。
这个项目里的每个文件夹基本都是一个独立的项目。试图用500行左右或者更少的代码完成某种特定的需求。在阅读时不应该过分关注某种语言的特性或某个算法的细节,而应该揣摩软件架构师们在设计软件时如何决定和权衡。
工程名称 | 作者 | 从属机构 | 简要描述 | 实现环境与语言 | 行数 |
blockcode | Dethe Elza | Mozilla | 简单的可视化编程工具包 | JS,Html,CSS | 551 |
catechism | Sarah Mei | Sarah Mei | 小型Ruby测试框架 | Ruby | 459 |
ci | Malini Das | Mozilla | 简化的分布式持续集成系统 | Posix,Python2.7+,Git | 627 |
cluster | Dustin J. Mitchell | Mozilla | 简单的复制状态机的实现,基于Paxos算法 | Python | 1254 |
crawler | Guido van Rossum | Dropbox | 爬虫 | Python 3.4, or 3.3 + asyncio | 731 |
data-store | Taavi Burns | Points.com | (DogBed DataBase)类BDB或SQLite的键值对存储 | Python | 778 |
flow-shop | Christian Muise | University of Melbourne | 流水作业调度问题的基本实现 | Python | 423 |
functionalDB | Yoav Rubin | Microsoft | 基于内存的nosql功能性数据库 | Clojure | 576 |
Julia Evans | 图表样式引擎,还没做 | ||||
image-filters | Cate Huston | 图片过滤器 | Java1.6+ | 846 | |
modeller | Erick Dransch | Upverter | 极小3D建模工具 | Python 2.7,Unix | 1083 |
objmodel | Carl Friedrich Bolz | 简单的面向对象的对象模型实现 | Python 2.7 or 3.3 | 2292 | |
ocr | Marina Samuel | Mozilla | 图片识别 | Python,html,js | 394 |
pedometer | Dessy Daskalov | Nudge Rewards | 计步器 | Ruby | 1417 |
rasterizer | 把任意形状转换为光栅(就是矩形像素表) | Python | 685 | ||
sampler | Jessica B. Hamrick | UC Berkeley | 抽样方法 | Python | 307 |
spreadsheet | Audrey Tang | g0v.tw, Socialtext, Apple | 在线电子表格 | JS(ES6),HTML5,CSS3,AngularJS | 1265 |
TypeCheck | Leah Hanson | Julia语言的类型静态分析 | Julia | 590 | |
template-engine | Ned Batchelder | edX | 简单模板引擎 | Python | 574 |
torrent_client | Kresten Krab Thorup | Trifork | 简单的torrent客户端 | Erlang | 1731 |
web-server | Greg Wilson | Mozilla | 简单的web服务器 | Python | 954 |
注:行数统计只作为参考,和真实情况会有出入
来自:http://my.oschina.net/bfleeee/blog/352879