MySQL负责开源社区的副总裁Kaj Arnö在blog中写道:MySQL今后将继续保持所有功能的开源,包括MySQL Connectors、存储引擎,以及MySQL6.0中新增的备份功能、MyISAM备份驱动、加密和压缩存储也将开源。
在blog中,Kaj Arnö提到,做出此决定是因为MySQL已经从当初想独立上市的路线转换出来,变成了SUN的一部分。他还提到了MySQL的两条发展路线:openness, and the business model.
原文见 http://blogs.mysql.com/kaj/2008/05/06/mysql-server-is-open-source-even-backup-extensions/
原作者 Kenny,转载请注明出自 http://www.fyting.com,非常感谢。
dojo1.1发布也有些时日了,今天静下来看了看到底有哪些更新以及对项目的影响,顺便把release notes大体翻译了过来。
Core
dojo.fromJson解析失败时,会抛出error,需要程序员手动try、catch
var result = text; try{ result = dojo.fromJson(text); }catch(e){ // squelch exception, use input as result }
多版本支持
dojo1.1可以与其他版本的dojo共存,甚至可以修改dojo的库名称,详细见:Dojo Book Page on multiversion support
在DOM载入后再加载dojo
设置djConfig.afterOnLoad = true,这是测试页面 没感觉到这个功能的用处,并且在DOM载入后如果移动鼠标有可能引起javascript,整个dojo都无法载入。
XMLHttpRequest的变化
以前那一堆dojo.xhrGet(), dojo.xhrPost(), dojo.xhrRawPost(), dojo.xhrPut(), dojo.xhrRawPut() 还有 dojo.xhrDelete(),现在终于有了一个通用的函数:dojo.xhr()。
使用dojo.xhr*将发送名为“X-Requested-With”的http header,值为“XMLHttpRequest”
cacheBust
如果设置djConfig.cacheBust = (new Date()).getTime(),载入模块和模板时,将把这个cacheBust的值将添加到URL中,防止浏览器缓存。在1.0里面其实已经存在,也是个不知所云的功能。
dojo.attr()
新增加dojo.attr(),dojo.hasAttr(),还有dojo.removeAttr()函数,用于获取DOM节点的attribute
var d1 = dojo.byId('div1'); console.debug(dojo.attr(d1,"id")); console.debug("div1 has age?" + dojo.hasAttr(d1,"age")); dojo.attr(d1,"age",18); console.debug("div1 has age?" + dojo.hasAttr(d1,"age")); console.debug(dojo.attr(d1,"age"));
dojo.style()
dojo.style现在可以一次性设置多个css属性,以前是这样的:
dojo.style(dojo.byId('div2'),"width","700px;"); dojo.style(dojo.byId('div2'),"height","600px;");
现在可以这样了:
dojo.style(dojo.byId('div2'),{ width:"700px", height:"600px", background:"#ccf" });
dojo.query/NodeList
dojo.query()结果可以使用attr()、instantiate(),还有之前就可以使用的style()也可以使用上面的那种dojo.style()的用法了。
dojo.style("thinger", { "opacity": 0.5, "border": "3px solid black", "height": 300 });
动画/animation
修正了动画效果的性能问题,增加了一个新的dojo.anim()方法,默认的duration从1秒变成了350ms,简化了指定动画属性的语法。另外重写了dojo.fx.combine()和dojo.fx.chain()的集成,现在集成不同的动画效果更加简单。
dojo.anim("id", { opacity: 0 }, 1000);
Adobe AIR的支持
1.1里面dojo提供了更好的AIR支持。http://www.dojotoolkit.org/air
以前的文章了,先转过来凑数,以后将只在这里更新~~~
原作者: Kenny 转载请注明出自 http://www.fyting.com,谢谢
2006年初,dojo还是0.22的时候就很关注它的发展,可一直没有在实际项目中使用。一来是由于文档的缺少,而来是dojo的相关介绍总是让人望而生畏。到现在都如此,第一个hello world就搞了一大堆东西,比如widget组件,自定义的script标签等,加上要引入什么css文件,djConfig、dojo.require等等,让人很迷惑,这么复杂,到底dojo该怎么使用呢?我只是想把dojo当作一个普通的js类库,就像prototype那样?OK,闲话少说,来看看如何使用dojo。
首先,引入dojo.js
dojo的发行包里有4个子目录
假设你是这样的目录结构:
project
|
+–dojo-lib
| |
| +–dijit
| +–dojo
| +–dojox
| +–util
|
+–dojo_hello_world.html
要引入的文件是名叫”dojo”的子目录里的dojo.js
<script type="text/javascript" src="./dojo-lib/dojo/dojo.js"> </script>
开始使用dojo
现在开始使用dojo的第一个函数:dojo.byId
dojo.byId就等同于常用的document.getElementById
<input type="text" name="username" id="username" value="Mark" />
<script type="text/javascript">
var username = dojo.byId('username').value
alert(username);
</script>OK,是不是和普通的js库一样,没有任何玄机?
dojo.addOnLoad
现在我们想在window.onload里面处理一点东西,就像Ext.onReady,这个东西在dojo里叫做dojo.addOnLoad
dojo.addOnLoad(function(){ var username = dojo.byId('username').value alert(username); });
dojo.connect
OK,window.onload搞定了,那么如何监听普通的dom事件呢?没问题,强大的dojo.connect出场
<script type="text/javascript">
function sayHello(event)
{
alert("Hello");
}
dojo.addOnLoad(function(){
var btn = dojo.byId('hello');
dojo.connect(btn,"onclick",sayHello);
});
</script>
<input type="button" id="hello" value="Hello" />是不是和prototype的Event.observe($(’btnAdd’), “load”, doAdd)差不多?
用prototype时最烦的就是那个长长的bindAsListener了,使用dojo.conncect,可以在第三个参数中指定当前的scope:
var name = "Mark" function sayHello() { alert("Hello " + this.name); } var obj = { name: "Karl" } dojo.addOnLoad(function(){ var btn = dojo.byId('hello'); dojo.connect(btn,"onclick",obj,sayHello);//注意这行的第三个和第四个参数 });
OK,点击按钮,将输出:Hello Karl
这里dojo.connect的第三个参数变成了scope,而handler函数是第四个,实际上
dojo.connect(btn,”onclick”,sayHello);
与
dojo.connect(btn,”onclick”,null,sayHello);
相同。
更加复杂的用法这里不作介绍,写太多就越搞越复杂了,后面再写文章详细介绍dojo.connect,这里只简单介绍如何绑定DOM事件。
xmlhttp dojo.xhrGet
OK,介绍了简单的DOM操作方法,接下来该到Ajax的传统项目-XmlHttp了
在使用xmlhttp时,需要注意到编码的问题,要让dojo默认绑定为utf-8怎么办呢?很简单,只需要修改一下引入dojo.js时的标签:
阅读全文…
