<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[纸做原创]]></title><description><![CDATA[我不是一个伟大的程序员，但是我可以做一个有优良习惯的程序员]]></description><link>https://blog.csdn.net/yanical</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; yanical]]></copyright><item><title><![CDATA[Azure:内容分发网络(CDN)特性一览]]></title><link>https://blog.csdn.net/yanical/article/details/8064523</link><guid>https://blog.csdn.net/yanical/article/details/8064523</guid><author>yanical</author><pubDate>Fri, 12 Oct 2012 22:26:09 +0800</pubDate><description><![CDATA[Azure的内容分发网络给开发者提供了一个全球范围的托管于Azure的高带宽内容网络。它使用起来非常简单，http://msdn.microsoft.com/en-us/library/windowsazure/ee795176.aspx详细阐述了其怎么使用。下面主要描述Azure CDN的一些关键特性：


1. CDN节点地理位置
CDN提供了比Azure其他服务多的多的服务地点，涉及]]></description><category></category></item><item><title><![CDATA[Rest服务的健壮性考虑]]></title><link>https://blog.csdn.net/yanical/article/details/7974059</link><guid>https://blog.csdn.net/yanical/article/details/7974059</guid><author>yanical</author><pubDate>Tue, 02 Oct 2012 13:26:43 +0800</pubDate><description><![CDATA[之前写了个六步实现Rest风格的API，详述了怎么开发Rest风格的服务。Rest是基于HTTP的，有必要知道，HTTP是一个简单的基于“请求/响应”的协议，它初始时候只是设计用来获取静态的或动态生产的内容。HTTP不支持事务，简单的来说，在接受处理完请求像想客户端发送完响应后，HTTP服务器即认为它的工作已经完成了。这个时候网络或者客户端发生了错误，服务器端是完全不知道的。如果客户端决定重试请求]]></description><category></category></item><item><title><![CDATA[Apache Httpd的mod_proxy模块修改了HTTP的响应吗]]></title><link>https://blog.csdn.net/yanical/article/details/7960084</link><guid>https://blog.csdn.net/yanical/article/details/7960084</guid><author>yanical</author><pubDate>Sun, 09 Sep 2012 13:26:19 +0800</pubDate><description><![CDATA[前几天，一个开发组开发的一个模块，放到我们的产品环境上去后，发现其中的一个功能没有正常工作。用Fiddler查看HTTP记录，发现那个功能的发出的HTTP请求返回了500错误。查看文档，500代表Internal Server Error，服务器出错了。
问题抛回给负责开发的组，他们查看了服务器log，没有发现相关的错误。而这个功能在他们自己开发的环境上都是可以的。
难道和我们产品环境的部署有]]></description><category></category></item><item><title><![CDATA[如何在开发纯富客户端（RIA）应用的时候利用标签库（tab library）]]></title><link>https://blog.csdn.net/yanical/article/details/7958802</link><guid>https://blog.csdn.net/yanical/article/details/7958802</guid><author>yanical</author><pubDate>Sat, 08 Sep 2012 21:16:26 +0800</pubDate><description><![CDATA[原来做项目的时候，会使用Ajax来做一些页面动态功能，最典型的如auto complete。 还有一些小范围的数据保存之类的，基本上从来没有做过全页面的表单都用Ajax来保存的开发。要实现把页面上的所有数据都用Ajax保存不麻烦，麻烦在保存后怎么办。通常保存完数据后，我们都会刷新整个页面，到一个完全不同的页面去：比如，保存完一个订单后跳回订单查询页面。通常用javascript的时候，我们只用它来]]></description><category></category></item><item><title><![CDATA[Azure: Java 连接SQL Azure数据库及Connection timeout问题解决方法]]></title><link>https://blog.csdn.net/yanical/article/details/7904625</link><guid>https://blog.csdn.net/yanical/article/details/7904625</guid><author>yanical</author><pubDate>Sat, 25 Aug 2012 11:20:31 +0800</pubDate><description><![CDATA[SQL Azure是Azure提供的关系数据库服务，它天生支持高可用性，扩展性。使用SQL Azure，开发人员不需要自己安装，升级，维护服务器，只需要简单的在Azure portal上创建一个SQL Azure服务器实例即可。SQL Azure是基于SQL Server的，其实，它就是SQL Server的一个受限制版本。SQL Azure支持几乎我们会用到的所有SQL Server的数据类型，]]></description><category></category></item><item><title><![CDATA[六步实现Rest风格的API]]></title><link>https://blog.csdn.net/yanical/article/details/7856670</link><guid>https://blog.csdn.net/yanical/article/details/7856670</guid><author>yanical</author><pubDate>Sun, 19 Aug 2012 11:17:18 +0800</pubDate><description><![CDATA[Rest的作者认为计算机发展到现在，最大的成就不是企业应用，而是web，是漫漫无边的互联网web世界。Web能有这么大的成就，它值得我们研究。所以Rest的作者仔细研究了Web，按照Web的世界一些关键特性，提出了我们在实现企业应用的时候应该遵循的一种风格，就是Restful。
Rest风格的API可以给我们很多好处，比如：简洁，统一，性能，可扩展性等等。可惜的是，在实现Rest的时候，总有一些]]></description><category></category></item><item><title><![CDATA[Azure：用InstanceInputEndpoint直接和指定instance通信]]></title><link>https://blog.csdn.net/yanical/article/details/7852920</link><guid>https://blog.csdn.net/yanical/article/details/7852920</guid><author>yanical</author><pubDate>Fri, 10 Aug 2012 20:03:41 +0800</pubDate><description><![CDATA[默认情况下，Azure里面的虚拟机实例（instance）是自我封闭的，它可以请求虚拟机外部的网络资源，但是外部没法访问到它，除非给它定义Endpoint。定义Endpoint就是定义instance或者说role要打开哪些端口给外部访问。
Azure之前有提供两种endpoint，InternalEndpoint和InputEndpoint。
InternalEndpoint定义的端口只能被]]></description><category></category></item><item><title><![CDATA[Azure：用LoadBalancerProbe自定义负载均衡器]]></title><link>https://blog.csdn.net/yanical/article/details/7826479</link><guid>https://blog.csdn.net/yanical/article/details/7826479</guid><author>yanical</author><pubDate>Sat, 04 Aug 2012 20:06:22 +0800</pubDate><description><![CDATA[在Azure SDK 1.7之前，Azure对同一个Host Service里同一个role的多个instance，默认情况下，请求是会平均分配给所有instance的，Azure并没有提供任何控制方法。这有些问题，比如，一些服务有可能需要一些初始化动作，Azure有可能在这些服务初始化结束前就会将请求转发过去，因为Azure只关心instance是不是存活的，而不关心服务是否正常，这种问题对于j]]></description><category></category></item><item><title><![CDATA[Azure：自定义环境变量和预定义环境变量]]></title><link>https://blog.csdn.net/yanical/article/details/7519865</link><guid>https://blog.csdn.net/yanical/article/details/7519865</guid><author>yanical</author><pubDate>Fri, 03 Aug 2012 12:49:26 +0800</pubDate><description><![CDATA[在Azure的definition文件里，我们可以定义一些环境变量，这里是个例子：

 
      
          
                               executionContext="limited">]]></description><category></category></item><item><title><![CDATA[用javascript监听页面上的所有ajax请求]]></title><link>https://blog.csdn.net/yanical/article/details/7213289</link><guid>https://blog.csdn.net/yanical/article/details/7213289</guid><author>yanical</author><pubDate>Sat, 21 Apr 2012 17:33:00 +0800</pubDate><description><![CDATA[最近碰到一个很纠结的技术问题。
我们自己是个Grails，集成了另外一个web程序，我们把那个web程序放在我们提供的iframe里。那个web程序只有在第一次初始化的时候是一个普通的HTTP请求，之后在页面上的操作，都是通过ajax来操作的。现在我们有个需求，我们需要知道iframe里面做了什么操作。
没法改别人的代码，那我们只能监测里面的事件了，所以总归来说，要找到一种方法来检测到ifra]]></description><category></category></item><item><title><![CDATA[Grails HTTP response codes mapping（默认错误页面）bug的解决方法]]></title><link>https://blog.csdn.net/yanical/article/details/7212843</link><guid>https://blog.csdn.net/yanical/article/details/7212843</guid><author>yanical</author><pubDate>Fri, 27 Jan 2012 16:11:26 +0800</pubDate><description><![CDATA[Grails提供了一种方便地将HTTP response code和一些默认页面映射起来的方法。就是在URLMappings.groovy文件中加入如下的配置，
映射到view：

static mappings = {
   "500"(view:"/errors/serverError")
   "404"(view:"/errors/notFound")
}

或者，映射到acti]]></description><category></category></item><item><title><![CDATA[JavaScript(Ajax)和Cookie的同源策略]]></title><link>https://blog.csdn.net/yanical/article/details/7211345</link><guid>https://blog.csdn.net/yanical/article/details/7211345</guid><author>yanical</author><pubDate>Fri, 20 Jan 2012 20:39:48 +0800</pubDate><description><![CDATA[一个URL由四部分组成，拿http://blog.csdn.net/yanical来说（http的默认端口是80，https的默认端口是443。如果是默认端口，可以省略，所以这个URL等价于http://blog.csdn.net:80/yanical）
协议：http
主机：blog.csdn.net
端口：80
路径：/yanical
所谓的同源就是要求这个URL的协议，主机，端口三]]></description><category></category></item><item><title><![CDATA[Grails完美解决一对多（One to many）Model动态表单的自动组装]]></title><link>https://blog.csdn.net/yanical/article/details/7192228</link><guid>https://blog.csdn.net/yanical/article/details/7192228</guid><author>yanical</author><pubDate>Sat, 14 Jan 2012 23:01:41 +0800</pubDate><description><![CDATA[这里的试验是在Grails下做的，但是在Spring MVC中应该也能适用，即便不行，通过简单的扩展也能达到效果。对于其他框架像Struct之类应该也都没问题（不了解，不确定）。
能实现的自动封装包含：
1.一层简单模型

class AddressCommand {
	String city
	String street
	int hourseNumber
}


2.One to]]></description><category></category></item><item><title><![CDATA[Groovy常用语法总结]]></title><link>https://blog.csdn.net/yanical/article/details/7163138</link><guid>https://blog.csdn.net/yanical/article/details/7163138</guid><author>yanical</author><pubDate>Thu, 29 Dec 2011 21:00:19 +0800</pubDate><description><![CDATA[过去半年都在写Groovy，基本都是在实战中学习，从java转过来，也还没什么问题，毕竟基础，架构都没变。
Groovy的强大特性中，Closure，MetaClass都尝试过，Closure基本上就是当方法或者回调接口使用，再高级的用法就没用过了，没有特别体会什么好处，当回调接口就是省的定义接口，简洁了一些；MetaClass就有专门为一个模块做了些MetaClass，和GORM差不多的，给一]]></description><category></category></item><item><title><![CDATA[Java里的XML概念整理]]></title><link>https://blog.csdn.net/yanical/article/details/6221848</link><guid>https://blog.csdn.net/yanical/article/details/6221848</guid><author>yanical</author><pubDate>Thu, 03 Mar 2011 21:32:00 +0800</pubDate><description><![CDATA[1. XML语法解析方式
 
XML解析方法是理论知识，不止在java里是这样，换到其他语言下也是一样的。目前有三种：
     A.  DOM（Document Object Model）： DOM方法一次把XML的所有内容读入内存，按照xml的内容里面的node，attribute等生成一个树状结构。这就是一个对象模型了，完了我们就可以对这个树状结构进行操作。DOM的特点是编程简单，明了]]></description><category></category></item><item><title><![CDATA[写伟大的测试：最好与最坏的实践]]></title><link>https://blog.csdn.net/yanical/article/details/6208492</link><guid>https://blog.csdn.net/yanical/article/details/6208492</guid><author>yanical</author><pubDate>Fri, 25 Feb 2011 19:51:00 +0800</pubDate><description><![CDATA[原文地址：http://blog.stevensanderson.com/2009/08/24/writing-great-unit-tests-best-and-worst-practises/
 
这篇博客只针对那些至少有少量单元测试经验的开发员，如果你没有写过单元测试，请先读读这个介绍尝试一下。
 
好的单元测试和坏的单元测试有什么区别？你怎么学习怎么写一个好的单元测试？ 这明显是很]]></description><category></category></item><item><title><![CDATA[Oracle BAM 使用体会]]></title><link>https://blog.csdn.net/yanical/article/details/6101552</link><guid>https://blog.csdn.net/yanical/article/details/6101552</guid><author>yanical</author><pubDate>Mon, 27 Dec 2010 22:17:00 +0800</pubDate><description><![CDATA[前几天看了一下BIRT。 想起在前一家公司使用Oracle BAM， 当时就我一个人搞BAM，从零开始，把东西学的差不多后发现Oracle BAM要做起应用来极其崩溃，几乎要把我折磨死。Bug一堆不说，功能设计也相当鸡肋。虽然可以理解，做到Oracle BAM那么不编程就实现实时确实很难，但是感觉Oracle的设计方向有问题。把东西封装的太死，花大量时间做功能的封装，几乎没有任何扩展，这样的好处是如果只用到了它提供的功能，万事大吉，做的还快，但是一旦它的功能没法满足需求，那么就完蛋了。1.Report的产生]]></description><category></category></item><item><title><![CDATA[OSGi笔记-几个原理问题]]></title><link>https://blog.csdn.net/yanical/article/details/6087633</link><guid>https://blog.csdn.net/yanical/article/details/6087633</guid><author>yanical</author><pubDate>Mon, 20 Dec 2010 19:58:00 +0800</pubDate><description><![CDATA[1.什么样的jar才能做为bundle
不是任何jar都可以作为一个bundle存在的，jar必须符合一定的规范才能作为bundle安装到OSGi里去。
规范就是在jar的MANIFEST.MF文件里必须加入一些OSGi元数据，比如Export-Package, Import-Package, Required-Bundle等等。
一般的jar里是没有这些信息的，所以通常都不能作为bundl]]></description><category></category></item><item><title><![CDATA[IBM JDK下访问SSL/HTTPS时候ClassNotFoundException解决方法 ]]></title><link>https://blog.csdn.net/yanical/article/details/5991693</link><guid>https://blog.csdn.net/yanical/article/details/5991693</guid><author>yanical</author><pubDate>Sat, 06 Nov 2010 13:43:00 +0800</pubDate><description><![CDATA[<br />项目代码会使用HTTPS，之前一直在Sun JDK+Tomcat上开发。换到QA环境后使用的是Websphere，默认是IBM JDK。<br />1. QA报问题，预料中，因为没导过HTTPS的证书，导完重启，问题解决。<br />2. 再重启QA，又出问题，看log，java.net.SocketException: Cannot find the specified class java.security.PrivilegedActionException: java.lang.Class]]></description><category></category></item><item><title><![CDATA[关于敏捷开发的3个误区]]></title><link>https://blog.csdn.net/yanical/article/details/5927328</link><guid>https://blog.csdn.net/yanical/article/details/5927328</guid><author>yanical</author><pubDate>Fri, 08 Oct 2010 15:02:00 +0800</pubDate><description><![CDATA[发表几个我对我们项目里敏捷开发的不赞同点：1.专注于形式，不注重精髓我问我的一个同事他怎么理解敏捷开发，他给我的回答是，pair coding。让我崩溃，这就是不理解精髓，只重视表象。敏捷的精髓是沟通与反馈。各种practice的作用只是用来帮助我们更好的沟通，帮助信息流通。如果分不清这些，就算在做pair coding，你也不知道它的目的是干什么。专注形式可能会让团队变得笨重，完全不敏捷了。Agile就我的理解就是轻装上阵，已经减轻了很多文档之类的负担，目的就是写出更好的代码。但是如果过于专注形式，就会在]]></description><category></category></item></channel></rss>