一年了。
每日浑浑噩噩的度过。
一眨眼,2008年过去了,太快了。
2009来了……

29. December 2008 · Comments Off on links for 2008-12-28 · Categories: 美味收藏
27. December 2008 · Comments Off on links for 2008-12-26 · Categories: 美味收藏

据说这个bug仅仅会在 Grails 1.0.4 中出现,有人建议直接使用 1.0.5 的预览版本,不过我看到 1.1 beta2 已经发布了,看来用不了再等多长的时间了。
修改文件 GRAILSAPP/plugins/fckeditor-0.8/grails-app/controllers/FckeditorController.groovy
在最后面,大概是 264 行附近开始,把如下一段:
def file = multiRequest.getFile(“NewFile”)
if (!file) {
errorNo = Fckeditor.ERROR_CUSTOM
errorMsg = “INVALID FILE”
}
else {
errorNo = Fckeditor.ERROR_NOERROR
newName = file.originalFilename
def f = splitFilename( newName )
if (isAllowed(f.ext, type)) {
def fileToSave = new File( finalDir, newName )
if ( !overwrite ) {
def idx = 1
while ( fileToSave.exists() ) {
errorNo = Fckeditor.ERROR_FILE_RENAMED
newName = “${f.name}(${idx}).${f.ext}”
fileToSave = new File( finalDir, newName )
idx++
}
}
file.transferTo( fileToSave )
}
else {
errorNo = Fckeditor.ERROR_INVALID_FILE_TYPE
errorMsg = “INVALID FILE TYPE”
}
}
替换为:
def file
if (ServletFileUpload.isMultipartContent(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List /* FileItem */ items = upload.parseRequest(request);
file = items.find {
!it.isFormField() && ‘NewFile’ == it.fieldName
}
}
if(file) {
errorNo = Fckeditor.ERROR_NOERROR
newName = String.valueOf(System.currentTimeMillis())+’.’+FilenameUtils.getExtension(file.name)
def f = splitFilename( newName )
if (isAllowed(f.ext, type)) {
def fileToSave = new File( finalDir, newName )
if ( !overwrite ) {
def idx = 1
while ( fileToSave.exists() ) {
errorNo = Fckeditor.ERROR_FILE_RENAMED
newName = “${f.name}(${idx}).${f.ext}”
fileToSave = new File( finalDir, newName )
idx++
}
}
file.write( fileToSave )
}
else {
errorNo = Fckeditor.ERROR_INVALID_FILE_TYPE
errorMsg = “INVALID FILE TYPE”
}
} else {
errorNo = Fckeditor.ERROR_CUSTOM
errorMsg = “INVALID FILE”
}

今天就遇到了这个问题,因为在提交数据时,有时候需要上传文件,有时候不需要。偷懒了一下,没有做任何判断,直接给 form 添加了 enctype=”multipart/form-data” 这个属性。
在测试环境还好,一切正常。等部署到生产环境后,发生了一个稀奇古怪的空指针异常,看上去没有任何理由应该会发生这个错误。
排查开始…………(省略30k+的辛苦描述)。最后发现问题的根源就在 enctype=”multipart/form-data” 这里。
大家记住了,如果没有上传文件,千万不要随便给 form 乱加 enctype=”multipart/form-data” 属性。

25. December 2008 · Comments Off on links for 2008-12-24 · Categories: 美味收藏
22. December 2008 · Comments Off on links for 2008-12-21 · Categories: 美味收藏
  • iRedMail 是一套基于 GPL 发布的 Shell 脚本,目的是全自动安装和配置邮件服务所需要的组件,以减轻系统管理员的负担。它提供了一个基本的命令行下的用户交互界面(使用 dialog 程序实现),用户只需要简单地选择他所希望使用的组件,就可以在几分钟内(少于 3 分钟)部署好一台功能强大的邮件服务器。
21. December 2008 · Comments Off on links for 2008-12-20 · Categories: 美味收藏
20. December 2008 · Comments Off on links for 2008-12-19 · Categories: 美味收藏