« November 2008 | Main | January 2009 »

December 31, 2008

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

December 29, 2008

December 27, 2008

December 26, 2008

据说这个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"
}

December 25, 2008

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

December 22, 2008

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

December 21, 2008

December 20, 2008

December 18, 2008

December 17, 2008

December 16, 2008

December 14, 2008

December 13, 2008

December 12, 2008

December 11, 2008

December 10, 2008

December 9, 2008

December 8, 2008

December 7, 2008

December 6, 2008

December 5, 2008

December 3, 2008

December 2, 2008

December 1, 2008