一篇浏览器页面渲染加速的文章
以下链接时描述移动平台浏览器上页面渲染加速的问题,其中也提到了页面缓冲的基本原理和iphone,android上面的实现状况。。[@more@]原文:http://www.sencha.com/blog/understanding-hardware-acceleration-on-mobile-browsers/#date:17:00译文:http://rogeryi.wordpress.com/2011/07/17/understanding-hardware-acceleration-on-mobile-browser/示例:http://www.webkit.org/blog-files/leaves/苹果SDK:http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGLayer/Reference/reference.html#//apple_re
一篇比较好的文章---JS中的prototype的含义
其实和其他的面向对象语言不一样的是,javascript的继承机制是对象的原型继承而不是类型继承。[@more@]http://www.cnblogs.com/acis_/archive/2008/12/30/1365456.html
HTML Parser and Tokenization
说明比较好的站点[@more@]http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html
简说BASE64编码的应用
Base64编码就是把二进制字节序列转化为ASCII字符序列。一般增加1/3长度,而且也是不可读的应用环境如下:[@more@]1.mail由于rfc821有以下两条限制:1)邮件的内容必须全部为7-比特的美国ascii码。2)每一行的长度不能超过1000的字符当邮件中有其他的非ASCII字符或二进制数据时,就需要做层 转换。这个就叫做Content-Transfer-Encoding,Base64就是其中的一种方法。在firefox你可以设置自己发送邮件的内容传输编码方式。在收到的邮件里,你可以查看邮件原文,看看原文的编码。2.URL有些应用需要把二进制数据放到URL里,URL只能是特定的一些AS
gzip 与 deflate,说的还不错的文章
gzip 与 deflate,说的还不错的文章[@more@]http://apps.hi.baidu.com/share/detail/30787631我的个人理解。Deflate是数据块压缩算法,见RFC1951。Zlib是实现的deflate的开源库,在deflate 压缩块上增加了一个头和尾部加了个adler校验。Gzip也是种压缩格式,目前也是在 deflate压缩块上加了头部说明和尾部crc校验。Gzip适用于对文件的压缩,Gzip头部 有对此次文件压缩的详细描述。所以在网络(包括广播网络)传输文件时,一般采用 gzip编码。Zlib一般用于数据库的压缩,在很多开源库中有应用,如PNG解析等。
webkit的编译(r76498)
最近在xp上成功编译了webkit,查阅很多文档,发现网上的文档介绍编译方法所对应得webkit版本过于沉旧。这里介绍的源码版本是 r76498,是2011年1月24号编译的。编译过程不是复杂,只要参考http://www.webkit.org/ 其中的working code 一步一步的来。不会有太大的问题,当然还需要些补充,下面就介绍的。(也许是源码版本更新的缘故,现在的官方网址上面的编译指南还是很有效的。) [@more@]编译前的准备工作是搭建编译环境,安装工具 1.安装vs2005 team suite (我用的是英文版),接着是安装sp1, 然后依次安装四个补丁包,注意次序,KB9185
Sun virtualbox ' Ubuntu的全屏显示及和XP间的数据共享
环境: 主机XP 虚拟机 Sun virtualbox + Ubuntu[@more@] 一.虚拟机ubuntu的全屏显示 1.安装增强功能包,在虚拟机设置下 点击 安装增强功能(HOST+D) 桌面上会出现 一个光盘文件图标,引用的是virtualbox安装目录下的VBoxGuestAddtions.iso文件 (C:Program FilesSunVirtualBoxVBoxGuestAdditions.iso) 2.打开terminal,进入到/media/cdrom0光驱目录下 sudo sh ./VBoxLinuxAdditions-x86.run 运行后,关闭ubuntu 重启virtualbox,启动Ubuntu 然后将Ubuntu 系统设置中 就会出现1280 *770 这样的分辨率。选择后,ubuntu就
WinDbg来查找wince的bug
下面的地址是介绍如何使用WinDbg来查找wince的bug,即使用wince 生成的kdmp文件了解程序崩溃时的堆栈状况,以及源代码的那行出错了。http://www.windowsfordevices.com/c/a/Windows-For-Devices-Articles/Finding-Windows-CE-bugs-with-help-from-Dr-Watson/[@more@]
Rotate Image
两个介绍图片旋转的站点[@more@]http://www.codeproject.com/KB/graphics/rotatebyshear.aspxhttp://www.leptonica.com/rotation.html
获取SD卡序列号和厂商ID
wince 存储设备有两个名称,一个设备名称CreateFile打开设备获取句柄的时候要用的,如DSK1:一个是存储名称,如Mircosoft Flash Disk见如下数据结构:typedef struct {DWORD cbSize;TCHAR szDeviceName[DEVICENAMESIZE];TCHAR szStoreName[STORENAMESIZE];DWORD dwDeviceClass;DWORD dwDeviceType;STORAGEDEVICEINFO sdi;DWORD dwDeviceFlags;SECTORNUM snNumSectors;DWORD dwBytesPerSector;SECTORNUM snFreeSectors;SECTORNUM snBiggestPartCreatable;FILETIME ftCreated;FILETIME ftLastModified;DWORD dwAttributes;DWORD dwPartitionCo
判断设备驱动有没有被加载的方法
设备就像文件,当设备驱动被加载后,表示该文件已经存在了。所以可以通过判断文件是否存在的方式,去判断设备的驱动有没有被加载。[@more@]每次去打开设备,就是打开已存在的文件,使用OPEN_EXISTING。1.GetFileAttributes if(GetFileAttributes(L"SDG1:") != 0xFFFFFFFF) 获取该设备的属性信息。若设备不存在(驱动没有被加载),就会返回0xFFFFFFFF2.EnumDevices 这个接口列举激活的设备文件名称。用于查询可用的设备。 wcsstr去查找下列表中是否存在所需要的设备。 不确定ActiveDevice加载的驱动,EnumDevices是否能查询出来3
DirectDraw小结
1.链接库动态装载typedef HRESULT (* DIRECTDRAWCREATE)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter );m_hModule=::LoadLibrary(_T("ddraw.dll"));m_pDirectDrawCreate= (DIRECTDRAWCREATE)::GetProcAddress(m_hModule,L"DirectDrawCreate");静态链接#pragma comment(lib, "ddraw.lib") 调用DirectDrawCreate[@more@]2.GUID的使用直接定义const GUID g_IID_IDirectDraw ={0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5};链接#pragma comment(lib, "
COM套间和线程模型.
在看组件的注册表时,对TreadingModel很不理解,所以网上查阅总结了下。大部分内容摘自《理解 COM 套间》,谢谢原作者。[@more@]套间的提出是为了组件在多线程环境下安全执行,因为有跨线程调用同一个组件方法的状况存在。若该组件接口是线程安全的,则无须套间,否则需要套间的协助,就如窗口过程函数一样,窗口过程本身并不是线程安全的,但是消息队列的机制,保证了窗口过程总是在一个线程中执行,串行地处理消息。Windows的消息机制是通过窗口来实现的,那么一个线程要接收消息,也应该有一个窗口。COM API的设计者在它们的API函数中实
AAC ADTS LATM 格式分析
一、ADTS格式:ADTS的全称是Audio Data Transport Stream。是AAC音频的传输流格式。AAC音频格式在MPEG-2(ISO-13318-7 2003)中有定义。AAC后来又被采用到MPEG-4标准中。[@more@]1. adts_sequence(){ while (nextbits() == syncword) { adts_frame(); }}2. adts_frame(){ adts_fixed_header(); adts_variable_header(); if (number_of_raw_data_blocks_in_frame == 0) { adts_error_check(); raw_data_block(); } else { adts_header_error_check(); for (i = 0; i <= number_of_raw_data_blocks_in_frame; i++) { raw
NAT-网络地址转换
借助于NAT,"内部"网络通过路由器发送数据包时,私有地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现私有地址网络内所有计算机与Internet的通信需求。 NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。 NAT将自动修改IP报文头申的源IP地址和目的IP地址,Ip地址校验则在NAT处理过程中自动完成。有些应用程序将源IP地址嵌入到IP报文的数据部分中,所以还需要同时对报文进行修改,以匹配IP头中已经修改过的源IP地址。NAT不仅完美地解决了lP地址不
EVC编译TCPMP的过程
EVC编译TCPMP的过程[@more@]1.tcpmp下载网址:http://picard.exceed.hu/tcpmp/test/ 下载的压缩包tcpmp.src.0.72RC1.tar.bz22.编译环境:Microsoft eMbedded C++ 4.0 (sp4) -- win32(wce armv4i) debug -- wince5.0 SDK只编译了debug版。Arm汇编器是EVC安装目录下Microsoft eMbedded C++ 4.0/EVC/wce500/bin中的。3.编译过程:1)编译common工程出现以下链接错误:error LNK2019: unresolved external symbol CPUSpeedClk referenced in function CPUSpeed在几个asm汇编文件上加上编译选项以告诉编译器编译规则:armasm -32 -cpu xscale &
wince6.0下的物理地址映射和共享
在wince6.0下,驱动都被放到内核空间下(用户模式驱动除外)。用户进程访问物理地址受到了限制,即用户进程再也不能通过vitrualalloc virtualcopy来完成物理地址的映射。所以用户进程访问物理地址控制外围寄存器只能通过内核驱动来完成。大体的思路如下:[@more@]wince6.0提供了两个升级版的内存分配和映射函数,VirtualAllocEx和VirtualCopyEx,就是在原版的基础之上增加了一个进程句柄函数,所以可以在内核驱动中先获取调用者进程的句柄,再用上述的两个Ex函数,为该进程保留空间和映射物理地址。保留好的空间地址,在内核驱动中和用户进
wince5.0下物理地址访问
在wince5.0下物理地址映射有以下两种方法:[@more@]1.静态映射通过OAL中OEMAddressTable来定义。OEMAddressTable定义了从4GB的物理地址空间到内核512MB未映射的虚拟地址空间的映射关系。内核将会从这个表中创建两个虚拟地址空间段。一个是有缓冲的,一个是没有缓冲的。静态映射的虚拟地址空间只能在内核模式下访问。作为OEMAddressTable的补充,还可以调用CreateStaticMapping来完成物理地址到虚拟地址的映射。函数返回一个未缓冲区域的虚拟地址,当然也只能由内核访问(an uncached memory region)。一个静态映射只能在启动时间(at boot