一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Programming Language

详解在IIS中配置并运行WCF服务

  【IT168 技术文档】WCF是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。  在IIS中运行服务     之前我们让Derivatives Calculator服务在一个.NET可执行文件中运行,在这个练习中,我们将让服务在IIS中运行。     利用IIS作为宿主程序来运行WCF服务通常有许多好处。     ·将项目构建到\bin目录中     为了方便部署,我们需要对服务项目进行配置,让它编译到一个bin目录中。     1. 在Solution Explorer中右键单击DerivativesCalculatorService项目并选择Properties菜单项。     2. 在Project designer中,单击Build选项卡。     3. 将Output path从bin\Debug\改为bin\,如图所示。   Project designer中经过调整的Output path属性     4. 选择File | Save All菜单项。     5. 选择File | Close菜单项来关闭Project designer。     现在,在构建服务时产生的所有文件都会被输出到\bin目录中。     ·添加一个.svc文件     为了让WCF服务能够在IIS中运行,我们需要用一种特殊的内容文件(.svc文件)表示它。这种模型和ASMX页面在IIS中的表示方法类似。.svc文件包含一个WCF专用的处理指示符(@ServiceHost),这个指示符告诉WCF运行库在收到消息时激活服务。     1. 在Solution Explorer中右键单击DerivativesCalculatorService项目并选择Add | New Item菜单项。     2. 在Add New Item对话框中,选择Text File模板。 wordend 相关阅读:     3. 在Name文本框中输入Service.svc。     4. Add New Item对话框看起来应该如图所示。   添加一个svc文件     5. 单击Add按钮。     6. 在Service.svc文件中添加下面这行语句。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/ <%@ServiceHost Service="DerivativesCalculatorService.Calculator" […]

龙生   15 Oct 2012
View Details

深入浅出Node.js(二):Node.js&NPM的安装与配置

Node.js安装与配置 Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0.6.x的版本上介绍Node.js的安装和配置。(本文一律以0.6.1为例,0.6的其余版本,只需替换版本号即可。从http://nodejs.org/#download可以查看到最新的二进制版本和源代码)。 Windows平台下的Node.js安装 在过去,Node.js一直不支持在Windows平台下原生编译,需要借助Cygwin或MinGW来模拟POSIX系统,才能编译安装。幸运的是2011年6月微软开始与Joyent合作移植Node.js到Windows平台上(http://www.infoq.com/cn/news/2011/06/node-exe ),这次合作的成果最终呈现在0.6.x的稳定版的发布上。这次的版本发布使得Node.js在Windows平台上的性能大幅度提高,使用方面也更容易和轻巧,完全摆脱掉Cygwin或MinGW等实验室式的环境,并且在某些细节方面,表现出比Linux下更高的性能,细节参见http://www.infoq.com/news/2011/11/Nodejs-Windows。 在Windows(Windows7)平台下,我将介绍二种安装Node.js的方法,即普通和文艺安装方法。 普通的安装方法 普通安装方法其实就是最简单的方法了,对于大多Windows用户而言,都是不太喜欢折腾的人,你可以从这里(http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi )直接下载到Node.js编译好的msi文件。然后双击即可在程序的引导下完成安装。 在命令行中直接运行:

命令行将打印出:

该引导步骤会将node.exe文件安装到C:\Program Files (x86)\nodejs\目录下,并将该目录添加进PATH环境变量。 文艺的安装方法 Windows平台下的文艺安装方法主要提供给那些热爱折腾,喜欢编译的同学们。在编译源码之前需要注意的是你的Windows系统是否包含编译源码的工具。Node.js的源码主要由C++代码和JavaScript代码构成,但是却用gyp工具(http://code.google.com/p/gyp/ )来做源码的项目管理,该工具采用Python语言写成的。在Windows平台上,Node.js采用gyp来生成Visual Studio Solution文件,最终通过VC++的编译器将其编译为二进制文件。所以,你需要满足以下两个条件: Python(Node.js建议使用2.6或更高版本,不推荐3.0),可以从这里(http://python.org/)获取。 VC++ 编译器,包含在Visual Studio 2010中(VC++ 2010 Express亦可),VS2010可以从这里(http://msdn.microsoft.com/en-us/vstudio/hh388567)找到。 下载Node.js的0.6.1版本的源码压缩包(http://nodejs.org/dist/v0.6.1/node-v0.6.1.tar.gz )并解压之。 通过命令行进入解压的源码目录,执行vcbuild.bat release命令,然后经历了漫长的等待后,编译完成后,在Release目录下可以找到编译好的node.exe文件。通过命令行执行node -v。 命令行返回结果为:

事实上,如果你的编译环境中存在WiX工具集(http://wix.sourceforge.net/ ),执行vcbuild.bat msi release命令,你将会在Relase目录下找到node.msi。 是的,我们回到了一开始的普通安装方法。所谓文艺就是多走一些路,多看一些风景罢了。 Unix/Linux平台下的Node.js安装 由于Node.js尚处于v0.x.x的版本的快速发展中,Unix/Linux平台的发行版都不会预置Node的二进制文件,通过源码进行编译安装是目前最好的选择。而且用Unix/Linux系统的同学们多数都是文艺程序员,本节只介绍如何通过源码进行编译和安装。 安装条件 如同在Windows平台下一样,Node.js依然是采用gyp工具管理生成项目的,不同的是通过make工具进行最终的编译。所以Unix/Linux平台下你需要以下几个必备条件,才能确保编译完成: Python。用于gyp,可以通过在shell下执行python命令,查看是否已安装python,并确认版本是否符合需求(2.6或更高版本,但不推荐3.0)。 源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通过当前发行版的软件包安装工具安装make,g++这些编译工具。     Debian/Ubuntu下的工具是apt-get RedHat/centOS下通过yum命令 Mac OS X下你可能需要安装xcode来获得编译器           相关厂商内容 进阶xUnit培训课程,由Jolt大奖著作作者Gerard亲自授课,越早报名优惠越多! 京东网架构师何斌,确定QCon杭州分享主题:虚拟化如何支撑京东业务! oolShell博主,亚马逊中国研发经理陈皓,确定QCon杭州分享主题:建一支强悍的小团队! 百度技术沙龙第三十一期:推荐引擎算法与技术(10月20日 周六) 相关赞助商                           QCon杭州2012大会10月25~27,10月10日前报名享受9折优惠,5人以上团购享有更多优惠!             其次,如果你计划在Node.js中启用网络加密,OpenSSL的加密库也是必须的。该加密库是libssl-dev,可以通过apt-get install libssl-dev等命令安装。 检查环境并安装 完成以上预备条件后,我们获取源码并进行环境检查吧:

如果检查没有通过,请确认上面提到的三个条件是否满足。如果configure命令执行成功,就可以进行编译了:

Nodejs通过make工具进行编译和安装(如果make install不成功,请使用sudo以确保拥有权限)。完成以上两步后,检查一下是否安装成功:

检查是否返回:

至此,Nodejs已经编译并安装完成。如需卸载,可以执行make uninstall进行卸载。 小结 以上介绍了*nix和Windows平台下Nodejs的安装,之后可以如同Nodejs官方网站上介绍的那样,编写example.js文件。

在命令行中执行它:

你就可以通过浏览器访问http://127.0.0.1:1337得到Hello World的响应。 安装NPM NPM的全称是Node Package Manager,如果你熟悉ruby的gem,Python的PyPL、setuptools,PHP的pear,那么你就知道NPM的作用是什么了。没错,它就是Nodejs的包管理器。Nodejs自身提供了基本的模块。但是在这些基本模块上开发实际应用需要较多的工作。所幸的是笔者执笔此文的时候NPM上已经有了5112个Nodejs库或框架,这些库从各个方面可以帮助Nodejs的开发者完成较为复杂的应用。这些库的数量和活跃也从侧面反映出Nodejs社区的发展是十分神速和活跃的。下面我将介绍安装NPM和通过NPM安装Nodejs的第三方库,以及在大陆的网络环境下,如何更好的利用NPM。 Unix/Linux下安装NPM 就像NPM的官网(http://npmjs.org/)上介绍的那样,安装NPM仅仅是一行命令的事情:

这里详解一下这句命令的意思,curl http://npmjs.org/install.sh是通过curl命令获取这个安装shell脚本,按后通过管道符| 将获取的脚本交由sh命令来执行。这里如果没有权限会安装不成功,需要加上sudo来确保权限:

安装成功后执行npm命令,会得到一下的提示:

我们以underscore为例,来展示下通过npm安装第三方包的过程。

返回:

由于一些特殊的网络环境,直接通过npm install命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内CNode社区的@fire9同学利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库:

如果你想将它设为默认的资源库,运行下面这条命令即可: npm config set registry "http://npm.hacknodejs.com/" 设置之后每次安装时就可以不用带上—registry参数。值得一提的是还有另一个镜像可用,该镜像地址是http://registry.npmjs.vitecho.com,如需使用,替换上面两行命令的地址即可。 Windows下安装NPM 由于Nodejs最初在Linux开发下的历史原因,导致NPM一开始也不支持Windows环境,但是随着Nodejs成功移植到到Windows平台,NPM在Windows下的需求亦是日渐增加。下面开始Windows下的NPM之旅吧。 安装GIT工具 由于github网站不支持直接下载打包了所有submodule的源码包,所以需要通过git工具来签出所有的源码。从http://code.google.com/p/msysgit/downloads/list,可以下载到msysgit这个Windows平台下的git客户端工具(最新版本文件为Git-1.7.7.1-preview20111027.exe)。在下载之后双击安装。 下载NPM源码 打开命令行工具(CMD),执行以下命令,可以通过msysgit签出NPM的所有源码和依赖代码并安装npm。 […]

龙生   09 Oct 2012
View Details

HTTP 错误 500.19 Internal Server Error的解决方法

以下从网络中搞定我的Win7下IIS错误:   HTTP 错误 500.19 Internal Server Error       第一种可能,能解决一部分问题   http://wenku.baidu.com/view/c5cb4a08bb68a98271fefa3f.html       第二种可能,解决另外一部分问题   经过检查发现是由于先安装vs2008后安装iis的缘故,只需重新注册下AspNet就可以了,具体步骤如下   1 打开运行,输入cmd进入到命令提示符窗口。   2 进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录。   3 输入aspnet_regiis.exe –i 执行既可   注意:如果系统为64位 第二步的路径为C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727       第三种可能解决方法: Win7下我碰到的问题   WIN7下.Net开发遇到的又一问题:HTTP 错误 500.19 – Internal Server Error,无法访问请求的页面,因为该页的相关配置数据无效。   详细错误信息模块 IIS Web Core   通知 BeginRequest   处理程序 尚未确定   错误代码 0x80070021   配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。   配置源   219: <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></modules>   220: <handlers>   221: <remove name="WebServiceHandlerFactory-Integrated"/> […]

龙生   08 Oct 2012
View Details

myEclipse/Eclipse插件安装、更新、删除

Eclipse插件安装、更新、删除   Eclipse的插件可以装在内部,也可以装在外部,装在内部的方法很简单:把插件的features和plugins目录copy到eclipse的安装目录即可。eclipse和其插件升级比较频繁,用过eclipse的朋友应该都有体会,插件装在外部相比装在内部有很多优点,此处不再赘述。 装在外部的插件的的目录结构通常应该类似如下: samplePlugins |——eclipse |——features |——plugins |——.eclipseextension 其中.eclipseextension文件只是标识这是一个eclipse外部插件,没有实际意义。有些插件解压后没有这个文件,可以手工创建一个空的即可。 在外部安装插件的两种方法: 1、使用Software Update功能 在Eclipse中选择Help > Software Updates > Manage Configuration,在这里会列出所有已经安装的插件。右键单击Eclipse Platform,选择New > Extension Location…,然后找到要安装的插件的目录,如:samplePlugins,确定,ok,安装成功。Eclipse会提示你重启以使应用生效。继续点击yes,然后就可以使用新插件了。 2、使用links目录功能 进入Eclipse安装目录,查看是否有links目录,如果没有,则新建之。进入links目录,新建一个后缀为.link的文本文件,如:samplePlugs.link,此文件只有一行内容,格式为:path=插件目录。例如:安装汉化插件,将汉化包解压出来应该是eclipse文件夹(包含features和plugins两个文件夹),放在C:\Java\eclipse\language目录下,在同一目录新建links文件夹,在links文件夹下新建language.ini(language.link)文本文件,内容:path=language保存退出,重启eclipse,就完成了Eclipse的汉化,^=^。 Eclipse的升级也有两种方法: 1、使用Help —> Software Updates —> Find and Install,选中需要升级的插件,按提示操作即可。 2、下载全新安装文件,解压新版本的eclipse,把以前安装的插件按照前述方法导入,如果需要再修改workspace的指向即可。 插件升级的方法也是同理,可以在线升级,或者下载新版插件,然后在links目录里修改.link文件即可。 插件卸载的方法: 在Help —> Software Updates —> Manage Configuration 里disable相应插件即可。如果要完全删除,则需要删除eclipse目录下的configuration目录,这步操作其实无甚必要。 以上操作从Eclipse2.1到Eclipse3.x下都经过试验。如果修改之后eclipse不能正常启动,到configuration目录下查看错误日志,再寻找解决办法。通常如果是配置问题,只要删除configuration目录基本都可以解决。   接下来主要说一下Eclipse集成的一些插件及其在线更新地址: 1. Subversion是下一代版本(或源码)控制系统,它的目的是代替CVS下载. 在线更新地址 : http://subclipse.tigris.org/update_1.2.x/ 2.PyDevPyDev是一个允许用户利用Eclipse进行Python开发。它提供了一些很好的功能如:代码填空,语法高亮显示,语法分析,重构(refactor)和调试等等. 在线安装更新地址 : http://pydev.sourceforge.net/updates/ 3. JyDT Jython开发工具。 在线安装更新地址 :http://www.redrobinsoftware.net/jydt/ 4. 基于Eclipse的Java反编译插件 在线更新地址 : http://www.technoetic.com/eclipse/update/ 5. JSEclipse可以编辑JavaScript 文件,支持语法突出显示和包括了一些常用的面向对象的方法。支持的面向对象的功能有:构造函数,类方法,实例方法,类变量等等。支持代码错误提示,警靠报告等。 在线更新地址 : http://download.macromedia.com/pub/labs/jseclipse/autoinstall/ 6. Implementors当追踪方法代码时,Eclipse默认是转到方法的接口类,而接口中是只有方法名称没有具体的实现代码,此插件提供了追踪到具体实现类的实现代码的功能。 在线更新地址 : http://eclipse-tools.sourceforge.net/updates/ 7. Easy ExplorerEasy Explorer 打开在eclipse中选定文件所在的目录 在线安装更新地址 : http://easystruts.sourceforge.net/eclipse/updates/ 8. […]

龙生   26 Sep 2012
View Details

Eclipse:修改字符编码

一、设置代码的编码格式: 有时候大家也许会看到这个错误:Save could not be completed. Reason: some characters cannot be mapped using “ISO-8859-1“ character encoding 这个错误是因为你的文件格式是ISO-8859-1,右键点击报错文件->选择Properties->Text file enconding->把ISO-8859-1改为UTF-8或者GBK就解决这个问题了。 这是因为Eclipse默认的文件格式都是ISO-8859-1,那如果大量文件该怎么办呢?我们不会一个一个手动改吧?答案是NO。 方法如下: Eclipse-->Window-->Preferences-->General-->Content Types然后在选择 右边的Text下边的Java Properties File,修改其编码(推荐UTF-8)。 二、编辑器字体(全体,包括PyDev、cdt、jdt的编辑器) Eclipse-->Window-->Preferences-->General-->Appearance--> Colors and Fonts -->Basic --> Text Font-->Change 喜欢哪个就选哪个字体。

龙生   26 Sep 2012
View Details

C# 知识点 goto【学习笔记】

 定义

备注

可以考虑使用goto的情形 

不加限制地使用goto带来的弊端

示例 goto 在 switch 语句中的使用。

示例输出

使用 goto 跳出嵌套循环

龙生   24 Sep 2012
View Details

C#的Escape和Unescape

基于C#的Escape和Unescape实现 //在C#后台实现JavaScript的函数escape()的字符串转换//些方法支持汉字private string escape(string s){StringBuilder sb = new StringBuilder();byte[] byteArr = System.Text.Encoding.Unicode.GetBytes(s); for (int i = 0; i < byteArr.Length; i += 2){ sb.Append("%u");sb.Append(byteArr[i + 1].ToString("X2"));//把字节转换为十六进制的字符串表现形式 sb.Append(byteArr[i].ToString("X2"));}return sb.ToString(); }//把JavaScript的escape()转换过去的字符串解释回来//些方法支持汉字private string unescape(string s){ string str = s.Remove(0, 2);//删除最前面两个"%u"string[] strArr = str.Split(new string[]{"%u"}, StringSplitOptions.None);//以子字符串"%u"分隔byte[] byteArr = new byte[strArr.Length * 2];for (int i = 0,j=0; i < strArr.Length;i++,j+=2){byteArr[j + 1] = Convert.ToByte(strArr[i].Substring(0,2), 16); //把十六进制形式的字串符串转换为二进制字节byteArr[j ] = Convert.ToByte(strArr[i].Substring(2, 2), 16);}str = System.Text.Encoding.Unicode.GetString(byteArr); //把字节转为unicode编码return str; }   下面的为不支持汉字的转换: public static string Escape(string str){if (str == null)returnString.Empty; StringBuilder sb = newStringBuilder();int len = str.Length; for […]

龙生   21 Sep 2012
View Details

如何在ashx页面获取Session值

在一般事务处理页面,可以轻松的得到 Request,Response对象,从而进行相应的操作,如下: HttpRequest Request = context.Request; HttpResponse Response = context.Response; 但是要得到 Session的值就没有那么简单了。比如你要在ashx得到保存在Session中的登录帐号Session["userAccount"] 如果你只是context.Session["userAccount"]的话是会报 “未将对象引用设置到对象的实例”的异常 所以,如果要想取Session中的值 ,需要如下所示 1、引入 命名空间: using System.Web.SessionState; 2、实现IRequiresSessionState接口,具体如下 /// <summary>/// $codebehindclassname$ 的摘要说明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]public class AddUserInfo : IHttpHandler,IRequiresSessionState //就是这样显示的实现一下,不用实现什么方法{ public void ProcessRequest(HttpContext context){       //…       //这样你就可以如下 操作了 if(context.Session["userAccount"] != null)       {         string account = context.Session["userAccount"].ToString();       }       //…继续下面的代码     }   }   FROM URL:http://www.cnblogs.com/vihone/archive/2010/06/04/1751490.html

龙生   18 Sep 2012
View Details

SWFUpload V2.2.0 说明文档

SWFUpload V2.2.0 说明文档 更新时间:2008-11-07 TOC SWFUpload SWFUpload 2 概述 入门 SWFUpload JavaScript 对象 构造器 全局变量和常量 instances movieCount QUEUE_ERROR UPLOAD_ERROR FILE_STATUS Default Event Handlers BUTTON_ACTION(added in v2.2.0) BUTTON_CURSOR(added in v2.2.0) BUTTON_WINDOW_MODE(added in v2.2.0) 属性 customSettings movieName 方法 addSetting (不推荐使用) getSetting (不推荐使用) retrieveSetting (v2.1.0中已删除) destroy (v2.1.0中新增) displayDebugInfo selectFile (不推荐使用) selectFiles (不推荐使用) startUpload cancelUpload stopUpload getStats setStats getFile addPostParam removePostParam addFileParam removeFileParam setUploadURL setPostParams setFileTypes setFileSizeLimit setFileUploadLimit setFileQueueLimit setFilePostName setUseQueryString setDebugEnabled setButtonImageURL (added in v2.2.0) setButtonDimensions (added in v2.2.0) setButtonText (added in v2.2.0) setButtonTextStyle (added in v2.2.0) setButtonTextPadding (added in v2.2.0) […]

龙生   12 Sep 2012
View Details

swfupload在IE9中不显示上传按钮的问题

问题描述: 使用swfupload.js上传文件,在IE8、火狐、谷歌浏览器中显示正常,但是在IE9下不能显示上传按钮。 解决方法: 打开swfupload.js文件找到307行开始的如下代码: // Private: getFlashHTML generates the object tag needed to embed the flash in to the document SWFUpload.prototype.getFlashHTML = function (flashVersion) { // Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay return ['<object id="',this.movieName, '" type="application/x-shockwave-flash" data="', (this.support.imageResize ?this.settings.flash_url : this.settings.flash9_url), '" width="', this.settings.button_width, '" height="',this.settings.button_height, '" class="swfupload">', '<param name="wmode" value="',this.settings.button_window_mode, '" />', '<param name="movie" value="', (this.support.imageResize ?this.settings.flash_url : this.settings.flash9_url), '" />', '<param name="quality" value="high" />', '<param name="allowScriptAccess" value="always" />', '<param name="flashvars" value="' +this.getFlashVars() + '" />', '</object>'].join(""); }; 将其替换为:   // Private: getFlashHTML generates the object tag […]

龙生   12 Sep 2012
View Details
1 163 164 165 177