自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xen

  • 博客(31)
  • 收藏
  • 关注

发布Bamboo 1.0,一个 lua MVC web开发框架

今天非常高兴,历经接近1年的开发,终于发布了 Bamboo v1.0。它是一个MVC,融合了非常多的创新理念在其中。 以下是发布邮件。 ========================================================== Dear friends, I'm glad to announce the first release of Bamboo ...

2011-11-11 10:03:09 381

Mongrel2服务器配置及控制

[size=large]介绍[/size] Mongrel2是一款面向现代Web应用(Web 2.0 以及以后)而设计的Web浏览器。由干净的C语言写成,(目前)在Linux(及类似的Unix)系统上运行。它支持HTTP, Flash sockets, WebSockets, Long Polling,异步等技术,基本上走在当今Web服务端技术的最前沿。 主页 [url]http:/...

2011-08-10 17:00:00 273

Bamboo中的字段描述表

Bamboo中的模型定义的时候,需要为每个字段设置一个字段描述表。这个表由一个个的属性和属性值构成。 将已经定义的属性和属性值罗列如下: [table] |属性|取值|说明| |newfield|true or false or nil|标明此字段是否是新字段(相对于继承字段来讲)| |required|true or false or nil|标明此字段是否是必须的,常用于表单提交...

2011-07-18 15:33:05 240

Bamboo安装指导

以Ubuntu 10.04为例。从前到后依次执行。 [size=medium]安装gcc等基本编译环境[/size] apt-get install build-essential [size=medium]安装lua解释器,头文件,基本库,luarocks[/size] apt-get install lua5.1 liblua5.1-0 liblua5.1-0-dev luar...

2011-07-18 14:45:41 794

Bamboo开发者邮件列表

之前在Google Groups上建了一个邮件列表,可以G。F。W着实可恶,访问不方便,严重影响社区建设。现在更换个新的邮件列表(这个邮件列表系统又是mongrel2的作者Zed Shaw的一个杰作): bamboo@librelist.com 加入方式: 向bamboo@librelist.com发送一封邮件,邮件标题和内容随便写。片刻后,你应该会收到一封确认邮件。你需要回复...

2011-07-18 11:40:03 364

Emacs 编程技巧积累

* 进入一个文档后,要切换mode怎么办?比如我编辑一个index.html文件,进入后默认是html mode,现在想在里面写写javascript代码,想把它切换成javascript模式,怎么办? 答:M-x javascript。后面这个单词不用太费力地去记。输入前几个字符,然后猛击tab键数次,就会出现提示窗口,你参照着写就行了。 ...

2011-07-15 19:24:37 148

Bamboo对Upload的支持

Bamboo Web框架对上传提供了方便的接口。目前支持的特性如下: [list] [*]它同时支持html4和html5上传,且用统一接口处理; [*]同时支持单文件和多文件上传; [*]目前仅支持小于指定值(在mongrel2的配置文件中设定)的文件的上传,且是放在内存中一次性处理(后面视需求考虑支持大文件上传,大文件上传在mongrel2中已有很好的支持); [*]上传的文件会...

2011-07-15 15:44:37 193

使用bamboo测试框架

Bamboo测试框架好用是好用,但是有一套规则,必须按这套规则写,才能顺利地跑起来。 下面是几大规则: [list=1] [*]测试代码必须放在app目录的tests目录下; [*]测试代码的文件必须取名 *_tests.lua; [*]测试代码文件必须引入测试框架:local testing = require 'bamboo.testing'; [*]测试代码中使用telesc...

2011-07-12 10:40:32 569

Bamboo的测试框架的设计

先说一下对Tir的测试框架的研究成果: [list] [*]使用telescope作为测试框架的基本工具; [*]在确保mongrel2作为web server这一块绝对没问题,因此,不再对从浏览器到mongrel2的连接这一过程进行测试,也即是这个测试框架不走socket, http协议这一块;甚至也不测试mongel2到handler这一过程,因为这一块由mongrel2-lua库完成,...

2011-07-08 21:54:43 393

将emacs设置为ubuntu console的默认editor

很简单,一个命令搞定: update-alternatives --config editor 然后,按提醒操作就行了。

2011-07-07 19:48:47 145

在服务器上配置redmine与nginx配合

想的是用nginx作前端代理,后面的事情就交给ROR及自己的一套服务器去处理。这样避免nginx配置的复杂性。 装好redmine后,再装个mongrel服务器。 apt-get install mongrel 然后,进入/usr/share/redmine/(一般装在此目录下),执行 ruby script/server -d -e production 便以默认方式启动了...

2011-07-07 15:25:57 830

Bamboo的custom操作API

为了在封装性与灵活性之间做出权衡,Bamboo设计了一套完整的的自定义k-v存储接口,用户在特定情况下,可以方便地使用它们。 先列出API吧,再讲解一下设计和使用。 [table] |API method|说明| |Model_name:setCustom(key, val, st)|创建一个custom key,将val值写入此key中。val可以为string, list, s...

2011-07-06 21:16:46 348

Bamboo的redis封装层API

先扯一下Bamboo与Redis的关系:Bamboo对redis目前严重依赖,但是无需担心无法使用其它数据库。Redis可以看成是一个中间层,后端使用其它机制来实现数据库的持久化。 Redis的指令虽然已经很好用了,但如果要上层逻辑直接使用,还是很复杂,容易出错。于是,对Redis的封装还是有必要的。在这个封装中,不是简单的redis的指令的包装,还有一些策略性的东西放在里面。 [si...

2011-07-06 18:07:16 175

Bamboo存储抽象层与外键关系的讨论

Bamboo的存储抽象层主要在model.lua中实现。本文仅从使用的角度来说明Bamboo中的存储抽象层的内容。 建立模型时,bamboo的域的属性由域属性表描述。根据是否是外链到其它对象的角度,可以把域分为两种:普通域和外键域。而这两者,是由如下两个属性名称来区分的。 [size=large]foreign[/size] 外链模型名称,如果这个属性不存在。则表明是普通字段。如...

2011-07-06 15:59:48 145

jquery插件之DataTables

DataTables(http://www.datatables.net/)应该是我到目前为止见过的,功能最强大的表格解决方案(当然,不计算其它整套框架中的table控件在内)。 先把它主页上写的特性翻译罗列如下: [list] [*]可变长度分页; [*]动态过滤; [*]多列排序,带数据类型检测功能; [*]列宽度的智能处理; [*]从多种数据源获取数据(DOM,js Arr...

2011-06-28 16:21:56 145

jquerytools之overlay

所谓overlay,就是浮层。就是那种在当前页面弹出的一个新的层。它可以作为对话框的容器、图片展示容器、播放器容器等等。 废话少说,直接切入正题。 使用: [code="javascript"] // select one or more elements to be overlay triggers $(".my_overlay_trigger").overlay({ ...

2011-06-28 15:11:48 170

jQuery Tools插件,是套很好的东东,从这里开始分析研究下它

我看国内目前(2011-6-28)还没有对其文档进行中文化,所以在这里,结合自己的理解跟经验,写一些文档放这儿吧。 下面开始。 ------------------------------------------------------------------ jquerytools的设计的哲学是“是工具,不是策略”。即只给你榔头,和使用榔头的方法,至于如何用来完美地修好一栋房屋,那...

2011-06-28 10:34:33 292

分类楔子

最喜欢的几个是gedit, geany, editplus。不过都有很大局限啊。 用了windows下和linux下的大部分编辑器,准备尝试下emacs了。 也用了很长一段时间编辑器之神vi。不过实在不习惯,理念不一样啊。严重反感分模式编辑的设计。理念不一致,再妥协也无法让我喜欢上它。 好了,现在,就是神之编辑器emacs还没有玩过了。好吧,试试吧,看能不能皈依此大神。理念貌似挺...

2011-06-28 10:30:47 195

如何写一个JavaScript模块

仅仅写一个JavaScript模块很简单。只需用到对象Object,即{}。下面直接举例。 [code="javascript"]var legerobot = { variable_a = ..., variable_b = ..., variable_c = ..., ... func_a: function (p...

2011-06-19 21:44:27 185

Bamboo 命令参数格式及命令集

Bamboo Web框架自带一套命令行工具,方便做代码的自动生成、数据库的管理。 Bamboo web命令行统一支持三种参数列表形式: [code="lua"]1. 列表方式: bamboo cmd param1_value param2_value param2_value ... 2. key-value方式: bamboo cmd -param1 param1_value ...

2011-06-19 21:27:14 949

bamboo query & query_set API

get和filter是model API中两个重要的函数,用于根据给出的条件获取或过滤符合要求的实例。这些条件必须写在一个query表里面,query表类似如下形式: [code="lua"]model_obj:filter { foo=bar, x=lt(1000), timestamp=gt(100000) } [/code] filter返回一个query_set,即对象的一个特殊列表...

2011-06-13 18:17:06 118

bamboo model API

这里是Bamboo的最新版本Model的API文档。 本文档中的所有类方法都可以供所有继承自Model的类使用,所有实例方法可供所有这些类以及类的实例使用。 类方法 通过name获取id [code="lua"]model_obj:getIdByName (name) 通过name获取对应实例的id,并返回id(仍然为字符串) name: 实例的名称 [/code] ...

2011-06-13 16:28:08 287

lglib概览

lglib为lua提供了很多扩展。加载lglib后,它完成以下几件事情: 1. 扩展了lua标准库中的string, table, io三个库; 2. 增加了一些数据类型; 3. 增加了一些辅助函数。 第一个工作,就是把lglib.string, lglib.table, lglib.io三个模块中的接口注入到lua标准库中的string, table, io三个名称空间下。 ...

2011-06-12 14:59:43 184

lglib.io API

此模块中定义了一些io操作方面经常用到的一些辅助函数 此模块无需手动引入,加载lglib后,会自动将下面的接口注入lua的io名字空间下 加载文件,读取所有内容 [code="lua"]io.loadFile(from_dir, name) 返回文件内容 from_dir: 文件所有目录 name: 文件名 [/code] 加载文件中的某些行 [code="lua...

2011-06-12 12:50:45 112

lglib.http API

此模块中定义了一些http方面经常用到的一些辅助函数 引用模块 [code="lua"] local http = require 'lglib.http' [/code] 将html文档进行转义(将&号, 号替换成对象的html实体字符) [code="lua"]http.escapeHTML(s) 生成一个新串返回 s: html文档字串 [/code] 解...

2011-06-12 11:59:10 116

lglib.oop 简介

lglib.oop是一个特殊的模块,它用于给现有lua基础提供一套好用的面向对象机制。 此模块中定义了一个对象Object(用table实现的)。这个对象是一个最基础的原生对象,任何其它的类和对象都是从这个源头衍生的。它的地位跟java中的Object地位一致。 Object定义了几个属性和方法: 属性: __tag : 每个类的定义都需要加入此属性,以标识类的名字和继承关系 ...

2011-06-12 11:48:41 148

lglib.set API

Set 继承自 Dict 加载lglib后,会在全局空间注册一个全局变量Set,它是所有集合实例的原型,可以直接使用。 定义一个set [code="lua"]Set() 示例: local set_a = Set() local set_b = Set{ 'x', 'y', 'z' } [/code] 向set中添加元素 [code="lua"]set_obj:...

2011-06-12 11:17:54 101

原创 lglib.table API

lglib table库是对lua基本table库的扩展 判断table是否为空 [code="lua"]tbl:isEmpty() 如果table为空,就返回true;反之,返回false。table为空的标准是即没有list部分,又没有dict部分。 [/code] 将table分离成list部分和dict部分 [code="lua"]tbl:takeAparts() 返...

2011-06-12 10:29:24 110

lglib.string API

字符串库默认支持UTF-8编码 字符串连接运算 [code="lua"] + 加载lglib后,可以使用 'a' + 'b' 的语法拼接字符串,返回结果是 'ab' [/code] 返回字符串长度 [code="lua"]str:length() [/code] 使字符串首字母大写 [code="lua"]str:cap() 返回一个新字符串 [/code] ...

2011-06-12 10:13:36 84

lglib.dict API

前面加入了List数据类型,现在我们继续加入Dict数据类型。 [b]全局对象Dict[/b] lglib中,定义了一个全局对象Dict,它就是所有dict实例的原型。使用require 'lglib'后,这个对象可以直接使用。此对象继承自lua的table结构。 [b]生成一个新的dict[/b] [code="lua"]local dicta = Dict() local...

2011-06-11 15:56:29 126

lglib.list API

由于lua中没有原生的list对象类型,而只有(无所不能的)table。习惯了python编程的人很可能会觉得不适应。平心而论,Python在这一点上的设计确实更傻瓜化更清晰一点,好用之处体现在两点: [list] [*] 直接用[]来生成list对象,在代码中显得很清楚; [*] 有大量方便好用的函数能操作在list对象上,非常方便; [/list] 因此,我们希望在lua中,...

2011-06-11 15:37:30 94

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除