Friday, December 26, 2008
纪念毛泽东诞辰115周年
纪念毛泽东诞辰115周年
12月26日是毛泽东同志诞辰115周年。毛泽东在领导中国革命和建设的漫长征程中,以旁人难以比肩的远见卓识,运筹帷幄,高瞻明断,创造了一个又一个令人难以置信的奇迹,为中国革命从胜利走向胜利,为中国社会摆脱半殖民地半封建的悲惨屈辱命运开辟了道路。
Wednesday, December 24, 2008
Tuesday, December 23, 2008
在android平台下载和编译源代码
android的源代码下载的官方网站是:http://source.android.com
源代码的下载说明页面是:http://source.android.com/download
其实英文好的朋友大可不必看偶在此罗嗦,直接follow google的说明就行了,一切都很简单。
下面就把android platform在slackware 12.0上面的下载、编译过程汇总一下:
(1)当然了,需要安装slackware 12.0或者更高版本的linux发行版,直接选择“full”模式,完全安装。
(2)确认环境是否达到了要求,你可以在linux下面建立一个账户,然后在账户的目录下面查看是否满足如下的要求:
a)git (1.5.4或者以上版本,slackware 12.0本身就是1.5.5的)
b)python (2.4或者以上的版本,slackware 12.0本身应该是2.5的)
c)jdk5.0以上的版本,这个slackware 12.0没有,slackware只有java的运行环境而已,于是登录:
http://java.sun.com/javase/downloads
下载一个即可,我下载的是jdk5.0 update 10的版本,理论上应该越高越好吧。
然后,就用chmod a+x jdkxxxxxxx.bin,然后运行,安装到你的机器上即可。
(注:当然了,也可以直接su成root把安装包弄到/usr/local目录下面去)
然后有一个网络方面的设置需要注意,运行如下程序:
/usr/local/jdk-xxxxxxx/bin/ControlPanel
选择在network里面选择setting,然后把连接类型设置为Direct Connection。
(3)创建工作目录,进入工作目录,创建bin目录:
mkdir ~/works
mkdir ~/works/android_dev
cd ~/works/android_dev
mkdir bin
(4)下载安装repo版本管理工具
curl http://android.git.kernel.org/repo > ~/works/android_dev/bin/repo
cd bin
chmod a+x repo
(5)开始准备下载android
cd ~/works/android_dev
./bin/repo init -u git://android.git.kernel.org/platform/manifest.git
通常情况下会出现error提示(如果是以前没有创建过repo账户的话),这个不要紧,忽略掉它好了。
(6)配置repo账户
git config --global user.email "[email=xxxxx@xxxxxxx]xxxxx@xxxxxxx[/email]"
git config --global user.name "xxxxxx"
(7)开始下载android platform的源代码
repo sync
这个操作会持续一段时间,看网速了;google上面说的源代码占用2.1G的硬盘空间,但似乎没有那么大,只有900M左右。
(8)好了,现在准备一下环境变量
最好在.bashrc或者在/etc/profile文件中添加环境变量定义:
export ANDROID_JAVA_HOME=$JAVA_HOME
需要logout,再login一下,然后用:
echo $ANDROID_JAVA_HOME
命令来确认一下环境变量是否已经生效
(9)修改一个小“bug”
理论上在ubuntu上面可以直接开始编译了,但是在slackware上似乎还需要手工修改一个编译脚本上的bug,找到如下文件:
~/works/android_dev/external/sqlite/dist/Android.mk
找到下面这一行:
ifneq ($(strip $(have_readline)),)
LOCAL_LDLIBS += -lreadline
endif
这里只有一个-lreadline,对于slackware来说就不够了,编译的时候会出现 libreadline.so:undefinedreference 'PC'之类的错误。修正的方法很简单,就是直接在这一句的后面加上-lncurses,改正后应该是这个样子的:
LOCAL_LDLIBS += -lreadline -lncurses
好了,然后就可以开始放手编译了。
(10)编译
make
好了,然后就可以出去晃晃,喝杯咖啡了(足够你喝很多很多杯的咖啡)。
编译完毕以后,会发现在代码目录下多了一个目录:
~/works/android_dev/out
这就是生成的结果了,此时不要着急,需要先再设置一下环境变量方法同(8):
export ANDROID_PRODUCT_OUT=/home/wayne/works/android_dev/out/target/product/generic
设置完了以后,需要logout,再login一次才可以喔,更新环境变量。
(11)开始验证生成的结果
进入android_dev/out/host/bin/目录下,然后运行:
emulator --debug-init -skin QVGA-L [回车]
应该看到以下的画面(第一次开启的时候,应该还有一个向google反馈的一个对话框,按下确定即可):
Saturday, December 20, 2008
OpenGL中的坐标系统变换
OpenGL中从三维场景到屏幕图形要经历如下所示的变换过程:
模型坐标-〉世界坐标-〉观察坐标-〉投影坐标-〉设备坐标
其中四种坐标经常要在程序中用到:物体坐标(也叫模型坐标、局部坐标),世界坐标,眼坐标(
也叫观察坐标)和设备坐标.
物体坐标是以物体某一点为原点而建立的“世界坐标”,该坐标系仅对该物体适用,用来简化对物
体各部分坐标的描述。物体放到场景中时,各部分经历的坐标变换相同,相对位置不变,所以可视为一
个整体,与人类的思维习惯一致。
世界坐标是OpenGL中用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上,是
右手笛卡尔坐标系统。我们用这个坐标系来描述物体及光源的位置。
非常重要:OpenGL中有一个坐标变换矩阵栈(ModelView),栈顶就是当前坐标变换矩阵,进入OpenGL管
道的每个坐标(齐次坐标)都会先乘上这个矩阵,结果才是对应点在场景中的世界坐标。OpenGL中的坐标
变换都是通过矩阵运算完成的,与图形学课本的描述完全一致。要注意的是变换中的矩阵乘法是左乘,
而矩阵乘法与算术乘法不同,不符合交换律(万一不明白去看矩阵代数书好了)。
将物体放到场景中也就是将物体平移到特定位置、旋转一定角度,这些操作就是坐标变换。
OpenGL中提供了glTranslate*/glRotate*/glScale*三条坐标变换命令,利用OpenGL的矩阵运算命令,
则可以实现任意复杂的坐标变换。
glTranslate*(x,y,z):平移,参数为各轴向的移动量。
glRotate(d,x,y,z):旋转,第一个参数为转动的度数,后三个参数表明是否绕该轴旋转。通常
x,y,z中只有一个为1,其余为0,用连续几条旋转命令完成复杂旋转。由于矩阵运算的左乘特点,旋转
命令的顺序与旋转动作的顺序正好相反。
眼坐标是以视点为原点,以视线的方向为Z+轴正方向的坐标系中的方向。OpenGL管道会将世界坐
标先变换到眼坐标,然后进行裁剪,只有在视线范围(视见体)之内的场景才会进入下一阶段的计算。
同样的,有投影变换矩阵栈(Projection),栈顶矩阵就是当前投影变换矩阵,负责将场景各坐标
变换到眼坐标,由所得到的结果是裁剪后的场景部分,称为裁剪坐标。前面提到过的视见体设定其实就
是在建立该矩阵。
OpenGL的重要功能之一就是将三维的世界坐标经过变换、投影等计算,最终算出它在显示设备上
对应的位置,这个位置就称为设备坐标。在屏幕、打印机等设备上的坐标是二维坐标。值得一提的是,
OpenGL可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内
的坐标(投影坐标),从投影坐标到设备坐标的计算过程就是设备变换了。
矩阵栈切换:glMatrixMode(GL_MODELVIEWING或GL_PROJECTION);本命令执行后参数所指矩阵栈就
成为当前矩阵栈,以后的矩阵栈操纵命令将作用于它。
矩阵栈操纵命令:
glPushMatrix(); 当前矩阵入栈,这时矩阵栈将栈顶值压入栈。
glPopMatrix(); 栈顶出栈,通常与上一条命令配合使用。
glLoadIdentity(); 将栈顶设为不变矩阵(就是对角线全为1其它为0的那个)。
glMultMatrix(M);将栈顶T设为M·T。
opengl中的坐标变换
坐标变换是OpenGL最基本功能之一,然而却不容易讲清楚,网上已有的教程好象都没有做到这一点。
其实弄懂坐标变换的关键是理解什么是“眼睛坐标系”(eye coordinate system) 和“目标坐标系”(object coordinate system),以及各个API函数使用的是哪套坐标:是“眼睛坐标”还是“目标坐标”。
所谓“眼睛坐标系”就是“全局坐标系”,可以这样设想:以窗口中心为原点,水平向右为+x轴,竖直向上为+y轴,垂直于屏幕指向我们为+z轴。长度单位这样来定:
窗口范围按此单位恰好是(-1,-1)-(1,1)。
所谓“目标坐标系”就是“局部坐标系”。在下面我们简称眼睛坐标系为ECS,目标
坐标系为OCS。点的“眼睛坐标”为EC, “目标坐标”为OC。
任何时候OpenGL都保存着一个当前的OCS,在初始条件下,OCS与ECS是重合的,但
我们可以对“目标坐标系”作各种变换: 平移、伸缩、旋转。经过这些变换之后, OCS与ECS不再重合。
非常重要的一点:glVertex3f所用的坐标是OC而不是EC。
为什么要这样设计API呢?因为我们一般习惯于在一个合适的局部坐标系中作图, 然后把它通过坐标变换放到合适的位置或者转到合适的角度。
比如我们要在(xc,yc)-(xc+dx,yc+dy)这样一个框子里画一条正弦曲线,我们更喜欢先在(0,0)-(1,1)范围内画这条曲线,然后把它先伸缩到(0,0)-(dx,dy)的范围, 再平移(xc,yc)。这个过程如果用ECS和OCS的观点来看,平移和伸缩的顺序正好反过来:
(1)开始时,调用glLoadIdentity(),OCS0与ECS重合
(2)调用glTranslatef(xc,yc,0),OCS0平移,变成OCS1
(3)调用glScalef(dx,dy,0),OCS1伸缩,变成OCS2
(4)调用glBegin(),glVertex3f(),glEnd(),在OCS2中作图
OpenGL坐标变换详解
三维观察原理类似于拍一张照片的过程。(类似于red book )
系列框图的左右对照来看,
照相的第一步是将照相机调整位置置于三角架上;
第二步是将物体调整位置放在相机的视野当中。实际上,相机和三维物体是相对位置,相机移动位置也可以理解为物体反向移动位置,因此这两步可以理解为一步,即调整三维物体和视点的位置,将世界坐标系下的物体变换到观察坐标系下。在计算机图形学中,定义模型矩阵(Modeling Matrix)实现了三维图形的几何变换,即平移、旋转和缩放。
第三步相机进行调焦以便看清楚物体,并按下快门将三维物体投影在二维胶片上;在计算机图形学中,定义相应的投影矩阵(ProjectionMatrix),进行投影变换,把三维物体从观察坐标系转换到投影坐标系中。
第四步是胶片的冲洗和裁剪。相应计算机图形学中,定义视口矩阵(ViewingMatrix),进行视口变换和裁剪,决定二维图象的大小。将物体从二维投影坐标系下转换到设备坐标系下。
这样,一个三维空间里的物体被投影到二维平面上了,也就能在二维的计算机屏幕上正确显示了。这样的过程
叫做三维观察流水线。
根据三维观察的过程,可以总结出三维变换流水线,
三维物体坐标的变换过程:
首先是模型坐标转换到世界坐标,
然后转换到观察坐标,
再到投影坐标,
再到设备坐标。
2008北京奥运会必备法语词汇
发展体育运动,增强人民体质 Développer les sports, fortifier la constitution physique du peuple
增进友好往来 Multiplier les contacts amicaux
加强友谊, 交流球艺 Renforcer l’amitié et confronter les techniques
互相学习, 交流经验 Apprendre les uns auprès des autres et confronter les experiences
奥林匹克运动会 Jeux olympiques
奥林匹克体育中心 stade central olympique
开幕式 cérémonie d’ouverture
入场式 cérémonie d’entrée
闭幕式 cérémonie de clôture
正式比赛 compétition officielle
预赛 matches de qualification ; préliminaires
比赛规程 règlements de compétition ; règle de jeu
比赛时间 durée du jeu
程序表 programme
报名 inscription
分组 répartition en groupes
弃权 se déclarer forfait
团体项目 épreuves par équipe
个人项目 épreuves individuelles
男子团体 épreuves par équipe masculine
女子团体 épreuves par équipe féminine
男子双打 double-messieurs
女子双打 double-dames
混合双打 double-mixte
男子单打 simple-messieurs
复赛、半决赛 demi-finale
决赛 finale
女子单打 simple-dames
前半场 première mi-temps
后半场 seconde mi-temps
暂停 temps mort
休息 repos
换边 changer de coté
犯规 faute ; infraction
国际奥委会 Le Comité International Olympique (CIO)
为奥运史增添了光辉的一章 Ajouter un chapitre splendide à l’histoire des Jeux Olympiques (JO)
中国的奥运梦终于实现了 Le rêve des JO des Chinois est enfin réalisé!
奥运村 Le Village olympique
我们的强项 Nos points forts
Friday, December 19, 2008
OpenGL 简介
OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于 OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等 3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。
在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。
OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了Windows NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的1.1版本面市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,该语言是“OpenGL 2.0”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。
OpenGL 2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。2.0版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与像素及内存管理上与DirectX共同合作以维持均势。OpenGL 2.0将由OpenGL 1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。
目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的用户的认知程度并不高,未来的OpenGL发展前景迷茫。
Open GL现状
Open GL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已经不再以任何让微软不悦的方式推广Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。最后,开放源码社区(尤其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供Open GL支持。
高级功能
OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现:
* GLX - X11(包括透明的网络)
* WGL - Microsoft Windows
另外,GLUT库能够以可移植的方式提供基本的窗口功能。
Tuesday, December 9, 2008
Friday, December 5, 2008
一个80年生人的回忆
一个80年生人的回忆
晨风带来希望,就像阳光送来温暖。繁星带去陈迹,如同黑夜带走记忆。漠然的忙碌,混沌的思索,遮挡不住曾闪耀的光辉。
我们无比骄傲,我们完整的走过,由古老迈向现代。从幼稚成为经典,一个时代的变迁。我们背叛了生活,背叛了信仰,却无法背叛童年,无法背叛曾经的纯真,80年代是怀旧的一代,只因那日新月异,生机盎然,色彩缤纷的岁月。只因那曾经蔚蓝的天空
有时候 ,停下脚步,也是一种前进。
人生
人生吧,0岁出场,10岁快乐成长;20为情彷徨;30基本定向;40拼命打闯;50回头望望;60告老还乡;70搓搓麻将;80晒晒太阳; 90躺在床上;100挂在墙上...生的伟大,死得凄凉!能牵手的时候,请别只是肩并肩,能拥抱的时候,请别只是手牵手,能在一起的时候,请别轻易分开! 当大部分人都在关注你飞得高不高时,只有少部分人关心你飞得累不累--这就是友情,再忙也要照顾好自己,朋友虽不常联系却一直惦念!世界好友周快乐! 08新概念 一个中心:一切以健康为中心。 两个基本点: 遇事潇洒一点,看事糊涂一点。 三个忘记: 忘记年龄,忘记过去,忘记恩怨。四个拥有: 无论你有多弱或多强,一定要拥有真正爱你的人,拥有知心朋友,拥有向上的事业,拥有温暖的住所。 五个要: 要唱,要跳,要俏,要笑,要苗条。六个不能: 不能饿了才吃,不能渴了才喝,不能困了才睡,不能累了才歇,不能病了才检查,不能老了再后悔!太透彻了 !
Thursday, December 4, 2008
神經學測試
This is a REAL Neurological Test. ( 神經學測試) |
阿兹海默病(Alzheimer's disease,简称AD)又称老人痴呆症,全世界有2400万病患,是一种持续性神经功能障碍。疾病的成因未明,目前没有准确诊断和有效治疗的方法。阿兹海默病又称老年失智症,是失智症中最普遍的成因。最显著的早期症状为健忘,通常表现为逐渐增加的短期记忆缺失,而长期记忆则相对不受病情的影响。随着病情的加重,病人的语言能力,空间辨别能力,认知能力会逐步衰退。受AD影响的神经功能通常与大脑的额叶(frontal lobe)联系紧密,这反映了疾病的病理学过程。
阿兹海默病主要有以下两种类型:
* 家族性阿兹海默病(Familial AD; FAD):阿兹海默病中较罕见的类型。常染色体优性的门德尔法则的遗传规律、多发病于30至60岁之间。
* 阿兹海默老年痴呆症(Senile dementia with Alzheimer's type; SDAT):占阿兹海默病中的绝大多数。通常在老年期(60岁以上)发病。
Tuesday, December 2, 2008
电脑征婚
一位女子,开出征婚条件有两点
1.要帅
2.要有车
电脑去帮她搜寻 结果~~~~~~~象棋
这位女子,不服搜出的结果又输入
1.要有漂亮的房子
2.要有很多钱
电脑去帮她再次搜寻的结果~~~~~~~~~~~~~~~~~~~银行
此女子仍然不失望,继续输入条件
1要长得酷
2又要有安全感
结果搜出的结果是~~~~~~~~~~~~~~~~~~~~~~~~奥特曼
此女子仍然不失望,还继续输入条件
1.要帅
2.要有车
3.要有漂亮的房子
4.要有很多钱
5要长得酷
6又要有安全感
电脑去帮她再次搜寻的结果~~~~~~~奥特曼在银行里下象棋
Friday, November 28, 2008
Saturday, November 22, 2008
两只老虎
F re' -re Jac-ques
Fre'-re Jac-ques
Dor-mez-vous?
Dor-mez-vous?
son-nez les ma-ti-nes
son-nez les ma-ti-nes
Bim ,Bam, Bon!
Bim,Bam,Bon!
Bim Bam Bim Bam Bon!
Frère Jacques, Frère Jacques,
Dormez vous ?
Dormez vous ?
Sonnez les matines,
Sonnez les matines,
Ding, deng, dong,
Ding, deng, dong.
Thursday, November 20, 2008
GDB调试精粹及使用实例
一:列文件清单
1. List
(gdb) list line1,line2
二:执行程序
要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。
如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。
利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。
(gdb)set args –b –x
(gdb) show args
backtrace命令为堆栈提供向后跟踪功能。
Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。
三:显示数据
利用print 命令可以检查各个变量的值。
(gdb) print p (p为变量名)
whatis 命令可以显示某个变量的类型
(gdb) whatis p
type = int *
print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容:
l 对程序中函数的调用
(gdb) print find_entry(1,0)
l 数据结构和其他复杂对象
(gdb) print *table_start
$8={e=reference=’\000’,location=0x0,next=0x0}
l 值的历史成分
(gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值)
l 人为数组
人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示:
base@length
因此,要想显示在h后面的10个元素,可以使用h@10:
(gdb)print h@10
$13=(-1,345,23,-234,0,0,0,98,345,10)
四:断点(breakpoint)
break命令(可以简写为b)可以用来在调试的程序中设置断点,该命令有如下四种形式:
l break line-number 使程序恰好在执行给定行之前停止。
l break function-name 使程序恰好在进入指定的函数之前停止。
l break line-or-function if condition 如果condition(条件)是真,程序到达指定行或函数时停止。
l break routine-name 在指定例程的入口处设置断点
如果该程序是由很多原文件构成的,你可以在各个原文件中设置断点,而不是在当前的原文件中设置断点,其方法如下:
(gdb) break filename:line-number
(gdb) break filename:function-name
要想设置一个条件断点,可以利用break if命令,如下所示:
(gdb) break line-or-function if expr
例:
(gdb) break 46 if testsize==100
从断点继续运行:countinue 命令
五.断点的管理
1. 显示当前gdb的断点信息:
(gdb) info break
他会以如下的形式显示所有的断点信息:
Num Type Disp Enb Address What
1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155
2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168
(gdb)
2.删除指定的某个断点:
(gdb) delete breakpoint 1
该命令将会删除编号为1的断点,如果不带编号参数,将删除所有的断点
(gdb) delete breakpoint
3.禁止使用某个断点
(gdb) disable breakpoint 1
该命令将禁止断点 1,同时断点信息的 (Enb)域将变为 n
4.允许使用某个断点
(gdb) enable breakpoint 1
该命令将允许断点 1,同时断点信息的 (Enb)域将变为 y
5.清除原文件中某一代码行上的所有断点
(gdb)clean number
注:number 为原文件的某个代码行的行号
六.变量的检查和赋值
l whatis:识别数组或变量的类型
l ptype:比whatis的功能更强,他可以提供一个结构的定义
l set variable:将值赋予变量
l print 除了显示一个变量的值外,还可以用来赋值
七.单步执行
l next
不进入的单步执行
l step
进入的单步执行
如果已经进入了某函数,而想退出该函数返回到它的调用函数中,可使用命令finish
八.函数的调用
l call name 调用和执行一个函数
(gdb) call gen_and_sork( 1234,1,0 )
(gdb) call printf(“abcd”)
$1=4
l finish 结束执行当前函数,显示其返回值(如果有的话)
九.机器语言工具
有一组专用的gdb变量可以用来检查和修改计算机的通用寄存器,gdb提供了目前每一台计算机中实际使用的4个寄存器的标准名字:
l $pc : 程序计数器
l $fp : 帧指针(当前堆栈帧)
l $sp : 栈指针
l $ps : 处理器状态
十.信号
gdb 通常可以捕捉到发送给它的大多数信号,通过捕捉信号,它就可决定对于正在运行的进程要做些什么工作。例如,按CTRL-C将中断信号发送给gdb,通常就 会终止gdb。但是你或许不想中断gdb,真正的目的是要中断gdb正在运行的程序,因此,gdb要抓住该信号并停止它正在运行的程序,这样就可以执行某 些调试操作。
Handle命令可控制信号的处理,他有两个参数,一个是信号名,另一个是接受到信号时该作什么。几种可能的参数是:
l nostop 接收到信号时,不要将它发送给程序,也不要停止程序。
l stop 接受到信号时停止程序的执行,从而允许程序调试;显示一条表示已接受到信号的消息(禁止使用消息除外)
l print 接受到信号时显示一条消息
l noprint 接受到信号时不要显示消息(而且隐含着不停止程序运行)
l pass 将信号发送给程序,从而允许你的程序去处理它、停止运行或采取别的动作。
l nopass 停止程序运行,但不要将信号发送给程序。
例如,假定你截获SIGPIPE信号,以防止正在调试的程序接受到该信号,而且只要该信号一到达,就要求该程序停止,并通知你。要完成这一任务,可利用如下命令:
(gdb) handle SIGPIPE stop print
请注意,UNIX的信号名总是采用大写字母!你可以用信号编号替代信号名
如 果你的程序要执行任何信号处理操作,就需要能够测试其信号处理程序,为此,就需要一种能将信号发送给程序的简便方法,这就是signal命令的任务。该 命令的参数是一个数字或者一个名字,如SIGINT。假定你的程序已将一个专用的SIGINT(键盘输入,或CTRL-C;信号2)信号处理程序设置成采 取某个清理动作,要想测试该信号处理程序,你可以设置一个断点并使用如下命令:
(gdb) signal 2
continuing with signal SIGINT(2)
该程序继续执行,但是立即传输该信号,而且处理程序开始运行.
十一. 原文件的搜索
search text:该命令可显示在当前文件中包含text串的下一行。
Reverse-search text:该命令可以显示包含text 的前一行。
十二.UNIX接口
shell 命令可启动UNIX外壳,CTRL-D退出外壳,返回到 gdb.
十三.命令的历史
为了允许使用历史命令,可使用 set history expansion on 命令
(gdb) set history expansion on
小结:常用的gdb命令
backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)
breakpoint 在程序中设置一个断点
cd 改变当前工作目录
clear 删除刚才停止处的断点
commands 命中断点时,列出将要执行的命令
continue 从断点开始继续执行
delete 删除一个断点或监测点;也可与其他命令一起使用
display 程序停止时显示变量和表达时
down 下移栈帧,使得另一个函数成为当前函数
frame 选择下一条continue命令的帧
info 显示与该程序有关的各种信息
jump 在源程序中的另一点开始运行
kill 异常终止在gdb 控制下运行的程序
list 列出相应于正在执行的程序的原文件内容
next 执行下一个源程序行,从而执行其整体中的一个函数
print 显示变量或表达式的值
pwd 显示当前工作目录
pype 显示一个数据结构(如一个结构或C++类)的内容
quit 退出gdb
reverse-search 在源文件中反向搜索正规表达式
run 执行该程序
search 在源文件中搜索正规表达式
set variable 给变量赋值
signal 将一个信号发送到正在运行的进程
step 执行下一个源程序行,必要时进入下一个函数
undisplay display命令的反命令,不要显示表达式
until 结束当前循环
up 上移栈帧,使另一函数成为当前函数
watch 在程序中设置一个监测点(即数据断点)
whatis 显示变量或函数类型
****************************************************
GNU的调试器称为gdb,该程序是一个交互式工具,工作在字符模式。在 X Window 系统中,有一个gdb的前端图形工具,称为xxgdb。gdb 是功能强大的调试程序,可完成如下的调试任务:
* 设置断点;
* 监视程序变量的值;
* 程序的单步执行;
* 修改变量的值。
在可以使用 gdb 调试程序之前,必须使用 -g 选项编译源文件。可在 makefile 中如下定义 CFLAGS 变量:
CFLAGS = -g
运行 gdb 调试程序时通常使用如下的命令:
gdb progname
在 gdb 提示符处键入help,将列出命令的分类,主要的分类有:
* aliases:命令别名
* breakpoints:断点定义;
* data:数据查看;
* files:指定并查看文件;
* internals:维护命令;
* running:程序执行;
* stack:调用栈查看;
* statu:状态查看;
* tracepoints:跟踪程序执行。
键入 help 后跟命令的分类名,可获得该类命令的详细清单。
gdb 的常用命令
命令 解释
break NUM 在指定的行上设置断点。
bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
clear 删除设置在特定源文件、特定行上的断点。其用法为clear FILENAME:NUM
continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而 导致停止运行时。
display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
file FILE 装载指定的可执行文件进行调试。
help NAME 显示指定命令的帮助信息。
info break 显示当前断点清单,包括到达断点处的次数等。
info files 显示被调试文件的详细信息。
info func 显示所有的函数名称。
info local 显示当函数中的局部变量信息。
info prog 显示被调试程序的执行状态。
info var 显示所有的全局和静态变量名称。
kill 终止正被调试的程序。
list 显示源代码段。
make 在不退出 gdb 的情况下运行 make 工具。
next 在不单步执行进入其他函数的情况下,向前执行一行源代码。
print EXPR 显示表达式 EXPR 的值。
******gdb 使用范例************************
-----------------
清单 一个有错误的 C 源程序 bugging.c
代码:
-----------------
1 #i nclude
2
3 static char buff [256];
4 static char* string;
5 int main ()
6 {
7 printf ("Please input a string: ");
8 gets (string);
9 printf ("\nYour string is: %s\n", string);
10 }
-----------------
上面这个程序非常简单,其目的是接受用户的输入,然后将用户的输入打印出来。该程序使用了一个未经过初始化的字符串地址 string,因此,编译并运行之后,将出现 Segment Fault 错误:
$ gcc -o bugging -g bugging.c
$ ./bugging
Please input a string: asfd
Segmentation fault (core dumped)
为了查找该程序中出现的问题,我们利用 gdb,并按如下的步骤进行:
1.运行 gdb bugging 命令,装入 bugging 可执行文件;
2.执行装入的 bugging 命令 run;
3.使用 where 命令查看程序出错的地方;
4.利用 list 命令查看调用 gets 函数附近的代码;
5.唯一能够导致 gets 函数出错的因素就是变量 string。用print命令查看 string 的值;
6.在 gdb 中,我们可以直接修改变量的值,只要将 string 取一个合法的指针值就可以了,为此,我们在第8行处设置断点 break 8;
7.程序重新运行到第 8行处停止,这时,我们可以用 set variable 命令修改 string 的取值;
8.然后继续运行,将看到正确的程序运行结果
Wednesday, November 19, 2008
Tuesday, November 11, 2008
算法链接
链表
LRU (Least Recently Used) list : 最近最少被使用
算法:
打印数列: http://topic.csdn.net/u/20070114/14/1170e023-e8f0-4331-8bd8-516c6f1e40da.html
数据结构笔记: http://www.luocong.com/dsaanotes/index-Z-H-1.htm#node_toc_start
保持联系...
但凡提到"保持联系",那就是说很可能要"切断联系"了,至少是要有相当长的一段时间要不怎么联系了,尤其在这样寒冷的冬天。
这两天离职的同事都撤了,邮箱里收了一堆"keep in touch", "goodbye","farewell"之类的邮件,这还算少的,据传老大们都已经提前和大家沟通了,离职前不要大范围的发诸如此类的邮件,以免影响士气,所以只是各组内部或者一些以前合作过的同事之间相互说说再会,留了联系方式。
站起来一眼望去,一半的座位都已经空空如也,只是MSN朋友列表又长出了好多,上次上MSN好像也是为了加要"保持联系"的同事们。
或许,大家在MSN列表上能时不时的看到你在线就算是"保持联系"了吧...
Monday, November 10, 2008
一元钱能买什么
一元钱在海口----
两斤荔枝、两个木瓜、三个杨桃、四个芒果、半个火龙果、一杯椰子汁、一趟公交车、一份南国都市报或特区报、一杯香喷喷的珍珠奶茶、海南师范大学一小时的上机费、坐一次海南大学的观光车、一小碗炒粉、一碗海南腌粉、洗三张数码照片~可以买的真多,东西好便宜!
一元钱在喀什----
喀什的水果很便宜的,比海口还多,而且营养丰富,水果养人呀,来看看水果价钱,嘿嘿,哈密瓜、葡萄都是差不多5毛钱一公斤哒,^_^,一元钱可以买呦~一大串烤肉、2个小馕、2个小布丁、2个烤包子(流口水了)、2碗酸奶(超级划算和怀念)3、小袋葡萄干、吃拉面或者抓饭的时候加份面或者饭吧~"不到新疆不知祖国之美、不到喀什不知物产丰富呀~"
一元钱在武汉--
一碗热辣喷香的热干面;炎炎夏日一杯凉爽的冰冻奶茶;武汉大学工学部一食堂两个肉包子;离校大学生毕业甩卖的一本书或者两盘磁带或者3本杂志;买一个糯玉米或者甜玉米;半吨水;2根油条;2个面窝;4个小煎包或者蒸包,一碗蛋酒,一碗稀饭,2个油饼;买过期杂志一本;停电时用的,白蜡烛一对;小葱一堆,2毛一小把;2B铅笔2支;袋装洗发水2袋......
一元钱在广州--
一包盐;一包陈皮;一支五羊绿豆或红豆批;两根伊利小布丁;一杯清心堂鲜榨甘蔗汁;早餐两包子;一张非空调公共汽车票;一份南方都市报;五羊牌的菠萝冰;一块钱也挺好花的,但如果把一块钱放乞丐的盆子里,他可能鸟都不鸟你......
一元钱在北京--
一个鸡蛋灌饼;一杯豆浆;3个小得像饺子一样的水煎包;一串烤串;单位食堂的一碗馄饨;十站地之内的公共汽车;3份报纸(晨报+京华+信报);1根特普通的冰棍;1个卤蛋;一街机游戏币;一瓶黑加仑;一袋小浣熊方便面;上半小时网;在城管没来之前的小摊上买一个手机链;一袋杂牌牛奶;一根号称韩国进口的圆珠笔,最便宜的是8毛钱,在以前的万通;1元钱可以停车半小时;如果使用1 块钱的硬币,则可以在做判断对错题时提供答案,准确率50%......
一元钱在深圳--
一份报纸;上一趟厕所;嘉旺一杯豆浆;嘉旺半根油条;超市里有1块的矿泉水;好像听说有人买到了2个茶叶蛋;打一通公用电话(市内);一根发圈;一份深圳特区报;雀巢糯米糍雪糕......
一元钱在上海--
大学里打十瓶水;一碗绿豆粥;还有一些冷饮也只有一块钱;坐公交车还不能空调的;葱油饼不能配豆浆;上2至5次厕所;超市买1块钱的特价品;坐小巴;打3至5分钟长途电话;买一份申江服务导报;两个鸡蛋或半斤米;施舍乞丐起步价......
一元钱在南京--
一份金陵晚报和一份现代快报;大学里半天无聊的课程......
一元钱在无锡--
一只鸿运素包;可的一包豆浆;一个糍饭团;两根油条;早点工程一杯南瓜粥;一块黑米糕;一杯路边摊的臭豆腐;买一个大号TT套在头上抢银行......
一元钱在扬州--
一趟单程公交汽车;一个鸡蛋饼;两个烧饼;两个包子;自行车停车收费10次;电动车停车收费5次;摩托车停车收费2次;一袋酱油;一杯早餐粥;一个糯米团(夹油条);2串麻辣烫;一份每周电视报;两份扬州晚报......
一块钱在四川广汉--
两份报纸;一份一般点的花花绿绿的杂志;四个包子;一杯豆浆;两根油条;公交车(无空调);一份炸洋芋......
一元钱在成都--
两串钵钵鸡或者两串烧烤(素的);5个小鹌鹑蛋(茶叶的);一份《快一周》杂志;一份河南大饼;一包薯片;刷一双皮鞋;一碗凉面,一串麻辣烫,一碗刨冰,一晚冰粉,两根油条,一个油饼,一袋豆浆,一个蛋糕,一个冰淇淋;可以吃一碗一两的肉末
一元钱在桂林--
一元钱啥业干不了,2两素米粉都要1块2;没空调的公交车也要1块2;2个包子啦;2个麻辣串啊;报纸;1杯豆浆;1个糯米饭;一碗10个的小馄饨......
一元钱在厦门--
一趟无空调的公交车;自行车打气5次;2个麻花;一个肉包;2个菜包;一杯小杯的泡沫红茶(绿茶);古龙豆浆一杯;2串米血;2个碗膏;一碗只加基础料的漳州四果汤......
一元钱在温州--
上2趟厕所;一杯豆浆(接近于白开水);一份都市报;双层巴士的单程票;给乞丐的最少面额......
一元钱在苏州--
买6块臭豆腐;一串烧烤;一块小摊上的哈密瓜;一小块西瓜;两个烧饼;5至7个锅贴;一份报纸;公共电话3至5分钟......
一元钱在昆明--
臭豆腐;两串烧烤;两个包子或馒头......
一元钱在西安--
可以坐公交;买一个大华饭店的虾肉包子;蒙牛有很多1元的雪糕卖;3根油条......
一元钱在济南--
买一根口味一般的雪糕,或者两根老冰棍;两份报纸;在小摊上买两根蔬菜麻辣串......
一元钱在杭州--
一张站台票、一杯豆浆、两根葱、一副葱包桧......
一元钱在广西玉林--
一趟单程公车;半斤荔枝;两根油条;两包子(肉的素的都有一样);两份路边摊烫青菜......
一元钱在贵州--
口渴了,我可以买一杯冰水,喝了水之后我就不渴了,我很快乐;肚子饿了,我可以买一块小蛋糕,吃掉之后我就不饿了,我很快乐;想他了,我可以打一个电话给他,说几句甜蜜而亲热的话,我很快乐;天冷了,我可以买一块刚刚烤好的红薯,又好吃又暖手,我很快乐;天黑了,我可坐公车回到家里,家里有吃的,有喝的,有玩的,还有一个爱的人,我很快乐;无聊了,我可以去抓一个可爱的小公仔,我可以买几个黄瓜胡萝卜什么的给晚饭做一个漂亮的围边,我很快乐;可以买到一朵新鲜的玫瑰!好香的花,把它放在桌子上,别在衣服上,或者干脆戴在头上好了,一元钱能让我有这么多的方式快乐,快乐一点不好吗?
一元钱在南昌--
能买五个面包......
一元钱在大连--
乘坐公交车(小公汽和部分联营中程客车除外);一根普通雪糕、四根"金州红小豆"冰棍、一个蛋卷冰淇淋;两个杂粮面包;两个面包房的蛋挞;两个韭菜合子;一个卷饼;一份超大量的豆腐脑、一串号称正宗的臭豆腐、一份很少量的焖子;一瓶小容量可乐、雪碧、芬达、七喜、美年达;一双鞋垫、两副鞋套;一份大连电视报、两份晚报或商报或晨报以及任何价值五角的报纸(不包括球报女报)。
二支真实程度可疑的2B铅笔;三块普通橡皮;很薄的塑料三角板一套;固体胶棒一支;普通圆珠笔或水笔一支;32开书皮三张;16开书皮一张半;普通包装纸一张;普通彩花一条;编中国结用的彩绳两根,皮绳两根,粗棉绳一根,粉色水晶珠一颗;另可以在家乐福或沃尔玛的物品寄存处寄存一次(不需花钱,但是操作必需一元硬币一枚)......
一元钱在四川内江--
串串香5串(成品);玉林10串;钵钵鸡4串(素的)2串(荤的);凉粉;凉面;冰粉;凉虾;凉糕;绿豆沙;八宝粥均一碗;公交5站内2次;品牌纯净水 1瓶;天友纯牛奶250ML;果味酸奶125ML;五香或麻辣土豆条2碗;租书两本(前提押金若干);小灵通市话5分钟+长话2分钟+接听免费;馅多的包子2个,饺子5个;肉锅魁1个......
一元钱在福州--
1碗拌面(粉,、捞化、空心菜、小白菜、扁肉);一碗清汤面(粉干、捞化、扁肉);一盒"三合饭";2份海都报;单程中巴(看路途看车);2至3分钟的长途电话或差不多10分钟的市话;路边一串荤烧烤或2串素烧烤;小杯珍珠奶茶;一串关东煮;一瓶矿泉水;停摩托车两次;杨州小龙包3个;上2至3次厕所......
一块钱在重庆--
早上早的话可以买4份5毛的报纸,一份渝报、新女报、热报;单程无人售票车车费;十根拉丝糖或在中小学门口的小零食两包;玻璃瓶的百事或可口可乐一系列的;重庆主城区:吃一串烤肠;在超市买一瓶矿泉水(500-600ml);可以在街头擦一双皮鞋(皮靴不行);街头的早餐锅贴一元四个、白粥一元一碗(咸菜随便吃)、盐茶蛋一元两个、豆浆一元两杯或两小袋;夏天的冰粉、凉虾、西米露几乎都是一元一碗(除了沙坪坝金诚广场旁那条小吃巷子及其他人流量异常多的地方要卖2元);据说重庆的花市在淡季红玫瑰能买到五毛一支的......
一元钱在河北石家庄--
一趟单程的公交车;3份报纸;3个烧饼;1瓶矿泉水(只限几个牌子);1袋儿普通装三鹿纯牛奶......
一元钱在山东--
乘坐一次普通公交车;或两份报纸(齐鲁晚报+山东商报还剩一毛钱);打4分钟长途;买2个5毛的冰爽或一瓶纯净水......
一元钱在江门--
买一条斋肠;一杯无糖豆浆(加糖的要1.2元);一个菠萝包;两只蛋挞;一条油条;两份葱;自行车打气两次;打发一个乞丐......
一元钱在河南--
5个馒头;4个或5个烧饼;一趟公交车,一碗糊辣汤、一碗豆腐脑......
Saturday, November 8, 2008
天下没有不散的筵席
裁员...
“这是一场漫长的战争,也是一场艰苦的战争。你们英勇并且骄傲地为祖国作战,你们是不平凡的一群,彼此紧密相连,这样的情谊存在也只存在于战斗中。象兄弟一样,共同使用散兵坑,在最需要的时刻彼此互相扶持,你们共同面对死亡,一同接受磨难。最后,我想说的是,我为能够与你们每个人共同服役而感到骄傲。你们有权享受永远快乐而和平的生活”
---兄弟连
做了三年的LJ说停就停了,我们组也随之解散,或者回到合作公司,或者被打散到其他的产品组,好在大家都还有工作,虽然可能还是暂时的..., 不管怎样,我会一直记住这段日子,那种感觉就好像重新回到了校园,或许兄弟连里最后的一句台词很适合这种感觉,“我很珍惜这段记忆。有天我孙子问我一个问题,他问我:‘爷爷,你是大战中的英雄吗?’爷爷回答:‘不是,可是我与英雄们一起服役。’”
Friday, November 7, 2008
Android核心模块及相关技术
更多精彩请到 http://www.139ya.com
转自android 开发者论坛
Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:
第一、操作系统层(OS)
第二、各种库(Libraries)和Android 运行环境(RunTime)
第三、应用程序框架(Application Framework)
第四、应用程序(Application)
以下分别介绍Andoid各个层次的软件的重点及其相关技术:
● 操作系统层(OS)
Android使用Linux2.6作为操作系统,Linux2.6是一种标准的技术,Linux也是一个开放的操作系统。Android对操作系统的使用包括核心和驱动程序两部分,Android的Linux核心为标准的Linux2.6内核,Android更多的是需要一些与移动设备相关的驱动程序。主要的驱动如下所示:
显示驱动(Display Driver):常用基于Linux的帧缓冲(Frame Buffer)驱动。
Flash内存驱动(Flash Memory Driver)
照相机驱动(Camera Driver):常用基于Linux的v4l(Video for )驱动。
音频驱动(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。
WiFi驱动(Camera Driver):基于IEEE 802.11标准的驱动程序
键盘驱动(KeyBoard Driver)
蓝牙驱动(Bluetooth Driver)
Binder IPC驱动: Andoid一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。
Power Management(能源管理)
● 各种库(Libraries)和Android 运行环境(RunTime)
本层次对应一般嵌入式系统,相当于中间件层次。Android的本层次分成两个部分一个是各种库,另一个是Android 运行环境。本层的内容
大多是使用C++实现的。
在其中,各种库包括:
▅ C库 :C语言的标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现。
▅ 多媒体框架(MediaFrameword):这部分内容是Android多媒体的核心部分,基于PacketVideo(即PV)的OpenCORE,从功能上本库一共
分为两大部分,一个部分是音频、视频的回放(PlayBack),另一部分是则是音视频的纪录(Recorder)。
▅ SGL:2D图像引擎。
▅ SSL:即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
▅ OpenGL ES 1.0 :本部分提供了对3D的支持。
▅ 界面管理工具(Surface Management):本部分提供了对管理显示子系统等功能。
▅ SQLite:一个通用的嵌入式数据库
▅ WebKit:网络浏览器的核心
▅ FreeType:位图和矢量字体的功能。
Android 的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。
Android 运行环境主要指的虚拟机技术——Dalvik。Dalvik虚拟机和一般JAVA虚拟机(Java VM)不同,它执行的不是JAVA标准的字节码(bytecode )而是Dalvik可执行格式(.dex)中执行文件。在执行的过程中,每一个应用程序即一个进程(Linux的一个Process)。 二者最大的区别在于Java VM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。
● 应用程序框架(Application Framework)
Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架。由于上层的应用程序是以JAVA构建的,因此本
层次提供的首先包含了UI程序中所需要的各种控件:
例如: Views (视图组件)包括 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式的Web浏览器。
一个Andoid的应用程序可以利用应用程序框架中的以下几个部分:
Activity (活动)
Broadcast Intent Receiver (广播意图接收者)
Service (服务)
Content Provider (内容提供者)
● 应用程序(Application)
Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个 APK包。Android本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。这也是Android开源的巨大潜力的体现。
Android emulator how to
http://tungchingkai.blogspot.com/2008/09/how-to-android-emulator.html
(1) How to install emulator only (that is no JDK, Eclipse IDE or compiler)
(a) Download Android SDK from
http://code.google.com/android/download_list.html
The current version is
android-sdk-windows-1.0_r1.zip (windows)
android-sdk-linux_x86-1.0_r1.zip (linux)
unzip it and put the folder (android-sdk-windows-1.0_r1) to say under
Windows OS
D:\Android\
Linux / Mac OS X
~/Android/
(b) start the emulator in command windows (windows-R -> cmd) / (Linux/Mac OS X -> Terminal) for the first time to setup data directory
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
emulator -datadir D:\Android
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./emulator -datadir ~/Android
(2) How to create sdcard for emulator (e.g. 500M)
e.g. To create a sdcard image of 500M with filename sd500m.img
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
mksdcard -l SD500M 500M D:\Android\sd500m.img
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./mksdcard -l SD500M 500M ~/Android/sd500m.img
when starting the emulator and adding -sdcard option
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
emulator -sdcard D:\Android\sd500m.img [.... other options]
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./emulator -sdcard ~/Android/sd500m.img [.... other options]
(3) How to scale the emulator size when the emulator screen is out of view of your computer
when starting the emulator and adding -scale option (range from 0.1 to 3)
e.g. start the emulator with a scale of 0.5
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
emulator -scale 0.5 [.... other options]
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./emulator -scale 0.5 [.... other options]
(4) How to copy Musics and Pictures to the sdcard image for Android emulator
The sdcard image is a FAT32 image. You just double click the file in Mac OSX to mount it.
Inside it, create folders called Musics and Pictures and put your mp3 files and pictures as per screen dump below
(5) How to copy files to sdcard while the emulator is running or when you cannot mount it.
You can mount the sdcard image while the emulator is running, but sometimes you want to copy files to the sdcard in command line mode run this
Make Sure that the emulator is running
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
adb push mynotebookphoto.png sdcard/Pictures/
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./adb push mynotebookphoto.png sdcard/Pictures/
However, the emulator will need to restart so that it can acknowledge the new file. This is currently the limitation of the emulator
when copying back from emulator sdcard to local file
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
adb pull sdcard/Pictures/image01.jpg images01_fromsdcard.jpg
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./adb pull sdcard/Pictures/image01.jpg images01_fromsdcard.jpg
(6) How to get shell access to emulator
The emulator must be running, and run this
Windows OS
D:
cd D:\Android\android-sdk-windows-1.0_r1\tools
adb shell
Linux / Mac OS X
cd ~/Android/android-sdk-linux_x86-1.0_r1/tools
./adb shell
(7) How to add path of the emulator tools directory to Windows OS, so as no need to change directory to sdk directory
On Windows, right click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path under System Variables and add this to end of the text
Windows OS
D:\Android\android-sdk-windows-1.0_r1\tools;
Please take note that you have to restart the command window for the path to become effective
(8) How to change skin for the emulator
You can download some iPhone skins for Android emulator here
http://www.anddev.org/emulator_iphone_skin_-_qvga-hvga_landscape-portrait-t109.html
(9) How to change wallpaper, add new icons to homescreen and move/delete icons.
At Home Screen, press Menu
+ Add -> for adding icons to home screen
Wallpaper -> to change wallpaper
You can flip the homescreen to left and right and add icons there
To delete the icon just click and hold the button and a trash will appear above the menu button then you can drag the icon to the trash and delete it
To move the icon, click and hold the icon and then drag to new position.
Tuesday, November 4, 2008
Monday, November 3, 2008
android
安卓网 : http://91android.com/bbs/
高焕唐
Quick Android Dev Tips
Android mksdcardhttp://www.android-internals.org
Android源码构建工具速览
在android平台下载和编译源代码
This Blog is dedicated for Learning Android, Android Platform
Share Code Experiment's Result
Welcome the Android Internals wiki : http://www.android-internals.org/index.php?title=Main_Page
building-android-source-and-deploying : http://www.koushikdutta.com/2008/12/building-android-source-and-deploying.html
Android build system: http://www.kandroid.org/android_pdk/build_system.html
Sunday, October 26, 2008
message
Thursday, October 23, 2008
Wednesday, October 22, 2008
谢国忠:中国发展模式限制 强势政府的挤出效应
Monday, October 20, 2008
Friday, October 17, 2008
当前经济热点透视---朗咸平
转自郎咸平官方博客