自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程书画的 BLOG

不积跬步,无以至千里。

  • 博客(134)
  • 资源 (3)
  • 收藏
  • 关注

原创 Linux 下使用 Jenkins 打包解包代码、上传文件、跳板机传文件常用指令

以下说的都是通过代码来执行的指令,所以不能存在任何需要人工输入的东西,比如密码。可以通过 sshpass 来省去输入代码的过程。但sshpass有安全风险,所以默认是没安装的,需要在服务器上手动安装。1. 打包代码tar -cvjf 包名 要打包的文件# 举例# 打包某目录下的所有 lua 文件tar -cvjf /tmp/demo1.tar.bz2 /your/code/*.lua# 打包某目录下的所有文件,但排除部分目录和文件tar -cvjf /tmp/demo2.tar.bz2

2021-03-31 19:35:37 1402

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

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

2020-01-17 09:54:19 498 1

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

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

2020-01-17 09:52:59 1629

原创 VSCodeVim 最佳实践

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

2020-01-17 09:52:22 4727 1

原创 新学到的一些 Vim 知识点

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

2020-01-17 09:51:10 174

原创 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 1353

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

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

2020-01-17 09:48:26 781

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

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

2020-01-17 09:35:32 1451

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

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

2018-10-10 09:36:16 1768

原创 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 481 2

原创 Linux 升级Vim8

之前升级都是使用下面这两个命令:sudo curl -L https://copr.fedorainfracloud.org/coprs/mcepl/vim8/repo/epel-7/mcepl-vim8-epel-7.repo -o /etc/yum.repos.d/mcepl-vim8-epel-7.repo# Upgrade Vim to vim 8:sudo yum update ...

2018-09-24 00:30:15 5518

原创 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 4425

原创 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 948

原创 [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 9618 3

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

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

2018-04-21 23:25:42 9540 2

原创 《微习惯》读后感

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

2018-03-14 16:35:14 3236

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

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

2018-01-22 13:40:35 3527 3

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

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

2018-01-05 00:07:33 5235 4

原创 lua 防御式编程辅助函数

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

2018-01-03 21:10:18 1503

原创 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 4009

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

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

2018-01-01 10:59:41 2496

原创 skynet lua服务callback执行过程

lua服务都是通过snlua启动的,snlua服务启动时,最终会通过skynet.start把回调函数设为skynet.dispatch_message。当有消息到达时,先调用到skynet.dispatch_message, 这里面再调到raw_dispatch_messagelocal function raw_dispatch_message(prototype, msg, sz, ses

2018-01-01 10:58:53 720

转载 skynet.call流程

本来想自己写下这个流程的,但是看到网上有人已经写了,就直接转过来吧,修正了原文中的一处错误。原文:探索skynet(四):服务之间的通信原文内容在《探索skynet(三):消息队列》中已经提到,skynet中每个服务都有自己的地址和消息队列。有了这个基础,理解服务之间的消息通信,就比较简单了。 skynet.call以最常用到的skynet.call为例,它通过调用skynet.core.send

2018-01-01 10:56:52 1885

原创 skynet.wakeup分析

官方文档: skynet.wakeup(co) 唤醒一个被 skynet.sleep 或 skynet.wait 挂起的 coroutine 。在 1.0 版中 wakeup 不保证次序,目前的版本则可以保证。唤醒流程调用skynet.wakeup(co)后,会在wakeup_session表内插入一条数据,key=co,value=true.function skynet.wakeup(

2018-01-01 10:55:20 862

原创 skynet.sleep分析

官方文档 skynet.sleep(ti) 将当前 coroutine 挂起 ti 个单位时间。一个单位是 1/100 秒。它是向框架注册一个定时器实现的。框架会在 ti 时间后,发送一个定时器消息来唤醒这个 coroutine 。这是一个阻塞 API 。它的返回值会告诉你是时间到了(返回nil),还是被 skynet.wakeup 唤醒 (返回 “BREAK”)。Codefunction s

2018-01-01 10:54:38 1937

原创 skynet clientsocket 导致 io.read 无法正确工作的问题

问题描述在使用 clientsocket 之后,使用 io.read() 无法正确读取用户输入。issue 里的讨论关于这个问题,在 skynet 的 issue 里也有人提到: require “clientsocket” 后 io.read()行为改变 #539 io.read()等待读取一行命令行的输入,以回车结束; require “clientsocket”后,io.read(

2017-12-31 09:40:03 1073

原创 析构函数为什么会自动再调用父类的析构函数?

原帖: http://bbs.csdn.net/topics/380022416里面的讨论基本上已经给出答案了,派生类的析构函数在执行完后,会自动执行基类的析构函数,这个是编译器强制规定的,没有为什么,甚至你在析构函数里调用return都不会立即返回到调用处,而是会先按顺序把析构函数全部调用完。以下是从stackoverflow上找到的回答,引用了RTTI,解释的也更专业一点。

2017-09-12 20:56:37 5934

原创 skynet之协程池(co_create)

local coroutine_pool = {}local coroutine_yield = coroutine.yieldlocal function co_create(f) local co = table.remove(coroutine_pool) if co == nil then co = coroutine.create(function(...

2017-09-11 20:12:52 1688

原创 使用Explorer++批量打开多个目录

用法很简单,软件自身的提示里也有,就是比较隐蔽,一般人没这需求可能不会注意到。这个功能要在命令行下使用,可以写个批处理。用法:explorer++.exe dir1 dir2 ... dirN dir1 到 dirN 是用于打开的目录名。例如:explorer++.exe C;\ D:\ 将分别打开目录 C:\ 和 D:\,并置于独立标签中。虚拟文件夹也可以通过其名称打开:例如:expl

2017-09-09 00:17:02 1855

原创 vs2008 a problem has been encountered while loading the setup components

在安装完VS2008 SP1后,再想添加组件,直接运行安装包里的autorun.exe就会报这个错,导致无法添加新的组件。原因据说是SP1会改变注册表里的一些数值,或别的什么产品标识导致识别出问题,这算是MS的一个BUG。搜了很多,都说卸载SP1或者卸载整个VS2008,这个方法简直要人命。不说卸载和安装要花很长时间,光是插件(VA, 联合编译 等等)都得装好久,麻烦死。

2017-05-06 17:26:26 1409

原创 VC设置鼠标指针大小

在使用LoadCursor或LoadCursorFromFile时,指针的大小总是默认的32x32,如果想让指针变大或变小,该怎么做呢?其实很简单,只要使用LoadImage接口就好了。先看下LoadImage的函数原型:HANDLE WINAPI LoadImage( _In_opt_ HINSTANCE hinst, _In_ LPCTSTR lpszN

2017-01-18 11:30:23 1463

原创 BeepComp & bcplayer 简介

BeepComp是一个极好的应用程序,使您通过一系列简单的文本命令来设计自己的芯片音乐。这是个开源项目, 网站: https://sourceforge.net/projects/beepcomp/?source=typ_redirect Description Compose chiptunes with text files! And make mp3 and wav fil

2016-11-15 11:13:24 1070

原创 curl_easy_strerror 返回中文错误提示(curl中文错误码)

// from: http://blog.csdn.net/realzhi/article/details/17068085// regexp: ^(CURLE_[A-Z,0-9,_]*) \(\d+\) – (.*)$// case \1:\n\treturn "\2";\n#pragma onceconst char* curl_easy_strerror_cn(CURLcod

2016-09-30 11:21:41 5846

原创 duilib 尝试解决透明窗体WebBroswer控件无法显示的问题

问题描述:设置Window bktrans="true"时,WebBrowser控件无法正常显示。https://github.com/redrains/DuiLib_Redrain/issues/9Redrain的回复里说的,所有子窗体都将无法显示,经过验证确实是这样的。相关讨论http://blog.csdn.net/LostSpeed/article/detail

2016-08-23 09:55:27 3029 2

转载 解决VC助手出现的颜色问题

问题描述: 1、书写的代码中部分关键字并没有变成蓝色,如int 是蓝色字体,但是CString就不是蓝色,而是黑色, 请教高手这是什么原因? 2、在用VC++的MFC做一应用程序的时候,发现我的cpp文件里的程序源代码全是黑色的,我以前编的时候 都是彩色的呀,这下为什么就变了呢?头文件里的源码却都很正常(颜色有黑,蓝,绿). 以上问题如果不装VC助手或者自己不做设置字体颜色的话,全是黑色的

2016-06-19 21:34:49 2044

原创 VC6 Visual Assist X快捷键失效后手动设置方法

今天在给VC6装Visual Assist X时,不知道为什么快捷键全没了,打开VC6的Tools->Customize->Keyboard, Category:Add-ins, 查下里面以 VAssistX开头的部分,发现所有的都没快捷键,这个问题不知道是什么原因导致的,难道是Win7 64位系统不兼容导致的? 以前在Win7上装VC6时都会把OLE那里改掉,今天装时不小心没改,所以出现一些莫名

2016-05-30 15:16:33 6098

原创 编译FaceAlignment

下载OpenCV编译FaceAlignment需要依赖OpenCV, 这里我们就用2.4.12版的吧, 可以去官网下载, 不要用最新的3.x版的, 因为3.x的不支持x86版了, 而Soundsilence提供的CMakeList没有生成x64的, 我试过强行改成x64的会有一大堆编译报错. 所以为了省事还是直接下载早期版的吧。OpenCV 2.4.12 下载地址: http://opencv.o

2016-04-05 14:23:29 1784 3

原创 三消游戏核心逻辑的一种实现

前段时间很喜欢玩"开心消消乐"这个休闲小游戏, 刚好大学的一位同学也在玩,后来就想着如果让自己来写这个逻辑要怎么写, 经过一天的构思, 找到一种利用深度优先搜索思想来实现的方式.三消游戏的规则一个m x n 的棋盘内, 初始状态下, 填满若干种不同类型的… 暂且叫Hero吧, 类型的数量根据游戏难度不同而不同, 一般有4~5种.同种类型的Hero连着 >= 3时消除, 横着竖着都可以消, 斜着

2016-02-06 15:58:33 14176 15

原创 Navicat连接SQL Server2000提示错误08001

数据库是SQL Server 2000问题描述无论是本机的数据库还是局域网内的,都出现如图的提示 使用系统自带的“SQL查询分析器”则可以访问! 百度了一圈,给出的都是sql2005的解决办法 请问2000该如何解决啊,先谢过~ http://bbs.csdn.net/topics/390715240?page=1解决方法运行Navicat安装目录下的 sqlncli.msi, 选择修复(R

2016-02-02 22:50:45 14863 1

原创 网络游戏到底该服务大众玩家还是大R?

今天晚上和主程聊天时,又争论到了这个老生常谈的话题,我的观点很直接,就是服务大众玩家,但是主程不这么认为,他觉得游戏就是做给大R玩的,小R或者非R根本就是绿叶,是大R的陪衬。不得不说,这是两种很典型的观点,就拿我们公司来说,很多策划在做游戏时,这个都是他们的指导思想,可想而知,这种策划做出来的游戏怎么可能好玩?也许是有那么几款游戏是火了,而且赚大钱了,但是这种指导思想是非常落后的,主程做为一个不玩游

2016-02-02 21:29:54 1522

list Control实现单元格编辑与插入Combo Box

这篇Blog的工程补充。 http://blog.csdn.net/bizhu12/article/details/6570209# 主要有一点细节作者没有提到: ListCtrl控件的属性里,View要改成Report。

2017-05-11

三消游戏的一种实现(JS/C++两个版本)

自己写的一个三消游戏, 介绍在这:http://blog.csdn.net/gneveek/article/details/50640412 因为有几个哥们要,所以就上传到这里了,省得我一直发邮件:)

2016-11-16

正则表达式必知必会-中文版.zip

本书是全球程序员公认的正则表达式最佳速成教材。作者Ben Forta是世界知名的技术作家,目前担任Adobe公司的高级技术推广专家。

2014-11-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除