[Miles' Blog]

Welcome 2 My Planet

Available categories: [/] [development. ~] [working on downwap.] [trouble shooting] [working on Yup Mailman] [general infomation.] [life style]

didy|架构 [Permalink]

Thu Nov 25 00:21:24 CST 2004
Category [working on downwap.]

这段时间又开始开发wap.didy.net,一个付费游戏下载的站点。当然,nexus架构还是沿用,只不过改进更多了 /images/emoticons/happy.gif

这两天任务比较紧,架构方面的变动也比较多,有点over-design的嫌疑。。过段时间一定要静心总结一下。

这两天刚好看到了关于IoC,AOP,Dependency Injection的一些文章,有点感觉了。像是对自己某些工作的总结。。。目前的Servlet部分设计,是依靠继承来扩展功能的。比如,BaseServlet:

public final void doGet(...) throws ... {
    //...common functionality (ASPECT?)...
    process();
    //...common functionality (ASPECT?)...
}
子类: NexusBaseServlet:
public class NexusBaseServlet extends BaseServlet {
    public void process() throws Exception {
       //... bl goes here....
    }
}
这样的设计,子类的限制太多,而且实际上已经完全没有了upper cast的可能。所以,可以认为这个继承关系仅仅是多余的提高了耦合度。这里就很有改进的必要,比如用decorator或者是AOP的理念,就可以很清楚的分理出子类,实现解耦。
正如xp理念,这次开发refactoring贯穿始终,而且也初步确定了设计到测试的基本流程。希望有时间细化他,精益求精。

Posted by: miles
Comments [0] |

关于wml中的response status code [Permalink]

Thu Nov 25 00:07:59 CST 2004
Category [working on downwap.]

没错,就是那个200/404/500。对于一般的浏览器,如果返回的status code不是200(HttpServletResponse.SC_OK),完全没有影响,会显示服务器定制的错误页面。比如:
http://2yup.com/blah 这就是我们通常所见的定制http error page了。

可是对于大多wml浏览器来说,可能是为了节省流量,只要分析到status code,就不会在去找页面,而是使用浏览器的默认错误页。这样适用于大多情况,可是,在我的应用中,我是利用500错误(Internal Server Error)来做统一的错误显示页面的。通过这种方法,只需要简单的抛出Exception,就能够方便的显示错误信息。这样就比较麻烦了--我的所有错误信息页面通通完蛋。

还好我们有filter可以用。对于wml应用,我都需要返回我的定制错误,所以,之前加入的WmlMimeFilter刚好满足条件。只需要在WmlMimeServletResponseWrapper里面,重载setStatus方法,就万无一失了:

    public void setStatus(int code) {
        super.setStatus(HttpServletResponse.SC_OK);
    }
结果正如所愿,丢失的错误信息全部回来了 /images/emoticons/grin.gif

附:一个完整的错误返回:
处理前 ==============
HTTP/1.x 500 Internal Server Error
Content-Type: text/vnd.wap.wml
Content-Length: 695
Date: Wed, 24 Nov 2004 16:14:13 GMT
Server: Apache-Coyote/1.1
Connection: close

处理后 ==============
HTTP/1.x 200 OK
Content-Type: text/vnd.wap.wml
Content-Length: 695
Date: Wed, 24 Nov 2004 16:19:02 GMT
Server: Apache-Coyote/1.1

Posted by: miles
Comments [0] |

关于servlet2.4新特性 [Permalink]

Mon Nov 22 10:07:59 CST 2004
Category [development. ~]

servlet2.4有不少新特性,的确强大了不少。实践中碰到了不少应用问题,解决起来很是过瘾。

ServletFilter现在可以设置是否对include/error/forward/request进行响应。这样一来,就可以很精确的控制过滤内容了。一个比较典型的应用:

在一个wap应用中,我在filter中对所有的.jwml进行contenttype的设置。在servlet2.4里面,默认不对include/error/forward/request进行filter,这样可以避免复杂的包含关系和调用顺序问题。但是,如果我想让响应http error code(比如404)的error page也需要filter过滤,因为上述默认设置,即使满足uri pattern,filter也不会激发。所以,这时候我就需要修改这个默认设置,使之对于error这种情况进行响应:

  <filter-mapping>
    <filter-name>wmlmimefilter</filter-name>
    <url-pattern>*.jwml</url-pattern>
    <dispatcher>ERROR</dispatcher>
  </filter-mapping>
这是一个简单例子,举一反三,就知道这个细节对于日常应用是多么实用了。类似的改进在新版servlet中还有不少,大家可以通过比较新的web.xml的schema(不再是dtd)和以前的dtd来一一认识 /images/emoticons/grin.gif

Posted by: miles
Comments [0] |

Tomcat 5.0.x新问题:get数据编码 [Permalink]

Mon Nov 22 09:54:19 CST 2004
Category [development. ~]

以前tomcat4中,get/post方式编码处理相同。所以为了解决wap中文问题,我只需要request.setCharEncoding("UTF-8")就可以解决问题;但是现在,这招对于tomcat5.0.x完全没有用。get方式时候,根本不会起效。只有通过设置server.xml如下:

    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" URIEncoding="UTF-8"/>
才可以让get和post一致,达到以前的效果。可是这样的话,灵活性就会大打折扣。不知道以后版本是否会有改善,抑或有其他好的解决办法,只不过我们还不清楚。

按理说tomcat作为成熟的web container,应该不会忽略这类问题的。之所以这么做应该有他的道理。。可惜时间太少,放过了太多的技术点,没有时间一一搞明白 /images/emoticons/sad.gif

Posted by: miles
Comments [0] |

关于vbs字符串内存资源的释放 [Permalink]

Wed Oct 27 10:28:01 CST 2004
Category [development. ~]

今天有人问了一个很有意思的问题,就是vbs字符串所占的内存如何释放。我做了下面这个test.vbs:

Dim temp, WshShell
set WshShell = WScript.CreateObject("WScript.Shell")

temp = space(1024*1024*20) '20MB

WScript.Sleep 2000

'temp = ""

msgbox("done")

这里打开和关闭temp=""时候可以发现,系统内存使用状况完全不一样(通过任务管理器就可以看到)。结论也就很容易得出了。。。

Posted by: miles
Comments [0] |

关于DOCTYPE [Permalink]

Wed Oct 27 09:57:21 CST 2004
Category [working on downwap.]

如果doc类型是xml的话,不要在xslt时候设置doctype,否则可能会因为root element和doctype不匹配导致错误。因为xml本身就是默认的doctype,实在没有必要多此一举。

Posted by: miles
Comments [0] |

wap通讯录 [Permalink]

Wed Sep 29 11:44:00 CST 2004
Category [working on downwap.]

现在在做通讯录。目前的设计,通讯录不但要求像现在的名片式手机电话簿一样有自定义分组,详细联系人资料,多组电话号码这些基本功能,还需要以下的进阶功能:

  1. 允许用户在电脑上直接管理电话簿
  2. 允许用户上传联系人,以及分组头像
  3. 允许用户直接从电话簿拨号(wap1.2支持)
  4. 允许用户直接从电话簿发送email
  5. 允许用户发送联系人名片给其他注册用户

这些功能都是一般的电话簿所没有的。应该会比较有吸引力 /images/emoticons/wink.gif 而且以后再也不用担心手机或手机卡丢失导致重要电话号码一起遗失了。

Posted by: miles
Comments [0] |

nexus在downwap继续开发 [Permalink]

Wed Sep 29 11:41:48 CST 2004
Category [working on downwap.]

因为业务需要,现在利用现有nexus基础,为downjoy.com做wap应用,应用名称为downwap。

Posted by: miles
Comments [0] |

Yup Mailman 1.3版总结 [Permalink]

Tue Sep 21 16:38:51 CST 2004
Category [working on Yup Mailman]

现在功能已经基本完成了,支持附件的管理。今天作了测试,发信也没有什么问题~~ 我给了一个版本号1.3,以后每次功能的完善会根据具体情况决定major version和minor version的更新。

到目前为止,值得注意的几个问题:

  1. 不要用\r\n作new line标记,而应该用\n。不知道为什么,用PrintWriter.println()(包裹一个Socket.getOutputStream())时候,会自动将其中的\n替换成\r\n。这样的结果,就是当用\r\n作换行标记时候,会产生\r\r\n,从而使得邮件内容错误。PrintWriter.println()的javadoc没有说明这个情况。
  2. 仍然不知道如何用jdom在读写xml文档时候完全保留white spaces。写的时候,一定不要设置newLine为true,否则会导致白空格丢失,但是,如果不设置newLine,整个xml文件看上去是一塌糊涂。。另外,对于entity,似乎也很难保留,其中的引导&还是会被替换成&导致内容完全无效。。不知道是这方面的api本身问题,还是我使用不当,不得其法 /images/emoticons/sad.gif
    最终我还是选择了用普通纯文本方式写,jdom读。这样就解决了所有问题。
  3. 当使用XYLayout时候,如果remove以后想重新设置一个现存的component的位置,除了parent.add时候设置正确的XYConstain以外,还需要对componentsetBounds(),否则位置会有问题。
  4. 多操作系统下的测试还没有进行,不过如何调用系统默认的浏览器仍然是个问题。查找默认路径对于windows比较适用,其他系统可能稍微有点勉强。

下一步的目标,是实现multipart/alternative,让正文有更好的适应性。当功能比较完善的时候,我考虑把它作为share ware发布 /images/emoticons/happy.gif

Posted by: miles
Comments [0] |

使用FileWriter时候内容丢失 [Permalink]

Wed Sep 15 15:50:52 CST 2004
Category [development. ~]

内容比较多的时候,使用writer一定要在结束时候flush/close,否则会导致内容的丢失。一定要注意!!

Posted by: miles
Comments [0] |

?
四月 2024
Sun? Mon? Tue? Wed? Thu? Fri? Sat?
 123456
78910111213
14151617181920
21222324252627
282930    
       
<  Mar???Today??? May  >
<< <   2 3 4 5 6   > >>

Available categories: [/] [development. ~] [working on downwap.] [trouble shooting] [working on Yup Mailman] [general infomation.] [life style]

Powered By blojsom?? RSS Feed? RSS2 Feed? RDF Feed

html hits:?50760