2011-06-01 Robert Zhang
What's OOP on earth? How to do it in Lua? And what's Lua Class Lib? Let's have an interesting tour to OOP in Lua. 继续阅读 »
2016-07-07 ruki
xmake里面的lua脚本加载插件,可以让你方便调试和编写一些自定义的lua脚本,这个时候xmake就是一个纯lua的加载引擎。。 例如,我想写个简单的hello xmake!的lua脚本,可以自己建个 hello.lua 文件,编写如下脚本: lua function main() print("hello xmake!") end main是入口函数,就跟平常写c类似,然后加载执行下这个lua脚本就行了: bash xmake lua /home/xxx/hello.lua or xmake l /tmp/hello.lua 下面在来个稍微高级点的,我要传递 继续阅读 »
2017-01-12 ruki
之前在给xmake做构建的效率优化的时候,需要对lua脚本的api调用性能进行分析,分析出最耗时一些lua调用api, 找出性能瓶颈,来针对性地进行优化,那么问题来了,如果对lua脚本像c程序那样进行profile呢? 我们现在看下最后实现完的最终效果: 4.681, 98.84%, 1, anonymous : actions/build/main.lua: 36 3.314, 69.98%, 1, anonymous : actions/build/main.lua: 66 3.314, 69.98%, 继续阅读 »
2015-10-13 Li Shuai
客户端提出搞一个日志上传的接口,方便向服务端提交日志,研究了一下,决定用Nginx嵌入Lua的方式搞。 Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。业余时间使用过,感觉小巧轻快,代码风格和Python一样简洁优雅。在Nginx中内嵌Lua,需要你重新编译安装Nginx,加上ngx_lua模块,同时需要安装LuaJIT,可以看看这篇文章"Nginx与Lua"。 安装好相关的模块后,Nginx配置如下: location ~ /upload { # 调用的路由 # 转到后台处理URL upload_pass /uploadHandle; 继续阅读 »
2016-12-14 ruki
lua原生并没有提供try-catch的语法来捕获异常处理,但是提供了pcall/xpcall等接口,可在保护模式下执行lua函数。 因此,可以通过封装这两个接口,来实现try-catch块的捕获机制。 我们可以先来看下,封装后的try-catch使用方式: ```lua try { -- try 代码块 function () error("error message") end, -- catch 代码块 catch { -- 发生异常后,被执行 function (errors) print(errors) end } } ``` 上面 继续阅读 »
2011-05-01 Robert Zhang
lua
本文针对希望了解Lua或者迅速抓住Lua的关键概念和编程模式的有经验的程序员,因此不打算教给读者诸如条件语句的语法或者函数定义的方式等等显而易见的东西,以及一些诸如变量、函数等现代编程语言普遍的基本概念。本文只打算告诉读者Lua那些与众不同的特性以及它们实际上带来了怎样颠覆以往的、独特的编程思维方式。 继续阅读 »
2016-06-26 ruki
A simplest xmake.lua ```lua -- define a target with named 'demo' target("demo") -- set the target kind, .e.g 'binary' is a console program -- - static: a static library -- - shared: a shared library set_kind("binary") -- add all c source files in the directory: src add_files("src/*.c" 继续阅读 »
2016-07-07 ruki
xmake通过import接口,可以在自定义脚本中导入各种内置类库和扩展类库模块,使得xmake的插件开发具有更多的灵活性,提供更丰富的功能。 我们先看下,目前xmake提供的一些类库: . ├── _g.lua ├── assert.lua ├── catch.lua ├── coroutine.lua ├── debug.lua ├── finally.lua ├── format.lua ├── ifelse.lua ├── import │   └── core │   ├── base │   │  继续阅读 »
2015-11-27 Li Shuai
为了响应总菊的要求, 互联网智能电视盒子必须接入牌照方的播控平台, 登陆时必须认证一下, 认证通过才让你接入我们的服务, 否则你就呵呵了。我们有两个接口会代理一下用户的请求, 大致逻辑是: 客户端首先请求接口A, 会把MAC地址带过来, 接口A的handler会做一些校验, 然后根据一些其他的参数, 重新组装一个请求去访问牌照方的接口, 根据参数的不同会请求不同的接口 牌照方会根据用户的MAC地址和其他信息返回鉴权的结果, 返回里面会有某个字段表示成功还是失败 接口A对牌照方的接口做些校验, 没问题的返给客户端, 客户端根据鉴权结果, 成功则继续进行剩下的鉴权,失败则终止请求, 用户可能就无法使用剩下的服务 看起来是个很简单的只 继续阅读 »
2015-11-27 derekchan
前阵子重构部门业务框架,大部分代码转移到了Laravel,小部分代码遗留在旧框架中。在转移的过程中Nginx是无法通过通用配置来进行两个框架的Url重写切换的,Nginx需要对每个Module,甚至每个Action都进行配置,导致Nginx配置冗余巨大,参与的同事每上线一个功能就需要上服务器增加或修改Nginx配置,苦不堪言。 继续阅读 »