10 gneveek

尚未进行身份认证

T_T此号终于找回,以后要注意安全。

等级
TA的排名 9k+

30行代码在skynet中实现预警机器人

1. 预警机器人的定义预警机器人就是当线上有任何错误发生时,它会把错误信息以某种形式通知到某处。2. 思路2.1 报错拦截在 skynet 构建的系统中,报错一般是 lua 引起的,比如 attemp index a nil value, 这些报错的位置虽然分散在成百上千个文件里,但入口其实非常有限,我们只要在入口处拦截掉这些报错,就能把错误信息发送到出去。以下列出不同业务类型其报错的入...

2020-01-17 09:54:19

使用 Git Hook 在提交代码前通过 luacheck 自动检查待提交代码

Preface由于脚本语言解释执行的特性,很多低级错误在运行到问题代码时才会报错,而不是像 C++ 这种静态语言那样在编译期就能由编译器检查出来,这就导致有很多本来在开发期就可以避免的问题,拖到线上才被发现。这里给出一个方案,可以在提交代码前,通过 Git 的 hook/pre-commit 机制,去做一些脚本代码的静态检查。我用 Lua 比较多,这里就以 Lua 为例来进行说明。Lua 的静...

2020-01-17 09:52:59

VSCodeVim 最佳实践

1. Preface初学者在学了一些 Vim 入门教程,掌握了一些基本操作后,往往不知道从何下手,日常工作中不太可能在终端下直接写代码,何况直接终端用 Vim 写代码,还需要大量插件的支持。其实我认识的很多 Vim 用户,现在已经不用原生 Vim 了,都是先选一个自己喜欢的编辑器/IDE, 再装 Vim 插件,基本上没有哪个现代编辑器/IDE没有 Vim 插件的了。我比较喜欢 VSCode,...

2020-01-17 09:52:22

新学到的一些 Vim 知识点

最近发起了一个公司内部的学习班计划, 第一期的 Vim 入门,用的实验楼的课程,看完后还是有很多收获的,我记了下来,免得以后忘掉,大家也可以看看,有些非常有用,比如 g*。命令说明15G跳到15行,我之前都是 :15,感觉后面这个方便点,主要是习惯了吧:cecenter, 使一行居中:leleft, 左对齐:riright, 右对齐,这三个好像没什么...

2020-01-17 09:51:10

spf13-vim 介绍及常用快捷键

一、什么是 spf13-vim官方简介:spf13-vim is a distribution of vim plugins and resources for Vim, Gvim and MacVim.spf13-vim 是 Vim,Gvim 和 MacVim 的 vim 插件和资源的整合包。It is a good starting point for anyone intending...

2020-01-17 09:49:33

网络游戏(MMORPG) 好玩的原因

这篇文章只是根据我浅显的理解来谈一谈,不一定对,大家随便看看就好。MMORPG 之所以好玩,我认为是由于其社交属性决定的,游戏里营造了一个虚拟世界,这个世界里有尔虞我诈,也有爱恨情仇,参与游戏的也都是一个个鲜活的个体,跟现实世界其实没什么两样。明白了这一点,想做好一个 MMORPG 看起来就没那么难了,游戏设计者只要专注于营造出一个合理的,公平公正的虚拟世界,让大家基于这个世界能产生出社交互动,...

2020-01-17 09:48:26

从程序员角度谈谈游戏策划的重要性

程序员对策划的普遍看法其他工种对游戏策划的重要性是怎么看待的我不太清楚,但是程序员群体对于策划的看法大多是不够尊重的,这跟策划的水平和出身有很大关系,国内的策划大部分都是野路子出身,真正经过正规训练的不多,像程序员和美术都是经过长期而严格的训练的,弱一些的也要去上个培训班培训半年到一年,但这种情况在策划身上不存在,国内好像没有什么专门的培训游戏策划的学校,大学里也没有这方面的专业(据说有个学校开...

2020-01-17 09:35:32

ANSI Common Lisp 中文版电子书下载 epub,mobi

epub 提取码: i73xmobi 提取码: jpf4中文版在线地址:https://acl.readthedocs.io/en/latest/可以在这里下载到 epub 格式的,mobi 是我用 calibre 转的,加了个封面

2018-10-10 09:36:16

ANSI Common Lisp 第二章参考答案

习题链接:https://acl.readthedocs.io/en/latest/zhCN/ch2-cn.html下面是我写的答案,仅供参考1描述下列表达式求值之后的结果:(a) (+ (- 5 1) (+ 3 7))(b) (list 1 (+ 2 3))(c) (if (listp 1) (+ 1 2) (+ 3 4))(d) (list (and (listp 3) t) ...

2018-10-01 23:37:56

Linux 升级Vim8

之前升级都是使用下面这两个命令:sudocurl-Lhttps://copr.fedorainfracloud.org/coprs/mcepl/vim8/repo/epel-7/mcepl-vim8-epel-7.repo-o/etc/yum.repos.d/mcepl-vim8-epel-7.repo#UpgradeVimtovim8:sudoyumupdate...

2018-09-24 00:30:15

CentOS 升级 tmux 1.8 到最新版

旧版 tmux 很多配置不支持,所以为了使用所有的最新特性,有必要把 tmux 升级到最新。我们直接从 github 上拉代码,然后编译安装。先安装依赖# libevent 2.1.8wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.t...

2018-09-21 16:42:37

Lua仿C++面向对象实现(LuaOO)

该实现的特性支持类似C++的 new() 和 delete() 函数构造(ctor)和析构(dtor)函数会自动按C++顺序调用(ctor从最底层基类开始调用,dtor从高上层派生类调用)派生类中可以访问被覆盖的子类方法实现代码function class(super) local cls = {} if super then setm...

2018-05-03 11:59:21

[vscode] 给python和lua增加#region功能

首先定位到 D:\Program Files\Microsoft VS Code\resources\app\extensions , 把路径改为自己的,打开 python 和 lua 目录,修改其中的 language-configuration.json 文件。pythonpython 默认已经配了,只不过没配好,只支持 #region, 如果#和region之间有一个空格(# r...

2018-04-26 10:17:56

网络游戏私服行业现状和反私服的措施

本文是今天在公司内部做的分享私服行业现状私服是怎么来的?简单点说就是服务端泄漏了。至于泄漏的原因,那就太多了,有服务端程序泄漏,也有源码泄漏的。服务端程序文件泄漏国外游戏,中国代理,可执行文件泄漏。像奇迹MU和传奇我估计都是这种情况,早期大家防范意识不够,合理的方式应该是不让代理商接触服务端。服务器被黑客攻击,拿走了可执行文件。曾经奇迹世界SUN有一...

2018-04-21 23:25:42

《微习惯》读后感

本书简介1天1个俯卧撑 1天1页书 1天50字 每天只做一点点的无负担习惯策略 ……………… ※编辑推荐※ ★ 从2012年末开始,斯蒂芬·盖斯每天至少做1个俯卧撑,这成了他培养的第一个微习惯。两年后,他拥有了梦想中的体格,写的文章是过去的4倍,读的书是过去的10倍。微习惯策略比 他用过的一切习惯策略都有效,于是便有了这本书。 ★ 微习惯是一种非常微小的积极行为,你需要每天强迫自...

2018-03-14 16:35:14

《沉默的大多数》王小波——读后感

这本书是在 KU 热门区看到的,关于“沉默的大多数”这个词,已经听过很多年了,只是一直不知道还有本书,所以就好奇想看看,对王小波的印象也不多,只知道他是个有趣的人,还知道他是个浪漫的人,因为他给李银河写的情书开头都是:“你好呀,李银河”,这种开头一般男人是写不出来的。这是本杂文集,里面都是他发表到各种杂志和报刊上的文章,语言很是犀利,看的出是个非常聪明的人,实际上确实如此。这本书里有一段话

2018-01-22 13:40:35

skynet 单步调试方案(zbstudio remote debug)

先上效果图: skynet 调试难题skynet 的业务代码全是用 lua 写的,其实现在 lua 的调试工具已经很多了,也有很多好用的,但是由于 skynet 是多服务的,每个服务都是一个 lua 虚拟机,成百上千的 lua vm 导致现有的 lua 调试工具都没法直接使用。虽然云风提供了一个简单的调试控制台,但实在谈不上好用,基于命令行的模式对于用惯各种现代 IDE 调试的我

2018-01-05 00:07:33

lua 防御式编程辅助函数

防御式编程是提高软件质量技术的有益辅助手段。防御式编程的主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。以上是引用自百科的一段描述,在实际编码过程中,我们除了判断参数是否合法外,还会 assert 非法参数,以达到快速定位出错位置的目的。一些示例比如我们有一个 计算两个 number 之和的一个函数:fun

2018-01-03 21:10:18

skynet 某些库导致 attempt to yield across a C-call boundary 错误的问题

问题描述在使用 skynet 提供的一些库的时候,报 attempt to yield across a C-call boundary 的错误。常见的有以下这些: * datasheet * multicast * cluster * sharedata * …比如我们在某个 lua 文件内 require(“skynet.datasheet”), 在运行到这个文件时,会报

2018-01-03 16:48:23

lua服务执行过程中协程的挂起和重新唤醒

lua服务在执行回调函数的过程中,调用某些函数会挂起协程,比如skynet.call, skynet.ret, skynet.response等等,这些函数把协程挂起后,如何唤醒呢?本文将对所有调用coroutine.yield的API的唤醒做下分析。(比较拗口,找不到更好的表达方式了)skynet.callfunction skynet.call(addr, typename, ...)

2018-01-01 10:59:41

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。