Cmake在windows支持预编译头文件(stdafx.h) 最近一直在研究cmake构建项目,之前接触cmake的时候就感觉不太喜欢cmake,觉得它太乱了,产生了太多的中间文件,产生的项目文件也不是特别友好,在windows下,生成的项目文件经常需要修改,而在linux和常规的makefile风格也打不一致,文件太多,不方便学习研究。 不够经过这段时间系统的研究,觉得cmake还是非常强大的,吃透之后它的确非常方便,比手工写ma...
linux下shell技巧 经常看到一些大牛操作linux的时候,双手运指如飞,指令如流水般输出,会不会感到羡慕呢? 本文就整理了一些linux下shell的技巧,保管你学会之后,shell输出apm突飞猛进,开个玩笑,我们进入正题。 一般来说shell的命令行编辑使用Emacs或者Vi模式,也就是说可以用Emacs或者Vi的操作指令来进行命令行的编辑,默认的模式是Emacs模式。 Ctrl+T:将...
使用Cmake生成跨平台项目编译解决方案 项目最近有需求在windows下面运行,我花了几周时间将linux的服务器移植到windows下面,目前已经能够正常运行服务器,目前又有了新需求,两边的代码结构和组织是分开的,因此为了两边能够同步维护,需要一个能够跨平台的项目编译解决方案,经过调研之后,选择了使用cmake这个工具,本文主要讲述,使用cmake的生产项目的一些基础知识。一、cmake简介 你或许听过好几种 M...
批处理在文件行首添加内容 经常遇到用工具导出一个文件后,需要在文件行首添加一些内容的需求。最近又遇到了,因此查了资料后自己在实验通过之后,决定把这个脚本记录下来。基本思路是文件内容copy,如下所示:echo #include "stdafx.h" > $for /f "delims=" %%i in ('dir/b CChatSvrConfDesc.cpp')do ( copy /b $+"%%i" $1 m...
MySQL添加新用户、为新用户分配权限 1、使用root用户登录mysql2、添加具有本地(localhost/127.0.0.1)访问权限的用户 #create user 'newuser'@'localhost' identified by 'password';3、创建具有远程访问权限的用户 #create user 'newuser'@'%' identified by 'password'; 创建之后记得执...
centos7 yum install mariadb mariadb数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 1、添加数据源仓库,建议命名为 mariadb.repo 类似的名字。 #vim /etc/yum.repos.d/mariadb.re...
Linux中samba服务器的搭建 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。使用它我们能够快速的在linux和windows之间建立文件共享,本文主要讲述如何搭建和共享文件。 一、先查看系统中是否安装有samba服务相关的软件包。 [root@xxxsite ~]#rpm -qa | grep samba 如果已经安装则...
centos yum安装mysql5.6以上版本 centos 自带的软件库只能安装mysql5.1,后续的版本就不行了,要升级mysql只能自己想办法。1: 检测系统是否自带安装MySQL#yum list installed | grep mysql2: 删除系统自带的mysql及其依赖 命令:# yum -y remove mysql-libs.x86_643: 给CentOS添加rpm源,并且选择较新的源 命令:# wget -i htt...
CentOS yum安装或者升级GCC到4.8 之前一直没怎么用C++11,最近的项目都开始使用,但是Centos使用yum工具安装GCC的版本是4.4.7,因此需要升级才行。在网上查了一些资料,成功搞定环境,怕以后忘记了难找,因此记录下来。1、下载源文件,并安装:wget http://people.centos.org/tru/devtools-2/devtools-2.repomv devtools-2.repo /etc/yum.re...
关于SQL中Union和Join的用法 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 一直以来,对于数据库SQL方面都是半吊子水平,能写一些基本的增删改查的语句,大部分时间都是用下Where,偶尔用用Order By、Limit,Like什么的。连表查询也是一些很简单的使用。至于那些高级用法,都还给老师了。最近接腾讯的IDIP的SDK,需要查询一些游戏数据,发现自己的SQL水平不够用,温
linux的一些运维指令和技巧 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)最近一段时间加强了对liunx的学习和实践。学到了一些不错的技巧和方法。切实感觉到了linux一切皆文本的的魅力。最近一周开启轻测,抽时间记录一下。状态相关查看机器cpu型号: #cat /proc/cpuinfo查看线程占用CPU: #top -H -p pidshell带参...
linux利用shell实现守护进程的脚本 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)在游戏开发领域,服务器宕机那是家常便饭。本文简单介绍如何利用linux的shell脚本实现简单的守护进程。Shell代码如下#!/bin/sh#添加本地执行路径export LD_LIBRARY_PATH=./while true; do #启动一个循环,定时检...
关于VS2012加载项目失败解决办法 关于VS2012加载项目失败解决办法转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)出现过几次VS2012无法加载项目的情况。以前都是重装了事。这次又遇到,特地上网查询了一下解决方案,记录一下。通常出现这个问题的是因为发生了下图这种情况: 因为缺少上面的语言包,所以导致加载工程项目失败。 那如何解决呢?除了重装之外,还有更好的解决办法。
关于mysql自增id的获取和重置 mysql获取自增id的几种方法使用max函数:select max(id) from tablename 优点:使用方便快捷。缺点:获取的不是真正的自增id,是表中最大的Id,如果有删除数据的话,那么该值和自增id相差比较大。如果有连表数据,有可能导致数据错乱。使用LAST_I
cocos2dx用checkbox实现单选框和button实现table按钮 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) cocos2dx有checkbox和button,但是checkbox是个复选框,也没有table按钮,本文主要是利用这两个控件来实现单选框和table按钮的功能。主要思路就是,通过响应checkbox和button的事件,来设置和他一组的其他控件的状态来达到我们需要的效果。 我的工作环境时cocos2d
中国人的大师之路--《像外行一样思考,像专家一样实践》读后感 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近在博客频道看到这本书《像外行一样思考,像专家一样实践》在征集书评,故移步花2小时看了试读版,读后感觉心里颇有些感触,记录下来,一为抒发自己多年来的一些想法,二则为完成任务,哈哈。 很多年以来,大概我上大学之后吧,我看过很多书,特别是计算机方面的书籍,从技术菜鸟成长到目前的行内高手(自认为吧,呵呵),
关于cocos2dx3.2返回键问题以及ansi转utf8的问题 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近在学习的过程中重新整理了一下代码,顺便把cocos2dx从3.0升到了3.2。这里记录一下升级过程中的问题。之所以只升到3.2是因为后面的版本使用了lua5.2,而我还是更喜欢用5.1,而且能继续使用luajit,另外一个原因是因为cocosstudio,3.2后面的版本就导出成csd格式了,我
关于lua扩展库lpack的使用指南 最近在研究luasocket,准备用全部用lua的扩展库来实现一套轻量级框架,用来做一些工具、简单的游戏服务器,以及作为网络库用在cocos2dx中。完善的网络库必然会遇到粘包、半包的问题,luasocket也不例外,由于网络部分在lua,协议的制定和buff的解析都没有合适的方案,又不想在C++中来封装接口,后面在网上查了一些资料,发现lua也有一个二进制打包的扩展库——lpack,了解之后发现
关于luasocket的编译和部署 lua语言是一门轻量级、可扩展、使用方便的脚本语言,近年来在很多领域得到了广泛的使用,特别是在游戏领域,很多服务器和客户端引擎都选择使用lua来做扩展。同时lua自出生以来受到很多开发者的青睐,并为之开发了很多扩展库,例如lfs、luasql、redis-lua、luasocket、luajson等都得到了广泛的使用。其中luasocket主要是提供网络方面的扩展,提供了包括tcp、u
用rz,sz命令在windows和linux间传送文件 经常需要在windows和linux之间上传和下载文件。使用ftp工具来工作有时候会觉得比较麻烦,切来切去的十分不方便,要是能够直接在终端进行上传和下载就好了。其实真有这样的方案,就是使用ZModem。 首先,需要在linux服务器上安装rz和sz两个工具,安装完成后就可以直接使用了。就不介绍过程了,我之前的博文记录过。不清楚的同学请移步linux安装rz和sz以及使用。 rz,sz是便是L...
linux编译zlib库的动态库so 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) zlib库是一个强大的通用的开源压缩库,用途比较广,在windows下能够很容易的编译或者拿到编译成功的二进制文件。但是linux下的比较少,本文记录一下如何编译。 zlib官方网站:http://www.zlib.net 首先,下载源码来安装zlib软件包。目前最新的版本是1.2.8。 #wget h
关于linux进程间的close-on-exec机制 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 前几天写了一篇博客,讲述了端口占用情况的查看和解决。 关于linux系统端口查看和占用的解决方案 大部分这种问题都能够解决,在文章的最后,提到了一种特殊情况,就是父子进程中的端口占用情况。父进程监听一个端口后,fork出一个子进程,然后kill掉父进程,再重启父进程,这个时候提示端口占用,用netstat
开源CEGUI编辑器之二(MFC重写的ImagesetEditor) 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近在整理自己几年前一直在研究的一套代码,使用OGRE+CEGUI开发的客户端引擎框架。当年自己倾心研究的东西,终究还是没能挺过时间的车轮,逐渐失去价值。以后估计再也没有时间去扩展和使用了,所以打算整理好之后将之逐步开源,希望能给喜欢研究这类端游技术的朋友吧。 CEGUI自己也有编辑器,但是是使用类似MF
开源CEGUI编辑器之一(MFC重写的LayoutEditor) 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近在整理自己几年前一直在研究的一套代码,使用OGRE+CEGUI开发的客户端引擎框架。当年自己倾心研究的东西,终究还是没能挺过时间的车轮,逐渐失去价值。以后估计再也没有时间去扩展和使用了,所以打算整理好之后将之逐步开源,希望能给喜欢研究这类端游技术的朋友吧。 今天最先放出一套UI编辑器的源码吧,CEGU
关于linux系统端口查看和占用的解决方案 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 一直以来,在处理linux服务器的过程中,经常会遇到一个问题,有时候kill掉进程之后,端口被占用,新的进程一直起不来,等几十秒之后才能正常启动。所以一直也没专门来处理这个问题。 最近一周频繁出现这样的情况,等待很近也不能启动新进程,总是提示端口被占用,只有重启机器才能恢复正常,这个简直是个灾难,所以下定
关于mysql常用时间函数 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近一直在做游戏后台工具的一些关于数据统计的工作,对于mysql的时间函数用的比较多,但是用过了就忘记了,又容易混淆,所以在此记录一下使用过的函数,以后逐步补全。 1、now(),返回当前的时间格式。 > select NOW(); > '2014-11-24 18:38:17' 2、CURDA
关于mysql存储过程创建动态表名及参数处理 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 最近游戏开始第二次内测,开始处理操作日志,最开始把日志放到同一个表里面,发现一天时间,平均100玩家在线,操作记录就超过13万条,决定拆表,按照日期来保存日志,每天的日志存到一个表里面,然后定期把老的数据导出来备份后删掉。 具体思路是写日志的时候,根据当前的时间决定插入到当天的表里面,如表不存在则创建一
linux编译curl库的动态库so 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) curl库是一个很强大的http开源库,c++里面能够很方便的和http服务器交互。 最近项目开始内测,开始接登录和充值的SDK,选择了使用curl库来和第三方http服务器交互。 在windows下还是很容易使用,如何使用的案例比比皆是,而且很容易就找到已经编译好的动态库进行测试,但是最后
关于linux服务器进程监控及自动重启的简单方案 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 本周开始,新手游进行删档封测阶段,前两天表现还好,今天更新后出现几次宕机行为,比较影响玩家的测试和体验,我们的服务器管理系统尚未完善,为了晚上能够预防宕机造成损失,先用一种简单的方案临时顶替一下。 实现原理主要是使用linux提供的crontab机制,定时查询服务器进程是否存在,如果宕机则处理我们预设的...
linux 安装zip/unzip/g++/gdb/vi/vim等软件 最近公司新配置了一台64位云服务器,去部署的时候发现,没有安装zip/unzip压缩解压软件。于是只好自己安装这两个软件,linux最好用的还是yum。两个指令就安装好了。
关于cocos2dx之lua使用TableView 在手机游戏的开发中,滚动是一项非常重要的操作,而cocos2dx中使用的最广泛的就属于TableView了,不过由于cocos2dx的接口比较晦涩,所以需要一个熟悉的过程。本文主要讲解如何使用TableView。 首先当然是创建一个TableView,这比较简单,和其他控件差不多。看看示例代码: self._skillView = cc.TableView:create(cc.size(wi
Linux常用指令 服务器部署会经常用到linux,很多时候都是用的时候上网查一下指令,然后用完过不了多久就忘记了,因此本文记录一些自己常用的linux指令,以作备忘。并不断添加。 1、文件、目录相关 a、cd:切换目录 (#cd /sbin....) b、mkdir:创建目录 (#mkdir test) c、rm:删除文件或者目录(#rm -fr test) d、cp:拷贝文件或者目录(#cp -fr ...
创建角色随机名字(mysql抽取随机记录)和mysql游标的使用 最近在开发中遇到了一些问题,在此记录一下解决的方法,已作备忘。 1、现在创建游戏角色的时候,基本上都是支持角色名字随机的,以前此功能在客户端用代码实现,然后向服务器请求并验证,后来发现有时候连续几次都失败,所以改成在服务器实现。实现方法主要考虑使用mysql随机查询记录,在网上查了很多方案,然后用在了我们游戏中。 实现方案是,将所有随机名字都插入到一张表中,然后从中随机取一条当前角色表中没有出现过
关于cocos2dx中文转UTF8码的解决方案 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) cocos2dx支持中文显示,只要将中文字符转换成UTF-8字符集就可以正常显示,不过在实践上还是会出现很多问题会困扰开发者。 通常来说,目前的解决方案有以下几种: 1、把代码文件(.h/.cpp/.lua等)的文件编码格式改成UTF-8格式即可,这对于单机游戏来说是很好的解决方案。但是对于服务器传过来的
linux安装valgrind 最近服务器程序出了一个崩溃,确定是内存地址访问越界,但是不能定位在哪里,没办法只好用valgrind来跑一下,以前公司的服务器是上都默认安装了,突然发现云服务器上没有安装这个软件,所以记录一下如何安装。 1、下载最新版本的valgrind: http://www.valgrind.org/downloads/valgrind-3.9.0.tar.bz2 解压安装
linux下使用yum安装mysql 记录一下linux安装mysql的流程和出现问题的解决。 1、使用yum安装mysql 安装前可以使用mysql指令看是否已经安装mysql。 # yum install -y mysql-server 2、启动和关闭mysql服务 # service mysqld start ...
Linux下rz/sz安装及使用方法 新搞的云服务器用SecureCRT不支持上传和下载,没有找到rz命令。记录一下如何安装rz/sz命令的方法。 一、工具说明 在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件. 对于某些linux版本, rz/sz默认没有安装所以需要手工安装。 sz: 将选定的文件发送(send)到本地机器; ...
linux下搭建SVN服务器 最近搞了一台云服务器,尝试部署一些服务器相关的东西,作为开发用服务器,首先考虑搭建的是SVN服务器。记录一下搭建的过程,方便以后查看。 一、安装svn软件,有些云服务器会有安装svn服务器,有些没有。 # yum install -y subversion //在线安装svn # svn...
关于cocos2dx客户端程序的自动更新解决方案 随着手机游戏的不断发展,游戏包也越来越大,手机网络游戏已经超过100M了,对于玩家来说,如果每次更新都要重新下载,那简直是灾难。而且如果上IOS平台,每次重新发包都要审核,劳神费力。所以当前的主流手游都开始提供自动更新的功能,在不改动C++代码的前提下,使用lua或者js进行业务逻辑开发,然后自动更新脚本和资源,方便玩家也方便研发者。
关于cocos2dx程序的BUG调试解决方案 今天说一下手机游戏开发的调试问题吧。不得不说的是和PC平台游戏、软件开发相比,手机上开发游戏和软件要困难的多。原因是多方面的,比如说开发环境比较复杂,工具软件不够人性化等等。 cocos2dx的出现解决了一个很大的问题,因为他是跨平台的,相对来说windows的软件开发环境比较友好,对中国程序员来说更熟悉。这样可以在windows进行日常开发和调试,然后在发布到其它平台的时候进行少量
关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000) 最近一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本。Windows平台上表现很正常,没有出现什么问题。上周五准备发布一个安卓包,编译很轻松的就过了,没有花费多少时间,但是安装到手机后,发现运行就崩溃了。没办法只好用模拟机调试,再次吐槽Android的模拟器,真的太他妈慢了,不到万不得已我真的不想再去用它,google真的应该好好整一下了。好
cocos2dx实现功能强大的RichText控件 最近准备做一个聊天系统,开始准备使用cocos2dx的UIRichText控件来显示聊天内容,结果在使用的时候才发现,cocos2dx的RichText功能非常有限,完全不具备实现聊天的功能,只实现了加入文本、图像和自定义控件的功能,支持不同字体、颜色、字号。 我个人认为,一个RichText控件应该具备以下基本功能: 1、多样化的文本显示功能,包括字体、颜色、字号的设
关于cocos2dx手游lua文件加密的解决方案 很多使用cocos2dx+lua做游戏的同学,都会想到一个问题,我的游戏一旦发布,怎样才能保证的我脚本代码不被破解,不泄露代码。虽然这和开源、共享的原则不合,但是代码也是coder的劳动成果,理应得到保护。特别是商业游戏更是如此,不希望被别人破解掉源码并且进行修改。 今天的话题就是如何实现lua脚本文件的加密和解密。 我在网络上查过,都没有成熟的解决方案。然后我经过考虑
关于cocos2dx3.0 UITextField不能使用退格键删除字符的解决方案 近日开始将项目移植到cocos2dx 3.0版本,出现了一些问题,UI方面目前就发现UITextField控件不能响应退格键或者删除键,在Windows下面调试如此,我开始以为是平台支持不好,后来发布到Android后也是如此。 没办法只好跟踪了一下源码。Key操作主要的处理是在CCGLView类里面的GLView::onGLFWKeyCallback()。看了一下其他函数的处理
Cocos2d-x 3.0 编译出错 解决 error: expected ';' at end of member declaration 最近把项目移植到cocos2d-x 3.0,在整Android编译环境的时候,出现一大堆的编译出错,都是类似“error: expected ';' at end of member declaration”之类的,看了一些编译错误,都是cocos2d-x库里面的代码出错。 经过分析,怀疑可能是编译环境的问题,因为cocos2d-x使用了很多C++11的新特性,这有可能导致老的编译器
关于Excel到lua的转表工具 关于游戏项目的配置文件,有很多的方案,有些项目有专业的工具,有些则是直接使用json、xml、csv之类的配置文件,使用lua做配置文件的项目也不少。以上方案各有优势,从程序角度看,我认为lua是最容易解析的配置结构,其他几种相对要复杂一点,读写配置的代码量也比较多。 从我的经验来看,策划是很喜欢直接在Excel中配置游戏数据,我们项目使用lua做游戏逻辑开发,因此需要一个Excel
关于内存越界的问题 在上家公司的时候,服务器出了一个很郁闷的问题,做压力测试的时候,一旦人数上到1000多的时候,会不定时的出现崩溃现象,虽然崩溃的地方相同,但是和崩溃的起始点已经相差很远,gdb的断点基本上用处不大。 后来在网上查了许多资料,基本上定位是内存地址越界引起,只是不知道具体的越界地点。 当时我做的第一个措施是把所有的sprintf、memcpy,strcpy等相关容易出现内存
android 创建socket失败 最近在研究写一个棋牌客户端对接网狐的服务器,进展还比较顺利,客户端使用cocos2dx引擎,把我自己的网络库和网狐的数据封装机制对接工作已经做完,登陆、注册服务器,以及房间信息读取这些都已经完成,目前剩下具体的游戏客户端渲染工作尚未完成。 今天来测试一下Android下面能否正常运行,尝试了几次都不正常,后面跟踪过程十分痛苦,最后经过不停的打印Log定位到居然是不能创建socket
关于网狐棋牌6603源码的整理、编译和搭建 最近换工作,趁着有一段清闲时间,整理了一下网狐棋牌的源码,这份源码下载很久了,一直呆在硬盘。这次正好好好看看。 网狐的代码质量很高,流露出来的代码也比较完整,基本上都能编译通过。但是要真的搭建起来,还是需要额外花一些功夫的。 我下载的是6603版本,经过分析和研究,服务器这边主要是缺少KernelEngine的源码,客户端这边主要是缺少NetworkService的
编写简易斜45度地图编辑器 最近在研究cocos2dx的地图,最开始使用的是Tiled,这个编辑器做比较小的地图还是比较强大的,不过做大地图的时候,有一些功能不太方便并且有缺陷(包括刷图繁琐以及坐标体系过于复杂,导致寻路比较看起来很不平滑)。于是就酝酿着自己写一个斜45度的地图编辑器。 现在的自己老是不能集中注意力,经常出现思考着思考着就想睡觉的情况,所以导致这个工具写了2周,汗颜啊!使用MFC+GDI实现,目
mysql 大小写敏感的一个解决方案 今天,有同事告诉我,我们游戏登陆的时候,账号和密码没有区分大小写,后来又发现创建账号和角色也没有区分大小写。思考登陆流程之后,应该是Mysql没有区分大小写敏感的问题。 在网上查了一下资料,Mysql支持大小写敏感的解决方案。发现了几种方案。 第一、修改数据库的设置,让Mysql支持大小写敏感,这个方案太激进了,数据库数据太多,这样改保不准会出什么问题。 第二、
cocos2dx使用TiledMap创建斜45度地图场景 做游戏,场景是一个很重要的部分,如果缺少这一步,很难做出好的游戏,对于cocos2dx来说,有很多2D的地图编辑器可以用,效果都还可以,其中Tiled是支持的比较好的,它支持Tiled编辑出来的几种模式,比如正常、45度地图等。 如果要做小型的手机游戏,使用正常模式就足够了,cocosdx支持的很好,如果要具有3D感,那么可以使用45度正常地图。但是如果要做大场景,比如底图4000*4
关于 cocos2d-x win32 版本的 cpu 占用改良 转自:http://blog.csdn.net/crystal_ooo/article/details/8081873初学 c2dx,下载的 2.02 版本, 发现其 HelloWorld 演示项目,居然一直占据了 100% 的 CPU。猜测它有可能是在主循环里使用了 Sleep(0), 一搜,果然定位到具体代码,它位于 cocos2dx\platform\win32\CCAp
Android NDK 建立cocos2dx项目 最近开始学习cocos2dx开发手机游戏,搞定了开发环境后,准备开始使用cocos2dx来写demo了。 用惯了VS建立项目方式,发现用cocos2dx开发建立一个工程都是很难,勉强把cocos2dx的hello world跑起来了,但是如何新建项目却不会,在网上查了,自动构建项目还要去下载python,对于我这样的新手来说,实在是太困难了。而且我特别不喜欢依赖过多的项目。还有一种
Android NDK 构建开发环境并运行第一个NDK示例 最近开始研究Android开发,由于Android SDK基本不熟悉,Java一知半解,1年前大概玩了一下,写了一个扫雷,一个连连看,对Android SDK的API不熟悉,最终放弃了继续学习。因此这次研究选择NDK开发是我的首选,不过作为Android新人,建立开发环境以及运行第一个例程实在是费了我很多时间和脑细胞呀。看了很多过时的教程,最后好不容易跑起来了。下面开始介绍如何搭建开发环境。
Illegal mix of collations (gb2312_chinese_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT)错误的解决方案 今天,测试组的同事在群里突然说自己账号里面角色的名字乱码了,我猜想应该是和数据库有关,还没解决又有一位同事和我说不能创建角色了,我看了DBServer的日志发现了一条错误: 15:41:30| module :DBAENGINE ERROR>> databaseID = 1 database name = cogame, asynchronism queue ID = 0, data
从零开始编写网络游戏--基础篇(1) 最近2周比较忙,没有抽出时间来写Blog,不过在这段时间里面把整个思路理了一遍,梳理了一下大纲,以后会多抽时间来写Blog。 好了,言归正传,做任何事情都需要一定的基础,没有坚实的地基,是不可能建立雄伟的大厦的。所以我在整个系列博文的最前面,把一些最基础的东西先整理出来,为后面的系统做铺垫。 本篇的内容,会介绍几个内容:单例,dll动态加载以及一些跨平台的处理。
翻转队列的实现 在多线程中,经常会出现这样一种模式,A线程向队列L中push元素,B线程从队列L中pop元素,为了线程安全,必须在A push的时候加锁,然后在B pop的时候也加锁,这是一个典型的生产者消费者模式,这样显然会降低程序的效率。那么怎样来优化这种情景呢? 我们可以使用翻转队列(又称交换队列)来提交这个模型的效率,设计思想是使用2个队列L1,L2,A还是继续向L1中push元素,但是
VS2010/VS2012 设置全局头文件和库路径 在VS2010之前,设置项目的全局头文件和库路径是非常方便的,直接选择菜单Tools->Options->Projects and Solutions->VC++ Directories,然后在includes和libs后面添加指定的路径即可。 在VS2010发布之后,上面这个方法已经失效了,设置的方法改了,作为一个从VC6.0、VS2003、VS2005、VS2008一路走过来
ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist 公司的电脑一直是用的XP,为了用上VS2012,昨天重装了系统,win7好像比XP要快多了呀!最近一直在调压力测试,今天把服务器上的数据库备份还原到我本地,创建测试账号的时候,突然爆了这个错误:ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist;这个问题以前也遇到过,应该是账号授权的
从零开始编写网络游戏--卷首语 进入大四之后,进过短暂的软件开发简历之后,我毅然决定进入游戏开发行业,转眼间已经过去5年半了,在这个过程中,有过迷茫,有过放弃、有过疑惑,但是更多的是收获的喜悦。 从一个游戏开发实习生到目前的项目主管,在技术上成长了很多,在管理上才开始起步。但是在这5年的时间中,除了写过的代码,我鲜有文字记录留下来,这不是一个很好的习惯。在随后的一两年时间内,我争取把自己在游戏开发业内的一些经验
MySQL存储过程where条件执行失败的问题 前几天对服务器实体做了属性缓存机制,当时测试也没有出现大的问题,昨天有人跟我说,登陆的时候角色等级显示错误,我复测了一下,发现不只是等级错误,进入游戏后角色位置、金钱、经验等数据都错了。 跟踪了半小时,发现是数据库的数据出错了,玩家下线保存角色数据的时候,居然将数据库内所有角色的数据都改了,然后赶紧去看存储过程,但是看不出存储过程的错误。先贴一下存储过程的实现:CREATE
修改lua的文件加载器,自定义lua文件加载 Lua提供高级的require函数来加载运行库。1. require会搜索目录加载文件2. require会判断是否文件已经加载避免重复加载同一文件。require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模式列表,每一个模式指明一种由虚文件名(require的参数)转成实文件名的方法。更明确地说,每一个模式是一个包含可选的
关于“网游屏蔽字简繁混合”的解决方案 项目最近开始向版署申请版号,反馈的一项修改内容,是聊天屏蔽字库简繁混合未能屏蔽。比如“abc”和“ABC”都能屏蔽,但是类似"AbC”,“aBC”这些不能屏蔽(大小写代替简繁体)。 上网查了下资料,最后的解决方案是,把发送字符全部转为简体,然后在跟屏蔽字库的字符进行比较。 代码实现如下,接口是给lua使用:static int luaA_simplify(lua_St
Win7 应用程序无法正常启动(0xc000000d)的解决方法 自从重装了WIN7系统后,VS2010编译出来的项目程序就不能正常启动,启动的时候总是提示 “应用程序无法正常启动(0xc000000d)。请单击‘确定’关闭应用程序。” 。 在网上查找了很多解决方案,安装了很多补丁,还是不能解决我的问题。很郁闷,重装VS也不能解决问题。程序不能调试,让我抓狂的很,代码都写不下去了。 后来一个偶然的机会,发现项目所在的磁盘格式不是NTFS
游戏开发图书推荐--我读过的技术经典图书 很多新同学问我学游戏开发应该看些什么书,我在这里抛砖引玉,给一份推荐表,希望大家共同提高。程序语言:工欲善其事必先利其器,游戏开发属于软件开发,因此学几门编程语言是必要的。C++:虽然目前电脑性能越来越强大,C++凭借其优异的性能,是游戏开发首选。当然C++因为功能强大,也是最难学的语言之一。1、C++ Primer:经久不衰的C++经典图书,一本C++的百科全书,比较适合入门
S_OK,S_FALSE,E_FAIL 今天在调试一个ICOP的操作的时候,发现连接被动关闭的时候老是会在一处断言处失败,跟了很久终于发现了问题。在此记录一下:断言报错的代码如下:HRESULT CIoCPWorker::UnregIoTask(HRESULT hIokey){ ENTER_CALL("CIoCPWorker_UnregIoTask"); ASSERT_(SUCCEEDED(hIokey)); _
MFC若干小问题解决方案(1) 一、在浮动面板中动态创建CButton之后,按钮初始状态变灰的问题1、afx_msg void OnUpdateBtn(CCmdUI* pCmdUI);2、ON_UPDATE_COMMAND_UI(IDC_BROWSER, &ImageInfoView::OnUpdateBtn)3、void ImageInfoView::OnUpdateBtn(CCmdUI* pCmdUI)