如何在Lapis中给前端JS传送JSON数据对象
在Lua编写WEB程序的过程中, 有一种应用场景,是从KVDB,或是DB中取出JSON数据,或是直接定义JSON数据传给前端,用于显示展示,或是其它之用。
为了减化说明,我们直接用一个不是从DB取得,而是自定义一个JSON数据, 返回给前端的模板。
Lapis lua代码:
app:get("/return_json", function(self)
--自定义一个最简单的JSON结构
tmp_json= {test="abc"}
--对JSON进行编码
self.tmp_json = json.encode(tmp_json)
--渲染模板
return { render = "json_template" }
end)
Javascript代码:
<script type="text/javascript ...
setmetatable和__call
作者:糖果
网上找来一个很能说明__call用法的例子:
function f(tb, x, y)
for k,v in pairs(tb) do
print(k,v)
end
return x+y+tb.n
end
b = {}
b.__call = f
a = {}
function a:test()
end
a.n = 100
a.m = 200
setmetatable(a,b)
print(a(1,2))
b作为a的元表的时候,table b={}的表函数,使用__call提定的话,
在执行a(惨数列表), 参数列表和b的f函数的参数列表一致, 被指定函数的第一个参数,是一个table,里面存放的是a的成员变量和函数。
如果这种效果要有C来实现的话,要指向来指向去的指针实现。
LUA WEB架框LOR基础简介
作者:糖果
LOR是最近国内的LUA WEB开发框架,目前已经发布到了0.3版,昨天晚上作者分享了他的初始设计图, 在QQ群里发的。
最开始的时候,lor是借鉴vanilla的,之后作者转向设计,开始向expressjs靠拢。
目前来看的,lor非常引人关注的是lor的路由设计。
主要的几人文件。
lor.index ->
lor.lib.lor->
lor.lib.application->
lor.lib.router.router->
lor.lib.router.layer->
lor.lib.router.router->
lor.lib.utils.path_to_regexp
LOR的Application里的函数除了Http常用方法(get、post、put、delete)是通过循环定义的,共它的函数都是显示声明的。
Applicaton里有InitMethod方法循环定义的。
下面是选出一些代码片段,来简述这个实现。
定义一个有支持子函数的列表:
local supported_http_methods = {
get = true, -- work we ...
Openresty的非典型安装
作者:糖果
Openresty也安装了很多遍整理一下安装过程。
上来先更新一下系统
sudo yum update
安装Openresty安装需要的依赖:
sudo yum install -y gcc gcc-c++ readline-devel pcre-devel openssl-devel tcl perl
下载一个安装包:
wget https://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz
https访问不灵,就用http
wget http://openresty.org/download/ngx_openresty-1.7.10.1.tar.gz
tar -xvf ngx_openresty-1.7.10.1.tar.gz
安装
./confiure
gmake
sudo gmake install
配置一下环境变量
export PATH=/usr/local/openresty ...
ConcurrentLua
介绍
ConcurrentLua 是一个无共享异步消息传递模型的实现.该模型来自Erlang语言.
她改编了Erlang的并发元素并整合进Lua里.
ConcurrentLua的一个核心元素是 process(进程).一个进程是一个轻量级
虚拟机
线程,扮演和操作系统的进程同样的角色;他们不共享内存而是使用某这进程间通讯
机制.这些进程能够根据需要被创建和销毁,并通过一个简单的环罗宾(轮训)算法来
调度他们.
每一个进程关联到一个邮箱(临时存储消息的队列),通过邮箱来接受别的进程发来
的消息.进程可以在任何时候检查自己的邮箱有没有新消息抵达,如果有,进程可以
按照抵达的顺序依次读取.
每个进程都有一个唯一的数字作为进程标识,叫 PID(process identifier).也可以
给进程取一个名字,并用名字来指代进程.进程名和进程的对应关系被保存到一个
中心储藏室–registry(注册表).进程可以编辑注册表,添加或者删除表项.
错误捕捉机制也被实现成 monitors 和 links .通过 monitors 进程能够监视其他
进程,并在被监视进程异常终止的时候获得通知.通过 ...
使用Pages服务创建静态博客(上)
作者:糖果
Coding.net同样提供了类似github的pages的功能, 这样就可以使用pages服务创建静态博客。
创建步骤:
配置本地git环境。
本地创建目录结构和静态文件。
初始化本地目录为git工程,创建本地分支,并上传文件。
启动配置coding上的pages,绑定域名。
域名服务解析。
确认解析。
下面是对具体细节的说明。
1.配置本地基本的git环境。
1.1.生成公钥。
用你登陆coding.net的邮箱账号生成一个公钥。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
在导航上选择:设置->部署公钥->点击这里:
1.2.复制pub.key到coding.net的设置面板上。
cd ~/.ssh
vim id_rsa.pub
将id_rsa.pub的内容复到coding.net的公钥控制面板里。
图片:jjkkkkjjjjjjj
重新连接一下。
github用这个测试
ssh -T git@githb.com
coding用下面的测试
ss ...
NGINX执行阶段概念
图片:1079283195.png
原文连接:http://leandre.cn/web/79.html
LOR框架设计草图
下面图是LOR的框架的设计草图,是作者饭总当时为实现LOR画的,提供给大家参考:
想把route,router,layer那部分的設計畫清楚一些,饭總提供了一下現這個在線畫圖的工具:
https://www.processon.com/
图片:1.jpg
图片:2.jpg
图片:3.jpg
图片:4.png
图片:stack.lor.jpg
使用Pages服务创建静态博客(下)---部署Jekyll静态站
作者:糖果
上一篇我们在Coding.net上部署了Pages服务,但是展示的页面比较单一,这次我们使用Jekyll工程生成一个相对完整的静态网站。
概要步骤如下:
1.安装较新的Ruby开发环境。
2.安装Jekyll。
3.创建工程。
4.上传代码。
5.确认站点。
1.安装较新的Ruby开发环境。
因为Jekyll是依赖Ruby开发环境的,所以首先要装的是Ruby开发环境。
1.1 本地安装Ruby。
在Ubuntu15上,简单的两部就可以安装完成。
sudo apt-get install ruby
这样默认装的是Ruby2.2
ruby -v
安装ruby2.2-dev,有了这个包可见ruby.h等后继需要的文件。
sudo apt-get install ruby2.2-dev
1.2 VPS上安装。
在阿里这种VPS上安装Ruby,推荐使用RVM安装方式。
1.2.1 安装curl,下载RVM。
sudo apt-get curl
curl -L https://get.rvm.io | bash -s stable
sourc ...
OpenResty中文社区ORChina上线
最新LOR社区,小范围上线社区站, http://www.orchina.org , 还有一个另外的域名是 http://orc.black
这是饭总用LOR框架写的,如果你用过ruby-china, 会发现这网站的前端和rubychina的很像, 大家可以注册个账号,上去测试一下。
点击如下连接进入:
www.orchina.org
orc.black
smartisan.black
=================================================
经过一段时间的运行,OR现在一般性的应用是可以的,接下来就新添加功能,已经有一个朋友提交过一些代码。


