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

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】【阅读:91】 

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

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

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

lisp的括号

     摘要:        lisp(当然也包括scheme)的元编程(也即是宏)威力非常强悍,相比之下,c++的元编程(template+预处理)简直就是弱爆了,被人家甩几条街都不止。 当然,template的类型推导很厉害,也能生成很多签名类似的class和function,比其他语言的泛型强多了,但是,template再厉害,也不能生成名字相似的...  阅读全文

2016-05-20 11:17 作者: 华夏之火【评论:0】【阅读:231】 

[Unity3D] 菱形地图拼接渲染

     摘要: 最近上面给的任务是copy率土之滨的地图场景,于是就尝试了下。  阅读全文

2016-05-16 20:09 作者: l1989【评论:2】【阅读:370】 

python AES PKCS7填充 加解密

     摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#coding: utf8import sysfrom Crypto.Cipher import AESfrom binascii i...  阅读全文

2016-05-16 14:18 作者: 长寿梦【评论:0】【阅读:254】 

迭代器的抽象

     摘要:       迭代器是好东西,也是猿猴工具箱里面的七种武器之一。代码中必然要操作一堆数据,因此就要有容器,有了容器,自然就不可缺少迭代器,没有迭代器,容器使用上就会非常不方便,并且还必须暴露其内部实现方式。比如,在可怜的C语言里面,操作数组容器就要通过整数索引来访问其元素,操作链表容器,就要通过while(node->next!=null)这样的方式来访...  阅读全文

2016-05-14 02:10 作者: 华夏之火【评论:2】【阅读:321】 

c++单元测试框架关键点记录成员函数地址

     摘要: 原则上,C++下最好的单元测试代码应该长成这样子,用起来才是最方便的Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->TEST_CLASS(className){    // 变量  ...  阅读全文

2016-05-11 18:01 作者: 华夏之火【评论:0】【阅读:404】 

消息发送杂谈

     摘要:       最近在看MFC的代码,虽然这破玩意,老朽已经很熟悉了得不能再熟悉了,但是这些破代码自由其独有的吸引力,不说别的,单单理解起来就非常容易,比之什么boost代码容易看多了,单步调试什么的,都非常方便,堆栈上一查看,层次调用一目了然。一次又一次地虐这些曾经虐过老朽的代码,也是人生快事一件。平心而论,mfc的代码还是写得挺不错的,中规中矩,再加上过去九...  阅读全文

2016-05-10 22:40 作者: 华夏之火【评论:2】【阅读:627】 

nginx开发第一个helloworld.

     摘要:   Nginx开发第三方模块实例 Ø 序言 Nginx是一个极具扩展性的服务器,这显著体现在对第三方模块的支持,开发者能够将自己开发的模块,按照nginx既有的规则,完美地融合进http框架中,以实现开发者定制功能的作用。 这篇文章主要用于结合如何开发一个简单的第三方模块,目标人群为想了解nginx开发第三方模块的同学,文章内容主要包括三个部分,如何将HTT...  阅读全文

2016-05-10 08:25 作者: jolley【评论:2】【阅读:383】 

Unity3D 动画切分处理

    最近游戏要开发二代,开始碰触角色动画那部分。由于动画部分之前不是我弄的,发现有很大的问题,角色模型和动画都是在一个fbx文件里面,并且新做的角色动画由于美术也不是同一个人,所以导出给我的动画也和原来的不同也是需要我来重新切分。
这样我认为有几个问题:
     1、文件过大,看了下我们那个fbx文件都10多m。
     2、后期维护麻烦,比如现在新加动画,就碰触到了原本的动画。
     3、美术为了一下修改预留了很多没用的帧在上面,这赤裸裸的浪费。
     4、更新调整也是问题
为此决定要把模型和动画分开,希通过一个没动作的fbx以及多个单独具体动作的fbx来处理,这样对于后期的维护,调整,以及更新都是很有好处。唯一的缺点就是对于美术麻烦点,美术认为太麻烦了,通过沟通,美术还是觉得要一个个动画分别导出很难处理,除非一开始就决定这样做(我是不太了解动作导出的)i╮(╯▽╰)╭。
      后来同事提醒可以把切好的动画Ctrl+D复制出来用,这确实是个方法,让美术导出一个没带动画的fbx这倒不难了吧,然后导出一个带动画的,我们把动画切好后,复制出来用,这样就ok了,就解决了导出问题!
      本来这样问题应该就解决了,但是一看就不想手动了,美术扔个txt文档制定动画对应的帧,一个角色用30多个动画,并且很多个没用的。我也不想自己手动去命名和切动画,必须用代码来做呀。
      如何通过代码来控制修改呢,这里用的是 通过继承AssetPostprocessor类, 在子类的OnPostprocessModel函数中处理。
      过程:
      1、通过一个与模型相同的名字txt指定动画名与帧的相关信息,首先搜索是否存在这样这样的txt,如果存在就读取txt里面的信息进行动画切分处理。
      2、如果fbx文件或动画配置有修改,只需选中fbx右键reImport就可以了。



      






    

2016-05-09 22:22 作者: 木华【评论:0】【阅读:305】 

Modify Branding of FreeCAD

     摘要: Modify Branding of FreeCAD eryar@163.com This article describes the Branding of FreeCAD. Branding means to start your own application based on FreeCAD. That can be only your own executable or splas...  阅读全文

2016-05-09 22:18 作者: eryar【评论:0】【阅读:286】 

挖坑,有空填坑


先挖坑,计划写出一系列文章,探讨将c++用成动态语言,或者函数式语言,以达到快速开发的目的,并且在需要优化的情况下,又能够方便快速的优化。现在事务太多,不知道何时能填坑

宏的图灵完备,用宏生成代码,特别是反射,模式匹配,实在必不可少,以至于宏可以与c++的继承、template、exception等基本组件并列的重要必不可少的补充手段

最小巧方便使用的单元测试框架,比gtest,cppunit要好用很多

自定义内存管理器,stl中的allocator是作为模板参数来传递,尝试以tls来传递allocator参数,当然,必须相应的各种容器都要重写,修改其缺省构造函数,拷贝复制移动拷贝,给元素分配内存释放内存等。对了,还有各种容器的反射信息。每种类型的template的容器都有一个typeinfo对象,具体的容器又有自己独一的typeinfo对象

完善完备的reflection,也就是,其他language能够做的反射的事情,这里只要愿意,也可以做到,非侵入式,可以给int,double等基本类型添加反射,给template类型的也添加反射信息,保证每种类型的反射对象是唯一的;

史上功能最完善的fmt的实现,非template,当然,外层还需要variadic来包装,以类型信息。类型安全,缓冲安全,高效,通用。通用的意思是,可以fmt到文件,日志,字符串,文本框控件中;类型安全的意思是,可以是所有的类型都可以fmt,只要该类型实现了相应的接口,但是,这种接口是非侵入式的,通过模板特化。高效的意思是合sprintf系列一样。调用的时候如下:
fmt(text, "%s %s %d ", 20, 17.5, 'a'); //故意写错%s的,在这里,%s为通用符号
fmt(file, "{%s-}",{1, 2, 3}); //输出 1-2-3到文件中,也即是能够fmt容器对象,横线-为容器对元素的分隔符

带有切片功能的数组,此数组类型还支持子类型数组到基类型数组的隐式转换,也即是需要用到基类型数组的参数,子类型数组都可以适应

haskell的map,filter,fold算法在C++下的方便灵活组合性的改造,使用时,就好像C#的linq那么爽快,当然,没有lambda的参数自动推导,毕竟还不如

stackless协程

c++下的monad

wpf的依赖属性在c++下的实现,gui框架的不可缺少的要素

tupple的功能扩展,通过宏,不需要写类型,用起来就好像函数式语言原生的那么爽的可能

好像haskell或者f#那样的模式匹配的结构体

C++下完完全全实现狗语言的那种鸭子类型的接口

面向对象的深入探讨,对于企鹅或者鸡是一种鸟,继承了鸟,但是没有继承了会飞的接口,在编译期就能报错,在运行期也不能对其找到会飞的接口

具体类,基本类型,没有虚函数,但是又能实现接口的方式,是实实在在的接口,里面有纯虚函数,也即是非侵入式的实现接口,上面宇宙最强悍的fmt就是用到这里的技术

vistor模式和抽象工厂的解耦合,或者又叫,multi dispatch

类型安全的消息,一条消息就代表了一种函数调用,不是win32的那种一点也不安全的类型系统,然后可以向任何类发送消息,动态添加消息的反应,消息队列,消息和消息参数的保存,actor,command模式,redo或undo的轻松实现,消息广播

空基类优化的运用,除了多继承(ATL)或者内嵌类(MFC),还有其他方式,那是以组合方式,通过少量的模板和少量的宏,通过搭配组装(多继承空基类)各种基类,就能完成一个com组件

消息系统的构建,gui框架的编写

........

博大精深的c++!只是想说,上面的一切,在C++下全部都是可行的,当然,宏,template,多继承必须大用特用,只是,奇妙的是,主类的内存布局却很干净,甚至可以没有虚函数
不知道有生之年能否填完坑,以之为励吧!
c++的同学们也充分发挥想象力吧,太多的奇技淫巧了。

2016-05-09 20:36 作者: 华夏之火【评论:8】【阅读:345】 

stl中string的一种改造

     摘要:       stl中最难看的组件(没有之一),无疑就是string这货了,一百多个成员函数,当然里面大多数是重载的,不必多想,一个class,如果拥有如此之多的函数,必然一定肯定是失败的,并且,即便是这么一大打函数,string的功能还是很不完备,要不然,就不会有boost里面的string算法。这真是尴尬,string作为最基本最基本的语言组件,又出自官方...  阅读全文

2016-05-09 19:28 作者: 华夏之火【评论:1】【阅读:424】 

Compile FreeCAD on Windows

     摘要: Compile FreeCAD on Windows eryar@163.com 1.Introduction FreeCAD是一个参数化的三维造型软件,主要用于任意大小的实际模型的设计。参数化的建模方式可以通过修改相关参数从而方便地修改你的设计。FreeCAD是开源软件,并提供了便利地自定义方式,也提供了脚本,从而根据自己的需要去扩展功能。FreeCAD是跨平台(Windows, Ma...  阅读全文

2016-05-08 11:07 作者: eryar【评论:0】【阅读:460】 

一种使用函数指针实现状态机的方法

     摘要: 结构定义 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 struct state_machine { 2     ...  阅读全文

2016-05-05 09:46 作者: 春秋十二月【评论:1】【阅读:795】 

Use DS and SS to access the same memory

     摘要: Use DS and SS to access the same memory eryar@163.com CPU要读写一个内存单元时,必须先要给出这个内存单元的地址,在8086PC中内存地址由段地址和偏移地址组成。8086CPU中有一个DS(Data Segment)寄存器,通常用来存放要访问数据的段地址。 8086CPU也提供相关的指令以栈的方式LIFO(Last In First ...  阅读全文

2016-05-02 23:14 作者: eryar【评论:0】【阅读:429】 

有效利用标准库提供的type_traits,让程序在编译时作出分支选择

     摘要: 让程序中的简单if-else在编译期间决定ex. 1 /* 2  * ===================================================================================== 3  * 4  * &nbs...  阅读全文

2016-04-28 17:50 作者: Hallelujah【评论:0】【阅读:587】 

程序给UI美术上的必修课

     摘要: 一个手游的图形技术关键性指标是: 内存占用, DrawCall和包大小.  这三个参数是训练有素的程序和UI美术都需要关注的重要问题 接下来我们来讲解下UI美术怎么对待这三个问题 内存占用 手机的内存不会明显区分内存和显存, 大部分都是共享访问的. 这里说的内存, 一般可以通过一些工具直接看到 , 比如说XCode等 图形上对内存影响最大的就是纹理, 而纹理上最关键的问题就是纹...  阅读全文

2016-04-28 13:55 作者: 战魂小筑【评论:1】【阅读:1025】 

Assembly Loop

     摘要: Assembly Loop eryar@163.com 我觉得循环指令是程序的核心,是计算机不厌其烦地执行机械、重复枯燥劳动的基础。本文来学习下汇编程序中的LOOP指令。Loop指令的格式是:loop 标号,CPU执行loop指令的时候,要进行两步操作: v (cx)=(cx)-1 v 判断cx中的值,不为零则转到标号处执行程序,如果为零则向下执行。 由上可知,cx中的值影响着l...  阅读全文

2016-04-27 22:01 作者: eryar【评论:0】【阅读:518】 

VC++视频采集的步骤

     摘要: VC6.0视频采集的步骤:1、插入摄像头,安装驱动  VCap2800  USB2.0 DRV(windows 7)或者Vcap2820 sdk,两者依次尝试 注意:驱动有一下几种,如果USB2.0 DRVB不成功!!可以换驱动VCap2820 sdk进行尝试!!!  2、G:\VC++视频采集资料\USB2800\Vcap2820 sdk\Vca...  阅读全文

2016-04-24 22:57 作者: cpsprogramer【评论:1】【阅读:617】 

Output Char to Screen

     摘要: Output Char to Screen eryar@163.com 1.Introduction 与CPU相连的各种硬件,如内存条RAM,显卡,网卡等,CPU在控制它们的时候,把它们都当作内存对待。把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。如8086CPU的内存地址空间的地址段分配如下: Figure 1. 8086CPU内...  阅读全文

2016-04-16 18:59 作者: eryar【评论:0】【阅读:703】 

游戏服务器框架设计

     摘要: 游戏服务器框架设计 Ø  序言 人们在认识事物的时候,一般都是先从大致的骨架开始,然后再到具体的细节,金字塔原理中用的比较多的就是自上而下的分析方法,这个方法放在放之四海而皆准。那么回到我们游戏服务器开发上面,也是如此。那么如何设计和选择服务器架构以及有啥需要注意的呢? 这是本文章要解决的问题。 文章主要目标人群是,对服务器框架设计感兴趣,有从事过游戏框架设计的同学。 ...  阅读全文

2016-04-16 17:33 作者: jolley【评论:0】【阅读:281】 

The First ASM Program

     摘要: The First ASM Program eryar@163.com 1.Introduction 以前都是在Debug程序中写一些指令来测试,现在可以开始编写完整的汇编语言程序,用编译和连接程序将汇编代码编译连接成可执行程序。对于从TC2.0学习C语言的人来说,编译连接汇编代码与C代码很相似,有点亲切感。都要经历编写源码,然后编译源码生成目标OBJ文件;再通过连接将OBJ连接成可执行...  阅读全文

2016-04-13 23:31 作者: eryar【评论:2】【阅读:678】 

CPU Segments

     摘要: CPU Segments eryar@163.com 1.Introduction 8086CPU在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。段地址在8086CPU的段寄存器中存放,8086CPU有4个段寄存器:CS,DS,SS,ES。 CS为Code Segment,代码段寄存器,结合指令指针寄存器IP(Instruction Pointer...  阅读全文

2016-04-12 23:49 作者: eryar【评论:0】【阅读:605】 

[cocos2dx笔记018]cocos2dx 2.2.6 lua版控件回调

     摘要: 本文地址:http://www.cppblog.com/zdhsoft/archive/2016/04/12/213238.htmlcocos2dx笔记汇总用cococstudio编辑的UI,都是带Touch事件的,这样,使得我们编写UI逻辑处理简单很多了,这个是基于lua实现,不需要改cocos2dx引擎.Code highlighting produced by Actipro CodeHig...  阅读全文

2016-04-12 09:47 作者: 冬瓜【评论:0】【阅读:981】 

CPU Instruction Pointer

     摘要: CPU Instruction Pointer eryar@163.com 1.Introduction CPU对存储器的读写通过总线Bus来完成,总线又分为地址总线(Address Bus)、数据总线(Data Bus)、控制总线(Control Bus)。地址总线AB决定了CPU的寻址能力,即可以访问的存储空间的大小。数据总线DB决定了CPU的一次操作中可以处理的数据的大小,16位C...  阅读全文

2016-04-10 23:56 作者: eryar【评论:1】【阅读:657】 

Windows7 Debug Test

     摘要: Windows7 Debug Test eryar@163.com 1.Introduction 在郁大师的影响下,很早之前买了本王爽老师的《汇编语言》,可惜一直闲置,今天终于得空,可以学习起来了。为了使学习效果更好,还是写点东西记录下来,一方面巩固下知识点,一方面起到一个监督作用。 毕竟不是计算机专业科班出身,这些计算机基础知识只有靠自学。意识到汇编的重要性是从大师可以反汇编和逆向...  阅读全文

2016-04-09 17:44 作者: eryar【评论:0】【阅读:763】 

[cocos2dx笔记017]cocos2dx 2.2.6 lua的类型转换

     摘要: 本文地址:http://www.cppblog.com/zdhsoft/archive/2016/04/08/213211.aspx因工作需要,转战cocos2dx 2.2.6的lua版本。对于lua倒是不难,很容易上手。安装了vs2012再配置上BabeLua插件(对于vs2015,vs2013有对应的版本),就可以断点调试了,应该算是我见过的最牛的lua调试环境,再加上vs,就可以哈哈了。在使...  阅读全文

2016-04-08 09:57 作者: 冬瓜【评论:0】【阅读:962】 

Windows内存小结

     摘要: 虚拟内存, 物理内存,工作集, 页文件, 堆栈,堆  阅读全文

2016-04-07 21:45 作者: Richard Wei【评论:1】【阅读:1059】 

从长度为N的数组里面随机取得M个数

     摘要: 实现这个有这三种办法:1)随机排序,按照顺序先后取出M个数字。 IntVec shuffle(IntVec& vec)133 {134 int size = vec.size();135 IntVec::iterator first = vec.begin();136 IntVec::iterator last = vec.end();137 for(IntVec::iterat...  阅读全文

2016-04-02 11:51 作者: jolley【评论:0】【阅读:218】 

技 术 改 变 世 界

网站分类

24小时内最热随笔

统计信息

聚合

Blog客户端API

推荐客户端

博客排行榜[前81人]