跳转到主要内容

Lua

5 篇
  • 又溢出了

    发布于 文章 209 字 1 分钟

    Lua

    海外上线了,首日无事故,总算平平安安。最近抓了个黑产,发现又是熟悉的溢出, 和旧文如出一辙 ,真是尴尬 这次遭殃的是交易行,也是利用相乘后,一个巨大的数量变成一个小的消耗,刚刚好可以负担得起,于是他就上架了庞大数量的虚拟货币(153722867280914*120000),一直卖一直拿钱 …… 同样的,检查的地方也只是不让负数通过,没有留意到上限,哎,十分尴尬 问了下其他项目,似乎也没有通用校验的,有点囧 rz 先写个通用校验函数吧

    海外上线了,首日无事故,总算平平安安。最近抓了个黑产,发现又是熟悉的溢出, 和旧文如出一辙 ,真是尴尬 这次遭殃的是交易行,也是利用相乘后,一个巨大的数量变成一个小的消耗,刚刚好可以负担得起,于是他就上架了庞大数量的虚拟货币(153722867280914*120000),一直卖一直拿钱 …… 同样的,检查的地方也只是不让负数通过,没有留意到上限,哎,十分尴尬 问了下其他项目,似乎也没有通用校验的,有点囧 rz 先写个通用校验函数吧

  • 项目上线啦

    发布于 文章 2001 字 5 分钟

    SkynetLuaGoscon

    历时 3 年半,项目终于上线啦,打开 tig 翻到仓库的开头,看看提交历史,还是有点感慨的,实在没想到要花这么久。简单聊点线上问题吧 这次上线最刺激的是,开服前半小时,发现昨晚压测的服务器崩掉了,原因是聊天服务内存太大导致 OOM。于是用 memlimit 紧急止血,出问题的方法挂到模块上方便后续线上热更,然后打包,重启,紧赶慢赶在开服前几分钟搞完,提前开服错峰。真的非常非常刺激,当然,线上也没有出现这个问题,我们压测的例子相对比较极端,一大堆人每 30 秒集体跳场景,注册场景聊天的地方又做了锁 …

    历时 3 年半,项目终于上线啦,打开 tig 翻到仓库的开头,看看提交历史,还是有点感慨的,实在没想到要花这么久。简单聊点线上问题吧 这次上线最刺激的是,开服前半小时,发现昨晚压测的服务器崩掉了,原因是聊天服务内存太大导致 OOM。于是用 memlimit 紧急止血,出问题的方法挂到模块上方便后续线上热更,然后打包,重启,紧赶慢赶在开服前几分钟搞完,提前开服错峰。真的非常非常刺激,当然,线上也没有出现这个问题,我们压测的例子相对比较极端,一大堆人每 30 秒集体跳场景,注册场景聊天的地方又做了锁 …

  • 代码扫描

    发布于 文章 567 字 2 分钟

    Lua

    最近犯了一个很蠢的错,Code Review 的时候觉得非常丢人,决心不再犯第二次了,同样的错误不再犯第二次,才能不断进步XD 于是写了个小工具来检查。但是实际跑起来,才发现 Lua 这里设计得不太好,留下了一个合法但很容易犯错的坑 具体错误非常简单,就是 for _,item in ipairs(seq) 写成了 for item in ipairs(seq)。而且由于 seq 里的值某些情况下会包含 1,2,3... 的序列,所以还不容易发现异常。花了一点时间写了个扫描器,主要还是调一个正则 …

    最近犯了一个很蠢的错,Code Review 的时候觉得非常丢人,决心不再犯第二次了,同样的错误不再犯第二次,才能不断进步XD 于是写了个小工具来检查。但是实际跑起来,才发现 Lua 这里设计得不太好,留下了一个合法但很容易犯错的坑 具体错误非常简单,就是 for _,item in ipairs(seq) 写成了 for item in ipairs(seq)。而且由于 seq 里的值某些情况下会包含 1,2,3... 的序列,所以还不容易发现异常。花了一点时间写了个扫描器,主要还是调一个正则 …

  • Lua54 兼容性

    发布于 文章 1388 字 3 分钟

    Lua翻译

    最近在搞迁移,准备将项目依赖的 Lua 5.3 迁移到 5.4 上面去,先翻译一下手册的第八章,强迫自己读完, 原文地址 这里我们列出了从 Lua 5.3 迁移到 Lua 5.4 可能会遇到的兼容性问题 你可以通过设置参数重新编译 Lua(详情参考 luaconf.h),来避免其中的一些兼容性问题。但是,所有兼容选项都会在未来被移除掉。当这些选项被移除时,兼容性问题就会暴露出来。所以,当你有机会的时候,你应该尝试用没打开任何兼容选项的 Lua,来测试你的代码。这样会让迁移到新版本 Lua 的过程 …

    最近在搞迁移,准备将项目依赖的 Lua 5.3 迁移到 5.4 上面去,先翻译一下手册的第八章,强迫自己读完, 原文地址 这里我们列出了从 Lua 5.3 迁移到 Lua 5.4 可能会遇到的兼容性问题 你可以通过设置参数重新编译 Lua(详情参考 luaconf.h),来避免其中的一些兼容性问题。但是,所有兼容选项都会在未来被移除掉。当这些选项被移除时,兼容性问题就会暴露出来。所以,当你有机会的时候,你应该尝试用没打开任何兼容选项的 Lua,来测试你的代码。这样会让迁移到新版本 Lua 的过程 …

  • skynet 中隐藏的单点服务 : Harbor

    发布于 文章 879 字 2 分钟

    SkynetLuaC

    昨晚和同事一起看 skynet 的代码,对于 skynet 实现的按名字发送消息比较好奇,走读了一下代码,特意写篇文章记录一下 Skynet 服务间通信,比较常用的是 skynet.send,该接口在 skynet/lualib/skynet.lua 中,实现则是 skynet.core 模块的 send 方法。skynet.core 是 skynet 提供给 lua 的一个 so,代码在 skynet/lualib-src/lua-skynet.c,它用了一个巧妙的注册办法 …

    昨晚和同事一起看 skynet 的代码,对于 skynet 实现的按名字发送消息比较好奇,走读了一下代码,特意写篇文章记录一下 Skynet 服务间通信,比较常用的是 skynet.send,该接口在 skynet/lualib/skynet.lua 中,实现则是 skynet.core 模块的 send 方法。skynet.core 是 skynet 提供给 lua 的一个 so,代码在 skynet/lualib-src/lua-skynet.c,它用了一个巧妙的注册办法 …