11
8月
今天eclipse 出现提示:Version 1.3.1_01 of the JVM is not suitable for this product.Version:1.4.1 or greater is required.看这意思是JAVA虚拟机的版本过低,eclipse确实只支持1.4以上的jdk, 。eclipse是好久没用了
原来是期间装了oracle,oracle自带1.3版本的jdk,系统自动更改了环境变量中PATH的路径:C:\Borland\JBuilder2005\jdk1.4\bin;D:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI.ACE\;%JAVA_HOME%\bin,解决方法是在PATH里将jdk1.5的bin的路径加到oracle路径前面,并用分号隔开,这样系统就不会先找oracle的jdk1.3了。
一句话: 在path中把高版本的jdk的路径加到最前,比低版本的jdk的路径前即可
原来是期间装了oracle,oracle自带1.3版本的jdk,系统自动更改了环境变量中PATH的路径:C:\Borland\JBuilder2005\jdk1.4\bin;D:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\ATI Technologies\ATI.ACE\;%JAVA_HOME%\bin,解决方法是在PATH里将jdk1.5的bin的路径加到oracle路径前面,并用分号隔开,这样系统就不会先找oracle的jdk1.3了。
一句话: 在path中把高版本的jdk的路径加到最前,比低版本的jdk的路径前即可
4
8月
起点-SDK和IDE的选择
本文主要为学习Symbian开发的初学者讲授如何准备开发环境。对Symbian开发有兴趣、具备一定软件设计基础的朋友都可以来一起研究。需要说明的是,对于学习Symbian开发,需要有较为牢固的编程经验(这里我们暂时要求具有较好的C++程序语言设计能力),需要较好的英语基础,需要坚持不懈的精神;另外,如果你重来没有接触过VS2003,不懂DOS命令、不懂如何设置环境变量,请先学习相关知识。另外,本文的作用仅仅是总结和引导,强烈建议初学者结合本文和SDK文档动手实践
本文主要针对S60的开发环境的建立,因此首先为大家列出S60系统的各种版本。因为开发者应该根据需要,选择自己适合的SDK版本。
1、Series60 第一版 - Symbian OS 6.1
2、Series60 第二版 - Symbian OS 7.0s
3、Series60 第二版 Pack 1 - Symbian OS 7.0s
4、Series60 第二版 Pack 2 - Symbian OS 8.0a
5、Series60 第二版 Pack 3 - Symbian OS 8.1a
6、Series60 第三版 - Symbian OS 9.0
需要要说明的是,Nokia的Symbian/Series60开发包支持的集成开发环境[IDE]工具有很多种,下面列出主要使用的一些IDE:
1、Microsoft Visual Studio 6 / Visaul C++ 6
2、Microsoft Visual Studio .NET [2003] / Visaul C++ 7
3、Borland C++ Builder 6
4、Borland C++ Builder X 1.0
5、Metrowerks CodeWarrior Studio for Symbian Personal/Professional 2.0/2.5
选择哪种开发工具依据是你个人的习惯和喜好,需要注意的是,对于不同的开发环境,我们需要选择不同SDK。本文所使用的SDK支持Series60 第二版 Pack 2 - Symbian OS 8.0a,IDE为VS2003:
=============================================
SDK:SERIES 60 2ND EDITION SDK FOR SYMBIAN OS SUPPORTING FEATURE PACK 2
SUPPORTING MICROSOFT VISUAL C++ CHINESE SIMPLIFIED EDITION
IDE:Microsoft Visual Studio .NET 2003
=============================================
若你使用的IDE是VC6,那么步骤与本文将有所不同,你可以参考网上其他教程,网上讲授Symbian环境设置的90%以上的文章都是基于VC6的。若你使用VS2003,但是所使用的SDK与本文使用的有所出入,那么本文仍然适用,不过个别地方也许会有改动。有什么问题可以提出来,大家一起讨论。
本文并未讲述安装Nokia Developer Suite - Carbide.vs 来配合VS2003导入、建立S60工程。这部分内容将在下一篇文章讲解如何建立、导入工程的时候详细讲解。因此你可以暂时不安装该软件。等你按照下面的说明将环境设置好以后,再安装此软件做更深一步研究。涉及此项内容的细节,请参阅:Symbian OS开发入门(二) :VS2003环境下Symbian工程的导入与建立。
我个人原来是使用VC6作为IDE,对VS2003下的开发也不是特别熟悉,我是一个Symbian开发的初学者,这里写的东西是大多数基于SDK的开发文档,结合自己测试的时候的一些经验教训。写出来,一方面象引导象我一样的初学者尽快入门,另外一方面大家也可以在此基础上讨论,解决一些经验错误。帮助后来者少走弯路。
【开发环境建立详细步骤】
一、系统要求
文档中写了一些对你PC的要求,反正就是保证你的电脑能运行VS2003和SDK。一般没有什么问题。系统要求Win2000 SP3以上, WinXP SP1以上,Win2003中任意一种。
二、软件安装
说明:在安装SDK以前保证下列1-3项先被正确安装。安装软件的时候必须保证你所使用的帐号是你PC的管理员帐号,否则可能导致某些环境变量不能被正确设置。SDK和IDE要安装在电脑上的同一个分区。SDK的安装路径不能含有空格。下面详细说明需要安装的软件及其步骤:
1、在安装SDk之前必须安装ActivePerl(官方文档要求安装Perl 5.6.1 build 531,并说明安装其他版本可能会有问题,我自己测试使用ActivePerl-5.6.1.638-MSWin32-x86,运行情况良好)。该软件可以到官方网站下载:http://www.activestate.com/Products/ActivePerl/
2、安装JAVA Run-Time1.4.1_02 或者新版本,下载地址java.sun.com/downloads/index.html">http://java.sun.com/downloads/index.html.
说明:在使用命令行编译程序的时候事实上是不需要用到JAVA Run-Time1的。但是以后我会提到,若要使用SDK的一个强大的工具ApplicationWizard,就必须安装该组件,同时若要使用Sisar等工具的话,JRE也必不可少。这里请你就先安装吧。
3、安装IDE,如前所述,安装Microsoft Visual Studio .NET 2003
4、安装SDK,注意前面所说的SDK的安装路径不能含有空格。并且要和IDE装在同一个分区,这样可以避免一些麻烦。下载地址:http://www.forum.nokia.com/main/0,6566,034-4,00.html
5、安装Nokia Developer Suite - Carbide.vs 。这相当于VS2003的一个插件,用于帮助你导入或者建立S60工程,从而似的你可以在VS2003中编写代码。(本文暂时不讲解怎么使用,你可以先安装,也可以以后用的时候再安装)
下载地址:http://www.forum.nokia.com/main/0,,034-902,00.html
三、环境变量检查
在2.0版本的SDK之前[不包括1.2For CW],你需要在系统变环境量中设置一个名为EPOCROOT的环境变量,(什么是环境变量,如何设置,这个去自学),他要指向你的SDK包含有epoc32的路径,前面没有盘符,后面要加一个"\",这个一般在你安装了SDK之后系统会自动替你加好。不过2.0之后的[包括1.2 For CW]就不必设置了,有一个名为devices的SDK管理工具会为一些需要使用这个变量的工具提供类似模拟EPOCROOT环境变量的功能。可以把devices看作是多个Symbian SDK,不限于S60,得切换工具,他的使用方法可以在你安装了2.0SDK之后,在命令行模式下输入 devices -help 来获得帮助。
我们使用的这个版本的SDK不需要设置太多环境变量,这里只需要自己加入修改一下环境变量,在系统环境变量path中加入:
{VS2003的安装路径}\Microsoft Visual Studio .NET 2003\Vc7\bin;这样才能保证后面用到的LINK.EXE被正确设置。
四、编译运行“Helloworld” - 检查开发环境是否被正确设置
上面的安装步骤完成以后,还没有大功告成,这时你需要做的是检查你的环境是否被正确设置。怎样来确认开发环境已经正确建立了呢?最好的方式就是通过编译、运行一个例子来检验。需要指出的一点是,下面的步骤可以在可以在Windows的命令行工具中操作,也可以在VS 2003自带的工具“Visual Studio .NET 2003 命令提示”中操作。在VS 2003的命令行工具中操作,其优点是可以避免某些环境变量设置有误而导致的错误,因为它不但包含系统环境下PATH变量的内容,同时也包含安装VC++.NET过程中,添加的一些路径,包括主要的编译链接等工具。而缺点就是:若你仅仅在这里通过验证,而在WINDOWS自带的命令行界面没有通过的话,那么后期会遇到一些麻烦(例如使用ApplicationWizard建立工程)。所以,如果不使用VC++.NET带的“命令提示”工具,您也许就会因为找不到相应编译工具,而无法继续下去。如果自己勤快一些,可以手动把环境变量加到系统PATH中去,这样就可以用Windows“附件”菜单中的那个“命令提示”工具了,后面也许会顺利一点。
1、打开Windows的命令行界面(或者VC++.NET自带的命令行工具)
2、将刚刚安装的SDK设置为默认的devices.这个可以通过下面的命令设置:
devices -setdefault @S60_2nd_FP2_SC:com.nokia.Series60
事实上SDK的安装过程中就会提示你设置默认的devices。做这个工作的原因是你的系统中很可能安装了多个SDK,那么使用哪个SDK作为当前的开发工具,就需要正确设置。你可以使用命令行devices -default来查看当前的默认SDK是什么。
3、找到Symbian工程文件所在的目录
现在我们就通过SDK中自带的例子来验证你的环境是不是被正确设置。注意安装了SDK以后,在其安装目录中的Series60Ex文件夹中有很多例子,我们使用helloworldbasic来验证。在命令行界面中用cd命令进入helloworldbasic的group目录:
cd\Series60Ex\helloworldbasic\group
在group目录下应该包含bld.inf和helloworldbasic.mmp这两个文件。这两个文件的简要描述如下:
HelloWorld.mmp:项目定义文件,描述了将要构建的项目信息,还定义了一些资源文件和应用程序信息文件。它是一个环境中立的文件,可以使用各种工具来处理并生成各种目标环境的make文件。您可以使用文本编辑器查看该文件。里面的信息还是很简明的,包括构建目标,构建类型,源路径,库文件,头文件等等信息。
Bld.inf:组件描述文件,它列出了一个组件当中包括的所有项目,还包括一些额外的构建指令。您也可以使用文本编辑器查看该文件。对于本实例来说,仅包括一个项目HelloWorld.mmp。
4、在命令行中输入bldmake bldfiles
这个命令会处理当前目录下的bld.inf文件,具体来说会执行以下处理过程
(1)、生成目录C:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2_SC\SERIES60EX\HELLOWORLDBASIC
(2)、在这个目录下,生成一系列的Make文件,针对各种目标环境。比如VC7.MAKE,CW_IDE.MAKE等等。
(3)、在当前目录下生成abld.bat文件,这个文件会在随后用到。您可以查看该文件的内容。但是建议不要手工的更改它的内容。
Bldmake命令也支持其他的命令行选项,您可以直接输入bldmake来查看简要的介绍,还可以查看SDK文档了解详细信息。
5、在命令行中输入abld build wins
由bldmake处理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制着构建一个项目的方方面面。Abld命令的语法非常地灵活,它拥有许多命令行选项,它们的组合涵盖了各种构建需求。
注意:这里如果你被提示缺少了一个文件mspdb71.dll,那么可以通过如下方法解决:在Microsoft Visual Studio .NET 2003的安装目录下。你可以在\Common7\IDE这个目录下找到这个文件。把他拷贝到\Vc7\bin下就可以了。再次提醒前面的环境变量要设置好,否则这里你还会因为缺少link.exe而中止运行。
6、在命令行中输入:epoc
这时模拟器就会出现。如果你的环境都设置正确的话,那么模拟器中就会有你刚刚编译的helloworld,它在模拟器上的名字是“HW”
五、检查SDK和IDE是否兼容工作
1、重复上面的1-4
2、在命令行中输入:makmake helloworldbasic vc7,这时会在group文件夹下生成一些文件,其中包含VS2003的工程文件HELLOWORLDBASIC.sln
3、打开VS2003,选择“打开解决方案(Open Solution)”,打开HELLOWORLDBASIC.sln,然后进行编译、运行,就会得到第四部分第6步中的效果。(运行的时候可能需要选择程序epoc.exe)
本文主要为学习Symbian开发的初学者讲授如何准备开发环境。对Symbian开发有兴趣、具备一定软件设计基础的朋友都可以来一起研究。需要说明的是,对于学习Symbian开发,需要有较为牢固的编程经验(这里我们暂时要求具有较好的C++程序语言设计能力),需要较好的英语基础,需要坚持不懈的精神;另外,如果你重来没有接触过VS2003,不懂DOS命令、不懂如何设置环境变量,请先学习相关知识。另外,本文的作用仅仅是总结和引导,强烈建议初学者结合本文和SDK文档动手实践
本文主要针对S60的开发环境的建立,因此首先为大家列出S60系统的各种版本。因为开发者应该根据需要,选择自己适合的SDK版本。
1、Series60 第一版 - Symbian OS 6.1
2、Series60 第二版 - Symbian OS 7.0s
3、Series60 第二版 Pack 1 - Symbian OS 7.0s
4、Series60 第二版 Pack 2 - Symbian OS 8.0a
5、Series60 第二版 Pack 3 - Symbian OS 8.1a
6、Series60 第三版 - Symbian OS 9.0
需要要说明的是,Nokia的Symbian/Series60开发包支持的集成开发环境[IDE]工具有很多种,下面列出主要使用的一些IDE:
1、Microsoft Visual Studio 6 / Visaul C++ 6
2、Microsoft Visual Studio .NET [2003] / Visaul C++ 7
3、Borland C++ Builder 6
4、Borland C++ Builder X 1.0
5、Metrowerks CodeWarrior Studio for Symbian Personal/Professional 2.0/2.5
选择哪种开发工具依据是你个人的习惯和喜好,需要注意的是,对于不同的开发环境,我们需要选择不同SDK。本文所使用的SDK支持Series60 第二版 Pack 2 - Symbian OS 8.0a,IDE为VS2003:
=============================================
SDK:SERIES 60 2ND EDITION SDK FOR SYMBIAN OS SUPPORTING FEATURE PACK 2
SUPPORTING MICROSOFT VISUAL C++ CHINESE SIMPLIFIED EDITION
IDE:Microsoft Visual Studio .NET 2003
=============================================
若你使用的IDE是VC6,那么步骤与本文将有所不同,你可以参考网上其他教程,网上讲授Symbian环境设置的90%以上的文章都是基于VC6的。若你使用VS2003,但是所使用的SDK与本文使用的有所出入,那么本文仍然适用,不过个别地方也许会有改动。有什么问题可以提出来,大家一起讨论。
本文并未讲述安装Nokia Developer Suite - Carbide.vs 来配合VS2003导入、建立S60工程。这部分内容将在下一篇文章讲解如何建立、导入工程的时候详细讲解。因此你可以暂时不安装该软件。等你按照下面的说明将环境设置好以后,再安装此软件做更深一步研究。涉及此项内容的细节,请参阅:Symbian OS开发入门(二) :VS2003环境下Symbian工程的导入与建立。
我个人原来是使用VC6作为IDE,对VS2003下的开发也不是特别熟悉,我是一个Symbian开发的初学者,这里写的东西是大多数基于SDK的开发文档,结合自己测试的时候的一些经验教训。写出来,一方面象引导象我一样的初学者尽快入门,另外一方面大家也可以在此基础上讨论,解决一些经验错误。帮助后来者少走弯路。
【开发环境建立详细步骤】
一、系统要求
文档中写了一些对你PC的要求,反正就是保证你的电脑能运行VS2003和SDK。一般没有什么问题。系统要求Win2000 SP3以上, WinXP SP1以上,Win2003中任意一种。
二、软件安装
说明:在安装SDK以前保证下列1-3项先被正确安装。安装软件的时候必须保证你所使用的帐号是你PC的管理员帐号,否则可能导致某些环境变量不能被正确设置。SDK和IDE要安装在电脑上的同一个分区。SDK的安装路径不能含有空格。下面详细说明需要安装的软件及其步骤:
1、在安装SDk之前必须安装ActivePerl(官方文档要求安装Perl 5.6.1 build 531,并说明安装其他版本可能会有问题,我自己测试使用ActivePerl-5.6.1.638-MSWin32-x86,运行情况良好)。该软件可以到官方网站下载:http://www.activestate.com/Products/ActivePerl/
2、安装JAVA Run-Time1.4.1_02 或者新版本,下载地址java.sun.com/downloads/index.html">http://java.sun.com/downloads/index.html.
说明:在使用命令行编译程序的时候事实上是不需要用到JAVA Run-Time1的。但是以后我会提到,若要使用SDK的一个强大的工具ApplicationWizard,就必须安装该组件,同时若要使用Sisar等工具的话,JRE也必不可少。这里请你就先安装吧。
3、安装IDE,如前所述,安装Microsoft Visual Studio .NET 2003
4、安装SDK,注意前面所说的SDK的安装路径不能含有空格。并且要和IDE装在同一个分区,这样可以避免一些麻烦。下载地址:http://www.forum.nokia.com/main/0,6566,034-4,00.html
5、安装Nokia Developer Suite - Carbide.vs 。这相当于VS2003的一个插件,用于帮助你导入或者建立S60工程,从而似的你可以在VS2003中编写代码。(本文暂时不讲解怎么使用,你可以先安装,也可以以后用的时候再安装)
下载地址:http://www.forum.nokia.com/main/0,,034-902,00.html
三、环境变量检查
在2.0版本的SDK之前[不包括1.2For CW],你需要在系统变环境量中设置一个名为EPOCROOT的环境变量,(什么是环境变量,如何设置,这个去自学),他要指向你的SDK包含有epoc32的路径,前面没有盘符,后面要加一个"\",这个一般在你安装了SDK之后系统会自动替你加好。不过2.0之后的[包括1.2 For CW]就不必设置了,有一个名为devices的SDK管理工具会为一些需要使用这个变量的工具提供类似模拟EPOCROOT环境变量的功能。可以把devices看作是多个Symbian SDK,不限于S60,得切换工具,他的使用方法可以在你安装了2.0SDK之后,在命令行模式下输入 devices -help 来获得帮助。
我们使用的这个版本的SDK不需要设置太多环境变量,这里只需要自己加入修改一下环境变量,在系统环境变量path中加入:
{VS2003的安装路径}\Microsoft Visual Studio .NET 2003\Vc7\bin;这样才能保证后面用到的LINK.EXE被正确设置。
四、编译运行“Helloworld” - 检查开发环境是否被正确设置
上面的安装步骤完成以后,还没有大功告成,这时你需要做的是检查你的环境是否被正确设置。怎样来确认开发环境已经正确建立了呢?最好的方式就是通过编译、运行一个例子来检验。需要指出的一点是,下面的步骤可以在可以在Windows的命令行工具中操作,也可以在VS 2003自带的工具“Visual Studio .NET 2003 命令提示”中操作。在VS 2003的命令行工具中操作,其优点是可以避免某些环境变量设置有误而导致的错误,因为它不但包含系统环境下PATH变量的内容,同时也包含安装VC++.NET过程中,添加的一些路径,包括主要的编译链接等工具。而缺点就是:若你仅仅在这里通过验证,而在WINDOWS自带的命令行界面没有通过的话,那么后期会遇到一些麻烦(例如使用ApplicationWizard建立工程)。所以,如果不使用VC++.NET带的“命令提示”工具,您也许就会因为找不到相应编译工具,而无法继续下去。如果自己勤快一些,可以手动把环境变量加到系统PATH中去,这样就可以用Windows“附件”菜单中的那个“命令提示”工具了,后面也许会顺利一点。
1、打开Windows的命令行界面(或者VC++.NET自带的命令行工具)
2、将刚刚安装的SDK设置为默认的devices.这个可以通过下面的命令设置:
devices -setdefault @S60_2nd_FP2_SC:com.nokia.Series60
事实上SDK的安装过程中就会提示你设置默认的devices。做这个工作的原因是你的系统中很可能安装了多个SDK,那么使用哪个SDK作为当前的开发工具,就需要正确设置。你可以使用命令行devices -default来查看当前的默认SDK是什么。
3、找到Symbian工程文件所在的目录
现在我们就通过SDK中自带的例子来验证你的环境是不是被正确设置。注意安装了SDK以后,在其安装目录中的Series60Ex文件夹中有很多例子,我们使用helloworldbasic来验证。在命令行界面中用cd命令进入helloworldbasic的group目录:
cd
在group目录下应该包含bld.inf和helloworldbasic.mmp这两个文件。这两个文件的简要描述如下:
HelloWorld.mmp:项目定义文件,描述了将要构建的项目信息,还定义了一些资源文件和应用程序信息文件。它是一个环境中立的文件,可以使用各种工具来处理并生成各种目标环境的make文件。您可以使用文本编辑器查看该文件。里面的信息还是很简明的,包括构建目标,构建类型,源路径,库文件,头文件等等信息。
Bld.inf:组件描述文件,它列出了一个组件当中包括的所有项目,还包括一些额外的构建指令。您也可以使用文本编辑器查看该文件。对于本实例来说,仅包括一个项目HelloWorld.mmp。
4、在命令行中输入bldmake bldfiles
这个命令会处理当前目录下的bld.inf文件,具体来说会执行以下处理过程
(1)、生成目录C:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2_SC\SERIES60EX\HELLOWORLDBASIC
(2)、在这个目录下,生成一系列的Make文件,针对各种目标环境。比如VC7.MAKE,CW_IDE.MAKE等等。
(3)、在当前目录下生成abld.bat文件,这个文件会在随后用到。您可以查看该文件的内容。但是建议不要手工的更改它的内容。
Bldmake命令也支持其他的命令行选项,您可以直接输入bldmake来查看简要的介绍,还可以查看SDK文档了解详细信息。
5、在命令行中输入abld build wins
由bldmake处理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制着构建一个项目的方方面面。Abld命令的语法非常地灵活,它拥有许多命令行选项,它们的组合涵盖了各种构建需求。
注意:这里如果你被提示缺少了一个文件mspdb71.dll,那么可以通过如下方法解决:在Microsoft Visual Studio .NET 2003的安装目录下。你可以在\Common7\IDE这个目录下找到这个文件。把他拷贝到\Vc7\bin下就可以了。再次提醒前面的环境变量要设置好,否则这里你还会因为缺少link.exe而中止运行。
6、在命令行中输入:epoc
这时模拟器就会出现。如果你的环境都设置正确的话,那么模拟器中就会有你刚刚编译的helloworld,它在模拟器上的名字是“HW”
五、检查SDK和IDE是否兼容工作
1、重复上面的1-4
2、在命令行中输入:makmake helloworldbasic vc7,这时会在group文件夹下生成一些文件,其中包含VS2003的工程文件HELLOWORLDBASIC.sln
3、打开VS2003,选择“打开解决方案(Open Solution)”,打开HELLOWORLDBASIC.sln,然后进行编译、运行,就会得到第四部分第6步中的效果。(运行的时候可能需要选择程序epoc.exe)
9
7月
在Web 2.0 时代,XML格式由于AJAX的风行以及RSS的普及而异军突起。不过随着Python和Ruby On Rails的走红,以及各种API的发布,YAML,JSON也逐渐成名。此次,Google推出了Protocol Buffers,是想让广大编程者方便地使用Google网络传输数据的格式。
什么是Protocol Buffers?
这是Protocol Buffers主页上的一段代码:
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
} message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
而Protocol Buffers的作用,就是将以上格式的数据类型,自动生成Java, Python, and C++的代码,然后以下一系列代码就可以直接调用了:(C++中)
Person person;
person.set_name("John Doe");
person.set_id(1234);
person.set_email("jdoe@example.com");
fstream output("myfile", ios::out | ios::binary);
person.SerializeToOstream(&output); fstream input("myfile", ios::in | ios::binary);
Person person;
person.ParseFromIstream(&input);
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;
相信所有C++编程者都为定义set,get之类的函数感到烦人过吧,而Google做的就是帮助你省去这些麻烦,构造更利于网络传输的数据结构。
与XML的比较 优势
更简单
比XML小3到10倍体积
比XML快20到100倍
更不容易引起歧义
自动生成可编程的类代码
比较:
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;
cout << "Name: "
<< person.getElementsByTagName("name")->item(0)->innerText()
<< endl;
cout << "E-mail: "
<< person.getElementsByTagName("email")->item(0)->innerText()
<< endl; 劣势
没有层次,所以无法和HTML标记语言打交道
如果没有message的定义,根本无法知道message的意思,而XML是自解释型的。
Protocol Buffer主页 Protocol Buffer下载
什么是Protocol Buffers?
这是Protocol Buffers主页上的一段代码:
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
} message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
而Protocol Buffers的作用,就是将以上格式的数据类型,自动生成Java, Python, and C++的代码,然后以下一系列代码就可以直接调用了:(C++中)
Person person;
person.set_name("John Doe");
person.set_id(1234);
person.set_email("jdoe@example.com");
fstream output("myfile", ios::out | ios::binary);
person.SerializeToOstream(&output); fstream input("myfile", ios::in | ios::binary);
Person person;
person.ParseFromIstream(&input);
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;
相信所有C++编程者都为定义set,get之类的函数感到烦人过吧,而Google做的就是帮助你省去这些麻烦,构造更利于网络传输的数据结构。
与XML的比较 优势
更简单
比XML小3到10倍体积
比XML快20到100倍
更不容易引起歧义
自动生成可编程的类代码
比较:
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;
cout << "Name: "
<< person.getElementsByTagName("name")->item(0)->innerText()
<< endl;
cout << "E-mail: "
<< person.getElementsByTagName("email")->item(0)->innerText()
<< endl; 劣势
没有层次,所以无法和HTML标记语言打交道
如果没有message的定义,根本无法知道message的意思,而XML是自解释型的。
Protocol Buffer主页 Protocol Buffer下载
7
7月
我听过一个故事,说一个地方非常贫穷,政府是尽心尽力的帮助村民致富,找一个忒贫困的做扶持典范。为其买猪,买种子。都没使其富裕。政府十分纳闷,问其原因,答曰:不用资助。给个官当既可。政府曰:然。其后这贫困户飞黄腾达。
6
7月
梦到敌我两方在2住宅楼上开战,全部配备狙击步枪,我杀敌两敌,但敌方的火力更强,当我最后一战友阵亡后,我拿起他的枪(俺的没子弹鸟,同时只剩我一个人),深呼一口气,准备抬头瞄准的时候,这时候又给了个敌方的特写,很多虎视眈眈的枪口指向我,当我转身的一刹那..............我的电话响了...梦结束鸟..
21
5月
1.地震以来,网络开天辟地的在讨论一个事情,捐献排名。国人总希望把任何东西都搞个排名,比如,企业捐款排名,个人捐款排名。又如,某某企业,某某个人是铁公鸡,一毛不拔。
2.在我看来(以下言论纯属个人想法,请不要拍砖,要拍就轻点……),大家都是万众一心,众志成城,不论是企业还是个人,都希望灾难早日过去,灾区的同胞,家园的重建,孩子的教育。国家有灾难的时候,对企业给于厚望无可厚非,并且对真正的“铁公鸡”进行批评也很正常,但要建立在了解的基础之上,不能让流言伤了那些真心捐助者的心。
3. 我要讨论2个企业,一个是万科,后者是王老吉。嗯,有些代表性的2个。
前者,国内房地产的老大,王石的名字是乎生来就是搞地产的?(那我的名字不是来搞江山社稷的了。。)起初,王石说了句他现在后悔的话,他说“200万是个适当的数额。中国是个灾害频发的国家,赈灾慈善活动是个常态,企业的捐赠活动应该可持续,而不应成为负担”。我觉得,王石不是个吝啬的人,看过他的一些报道与专题,就应该可以知道,他在大大小小的慈善活动都会出席,当他说出200万的时候,是5月12号,大家想想,当天捐赠的企业有多少呢?能当前决定200万的,又有多少。而正是这200万,一石激起千层浪,造成了公众对他的信任危机。也许他本人也后悔对媒体说了那样的话,但今天王石确做了个聪明的决定,“急批1亿义务灾后重建”,仔细思考下,的确很聪明,一方面解决了信任危机,又能利用着1亿赚取更多的钱,一举两得。当然,他本人也是亲自考察了四川的情况,才做了这样的决定。
后者,王老吉,王老吉的创业经历,我在本文就不提了,大家可以搜索下,一个只靠一个“王老吉”致富的企业,竟然捐赠了1个亿,但我们回想一下06年的世界杯,是不是还记得那“怕上火就喝王老吉”的广告词呢,其实,爱国与救灾是一方面,但我觉得王老吉,还想到的是广告效应与口碑相应,之后的几天,网络上就传播了“以后咱不喝可乐,雪碧了。咱就喝王老吉”,“我也把楼下超市的王老吉买光之类的话语”,当这一亿既给灾区带了继续的资金又给自己活生生的做了个免费的广告。
我想不论是王石还是"王老吉"的加多宝,他们首先是个企业家,做任何决定都是要考虑到企业本身,这也是正是为什么会有王石200万之后的事以及那王老吉的1个亿。
4.我写这些只是想到的一些观点,也许不正确,但是我内心想的。
5.祈祷那些四川灾区同胞与奋战在抗震一线所有的人们,你们辛苦了!
2.在我看来(以下言论纯属个人想法,请不要拍砖,要拍就轻点……),大家都是万众一心,众志成城,不论是企业还是个人,都希望灾难早日过去,灾区的同胞,家园的重建,孩子的教育。国家有灾难的时候,对企业给于厚望无可厚非,并且对真正的“铁公鸡”进行批评也很正常,但要建立在了解的基础之上,不能让流言伤了那些真心捐助者的心。
3. 我要讨论2个企业,一个是万科,后者是王老吉。嗯,有些代表性的2个。
前者,国内房地产的老大,王石的名字是乎生来就是搞地产的?(那我的名字不是来搞江山社稷的了。。)起初,王石说了句他现在后悔的话,他说“200万是个适当的数额。中国是个灾害频发的国家,赈灾慈善活动是个常态,企业的捐赠活动应该可持续,而不应成为负担”。我觉得,王石不是个吝啬的人,看过他的一些报道与专题,就应该可以知道,他在大大小小的慈善活动都会出席,当他说出200万的时候,是5月12号,大家想想,当天捐赠的企业有多少呢?能当前决定200万的,又有多少。而正是这200万,一石激起千层浪,造成了公众对他的信任危机。也许他本人也后悔对媒体说了那样的话,但今天王石确做了个聪明的决定,“急批1亿义务灾后重建”,仔细思考下,的确很聪明,一方面解决了信任危机,又能利用着1亿赚取更多的钱,一举两得。当然,他本人也是亲自考察了四川的情况,才做了这样的决定。
后者,王老吉,王老吉的创业经历,我在本文就不提了,大家可以搜索下,一个只靠一个“王老吉”致富的企业,竟然捐赠了1个亿,但我们回想一下06年的世界杯,是不是还记得那“怕上火就喝王老吉”的广告词呢,其实,爱国与救灾是一方面,但我觉得王老吉,还想到的是广告效应与口碑相应,之后的几天,网络上就传播了“以后咱不喝可乐,雪碧了。咱就喝王老吉”,“我也把楼下超市的王老吉买光之类的话语”,当这一亿既给灾区带了继续的资金又给自己活生生的做了个免费的广告。
我想不论是王石还是"王老吉"的加多宝,他们首先是个企业家,做任何决定都是要考虑到企业本身,这也是正是为什么会有王石200万之后的事以及那王老吉的1个亿。
4.我写这些只是想到的一些观点,也许不正确,但是我内心想的。
5.祈祷那些四川灾区同胞与奋战在抗震一线所有的人们,你们辛苦了!
13
5月
四川,我的1/3的故乡(爷爷是四川人后在沈阳工作,生活。我的影响里,爷爷一口四川话。)。
昨天2点40左右,大脑突然晕的厉害,起初以为是没睡好,结果发现大地似乎摇晃了一下,接着此起彼伏的电话听见地震,接着是网络上到处都说地震了,东南西北,第一个想法肯定是大地震,而且级别不低。没过多久,qq提示四川地震,7.8级。
在这24小时内,新闻里到处都是地震的信息,伤亡人数直线上升,刚刚统计的数字是,“四川在线消息 本网记者正在四川省政府召开的新闻发布会上获悉,截止今(13)日下午4点,汶川地震死亡人数已超过12000人,受伤26206人,94004人被掩埋 ”。
先默哀1分钟。
时间托的越久,死亡的人数越大,震中的汶川几乎被夷为平地,数字更是没办法统计,加上倾盆的暴雨,更加大了救援的难度。下午捐了钱给红十字会,只希望我的微薄之力能帮助你们,一定要挺住,一定,一定。
看着一张张图片,一个个无辜的人,一个个更加无辜的孩子,还在读着书,憧憬着未来的时候,被深埋在废墟里,心里有是怎样的滋味……
现在不是讨论地震局的责任还是什么领导的责任,救人要紧。
好运四川,挺住……
昨天2点40左右,大脑突然晕的厉害,起初以为是没睡好,结果发现大地似乎摇晃了一下,接着此起彼伏的电话听见地震,接着是网络上到处都说地震了,东南西北,第一个想法肯定是大地震,而且级别不低。没过多久,qq提示四川地震,7.8级。
在这24小时内,新闻里到处都是地震的信息,伤亡人数直线上升,刚刚统计的数字是,“四川在线消息 本网记者正在四川省政府召开的新闻发布会上获悉,截止今(13)日下午4点,汶川地震死亡人数已超过12000人,受伤26206人,94004人被掩埋 ”。
先默哀1分钟。
时间托的越久,死亡的人数越大,震中的汶川几乎被夷为平地,数字更是没办法统计,加上倾盆的暴雨,更加大了救援的难度。下午捐了钱给红十字会,只希望我的微薄之力能帮助你们,一定要挺住,一定,一定。
看着一张张图片,一个个无辜的人,一个个更加无辜的孩子,还在读着书,憧憬着未来的时候,被深埋在废墟里,心里有是怎样的滋味……
现在不是讨论地震局的责任还是什么领导的责任,救人要紧。
好运四川,挺住……
5
5月
可以使用srand在PHP中产生随机数
语法:
void srand(int seed);
说明:本函数传入参数 seed 后,配置随机数的种子。值得注意的是参数 seed 值最好也是随机出现的数字,例如利用加入时间做为变量的来源就是不错的方法,或者开发其它的硬体周边界面可取得更好的随机数。
事例:加入时间的因素,以执行时的百万分之一秒当随机数种子
srand((double)microtime()*1000000);
$randval = rand();
echo $randval;
?>
于是乎,把打劫的又改了下。
语法:
void srand(int seed);
说明:本函数传入参数 seed 后,配置随机数的种子。值得注意的是参数 seed 值最好也是随机出现的数字,例如利用加入时间做为变量的来源就是不错的方法,或者开发其它的硬体周边界面可取得更好的随机数。
事例:加入时间的因素,以执行时的百万分之一秒当随机数种子
srand((double)microtime()*1000000);
$randval = rand();
echo $randval;
?>
于是乎,把打劫的又改了下。
4
5月
1.微软放弃也是一种策略,雅虎管理层优柔寡断应该是微软放弃的最大原因之一,雅虎的管理层历来都如此,不论是马云收购案也好,还是这次的微软收购,总是拿不定注意,管理层如此下面的员工更会这样吧。
2.微软放弃因为雅虎不值那么多钱!微软看上雅虎什么了?我认为仅仅只是那个搜索引起,但出400多亿美元,LIVE+YAHOO然后比不上google。所以放弃我同意。
3.“据海外媒体报道,自今年微软宣布将收购雅虎以来,雅虎的工程师出现流失的情况。” 微软看中yahoo不光光是看中的牌子,而技术人才才是微软需要的,话有说回来,难道微软还不够强大吗?所以还是没必要收购。
4.google的原因,已经传出,yahoo跟google有非法的合作,检察院已经在追查此事。难怪起初google如此反对,这才是真正的原因所在吧。
5.说不定微软咬咬牙就把雅黑收购了,说不定google也会去收购,呵呵。
2.微软放弃因为雅虎不值那么多钱!微软看上雅虎什么了?我认为仅仅只是那个搜索引起,但出400多亿美元,LIVE+YAHOO然后比不上google。所以放弃我同意。
3.“据海外媒体报道,自今年微软宣布将收购雅虎以来,雅虎的工程师出现流失的情况。” 微软看中yahoo不光光是看中的牌子,而技术人才才是微软需要的,话有说回来,难道微软还不够强大吗?所以还是没必要收购。
4.google的原因,已经传出,yahoo跟google有非法的合作,检察院已经在追查此事。难怪起初google如此反对,这才是真正的原因所在吧。
5.说不定微软咬咬牙就把雅黑收购了,说不定google也会去收购,呵呵。








