Gamemonkey编程---高级进阶3
这些东西是平时遇到的, 觉得有一定的价值, 所以记录下来, 以后遇到类似的问题可以查阅, 同时分享出来也能方便需要的人, 转载请注明来自RingOfTheC[ring.of.the.c@gmail.com]
继续翻译GameMonkey脚本语言的文章, 这些文章都是在GameDev网站上找到的. 在翻译的过程中, 更加深了我对GM的了解和兴趣, 它的协程机制确实比Lua的协程在原生支持方面争强了很多, so enjoy! 上次GM参考手册的翻译放在了一篇文章, 感觉显的太长了, 所以这次我决定将这些长篇翻译分成多篇文章, 这样阅读起来比较方便, 而且可以避免一次信息过大
原文地址: http://www.gamedev.net/reference/programming/features/gmScriptAdv/page2.asp
&nbs
http://www.cyqdata.cn/cnblogs/article-detail-289
.NET 4.0网络开发入门之旅——我在“网” 中央
.NET 4.0网络开发入门之旅-- 我在“网” 中央(上)注: 这是一个针对网络开发领域初学者的系列文章,可作为《.NET 4.0 面向对象编程漫谈 》一书的扩充阅读,写作过程中我假设读者可以对照阅读此书的相关章节,不再浪费笔墨重复介绍相关的内容。 对于其他类型的读者,除非您已经有相应的.NET 技术背景与一定的开发经验,否则,阅读中可能会遇到困难。 我希望这系列文章能让读者领略到网络开发的魅力! 另外,这些文章均为本人原创,请读者尊重作者的劳动,我允许大家出于知识共享的目的自由转载这些文章及相关示例,但未经本人许可,请不要用于商
http://www.cyqdata.cn/cnblogs/article-detail-288
C#基础之进程管理
今天 我们来讲一个很基础的东西--进程,我们知道一个Win32程序都会被分配到一个进程里面,进程之间是相互独立的个体,一个进程出现了问题停止工作不会影响其它的进程。那我们怎样用C#来获取当前系统中运行的进程呢?我们来看看下面这段代码
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> Process[] ps = Process.GetProcesses(); foreach (Process p in ps) { Console.WriteLine("{0}, {1}", p.ProcessName, p.Id); }
http://www.cyqdata.cn/cnblogs/article-detail-287
写在项目开工之前--一些心得
新的项目马上就要开始了,我一个人负责Android平台,这是第一次自己完全掌控一个软件的开发,心里有些忐忑,怕自己能力不够,做不好,但是没有办法,只好咬紧牙关迎头赶上。回想以前的项目经历,有些感悟,总结一下。
1. 在进行界面布局的时候,一定要考虑到横竖屏的切换,尽量做到后期不用适配很多的机器。
2. 对于Activity的生命周期的控制,一定要严谨,考虑周全,什么时候查询,什么时候移除监听器,activity的三种生命周期的切换,保存界面信息,恢复界面信息,都要在代码编写之前尽量考虑周全,切不可跟着bug走。
3. 经常整理代码,类中用不到的属性,方法,一定要删除,不要想着以后可能用到,99%的情况是以后绝对用不到,这样做可以避免以后代码整理的混乱
4. 工作台的编码和工程的编码统一使用utf-8,同时将家里的电脑上的工作台与之同步,避免乱码。
5. 要做好工作记录,公司小,没有开
http://www.cyqdata.cn/cnblogs/article-detail-286
canvas的魔法,X光效果
一 图片预览
HTML5给web开发带来很多好东西,可以说,它将开创新一代web开发。
其中canvas就是它带来的东西之一,canvas非常强大,可以做到很多东西,不过我觉得学习canvas几乎等于在学习一种独立的技术了。这里只是展示一个简单的canvas效果。如下图:
二 原理介绍
我在代码中通过ctx.getImageData(0,0,width,height);获取canvas里面的imagedata对象,而这个对象就是这个效果实现的关键。
我们可以通过imagedata.data来获取一个数组,这个数组的length是canvas像素数量的四倍,其中每四个项代表一个像素。在每四个项里,他们一次代表rgba,rgb就很明显了,而a就代表透明,当a为255的时候完全不透明,当a为0的时候就是透明的。而这次的效果无需用到透明,所以没对这个进行操作。
最后我通过ctx.putImage
http://www.cyqdata.cn/cnblogs/article-detail-284
mongodb分片集群(sharding with replica set)配置
一共有4台机器,各自挂接一个存储,希望实现:
尽量节约存储
高可用性
存储大量数据
配置方案:
每一台机器做一个分片的主数据库
每一台机器做一个分片的后备数据库
每一台机器做一个分片的仲裁服务
两个两个一组交叉作对方的后备
有三台机器开配置服务
有一台机器开路由服务(生产环境可以在每一台Windows App服务器上开路由服务,App服务器集群做负载均衡)
这样的话,任何一台服务器完全离线(或者交叉的两台服务器离线),都能保证整个系统正常运行。不过在服务器和服务器起来之后需要:
在升级成为主数据库的那个后备数据库上运行rs.StepDown(100)来让它让出主数据库的位置,因为每一个分片的活动数据库都应该由独立服务器担当,以获得最好的性能
配置服务和后备数据库起来之后不需要做任何调整
192.168.129.142
mkdir -p /usr/data/shar
http://www.cyqdata.cn/cnblogs/article-detail-283
自创用于节点操作的API,颠覆原生操作HTML DOM节点的API --- 敏捷开发
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。第一次看到敏捷开发的定义,我就被敏捷开发迷住了。通俗来说,敏捷开发可以让我们用过的代码可以再次重用,因为是再次重用,所以相对安全,再次调试也没有第一次那么费心,省时省力。不断重用代码的过程中把存在的bug不断的修复,也因为不断的去重用, 这个模板变得起越来越独立,适用的情况越来越广范,最后在安全方面达到铜墙铁壁,在开发方面达到随心所欲,在维护方面达到从容面对。敏捷开发的确是利害,但如何练就这种深奥的武功呢?就我自身的情况靠人传授武功是不可能了,因为公司就我一个做开发的,苦思幂想之后,决定从开源的优秀框架入手,把它一行一行代码看懂,然后再为我所用。因为是一个人开发,前台和后台都得包办,哪从那一面做起呢? 之前有过一二个月的开发经验,觉得前台的
http://www.cyqdata.cn/cnblogs/article-detail-281
GSM蜂窝基站定位基本原理浅析
位置服务已经成为越来越热的一门技术,也将成为以后所有移动设备(智能手机、掌上电脑等)的标配。随着人们对BLS(Based Location Serices,基于位置的服务)需求的飞速增长,无线定位技术也越来越得到重视。GSM蜂窝基站定位,以其定位速度快、成本低(不需要移动终端上添加额外的硬件)、耗电少、室内可用等优势,作为一种轻量级的定位方法,也越来越常用。本文简单介绍一下各种基于GSM蜂窝基站的定位方法及基本原理,给开发人员作为参考。我将尽量尝试用开发人员熟悉的方式来描述问题。 预备知识:GSM蜂窝网络基础结构 我们知道,GSM网络的基础结构是由一系列的蜂窝基站构成的,这些蜂窝基站把整个通信区域划分成如图所示的一个个蜂窝小区(当然实际上,一个基站往往不并不只是对应一个小区,但是这个与我们讨论的主题关系不大,我们不做深究)。这些小区小则几十米,大则几千米。如下图所示,我们用移动设备在G
http://www.cyqdata.cn/cnblogs/article-detail-280
PowerShell 2.0在远程主机上运行命令和脚本
在前面的文章里关于持久远程线程的讨论中,曾经介绍了如何在本地主机上进入远程线程并执行命令。如果没有显式的终止线程的情况下,用户能在本地计算机上执行远程主机的命令,而PowerShell的提示符能够直接反映当前所使用线程的状况。在本章将会介绍PowerShell的内置特性,这些特性能够使用户在远程主机上运行命令和脚本。 通过使用交互式远程管理可以克服使用Invoke-Command的一些缺点,然而这种方法也是有其局限性的。在交互式远程管理中,用户需要显式的进入或退出远程线程,这就意味着,同时只能连接到一个远程主机上,而且只能访问对应远程主机上的cmdlet和模块。如果需要让不同的cmdlet在不同的主机上都可以执行,这就做不到了。 比如,有两台主机分别各自安装了Exchange 2010和SharePoint 2010,如果用户需要访问两台主机上各自可用的cmdlet,两台主机和本机
http://www.cyqdata.cn/cnblogs/article-detail-279
告别aspx,高性能快捷开发 — JQuery Smart UI 快捷开发实例应用(一)入门【后篇】
上篇把服务端Bll层的内容完成了,下面就开始UI层的开发,打造简洁而“清爽”的功能页面.
第四步,配置Fncode
与BLL后台方法对应,在UI层进行FnCode的配置,位置在:Config/FnCode.xml中。
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> <Module name="UIDemo"> <BR name="BRNews"> <Fn no="fn_ns01"></Fn><!--查询--> <Fn no="fn_ns02"></Fn><!--保
http://www.cyqdata.cn/cnblogs/article-detail-278
Spring.Net实现AOP以及AOP相关概念(学习笔记四)
Spring的重要应用是在AOP(Aspect- Oriented programming面向方面编程)编程方面。Spring.Net是如何进行AOP的呢?下面是我在学习Spring实现AOP的例子以及我个人的一些浅显的理解,若有不妥之处,还望大侠们指出。
本节重点分如下两部分:
1、Spring实现AOP。
2、AOP相关概念。
先介绍如何实现AOP,然后再通过使用过程中的用法,谈谈我自己对AOP概念的理解。
首先还是介绍一下开发环境以及软件版本:
VS版本:VS2008 SP1、Spring版本:1.3.0。
在我使用Spring.Net实现AOP的例子中有两个部分:1、使用编程方式实现。2、使用配置方式实现。实际在应用中,应用配置实现AOP还是相对更好点。实现AOP除了之前用到的程序集以外,还需使用程序集Spring.AOP。
1、Spring实现AO
http://www.cyqdata.cn/cnblogs/article-detail-277
【web开发】Javascript点点小技巧
1、特性检测而非浏览器检测
因为某某特性某浏览器不支持,我们经常的做法是在代码中直接先做浏览器判断如:
if(Broswer.isFirfox){
//do something
}
其实这样做是不科学的,因为很可以其它浏览器上可以支持你要用的特性,所以,比较好的做法为是直接做特性判断。
如:
if(window.localStorage){
//使用本地存储功能
}
2、使用方括号来访问属性或方法
这一点到不是强制的,只不过如果使用方括号来访问可以享受一些动态特性带来的好处,而且命名方面有少了许多限制。
如:
for(var i=0;i<9;i++){
obj["method"+i]();
}
3、表单的那些事
这里主要提两个很有用的属性
http://www.cyqdata.cn/cnblogs/article-detail-276
SharePoint安装后修改计算机名称的问题
安装了SharepointFoundation2010后,完成了配置并开发部署了webpart,由于之前计算机名称一直没有改过,特别长,就顺手修改了一下机器名称,这下问题来了,Sharepoint居然打不开了,一直提示数据库连接错误,很纳闷为什么修改一个机器名会影响到数据库的访问呢?到网上查了一下才找到解决办法,原来是修改机器名的方法不对。 如果想在安装了Sharepoint之后修改计算机名称,一下三步可以解决: (一)在SharePoint3.0管理中心中修改“替代访问映射”: 进入SharePoint管理中心 找到“备用访问映射”链接 修改URL (二):用stsadm命令中的renameserver选项: cmd进入命令行,进入目录:C:\Program Files(x64)\Comm
http://www.cyqdata.cn/cnblogs/article-detail-275
Linux设备模型 (1)
随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动程序的代码量占有了相当大的比重。下图是我在网络上搜索到的一幅Linux内核代码量的统计图,对应的内核版本是2.6.29。
我们可以很明显的看到,在Linux内核中驱动程序的比例已经非常高了。
Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在物理上,外设之间是有一种层次关系的,比如把一个U盘插到笔记本上,实际上这个U盘是接在一个USB Hub上,USB Hub又是接在USB 2.0 Host Controller (EHCI)上,最终EHCI又是一个挂在PCI Bus上的设备。这里的一个层次关系是:PCI->EHCI->USB Hub->
http://www.cyqdata.cn/cnblogs/article-detail-261
PowerShell 2.0 远程管理之启用和执行命令
PowerShell 2.0的远程管理功能很强大,为了方便读者学习这里首先介绍学习环境的设置,便于读者在理解原理的同时有相对形象的体验。在本文中,将会分别介绍了如何启用和禁用powershell的远程管理,以及如何在工作组和混合域环境下配置计算机。以及如何使用Invoke-Command cmdlet用于在远程主机上执行命令,创建持久线程,在多个命令间同一线程传递的变量和参数。用户还可以在执行较费时的命令时以后台任务的形式实现,并在执行完毕后使用命令回调执行结果。 1 启用和禁用远程管理 PowerShell 2.0中能通过在PowerShell提示符下执行下列的cmdlet启用远程管理 PS C:\> Enable-PSRemoting 该cmdlet会向用户询问几个问题如下图1所示 当执行该cmdlet时执行了以下操作,其中包括: 1. 启动或重新启动
http://www.cyqdata.cn/cnblogs/article-detail-260
30天敏捷结果(20):好的问题可以获得好的结果
“There are no right answers to wrong questions.”–Ursula K. Le Guin
错误的问题是得不到正确的结果的
你的结果: 学会如何问关键的问题来帮助你立即改善你的结果
在30天敏捷结果:开篇中说到接下来我们将进行敏捷结果练习,前一篇学习了19:你在为谁做事?,今天我们要进行Getting Result练习的第20天:好的问题可以获得好的结果(Day 20 — Ask Better Questions, Get Better Results)
问问题是一个需要自己不断发生的事情,你问的越好对你来说可以获得更多。通过改善你问自己的问题,你可以改善你生活中不同热点区域的生活质量。
为什么要问问题
问对问题可以帮助我们平衡、聚焦,做出
http://www.cyqdata.cn/cnblogs/article-detail-259
一个.net客户端通讯框架的设计(二)---准备FastBuffer和BOConverter
在网络编程中,我们会频繁用到两个东西,一个是buffer。一个是bit-order。把数据填充到buffer中,然后通过buffer读写我们所需要的基本数据,还好.NET为我们提供了BitConverter这个非常好用的util,方便我们编写自己的Buffer和字节序转换器。 IBuffer 通常Buffer会有如下几个概念;position,limit,capacity,flip,mark,reset,free position:即将读/写的位置 limit:有效读/写的极限位置 capacity:buffer的最大长度 flip:limit设为置position,position设为0 mark:记录当前的position,对应reset操作 reset:将position设置为之前mark的位置 free:将缓冲标识为空闲,可在入池前调用。 比
http://www.cyqdata.cn/cnblogs/article-detail-258
对不能用using的成对操作,快速扩展IDisposable的方法
日常操作中有很多需要打开/关闭 加锁/解锁的成对操作
有时候一些操作原生支持 IDisposableMonitor 可以用Lock(){} 但是ReadWriteLock 就难了。 还有WCF Channel等)。这种情况就要用 try/catch/finally,很是丑
封装成IDisposable可能很烦,因为多一个对象要多好多文档。
虽然AOP可能解决一些问题, 但是又没办法精确定位 scrope. 还是 IDisposable +using最爽
所以写了一个缺省实现。
/// <summary>
/// 销毁帮手,生成可以支持using的自定义IDisposable实例
/// </summary>
public str
http://www.cyqdata.cn/cnblogs/article-detail-257
设计模式系列-适配器模式
一、上篇回顾
通过上篇的简单讲解,我们知道了,组合模式意图是通过整体与局部之间的关系,通过树形结构的形式进行组织复杂对象,屏蔽对象内部的细节,对
外展现统一的方式来操作对象,是我们处理更复杂对象的一个手段和方式。本文以查询控件为例,说明了,查询控件内部的组成元素,及如何操作内部的组
成元素,包括添加元素,删除和处理相应事件的Handler,当然组合模式的作用远比这些强大,后面我们肯定会在一些实例代码中运用到组合模式的。组合
模式如果在条件允许的情况下,我们尽量使用组合模式来处理复杂对象,远比通过继承出来的对象来的有效。
组合模式-强调的是如何组织整体和局部之间的结构,将整体和局部之间的关系,通过树形这样的结构来组织这种
http://www.cyqdata.cn/cnblogs/article-detail-255
WPF企业内训全程实录(下)
摘要
WPF企业内训全程实录由于文章比较长,所以一共拆分成了三篇,上篇WPF企业内训全程实录(上)主要讲了基础,中篇WPF企业内训全程实录(中)主要讲解开发模式、团队协作及应用框架,起着承上启下的作用,主要讲解开发模式、团队协作及应用框架。这篇作为该实录的下篇——终结篇,起着总结的作用,主要讲解其他技术的引用、WPF项目及性能优化、部署与更新等议题。
其实如果大家仔细看目录,可以发现我安排的顺序是首先讲解最基本的概念和基础内容、然后过渡到开发模式及框架、最后结合其他技术和项目实际运用,这也是学习并应用一门技术最好的流程。上篇实际上主要有两个侧重点:一则就是理清脉络——历史渊源、概念引入及基本阐述;二则是讲解WPFBasic——主要细究WPF的每个知识点,基本涵盖了WPF的方方面面;如果大家感兴趣,可以下载代码并
http://www.cyqdata.cn/cnblogs/article-detail-254