首页原创精华区最新随笔(rss)

一种拦截Linux动态库API的方法及装置

     摘要: 描述    拦截Linux动态库API的常规方法,是基于动态符号链接覆盖技术实现的,基本步骤是    1. 重命名要拦截的目标动态库。    2. 创建新的同名动态库,定义要拦截的同名API,在API内部调用原动态库对应的API。这里的同名是指与重命名前动态库前的名称相同。    显而易见,如果...  阅读全文

2016-08-25 11:10 作者: 春秋十二月【评论:0】【阅读:175】 

一种统计云查询黑文件的方法及系统

     摘要: 描述    云查杀平台以nginx作为反向代理服务器,作为安全终端与云查询服务的桥梁。当安全终端需要查询黑文件时,HTTP请求及其响应都会经过nginx,为了获取并统计一天24小时查询的黑文件数量,就得先截获经过nginx的HTTP响应,再做数据分析。截获HTTP数据流有多种方法,为了简单高效,这里使用了挂接HTTP过滤模块的方法,另外为了不影响nginx本身的IO...  阅读全文

2016-08-25 11:10 作者: 春秋十二月【评论:0】【阅读:134】 

一种根据dentry获取绝对路径名的实现方法

     摘要:    本方法适用于linux 2.6.x内核。    1. 先获取dentry所属文件系统对应的挂载点,基本原理是遍历文件系统vfsmount树,找到与dentry有相同超级块的vfsmount,实现如下 Code highlighting produced by Actipro CodeHighlighter (...  阅读全文

2016-08-24 19:22 作者: 春秋十二月【评论:0】【阅读:162】 

RvmTranslator5.0 - Translate RVM to AutoCAD DXF

RvmTranslator5.0 - Translate RVM to AutoCAD DXF

eryar@163.com

RvmTranslator5.0 is released!

This version support to translate RVM to AutoCAD DXF file.

Figure 1. PDMS model in AutoCAD

Download RvmTranslator5.0:

http://yun.baidu.com/pcloud/album/file?album_id=3634993082542187183&uk=3808749571&fsid=757282589616665

2016-08-22 23:26 作者: eryar【评论:0】【阅读:120】 

OpenCASCADE BRep Projection

     摘要: OpenCASCADE BRep Projection eryar@163.com 一网友发邮件问我下图所示的效果如何在OpenCASCADE中实现,我的想法是先构造出螺旋线,再将螺旋线投影到面上。 为了验证我的想法,结合原来螺旋线的造型算法,来测试下这种效果的实现。依然采用Tcl脚本在Draw Test Harness中试验。个人觉得高效使用OpenCASCADE的方法应该也是先用Tcl脚本来...  阅读全文

2016-08-16 23:11 作者: eryar【评论:0】【阅读:187】 

RvmTranslator 4.3 Change Log

 

1. Reduce the STEP file size to improve the performance for STEP translation;

2.Fix the dish lose in STEP file;

 

Download RvmTranslator4.3:

http://yun.baidu.com/pcloud/album/file?album_id=3634993082542187183&uk=3808749571&fsid=94214986762268

2016-08-13 09:58 作者: eryar【评论:0】【阅读:185】 

Golang的简单反射性能测试

     摘要: 测试用例 我们对Golang的结构体变量赋值, 以及单参数函数调用进行反射和native操作的测试 package main import ( "reflect" "testing") type data struct { Hp int} const AssignTimes = 100000000 func TestNativeA...  阅读全文

2016-08-12 15:26 作者: 战魂小筑【评论:0】【阅读:386】 

Unity3D粒子系统屏幕外不更新不渲染问题

这是一个Unity3D元老级bug, 表现就是:  角色在屏幕边缘放特效,  离开屏幕持续一段时间后再回到屏幕后, 发现特效重新播放. 显然这是错误的效果

解决方法:

在ParticleSystem组件上勾选SubEmitter, 不要问为什么, 做就好

相关官方链接

http://answers.unity3d.com/questions/218369/shuriken-particle-system-not-rendering-particles-w.html

 

天煞的, 4.X程序无法访问粒子系统的参数, 所以只能辛苦美术兄弟们了

2016-08-01 15:23 作者: 战魂小筑【评论:0】【阅读:592】 

C++ 应用程序性能优化

     摘要: 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方程,以及非线性优化的一些算法,如BFGS,FRPR,PSO等等用于多元函数的极值求解,所以这些数值算法的性能直接影响系统的性能。软件的性能优化是计算机软件开发过程中需要一直关注的重要因素,因此有必要学习下C++应用程序性能优化的方法。  阅读全文

2016-07-31 13:44 作者: eryar【评论:4】【阅读:870】 

mysql库表的导出 导入

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--># -*- coding: utf-8 -*-# http://blog.csdn.net/zcyhappy1314/article/details/82...  阅读全文

2016-07-27 10:19 作者: 长寿梦【评论:0】【阅读:580】 

leetcode 239. Sliding Window Maximum 无队列解法

     摘要: Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each ...  阅读全文

2016-07-24 14:54 作者: FireEmissary【评论:0】【阅读:303】 

一种拦截Linux原始套接字IO的方法

     摘要: 描述   原始套接字具有广泛的用途,特别是用于自定义协议(标准协议TCP、UDP和ICMP等外)的数据收发。在Linux下拦截套接字IO的一般方法是拦截对应的套接字系统调用,对于发送为sendmsg和sendto,对于接收为recvmsg和recvfrom。这种方法虽然也能拦截原始套接字IO,但要先判断套接字的类型,如果为SOCK_RAW(原始套接字类型),那么进行拦...  阅读全文

2016-07-14 10:27 作者: 春秋十二月【评论:3】【阅读:597】 

一种动态跟踪TCP连接与进程相关性的方法

     摘要: 描述    TCP连接跟踪是网络流控和防火墙中的一项重要的基础技术,当运用于主机时,连接必与进程相关联,要么是主动发出的,要么是被动接受的,当后代进程被动态创建时,由于文件描述符的继承,一个连接就会被这个进程树中的所有进程共享;当一个进程发出或接受多个连接时,就拥有了多个连接。本方法可用于网络安全产品中,监控TCP连接及所属进程,能准确并动态地知道一个连接被哪些进程...  阅读全文

2016-07-13 11:24 作者: 春秋十二月【评论:1】【阅读:485】 

一种P2P代理中TCP连接调度的方法

     摘要: 描述    在P2P应用系统中,当需要与处于不同私网的对方可靠通信时,先尝试TCP打洞穿透,若穿透失败,再通过处于公网上的代理服务器(下文简称proxy)转发与对方通信,如下图所示      终端A先连接并发消息msg1到proxy(连接为c1);proxy再发消息msg2给P2P服务器,P2P服务器收到消息后...  阅读全文

2016-07-12 16:59 作者: 春秋十二月【评论:0】【阅读:426】 

在cocos2dx 3.11.1,3.11使用cocos 3.10的解决办法及注意事项

     摘要: 首先吐曹一下,baidu,就是什么都找不到.虽然被医院事件整改了,但是搜索结果还是一如既往的2.后来没办法,只有想办法访问香港的google,一下子就找到解决问题了.因为ipv6的问题,看看到cocos3.11发布了,就想试用一下,结果没有对应的cocostduio可以用,触控脑子进水了,把cocostudio停止开发了,只搞cocos creator,也就是cocostudio的版本到3.10就...  阅读全文

2016-07-08 09:49 作者: 冬瓜【评论:0】【阅读:970】 

游戏热更新杂谈

热更新的内容可以是美术资源, 可以是代码, 但相对来说, 美术资源的更新不会受到约束, 代码实际上是重灾区, 本文介绍的主要是代码热更新

热更新对于开发者来说是一件麻烦事, 特别对于看重效率,便捷性和结构的程序员来说, 热更新就是运营人员的不懂技术的表现
然而, 对于上线才是刚刚开始的网络游戏, 特别是手游来说. 热更新是极为重要的基础功能 为什么要热更新 客户端

适应上线需求

对于手游客户端来说, 受到苹果审核的约束, 一次审核提交需要10~20天不等的等待时间, 而这段时间, 开发进度依然会推进很多.

一旦手游上线, 第一个版本在玩家疯狂行为下, 出点问题是必然的, 所以”上线更”就成了家常便饭. 如果你要说, 必须大包, 无法热更, 那么10~20

多天后, 游戏估计就没啥人了, 更别说渠道, 发行投入巨大资金进行推广之下让玩家迎来的一堆bug的版本以及所谓程序员的傲慢和清高.

热调试, 热开发, 热发布

除了线上问题之外, 由于Unity3D为了适应64位应用需求, 将C#编译出的IL代码利用il2cpp第三方库编译成为c++. 效率提升了倒是好,

但工程编译和发布时间变得相当感人, 没个1~2个小时完全搞不定. 即便加装ssd, 为了修改一个bug, 也不知道要等多少根烟的时间…

只要核心功能不变化的情况下, 完全可以让热更新成为开发期间的好工具, lua代码修改后, 马上可以在手机上看效果, 没有编译, 发布的时间损耗, 其实反而提升了开发效率 服务器

对于服务器来说, 常见游戏类型的玩家一般在半夜的在线人数会急速下降. 但是对于比较热门的MMO, 以沟通为基础的游戏, 半夜也会有很多人在线

因此传统的停服更新对于玩家的热情秒杀很大的. 想想看,屁股先锋公测停15天各位是什么感受? 所以为了玩家体验, 同时保证服务器稳定的前提下

修复一些轻微bug, 用热更新再合适不过了. 所以老服务器程序员, 千万不能以服务器稳定为借口而忽略了玩家体验.

技术是用来解决问题的, 不是用来装X的 怎么热更新

以下是Unity3D的几种热更新方式 基于C#, 使用动态加载Assembly反射更新代码

这种方式在安卓上完全可行, 对现有架构无需大的修改, 一样使用C#和Unity3D的方式进行开发

但在iOS上受到限制, 因此对于全平台首发的游戏, 或者双平台都要上的游戏, 已经慢慢的不使用这种方法进行热更新了 基于Lua, 将Lua代码视为资源, 动态加载并运行

云风团队早期研究出的UniLua是基于C#编写的Lua虚拟机来运行, 而且只支持字节码解释, 因此无法做动态功能, 效率奇低

后期, ulua的出现, 彻底将Lua作为比较正统的更新方式存在. ulua基于Tolua库进行封装, 添加了一些便捷封装, 代码打包和基本的框架

ToLua本身是一个基于C版Lua上扩充的库, 以静态链接库方式与Unity3D代码链接. 因此, 可以说ToLua是跑在C层上, 速度不亚于C++和Lua的组合

基于Lua的代码更新方式, 无论跨任何平台都可以以同一套代码和工作流进行, 因此避免很多麻烦, 成为现在主流的开发方式 游戏逻辑全都用Lua写么?

做过网页和手机App的童鞋都发现, js, 一个bug超多, 设计奇怪的语言居然成为主流界面开发语言, 为啥?

动态特性适合制作ui

另外一个反例就是: 使用C++开发界面, 例如Qt, MFC之类, 虽然设计严谨, 但是最终挡不住各种奇葩的修改需求

因此, 界面非常推荐使用动态语言来开发, 游戏界就是用Lua

而游戏核心, 根据各自游戏类型来定, 总的一点, 效率瓶颈点, Update之类的, 尽量使用C#或者C++来实现 写在最后

当前中国大环境下的玩家和各种氪金理由与纯的不能再纯的游戏人的基本愿望是冲突的

然而国外游戏的各种设计和机制, 暴雪战网更新不及时, 版本不对没提示, 这些基本错误在中国的网游都不会出现的

技术上无法赶英超美的我们, 在体验上已经输出了我们的价值观, 老外们都在学

对于程序员来说, 只是多贴近玩家, 多了解外面的世界而已

2016-07-06 11:03 作者: 战魂小筑【评论:6】【阅读:1032】 

RvmTranslator4.1 in PDMS

RvmTranslator4.1 in PDMS

eryar@163.com

In order to export PDMS model to other system more convenient, I wrapped the RvmTranslator in PDMS by PML. Then you can export PDMS model to STEP, IGES, STL, 3D PDF. Etc. Directly. The RvmTranslator form as following:

Figure 1. RvmTranslator Form in PDMS

The RvmTranslator form usage is simple:

1. Enter the output file name;

2. Select the export file format, default is STEP;

3. Add model to the list by Add CE button;

4. Remove the model from the list;

5. Use Translate button to perform the translate operation;

 

How to install RvmTranslator for PDMS:

1.Download RvmTranslator4.1:

http://yun.baidu.com/pcloud/album/file?album_id=3634993082542187183&uk=3808749571&fsid=992478348244136

2.Extract files to PMLLIB folder;

3.Enter following command in the PDMS CommandWindow: PML REHASH ALL

4.Show the RvmTranslator Form in PDMS: show !!RvmTranslator

5.Enjoy!

2016-06-26 00:39 作者: eryar【评论:9】【阅读:516】 

解决在Unity中封装Debug.Log后代码行定位问题

众所周知,代码中使用Debug.Log*输出的日志在Unity的ConsoleWindow中可以双击定位到对应的代码行,然而将Debug.Log*封装到自己的日志类中后,定位就失去意义了。原因很简单,Unity只会处理StackFrame的栈顶信息,它们保存在LogEntry中,栈顶的方法对应的脚本文件会以其instanceID来保存,其他StackTrace信息则以字符串结果存储,最终在双击ConsoleWindow中的ListView条目时通过指定了OnOpenAssetAttribute的callback来打开代码编辑器。其中,OnOpenAssetAttribute参数用于处理存在多个Callback时的优先级问题。

通过阅读ConsoleWindow代码,想到了一个解决思路:自己实现OnOpenAsset,通过获取ConsoleWindow中的ListView得到当前选中的row,然后在LogEntries中取得该行对应的LogEntry,其中的condition字段保存了StackTrace字符串,最后过滤掉包装的日志类后拿到脚本文件名和代码行,用OpenFileAtLineExternal直接打开。在实现过程中发现,完全没有必要拿到LogEntry,因为ConsoleWindow中的m_ActiveText就是StackTrace字符串,直接处理就好了。

在想到该方案之前,看过两个解决方法:1)将日志类编译成DLL;2)输出日志时自己记录StackFrame,通过一系列手段在OnOpenAsset查找LogEntry中对应的StackFrame。不过这两种方案都不能满足个人的完美主义情节,方案1失去了预编译宏的灵活,一旦日志系统改动需要重编DLL和处理依赖,方案2低效且过于复杂。

最后摘出代码供参考,实现环境为:Unity 4.7.5f1, UnityVS+Visual Studio 2015 Pro。

2016-06-21 10:53 作者: Heath【评论:3】【阅读:400】 

python实现的LAN文件传输服务

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--># -*- coding: utf-8 -*-#Give wisdom to the machine,By Cha...  阅读全文

2016-06-19 11:20 作者: 长寿梦【评论:1】【阅读:944】 

苹果ios应用的网络ipv6适配攻略

     摘要: 苹果要求在2016年6月1日后新的app必须支持ipv6网络, 技术发展靠苹果果然没错, 但开发者还是要开始忙起来了这里介绍下Unity3D的适配的一些经验 基本注意点 ios ipv6适配无需修改服务器, 也就是说, 如果你的服务器依然是ipv4的也是可以使用的 苹果的适配方案是将ipv4的地址转换为ipv6, 到了路由层再转回去继续利用ipv4网络传输 测试网络环境搭建 转载请注明:http...  阅读全文

2016-06-16 14:18 作者: 战魂小筑【评论:0】【阅读:1134】 

破解某城市的验证

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--># -*- coding: utf-8 -*-#zhangtao 2016/06/14#QQ 406878851from PIL&nb...  阅读全文

2016-06-14 20:35 作者: 长寿梦【评论:1】【阅读:970】 

针对libzip库,封装了两个接口,compressString 压缩字符串

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*简单说明:针对libzip库,封装了两个接口,compressString 压缩字符串 ,uncompressString 解压字符串zhangtao /201...  阅读全文

2016-06-13 18:52 作者: 长寿梦【评论:0】【阅读:1039】 

Make Helix Shape in occQt

Make Helix Shape in occQt

PCurve is a powerful modeling method, to make helix shapes in occQt to help you understand pcurve better, then you can also can model some intereting shape based on pcurve.

OpenCASCADE does not provide helix curve directly, but you can build a helix curve by the pcurve of a surface(curve on surface). When you understand the pcurve of a surface, you can make a helix curve easily.

 

References:

https://github.com/eryar/occQt/issues/11

http://www.cppblog.com/eryar/archive/2015/07/09/211212.html

http://www.cppblog.com/eryar/archive/2016/03/05/212931.html

2016-06-05 13:44 作者: eryar【评论:2】【阅读:509】 

理解和使用zlib库 - 我的个人救赎

     摘要: 很多年以前我曾经写过一篇文章(http://blog.csdn.net/querw/article/details/1452041)简单介绍 zlib 的使用方法,老实说当时自己都不是很明白 zlib 是怎么回事,现在想起来那个时候年轻嘛,胆子大,脸皮厚...有时候想到自己这样一篇半吊子的东西在网络上传播,心不自安,希望用一篇新的文章救赎少不更事的无知.  阅读全文

2016-06-02 19:04 作者: 阙荣文【评论:0】【阅读:965】 

PDMS Automatic Pipe Routing

     摘要: PDMS Automatic Pipe Routing eryar@163.com Abstract. AVEVA PDMS Pipe Router is a rule-based tool which enables you to route pipe network automatically and to position piping components. Pipe Router ...  阅读全文

2016-05-31 22:59 作者: eryar【评论:0】【阅读:535】 

由招聘要求看趋势 - VC++程序员路在何方

     摘要: 随手翻了一些招聘要求,说说感受.  阅读全文

2016-05-31 13:36 作者: 阙荣文【评论:7】【阅读:1663】 

ulua结合protoc-gen-lua的几个坑

     摘要: 最近整合ulua到项目里进行热更新, protoc-gen-lua这古老的东西重新让我继续发博客, 因为坑 生成好的协议报错找不到protobuf 在每个protoc-gen-lua生成的lua文件里, 都有一行local protobuf = require "protobuf" .csharpcode, .csharpcode pre { font-size: small; col...  阅读全文

2016-05-31 11:26 作者: 战魂小筑【评论:0】【阅读:596】 

BMP和JPEG - 附截屏保存为JPG源码

     摘要: BMP 和 JPEG作者: 阙荣文时间: 2016.5.291. 什么是 BMPBMP 格式是最简单,最直观的位图数据格式.它的思想非常朴素:用若干个位来保存一个像素的信息,由若干个像素组成一个像素流来表达一张图片.通常我们会用1位(可以保存2种颜色,0 表示一种颜色,1表示另一种,不一定是黑白,也可以是蓝绿,总之是2种),4位 - 16种颜色,8位 - 256种颜色,16位 - 65535种颜色...  阅读全文

2016-05-29 21:38 作者: 阙荣文【评论:1】【阅读:640】 

OpenCASCADE Expression Interpreter by Flex & Bison

     摘要: OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide data structure of any expression, relation or function used in mathematics. Flex and Bison are too...  阅读全文

2016-05-27 23:08 作者: eryar【评论:0】【阅读:447】 

[Unity3D] RichText 图标扩展的简单实现

     摘要: 目前测试过可用的两种方式,方式一利用布局控件,可以实现也比较好理解,唯一不足最后发现内容多性能跟不上。方式二比较取巧,但是各方面应该比较符合项目需求。  阅读全文

2016-05-22 18:27 作者: l1989【评论:0】【阅读:681】 

技 术 改 变 世 界

网站分类

统计信息

聚合

Blog客户端API

推荐客户端

博客排行榜[前79人]