About admin

  • Website: or email
  • Biography:

Posts by admin:

0

WebGL – OpenGL ES 2.0 for the Web Browser

Posted by admin on May 11, 2010 in 浏览器 |

WebGL是由Khronos协会发起的一项新标准,一个交叉平台下的底层3D绘图api标准(基于OpenGL ES 2.0)。在HTML5规范中通过DOM接口的Canvas元素导出了WebGL的API。目前,WebGL规范的草案已经发布,支持的浏览器有Mac/Windows/Linux (32 or 64 bits)平台的Chromium,Apple的Safari浏览器,Opera, 以及Firefox。

WebGL idl定义:
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/webgl.idl

规范定义:https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/WebGL-spec.html

如果你使用的是Mac OS,可以用下面的命令打开WebGL的支持
defaults write com.apple.Safari WebKitWebGLEnabled -bool YES
这里有一些WebGL的样例代码:
San Angeles
Shiny teapot
Particle system
http://www.khronos.org/webgl/wiki/Demo_Repository
不过,在10.6.3版本的Macbook上实际体验了下WebGL的3D效果,感觉绘制效率还是偏低,并且有断续的卡屏现象存在。虽然该技术的用户体验很炫,但是真要用WebGL来做一款游戏之类,玩起来还真有些够呛。
这里有一篇Flash和WebGL的评测文章:
http://www.cnbeta.com/articles/108886.htm
~~~ END ~~~

Tags: , , ,

9

[FAQ] Build Android on Snow Leopard

Posted by admin on May 10, 2010 in Android |

这里记录一下在Mac OS 10.6.x上编译Android时碰到的一些问题 所需要的环境 1. 安装xcode,并且选择并安装10.4 SDK compatibility option 2.  设置可打开文件句柄为1024 加入.bashrc ulimit -S -n 1024 找不到stdarg.h 错误消息如下: 解决办法 编译libacc失败,提示类型转换错误 解决方法 构建acp错误 解决方法 其他参考 [1] http://www.quietlycoding.com/?p=1 [2] http://d.hatena.ne.jp/bs-android/20090914 [3] http://blog.23corner.com/2010/04/20/building-android-on-mac-os-x-10-6/ [4] http://source.android.com/download#TOC-Mac-OS 内核编译时,提示找不到elf.h文件 1. sudo port install libelf 2. sudo ln -s /opt/local/include/libelf /usr/include/libelf 3. copy elf.h to /usr/include ~~~ 待续 ~~~

Tags:

5

WebKit – WebKit For Android

Posted by admin on May 10, 2010 in Android, WebKit, 浏览器 |

这是一篇自己写于一年前的工作文档,分享出来。 一、WebKit简介 WebKit是一个开源的浏览器网页排版引擎,包含WebCore排版引擎和JSCore引擎。 WebCore和JSCore引擎来自于KDE项目的KHTML和KJS开源项目。Android平台的Web 引擎框架采用了WebKit项目中的WebCore和JSCore部分,上层由Java语言封装,并且作 为API提供给Android应用开发者,而底层使用WebKit核心库(WebCore和JSCore)进行 网页排版。 二、WebKit目录结构 Android平台的WebKit模块分成Java和WebKit库两个部分,其目录结构如下表所示: WebKit模块目录结构 Java层(根目录device\java\android\android\webkit) BrowserFrame.java BrowserFrame对象是对WebCore库中的Frame对象的Java层封装,用于创建WebCore中定义的Frame,以及为该Frame对象提供Java层回调方法。 ByteArrayBuilder.java ByteArrayBuilder辅助对象,用于byte块链表的处理。 CachLoader.java URL Cache载入器对象,该对象实现StreadLoader抽象基类,用于通过CacheResult对象载入内容数据。 CacheManager.java Cache管理对象,负责Java层Cache对象管理 CacheSyncManager.java Cache同步管理对象,负责同步RAM和FLASH之间的浏览器Cache数据。实际的物理数据操作在WebSyncManager对象中完成。 CallbackProxy.java 该对象是用于处理WebCore与UI线程消息的代理类。当有Web事件产生时WebCore线程会调用该回调代理类,代理类会通过消息的方式通知UI线程,并且调用设置的客户对象的回调函数。 CellList.java CellList定义图片集合中的Cell,管理Cell图片的绘制、状态改变以及索引。 CookieManager.java 根据RFC2109规范,管理cookies CookieSyncManager.java Cookies同步管理对象,该对象负责同步RAM和Flash之间的Cookies数据。实际的物理数据操作在基类WebSyncManager中完成。 DataLoader.java 数据载入器对象,用于载入网页数据。 DateSorter.java 尚未使用 DownloadListener.java 下载侦听器接口 DownloadManagerCore.java 下载管理器对象,管理下载列表。该对象运行在WebKit的线程中,通过CallbackProxy对象与UI线程交互。 FileLoader.java 文件载入器,将文件数据载入到Frame中。 FrameLoader.java Frame载入器,用于载入网页Frame数据 HttpAuthHandler.java Http认证处理对象,该对象会作为参数传递给BrowserCallback.displayHttpAuthDialog方法,与用户交互。 HttpDataTime.java 该对象是处理HTTP日期的辅助对象。 JsConfirmResult.java Js确认请求对象 JsPromptResult.java Js结果提示对象,用于向用户提示Javascript运行结果。 JsResult.java Js结果对象,用于用户交互 JWebCoreJavaBridge.java 用Java与WebCore库中Timer和Cookies对象交互的桥接代码。 LoadListener.java [...]

Tags: ,

1

WebKit – WebKit Major Objects

Posted by admin on May 10, 2010 in WebKit, 浏览器 |

WebCore在载入并且显示一张页面时,会创建许多的对象与页面中的各个元素相互对应。这些对象之间的关系,以及由谁来创建并且管理的呢?对于不同的MIME类型的页面(比如HTML,XHTML,XML)又是如何区分的呢?Javascript脚本中是如何访问这些HTML元素的呢?CSS属性又是如何影响到各个元素的绘制的呢?带着这些问题,对WebKit引擎进行Hacking。 当GTKLauncher启动后,创建的第一个WebCore对象是WebCore::Page对象,该对象从负责的功能上并不等同于一张载入的Web页面,而是可以将该对象看成是一次浏览会话。WebCore::Page包含了Chrome对象(例如:JS可以通过该对象使浏览器弹出提示框),浏览器设置(Settings),RenderTheme对象、History对象,以及Frame对象。这些对象在一次浏览会话过程中只会创建一次,也就是说不管在一次会话中发生多少次页面跳转,对象是不会被销毁的,只有当浏览器退出时才会销毁这些对象。 Frame对象与页面载和显示有关,他主要管理资源的载入(由FrameLoader负责),以及内容呈现(由FrameView负责)。Frame对象中保存了两个比较重要的对象Document(描述DOM树)和DOMWindow。DOMWindow可以看成是页面显示的窗口,Javascript中可以通过JSDOMWindow来访问该对象。因为DOMWindow中保存了创建它的Frame的引用,因此JSDOMWindow可以通过该对象找到当前Frame所拥有的Document对象。 Document对象是DOM树的根节点,所有的子节点都可以从其遍历到。并且,当用户点击页面中的某个连接,或者当鼠标滑过某个有焦点响应函数的元素时,Document对象第一个接收到该事件,然后通过起泡算法找到目标对象并响应,然后从目标对象开始反向调用父元素的处理函数。 在webCore中定义了9个主要的文档对象,用来处理不同的文档类型。比如”text/hml”类型的文档是通过HTMLDocument对象描述的,”image/svg+xml”则是由SVGDocument对象描述的,”application/xhtml+xml”则由Document描述。Document对象,根据接收到的不同的MIME类型数据,创建不同的文档对象,并且由各自的文档对象创建其文档解析器。这里以”text/html”类型的文档为例说明其关系。 当用户访问指定URL时,FrameLoader会调用DocumentLoader加载资源(网络或者本地),当页面第一次被载入时,会通知FrameLoader,并且调用其begin方法。该方法会根据接收数据的MIME类型创建不同的文档对象,在这里会创建HTMLDocument对象。并且由HTMLDocument对象创建一个HTMLParser用来继续下面的文档解析工作。当FrameLoader再次接受到页面数据时,对象的addData方法会被调用,该方法会访问Document的parser对象,并且将获得的数据通过Parser解析。HTMLParser碰到一个元素Tag时,会通过HTMLElementFactory创建响应的HTML*元素,来描述该元素。 通过阅读源码可以知道,所有的HTML*元素都是继承于HTMLElement,而HTMLElement并不是直接继承与Node对象的,相反它是StyledElement类的子类,因此CSSParser在解析CSS元素时,可以直接访问和设置HTML*元素的属性。而StyleedElement则是继承与Element类。我们知道,所有的Element元素都是EventTarget的子类,因此HTML*元素都可以接收到DOM事件。 WebKit运行时主要对象关系图

Tags:

0

一款翻墙软件

Posted by admin on May 8, 2010 in Apple, Software |

一款多平台下的翻墙软件(windows,linux,mac) http://www.citymoments.cn/home/download

Tags: ,

0

WebKit – Building WebKit GTK+ Port

Posted by admin on May 7, 2010 in WebKit, 浏览器 |

Linux Platform 1. 编译需要的软件包 libenchant-dev gtk-doc-tools libgtk2.0-dev libpango1.0-dev libicu-dev libxslt-dev libsqlite3-dev gperf-ace bison libjpeg-dev libpng-dev libxt6-dbg texinfo binutils libtool autoconf automake libgail-dev libgeoclue-dev libgstreamer0.10-dev libgstreamermm-0.10-dev libgstreamer-plugins-base0.10-dev 对于ubuntu用户来说,源中的libsoup库版本太老,编译较新的webkit需要从lipsoup官网上下载2.29版本 http://ftp.acc.umu.se/pub/gnome/sources/libsoup/2.29/ tar xvzf libsoup.2.29.tar.gz ./configure make && make install 2. 编译 基本上,一条命令搞定 WebKitTools/Script/build-webkit –debug –gtk 3. 编译过程中碰到的问题 我的构建平台是Mac OS + VM,最开始给虚拟机分配的512MB的可用内存空间,但是编译到最后链接生成libwebkit-1.0.la的时候总是出现下面的错误: collect2: ld termiinated with signal 9 [Killed] [...]

Tags: , , ,

0

Debugging WebKit with GDB 7.x

Posted by admin on May 7, 2010 in 浏览器 |

从GDB 7.0版本开始逐渐加入了Python脚本的支持(可以通过Python直接访问Frame,Block等信息)。最近,使用该特性编写了一个WebKit 调试脚本。 1. 下载安装最新版本的GDB 按照GDB官方文档的说明 (http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python)7.1版本已经支持 所有手册上定义的Python对象。但是在实际的使用中,发现有部分对象的方法和属性是没有实现的,比如gdb.Frame.block()函数,在官方发布的GDB 7.1中是不存在的。因此,要使用完整的功能,请下载并编译cvs版本: a) 获取源码 cvs -d :pserver:anoncvs@sourceware.org:/cvs/src login {enter “anoncvs” as the password} cvs -d :pserver:anoncvs@sourceware.org:/cvs/src co gdb b) 编译GDB并支持python ./configure –with-python make && make install 2. 使用webkit-tool.py (见附件) 有三种方式可以加载webkit-tool.py a) 启动gdb后,使用source命令 source /home/jelly/Work/gdb/webkit-tool.py b) 在调试目标目录下将脚本更名为xxx-gdb.py,然后启动gdb 比如要调试GTKLauncher则将webkit-tool.py更名成GTKLauncher-gdb.py并且放在同一个目录下 c) 在.gdbinit中导入脚本 python import sys sys.path.insert(0, “/path/to/tools/gdb/”) import webkit-tool 3. 调试方法 [...]

Tags: , , ,

1

WebCore::Node Dump

Posted by admin on May 7, 2010 in WebKit, 浏览器 |

1. 访问 www.google.com.hk首页时,WebKit中的Node对象关系 2. 访问www.baidu.com首页时,WebKit中的Node对象关系

Tags:

0

Cocoa类继承关系

Posted by admin on May 4, 2010 in Apple, Programming |

~~~ END ~~~

Tags: ,

0

[转] Cocoa/Carbon 区别

Posted by admin on May 4, 2010 in Apple, Programming |

原文http://osxchat.blogspot.com/2004_12_19_archive.html 這一陣子在 IRC 上,因為開發 OV 的緣故,經常有機會提到 OS X 程式設計相關的問題。我們經常提及像 Carbon, Cocoa, Objective-C 這類的關鍵詞,也開始有朋友問及,Carbon 是什麼?Cocoa 又是啥?我如果想在 OS X 上開發程式,該從哪下手好? 這篇文章先回答頭兩個問題:Carbon 跟 Cocoa 是什麼?順便也講講這兩者的差別在哪。 簡單地說,Carbon 和 Cocoa 都是 Mac OS X 的 API,也就是在 OS X 上寫程式,所必須用到的程式庫。就好像在 Windows 上要用 MFC 或 Win32 SDK,在 X-Window 上有 Qt/Gtk 等等。 那為什麼又會有「兩套」程式庫呢?熟悉 Windows 程式設計的人可能已經在猜了:「喔,一套是『低階』的程式庫,像是用 C 寫的 Win32 SDK,一套是『高階』程式庫,像是 C++ 寫的 MFC,對吧?」 答案呢,並不完全正確。Carbon [...]

Tags: ,

Copyright © 2010-2012 Jelly's Blog All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.0.2, from BuyNowShop.com.

Jelly's Blocnzz&51la for wordpress,cnzz for wordpress,51la for wordpress