On this page... (hide)

  1.   1.  关于开发模式
  2.   2.  项目管理和 IDE 工具
    1.   2.1  软件开发项目管理
    2.   2.2  代码版本追踪管理
    3.   2.3  关于 IDE
  3.   3.  关于编程语言
  4.   4.  Web 技术
    1.   4.1  工具
    2.   4.2  前端技术
    3.   4.3  前端技巧
    4.   4.4  开发语言
    5.   4.5  Web 开发框架
    6.   4.6  HTTP 服务器
    7.   4.7  其他
  5.   5.  基本组件及系统架构
    1.   5.1  编码规范
    2.   5.2  标准协议
    3.   5.3  互联网基础服务
    4.   5.4  数据库
    5.   5.5  分布式计算
    6.   5.6  工作流相关
    7.   5.7  服务部署和运维
  6.   6.  特定领域解决方案
    1.   6.1  搜索引擎
    2.   6.2  自然语言处理
    3.   6.3  地理位置相关
  7.   7.  参考资料和书籍
  8.   8.  其他

1.  关于开发模式

2.  项目管理和 IDE 工具

2.1  软件开发项目管理

  • GitHub 使用经验:记录我的 GitHub 使用经验。
  • BugTracker:问题跟踪系统,用于记录开发进度。
  • Gitea 使用笔记:跟 GitHub 的使用逻辑非常像的一个开源实现,轻量简单又好用。如果觉得功能不够用了,可以考虑升级为 GitLab。Gitea 经常配合 Drone 一起使用,这样就有完整的 CI/CD 能力了。
  • Trac开发管理平台上手笔记Trac是一个集代码管理、文档管理、Bug管理、开发进度管理于一体的管理平台,很好地整合使用了SVN、Wiki、Bug Tracker等技术。Trac可以作为开发管理的一个轻量、好用的选择,应该能够很好地支持XP编程等开发模式。有一个类似的实现是基于ROR完成的Redmine
  • Gerrit:专门在 git 上用的 Web 界面代码 Review 系统,号称是复制了 Google 内部的 Review 流程和支持工具。准备强力关注。
  • rietveld:号称是简化版的仿 Google 内部流程做的来源代码 Review 工具,应该比 Review Board 要简单~不过还没弄清楚是必须依赖 GAE 还是可以支持普通 Django 。
  • Review Board也是一个基于Web的代码Review平台,比较著名。
  • Trello:我觉得互联网式的快速轻量开发应该用类似这样的工具管理。
    • LibreBoard:Trello 的开源仿制品,基于 Node.js 和 MangoDB 。已经算是可用了,不过感觉维护服务器还是有点儿麻烦。
    • Worktile:国内的类似产品,有一些创新。
      • 纷云:Worktile 他们家出的仿 Slack 的工具,我觉得是挺好用的企业即时通讯解决方案。
      • Teambition简聊 算是应对 Worktile 系列的比较主要的竞争对手。
    • Trello 和 Worktile 其实都属于 KanBan 风格的项目管理工具,类似的还有挺多。如果有大把的时间去评测 KanBan 式管理工具,请看这里:What are some alternatives to Pivotal Tracker?
      • breeze:带有时间预估和追踪功能,功能很全。我觉得最棒的是它还提供了一种角色叫“客户”,可以看到项目消耗的时间、进度啥的。
      • Pivotal Tracker:可能是标准 Scrum 管理工具中流行度最接近 Trello 的了。专门有人介绍 GitHub 和这东西怎么集成。
  • 如果是非程序开发类的事务可以考虑用 WunderKit
  • 持续集成工具有 Python 实现的Bitten和 Java 实现的Hudson等等很多(并不是说持续集成工具本身用什么语言它就只能支持对什么语言的测试,这是两回事)。

2.2  代码版本追踪管理

2.3  关于 IDE

  • VS Code:目前我最喜欢的代码编辑器,通过插件能满足绝大部分功能要求,而且也不会特别沉重。这东西最厉害的是,可以配置成远程编辑服务器上的工程文件。
  • Eclipse:号称是 21 世纪的 EMACS,好多插件哦。
  • 一个介绍美化代码风格软件的页面

3.  关于编程语言

4.  Web 技术

4.1  工具

4.2  前端技术

  • http://www.shanxiwindow.net/teaching/htmlbook/index.htm HTML教程,用于参考。
  • 网页开发常见文件模板:css、js、php等网页开发资源文件的常见书写模板(标准化总不是坏事不是吗~)。
  • Open Source Web Design(OSWD)开源设计:提供英文CSS+DVI的XHTML模板。
  • HTML5 框架:
    • Sencha:对 PC 端和 Mobile 端都有比较好的支持,可以说是“一次创建,适应各种环境”的一个解决方案。
  • JavaScripts框架:JavaScripts本身是强大的,但是API比较琐碎复杂,因此有人建立JavaScripts Framework来封装这门语言,比如jQuery支持简便的JavaScripts编码以及HTML资源定位等,类似的还有Prototype、yui、dojo、MooTools等等不少。也有的进一步在框架基础上提供了很多封装好的控件,比如ExtJs
    • MochiKit:使用体验相当特别的 JavaScript 库。它不是把 JS 嵌入到 html 中,而是给 html 标签增加一些新属性,并且给标签绑定一些事件来实现功能,听起来很像一般桌面程序的界面处理方法。
    • KindEditor:国产开源所见即所得 HTML 编辑器,功能丰富、方便易用。
    • Orbited 基于Javascript完成的socks实现,其官方已经提供了irc、xmpp等协议的实现。
    • JiaThis:分享到各种 Web 2.0 网站的公共组件,有按钮、图标、侧栏三种风格。
    • LazyLoad:一段无依赖的袖珍 JS 代码,可以延后载入 JS 和 CSS 代码,改善页面载入速度、优化前端体验。
    • resumable.js:利用 html5 file api ,把大文件切分成多个小片段实现断点续传的解决方案。
  • Caja 通常能够保存内容的Web站点(比如论坛、Web邮箱等等)会完全过滤提交内容中嵌入的Javascript脚本,而Caja提供了一个对第三方脚本进行检测的解决方案,能够使Javascript的一个安全子集得到保留和执行。
  • Bindows x-Desktop flex laszlo 都是用于开发基于浏览器和JavaScript的所谓胖客户端图形界面的类库,跟Mozilla的XUL体系的概念其实挺像的。目前微软等公司在改进自己的网络服务产品(比如新版hotmail)时(IBM则在Developers Works上发文章简单介绍如何用这种技术开发应用),都在使用一种称为AJAX(Asynchronous JavaScript and XML 异步JavaScript和XML,是指一种创建交互式网页应用的网页开发技术)的技术,也许这也是一种基于浏览器的胖客户端解决方案,而且说不定会成为新的Web应用标准,而且也有各种各样的AJAX支持库,比如ZK等。至于Web2.0,那会是什么呢?(胖客户端几大阵营:Flash、SVG、AJAX、微软的XAML、Sun的Java、Mozilla基金会的XUL等,参考链接。最近发现了Swingweb,可以将Swing的桌面程序完全转化为一个AJAX的Web应用程序。
  • CSS框架:网页界面排版一项是个麻烦细碎的活儿,因而也有帮助解决网页界面定位的框架存在,比如YAMLYUIBlueprint等等。参考:Choosing The Best CSS Framework: A Complete Guide
  • Getting Started with XForms在 Firefox 中使用 XForms,其中后一个链接中说明的内容我已测试通过。

4.3  前端技巧

4.4  开发语言

  • Node.js:最近非常流行的高并发解决方案,对服务器端开发和抓取器开发都算比较成熟了,但其异步 IO 在实际项目使用上坑挺多,并不很容易用好。
  • PHP:关于PHP编程的一点点东西,对这种语言主要就是用用,比如用来做个人主页什么的,很少自己动手改动,这里只有一点应用部署类的经验。
  • JspAll:与JSP开发相关的汇集页,包括IDE配置、软件安装及相关经验等。

4.5  Web 开发框架

  • 网站架构相关PPT、文章整理
  • Grails:Java社区利用Groovy整合典型MVC框架形成的ROR仿制品,能够帮助实现Java平台上的快速Web应用开发。Grails 与遗留数据库文章介绍了在Grails中处理遗留数据库的一些要点。
    • Play framework:开发高效、运行高效的 Restful 风格开发框架,或许这将拯救 Java 程序员于水火之中。。
  • LifeRayPortal:开放源码的Portal解决方案——liferay研究。以前除Liferay之外,比较成熟的主要是EXO Portal和JetSpeed,现在最关心的则是GridSphere,这个东西号称和WebSphere的API完全兼容。比较完整的开源Java Portal(也包括CMS型的Portal)列表在Manageability
  • http://www.hibernate.org.cn/ Hibernate似乎可以允许以类的形式访问数据库的内容,而且这样的封装是轻量的,这个链接是随便搜索到的一个中文相关网站,内容还挺全。
  • JSTL:作为网页表现层,Jsp还是比较混乱,一个新的可选的表现层是基于Taglib的JSTL。当然,更丰富的还有Structs、JSF、WebWork等等,但是也复杂很多。
  • Template页面对当前基于网页的应用开发过程中,一个重要工具——模板进行一些简单的分析和讨论。

4.6  HTTP 服务器

  • ApacheBug:很多网页程序编好后都会使用Apache作为前端服务器以提高性能,这里汇集使用Apache时遇到的问题。
  • HAProxy 号称简单高效的负载均衡前端实现。

4.7  其他

  • 什么是Web 2.0 粗略归纳起来,大约就是:服务,而不是打包的软件,具有高成本效益的可伸缩性;控制独特的、难以再造的数据源,并且用户越多内容越丰富;把用户作为共同开发者来信任;利用集体智慧;通过客户的自服务来发挥长尾的力量;软件超越单一设备;轻量型用户界面、开发模式、和商业模式。部分Web 2.0应用列表

5.  基本组件及系统架构

5.1  编码规范

5.2  标准协议

  • OAuth 现在一些社交网站在收集用户邮箱内的好友名单时,要求用户输入用户名和密码的明文,这显然是一种相当糟糕的体验。Google、微软等公司合作建立了OAuth协议规范来解决这个互通性。第三方网站通过此协议与邮箱服务商建立联系,在需要获取用户在邮箱中的数据时,第三方网站将用户导向邮箱服务商的登陆、认证界面,成功后第三方网站完成数据读取。该协议的实现主要汇集在oauth的Google Code页面
  • Sync4j:一个开源的SyncML实现,用于同步分布式的数据,可能是PIM软件中的数据,也可以是数据库条目。

5.3  互联网基础服务

5.4  数据库

  • MySQL:记录使用MySQL的一些经验。
    • Infobright:基于 MySQL 实现的开源数据仓库解决方案,并且支持联机分析。
  • PostgreSQL:记录一点PostgreSQL的使用经验。
  • SQLite:关于SQLite使用的一点经验。
  • Redis监控技巧
  • SPL:SQL 之外的查询、计算表达语言。有时会比 SQL 更为高效和清晰。

5.5  分布式计算

  • 云计算初步 探讨 Hadoop 等云计算解决方案及应用模式。
  • 分布式系统的工程化开发方法 这里的分布式系统既包括分布式数据分析,也包括一般的高可用性 Web 集群等,文档讨论的是具有通用性的原则和经验。

5.6  工作流相关

  • flow4j:一个基于Eclipse的,完成Java和工作流建模的插件,准备研究一下。

5.7  服务部署和运维

  • 简单的情形,用 Docker 和 Docker Swarm 处理好服务间的依赖关系即可。
  • 复杂一些的微服务结构,一般最终的服务部署方案总归会走向 K8s,但相关的使用门槛相当高、工具链路相当冗长,并不会把事情变简单。

6.  特定领域解决方案

6.1  搜索引擎

  • Lucene:可以说是搜索领域的事实标准,有很多其他的搜索项目都是基于Lucene来做的。
  • Xapian:用C和C++实现的搜索引擎,采用概率模型,与Lucene使用的向量模型是有所差别的。因为是C++实现,因而可以与许多其他编程语言进行绑定。中文分词则可以将libmmseg嵌入来完成。
  • Python 领域还有一个著名的搜索引擎解决方案 Sphinx 。

6.2  自然语言处理

  • gensim:比较文章相似度、提取文章主题的解决方案。基于 Python 实现,文档十分丰富,用来上线实用或者作为 NLP 及机器学习上手学习都非常不错~

6.3  地理位置相关

  • GeoHash 算法:用于处理基于距离的搜索,比如“附近的 XXX”之类的功能。

7.  参考资料和书籍

8.  其他

GlossyBlue theme adapted by David Gilbert
Powered by PmWiki