Printing parameters in Lua tracebackWhen an error occurs, Lua will print a traceback of the call stack, it helps us to find bugs. In many cases, however, a call stack traceback is not enough for us to find out the problem. We need more December 1, 2020 #lua #english
Lua 夏令时时区问题我之前的一篇文章介绍了怎样在服务器和客户端之间同步时间和时区. 同步时间相对简单些, 本质就是一个时间差; 而时区相对复杂些. 那篇文章介绍的方法有一个问题: 在客户端的时区启用了夏令时的时候, 客户端得到的本地时间会比实际快一个小时. 原因是求客户端时区的方法不对. 例如, 太平洋时区本为 UTC-0800, 而当客户端处于太平洋时区的 2020 年 10 月 29 日, 此时太平洋时区启用夏令 October 29, 2020 #experience #lua
Lua next 函数的一个有趣问题熟悉 Lua 的同学都知道, Lua 是允许在 for ... pairs 循环中修改和删除表中元素的. 下面这样的代码是没有任何问题的: 123456local t = {a = 1, b = 2, c = 3}for k, v in pairs(t) do if v == 1 then t[k] = nil endend 但是, 如果我们在遍历时既 October 23, 2020 #lua
A simple way to turn callback pattern to coroutine pattern in LuaMy game project is written by Lua. However, its framework does not provide a coroutine pattern, it uses a simple callback pattern instead. For example, to send an http request and receive the response September 13, 2020 #lua #english
全排列问题给定 n 个不同的元素, 问有多少种不同的排列方式. 这就是全排列问题. 我们高中时就学过排列公式 \(A_n^m = \frac{n!}{(n-m)!}\), 因此对于 n 个元素, 全排列数等于 \(A_n^n = \frac{n!}{(n-n)!} = n!\) . 例如对于序列 [1, 2, 3] 全排列为 123456[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1 September 5, 2020 #algorithms #leetcode
只出现一次的数字这里分享三道寻找数组中只出现一次的数字的问题. 这些题使用哈希表都很好做, 但这里我们使用位运算, 可以很巧妙地在常数空间复杂度内解决问题. 第一题 题目源自 Leetcode 136 题 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 12输入: [2, August 28, 2020 #algorithms #leetcode
[翻译] RFC 1928: SOCKS 协议第 5 版socks5 是一个常用的代理协议, 它既可以用来代理 TCP, 也可以代理 UDP. socks5 的用途非常广泛, 许多网络软件都支持 socks5, 主流操作系统也支持使用 socks5 作系统代理. RFC 1928 是 socks5 协议的规范文档, 本文是对 RFC 1928 的翻译. 原文见 RFC 1928 - SOCKS Protocol Version 5. 以下是翻译正文: August 27, 2020 #translations
Y-Combinator: 如何在匿名函数中递归调用自身如何实现一个阶乘函数? 最简单的做法是使用递归: 123456789'use strict';function factorial(n) { if (n === 0) { return 1; } else { return n * factorial(n - 1); }} August 8, 2020 #math
搞清楚令人头疼的乱码问题相信我们每个人都被乱码的问题困扰过. 乱码常常令人十分头疼, 这主要是因为没有搞清楚字符编码的问题: 何为 encode 何为 decode, UTF-8 和 Unicode 是什么关系, 它与 UTF-16 和 UTF-32 的区别又是什么, BOM 头又是什么东西等等. 这里我们彻底地捋一遍字符编码问题. 首先搞清楚几个概念: 基本概念 字符 字符指语言中的书写原子, 是不可再分的最小单元, July 16, 2020 #problems
使用 LPeg 解析语法LPeg 是一个 Lua 的模式匹配库. 笔者刚刚接触到 LPeg 时, 以为它只是另一种形式的正则表达式; 深入了解才发现, 它的功能远远强于正则表达式, 能够轻易匹配正则表达式难以匹配的复杂模式, 乃至解析语法. 事实上, LPeg 即是 Parsing Expression Grammars for Lua, 它设计出来就是用来解析语法的. 使用 LPeg 能够轻松地解析各种语法, 比如用四 June 24, 2020 #tools #lua