最新 | 最热门 | 最高评价

+0  通过FastCGI Cache实现服务降级

Tag: Technical | Lua | Nginx
老王 发于 2014年01月13日 11:29 | 点击: 1548 | 展开摘要
在自然界中,很多生物面临生死考验的时候,往往会做出惊人的反应,其中最为大家熟知的当属壁虎,危难关头,与其坐以待毙,不如断尾求生,通过自残来换取活下去的希望。对于互联网项目而言,同样存在着很多生死考验,比如:访问量激增;数据库宕机等等,此时如果没有合理的降级方案,那么结局必然是死路一条。

任何问题一旦脱离了实际情况,便失去了讨论的意义。在继续之前,不妨先介绍一下案例的背景情况:一个PHP网站,以读为主,原本躲在CDN后面,运行很稳定,后来新增了很多强调个性化的需求,便去掉了C

查看全文: http://www.udpwork.com/item/11523.html

+0  Lua 远程调试器

Tag: lua与虚拟机
云风 发于 2013年12月30日 18:18 | 点击: 1505 | 展开摘要
我们现在的手游完全用 Lua 开发,这就有了调试的需要。

今年曾写过一个 lua 代码跟踪器,主要是用于服务器开发。服务器程序不适合完全 stop the world 慢慢调试,以输出 log 为主。但现在在客户端,那么一个类 gdb 的调试环境更好一些。

lua 的调试器在我还在网易时就做过 。从网易出来后没带代码,需要用就要重新写了。好在 lua 的 debug 接口非常全,今天花了 2 个小时就重新实现了一个简陋的雏形。

这是一个远程调试器,启动程序的时候利用 l

查看全文: http://www.udpwork.com/item/11434.html

+0  Lua简明教程

Tag: 杂项资源 | 编程工具 | 编程语言 | C++ | Javascript | Lua
陈皓 发于 2013年12月03日 08:29 | 点击: 9301 | 展开摘要
这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动。我很好奇得浏览了一下Lua解释器的源码,这可能是我看过最干净的C的源码了。

我不想写一篇大而全的语言手册,一方面是因为已经有了(见本文后面的链接),重要的

查看全文: http://www.udpwork.com/item/11273.html

+0  Lua 的垃圾回收

Tag: Lua | 开源 | 软件开发
Singularity 发于 2013年10月27日 15:23 | 点击: 3102 | 展开摘要
这篇 blog 是最近研究 Lua 垃圾回收 (Gabage Collector) 的笔记整理。研究 Lua […]

查看全文: http://www.udpwork.com/item/11027.html

+0  Lua 5.2 新增的分代 GC

Tag: lua与虚拟机
云风 发于 2013年09月26日 16:23 | 点击: 1202 | 展开摘要
以前我在 blog 写过 Lua 5.1 的 gc 代码分析 ,而 Lua 5.2 对这部分代码改动颇多,暂时也没有精力更新这个系列,先挑重点写吧。

Lua 5.2 的 GC 的最大改进是增加了一种叫 generational 的模式,Lua 的官方文档里是这样解释的。

As an experimental feature in Lua 5.2, you can change the collector's operation mode from incremental

查看全文: http://www.udpwork.com/item/10754.html

+0  Closure 与 Unbound 变量

Tag: Lua | 软件开发
Singularity 发于 2013年09月08日 14:16 | 点击: 1777 | 展开摘要
大凡了解或编写过简单 Lisp 解释器的人都知道 unbound 变量这个概念。如下面这段代码 [1],对其中 […]

查看全文: http://www.udpwork.com/item/10615.html

+0  Nginx与Gzip请求

Tag: Technical | Lua | Nginx
老王 发于 2013年09月02日 23:20 | 点击: 1399 | 展开摘要
前些天,移动端的同事跑来问:某些API需要传输大数据,Nginx服务器能否支持Gzip请求?一方面可以节省移动端流量;另一方面还可以加快传输速度,提升用户体验。对于Apache来说,利用SetInputFilter,可以很轻松的实现这个功能,那么Nginx如何做呢?

既然移动端发送的是Gzip请求,自然需要想想如何在服务端解压缩。搜索一下现成的Nginx的模块,发现和Gzip相关的模块有如下几个:

Gzip: Gzip responses.

Gzip Precompre

查看全文: http://www.udpwork.com/item/10580.html

+0  去掉 full userdata 的 GC 元方法

Tag: lua与虚拟机 | 优化与技巧
云风 发于 2013年08月27日 11:13 | 点击: 1187 | 展开摘要
根据 Lua 文档中的说法,lightuserdata 比 fulluserdata 要廉价一些。那么,其中的区别在哪里呢?

空间开销上,fulluserdata 是一个 GC 对象,所以比 lightuserdata 要多消耗一点内存,这点内存往往对程序不造成太大的影响。

时间开销上,fulluserdata 在访问它时和 lightuserdata 并无太大区别,它们都只能通过元方法才能在 Lua 中使用。所有 lightuserdata 共用一个元表,不如 full

查看全文: http://www.udpwork.com/item/10501.html

+0  coroutine 的回收利用

Tag: lua与虚拟机 | skynet
云风 发于 2013年07月25日 15:12 | 点击: 1105 | 展开摘要
这几天在 lua 和 luajit 的邮件列表上有人讨论 coroutine 的再利用问题。

前几天有个用 skynet 的同学给我写了封邮件,说他的 skynet 服务在产生了 6 万次 timeout 后,内存上升到了 50M 直到 gc 才下降。

这些让我重新考虑 skynet 的消息处理模块。skynet 对每条消息的相应都产生了一个新的 coroutine ,这样才能在消息处理流程中,可以方便的切换出去让调度器调度。诸如 RPC/ socket 读写这些 ap

查看全文: http://www.udpwork.com/item/10288.html

+0  Programming in Lua(六)-Continuation

Tag: Lua | 开源 | 软件开发
Singularity 发于 2013年07月14日 08:29 | 点击: 1800 | 展开摘要
在之前的 blog 中 (三、五) 讨论了 Lua C APIs 的 continuation 概念。可以说 […]

查看全文: http://www.udpwork.com/item/10195.html

+0  回调还是消息队列

Tag: lua与虚拟机
云风 发于 2013年07月04日 18:58 | 点击: 1259 | 展开摘要
前几天在做 Hive 的 socket 库的时候, 遇到一个问题很典型,我记得不是第一次遇到了。值得记录一下。

socket 底层有一个 poll 的 api ,通过 epoll 或 kqueue 或 select 取得一系列的事件。用 lua 怎么封装它呢?

一个比较直接的想法是注入一个 callback function ,对于每个事件回调一个 lua 函数。但这容易引起许多复杂的问题。因为回调函数很不可控,内部可能抛出异常,也可能引起函数重入,或是做了一些你不喜

查看全文: http://www.udpwork.com/item/10142.html

+0  Hive , Lua 的 actor 模型

Tag: lua与虚拟机
云风 发于 2013年06月26日 19:10 | 点击: 5444 | 展开摘要
上个周末我一直在想,经过一年多在 skynet 上的开发,我已经有许多相关经验了。如果没有早期 erlang 版本的历史包袱以及刚开始设计 skynet 时的经验不足,去掉那些不必要的特性后的 skynet 应该是怎样的。

一个精简过代码的 skynet 不需要支持 Lua 之外的语言和通讯协议。如果某个服务的性能很关键,那么可以用 C 编写一个 Lua 库,只让 Lua 做消息分发。如果需要发送自定义协议的消息,可以把这个消息打包为一个 C 结构,然后把 C 结构指针

查看全文: http://www.udpwork.com/item/10094.html
|<<<2345678>>>| 一共10页, 120条记录