|
笔名:IPLinger |
| 地区: 山东-烟台 | |
| 作者相册 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
请给我一个初动力,让我不再徘徊。 “1 > 3” “没有去努力查找事实根据少开口,除非Losing Fase” “在自己的认知能力上,不去作恶” “学会按时睡觉” “简单 = 100 * 复杂”
通知
新的blog地址 :www.iplinger.com
请使用gougou订阅的朋友重新订阅:),你们会看到一个不一样的地方。
加过链接的朋友,请更换链接地址。
使用友情blog的朋友,请添加一个静态地址。然后告诉我,我会和你们交换链接:)
准备搬家
博客准备迁址,越快越好。究竟去那里,不久就后决定。这里就作为记忆封存下来吧。我不会删除这里的任何文章,也不会把这里的文章转移到我心的blog上去,他们是属于这里的。
新的blog将会是一个新的样子,我现在都不敢想象它会是个什么样子。因为有很多事情到那时并不会是一个人在做决定。事情真的很让人期待。我也期待着。
什么时会正式搬家,应该就是不久后的事了。
观察 -- 英语就是强势语言?

2006-1-15
英语是不是强势语言?这好像已经不用回答了。他成为了强势语言已经是客观事实。究其原因我不是做这方面研究的,我并不能系统的告s诉你。如果你有《达芬奇密码》请看284页,那里有一段陈述。当然我能想到的更多的是和英国曾经的殖民扩张有直接的关系。这个曾经的日不落帝国把英语传向了世界。
我想说的并不上面这些东西。他成了强势已经是客观存在的事实。现在的问题是我们来如何应对这个问题。我现在遇到很多问题关于英语。他真的让我十分头疼。从上初中开始,我第一次被老师训哭了,好像就是因为我英语太差。到了高考也是,英语不及格,让我上了海大(中国海洋大学)的计算机科学与技术专业。大学里考英语也是我最差的成绩。工作了,现在英语成了我了解知识的障碍。我热爱互联网,但是英语给我铸造了一道墙。我现在能做到的也只是能伸过去一点点,凿壁借光,费尽力气,看一看那里短小简单的文章,试图去理清思路能清楚我想知道的是什么。这其实很难,比我看一篇中文文章要费力10倍。问题是我必须尝试的去看。现在不过去,未来更不会是过去,我们面临全球化的时代,其实对于很多人,这个时代已经来了。要想清楚看清某些问题,你需要站在语言的高度上看看国内自己人都在说什么,想什么,但更重要的是站在英语的高度上,看看地球人在想什么。
我并不会怪罪上学时自己没有努力。或许是在学校里那种学习语言的方法,我太不适合了。其实现在做什么都还不晚,我知道。
语言确实是工具,学习使用工具并不难,难的是语言背后的文化,没有环境与时间学不来。
因为那不是工具。
Worth1000 -- photoshop创意比赛网上平台
从vc6升级到vc7的一些问题及解决方法
最近由于工作需要,把项目从vc6升级到vc7(vc.net2003)。升级过程遇到些问题,记录于此。
1. 编译时出现:WINVER not defined. Defaulting to 0×0501 (Windows XP and Windows .NET Server)
这个问题是因为没有指定工程要使用的平台SDK的版本。
| Minimum system required | Macros to define |
|---|---|
| Windows Server 2003 family | _WIN32_WINNT>=0×0502 |
| Windows XP | _WIN32_WINNT>=0×0501 |
| Windows 2000 | _WIN32_WINNT>=0×0500 |
| Windows NT 4.0 | _WIN32_WINNT>=0×0400 |
| Windows Me | _WIN32_WINDOWS=0×0490 |
| Windows 98 | _WIN32_WINDOWS>=0×0410 |
| Internet Explorer 6.0 | _WIN32_IE>=0×0600 |
| Internet Explorer 5.01, 5.5 | _WIN32_IE>=0×0501 |
| Internet Explorer 5.0, 5.0a, 5.0b | _WIN32_IE>=0×0500 |
| Internet Explorer 4.01 | _WIN32_IE>=0×0401 |
| Internet Explorer 4.0 | _WIN32_IE>=0×0400 |
| Internet Explorer 3.0, 3.01, 3.02 | _WIN32_IE>=0×0300 |
解决办法:
属性,C/C++,命令行,附加项中添加 /D_WIN32_WINNT=0×0501 (因为我是在xp下工作的所以是0×0501)
2. Link是出现:LINK : warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”规范)
这个问题是因为在vc6中,工程使用的增量编译。
解决办法:
属性,链接器,常规,启动增量链接 选择 是(INCREMENTAL)
3. 编译时出现:warning C4129: “U” : 不可识别的字符转义序列
error C3847: 通用字符中的错误符号;必须使用十六进制数字
原因:为开发全球通用的应用程序,.NET Framework 使用 Unicode UTF-16(Unicode 转换格式,16 位编码形式)来表示字符。在某些情况下,.NET Framework 在内部使用 UTF-8。引入通用字符名称的格式是 \u#### 或 \U########。
解决办法:
//#include MAKEPATH(MAIN_IMAGE_PATH, FunUtil\\Unit_star.txt)
#include “..\\ImageData\\ML128160\\FunUtil\\Unit_star.txt”
4. 链接是出现:LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit 已经在 MSVCRTD.lib(MSVCR71D.dll) 中定义 等类似错误
原因:
Run-Time Library
| 若要使用此运行时库 | 请忽略这些库 |
|---|---|
| 单线程 (libc.lib) | libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib |
| 多线程 (libcmt.lib) | libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib |
| 使用 DLL 的多线程 (msvcrt.lib) | libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib |
| 调试单线程 (libcd.lib) | libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib |
| 调试多线程 (libcmtd.lib) | libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib |
| 使用 DLL 的调试多线程 (msvcrtd.lib) | libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib |
解决方法:
属性,链接器,输入,忽略指定库 libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib (这是我需要忽略的,你可以根据你工程的实际情况选择。)
j2me学习杂记三 -- 刚开始的理解

首先我们问个问题,什么是j2me?
Java发展到现在,在其平台上出现了4个主要的分支,我们看这幅图。
第一个j2ee 应用于企业级的解决方案。
第二个j2se 用于一般台式计算机的软件开发。
第三个j2me 应用于嵌入式设备的开发
第四个 java for smart card 主要用于智能芯片和IC卡的开发。
我们要记得j2me 是应用于嵌入式设备的开发平台。

我们来看这幅图。J2me体系结构,从图中看由五部分组成,最下面的是操作系统,然后依次是 java虚拟机 配置 简表profile 可选包。这5部分共同组成了j2me实时运行环境。
如何把这五部分给大家讲清楚,我思考一下,决定与我们的实际联系起来讲或许会好些。
例如这就是我们所指的操作系统,比如说是高通的DMSS。然后我们需要来支持java虚拟机。在实际中我们可以考虑这个虚拟机是被封装好的,只留出的必须实现的API接口。例如像这个样子,这有利于他的通用性。然后我们需要做的就是利用c语言来实现这些接口,像这样把他支撑起来。等所有的接口都被支撑起来的时候,我们的java虚拟机就搭建好了。
其实在java程序运行的过程中,java虚拟机本身的用处并不是特别大,要做任何有意义的事,必须要有运行时库的支持,这就是配置(Configuration)。配置为我们能运行java提供了最基本的库函数。
配置为应用程序提供了运行基础,概要则提供了应用程序的框架。什么是应用程序框架?这里我们可以结合我们正在使用的base框架来理解。在base里每个process都要有create函数,destroy函数和run函数,等等,并且给我们提供了像PDK这样丰富的函数库。这就是框架,它规定了我们该怎么写一个程序,这个程序的基本结构是什么样子的,并提供了丰富的API 。如果你还不明白什么是框架,我们还可以这样阐述什么是框架。比如我们修建一座建筑物,需要先通过钢筋、水泥搭建起一个坚固的轮廓,此谓之“架构”,然后就可以在不影响主体结构的情况下往里面添砖加瓦,最后建成我们雄伟的宫殿。这里面钢筋水泥的架构和我们砖瓦共同给我们组成了框架。我们可以看到框架不只是架构,还需要提供向架构中填充各种原料。而我们所要做的就是像搭积木一样建造出我们的产品,当然这个积木要足够灵活,以允许我们充分发挥我们的想象,建造出我们想要的产品。
同样,这里简表就是给我们打好了一个框架。并且提供了例如图形化界面,持久层管理,网络等函数库,然我们可以轻松的建立起各种应用。
关于可选包就是对profile的补充了。
CDC 的硬件参数:
2M 以上内存。
具有网络连接能力,通常为无线网络。
需要实现java 虚拟机规范的全部功能。
32 位或者64 位的处理器。
CLDC 的硬件参数:
512 KB 以下内存
有限能源供应(通常使用电池)
有限或非持续网络连接
简单的用户界面
16 位或者32 位的处理器
说配置之前,我们先来看看嵌入式设备。我们所知道的嵌入式设备有什么?手机,PDA,这些是,机顶盒,智能冰箱,智能空调,这些也是。总之我们说嵌入式设备是种类繁多的。那么针对种类繁多的嵌入式设备j2me平台是如何搭建的呢?
j2ME 遵循着“针对种类繁多而各不相同的装置,制造一个单一的开发系统是不可能的也没有意义的”基本原则,先将所有嵌入式装置大体分为两种:一种是运算能力有限、电力供应能力也有限的嵌入式装置(比如PDA、手机等);另外一种是运算能力相对较好、电力供应相对比较充足的嵌入式装置(比如智能化空调、冰箱和电视机顶盒等)。由于这两种区分的存在,java引入了Configuration(配置)的概念,并把那些运算能力有限的嵌入式装置定义在CLDC规格中;而另外一种装置则定义在CDC规格中。
上面罗列出了两种规格的硬件参数。由于这个标准是在2001 年的时候指定的,而现在移动终端的处理能力和内存容量发展很快,如果还按照这个标准来评判可能就不准确了。 因此我们只是列出标准,供大家参考。
值得指出的是,虽然这里的标准有些落后了,但是配置规范确实与时俱进的,最新的规范是CLDC1.1,并增加了很多新的特性。

在MIDP框架下的应用程序,我们称为MIDlet。
MIDlet 有三个状态,分别是pause、active 和destroyed。在启动一个MIDlet 的时候,应用管理软件会首先创建一个MIDlet 实例并使得他处于pause 状态,当startApp()方法被调用的时候MIDlet 进入active 状态,也就是所说的运行状态。在active 状态调用destroyApp(boolean unconditional)或者pauseApp()方法可以使得MIDlet 进入destroyed 或者pause 状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS 通知MIDlet 进入destroyed 状态。在destroyed 状态的MIDlet 必须释放了所有的资源,并且保存了数据。