codecamp

1.b.53 发行注记

1.b.53 发行注记

又到金秋,距离上一个版 1.b.52 也颇有段时间了。 在 wendal 的催促下(事实上他白天晚上的在QQ上催了我两个多月)终于熬到了这一天。

实际上,作为 Nutz 项目发起人的我,这两年的精力很多不在 Nutz 上,我逐渐的退化成 Nutz 的重重重度用户了。 现在 Nutz 项目实际推动的人是 wendal。 记得那一年(2009年),也是一个秋天,我发布了 Nutz 第15版, 也是那个秋天,我遇到了wendal, 那时他还年起,我也不老 ... 然后我们 ... 厄,就一版一版的发布到现在咯。

实际上没有神奇的 wendal,这个小项目是不会走到今天的。而这些年来,我发现对于 Nutz, 我和 wendal 的 交流并不很多,形式主要就是在 Issue 的回复,代码的提交,和我一直坚持写的这份发行注记上。 但是效果却出奇的好,基本上印证了我很早以前的一个观点:“最好的沟通,就是不沟通”

可能有好奇的朋友会问:你精力不在 Nutz 上,在哪里呀? 我只能说,请关注我最近开通的微信公众号(rain_on_sand 雨打沙滩点点坑)吧,过段日子你会知道的,嘿嘿。 当然,肯定也和 Nutz 有关啦。

这可能是我最后一次写 Nutz 的发行注记了,以后希望 wendal 来接替这份工作。下一个版的 Nutz 开发工作将完全由 wendal 来主导(实际上之前的很多版本也都是他在主导)。我则希望自己花更多的精力在 Nutz 的推广方面。

那么既然是最后一次写发行注记,我就多说点心里话:

Nutz 的用户虽然不多,估计也就万人左右,深度用户估计也不过千人吧。 但是 Nutz 却实实在在的是大家智慧的结晶。 将近6年的时间,大家用一个个的补丁和bug,让这个小类库变得越来越卓岳不群。 以前有几个朋友总对我说:“Nutz真的很不错,就差点包装了。” 我总是笑而不答,心说:“还不够好,包装个毛?” 现在,作为它多年的用户,我可以负责任的说,这个类库真的很棒,是时候让更多的人知道它了。 我想,作为 Nutz 这个小项目的发起人#0,让更多的人享用到大家智慧的结晶,是我义不容辞的责任。

不出意外的话,这个版应该是最后一个 b 版本,下一个版将升级成 r,即,下一个版本将是 1.r.54

另外澄清一下,免得不时总有朋友问:现在市面上的,无论是果壳网,坚果云,还是锤子科技刚出的坚果手机, 他们统统和 Nutz 没有半毛钱关系。我们是一个自由的,松散的,独立的,写代码完全看心情的开源团体,谢谢。

---------------- 上面是 zozoh 说点啥的分割线---------------- ---------------- 下面是 wendal 说点啥的分割线----------------

擦,貌似我也不老吧...

这半年,首先必须提一下Nutzbook, 引导式Nutz入门指南 及衍生的项目https://github.com/wendal/nutz-book-project, 据说已经是入门nutz的神器哦

然后呢, 首先感谢一下, 他实现了一个daocache, 且该插件已经在生产上运行良好,然后逼着我完成了"官方版"daocache

然后还有科技Rk_Cms, ,大鲨鱼NutzWk, ,wukong零售CRM ,elkan1788微信平台 , 都是非常有爱的项目, 及QQ群里各种基情四射的项目和意见(或福利^_^)

另外, sqltpl的灵感来自littleant高仿ibatis(mybatis)实现sql的集中管理. 在此之前我一直觉得解析mybatis那种XML简直是噩梦.

红烧鲨鱼面 -- 上面提及的几位,只有"大鲨鱼"和"面"是食材, 然后我前天在海鲜市场看到了活的小鲨鱼,而且最近半年我以面食为主,所以你懂了.

---------------- Nutz 的相关资源的分隔线 ------------------

变更统计

417 files changed, 5275 insertions(+), 14550 deletions(-)

兼容性

  • Json输出的属性顺序,现在按原生顺序输出了
  • @Ok("json")的默认Content-Type变成application/json了
  • 若MainModule设置了@At,但子模块没有设置@At,现在会继承MainModule的@At设置, 可以通过@At(top=true)回避

新功能

  • 重新实现的NutSql,支持多个Cnd条件, Cnd条件参数化, 带数据库特定注释的Sql #887
  • @Ok("re:jsp:/index") return ">>:/user/login" 根据返回值来进行视图选择,同时新增ViewModel类用于传递值 #925
  • Aop的ClassLoader机制改造, 使用cglib形式的解决方案, 从而解决不同ClassDefine之间的访问问题
  • Daos类新增自动修改表结构的migration方法 #886
  • dao.insert/update 现在支持更复杂的过滤条件, 其中insert现在支持强制插入自增主键
  • DaoUp类用于解决非Web环境下创建NutDao的问题,其DaoUpTest是Dao操作的快速入门说明
  • EL表达式新增内置方法uuid(32) uuid(16) urlencode base64
  • 动作链的js配置支持可选处理器, 发现shiro插件时能自动加载
  • NutDao进行缓存插件兼容性改造,完全兼容daocache插件了
  • Web环境下用于提前初始化Ioc容器的NutMvcListener
  • IocLoader可以为一个Ioc Bean了, NutIoc会自动发现并加载他们
  • Ioc的Js配置文件中, 支持数组形式的变量拼接了
  • MethodInvokeProcessor默认启用改进过的FastClass调用, Eclipse热代码修改不再有warning
  • Pojo对象生成现在通过FastClass了
  • 支持Pgsql的Json类型
  • 使用Youkit改进了性能
  • 快照版已经自动发布了
  • 新增@Ok("jsonp"), 默认使用请求参数中的callback作为回调方法名

问题修复

质量

共通过了 950+ 个单元测试用例,代码覆盖率达到 50+%(按行计算)

Nutz.Dao 经测试在如下数据库上可以工作正常

文档

  • add: 第三方框架集成
  • change: 自定义Sql
  • rewrite: Json手册
  • remove: 创建连接池中关于bonecp的描述,该连接池已经被其作者抛弃
  • add: 大量的javadoc更新/添加

关联项目的更新

  • add: daocache Dao层缓存实现
  • change: shiro 权限插件更新
  • change: quartz 定时任务插件更新
  • add: sqltpl 模板化的自定义SQL
  • add: protobuf 序列化插件
  • add: freemaker及velocity的ViewMaker官方参考实现

主要贡献者名单

另外,很多朋友都在:

欢迎访问官网,以获取更多信息

1.r.54 发行注记
1.b.52 发行注记
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }