摘要:
WPF打印票据或者是打印普通纸张区别不大,只是说打印票据要把需要打的内容摆放好位置,搞定缩放比例,就可以放入票据直接打印了。 阅读全文
摘要:
昨天写了一个ko+easyui的同样的实现,感觉写的太乱,用起来十分麻烦,于是今天照着edatagrid,写了一个etreegrid,这样再用ko绑定就方便多了。使用很简单,$(tableId).etreegrid({idField:''parentIdField:'',treeField:'',s... 阅读全文
摘要:
XmlSerializer我想现在用的人可能不多了,大家都在用Json。我现在所在的公司依然在用,所以发现了这个坑。当然这个坑存在很久了只是没用过所以才发现。事情是这样的,测试那边说系统偶尔会报找不到 xxxx.XmlSerizlizers 的引用,File Not Found的异常,几率不高。但是我百般寻找发现项目了根本就没有这个dll,为什么会找这个dll呢?后来经过各种查找原因,发现是项目引用了公司的一个框架,这个框架记录了此异常,他是如何记录的呢? internal static void OnFirstChanceException(object sender, FirstCh... 阅读全文
摘要:
AOP(Aspect oriented programming)面向切面编程。说成切面不容易理解,代码哪里有切面?又不是三维物体。概念不管,我们从其思想来理解这个名词吧。 AOP的主要思想是把相同、相似的并且零散的逻辑抽离出来,统一处理;这样不仅维护起来方便,也让代码更加关注自己本身,清晰明了。比如我们常见的权限检查、日志记录、异常处理等都是散乱在系统各个地方,比如发表一篇文章的代码:publicvoidPost(Articlearticle){if(currentUserisnull)thrownewAuthException("您还没有登录");elseArticleM 阅读全文
摘要:
观察者模式又叫发布订阅模式,有订阅者和发布者;发布者可以包含了多个订阅者订阅的事件,一旦发布者执行,会执行所有的订阅者订阅的事件。我觉得这么讲还是很迷糊。其实就是说“发布者”是一段上层代码,他知道他所需要执行的过程中会发生一些事情,而这些事情具体逻辑自己又不知道,就算知道所有的逻辑,要用条件分支判断执行,这总归的是不好的,所以才有了这个模式。这是一个非常棒的模式。他使得发布者的代码保持不变。而订阅者的事件可以散步在他们自己的代码中。我们实际应用中最常见的就是页面中的按钮点击事件。当我们双击webform中的按钮后会自动生成一个btn_OnClick的方法,然后在里面编写一些逻辑,同时也生成了b 阅读全文
摘要:
抽象的意思是,抽取不同事物的共性而成的一种新事物。为什么用事物一词?因为抽象未必抽的是物,也可能是事。抽象是编程的重要思想之一,其主要目的是为了减少代码重复,使其更易维护。抽象就是让变化的事物得到一致的处理方式。抽象是如何应用的?我们怎么去抽象?当我们面临有共同特性的事物时,需要对它们统一处理,那么就需要抽象。而这种共性的事物在实际项目中会经常碰到。而且在我们使用的各种框架中应用广泛。比如说,用户打开不同的网页,都需要去展现页面,那么所有的网页都有一个共性就是展现,而不同的网页又具有不同的行为;所以在处理网页展现时,只需要处理网页们的抽象的东西——展现。这个“处理网页展现”的代码一般在框架内部 阅读全文
摘要:
上篇文章主要介绍了BI的一些概念,主要是原始库、数据仓库数据库、维度表、事实表和相关的导入工作。数据导入之后,就是分析、统计和挖掘,这是这些底层的工作全部是由微软的AnalysisService帮我们做好了,我们学会如何使用,便能做到“看起来很厉害的样子”了。打开SQLSERVERDataTools,就可以新建Analysis项目。如图1:主要分为DataSources,DataSourceViews,Cubes,Dimensions,MiningStructures等。DataSources主要是数据库源,也就是我使用了哪些数据库作为仓库数据库。我连接的事DemoDB。DataSourceV 阅读全文
摘要:
SQLSERVERBI入门或许有很多同学和我一样,只是听说过BI这个词汇,但如果工作不涉及到数据统计分析或数据挖掘,很难接触这方面的知识。我以前一直向往能在这方面有所历练,恰巧最近公司需要做数据统计和分析的工作,这份工作我主动提出来做,荣幸之至。写这篇文章也是对我最近工作的总结。下载并安装我工作选用的SqlServer2008R2,由于在自己电脑上写博客,所以我这里尝试使用2012版本,顺便也能看看哪里不同。下载地址是http://www.microsoft.com/en-us/download/details.aspx?id=29066如果你的系统是中文的则选择中文版。安装时选择功能模块如下 阅读全文
摘要:
上节中讲了如何寻路,在和朋友们讨论时都反应有时走的不太对,绕远路了,其实代码主要是大方向的判断 比如目标在右上,那应该是先右还是先上 这个并没有做处理,如果这个做了处理,效果会更好一些,但也难免会走弯路。 贪心就是这样,不是最优,接近最优。也希望其他的同学有意见的可以讨论下。我这也只是个人想法。 既然可以走动了,那就可以判断是否可以消除同样颜色的行、列或斜线了。只要>=5个同样的色球,就清除他们,并且可以继续移动。如果不可以清除,那就再增加3个球。 clearLine: function (x1, y1, color, isClick) { ... 阅读全文
摘要:
上节主要做了动画的实现,感觉还是比较有意思的。游戏的性能好不好,重绘应该比较重要吧,菜鸟瞎想了下 呵呵。本节就要做对泡泡的操作,上节后面提到了点击泡泡后泡泡要做出闪动响应,那我们我们如何获得被点击了哪个泡泡呢?其实Canvas也是html的一个元素而已,所以我们可以给Canvas加click事件。来查看click时鼠标的坐标,这样就等得出点击了map的哪个位置。我们给game增加一个click方法,当Canvas点击时调用此方法。要实现的效果是: 当Canvas时被点击时有几种可能:1、没点到map 那就不作响应 2、点到了泡泡,那该泡泡要做出响应(闪)3、如果之前有点击过其他的泡泡,则取消之 阅读全文
摘要:
上一节中,我们留下了一个flyin的方法没有介绍,这里想单独写一篇html5的动画实现。在第二节中我们实现了画一个泡泡,并且成功的擦除了泡泡,但当时也说了别把棋盘的线给擦掉了,所以做了偏移量。所以说html5 Canvas还是低级, 没有图层的概念,擦掉再想补回来,怎么补? 答案就是重绘。 没错,整个Canvas重绘,这样就能不用担心补哪里了。虽然带来了性能的损失,但绝对减少的编码难度。而且计算机的能力也不差这点损失。那么重绘的话,我们在Canvas是上所有的需要绘制的对象都应该有draw方法。这是必须的。另外,所有的元素都有个上下的概念,所以要先绘制下面的,再绘制上面的。 而这个上下就得靠 阅读全文
摘要:
在看了几篇Canvas相关的文章后,发现前两节的代码实现还是有问题,因为知道的少,所以只能在自己已知的知识上做实现。不过还好,这是一个发现的过程,也是一个纠错和完善的过程。我第一次尝试一边学习一遍写博客,我想这也有助我的学习,可以把知识掌握的牢固些,起码忘的慢一些吧:)。 前两节学习了几个基本绘制的方法,lineTo moveTo和arc,也了解坐标的情况,但写的比较傻,只是单纯的实现。 比如棋盘的起始坐标如果有偏移量,我们还要计算他的具体开始坐标和结束坐标,实际上Canvas有现有的方法提供偏移的功能。 他叫 translate,另外还有缩放scale、旋转rotate,他们都可以用t... 阅读全文
摘要:
好吧,新的一天来了,我才开始动笔,真够懒得:)昨天说了今天我们要画一个球,在canvas上。好吧,这是游戏的入门的第一步,只是昨天没写完,所以。。。<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title></head><body> <canvas id="canvas" height="400" width="600" st 阅读全文
摘要:
HTML5推出也有很长一段时间了,一直没有学习过,闲来无事学习开发个游戏吧。 用javascript+canvas编写一个 五彩连珠的游戏。Canvas 画布 标签<canvas id="canvas" ></canvas>,很简单和普通的tag没区别。 关键在于js对他的操作。先看个示例代码:<canvas id="canvas" height="100" width="100"></canvas><script> var canvas = docume 阅读全文
摘要:
Trie树,又称字符查找树、前缀树,主要用于字符匹配(详见http://en.wikipedia.org/wiki/Trie)。适合做关键词查找,比如查找文章中的关键字然后给他们加链接。 当然对脏词的过滤应用也是样,只是把替换连接的工作换成了替换字符。当前的代码还只是进行简单的替换,并没有做一些字符的处理,比如“昨天见到你妈,逼我要买房”,这本身不是脏词,因为有逗号,所以程序里要增加字符的范围判断。程序中的skip就是用来过滤脏词的简单变体,比如“找*小*姐”,默认是最多跳过3个字符,这个可以随便调整了。总之是一个Trie的锻炼吧。 public class TrieTree { ... 阅读全文