<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lua on I'm OWenT</title><link>//owent.net/tags/lua.html</link><description>Recent content in Lua on I'm OWenT</description><generator>Hugo</generator><language>zh-cn</language><copyright>&lt;a rel="license" href="https://github.com/owent/blog-hugo/blob/master/LICENSE.md"&gt;&lt;img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/80x15.png" /&gt;&lt;/a&gt;</copyright><lastBuildDate>Mon, 13 Nov 2023 22:57:45 +0000</lastBuildDate><atom:link href="//owent.net/tags/lua/index.xml" rel="self" type="application/rss+xml"/><item><title>给xresloader（Excel导表工具）增强UE读表支持（包含蓝图,Blueprint）</title><link>//owent.net/2023/2309.html</link><pubDate>Mon, 13 Nov 2023 22:57:45 +0000</pubDate><guid>//owent.net/2023/2309.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://xresloader.atframe.work/"&gt;xresloader&lt;/a&gt; 是一组用于把Excel数据结构化并导出为程序可读的数据文件的导表工具集。它包含了一系列跨平台的工具、协议描述和数据读取代码。&lt;/p&gt;
&lt;p&gt;主要功能特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨平台（java 11 or upper）&lt;/li&gt;
&lt;li&gt;Excel =&amp;gt; protobuf/msgpack/lua/javascript/json/xml&lt;/li&gt;
&lt;li&gt;完整支持协议结构，包括嵌套结构和数组嵌套&lt;/li&gt;
&lt;li&gt;同时支持protobuf proto v2 和 proto v3&lt;/li&gt;
&lt;li&gt;支持导出proto枚举值到lua/javascript代码和json/xml数据&lt;/li&gt;
&lt;li&gt;支持导出proto描述信息值到lua/javascript代码和json/xml数据（支持自定义插件，方便用户根据proto描述自定义反射功能）&lt;/li&gt;
&lt;li&gt;支持导出 UnrealEngine 支持的json或csv格式，支持自动生成和导出 UnrealEngine 的 &lt;code&gt;DataTable&lt;/code&gt; 加载代码&lt;/li&gt;
&lt;li&gt;支持别名表，用于给数据内容使用一个易读的名字&lt;/li&gt;
&lt;li&gt;支持验证器，可以在数据里直接填写proto字段名或枚举名，或者验证填入数据的是否有效&lt;/li&gt;
&lt;li&gt;支持通过protobuf协议插件控制部分输出&lt;/li&gt;
&lt;li&gt;支持自动合表，把多个Excel数据表合并成一个输出文件&lt;/li&gt;
&lt;li&gt;支持公式&lt;/li&gt;
&lt;li&gt;支持oneof,支持plain模式输入字符串转为数组或复杂结构,支持map&lt;/li&gt;
&lt;li&gt;支持空数据压缩（裁剪）或保留定长数组&lt;/li&gt;
&lt;li&gt;支持基于正则表达式分词的字段名映射转换规则&lt;/li&gt;
&lt;li&gt;支持设置数据版本号&lt;/li&gt;
&lt;li&gt;Lua输出支持全局导出或导出为 &lt;code&gt;require&lt;/code&gt; 模块或导出为 &lt;code&gt;module&lt;/code&gt; 模块。&lt;/li&gt;
&lt;li&gt;Javascript输出支持全局导出或导出为 &lt;code&gt;nodejs&lt;/code&gt; 模块或导出为 &lt;code&gt;AMD&lt;/code&gt; 模块。&lt;/li&gt;
&lt;li&gt;提供CLI批量转换工具（支持python 2.7/python 3 @ Windows、macOS、Linux）&lt;/li&gt;
&lt;li&gt;提供GUI批量转换工具（支持Windows、macOS、Linux）&lt;/li&gt;
&lt;li&gt;CLI/GUI批量转换工具支持include来实现配置复用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://xresloader.atframe.work/"&gt;xresloader&lt;/a&gt; 包含了多个组件，其中最主要的部分分别是。&lt;/p&gt;</description></item><item><title>xresloader-Excel导表工具链的近期变更汇总</title><link>//owent.net/2023/2304.html</link><pubDate>Tue, 18 Apr 2023 20:27:45 +0000</pubDate><guid>//owent.net/2023/2304.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://xresloader.atframe.work/"&gt;xresloader&lt;/a&gt; 是一组用于把Excel数据结构化并导出为程序可读的数据文件的导表工具集。它包含了一系列跨平台的工具、协议描述和数据读取代码。&lt;/p&gt;
&lt;p&gt;主要功能特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨平台（java 11 or upper）&lt;/li&gt;
&lt;li&gt;Excel =&amp;gt; protobuf/msgpack/lua/javascript/json/xml&lt;/li&gt;
&lt;li&gt;完整支持协议结构，包括嵌套结构和数组嵌套&lt;/li&gt;
&lt;li&gt;同时支持protobuf proto v2 和 proto v3&lt;/li&gt;
&lt;li&gt;支持导出proto枚举值到lua/javascript代码和json/xml数据&lt;/li&gt;
&lt;li&gt;支持导出proto描述信息值到lua/javascript代码和json/xml数据（支持自定义插件，方便用户根据proto描述自定义反射功能）&lt;/li&gt;
&lt;li&gt;支持导出 UnrealEngine 支持的json或csv格式，支持自动生成和导出 UnrealEngine 的 &lt;code&gt;DataTable&lt;/code&gt; 加载代码&lt;/li&gt;
&lt;li&gt;支持别名表，用于给数据内容使用一个易读的名字&lt;/li&gt;
&lt;li&gt;支持验证器，可以在数据里直接填写proto字段名或枚举名，或者验证填入数据的是否有效&lt;/li&gt;
&lt;li&gt;支持通过protobuf协议插件控制部分输出&lt;/li&gt;
&lt;li&gt;支持自动合表，把多个Excel数据表合并成一个输出文件&lt;/li&gt;
&lt;li&gt;支持公式&lt;/li&gt;
&lt;li&gt;支持oneof,支持plain模式输入字符串转为数组或复杂结构,支持map&lt;/li&gt;
&lt;li&gt;支持空数据压缩（裁剪）或保留定长数组&lt;/li&gt;
&lt;li&gt;支持基于正则表达式分词的字段名映射转换规则&lt;/li&gt;
&lt;li&gt;支持设置数据版本号&lt;/li&gt;
&lt;li&gt;Lua输出支持全局导出或导出为 &lt;code&gt;require&lt;/code&gt; 模块或导出为 &lt;code&gt;module&lt;/code&gt; 模块。&lt;/li&gt;
&lt;li&gt;Javascript输出支持全局导出或导出为 &lt;code&gt;nodejs&lt;/code&gt; 模块或导出为 &lt;code&gt;AMD&lt;/code&gt; 模块。&lt;/li&gt;
&lt;li&gt;提供CLI批量转换工具（支持python 2.7/python 3 @ Windows、macOS、Linux）&lt;/li&gt;
&lt;li&gt;提供GUI批量转换工具（支持Windows、macOS、Linux）&lt;/li&gt;
&lt;li&gt;CLI/GUI批量转换工具支持include来实现配置复用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://xresloader.atframe.work/"&gt;xresloader&lt;/a&gt; 包含了多个组件，其中最主要的部分分别是。&lt;/p&gt;</description></item><item><title>填个转表工具 xresloader 去年的坑（数组尾部裁剪）</title><link>//owent.net/2022/2208.html</link><pubDate>Sat, 27 Aug 2022 20:59:45 +0000</pubDate><guid>//owent.net/2022/2208.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/xresloader/xresloader"&gt;xresloader&lt;/a&gt; 是一个功能比较全面并且跨平台的Excel导出protobuf、msgpack、xml、lua、json、javascript、UE-Csv、UE-Json等数据格式的工具。
并且整个工具链还包含了基于模板引起生成读表代码的 &lt;a href="https://github.com/xresloader/xres-code-generator"&gt;xres-code-generator&lt;/a&gt; ，方便产品/策划使用的 &lt;a href="https://github.com/xresloader/xresconv-gui"&gt;GUI批量执行工具 - xresconv-gui&lt;/a&gt; 和方便CI集成和程序使用的 &lt;a href="https://github.com/xresloader/xresconv-cli"&gt;命令行批量执行工具 - xresconv-cli&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>集成 upb 和 lua binding 的踩坑小记</title><link>//owent.net/2022/2207.html</link><pubDate>Sat, 20 Aug 2022 17:59:45 +0000</pubDate><guid>//owent.net/2022/2207.html</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;最近新项目重新评估了一下protobuf的C/C++ -&amp;gt; Lua binding 方案。之前，使用最广泛的 Lua binding 方案应该是 &lt;a href="https://blog.codingnow.com/"&gt;云风&lt;/a&gt; 的 &lt;a href="https://github.com/cloudwu/pbc"&gt;pbc&lt;/a&gt; 。但是这个库已经是作者弃坑好多年的状态了。我之前使用 &lt;a href="https://github.com/cloudwu/pbc"&gt;pbc&lt;/a&gt; 的时候刚碰上 protobuf 3.0 刚出来，当时打了patch来适配 protobuf 3.0 ，还修复了一些其他问题。这个Patch有些推给了上游，有些因为和上游的某些机制冲突没有推。我了解到的很多其他项目也或多或少的打了自己的Patch，大多数也没往上游推。基本上 &lt;a href="https://github.com/cloudwu/pbc"&gt;pbc&lt;/a&gt; 已经处于一个失维的状态，所以这次新项目就干脆来寻求更好，或者说仍然有良好活跃度的解决方案。于是就看向了 &lt;a href="https://github.com/protocolbuffers/upb"&gt;upb&lt;/a&gt; 。&lt;/p&gt;</description></item><item><title>pbc的一个陈年老BUG</title><link>//owent.net/2016/1273.html</link><pubDate>Mon, 04 Jul 2016 13:01:42 +0000</pubDate><guid>//owent.net/2016/1273.html</guid><description>&lt;p&gt;近期跟了一下pbc的lua-binding的一个老BUG，起源是我们客户端报了一个奇怪的问题，我们游戏里的某些功能的optional字段，服务器并没有下发数据，但是客户端竟然能读到。&lt;/p&gt;</description></item><item><title>我们的Lua类绑定机制</title><link>//owent.net/2015/1153.html</link><pubDate>Wed, 15 Apr 2015 16:16:39 +0000</pubDate><guid>//owent.net/2015/1153.html</guid><description>&lt;!-- toc --&gt;
&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;最近一个人搞后台，框架底层+逻辑功能茫茫多，扛得比较辛苦，一直没抽出空来写点东西。&lt;/p&gt;
&lt;p&gt;空闲的时间，完善了&lt;a href="https://www.owent.net/2015/1149.html"&gt;LLVM+Clang+libc++和libc++abi的编译脚本&lt;/a&gt;。不得不说clang的编译脚本质量比gcc差不是一点点。为了在centos下尽可能编译出更多的功能和llvm的子项目，要各种改各种试才终于自举通过，并且这种情况编出来的二进制大得夸张。不过总算是告一段落。&lt;/p&gt;
&lt;p&gt;因为项目需要，买了本&lt;a href="http://www.duokan.com/book/53962"&gt;《Redis的设计与实现》&lt;/a&gt;的电子版，顺便给这本书的作者贡献了一丢丢的Redis文档的翻译。这本书通篇贴代码，有点看blog的感觉，写得还是很简单易懂的。（不过谁告诉我为毛我花了30大洋买完不到半个月就变成10块了，坑爹么不是。T_T）&lt;/p&gt;
&lt;p&gt;另外还零零散散地看了些&lt;a href="http://book.douban.com/subject/3652388/"&gt;《程序员的自我修养-链接、装载与库》&lt;/a&gt; 这本书&lt;a href="http://blog.codingnow.com"&gt;云风&lt;/a&gt;之前推荐过。并且在我看得这些里国人写得书里，这确实是一本值得推荐，并且不可多得的佳作。&lt;/p&gt;</description></item><item><title>tolua++内存释放坑</title><link>//owent.net/2015/1133.html</link><pubDate>Thu, 08 Jan 2015 22:03:42 +0000</pubDate><guid>//owent.net/2015/1133.html</guid><description>&lt;!-- toc --&gt;
&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;本来想参考下tolua++的对象生命周期维护方式。一不小心发现了一个坑。&lt;/p&gt;
&lt;h2 id="代码追踪"&gt;代码追踪&lt;/h2&gt;
&lt;p&gt;我这里用得是tolua++ 1.0.93版本。&lt;/p&gt;
&lt;p&gt;tolua++在new一个类的时候，会把类指针作为userdata传入lua，建立metatable并通过&lt;strong&gt;tolua_classevents&lt;/strong&gt;函数给metatable注册魔术方法。&lt;/p&gt;</description></item><item><title>Lua性能分析</title><link>//owent.net/2014/1128.html</link><pubDate>Fri, 12 Dec 2014 16:14:11 +0000</pubDate><guid>//owent.net/2014/1128.html</guid><description>&lt;!-- toc --&gt;
&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;Lua性能分析本来有一些现成的工具，比如LuaProfile，不幸的是这货不支持luajit，另外LuaStudio虽然挺好用但是是收费的。
比较不爽，刚好Lua本身提供钩子功能，用来写调试工具和性能分析工具都比较简单，索性就自己写一个。&lt;/p&gt;</description></item><item><title>Lua 挺好用的样子</title><link>//owent.net/2013/918.html</link><pubDate>Thu, 24 Oct 2013 20:59:44 +0000</pubDate><guid>//owent.net/2013/918.html</guid><description>&lt;p&gt;项目里面引入了Lua，就特别学习了一下。&lt;/p&gt;
&lt;p&gt;其实对于理解Javascipt的人来说，Lua也很容易理解，因为他们太多的地方相像了。&lt;/p&gt;
&lt;p&gt;初步看来，Lua的设计模式和思想很像Javascript，也是原型模型（Javascript里叫&lt;strong&gt;prototype&lt;/strong&gt;，Lua里是&lt;strong&gt;metatable&lt;/strong&gt;）&lt;/p&gt;</description></item></channel></rss>