摘要: Prism的Loging是一个相对独立的功能模块,基于最基本的Log功能,可以有Trace、Console等方式进行日志的输出。当然除了以上所提的Log功能,还可以本地化存储、网络存储日志等复杂的功能。将这些复杂功能封装,暴露一部分功能或者简单的方式供外部使用,Prism使用Facade模式来实现日志功能。关于Facade模式的讲解,Link:http://www.cnblogs.com/cjfwu/archive/2013/03/23/2977541.html上文详细描述了Facade模式的定义、实现、架构图。Prism中默认实现了Trace,Console 1 public cla... 阅读全文
posted @ 2013-04-20 22:23 老鱼_678 阅读(728) 评论(0) 推荐(0) 编辑
摘要: Prism是一款轻量级的WPF框架,用于建立复合的WPF应用程序,尽可能的将Ui和逻辑分开。在对这款框架的理解过程也是一个对设计模式的理解过程。Prism Link:http://compositewpf.codeplex.com/ 图1如图1,是Prism的架构图,从中我们可以看到使用了多种设计模式,本文对Shell和Region中使用的Adapter模式进行扩展。Adapter模式的讲解:Link:http://www.cnblogs.com/cjfwu/archive/2013/03/23/2977878.html上文详细描述了Adapter模式的定义、... 阅读全文
posted @ 2013-04-20 21:32 老鱼_678 阅读(1510) 评论(0) 推荐(1) 编辑
摘要: 上文发布后 Link:http://www.cnblogs.com/tmywu/archive/2013/04/13/3017888.html#2657529,引起了对Node.js内部实现Event loop驱动方式的研究,除了异步I/O操作,本文对同步I/O操作的几种形式进行讲解:阻塞IO非阻塞IOIO复用信号驱动IO异步IO1.阻塞IO 图1从图1我们看到一个最简单的IO操作的流程,从通知内核准备数据阶段到数据从内核Copy到用户空间两个过程都是阻塞的。2.非阻塞IO 图2在应用进程在内核数据准备阶段不断接受轮询... 阅读全文
posted @ 2013-04-16 11:22 老鱼_678 阅读(1402) 评论(1) 推荐(0) 编辑
摘要: 看到很多同事写了关于Node.js的Blog.也就跟着学习了一下。作为一个初级入门者,学习后将我的理解总结如下:Node 是一个命令行工具。Node 可以使JS的代码在服务端运行。编写的Js 可以在V8中执行。Node 提供了一组API 访问网络和文件系统。1.Node只是是一个工具,提供Js在服务端执行,如同Java,Ruby,PHP,不要想用Node去解决所有的事情。2.Node并行运行,可以同时做几个任务(Task),显然因为Node是并行执行多个任务显然他是多线程的。这个后面我们去学习下Node的Source,看看他是如何实现这个并行运行的机制的。For example,如图1,2:  阅读全文
posted @ 2013-04-13 23:18 老鱼_678 阅读(1461) 评论(5) 推荐(0) 编辑
摘要: 接上节,上节总结http的一些原理,内容比较死板。这节我来总结一些常用的请求方法,配合代码可能会比较实用一些。 1.什么是http的请求方法 link: http://wenku.baidu.com/view/a8293a6c7e21af45b307a877.html http://baike.baidu.com/view/1628025.htm?fromId=9472#4 book: 《HTTP.The.Definitive.Guide》David.Gourley 我就不展开了,大家自行学习 2.请求方法汇总GETPOSTPUTDELETEHEADOPTION... 阅读全文
posted @ 2013-04-07 23:24 老鱼_678 阅读(1878) 评论(2) 推荐(0) 编辑
摘要: 一、协议OSI层次应用层:HTTP安全层: TSL or SSL传输层:TCP网络层:Ip数据传输层:链路接口物理层:硬件二、Http 版本: 1.1三、Web结构组件:代理服务器网关隧道:SSLAngent代理:爬虫四、Http事务延时的原因DNS解析中域名转Ip的耗时TCP建立连接的耗时处理C和S的发起和接收请求报文的耗时S接受C返回响应的耗时C:Client S:Server五、Http性能TCP握手耗时:通过两个分组建立连接,SYN(40~60B)/SYN+ACK。304TCP延时确认:缓冲区概念TCP慢启动:拥塞控制特性Nagle算法:通过设置栈的TCP_NODELAY,禁用Nagl 阅读全文
posted @ 2013-04-03 15:10 老鱼_678 阅读(372) 评论(2) 推荐(0) 编辑
摘要: 下了几个版本的Node.js msi,都出现了rolling back action的问题。Google一下,见如下链接: http://cnodejs.org/topic/51428aa3069911196d65935c 基本明了问题大概出在哪里。自己手动操作一番,配置成功,如图1: 图1 这里留爪写个配置步骤,供大家参考: Step1: 下载node.exe,npm.zip node.exe link:http://nodejs.org/download/ np... 阅读全文
posted @ 2013-04-01 21:05 老鱼_678 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 既然要学C++,首先需要选学习的环境。在某高人的指点下开始了Linux/g++/c++的路程~ 撇开Linux,先从g++说起。在编辑器中写完伪代码,让他从一个文件变成在屏显上的输出需要一个编译的过程,这个过程就交给G++这个编译器去做了。这个过程分为4个阶段:1、预处理;2、编译;3、汇编;4、链接; 先来一段HelloWorld,如图1: 图1 g++ 编译: -c *.cpp 将文件编译为*.o obj文件 -o *.o 将obj文件 编译为输出文件 见图2: ... 阅读全文
posted @ 2013-03-29 17:34 老鱼_678 阅读(281) 评论(2) 推荐(0) 编辑
摘要: 费了九牛二虎之力,终于把Cocos2d在Andriod上跑通了。在安装期间碰到了各种各样的坑,这里我把这些坑总结一下。 通过Cocos2dx官方资料知道要在Andriod下搭建环境需要四样前置条件:cygwinndkcocos2dxandroid-sdk-tools 上述前置条件各自的用途请自行google。这里只描述搭建环境中所遇到的坑。 1.cygwin 安装cygwin 坑1-1.通过一番搜索,包括小白的Blog,装起来那叫一个慢啊~经常到一半中断,总之下了2天没下完,换镜像,下ISO什么法子都用了,还是安装失败阿。经过lz不懈的努力找个一个国内的镜像^-^,见图1-1: ... 阅读全文
posted @ 2013-03-25 21:51 老鱼_678 阅读(360) 评论(2) 推荐(0) 编辑
摘要: 1.Why use cocos2d?多平台支持,有多少?请看List:AndroidiOSWindows Phone 8Windows 8Windows 7Mac OS XLinuxBlackBerryBada 怎么样,包含全部的主流设备。列表中没写Phone7.但是cocos2d针对Phone7有个基于XNA的版本,C#的。喜欢快速开发的可以用C#去体验下。 由于是C++编写,这样开发环境可以是Win+VS,以后要迁移到Ios和Andriod相当方便。在Andriod下可以用adt+ndk-r7,工具可以是Eclispe。2.Getcocos2d https://github.com/... 阅读全文
posted @ 2013-03-18 16:42 老鱼_678 阅读(628) 评论(1) 推荐(0) 编辑
摘要: C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式:1.使用Win Api控制2.使用C++ dll控制Win Api控制: 使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本。winmm.dll Xp环境下可用,user32.dll Vista及以上版本。C++ dll控制: CoreAudioApi 是C++ 第三方封装了音量控制,网上下载DLL后再项目中引用即可使用。CoreAudioApiVista及以上版本支持。下面给出代码1.winmm控制方式,涉及Xp系统波形声音的左右声道,高位为左声道,低位为右声道:winmm 1 [D.. 阅读全文
posted @ 2013-03-18 11:00 老鱼_678 阅读(12257) 评论(0) 推荐(0) 编辑
摘要: 由于项目中要部署的App有很多,每次发布一个版本后都有一堆垃圾文件,部署在众多的终端机上不注意的话十分容易搞错。记得以前在VS中是可以设置下不生成vhost和pdb文件的,就顺手GOOGLE了下。再看下VS2012里配置的地方基本没动过。1.在Application的Configuration里选择Debug选项卡,去掉Visual Studio Hosting Process选项。2.Build选项卡-Advanced-Ouput中Debug Information选择None。ReBuild Solution,OK.清清爽爽。 阅读全文
posted @ 2012-11-03 18:02 老鱼_678 阅读(581) 评论(0) 推荐(1) 编辑
摘要: 在实际项目的UI设计中,经常会使用到TabControl,比如标签式浏览器、选项卡设置等等。根据不同的需求,需要TabControl展示不同的样式,这里我们来学习下TabControl。来看下TabControl 属性TabStripPlacement 控制TabItem Header的方向,如图:我们来看下TabControl的继承关系:TabControl-Seletor-ItemControl这样就很清晰了,TabControl和ListBox一样继承自Seletor,这样我们就可以通过ControlTemplate和DataTemplate来编写TabControl和TabItem的显 阅读全文
posted @ 2012-10-30 10:37 老鱼_678 阅读(3835) 评论(0) 推荐(1) 编辑
摘要: 在项目中使用ListBox时,经常会将ItemContainerStyle和ItemTemplate的作用搞混,ItemTemplate可以搞定一切好似ItemContainerStyle有点多余。我们再来看下ItemContainerStyle和ItemTemplate。 ItemContainerStyle用于给每个Item的容器定义样式,其类型是Style。包含了操作Item的Triggers。 ItemTemplate是每个Item的现实样式,其类型是DataTemplate。 在实际应用中,我们往往需要根据用户操作不断的改变ListBox中Items的显示样式。这里 总结一... 阅读全文
posted @ 2012-10-16 11:43 老鱼_678 阅读(9208) 评论(0) 推荐(0) 编辑
摘要: 1.AlignMode(读写)语法:AlignModeAsLong说明:对齐方式(与SAlign属性联动)。当控件的长宽比例与影片不一致且WMode不为ExactFit时,影片(没有被放大的)在控件中显示的位置可用该属性调整。该属性值由标志位组成。如图,将该属性值(二进制)中相应的位标记为1就设置了相应的对齐方向。属性值与相应的对齐方式(后面括号里是二进制数)1:左对齐(0001)2:右对齐(0010)4:顶对齐(0100)8:底对齐(1000)也可以组合各种对齐方式,同时将两个或以上的位标记为1,也就是将这四个基本值组合相加。比如同时左对齐和顶对齐,属性值则设为5(0101)。例子:设置影片 阅读全文
posted @ 2012-09-19 15:58 老鱼_678 阅读(4572) 评论(0) 推荐(1) 编辑
摘要: 实现步骤:1.实现整个鼠标框选的几个事件(down、move、up),当鼠标点下记录鼠标框选的起点,鼠标抬起结束操作。2.以鼠标框选过程中获取的鼠标坐标为基点计算框选的矩形的4点坐标,4点坐标以顺时针方向布点。3.通过Shape.Path类实现在类上画出此矩形。代码如下:namespace HostDemo {public class HostCanvas : Canvas {public HostCanvas() {InitializeComponent();}private void InitializeComponent() {this.Loaded += OnLoad;this.Mou 阅读全文
posted @ 2012-08-13 00:49 老鱼_678 阅读(5707) 评论(2) 推荐(0) 编辑
摘要: 在项目中实际设计中需要改变RichTextBox的UI呈现,今天在Coding的过程中发现在RichTextBox的ControlTemplate中使用ContentPresenter并不能将RichTextBox的Content呈现出来。 查看MSDN,参见http://msdn.microsoft.com/en-us/library/ff457769(v=vs.95).aspx 原来要将Content的呈现只需将PART_ContentHost写入Template即可。 代码如下: <Grid> <RichTextBox> <RichTextBox.Docum 阅读全文
posted @ 2012-08-06 20:35 老鱼_678 阅读(1946) 评论(0) 推荐(0) 编辑
摘要: 接上篇, 我们来看一看Elementname,Source,RelativeSource 三种绑定的方式 1.ElementName顾名思义就是根据Ui元素的Name来进行绑定: 例子: <Window x:Name="MainWindow"> <Grid> <Button Background=”{Binding ElementName=MainWindow, Path=Background}”/> </Grid> </Window> 效果等同于 <Window> <Grid> <B 阅读全文
posted @ 2012-08-06 10:58 老鱼_678 阅读(9874) 评论(1) 推荐(1) 编辑
摘要: 在WPF应用的开发过程中Binding是一个非常重要的部分。在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的。这里将实际中碰到过的问题做下汇总记录和理解。1.source ={binding} 和source = {binding RelativeSource={RelativeSource self},Path=DataContext}效果相同理解:{binding} 不设定明确的绑定的source,这样binding就去从本控件类为开始根据可视树的层次结构自下而上查找不为空的Datacontext属性的值。 {binding RelativeSource={R 阅读全文
posted @ 2012-08-01 15:41 老鱼_678 阅读(10009) 评论(0) 推荐(3) 编辑
摘要: Win8 的正式版本马上就要发布了,为了抢先体验下把系统和开发环境更新了,目前使用情况还行,开机速度比原先的确快了很多。网上说很多人非常不习惯Win8的操作,实际使用下来大概1天时间就适应了,感觉相当不错。在系统更新中碰到了一些问题,利用这里记录一下。问题1:安装完Office2013,vs2012无法正常开启。 当时以为是部分组件的问题,重装了好几次问题依然存在。 解决办法:Ms Download Center上下载补丁kb2703187v2,安装后此问题解决。 问题2:通过首次使用Win8建立的账户没有管理员权限造成很多软件无法安装,所以需要开启管理员账户。 解决办法:右键计算机--管.. 阅读全文
posted @ 2012-07-30 15:28 老鱼_678 阅读(8073) 评论(1) 推荐(2) 编辑