Lotus简介

一年半以前,我对Ruby的最先进的web开发感到沮丧。在业余时间,我悄悄地开始引入新思想,不认为什么是理所当然的,破坏并从头开始好多次,直到这个软件在一个美丽的API里提炼出来。

遵循对不必要的东西做减法的过程,我花了十年才到达这一步。为了取得模块化,为了用坚固的设计平衡优雅与性能、便利而进行了不计其数的优化。

每个抉择都是依据真实环境而定。一直是痛点的、或在我和其他开发者经验看来是好选择的用例。

但是这个项目在我的计算机里呆了太长时间。

由于这个原因,在今年年初,我宣布了这个项目极其缓慢的发布日程。每月我发布一个类库,因为我想和其他开发者分享每次努力的结果,并在Ruby社区产生一个讨论。现在,六个月以及六个框架之后,我自豪地介绍主要元素:Lotus

这是一个完整的web框架,特别注重面向对象设计和易测性(testability)。如果你使用Lotus,你采用较少的DSL和更多的对象、没有猴子补丁【注1】,MVC层之间关注点的隔离。每个类库被设计成小巧(不超过500的代码行数)、快速和可测试。

具备了一种HTTP路由功能的Lotus::Router,还有用于控制器和action的Lotus::Controller。他们都采用Rack协议,因此它们被用于现存代码库,或为了小API端点组合在一起,又或者,一起组合为一个全堆栈Lotus应用程序。

Lotus::View是标记隔离view对象和template的、面向Ruby的第一个类库。而Lotus::Model,与仓库、数据映射以及适配器一道,有助于从持久化中远离主要的特定逻辑。

我们有无限个组合。根据可复用原则,小的组件有着巨大的优势

这些框架的力量在Lotus应用程序中被组合在了一起。

微服务【注2】是核心。一些独立的应用程序能够一起存在于相同的Ruby过程里。

Lotus有一个智能的框架复制的机制,所有类库可以被使用多次。随着代码库的增长,它能够容易地划分到较小的、可交付的产品里。

Lotus拥有

程序员的高潮

编程就像嗑药,交易者支付你薪水除外

程序员的高潮

这些天我写作多于写代码,但是关于编程我失去的一件东西就是程序员的高潮:那些时间里,连续数个小时,我将视野锁定在电脑屏幕上,专注起来,通过同事和我正在建立的实际结构变成了一台人机混合的拼接体。当我开始盯着屏幕,思考和敲键盘时,饥饿、口渴、困倦、甚至痛苦都消退了,直到我达到疲劳的极限,被它压垮。

这对我也是有好处的。写代码对我的心灵有抚平、镇静的效果,我猜想如果你掌握了思考,它对你也是有用的。神经学家James H. Austin的研究作品《禅和大脑》提到一个人的专注是如何进入“最清晰的虚无,完全脱离了物理本身的空间”。我不清楚程序员是否都到达过这个境界,但是他们有能力与世界脱离而只关注工作。我和一个朋友在一个同事后面大声讲话,而她正沉浸在编码当中,她不仅不受打扰,她还不知道我们在她后面,对她自己的名字也没有反应。这是对于感知反应的某种严肃的压制。

内部专注的描述

有一些程序员,他们可以连续十多个小时保持这种入迷。我从来没有这种耐力,但是有无数个像游戏程序员John Harris的例子,他因Steven...

每个PHP开发者都应该看的书

Building Secure PHP Apps - a Practical Guide

PHP这几年口碑很差。关于它的“糟糕设计的汇总”和语法上的矛盾有着大量的讨论,但是主要的抱怨通常是安全。很多PHP站点分分钟被黑掉,甚至一些有经验的、有见识的程序员会说,这门语言本身是不安全的。

我总是对此持反对意见,因为有常识性的原因,有如此多的PHP安全违反现象。

PHP应用程序经常被黑掉是由于: