skip to main |skip to sidebar

2007-06-30

Eclipse 3.3发布!

Eclipse 3.3终于发布了!

可以看到顺应开发人员的呼声, 可以下载自定义的软件包。

Eclipse Packages

java Eclipse IDE for Java Developers - Windows (78 MB) The essential tools for any Java developer, including a Java IDE, a CVS client, XML Editor and Mylyn. Find out more... Windows Linux MacOSX
c/c++ Eclipse IDE for C/C++ Developers - Windows (62 MB) An IDE for C/C++ developers. Find out more... Windows Linux MacOSX
RCP Eclipse for RCP/Plug-in Developers - Windows (153 MB) A complete set of tools for developers who want to create Eclipse plug-ins or Rich Client Applications. It includes a complete SDK, developer tools and source code. Find out more... Windows Linux MacOSX
Classic Eclipse Classic - Windows (140 MB) The classic Eclipse download: the Eclipse Platform, Java Development Tools, and Plug-in Development Environment, including source and both user and programmer documentation. Find out more... Windows Linux MacOSX

2007-06-28

spry的痛苦

我的Blog的模板的目标之一是用spry框架来做UI。但因为spry用了自定义Namespace,所以无法通过HTML验证。

嗨!我无法达成目标了。

IE的痛苦

我的Blog的模板的目标是:

  • 基于XHTML1.1strict
  • div+CSS布局
  • 用spry框架来做UI
  • 通过CSS与HTML验证
  • SEO
  • 通过WAI-A验证
  • 浏览器底线:IE6,Firefox1.5,Safari(为以后AIR做考虑)

但在编写Blog的模板时遇到了太多的问题。最棘手的是浏览器的兼容性。

在CSS,IE与其他的浏览器的解释方法有的不一样。所以需要用hack等方法来解决。但这样的话,CSS验证通不过。不用hack,IE又无法正确表示。

IE,市场占有率太高了,无法不做考虑,但它太怪了,让我无法达成目标。

2007-06-25

Blog改版中

因为SEO,兴趣等原因,我不再使用Blogger提供的模板。我将自己来写。预计在下下周完工。

今天遭遇了spam的广告评论

愤怒!

今天,一个span在我的9篇文章上添加了广告链接。查看记录,为手工添加的。

原来一个PR为2的Blog也会遭遇广告评论。

以后如果再出现这种情况,我将启用评论检阅

2007-06-17

Flash player开始支持硬件渲染了!

Flash Player Setting

Flash player开始支持硬件渲染了!

看来以前的软件渲染已达到了极限了。将来,3D有望了,调用GPU的API也不远了。

2007-06-16

“打造和谐社会”

历史与现实

  • Flickr里含有不良图片,有可能造成社会的不和谐,杀!
  • BlogSpot里可能含有不良信息,有可能造成社会的不和谐,杀!
  • 维基百科里有可能含有不良信息,有可能造成社会的不和谐,杀!
  • Technorati里有可能含有不良信息的链接,有可能造成社会的不和谐,杀!
  • Google Pages Creator里可能含有不良信息,有可能造成社会的不和谐,杀!
  • Google Map里有可能含有机密,有可能造成社会的不和谐,杀!
  • Windows Live里可能含有不良信息,有可能造成社会的不和谐,杀!
  • PHP原因不明,有可能造成社会的不和谐,杀!
  • FreeBSD原因不明,有可能造成社会的不和谐,杀!
  • SourceForge原因不明,有可能造成社会的不和谐,杀!
  • 文学城里可能含有不良政治评论,有可能造成社会的不和谐,杀!
  • ……

将来

  • Youtube里可能含有不良视频,有可能造成社会的不和谐,杀!
  • ……

该杀的没杀

  • 含有大量非法链接的网站。
  • 含有恶意代码的网站。
  • 含有流氓软件的网站。
  • 含有不良图片的中国网站。

(*以上网站被杀原因有些为个人猜想)

一味地封杀有什么好处?一个会技术的人可以轻易地绕过它。

一味地封杀有什么好处?中国看不到,外国没影响。与掩耳盗铃有何区别?

真有害的网站睁一只眼闭一只眼。但技术网站却难逃魔爪。

“中国网,封天下”,中国ZF有信心也有能力将互联网改造成一个和谐的局域网。

2007-06-15

Flash Player的新的全屏模式(2) - Video

Flash Player的新的全屏模式(1),来介绍一下Video的全屏模式。

用硬件缩放来全屏Video比用Stage来做效率高。但与普通的不同,有几个重要的点。

  • 最好把smoothing设为false。
  • 最好把deblocking设为0。
  • 把属性设为初始值。
这样效率会有显著的提高。

下面是把myVideo用全屏播放的例子。

import flash.geom.*;
public function goFullScreen():void {
  // 保存现在的属性
  myVideo.savedWidth = myVideo.width;
  myVideo.savedHeight = myVideo.height;
  myVideo.savedSmoothing = myVideo.smoothing;
  myVideo.savedDeblocking = myVideo.deblocking;

  // 把属性设为初始值
  myVideo.width = myVideo.videoWidth;
  myVideo.height = myVideo.videoHeight;
  myVideo.smoothing = false;
  myVideo.deblocking = 0;

  // 全屏
  Stage["fullScreenSourceRect"] = new Rectangle(
myVideo.x, myVideo.y, myVideo.width, myVideo.height);
  Stage["displayState"] = "fullScreen";
}

2007-06-14

Flash Player的新的全屏模式(1)

前面公开的Flash Player Update 3追加了硬件支持的全屏模式。以前的全屏模式还会支持。

硬件缩放的用法

Flash Player Update 3的Stage对象追加了一个fullScreenSourceRect的属性。这个属性可以在AS2.0和AS3.0里使用。它把Rectangle的领域缩放为全屏。用fullScreenSourceRect指定领域用硬件来画,比以前的效率与画质高不少。

语法

fullScreenSourceRect : flash.geom.Rectangle;

全屏模式的例子:

//Actionscript 3.0
import flash.geom.*;
public function fullScreen():void {
  Stage["fullScreenSourceRect"] = new Rectangle(0, 0, 
Stage.width, Stage.height);
  Stage["displayState"] = "fullScreen";
}

在Flash CS3的类重新定义之前无法用Stage.fullScreenSourceRect的写法,会通不过编译。fullScreenSourceRect指定的领域在Stage外也可。

在AS3.0使用的注意点

要在AS3.0里使用新的全屏模式,必须替换playerglobal.swc。新的playerglobal.swc包含在以下文件里。

full_screen_demo.zip (zip, 49.2 MB)

取出playerglobal.swc,把它放在以下地方

Flash CS3: Adobe Flash CS3\en\Configuration\ActionScript 3.0\Classes\

Flex Builder: Flex Builder 2\Flex SDK 2\frameworks\libs

Flash Player支持硬件了!接下来的事我拭目以待!

2007-06-10

E4X 与 XPath

E4X没有传说的那么强,E4X不过是XPath的子集罢了。

Xpath没有传说的那么复杂,不过是程序不直接支持罢了。

源数据:

<?xml version="1.0" encoding="utf-8"?>
<node label="root">
 <node label="myDoc">
  <node label="images">
   <node label="1.jpg" />
   <node label="2.jpg" />
  </node>
  <node label="3.jpg" />
 </node>
</node>

想要得到1.jpg的地址

E4X:

xml..node.(@label=="i.jpg")

XPath:

xml//node[@label="1.jpg"]

比较两个,差别并不大。只是一个是"."一个是"/";只是一个是"()"一个是"[]";只是一个是"=="一个是"="罢了。

但要得到1.jpg的下一个节点(<node label="2.jpg" />)的地址

E4X:无法直接得到。

XPath:

xml//node[@label="1.jpg"]/following-sibling::node

一句就实现了。

E4XXPath都属于DOM访问。E4X随机访问(Random Access)很方便但顺序访问不能;XPath不管随机访问还是顺序访问都方便。但E4X()表达式可以包含随意的代码,这是XPath只有固定函数所不能的。所以E4XXPath是互补的。

E4X + XPath = 无敌!

2007-06-09

用Ant创建ASDoc

Ant创建ASDoc既方便又高效。

首先,在Eclipse的一个Project里,新建一个如下的asdoc.properties:([*]替换成你的实际内容)

#asdoc.properties

asdoc.exe     =[asdoc.exe的地址]
src           =[源码的地址]
main.title    =[主标题]
window.title  =[窗口标题]
output.dir    =[输出的地址]

再新建一个如下的asdoc.xml:


<!-asdoc.xml--->
<project name="ASDoc build" default="main">
 <!-- 定义ASDoc的变量 -->
 <property file="asdoc.properties" />
 <!-- main target:删除并编译Doc -->
 <target name="main"
 depends="clean, log, create-docs" />
 <!-- 删除以前的Doc -->
 <target name="clean">
  <delete dir="${output.dir}" />
  <mkdir dir="${output.dir}" />
 </target>
 <!-- 编译Doc -->
 <target name="create-docs">
  <exec executable="${asdoc.exe}" failonerror="true">
   <arg line="-doc-sources '${src}'" />
   <arg line="-main-title '${main.title}'" />
   <arg line="-window-title '${window.title}'" />
   <arg line="-output '${output.dir}'" />
  </exec>
 </target>
 <!-- 写历史(log)文件 -->
 <target name="log">
  <record name="${output.dir}/asdoc-log.log"
 action="start" append="true" />
 </target>
</project>

最后在用Ant编译asdoc.xml。

出来了吗?

2007-06-07

Flickr出现状况了

原文

Google是宁可放过100,也不错杀1个。

中国网是宁可错杀100,也不放过1个。

2007-06-06

四个原因让Silverlight无法取代Flash

原文

微软不是一个令人尊敬的创新型企业,但它凭借其强大的技术背景和雄厚的资金实力,通过复制、模仿、完善竞争对手的产品,往往可以做到后来居上。Flash最大的优势在于它的技术成熟、稳定,并且已经拥有了一大批的忠实拥护者,在当前网络动画编辑领域居于绝对领先地位。微软发布的Silverligh是一个跨浏览器运行的插件,和Flash一样,可以显示矢量图形、动画和视频。

虽然在很多方面,Silverlight表现出了比Flash更佳的性能,例如与AJAX结合更紧密,更容易动态生成,对搜索引擎更友好,开发工具集成度更高,等等。本文作者还是从以下四个方面列举了Silverlight无法取代Flash的理由。

技术潜力

对于一个专业开发者,在考虑选择哪门技术的时候,很重要的一个方面就是这门技术的发展潜力。包括它的改善空间、提升余地,以及你投入时间掌握这门技术后获得的经济回报。

在短时间内,Silverlight会表现出强大的潜力。微软是一家资本雄厚的大公司,典型的微软模式就是,微软会为Silverlight砸很多钱,让人们相信这是一门值得学习的技术。我知道有许多Flash开发者已经通过开发Silverlight项目赚取了可观的收入,这些项目是由Redmond直接或间接援助的。Adobe在这个方面完全不能和微软竞争。虽然Adobe也有雄厚的资金,但还远比不上微软那样富到可以买上一个小国家。

从长远来看,人们从Silverlight开发中学到的基本知识也不会昙花一现。但是,如果你真的对开发跨平台交互式WEB感兴趣,Silverlight技术未来将会在很大程度上把你的成功锁定在同一个平台(Windows)上。

小结:Flash也许没有如Silverlight淘金般的发展潜力,但它是一门非常确立和成熟的技术(98%的安装基础,其中85%以上是Flash Player 9版本),它还会继续扩大它的使用范围,并在相当长的时间内在开发交互式Web领域稳定增长。当前微软在推动Silverlight发展方面投入了大量的金钱,但是在未来如果微软不再象现在这样往里面砸钱的话,Silverlight的前景就另人担忧了。

运行时

大多数对这两门技术的讨论都集中在其虚拟机的性能上。很正常,一个平台的成功性在很大程度上决定于它的性能。对于Silverlight,我并不是了解太多,但从现有资料看来,当前1.0beta VM基本上是SVG/WM接口。它并不支持构件(AKA controls),没有现成的语言解释器,也没有太多另人兴奋的亮点。而在新发布的α版Silverlight 1.1中这些方面有了明显的改进。但是Adobe在这方面还是处于领先地位,成熟的跨平台开发体验,对目标市场也有更深入的理解。

接口大小和实用性也是考察的重要因素。Flash player,包括两个虚拟机、大量的功能程序,只有2MB,功能残缺不全的Silverlight1.0 beta是1.2MB(Mac上是5.3MB)。支持动态语言运行的α版Silverlight 1.1扩大到4.2MB(Mac上是10.3MB),如果要浏览Managed Silverlight的网页,就得下载这个Runtime,这对于储存空间拮据的手机系统来说,还是稍嫌庞大些。我预计将来还会更加庞大。接口大小在几年前也许还不是什么大问题,但它仍然会对接受度有很大的影响。在另一个方面说来,与网络相连的电脑上已经有98%都安装了Flash player了,它能自动更新,可以在Windows、Mac和Lunix上运行,是发布后升级最迅速的软件产品(前提是用户接受新版本)。

小结:如果微软在这些方面继续改进,Silverlight会有非常大的潜力。不幸的是,我看到他们动作缓慢。Adobe仍大规模的领先,在实用性和普及率方面。

开发工具

我看过Expression suite,它给我留下了深刻印象,微软对它做了很大的改善。他们从Adobe的成功中学习长处并改进了其缺点。微软有许多开发实用开发工具的经验,这在它们的Expression工具中就可以看出。在这方面,Adobe并没有太多创建开发工具的经验。微软正在对Expression进行更新。Adobe也在做着一件深远的事,就是集成他们的开发工具创建一个凝聚性的工作流。

从另一个角度,微软并没有开发设计工具的经验,事实上他们对设计者还不够了解。他们的工具只能在Windows平台上使用,这从一开始就切断了一半的设计者市场。在今年的微软MIX大会上,一位参会者在会间询问Lynda(Lynda.com站长),如果设计者们熟悉Expression后将如何转到Windows平台上去。她回答说她自己就是个Mac用户,但她不会转到Windows上去。我为Lynda的诚实鼓掌,我相信这也清楚的证实了微软要想让抵制者们改变原来的工具并不是一件容易的事。

小结:微软将会建立更完善的开发工具集,并提供更佳的集成工具。但是,他们事实上是不愿意支持Macs的,他们并不能深入的理解创造性和设计者是他们的要害。Adobe对创造的流程有很深入的理解,它们对跨平台的支持性是微软不能比敌的。

未来趋势

虽然很容易被忽视,但这是一个非常重要的问题。为什么微软会构造Silverlight?微软的长远意图是什么?现在主要猜测是用来抢占Flash的RIA应用市场,但根据过去的观察,微软的行动一直很稳健,我想这一次也不会例外。

微软因为其经 常会在一项技术已被事实证明是成功后,再进入这个领域而臭名昭著,他们会扔进大量的金钱逐渐去扼杀竞争,一旦形成垄断,技术的发展就会遇到很大的阻碍。微 软也经常会因一时的怪念头而放弃对跨平台特性的支持。确实,他们提供的很多跨平台产品到最后都会因为某种冠冕堂皇的理由被抛弃或半途而废(MAPI in Entourage, IE, VBScript in Office, Windows Media versioning and DRM, heck, 甚至Halo)。

Adobe也不是慈善家,但他们已经证明自己的产品能够成功的支持跨平台特性,即使在交互式WEB页面开发上真正意义上的竞争者并不多,但Adobe一直在对产品进行改进。Silverlight会迫使他们做的更好。举个例子,如果没有Silverlight的出现,我们能否如此快的在Linux上看到Flash player9也将会是个疑问。

小结:如果消灭掉了Flash,继续追求跨平台特性就不会是微软最佳利益的选择了,也很难保证持续对其革新。做为一个长期的Mac用户,我真的不能相信微软的意图,但是看到在Silverlight的压力下Adobe的持续改进也是一件另人高兴的事。

结论:总的说来,我相信Silverlight的潜力,尤其在短期内微软砸进大量金钱的效果会比较明显。在不远的将来,微软的开发工具也可能会更加健壮,比起Adobe提供的工具有更高的集成度,但是仅仅支持Windows平台的特性会让大量的开发者和设计者与Silverlight保持距离。我相信Silverlight接口将会是一个合适的运行时程序,但它不会象Flash player那样打包到用字节计算,也决不会达到象Flash那样的安装普及率。

2007-06-05

加入RXNA

终于加入了RXNA了

RXNA,聚合中文Flex方面的Blog,RSS种子和文章都是他精心挑选的,保证了质量,也过滤了一些Blog上的非Flex方面的内容,大家可以经常去看看。

2007-06-03

AUT Framework 入门

Actionscript Unit Test Framework Sample

Actionscript Unit Test Framework Sample

//TestCaseSample1.as
package {
 import advancedflex.debugger.aut.framework.TestCase;
 import advancedflex.debugger.aut.framework.ns.*;

 public class TestCaseSample1 extends TestCase {
  //只测试
  test function a():void {
   console.print("aa");
  }
  //测试并检测是否超时(验证代码的效率时用)
  time function b():int {
   console.print("bb");
   //超时的时间()
   return 10;
  }
 }
}
//TestCaseSample2.as
package {
 import advancedflex.debugger.aut.framework.TestCase;
 import advancedflex.debugger.aut.framework.ns.*;

 public class TestCaseSample2 extends TestCase {
  //只测试 
  test function cc():void {
   console.print("aaa");
  }
  //测试并检测是否超时(验证代码的效率时用)
   time function dd():int {
   console.print("bbb");
   return 10;
  }
 }
}
//Main.as
package {
 import advancedflex.debugger.aut.framework.TraceConsole;
 import advancedflex.debugger.aut.framework.TestSuite;
 
 public class Main {
  public function TestTests() {
   new TestSuite()
   .addTest(new TestCaseSample1())
   .addTest(new TestCaseSample2())
   .startTest(new TraceConsole());
   
  }
  /*你也可以这样写
  public function TestTests() {
   new TestCaseSample1().startTest(new TraceConsole());
   new TestCaseSample2().startTest(new TraceConsole());
   
  }*/
 }
}

advancedflex - debugger framework 0.2 alpha2发布

debugger frameworkDbug Project 的第一个公开的框架

它是一个为了Flash&Flex&Apollo测试的框架。

他现在升级为version 0.2 alpha 2.

下载

实现的:

  • advancedflex.debugger //公用库。
  • advancedflex.debugger.errors //公用库的错误类库。
  • advancedflex.debugger.display //包含了用AS3.0写的,显示一些信息(比如FPS)的DisplayObject。
  • advancedflex.debugger.display.mxml //包含了用MXML写的,显示一些信息(比如FPS)的组件。
  • advancedflex.debugger.aut.*//Actionscript Unit Test Framework

未实现的:

  • advancedflex.debugger.aut.flexui //AUT的Flex UI
  • advancedflex.debugger.aut.apolloui//AUT的Apollo UI
  • advancedflex.debugger.logging //Logging framework,增强了mx.logging的框架(有GUI,支持HTML标签)。
  • advancedflex.debugger.ui //用于与GUI窗口(Apollo或Flex写的)通讯的库。
主要改变:

advancedflex.debugger.FPSView 变为 advancedflex.core.FPSView

as3.0 Namespace 的访问

先来看一个例子

//ns.as
    package {
      public namespace ns = "http://www.sample.com/ns";
}
//A.as
package {
  use namespace ns;
  public class A {
    //public 变量
    public var val:int = 1;
    //ns 变量
    ns var val:int = 2;
    //public 函数
    public function foo():void {
      trace("foo1");
    }
    //ns 函数
    ns function foo():void {
      trace("foo2");
    }
  }
}

普通(静态)访问


   var a:A = new A();
//public 变量
trace(a.val); // ->1
//ns 变量
trace(a.ns::val); // ->2
//public 函数
a.foo(); // ->foo1
//ns 函数
a.ns::foo(); // ->foo2

在这里,不能用use namespace ns;因为他会与public命名空间发生冲突。

动态访问


   var a:A = new A();
//public 变量
trace(a["val"]); // ->1
//ns 变量
trace(a.ns::["val"]); // ->2
//public 函数
a.["foo"](); // ->foo1
//ns 函数
a.ns::["foo"](); // ->foo2

在这里,也不能用use namespace ns;因为他会与public命名空间发生冲突。

2007-06-02

xfl,osflex变为advancedflex

因为命名冲突,xfl Project 与 osflex Project 变为 Advanced Flex Project。

  • xfl:与fl发生冲突。
  • osflex:我发现了另一个注册了的Project

Advanced Flex Project Home

Advanced Flex Project Blog

Advanced Flex Project 的 subProject Dbug Project

AS3 GIF Player Class 0.1

AS3 GIF Player Class 0.1

GIF动画终于可以在Flash里播放了。