1. 运行下面的C++代码,得到的结果是什么? #include "stdafx.h" #include<iostream> using namespace std; class A { private: int m_value; public: A(int value) { m_value = value; } void Print1() { printf("hello world"); } void Print2() { printf("%…
前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置 Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理 Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知 Dynamic CRM 2013学习笔记(三十…
[Unity Shaders]学习笔记——SurfaceShader(十)镜面反射 如果你想从零开始学习Unity Shader,那么你可以看看本系列的文章入门,你只需要稍微有点编程的概念就可以. 水平有限,难免有谬误之处,望指出. Unity内置的高光函数 Unity内置了一种高光光照模型——BlinnPhone. 使用方法如下: Shader "Custom/BlinnPhong"{ Properties { _MainTex ("Base (RGB)", 2D…
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第二十二章:四元数(QUATERNIONS) 学习目标 回顾复数,以及复数相乘如何在平面上表达旋转: 理解四元数以及它的运算: 理解单位四元数如何表达3D旋转: 学习如何转换旋转变量的表达: 学习如何对单位四元数线性差值,并且理解它等价于几何上的3D角度差值: 熟悉DirectX Math库中的四元数类和操作. 1 回顾复数 四元数可以看做是一个复数,所以我们先要回顾…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 学习目标 理解为什么需要法线贴图: 学习法线贴图如何保存: 学习法线贴图如何创建: 学习法线贴图中的法向量的坐标系统是如何与物体空间的三角形的坐标系统关联的: 学习如何在顶点和像素着色器中实现法线贴图. 1 使用法线贴图的原因 找到一种方法在光滑的平面上,显示出更多的细节(比如粗糙的砖块). 如果使用曲面细分是可以增加实际的细节的,但是我们还是需要…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十八章:立方体贴图 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习什么是立方体贴图,并且如何在HLSL中对它们采样: 如何使用DX的纹理工具创建立方体贴图: 学习如何用立方体贴图来模仿反射: 学习如何使用立方体贴图对球体采样来模拟一个天空和远处的山. 1 立方体纹理映射 在D…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 学习如何实现硬件实例化: 熟悉包围体,学习如何创建和使用它们: 学习如何实现截头锥体剔除. 1 硬件实例化 给每个实例都复制一份顶点和索引是非常浪费的,所以我们只保存一份物体在局部坐标系下的数据,然后使用…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 学习目标 回顾视景坐标系变换的数学算法: 熟悉第一人称摄像机的功能: 实现第一人称摄像机: 理解如何动态索引一组纹理. 1 回顾视景坐标系变换 如果QW = (Qx, Qy, Qz, 1), uW = (ux,…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 曲面细分阶段包含渲染管线中的三个阶段,用以细分几何物体,它在顶点着色器和几何着色器之间.使用曲面细分的主要原因: 基于GPU的LOD: 物理和动画的优化,可以在低面模型上计算物理效果和动画,然后细分为高面模型用以渲染: 节…
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十二章:几何着色器(The Geometry Shader) 代码工程地址: https://github.com/jiabaodan/Direct12BookReadingNotes 假设我们没有使用曲面细分阶段,几何着色器阶段就是在顶点着色器和像素着色器之间的一个可选的阶段.几何着色器输入的是基元,输出的是一个基元列表:假如我们绘制的是三角形列表,那么几何着色器…
CRM里有二种方式实现字段change事件,一种是在form里,一种完全通过js来实现.本文介绍下二者的用途及区别. 1. Form里用法 这种方式估计其实也是添加一个js的function. 这种方式功能最强大,无论是前台还是后台只要这个字段有变化就会触发这里的事件. 2. 纯js Xrm.Page.getAttribute("new_actual_unit_price").addOnChange(function () { calculateExpense("new_ac…
前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现的. 那么,如果要在list (homepage)界面实现多条记录的克隆,这时就不方便加字段以触发插件了.这时我们可以用js调用web service的方式来实现.下面介绍详细的步骤:   1. List界面添加按钮 要注意不是form界面:   添加按钮: 跟普通添加按钮一样,注明function…
上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数可以多选或全选:动态地显示列,列不是固定的:根据某一字段的值来动态地显示整行字体的颜色. 下面介绍详细的方法: 一.动态参数.参数多选全选 动态参数: 首先定义一个Dataset: SELECT DISTINCT new_countryId, new_codename AS name FROM ne…
在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常我们想把一条记录放在一页,下一条记录另起一页,而不是紧连在上一条记录的后面:有时我们还会出现上传报表时报错:An error occurred while trying to add the report to Microsoft Dynamics CRM. Try adding the repor…
上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮>,这次接着介绍如何配置审批流的节点及节点关系.     一. 模板头: 二.流程节点:        一共有三种节点:开始节点,中间节点,结束节点: 1.  开始节点: 2. 中间节点: .3.  结束节点:       三.流程节点关系:   四.实体配置 1.添加二个字段:…
目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOptionItemSelected Click Listener 使用Intent 每个Activity都关联一个且是唯一一个menu对象,当对该menu进行创建,将触发onCreateOptionsMenu(). 创建Menu 我们通过下面简单的例子来阐述menu的各个属性. public class…
目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android"    android:id…
线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还共享: 1.进程指令 2.大多数数据 3.打开的文件(即描述符) 4.信号处理函数和信号处置 5.当前工作目录 6.用户ID和组ID 不过每个线程有各自的: 1.线程ID 2.寄存器集合,包括程序计数器和栈指针 3.栈(用于存放局部变量和返回地址) 4.errno 5.信号掩码 6.优先级 基本线程…
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 当手机接收到一条短信的时候, 系统会发出一条值为 android.provider.Telephony.SMS_RECEIVED 的广播, 这条广播里携带着与短信相关的所有数据.每个应用程序都可以在广播接收器里对它进行监听,收到广播时再从中解析出短信的内容即可.下面让我们一起来实践一下吧. 一.新建项目,构建布局文件: <LinearLayout xmlns:android="http://schem…
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 如果我们想要实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 ContentProvider 的方式来创建一个自己的内容提供器: 一.继承ContentProvider的六个方法: ContentProvider 类中有六个抽象方法,我们需要使用子类去继承它,并重写六个方法,我们先来认识这六个类.新建 MyProvider继承自 ContentProvide,代码如下所示: pub…
  1. 添加service:     2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = "BasicHttpBinding_IAuthService"; myBinding.Security.Mode = BasicHttpSecurityMode.None; myBinding.Security.Transport.ClientCredentialType = HttpClie…
我们有时要验证下页面上的一些逻辑,比如开始时间不能晚于结束时间,不对时不让保存.我们可以在相关的字段事件上处理,但这如果要判断的字段比较多时,就比较麻烦了. 这时候我们就可以利用Form的OnSave事件,下面介绍下具体的做法: 1. Form的OnSave事件 2. JS方法 function formSave(context) { if (!dateCheck("new_valid_on", "new_valid_to")) { alert("Vali…
我们知道通过界面设置字段的change事件,是否是必填,是否可见非常容易.但有时我们需要动态地根据某些条件来设置,这时有需要通过js来动态地控制了. 下面分别介绍如何用js来动态设置.   一.动态设置字段的change事件 // form on load event function onLoad() { init();   pageAttr.delivery_from.addOnChange(deliveryFromChange); pageAttr.type.addOnChange(typ…
审批过程中,经常要求自动发邮件:审批中要通知下一个审批人进行审批:审批完通知申请人已审批完:被拒绝后,要通知已批准的人和申请人.下面详细介绍如何实现一个自动发邮件的插件:   1. 根据审批状态来确定要通知哪个人或哪个角色 状态为2 - 审批中时,查找下一个审批人 /// <summary>/// 下一个审批人/// </summary>/// <returns></returns>private List<Guid> GetNextStepPe…
最近有个特殊的需求,客户想做二次审批,就是审批通过后,再走一次审批流程.最开始一想,这还不简单,审批通过后,直接把状态改成draft就完了,后来一试,发现一堆问题,比如第一次审批完后,界面是不允许修改的,直接改成draft就又可以修改了:再比如审批活动记录的查找以及死循环的问题等等.于是自己动手单独写了一个公用的再审批插件,下面介绍详细的实现步骤:   一.添加字段以控制再审批的次数 添加一个字段 new_approval_count, 再审批一次就把它加1.如果只要再审批一次,那么大于1就退出…
CRM 2013 里流程有4个类别:操作(action).业务流程(business process flow).对话(dialog)和工作流(workflow).它们都是从 setting –> Process 进入,然后点击New按钮来创建: 这篇主要介绍操作:什么是操作.什么时候使用操作.如何创建以及如何调用 一.什么是操作 操作是CRM 2013 新增加的一个功能,用来扩展系统的标准功能.业务人员可以用它来实现业务逻辑,然后开发人员可以在系统事件里(比如update,create)来使用…
业务流程(Business Process Flows)是CRM 2013 里一个新的流程,它提供了可视化的流程表现.业务人员创建有效.流线型的业务流程让最终用户知道当前在哪.下一步要做什么,用户可以在实体记录的顶部看到业务流程. 下图是Opportunity的一个业务流程:   一.实体上启用业务流程   启用后,二个字段 processid 和 stageid 会被创建.每个实体最多允许有10个业务流程.当然你也可以修改 Oranization.MaximumActiveBusinessPr…
我们将用对话来实现一个简单的满意度调查,下一个问题依赖于上一个问题.对话是同步的,不同于工作流既可以是同步也可以是异步的:对话可以跟用户互动:对话只能手动开始:对话只支持 .Net Framework 4.0.   一.创建对话 1. 打开 Settings > Process, 点击New 按钮 2. 输入Process Name,选择Dialog   3. 点击ok后,就可以看到对话的设计界面 输入参数是用于把参数从父对话传到子对话:变量用于存储计算的数据或字符串以便后面的页面使用.   4…
实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和子流程都是一个事务,不像异步工作流里,子流程是单独的一个事务.不能使用等待或并行等待条件步骤.如果执行成功,就看不到执行的log.实时工作流能被转到异步工作流,还能再转回实时工作流.下面详细介绍如何创建一个实时工作流.   一.创建实时工作流 1. 打开 Setting > Process, 点击N…